34 static char *ksprintn(
char *nbuf, 
uintmax_t num, 
int base, 
int *lenp, 
int upper);
 
   36 static __inline int imax(
int a, 
int b) {
 
   37   return (a > b ? a : b);
 
   47 static void __shl(
register digit *p, 
register int len, 
register int sh) {
 
   50   for (i = 0; i < len; i++)
 
   53   p[i] = 
LHALF(p[i] << sh);
 
   59   register digit v1, v2;
 
   62   digit uspace[5], vspace[5], qspace[5];
 
   69     static const volatile unsigned int zero = 0;
 
   71     tmp.
ul[
H] = tmp.
ul[
L] = 1 / zero;
 
  109   for (n = 4; v[1] == 0; v++) {
 
  112       digit q1, q2, q3, q4;
 
  142   for (m = 4 - n; u[1] == 0; u++)
 
  144   for (i = 4 - m; --i >= 0;)
 
  155   for (t = v[1]; t < 
B / 2; t <<= 1)
 
  158     __shl(&u[0], m + n, d); 
 
  159     __shl(&v[1], n - 1, d); 
 
  168     register digit uj0, uj1, uj2;
 
  191     while (v2 * qhat > 
COMBINE(rhat, uj2)) {
 
  192       qhat_too_big: qhat--;
 
  193       if ((rhat += v1) >= 
B)
 
  202     for (t = 0, i = n; i > 0; i--) {
 
  203       t = u[i + j] - v[i] * qhat - t;
 
  217       for (t = 0, i = n; i > 0; i--) { 
 
  218         t += u[i + j] + v[i];
 
  222       u[j] = 
LHALF(u[j] + t);
 
  234       for (i = m + n; i > m; --i)
 
  315 int kvprintf(
const char *fmt, 
void (*func)(
int, 
void*), 
void *arg, 
int radix, 
va_list ap) {
 
  316 #define PCHAR(c) {int cc=(c); if (func) (*func)(cc,arg); else *d++ = cc; retval++; } 
  319   const char *p, *percent, *
q;
 
  323   int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
 
  324   int cflag, hflag, jflag, tflag, zflag;
 
  327   int stop = 0, retval = 0;
 
  336     fmt = 
"(fmt null)\n";
 
  338   if (radix < 2 || radix > 36)
 
  344     while ((ch = (
u_char) *fmt++) != 
'%' || stop) {
 
  364     reswitch: 
switch (ch = (
u_char) *fmt++) {
 
  407         for (n = 0;; ++fmt) {
 
  408           n = n * 10 + ch - 
'0';
 
  410           if (ch < '0' || ch > 
'9')
 
  421         for (
q = ksprintn(nbuf, num, *p++, 
NULL, 0); *
q;)
 
  430           if (num & (1 << (n - 1))) {
 
  431             PCHAR(tmp ? 
',' : 
'<');
 
  432             for (; (n = *p) > 
' '; ++p)
 
  437             for (; *p > 
' '; ++p)
 
  492           *(
va_arg(ap, 
long *)) = retval;
 
  494           *(
va_arg(ap, 
size_t *)) = retval;
 
  496           *(
va_arg(ap, 
short *)) = retval;
 
  498           *(
va_arg(ap, 
char *)) = retval;
 
  500           *(
va_arg(ap, 
int *)) = retval;
 
  507         sharpflag = (width == 0);
 
  526           for (n = 0; n < dwidth && p[n]; n++)
 
  531         if (!ladjust && width > 0)
 
  538         if (ladjust && width > 0)
 
  561         handle_nosign: sign = 0;
 
  579         handle_sign: 
if (jflag)
 
  590           num = (short) 
va_arg(ap, 
int);
 
  592           num = (char) 
va_arg(ap, 
int);
 
  595         number: 
if (sign && (
intmax_t) num < 0) {
 
  599         p = ksprintn(nbuf, num, base, &n, upper);
 
  601         if (sharpflag && num != 0) {
 
  610         if (!ladjust && padc == 
'0')
 
  611           dwidth = width - tmp;
 
  612         width -= tmp + imax(dwidth, n);
 
  621         if (sharpflag && num != 0) {
 
  625           else if (base == 16) {
 
  645         while (percent < fmt)
 
  662 static char *ksprintn(
char *nbuf, 
uintmax_t num, 
int base, 
int *lenp, 
int upper) {
 
  671   } 
while (num /= base);