matched 4 (#863)

This commit is contained in:
Unnunu 2022-11-19 20:35:04 +03:00 committed by GitHub
parent eff23cecb6
commit 697a050e12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 347 additions and 1578 deletions

26
src/gcc/divdi3.c Normal file
View File

@ -0,0 +1,26 @@
#include "udivmoddi4.inc.c"
DItype __divdi3(DItype u, DItype v) {
word_type c = 0;
DIunion uu, vv;
DItype w;
uu.ll = u;
vv.ll = v;
if (uu.s.high < 0) {
c = ~c;
uu.ll = __negdi2(uu.ll);
}
if (vv.s.high < 0) {
c = ~c;
vv.ll = __negdi2(vv.ll);
}
w = __udivmoddi4(uu.ll, vv.ll, (UDItype *) 0);
if (c) {
w = __negdi2(w);
}
return w;
}

26
src/gcc/moddi3.c Normal file
View File

@ -0,0 +1,26 @@
#include "udivmoddi4.inc.c"
DItype __moddi3(DItype u, DItype v) {
word_type c = 0;
DIunion uu, vv;
DItype w;
uu.ll = u;
vv.ll = v;
if (uu.s.high < 0) {
c = ~c;
uu.ll = __negdi2(uu.ll);
}
if (vv.s.high < 0) {
vv.ll = __negdi2(vv.ll);
}
__udivmoddi4 (uu.ll, vv.ll, &w);
if (c) {
w = __negdi2(w);
}
return w;
}

5
src/gcc/udivdi3.c Normal file
View File

@ -0,0 +1,5 @@
#include "udivmoddi4.inc.c"
UDItype __udivdi3(UDItype n, UDItype d) {
return __udivmoddi4(n, d, (UDItype *) 0);
}

277
src/gcc/udivmoddi4.inc.c Normal file
View File

@ -0,0 +1,277 @@
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
typedef int word_type __attribute__ ((mode (__word__)));
#define BITS_PER_UNIT 8
#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT)
struct DIstruct {
SItype high;
SItype low;
};
typedef union {
struct DIstruct s;
DItype ll;
} DIunion;
#define __BITS4 (SI_TYPE_SIZE / 4)
#define __ll_B (1L << (SI_TYPE_SIZE / 2))
#define __ll_lowpart(t) ((USItype) (t) % __ll_B)
#define __ll_highpart(t) ((USItype) (t) / __ll_B)
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("multu %2,%3" \
: "=l" ((USItype) (w0)), \
"=h" ((USItype) (w1)) \
: "d" ((USItype) (u)), \
"d" ((USItype) (v)))
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
do { \
USItype __x; \
__x = (al) - (bl); \
(sh) = (ah) - (bh) - (__x > (al)); \
(sl) = __x; \
} while (0)
#define udiv_qrnnd(q, r, n1, n0, d) \
do { \
USItype __d1, __d0, __q1, __q0; \
USItype __r1, __r0, __m; \
__d1 = __ll_highpart (d); \
__d0 = __ll_lowpart (d); \
\
__r1 = (n1) % __d1; \
__q1 = (n1) / __d1; \
__m = (USItype) __q1 * __d0; \
__r1 = __r1 * __ll_B | __ll_highpart (n0); \
if (__r1 < __m) { \
__q1--, __r1 += (d); \
if (__r1 >= (d)) { /* i.e. we didn't get carry when adding to __r1 */ \
if (__r1 < __m) { \
__q1--, __r1 += (d); \
} \
} \
} \
__r1 -= __m; \
\
__r0 = __r1 % __d1; \
__q0 = __r1 / __d1; \
__m = (USItype) __q0 * __d0; \
__r0 = __r0 * __ll_B | __ll_lowpart (n0); \
if (__r0 < __m) { \
__q0--, __r0 += (d); \
if (__r0 >= (d)) { \
if (__r0 < __m) { \
__q0--, __r0 += (d); \
} \
} \
} \
__r0 -= __m; \
\
(q) = (USItype) __q1 * __ll_B | __q0; \
(r) = __r0; \
} while (0)
#define count_leading_zeros(count, x) \
do { \
USItype __xr = (x); \
USItype __a; \
\
if (SI_TYPE_SIZE <= 32) { \
__a = __xr < ((USItype)1<<2*__BITS4) \
? (__xr < ((USItype)1<<__BITS4) ? 0 : __BITS4) \
: (__xr < ((USItype)1<<3*__BITS4) ? 2*__BITS4 : 3*__BITS4); \
} else { \
for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) { \
if (((__xr >> __a) & 0xff) != 0) { \
break; \
} \
} \
} \
\
(count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \
} while (0)
static inline DItype __negdi2(DItype u) {
DIunion w;
DIunion uu;
uu.ll = u;
w.s.low = -uu.s.low;
w.s.high = -uu.s.high - ((USItype) w.s.low > 0);
return w.ll;
}
static const UQItype __clz_tab[] = {
0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
};
static inline UDItype __udivmoddi4(UDItype n, UDItype d, UDItype *rp) {
DIunion ww;
DIunion nn, dd;
DIunion rr;
USItype d0, d1, n0, n1, n2;
USItype q0, q1;
USItype b, bm;
nn.ll = n;
dd.ll = d;
d0 = dd.s.low;
d1 = dd.s.high;
n0 = nn.s.low;
n1 = nn.s.high;
if (d1 == 0) {
if (d0 > n1) {
/* 0q = nn / 0D */
count_leading_zeros (bm, d0);
if (bm != 0) {
/* Normalize, i.e. make the most significant bit of the
denominator set. */
d0 = d0 << bm;
n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm));
n0 = n0 << bm;
}
udiv_qrnnd(q0, n0, n1, n0, d0);
q1 = 0;
/* Remainder in n0 >> bm. */
} else {
/* qq = NN / 0d */
if (d0 == 0) {
d0 = 1 / d0; /* Divide intentionally by zero. */
}
count_leading_zeros (bm, d0);
if (bm == 0) {
/* From (n1 >= d0) /\ (the most significant bit of d0 is set),
conclude (the most significant bit of n1 is set) /\ (the
leading quotient digit q1 = 1).
This special case is necessary, not an optimization.
(Shifts counts of SI_TYPE_SIZE are undefined.) */
n1 -= d0;
q1 = 1;
} else {
/* Normalize. */
b = SI_TYPE_SIZE - bm;
d0 = d0 << bm;
n2 = n1 >> b;
n1 = (n1 << bm) | (n0 >> b);
n0 = n0 << bm;
udiv_qrnnd(q1, n1, n2, n1, d0);
}
/* n1 != d0... */
udiv_qrnnd(q0, n0, n1, n0, d0);
/* Remainder in n0 >> bm. */
}
if (rp != 0) {
rr.s.low = n0 >> bm;
rr.s.high = 0;
*rp = rr.ll;
}
} else {
if (d1 > n1) {
/* 00 = nn / DD */
q0 = 0;
q1 = 0;
/* Remainder in n1n0. */
if (rp != 0) {
rr.s.low = n0;
rr.s.high = n1;
*rp = rr.ll;
}
} else {
/* 0q = NN / dd */
count_leading_zeros (bm, d1);
if (bm == 0) {
/* From (n1 >= d1) /\ (the most significant bit of d1 is set),
conclude (the most significant bit of n1 is set) /\ (the
quotient digit q0 = 0 or 1).
This special case is necessary, not an optimization. */
/* The condition on the next line takes advantage of that
n1 >= d1 (true due to program flow). */
if (n1 > d1 || n0 >= d0) {
q0 = 1;
sub_ddmmss(n1, n0, n1, n0, d1, d0);
} else {
q0 = 0;
}
q1 = 0;
if (rp != 0) {
rr.s.low = n0;
rr.s.high = n1;
*rp = rr.ll;
}
} else {
USItype m1, m0;
/* Normalize. */
b = SI_TYPE_SIZE - bm;
d1 = (d1 << bm) | (d0 >> b);
d0 = d0 << bm;
n2 = n1 >> b;
n1 = (n1 << bm) | (n0 >> b);
n0 = n0 << bm;
udiv_qrnnd(q0, n1, n2, n1, d1);
umul_ppmm(m1, m0, q0, d0);
if (m1 > n1 || (m1 == n1 && m0 > n0)) {
q0--;
sub_ddmmss(m1, m0, m1, m0, d1, d0);
}
q1 = 0;
/* Remainder in (n1n0 - m1m0) >> bm. */
if (rp != 0) {
sub_ddmmss(n1, n0, n1, n0, m1, m0);
rr.s.low = (n1 << b) | (n0 >> bm);
rr.s.high = n1 >> bm;
*rp = rr.ll;
}
}
}
}
ww.s.low = q0;
ww.s.high = q1;
return ww.ll;
}

9
src/gcc/umoddi3.c Normal file
View File

@ -0,0 +1,9 @@
#include "udivmoddi4.inc.c"
UDItype __umoddi3(UDItype u, UDItype v) {
UDItype w;
__udivmoddi4(u, v, &w);
return w;
}

View File

@ -1,3 +0,0 @@
#include "include_asm.h"
INCLUDE_ASM(s32, "os/divdi3", __divdi3);

View File

@ -1,3 +0,0 @@
#include "include_asm.h"
INCLUDE_ASM(s32, "os/moddi3", __moddi3);

View File

@ -1,3 +0,0 @@
#include "include_asm.h"
INCLUDE_ASM(s32, "os/udivdi3", __udivdi3);

View File

@ -1,3 +0,0 @@
#include "include_asm.h"
INCLUDE_ASM(s32, "os/umoddi3", __umoddi3);

View File

@ -1,422 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_80099E40
.byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
.section .text
glabel __divdi3
/* 48C00 8006D800 04810008 */ bgez $a0, .L8006D824
/* 48C04 8006D804 0000C02D */ daddu $t8, $zero, $zero
/* 48C08 8006D808 2418FFFF */ addiu $t8, $zero, -1
/* 48C0C 8006D80C 00054823 */ negu $t1, $a1
/* 48C10 8006D810 00041823 */ negu $v1, $a0
/* 48C14 8006D814 0009102B */ sltu $v0, $zero, $t1
/* 48C18 8006D818 00624023 */ subu $t0, $v1, $v0
/* 48C1C 8006D81C 0100202D */ daddu $a0, $t0, $zero
/* 48C20 8006D820 0120282D */ daddu $a1, $t1, $zero
.L8006D824:
/* 48C24 8006D824 04C10009 */ bgez $a2, .L8006D84C
/* 48C28 8006D828 00E0482D */ daddu $t1, $a3, $zero
/* 48C2C 8006D82C 0018C027 */ nor $t8, $zero, $t8
/* 48C30 8006D830 00075823 */ negu $t3, $a3
/* 48C34 8006D834 00061823 */ negu $v1, $a2
/* 48C38 8006D838 000B102B */ sltu $v0, $zero, $t3
/* 48C3C 8006D83C 00625023 */ subu $t2, $v1, $v0
/* 48C40 8006D840 0140302D */ daddu $a2, $t2, $zero
/* 48C44 8006D844 0160382D */ daddu $a3, $t3, $zero
/* 48C48 8006D848 00E0482D */ daddu $t1, $a3, $zero
.L8006D84C:
/* 48C4C 8006D84C 00C0402D */ daddu $t0, $a2, $zero
/* 48C50 8006D850 150000DF */ bnez $t0, .L8006DBD0
/* 48C54 8006D854 00A0582D */ daddu $t3, $a1, $zero
/* 48C58 8006D858 0089102B */ sltu $v0, $a0, $t1
/* 48C5C 8006D85C 1040004E */ beqz $v0, .L8006D998
/* 48C60 8006D860 3402FFFF */ ori $v0, $zero, 0xffff
/* 48C64 8006D864 0049102B */ sltu $v0, $v0, $t1
/* 48C68 8006D868 14400005 */ bnez $v0, .L8006D880
/* 48C6C 8006D86C 00E0182D */ daddu $v1, $a3, $zero
/* 48C70 8006D870 2D220100 */ sltiu $v0, $t1, 0x100
/* 48C74 8006D874 38420001 */ xori $v0, $v0, 1
/* 48C78 8006D878 0801B626 */ j .L8006D898
/* 48C7C 8006D87C 000240C0 */ sll $t0, $v0, 3
.L8006D880:
/* 48C80 8006D880 3C0200FF */ lui $v0, 0xff
/* 48C84 8006D884 3442FFFF */ ori $v0, $v0, 0xffff
/* 48C88 8006D888 0049102B */ sltu $v0, $v0, $t1
/* 48C8C 8006D88C 14400002 */ bnez $v0, .L8006D898
/* 48C90 8006D890 24080018 */ addiu $t0, $zero, 0x18
/* 48C94 8006D894 24080010 */ addiu $t0, $zero, 0x10
.L8006D898:
/* 48C98 8006D898 01031006 */ srlv $v0, $v1, $t0
/* 48C9C 8006D89C 3C01800A */ lui $at, %hi(D_80099E40)
/* 48CA0 8006D8A0 00220821 */ addu $at, $at, $v0
/* 48CA4 8006D8A4 90229E40 */ lbu $v0, %lo(D_80099E40)($at)
/* 48CA8 8006D8A8 24050020 */ addiu $a1, $zero, 0x20
/* 48CAC 8006D8AC 00481021 */ addu $v0, $v0, $t0
/* 48CB0 8006D8B0 00A23023 */ subu $a2, $a1, $v0
/* 48CB4 8006D8B4 10C00006 */ beqz $a2, .L8006D8D0
/* 48CB8 8006D8B8 00C41804 */ sllv $v1, $a0, $a2
/* 48CBC 8006D8BC 00C94804 */ sllv $t1, $t1, $a2
/* 48CC0 8006D8C0 00A61023 */ subu $v0, $a1, $a2
/* 48CC4 8006D8C4 004B1006 */ srlv $v0, $t3, $v0
/* 48CC8 8006D8C8 00622025 */ or $a0, $v1, $v0
/* 48CCC 8006D8CC 00CB5804 */ sllv $t3, $t3, $a2
.L8006D8D0:
/* 48CD0 8006D8D0 00093402 */ srl $a2, $t1, 0x10
/* 48CD4 8006D8D4 14C00002 */ bnez $a2, .L8006D8E0
/* 48CD8 8006D8D8 0086001B */ divu $zero, $a0, $a2
/* 48CDC 8006D8DC 0007000D */ break 7
.L8006D8E0:
/* 48CE0 8006D8E0 00003812 */ mflo $a3
/* 48CE4 8006D8E4 00001810 */ mfhi $v1
/* 48CE8 8006D8E8 3128FFFF */ andi $t0, $t1, 0xffff
/* 48CEC 8006D8EC 00000000 */ nop
/* 48CF0 8006D8F0 00E80018 */ mult $a3, $t0
/* 48CF4 8006D8F4 000B1402 */ srl $v0, $t3, 0x10
/* 48CF8 8006D8F8 00031C00 */ sll $v1, $v1, 0x10
/* 48CFC 8006D8FC 00621825 */ or $v1, $v1, $v0
/* 48D00 8006D900 00002812 */ mflo $a1
/* 48D04 8006D904 0065102B */ sltu $v0, $v1, $a1
/* 48D08 8006D908 5040000B */ beql $v0, $zero, .L8006D938
/* 48D0C 8006D90C 00651823 */ subu $v1, $v1, $a1
/* 48D10 8006D910 00691821 */ addu $v1, $v1, $t1
/* 48D14 8006D914 0069102B */ sltu $v0, $v1, $t1
/* 48D18 8006D918 14400006 */ bnez $v0, .L8006D934
/* 48D1C 8006D91C 24E7FFFF */ addiu $a3, $a3, -1
/* 48D20 8006D920 0065102B */ sltu $v0, $v1, $a1
/* 48D24 8006D924 50400004 */ beql $v0, $zero, .L8006D938
/* 48D28 8006D928 00651823 */ subu $v1, $v1, $a1
/* 48D2C 8006D92C 24E7FFFF */ addiu $a3, $a3, -1
/* 48D30 8006D930 00691821 */ addu $v1, $v1, $t1
.L8006D934:
/* 48D34 8006D934 00651823 */ subu $v1, $v1, $a1
.L8006D938:
/* 48D38 8006D938 14C00002 */ bnez $a2, .L8006D944
/* 48D3C 8006D93C 0066001B */ divu $zero, $v1, $a2
/* 48D40 8006D940 0007000D */ break 7
.L8006D944:
/* 48D44 8006D944 00002012 */ mflo $a0
/* 48D48 8006D948 00001810 */ mfhi $v1
/* 48D4C 8006D94C 00000000 */ nop
/* 48D50 8006D950 00000000 */ nop
/* 48D54 8006D954 00880018 */ mult $a0, $t0
/* 48D58 8006D958 3162FFFF */ andi $v0, $t3, 0xffff
/* 48D5C 8006D95C 00031C00 */ sll $v1, $v1, 0x10
/* 48D60 8006D960 00621825 */ or $v1, $v1, $v0
/* 48D64 8006D964 00002812 */ mflo $a1
/* 48D68 8006D968 0065102B */ sltu $v0, $v1, $a1
/* 48D6C 8006D96C 10400007 */ beqz $v0, .L8006D98C
/* 48D70 8006D970 00691821 */ addu $v1, $v1, $t1
/* 48D74 8006D974 0069102B */ sltu $v0, $v1, $t1
/* 48D78 8006D978 14400004 */ bnez $v0, .L8006D98C
/* 48D7C 8006D97C 2484FFFF */ addiu $a0, $a0, -1
/* 48D80 8006D980 0065102B */ sltu $v0, $v1, $a1
/* 48D84 8006D984 54400001 */ bnel $v0, $zero, .L8006D98C
/* 48D88 8006D988 2484FFFF */ addiu $a0, $a0, -1
.L8006D98C:
/* 48D8C 8006D98C 00071400 */ sll $v0, $a3, 0x10
/* 48D90 8006D990 0801B761 */ j .L8006DD84
/* 48D94 8006D994 00443025 */ or $a2, $v0, $a0
.L8006D998:
/* 48D98 8006D998 15200008 */ bnez $t1, .L8006D9BC
/* 48D9C 8006D99C 0049102B */ sltu $v0, $v0, $t1
/* 48DA0 8006D9A0 24020001 */ addiu $v0, $zero, 1
/* 48DA4 8006D9A4 15000002 */ bnez $t0, .L8006D9B0
/* 48DA8 8006D9A8 0048001B */ divu $zero, $v0, $t0
/* 48DAC 8006D9AC 0007000D */ break 7
.L8006D9B0:
/* 48DB0 8006D9B0 00004812 */ mflo $t1
/* 48DB4 8006D9B4 3402FFFF */ ori $v0, $zero, 0xffff
/* 48DB8 8006D9B8 0049102B */ sltu $v0, $v0, $t1
.L8006D9BC:
/* 48DBC 8006D9BC 14400005 */ bnez $v0, .L8006D9D4
/* 48DC0 8006D9C0 0120282D */ daddu $a1, $t1, $zero
/* 48DC4 8006D9C4 2D220100 */ sltiu $v0, $t1, 0x100
/* 48DC8 8006D9C8 38420001 */ xori $v0, $v0, 1
/* 48DCC 8006D9CC 0801B67B */ j .L8006D9EC
/* 48DD0 8006D9D0 000218C0 */ sll $v1, $v0, 3
.L8006D9D4:
/* 48DD4 8006D9D4 3C0200FF */ lui $v0, 0xff
/* 48DD8 8006D9D8 3442FFFF */ ori $v0, $v0, 0xffff
/* 48DDC 8006D9DC 0049102B */ sltu $v0, $v0, $t1
/* 48DE0 8006D9E0 14400002 */ bnez $v0, .L8006D9EC
/* 48DE4 8006D9E4 24030018 */ addiu $v1, $zero, 0x18
/* 48DE8 8006D9E8 24030010 */ addiu $v1, $zero, 0x10
.L8006D9EC:
/* 48DEC 8006D9EC 00651006 */ srlv $v0, $a1, $v1
/* 48DF0 8006D9F0 3C01800A */ lui $at, %hi(D_80099E40)
/* 48DF4 8006D9F4 00220821 */ addu $at, $at, $v0
/* 48DF8 8006D9F8 90229E40 */ lbu $v0, %lo(D_80099E40)($at)
/* 48DFC 8006D9FC 00431021 */ addu $v0, $v0, $v1
/* 48E00 8006DA00 24030020 */ addiu $v1, $zero, 0x20
/* 48E04 8006DA04 00623023 */ subu $a2, $v1, $v0
/* 48E08 8006DA08 14C00004 */ bnez $a2, .L8006DA1C
/* 48E0C 8006DA0C 00662823 */ subu $a1, $v1, $a2
/* 48E10 8006DA10 00892023 */ subu $a0, $a0, $t1
/* 48E14 8006DA14 0801B6C2 */ j .L8006DB08
/* 48E18 8006DA18 240A0001 */ addiu $t2, $zero, 1
.L8006DA1C:
/* 48E1C 8006DA1C 00C94804 */ sllv $t1, $t1, $a2
/* 48E20 8006DA20 00A43806 */ srlv $a3, $a0, $a1
/* 48E24 8006DA24 00C41804 */ sllv $v1, $a0, $a2
/* 48E28 8006DA28 00AB1006 */ srlv $v0, $t3, $a1
/* 48E2C 8006DA2C 00622025 */ or $a0, $v1, $v0
/* 48E30 8006DA30 00CB5804 */ sllv $t3, $t3, $a2
/* 48E34 8006DA34 00093402 */ srl $a2, $t1, 0x10
/* 48E38 8006DA38 14C00002 */ bnez $a2, .L8006DA44
/* 48E3C 8006DA3C 00E6001B */ divu $zero, $a3, $a2
/* 48E40 8006DA40 0007000D */ break 7
.L8006DA44:
/* 48E44 8006DA44 00004012 */ mflo $t0
/* 48E48 8006DA48 00001810 */ mfhi $v1
/* 48E4C 8006DA4C 3125FFFF */ andi $a1, $t1, 0xffff
/* 48E50 8006DA50 00000000 */ nop
/* 48E54 8006DA54 01050018 */ mult $t0, $a1
/* 48E58 8006DA58 00041402 */ srl $v0, $a0, 0x10
/* 48E5C 8006DA5C 00031C00 */ sll $v1, $v1, 0x10
/* 48E60 8006DA60 00621825 */ or $v1, $v1, $v0
/* 48E64 8006DA64 00003812 */ mflo $a3
/* 48E68 8006DA68 0067102B */ sltu $v0, $v1, $a3
/* 48E6C 8006DA6C 5040000B */ beql $v0, $zero, .L8006DA9C
/* 48E70 8006DA70 00671823 */ subu $v1, $v1, $a3
/* 48E74 8006DA74 00691821 */ addu $v1, $v1, $t1
/* 48E78 8006DA78 0069102B */ sltu $v0, $v1, $t1
/* 48E7C 8006DA7C 14400006 */ bnez $v0, .L8006DA98
/* 48E80 8006DA80 2508FFFF */ addiu $t0, $t0, -1
/* 48E84 8006DA84 0067102B */ sltu $v0, $v1, $a3
/* 48E88 8006DA88 50400004 */ beql $v0, $zero, .L8006DA9C
/* 48E8C 8006DA8C 00671823 */ subu $v1, $v1, $a3
/* 48E90 8006DA90 2508FFFF */ addiu $t0, $t0, -1
/* 48E94 8006DA94 00691821 */ addu $v1, $v1, $t1
.L8006DA98:
/* 48E98 8006DA98 00671823 */ subu $v1, $v1, $a3
.L8006DA9C:
/* 48E9C 8006DA9C 14C00002 */ bnez $a2, .L8006DAA8
/* 48EA0 8006DAA0 0066001B */ divu $zero, $v1, $a2
/* 48EA4 8006DAA4 0007000D */ break 7
.L8006DAA8:
/* 48EA8 8006DAA8 00003012 */ mflo $a2
/* 48EAC 8006DAAC 00001810 */ mfhi $v1
/* 48EB0 8006DAB0 00000000 */ nop
/* 48EB4 8006DAB4 00000000 */ nop
/* 48EB8 8006DAB8 00C50018 */ mult $a2, $a1
/* 48EBC 8006DABC 3082FFFF */ andi $v0, $a0, 0xffff
/* 48EC0 8006DAC0 00031C00 */ sll $v1, $v1, 0x10
/* 48EC4 8006DAC4 00621825 */ or $v1, $v1, $v0
/* 48EC8 8006DAC8 00003812 */ mflo $a3
/* 48ECC 8006DACC 0067102B */ sltu $v0, $v1, $a3
/* 48ED0 8006DAD0 1040000B */ beqz $v0, .L8006DB00
/* 48ED4 8006DAD4 00081400 */ sll $v0, $t0, 0x10
/* 48ED8 8006DAD8 00691821 */ addu $v1, $v1, $t1
/* 48EDC 8006DADC 0069102B */ sltu $v0, $v1, $t1
/* 48EE0 8006DAE0 14400006 */ bnez $v0, .L8006DAFC
/* 48EE4 8006DAE4 24C6FFFF */ addiu $a2, $a2, -1
/* 48EE8 8006DAE8 0067102B */ sltu $v0, $v1, $a3
/* 48EEC 8006DAEC 10400004 */ beqz $v0, .L8006DB00
/* 48EF0 8006DAF0 00081400 */ sll $v0, $t0, 0x10
/* 48EF4 8006DAF4 24C6FFFF */ addiu $a2, $a2, -1
/* 48EF8 8006DAF8 00691821 */ addu $v1, $v1, $t1
.L8006DAFC:
/* 48EFC 8006DAFC 00081400 */ sll $v0, $t0, 0x10
.L8006DB00:
/* 48F00 8006DB00 00465025 */ or $t2, $v0, $a2
/* 48F04 8006DB04 00672023 */ subu $a0, $v1, $a3
.L8006DB08:
/* 48F08 8006DB08 00093402 */ srl $a2, $t1, 0x10
/* 48F0C 8006DB0C 14C00002 */ bnez $a2, .L8006DB18
/* 48F10 8006DB10 0086001B */ divu $zero, $a0, $a2
/* 48F14 8006DB14 0007000D */ break 7
.L8006DB18:
/* 48F18 8006DB18 00003812 */ mflo $a3
/* 48F1C 8006DB1C 00001810 */ mfhi $v1
/* 48F20 8006DB20 3128FFFF */ andi $t0, $t1, 0xffff
/* 48F24 8006DB24 00000000 */ nop
/* 48F28 8006DB28 00E80018 */ mult $a3, $t0
/* 48F2C 8006DB2C 000B1402 */ srl $v0, $t3, 0x10
/* 48F30 8006DB30 00031C00 */ sll $v1, $v1, 0x10
/* 48F34 8006DB34 00621825 */ or $v1, $v1, $v0
/* 48F38 8006DB38 00002812 */ mflo $a1
/* 48F3C 8006DB3C 0065102B */ sltu $v0, $v1, $a1
/* 48F40 8006DB40 5040000B */ beql $v0, $zero, .L8006DB70
/* 48F44 8006DB44 00651823 */ subu $v1, $v1, $a1
/* 48F48 8006DB48 00691821 */ addu $v1, $v1, $t1
/* 48F4C 8006DB4C 0069102B */ sltu $v0, $v1, $t1
/* 48F50 8006DB50 14400006 */ bnez $v0, .L8006DB6C
/* 48F54 8006DB54 24E7FFFF */ addiu $a3, $a3, -1
/* 48F58 8006DB58 0065102B */ sltu $v0, $v1, $a1
/* 48F5C 8006DB5C 50400004 */ beql $v0, $zero, .L8006DB70
/* 48F60 8006DB60 00651823 */ subu $v1, $v1, $a1
/* 48F64 8006DB64 24E7FFFF */ addiu $a3, $a3, -1
/* 48F68 8006DB68 00691821 */ addu $v1, $v1, $t1
.L8006DB6C:
/* 48F6C 8006DB6C 00651823 */ subu $v1, $v1, $a1
.L8006DB70:
/* 48F70 8006DB70 14C00002 */ bnez $a2, .L8006DB7C
/* 48F74 8006DB74 0066001B */ divu $zero, $v1, $a2
/* 48F78 8006DB78 0007000D */ break 7
.L8006DB7C:
/* 48F7C 8006DB7C 00002012 */ mflo $a0
/* 48F80 8006DB80 00001810 */ mfhi $v1
/* 48F84 8006DB84 00000000 */ nop
/* 48F88 8006DB88 00000000 */ nop
/* 48F8C 8006DB8C 00880018 */ mult $a0, $t0
/* 48F90 8006DB90 3162FFFF */ andi $v0, $t3, 0xffff
/* 48F94 8006DB94 00031C00 */ sll $v1, $v1, 0x10
/* 48F98 8006DB98 00621825 */ or $v1, $v1, $v0
/* 48F9C 8006DB9C 00002812 */ mflo $a1
/* 48FA0 8006DBA0 0065102B */ sltu $v0, $v1, $a1
/* 48FA4 8006DBA4 10400007 */ beqz $v0, .L8006DBC4
/* 48FA8 8006DBA8 00691821 */ addu $v1, $v1, $t1
/* 48FAC 8006DBAC 0069102B */ sltu $v0, $v1, $t1
/* 48FB0 8006DBB0 14400004 */ bnez $v0, .L8006DBC4
/* 48FB4 8006DBB4 2484FFFF */ addiu $a0, $a0, -1
/* 48FB8 8006DBB8 0065102B */ sltu $v0, $v1, $a1
/* 48FBC 8006DBBC 54400001 */ bnel $v0, $zero, .L8006DBC4
/* 48FC0 8006DBC0 2484FFFF */ addiu $a0, $a0, -1
.L8006DBC4:
/* 48FC4 8006DBC4 00071400 */ sll $v0, $a3, 0x10
/* 48FC8 8006DBC8 0801B762 */ j .L8006DD88
/* 48FCC 8006DBCC 00443025 */ or $a2, $v0, $a0
.L8006DBD0:
/* 48FD0 8006DBD0 0088102B */ sltu $v0, $a0, $t0
/* 48FD4 8006DBD4 10400003 */ beqz $v0, .L8006DBE4
/* 48FD8 8006DBD8 3402FFFF */ ori $v0, $zero, 0xffff
/* 48FDC 8006DBDC 0801B761 */ j .L8006DD84
/* 48FE0 8006DBE0 0000302D */ daddu $a2, $zero, $zero
.L8006DBE4:
/* 48FE4 8006DBE4 0048102B */ sltu $v0, $v0, $t0
/* 48FE8 8006DBE8 14400005 */ bnez $v0, .L8006DC00
/* 48FEC 8006DBEC 0100282D */ daddu $a1, $t0, $zero
/* 48FF0 8006DBF0 2D020100 */ sltiu $v0, $t0, 0x100
/* 48FF4 8006DBF4 38420001 */ xori $v0, $v0, 1
/* 48FF8 8006DBF8 0801B706 */ j .L8006DC18
/* 48FFC 8006DBFC 000218C0 */ sll $v1, $v0, 3
.L8006DC00:
/* 49000 8006DC00 3C0200FF */ lui $v0, 0xff
/* 49004 8006DC04 3442FFFF */ ori $v0, $v0, 0xffff
/* 49008 8006DC08 0048102B */ sltu $v0, $v0, $t0
/* 4900C 8006DC0C 14400002 */ bnez $v0, .L8006DC18
/* 49010 8006DC10 24030018 */ addiu $v1, $zero, 0x18
/* 49014 8006DC14 24030010 */ addiu $v1, $zero, 0x10
.L8006DC18:
/* 49018 8006DC18 00651006 */ srlv $v0, $a1, $v1
/* 4901C 8006DC1C 3C01800A */ lui $at, %hi(D_80099E40)
/* 49020 8006DC20 00220821 */ addu $at, $at, $v0
/* 49024 8006DC24 90229E40 */ lbu $v0, %lo(D_80099E40)($at)
/* 49028 8006DC28 00431021 */ addu $v0, $v0, $v1
/* 4902C 8006DC2C 24030020 */ addiu $v1, $zero, 0x20
/* 49030 8006DC30 00623023 */ subu $a2, $v1, $v0
/* 49034 8006DC34 54C00009 */ bnel $a2, $zero, .L8006DC5C
/* 49038 8006DC38 00662823 */ subu $a1, $v1, $a2
/* 4903C 8006DC3C 0104102B */ sltu $v0, $t0, $a0
/* 49040 8006DC40 14400050 */ bnez $v0, .L8006DD84
/* 49044 8006DC44 24060001 */ addiu $a2, $zero, 1
/* 49048 8006DC48 0169102B */ sltu $v0, $t3, $t1
/* 4904C 8006DC4C 1440004D */ bnez $v0, .L8006DD84
/* 49050 8006DC50 0000302D */ daddu $a2, $zero, $zero
/* 49054 8006DC54 0801B761 */ j .L8006DD84
/* 49058 8006DC58 24060001 */ addiu $a2, $zero, 1
.L8006DC5C:
/* 4905C 8006DC5C 00C81804 */ sllv $v1, $t0, $a2
/* 49060 8006DC60 00A91006 */ srlv $v0, $t1, $a1
/* 49064 8006DC64 00624025 */ or $t0, $v1, $v0
/* 49068 8006DC68 00C94804 */ sllv $t1, $t1, $a2
/* 4906C 8006DC6C 00A43806 */ srlv $a3, $a0, $a1
/* 49070 8006DC70 00C41804 */ sllv $v1, $a0, $a2
/* 49074 8006DC74 00AB1006 */ srlv $v0, $t3, $a1
/* 49078 8006DC78 00622025 */ or $a0, $v1, $v0
/* 4907C 8006DC7C 00CB5804 */ sllv $t3, $t3, $a2
/* 49080 8006DC80 00083402 */ srl $a2, $t0, 0x10
/* 49084 8006DC84 14C00002 */ bnez $a2, .L8006DC90
/* 49088 8006DC88 00E6001B */ divu $zero, $a3, $a2
/* 4908C 8006DC8C 0007000D */ break 7
.L8006DC90:
/* 49090 8006DC90 00005012 */ mflo $t2
/* 49094 8006DC94 00001810 */ mfhi $v1
/* 49098 8006DC98 3105FFFF */ andi $a1, $t0, 0xffff
/* 4909C 8006DC9C 00000000 */ nop
/* 490A0 8006DCA0 01450018 */ mult $t2, $a1
/* 490A4 8006DCA4 00041402 */ srl $v0, $a0, 0x10
/* 490A8 8006DCA8 00031C00 */ sll $v1, $v1, 0x10
/* 490AC 8006DCAC 00621825 */ or $v1, $v1, $v0
/* 490B0 8006DCB0 00003812 */ mflo $a3
/* 490B4 8006DCB4 0067102B */ sltu $v0, $v1, $a3
/* 490B8 8006DCB8 5040000B */ beql $v0, $zero, .L8006DCE8
/* 490BC 8006DCBC 00671823 */ subu $v1, $v1, $a3
/* 490C0 8006DCC0 00681821 */ addu $v1, $v1, $t0
/* 490C4 8006DCC4 0068102B */ sltu $v0, $v1, $t0
/* 490C8 8006DCC8 14400006 */ bnez $v0, .L8006DCE4
/* 490CC 8006DCCC 254AFFFF */ addiu $t2, $t2, -1
/* 490D0 8006DCD0 0067102B */ sltu $v0, $v1, $a3
/* 490D4 8006DCD4 50400004 */ beql $v0, $zero, .L8006DCE8
/* 490D8 8006DCD8 00671823 */ subu $v1, $v1, $a3
/* 490DC 8006DCDC 254AFFFF */ addiu $t2, $t2, -1
/* 490E0 8006DCE0 00681821 */ addu $v1, $v1, $t0
.L8006DCE4:
/* 490E4 8006DCE4 00671823 */ subu $v1, $v1, $a3
.L8006DCE8:
/* 490E8 8006DCE8 14C00002 */ bnez $a2, .L8006DCF4
/* 490EC 8006DCEC 0066001B */ divu $zero, $v1, $a2
/* 490F0 8006DCF0 0007000D */ break 7
.L8006DCF4:
/* 490F4 8006DCF4 00003012 */ mflo $a2
/* 490F8 8006DCF8 00001810 */ mfhi $v1
/* 490FC 8006DCFC 00000000 */ nop
/* 49100 8006DD00 00000000 */ nop
/* 49104 8006DD04 00C50018 */ mult $a2, $a1
/* 49108 8006DD08 3082FFFF */ andi $v0, $a0, 0xffff
/* 4910C 8006DD0C 00031C00 */ sll $v1, $v1, 0x10
/* 49110 8006DD10 00621825 */ or $v1, $v1, $v0
/* 49114 8006DD14 00003812 */ mflo $a3
/* 49118 8006DD18 0067102B */ sltu $v0, $v1, $a3
/* 4911C 8006DD1C 1040000B */ beqz $v0, .L8006DD4C
/* 49120 8006DD20 000A1400 */ sll $v0, $t2, 0x10
/* 49124 8006DD24 00681821 */ addu $v1, $v1, $t0
/* 49128 8006DD28 0068102B */ sltu $v0, $v1, $t0
/* 4912C 8006DD2C 14400006 */ bnez $v0, .L8006DD48
/* 49130 8006DD30 24C6FFFF */ addiu $a2, $a2, -1
/* 49134 8006DD34 0067102B */ sltu $v0, $v1, $a3
/* 49138 8006DD38 10400004 */ beqz $v0, .L8006DD4C
/* 4913C 8006DD3C 000A1400 */ sll $v0, $t2, 0x10
/* 49140 8006DD40 24C6FFFF */ addiu $a2, $a2, -1
/* 49144 8006DD44 00681821 */ addu $v1, $v1, $t0
.L8006DD48:
/* 49148 8006DD48 000A1400 */ sll $v0, $t2, 0x10
.L8006DD4C:
/* 4914C 8006DD4C 00463025 */ or $a2, $v0, $a2
/* 49150 8006DD50 00672023 */ subu $a0, $v1, $a3
/* 49154 8006DD54 00C90019 */ multu $a2, $t1
/* 49158 8006DD58 00001810 */ mfhi $v1
/* 4915C 8006DD5C 0083102B */ sltu $v0, $a0, $v1
/* 49160 8006DD60 00004012 */ mflo $t0
/* 49164 8006DD64 54400007 */ bnel $v0, $zero, .L8006DD84
/* 49168 8006DD68 24C6FFFF */ addiu $a2, $a2, -1
/* 4916C 8006DD6C 14640006 */ bne $v1, $a0, .L8006DD88
/* 49170 8006DD70 0000502D */ daddu $t2, $zero, $zero
/* 49174 8006DD74 0168102B */ sltu $v0, $t3, $t0
/* 49178 8006DD78 10400004 */ beqz $v0, .L8006DD8C
/* 4917C 8006DD7C 00C0782D */ daddu $t7, $a2, $zero
/* 49180 8006DD80 24C6FFFF */ addiu $a2, $a2, -1
.L8006DD84:
/* 49184 8006DD84 0000502D */ daddu $t2, $zero, $zero
.L8006DD88:
/* 49188 8006DD88 00C0782D */ daddu $t7, $a2, $zero
.L8006DD8C:
/* 4918C 8006DD8C 0140702D */ daddu $t6, $t2, $zero
/* 49190 8006DD90 01C0102D */ daddu $v0, $t6, $zero
/* 49194 8006DD94 13000007 */ beqz $t8, .L8006DDB4
/* 49198 8006DD98 01E0182D */ daddu $v1, $t7, $zero
/* 4919C 8006DD9C 00036823 */ negu $t5, $v1
/* 491A0 8006DDA0 00021823 */ negu $v1, $v0
/* 491A4 8006DDA4 000D102B */ sltu $v0, $zero, $t5
/* 491A8 8006DDA8 00626023 */ subu $t4, $v1, $v0
/* 491AC 8006DDAC 0180102D */ daddu $v0, $t4, $zero
/* 491B0 8006DDB0 01A0182D */ daddu $v1, $t5, $zero
.L8006DDB4:
/* 491B4 8006DDB4 03E00008 */ jr $ra
/* 491B8 8006DDB8 00000000 */ nop
/* 491BC 8006DDBC 00000000 */ nop

View File

@ -1,390 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_80099F40
.byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
.section .text
glabel __moddi3
/* 491C0 8006DDC0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 491C4 8006DDC4 AFB20010 */ sw $s2, 0x10($sp)
/* 491C8 8006DDC8 0000902D */ daddu $s2, $zero, $zero
/* 491CC 8006DDCC AFB1000C */ sw $s1, 0xc($sp)
/* 491D0 8006DDD0 04810008 */ bgez $a0, .L8006DDF4
/* 491D4 8006DDD4 AFB00008 */ sw $s0, 8($sp)
/* 491D8 8006DDD8 2412FFFF */ addiu $s2, $zero, -1
/* 491DC 8006DDDC 00054823 */ negu $t1, $a1
/* 491E0 8006DDE0 00041823 */ negu $v1, $a0
/* 491E4 8006DDE4 0009102B */ sltu $v0, $zero, $t1
/* 491E8 8006DDE8 00624023 */ subu $t0, $v1, $v0
/* 491EC 8006DDEC 0100202D */ daddu $a0, $t0, $zero
/* 491F0 8006DDF0 0120282D */ daddu $a1, $t1, $zero
.L8006DDF4:
/* 491F4 8006DDF4 04C10008 */ bgez $a2, .L8006DE18
/* 491F8 8006DDF8 00E0402D */ daddu $t0, $a3, $zero
/* 491FC 8006DDFC 00075823 */ negu $t3, $a3
/* 49200 8006DE00 00061823 */ negu $v1, $a2
/* 49204 8006DE04 000B102B */ sltu $v0, $zero, $t3
/* 49208 8006DE08 00625023 */ subu $t2, $v1, $v0
/* 4920C 8006DE0C 0140302D */ daddu $a2, $t2, $zero
/* 49210 8006DE10 0160382D */ daddu $a3, $t3, $zero
/* 49214 8006DE14 00E0402D */ daddu $t0, $a3, $zero
.L8006DE18:
/* 49218 8006DE18 00C0482D */ daddu $t1, $a2, $zero
/* 4921C 8006DE1C 00A0582D */ daddu $t3, $a1, $zero
/* 49220 8006DE20 0080502D */ daddu $t2, $a0, $zero
/* 49224 8006DE24 152000A6 */ bnez $t1, .L8006E0C0
/* 49228 8006DE28 03A0C82D */ daddu $t9, $sp, $zero
/* 4922C 8006DE2C 0148102B */ sltu $v0, $t2, $t0
/* 49230 8006DE30 1040001D */ beqz $v0, .L8006DEA8
/* 49234 8006DE34 3402FFFF */ ori $v0, $zero, 0xffff
/* 49238 8006DE38 0048102B */ sltu $v0, $v0, $t0
/* 4923C 8006DE3C 14400005 */ bnez $v0, .L8006DE54
/* 49240 8006DE40 00E0182D */ daddu $v1, $a3, $zero
/* 49244 8006DE44 2D020100 */ sltiu $v0, $t0, 0x100
/* 49248 8006DE48 38420001 */ xori $v0, $v0, 1
/* 4924C 8006DE4C 0801B79B */ j .L8006DE6C
/* 49250 8006DE50 000220C0 */ sll $a0, $v0, 3
.L8006DE54:
/* 49254 8006DE54 3C0200FF */ lui $v0, 0xff
/* 49258 8006DE58 3442FFFF */ ori $v0, $v0, 0xffff
/* 4925C 8006DE5C 0048102B */ sltu $v0, $v0, $t0
/* 49260 8006DE60 14400002 */ bnez $v0, .L8006DE6C
/* 49264 8006DE64 24040018 */ addiu $a0, $zero, 0x18
/* 49268 8006DE68 24040010 */ addiu $a0, $zero, 0x10
.L8006DE6C:
/* 4926C 8006DE6C 00831006 */ srlv $v0, $v1, $a0
/* 49270 8006DE70 3C01800A */ lui $at, %hi(D_80099F40)
/* 49274 8006DE74 00220821 */ addu $at, $at, $v0
/* 49278 8006DE78 90229F40 */ lbu $v0, %lo(D_80099F40)($at)
/* 4927C 8006DE7C 00441021 */ addu $v0, $v0, $a0
/* 49280 8006DE80 24040020 */ addiu $a0, $zero, 0x20
/* 49284 8006DE84 00826823 */ subu $t5, $a0, $v0
/* 49288 8006DE88 11A0005B */ beqz $t5, .L8006DFF8
/* 4928C 8006DE8C 01AA1804 */ sllv $v1, $t2, $t5
/* 49290 8006DE90 01A84004 */ sllv $t0, $t0, $t5
/* 49294 8006DE94 008D1023 */ subu $v0, $a0, $t5
/* 49298 8006DE98 004B1006 */ srlv $v0, $t3, $v0
/* 4929C 8006DE9C 00625025 */ or $t2, $v1, $v0
/* 492A0 8006DEA0 0801B7FE */ j .L8006DFF8
/* 492A4 8006DEA4 01AB5804 */ sllv $t3, $t3, $t5
.L8006DEA8:
/* 492A8 8006DEA8 15000008 */ bnez $t0, .L8006DECC
/* 492AC 8006DEAC 0048102B */ sltu $v0, $v0, $t0
/* 492B0 8006DEB0 24020001 */ addiu $v0, $zero, 1
/* 492B4 8006DEB4 15200002 */ bnez $t1, .L8006DEC0
/* 492B8 8006DEB8 0049001B */ divu $zero, $v0, $t1
/* 492BC 8006DEBC 0007000D */ break 7
.L8006DEC0:
/* 492C0 8006DEC0 00004012 */ mflo $t0
/* 492C4 8006DEC4 3402FFFF */ ori $v0, $zero, 0xffff
/* 492C8 8006DEC8 0048102B */ sltu $v0, $v0, $t0
.L8006DECC:
/* 492CC 8006DECC 14400005 */ bnez $v0, .L8006DEE4
/* 492D0 8006DED0 0100202D */ daddu $a0, $t0, $zero
/* 492D4 8006DED4 2D020100 */ sltiu $v0, $t0, 0x100
/* 492D8 8006DED8 38420001 */ xori $v0, $v0, 1
/* 492DC 8006DEDC 0801B7BF */ j .L8006DEFC
/* 492E0 8006DEE0 000218C0 */ sll $v1, $v0, 3
.L8006DEE4:
/* 492E4 8006DEE4 3C0200FF */ lui $v0, 0xff
/* 492E8 8006DEE8 3442FFFF */ ori $v0, $v0, 0xffff
/* 492EC 8006DEEC 0048102B */ sltu $v0, $v0, $t0
/* 492F0 8006DEF0 14400002 */ bnez $v0, .L8006DEFC
/* 492F4 8006DEF4 24030018 */ addiu $v1, $zero, 0x18
/* 492F8 8006DEF8 24030010 */ addiu $v1, $zero, 0x10
.L8006DEFC:
/* 492FC 8006DEFC 00641006 */ srlv $v0, $a0, $v1
/* 49300 8006DF00 3C01800A */ lui $at, %hi(D_80099F40)
/* 49304 8006DF04 00220821 */ addu $at, $at, $v0
/* 49308 8006DF08 90229F40 */ lbu $v0, %lo(D_80099F40)($at)
/* 4930C 8006DF0C 00431021 */ addu $v0, $v0, $v1
/* 49310 8006DF10 24030020 */ addiu $v1, $zero, 0x20
/* 49314 8006DF14 00626823 */ subu $t5, $v1, $v0
/* 49318 8006DF18 15A00003 */ bnez $t5, .L8006DF28
/* 4931C 8006DF1C 006DC023 */ subu $t8, $v1, $t5
/* 49320 8006DF20 0801B7FE */ j .L8006DFF8
/* 49324 8006DF24 01485023 */ subu $t2, $t2, $t0
.L8006DF28:
/* 49328 8006DF28 01A84004 */ sllv $t0, $t0, $t5
/* 4932C 8006DF2C 030A2006 */ srlv $a0, $t2, $t8
/* 49330 8006DF30 01AA1804 */ sllv $v1, $t2, $t5
/* 49334 8006DF34 030B1006 */ srlv $v0, $t3, $t8
/* 49338 8006DF38 00625025 */ or $t2, $v1, $v0
/* 4933C 8006DF3C 00082C02 */ srl $a1, $t0, 0x10
/* 49340 8006DF40 14A00002 */ bnez $a1, .L8006DF4C
/* 49344 8006DF44 0085001B */ divu $zero, $a0, $a1
/* 49348 8006DF48 0007000D */ break 7
.L8006DF4C:
/* 4934C 8006DF4C 00001012 */ mflo $v0
/* 49350 8006DF50 00001810 */ mfhi $v1
/* 49354 8006DF54 3106FFFF */ andi $a2, $t0, 0xffff
/* 49358 8006DF58 00000000 */ nop
/* 4935C 8006DF5C 00460018 */ mult $v0, $a2
/* 49360 8006DF60 00031C00 */ sll $v1, $v1, 0x10
/* 49364 8006DF64 000A1402 */ srl $v0, $t2, 0x10
/* 49368 8006DF68 00621825 */ or $v1, $v1, $v0
/* 4936C 8006DF6C 00002012 */ mflo $a0
/* 49370 8006DF70 0064102B */ sltu $v0, $v1, $a0
/* 49374 8006DF74 10400008 */ beqz $v0, .L8006DF98
/* 49378 8006DF78 01AB5804 */ sllv $t3, $t3, $t5
/* 4937C 8006DF7C 00681821 */ addu $v1, $v1, $t0
/* 49380 8006DF80 0068102B */ sltu $v0, $v1, $t0
/* 49384 8006DF84 54400005 */ bnel $v0, $zero, .L8006DF9C
/* 49388 8006DF88 00641823 */ subu $v1, $v1, $a0
/* 4938C 8006DF8C 0064102B */ sltu $v0, $v1, $a0
/* 49390 8006DF90 54400001 */ bnel $v0, $zero, .L8006DF98
/* 49394 8006DF94 00681821 */ addu $v1, $v1, $t0
.L8006DF98:
/* 49398 8006DF98 00641823 */ subu $v1, $v1, $a0
.L8006DF9C:
/* 4939C 8006DF9C 14A00002 */ bnez $a1, .L8006DFA8
/* 493A0 8006DFA0 0065001B */ divu $zero, $v1, $a1
/* 493A4 8006DFA4 0007000D */ break 7
.L8006DFA8:
/* 493A8 8006DFA8 00001012 */ mflo $v0
/* 493AC 8006DFAC 00001810 */ mfhi $v1
/* 493B0 8006DFB0 00000000 */ nop
/* 493B4 8006DFB4 00000000 */ nop
/* 493B8 8006DFB8 00460018 */ mult $v0, $a2
/* 493BC 8006DFBC 00031C00 */ sll $v1, $v1, 0x10
/* 493C0 8006DFC0 3142FFFF */ andi $v0, $t2, 0xffff
/* 493C4 8006DFC4 00621825 */ or $v1, $v1, $v0
/* 493C8 8006DFC8 00002012 */ mflo $a0
/* 493CC 8006DFCC 0064102B */ sltu $v0, $v1, $a0
/* 493D0 8006DFD0 50400009 */ beql $v0, $zero, .L8006DFF8
/* 493D4 8006DFD4 00645023 */ subu $t2, $v1, $a0
/* 493D8 8006DFD8 00681821 */ addu $v1, $v1, $t0
/* 493DC 8006DFDC 0068102B */ sltu $v0, $v1, $t0
/* 493E0 8006DFE0 14400005 */ bnez $v0, .L8006DFF8
/* 493E4 8006DFE4 00645023 */ subu $t2, $v1, $a0
/* 493E8 8006DFE8 0064102B */ sltu $v0, $v1, $a0
/* 493EC 8006DFEC 54400001 */ bnel $v0, $zero, .L8006DFF4
/* 493F0 8006DFF0 00681821 */ addu $v1, $v1, $t0
.L8006DFF4:
/* 493F4 8006DFF4 00645023 */ subu $t2, $v1, $a0
.L8006DFF8:
/* 493F8 8006DFF8 00082C02 */ srl $a1, $t0, 0x10
/* 493FC 8006DFFC 14A00002 */ bnez $a1, .L8006E008
/* 49400 8006E000 0145001B */ divu $zero, $t2, $a1
/* 49404 8006E004 0007000D */ break 7
.L8006E008:
/* 49408 8006E008 00001012 */ mflo $v0
/* 4940C 8006E00C 00001810 */ mfhi $v1
/* 49410 8006E010 3106FFFF */ andi $a2, $t0, 0xffff
/* 49414 8006E014 00000000 */ nop
/* 49418 8006E018 00460018 */ mult $v0, $a2
/* 4941C 8006E01C 00031C00 */ sll $v1, $v1, 0x10
/* 49420 8006E020 000B1402 */ srl $v0, $t3, 0x10
/* 49424 8006E024 00621825 */ or $v1, $v1, $v0
/* 49428 8006E028 00002012 */ mflo $a0
/* 4942C 8006E02C 0064102B */ sltu $v0, $v1, $a0
/* 49430 8006E030 50400009 */ beql $v0, $zero, .L8006E058
/* 49434 8006E034 00641823 */ subu $v1, $v1, $a0
/* 49438 8006E038 00681821 */ addu $v1, $v1, $t0
/* 4943C 8006E03C 0068102B */ sltu $v0, $v1, $t0
/* 49440 8006E040 54400005 */ bnel $v0, $zero, .L8006E058
/* 49444 8006E044 00641823 */ subu $v1, $v1, $a0
/* 49448 8006E048 0064102B */ sltu $v0, $v1, $a0
/* 4944C 8006E04C 54400001 */ bnel $v0, $zero, .L8006E054
/* 49450 8006E050 00681821 */ addu $v1, $v1, $t0
.L8006E054:
/* 49454 8006E054 00641823 */ subu $v1, $v1, $a0
.L8006E058:
/* 49458 8006E058 14A00002 */ bnez $a1, .L8006E064
/* 4945C 8006E05C 0065001B */ divu $zero, $v1, $a1
/* 49460 8006E060 0007000D */ break 7
.L8006E064:
/* 49464 8006E064 00001012 */ mflo $v0
/* 49468 8006E068 00001810 */ mfhi $v1
/* 4946C 8006E06C 00000000 */ nop
/* 49470 8006E070 00000000 */ nop
/* 49474 8006E074 00460018 */ mult $v0, $a2
/* 49478 8006E078 00031C00 */ sll $v1, $v1, 0x10
/* 4947C 8006E07C 3162FFFF */ andi $v0, $t3, 0xffff
/* 49480 8006E080 00621825 */ or $v1, $v1, $v0
/* 49484 8006E084 00002012 */ mflo $a0
/* 49488 8006E088 0064102B */ sltu $v0, $v1, $a0
/* 4948C 8006E08C 10400007 */ beqz $v0, .L8006E0AC
/* 49490 8006E090 00000000 */ nop
/* 49494 8006E094 00681821 */ addu $v1, $v1, $t0
/* 49498 8006E098 0068102B */ sltu $v0, $v1, $t0
/* 4949C 8006E09C 14400003 */ bnez $v0, .L8006E0AC
/* 494A0 8006E0A0 0064102B */ sltu $v0, $v1, $a0
/* 494A4 8006E0A4 54400001 */ bnel $v0, $zero, .L8006E0AC
/* 494A8 8006E0A8 00681821 */ addu $v1, $v1, $t0
.L8006E0AC:
/* 494AC 8006E0AC 13200087 */ beqz $t9, .L8006E2CC
/* 494B0 8006E0B0 00645823 */ subu $t3, $v1, $a0
/* 494B4 8006E0B4 01AB7806 */ srlv $t7, $t3, $t5
/* 494B8 8006E0B8 0801B8B1 */ j .L8006E2C4
/* 494BC 8006E0BC 0000702D */ daddu $t6, $zero, $zero
.L8006E0C0:
/* 494C0 8006E0C0 0149102B */ sltu $v0, $t2, $t1
/* 494C4 8006E0C4 10400007 */ beqz $v0, .L8006E0E4
/* 494C8 8006E0C8 3402FFFF */ ori $v0, $zero, 0xffff
/* 494CC 8006E0CC 00A0782D */ daddu $t7, $a1, $zero
/* 494D0 8006E0D0 0140702D */ daddu $t6, $t2, $zero
/* 494D4 8006E0D4 AFAE0000 */ sw $t6, ($sp)
/* 494D8 8006E0D8 AFAF0004 */ sw $t7, 4($sp)
/* 494DC 8006E0DC 0801B8B3 */ j .L8006E2CC
/* 494E0 8006E0E0 00000000 */ nop
.L8006E0E4:
/* 494E4 8006E0E4 0049102B */ sltu $v0, $v0, $t1
/* 494E8 8006E0E8 14400005 */ bnez $v0, .L8006E100
/* 494EC 8006E0EC 0120202D */ daddu $a0, $t1, $zero
/* 494F0 8006E0F0 2D220100 */ sltiu $v0, $t1, 0x100
/* 494F4 8006E0F4 38420001 */ xori $v0, $v0, 1
/* 494F8 8006E0F8 0801B846 */ j .L8006E118
/* 494FC 8006E0FC 000218C0 */ sll $v1, $v0, 3
.L8006E100:
/* 49500 8006E100 3C0200FF */ lui $v0, 0xff
/* 49504 8006E104 3442FFFF */ ori $v0, $v0, 0xffff
/* 49508 8006E108 0049102B */ sltu $v0, $v0, $t1
/* 4950C 8006E10C 14400002 */ bnez $v0, .L8006E118
/* 49510 8006E110 24030018 */ addiu $v1, $zero, 0x18
/* 49514 8006E114 24030010 */ addiu $v1, $zero, 0x10
.L8006E118:
/* 49518 8006E118 00641006 */ srlv $v0, $a0, $v1
/* 4951C 8006E11C 3C01800A */ lui $at, %hi(D_80099F40)
/* 49520 8006E120 00220821 */ addu $at, $at, $v0
/* 49524 8006E124 90229F40 */ lbu $v0, %lo(D_80099F40)($at)
/* 49528 8006E128 00431021 */ addu $v0, $v0, $v1
/* 4952C 8006E12C 24030020 */ addiu $v1, $zero, 0x20
/* 49530 8006E130 00626823 */ subu $t5, $v1, $v0
/* 49534 8006E134 15A0000F */ bnez $t5, .L8006E174
/* 49538 8006E138 006DC023 */ subu $t8, $v1, $t5
/* 4953C 8006E13C 012A102B */ sltu $v0, $t1, $t2
/* 49540 8006E140 14400004 */ bnez $v0, .L8006E154
/* 49544 8006E144 01682023 */ subu $a0, $t3, $t0
/* 49548 8006E148 0168102B */ sltu $v0, $t3, $t0
/* 4954C 8006E14C 14400005 */ bnez $v0, .L8006E164
/* 49550 8006E150 00000000 */ nop
.L8006E154:
/* 49554 8006E154 01491823 */ subu $v1, $t2, $t1
/* 49558 8006E158 0164102B */ sltu $v0, $t3, $a0
/* 4955C 8006E15C 00625023 */ subu $t2, $v1, $v0
/* 49560 8006E160 0080582D */ daddu $t3, $a0, $zero
.L8006E164:
/* 49564 8006E164 13200059 */ beqz $t9, .L8006E2CC
/* 49568 8006E168 0160782D */ daddu $t7, $t3, $zero
/* 4956C 8006E16C 0801B8B1 */ j .L8006E2C4
/* 49570 8006E170 0140702D */ daddu $t6, $t2, $zero
.L8006E174:
/* 49574 8006E174 01A91804 */ sllv $v1, $t1, $t5
/* 49578 8006E178 03081006 */ srlv $v0, $t0, $t8
/* 4957C 8006E17C 00624825 */ or $t1, $v1, $v0
/* 49580 8006E180 01A84004 */ sllv $t0, $t0, $t5
/* 49584 8006E184 030A2006 */ srlv $a0, $t2, $t8
/* 49588 8006E188 01AA1804 */ sllv $v1, $t2, $t5
/* 4958C 8006E18C 030B1006 */ srlv $v0, $t3, $t8
/* 49590 8006E190 00625025 */ or $t2, $v1, $v0
/* 49594 8006E194 00093402 */ srl $a2, $t1, 0x10
/* 49598 8006E198 14C00002 */ bnez $a2, .L8006E1A4
/* 4959C 8006E19C 0086001B */ divu $zero, $a0, $a2
/* 495A0 8006E1A0 0007000D */ break 7
.L8006E1A4:
/* 495A4 8006E1A4 00003812 */ mflo $a3
/* 495A8 8006E1A8 00001810 */ mfhi $v1
/* 495AC 8006E1AC 312CFFFF */ andi $t4, $t1, 0xffff
/* 495B0 8006E1B0 00000000 */ nop
/* 495B4 8006E1B4 00EC0018 */ mult $a3, $t4
/* 495B8 8006E1B8 000A1402 */ srl $v0, $t2, 0x10
/* 495BC 8006E1BC 00031C00 */ sll $v1, $v1, 0x10
/* 495C0 8006E1C0 00621825 */ or $v1, $v1, $v0
/* 495C4 8006E1C4 00002812 */ mflo $a1
/* 495C8 8006E1C8 0065102B */ sltu $v0, $v1, $a1
/* 495CC 8006E1CC 1040000A */ beqz $v0, .L8006E1F8
/* 495D0 8006E1D0 01AB5804 */ sllv $t3, $t3, $t5
/* 495D4 8006E1D4 00691821 */ addu $v1, $v1, $t1
/* 495D8 8006E1D8 0069102B */ sltu $v0, $v1, $t1
/* 495DC 8006E1DC 14400006 */ bnez $v0, .L8006E1F8
/* 495E0 8006E1E0 24E7FFFF */ addiu $a3, $a3, -1
/* 495E4 8006E1E4 0065102B */ sltu $v0, $v1, $a1
/* 495E8 8006E1E8 50400004 */ beql $v0, $zero, .L8006E1FC
/* 495EC 8006E1EC 00651823 */ subu $v1, $v1, $a1
/* 495F0 8006E1F0 24E7FFFF */ addiu $a3, $a3, -1
/* 495F4 8006E1F4 00691821 */ addu $v1, $v1, $t1
.L8006E1F8:
/* 495F8 8006E1F8 00651823 */ subu $v1, $v1, $a1
.L8006E1FC:
/* 495FC 8006E1FC 14C00002 */ bnez $a2, .L8006E208
/* 49600 8006E200 0066001B */ divu $zero, $v1, $a2
/* 49604 8006E204 0007000D */ break 7
.L8006E208:
/* 49608 8006E208 00002012 */ mflo $a0
/* 4960C 8006E20C 00001810 */ mfhi $v1
/* 49610 8006E210 00000000 */ nop
/* 49614 8006E214 00000000 */ nop
/* 49618 8006E218 008C0018 */ mult $a0, $t4
/* 4961C 8006E21C 3142FFFF */ andi $v0, $t2, 0xffff
/* 49620 8006E220 00031C00 */ sll $v1, $v1, 0x10
/* 49624 8006E224 00621825 */ or $v1, $v1, $v0
/* 49628 8006E228 00002812 */ mflo $a1
/* 4962C 8006E22C 0065102B */ sltu $v0, $v1, $a1
/* 49630 8006E230 5040000B */ beql $v0, $zero, .L8006E260
/* 49634 8006E234 00655023 */ subu $t2, $v1, $a1
/* 49638 8006E238 00691821 */ addu $v1, $v1, $t1
/* 4963C 8006E23C 0069102B */ sltu $v0, $v1, $t1
/* 49640 8006E240 14400006 */ bnez $v0, .L8006E25C
/* 49644 8006E244 2484FFFF */ addiu $a0, $a0, -1
/* 49648 8006E248 0065102B */ sltu $v0, $v1, $a1
/* 4964C 8006E24C 10400004 */ beqz $v0, .L8006E260
/* 49650 8006E250 00655023 */ subu $t2, $v1, $a1
/* 49654 8006E254 2484FFFF */ addiu $a0, $a0, -1
/* 49658 8006E258 00691821 */ addu $v1, $v1, $t1
.L8006E25C:
/* 4965C 8006E25C 00655023 */ subu $t2, $v1, $a1
.L8006E260:
/* 49660 8006E260 00071400 */ sll $v0, $a3, 0x10
/* 49664 8006E264 00441025 */ or $v0, $v0, $a0
/* 49668 8006E268 00480019 */ multu $v0, $t0
/* 4966C 8006E26C 00003010 */ mfhi $a2
/* 49670 8006E270 0146102B */ sltu $v0, $t2, $a2
/* 49674 8006E274 00002812 */ mflo $a1
/* 49678 8006E278 54400005 */ bnel $v0, $zero, .L8006E290
/* 4967C 8006E27C 00A82023 */ subu $a0, $a1, $t0
/* 49680 8006E280 14CA0007 */ bne $a2, $t2, .L8006E2A0
/* 49684 8006E284 0165102B */ sltu $v0, $t3, $a1
/* 49688 8006E288 10400005 */ beqz $v0, .L8006E2A0
/* 4968C 8006E28C 00A82023 */ subu $a0, $a1, $t0
.L8006E290:
/* 49690 8006E290 00C91823 */ subu $v1, $a2, $t1
/* 49694 8006E294 00A4102B */ sltu $v0, $a1, $a0
/* 49698 8006E298 00623023 */ subu $a2, $v1, $v0
/* 4969C 8006E29C 0080282D */ daddu $a1, $a0, $zero
.L8006E2A0:
/* 496A0 8006E2A0 1320000A */ beqz $t9, .L8006E2CC
/* 496A4 8006E2A4 01651823 */ subu $v1, $t3, $a1
/* 496A8 8006E2A8 01462023 */ subu $a0, $t2, $a2
/* 496AC 8006E2AC 0163102B */ sltu $v0, $t3, $v1
/* 496B0 8006E2B0 00825023 */ subu $t2, $a0, $v0
/* 496B4 8006E2B4 030A1004 */ sllv $v0, $t2, $t8
/* 496B8 8006E2B8 01A31806 */ srlv $v1, $v1, $t5
/* 496BC 8006E2BC 00437825 */ or $t7, $v0, $v1
/* 496C0 8006E2C0 01AA7006 */ srlv $t6, $t2, $t5
.L8006E2C4:
/* 496C4 8006E2C4 AF2E0000 */ sw $t6, ($t9)
/* 496C8 8006E2C8 AF2F0004 */ sw $t7, 4($t9)
.L8006E2CC:
/* 496CC 8006E2CC 12400009 */ beqz $s2, .L8006E2F4
/* 496D0 8006E2D0 00000000 */ nop
/* 496D4 8006E2D4 8FA20000 */ lw $v0, ($sp)
/* 496D8 8006E2D8 8FA30004 */ lw $v1, 4($sp)
/* 496DC 8006E2DC 00038823 */ negu $s1, $v1
/* 496E0 8006E2E0 00021023 */ negu $v0, $v0
/* 496E4 8006E2E4 0011202B */ sltu $a0, $zero, $s1
/* 496E8 8006E2E8 00448023 */ subu $s0, $v0, $a0
/* 496EC 8006E2EC AFB00000 */ sw $s0, ($sp)
/* 496F0 8006E2F0 AFB10004 */ sw $s1, 4($sp)
.L8006E2F4:
/* 496F4 8006E2F4 8FA20000 */ lw $v0, ($sp)
/* 496F8 8006E2F8 8FA30004 */ lw $v1, 4($sp)
/* 496FC 8006E2FC 8FB20010 */ lw $s2, 0x10($sp)
/* 49700 8006E300 8FB1000C */ lw $s1, 0xc($sp)
/* 49704 8006E304 8FB00008 */ lw $s0, 8($sp)
/* 49708 8006E308 03E00008 */ jr $ra
/* 4970C 8006E30C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,395 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_8009A040
.byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
.section .text
glabel __udivdi3
/* 49710 8006E310 00E0482D */ daddu $t1, $a3, $zero
/* 49714 8006E314 00C0402D */ daddu $t0, $a2, $zero
/* 49718 8006E318 150000DF */ bnez $t0, .L8006E698
/* 4971C 8006E31C 00A0582D */ daddu $t3, $a1, $zero
/* 49720 8006E320 0089102B */ sltu $v0, $a0, $t1
/* 49724 8006E324 1040004E */ beqz $v0, .L8006E460
/* 49728 8006E328 3402FFFF */ ori $v0, $zero, 0xffff
/* 4972C 8006E32C 0049102B */ sltu $v0, $v0, $t1
/* 49730 8006E330 14400005 */ bnez $v0, .L8006E348
/* 49734 8006E334 00E0302D */ daddu $a2, $a3, $zero
/* 49738 8006E338 2D220100 */ sltiu $v0, $t1, 0x100
/* 4973C 8006E33C 38420001 */ xori $v0, $v0, 1
/* 49740 8006E340 0801B8D8 */ j .L8006E360
/* 49744 8006E344 000218C0 */ sll $v1, $v0, 3
.L8006E348:
/* 49748 8006E348 3C0200FF */ lui $v0, 0xff
/* 4974C 8006E34C 3442FFFF */ ori $v0, $v0, 0xffff
/* 49750 8006E350 0049102B */ sltu $v0, $v0, $t1
/* 49754 8006E354 14400002 */ bnez $v0, .L8006E360
/* 49758 8006E358 24030018 */ addiu $v1, $zero, 0x18
/* 4975C 8006E35C 24030010 */ addiu $v1, $zero, 0x10
.L8006E360:
/* 49760 8006E360 00661006 */ srlv $v0, $a2, $v1
/* 49764 8006E364 3C01800A */ lui $at, %hi(D_8009A040)
/* 49768 8006E368 00220821 */ addu $at, $at, $v0
/* 4976C 8006E36C 9022A040 */ lbu $v0, %lo(D_8009A040)($at)
/* 49770 8006E370 24050020 */ addiu $a1, $zero, 0x20
/* 49774 8006E374 00431021 */ addu $v0, $v0, $v1
/* 49778 8006E378 00A23023 */ subu $a2, $a1, $v0
/* 4977C 8006E37C 10C00006 */ beqz $a2, .L8006E398
/* 49780 8006E380 00C41804 */ sllv $v1, $a0, $a2
/* 49784 8006E384 00C94804 */ sllv $t1, $t1, $a2
/* 49788 8006E388 00A61023 */ subu $v0, $a1, $a2
/* 4978C 8006E38C 004B1006 */ srlv $v0, $t3, $v0
/* 49790 8006E390 00622025 */ or $a0, $v1, $v0
/* 49794 8006E394 00CB5804 */ sllv $t3, $t3, $a2
.L8006E398:
/* 49798 8006E398 00093402 */ srl $a2, $t1, 0x10
/* 4979C 8006E39C 14C00002 */ bnez $a2, .L8006E3A8
/* 497A0 8006E3A0 0086001B */ divu $zero, $a0, $a2
/* 497A4 8006E3A4 0007000D */ break 7
.L8006E3A8:
/* 497A8 8006E3A8 00003812 */ mflo $a3
/* 497AC 8006E3AC 00001810 */ mfhi $v1
/* 497B0 8006E3B0 3128FFFF */ andi $t0, $t1, 0xffff
/* 497B4 8006E3B4 00000000 */ nop
/* 497B8 8006E3B8 00E80018 */ mult $a3, $t0
/* 497BC 8006E3BC 000B1402 */ srl $v0, $t3, 0x10
/* 497C0 8006E3C0 00031C00 */ sll $v1, $v1, 0x10
/* 497C4 8006E3C4 00621825 */ or $v1, $v1, $v0
/* 497C8 8006E3C8 00002812 */ mflo $a1
/* 497CC 8006E3CC 0065102B */ sltu $v0, $v1, $a1
/* 497D0 8006E3D0 5040000B */ beql $v0, $zero, .L8006E400
/* 497D4 8006E3D4 00651823 */ subu $v1, $v1, $a1
/* 497D8 8006E3D8 00691821 */ addu $v1, $v1, $t1
/* 497DC 8006E3DC 0069102B */ sltu $v0, $v1, $t1
/* 497E0 8006E3E0 14400006 */ bnez $v0, .L8006E3FC
/* 497E4 8006E3E4 24E7FFFF */ addiu $a3, $a3, -1
/* 497E8 8006E3E8 0065102B */ sltu $v0, $v1, $a1
/* 497EC 8006E3EC 50400004 */ beql $v0, $zero, .L8006E400
/* 497F0 8006E3F0 00651823 */ subu $v1, $v1, $a1
/* 497F4 8006E3F4 24E7FFFF */ addiu $a3, $a3, -1
/* 497F8 8006E3F8 00691821 */ addu $v1, $v1, $t1
.L8006E3FC:
/* 497FC 8006E3FC 00651823 */ subu $v1, $v1, $a1
.L8006E400:
/* 49800 8006E400 14C00002 */ bnez $a2, .L8006E40C
/* 49804 8006E404 0066001B */ divu $zero, $v1, $a2
/* 49808 8006E408 0007000D */ break 7
.L8006E40C:
/* 4980C 8006E40C 00002012 */ mflo $a0
/* 49810 8006E410 00001810 */ mfhi $v1
/* 49814 8006E414 00000000 */ nop
/* 49818 8006E418 00000000 */ nop
/* 4981C 8006E41C 00880018 */ mult $a0, $t0
/* 49820 8006E420 3162FFFF */ andi $v0, $t3, 0xffff
/* 49824 8006E424 00031C00 */ sll $v1, $v1, 0x10
/* 49828 8006E428 00621825 */ or $v1, $v1, $v0
/* 4982C 8006E42C 00002812 */ mflo $a1
/* 49830 8006E430 0065102B */ sltu $v0, $v1, $a1
/* 49834 8006E434 10400007 */ beqz $v0, .L8006E454
/* 49838 8006E438 00691821 */ addu $v1, $v1, $t1
/* 4983C 8006E43C 0069102B */ sltu $v0, $v1, $t1
/* 49840 8006E440 14400004 */ bnez $v0, .L8006E454
/* 49844 8006E444 2484FFFF */ addiu $a0, $a0, -1
/* 49848 8006E448 0065102B */ sltu $v0, $v1, $a1
/* 4984C 8006E44C 54400001 */ bnel $v0, $zero, .L8006E454
/* 49850 8006E450 2484FFFF */ addiu $a0, $a0, -1
.L8006E454:
/* 49854 8006E454 00071400 */ sll $v0, $a3, 0x10
/* 49858 8006E458 0801BA13 */ j .L8006E84C
/* 4985C 8006E45C 00443025 */ or $a2, $v0, $a0
.L8006E460:
/* 49860 8006E460 15200008 */ bnez $t1, .L8006E484
/* 49864 8006E464 0049102B */ sltu $v0, $v0, $t1
/* 49868 8006E468 24020001 */ addiu $v0, $zero, 1
/* 4986C 8006E46C 15000002 */ bnez $t0, .L8006E478
/* 49870 8006E470 0048001B */ divu $zero, $v0, $t0
/* 49874 8006E474 0007000D */ break 7
.L8006E478:
/* 49878 8006E478 00004812 */ mflo $t1
/* 4987C 8006E47C 3402FFFF */ ori $v0, $zero, 0xffff
/* 49880 8006E480 0049102B */ sltu $v0, $v0, $t1
.L8006E484:
/* 49884 8006E484 14400005 */ bnez $v0, .L8006E49C
/* 49888 8006E488 0120282D */ daddu $a1, $t1, $zero
/* 4988C 8006E48C 2D220100 */ sltiu $v0, $t1, 0x100
/* 49890 8006E490 38420001 */ xori $v0, $v0, 1
/* 49894 8006E494 0801B92D */ j .L8006E4B4
/* 49898 8006E498 000218C0 */ sll $v1, $v0, 3
.L8006E49C:
/* 4989C 8006E49C 3C0200FF */ lui $v0, 0xff
/* 498A0 8006E4A0 3442FFFF */ ori $v0, $v0, 0xffff
/* 498A4 8006E4A4 0049102B */ sltu $v0, $v0, $t1
/* 498A8 8006E4A8 14400002 */ bnez $v0, .L8006E4B4
/* 498AC 8006E4AC 24030018 */ addiu $v1, $zero, 0x18
/* 498B0 8006E4B0 24030010 */ addiu $v1, $zero, 0x10
.L8006E4B4:
/* 498B4 8006E4B4 00651006 */ srlv $v0, $a1, $v1
/* 498B8 8006E4B8 3C01800A */ lui $at, %hi(D_8009A040)
/* 498BC 8006E4BC 00220821 */ addu $at, $at, $v0
/* 498C0 8006E4C0 9022A040 */ lbu $v0, %lo(D_8009A040)($at)
/* 498C4 8006E4C4 00431021 */ addu $v0, $v0, $v1
/* 498C8 8006E4C8 24030020 */ addiu $v1, $zero, 0x20
/* 498CC 8006E4CC 00623023 */ subu $a2, $v1, $v0
/* 498D0 8006E4D0 14C00004 */ bnez $a2, .L8006E4E4
/* 498D4 8006E4D4 00662823 */ subu $a1, $v1, $a2
/* 498D8 8006E4D8 00892023 */ subu $a0, $a0, $t1
/* 498DC 8006E4DC 0801B974 */ j .L8006E5D0
/* 498E0 8006E4E0 240A0001 */ addiu $t2, $zero, 1
.L8006E4E4:
/* 498E4 8006E4E4 00C94804 */ sllv $t1, $t1, $a2
/* 498E8 8006E4E8 00A43806 */ srlv $a3, $a0, $a1
/* 498EC 8006E4EC 00C41804 */ sllv $v1, $a0, $a2
/* 498F0 8006E4F0 00AB1006 */ srlv $v0, $t3, $a1
/* 498F4 8006E4F4 00622025 */ or $a0, $v1, $v0
/* 498F8 8006E4F8 00CB5804 */ sllv $t3, $t3, $a2
/* 498FC 8006E4FC 00093402 */ srl $a2, $t1, 0x10
/* 49900 8006E500 14C00002 */ bnez $a2, .L8006E50C
/* 49904 8006E504 00E6001B */ divu $zero, $a3, $a2
/* 49908 8006E508 0007000D */ break 7
.L8006E50C:
/* 4990C 8006E50C 00004012 */ mflo $t0
/* 49910 8006E510 00001810 */ mfhi $v1
/* 49914 8006E514 3125FFFF */ andi $a1, $t1, 0xffff
/* 49918 8006E518 00000000 */ nop
/* 4991C 8006E51C 01050018 */ mult $t0, $a1
/* 49920 8006E520 00041402 */ srl $v0, $a0, 0x10
/* 49924 8006E524 00031C00 */ sll $v1, $v1, 0x10
/* 49928 8006E528 00621825 */ or $v1, $v1, $v0
/* 4992C 8006E52C 00003812 */ mflo $a3
/* 49930 8006E530 0067102B */ sltu $v0, $v1, $a3
/* 49934 8006E534 5040000B */ beql $v0, $zero, .L8006E564
/* 49938 8006E538 00671823 */ subu $v1, $v1, $a3
/* 4993C 8006E53C 00691821 */ addu $v1, $v1, $t1
/* 49940 8006E540 0069102B */ sltu $v0, $v1, $t1
/* 49944 8006E544 14400006 */ bnez $v0, .L8006E560
/* 49948 8006E548 2508FFFF */ addiu $t0, $t0, -1
/* 4994C 8006E54C 0067102B */ sltu $v0, $v1, $a3
/* 49950 8006E550 50400004 */ beql $v0, $zero, .L8006E564
/* 49954 8006E554 00671823 */ subu $v1, $v1, $a3
/* 49958 8006E558 2508FFFF */ addiu $t0, $t0, -1
/* 4995C 8006E55C 00691821 */ addu $v1, $v1, $t1
.L8006E560:
/* 49960 8006E560 00671823 */ subu $v1, $v1, $a3
.L8006E564:
/* 49964 8006E564 14C00002 */ bnez $a2, .L8006E570
/* 49968 8006E568 0066001B */ divu $zero, $v1, $a2
/* 4996C 8006E56C 0007000D */ break 7
.L8006E570:
/* 49970 8006E570 00003012 */ mflo $a2
/* 49974 8006E574 00001810 */ mfhi $v1
/* 49978 8006E578 00000000 */ nop
/* 4997C 8006E57C 00000000 */ nop
/* 49980 8006E580 00C50018 */ mult $a2, $a1
/* 49984 8006E584 3082FFFF */ andi $v0, $a0, 0xffff
/* 49988 8006E588 00031C00 */ sll $v1, $v1, 0x10
/* 4998C 8006E58C 00621825 */ or $v1, $v1, $v0
/* 49990 8006E590 00003812 */ mflo $a3
/* 49994 8006E594 0067102B */ sltu $v0, $v1, $a3
/* 49998 8006E598 1040000B */ beqz $v0, .L8006E5C8
/* 4999C 8006E59C 00081400 */ sll $v0, $t0, 0x10
/* 499A0 8006E5A0 00691821 */ addu $v1, $v1, $t1
/* 499A4 8006E5A4 0069102B */ sltu $v0, $v1, $t1
/* 499A8 8006E5A8 14400006 */ bnez $v0, .L8006E5C4
/* 499AC 8006E5AC 24C6FFFF */ addiu $a2, $a2, -1
/* 499B0 8006E5B0 0067102B */ sltu $v0, $v1, $a3
/* 499B4 8006E5B4 10400004 */ beqz $v0, .L8006E5C8
/* 499B8 8006E5B8 00081400 */ sll $v0, $t0, 0x10
/* 499BC 8006E5BC 24C6FFFF */ addiu $a2, $a2, -1
/* 499C0 8006E5C0 00691821 */ addu $v1, $v1, $t1
.L8006E5C4:
/* 499C4 8006E5C4 00081400 */ sll $v0, $t0, 0x10
.L8006E5C8:
/* 499C8 8006E5C8 00465025 */ or $t2, $v0, $a2
/* 499CC 8006E5CC 00672023 */ subu $a0, $v1, $a3
.L8006E5D0:
/* 499D0 8006E5D0 00093402 */ srl $a2, $t1, 0x10
/* 499D4 8006E5D4 14C00002 */ bnez $a2, .L8006E5E0
/* 499D8 8006E5D8 0086001B */ divu $zero, $a0, $a2
/* 499DC 8006E5DC 0007000D */ break 7
.L8006E5E0:
/* 499E0 8006E5E0 00003812 */ mflo $a3
/* 499E4 8006E5E4 00001810 */ mfhi $v1
/* 499E8 8006E5E8 3128FFFF */ andi $t0, $t1, 0xffff
/* 499EC 8006E5EC 00000000 */ nop
/* 499F0 8006E5F0 00E80018 */ mult $a3, $t0
/* 499F4 8006E5F4 000B1402 */ srl $v0, $t3, 0x10
/* 499F8 8006E5F8 00031C00 */ sll $v1, $v1, 0x10
/* 499FC 8006E5FC 00621825 */ or $v1, $v1, $v0
/* 49A00 8006E600 00002812 */ mflo $a1
/* 49A04 8006E604 0065102B */ sltu $v0, $v1, $a1
/* 49A08 8006E608 5040000B */ beql $v0, $zero, .L8006E638
/* 49A0C 8006E60C 00651823 */ subu $v1, $v1, $a1
/* 49A10 8006E610 00691821 */ addu $v1, $v1, $t1
/* 49A14 8006E614 0069102B */ sltu $v0, $v1, $t1
/* 49A18 8006E618 14400006 */ bnez $v0, .L8006E634
/* 49A1C 8006E61C 24E7FFFF */ addiu $a3, $a3, -1
/* 49A20 8006E620 0065102B */ sltu $v0, $v1, $a1
/* 49A24 8006E624 50400004 */ beql $v0, $zero, .L8006E638
/* 49A28 8006E628 00651823 */ subu $v1, $v1, $a1
/* 49A2C 8006E62C 24E7FFFF */ addiu $a3, $a3, -1
/* 49A30 8006E630 00691821 */ addu $v1, $v1, $t1
.L8006E634:
/* 49A34 8006E634 00651823 */ subu $v1, $v1, $a1
.L8006E638:
/* 49A38 8006E638 14C00002 */ bnez $a2, .L8006E644
/* 49A3C 8006E63C 0066001B */ divu $zero, $v1, $a2
/* 49A40 8006E640 0007000D */ break 7
.L8006E644:
/* 49A44 8006E644 00002012 */ mflo $a0
/* 49A48 8006E648 00001810 */ mfhi $v1
/* 49A4C 8006E64C 00000000 */ nop
/* 49A50 8006E650 00000000 */ nop
/* 49A54 8006E654 00880018 */ mult $a0, $t0
/* 49A58 8006E658 3162FFFF */ andi $v0, $t3, 0xffff
/* 49A5C 8006E65C 00031C00 */ sll $v1, $v1, 0x10
/* 49A60 8006E660 00621825 */ or $v1, $v1, $v0
/* 49A64 8006E664 00002812 */ mflo $a1
/* 49A68 8006E668 0065102B */ sltu $v0, $v1, $a1
/* 49A6C 8006E66C 10400007 */ beqz $v0, .L8006E68C
/* 49A70 8006E670 00691821 */ addu $v1, $v1, $t1
/* 49A74 8006E674 0069102B */ sltu $v0, $v1, $t1
/* 49A78 8006E678 14400004 */ bnez $v0, .L8006E68C
/* 49A7C 8006E67C 2484FFFF */ addiu $a0, $a0, -1
/* 49A80 8006E680 0065102B */ sltu $v0, $v1, $a1
/* 49A84 8006E684 54400001 */ bnel $v0, $zero, .L8006E68C
/* 49A88 8006E688 2484FFFF */ addiu $a0, $a0, -1
.L8006E68C:
/* 49A8C 8006E68C 00071400 */ sll $v0, $a3, 0x10
/* 49A90 8006E690 0801BA14 */ j .L8006E850
/* 49A94 8006E694 00443025 */ or $a2, $v0, $a0
.L8006E698:
/* 49A98 8006E698 0088102B */ sltu $v0, $a0, $t0
/* 49A9C 8006E69C 10400003 */ beqz $v0, .L8006E6AC
/* 49AA0 8006E6A0 3402FFFF */ ori $v0, $zero, 0xffff
/* 49AA4 8006E6A4 0801BA13 */ j .L8006E84C
/* 49AA8 8006E6A8 0000302D */ daddu $a2, $zero, $zero
.L8006E6AC:
/* 49AAC 8006E6AC 0048102B */ sltu $v0, $v0, $t0
/* 49AB0 8006E6B0 14400005 */ bnez $v0, .L8006E6C8
/* 49AB4 8006E6B4 0100282D */ daddu $a1, $t0, $zero
/* 49AB8 8006E6B8 2D020100 */ sltiu $v0, $t0, 0x100
/* 49ABC 8006E6BC 38420001 */ xori $v0, $v0, 1
/* 49AC0 8006E6C0 0801B9B8 */ j .L8006E6E0
/* 49AC4 8006E6C4 000218C0 */ sll $v1, $v0, 3
.L8006E6C8:
/* 49AC8 8006E6C8 3C0200FF */ lui $v0, 0xff
/* 49ACC 8006E6CC 3442FFFF */ ori $v0, $v0, 0xffff
/* 49AD0 8006E6D0 0048102B */ sltu $v0, $v0, $t0
/* 49AD4 8006E6D4 14400002 */ bnez $v0, .L8006E6E0
/* 49AD8 8006E6D8 24030018 */ addiu $v1, $zero, 0x18
/* 49ADC 8006E6DC 24030010 */ addiu $v1, $zero, 0x10
.L8006E6E0:
/* 49AE0 8006E6E0 00651006 */ srlv $v0, $a1, $v1
/* 49AE4 8006E6E4 3C01800A */ lui $at, %hi(D_8009A040)
/* 49AE8 8006E6E8 00220821 */ addu $at, $at, $v0
/* 49AEC 8006E6EC 9022A040 */ lbu $v0, %lo(D_8009A040)($at)
/* 49AF0 8006E6F0 00431021 */ addu $v0, $v0, $v1
/* 49AF4 8006E6F4 24030020 */ addiu $v1, $zero, 0x20
/* 49AF8 8006E6F8 00623023 */ subu $a2, $v1, $v0
/* 49AFC 8006E6FC 54C00009 */ bnel $a2, $zero, .L8006E724
/* 49B00 8006E700 00662823 */ subu $a1, $v1, $a2
/* 49B04 8006E704 0104102B */ sltu $v0, $t0, $a0
/* 49B08 8006E708 14400050 */ bnez $v0, .L8006E84C
/* 49B0C 8006E70C 24060001 */ addiu $a2, $zero, 1
/* 49B10 8006E710 0169102B */ sltu $v0, $t3, $t1
/* 49B14 8006E714 1440004D */ bnez $v0, .L8006E84C
/* 49B18 8006E718 0000302D */ daddu $a2, $zero, $zero
/* 49B1C 8006E71C 0801BA13 */ j .L8006E84C
/* 49B20 8006E720 24060001 */ addiu $a2, $zero, 1
.L8006E724:
/* 49B24 8006E724 00C81804 */ sllv $v1, $t0, $a2
/* 49B28 8006E728 00A91006 */ srlv $v0, $t1, $a1
/* 49B2C 8006E72C 00624025 */ or $t0, $v1, $v0
/* 49B30 8006E730 00C94804 */ sllv $t1, $t1, $a2
/* 49B34 8006E734 00A43806 */ srlv $a3, $a0, $a1
/* 49B38 8006E738 00C41804 */ sllv $v1, $a0, $a2
/* 49B3C 8006E73C 00AB1006 */ srlv $v0, $t3, $a1
/* 49B40 8006E740 00622025 */ or $a0, $v1, $v0
/* 49B44 8006E744 00CB5804 */ sllv $t3, $t3, $a2
/* 49B48 8006E748 00083402 */ srl $a2, $t0, 0x10
/* 49B4C 8006E74C 14C00002 */ bnez $a2, .L8006E758
/* 49B50 8006E750 00E6001B */ divu $zero, $a3, $a2
/* 49B54 8006E754 0007000D */ break 7
.L8006E758:
/* 49B58 8006E758 00005012 */ mflo $t2
/* 49B5C 8006E75C 00001810 */ mfhi $v1
/* 49B60 8006E760 3105FFFF */ andi $a1, $t0, 0xffff
/* 49B64 8006E764 00000000 */ nop
/* 49B68 8006E768 01450018 */ mult $t2, $a1
/* 49B6C 8006E76C 00041402 */ srl $v0, $a0, 0x10
/* 49B70 8006E770 00031C00 */ sll $v1, $v1, 0x10
/* 49B74 8006E774 00621825 */ or $v1, $v1, $v0
/* 49B78 8006E778 00003812 */ mflo $a3
/* 49B7C 8006E77C 0067102B */ sltu $v0, $v1, $a3
/* 49B80 8006E780 5040000B */ beql $v0, $zero, .L8006E7B0
/* 49B84 8006E784 00671823 */ subu $v1, $v1, $a3
/* 49B88 8006E788 00681821 */ addu $v1, $v1, $t0
/* 49B8C 8006E78C 0068102B */ sltu $v0, $v1, $t0
/* 49B90 8006E790 14400006 */ bnez $v0, .L8006E7AC
/* 49B94 8006E794 254AFFFF */ addiu $t2, $t2, -1
/* 49B98 8006E798 0067102B */ sltu $v0, $v1, $a3
/* 49B9C 8006E79C 50400004 */ beql $v0, $zero, .L8006E7B0
/* 49BA0 8006E7A0 00671823 */ subu $v1, $v1, $a3
/* 49BA4 8006E7A4 254AFFFF */ addiu $t2, $t2, -1
/* 49BA8 8006E7A8 00681821 */ addu $v1, $v1, $t0
.L8006E7AC:
/* 49BAC 8006E7AC 00671823 */ subu $v1, $v1, $a3
.L8006E7B0:
/* 49BB0 8006E7B0 14C00002 */ bnez $a2, .L8006E7BC
/* 49BB4 8006E7B4 0066001B */ divu $zero, $v1, $a2
/* 49BB8 8006E7B8 0007000D */ break 7
.L8006E7BC:
/* 49BBC 8006E7BC 00003012 */ mflo $a2
/* 49BC0 8006E7C0 00001810 */ mfhi $v1
/* 49BC4 8006E7C4 00000000 */ nop
/* 49BC8 8006E7C8 00000000 */ nop
/* 49BCC 8006E7CC 00C50018 */ mult $a2, $a1
/* 49BD0 8006E7D0 3082FFFF */ andi $v0, $a0, 0xffff
/* 49BD4 8006E7D4 00031C00 */ sll $v1, $v1, 0x10
/* 49BD8 8006E7D8 00621825 */ or $v1, $v1, $v0
/* 49BDC 8006E7DC 00003812 */ mflo $a3
/* 49BE0 8006E7E0 0067102B */ sltu $v0, $v1, $a3
/* 49BE4 8006E7E4 1040000B */ beqz $v0, .L8006E814
/* 49BE8 8006E7E8 000A1400 */ sll $v0, $t2, 0x10
/* 49BEC 8006E7EC 00681821 */ addu $v1, $v1, $t0
/* 49BF0 8006E7F0 0068102B */ sltu $v0, $v1, $t0
/* 49BF4 8006E7F4 14400006 */ bnez $v0, .L8006E810
/* 49BF8 8006E7F8 24C6FFFF */ addiu $a2, $a2, -1
/* 49BFC 8006E7FC 0067102B */ sltu $v0, $v1, $a3
/* 49C00 8006E800 10400004 */ beqz $v0, .L8006E814
/* 49C04 8006E804 000A1400 */ sll $v0, $t2, 0x10
/* 49C08 8006E808 24C6FFFF */ addiu $a2, $a2, -1
/* 49C0C 8006E80C 00681821 */ addu $v1, $v1, $t0
.L8006E810:
/* 49C10 8006E810 000A1400 */ sll $v0, $t2, 0x10
.L8006E814:
/* 49C14 8006E814 00463025 */ or $a2, $v0, $a2
/* 49C18 8006E818 00672023 */ subu $a0, $v1, $a3
/* 49C1C 8006E81C 00C90019 */ multu $a2, $t1
/* 49C20 8006E820 00001810 */ mfhi $v1
/* 49C24 8006E824 0083102B */ sltu $v0, $a0, $v1
/* 49C28 8006E828 00004012 */ mflo $t0
/* 49C2C 8006E82C 54400007 */ bnel $v0, $zero, .L8006E84C
/* 49C30 8006E830 24C6FFFF */ addiu $a2, $a2, -1
/* 49C34 8006E834 14640006 */ bne $v1, $a0, .L8006E850
/* 49C38 8006E838 0000502D */ daddu $t2, $zero, $zero
/* 49C3C 8006E83C 0168102B */ sltu $v0, $t3, $t0
/* 49C40 8006E840 10400004 */ beqz $v0, .L8006E854
/* 49C44 8006E844 00C0682D */ daddu $t5, $a2, $zero
/* 49C48 8006E848 24C6FFFF */ addiu $a2, $a2, -1
.L8006E84C:
/* 49C4C 8006E84C 0000502D */ daddu $t2, $zero, $zero
.L8006E850:
/* 49C50 8006E850 00C0682D */ daddu $t5, $a2, $zero
.L8006E854:
/* 49C54 8006E854 0140602D */ daddu $t4, $t2, $zero
/* 49C58 8006E858 0180102D */ daddu $v0, $t4, $zero
/* 49C5C 8006E85C 03E00008 */ jr $ra
/* 49C60 8006E860 01A0182D */ daddu $v1, $t5, $zero
/* 49C64 8006E864 00000000 */ nop
/* 49C68 8006E868 00000000 */ nop
/* 49C6C 8006E86C 00000000 */ nop

View File

@ -1,355 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_8009A140
.byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
.section .text
glabel __umoddi3
/* 49C70 8006E870 27BDFFF8 */ addiu $sp, $sp, -8
/* 49C74 8006E874 00E0402D */ daddu $t0, $a3, $zero
/* 49C78 8006E878 00C0482D */ daddu $t1, $a2, $zero
/* 49C7C 8006E87C 00A0582D */ daddu $t3, $a1, $zero
/* 49C80 8006E880 0080502D */ daddu $t2, $a0, $zero
/* 49C84 8006E884 152000A6 */ bnez $t1, .L8006EB20
/* 49C88 8006E888 03A0C82D */ daddu $t9, $sp, $zero
/* 49C8C 8006E88C 0148102B */ sltu $v0, $t2, $t0
/* 49C90 8006E890 1040001D */ beqz $v0, .L8006E908
/* 49C94 8006E894 3402FFFF */ ori $v0, $zero, 0xffff
/* 49C98 8006E898 0048102B */ sltu $v0, $v0, $t0
/* 49C9C 8006E89C 14400005 */ bnez $v0, .L8006E8B4
/* 49CA0 8006E8A0 00E0302D */ daddu $a2, $a3, $zero
/* 49CA4 8006E8A4 2D020100 */ sltiu $v0, $t0, 0x100
/* 49CA8 8006E8A8 38420001 */ xori $v0, $v0, 1
/* 49CAC 8006E8AC 0801BA33 */ j .L8006E8CC
/* 49CB0 8006E8B0 000218C0 */ sll $v1, $v0, 3
.L8006E8B4:
/* 49CB4 8006E8B4 3C0200FF */ lui $v0, 0xff
/* 49CB8 8006E8B8 3442FFFF */ ori $v0, $v0, 0xffff
/* 49CBC 8006E8BC 0048102B */ sltu $v0, $v0, $t0
/* 49CC0 8006E8C0 14400002 */ bnez $v0, .L8006E8CC
/* 49CC4 8006E8C4 24030018 */ addiu $v1, $zero, 0x18
/* 49CC8 8006E8C8 24030010 */ addiu $v1, $zero, 0x10
.L8006E8CC:
/* 49CCC 8006E8CC 00661006 */ srlv $v0, $a2, $v1
/* 49CD0 8006E8D0 3C01800A */ lui $at, %hi(D_8009A140)
/* 49CD4 8006E8D4 00220821 */ addu $at, $at, $v0
/* 49CD8 8006E8D8 9022A140 */ lbu $v0, %lo(D_8009A140)($at)
/* 49CDC 8006E8DC 24040020 */ addiu $a0, $zero, 0x20
/* 49CE0 8006E8E0 00431021 */ addu $v0, $v0, $v1
/* 49CE4 8006E8E4 00826823 */ subu $t5, $a0, $v0
/* 49CE8 8006E8E8 11A0005B */ beqz $t5, .L8006EA58
/* 49CEC 8006E8EC 01AA1804 */ sllv $v1, $t2, $t5
/* 49CF0 8006E8F0 01A84004 */ sllv $t0, $t0, $t5
/* 49CF4 8006E8F4 008D1023 */ subu $v0, $a0, $t5
/* 49CF8 8006E8F8 004B1006 */ srlv $v0, $t3, $v0
/* 49CFC 8006E8FC 00625025 */ or $t2, $v1, $v0
/* 49D00 8006E900 0801BA96 */ j .L8006EA58
/* 49D04 8006E904 01AB5804 */ sllv $t3, $t3, $t5
.L8006E908:
/* 49D08 8006E908 15000008 */ bnez $t0, .L8006E92C
/* 49D0C 8006E90C 0048102B */ sltu $v0, $v0, $t0
/* 49D10 8006E910 24020001 */ addiu $v0, $zero, 1
/* 49D14 8006E914 15200002 */ bnez $t1, .L8006E920
/* 49D18 8006E918 0049001B */ divu $zero, $v0, $t1
/* 49D1C 8006E91C 0007000D */ break 7
.L8006E920:
/* 49D20 8006E920 00004012 */ mflo $t0
/* 49D24 8006E924 3402FFFF */ ori $v0, $zero, 0xffff
/* 49D28 8006E928 0048102B */ sltu $v0, $v0, $t0
.L8006E92C:
/* 49D2C 8006E92C 14400005 */ bnez $v0, .L8006E944
/* 49D30 8006E930 0100202D */ daddu $a0, $t0, $zero
/* 49D34 8006E934 2D020100 */ sltiu $v0, $t0, 0x100
/* 49D38 8006E938 38420001 */ xori $v0, $v0, 1
/* 49D3C 8006E93C 0801BA57 */ j .L8006E95C
/* 49D40 8006E940 000218C0 */ sll $v1, $v0, 3
.L8006E944:
/* 49D44 8006E944 3C0200FF */ lui $v0, 0xff
/* 49D48 8006E948 3442FFFF */ ori $v0, $v0, 0xffff
/* 49D4C 8006E94C 0048102B */ sltu $v0, $v0, $t0
/* 49D50 8006E950 14400002 */ bnez $v0, .L8006E95C
/* 49D54 8006E954 24030018 */ addiu $v1, $zero, 0x18
/* 49D58 8006E958 24030010 */ addiu $v1, $zero, 0x10
.L8006E95C:
/* 49D5C 8006E95C 00641006 */ srlv $v0, $a0, $v1
/* 49D60 8006E960 3C01800A */ lui $at, %hi(D_8009A140)
/* 49D64 8006E964 00220821 */ addu $at, $at, $v0
/* 49D68 8006E968 9022A140 */ lbu $v0, %lo(D_8009A140)($at)
/* 49D6C 8006E96C 00431021 */ addu $v0, $v0, $v1
/* 49D70 8006E970 24030020 */ addiu $v1, $zero, 0x20
/* 49D74 8006E974 00626823 */ subu $t5, $v1, $v0
/* 49D78 8006E978 15A00003 */ bnez $t5, .L8006E988
/* 49D7C 8006E97C 006DC023 */ subu $t8, $v1, $t5
/* 49D80 8006E980 0801BA96 */ j .L8006EA58
/* 49D84 8006E984 01485023 */ subu $t2, $t2, $t0
.L8006E988:
/* 49D88 8006E988 01A84004 */ sllv $t0, $t0, $t5
/* 49D8C 8006E98C 030A2006 */ srlv $a0, $t2, $t8
/* 49D90 8006E990 01AA1804 */ sllv $v1, $t2, $t5
/* 49D94 8006E994 030B1006 */ srlv $v0, $t3, $t8
/* 49D98 8006E998 00625025 */ or $t2, $v1, $v0
/* 49D9C 8006E99C 00082C02 */ srl $a1, $t0, 0x10
/* 49DA0 8006E9A0 14A00002 */ bnez $a1, .L8006E9AC
/* 49DA4 8006E9A4 0085001B */ divu $zero, $a0, $a1
/* 49DA8 8006E9A8 0007000D */ break 7
.L8006E9AC:
/* 49DAC 8006E9AC 00001012 */ mflo $v0
/* 49DB0 8006E9B0 00001810 */ mfhi $v1
/* 49DB4 8006E9B4 3106FFFF */ andi $a2, $t0, 0xffff
/* 49DB8 8006E9B8 00000000 */ nop
/* 49DBC 8006E9BC 00460018 */ mult $v0, $a2
/* 49DC0 8006E9C0 00031C00 */ sll $v1, $v1, 0x10
/* 49DC4 8006E9C4 000A1402 */ srl $v0, $t2, 0x10
/* 49DC8 8006E9C8 00621825 */ or $v1, $v1, $v0
/* 49DCC 8006E9CC 00002012 */ mflo $a0
/* 49DD0 8006E9D0 0064102B */ sltu $v0, $v1, $a0
/* 49DD4 8006E9D4 10400008 */ beqz $v0, .L8006E9F8
/* 49DD8 8006E9D8 01AB5804 */ sllv $t3, $t3, $t5
/* 49DDC 8006E9DC 00681821 */ addu $v1, $v1, $t0
/* 49DE0 8006E9E0 0068102B */ sltu $v0, $v1, $t0
/* 49DE4 8006E9E4 54400005 */ bnel $v0, $zero, .L8006E9FC
/* 49DE8 8006E9E8 00641823 */ subu $v1, $v1, $a0
/* 49DEC 8006E9EC 0064102B */ sltu $v0, $v1, $a0
/* 49DF0 8006E9F0 54400001 */ bnel $v0, $zero, .L8006E9F8
/* 49DF4 8006E9F4 00681821 */ addu $v1, $v1, $t0
.L8006E9F8:
/* 49DF8 8006E9F8 00641823 */ subu $v1, $v1, $a0
.L8006E9FC:
/* 49DFC 8006E9FC 14A00002 */ bnez $a1, .L8006EA08
/* 49E00 8006EA00 0065001B */ divu $zero, $v1, $a1
/* 49E04 8006EA04 0007000D */ break 7
.L8006EA08:
/* 49E08 8006EA08 00001012 */ mflo $v0
/* 49E0C 8006EA0C 00001810 */ mfhi $v1
/* 49E10 8006EA10 00000000 */ nop
/* 49E14 8006EA14 00000000 */ nop
/* 49E18 8006EA18 00460018 */ mult $v0, $a2
/* 49E1C 8006EA1C 00031C00 */ sll $v1, $v1, 0x10
/* 49E20 8006EA20 3142FFFF */ andi $v0, $t2, 0xffff
/* 49E24 8006EA24 00621825 */ or $v1, $v1, $v0
/* 49E28 8006EA28 00002012 */ mflo $a0
/* 49E2C 8006EA2C 0064102B */ sltu $v0, $v1, $a0
/* 49E30 8006EA30 50400009 */ beql $v0, $zero, .L8006EA58
/* 49E34 8006EA34 00645023 */ subu $t2, $v1, $a0
/* 49E38 8006EA38 00681821 */ addu $v1, $v1, $t0
/* 49E3C 8006EA3C 0068102B */ sltu $v0, $v1, $t0
/* 49E40 8006EA40 14400005 */ bnez $v0, .L8006EA58
/* 49E44 8006EA44 00645023 */ subu $t2, $v1, $a0
/* 49E48 8006EA48 0064102B */ sltu $v0, $v1, $a0
/* 49E4C 8006EA4C 54400001 */ bnel $v0, $zero, .L8006EA54
/* 49E50 8006EA50 00681821 */ addu $v1, $v1, $t0
.L8006EA54:
/* 49E54 8006EA54 00645023 */ subu $t2, $v1, $a0
.L8006EA58:
/* 49E58 8006EA58 00082C02 */ srl $a1, $t0, 0x10
/* 49E5C 8006EA5C 14A00002 */ bnez $a1, .L8006EA68
/* 49E60 8006EA60 0145001B */ divu $zero, $t2, $a1
/* 49E64 8006EA64 0007000D */ break 7
.L8006EA68:
/* 49E68 8006EA68 00001012 */ mflo $v0
/* 49E6C 8006EA6C 00001810 */ mfhi $v1
/* 49E70 8006EA70 3106FFFF */ andi $a2, $t0, 0xffff
/* 49E74 8006EA74 00000000 */ nop
/* 49E78 8006EA78 00460018 */ mult $v0, $a2
/* 49E7C 8006EA7C 00031C00 */ sll $v1, $v1, 0x10
/* 49E80 8006EA80 000B1402 */ srl $v0, $t3, 0x10
/* 49E84 8006EA84 00621825 */ or $v1, $v1, $v0
/* 49E88 8006EA88 00002012 */ mflo $a0
/* 49E8C 8006EA8C 0064102B */ sltu $v0, $v1, $a0
/* 49E90 8006EA90 50400009 */ beql $v0, $zero, .L8006EAB8
/* 49E94 8006EA94 00641823 */ subu $v1, $v1, $a0
/* 49E98 8006EA98 00681821 */ addu $v1, $v1, $t0
/* 49E9C 8006EA9C 0068102B */ sltu $v0, $v1, $t0
/* 49EA0 8006EAA0 54400005 */ bnel $v0, $zero, .L8006EAB8
/* 49EA4 8006EAA4 00641823 */ subu $v1, $v1, $a0
/* 49EA8 8006EAA8 0064102B */ sltu $v0, $v1, $a0
/* 49EAC 8006EAAC 54400001 */ bnel $v0, $zero, .L8006EAB4
/* 49EB0 8006EAB0 00681821 */ addu $v1, $v1, $t0
.L8006EAB4:
/* 49EB4 8006EAB4 00641823 */ subu $v1, $v1, $a0
.L8006EAB8:
/* 49EB8 8006EAB8 14A00002 */ bnez $a1, .L8006EAC4
/* 49EBC 8006EABC 0065001B */ divu $zero, $v1, $a1
/* 49EC0 8006EAC0 0007000D */ break 7
.L8006EAC4:
/* 49EC4 8006EAC4 00001012 */ mflo $v0
/* 49EC8 8006EAC8 00001810 */ mfhi $v1
/* 49ECC 8006EACC 00000000 */ nop
/* 49ED0 8006EAD0 00000000 */ nop
/* 49ED4 8006EAD4 00460018 */ mult $v0, $a2
/* 49ED8 8006EAD8 00031C00 */ sll $v1, $v1, 0x10
/* 49EDC 8006EADC 3162FFFF */ andi $v0, $t3, 0xffff
/* 49EE0 8006EAE0 00621825 */ or $v1, $v1, $v0
/* 49EE4 8006EAE4 00002012 */ mflo $a0
/* 49EE8 8006EAE8 0064102B */ sltu $v0, $v1, $a0
/* 49EEC 8006EAEC 10400007 */ beqz $v0, .L8006EB0C
/* 49EF0 8006EAF0 00000000 */ nop
/* 49EF4 8006EAF4 00681821 */ addu $v1, $v1, $t0
/* 49EF8 8006EAF8 0068102B */ sltu $v0, $v1, $t0
/* 49EFC 8006EAFC 14400003 */ bnez $v0, .L8006EB0C
/* 49F00 8006EB00 0064102B */ sltu $v0, $v1, $a0
/* 49F04 8006EB04 54400001 */ bnel $v0, $zero, .L8006EB0C
/* 49F08 8006EB08 00681821 */ addu $v1, $v1, $t0
.L8006EB0C:
/* 49F0C 8006EB0C 13200087 */ beqz $t9, .L8006ED2C
/* 49F10 8006EB10 00645823 */ subu $t3, $v1, $a0
/* 49F14 8006EB14 01AB7806 */ srlv $t7, $t3, $t5
/* 49F18 8006EB18 0801BB49 */ j .L8006ED24
/* 49F1C 8006EB1C 0000702D */ daddu $t6, $zero, $zero
.L8006EB20:
/* 49F20 8006EB20 0149102B */ sltu $v0, $t2, $t1
/* 49F24 8006EB24 10400007 */ beqz $v0, .L8006EB44
/* 49F28 8006EB28 3402FFFF */ ori $v0, $zero, 0xffff
/* 49F2C 8006EB2C 00A0782D */ daddu $t7, $a1, $zero
/* 49F30 8006EB30 0140702D */ daddu $t6, $t2, $zero
/* 49F34 8006EB34 AFAE0000 */ sw $t6, ($sp)
/* 49F38 8006EB38 AFAF0004 */ sw $t7, 4($sp)
/* 49F3C 8006EB3C 0801BB4B */ j .L8006ED2C
/* 49F40 8006EB40 00000000 */ nop
.L8006EB44:
/* 49F44 8006EB44 0049102B */ sltu $v0, $v0, $t1
/* 49F48 8006EB48 14400005 */ bnez $v0, .L8006EB60
/* 49F4C 8006EB4C 0120202D */ daddu $a0, $t1, $zero
/* 49F50 8006EB50 2D220100 */ sltiu $v0, $t1, 0x100
/* 49F54 8006EB54 38420001 */ xori $v0, $v0, 1
/* 49F58 8006EB58 0801BADE */ j .L8006EB78
/* 49F5C 8006EB5C 000218C0 */ sll $v1, $v0, 3
.L8006EB60:
/* 49F60 8006EB60 3C0200FF */ lui $v0, 0xff
/* 49F64 8006EB64 3442FFFF */ ori $v0, $v0, 0xffff
/* 49F68 8006EB68 0049102B */ sltu $v0, $v0, $t1
/* 49F6C 8006EB6C 14400002 */ bnez $v0, .L8006EB78
/* 49F70 8006EB70 24030018 */ addiu $v1, $zero, 0x18
/* 49F74 8006EB74 24030010 */ addiu $v1, $zero, 0x10
.L8006EB78:
/* 49F78 8006EB78 00641006 */ srlv $v0, $a0, $v1
/* 49F7C 8006EB7C 3C01800A */ lui $at, %hi(D_8009A140)
/* 49F80 8006EB80 00220821 */ addu $at, $at, $v0
/* 49F84 8006EB84 9022A140 */ lbu $v0, %lo(D_8009A140)($at)
/* 49F88 8006EB88 00431021 */ addu $v0, $v0, $v1
/* 49F8C 8006EB8C 24030020 */ addiu $v1, $zero, 0x20
/* 49F90 8006EB90 00626823 */ subu $t5, $v1, $v0
/* 49F94 8006EB94 15A0000F */ bnez $t5, .L8006EBD4
/* 49F98 8006EB98 006DC023 */ subu $t8, $v1, $t5
/* 49F9C 8006EB9C 012A102B */ sltu $v0, $t1, $t2
/* 49FA0 8006EBA0 14400004 */ bnez $v0, .L8006EBB4
/* 49FA4 8006EBA4 01682023 */ subu $a0, $t3, $t0
/* 49FA8 8006EBA8 0168102B */ sltu $v0, $t3, $t0
/* 49FAC 8006EBAC 14400005 */ bnez $v0, .L8006EBC4
/* 49FB0 8006EBB0 00000000 */ nop
.L8006EBB4:
/* 49FB4 8006EBB4 01491823 */ subu $v1, $t2, $t1
/* 49FB8 8006EBB8 0164102B */ sltu $v0, $t3, $a0
/* 49FBC 8006EBBC 00625023 */ subu $t2, $v1, $v0
/* 49FC0 8006EBC0 0080582D */ daddu $t3, $a0, $zero
.L8006EBC4:
/* 49FC4 8006EBC4 13200059 */ beqz $t9, .L8006ED2C
/* 49FC8 8006EBC8 0160782D */ daddu $t7, $t3, $zero
/* 49FCC 8006EBCC 0801BB49 */ j .L8006ED24
/* 49FD0 8006EBD0 0140702D */ daddu $t6, $t2, $zero
.L8006EBD4:
/* 49FD4 8006EBD4 01A91804 */ sllv $v1, $t1, $t5
/* 49FD8 8006EBD8 03081006 */ srlv $v0, $t0, $t8
/* 49FDC 8006EBDC 00624825 */ or $t1, $v1, $v0
/* 49FE0 8006EBE0 01A84004 */ sllv $t0, $t0, $t5
/* 49FE4 8006EBE4 030A2006 */ srlv $a0, $t2, $t8
/* 49FE8 8006EBE8 01AA1804 */ sllv $v1, $t2, $t5
/* 49FEC 8006EBEC 030B1006 */ srlv $v0, $t3, $t8
/* 49FF0 8006EBF0 00625025 */ or $t2, $v1, $v0
/* 49FF4 8006EBF4 00093402 */ srl $a2, $t1, 0x10
/* 49FF8 8006EBF8 14C00002 */ bnez $a2, .L8006EC04
/* 49FFC 8006EBFC 0086001B */ divu $zero, $a0, $a2
/* 4A000 8006EC00 0007000D */ break 7
.L8006EC04:
/* 4A004 8006EC04 00003812 */ mflo $a3
/* 4A008 8006EC08 00001810 */ mfhi $v1
/* 4A00C 8006EC0C 312CFFFF */ andi $t4, $t1, 0xffff
/* 4A010 8006EC10 00000000 */ nop
/* 4A014 8006EC14 00EC0018 */ mult $a3, $t4
/* 4A018 8006EC18 000A1402 */ srl $v0, $t2, 0x10
/* 4A01C 8006EC1C 00031C00 */ sll $v1, $v1, 0x10
/* 4A020 8006EC20 00621825 */ or $v1, $v1, $v0
/* 4A024 8006EC24 00002812 */ mflo $a1
/* 4A028 8006EC28 0065102B */ sltu $v0, $v1, $a1
/* 4A02C 8006EC2C 1040000A */ beqz $v0, .L8006EC58
/* 4A030 8006EC30 01AB5804 */ sllv $t3, $t3, $t5
/* 4A034 8006EC34 00691821 */ addu $v1, $v1, $t1
/* 4A038 8006EC38 0069102B */ sltu $v0, $v1, $t1
/* 4A03C 8006EC3C 14400006 */ bnez $v0, .L8006EC58
/* 4A040 8006EC40 24E7FFFF */ addiu $a3, $a3, -1
/* 4A044 8006EC44 0065102B */ sltu $v0, $v1, $a1
/* 4A048 8006EC48 50400004 */ beql $v0, $zero, .L8006EC5C
/* 4A04C 8006EC4C 00651823 */ subu $v1, $v1, $a1
/* 4A050 8006EC50 24E7FFFF */ addiu $a3, $a3, -1
/* 4A054 8006EC54 00691821 */ addu $v1, $v1, $t1
.L8006EC58:
/* 4A058 8006EC58 00651823 */ subu $v1, $v1, $a1
.L8006EC5C:
/* 4A05C 8006EC5C 14C00002 */ bnez $a2, .L8006EC68
/* 4A060 8006EC60 0066001B */ divu $zero, $v1, $a2
/* 4A064 8006EC64 0007000D */ break 7
.L8006EC68:
/* 4A068 8006EC68 00002012 */ mflo $a0
/* 4A06C 8006EC6C 00001810 */ mfhi $v1
/* 4A070 8006EC70 00000000 */ nop
/* 4A074 8006EC74 00000000 */ nop
/* 4A078 8006EC78 008C0018 */ mult $a0, $t4
/* 4A07C 8006EC7C 3142FFFF */ andi $v0, $t2, 0xffff
/* 4A080 8006EC80 00031C00 */ sll $v1, $v1, 0x10
/* 4A084 8006EC84 00621825 */ or $v1, $v1, $v0
/* 4A088 8006EC88 00002812 */ mflo $a1
/* 4A08C 8006EC8C 0065102B */ sltu $v0, $v1, $a1
/* 4A090 8006EC90 5040000B */ beql $v0, $zero, .L8006ECC0
/* 4A094 8006EC94 00655023 */ subu $t2, $v1, $a1
/* 4A098 8006EC98 00691821 */ addu $v1, $v1, $t1
/* 4A09C 8006EC9C 0069102B */ sltu $v0, $v1, $t1
/* 4A0A0 8006ECA0 14400006 */ bnez $v0, .L8006ECBC
/* 4A0A4 8006ECA4 2484FFFF */ addiu $a0, $a0, -1
/* 4A0A8 8006ECA8 0065102B */ sltu $v0, $v1, $a1
/* 4A0AC 8006ECAC 10400004 */ beqz $v0, .L8006ECC0
/* 4A0B0 8006ECB0 00655023 */ subu $t2, $v1, $a1
/* 4A0B4 8006ECB4 2484FFFF */ addiu $a0, $a0, -1
/* 4A0B8 8006ECB8 00691821 */ addu $v1, $v1, $t1
.L8006ECBC:
/* 4A0BC 8006ECBC 00655023 */ subu $t2, $v1, $a1
.L8006ECC0:
/* 4A0C0 8006ECC0 00071400 */ sll $v0, $a3, 0x10
/* 4A0C4 8006ECC4 00441025 */ or $v0, $v0, $a0
/* 4A0C8 8006ECC8 00480019 */ multu $v0, $t0
/* 4A0CC 8006ECCC 00003010 */ mfhi $a2
/* 4A0D0 8006ECD0 0146102B */ sltu $v0, $t2, $a2
/* 4A0D4 8006ECD4 00002812 */ mflo $a1
/* 4A0D8 8006ECD8 54400005 */ bnel $v0, $zero, .L8006ECF0
/* 4A0DC 8006ECDC 00A82023 */ subu $a0, $a1, $t0
/* 4A0E0 8006ECE0 14CA0007 */ bne $a2, $t2, .L8006ED00
/* 4A0E4 8006ECE4 0165102B */ sltu $v0, $t3, $a1
/* 4A0E8 8006ECE8 10400005 */ beqz $v0, .L8006ED00
/* 4A0EC 8006ECEC 00A82023 */ subu $a0, $a1, $t0
.L8006ECF0:
/* 4A0F0 8006ECF0 00C91823 */ subu $v1, $a2, $t1
/* 4A0F4 8006ECF4 00A4102B */ sltu $v0, $a1, $a0
/* 4A0F8 8006ECF8 00623023 */ subu $a2, $v1, $v0
/* 4A0FC 8006ECFC 0080282D */ daddu $a1, $a0, $zero
.L8006ED00:
/* 4A100 8006ED00 1320000A */ beqz $t9, .L8006ED2C
/* 4A104 8006ED04 01651823 */ subu $v1, $t3, $a1
/* 4A108 8006ED08 01462023 */ subu $a0, $t2, $a2
/* 4A10C 8006ED0C 0163102B */ sltu $v0, $t3, $v1
/* 4A110 8006ED10 00825023 */ subu $t2, $a0, $v0
/* 4A114 8006ED14 030A1004 */ sllv $v0, $t2, $t8
/* 4A118 8006ED18 01A31806 */ srlv $v1, $v1, $t5
/* 4A11C 8006ED1C 00437825 */ or $t7, $v0, $v1
/* 4A120 8006ED20 01AA7006 */ srlv $t6, $t2, $t5
.L8006ED24:
/* 4A124 8006ED24 AF2E0000 */ sw $t6, ($t9)
/* 4A128 8006ED28 AF2F0004 */ sw $t7, 4($t9)
.L8006ED2C:
/* 4A12C 8006ED2C 8FA20000 */ lw $v0, ($sp)
/* 4A130 8006ED30 8FA30004 */ lw $v1, 4($sp)
/* 4A134 8006ED34 03E00008 */ jr $ra
/* 4A138 8006ED38 27BD0008 */ addiu $sp, $sp, 8
/* 4A13C 8006ED3C 00000000 */ nop

View File

@ -274,10 +274,10 @@ segments:
- [0x48740, c, os/pfsisplug, gcc_272 -O3]
- [0x48A20, c, os/ldiv, gcc_272 -O3]
- [0x48BE0, c, os/osSiDeviceBusy]
- [0x48C00, c, os/divdi3]
- [0x491C0, c, os/moddi3]
- [0x491C0, c, os/udivdi3]
- [0x49C70, c, os/umoddi3]
- [0x48C00, c, gcc/divdi3, -g2]
- [0x491C0, c, gcc/moddi3, -g2]
- [0x491C0, c, gcc/udivdi3, -g2]
- [0x49C70, c, gcc/umoddi3, -g2]
- [0x4A140, c, os/strcpy, gcc_272 -O1]
- [0x4A170, c, os/strcmp, gcc_272 -O1]
- [0x4A1B0, c, os/memset, gcc_272 -O1]