pokediamond/arm9/asm/stdlibmwcc.s
2020-07-26 16:34:36 -04:00

3176 lines
57 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.extern UNK_021D74A8
.section .bss
.global __global_destructor_chain
__global_destructor_chain: ; 0x021D74C8
.space 0x18
.section .text
.balign 4, 0
arm_func_start _dadd
_dadd:
stmdb sp!, {r4,lr}
eors r12, r1, r3
eormi r3, r3, #0x80000000
bmi _020EA5DC
_020E9B54:
subs r12, r0, r2
sbcs lr, r1, r3
bhs _020E9B70
adds r2, r2, r12
adc r3, r3, lr
subs r0, r0, r12
sbc r1, r1, lr
_020E9B70:
mov lr, #0x80000000
mov r12, r1, lsr #0x14
orr r1, lr, r1, lsl #0xb
orr r1, r1, r0, lsr #0x15
mov r0, r0, lsl #0xb
movs r4, r12, lsl #0x15
cmnne r4, #0x200000
beq _020E9C6C
mov r4, r3, lsr #0x14
orr r3, lr, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs lr, r4, lsl #0x15
beq _020E9CB4
_020E9BA8:
subs r4, r12, r4
beq _020E9C00
cmp r4, #0x20
ble _020E9BE4
cmp r4, #0x38
movge r4, #0x3f
sub r4, r4, #0x20
rsb lr, r4, #0x20
orrs lr, r2, r3, lsl lr
mov r2, r3, lsr r4
orrne r2, r2, #0x1
adds r0, r0, r2
adcs r1, r1, #0x0
blo _020E9C28
b _020E9C0C
_020E9BE4:
rsb lr, r4, #0x20
movs lr, r2, lsl lr
rsb lr, r4, #0x20
mov r2, r2, lsr r4
orr r2, r2, r3, lsl lr
mov r3, r3, lsr r4
orrne r2, r2, #0x1
_020E9C00:
adds r0, r0, r2
adcs r1, r1, r3
blo _020E9C28
_020E9C0C:
add r12, r12, #0x1
and r4, r0, #0x1
movs r1, r1, rrx
orr r0, r4, r0, rrx
mov lr, r12, lsl #0x15
cmn lr, #0x200000
beq _020E9E38
_020E9C28:
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
tst r2, #0x80000000
ldmeqia sp!, {r4,lr}
bxeq lr
movs r2, r2, lsl #0x1
andeqs r2, r0, #0x1
ldmeqia sp!, {r4,lr}
bxeq lr
adds r0, r0, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4,lr}
bx lr
_020E9C6C:
cmp r12, #0x800
movge lr, #0x80000000
movlt lr, #0x0
bics r12, r12, #0x800
beq _020E9CD8
orrs r4, r0, r1, lsl #0x1
bne _020E9E14
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
beq _020E9E00
cmn r4, #0x200000
bne _020E9E00
orrs r4, r2, r3, lsl #0x1
beq _020E9E00
b _020E9E14
_020E9CB4:
cmp r4, #0x800
movge lr, #0x80000000
movlt lr, #0x0
bic r12, r12, #0x800
bics r4, r4, #0x800
beq _020E9D44
orrs r4, r2, r3, lsl #0x1
bne _020E9E14
b _020E9E00
_020E9CD8:
orrs r4, r0, r1, lsl #0x1
beq _020E9D18
mov r12, #0x1
bic r1, r1, #0x80000000
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
cmnne r4, #0x200000
mov r4, r4, lsr #0x15
orr r4, r4, lr, lsr #0x14
beq _020E9CB4
orr r3, r3, #0x80000000
orr r12, r12, lr, lsr #0x14
b _020E9BA8
_020E9D18:
mov r12, r3, lsr #0x14
mov r1, r3, lsl #0xb
orr r1, r1, r2, lsr #0x15
mov r0, r2, lsl #0xb
movs r4, r12, lsl #0x15
beq _020E9DCC
cmn r4, #0x200000
bne _020E9DCC
orrs r4, r0, r1, lsl #0x1
beq _020E9E00
b _020E9E18
_020E9D44:
orrs r4, r2, r3, lsl #0x1
beq _020E9DDC
mov r4, #0x1
bic r3, r3, #0x80000000
cmp r1, #0x0
bpl _020E9D68
orr r12, r12, lr, lsr #0x14
orr r4, r4, lr, lsr #0x14
b _020E9BA8
_020E9D68:
adds r0, r0, r2
adcs r1, r1, r3
blo _020E9D88
add r12, r12, #0x1
and r4, r0, #0x1
movs r1, r1, rrx
mov r0, r0, rrx
orr r0, r0, r4
_020E9D88:
cmp r1, #0x0
subges r12, r12, #0x1
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
orr r1, lr, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
ldmeqia sp!, {r4,lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4,lr}
bxeq lr
movs r2, r2, lsl #0x1
andeqs r2, r0, #0x1
ldmeqia sp!, {r4,lr}
bxeq lr
_020E9DCC:
mov r1, r3
mov r0, r2
ldmia sp!, {r4,lr}
bx lr
_020E9DDC:
cmp r1, #0x0
subges r12, r12, #0x1
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
orr r1, lr, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
ldmia sp!, {r4,lr}
bx lr
_020E9E00:
ldr r1, _020E9E58 ; =0x7FF00000
orr r1, lr, r1
mov r0, #0x0
ldmia sp!, {r4,lr}
bx lr
_020E9E14:
mov r1, r3
_020E9E18:
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4,lr}
bx lr
_020E9E28: ; 0x020E9E28
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4,lr}
bx lr
_020E9E38:
cmp r12, #0x800
movge lr, #0x80000000
movlt lr, #0x0
ldr r1, _020E9E58 ; =0x7FF00000
orr r1, lr, r1
mov r0, #0x0
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020E9E58: .word 0x7FF00000
arm_func_start _d2f
_d2f:
and r2, r1, #0x80000000
mov r12, r1, lsr #0x14
bics r12, r12, #0x800
beq _020E9ED4
mov r3, r12, lsl #0x15
cmn r3, #0x200000
bhs _020E9EB8
subs r12, r12, #0x380
bls _020E9EE4
cmp r12, #0xff
bge _020E9F54
mov r1, r1, lsl #0xc
orr r3, r2, r1, lsr #0x9
orr r3, r3, r0, lsr #0x1d
movs r1, r0, lsl #0x3
orr r0, r3, r12, lsl #0x17
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #0x1
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020E9EB8:
orrs r3, r0, r1, lsl #0xc
bne _020E9ECC
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020E9ECC:
mvn r0, #0x80000000
bx lr
_020E9ED4:
orrs r3, r0, r1, lsl #0xc
bne _020E9F4C
mov r0, r2
bx lr
_020E9EE4:
cmn r12, #0x17
beq _020E9F38
bmi _020E9F4C
mov r1, r1, lsl #0xb
orr r1, r1, #0x80000000
mov r3, r1, lsr #0x8
orr r3, r3, r0, lsr #0x1d
rsb r12, r12, #0x1
movs r1, r0, lsl #0x3
orr r0, r2, r3, lsr r12
rsb r12, r12, #0x20
mov r3, r3, lsl r12
orrne r3, r3, #0x1
movs r1, r3
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #0x1
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020E9F38:
orr r0, r0, r1, lsl #0xc
movs r1, r0
mov r0, r2
addne r0, r0, #0x1
bx lr
_020E9F4C:
mov r0, r2
bx lr
_020E9F54:
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
arm_func_start _dfix
_dfix: ; 0x020E9F60
bic r3, r1, #0x80000000
ldr r2, _020E9FA8 ; =0x0000041E
subs r2, r2, r3, lsr #0x14
ble _020E9F9C
cmp r2, #0x20
bge _020E9F94
mov r3, r1, lsl #0xb
orr r3, r3, #0x80000000
orr r3, r3, r0, lsr #0x15
cmp r1, #0x0
mov r0, r3, lsr r2
rsbmi r0, r0, #0x0
bx lr
_020E9F94:
mov r0, #0x0
bx lr
_020E9F9C:
mvn r0, r1, asr #0x1f
add r0, r0, #0x80000000
bx lr
.balign 4
_020E9FA8: .word 0x0000041E
arm_func_start _ll_ufrom_d
_ll_ufrom_d: ; 0x020E9FAC
tst r1, #0x80000000
bne _020EA010
ldr r2, _020EA034 ; =0x0000043E
subs r2, r2, r1, lsr #0x14
blt _020EA028
cmp r2, #0x40
bge _020EA004
mov r12, r1, lsl #0xb
orr r12, r12, #0x80000000
orr r12, r12, r0, lsr #0x15
cmp r2, #0x20
ble _020E9FEC
sub r2, r2, #0x20
mov r1, #0x0
mov r0, r12, lsr r2
bx lr
_020E9FEC:
mov r3, r0, lsl #0xb
mov r1, r12, lsr r2
mov r0, r3, lsr r2
rsb r2, r2, #0x20
orr r0, r0, r12, lsl r2
bx lr
_020EA004:
mov r1, #0x0
mov r0, #0x0
bx lr
_020EA010:
cmn r1, #0x100000
cmpeq r0, #0x0
bhi _020EA028
mov r1, #0x0
mov r0, #0x0
bx lr
_020EA028:
mvn r1, #0x0
mvn r0, #0x0
bx lr
.balign 4
_020EA034: .word 0x0000043E
arm_func_start _dflt
_dflt: ; 0x020EA038
ands r2, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r0, #0x0
mov r1, #0x0
bxeq lr
mov r3, #0x400
add r3, r3, #0x1e
clz r12, r0
movs r0, r0, lsl r12
sub r3, r3, r12
movs r1, r0
mov r0, r1, lsl #0x15
add r1, r1, r1
orr r1, r2, r1, lsr #0xc
orr r1, r1, r3, lsl #0x14
bx lr
arm_func_start _dfltu
_dfltu: ; 0x020EA078
cmp r0, #0x0
mov r1, #0x0
bxeq lr
mov r3, #0x400
add r3, r3, #0x1e
bmi _020EA09C
clz r12, r0
movs r0, r0, lsl r12
sub r3, r3, r12
_020EA09C:
mov r1, r0
mov r0, r1, lsl #0x15
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, r3, lsl #0x14
bx lr
arm_func_start _dmul
_dmul: ; 0x020EA0B4
stmdb sp!, {r4-r7,lr}
eor lr, r1, r3
and lr, lr, #0x80000000
mov r12, r1, lsr #0x14
mov r1, r1, lsl #0xb
orr r1, r1, r0, lsr #0x15
mov r0, r0, lsl #0xb
movs r6, r12, lsl #0x15
cmnne r6, #0x200000
beq _020EA1BC
orr r1, r1, #0x80000000
bic r12, r12, #0x800
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
cmnne r5, #0x200000
beq _020EA204
orr r3, r3, #0x80000000
bic r4, r4, #0x800
_020EA108:
add r12, r4, r12
umull r5, r4, r0, r2
umull r7, r6, r0, r3
adds r4, r7, r4
adc r6, r6, #0x0
umull r7, r0, r1, r2
adds r4, r7, r4
adcs r0, r0, r6
umull r7, r2, r1, r3
adc r1, r2, #0x0
adds r0, r0, r7
adc r1, r1, #0x0
orrs r4, r4, r5
orrne r0, r0, #0x1
cmp r1, #0x0
blt _020EA154
sub r12, r12, #0x1
adds r0, r0, r0
adc r1, r1, r1
_020EA154:
add r12, r12, #0x2
subs r12, r12, #0x400
bmi _020EA2F0
beq _020EA2F0
mov r6, r12, lsl #0x14
cmn r6, #0x100000
bmi _020EA3F0
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
orr r1, lr, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
ldmeqia sp!, {r4-r7,lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4-r7,lr}
bxeq lr
movs r2, r2, lsl #0x1
andeqs r2, r0, #0x1
ldmeqia sp!, {r4-r7,lr}
bxeq lr
adds r0, r0, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
_020EA1BC:
bics r12, r12, #0x800
beq _020EA218
orrs r6, r0, r1, lsl #0x1
bne _020EA3A4
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
beq _020EA1F8
cmn r5, #0x200000
bne _020EA390
orrs r5, r2, r3, lsl #0x1
beq _020EA390
b _020EA3A4
_020EA1F8:
orrs r5, r3, r2
beq _020EA3B8
b _020EA390
_020EA204:
bics r4, r4, #0x800
beq _020EA2AC
orrs r6, r2, r3, lsl #0x1
bne _020EA3A4
b _020EA390
_020EA218:
orrs r6, r0, r1, lsl #0x1
beq _020EA280
mov r12, #0x1
cmp r1, #0x0
bne _020EA23C
sub r12, r12, #0x20
movs r1, r0
mov r0, #0x0
bmi _020EA258
_020EA23C:
clz r6, r1
movs r1, r1, lsl r6
rsb r6, r6, #0x20
orr r1, r1, r0, lsr r6
rsb r6, r6, #0x20
mov r0, r0, lsl r6
sub r12, r12, r6
_020EA258:
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
cmnne r5, #0x200000
beq _020EA204
orr r3, r3, #0x80000000
bic r4, r4, #0x800
b _020EA108
_020EA280:
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
beq _020EA404
cmn r5, #0x200000
bne _020EA404
orrs r6, r2, r3, lsl #0x1
beq _020EA3B8
b _020EA3A4
_020EA2AC:
orrs r5, r2, r3, lsl #0x1
beq _020EA404
mov r4, #0x1
cmp r3, #0x0
bne _020EA2D0
sub r4, r4, #0x20
movs r3, r2
mov r2, #0x0
bmi _020EA108
_020EA2D0:
clz r6, r3
movs r3, r3, lsl r6
rsb r6, r6, #0x20
orr r3, r3, r2, lsr r6
rsb r6, r6, #0x20
mov r2, r2, lsl r6
sub r4, r4, r6
b _020EA108
_020EA2F0:
cmn r12, #0x34
beq _020EA388
bmi _020EA3E0
mov r2, r1
mov r3, r0
add r4, r12, #0x34
cmp r4, #0x20
movge r2, r3
movge r3, #0x0
subge r4, r4, #0x20
rsb r5, r4, #0x20
mov r2, r2, lsl r4
orr r2, r2, r3, lsr r5
movs r3, r3, lsl r4
orrne r2, r2, #0x1
rsb r12, r12, #0xc
cmp r12, #0x20
movge r0, r1
movge r1, #0x0
subge r12, r12, #0x20
rsb r4, r12, #0x20
mov r0, r0, lsr r12
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr r12
cmp r2, #0x0
ldmeqia sp!, {r4-r7,lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4-r7,lr}
bxeq lr
movs r2, r2, lsl #0x1
andeqs r2, r0, #0x1
ldmeqia sp!, {r4-r7,lr}
bxeq lr
adds r0, r0, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
_020EA388:
orr r0, r0, r1, lsl #0x1
b _020EA3C8
_020EA390:
ldr r1, _020EA414 ; =0x7FF00000
orr r1, lr, r1
mov r0, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
_020EA3A4:
mov r1, r3
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4-r7,lr}
bx lr
_020EA3B8:
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4-r7,lr}
bx lr
_020EA3C8:
movs r2, r0
mov r1, lr
mov r0, #0x0
addne r0, r0, #0x1
ldmia sp!, {r4-r7,lr}
bx lr
_020EA3E0:
mov r1, lr
mov r0, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
_020EA3F0:
ldr r1, _020EA414 ; =0x7FF00000
orr r1, lr, r1
mov r0, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
_020EA404:
mov r1, lr
mov r0, #0x0
ldmia sp!, {r4-r7,lr}
bx lr
.balign 4
_020EA414: .word 0x7FF00000
arm_func_start _dsqrt
_dsqrt: ; 0x020EA418
stmdb sp!, {r4-r6,lr}
ldr r2, _020EA5A8 ; =0x7FF00000
cmp r1, r2
bhs _020EA564
movs r12, r1, lsr #0x14
beq _020EA510
bic r1, r1, r2
orr r1, r1, #0x100000
_020EA438:
movs r12, r12, asr #0x1
bhs _020EA44C
sub r12, r12, #0x1
movs r0, r0, lsl #0x1
adc r1, r1, r1
_020EA44C:
movs r3, r0, lsl #0x1
adc r1, r1, r1
mov r2, #0x0
mov r4, #0x0
mov lr, #0x200000
_020EA460:
add r6, r4, lr
cmp r6, r1
addle r4, r6, lr
suble r1, r1, r6
addle r2, r2, lr
movs r3, r3, lsl #0x1
adc r1, r1, r1
movs lr, lr, lsr #0x1
bne _020EA460
mov r0, #0x0
mov r5, #0x0
cmp r1, r4
cmpeq r3, #0x80000000
blo _020EA4A8
subs r3, r3, #0x80000000
sbc r1, r1, r4
add r4, r4, #0x1
mov r0, #0x80000000
_020EA4A8:
movs r3, r3, lsl #0x1
adc r1, r1, r1
mov lr, #0x40000000
_020EA4B4:
add r6, r5, lr
cmp r4, r1
cmpeq r6, r3
bhi _020EA4D4
add r5, r6, lr
subs r3, r3, r6
sbc r1, r1, r4
add r0, r0, lr
_020EA4D4:
movs r3, r3, lsl #0x1
adc r1, r1, r1
movs lr, lr, lsr #0x1
bne _020EA4B4
orrs r1, r1, r3
biceq r0, r0, #0x1
movs r1, r2, lsr #0x1
movs r0, r0, rrx
adcs r0, r0, #0x0
adc r1, r1, #0x0
add r1, r1, #0x20000000
sub r1, r1, #0x100000
add r1, r1, r12, lsl #0x14
ldmia sp!, {r4-r6,lr}
bx lr
_020EA510:
cmp r1, #0x0
bne _020EA540
cmp r0, #0x0
ldmeqia sp!, {r4-r6,lr}
bxeq lr
mvn r12, #0x13
clz r5, r0
movs r0, r0, lsl r5
sub r12, r12, r5
mov r1, r0, lsr #0xb
mov r0, r0, lsl #0x15
b _020EA438
_020EA540:
clz r2, r1
movs r1, r1, lsl r2
rsb r2, r2, #0x2b
mov r1, r1, lsr #0xb
orr r1, r1, r0, lsr r2
rsb r2, r2, #0x20
mov r0, r0, lsl r2
rsb r12, r2, #0x1
b _020EA438
_020EA564:
tst r1, #0x80000000
beq _020EA580
bics r3, r1, #0x80000000
cmpeq r0, #0x0
ldmeqia sp!, {r4-r6,lr}
bxeq lr
b _020EA58C
_020EA580:
orrs r2, r0, r1, lsl #0xc
ldmeqia sp!, {r4-r6,lr}
bxeq lr
_020EA58C:
ldr r2, _020EA5AC ; =0x7FF80000
orr r1, r1, r2
ldr r3, _020EA5B0 ; =UNK_021D74A8
mov r4, #0x21
str r4, [r3, #0x0]
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
_020EA5A8: .word 0x7FF00000
_020EA5AC: .word 0x7FF80000
_020EA5B0: .word UNK_021D74A8
arm_func_start _drsb
_drsb: ; 0x020EA5B4
eor r1, r1, r3
eor r3, r1, r3
eor r1, r1, r3
eor r0, r0, r2
eor r2, r0, r2
eor r0, r0, r2
arm_func_start _dsub
_dsub:
stmdb sp!, {r4,lr}
eors r12, r1, r3
eormi r3, r3, #0x80000000
bmi _020E9B54
_020EA5DC:
subs r12, r0, r2
sbcs lr, r1, r3
bhs _020EA5FC
eor lr, lr, #0x80000000
adds r2, r2, r12
adc r3, r3, lr
subs r0, r0, r12
sbc r1, r1, lr
_020EA5FC:
mov lr, #0x80000000
mov r12, r1, lsr #0x14
orr r1, lr, r1, lsl #0xb
orr r1, r1, r0, lsr #0x15
mov r0, r0, lsl #0xb
movs r4, r12, lsl #0x15
cmnne r4, #0x200000
beq _020EA800
mov r4, r3, lsr #0x14
orr r3, lr, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs lr, r4, lsl #0x15
beq _020EA848
_020EA634:
subs r4, r12, r4
beq _020EA6DC
cmp r4, #0x20
ble _020EA670
cmp r4, #0x38
movge r4, #0x3f
sub r4, r4, #0x20
rsb lr, r4, #0x20
orrs lr, r2, r3, lsl lr
mov r2, r3, lsr r4
orrne r2, r2, #0x1
subs r0, r0, r2
sbcs r1, r1, #0x0
bmi _020EA698
b _020EA788
_020EA670:
rsb lr, r4, #0x20
movs lr, r2, lsl lr
rsb lr, r4, #0x20
mov r2, r2, lsr r4
orr r2, r2, r3, lsl lr
mov r3, r3, lsr r4
orrne r2, r2, #0x1
subs r0, r0, r2
sbcs r1, r1, r3
bpl _020EA788
_020EA698:
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
tst r2, #0x80000000
ldmeqia sp!, {r4,lr}
bxeq lr
movs r2, r2, lsl #0x1
andeqs r2, r0, #0x1
ldmeqia sp!, {r4,lr}
bxeq lr
adds r0, r0, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4,lr}
bx lr
_020EA6DC:
subs r0, r0, r2
sbc r1, r1, r3
orrs lr, r1, r0
beq _020EA96C
mov lr, r12, lsl #0x14
and lr, lr, #0x80000000
bic r12, r12, #0x800
cmp r1, #0x0
bmi _020EA764
bne _020EA714
sub r12, r12, #0x20
movs r1, r0
mov r0, #0x0
bmi _020EA730
_020EA714:
clz r4, r1
movs r1, r1, lsl r4
rsb r4, r4, #0x20
orr r1, r1, r0, lsr r4
rsb r4, r4, #0x20
mov r0, r0, lsl r4
sub r12, r12, r4
_020EA730:
cmp r12, #0x0
bgt _020EA76C
rsb r12, r12, #0xc
cmp r12, #0x20
movge r0, r1
movge r1, #0x0
subge r12, r12, #0x20
rsb r4, r12, #0x20
mov r0, r0, lsr r12
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr r12
ldmia sp!, {r4,lr}
bx lr
_020EA764:
cmp r1, #0x0
subges r12, r12, #0x1
_020EA76C:
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
orr r1, lr, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
ldmia sp!, {r4,lr}
bx lr
_020EA788:
mov lr, r12, lsl #0x14
and lr, lr, #0x80000000
bic r12, r12, #0x800
cmp r1, #0x0
bne _020EA7AC
sub r12, r12, #0x20
movs r1, r0
mov r0, #0x0
bmi _020EA7C8
_020EA7AC:
clz r4, r1
movs r1, r1, lsl r4
rsb r4, r4, #0x20
orr r1, r1, r0, lsr r4
rsb r4, r4, #0x20
mov r0, r0, lsl r4
sub r12, r12, r4
_020EA7C8:
cmp r12, #0x0
orrgt r12, r12, lr, lsr #0x14
bgt _020EA698
rsb r12, r12, #0xc
cmp r12, #0x20
movge r0, r1
movge r1, #0x0
subge r12, r12, #0x20
rsb r4, r12, #0x20
mov r0, r0, lsr r12
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr r12
ldmia sp!, {r4,lr}
bx lr
_020EA800:
cmp r12, #0x800
movge lr, #0x80000000
movlt lr, #0x0
bics r12, r12, #0x800
beq _020EA86C
orrs r4, r0, r1, lsl #0x1
bne _020EA948
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
beq _020EA934
cmn r4, #0x200000
bne _020EA934
orrs r4, r2, r3, lsl #0x1
beq _020EA95C
b _020EA948
_020EA848:
cmp r4, #0x800
movge lr, #0x80000000
movlt lr, #0x0
bic r12, r12, #0x800
bics r4, r4, #0x800
beq _020EA8E4
orrs r4, r2, r3, lsl #0x1
bne _020EA948
b _020EA934
_020EA86C:
orrs r4, r0, r1, lsl #0x1
beq _020EA8AC
mov r12, #0x1
bic r1, r1, #0x80000000
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #0x15
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
cmnne r4, #0x200000
mov r4, r4, lsr #0x15
orr r4, r4, lr, lsr #0x14
beq _020EA848
orr r3, r3, #0x80000000
orr r12, r12, lr, lsr #0x14
b _020EA634
_020EA8AC:
mov r12, r3, lsr #0x14
mov r1, r3, lsl #0xb
orr r1, r1, r2, lsr #0x15
mov r0, r2, lsl #0xb
movs r4, r12, lsl #0x15
beq _020EA8D8
cmn r4, #0x200000
bne _020EA900
orrs r4, r0, r1, lsl #0x1
bne _020EA94C
b _020EA934
_020EA8D8:
orrs r4, r0, r1, lsl #0x1
beq _020EA96C
b _020EA900
_020EA8E4:
orrs r4, r2, r3, lsl #0x1
beq _020EA910
mov r4, #0x1
bic r3, r3, #0x80000000
orr r12, r12, lr, lsr #0x14
orr r4, r4, lr, lsr #0x14
b _020EA634
_020EA900:
mov r1, r3
mov r0, r2
ldmia sp!, {r4,lr}
bx lr
_020EA910:
cmp r1, #0x0
subges r12, r12, #0x1
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #0x15
add r1, r1, r1
orr r1, lr, r1, lsr #0xc
orr r1, r1, r12, lsl #0x14
ldmia sp!, {r4,lr}
bx lr
_020EA934:
ldr r1, _020EA97C ; =0x7FF00000
orr r1, lr, r1
mov r0, #0x0
ldmia sp!, {r4,lr}
bx lr
_020EA948:
mov r1, r3
_020EA94C:
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4,lr}
bx lr
_020EA95C:
mvn r0, #0x0
bic r1, r0, #0x80000000
ldmia sp!, {r4,lr}
bx lr
_020EA96C:
mov r1, #0x0
mov r0, #0x0
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020EA97C: .word 0x7FF00000
arm_func_start _fadd
_fadd: ; 0x020EA980
eors r2, r0, r1
eormi r1, r1, #0x80000000
bmi _020EB7BC
_020EA98C:
subs r12, r0, r1
subcc r0, r0, r12
addcc r1, r1, r12
mov r2, #0x80000000
mov r3, r0, lsr #0x17
orr r0, r2, r0, lsl #0x8
ands r12, r3, #0xff
cmpne r12, #0xff
beq _020EAA20
mov r12, r1, lsr #0x17
orr r1, r2, r1, lsl #0x8
ands r2, r12, #0xff
beq _020EAA60
_020EA9C0:
subs r12, r3, r12
beq _020EA9D8
rsb r2, r12, #0x20
movs r2, r1, lsl r2
mov r1, r1, lsr r12
orrne r1, r1, #0x1
_020EA9D8:
adds r0, r0, r1
blo _020EA9F8
and r1, r0, #0x1
orr r0, r1, r0, rrx
add r3, r3, #0x1
and r2, r3, #0xff
cmp r2, #0xff
beq _020EAB68
_020EA9F8:
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EAA20:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0x0
ands r3, r3, #0xff
beq _020EAA84
movs r0, r0, lsl #0x1
bne _020EAB94
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EAB88
cmp r12, #0xff
blt _020EAB88
cmp r1, #0x0
beq _020EAB88
b _020EAB94
_020EAA60:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0x0
and r3, r3, #0xff
ands r12, r12, #0xff
beq _020EAAE0
_020EAA78:
movs r1, r1, lsl #0x1
bne _020EAB94
b _020EAB88
_020EAA84:
movs r0, r0, lsl #0x1
beq _020EAABC
mov r3, #0x1
mov r0, r0, lsr #0x1
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x8
ands r12, r12, #0xff
beq _020EAAE0
cmp r12, #0xff
beq _020EAA78
orr r1, r1, #0x80000000
orr r3, r3, r2, lsr #0x17
orr r12, r12, r2, lsr #0x17
b _020EA9C0
_020EAABC:
mov r3, r1, lsr #0x17
mov r0, r1, lsl #0x9
ands r3, r3, #0xff
beq _020EAB48
cmp r3, #0xff
blt _020EAB48
cmp r0, #0x0
beq _020EAB88
b _020EAB80
_020EAAE0:
movs r1, r1, lsl #0x1
beq _020EAB50
mov r1, r1, lsr #0x1
mov r12, #0x1
orr r3, r3, r2, lsr #0x17
orr r12, r12, r2, lsr #0x17
cmp r0, #0x0
bmi _020EA9C0
adds r0, r0, r1
blo _020EAB14
and r1, r0, #0x1
orr r0, r1, r0, rrx
add r12, r12, #0x1
_020EAB14:
cmp r0, #0x0
subge r12, r12, #0x1
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #0x9
orr r0, r0, r12, lsl #0x17
bxeq lr
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EAB48:
mov r0, r1
bx lr
_020EAB50:
cmp r0, #0x0
subges r3, r3, #0x1
add r0, r0, r0
orr r0, r2, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bx lr
_020EAB68:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0x0
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020EAB80:
mvn r0, #0x80000000
bx lr
_020EAB88:
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020EAB94:
mvn r0, #0x80000000
bx lr
_020EAB9C: ; 0x020EAB9C
mvn r0, #0x80000000
bx lr
arm_func_start _dgr
_dgr: ; 0x020EABA4
mov r12, #0x200000
cmn r12, r1, lsl #0x1
bhs _020EAC18
cmn r12, r3, lsl #0x1
bhs _020EAC2C
_020EABB8:
orrs r12, r3, r1
bmi _020EABE8
cmp r1, r3
cmpeq r0, r2
movhi r0, #0x1
movls r0, #0x0
bx lr
_020EABD4:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EABE8:
orr r12, r0, r12, lsl #0x1
orrs r12, r12, r2
moveq r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x20000000
msr cpsr_f, r12
bxeq lr
cmp r3, r1
cmpeq r2, r0
movhi r0, #0x1
movls r0, #0x0
bx lr
_020EAC18:
bne _020EABD4
cmp r0, #0x0
bhi _020EABD4
cmn r12, r3, lsl #0x1
blo _020EABB8
_020EAC2C:
bne _020EABD4
cmp r2, #0x0
bhi _020EABD4
b _020EABB8
arm_func_start _dleq
_dleq: ; 0x020EAC3C
mov r12, #0x200000
cmn r12, r1, lsl #0x1
bhs _020EACBC
cmn r12, r3, lsl #0x1
bhs _020EACD0
_020EAC50:
orrs r12, r3, r1
bmi _020EAC84
cmp r1, r3
cmpeq r0, r2
movls r0, #0x1
movhi r0, #0x0
bx lr
_020EAC6C:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x40000000
orr r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EAC84:
orr r12, r0, r12, lsl #0x1
orrs r12, r12, r2
moveq r0, #0x1
bne _020EACA8
mrs r12, cpsr
bic r12, r12, #0x20000000
orr r12, r12, #0x40000000
msr cpsr_f, r12
bxeq lr
_020EACA8:
cmp r3, r1
cmpeq r2, r0
movls r0, #0x1
movhi r0, #0x0
bx lr
_020EACBC:
bne _020EAC6C
cmp r0, #0x0
bhi _020EAC6C
cmn r12, r3, lsl #0x1
blo _020EAC50
_020EACD0:
bne _020EAC6C
cmp r2, #0x0
bhi _020EAC6C
b _020EAC50
arm_func_start _dls
_dls: ; 0x020EACE0
mov r12, #0x200000
cmn r12, r1, lsl #0x1
bhs _020EAD58
cmn r12, r3, lsl #0x1
bhs _020EAD6C
_020EACF4:
orrs r12, r3, r1
bmi _020EAD24
cmp r1, r3
cmpeq r0, r2
movcc r0, #0x1
movcs r0, #0x0
bx lr
_020EAD10:
mov r0, #0x0
mrs r12, cpsr
orr r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EAD24:
orr r12, r0, r12, lsl #0x1
orrs r12, r12, r2
moveq r0, #0x0
bne _020EAD44
mrs r12, cpsr
orr r12, r12, #0x20000000
msr cpsr_f, r12
bxeq lr
_020EAD44:
cmp r3, r1
cmpeq r2, r0
movcc r0, #0x1
movcs r0, #0x0
bx lr
_020EAD58:
bne _020EAD10
cmp r0, #0x0
bhi _020EAD10
cmn r12, r3, lsl #0x1
blo _020EACF4
_020EAD6C:
bne _020EAD10
cmp r2, #0x0
bhi _020EAD10
b _020EACF4
arm_func_start _deq
_deq: ; 0x020EAD7C
mov r12, #0x200000
cmn r12, r1, lsl #0x1
bhs _020EADE4
cmn r12, r3, lsl #0x1
bhs _020EADF8
_020EAD90:
orrs r12, r3, r1
bmi _020EADC0
cmp r1, r3
cmpeq r0, r2
moveq r0, #0x1
movne r0, #0x0
bx lr
_020EADAC:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
_020EADC0:
orr r12, r0, r12, lsl #0x1
orrs r12, r12, r2
moveq r0, #0x1
bxeq lr
cmp r3, r1
cmpeq r2, r0
moveq r0, #0x1
movne r0, #0x0
bx lr
_020EADE4:
bne _020EADAC
cmp r0, #0x0
bhi _020EADAC
cmn r12, r3, lsl #0x1
blo _020EAD90
_020EADF8:
bne _020EADAC
cmp r2, #0x0
bhi _020EADAC
b _020EAD90
arm_func_start _dneq
_dneq: ; 0x020EAE08
mov r12, #0x200000
cmn r12, r1, lsl #0x1
bhs _020EAE70
cmn r12, r3, lsl #0x1
bhs _020EAE84
_020EAE1C:
orrs r12, r3, r1
bmi _020EAE4C
cmp r1, r3
cmpeq r0, r2
movne r0, #0x1
moveq r0, #0x0
bx lr
_020EAE38:
mov r0, #0x1
mrs r12, cpsr
bic r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
_020EAE4C:
orr r12, r0, r12, lsl #0x1
orrs r12, r12, r2
moveq r0, #0x0
bxeq lr
cmp r3, r1
cmpeq r2, r0
movne r0, #0x1
moveq r0, #0x0
bx lr
_020EAE70:
bne _020EAE38
cmp r0, #0x0
bhi _020EAE38
cmn r12, r3, lsl #0x1
blo _020EAE1C
_020EAE84:
bne _020EAE38
cmp r2, #0x0
bhi _020EAE38
b _020EAE1C
arm_func_start _fgeq
_fgeq: ; 0x020EAE94
mov r3, #0xff000000
cmp r3, r0, lsl #0x1
cmpcs r3, r1, lsl #0x1
blo _020EAEDC
cmp r0, #0x0
bicmi r0, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r1, #0x0
bicmi r1, r1, #0x80000000
rsbmi r1, r1, #0x0
cmp r0, r1
movge r0, #0x1
movlt r0, #0x0
mrs r12, cpsr
biclt r12, r12, #0x20000000
orrge r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EAEDC:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
arm_func_start _fgr
_fgr: ; 0x020EAEF0
mov r3, #0xff000000
cmp r3, r0, lsl #0x1
cmpcs r3, r1, lsl #0x1
blo _020EAF38
cmp r0, #0x0
bicmi r0, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r1, #0x0
bicmi r1, r1, #0x80000000
rsbmi r1, r1, #0x0
cmp r0, r1
movgt r0, #0x1
movle r0, #0x0
mrs r12, cpsr
bicle r12, r12, #0x20000000
orrgt r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EAF38:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
arm_func_start _fleq
_fleq: ; 0x020EAF4C
mov r3, #0xff000000
cmp r3, r0, lsl #0x1
cmpcs r3, r1, lsl #0x1
blo _020EAF9C
cmp r0, #0x0
bicmi r0, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r1, #0x0
bicmi r1, r1, #0x80000000
rsbmi r1, r1, #0x0
cmp r0, r1
movle r0, #0x1
movgt r0, #0x0
mrs r12, cpsr
orrgt r12, r12, #0x20000000
bicgt r12, r12, #0x40000000
bicle r12, r12, #0x20000000
orrle r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
_020EAF9C:
mov r0, #0x0
mrs r12, cpsr
bic r12, r12, #0x40000000
orr r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
arm_func_start _fls
_fls: ; 0x020EAFB4
mov r3, #0xff000000
cmp r3, r0, lsl #0x1
cmpcs r3, r1, lsl #0x1
blo _020EAFFC
cmp r0, #0x0
bicmi r0, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r1, #0x0
bicmi r1, r1, #0x80000000
rsbmi r1, r1, #0x0
cmp r0, r1
movlt r0, #0x1
movge r0, #0x0
mrs r12, cpsr
orrge r12, r12, #0x20000000
biclt r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
_020EAFFC:
mov r0, #0x0
mrs r12, cpsr
orr r12, r12, #0x20000000
msr cpsr_f, r12
bx lr
arm_func_start _feq
_feq: ; 0x020EB010
mov r3, #0xff000000
cmp r3, r0, lsl #0x1
blo _020EB064
cmp r3, r1, lsl #0x1
blo _020EB064
orr r3, r0, r1
movs r3, r3, lsl #0x1
moveq r0, #0x0
bne _020EB044
mrs r12, cpsr
orr r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
_020EB044:
cmp r0, r1
movne r0, #0x1
moveq r0, #0x0
mrs r12, cpsr
bicne r12, r12, #0x40000000
orreq r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
_020EB064:
mov r0, #0x1
mrs r12, cpsr
bic r12, r12, #0x40000000
msr cpsr_f, r12
bx lr
arm_func_start _frdiv
_frdiv: ; 0x020EB078
eor r0, r0, r1
eor r1, r0, r1
eor r0, r0, r1
arm_func_start _fdiv
_fdiv: ; 0x020EB084
stmdb sp!, {lr}
mov r12, #0xff
ands r3, r12, r0, lsr #0x17
cmpne r3, #0xff
beq _020EB258
ands r12, r12, r1, lsr #0x17
cmpne r12, #0xff
beq _020EB294
orr r1, r1, #0x800000
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
bic lr, r1, #0xff000000
_020EB0B4:
cmp r2, lr
movcc r2, r2, lsl #0x1
subcc r3, r3, #0x1
teq r0, r1
sub r0, pc, #0x94
ldrb r1, [r0, lr, lsr #0xf]
rsb lr, lr, #0x0
mov r0, lr, asr #0x1
mul r0, r1, r0
add r0, r0, #0x80000000
mov r0, r0, lsr #0x6
mul r0, r1, r0
mov r0, r0, lsr #0xe
mul r1, lr, r0
sub r12, r3, r12
mov r1, r1, lsr #0xc
mul r1, r0, r1
mov r0, r0, lsl #0xe
add r0, r0, r1, lsr #0xf
umull r1, r0, r2, r0
mov r3, r0
orrmi r0, r0, #0x80000000
adds r12, r12, #0x7e
bmi _020EB35C
cmp r12, #0xfe
bge _020EB410
add r0, r0, r12, lsl #0x17
mov r12, r1, lsr #0x1c
cmp r12, #0x7
beq _020EB238
add r0, r0, r1, lsr #0x1f
ldmia sp!, {lr}
bx lr
_020EB138: ; not code
.byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
.byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
.byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
.byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
.byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
.byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
.byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
.byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
.byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
.byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
.byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
.byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
.byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
.byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
.byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
.byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
.byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
_020EB238:
mov r1, r3, lsl #0x1
add r1, r1, #0x1
rsb lr, lr, #0x0
mul r1, lr, r1
cmp r1, r2, lsl #0x18
addmi r0, r0, #0x1
ldmia sp!, {lr}
bx lr
_020EB258:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp r3, #0x0
beq _020EB2B0
movs r0, r0, lsl #0x9
bne _020EB3F8
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EB3E8
cmp r12, #0xff
blt _020EB3E8
cmp r1, #0x0
beq _020EB404
b _020EB3E0
_020EB294:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp r12, #0x0
beq _020EB314
_020EB2A4:
movs r1, r1, lsl #0x9
bne _020EB3E0
b _020EB430
_020EB2B0:
movs r2, r0, lsl #0x9
beq _020EB2E4
clz r3, r2
movs r2, r2, lsl r3
rsb r3, r3, #0x0
mov r2, r2, lsr #0x8
ands r12, r12, r1, lsr #0x17
beq _020EB33C
cmp r12, #0xff
beq _020EB2A4
orr r1, r1, #0x800000
bic lr, r1, #0xff000000
b _020EB0B4
_020EB2E4:
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EB308
cmp r12, #0xff
blt _020EB430
cmp r1, #0x0
beq _020EB430
b _020EB3E0
_020EB308:
cmp r1, #0x0
beq _020EB404
b _020EB430
_020EB314:
movs r12, r1, lsl #0x9
beq _020EB3E8
mov lr, r12
clz r12, lr
movs lr, lr, lsl r12
rsb r12, r12, #0x0
mov lr, lr, lsr #0x8
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
b _020EB0B4
_020EB33C:
movs r12, r1, lsl #0x9
beq _020EB3E8
mov lr, r12
clz r12, lr
movs lr, lr, lsl r12
rsb r12, r12, #0x0
mov lr, lr, lsr #0x8
b _020EB0B4
_020EB35C:
and r0, r0, #0x80000000
cmn r12, #0x18
beq _020EB3D0
bmi _020EB428
add r1, r12, #0x17
mov r2, r2, lsl r1
rsb r12, r12, #0x0
mov r3, r3, lsr r12
orr r0, r0, r3
rsb lr, lr, #0x0
mul r1, lr, r3
cmp r1, r2
ldmeqia sp!, {lr}
bxeq lr
add r1, r1, lr
cmp r1, r2
beq _020EB3C4
addmi r0, r0, #0x1
subpl r1, r1, lr
add r1, lr, r1, lsl #0x1
cmp r1, r2, lsl #0x1
and r3, r0, #0x1
addmi r0, r0, #0x1
addeq r0, r0, r3
ldmia sp!, {lr}
bx lr
_020EB3C4:
add r0, r0, #0x1
ldmia sp!, {lr}
bx lr
_020EB3D0:
cmn r2, lr
addne r0, r0, #0x1
ldmia sp!, {lr}
bx lr
_020EB3E0:
mov r0, r1
b _020EB3F8
_020EB3E8:
mov r0, #0xff000000
orr r0, lr, r0, lsr #0x1
ldmia sp!, {lr}
bx lr
_020EB3F8:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_020EB404:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_020EB410:
tst r0, #0x80000000
mov r0, #0xff000000
movne r0, r0, asr #0x1
moveq r0, r0, lsr #0x1
ldmia sp!, {lr}
bx lr
_020EB428:
ldmia sp!, {lr}
bx lr
_020EB430:
mov r0, lr
ldmia sp!, {lr}
bx lr
arm_func_start _f2d
_f2d:
and r2, r0, #0x80000000
mov r12, r0, lsr #0x17
mov r3, r0, lsl #0x9
ands r12, r12, #0xff
beq _020EB46C
cmp r12, #0xff
beq _020EB498
_020EB458:
add r12, r12, #0x380
mov r0, r3, lsl #0x14
orr r1, r2, r3, lsr #0xc
orr r1, r1, r12, lsl #0x14
bx lr
_020EB46C:
cmp r3, #0x0
bne _020EB480
mov r1, r2
mov r0, #0x0
bx lr
_020EB480:
mov r3, r3, lsr #0x1
clz r12, r3
movs r3, r3, lsl r12
rsb r12, r12, #0x1
add r3, r3, r3
b _020EB458
_020EB498:
cmp r3, #0x0
bhi _020EB4B0
ldr r1, _020EB4BC ; =0x7FF00000
orr r1, r1, r2
mov r0, #0x0
bx lr
_020EB4B0:
mvn r0, #0x0
bic r1, r0, #0x80000000
bx lr
.balign 4
_020EB4BC: .word 0x7FF00000
arm_func_start _ffix
_ffix: ; 0x020EB4C0
bic r1, r0, #0x80000000
mov r2, #0x9e
subs r2, r2, r1, lsr #0x17
ble _020EB4E8
mov r1, r1, lsl #0x8
orr r1, r1, #0x80000000
cmp r0, #0x0
mov r0, r1, lsr r2
rsbmi r0, r0, #0x0
bx lr
_020EB4E8:
mvn r0, r0, asr #0x1f
add r0, r0, #0x80000000
bx lr
arm_func_start _ffixu
_ffixu: ; 0x020EB4F4
tst r0, #0x80000000
bne _020EB518
mov r1, #0x9e
subs r1, r1, r0, lsr #0x17
blt _020EB52C
mov r2, r0, lsl #0x8
orr r0, r2, #0x80000000
mov r0, r0, lsr r1
bx lr
_020EB518:
mov r2, #0xff000000
cmp r2, r0, lsl #0x1
movcs r0, #0x0
mvncc r0, #0x0
bx lr
_020EB52C:
mvn r0, #0x0
bx lr
arm_func_start _fflt
_fflt: ; 0x020EB534
ands r2, r0, #0x80000000
rsbmi r0, r0, #0x0
cmp r0, #0x0
bxeq lr
clz r3, r0
movs r0, r0, lsl r3
rsb r3, r3, #0x9e
ands r1, r0, #0xff
add r0, r0, r0
orr r0, r2, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bxeq lr
tst r1, #0x80
bxeq lr
ands r3, r1, #0x7f
andeqs r3, r0, #0x1
addne r0, r0, #0x1
bx lr
arm_func_start _ffltu
_ffltu: ; 0x020EB57C
cmp r0, #0x0
bxeq lr
mov r3, #0x9e
bmi _020EB598
clz r12, r0
movs r0, r0, lsl r12
sub r3, r3, r12
_020EB598:
ands r2, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bxeq lr
tst r2, #0x80
bxeq lr
ands r1, r2, #0x7f
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
arm_func_start _fmul
_fmul: ; 0x020EB5C4
eor r2, r0, r1
and r2, r2, #0x80000000
mov r12, #0xff
ands r3, r12, r0, lsr #0x17
mov r0, r0, lsl #0x8
cmpne r3, #0xff
beq _020EB640
orr r0, r0, #0x80000000
ands r12, r12, r1, lsr #0x17
mov r1, r1, lsl #0x8
cmpne r12, #0xff
beq _020EB680
orr r1, r1, #0x80000000
_020EB5F8:
add r12, r3, r12
umull r1, r3, r0, r1
movs r0, r3
addpl r0, r0, r0
subpl r12, r12, #0x1
subs r12, r12, #0x7f
bmi _020EB70C
cmp r12, #0xfe
bge _020EB778
ands r3, r0, #0xff
orr r0, r2, r0, lsr #0x8
add r0, r0, r12, lsl #0x17
tst r3, #0x80
bxeq lr
orrs r1, r1, r3, lsl #0x19
andeqs r3, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EB640:
cmp r3, #0x0
beq _020EB694
movs r0, r0, lsl #0x1
bne _020EB768
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EB674
cmp r12, #0xff
blt _020EB75C
cmp r1, #0x0
beq _020EB75C
b _020EB768
_020EB674:
cmp r1, #0x0
beq _020EB770
b _020EB75C
_020EB680:
cmp r12, #0x0
beq _020EB6F0
_020EB688:
movs r1, r1, lsl #0x1
bne _020EB768
b _020EB75C
_020EB694:
movs r0, r0, lsl #0x1
beq _020EB6CC
mov r0, r0, lsr #0x1
clz r3, r0
movs r0, r0, lsl r3
rsb r3, r3, #0x1
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x8
ands r12, r12, #0xff
beq _020EB6F0
cmp r12, #0xff
beq _020EB688
orr r1, r1, #0x80000000
b _020EB5F8
_020EB6CC:
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EB79C
cmp r12, #0xff
blt _020EB79C
cmp r1, #0x0
beq _020EB770
b _020EB768
_020EB6F0:
movs r1, r1, lsl #0x1
beq _020EB79C
mov r1, r1, lsr #0x1
clz r12, r1
movs r1, r1, lsl r12
rsb r12, r12, #0x1
b _020EB5F8
_020EB70C:
cmn r12, #0x18
beq _020EB754
bmi _020EB794
cmp r1, #0x0
orrne r0, r0, #0x1
mov r3, r0
mov r0, r0, lsr #0x8
rsb r12, r12, #0x0
orr r0, r2, r0, lsr r12
rsb r12, r12, #0x18
movs r1, r3, lsl r12
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #0x1
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EB754:
mov r0, r0, lsl #0x1
b _020EB784
_020EB75C:
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020EB768:
mvn r0, #0x80000000
bx lr
_020EB770:
mvn r0, #0x80000000
bx lr
_020EB778:
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020EB784:
movs r1, r0
mov r0, r2
addne r0, r0, #0x1
bx lr
_020EB794:
mov r0, r2
bx lr
_020EB79C:
mov r0, r2
bx lr
arm_func_start _frsb
_frsb: ; 0x020EB7A4
eor r0, r0, r1
eor r1, r0, r1
eor r0, r0, r1
arm_func_start _fsub
_fsub: ; 0x020EB7B0
eors r2, r0, r1
eormi r1, r1, #0x80000000
bmi _020EA98C
_020EB7BC:
subs r12, r0, r1
eorcc r12, r12, #0x80000000
subcc r0, r0, r12
addcc r1, r1, r12
mov r2, #0x80000000
mov r3, r0, lsr #0x17
orr r0, r2, r0, lsl #0x8
ands r12, r3, #0xff
cmpne r12, #0xff
beq _020EB8D8
mov r12, r1, lsr #0x17
orr r1, r2, r1, lsl #0x8
ands r2, r12, #0xff
beq _020EB918
_020EB7F4:
subs r12, r3, r12
beq _020EB83C
rsb r2, r12, #0x20
movs r2, r1, lsl r2
mov r1, r1, lsr r12
orrne r1, r1, #0x1
subs r0, r0, r1
bpl _020EB880
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EB83C:
subs r0, r0, r1
beq _020EB9E4
mov r2, r3, lsl #0x17
and r2, r2, #0x80000000
bic r3, r3, #0x100
clz r12, r0
movs r0, r0, lsl r12
sub r3, r3, r12
cmp r3, #0x0
bgt _020EB870
rsb r3, r3, #0x9
orr r0, r2, r0, lsr r3
bx lr
_020EB870:
add r0, r0, r0
orr r0, r2, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bx lr
_020EB880:
mov r2, r3, lsl #0x17
and r2, r2, #0x80000000
bic r3, r3, #0x100
clz r12, r0
movs r0, r0, lsl r12
sub r3, r3, r12
cmp r3, #0x0
bgt _020EB8AC
rsb r3, r3, #0x9
orr r0, r2, r0, lsr r3
bx lr
_020EB8AC:
ands r1, r0, #0xff
add r0, r0, r0
orr r0, r2, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bxeq lr
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #0x1
addne r0, r0, #0x1
bx lr
_020EB8D8:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0x0
ands r3, r3, #0xff
beq _020EB940
movs r0, r0, lsl #0x1
bne _020EBA18
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x9
ands r12, r12, #0xff
beq _020EBA0C
cmp r12, #0xff
blt _020EBA0C
cmp r1, #0x0
beq _020EBA20
b _020EBA18
_020EB918:
cmp r12, #0x100
movge r2, #0x80000000
movlt r2, #0x0
and r3, r3, #0xff
ands r12, r12, #0xff
beq _020EB9A8
_020EB930:
eor r2, r2, #0x80000000
movs r1, r1, lsl #0x1
bne _020EBA18
b _020EBA0C
_020EB940:
movs r0, r0, lsl #0x1
beq _020EB978
mov r0, r0, lsr #0x1
mov r3, #0x1
mov r12, r1, lsr #0x17
mov r1, r1, lsl #0x8
ands r12, r12, #0xff
beq _020EB9A8
cmp r12, #0xff
beq _020EB930
orr r1, r1, #0x80000000
orr r3, r3, r2, lsr #0x17
orr r12, r12, r2, lsr #0x17
b _020EB7F4
_020EB978:
mov r3, r1, lsr #0x17
mov r0, r1, lsl #0x9
ands r2, r3, #0xff
beq _020EB99C
cmp r2, #0xff
blt _020EB9C4
cmp r0, #0x0
bne _020EBA04
b _020EBA0C
_020EB99C:
cmp r0, #0x0
beq _020EB9E4
b _020EB9C4
_020EB9A8:
movs r1, r1, lsl #0x1
beq _020EB9CC
mov r1, r1, lsr #0x1
mov r12, #0x1
orr r12, r12, r2, lsr #0x17
orr r3, r3, r2, lsr #0x17
b _020EB7F4
_020EB9C4:
mov r0, r1
bx lr
_020EB9CC:
cmp r0, #0x0
subges r3, r3, #0x1
add r0, r0, r0
orr r0, r2, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bx lr
_020EB9E4:
mov r0, #0x0
bx lr
_020EB9EC: ; 0x020EB9EC
cmp r0, #0x0
subges r3, r3, #0x1
add r0, r0, r0
mov r0, r0, lsr #0x9
orr r0, r0, r3, lsl #0x17
bx lr
_020EBA04:
mvn r0, #0x80000000
bx lr
_020EBA0C:
mov r0, #0xff000000
orr r0, r2, r0, lsr #0x1
bx lr
_020EBA18:
mvn r0, #0x80000000
bx lr
_020EBA20:
mvn r0, #0x80000000
bx lr
arm_func_start _ll_mod
_ll_mod: ; 0x020EBA28
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, r1
orr r4, r4, #0x1
b _020EBA48
arm_func_start _ll_sdiv
_ll_sdiv: ; 0x020EBA38
stmdb sp!, {r4-r7,r11-r12,lr}
eor r4, r1, r3
mov r4, r4, asr #0x1
mov r4, r4, lsl #0x1
_020EBA48:
orrs r5, r3, r2
bne _020EBA58
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBA58:
mov r5, r0, lsr #0x1f
add r5, r5, r1
mov r6, r2, lsr #0x1f
add r6, r6, r3
orrs r6, r5, r6
bne _020EBA8C
mov r1, r2
bl _s32_div_f
ands r4, r4, #0x1
movne r0, r1
mov r1, r0, asr #0x1f
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBA8C:
cmp r1, #0x0
bge _020EBA9C
rsbs r0, r0, #0x0
rsc r1, r1, #0x0
_020EBA9C:
cmp r3, #0x0
bge _020EBAAC
rsbs r2, r2, #0x0
rsc r3, r3, #0x0
_020EBAAC:
orrs r5, r1, r0
beq _020EBBD0
mov r5, #0x0
mov r6, #0x1
cmp r3, #0x0
bmi _020EBAD8
_020EBAC4:
add r5, r5, #0x1
adds r2, r2, r2
adcs r3, r3, r3
bpl _020EBAC4
add r6, r6, r5
_020EBAD8:
cmp r1, #0x0
blt _020EBAF8
_020EBAE0:
cmp r6, #0x1
beq _020EBAF8
sub r6, r6, #0x1
adds r0, r0, r0
adcs r1, r1, r1
bpl _020EBAE0
_020EBAF8:
mov r7, #0x0
mov r12, #0x0
mov r11, #0x0
b _020EBB20
_020EBB08:
orr r12, r12, #0x1
subs r6, r6, #0x1
beq _020EBB78
adds r0, r0, r0
adcs r1, r1, r1
adcs r7, r7, r7
_020EBB20:
subs r0, r0, r2
sbcs r1, r1, r3
sbcs r7, r7, #0x0
adds r12, r12, r12
adc r11, r11, r11
cmp r7, #0x0
bge _020EBB08
_020EBB3C:
subs r6, r6, #0x1
beq _020EBB70
adds r0, r0, r0
adcs r1, r1, r1
adc r7, r7, r7
adds r0, r0, r2
adcs r1, r1, r3
adc r7, r7, #0x0
adds r12, r12, r12
adc r11, r11, r11
cmp r7, #0x0
bge _020EBB08
b _020EBB3C
_020EBB70:
adds r0, r0, r2
adc r1, r1, r3
_020EBB78:
ands r7, r4, #0x1
moveq r0, r12
moveq r1, r11
beq _020EBBB0
subs r7, r5, #0x20
movge r0, r1, lsr r7
bge _020EBBD4
rsb r7, r5, #0x20
mov r0, r0, lsr r5
orr r0, r0, r1, lsl r7
mov r1, r1, lsr r5
b _020EBBB0
_020EBBA8: ; 0x020EBBA8
mov r0, r1, lsr r7
mov r1, #0x0
_020EBBB0:
cmp r4, #0x0
blt _020EBBC0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBBC0:
rsbs r0, r0, #0x0
rsc r1, r1, #0x0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBBD0:
mov r0, #0x0
_020EBBD4:
mov r1, #0x0
cmp r4, #0x0
blt _020EBBC0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
arm_func_start _ll_udiv
_ll_udiv: ; 0x020EBBE8
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, #0x0
b _020EBBFC
arm_func_start _ull_mod
_ull_mod: ; 0x020EBBF4
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, #0x1
_020EBBFC:
orrs r5, r3, r2
bne _020EBC0C
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBC0C:
orrs r5, r1, r3
bne _020EBAAC
mov r1, r2
bl _u32_div_not_0_f
cmp r4, #0x0
movne r0, r1
mov r1, #0x0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
arm_func_start _ll_mul
_ll_mul: ; 0x020EBC30
stmdb sp!, {r4-r5,lr}
umull r5, r4, r0, r2
mla r4, r0, r3, r4
mla r4, r2, r1, r4
mov r1, r4
mov r0, r5
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start _ll_shl
_ll_shl: ; 0x020EBC50
ands r2, r2, #0x3f
bxeq lr
subs r3, r2, #0x20
bge _020EBC74
rsb r3, r2, #0x20
mov r1, r1, lsl r2
orr r1, r1, r0, lsr r3
mov r0, r0, lsl r2
bx lr
_020EBC74:
mov r1, r0, lsl r3
mov r0, #0x0
bx lr
arm_func_start _s32_div_f
_s32_div_f: ; 0x020EBC80
eor r12, r0, r1
and r12, r12, #0x80000000
cmp r0, #0x0
rsblt r0, r0, #0x0
addlt r12, r12, #0x1
cmp r1, #0x0
rsblt r1, r1, #0x0
beq _020EBE78
cmp r0, r1
movcc r1, r0
movcc r0, #0x0
blo _020EBE78
mov r2, #0x1c
mov r3, r0, lsr #0x4
cmp r1, r3, lsr #0xc
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #0x4
suble r2, r2, #0x8
movle r3, r3, lsr #0x8
cmp r1, r3
suble r2, r2, #0x4
movle r3, r3, lsr #0x4
mov r0, r0, lsl r2
rsb r1, r1, #0x0
adds r0, r0, r0
add r2, r2, r2, lsl #0x1
add pc, pc, r2, lsl #0x2
mov r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
mov r1, r3
_020EBE78:
ands r3, r12, #0x80000000
rsbne r0, r0, #0x0
ands r3, r12, #0x1
rsbne r1, r1, #0x0
bx lr
arm_func_start _u32_div_f
_u32_div_f: ; 0x020EBE8C
cmp r1, #0x0
bxeq lr
arm_func_start _u32_div_not_0_f
_u32_div_not_0_f:
cmp r0, r1
movcc r1, r0
movcc r0, #0x0
bxcc lr
mov r2, #0x1c
mov r3, r0, lsr #0x4
cmp r1, r3, lsr #0xc
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #0x4
suble r2, r2, #0x8
movle r3, r3, lsr #0x8
cmp r1, r3
suble r2, r2, #0x4
movle r3, r3, lsr #0x4
mov r0, r0, lsl r2
rsb r1, r1, #0x0
adds r0, r0, r0
add r2, r2, r2, lsl #0x1
add pc, pc, r2, lsl #0x2
mov r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #0x1
subcc r3, r3, r1
adcs r0, r0, r0
mov r1, r3
bx lr
arm_func_start _drdiv
_drdiv: ; 0x020EC070
eor r1, r1, r3
eor r3, r1, r3
eor r1, r1, r3
eor r0, r0, r2
eor r2, r0, r2
eor r0, r0, r2
arm_func_start _ddiv
_ddiv: ; 0x020EC088
stmdb sp!, {r4-r6,lr}
ldr lr, _020EC5C8 ; =0x00000FFE
eor r4, r1, r3
ands r12, lr, r1, lsr #0x13
cmpne r12, lr
beq _020EC434
bic r1, r1, lr, lsl #0x14
orr r1, r1, #0x100000
add r12, r12, r4, lsr #0x1f
_020EC0AC:
ands r4, lr, r3, lsr #0x13
cmpne r4, lr
beq _020EC4CC
bic r3, r3, lr, lsl #0x14
orr r3, r3, #0x100000
_020EC0C0:
sub r12, r12, r4
cmp r1, r3
cmpeq r0, r2
bhs _020EC0DC
adds r0, r0, r0
adc r1, r1, r1
sub r12, r12, #0x2
_020EC0DC:
sub r4, pc, #0x24
ldrb lr, [r4, r3, lsr #0xc]
rsbs r2, r2, #0x0
rsc r3, r3, #0x0
mov r4, #0x20000000
mla r5, lr, r3, r4
mov r6, r3, lsl #0xa
mov r5, r5, lsr #0x7
mul lr, r5, lr
orr r6, r6, r2, lsr #0x16
mov lr, lr, lsr #0xd
mul r5, lr, r6
mov r6, r1, lsl #0xa
orr r6, r6, r0, lsr #0x16
mov r5, r5, lsr #0x10
mul r5, lr, r5
mov lr, lr, lsl #0xe
add lr, lr, r5, lsr #0x10
umull r5, r6, lr, r6
umull r4, r5, r6, r2
mla r5, r3, r6, r5
mov r4, r4, lsr #0x1a
orr r4, r4, r5, lsl #0x6
add r4, r4, r0, lsl #0x2
umull lr, r5, r4, lr
mov r4, #0x0
adds r5, r5, r6, lsl #0x18
adc r4, r4, r6, lsr #0x8
cmp r12, #0x800
bge _020EC2C0
add r12, r12, #0x7f0
adds r12, r12, #0xc
bmi _020EC2D8
orr r1, r4, r12, lsl #0x1f
bic r12, r12, #0x1
add r1, r1, r12, lsl #0x13
tst lr, #0x80000000
bne _020EC1B0
rsbs r2, r2, #0x0
mov r4, r4, lsl #0x1
add r4, r4, r5, lsr #0x1f
mul lr, r2, r4
mov r6, #0x0
mov r4, r5, lsl #0x1
orr r4, r4, #0x1
umlal r6, lr, r4, r2
rsc r3, r3, #0x0
mla lr, r4, r3, lr
cmp lr, r0, lsl #0x15
bmi _020EC1B0
mov r0, r5
ldmia sp!, {r4-r6,lr}
bx lr
_020EC1B0:
adds r0, r5, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC1C0: ; not code
.byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
.byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
.byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
.byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
.byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
.byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
.byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
.byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
.byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
.byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
.byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
.byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
.byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
.byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
.byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
.byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
_020EC2C0:
movs r1, r12, lsl #0x1f
orr r1, r1, #0x7f000000
orr r1, r1, #0xf00000
mov r0, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC2D8:
mvn r6, r12, asr #0x1
cmp r6, #0x34
bgt _020EC424
beq _020EC400
cmp r6, #0x14
bge _020EC320
rsb r6, r6, #0x13
mov lr, r0, lsl r6
rsb r6, r6, #0x14
mov r0, r5, lsr r6
rsb r6, r6, #0x20
orr r0, r0, r4, lsl r6
rsb r6, r6, #0x20
mov r4, r4, lsr r6
orr r1, r4, r12, lsl #0x1f
mov r12, lr
mov lr, #0x0
b _020EC350
_020EC320:
rsb r6, r6, #0x33
mov lr, r1, lsl r6
mov r1, r12, lsl #0x1f
rsb r6, r6, #0x20
orr r12, lr, r0, lsr r6
rsb r6, r6, #0x20
mov lr, r0, lsl r6
mov r5, r5, lsr #0x15
orr r5, r5, r4, lsl #0xb
rsb r6, r6, #0x1f
mov r0, r5, lsr r6
mov r4, #0x0
_020EC350:
rsbs r2, r2, #0x0
mul r4, r2, r4
mov r5, #0x0
umlal r5, r4, r2, r0
rsc r3, r3, #0x0
mla r4, r0, r3, r4
cmp r4, r12
cmpeq r5, lr
ldmeqia sp!, {r4-r6,lr}
bxeq lr
adds r5, r5, r2
adc r4, r4, r3
cmp r4, r12
bmi _020EC3F4
bne _020EC398
cmp r5, lr
beq _020EC3E4
blo _020EC3F4
_020EC398:
subs r5, r5, r2
sbc r4, r4, r3
_020EC3A0:
adds r5, r5, r5
adc r4, r4, r4
adds r5, r5, r2
adc r4, r4, r3
adds lr, lr, lr
adc r12, r12, r12
cmp r4, r12
bmi _020EC3E4
ldmneia sp!, {r4-r6,lr}
bxne lr
cmp r5, lr
blo _020EC3E4
ldmneia sp!, {r4-r6,lr}
bxne lr
tst r0, #0x1
ldmeqia sp!, {r4-r6,lr}
bxeq lr
_020EC3E4:
adds r0, r0, #0x1
adc r1, r1, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC3F4:
adds r0, r0, #0x1
adc r1, r1, #0x0
b _020EC3A0
_020EC400:
rsbs r2, r2, #0x0
rsc r3, r3, #0x0
cmp r1, r3
cmpeq r0, r2
mov r1, r12, lsl #0x1f
mov r0, #0x0
movne r0, #0x1
ldmia sp!, {r4-r6,lr}
bx lr
_020EC424:
mov r1, r12, lsl #0x1f
mov r0, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC434:
orrs r5, r0, r1, lsl #0x1
beq _020EC558
cmp r12, lr
beq _020EC49C
movs r1, r1, lsl #0xc
beq _020EC478
clz r5, r1
movs r1, r1, lsl r5
sub r12, r12, r5
add r5, r12, #0x1f
mov r1, r1, lsr #0xb
orr r1, r1, r0, lsr r5
rsb r5, r5, #0x20
mov r0, r0, lsl r5
mov r12, r12, lsl #0x1
orr r12, r12, r4, lsr #0x1f
b _020EC0AC
_020EC478:
mvn r12, #0x13
clz r5, r0
movs r0, r0, lsl r5
sub r12, r12, r5
mov r1, r0, lsr #0xb
mov r0, r0, lsl #0x15
mov r12, r12, lsl #0x1
orr r12, r12, r4, lsr #0x1f
b _020EC0AC
_020EC49C:
orrs r5, r0, r1, lsl #0xc
bne _020EC580
bic r5, r3, #0x80000000
cmp r5, lr, lsl #0x13
bhs _020EC4C0
and r5, r3, #0x80000000
eor r1, r5, r1
ldmia sp!, {r4-r6,lr}
bx lr
_020EC4C0:
orrs r5, r2, r3, lsl #0xc
bne _020EC5A0
b _020EC5B8
_020EC4CC:
orrs r5, r2, r3, lsl #0x1
beq _020EC544
cmp r4, lr
beq _020EC52C
movs r3, r3, lsl #0xc
beq _020EC50C
clz r5, r3
movs r3, r3, lsl r5
sub r4, r4, r5
add r5, r4, #0x1f
mov r3, r3, lsr #0xb
orr r3, r3, r2, lsr r5
rsb r5, r5, #0x20
mov r2, r2, lsl r5
mov r4, r4, lsl #0x1
b _020EC0C0
_020EC50C:
mvn r4, #0x13
clz r5, r2
movs r2, r2, lsl r5
sub r4, r4, r5
mov r3, r2, lsr #0xb
mov r2, r2, lsl #0x15
mov r4, r4, lsl #0x1
b _020EC0C0
_020EC52C:
orrs r5, r2, r3, lsl #0xc
bne _020EC5A0
mov r1, r12, lsl #0x1f
mov r0, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC544:
mov r1, r12, lsl #0x1f
orr r1, r1, lr, lsl #0x13
mov r0, #0x0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC558:
orrs r5, r2, r3, lsl #0x1
beq _020EC5B8
bic r5, r3, #0x80000000
cmp r5, lr, lsl #0x13
cmpeq r2, #0x0
bhi _020EC5A0
eor r1, r1, r3
and r1, r1, #0x80000000
ldmia sp!, {r4-r6,lr}
bx lr
_020EC580:
tst r1, #0x80000
beq _020EC5B8
bic r5, r3, #0x80000000
cmp r5, lr, lsl #0x13
cmpeq r2, #0x0
bhi _020EC5A0
ldmia sp!, {r4-r6,lr}
bx lr
_020EC5A0:
tst r3, #0x80000
beq _020EC5B8
mov r1, r3
mov r0, r2
ldmia sp!, {r4-r6,lr}
bx lr
_020EC5B8:
orr r1, r1, #0x7f000000
orr r1, r1, #0xf80000
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
_020EC5C8: .word 0x00000FFE
arm_func_start _fp_init
_fp_init: ; 0x020EC5CC
bx lr
arm_func_start sys_writec
sys_writec: ; 0x020EC5D0
str lr, [sp, #-0x4]!
mov r1, r0
mov r0, #0x3
swi 0x123456
ldr pc, [sp], #0x4
arm_func_start sys_readc
sys_readc: ; 0x020EC5E4
str lr, [sp, #-0x4]!
mov r1, #0x0
mov r0, #0x7
swi 0x123456
ldr pc, [sp], #0x4
arm_func_start sys_exit
sys_exit: ; 0x020EC5F8
mov r1, #0x0
mov r0, #0x18
swi 0x123456
mov pc, lr
arm_func_start __read_console
__read_console: ; 0x020EC608
stmdb sp!, {r3-r7,lr}
mov r6, r2
ldr r5, [r6, #0x0]
mov r7, r1
cmp r5, #0x0
mov r4, #0x0
bls _020EC650
_020EC624:
bl sys_readc
and r1, r0, #0xff
cmp r1, #0xd
strb r0, [r7, r4]
cmpne r1, #0xa
addeq r0, r4, #0x1
streq r0, [r6, #0x0]
beq _020EC650
add r4, r4, #0x1
cmp r4, r5
blo _020EC624
_020EC650:
mov r0, #0x0
ldmia sp!, {r3-r7,pc}
arm_func_start __write_console
__write_console: ; 0x020EC658
stmdb sp!, {r4-r6,lr}
ldr r5, [r2, #0x0]
mov r6, r1
cmp r5, #0x0
mov r4, #0x0
bls _020EC684
_020EC670:
add r0, r6, r4
bl sys_writec
add r4, r4, #0x1
cmp r4, r5
blo _020EC670
_020EC684:
mov r0, #0x0
ldmia sp!, {r4-r6,pc}
arm_func_start __close_console
__close_console: ; 0x020EC68C
mov r0, #0x0
bx lr
.extern __sinit__
arm_func_start __call_static_initializers
__call_static_initializers: ; 0x020EC694
stmdb sp!, {r4,lr}
ldr r4, _020EC6BC ; =__sinit__
b _020EC6A8
_020EC6A0:
blx r0
add r4, r4, #0x4
_020EC6A8:
cmp r4, #0x0
ldrne r0, [r4, #0x0]
cmpne r0, #0x0
bne _020EC6A0
ldmia sp!, {r4,pc}
.balign 4
_020EC6BC: .word __sinit__
arm_func_start __destroy_global_chain
__destroy_global_chain: ; 0x020EC6C0
stmdb sp!, {r3-r5,lr}
ldr r4, _020EC700 ; =__global_destructor_chain
ldr r2, [r4, #0x0]
cmp r2, #0x0
ldmeqia sp!, {r3-r5,pc}
_020EC6D4: ; 0x020EC6D4
mvn r5, #0x0
_020EC6D8:
ldr r0, [r2, #0x0]
mov r1, r5
str r0, [r4, #0x0]
ldr r0, [r2, #0x8]
ldr r2, [r2, #0x4]
blx r2
ldr r2, [r4, #0x0]
cmp r2, #0x0
bne _020EC6D8
ldmia sp!, {r3-r5,pc}
.balign 4
_020EC700: .word __global_destructor_chain
arm_func_start _ExitProcess
_ExitProcess: ; 0x020EC704
ldr ip, _020EC70C ; =sys_exit
bx r12
.balign 4
_020EC70C: .word sys_exit
.section .exception
.word 0x00200100
.word __read_console
.short 81
.word 0x00300F00
.word __write_console
.short 53
.word 0x00200700
.word __call_static_initializers
.short 45
.word 0x00100100
.word __destroy_global_chain
.short 69
.word 0x00200300
.word _ExitProcess
.short 13
.word 0x00000000