rem: unsigned long long res; res = (*n) %  (unsigned long long)base;
add: uint64 result = *_number % (uint64)base; *_number = *_number / (uint64)base;
context: do_div(unsigned long long *n, unsigned base) { 	unsigned long long res;	res = (*n) %  (unsigned long long)base;	*n = (*n) / (unsigned long long)base;	return res;}