pmd-sky/asm/main_020897DC.s
2025-10-23 23:21:11 -04:00

8211 lines
139 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_020897DC.inc"
.text
arm_func_start strncat
strncat: ; 0x020897DC
stmdb sp!, {r3, lr}
mov ip, r0
_020897E4:
ldrsb r3, [ip], #1
cmp r3, #0
bne _020897E4
cmp r2, #0
sub ip, ip, #1
beq _02089820
_020897FC:
ldrsb r3, [r1], #1
mov lr, ip
strb r3, [ip], #1
ldrsb r3, [lr]
cmp r3, #0
subeq ip, ip, #1
beq _02089820
subs r2, r2, #1
bne _020897FC
_02089820:
mov r1, #0
strb r1, [ip]
ldmia sp!, {r3, pc}
arm_func_end strncat
arm_func_start strcmp
strcmp: ; 0x0208982C
stmdb sp!, {r4, lr}
ldrb r2, [r0]
ldrb r3, [r1]
subs r3, r2, r3
movne r0, r3
ldmneia sp!, {r4, pc}
and r4, r0, #3
and r3, r1, #3
cmp r3, r4
bne _02089908
cmp r4, #0
beq _020898A0
cmp r2, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
rsbs r4, r4, #3
beq _02089898
_02089870:
ldrb r3, [r0, #1]!
ldrb r2, [r1, #1]!
subs r2, r3, r2
movne r0, r2
ldmneia sp!, {r4, pc}
cmp r3, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
subs r4, r4, #1
bne _02089870
_02089898:
add r0, r0, #1
add r1, r1, #1
_020898A0:
ldr r2, [r0]
ldr r3, _02089938 ; =0xFEFEFEFF
mvn r4, r2
add lr, r2, r3
ldr ip, _0208993C ; =0x80808080
and r4, lr, r4
tst r4, ip
ldr r4, [r1]
bne _020898F4
cmp r2, r4
bne _020898E8
_020898CC:
ldr r2, [r0, #4]!
ldr r4, [r1, #4]!
add lr, r2, r3
tst lr, ip
bne _020898F4
cmp r2, r4
beq _020898CC
_020898E8:
sub r0, r0, #1
sub r1, r1, #1
b _02089908
_020898F4:
ldrb r2, [r0]
ldrb r3, [r1]
subs r3, r2, r3
movne r0, r3
ldmneia sp!, {r4, pc}
_02089908:
cmp r2, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
_02089914:
ldrb r3, [r0, #1]!
ldrb r2, [r1, #1]!
subs r2, r3, r2
movne r0, r2
ldmneia sp!, {r4, pc}
cmp r3, #0
bne _02089914
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_02089938: .word 0xFEFEFEFF
_0208993C: .word 0x80808080
arm_func_end strcmp
arm_func_start strncmp
strncmp: ; 0x02089940
cmp r2, #0
beq _0208996C
_02089948:
ldrb ip, [r1], #1
ldrb r3, [r0], #1
cmp r3, ip
subne r0, r3, ip
bxne lr
cmp r3, #0
beq _0208996C
subs r2, r2, #1
bne _02089948
_0208996C:
mov r0, #0
bx lr
arm_func_end strncmp
arm_func_start strchr
strchr: ; 0x02089974
ldrsb r2, [r0], #1
mov r1, r1, lsl #0x18
mov r1, r1, asr #0x18
cmp r2, #0
beq _020899A0
_02089988:
cmp r2, r1
subeq r0, r0, #1
bxeq lr
ldrsb r2, [r0], #1
cmp r2, #0
bne _02089988
_020899A0:
cmp r1, #0
movne r0, #0
subeq r0, r0, #1
bx lr
arm_func_end strchr
arm_func_start strcspn
strcspn: ; 0x020899B0
stmdb sp!, {r4, lr}
sub sp, sp, #0x20
add ip, sp, #0
mov r3, #8
mov r2, #0
_020899C4:
strb r2, [ip]
strb r2, [ip, #1]
strb r2, [ip, #2]
strb r2, [ip, #3]
add ip, ip, #4
subs r3, r3, #1
bne _020899C4
ldrb r3, [r1]
add r4, r1, #1
cmp r3, #0
beq _02089A20
add lr, sp, #0
mov r2, #1
_020899F8:
and ip, r3, #0xff
and r1, r3, #7
mov r1, r2, lsl r1
ldrb r3, [lr, ip, asr #3]
and r1, r1, #0xff
orr r1, r3, r1
strb r1, [lr, ip, asr #3]
ldrb r3, [r4], #1
cmp r3, #0
bne _020899F8
_02089A20:
ldrb r1, [r0]
add r4, r0, #1
cmp r1, #0
beq _02089A60
add ip, sp, #0
mov r2, #1
_02089A38:
and r3, r1, #0xff
and r1, r1, #7
mov r1, r2, lsl r1
ldrb r3, [ip, r3, asr #3]
and r1, r1, #0xff
tst r3, r1
bne _02089A60
ldrb r1, [r4], #1
cmp r1, #0
bne _02089A38
_02089A60:
sub r0, r4, r0
sub r0, r0, #1
add sp, sp, #0x20
ldmia sp!, {r4, pc}
arm_func_end strcspn
; https://decomp.me/scratch/QV4rQ
arm_func_start strstr
strstr: ; 0x02089A70
stmdb sp!, {r4, lr}
cmp r1, #0
ldrneb r2, [r1]
cmpne r2, #0
ldmeqia sp!, {r4, pc}
ldrb r3, [r0]
add r4, r0, #1
cmp r3, #0
beq _02089AD4
_02089A94:
cmp r3, r2
bne _02089AC8
mov lr, r4
add ip, r1, #1
_02089AA4:
ldrb r3, [ip], #1
ldrb r0, [lr], #1
cmp r0, r3
bne _02089ABC
cmp r0, #0
bne _02089AA4
_02089ABC:
cmp r3, #0
subeq r0, r4, #1
ldmeqia sp!, {r4, pc}
_02089AC8:
ldrb r3, [r4], #1
cmp r3, #0
bne _02089A94
_02089AD4:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end strstr
arm_func_start sub_02089ADC
sub_02089ADC: ; 0x02089ADC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xa8
ldr r4, [sp, #0xd0]
mov sl, #0
str r4, [sp, #0xd0]
str r0, [sp]
add r6, sp, #0x80
mov sb, r1
mov r8, r2
str r3, [sp, #4]
mov r4, sl
str sl, [sp, #0x2c]
mov r5, #1
mov r0, #4
_02089B14:
strh sl, [r6]
strh sl, [r6, #2]
strh sl, [r6, #4]
strh sl, [r6, #6]
add r6, r6, #8
subs r0, r0, #1
bne _02089B14
mov r0, #0
str r0, [sp, #0x28]
strh sl, [r6]
strh sl, [r6, #2]
ldr r2, [sp, #0x28]
ldr r1, [sp, #0xd0]
strh sl, [r6, #4]
str r2, [r1]
mov r1, r2
mov r0, r8
str r1, [sp, #0x24]
str r1, [sp, #0x20]
str r1, [sp, #0x1c]
str r1, [sp, #0x18]
str r1, [sp, #0x10]
str r1, [sp, #0xc]
str r1, [sp, #8]
add r4, r4, #1
blx sb
mov r1, r0
ldr r7, _0208AABC ; =_020AEEB5
add r0, sp, #0x4d
mov r6, #4
_02089B8C:
ldrb r3, [r7]
ldrb r2, [r7, #1]
add r7, r7, #2
strb r3, [r0]
strb r2, [r0, #1]
add r0, r0, #2
subs r6, r6, #1
bne _02089B8C
ldrb r3, [r7]
ldr r2, _0208AAC0 ; =_020AEEB0
strb r3, [r0]
ldrb r3, [r2, #1]
ldrb r0, [r2, #2]
ldrb r6, [r2]
strb r3, [sp, #0x31]
strb r0, [sp, #0x32]
ldrb r3, [r2, #3]
ldrb r0, [r2, #4]
strb r6, [sp, #0x30]
strb r3, [sp, #0x33]
strb r0, [sp, #0x34]
b _0208A8D0
_02089BE4:
cmp r5, #0x100
bgt _02089C5C
bge _0208A364
cmp r5, #0x20
bgt _02089C40
bge _0208A238
cmp r5, #8
bgt _02089C34
cmp r5, #0
addge pc, pc, r5, lsl #2
b _0208A8D0
_02089C10: ; jump table
b _0208A8D0 ; case 0
b _02089CA0 ; case 1
b _0208A084 ; case 2
b _0208A8D0 ; case 3
b _0208A134 ; case 4
b _0208A8D0 ; case 5
b _0208A8D0 ; case 6
b _0208A8D0 ; case 7
b _0208A15C ; case 8
_02089C34:
cmp r5, #0x10
beq _0208A200
b _0208A8D0
_02089C40:
cmp r5, #0x40
bgt _02089C50
beq _0208A2C4
b _0208A8D0
_02089C50:
cmp r5, #0x80
beq _0208A310
b _0208A8D0
_02089C5C:
cmp r5, #0x2000
bgt _02089C84
bge _02089EB8
cmp r5, #0x200
bgt _02089C78
beq _0208A3C4
b _0208A8D0
_02089C78:
cmp r5, #0x400
beq _0208A3EC
b _0208A8D0
_02089C84:
cmp r5, #0x4000
bgt _02089C94
beq _02089DC0
b _0208A8D0
_02089C94:
cmp r5, #0x8000
beq _0208A464
b _0208A8D0
_02089CA0:
cmp r1, #0
blt _02089CB0
cmp r1, #0x80
blt _02089CB8
_02089CB0:
mov r0, #0
b _02089CC8
_02089CB8:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #0x100
_02089CC8:
cmp r0, #0
beq _02089CF4
mov r1, #0
mov r0, r8
mov r2, r1
blx sb
mov r1, r0
ldr r0, [sp, #0x2c]
add r0, r0, #1
str r0, [sp, #0x2c]
b _0208A8D0
_02089CF4:
cmp r1, #0
blt _02089D04
cmp r1, #0x80
blt _02089D0C
_02089D04:
mov r0, r1
b _02089D14
_02089D0C:
ldr r0, _0208AAC8 ; =_020AED30
ldrb r0, [r0, r1]
_02089D14:
cmp r0, #0x49
bgt _02089D40
bge _02089D78
cmp r0, #0x2d
bgt _02089DB8
cmp r0, #0x2b
blt _02089DB8
beq _02089D54
cmp r0, #0x2d
beq _02089D4C
b _02089DB8
_02089D40:
cmp r0, #0x4e
beq _02089D98
b _02089DB8
_02089D4C:
mov r0, #1
str r0, [sp, #0x28]
_02089D54:
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
mov r0, #1
str r0, [sp, #0x18]
b _0208A8D0
_02089D78:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
mov r5, #0x4000
b _0208A8D0
_02089D98:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
mov r5, #0x2000
b _0208A8D0
_02089DB8:
mov r5, #2
b _0208A8D0
_02089DC0:
mov r5, #1
add r7, sp, #0x4d
add r0, sp, #0x76
mov r6, #4
_02089DD0:
ldrb r3, [r7]
ldrb r2, [r7, #1]
add r7, r7, #2
strb r3, [r0]
strb r2, [r0, #1]
add r0, r0, #2
subs r6, r6, #1
bne _02089DD0
ldrb r2, [r7]
add r6, sp, #0x77
ldr r7, _0208AAC8 ; =_020AED30
strb r2, [r0]
b _02089E24
_02089E04:
mov r1, #0
mov r0, r8
mov r2, r1
add r6, r6, #1
add r5, r5, #1
add r4, r4, #1
blx sb
mov r1, r0
_02089E24:
cmp r5, #8
bge _02089E54
cmp r1, #0
blt _02089E3C
cmp r1, #0x80
blt _02089E44
_02089E3C:
mov r2, r1
b _02089E48
_02089E44:
ldrb r2, [r7, r1]
_02089E48:
ldrsb r0, [r6]
cmp r0, r2
beq _02089E04
_02089E54:
cmp r5, #3
cmpne r5, #8
bne _02089EB0
ldr r0, [sp, #0x28]
cmp r0, #0
beq _02089E84
ldr r1, _0208AACC ; =_020B2FB8
mov r0, #0
ldr r1, [r1]
bl _fsub
bl _f2d
b _02089E90
_02089E84:
ldr r0, _0208AACC ; =_020B2FB8
ldr r0, [r0]
bl _f2d
_02089E90:
ldr r2, [sp, #0x2c]
add r3, r2, r5
ldr r2, [sp, #0x18]
add r3, r2, r3
ldr r2, [sp, #4]
add sp, sp, #0xa8
str r3, [r2]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_02089EB0:
mov r5, #0x1000
b _0208A8D0
_02089EB8:
ldrb r3, [sp, #0x30]
ldrb r0, [sp, #0x32]
ldrb r2, [sp, #0x31]
strb r3, [sp, #0x40]
strb r0, [sp, #0x42]
ldrb r3, [sp, #0x33]
ldrb r0, [sp, #0x34]
strb r2, [sp, #0x41]
mov r5, #1
strb r0, [sp, #0x44]
mov r6, #0
add r2, sp, #0x56
strb r3, [sp, #0x43]
mov r0, #8
_02089EF0:
strb r6, [r2]
strb r6, [r2, #1]
strb r6, [r2, #2]
strb r6, [r2, #3]
add r2, r2, #4
subs r0, r0, #1
bne _02089EF0
add r7, sp, #0x41
b _02089F34
_02089F14:
mov r1, #0
mov r0, r8
mov r2, r1
add r7, r7, #1
add r5, r5, #1
add r4, r4, #1
blx sb
mov r1, r0
_02089F34:
cmp r5, #4
bge _02089F68
cmp r1, #0
blt _02089F4C
cmp r1, #0x80
blt _02089F54
_02089F4C:
mov r2, r1
b _02089F5C
_02089F54:
ldr r0, _0208AAC8 ; =_020AED30
ldrb r2, [r0, r1]
_02089F5C:
ldrsb r0, [r7]
cmp r0, r2
beq _02089F14
_02089F68:
sub r0, r5, #3
cmp r0, #1
bhi _0208A07C
cmp r5, #4
bne _0208A020
ldr r7, _0208AAC4 ; =_020AEDB0
b _02089FA8
_02089F84:
add r0, sp, #0x56
strb r1, [r0, r6]
mov r1, #0
mov r0, r8
mov r2, r1
add r6, r6, #1
add r4, r4, #1
blx sb
mov r1, r0
_02089FA8:
cmp r6, #0x20
bge _0208A010
cmp r1, #0
blt _02089FC0
cmp r1, #0x80
blt _02089FC8
_02089FC0:
mov r0, #0
b _02089FD4
_02089FC8:
mov r0, r1, lsl #1
ldrh r0, [r7, r0]
and r0, r0, #8
_02089FD4:
cmp r0, #0
bne _02089F84
cmp r1, #0
blt _02089FEC
cmp r1, #0x80
blt _02089FF4
_02089FEC:
mov r0, #0
b _0208A000
_02089FF4:
mov r0, r1, lsl #1
ldrh r0, [r7, r0]
and r0, r0, #1
_0208A000:
cmp r0, #0
bne _02089F84
cmp r1, #0x2e
beq _02089F84
_0208A010:
cmp r1, #0x29
movne r5, #0x1000
bne _0208A8D0
add r6, r6, #1
_0208A020:
add r0, sp, #0x56
mov r1, #0
strb r1, [r0, r6]
ldr r1, [sp, #0x28]
cmp r1, #0
beq _0208A054
bl sub_02086450
mov r2, r0
mov r0, #0
mov r3, r1
mov r1, r0
bl _dsub
b _0208A058
_0208A054:
bl sub_02086450
_0208A058:
ldr r2, [sp, #0x2c]
add r2, r2, r5
add r3, r6, r2
ldr r2, [sp, #0x18]
add r3, r2, r3
ldr r2, [sp, #4]
add sp, sp, #0xa8
str r3, [r2]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208A07C:
mov r5, #0x1000
b _0208A8D0
_0208A084:
cmp r1, #0x2e
bne _0208A0AC
mov r5, #0x10
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A0AC:
cmp r1, #0
blt _0208A0BC
cmp r1, #0x80
blt _0208A0C4
_0208A0BC:
mov r0, #0
b _0208A0D4
_0208A0C4:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A0D4:
cmp r0, #0
moveq r5, #0x1000
beq _0208A8D0
cmp r1, #0x30
bne _0208A12C
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
cmp r0, #0
mov r1, r0
blt _0208A118
cmp r0, #0x80
bge _0208A118
ldr r2, _0208AAC8 ; =_020AED30
ldrb r0, [r2, r0]
_0208A118:
cmp r0, #0x58
moveq r5, #0x8000
moveq sl, #1
movne r5, #4
b _0208A8D0
_0208A12C:
mov r5, #8
b _0208A8D0
_0208A134:
cmp r1, #0x30
movne r5, #8
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A15C:
cmp r1, #0
blt _0208A16C
cmp r1, #0x80
blt _0208A174
_0208A16C:
mov r0, #0
b _0208A184
_0208A174:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A184:
cmp r0, #0
bne _0208A1B8
cmp r1, #0x2e
movne r5, #0x40
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov r5, #0x20
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A1B8:
ldrb r2, [sp, #0x84]
cmp r2, #0x14
ldrhs r0, [sp, #0x1c]
addhs r0, r0, #1
strhs r0, [sp, #0x1c]
bhs _0208A1E4
add r0, r2, #1
strb r0, [sp, #0x84]
add r0, sp, #0x80
add r0, r0, r2
strb r1, [r0, #5]
_0208A1E4:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A200:
cmp r1, #0
blt _0208A210
cmp r1, #0x80
blt _0208A218
_0208A210:
mov r0, #0
b _0208A228
_0208A218:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A228:
cmp r0, #0
moveq r5, #0x1000
movne r5, #0x20
b _0208A8D0
_0208A238:
cmp r1, #0
blt _0208A248
cmp r1, #0x80
blt _0208A250
_0208A248:
mov r0, #0
b _0208A260
_0208A250:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A260:
cmp r0, #0
moveq r5, #0x40
beq _0208A8D0
ldrb r3, [sp, #0x84]
cmp r3, #0x14
bhs _0208A2A8
cmp r1, #0x30
cmpeq r3, #0
beq _0208A29C
ldrb r2, [sp, #0x84]
add r0, sp, #0x80
add r0, r0, r3
add r2, r2, #1
strb r2, [sp, #0x84]
strb r1, [r0, #5]
_0208A29C:
ldr r0, [sp, #0x1c]
sub r0, r0, #1
str r0, [sp, #0x1c]
_0208A2A8:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A2C4:
cmp r1, #0
blt _0208A2D4
cmp r1, #0x80
blt _0208A2DC
_0208A2D4:
mov r0, r1
b _0208A2E4
_0208A2DC:
ldr r0, _0208AAC8 ; =_020AED30
ldrb r0, [r0, r1]
_0208A2E4:
cmp r0, #0x45
movne r5, #0x800
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov r5, #0x80
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A310:
cmp r1, #0x2b
bne _0208A334
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A35C
_0208A334:
cmp r1, #0x2d
bne _0208A35C
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
mov r0, #1
str r0, [sp, #0x24]
_0208A35C:
mov r5, #0x100
b _0208A8D0
_0208A364:
cmp r1, #0
blt _0208A374
cmp r1, #0x80
blt _0208A37C
_0208A374:
mov r0, #0
b _0208A38C
_0208A37C:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A38C:
cmp r0, #0
moveq r5, #0x1000
beq _0208A8D0
cmp r1, #0x30
movne r5, #0x400
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov r5, #0x200
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A3C4:
cmp r1, #0x30
movne r5, #0x400
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A3EC:
cmp r1, #0
blt _0208A3FC
cmp r1, #0x80
blt _0208A404
_0208A3FC:
mov r0, #0
b _0208A414
_0208A404:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A414:
cmp r0, #0
moveq r5, #0x800
beq _0208A8D0
ldr r0, [sp, #0x20]
sub r2, r1, #0x30
mov r1, #0xa
mla r0, r1, r0, r2
ldr r1, _0208AAD0 ; =0x00007FFF
str r0, [sp, #0x20]
cmp r0, r1
ldrgt r0, [sp, #0xd0]
movgt r1, #1
strgt r1, [r0]
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A464:
cmp sl, #0x20
bgt _0208A4B4
bge _0208A788
cmp sl, #8
bgt _0208A4A8
cmp sl, #0
addge pc, pc, sl, lsl #2
b _0208A8D0
_0208A484: ; jump table
b _0208A8D0 ; case 0
b _0208A4D8 ; case 1
b _0208A528 ; case 2
b _0208A8D0 ; case 3
b _0208A550 ; case 4
b _0208A8D0 ; case 5
b _0208A8D0 ; case 6
b _0208A8D0 ; case 7
b _0208A660 ; case 8
_0208A4A8:
cmp sl, #0x10
beq _0208A73C
b _0208A8D0
_0208A4B4:
cmp sl, #0x80
bgt _0208A4CC
bge _0208A830
cmp sl, #0x40
beq _0208A7D0
b _0208A8D0
_0208A4CC:
cmp sl, #0x100
beq _0208A858
b _0208A8D0
_0208A4D8:
mov r1, #0
add r0, sp, #0x45
str r0, [sp, #0x14]
strb r1, [r0]
strb r1, [r0, #1]
strb r1, [r0, #2]
strb r1, [r0, #3]
strb r1, [r0, #4]
strb r1, [r0, #5]
strb r1, [r0, #6]
strb r1, [r0, #7]
mov r0, r8
mov r2, r1
str r1, [sp, #8]
mov fp, r1
mov sl, #2
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A528:
cmp r1, #0x30
movne sl, #4
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A550:
cmp r1, #0
blt _0208A560
cmp r1, #0x80
blt _0208A568
_0208A560:
mov r0, #0
b _0208A578
_0208A568:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #0x400
_0208A578:
cmp r0, #0
bne _0208A5AC
cmp r1, #0x2e
movne sl, #0x10
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov sl, #8
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A5AC:
ldr r2, [sp, #8]
mov r0, #0xe
cmp r2, r0
bhs _0208A644
mov r0, r2
add r0, r0, #1
str r0, [sp, #8]
ldr r0, [sp, #0x14]
add r2, fp, fp, lsr #31
cmp r1, #0
ldrb r0, [r0, r2, asr #1]
blt _0208A5EC
cmp r1, #0x80
bge _0208A5EC
ldr r2, _0208AAC8 ; =_020AED30
ldrb r1, [r2, r1]
_0208A5EC:
cmp r1, #0x41
subge r1, r1, #0x37
sublt r1, r1, #0x30
mov r2, fp, lsr #0x1f
and r3, r1, #0xff
rsb r1, r2, fp, lsl #31
adds r1, r2, r1, ror #31
moveq r1, r3, lsl #4
add r2, fp, fp, lsr #31
orrne r0, r0, r3
andeq r1, r1, #0xff
orreq r0, r0, r1
ldr r1, [sp, #0x14]
add fp, fp, #1
strb r0, [r1, r2, asr #1]
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A644:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A660:
cmp r1, #0
blt _0208A670
cmp r1, #0x80
blt _0208A678
_0208A670:
mov r0, #0
b _0208A688
_0208A678:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #0x400
_0208A688:
cmp r0, #0
moveq sl, #0x10
beq _0208A8D0
ldr r2, [sp, #8]
mov r0, #0xe
cmp r2, r0
bhs _0208A720
ldr r0, [sp, #0x14]
add r2, fp, fp, lsr #31
cmp r1, #0
ldrb r0, [r0, r2, asr #1]
blt _0208A6C8
cmp r1, #0x80
bge _0208A6C8
ldr r2, _0208AAC8 ; =_020AED30
ldrb r1, [r2, r1]
_0208A6C8:
cmp r1, #0x41
subge r1, r1, #0x37
sublt r1, r1, #0x30
mov r2, fp, lsr #0x1f
and r3, r1, #0xff
rsb r1, r2, fp, lsl #31
adds r1, r2, r1, ror #31
moveq r1, r3, lsl #4
add r2, fp, fp, lsr #31
orrne r0, r0, r3
andeq r1, r1, #0xff
orreq r0, r0, r1
ldr r1, [sp, #0x14]
add fp, fp, #1
strb r0, [r1, r2, asr #1]
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A720:
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A73C:
cmp r1, #0
blt _0208A74C
cmp r1, #0x80
blt _0208A754
_0208A74C:
mov r0, r1
b _0208A75C
_0208A754:
ldr r0, _0208AAC8 ; =_020AED30
ldrb r0, [r0, r1]
_0208A75C:
cmp r0, #0x50
movne r5, #0x800
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov sl, #0x20
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A788:
cmp r1, #0x2d
moveq r0, #1
streq r0, [sp, #0xc]
beq _0208A7B0
cmp r1, #0x2b
beq _0208A7B0
mov r0, r8
mov r2, #1
blx sb
sub r4, r4, #1
_0208A7B0:
mov sl, #0x40
add r4, r4, #1
mov r0, r8
mov r1, #0
mov r2, r1
blx sb
mov r1, r0
b _0208A8D0
_0208A7D0:
cmp r1, #0
blt _0208A7E0
cmp r1, #0x80
blt _0208A7E8
_0208A7E0:
mov r0, #0
b _0208A7F8
_0208A7E8:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A7F8:
cmp r0, #0
moveq r5, #0x1000
beq _0208A8D0
cmp r1, #0x30
movne sl, #0x100
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
mov sl, #0x80
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A830:
cmp r1, #0x30
movne sl, #0x100
bne _0208A8D0
mov r1, #0
mov r0, r8
mov r2, r1
add r4, r4, #1
blx sb
mov r1, r0
b _0208A8D0
_0208A858:
cmp r1, #0
blt _0208A868
cmp r1, #0x80
blt _0208A870
_0208A868:
mov r0, #0
b _0208A880
_0208A870:
mov r2, r1, lsl #1
ldr r0, _0208AAC4 ; =_020AEDB0
ldrh r0, [r0, r2]
and r0, r0, #8
_0208A880:
cmp r0, #0
moveq r5, #0x800
beq _0208A8D0
ldr r0, [sp, #0x10]
sub r2, r1, #0x30
mov r1, #0xa
mla r0, r1, r0, r2
str r0, [sp, #0x10]
ldr r1, _0208AAD0 ; =0x00007FFF
ldr r0, [sp, #0x20]
add r4, r4, #1
cmp r0, r1
ldrgt r0, [sp, #0xd0]
movgt r1, #1
strgt r1, [r0]
mov r1, #0
mov r0, r8
mov r2, r1
blx sb
mov r1, r0
_0208A8D0:
ldr r0, [sp]
cmp r4, r0
bgt _0208A8F0
mvn r0, #0
cmp r1, r0
beq _0208A8F0
tst r5, #0x1800
beq _02089BE4
_0208A8F0:
cmp r5, #0x8000
beq _0208A90C
ldr r0, _0208AAD4 ; =0x00000E2C
tst r5, r0
moveq r0, #1
movne r0, #0
b _0208A930
_0208A90C:
sub r0, r4, #1
cmp r0, #2
ble _0208A924
ldr r0, _0208AAD8 ; =0x0000018E
tst sl, r0
bne _0208A92C
_0208A924:
mov r0, #1
b _0208A930
_0208A92C:
mov r0, #0
_0208A930:
cmp r0, #0
movne r2, #0
ldrne r0, [sp, #4]
bne _0208A950
ldr r0, [sp, #0x2c]
sub r2, r4, #1
add r2, r2, r0
ldr r0, [sp, #4]
_0208A950:
str r2, [r0]
mov r0, r8
mov r2, #1
blx sb
cmp sl, #0
bne _0208AB54
ldr r0, [sp, #0x24]
ldrb r2, [sp, #0x84]
cmp r0, #0
ldrne r0, [sp, #0x20]
rsbne r0, r0, #0
strne r0, [sp, #0x20]
add r0, sp, #0x85
add r1, r0, r2
b _0208A998
_0208A98C:
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
_0208A998:
cmp r2, #0
sub r2, r2, #1
beq _0208A9B0
ldrb r0, [r1, #-1]!
cmp r0, #0x30
beq _0208A98C
_0208A9B0:
add r0, r2, #1
strb r0, [sp, #0x84]
ands r2, r0, #0xff
bne _0208A9D4
add r1, r2, #1
strb r1, [sp, #0x84]
add r0, sp, #0x85
mov r1, #0x30
strb r1, [r0, r2]
_0208A9D4:
ldr r1, [sp, #0x20]
ldr r0, [sp, #0x1c]
mov r2, #0x8000
add r0, r1, r0
rsb r2, r2, #0
str r0, [sp, #0x20]
cmp r0, r2
blt _0208A9FC
cmp r0, r2, lsr #17
ble _0208AA08
_0208A9FC:
ldr r0, [sp, #0xd0]
mov r1, #1
str r1, [r0]
_0208AA08:
ldr r0, [sp, #0xd0]
ldr r0, [r0]
cmp r0, #0
beq _0208AA64
ldr r0, [sp, #0x24]
cmp r0, #0
movne r0, #0
addne sp, sp, #0xa8
movne r1, r0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [sp, #0x28]
cmp r0, #0
ldreq r1, _0208AADC ; =_020B2FC0
addeq sp, sp, #0xa8
ldmeqia r1, {r0, r1}
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r1, _0208AADC ; =_020B2FC0
mov r0, #0
ldmia r1, {r2, r3}
mov r1, r0
bl _dsub
add sp, sp, #0xa8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208AA64:
ldr r1, [sp, #0x20]
add r0, sp, #0x80
strh r1, [sp, #0x82]
bl sub_0208D6E0
mov r4, r0
mov r6, r1
mov r0, #0
mov r1, r0
mov r2, r4
mov r3, r6
bl _dneq
beq _0208AAE4
mov r0, r4
mov r1, r6
mov r2, #0
mov r3, #0x100000
bl _dls
bhs _0208AAE4
ldr r0, [sp, #0xd0]
mov r1, #1
str r1, [r0]
b _0208AB10
.align 2, 0
_0208AABC: .word _020AEEB5
_0208AAC0: .word _020AEEB0
_0208AAC4: .word _020AEDB0
_0208AAC8: .word _020AED30
_0208AACC: .word _020B2FB8
_0208AAD0: .word 0x00007FFF
_0208AAD4: .word 0x00000E2C
_0208AAD8: .word 0x0000018E
_0208AADC: .word _020B2FC0
_0208AAE0: .word 0x7FEFFFFF
_0208AAE4:
ldr r3, _0208AAE0 ; =0x7FEFFFFF
mov r0, r4
mov r1, r6
mvn r2, #0
bl _dgr
bls _0208AB10
ldr r0, [sp, #0xd0]
mov r2, #1
ldr r1, _0208AADC ; =_020B2FC0
str r2, [r0]
ldmia r1, {r4, r6}
_0208AB10:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _0208AB44
ldr r0, _0208AAD4 ; =0x00000E2C
tst r5, r0
beq _0208AB44
mov r0, #0
mov r1, r0
mov r2, r4
mov r3, r6
bl _dsub
mov r4, r0
mov r6, r1
_0208AB44:
add sp, sp, #0xa8
mov r0, r4
mov r1, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208AB54:
ldr r0, [sp, #0xc]
add r4, sp, #0x38
cmp r0, #0
ldrne r0, [sp, #0x10]
ldrb r3, [sp, #0x45]
rsbne r0, r0, #0
strne r0, [sp, #0x10]
ldr r1, [sp, #0x10]
ldr r0, [sp, #8]
mov r2, #0
add r0, r1, r0, lsl #2
str r0, [sp, #0x10]
mov r1, #0x80
b _0208AB9C
_0208AB8C:
ldr r0, [sp, #0x10]
add r2, r2, #1
sub r0, r0, #1
str r0, [sp, #0x10]
_0208AB9C:
cmp r2, #4
bhs _0208ABAC
tst r3, r1, asr r2
beq _0208AB8C
_0208ABAC:
adds r5, r2, #1
beq _0208ABF8
add r0, sp, #0x4c
add r3, sp, #0x45
str r0, [sp, #0x14]
mov r1, #0
cmp r0, r3
blo _0208ABF8
rsb r6, r5, #8
_0208ABD0:
ldr r0, [sp, #0x14]
ldrb r0, [r0]
orr r2, r1, r0, lsl r5
mov r1, r0, asr r6
ldr r0, [sp, #0x14]
and r1, r1, #0xff
strb r2, [r0], #-1
str r0, [sp, #0x14]
cmp r0, r3
bhs _0208ABD0
_0208ABF8:
mov r2, #0
mov r6, r2
strb r2, [r4]
strb r2, [r4, #1]
strb r2, [r4, #2]
strb r2, [r4, #3]
strb r2, [r4, #4]
strb r2, [r4, #5]
strb r2, [r4, #6]
strb r2, [r4, #7]
mov r3, #0xc
mov r7, #1
mov r0, #0xff
add r1, sp, #0x45
_0208AC30:
add r5, r2, #8
cmp r5, #0x34
ldrb r5, [r1, r6]
rsbhi r8, r2, #0x34
and fp, r3, #7
andhi r5, r5, r0, lsl r8
andhi r5, r5, #0xff
mov r8, r5, asr fp
and sb, r8, #0xff
ldrb sl, [r4, r7]
rsb r8, fp, #8
mov r5, r5, lsl r8
orr sb, sl, sb
strb sb, [r4, r7]
add r7, r7, #1
add r2, r2, #8
ldrb r8, [r4, r7]
and r5, r5, #0xff
cmp r2, #0x34
orr r5, r8, r5
strb r5, [r4, r7]
add r3, r3, #8
add r6, r6, #1
blo _0208AC30
ldr r0, [sp, #0x10]
mov r1, #0x800
add r0, r0, #0xfe
add r2, r0, #0x300
rsb r1, r1, #0
tst r2, r1
beq _0208ACC8
ldr r2, [sp, #0xd0]
mov r3, #1
mov r0, #0
add sp, sp, #0xa8
mov r1, r0
str r3, [r2]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208ACC8:
ldrb r0, [r4, #1]
mov r2, r2, lsl #0x15
ldrb r1, [r4]
orr r0, r0, r2, lsr #17
strb r0, [r4, #1]
ldr r0, [sp, #0x28]
orr r1, r1, r2, lsr #25
cmp r0, #0
andne r0, r1, #0xff
strb r1, [r4]
orrne r0, r0, #0x80
strneb r0, [r4]
mov r3, #0
_0208ACFC:
rsb r1, r3, #7
ldrb r2, [r4, r3]
ldrb r0, [r4, r1]
strb r0, [r4, r3]
add r3, r3, #1
strb r2, [r4, r1]
cmp r3, #4
blt _0208ACFC
ldmia r4, {r0, r1}
add sp, sp, #0xa8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02089ADC
arm_func_start sub_0208AD28
sub_0208AD28: ; 0x0208AD28
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r7, r0
mov r0, #0
mov r6, r1
str r0, [sp, #8]
add r4, sp, #0xc
str r7, [sp, #4]
ldr r1, _0208ADFC ; =sub_020895F4
add r2, sp, #4
add r3, sp, #0x10
sub r0, r0, #0x80000001
str r4, [sp]
bl sub_02089ADC
mov r5, r1
mov r4, r0
cmp r6, #0
ldrne r0, [sp, #0x10]
mov r1, r5
addne r0, r7, r0
strne r0, [r6]
mov r0, r4
bl sub_0208C5B4
ldr r2, [sp, #0xc]
mov r6, r0
mov r7, r1
cmp r2, #0
bne _0208ADE0
mov r0, #0
mov r1, r0
mov r2, r4
mov r3, r5
bl _dneq
beq _0208ADEC
mov r0, r6
mov r1, r7
mov r2, #0
mov r3, #0x100000
bl _dls
blo _0208ADE0
ldr r3, _0208AE00 ; =0x7FEFFFFF
mov r0, r6
mov r1, r7
mvn r2, #0
bl _dgr
bls _0208ADEC
_0208ADE0:
ldr r0, _0208AE04 ; =_022BCA70
mov r1, #0x22
str r1, [r0]
_0208ADEC:
mov r0, r4
mov r1, r5
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_0208ADFC: .word sub_020895F4
_0208AE00: .word 0x7FEFFFFF
_0208AE04: .word _022BCA70
arm_func_end sub_0208AD28
arm_func_start sub_0208AE08
sub_0208AE08: ; 0x0208AE08
ldr ip, _0208AE14 ; =sub_0208AD28
mov r1, #0
bx ip
.align 2, 0
_0208AE14: .word sub_0208AD28
arm_func_end sub_0208AE08
arm_func_start sub_0208AE18
sub_0208AE18: ; 0x0208AE18
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r4, [sp, #0x38]
movs sb, r0
ldr r0, [sp, #0x34]
str r4, [sp, #0x38]
mov r4, #0
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
str r1, [sp]
str r4, [r0]
mov r0, r4
str r0, [sp, #4]
ldr r0, [sp, #0x34]
mov r1, r4
str r1, [r0]
ldr r0, [sp, #0x30]
str r4, [sp, #8]
mov r8, r2
mov r7, r3
mov r5, r4
mov sl, r4
str r0, [sp, #0x30]
mov r4, #1
bmi _0208AE98
cmp sb, #1
beq _0208AE98
cmp sb, #0x24
bgt _0208AE98
ldr r0, [sp]
cmp r0, #1
bge _0208AEA0
_0208AE98:
mov r4, #0x40
b _0208AEBC
_0208AEA0:
ldr r1, [sp, #8]
mov r0, r7
mov r3, r1
mov r2, r1
add r5, r3, #1
blx r8
mov r6, r0
_0208AEBC:
cmp sb, #0
beq _0208AED4
mov r1, sb
mvn r0, #0
bl _u32_div_f
str r0, [sp, #4]
_0208AED4:
mvn fp, #0
b _0208B194
_0208AEDC:
cmp r4, #8
bgt _0208AF14
cmp r4, #0
addge pc, pc, r4, lsl #2
b _0208B194
_0208AEF0: ; jump table
b _0208B194 ; case 0
b sub_0208AF20 ; case 1
b sub_0208AFCC ; case 2
b _0208B194 ; case 3
b sub_0208B008 ; case 4
b _0208B194 ; case 5
b _0208B194 ; case 6
b _0208B194 ; case 7
b _0208B048 ; case 8
_0208AF14:
cmp r4, #0x10
beq _0208B048
b _0208B194
arm_func_end sub_0208AE18
arm_func_start sub_0208AF20
sub_0208AF20: ; 0x0208AF20
cmp r6, #0
blt _0208AF30
cmp r6, #0x80
blt _0208AF38
_0208AF30:
mov r0, #0
b _0208AF48
_0208AF38:
ldr r0, _0208B1F8 ; =_020AEDB0
mov r1, r6, lsl #1
ldrh r0, [r0, r1]
and r0, r0, #0x100
_0208AF48:
cmp r0, #0
beq _0208AF74
mov r1, #0
mov r0, r7
mov r2, r1
blx r8
mov r6, r0
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
b _0208B194
_0208AF74:
cmp r6, #0x2b
bne _0208AF98
mov r1, #0
mov r0, r7
mov r2, r1
add r5, r5, #1
blx r8
mov r6, r0
b _0208AFC4
_0208AF98:
cmp r6, #0x2d
bne _0208AFC4
mov r1, #0
mov r0, r7
mov r2, r1
add r5, r5, #1
blx r8
mov r6, r0
ldr r0, [sp, #0x34]
mov r1, #1
str r1, [r0]
_0208AFC4:
mov r4, #2
b _0208B194
arm_func_end sub_0208AF20
arm_func_start sub_0208AFCC
sub_0208AFCC: ; 0x0208AFCC
cmp sb, #0
cmpne sb, #0x10
bne _0208B000
cmp r6, #0x30
bne _0208B000
mov r1, #0
mov r0, r7
mov r2, r1
mov r4, #4
add r5, r5, #1
blx r8
mov r6, r0
b _0208B194
_0208B000:
mov r4, #8
b _0208B194
arm_func_end sub_0208AFCC
arm_func_start sub_0208B008
sub_0208B008: ; 0x0208B008
cmp r6, #0x58
cmpne r6, #0x78
bne _0208B038
mov r1, #0
mov r0, r7
mov r2, r1
mov sb, #0x10
mov r4, #8
add r5, r5, #1
blx r8
mov r6, r0
b _0208B194
_0208B038:
cmp sb, #0
moveq sb, #8
mov r4, #0x10
b _0208B194
_0208B048:
ldr r0, [sp, #4]
cmp sb, #0
moveq sb, #0xa
cmp r0, #0
bne _0208B06C
mov r0, fp
mov r1, sb
bl _u32_div_f
str r0, [sp, #4]
_0208B06C:
cmp r6, #0
blt _0208B07C
cmp r6, #0x80
blt _0208B084
_0208B07C:
mov r0, #0
b _0208B094
_0208B084:
ldr r0, _0208B1F8 ; =_020AEDB0
mov r1, r6, lsl #1
ldrh r0, [r0, r1]
and r0, r0, #8
_0208B094:
cmp r0, #0
beq _0208B0BC
sub r6, r6, #0x30
cmp r6, sb
blt _0208B144
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
add r6, r6, #0x30
b _0208B194
_0208B0BC:
cmp r6, #0
blt _0208B0CC
cmp r6, #0x80
blt _0208B0D4
_0208B0CC:
mov r0, #0
b _0208B0E4
_0208B0D4:
ldr r0, _0208B1F8 ; =_020AEDB0
mov r1, r6, lsl #1
ldrh r0, [r0, r1]
and r0, r0, #1
_0208B0E4:
cmp r0, #0
beq _0208B118
cmp r6, #0
blt _0208B0FC
cmp r6, #0x80
blt _0208B104
_0208B0FC:
mov r0, r6
b _0208B10C
_0208B104:
ldr r0, _0208B1FC ; =_020AED30
ldrb r0, [r0, r6]
_0208B10C:
sub r0, r0, #0x37
cmp r0, sb
blt _0208B128
_0208B118:
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
b _0208B194
_0208B128:
cmp r6, #0
blt _0208B140
cmp r6, #0x80
bge _0208B140
ldr r0, _0208B1FC ; =_020AED30
ldrb r6, [r0, r6]
_0208B140:
sub r6, r6, #0x37
_0208B144:
ldr r0, [sp, #4]
mov r4, #0x10
cmp sl, r0
ldrhi r0, [sp, #0x38]
movhi r1, #1
strhi r1, [r0]
mul r0, sl, sb
mov sl, r0
sub r0, fp, r0
cmp r6, r0
ldrhi r0, [sp, #0x38]
movhi r1, #1
strhi r1, [r0]
mov r1, #0
mov r0, r7
mov r2, r1
add sl, sl, r6
add r5, r5, #1
blx r8
mov r6, r0
_0208B194:
ldr r0, [sp]
cmp r5, r0
bgt _0208B1B0
cmp r6, fp
beq _0208B1B0
tst r4, #0x60
beq _0208AEDC
_0208B1B0:
tst r4, #0x34
bne _0208B1C8
ldr r0, [sp, #0x30]
mov sl, #0
str sl, [r0]
b _0208B1DC
_0208B1C8:
ldr r0, [sp, #8]
sub r1, r5, #1
add r1, r1, r0
ldr r0, [sp, #0x30]
str r1, [r0]
_0208B1DC:
mov r0, r7
mov r1, r6
mov r2, #1
blx r8
mov r0, sl
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0208B1F8: .word _020AEDB0
_0208B1FC: .word _020AED30
arm_func_end sub_0208B008
arm_func_start sub_0208B200
sub_0208B200: ; 0x0208B200
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x20
mov r5, r0
mov lr, #0
mov r0, r2
mov r4, r1
add r2, sp, #0x1c
str r5, [sp, #0xc]
str lr, [sp, #0x10]
str r2, [sp]
add r1, sp, #0x18
str r1, [sp, #4]
add ip, sp, #0x14
ldr r2, _0208B290 ; =sub_020895F4
add r3, sp, #0xc
sub r1, lr, #0x80000001
str ip, [sp, #8]
bl sub_0208AE18
cmp r4, #0
ldrne r1, [sp, #0x1c]
addne r1, r5, r1
strne r1, [r4]
ldr r1, [sp, #0x14]
cmp r1, #0
beq _0208B27C
ldr r0, _0208B294 ; =_022BCA70
mov r1, #0x22
str r1, [r0]
add sp, sp, #0x20
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0208B27C:
ldr r1, [sp, #0x18]
cmp r1, #0
rsbne r0, r0, #0
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0208B290: .word sub_020895F4
_0208B294: .word _022BCA70
arm_func_end sub_0208B200
arm_func_start sub_0208B298
sub_0208B298: ; 0x0208B298
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x20
mov r5, r0
mov lr, #0
mov r0, r2
mov r4, r1
add r2, sp, #0x1c
str r5, [sp, #0xc]
str lr, [sp, #0x10]
str r2, [sp]
add r1, sp, #0x18
str r1, [sp, #4]
add ip, sp, #0x14
ldr r2, _0208B358 ; =sub_020895F4
add r3, sp, #0xc
sub r1, lr, #0x80000001
str ip, [sp, #8]
bl sub_0208AE18
cmp r4, #0
ldrne r1, [sp, #0x1c]
addne r1, r5, r1
strne r1, [r4]
ldr r1, [sp, #0x14]
cmp r1, #0
bne _0208B324
ldr r2, [sp, #0x18]
cmp r2, #0
bne _0208B314
mvn r1, #0x80000000
cmp r0, r1
bhi _0208B324
_0208B314:
cmp r2, #0
beq _0208B348
cmp r0, #0x80000000
bls _0208B348
_0208B324:
ldr r0, [sp, #0x18]
ldr r1, _0208B35C ; =_022BCA70
mov r2, #0x22
cmp r0, #0
movne r0, #0x80000000
str r2, [r1]
add sp, sp, #0x20
mvneq r0, #0x80000000
ldmia sp!, {r3, r4, r5, pc}
_0208B348:
cmp r2, #0
rsbne r0, r0, #0
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0208B358: .word sub_020895F4
_0208B35C: .word _022BCA70
arm_func_end sub_0208B298
arm_func_start sub_0208B360
sub_0208B360: ; 0x0208B360
ldr ip, _0208B370 ; =sub_0208B298
mov r1, #0
mov r2, #0xa
bx ip
.align 2, 0
_0208B370: .word sub_0208B298
arm_func_end sub_0208B360
arm_func_start sub_0208B374
sub_0208B374: ; 0x0208B374
cmp r0, #0
beq _0208B38C
ldr r3, [r0, #4]
mov r2, r3, lsl #0x16
movs r2, r2, lsr #0x1d
bne _0208B394
_0208B38C:
mov r0, #0
bx lr
_0208B394:
mov r2, r3, lsl #0x14
movs r2, r2, lsr #0x1e
beq _0208B3B4
cmp r2, #1
beq _0208B3DC
cmp r2, #2
moveq r1, #1
b _0208B3E0
_0208B3B4:
cmp r1, #0
ble _0208B3CC
bic r2, r3, #0xc00
orr r2, r2, #0x800
str r2, [r0, #4]
b _0208B3E0
_0208B3CC:
biclt r2, r3, #0xc00
orrlt r2, r2, #0x400
strlt r2, [r0, #4]
b _0208B3E0
_0208B3DC:
mvn r1, #0
_0208B3E0:
mov r0, r1
bx lr
arm_func_end sub_0208B374
arm_func_start wcslen
wcslen: ; 0x0208B3E8
mvn r2, #0
_0208B3EC:
ldrh r1, [r0], #2
add r2, r2, #1
cmp r1, #0
bne _0208B3EC
mov r0, r2
bx lr
arm_func_end wcslen
arm_func_start sub_0208B404
sub_0208B404: ; 0x0208B404
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x80
ldr r8, [sp, #0xb4]
ldr r6, [sp, #0xac]
ldr r0, [sp, #0xb0]
bic sb, r8, #0x80000000
orrs r1, sb, r0
ldr r7, [sp, #0xa8]
bic r4, r6, #0x80000000
addeq sp, sp, #0x80
moveq r0, #0
ldreq r1, _0208B9B0 ; =0x3FF00000
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
ldr r1, _0208B9B4 ; =0x7FF00000
cmp r4, r1
bgt _0208B474
bne _0208B45C
cmp r7, #0
bne _0208B474
_0208B45C:
ldr r1, _0208B9B4 ; =0x7FF00000
cmp sb, r1
bgt _0208B474
bne _0208B498
cmp r0, #0
beq _0208B498
_0208B474:
ldr r0, [sp, #0xa8]
ldr r1, [sp, #0xac]
ldr r2, [sp, #0xb0]
ldr r3, [sp, #0xb4]
bl _dadd
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B498:
cmp r6, #0
mov r5, #0
bge _0208B500
ldr r1, _0208B9B8 ; =0x43400000
cmp sb, r1
movge r5, #2
bge _0208B500
sub r1, r1, #0x3500000
cmp sb, r1
blt _0208B500
ldr r1, _0208B9BC ; =0xFFFFFC01
add r1, r1, sb, asr #20
cmp r1, #0x14
ble _0208B4E8
rsb r2, r1, #0x34
mov r1, r0, lsr r2
cmp r0, r1, lsl r2
andeq r1, r1, #1
rsbeq r5, r1, #2
b _0208B500
_0208B4E8:
cmp r0, #0
rsbeq r2, r1, #0x14
moveq r1, sb, asr r2
cmpeq sb, r1, lsl r2
andeq r1, r1, #1
rsbeq r5, r1, #2
_0208B500:
cmp r0, #0
bne _0208B65C
ldr r1, _0208B9B4 ; =0x7FF00000
cmp sb, r1
bne _0208B5B4
add r0, r4, #0x100000
add r0, r0, #0xc0000000
orrs r0, r0, r7
bne _0208B548
ldr r0, [sp, #0xb0]
ldr r1, [sp, #0xb4]
mov r2, r0
mov r3, r1
bl _dsub
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B548:
sub r0, r1, #0x40000000
cmp r4, r0
blt _0208B578
cmp r8, #0
ldrge r0, [sp, #0xb0]
ldrge r1, [sp, #0xb4]
movlt r0, #0
add sp, sp, #0x80
movlt r1, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B578:
cmp r8, #0
mov r0, #0
addge sp, sp, #0x80
movge r1, r0
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
addge sp, sp, #0x10
bxge lr
ldr r2, [sp, #0xb0]
ldr r3, [sp, #0xb4]
mov r1, r0
bl _dsub
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B5B4:
sub r0, r1, #0x40000000
cmp sb, r0
bne _0208B600
cmp r8, #0
ldrge r0, [sp, #0xa8]
ldrge r1, [sp, #0xac]
addge sp, sp, #0x80
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
addge sp, sp, #0x10
bxge lr
ldr r2, [sp, #0xa8]
ldr r3, [sp, #0xac]
sub r1, r1, #0x40000000
mov r0, #0
bl _ddiv
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B600:
cmp r8, #0x40000000
bne _0208B62C
ldr r0, [sp, #0xa8]
ldr r1, [sp, #0xac]
mov r2, r0
mov r3, r1
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B62C:
ldr r0, _0208B9C0 ; =0x3FE00000
cmp r8, r0
bne _0208B65C
cmp r6, #0
blt _0208B65C
ldr r0, [sp, #0xa8]
ldr r1, [sp, #0xac]
bl _dsqrt
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B65C:
ldr r0, [sp, #0xa8]
ldr r1, [sp, #0xac]
bl sub_0208C5B4
str r0, [sp, #0x70]
str r1, [sp, #0x74]
cmp r7, #0
bne _0208B760
ldr r0, _0208B9B4 ; =0x7FF00000
cmp r4, r0
cmpne r4, #0
subne r0, r0, #0x40000000
cmpne r4, r0
bne _0208B760
ldr r2, [sp, #0x70]
ldr r3, [sp, #0x74]
str r2, [sp, #0x78]
str r3, [sp, #0x7c]
cmp r8, #0
bge _0208B6BC
ldr r1, _0208B9B0 ; =0x3FF00000
mov r0, #0
bl _ddiv
str r0, [sp, #0x78]
str r1, [sp, #0x7c]
_0208B6BC:
cmp r6, #0
bge _0208B748
add r0, r4, #0x100000
add r0, r0, #0xc0000000
orrs r0, r0, r5
bne _0208B724
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
mov r2, r0
mov r3, r1
bl _dsub
mov r4, r0
mov r5, r1
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
mov r2, r0
mov r3, r1
bl _dsub
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, r5
bl _ddiv
str r0, [sp, #0x78]
str r1, [sp, #0x7c]
b _0208B748
_0208B724:
cmp r5, #1
bne _0208B748
mov r0, #0
ldr r2, [sp, #0x78]
ldr r3, [sp, #0x7c]
mov r1, r0
bl _dsub
str r0, [sp, #0x78]
str r1, [sp, #0x7c]
_0208B748:
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B760:
mov r0, r6, asr #0x1f
add r7, r0, #1
orrs r0, r7, r5
bne _0208B798
ldr r0, _0208B9C4 ; =_020B2FBC
ldr r1, _0208B9C8 ; =_022BCA70
ldr r0, [r0]
mov r2, #0x21
str r2, [r1]
bl _f2d
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B798:
ldr r3, _0208B9CC ; =0x41E00000
cmp sb, r3
ble _0208BA9C
add r0, r3, #0x2100000
cmp sb, r0
ble _0208B808
ldr r1, _0208B9D0 ; =0x3FEFFFFF
cmp r4, r1
bgt _0208B7DC
cmp r8, #0
mov r0, #0
addlt r1, r1, #0x40000001
add sp, sp, #0x80
movge r1, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B7DC:
add r0, r1, #1
cmp r4, r0
blt _0208B808
cmp r8, #0
mov r0, #0
addgt r1, r1, #0x40000001
add sp, sp, #0x80
movle r1, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B808:
ldr r2, _0208B9D0 ; =0x3FEFFFFF
cmp r4, r2
bge _0208B834
cmp r8, #0
mov r0, #0
addlt r1, r2, #0x40000001
add sp, sp, #0x80
movge r1, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B834:
add r0, r2, #1
cmp r4, r0
ble _0208B860
cmp r8, #0
mov r0, #0
addgt r1, r2, #0x40000001
add sp, sp, #0x80
movle r1, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208B860:
ldr r0, [sp, #0xa8]
ldr r1, [sp, #0xac]
add r3, r2, #1
mov r2, #0
bl _dsub
mov r2, r0
mov r3, r1
str r0, [sp, #0x50]
str r1, [sp, #0x54]
bl _dmul
mov r6, r1
mov r4, r0
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
ldr r1, _0208B9D4 ; =0x3FD00000
mov r0, #0
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208B9D8 ; =0x55555555
sub r1, r0, #0x15800000
bl _dsub
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dmul
mov r2, r0
mov r3, r1
mov r0, #0
ldr r1, _0208B9C0 ; =0x3FE00000
bl _dsub
mov r2, r0
mov r0, r4
mov r3, r1
mov r1, r6
bl _dmul
mov r6, r0
mov r8, r1
mov r0, #0x60000000
ldr r1, _0208B9DC ; =0x3FF71547
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
bl _dmul
mov r4, r0
mov sb, r1
ldr r0, _0208B9E0 ; =0xF85DDF44
ldr r1, _0208B9E4 ; =0x3E54AE0B
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
bl _dmul
mov fp, r0
mov sl, r1
ldr r0, _0208B9E8 ; =0x652B82FE
ldr r1, _0208B9DC ; =0x3FF71547
mov r2, r6
mov r3, r8
bl _dmul
mov r2, r0
mov r3, r1
mov r0, fp
mov r1, sl
bl _dsub
mov r6, r0
mov r8, r1
mov r0, r4
mov r1, sb
mov r2, r6
mov r3, r8
bl _dadd
mov r2, r4
mov r3, sb
str r1, [sp, #0x5c]
mov r0, #0
str r0, [sp, #0x58]
bl _dsub
mov r2, r0
mov r0, r6
mov r3, r1
mov r1, r8
bl _dsub
mov r4, r0
mov r8, r1
b _0208BFF8
.align 2, 0
_0208B9B0: .word 0x3FF00000
_0208B9B4: .word 0x7FF00000
_0208B9B8: .word 0x43400000
_0208B9BC: .word 0xFFFFFC01
_0208B9C0: .word 0x3FE00000
_0208B9C4: .word _020B2FBC
_0208B9C8: .word _022BCA70
_0208B9CC: .word 0x41E00000
_0208B9D0: .word 0x3FEFFFFF
_0208B9D4: .word 0x3FD00000
_0208B9D8: .word 0x55555555
_0208B9DC: .word 0x3FF71547
_0208B9E0: .word 0xF85DDF44
_0208B9E4: .word 0x3E54AE0B
_0208B9E8: .word 0x652B82FE
_0208B9EC: .word 0x0003988E
_0208B9F0: .word 0x000BB67A
_0208B9F4: .word _020AEED0
_0208B9F8: .word 0x4A454EEF
_0208B9FC: .word 0x3FCA7E28
_0208BA00: .word 0x93C9DB65
_0208BA04: .word 0x3FCD864A
_0208BA08: .word 0xA91D4101
_0208BA0C: .word 0x3FD17460
_0208BA10: .word 0x518F264D
_0208BA14: .word 0x3FD55555
_0208BA18: .word 0xDB6FABFF
_0208BA1C: .word 0x3FDB6DB6
_0208BA20: .word 0x33333303
_0208BA24: .word 0x3FE33333
_0208BA28: .word 0x40080000
_0208BA2C: .word 0x3FEEC709
_0208BA30: .word 0x145B01F5
_0208BA34: .word 0xBE3E2FE0
_0208BA38: .word 0xDC3A03FD
_0208BA3C: .word _020AEEE0
_0208BA40: .word _020AEEC0
_0208BA44: .word 0x40900000
_0208BA48: .word 0x8800759C
_0208BA4C: .word 0x7E37E43C
_0208BA50: .word 0x3C971547
_0208BA54: .word 0x3F6F3400
_0208BA58: .word 0xC2F8F359
_0208BA5C: .word 0x01A56E1F
_0208BA60: .word 0x3FE62E43
_0208BA64: .word 0xFEFA39EF
_0208BA68: .word 0x3FE62E42
_0208BA6C: .word 0x0CA86C39
_0208BA70: .word 0xBE205C61
_0208BA74: .word 0x72BEA4D0
_0208BA78: .word 0x3E663769
_0208BA7C: .word 0xC5D26BF1
_0208BA80: .word 0xBEBBBD41
_0208BA84: .word 0xAF25DE2C
_0208BA88: .word 0x3F11566A
_0208BA8C: .word 0x16BEBD93
_0208BA90: .word 0xBF66C16C
_0208BA94: .word 0x5555553E
_0208BA98: .word 0x3FC55555
_0208BA9C:
cmp r4, #0x100000
mov r6, #0
bge _0208BACC
ldr r0, [sp, #0x70]
ldr r1, [sp, #0x74]
mov r2, r6
add r3, r3, #0x1600000
bl _dmul
mov r4, r1
str r0, [sp, #0x70]
str r4, [sp, #0x74]
sub r6, r6, #0x35
_0208BACC:
ldr r0, _0208B9BC ; =0xFFFFFC01
ldr r1, _0208B9EC ; =0x0003988E
and r2, r4, r0, lsr #12
add r0, r0, r4, asr #20
orr sb, r2, #0xff00000
cmp r2, r1
add r6, r6, r0
orr sb, sb, #0x30000000
movle r8, #0
ble _0208BB0C
ldr r0, _0208B9F0 ; =0x000BB67A
cmp r2, r0
movlt r8, #1
addge r6, r6, #1
subge sb, sb, #0x100000
movge r8, #0
_0208BB0C:
ldr r2, _0208B9F4 ; =_020AEED0
ldr r0, [sp, #0x70]
add r1, r2, r8, lsl #3
ldr r3, [r1, #4]
ldr r2, [r2, r8, lsl #3]
mov r1, sb
str sb, [sp, #0x74]
bl _dsub
ldr r2, _0208B9F4 ; =_020AEED0
mov sl, r0
add r3, r2, r8, lsl #3
mov r4, r1
ldr r0, [sp, #0x70]
ldr r2, [r2, r8, lsl #3]
ldr r3, [r3, #4]
mov r1, sb
bl _dadd
mov r3, r1
mov r2, r0
ldr r1, _0208B9B0 ; =0x3FF00000
mov r0, #0
bl _ddiv
str r1, [sp, #0x24]
mov fp, r0
ldr r3, [sp, #0x24]
mov r0, sl
mov r1, r4
mov r2, fp
bl _dmul
mov r2, sb, asr #1
orr r2, r2, #0x20000000
mov sb, r1
add r2, r2, #0x80000
add r1, r2, r8, lsl #18
ldr r2, _0208B9F4 ; =_020AEED0
str r0, [sp, #0x28]
add r3, r2, r8, lsl #3
mov r0, #0
ldr r2, [r2, r8, lsl #3]
ldr r3, [r3, #4]
str sb, [sp, #0x4c]
str r1, [sp, #0x44]
str r0, [sp, #0x48]
str r0, [sp, #0x40]
bl _dsub
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x70]
ldr r1, [sp, #0x74]
bl _dsub
str r0, [sp, #0x2c]
str r1, [sp, #0x1c]
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x40]
ldr r3, [sp, #0x44]
mov r1, sb
bl _dmul
mov r2, r0
mov r3, r1
mov r0, sl
mov r1, r4
bl _dsub
mov sl, r0
mov r4, r1
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x1c]
ldr r0, [sp, #0x48]
mov r1, sb
bl _dmul
mov r2, r0
mov r3, r1
mov r0, sl
mov r1, r4
bl _dsub
mov r3, r1
mov r2, r0
ldr r1, [sp, #0x24]
mov r0, fp
bl _dmul
str r0, [sp, #0x30]
ldr r0, [sp, #0x28]
str r1, [sp, #0x14]
mov r1, sb
mov r2, r0
mov r3, sb
bl _dmul
mov r4, r0
mov sl, r1
mov r2, r4
mov r3, sl
bl _dmul
str r0, [sp, #0x34]
mov fp, r1
ldr r0, _0208B9F8 ; =0x4A454EEF
ldr r1, _0208B9FC ; =0x3FCA7E28
mov r2, r4
mov r3, sl
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA00 ; =0x93C9DB65
ldr r1, _0208BA04 ; =0x3FCD864A
bl _dadd
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA08 ; =0xA91D4101
ldr r1, _0208BA0C ; =0x3FD17460
bl _dadd
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA10 ; =0x518F264D
ldr r1, _0208BA14 ; =0x3FD55555
bl _dadd
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA18 ; =0xDB6FABFF
ldr r1, _0208BA1C ; =0x3FDB6DB6
bl _dadd
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA20 ; =0x33333303
ldr r1, _0208BA24 ; =0x3FE33333
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x34]
mov r1, fp
bl _dmul
mov r4, r0
mov sl, r1
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x28]
mov r1, sb
mov r3, sb
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x30]
ldr r1, [sp, #0x14]
bl _dmul
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dadd
mov r4, r0
ldr r0, [sp, #0x48]
mov sl, r1
mov r1, sb
mov r2, r0
mov r3, r1
bl _dmul
str r1, [sp, #0xc]
mov fp, r0
ldr r1, _0208BA28 ; =0x40080000
ldr r3, [sp, #0xc]
mov r0, #0
mov r2, fp
bl _dadd
mov r2, r4
mov r3, sl
bl _dadd
mov r0, #0
ldr r3, _0208BA28 ; =0x40080000
mov r2, r0
str r1, [sp, #0x44]
str r0, [sp, #0x40]
bl _dsub
ldr r3, [sp, #0xc]
mov r2, fp
bl _dsub
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dsub
str r0, [sp, #0x38]
str r1, [sp, #4]
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x40]
ldr r3, [sp, #0x44]
mov r1, sb
bl _dmul
mov r4, r0
mov sl, r1
ldr r0, [sp, #0x30]
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x40]
ldr r3, [sp, #0x44]
bl _dmul
str r0, [sp, #0x3c]
mov fp, r1
ldr r0, [sp, #0x38]
ldr r1, [sp, #4]
ldr r2, [sp, #0x28]
mov r3, sb
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x3c]
mov r1, fp
bl _dadd
mov sb, r0
mov fp, r1
mov r0, r4
mov r1, sl
mov r2, sb
mov r3, fp
bl _dadd
mov r0, #0
mov r2, r4
mov r3, sl
str r1, [sp, #0x6c]
str r0, [sp, #0x68]
bl _dsub
mov r2, r0
mov r3, r1
mov r0, sb
mov r1, fp
bl _dsub
mov sl, r1
mov fp, r0
ldr r1, _0208BA2C ; =0x3FEEC709
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
mov r0, #0xe0000000
bl _dmul
mov r4, r0
mov sb, r1
ldr r0, _0208BA30 ; =0x145B01F5
ldr r1, _0208BA34 ; =0xBE3E2FE0
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
bl _dmul
mov r2, fp
mov r3, sl
mov fp, r0
mov sl, r1
ldr r0, _0208BA38 ; =0xDC3A03FD
ldr r1, _0208BA2C ; =0x3FEEC709
bl _dmul
mov r2, r0
mov r3, r1
mov r0, fp
mov r1, sl
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, _0208BA3C ; =_020AEEE0
add r1, r0, r8, lsl #3
ldr r0, [r0, r8, lsl #3]
ldr r1, [r1, #4]
bl _dadd
mov fp, r0
mov sl, r1
mov r0, r6
bl _dflt
str r0, [sp, #0x50]
str r1, [sp, #0x54]
mov r0, r4
mov r1, sb
mov r2, fp
mov r3, sl
bl _dadd
ldr r2, _0208BA40 ; =_020AEEC0
add r3, r2, r8, lsl #3
ldr r2, [r2, r8, lsl #3]
ldr r3, [r3, #4]
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dadd
str r1, [sp, #0x5c]
mov r0, #0
str r0, [sp, #0x58]
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
bl _dsub
ldr r2, _0208BA40 ; =_020AEEC0
add r3, r2, r8, lsl #3
ldr r2, [r2, r8, lsl #3]
ldr r3, [r3, #4]
bl _dsub
mov r2, r4
mov r3, sb
bl _dsub
mov r2, r0
mov r0, fp
mov r3, r1
mov r1, sl
bl _dsub
mov r4, r0
mov r8, r1
_0208BFF8:
sub r0, r5, #1
ldr r1, [sp, #0xb4]
orrs r0, r7, r0
ldr r5, _0208B9B0 ; =0x3FF00000
mov r2, #0
ldr r0, [sp, #0xb0]
mov r3, r1
mov r6, #0
subeq r5, r5, #0x80000000
str r1, [sp, #0x64]
str r2, [sp, #0x60]
bl _dsub
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x58]
ldr r1, [sp, #0x5c]
bl _dmul
mov r7, r0
mov sb, r1
ldr r0, [sp, #0xb0]
ldr r1, [sp, #0xb4]
mov r2, r4
mov r3, r8
bl _dmul
mov r2, r0
mov r3, r1
mov r0, r7
mov r1, sb
bl _dadd
mov r7, r0
mov r8, r1
ldr r0, [sp, #0x60]
ldr r1, [sp, #0x64]
ldr r2, [sp, #0x58]
ldr r3, [sp, #0x5c]
bl _dmul
mov r2, r0
mov r3, r1
mov r0, r7
mov r1, r8
str r2, [sp, #0x68]
str r3, [sp, #0x6c]
bl _dadd
mov sb, r1
ldr r2, _0208BA44 ; =0x40900000
str r0, [sp, #0x78]
str sb, [sp, #0x7c]
cmp sb, r2
blt _0208C184
add r1, sb, #0xf700000
add r1, r1, #0xb0000000
orrs r0, r1, r0
beq _0208C104
ldr r0, _0208BA48 ; =0x8800759C
ldr r1, _0208BA4C ; =0x7E37E43C
mov r2, r6
mov r3, r5
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA48 ; =0x8800759C
ldr r1, _0208BA4C ; =0x7E37E43C
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208C104:
ldr r0, _0208B9E8 ; =0x652B82FE
ldr r1, _0208BA50 ; =0x3C971547
mov r2, r7
mov r3, r8
bl _dadd
mov r4, r0
mov sl, r1
ldr r0, [sp, #0x78]
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
mov r1, sb
bl _dsub
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sl
bl _dgr
bls _0208C238
ldr r0, _0208BA48 ; =0x8800759C
ldr r1, _0208BA4C ; =0x7E37E43C
mov r2, r6
mov r3, r5
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA48 ; =0x8800759C
ldr r1, _0208BA4C ; =0x7E37E43C
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208C184:
bic r3, sb, #0x80000000
add r2, r2, #0xcc00
cmp r3, r2
blt _0208C238
ldr r2, _0208BA54 ; =0x3F6F3400
add r2, sb, r2
orrs r2, r2, r0
beq _0208C1DC
ldr r0, _0208BA58 ; =0xC2F8F359
ldr r1, _0208BA5C ; =0x01A56E1F
mov r2, r6
mov r3, r5
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA58 ; =0xC2F8F359
ldr r1, _0208BA5C ; =0x01A56E1F
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208C1DC:
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
bl _dsub
mov r2, r0
mov r3, r1
mov r0, r7
mov r1, r8
bl _dleq
bhi _0208C238
ldr r0, _0208BA58 ; =0xC2F8F359
ldr r1, _0208BA5C ; =0x01A56E1F
mov r2, r6
mov r3, r5
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA58 ; =0xC2F8F359
ldr r1, _0208BA5C ; =0x01A56E1F
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_0208C238:
ldr r0, _0208B9BC ; =0xFFFFFC01
bic r3, sb, #0x80000000
ldr r1, _0208B9C0 ; =0x3FE00000
add r2, r0, r3, asr #20
cmp r3, r1
mov r4, #0
ble _0208C2B4
mov r1, #0x100000
add r2, r2, #1
add r2, sb, r1, asr r2
bic r3, r2, #0x80000000
add r0, r0, r3, asr #20
sub r3, r1, #1
mvn r3, r3, asr r0
sub r1, r1, #1
and r1, r2, r1
and r2, r2, r3
str r2, [sp, #0x54]
str r4, [sp, #0x50]
orr r1, r1, #0x100000
rsb r0, r0, #0x14
mov r4, r1, asr r0
cmp sb, #0
ldr r0, [sp, #0x68]
ldr r1, [sp, #0x6c]
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
rsblt r4, r4, #0
bl _dsub
str r0, [sp, #0x68]
str r1, [sp, #0x6c]
_0208C2B4:
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
mov r0, r7
mov r1, r8
bl _dadd
mov r3, r1
mov r0, #0
ldr r1, _0208BA60 ; =0x3FE62E43
mov r2, r0
str r3, [sp, #0x54]
str r0, [sp, #0x50]
bl _dmul
mov sb, r0
mov sl, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
ldr r2, [sp, #0x68]
ldr r3, [sp, #0x6c]
bl _dsub
mov r2, r0
mov r0, r7
mov r3, r1
mov r1, r8
bl _dsub
mov r2, r0
mov r3, r1
ldr r0, _0208BA64 ; =0xFEFA39EF
ldr r1, _0208BA68 ; =0x3FE62E42
bl _dmul
mov r7, r0
mov r8, r1
ldr r0, _0208BA6C ; =0x0CA86C39
ldr r1, _0208BA70 ; =0xBE205C61
ldr r2, [sp, #0x50]
ldr r3, [sp, #0x54]
bl _dmul
mov r2, r0
mov r0, r7
mov r3, r1
mov r1, r8
bl _dadd
mov r7, r0
mov r8, r1
mov r0, sb
mov r1, sl
mov r2, r7
mov r3, r8
bl _dadd
mov r2, sb
mov r3, sl
str r0, [sp, #0x78]
str r1, [sp, #0x7c]
bl _dsub
mov r2, r0
mov r3, r1
mov r0, r7
mov r1, r8
bl _dsub
mov r8, r0
mov sb, r1
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
mov r2, r0
mov r3, r1
bl _dmul
mov r2, r0
str r2, [sp, #0x50]
mov r3, r1
str r3, [sp, #0x54]
ldr r0, _0208BA74 ; =0x72BEA4D0
ldr r1, _0208BA78 ; =0x3E663769
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA7C ; =0xC5D26BF1
ldr r1, _0208BA80 ; =0xBEBBBD41
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA84 ; =0xAF25DE2C
ldr r1, _0208BA88 ; =0x3F11566A
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA8C ; =0x16BEBD93
ldr r1, _0208BA90 ; =0xBF66C16C
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, _0208BA94 ; =0x5555553E
ldr r1, _0208BA98 ; =0x3FC55555
bl _dadd
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x54]
bl _dmul
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
bl _dsub
mov r2, r0
str r2, [sp, #0x58]
mov r3, r1
str r3, [sp, #0x5c]
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
bl _dmul
mov r7, r0
mov sl, r1
ldr r0, [sp, #0x58]
ldr r1, [sp, #0x5c]
mov r2, #0
mov r3, #0x40000000
bl _dsub
mov r2, r0
mov r0, r7
mov r3, r1
mov r1, sl
bl _ddiv
mov r7, r0
mov sl, r1
ldr r0, [sp, #0x78]
ldr r1, [sp, #0x7c]
mov r2, r8
mov r3, sb
bl _dmul
mov r2, r0
mov r0, r8
mov r3, r1
mov r1, sb
bl _dadd
mov r2, r0
mov r0, r7
mov r3, r1
mov r1, sl
bl _dsub
ldr r2, [sp, #0x78]
ldr r3, [sp, #0x7c]
bl _dsub
mov r3, r1
mov r2, r0
ldr r1, _0208B9B0 ; =0x3FF00000
mov r0, #0
bl _dsub
add r3, r1, r4, lsl #20
mov r2, r3, asr #0x14
str r0, [sp, #0x78]
cmp r2, #0
str r1, [sp, #0x7c]
addgt r0, sp, #0x78
strgt r3, [r0, #4]
bgt _0208C568
mov r2, r4
bl sub_0208DE1C
str r0, [sp, #0x78]
str r1, [sp, #0x7c]
_0208C568:
ldr r2, [sp, #0x78]
ldr r3, [sp, #0x7c]
mov r0, r6
mov r1, r5
bl _dmul
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
arm_func_end sub_0208B404
arm_func_start sub_0208C58C
sub_0208C58C: ; 0x0208C58C
stmdb sp!, {r0, r1, r2, r3}
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
bic r1, r1, #0x80000000
and r0, r0, #0x80000000
orr r1, r1, r0
ldr r0, [sp]
str r1, [sp, #4]
add sp, sp, #0x10
bx lr
arm_func_end sub_0208C58C
arm_func_start sub_0208C5B4
sub_0208C5B4: ; 0x0208C5B4
stmdb sp!, {r0, r1, r2, r3}
add r2, sp, #0
ldr r1, [r2, #4]
ldr r0, [sp]
bic r1, r1, #0x80000000
str r1, [r2, #4]
add sp, sp, #0x10
bx lr
arm_func_end sub_0208C5B4
arm_func_start sub_0208C5D4
sub_0208C5D4: ; 0x0208C5D4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
ldr r1, [sp, #0xc]
ldr r0, _0208C680 ; =0x7FF00000
mov r4, r2
bic r3, r1, #0x80000000
mov r2, #0
str r2, [r4]
cmp r3, r0
ldr r0, [sp, #8]
bge _0208C608
orrs r0, r3, r0
bne _0208C61C
_0208C608:
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C61C:
cmp r3, #0x100000
bge _0208C648
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r3, _0208C684 ; =0x43500000
bl _dmul
mvn r2, #0x35
str r0, [sp, #8]
str r1, [sp, #0xc]
str r2, [r4]
bic r3, r1, #0x80000000
_0208C648:
ldr r2, _0208C688 ; =0x800FFFFF
ldr r0, _0208C68C ; =0xFFFFFC02
and r1, r1, r2
orr r1, r1, #0xfe00000
orr r1, r1, #0x30000000
ldr r2, [r4]
add r0, r0, r3, asr #20
add r2, r2, r0
ldr r0, [sp, #8]
str r2, [r4]
str r1, [sp, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_0208C680: .word 0x7FF00000
_0208C684: .word 0x43500000
_0208C688: .word 0x800FFFFF
_0208C68C: .word 0xFFFFFC02
arm_func_end sub_0208C5D4
arm_func_start sub_0208C690
sub_0208C690: ; 0x0208C690
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
mov r4, r2
bl sub_0208DDAC
cmp r0, #2
ble _0208C6C8
mov r0, #0
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
mov r1, r0
bl _deq
bne _0208C6DC
_0208C6C8:
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C6DC:
ldr r3, [sp, #0xc]
ldr r0, _0208C8B0 ; =0x7FF00000
ldr r1, [sp, #8]
and r0, r3, r0
movs ip, r0, asr #0x14
bne _0208C768
bic r0, r3, #0x80000000
orrs r0, r1, r0
ldreq r0, [sp, #8]
ldreq r1, [sp, #0xc]
ldmeqia sp!, {r4, lr}
addeq sp, sp, #0x10
bxeq lr
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r3, _0208C8B4 ; =0x43500000
mov r2, #0
bl _dmul
mov r3, r1
ldr r1, _0208C8B0 ; =0x7FF00000
ldr ip, _0208C8B8 ; =0xFFFF3CB0
and r1, r3, r1
mov r2, r0
mov r0, r1, asr #0x14
str r2, [sp, #8]
str r3, [sp, #0xc]
cmp r4, ip
sub ip, r0, #0x36
bge _0208C768
ldr r0, _0208C8BC ; =0xC2F8F359
ldr r1, _0208C8C0 ; =0x01A56E1F
bl _dmul
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C768:
ldr r0, _0208C8C4 ; =0x000007FF
cmp ip, r0
bne _0208C794
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
mov r2, r0
mov r3, r1
bl _dadd
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C794:
add r2, ip, r4
sub r0, r0, #1
cmp r2, r0
ble _0208C7D8
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
ldr r0, _0208C8C8 ; =0x8800759C
ldr r1, _0208C8CC ; =0x7E37E43C
bl sub_0208C58C
mov r2, r0
mov r3, r1
ldr r0, _0208C8C8 ; =0x8800759C
ldr r1, _0208C8CC ; =0x7E37E43C
bl _dmul
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C7D8:
cmp r2, #0
ble _0208C800
ldr r1, _0208C8D0 ; =0x800FFFFF
ldr r0, [sp, #8]
and r1, r3, r1
orr r1, r1, r2, lsl #20
str r1, [sp, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C800:
mvn r0, #0x35
cmp r2, r0
bgt _0208C880
ldr r0, _0208C8D4 ; =0x0000C350
cmp r4, r0
ble _0208C84C
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
ldr r0, _0208C8C8 ; =0x8800759C
ldr r1, _0208C8CC ; =0x7E37E43C
bl sub_0208C58C
mov r2, r0
mov r3, r1
ldr r0, _0208C8C8 ; =0x8800759C
ldr r1, _0208C8CC ; =0x7E37E43C
bl _dmul
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C84C:
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
ldr r0, _0208C8BC ; =0xC2F8F359
ldr r1, _0208C8C0 ; =0x01A56E1F
bl sub_0208C58C
mov r2, r0
mov r3, r1
ldr r0, _0208C8BC ; =0xC2F8F359
ldr r1, _0208C8C0 ; =0x01A56E1F
bl _dmul
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
_0208C880:
ldr r0, _0208C8D0 ; =0x800FFFFF
add r1, r2, #0x36
and r0, r3, r0
orr r3, r0, r1, lsl #20
ldr r2, [sp, #8]
ldr r1, _0208C8D8 ; =0x3C900000
mov r0, #0
str r3, [sp, #0xc]
bl _dmul
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_0208C8B0: .word 0x7FF00000
_0208C8B4: .word 0x43500000
_0208C8B8: .word 0xFFFF3CB0
_0208C8BC: .word 0xC2F8F359
_0208C8C0: .word 0x01A56E1F
_0208C8C4: .word 0x000007FF
_0208C8C8: .word 0x8800759C
_0208C8CC: .word 0x7E37E43C
_0208C8D0: .word 0x800FFFFF
_0208C8D4: .word 0x0000C350
_0208C8D8: .word 0x3C900000
arm_func_end sub_0208C690
arm_func_start sub_0208C8DC
sub_0208C8DC: ; 0x0208C8DC
ldr ip, _0208C8E4 ; =sub_0208B404
bx ip
.align 2, 0
_0208C8E4: .word sub_0208B404
arm_func_end sub_0208C8DC
arm_func_start sub_0208C8E8
sub_0208C8E8: ; 0x0208C8E8
add r3, r0, #5
ldrb r2, [r3, r1]
add ip, r3, r1
cmp r2, #5
movhi r0, #1
bxhi lr
mvnlo r0, #0
bxlo lr
ldrb r2, [r0, #4]
add ip, ip, #1
add r3, r3, r2
cmp ip, r3
bhs _0208C938
_0208C91C:
ldrb r2, [ip]
cmp r2, #0
movne r0, #1
bxne lr
add ip, ip, #1
cmp ip, r3
blo _0208C91C
_0208C938:
sub r1, r1, #1
add r0, r0, r1
ldrb r0, [r0, #5]
tst r0, #1
movne r0, #1
mvneq r0, #0
bx lr
arm_func_end sub_0208C8E8
arm_func_start sub_0208C954
sub_0208C954: ; 0x0208C954
add r3, r0, #5
add r1, r3, r1
sub ip, r1, #1
mov r1, #0
_0208C964:
ldrb r2, [ip]
cmp r2, #9
addlo r0, r2, #1
strlob r0, [ip]
bxlo lr
cmp ip, r3
bne _0208C998
mov r1, #1
strb r1, [ip]
ldrsh r1, [r0, #2]
add r1, r1, #1
strh r1, [r0, #2]
bx lr
_0208C998:
strb r1, [ip], #-1
b _0208C964
arm_func_end sub_0208C954
arm_func_start sub_0208C9A0
sub_0208C9A0: ; 0x0208C9A0
bx lr
arm_func_end sub_0208C9A0
arm_func_start sub_0208C9A4
sub_0208C9A4: ; 0x0208C9A4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
cmp r4, #0
ldmleia sp!, {r3, r4, r5, pc}
ldrb r2, [r5, #4]
cmp r4, r2
ldmgeia sp!, {r3, r4, r5, pc}
bl sub_0208C8E8
strb r4, [r5, #4]
cmp r0, #0
ldmltia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl sub_0208C954
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0208C9A4
arm_func_start sub_0208C9E4
sub_0208C9E4: ; 0x0208C9E4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov r0, #0
mov r8, r2
strb r0, [sl]
mov sb, r1
cmp r8, #0
strb r0, [sl, #4]
cmpeq sb, #0
beq _0208CA70
mov r6, #0xa
mov fp, r0
mov r5, r0
mov r4, r0
_0208CA1C:
ldrb r1, [sl, #4]
mov r0, sb
mov r2, r6
add r3, r1, #1
mov r7, r1
strb r3, [sl, #4]
mov r1, r8
mov r3, fp
bl _ull_mod
add r1, sl, r7
strb r0, [r1, #5]
mov r0, sb
mov r1, r8
mov r2, #0xa
mov r3, #0
bl _ll_udiv
mov r8, r1
mov sb, r0
cmp r8, r5
cmpeq sb, r4
bne _0208CA1C
_0208CA70:
ldrb r0, [sl, #4]
add r2, sl, #5
add r0, r2, r0
sub r3, r0, #1
cmp r2, r3
bhs _0208CAA0
_0208CA88:
ldrb r0, [r3]
ldrb r1, [r2]
strb r0, [r2], #1
strb r1, [r3], #-1
cmp r2, r3
blo _0208CA88
_0208CAA0:
ldrb r0, [sl, #4]
sub r0, r0, #1
strh r0, [sl, #2]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0208C9E4
arm_func_start sub_0208CAB0
sub_0208CAB0: ; 0x0208CAB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x40
ldrb r6, [r1, #4]
ldrb r5, [r2, #4]
mov r4, #0
add r3, sp, #0
add r5, r6, r5
sub r5, r5, #1
add r3, r3, r5
add r6, r3, #1
mov r7, r6
strb r4, [r0]
cmp r5, #0
ble _0208CB78
add lr, r1, #5
add fp, r2, #5
_0208CAF0:
ldrb r3, [r2, #4]
sub sl, r3, #1
sub r3, r5, sl
subs sb, r3, #1
ldrb r3, [r1, #4]
movmi sb, #0
submi sl, r5, #1
add r8, sl, #1
sub r3, r3, sb
cmp r8, r3
movgt r8, r3
add sl, fp, sl
add sb, lr, sb
cmp r8, #0
ble _0208CB44
_0208CB2C:
ldrb ip, [sb], #1
ldrb r3, [sl], #-1
sub r8, r8, #1
cmp r8, #0
mla r4, ip, r3, r4
bgt _0208CB2C
_0208CB44:
ldr r3, _0208CC30 ; =0xCCCCCCCD
sub r5, r5, #1
umull r8, sb, r4, r3
mov sb, sb, lsr #3
cmp r5, #0
mov sl, #0xa
umull r8, sb, sl, sb
sub sb, r4, r8
strb sb, [r6, #-1]!
mov r8, r4
umull r3, r4, r8, r3
mov r4, r4, lsr #3
bgt _0208CAF0
_0208CB78:
ldrsh r3, [r1, #2]
ldrsh r1, [r2, #2]
cmp r4, #0
add r1, r3, r1
strh r1, [r0, #2]
beq _0208CBA0
strb r4, [r6, #-1]!
ldrsh r1, [r0, #2]
add r1, r1, #1
strh r1, [r0, #2]
_0208CBA0:
mov r3, #0
b _0208CBB8
_0208CBA8:
ldrb r2, [r6], #1
add r1, r0, r3
add r3, r3, #1
strb r2, [r1, #5]
_0208CBB8:
cmp r3, #0x20
bge _0208CBC8
cmp r6, r7
blo _0208CBA8
_0208CBC8:
cmp r6, r7
addhs sp, sp, #0x40
strb r3, [r0, #4]
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrb r1, [r6]
cmp r1, #5
addlo sp, sp, #0x40
ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
bne _0208CC20
add r2, r6, #1
cmp r2, r7
bhs _0208CC10
_0208CBF8:
ldrb r1, [r2]
cmp r1, #0
bne _0208CC20
add r2, r2, #1
cmp r2, r7
blo _0208CBF8
_0208CC10:
ldrb r1, [r6, #-1]
tst r1, #1
addeq sp, sp, #0x40
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208CC20:
ldrb r1, [r0, #4]
bl sub_0208C954
add sp, sp, #0x40
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0208CC30: .word 0xCCCCCCCD
arm_func_end sub_0208CAB0
arm_func_start sub_0208CC34
sub_0208CC34: ; 0x0208CC34
stmdb sp!, {r3, lr}
strh r2, [r0, #2]
mov ip, #0
strb ip, [r0]
b _0208CC5C
_0208CC48:
ldrsb r3, [r1], #1
add r2, r0, ip
add ip, ip, #1
sub r3, r3, #0x30
strb r3, [r2, #5]
_0208CC5C:
cmp ip, #0x20
bge _0208CC70
ldrsb r2, [r1]
cmp r2, #0
bne _0208CC48
_0208CC70:
strb ip, [r0, #4]
ldrsb r2, [r1]
cmp r2, #0
ldmeqia sp!, {r3, pc}
cmp r2, #5
ldmltia sp!, {r3, pc}
bgt _0208CCC4
ldrsb r2, [r1, #1]
add r1, r1, #1
cmp r2, #0
beq _0208CCB0
_0208CC9C:
cmp r2, #0x30
bne _0208CCC4
ldrsb r2, [r1, #1]!
cmp r2, #0
bne _0208CC9C
_0208CCB0:
sub r1, ip, #1
add r1, r0, r1
ldrb r1, [r1, #5]
tst r1, #1
ldmeqia sp!, {r3, pc}
_0208CCC4:
ldrb r1, [r0, #4]
bl sub_0208C954
ldmia sp!, {r3, pc}
arm_func_end sub_0208CC34
arm_func_start sub_0208CCD0
sub_0208CCD0: ; 0x0208CCD0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x4c
mov r4, r1
mvn r2, #0x34
mov r5, r0
cmp r4, r2
bgt _0208CD00
bge _0208CDCC
sub r0, r2, #0xb
cmp r4, r0
beq _0208CDB4
b _0208CF5C
_0208CD00:
add r1, r4, #0x20
cmp r1, #0x28
addls pc, pc, r1, lsl #2
b _0208CF5C
_0208CD10: ; jump table
b _0208CDE0 ; case 0
b _0208CF5C ; case 1
b _0208CF5C ; case 2
b _0208CF5C ; case 3
b _0208CF5C ; case 4
b _0208CF5C ; case 5
b _0208CF5C ; case 6
b _0208CF5C ; case 7
b _0208CF5C ; case 8
b _0208CF5C ; case 9
b _0208CF5C ; case 10
b _0208CF5C ; case 11
b _0208CF5C ; case 12
b _0208CF5C ; case 13
b _0208CF5C ; case 14
b _0208CF5C ; case 15
b _0208CDF4 ; case 16
b _0208CF5C ; case 17
b _0208CF5C ; case 18
b _0208CF5C ; case 19
b _0208CF5C ; case 20
b _0208CF5C ; case 21
b _0208CF5C ; case 22
b _0208CF5C ; case 23
b _0208CE08 ; case 24
b _0208CE1C ; case 25
b _0208CE30 ; case 26
b _0208CE44 ; case 27
b _0208CE58 ; case 28
b _0208CE6C ; case 29
b _0208CE80 ; case 30
b _0208CE94 ; case 31
b _0208CEA8 ; case 32
b _0208CEBC ; case 33
b _0208CED0 ; case 34
b _0208CEE4 ; case 35
b _0208CEF8 ; case 36
b _0208CF0C ; case 37
b _0208CF20 ; case 38
b _0208CF34 ; case 39
b _0208CF48 ; case 40
_0208CDB4:
ldr r1, _0208D000 ; =_020B3268
mov r0, r5
mvn r2, #0x13
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CDCC:
ldr r1, _0208D004 ; =_020B3298
add r2, r2, #0x25
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CDE0:
ldr r1, _0208D008 ; =_020B32C0
add r2, r2, #0x2b
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CDF4:
ldr r1, _0208D00C ; =_020B32D8
add r2, r2, #0x30
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE08:
ldr r1, _0208D010 ; =_020B32E8
add r2, r2, #0x32
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE1C:
ldr r1, _0208D014 ; =_020B32F0
add r2, r2, #0x32
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE30:
ldr r1, _0208D018 ; =_020B32F8
add r2, r2, #0x33
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE44:
ldr r1, _0208D01C ; =_020B3300
add r2, r2, #0x33
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE58:
ldr r1, _0208D020 ; =_020B3308
add r2, r2, #0x33
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE6C:
ldr r1, _0208D024 ; =_020B330C
add r2, r2, #0x34
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE80:
ldr r1, _0208D028 ; =_020B3310
add r2, r2, #0x34
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CE94:
ldr r1, _0208D02C ; =_020B3314
add r2, r2, #0x34
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CEA8:
ldr r1, _0208D030 ; =_020B3318
mov r2, #0
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CEBC:
ldr r1, _0208D034 ; =_020B331C
mov r2, #0
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CED0:
ldr r1, _0208D038 ; =_020B3320
mov r2, #0
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CEE4:
ldr r1, _0208D03C ; =_020B3324
mov r2, #0
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CEF8:
ldr r1, _0208D040 ; =_020B3328
mov r2, #1
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CF0C:
ldr r1, _0208D044 ; =_020B332C
mov r2, #1
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CF20:
ldr r1, _0208D048 ; =_020B3330
mov r2, #1
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CF34:
ldr r1, _0208D04C ; =_020B3334
mov r2, #2
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CF48:
ldr r1, _0208D050 ; =_020B3338
mov r2, #2
bl sub_0208CC34
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_0208CF5C:
and r0, r4, #0x80000000
add r1, r4, r0, lsr #31
add r0, sp, #0x26
mov r1, r1, asr #1
bl sub_0208CCD0
add r1, sp, #0x26
mov r0, r5
mov r2, r1
bl sub_0208CAB0
tst r4, #1
addeq sp, sp, #0x4c
ldmeqia sp!, {r4, r5, pc}
add r3, sp, #0
mov ip, r5
mov r2, #9
_0208CF98:
ldrh r1, [ip]
ldrh r0, [ip, #2]
add ip, ip, #4
subs r2, r2, #1
strh r1, [r3]
strh r0, [r3, #2]
add r3, r3, #4
bne _0208CF98
ldrh r0, [ip]
cmp r4, #0
strh r0, [r3]
add r0, sp, #0x26
ble _0208CFDC
ldr r1, _0208D034 ; =_020B331C
mov r2, #0
bl sub_0208CC34
b _0208CFE8
_0208CFDC:
ldr r1, _0208D02C ; =_020B3314
mvn r2, #0
bl sub_0208CC34
_0208CFE8:
add r1, sp, #0
add r2, sp, #0x26
mov r0, r5
bl sub_0208CAB0
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0208D000: .word _020B3268
_0208D004: .word _020B3298
_0208D008: .word _020B32C0
_0208D00C: .word _020B32D8
_0208D010: .word _020B32E8
_0208D014: .word _020B32F0
_0208D018: .word _020B32F8
_0208D01C: .word _020B3300
_0208D020: .word _020B3308
_0208D024: .word _020B330C
_0208D028: .word _020B3310
_0208D02C: .word _020B3314
_0208D030: .word _020B3318
_0208D034: .word _020B331C
_0208D038: .word _020B3320
_0208D03C: .word _020B3324
_0208D040: .word _020B3328
_0208D044: .word _020B332C
_0208D048: .word _020B3330
_0208D04C: .word _020B3334
_0208D050: .word _020B3338
arm_func_end sub_0208CCD0
arm_func_start sub_0208D054
sub_0208D054: ; 0x0208D054
stmdb sp!, {r4, lr}
ldrb r3, [r0, #5]
cmp r3, #0
bne _0208D078
ldrb r0, [r1, #5]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r4, pc}
_0208D078:
ldrb r2, [r1, #5]
cmp r2, #0
bne _0208D094
cmp r3, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r4, pc}
_0208D094:
ldrsh r3, [r0, #2]
ldrsh r2, [r1, #2]
cmp r3, r2
bne _0208D12C
ldrb r4, [r0, #4]
ldrb r2, [r1, #4]
mov ip, #0
mov lr, r4
cmp r4, r2
movgt lr, r2
cmp lr, #0
ble _0208D0EC
_0208D0C4:
add r3, r0, ip
add r2, r1, ip
ldrb r3, [r3, #5]
ldrb r2, [r2, #5]
cmp r3, r2
movne r0, #0
ldmneia sp!, {r4, pc}
add ip, ip, #1
cmp ip, lr
blt _0208D0C4
_0208D0EC:
cmp lr, r4
moveq r0, r1
ldrb r1, [r0, #4]
cmp ip, r1
bge _0208D124
_0208D100:
add r1, r0, ip
ldrb r1, [r1, #5]
cmp r1, #0
movne r0, #0
ldmneia sp!, {r4, pc}
ldrb r1, [r0, #4]
add ip, ip, #1
cmp ip, r1
blt _0208D100
_0208D124:
mov r0, #1
ldmia sp!, {r4, pc}
_0208D12C:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0208D054
arm_func_start sub_0208D134
sub_0208D134: ; 0x0208D134
stmdb sp!, {r3, r4, r5, lr}
ldrb r2, [r0, #5]
cmp r2, #0
bne _0208D158
ldrb r0, [r1, #5]
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0208D158:
ldrb r2, [r1, #5]
cmp r2, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrsh r3, [r1, #2]
ldrsh r2, [r0, #2]
cmp r2, r3
bne _0208D208
ldrb r5, [r0, #4]
ldrb r4, [r1, #4]
mov ip, #0
mov lr, r5
cmp r5, r4
movgt lr, r4
cmp lr, #0
ble _0208D1CC
_0208D198:
add r3, r1, ip
add r2, r0, ip
ldrb r3, [r3, #5]
ldrb r2, [r2, #5]
cmp r2, r3
movlo r0, #1
ldmloia sp!, {r3, r4, r5, pc}
cmp r3, r2
movlo r0, #0
ldmloia sp!, {r3, r4, r5, pc}
add ip, ip, #1
cmp ip, lr
blt _0208D198
_0208D1CC:
cmp lr, r5
bne _0208D200
cmp ip, r4
bge _0208D200
_0208D1DC:
add r0, r1, ip
ldrb r0, [r0, #5]
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, r4, r5, pc}
ldrb r0, [r1, #4]
add ip, ip, #1
cmp ip, r0
blt _0208D1DC
_0208D200:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0208D208:
movlt r0, #1
movge r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0208D134
arm_func_start sub_0208D214
sub_0208D214: ; 0x0208D214
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, #9
_0208D220:
ldrh r4, [r1]
ldrh r3, [r1, #2]
add r1, r1, #4
subs r5, r5, #1
strh r4, [r6]
strh r3, [r6, #2]
add r6, r6, #4
bne _0208D220
ldrh r1, [r1]
strh r1, [r6]
ldrb r1, [r2, #5]
cmp r1, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrb r7, [r0, #4]
ldrb r3, [r2, #4]
ldrsh r4, [r0, #2]
mov r1, r7
cmp r7, r3
movlt r1, r3
ldrsh r3, [r2, #2]
sub r6, r4, r3
add r1, r1, r6
cmp r1, #0x20
movgt r1, #0x20
cmp r7, r1
bge _0208D2AC
mov r4, #0
_0208D28C:
ldrb r5, [r0, #4]
add r3, r0, r7
add r5, r5, #1
strb r5, [r0, #4]
strb r4, [r3, #5]
ldrb r7, [r0, #4]
cmp r7, r1
blt _0208D28C
_0208D2AC:
ldrb r4, [r2, #4]
add r3, r0, #5
add ip, r3, r1
add r4, r4, r6
cmp r4, r1
addlt ip, r3, r4
sub r4, ip, r3
add r1, r2, #5
sub r4, r4, r6
add lr, r1, r4
mov r4, lr
b _0208D340
_0208D2DC:
ldrb r7, [ip, #-1]!
ldrb r5, [lr, #-1]!
cmp r7, r5
bhs _0208D330
ldrb r7, [ip, #-1]
sub r5, ip, #1
cmp r7, #0
bne _0208D308
_0208D2FC:
ldrb r7, [r5, #-1]!
cmp r7, #0
beq _0208D2FC
_0208D308:
cmp r5, ip
beq _0208D330
_0208D310:
ldrb r7, [r5]
sub r7, r7, #1
strb r7, [r5]
ldrb r7, [r5, #1]!
cmp r5, ip
add r7, r7, #0xa
strb r7, [r5]
bne _0208D310
_0208D330:
ldrb r7, [ip]
ldrb r5, [lr]
sub r5, r7, r5
strb r5, [ip]
_0208D340:
cmp ip, r3
cmphi lr, r1
bhi _0208D2DC
ldrb r5, [r2, #4]
sub lr, r4, r1
cmp lr, r5
bge _0208D41C
ldrb r1, [r4]
mov r7, #0
cmp r1, #5
movlo r7, #1
blo _0208D3B8
bne _0208D3B8
add r1, r2, #5
add r2, r1, r5
add r4, r4, #1
cmp r4, r2
bhs _0208D3A0
_0208D388:
ldrb r1, [r4]
cmp r1, #0
bne _0208D41C
add r4, r4, #1
cmp r4, r2
blo _0208D388
_0208D3A0:
add r1, r3, lr
add r2, r1, r6
ldrb r1, [r2, #-1]
sub ip, r2, #1
tst r1, #1
movne r7, #1
_0208D3B8:
cmp r7, #0
beq _0208D41C
ldrb r1, [ip]
cmp r1, #1
bhs _0208D410
ldrb r1, [ip, #-1]
sub r2, ip, #1
cmp r1, #0
bne _0208D3E8
_0208D3DC:
ldrb r1, [r2, #-1]!
cmp r1, #0
beq _0208D3DC
_0208D3E8:
cmp r2, ip
beq _0208D410
_0208D3F0:
ldrb r1, [r2]
sub r1, r1, #1
strb r1, [r2]
ldrb r1, [r2, #1]!
cmp r2, ip
add r1, r1, #0xa
strb r1, [r2]
bne _0208D3F0
_0208D410:
ldrb r1, [ip]
sub r1, r1, #1
strb r1, [ip]
_0208D41C:
ldrb r1, [r3]
mov r5, r3
cmp r1, #0
bne _0208D438
_0208D42C:
ldrb r1, [r5, #1]!
cmp r1, #0
beq _0208D42C
_0208D438:
cmp r5, r3
bls _0208D480
ldrsh r1, [r0, #2]
sub r2, r5, r3
and r4, r2, #0xff
sub r1, r1, r4
strh r1, [r0, #2]
ldrb r1, [r0, #4]
add r2, r3, r1
cmp r5, r2
bhs _0208D474
_0208D464:
ldrb r1, [r5], #1
cmp r5, r2
strb r1, [r3], #1
blo _0208D464
_0208D474:
ldrb r1, [r0, #4]
sub r1, r1, r4
strb r1, [r0, #4]
_0208D480:
ldrb r1, [r0, #4]
add r2, r0, #5
add r3, r2, r1
cmp r3, r2
bls _0208D4A8
_0208D494:
ldrb r1, [r3, #-1]!
cmp r1, #0
bne _0208D4A8
cmp r3, r2
bhi _0208D494
_0208D4A8:
sub r1, r3, r2
add r1, r1, #1
strb r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0208D214
arm_func_start sub_0208D4B8
sub_0208D4B8: ; 0x0208D4B8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x58
mov r8, r1
mov r6, r2
mov r7, r0
mov r0, r8
mov r1, r6
bl sub_0208DD98
cmp r0, #0
movne r1, #1
moveq r1, #0
mov r4, r1, lsl #0x18
mov r0, #0
mov r1, r0
mov r2, r8
mov r3, r6
mov r5, r4, asr #0x18
bl _deq
bne _0208D524
strb r5, [r7]
mov r1, #0
strh r1, [r7, #2]
mov r0, #1
strb r0, [r7, #4]
add sp, sp, #0x58
strb r1, [r7, #5]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0208D524:
mov r0, r8
mov r1, r6
bl sub_0208DDAC
cmp r0, #2
bgt _0208D570
strb r5, [r7]
mov r2, #0
strh r2, [r7, #2]
mov r2, #1
mov r0, r8
mov r1, r6
strb r2, [r7, #4]
bl sub_0208DDAC
cmp r0, #1
moveq r0, #0x4e
movne r0, #0x49
add sp, sp, #0x58
strb r0, [r7, #5]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0208D570:
cmp r5, #0
beq _0208D594
mov r0, #0
mov r1, r0
mov r2, r8
mov r3, r6
bl _dsub
mov r8, r0
mov r6, r1
_0208D594:
add r2, sp, #8
mov r0, r8
mov r1, r6
bl sub_0208C5D4
mov r4, r0
mov r6, r1
orr ip, r4, #0
rsbs r2, ip, #0
orr r3, r6, #0x100000
rsc r1, r3, #0
mov r0, #0
and r3, r3, r1
sub r1, r0, #1
and ip, ip, r2
mov r2, r1
adds r0, ip, r1
adc r1, r3, r2
str r4, [sp]
str r6, [sp, #4]
bl sub_0208DD04
rsb r8, r0, #0x35
ldr r1, [sp, #8]
add r0, sp, #0xc
sub r1, r1, r8
bl sub_0208CCD0
mov r0, r4
mov r1, r6
mov r2, r8
bl sub_0208C690
bl _ll_ufrom_d
mov r2, r1
mov r1, r0
add r0, sp, #0x32
bl sub_0208C9E4
mov r0, r7
add r1, sp, #0x32
add r2, sp, #0xc
bl sub_0208CAB0
strb r5, [r7]
add sp, sp, #0x58
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0208D4B8
arm_func_start sub_0208D638
sub_0208D638: ; 0x0208D638
stmdb sp!, {r3, r4, r5, lr}
mov r4, r3
ldrsh r5, [r0, #2]
mov r0, r4
bl sub_0208D4B8
ldrb r0, [r4, #5]
cmp r0, #9
ldmhiia sp!, {r3, r4, r5, pc}
cmp r5, #0x20
movgt r5, #0x20
mov r0, r4
mov r1, r5
bl sub_0208C9A4
ldrb r0, [r4, #4]
cmp r0, r5
bge _0208D69C
mov r1, #0
_0208D67C:
ldrb r2, [r4, #4]
add r0, r4, r0
add r2, r2, #1
strb r2, [r4, #4]
strb r1, [r0, #5]
ldrb r0, [r4, #4]
cmp r0, r5
blt _0208D67C
_0208D69C:
ldrsh r1, [r4, #2]
sub r0, r0, #1
mov r2, #0
sub r0, r1, r0
strh r0, [r4, #2]
ldrb r0, [r4, #4]
cmp r0, #0
ldmleia sp!, {r3, r4, r5, pc}
_0208D6BC:
add r1, r4, r2
ldrb r0, [r1, #5]
add r2, r2, #1
add r0, r0, #0x30
strb r0, [r1, #5]
ldrb r0, [r4, #4]
cmp r2, r0
blt _0208D6BC
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0208D638
arm_func_start sub_0208D6E0
sub_0208D6E0: ; 0x0208D6E0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xfc
mov r4, r0
ldrb r0, [r4, #4]
cmp r0, #0
bne _0208D720
ldrsb r0, [r4]
mov r2, #0
cmp r0, #0
ldreq r3, _0208DCE4 ; =0x3FF00000
mov r0, #0
ldrne r3, _0208DCE8 ; =0xBFF00000
mov r1, r0
bl sub_0208C58C
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208D720:
ldrb r0, [r4, #5]
cmp r0, #0x30
beq _0208D740
cmp r0, #0x49
beq _0208D768
cmp r0, #0x4e
beq _0208D79C
b _0208D7E4
_0208D740:
ldrsb r0, [r4]
mov r2, #0
cmp r0, #0
ldreq r3, _0208DCE4 ; =0x3FF00000
mov r0, #0
ldrne r3, _0208DCE8 ; =0xBFF00000
mov r1, r0
bl sub_0208C58C
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208D768:
ldrsb r0, [r4]
mov r5, #0
cmp r0, #0
ldreq r4, _0208DCE4 ; =0x3FF00000
ldr r0, _0208DCEC ; =_020B2FB8
ldrne r4, _0208DCE8 ; =0xBFF00000
ldr r0, [r0]
bl _f2d
mov r2, r5
mov r3, r4
bl sub_0208C58C
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208D79C:
ldr r1, _0208DCF0 ; =0x7FF00000
add r3, sp, #0x10
mov r2, #0
str r2, [r3]
str r1, [r3, #4]
ldrsb r0, [r4]
cmp r0, #0
beq _0208D7CC
orr r0, r1, #0x80000000
orr r1, r2, r2
str r1, [r3]
str r0, [r3, #4]
_0208D7CC:
ldmia r3, {r0, r1}
orr r0, r0, #0
orr r1, r1, #0x80000
stmia r3, {r0, r1}
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208D7E4:
add r3, sp, #0xd6
mov r5, r4
mov r2, #9
_0208D7F0:
ldrh r1, [r5]
ldrh r0, [r5, #2]
add r5, r5, #4
subs r2, r2, #1
strh r1, [r3]
strh r0, [r3, #2]
add r3, r3, #4
bne _0208D7F0
ldrh r0, [r5]
add r1, sp, #0xdb
strh r0, [r3]
ldrb r0, [sp, #0xda]
add r5, r1, r0
cmp r1, r5
bhs _0208D840
_0208D82C:
ldrb r0, [r1]
sub r0, r0, #0x30
strb r0, [r1], #1
cmp r1, r5
blo _0208D82C
_0208D840:
ldrb r1, [sp, #0xda]
ldrsh r2, [sp, #0xd8]
add r0, sp, #0xb0
sub r1, r1, #1
add r1, r2, r1
strh r1, [sp, #0xd8]
ldr r1, _0208DCF4 ; =_020B333C
mov r2, #0x134
ldrsh fp, [sp, #0xd8]
bl sub_0208CC34
add r0, sp, #0xb0
add r1, sp, #0xd6
bl sub_0208D134
cmp r0, #0
beq _0208D8B0
ldrsb r0, [r4]
mov r5, #0
cmp r0, #0
ldreq r4, _0208DCE4 ; =0x3FF00000
ldr r0, _0208DCEC ; =_020B2FB8
ldrne r4, _0208DCE8 ; =0xBFF00000
ldr r0, [r0]
bl _f2d
mov r2, r5
mov r3, r4
bl sub_0208C58C
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0208D8B0:
add r1, sp, #0xdb
ldrb r0, [r1]
add r8, r1, #1
bl _dfltu
str r0, [sp, #8]
str r1, [sp, #0xc]
cmp r8, r5
bhs _0208D988
_0208D8D0:
sub r0, r5, r8
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
adds r7, r1, r0, ror #29
moveq r7, #8
mov r6, #0
mov r2, #0
cmp r7, #0
ble _0208D90C
mov r0, #0xa
_0208D8F8:
ldrb r1, [r8], #1
add r2, r2, #1
cmp r2, r7
mla r6, r0, r6, r1
blt _0208D8F8
_0208D90C:
ldr r0, _0208DCF8 ; =_020B3228
ldr r1, [sp, #0xc]
add r3, r0, r7, lsl #3
ldr r2, [r3, #-8]
ldr r0, [sp, #8]
ldr r3, [r3, #-4]
bl _dmul
mov r4, r0
mov sb, r1
mov r0, r6
bl _dfltu
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, sb
bl _dadd
cmp r6, #0
mov r6, r0
mov sl, r1
beq _0208D974
mov r0, r4
mov r1, sb
mov r2, r6
mov r3, sl
bl _deq
beq _0208D988
_0208D974:
str r6, [sp, #8]
str sl, [sp, #0xc]
cmp r8, r5
sub fp, fp, r7
blo _0208D8D0
_0208D988:
cmp fp, #0
bge _0208D9CC
rsb r0, fp, #0
bl _dflt
mov r3, r1
mov r2, r0
ldr r1, _0208DCFC ; =0x40140000
mov r0, #0
bl sub_0208C8DC
mov r2, r0
mov r3, r1
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
bl _ddiv
str r0, [sp, #8]
str r1, [sp, #0xc]
b _0208DA04
_0208D9CC:
mov r0, fp
bl _dflt
mov r3, r1
mov r2, r0
ldr r1, _0208DCFC ; =0x40140000
mov r0, #0
bl sub_0208C8DC
mov r2, r0
mov r3, r1
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
bl _dmul
str r0, [sp, #8]
str r1, [sp, #0xc]
_0208DA04:
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
mov r2, fp
bl sub_0208C690
str r0, [sp, #8]
str r1, [sp, #0xc]
bl sub_0208DDAC
cmp r0, #2
bne _0208DA38
ldr r0, _0208DD00 ; =0x7FEFFFFF
mvn r1, #0
str r1, [sp, #8]
str r0, [sp, #0xc]
_0208DA38:
ldr r1, [sp, #8]
ldr r2, [sp, #0xc]
add r0, sp, #0x8a
add r4, sp, #0
mov r5, #0
bl sub_0208D4B8
add r0, sp, #0x8a
add r1, sp, #0xd6
bl sub_0208D054
cmp r0, #0
bne _0208DCAC
add r0, sp, #0x8a
add r1, sp, #0xd6
bl sub_0208D134
cmp r0, #0
movne r5, #1
ldr r1, [sp, #8]
ldr r0, [sp, #0xc]
cmp r5, #0
moveq r6, #1
str r1, [sp]
str r0, [sp, #4]
movne r6, #0
_0208DA94:
cmp r6, #0
bne _0208DABC
ldmia r4, {r0, r1}
adds r0, r0, #1
adc r1, r1, #0
stmia r4, {r0, r1}
bl sub_0208DDAC
cmp r0, #2
beq _0208DCAC
b _0208DAD4
_0208DABC:
ldr r1, [r4]
ldr r0, [r4, #4]
subs r1, r1, #1
sbc r0, r0, #0
str r1, [r4]
str r0, [r4, #4]
_0208DAD4:
ldr r1, [sp]
ldr r2, [sp, #4]
add r0, sp, #0x64
bl sub_0208D4B8
cmp r5, #0
beq _0208DB00
add r0, sp, #0x64
add r1, sp, #0xd6
bl sub_0208D134
cmp r0, #0
beq _0208DC24
_0208DB00:
cmp r5, #0
bne _0208DBDC
add r0, sp, #0xd6
add r1, sp, #0x64
bl sub_0208D134
cmp r0, #0
bne _0208DBDC
add r3, sp, #0x8a
add r5, sp, #0x3e
mov r2, #9
_0208DB28:
ldrh r1, [r3]
ldrh r0, [r3, #2]
add r3, r3, #4
strh r1, [r5]
strh r0, [r5, #2]
add r5, r5, #4
subs r2, r2, #1
bne _0208DB28
ldrh r0, [r3]
add r3, sp, #0x64
add r4, sp, #0x8a
strh r0, [r5]
mov r2, #9
_0208DB5C:
ldrh r1, [r3]
ldrh r0, [r3, #2]
add r3, r3, #4
strh r1, [r4]
strh r0, [r4, #2]
add r4, r4, #4
subs r2, r2, #1
bne _0208DB5C
ldrh r0, [r3]
add r3, sp, #0x3e
add r5, sp, #0x64
strh r0, [r4]
mov r2, #9
_0208DB90:
ldrh r1, [r3]
ldrh r0, [r3, #2]
add r3, r3, #4
strh r1, [r5]
strh r0, [r5, #2]
add r5, r5, #4
subs r2, r2, #1
bne _0208DB90
ldrh r4, [r3]
ldr r3, [sp, #8]
ldr r1, [sp]
ldr r2, [sp, #0xc]
ldr r0, [sp, #4]
strh r4, [r5]
str r1, [sp, #8]
str r0, [sp, #0xc]
str r3, [sp]
str r2, [sp, #4]
b _0208DC24
_0208DBDC:
add r7, sp, #0x64
add r3, sp, #0x8a
mov r2, #9
_0208DBE8:
ldrh r1, [r7]
ldrh r0, [r7, #2]
add r7, r7, #4
strh r1, [r3]
strh r0, [r3, #2]
add r3, r3, #4
subs r2, r2, #1
bne _0208DBE8
ldrh r2, [r7]
ldr r1, [sp]
ldr r0, [sp, #4]
strh r2, [r3]
str r1, [sp, #8]
str r0, [sp, #0xc]
b _0208DA94
_0208DC24:
add r0, sp, #0x3e
add r1, sp, #0xd6
add r2, sp, #0x8a
bl sub_0208D214
add r0, sp, #0x18
add r1, sp, #0x64
add r2, sp, #0xd6
bl sub_0208D214
add r0, sp, #0x3e
add r1, sp, #0x18
bl sub_0208D054
cmp r0, #0
beq _0208DC88
ldr r1, [sp, #8]
ldr r0, [sp, #0xc]
and r1, r1, #1
and r0, r0, #0
cmp r0, #0
cmpeq r1, #0
beq _0208DCAC
ldr r1, [sp]
ldr r0, [sp, #4]
str r1, [sp, #8]
str r0, [sp, #0xc]
b _0208DCAC
_0208DC88:
add r0, sp, #0x3e
add r1, sp, #0x18
bl sub_0208D134
cmp r0, #0
bne _0208DCAC
ldr r1, [sp]
ldr r0, [sp, #4]
str r1, [sp, #8]
str r0, [sp, #0xc]
_0208DCAC:
ldrsb r0, [sp, #0xd6]
cmp r0, #0
beq _0208DCD4
mov r0, #0
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
mov r1, r0
bl _dsub
str r0, [sp, #8]
str r1, [sp, #0xc]
_0208DCD4:
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
add sp, sp, #0xfc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0208DCE4: .word 0x3FF00000
_0208DCE8: .word 0xBFF00000
_0208DCEC: .word _020B2FB8
_0208DCF0: .word 0x7FF00000
_0208DCF4: .word _020B333C
_0208DCF8: .word _020B3228
_0208DCFC: .word 0x40140000
_0208DD00: .word 0x7FEFFFFF
arm_func_end sub_0208D6E0
arm_func_start sub_0208DD04
sub_0208DD04: ; 0x0208DD04
mov r3, r0, lsr #1
ldr r2, _0208DD8C ; =0x55555555
orr r3, r3, r1, lsl #31
and r3, r3, r2
subs ip, r0, r3
and r2, r2, r1, lsr #1
ldr r0, _0208DD90 ; =0x33333333
sbc r3, r1, r2
mov r1, ip, lsr #2
orr r1, r1, r3, lsl #30
and r2, ip, r0
and r1, r1, r0
adds r2, r2, r1
and r1, r3, r0
and r0, r0, r3, lsr #2
adc r1, r1, r0
mov r0, r2, lsr #4
orr r0, r0, r1, lsl #28
adds r2, r2, r0
ldr r0, _0208DD94 ; =0x0F0F0F0F
adc r1, r1, r1, lsr #4
and r3, r2, r0
and r2, r1, r0
mov r0, r3, lsr #8
orr r0, r0, r2, lsl #24
adds r1, r3, r0
adc r2, r2, r2, lsr #8
mov r0, r1, lsr #0x10
orr r0, r0, r2, lsl #16
adds r1, r1, r0
adc r0, r2, r2, lsr #16
adds r0, r1, r0
and r0, r0, #0xff
bx lr
.align 2, 0
_0208DD8C: .word 0x55555555
_0208DD90: .word 0x33333333
_0208DD94: .word 0x0F0F0F0F
arm_func_end sub_0208DD04
arm_func_start sub_0208DD98
sub_0208DD98: ; 0x0208DD98
stmdb sp!, {r0, r1, r2, r3}
ldr r0, [sp, #4]
and r0, r0, #0x80000000
add sp, sp, #0x10
bx lr
arm_func_end sub_0208DD98
arm_func_start sub_0208DDAC
sub_0208DDAC: ; 0x0208DDAC
stmdb sp!, {r0, r1, r2, r3}
ldr r2, [sp, #4]
ldr r0, _0208DE14 ; =0x7FF00000
ands r1, r2, r0
beq _0208DDE8
cmp r1, r0
bne _0208DE08
ldr r0, _0208DE18 ; =0x000FFFFF
tst r2, r0
ldreq r0, [sp]
add sp, sp, #0x10
cmpeq r0, #0
movne r0, #1
moveq r0, #2
bx lr
_0208DDE8:
ldr r0, _0208DE18 ; =0x000FFFFF
tst r2, r0
ldreq r0, [sp]
add sp, sp, #0x10
cmpeq r0, #0
movne r0, #5
moveq r0, #3
bx lr
_0208DE08:
mov r0, #4
add sp, sp, #0x10
bx lr
.align 2, 0
_0208DE14: .word 0x7FF00000
_0208DE18: .word 0x000FFFFF
arm_func_end sub_0208DDAC
arm_func_start sub_0208DE1C
sub_0208DE1C: ; 0x0208DE1C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r2
add r2, sp, #0
bl sub_0208C5D4
ldr r2, [sp]
add r2, r2, r4
str r2, [sp]
bl sub_0208C690
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_0208DE1C
arm_func_start sub_0208DE48
sub_0208DE48: ; 0x0208DE48
stmdb sp!, {r3, lr}
ldr r3, _0208DEAC ; =_020AECB0
_0208DE50:
ldrb r2, [r0], #1
cmp r2, #0
blt _0208DE68
cmp r2, #0x80
bge _0208DE68
ldrb r2, [r3, r2]
_0208DE68:
ldrb lr, [r1], #1
and ip, r2, #0xff
cmp lr, #0
blt _0208DE84
cmp lr, #0x80
bge _0208DE84
ldrb lr, [r3, lr]
_0208DE84:
and r2, lr, #0xff
cmp ip, r2
mvnlo r0, #0
ldmloia sp!, {r3, pc}
movhi r0, #1
ldmhiia sp!, {r3, pc}
cmp ip, #0
bne _0208DE50
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0208DEAC: .word _020AECB0
arm_func_end sub_0208DE48
arm_func_start sub_0208DEB0
sub_0208DEB0: ; 0x0208DEB0
ldr ip, _0208DEB8 ; =sub_02086C64
bx ip
.align 2, 0
_0208DEB8: .word sub_02086C64
arm_func_end sub_0208DEB0
arm_func_start sub_0208DEBC
sub_0208DEBC: ; 0x0208DEBC
ldr ip, _0208DEC4 ; =sub_0208DE48
bx ip
.align 2, 0
_0208DEC4: .word sub_0208DE48
arm_func_end sub_0208DEBC
; FP_fastI_v5t_LE.a
; Other names: _d_add
arm_func_start _dadd
_dadd: ; 0x0208DEC8
stmdb sp!, {r4, lr}
eors ip, r1, r3
eormi r3, r3, #0x80000000
bmi _0208E914
__dadd_start:
subs ip, r0, r2
sbcs lr, r1, r3
bhs _0208DEF4
adds r2, r2, ip
adc r3, r3, lr
subs r0, r0, ip
sbc r1, r1, lr
_0208DEF4:
mov lr, #0x80000000
mov ip, r1, lsr #0x14
orr r1, lr, r1, lsl #11
orr r1, r1, r0, lsr #21
mov r0, r0, lsl #0xb
movs r4, ip, lsl #0x15
cmnne r4, #0x200000
beq _0208DFF0
mov r4, r3, lsr #0x14
orr r3, lr, r3, lsl #11
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs lr, r4, lsl #0x15
beq _0208E038
_0208DF2C:
subs r4, ip, r4
beq _0208DF84
cmp r4, #0x20
ble _0208DF68
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, #1
adds r0, r0, r2
adcs r1, r1, #0
blo _0208DFAC
b _0208DF90
_0208DF68:
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, #1
_0208DF84:
adds r0, r0, r2
adcs r1, r1, r3
blo _0208DFAC
_0208DF90:
add ip, ip, #1
and r4, r0, #1
movs r1, r1, rrx
orr r0, r4, r0, rrx
mov lr, ip, lsl #0x15
cmn lr, #0x200000
beq _0208E1BC
_0208DFAC:
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, ip, lsl #20
tst r2, #0x80000000
ldmeqia sp!, {r4, lr}
bxeq lr
movs r2, r2, lsl #1
andeqs r2, r0, #1
ldmeqia sp!, {r4, lr}
bxeq lr
adds r0, r0, #1
adc r1, r1, #0
ldmia sp!, {r4, lr}
bx lr
_0208DFF0:
cmp ip, #0x800
movge lr, #0x80000000
movlt lr, #0
bics ip, ip, #0x800
beq _0208E05C
orrs r4, r0, r1, lsl #1
bne _0208E198
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
beq _0208E184
cmn r4, #0x200000
bne _0208E184
orrs r4, r2, r3, lsl #1
beq _0208E184
b _0208E198
_0208E038:
cmp r4, #0x800
movge lr, #0x80000000
movlt lr, #0
bic ip, ip, #0x800
bics r4, r4, #0x800
beq _0208E0C8
orrs r4, r2, r3, lsl #1
bne _0208E198
b _0208E184
_0208E05C:
orrs r4, r0, r1, lsl #1
beq _0208E09C
mov ip, #1
bic r1, r1, #0x80000000
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
cmnne r4, #0x200000
mov r4, r4, lsr #0x15
orr r4, r4, lr, lsr #20
beq _0208E038
orr r3, r3, #0x80000000
orr ip, ip, lr, lsr #20
b _0208DF2C
_0208E09C:
mov ip, r3, lsr #0x14
mov r1, r3, lsl #0xb
orr r1, r1, r2, lsr #21
mov r0, r2, lsl #0xb
movs r4, ip, lsl #0x15
beq _0208E150
cmn r4, #0x200000
bne _0208E150
orrs r4, r0, r1, lsl #1
beq _0208E184
b _0208E19C
_0208E0C8:
orrs r4, r2, r3, lsl #1
beq _0208E160
mov r4, #1
bic r3, r3, #0x80000000
cmp r1, #0
bpl _0208E0EC
orr ip, ip, lr, lsr #20
orr r4, r4, lr, lsr #20
b _0208DF2C
_0208E0EC:
adds r0, r0, r2
adcs r1, r1, r3
blo _0208E10C
add ip, ip, #1
and r4, r0, #1
movs r1, r1, rrx
mov r0, r0, rrx
orr r0, r0, r4
_0208E10C:
cmp r1, #0
subges ip, ip, #1
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
orr r1, lr, r1, lsr #12
orr r1, r1, ip, lsl #20
ldmeqia sp!, {r4, lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4, lr}
bxeq lr
movs r2, r2, lsl #1
andeqs r2, r0, #1
ldmeqia sp!, {r4, lr}
bxeq lr
_0208E150:
mov r1, r3
mov r0, r2
ldmia sp!, {r4, lr}
bx lr
_0208E160:
cmp r1, #0
subges ip, ip, #1
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
orr r1, lr, r1, lsr #12
orr r1, r1, ip, lsl #20
ldmia sp!, {r4, lr}
bx lr
_0208E184:
ldr r1, _0208E1DC ; =0x7FF00000
orr r1, lr, r1
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
_0208E198:
mov r1, r3
_0208E19C:
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, lr}
bx lr
_0208E1AC:
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, lr}
bx lr
_0208E1BC:
cmp ip, #0x800
movge lr, #0x80000000
movlt lr, #0
ldr r1, _0208E1DC ; =0x7FF00000
orr r1, lr, r1
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0208E1DC: .word 0x7FF00000
arm_func_end _dadd
; Other names: _d_dtof, _f_qtof
arm_func_start _d2f
_d2f: ; 0x0208E1E0
and r2, r1, #0x80000000
mov ip, r1, lsr #0x14
bics ip, ip, #0x800
beq _0208E258
mov r3, ip, lsl #0x15
cmn r3, #0x200000
bhs _0208E23C
subs ip, ip, #0x380
bls _0208E268
cmp ip, #0xff
bge _0208E2D8
mov r1, r1, lsl #0xc
orr r3, r2, r1, lsr #9
orr r3, r3, r0, lsr #29
movs r1, r0, lsl #3
orr r0, r3, ip, lsl #23
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #1
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208E23C:
orrs r3, r0, r1, lsl #12
bne _0208E250
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
_0208E250:
mvn r0, #0x80000000
bx lr
_0208E258:
orrs r3, r0, r1, lsl #12
bne __f_underflow
__f_result_zero:
mov r0, r2
bx lr
_0208E268:
cmn ip, #0x17
beq _0208E2BC
bmi __f_underflow
mov r1, r1, lsl #0xb
orr r1, r1, #0x80000000
mov r3, r1, lsr #8
orr r3, r3, r0, lsr #29
rsb ip, ip, #1
movs r1, r0, lsl #3
orr r0, r2, r3, lsr ip
rsb ip, ip, #0x20
mov r3, r3, lsl ip
orrne r3, r3, #1
movs r1, r3
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #1
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208E2BC:
orr r0, r0, r1, lsl #12
__f_very_tiny_result:
movs r1, r0
mov r0, r2
addne r0, r0, #1
bx lr
__f_underflow:
mov r0, r2
bx lr
_0208E2D8:
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
arm_func_end _d2f
; Other names: _d_dtoull
arm_func_start _ll_ufrom_d
_ll_ufrom_d: ; 0x0208E2E4
tst r1, #0x80000000
bne _0208E348
ldr r2, _0208E36C ; =0x0000043E
subs r2, r2, r1, lsr #20
blt _0208E360
cmp r2, #0x40
bge _0208E33C
mov ip, r1, lsl #0xb
orr ip, ip, #0x80000000
orr ip, ip, r0, lsr #21
cmp r2, #0x20
ble _0208E324
sub r2, r2, #0x20
mov r1, #0
mov r0, ip, lsr r2
bx lr
_0208E324:
mov r3, r0, lsl #0xb
mov r1, ip, lsr r2
mov r0, r3, lsr r2
rsb r2, r2, #0x20
orr r0, r0, ip, lsl r2
bx lr
_0208E33C:
mov r1, #0
mov r0, #0
bx lr
_0208E348:
cmn r1, #0x100000
cmpeq r0, #0
bhi _0208E360
mov r1, #0
mov r0, #0
bx lr
_0208E360:
mvn r1, #0
mvn r0, #0
bx lr
.align 2, 0
_0208E36C: .word 0x0000043E
arm_func_end _ll_ufrom_d
; Other names: _d_itod
arm_func_start _dflt
_dflt: ; 0x0208E370
ands r2, r0, #0x80000000
rsbmi r0, r0, #0
cmp r0, #0
__d_itod_common:
mov r1, #0
bxeq lr
mov r3, #0x400
add r3, r3, #0x1e
clz ip, r0
movs r0, r0, lsl ip
sub r3, r3, ip
movs r1, r0
mov r0, r1, lsl #0x15
add r1, r1, r1
orr r1, r2, r1, lsr #12
orr r1, r1, r3, lsl #20
bx lr
arm_func_end _dflt
; Other names: _d_utod
arm_func_start _dfltu
_dfltu: ; 0x0208E3B0
cmp r0, #0
mov r1, #0
bxeq lr
mov r3, #0x400
add r3, r3, #0x1e
bmi _0208E3D4
clz ip, r0
movs r0, r0, lsl ip
sub r3, r3, ip
_0208E3D4:
mov r1, r0
mov r0, r1, lsl #0x15
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, r3, lsl #20
bx lr
arm_func_end _dfltu
; Other names: _d_mul
arm_func_start _dmul
_dmul: ; 0x0208E3EC
stmdb sp!, {r4, r5, r6, r7, lr}
eor lr, r1, r3
and lr, lr, #0x80000000
mov ip, r1, lsr #0x14
mov r1, r1, lsl #0xb
orr r1, r1, r0, lsr #21
mov r0, r0, lsl #0xb
movs r6, ip, lsl #0x15
cmnne r6, #0x200000
beq _0208E4F4
orr r1, r1, #0x80000000
bic ip, ip, #0x800
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
cmnne r5, #0x200000
beq _0208E53C
orr r3, r3, #0x80000000
bic r4, r4, #0x800
_0208E440:
add ip, r4, ip
umull r5, r4, r0, r2
umull r7, r6, r0, r3
adds r4, r7, r4
adc r6, r6, #0
umull r7, r0, r1, r2
adds r4, r7, r4
adcs r0, r0, r6
umull r7, r2, r1, r3
adc r1, r2, #0
adds r0, r0, r7
adc r1, r1, #0
orrs r4, r4, r5
orrne r0, r0, #1
cmp r1, #0
blt _0208E48C
sub ip, ip, #1
adds r0, r0, r0
adc r1, r1, r1
_0208E48C:
add ip, ip, #2
subs ip, ip, #0x400
bmi _0208E628
beq _0208E628
mov r6, ip, lsl #0x14
cmn r6, #0x100000
bmi _0208E728
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
orr r1, lr, r1, lsr #12
orr r1, r1, ip, lsl #20
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
movs r2, r2, lsl #1
andeqs r2, r0, #1
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
adds r0, r0, #1
adc r1, r1, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E4F4:
bics ip, ip, #0x800
beq _0208E550
orrs r6, r0, r1, lsl #1
bne _0208E6DC
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
beq _0208E530
cmn r5, #0x200000
bne _0208E6C8
orrs r5, r2, r3, lsl #1
beq _0208E6C8
b _0208E6DC
_0208E530:
orrs r5, r3, r2
beq _0208E6F0
b _0208E6C8
_0208E53C:
bics r4, r4, #0x800
beq _0208E5E4
orrs r6, r2, r3, lsl #1
bne _0208E6DC
b _0208E6C8
_0208E550:
orrs r6, r0, r1, lsl #1
beq _0208E5B8
mov ip, #1
cmp r1, #0
bne _0208E574
sub ip, ip, #0x20
movs r1, r0
mov r0, #0
bmi _0208E590
_0208E574:
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 ip, ip, r6
_0208E590:
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
cmnne r5, #0x200000
beq _0208E53C
orr r3, r3, #0x80000000
bic r4, r4, #0x800
b _0208E440
_0208E5B8:
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r5, r4, lsl #0x15
beq _0208E73C
cmn r5, #0x200000
bne _0208E73C
orrs r6, r2, r3, lsl #1
beq _0208E6F0
b _0208E6DC
_0208E5E4:
orrs r5, r2, r3, lsl #1
beq _0208E73C
mov r4, #1
cmp r3, #0
bne _0208E608
sub r4, r4, #0x20
movs r3, r2
mov r2, #0
bmi _0208E440
_0208E608:
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 _0208E440
_0208E628:
cmn ip, #0x34
beq _0208E6C0
bmi _0208E718
mov r2, r1
mov r3, r0
add r4, ip, #0x34
cmp r4, #0x20
movge r2, r3
movge r3, #0
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, #1
rsb ip, ip, #0xc
cmp ip, #0x20
movge r0, r1
movge r1, #0
subge ip, ip, #0x20
rsb r4, ip, #0x20
mov r0, r0, lsr ip
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr ip
cmp r2, #0
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
tst r2, #0x80000000
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
movs r2, r2, lsl #1
andeqs r2, r0, #1
ldmeqia sp!, {r4, r5, r6, r7, lr}
bxeq lr
adds r0, r0, #1
adc r1, r1, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E6C0:
orr r0, r0, r1, lsl #1
b _0208E700
_0208E6C8:
ldr r1, _0208E74C ; =0x7FF00000
orr r1, lr, r1
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E6DC:
mov r1, r3
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E6F0:
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E700:
movs r2, r0
mov r1, lr
mov r0, #0
addne r0, r0, #1
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E718:
mov r1, lr
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E728:
ldr r1, _0208E74C ; =0x7FF00000
orr r1, lr, r1
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_0208E73C:
mov r1, lr
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0208E74C: .word 0x7FF00000
arm_func_end _dmul
arm_func_start _dsqrt
_dsqrt: ; 0x0208E750
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0208E8E0 ; =0x7FF00000
cmp r1, r2
bhs _0208E89C
movs ip, r1, lsr #0x14
beq _0208E848
bic r1, r1, r2
orr r1, r1, #0x100000
_0208E770:
movs ip, ip, asr #1
bhs _0208E784
sub ip, ip, #1
movs r0, r0, lsl #1
adc r1, r1, r1
_0208E784:
movs r3, r0, lsl #1
adc r1, r1, r1
mov r2, #0
mov r4, #0
mov lr, #0x200000
_0208E798:
add r6, r4, lr
cmp r6, r1
addle r4, r6, lr
suble r1, r1, r6
addle r2, r2, lr
movs r3, r3, lsl #1
adc r1, r1, r1
movs lr, lr, lsr #1
bne _0208E798
mov r0, #0
mov r5, #0
cmp r1, r4
cmpeq r3, #0x80000000
blo _0208E7E0
subs r3, r3, #0x80000000
sbc r1, r1, r4
add r4, r4, #1
mov r0, #0x80000000
_0208E7E0:
movs r3, r3, lsl #1
adc r1, r1, r1
mov lr, #0x40000000
_0208E7EC:
add r6, r5, lr
cmp r4, r1
cmpeq r6, r3
bhi _0208E80C
add r5, r6, lr
subs r3, r3, r6
sbc r1, r1, r4
add r0, r0, lr
_0208E80C:
movs r3, r3, lsl #1
adc r1, r1, r1
movs lr, lr, lsr #1
bne _0208E7EC
orrs r1, r1, r3
biceq r0, r0, #1
movs r1, r2, lsr #1
movs r0, r0, rrx
adcs r0, r0, #0
adc r1, r1, #0
add r1, r1, #0x20000000
sub r1, r1, #0x100000
add r1, r1, ip, lsl #20
ldmia sp!, {r4, r5, r6, lr}
bx lr
_0208E848:
cmp r1, #0
bne _0208E878
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, lr}
bxeq lr
mvn ip, #0x13
clz r5, r0
movs r0, r0, lsl r5
sub ip, ip, r5
mov r1, r0, lsr #0xb
mov r0, r0, lsl #0x15
b _0208E770
_0208E878:
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 ip, r2, #1
b _0208E770
_0208E89C:
tst r1, #0x80000000
beq _0208E8B8
bics r3, r1, #0x80000000
cmpeq r0, #0
ldmeqia sp!, {r4, r5, r6, lr}
bxeq lr
b _0208E8C4
_0208E8B8:
orrs r2, r0, r1, lsl #12
ldmeqia sp!, {r4, r5, r6, lr}
bxeq lr
_0208E8C4:
ldr r2, _0208E8E4 ; =0x7FF80000
orr r1, r1, r2
ldr r3, _0208E8E8 ; =_022BCA70
mov r4, #0x21
str r4, [r3]
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0208E8E0: .word 0x7FF00000
_0208E8E4: .word 0x7FF80000
_0208E8E8: .word _022BCA70
arm_func_end _dsqrt
_0208E8EC:
.byte 0x03, 0x10, 0x21, 0xE0
.byte 0x03, 0x30, 0x21, 0xE0, 0x03, 0x10, 0x21, 0xE0, 0x02, 0x00, 0x20, 0xE0, 0x02, 0x20, 0x20, 0xE0
.byte 0x02, 0x00, 0x20, 0xE0
; Other names: _d_sub
arm_func_start _dsub
_dsub: ; 0x0208E904
stmdb sp!, {r4, lr}
eors ip, r1, r3
eormi r3, r3, #0x80000000
bmi __dadd_start
_0208E914:
subs ip, r0, r2
sbcs lr, r1, r3
bhs _0208E934
eor lr, lr, #0x80000000
adds r2, r2, ip
adc r3, r3, lr
subs r0, r0, ip
sbc r1, r1, lr
_0208E934:
mov lr, #0x80000000
mov ip, r1, lsr #0x14
orr r1, lr, r1, lsl #11
orr r1, r1, r0, lsr #21
mov r0, r0, lsl #0xb
movs r4, ip, lsl #0x15
cmnne r4, #0x200000
beq _0208EB38
mov r4, r3, lsr #0x14
orr r3, lr, r3, lsl #11
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs lr, r4, lsl #0x15
beq _0208EB80
_0208E96C:
subs r4, ip, r4
beq _0208EA14
cmp r4, #0x20
ble _0208E9A8
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, #1
subs r0, r0, r2
sbcs r1, r1, #0
bmi _0208E9D0
b _0208EAC0
_0208E9A8:
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, #1
subs r0, r0, r2
sbcs r1, r1, r3
bpl _0208EAC0
_0208E9D0:
movs r2, r0, lsl #0x15
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
mov r1, r1, lsr #0xc
orr r1, r1, ip, lsl #20
tst r2, #0x80000000
ldmeqia sp!, {r4, lr}
bxeq lr
movs r2, r2, lsl #1
andeqs r2, r0, #1
ldmeqia sp!, {r4, lr}
bxeq lr
adds r0, r0, #1
adc r1, r1, #0
ldmia sp!, {r4, lr}
bx lr
_0208EA14:
subs r0, r0, r2
sbc r1, r1, r3
orrs lr, r1, r0
beq _0208ECA4
mov lr, ip, lsl #0x14
and lr, lr, #0x80000000
bic ip, ip, #0x800
cmp r1, #0
bmi _0208EA9C
bne _0208EA4C
sub ip, ip, #0x20
movs r1, r0
mov r0, #0
bmi _0208EA68
_0208EA4C:
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 ip, ip, r4
_0208EA68:
cmp ip, #0
bgt _0208EAA4
rsb ip, ip, #0xc
cmp ip, #0x20
movge r0, r1
movge r1, #0
subge ip, ip, #0x20
rsb r4, ip, #0x20
mov r0, r0, lsr ip
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr ip
ldmia sp!, {r4, lr}
bx lr
_0208EA9C:
cmp r1, #0
subges ip, ip, #1
_0208EAA4:
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
orr r1, lr, r1, lsr #12
orr r1, r1, ip, lsl #20
ldmia sp!, {r4, lr}
bx lr
_0208EAC0:
mov lr, ip, lsl #0x14
and lr, lr, #0x80000000
bic ip, ip, #0x800
cmp r1, #0
bne _0208EAE4
sub ip, ip, #0x20
movs r1, r0
mov r0, #0
bmi _0208EB00
_0208EAE4:
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 ip, ip, r4
_0208EB00:
cmp ip, #0
orrgt ip, ip, lr, lsr #20
bgt _0208E9D0
rsb ip, ip, #0xc
cmp ip, #0x20
movge r0, r1
movge r1, #0
subge ip, ip, #0x20
rsb r4, ip, #0x20
mov r0, r0, lsr ip
orr r0, r0, r1, lsl r4
orr r1, lr, r1, lsr ip
ldmia sp!, {r4, lr}
bx lr
_0208EB38:
cmp ip, #0x800
movge lr, #0x80000000
movlt lr, #0
bics ip, ip, #0x800
beq _0208EBA4
orrs r4, r0, r1, lsl #1
bne _0208EC80
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
beq _0208EC6C
cmn r4, #0x200000
bne _0208EC6C
orrs r4, r2, r3, lsl #1
beq _0208EC94
b _0208EC80
_0208EB80:
cmp r4, #0x800
movge lr, #0x80000000
movlt lr, #0
bic ip, ip, #0x800
bics r4, r4, #0x800
beq _0208EC1C
orrs r4, r2, r3, lsl #1
bne _0208EC80
b _0208EC6C
_0208EBA4:
orrs r4, r0, r1, lsl #1
beq _0208EBE4
mov ip, #1
bic r1, r1, #0x80000000
mov r4, r3, lsr #0x14
mov r3, r3, lsl #0xb
orr r3, r3, r2, lsr #21
mov r2, r2, lsl #0xb
movs r4, r4, lsl #0x15
cmnne r4, #0x200000
mov r4, r4, lsr #0x15
orr r4, r4, lr, lsr #20
beq _0208EB80
orr r3, r3, #0x80000000
orr ip, ip, lr, lsr #20
b _0208E96C
_0208EBE4:
mov ip, r3, lsr #0x14
mov r1, r3, lsl #0xb
orr r1, r1, r2, lsr #21
mov r0, r2, lsl #0xb
movs r4, ip, lsl #0x15
beq _0208EC10
cmn r4, #0x200000
bne _0208EC38
orrs r4, r0, r1, lsl #1
bne _0208EC84
b _0208EC6C
_0208EC10:
orrs r4, r0, r1, lsl #1
beq _0208ECA4
b _0208EC38
_0208EC1C:
orrs r4, r2, r3, lsl #1
beq _0208EC48
mov r4, #1
bic r3, r3, #0x80000000
orr ip, ip, lr, lsr #20
orr r4, r4, lr, lsr #20
b _0208E96C
_0208EC38:
mov r1, r3
mov r0, r2
ldmia sp!, {r4, lr}
bx lr
_0208EC48:
cmp r1, #0
subges ip, ip, #1
mov r0, r0, lsr #0xb
orr r0, r0, r1, lsl #21
add r1, r1, r1
orr r1, lr, r1, lsr #12
orr r1, r1, ip, lsl #20
ldmia sp!, {r4, lr}
bx lr
_0208EC6C:
ldr r1, _0208ECB4 ; =0x7FF00000
orr r1, lr, r1
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
_0208EC80:
mov r1, r3
_0208EC84:
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, lr}
bx lr
_0208EC94:
mvn r0, #0
bic r1, r0, #0x80000000
ldmia sp!, {r4, lr}
bx lr
_0208ECA4:
mov r1, #0
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0208ECB4: .word 0x7FF00000
arm_func_end _dsub
; Other names: _f_add
arm_func_start _fadd
_fadd: ; 0x0208ECB8
eors r2, r0, r1
eormi r1, r1, #0x80000000
bmi __fsub_start
__fadd_start:
subs ip, r0, r1
sublo r0, r0, ip
addlo r1, r1, ip
mov r2, #0x80000000
mov r3, r0, lsr #0x17
orr r0, r2, r0, lsl #8
ands ip, r3, #0xff
cmpne ip, #0xff
beq _0208ED58
mov ip, r1, lsr #0x17
orr r1, r2, r1, lsl #8
ands r2, ip, #0xff
beq _0208ED98
_0208ECF8:
subs ip, r3, ip
beq _0208ED10
rsb r2, ip, #0x20
movs r2, r1, lsl r2
mov r1, r1, lsr ip
orrne r1, r1, #1
_0208ED10:
adds r0, r0, r1
blo _0208ED30
and r1, r0, #1
orr r0, r1, r0, rrx
add r3, r3, #1
and r2, r3, #0xff
cmp r2, #0xff
beq _0208EEA0
_0208ED30:
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #9
orr r0, r0, r3, lsl #23
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208ED58:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0
ands r3, r3, #0xff
beq _0208EDBC
movs r0, r0, lsl #1
bne _0208EECC
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208EEC0
cmp ip, #0xff
blt _0208EEC0
cmp r1, #0
beq _0208EEC0
b _0208EECC
_0208ED98:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0
and r3, r3, #0xff
ands ip, ip, #0xff
beq _0208EE18
_0208EDB0:
movs r1, r1, lsl #1
bne _0208EECC
b _0208EEC0
_0208EDBC:
movs r0, r0, lsl #1
beq _0208EDF4
mov r3, #1
mov r0, r0, lsr #1
mov ip, r1, lsr #0x17
mov r1, r1, lsl #8
ands ip, ip, #0xff
beq _0208EE18
cmp ip, #0xff
beq _0208EDB0
orr r1, r1, #0x80000000
orr r3, r3, r2, lsr #23
orr ip, ip, r2, lsr #23
b _0208ECF8
_0208EDF4:
mov r3, r1, lsr #0x17
mov r0, r1, lsl #9
ands r3, r3, #0xff
beq _0208EE80
cmp r3, #0xff
blt _0208EE80
cmp r0, #0
beq _0208EEC0
b _0208EEB8
_0208EE18:
movs r1, r1, lsl #1
beq _0208EE88
mov r1, r1, lsr #1
mov ip, #1
orr r3, r3, r2, lsr #23
orr ip, ip, r2, lsr #23
cmp r0, #0
bmi _0208ECF8
adds r0, r0, r1
blo _0208EE4C
and r1, r0, #1
orr r0, r1, r0, rrx
add ip, ip, #1
_0208EE4C:
cmp r0, #0
subge ip, ip, #1
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #9
orr r0, r0, ip, lsl #23
bxeq lr
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208EE80:
mov r0, r1
bx lr
_0208EE88:
cmp r0, #0
subges r3, r3, #1
add r0, r0, r0
orr r0, r2, r0, lsr #9
orr r0, r0, r3, lsl #23
bx lr
_0208EEA0:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
_0208EEB8:
mvn r0, #0x80000000
bx lr
_0208EEC0:
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
_0208EECC:
mvn r0, #0x80000000
bx lr
arm_func_end _fadd
arm_func_start sub_0208EED4
sub_0208EED4: ; 0x0208EED4
mvn r0, #0x80000000
bx lr
arm_func_end sub_0208EED4
; Other names: _d_fgt
arm_func_start _dgr
_dgr: ; 0x0208EEDC
mov ip, #0x200000
cmn ip, r1, lsl #1
bhs _0208EF50
cmn ip, r3, lsl #1
bhs _0208EF64
_0208EEF0:
orrs ip, r3, r1
bmi _0208EF20
cmp r1, r3
cmpeq r0, r2
movhi r0, #1
movls r0, #0
bx lr
_0208EF0C:
mov r0, #0
mrs ip, cpsr
bic ip, ip, #0x20000000
msr cpsr_f, ip
bx lr
_0208EF20:
orr ip, r0, ip, lsl #1
orrs ip, ip, r2
moveq r0, #0
mrs ip, cpsr
bic ip, ip, #0x20000000
msr cpsr_f, ip
bxeq lr
cmp r3, r1
cmpeq r2, r0
movhi r0, #1
movls r0, #0
bx lr
_0208EF50:
bne _0208EF0C
cmp r0, #0
bhi _0208EF0C
cmn ip, r3, lsl #1
blo _0208EEF0
_0208EF64:
bne _0208EF0C
cmp r2, #0
bhi _0208EF0C
b _0208EEF0
arm_func_end _dgr
; Other names: _d_fle
arm_func_start _dleq
_dleq: ; 0x0208EF74
mov ip, #0x200000
cmn ip, r1, lsl #1
bhs _0208EFF4
cmn ip, r3, lsl #1
bhs _0208F008
_0208EF88:
orrs ip, r3, r1
bmi _0208EFBC
cmp r1, r3
cmpeq r0, r2
movls r0, #1
movhi r0, #0
bx lr
_0208EFA4:
mov r0, #0
mrs ip, cpsr
bic ip, ip, #0x40000000
orr ip, ip, #0x20000000
msr cpsr_f, ip
bx lr
_0208EFBC:
orr ip, r0, ip, lsl #1
orrs ip, ip, r2
moveq r0, #1
bne _0208EFE0
mrs ip, cpsr
bic ip, ip, #0x20000000
orr ip, ip, #0x40000000
msr cpsr_f, ip
bxeq lr
_0208EFE0:
cmp r3, r1
cmpeq r2, r0
movls r0, #1
movhi r0, #0
bx lr
_0208EFF4:
bne _0208EFA4
cmp r0, #0
bhi _0208EFA4
cmn ip, r3, lsl #1
blo _0208EF88
_0208F008:
bne _0208EFA4
cmp r2, #0
bhi _0208EFA4
b _0208EF88
arm_func_end _dleq
; Other names: _d_flt
arm_func_start _dls
_dls: ; 0x0208F018
mov ip, #0x200000
cmn ip, r1, lsl #1
bhs _0208F090
cmn ip, r3, lsl #1
bhs _0208F0A4
_0208F02C:
orrs ip, r3, r1
bmi _0208F05C
cmp r1, r3
cmpeq r0, r2
movlo r0, #1
movhs r0, #0
bx lr
_0208F048:
mov r0, #0
mrs ip, cpsr
orr ip, ip, #0x20000000
msr cpsr_f, ip
bx lr
_0208F05C:
orr ip, r0, ip, lsl #1
orrs ip, ip, r2
moveq r0, #0
bne _0208F07C
mrs ip, cpsr
orr ip, ip, #0x20000000
msr cpsr_f, ip
bxeq lr
_0208F07C:
cmp r3, r1
cmpeq r2, r0
movlo r0, #1
movhs r0, #0
bx lr
_0208F090:
bne _0208F048
cmp r0, #0
bhi _0208F048
cmn ip, r3, lsl #1
blo _0208F02C
_0208F0A4:
bne _0208F048
cmp r2, #0
bhi _0208F048
b _0208F02C
arm_func_end _dls
; Other names: _d_feq
arm_func_start _deq
_deq: ; 0x0208F0B4
mov ip, #0x200000
cmn ip, r1, lsl #1
bhs _0208F11C
cmn ip, r3, lsl #1
bhs _0208F130
_0208F0C8:
orrs ip, r3, r1
bmi _0208F0F8
cmp r1, r3
cmpeq r0, r2
moveq r0, #1
movne r0, #0
bx lr
_0208F0E4:
mov r0, #0
mrs ip, cpsr
bic ip, ip, #0x40000000
msr cpsr_f, ip
bx lr
_0208F0F8:
orr ip, r0, ip, lsl #1
orrs ip, ip, r2
moveq r0, #1
bxeq lr
cmp r3, r1
cmpeq r2, r0
moveq r0, #1
movne r0, #0
bx lr
_0208F11C:
bne _0208F0E4
cmp r0, #0
bhi _0208F0E4
cmn ip, r3, lsl #1
blo _0208F0C8
_0208F130:
bne _0208F0E4
cmp r2, #0
bhi _0208F0E4
b _0208F0C8
arm_func_end _deq
; Other names: _d_fne
arm_func_start _dneq
_dneq: ; 0x0208F140
mov ip, #0x200000
cmn ip, r1, lsl #1
bhs _0208F1A8
cmn ip, r3, lsl #1
bhs _0208F1BC
_0208F154:
orrs ip, r3, r1
bmi _0208F184
cmp r1, r3
cmpeq r0, r2
movne r0, #1
moveq r0, #0
bx lr
_0208F170:
mov r0, #1
mrs ip, cpsr
bic ip, ip, #0x40000000
msr cpsr_f, ip
bx lr
_0208F184:
orr ip, r0, ip, lsl #1
orrs ip, ip, r2
moveq r0, #0
bxeq lr
cmp r3, r1
cmpeq r2, r0
movne r0, #1
moveq r0, #0
bx lr
_0208F1A8:
bne _0208F170
cmp r0, #0
bhi _0208F170
cmn ip, r3, lsl #1
blo _0208F154
_0208F1BC:
bne _0208F170
cmp r2, #0
bhi _0208F170
b _0208F154
arm_func_end _dneq
; Other names: _f_flt
arm_func_start _fls
_fls: ; 0x0208F1CC
mov r3, #0xff000000
cmp r3, r0, lsl #1
cmphs r3, r1, lsl #1
blo _0208F214
cmp r0, #0
bicmi r0, r0, #0x80000000
rsbmi r0, r0, #0
cmp r1, #0
bicmi r1, r1, #0x80000000
rsbmi r1, r1, #0
cmp r0, r1
movlt r0, #1
movge r0, #0
mrs ip, cpsr
orrge ip, ip, #0x20000000
biclt ip, ip, #0x20000000
msr cpsr_f, ip
bx lr
_0208F214:
mov r0, #0
mrs ip, cpsr
orr ip, ip, #0x20000000
msr cpsr_f, ip
bx lr
arm_func_end _fls
_0208F228:
.byte 0x01, 0x00, 0x20, 0xE0, 0x01, 0x10, 0x20, 0xE0
.byte 0x01, 0x00, 0x20, 0xE0
; Other names: _f_div
arm_func_start _fdiv
_fdiv: ; 0x0208F234
stmdb sp!, {lr}
mov ip, #0xff
ands r3, ip, r0, lsr #23
cmpne r3, #0xff
beq _0208F408
ands ip, ip, r1, lsr #23
cmpne ip, #0xff
beq _0208F444
orr r1, r1, #0x800000
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
bic lr, r1, #0xff000000
_0208F264:
cmp r2, lr
movlo r2, r2, lsl #1
sublo r3, r3, #1
teq r0, r1
sub r0, pc, #0x94
ldrb r1, [r0, lr, lsr #15]
rsb lr, lr, #0
mov r0, lr, asr #1
mul r0, r1, r0
add r0, r0, #0x80000000
mov r0, r0, lsr #6
mul r0, r1, r0
mov r0, r0, lsr #0xe
mul r1, lr, r0
sub ip, r3, ip
mov r1, r1, lsr #0xc
mul r1, r0, r1
mov r0, r0, lsl #0xe
add r0, r0, r1, lsr #15
umull r1, r0, r2, r0
mov r3, r0
orrmi r0, r0, #0x80000000
adds ip, ip, #0x7e
bmi _0208F50C
cmp ip, #0xfe
bge _0208F5C0
add r0, r0, ip, lsl #23
mov ip, r1, lsr #0x1c
cmp ip, #7
beq _0208F3E8
add r0, r0, r1, lsr #31
ldmia sp!, {lr}
bx lr
_0208F2E8:
.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
_0208F3E8:
mov r1, r3, lsl #1
add r1, r1, #1
rsb lr, lr, #0
mul r1, lr, r1
cmp r1, r2, lsl #24
addmi r0, r0, #1
ldmia sp!, {lr}
bx lr
_0208F408:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp r3, #0
beq _0208F460
movs r0, r0, lsl #9
bne _0208F5A8
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208F598
cmp ip, #0xff
blt _0208F598
cmp r1, #0
beq _0208F5B4
b _0208F590
_0208F444:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp ip, #0
beq _0208F4C4
_0208F454:
movs r1, r1, lsl #9
bne _0208F590
b _0208F5E0
_0208F460:
movs r2, r0, lsl #9
beq _0208F494
clz r3, r2
movs r2, r2, lsl r3
rsb r3, r3, #0
mov r2, r2, lsr #8
ands ip, ip, r1, lsr #23
beq _0208F4EC
cmp ip, #0xff
beq _0208F454
orr r1, r1, #0x800000
bic lr, r1, #0xff000000
b _0208F264
_0208F494:
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208F4B8
cmp ip, #0xff
blt _0208F5E0
cmp r1, #0
beq _0208F5E0
b _0208F590
_0208F4B8:
cmp r1, #0
beq _0208F5B4
b _0208F5E0
_0208F4C4:
movs ip, r1, lsl #9
beq _0208F598
mov lr, ip
clz ip, lr
movs lr, lr, lsl ip
rsb ip, ip, #0
mov lr, lr, lsr #8
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
b _0208F264
_0208F4EC:
movs ip, r1, lsl #9
beq _0208F598
mov lr, ip
clz ip, lr
movs lr, lr, lsl ip
rsb ip, ip, #0
mov lr, lr, lsr #8
b _0208F264
_0208F50C:
and r0, r0, #0x80000000
cmn ip, #0x18
beq _0208F580
bmi _0208F5D8
add r1, ip, #0x17
mov r2, r2, lsl r1
rsb ip, ip, #0
mov r3, r3, lsr ip
orr r0, r0, r3
rsb lr, lr, #0
mul r1, lr, r3
cmp r1, r2
ldmeqia sp!, {lr}
bxeq lr
add r1, r1, lr
cmp r1, r2
beq _0208F574
addmi r0, r0, #1
subpl r1, r1, lr
add r1, lr, r1, lsl #1
cmp r1, r2, lsl #1
and r3, r0, #1
addmi r0, r0, #1
addeq r0, r0, r3
ldmia sp!, {lr}
bx lr
_0208F574:
add r0, r0, #1
ldmia sp!, {lr}
bx lr
_0208F580:
cmn r2, lr
addne r0, r0, #1
ldmia sp!, {lr}
bx lr
_0208F590:
mov r0, r1
b _0208F5A8
_0208F598:
mov r0, #0xff000000
orr r0, lr, r0, lsr #1
ldmia sp!, {lr}
bx lr
_0208F5A8:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_0208F5B4:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_0208F5C0:
tst r0, #0x80000000
mov r0, #0xff000000
movne r0, r0, asr #1
moveq r0, r0, lsr #1
ldmia sp!, {lr}
bx lr
_0208F5D8:
ldmia sp!, {lr}
bx lr
_0208F5E0:
mov r0, lr
ldmia sp!, {lr}
bx lr
arm_func_end _fdiv
; Other names: _f_ftod
arm_func_start _f2d
_f2d: ; 0x0208F5EC
and r2, r0, #0x80000000
mov ip, r0, lsr #0x17
mov r3, r0, lsl #9
ands ip, ip, #0xff
beq _0208F61C
cmp ip, #0xff
beq _0208F648
_0208F608:
add ip, ip, #0x380
mov r0, r3, lsl #0x14
orr r1, r2, r3, lsr #12
orr r1, r1, ip, lsl #20
bx lr
_0208F61C:
cmp r3, #0
bne _0208F630
mov r1, r2
mov r0, #0
bx lr
_0208F630:
mov r3, r3, lsr #1
clz ip, r3
movs r3, r3, lsl ip
rsb ip, ip, #1
add r3, r3, r3
b _0208F608
_0208F648:
cmp r3, #0
bhi _0208F660
ldr r1, _0208F66C ; =0x7FF00000
orr r1, r1, r2
mov r0, #0
bx lr
_0208F660:
mvn r0, #0
bic r1, r0, #0x80000000
bx lr
.align 2, 0
_0208F66C: .word 0x7FF00000
arm_func_end _f2d
; Other names: _f_ftoi
arm_func_start _ffix
_ffix: ; 0x0208F670
bic r1, r0, #0x80000000
mov r2, #0x9e
subs r2, r2, r1, lsr #23
ble _0208F698
mov r1, r1, lsl #8
orr r1, r1, #0x80000000
cmp r0, #0
mov r0, r1, lsr r2
rsbmi r0, r0, #0
bx lr
_0208F698:
mvn r0, r0, asr #31
add r0, r0, #0x80000000
bx lr
arm_func_end _ffix
; Other names: _f_itof
arm_func_start _fflt
_fflt: ; 0x0208F6A4
ands r2, r0, #0x80000000
rsbmi r0, r0, #0
cmp r0, #0
__f_itof_common:
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 #9
orr r0, r0, r3, lsl #23
bxeq lr
tst r1, #0x80
bxeq lr
ands r3, r1, #0x7f
andeqs r3, r0, #1
addne r0, r0, #1
bx lr
arm_func_end _fflt
; Other names: _f_utof
arm_func_start _ffltu
_ffltu: ; 0x0208F6EC
cmp r0, #0
__f_utof_common:
bxeq lr
mov r3, #0x9e
bmi _0208F708
clz ip, r0
movs r0, r0, lsl ip
sub r3, r3, ip
_0208F708:
ands r2, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #9
orr r0, r0, r3, lsl #23
bxeq lr
tst r2, #0x80
bxeq lr
ands r1, r2, #0x7f
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
arm_func_end _ffltu
; Other names: _f_mul
arm_func_start _fmul
_fmul: ; 0x0208F734
eor r2, r0, r1
and r2, r2, #0x80000000
mov ip, #0xff
ands r3, ip, r0, lsr #23
mov r0, r0, lsl #8
cmpne r3, #0xff
beq _0208F7B0
orr r0, r0, #0x80000000
ands ip, ip, r1, lsr #23
mov r1, r1, lsl #8
cmpne ip, #0xff
beq _0208F7F0
orr r1, r1, #0x80000000
_0208F768:
add ip, r3, ip
umull r1, r3, r0, r1
movs r0, r3
addpl r0, r0, r0
subpl ip, ip, #1
subs ip, ip, #0x7f
bmi _0208F87C
cmp ip, #0xfe
bge _0208F8E8
ands r3, r0, #0xff
orr r0, r2, r0, lsr #8
add r0, r0, ip, lsl #23
tst r3, #0x80
bxeq lr
orrs r1, r1, r3, lsl #25
andeqs r3, r0, #1
addne r0, r0, #1
bx lr
_0208F7B0:
cmp r3, #0
beq _0208F804
movs r0, r0, lsl #1
bne __f_result_x_NaN
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208F7E4
cmp ip, #0xff
blt __f_result_INF
cmp r1, #0
beq __f_result_INF
b __f_result_x_NaN
_0208F7E4:
cmp r1, #0
beq __f_result_invalid
b __f_result_INF
_0208F7F0:
cmp ip, #0
beq _0208F860
_0208F7F8:
movs r1, r1, lsl #1
bne __f_result_x_NaN
b __f_result_INF
_0208F804:
movs r0, r0, lsl #1
beq _0208F83C
mov r0, r0, lsr #1
clz r3, r0
movs r0, r0, lsl r3
rsb r3, r3, #1
mov ip, r1, lsr #0x17
mov r1, r1, lsl #8
ands ip, ip, #0xff
beq _0208F860
cmp ip, #0xff
beq _0208F7F8
orr r1, r1, #0x80000000
b _0208F768
_0208F83C:
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208F90C
cmp ip, #0xff
blt _0208F90C
cmp r1, #0
beq __f_result_invalid
b __f_result_x_NaN
_0208F860:
movs r1, r1, lsl #1
beq _0208F90C
mov r1, r1, lsr #1
clz ip, r1
movs r1, r1, lsl ip
rsb ip, ip, #1
b _0208F768
_0208F87C:
cmn ip, #0x18
beq _0208F8C4
bmi _0208F904
cmp r1, #0
orrne r0, r0, #1
mov r3, r0
mov r0, r0, lsr #8
rsb ip, ip, #0
orr r0, r2, r0, lsr ip
rsb ip, ip, #0x18
movs r1, r3, lsl ip
bxeq lr
tst r1, #0x80000000
bxeq lr
movs r1, r1, lsl #1
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208F8C4:
mov r0, r0, lsl #1
b _0208F8F4
__f_result_INF:
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
__f_result_x_NaN:
mvn r0, #0x80000000
bx lr
__f_result_invalid:
mvn r0, #0x80000000
bx lr
_0208F8E8:
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
_0208F8F4:
movs r1, r0
mov r0, r2
addne r0, r0, #1
bx lr
_0208F904:
mov r0, r2
bx lr
_0208F90C:
mov r0, r2
bx lr
arm_func_end _fmul
arm_func_start sqrtf
sqrtf: ; 0x0208F914
stmdb sp!, {lr}
mov r2, #0xff
cmp r0, r2, lsl #23
bhs _0208F9B8
movs ip, r0, lsr #0x17
beq _0208F998
bic r0, r0, r2, lsl #23
orr r0, r0, #0x800000
_0208F934:
movs ip, ip, asr #1
bhs _0208F944
sub ip, ip, #1
mov r0, r0, lsl #1
_0208F944:
movs r1, r0, lsl #1
mov r0, #0
mov r2, #0
mov lr, #0x1000000
_0208F954:
add r3, r2, lr
cmp r3, r1
addle r2, r3, lr
suble r1, r1, r3
addle r0, r0, lr
mov r1, r1, lsl #1
movs lr, lr, lsr #1
bne _0208F954
cmp r1, #0
biceq r0, r0, #1
movs r0, r0, lsr #1
adc r0, r0, #0
add r0, r0, #0x20000000
sub r0, r0, #0x800000
add r0, r0, ip, lsl #23
ldmia sp!, {lr}
bx lr
_0208F998:
cmp r0, #0
ldmeqia sp!, {lr}
bxeq lr
clz ip, r0
movs r0, r0, lsl ip
rsb ip, ip, #9
mov r0, r0, lsr #8
b _0208F934
_0208F9B8:
ldmeqia sp!, {lr}
bxeq lr
tst r0, #0x80000000
beq _0208F9D4
bics r3, r0, #0x80000000
ldmeqia sp!, {lr}
bxeq lr
_0208F9D4:
ldr r2, _0208F9F0 ; =0x7FC00000
orr r0, r0, r2
ldr r3, _0208F9F4 ; =_022BCA70
mov r4, #0x21
str r4, [r3]
ldmia sp!, {lr}
bx lr
.align 2, 0
_0208F9F0: .word 0x7FC00000
_0208F9F4: .word _022BCA70
arm_func_end sqrtf
_0208F9F8:
.byte 0x01, 0x00, 0x20, 0xE0, 0x01, 0x10, 0x20, 0xE0
.byte 0x01, 0x00, 0x20, 0xE0
; Other names: _f_sub
arm_func_start _fsub
_fsub: ; 0x0208FA04
eors r2, r0, r1
eormi r1, r1, #0x80000000
bmi __fadd_start
__fsub_start:
subs ip, r0, r1
eorlo ip, ip, #0x80000000
sublo r0, r0, ip
addlo r1, r1, ip
mov r2, #0x80000000
mov r3, r0, lsr #0x17
orr r0, r2, r0, lsl #8
ands ip, r3, #0xff
cmpne ip, #0xff
beq _0208FB2C
mov ip, r1, lsr #0x17
orr r1, r2, r1, lsl #8
ands r2, ip, #0xff
beq _0208FB6C
_0208FA48:
subs ip, r3, ip
beq _0208FA90
rsb r2, ip, #0x20
movs r2, r1, lsl r2
mov r1, r1, lsr ip
orrne r1, r1, #1
subs r0, r0, r1
bpl _0208FAD4
ands r1, r0, #0xff
add r0, r0, r0
mov r0, r0, lsr #9
orr r0, r0, r3, lsl #23
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208FA90:
subs r0, r0, r1
beq _0208FC38
mov r2, r3, lsl #0x17
and r2, r2, #0x80000000
bic r3, r3, #0x100
clz ip, r0
movs r0, r0, lsl ip
sub r3, r3, ip
cmp r3, #0
bgt _0208FAC4
rsb r3, r3, #9
orr r0, r2, r0, lsr r3
bx lr
_0208FAC4:
add r0, r0, r0
orr r0, r2, r0, lsr #9
orr r0, r0, r3, lsl #23
bx lr
_0208FAD4:
mov r2, r3, lsl #0x17
and r2, r2, #0x80000000
bic r3, r3, #0x100
clz ip, r0
movs r0, r0, lsl ip
sub r3, r3, ip
cmp r3, #0
bgt _0208FB00
rsb r3, r3, #9
orr r0, r2, r0, lsr r3
bx lr
_0208FB00:
ands r1, r0, #0xff
add r0, r0, r0
orr r0, r2, r0, lsr #9
orr r0, r0, r3, lsl #23
bxeq lr
tst r1, #0x80
bxeq lr
ands r1, r1, #0x7f
andeqs r1, r0, #1
addne r0, r0, #1
bx lr
_0208FB2C:
cmp r3, #0x100
movge r2, #0x80000000
movlt r2, #0
ands r3, r3, #0xff
beq _0208FB94
movs r0, r0, lsl #1
bne _0208FC6C
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _0208FC60
cmp ip, #0xff
blt _0208FC60
cmp r1, #0
beq _0208FC74
b _0208FC6C
_0208FB6C:
cmp ip, #0x100
movge r2, #0x80000000
movlt r2, #0
and r3, r3, #0xff
ands ip, ip, #0xff
beq _0208FBFC
_0208FB84:
eor r2, r2, #0x80000000
movs r1, r1, lsl #1
bne _0208FC6C
b _0208FC60
_0208FB94:
movs r0, r0, lsl #1
beq _0208FBCC
mov r0, r0, lsr #1
mov r3, #1
mov ip, r1, lsr #0x17
mov r1, r1, lsl #8
ands ip, ip, #0xff
beq _0208FBFC
cmp ip, #0xff
beq _0208FB84
orr r1, r1, #0x80000000
orr r3, r3, r2, lsr #23
orr ip, ip, r2, lsr #23
b _0208FA48
_0208FBCC:
mov r3, r1, lsr #0x17
mov r0, r1, lsl #9
ands r2, r3, #0xff
beq _0208FBF0
cmp r2, #0xff
blt _0208FC18
cmp r0, #0
bne _0208FC58
b _0208FC60
_0208FBF0:
cmp r0, #0
beq _0208FC38
b _0208FC18
_0208FBFC:
movs r1, r1, lsl #1
beq _0208FC20
mov r1, r1, lsr #1
mov ip, #1
orr ip, ip, r2, lsr #23
orr r3, r3, r2, lsr #23
b _0208FA48
_0208FC18:
mov r0, r1
bx lr
_0208FC20:
cmp r0, #0
subges r3, r3, #1
add r0, r0, r0
orr r0, r2, r0, lsr #9
orr r0, r0, r3, lsl #23
bx lr
_0208FC38:
mov r0, #0
bx lr
_0208FC40:
cmp r0, #0
subges r3, r3, #1
add r0, r0, r0
mov r0, r0, lsr #9
orr r0, r0, r3, lsl #23
bx lr
_0208FC58:
mvn r0, #0x80000000
bx lr
_0208FC60:
mov r0, #0xff000000
orr r0, r2, r0, lsr #1
bx lr
_0208FC6C:
mvn r0, #0x80000000
bx lr
_0208FC74:
mvn r0, #0x80000000
bx lr
arm_func_end _fsub
arm_func_start _ll_mod
_ll_mod: ; 0x0208FC7C
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, r1
orr r4, r4, #1
b _0208FC9C
arm_func_end _ll_mod
; Other names: _ll_div
arm_func_start _ll_sdiv
_ll_sdiv: ; 0x0208FC8C
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
eor r4, r1, r3
mov r4, r4, asr #1
mov r4, r4, lsl #1
_0208FC9C:
orrs r5, r3, r2
bne _0208FCAC
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0208FCAC:
mov r5, r0, lsr #0x1f
add r5, r5, r1
mov r6, r2, lsr #0x1f
add r6, r6, r3
orrs r6, r5, r6
bne _0208FCE0
mov r1, r2
bl _s32_div_f
ands r4, r4, #1
movne r0, r1
mov r1, r0, asr #0x1f
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0208FCE0:
cmp r1, #0
bge _0208FCF0
rsbs r0, r0, #0
rsc r1, r1, #0
_0208FCF0:
cmp r3, #0
bge _0208FD00
rsbs r2, r2, #0
rsc r3, r3, #0
_0208FD00:
orrs r5, r1, r0
beq _0208FE24
mov r5, #0
mov r6, #1
cmp r3, #0
bmi _0208FD2C
_0208FD18:
add r5, r5, #1
adds r2, r2, r2
adcs r3, r3, r3
bpl _0208FD18
add r6, r6, r5
_0208FD2C:
cmp r1, #0
blt _0208FD4C
_0208FD34:
cmp r6, #1
beq _0208FD4C
sub r6, r6, #1
adds r0, r0, r0
adcs r1, r1, r1
bpl _0208FD34
_0208FD4C:
mov r7, #0
mov ip, #0
mov fp, #0
b _0208FD74
_0208FD5C:
orr ip, ip, #1
subs r6, r6, #1
beq _0208FDCC
adds r0, r0, r0
adcs r1, r1, r1
adcs r7, r7, r7
_0208FD74:
subs r0, r0, r2
sbcs r1, r1, r3
sbcs r7, r7, #0
adds ip, ip, ip
adc fp, fp, fp
cmp r7, #0
bge _0208FD5C
_0208FD90:
subs r6, r6, #1
beq _0208FDC4
adds r0, r0, r0
adcs r1, r1, r1
adc r7, r7, r7
adds r0, r0, r2
adcs r1, r1, r3
adc r7, r7, #0
adds ip, ip, ip
adc fp, fp, fp
cmp r7, #0
bge _0208FD5C
b _0208FD90
_0208FDC4:
adds r0, r0, r2
adc r1, r1, r3
_0208FDCC:
ands r7, r4, #1
moveq r0, ip
moveq r1, fp
beq _0208FE04
subs r7, r5, #0x20
movge r0, r1, lsr r7
bge _0208FE28
rsb r7, r5, #0x20
mov r0, r0, lsr r5
orr r0, r0, r1, lsl r7
mov r1, r1, lsr r5
b _0208FE04
_0208FDFC:
mov r0, r1, lsr r7
mov r1, #0
_0208FE04:
cmp r4, #0
blt _0208FE14
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0208FE14:
rsbs r0, r0, #0
rsc r1, r1, #0
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0208FE24:
mov r0, #0
_0208FE28:
mov r1, #0
cmp r4, #0
blt _0208FE14
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
arm_func_end _ll_sdiv
; Other names: _ull_div
arm_func_start _ll_udiv
_ll_udiv: ; 0x0208FE3C
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, #0
b _0208FE50
arm_func_end _ll_udiv
arm_func_start _ull_mod
_ull_mod: ; 0x0208FE48
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, #1
_0208FE50:
orrs r5, r3, r2
bne _0208FE60
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0208FE60:
orrs r5, r1, r3
bne _0208FD00
mov r1, r2
bl _u32_div_not_0_f
cmp r4, #0
movne r0, r1
mov r1, #0
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
arm_func_end _ull_mod
; Other names: _ull_mul
arm_func_start _ll_mul
_ll_mul: ; 0x0208FE84
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_end _ll_mul
arm_func_start _s32_div_f
_s32_div_f: ; 0x0208FEA4
eor ip, r0, r1
and ip, ip, #0x80000000
cmp r0, #0
rsblt r0, r0, #0
addlt ip, ip, #1
cmp r1, #0
rsblt r1, r1, #0
beq _0209009C
cmp r0, r1
movlo r1, r0
movlo r0, #0
blo _0209009C
mov r2, #0x1c
mov r3, r0, lsr #4
cmp r1, r3, lsr #12
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #4
suble r2, r2, #8
movle r3, r3, lsr #8
cmp r1, r3
suble r2, r2, #4
movle r3, r3, lsr #4
mov r0, r0, lsl r2
rsb r1, r1, #0
adds r0, r0, r0
add r2, r2, r2, lsl #1
add pc, pc, r2, lsl #2
mov r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
mov r1, r3
_0209009C:
ands r3, ip, #0x80000000
rsbne r0, r0, #0
ands r3, ip, #1
rsbne r1, r1, #0
bx lr
arm_func_end _s32_div_f
arm_func_start _u32_div_f
_u32_div_f: ; 0x020900B0
cmp r1, #0
bxeq lr
arm_func_end _u32_div_f
arm_func_start _u32_div_not_0_f
_u32_div_not_0_f: ; 0x020900B8
cmp r0, r1
movlo r1, r0
movlo r0, #0
bxlo lr
mov r2, #0x1c
mov r3, r0, lsr #4
cmp r1, r3, lsr #12
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #4
suble r2, r2, #8
movle r3, r3, lsr #8
cmp r1, r3
suble r2, r2, #4
movle r3, r3, lsr #4
mov r0, r0, lsl r2
rsb r1, r1, #0
adds r0, r0, r0
add r2, r2, r2, lsl #1
add pc, pc, r2, lsl #2
mov r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
mov r1, r3
bx lr
arm_func_end _u32_div_not_0_f
arm_func_start _drdiv
_drdiv: ; 0x02090294
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_end _drdiv
; Other names: _d_div
arm_func_start _ddiv
_ddiv: ; 0x020902AC
stmdb sp!, {r4, r5, r6, lr}
ldr lr, _020907EC ; =0x00000FFE
eor r4, r1, r3
ands ip, lr, r1, lsr #19
cmpne ip, lr
beq _02090658
bic r1, r1, lr, lsl #20
orr r1, r1, #0x100000
add ip, ip, r4, lsr #31
_020902D0:
ands r4, lr, r3, lsr #19
cmpne r4, lr
beq _020906F0
bic r3, r3, lr, lsl #20
orr r3, r3, #0x100000
_020902E4:
sub ip, ip, r4
cmp r1, r3
cmpeq r0, r2
bhs _02090300
adds r0, r0, r0
adc r1, r1, r1
sub ip, ip, #2
_02090300:
sub r4, pc, #0x24
ldrb lr, [r4, r3, lsr #12]
rsbs r2, r2, #0
rsc r3, r3, #0
mov r4, #0x20000000
mla r5, lr, r3, r4
mov r6, r3, lsl #0xa
mov r5, r5, lsr #7
mul lr, r5, lr
orr r6, r6, r2, lsr #22
mov lr, lr, lsr #0xd
mul r5, lr, r6
mov r6, r1, lsl #0xa
orr r6, r6, r0, lsr #22
mov r5, r5, lsr #0x10
mul r5, lr, r5
mov lr, lr, lsl #0xe
add lr, lr, r5, lsr #16
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 #6
add r4, r4, r0, lsl #2
umull lr, r5, r4, lr
mov r4, #0
adds r5, r5, r6, lsl #24
adc r4, r4, r6, lsr #8
cmp ip, #0x800
bge _020904E4
add ip, ip, #0x7f0
adds ip, ip, #0xc
bmi _020904FC
orr r1, r4, ip, lsl #31
bic ip, ip, #1
add r1, r1, ip, lsl #19
tst lr, #0x80000000
bne _020903D4
rsbs r2, r2, #0
mov r4, r4, lsl #1
add r4, r4, r5, lsr #31
mul lr, r2, r4
mov r6, #0
mov r4, r5, lsl #1
orr r4, r4, #1
umlal r6, lr, r4, r2
rsc r3, r3, #0
mla lr, r4, r3, lr
cmp lr, r0, lsl #21
bmi _020903D4
mov r0, r5
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020903D4:
adds r0, r5, #1
adc r1, r1, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020903E4:
.byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5
.byte 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7
.byte 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB
.byte 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0
.byte 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6
.byte 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD
.byte 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4
.byte 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD
.byte 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6
.byte 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F
.byte 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99
.byte 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94
.byte 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F
.byte 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A
.byte 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85
.byte 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81
.byte 0x81, 0x81, 0x80, 0x80
_020904E4:
movs r1, ip, lsl #0x1f
orr r1, r1, #0x7f000000
orr r1, r1, #0xf00000
mov r0, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020904FC:
mvn r6, ip, asr #1
cmp r6, #0x34
bgt _02090648
beq _02090624
cmp r6, #0x14
bge _02090544
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, ip, lsl #31
mov ip, lr
mov lr, #0
b _02090574
_02090544:
rsb r6, r6, #0x33
mov lr, r1, lsl r6
mov r1, ip, lsl #0x1f
rsb r6, r6, #0x20
orr ip, lr, r0, lsr r6
rsb r6, r6, #0x20
mov lr, r0, lsl r6
mov r5, r5, lsr #0x15
orr r5, r5, r4, lsl #11
rsb r6, r6, #0x1f
mov r0, r5, lsr r6
mov r4, #0
_02090574:
rsbs r2, r2, #0
mul r4, r2, r4
mov r5, #0
umlal r5, r4, r2, r0
rsc r3, r3, #0
mla r4, r0, r3, r4
cmp r4, ip
cmpeq r5, lr
ldmeqia sp!, {r4, r5, r6, lr}
bxeq lr
adds r5, r5, r2
adc r4, r4, r3
cmp r4, ip
bmi _02090618
bne _020905BC
cmp r5, lr
beq _02090608
blo _02090618
_020905BC:
subs r5, r5, r2
sbc r4, r4, r3
_020905C4:
adds r5, r5, r5
adc r4, r4, r4
adds r5, r5, r2
adc r4, r4, r3
adds lr, lr, lr
adc ip, ip, ip
cmp r4, ip
bmi _02090608
ldmneia sp!, {r4, r5, r6, lr}
bxne lr
cmp r5, lr
blo _02090608
ldmneia sp!, {r4, r5, r6, lr}
bxne lr
tst r0, #1
ldmeqia sp!, {r4, r5, r6, lr}
bxeq lr
_02090608:
adds r0, r0, #1
adc r1, r1, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_02090618:
adds r0, r0, #1
adc r1, r1, #0
b _020905C4
_02090624:
rsbs r2, r2, #0
rsc r3, r3, #0
cmp r1, r3
cmpeq r0, r2
mov r1, ip, lsl #0x1f
mov r0, #0
movne r0, #1
ldmia sp!, {r4, r5, r6, lr}
bx lr
_02090648:
mov r1, ip, lsl #0x1f
mov r0, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_02090658:
orrs r5, r0, r1, lsl #1
beq _0209077C
cmp ip, lr
beq _020906C0
movs r1, r1, lsl #0xc
beq _0209069C
clz r5, r1
movs r1, r1, lsl r5
sub ip, ip, r5
add r5, ip, #0x1f
mov r1, r1, lsr #0xb
orr r1, r1, r0, lsr r5
rsb r5, r5, #0x20
mov r0, r0, lsl r5
mov ip, ip, lsl #1
orr ip, ip, r4, lsr #31
b _020902D0
_0209069C:
mvn ip, #0x13
clz r5, r0
movs r0, r0, lsl r5
sub ip, ip, r5
mov r1, r0, lsr #0xb
mov r0, r0, lsl #0x15
mov ip, ip, lsl #1
orr ip, ip, r4, lsr #31
b _020902D0
_020906C0:
orrs r5, r0, r1, lsl #12
bne _020907A4
bic r5, r3, #0x80000000
cmp r5, lr, lsl #19
bhs _020906E4
and r5, r3, #0x80000000
eor r1, r5, r1
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020906E4:
orrs r5, r2, r3, lsl #12
bne _020907C4
b _020907DC
_020906F0:
orrs r5, r2, r3, lsl #1
beq _02090768
cmp r4, lr
beq _02090750
movs r3, r3, lsl #0xc
beq _02090730
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 #1
b _020902E4
_02090730:
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 #1
b _020902E4
_02090750:
orrs r5, r2, r3, lsl #12
bne _020907C4
mov r1, ip, lsl #0x1f
mov r0, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_02090768:
mov r1, ip, lsl #0x1f
orr r1, r1, lr, lsl #19
mov r0, #0
ldmia sp!, {r4, r5, r6, lr}
bx lr
_0209077C:
orrs r5, r2, r3, lsl #1
beq _020907DC
bic r5, r3, #0x80000000
cmp r5, lr, lsl #19
cmpeq r2, #0
bhi _020907C4
eor r1, r1, r3
and r1, r1, #0x80000000
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020907A4:
tst r1, #0x80000
beq _020907DC
bic r5, r3, #0x80000000
cmp r5, lr, lsl #19
cmpeq r2, #0
bhi _020907C4
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020907C4:
tst r3, #0x80000
beq _020907DC
mov r1, r3
mov r0, r2
ldmia sp!, {r4, r5, r6, lr}
bx lr
_020907DC:
orr r1, r1, #0x7f000000
orr r1, r1, #0xf80000
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020907EC: .word 0x00000FFE
arm_func_end _ddiv
arm_func_start _fp_init
_fp_init: ; 0x020907F0
bx lr
arm_func_end _fp_init
arm_func_start sub_020907F4
sub_020907F4: ; 0x020907F4
str lr, [sp, #-4]!
mov r1, r0
mov r0, #3
swi 0x123456
ldr pc, [sp], #4
arm_func_end sub_020907F4
arm_func_start sub_02090808
sub_02090808: ; 0x02090808
str lr, [sp, #-4]!
mov r1, #0
mov r0, #7
swi 0x123456
ldr pc, [sp], #4
arm_func_end sub_02090808
arm_func_start sub_0209081C
sub_0209081C: ; 0x0209081C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r2
ldr r5, [r6]
mov r7, r1
cmp r5, #0
mov r4, #0
bls _02090864
_02090838:
bl sub_02090808
and r1, r0, #0xff
cmp r1, #0xd
strb r0, [r7, r4]
cmpne r1, #0xa
addeq r0, r4, #1
streq r0, [r6]
beq _02090864
add r4, r4, #1
cmp r4, r5
blo _02090838
_02090864:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0209081C
arm_func_start sub_0209086C
sub_0209086C: ; 0x0209086C
stmdb sp!, {r4, r5, r6, lr}
ldr r5, [r2]
mov r6, r1
cmp r5, #0
mov r4, #0
bls _02090898
_02090884:
add r0, r6, r4
bl sub_020907F4
add r4, r4, #1
cmp r4, r5
blo _02090884
_02090898:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0209086C
arm_func_start sub_020908A0
sub_020908A0: ; 0x020908A0
mov r0, #0
bx lr
arm_func_end sub_020908A0
arm_func_start sub_020908A8
sub_020908A8: ; 0x020908A8
stmdb sp!, {r4, lr}
ldr r4, _020908D0 ; =_020AEEF0
b _020908BC
_020908B4:
blx r0
add r4, r4, #4
_020908BC:
cmp r4, #0
ldrne r0, [r4]
cmpne r0, #0
bne _020908B4
ldmia sp!, {r4, pc}
.align 2, 0
_020908D0: .word _020AEEF0
arm_func_end sub_020908A8
; 0x020908D4