int _divu__ (int dividend, int divisor) { if (dividend < 0) { if (divisor < 0) { return divisor > dividend ? 0 : 1; } else { int multiple = divisor; int twice = multiple << 1; int quot = 1; while (twice > 0) { multiple = twice; twice <<= 1; quot <<= 1; } dividend -= multiple; if (dividend < 0) { dividend -= multiple; quot <<= 1; } return dividend / divisor + quot; } } else { if (divisor < 0) { return 0; } else { return dividend / divisor; } } } int _remu__ (int dividend, int divisor) { return dividend - _divu__(dividend, divisor) * divisor; } int _rem__ (int dividend, int divisor) { return dividend - (dividend / divisor) * divisor; } void _copy__(int src, int dest, int size) { int i, *s, *d, *end; s = &(((int*)0)[src]); d = &(((int*)0)[dest]); end = s + size; do { *s++ = *d++; } while (s < end); } int _int_to_byte__(int i) { int mask; i = i & 0xff; if (i > 0x7f) mask = (signed)0xffffff00; else mask = 0; return mask | i; } int _int_to_short__(int i) { int mask; i = i & 0xffff; if (i > 0x7fff) mask = (signed)0xffff0000; else mask = 0; return mask | i; }