pokediamond/arm9/asm/unk_0200E850.s

6084 lines
111 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.extern FX_SinCosTable_
.section .rodata
.global UNK_020ECF9C
UNK_020ECF9C: ; 0x020ECF9C
.byte 0x00, 0xC0, 0x00
.global UNK_020ECF9F
UNK_020ECF9F: ; 0x020ECF9F
.byte 0x00, 0xC0, 0x01
.global UNK_020ECFA2
UNK_020ECFA2: ; 0x020ECFA2
.byte 0xC0, 0x00, 0x00
.global UNK_020ECFA5
UNK_020ECFA5: ; 0x020ECFA5
.byte 0xC0, 0x00, 0x01
.global UNK_020ECFA8
UNK_020ECFA8: ; 0x020ECFA8
.byte 0x60, 0x00, 0x01, 0x60, 0xC0, 0x01
.global UNK_020ECFAE
UNK_020ECFAE: ; 0x020ECFAE
.byte 0x00, 0x5E, 0x01, 0xC0, 0x62, 0x01
.global UNK_020ECFB4
UNK_020ECFB4: ; 0x020ECFB4
.byte 0x00, 0x60, 0x00, 0xC0, 0x60, 0x00
.global UNK_020ECFBA
UNK_020ECFBA: ; 0x020ECFBA
.byte 0x5E, 0x00, 0x00, 0x62, 0xC0, 0x00
.global UNK_020ECFC0
UNK_020ECFC0: ; 0x020ECFC0
.byte 0x00, 0x60, 0x01, 0xC0, 0x60, 0x01
.global UNK_020ECFC6
UNK_020ECFC6: ; 0x020ECFC6
.byte 0x60, 0x00, 0x00, 0x60, 0xC0, 0x00
.global UNK_020ECFCC
UNK_020ECFCC: ; 0x020ECFCC
.byte 0x40, 0x00, 0x00, 0x80, 0x40, 0x00, 0xC0, 0x80, 0x00
.global UNK_020ECFD5
UNK_020ECFD5: ; 0x020ECFD5
.byte 0x00, 0x40, 0x01, 0x40, 0x80, 0x01, 0x80, 0xC0, 0x01, 0x00, 0x00
.global UNK_020ECFE0
UNK_020ECFE0: ; 0x020ECFE0
.byte 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x01
.global UNK_020ECFEC
UNK_020ECFEC: ; 0x020ECFEC
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00
.global UNK_020ECFF8
UNK_020ECFF8: ; 0x020ECFF8
.byte 0x00, 0x00, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x00, 0x20, 0x3F, 0x01, 0x00
.global UNK_020ED004
UNK_020ED004: ; 0x020ED004
.byte 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED010
UNK_020ED010: ; 0x020ED010
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED01C
UNK_020ED01C: ; 0x020ED01C
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x3F, 0x20, 0x01, 0x00
.global UNK_020ED028
UNK_020ED028: ; 0x020ED028
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x20, 0x3F, 0x00, 0x00
.global UNK_020ED034
UNK_020ED034: ; 0x020ED034
.byte 0x00, 0x00, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x00
.global UNK_020ED040
UNK_020ED040: ; 0x020ED040
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED050
UNK_020ED050: ; 0x020ED050
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED060
UNK_020ED060: ; 0x020ED060
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED070
UNK_020ED070: ; 0x020ED070
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0xB0, 0xFF, 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED080
UNK_020ED080: ; 0x020ED080
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xB0, 0xFF, 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED090
UNK_020ED090: ; 0x020ED090
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED0A0
UNK_020ED0A0: ; 0x020ED0A0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED0C4
UNK_020ED0C4: ; 0x020ED0C4
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED0E8
UNK_020ED0E8: ; 0x020ED0E8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED10C
UNK_020ED10C: ; 0x020ED10C
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x01
.global UNK_020ED130
UNK_020ED130: ; 0x020ED130
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x01
.global UNK_020ED154
UNK_020ED154: ; 0x020ED154
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED178
UNK_020ED178: ; 0x020ED178
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x00
.global UNK_020ED19C
UNK_020ED19C: ; 0x020ED19C
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x00
.global UNK_020ED1C0
UNK_020ED1C0: ; 0x020ED1C0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x01
.global UNK_020ED1E4
UNK_020ED1E4: ; 0x020ED1E4
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x00
.global UNK_020ED208
UNK_020ED208: ; 0x020ED208
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x01
.global UNK_020ED22C
UNK_020ED22C: ; 0x020ED22C
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x01, 0x20, 0x3F, 0x01
.global UNK_020ED250
UNK_020ED250: ; 0x020ED250
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x3F, 0x00
.global UNK_020ED274
UNK_020ED274: ; 0x020ED274
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x01, 0x20, 0x3F, 0x00
.global UNK_020ED298
UNK_020ED298: ; 0x020ED298
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.global UNK_020ED2D8
UNK_020ED2D8: ; 0x020ED2D8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
.byte 0xFF, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
.byte 0xFF, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.global UNK_020ED318
UNK_020ED318: ; 0x020ED318
.byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0xFF, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.global UNK_020ED358
UNK_020ED358: ; 0x020ED358
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.section .data
.global UNK_02105AF8
UNK_02105AF8: ; 0x02105AF8
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00
.global UNK_02105B00
UNK_02105B00: ; 0x02105B00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.global UNK_02105B08
UNK_02105B08: ; 0x02105B08
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00
.global UNK_02105B10
UNK_02105B10: ; 0x02105B10
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.global UNK_02105B18
UNK_02105B18: ; 0x02105B18
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00
.global UNK_02105B20
UNK_02105B20: ; 0x02105B20
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.global UNK_02105B28
UNK_02105B28: ; 0x02105B28
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00
.global UNK_02105B30
UNK_02105B30: ; 0x02105B30
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.global UNK_02105B38
UNK_02105B38: ; 0x02105B38
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.global UNK_02105B40
UNK_02105B40: ; 0x02105B40
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00
.global UNK_02105B48
UNK_02105B48: ; 0x02105B48
.byte 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x33, 0x0B, 0x00, 0x00
.global UNK_02105B78
UNK_02105B78: ; 0x02105B78
.byte 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00
.byte 0x00, 0x3F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x33, 0x0B, 0x00, 0x00
.text
thumb_func_start sub_0200E850
sub_0200E850: ; 0x0200E850
push {r3, lr}
ldr r1, [r0, #0xc]
cmp r1, #0x0
bne _0200E866
mov r1, #0x1
str r1, [r0, #0x28]
str r1, [r0, #0x2c]
bl sub_0200F20C
mov r0, #0x0
pop {r3, pc}
_0200E866:
bl sub_0200F2AC
pop {r3, pc}
thumb_func_start sub_0200E86C
sub_0200E86C: ; 0x0200E86C
push {r3, lr}
ldr r1, [r0, #0xc]
cmp r1, #0x0
bne _0200E884
mov r1, #0x0
str r1, [r0, #0x28]
mov r2, #0x1
str r2, [r0, #0x2c]
bl sub_0200F20C
mov r0, #0x0
pop {r3, pc}
_0200E884:
bl sub_0200F2AC
pop {r3, pc}
.balign 4
thumb_func_start sub_0200E88C
sub_0200E88C: ; 0x0200E88C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E8B4
ldr r1, _0200E8BC ; =UNK_020ECF9F
ldr r0, _0200E8C0 ; =UNK_02105AF8
str r1, [r0, #0x30]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E8C4 ; =UNK_02105B28
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E8B4:
bl sub_02010F70
pop {r4, pc}
nop
_0200E8BC: .word UNK_020ECF9F
_0200E8C0: .word UNK_02105AF8
_0200E8C4: .word UNK_02105B28
thumb_func_start sub_0200E8C8
sub_0200E8C8: ; 0x0200E8C8
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E8EE
ldr r1, _0200E8F4 ; =UNK_020ECF9C
ldr r0, _0200E8F8 ; =UNK_02105AF8
str r1, [r0, #0x40]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E8FC ; =UNK_02105B38
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E8EE:
bl sub_02010F70
pop {r4, pc}
.balign 4
_0200E8F4: .word UNK_020ECF9C
_0200E8F8: .word UNK_02105AF8
_0200E8FC: .word UNK_02105B38
thumb_func_start sub_0200E900
sub_0200E900: ; 0x0200E900
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E928
ldr r1, _0200E930 ; =UNK_020ECFA5
ldr r0, _0200E934 ; =UNK_02105AF8
str r1, [r0, #0x48]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E938 ; =UNK_02105B40
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E928:
bl sub_02010F70
pop {r4, pc}
nop
_0200E930: .word UNK_020ECFA5
_0200E934: .word UNK_02105AF8
_0200E938: .word UNK_02105B40
thumb_func_start sub_0200E93C
sub_0200E93C: ; 0x0200E93C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E962
ldr r1, _0200E968 ; =UNK_020ECFA2
ldr r0, _0200E96C ; =UNK_02105AF8
str r1, [r0, #0x38]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E970 ; =UNK_02105B30
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E962:
bl sub_02010F70
pop {r4, pc}
.balign 4
_0200E968: .word UNK_020ECFA2
_0200E96C: .word UNK_02105AF8
_0200E970: .word UNK_02105B30
thumb_func_start sub_0200E974
sub_0200E974: ; 0x0200E974
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E996
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E99C ; =UNK_020ED0E8
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E996:
bl sub_0200FD1C
pop {r4, pc}
.balign 4
_0200E99C: .word UNK_020ED0E8
thumb_func_start sub_0200E9A0
sub_0200E9A0: ; 0x0200E9A0
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E9C0
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200E9C8 ; =UNK_020ED154
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E9C0:
bl sub_0200FD1C
pop {r4, pc}
nop
_0200E9C8: .word UNK_020ED154
thumb_func_start sub_0200E9CC
sub_0200E9CC: ; 0x0200E9CC
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200E9F4
ldr r1, _0200E9FC ; =UNK_020ECFC0
ldr r0, _0200EA00 ; =UNK_02105AF8
str r1, [r0, #0x20]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EA04 ; =UNK_02105B18
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200E9F4:
bl sub_02010F70
pop {r4, pc}
nop
_0200E9FC: .word UNK_020ECFC0
_0200EA00: .word UNK_02105AF8
_0200EA04: .word UNK_02105B18
thumb_func_start sub_0200EA08
sub_0200EA08: ; 0x0200EA08
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EA2E
ldr r1, _0200EA34 ; =UNK_020ECFC6
ldr r0, _0200EA38 ; =UNK_02105AF8
str r1, [r0, #0x28]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EA3C ; =UNK_02105B20
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EA2E:
bl sub_02010F70
pop {r4, pc}
.balign 4
_0200EA34: .word UNK_020ECFC6
_0200EA38: .word UNK_02105AF8
_0200EA3C: .word UNK_02105B20
thumb_func_start sub_0200EA40
sub_0200EA40: ; 0x0200EA40
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EA68
ldr r1, _0200EA70 ; =UNK_020ECFA8
ldr r0, _0200EA74 ; =UNK_02105AF8
str r1, [r0, #0x10]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EA78 ; =UNK_02105B08
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EA68:
bl sub_02010F70
pop {r4, pc}
nop
_0200EA70: .word UNK_020ECFA8
_0200EA74: .word UNK_02105AF8
_0200EA78: .word UNK_02105B08
thumb_func_start sub_0200EA7C
sub_0200EA7C: ; 0x0200EA7C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EAA2
ldr r1, _0200EAA8 ; =UNK_020ECFB4
ldr r0, _0200EAAC ; =UNK_02105AF8
str r1, [r0, #0x18]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EAB0 ; =UNK_02105B10
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EAA2:
bl sub_02010F70
pop {r4, pc}
.balign 4
_0200EAA8: .word UNK_020ECFB4
_0200EAAC: .word UNK_02105AF8
_0200EAB0: .word UNK_02105B10
thumb_func_start sub_0200EAB4
sub_0200EAB4: ; 0x0200EAB4
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EAD6
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EADC ; =UNK_020ED1C0
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EAD6:
bl sub_0200FD1C
pop {r4, pc}
.balign 4
_0200EADC: .word UNK_020ED1C0
thumb_func_start sub_0200EAE0
sub_0200EAE0: ; 0x0200EAE0
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EB00
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EB08 ; =UNK_020ED1E4
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EB00:
bl sub_0200FD1C
pop {r4, pc}
nop
_0200EB08: .word UNK_020ED1E4
thumb_func_start sub_0200EB0C
sub_0200EB0C: ; 0x0200EB0C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EB30
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EB38 ; =UNK_020ED208
ldr r2, _0200EB3C ; =UNK_020ED22C
add r0, r4, #0x0
bl sub_0200FD6C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EB30:
bl sub_0200FDC4
pop {r4, pc}
nop
_0200EB38: .word UNK_020ED208
_0200EB3C: .word UNK_020ED22C
thumb_func_start sub_0200EB40
sub_0200EB40: ; 0x0200EB40
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EB62
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EB68 ; =UNK_020ED250
ldr r2, _0200EB6C ; =UNK_020ED274
add r0, r4, #0x0
bl sub_0200FD6C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EB62:
bl sub_0200FDC4
pop {r4, pc}
.balign 4
_0200EB68: .word UNK_020ED250
_0200EB6C: .word UNK_020ED274
thumb_func_start sub_0200EB70
sub_0200EB70: ; 0x0200EB70
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EB92
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EB98 ; =UNK_020ED090
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EB92:
bl sub_0200FF50
pop {r4, pc}
.balign 4
_0200EB98: .word UNK_020ED090
thumb_func_start sub_0200EB9C
sub_0200EB9C: ; 0x0200EB9C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EBBC
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EBC4 ; =UNK_020ED040
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EBBC:
bl sub_0200FF50
pop {r4, pc}
nop
_0200EBC4: .word UNK_020ED040
thumb_func_start sub_0200EBC8
sub_0200EBC8: ; 0x0200EBC8
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EBEA
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EBF0 ; =UNK_020ED050
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EBEA:
bl sub_0200FF50
pop {r4, pc}
.balign 4
_0200EBF0: .word UNK_020ED050
thumb_func_start sub_0200EBF4
sub_0200EBF4: ; 0x0200EBF4
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EC14
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EC1C ; =UNK_020ED060
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EC14:
bl sub_0200FF50
pop {r4, pc}
nop
_0200EC1C: .word UNK_020ED060
thumb_func_start sub_0200EC20
sub_0200EC20: ; 0x0200EC20
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EC42
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EC48 ; =UNK_020ECFE0
add r0, r4, #0x0
bl sub_020101EC
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EC42:
bl sub_02010224
pop {r4, pc}
.balign 4
_0200EC48: .word UNK_020ECFE0
thumb_func_start sub_0200EC4C
sub_0200EC4C: ; 0x0200EC4C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EC6C
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EC74 ; =UNK_020ECFEC
add r0, r4, #0x0
bl sub_020101EC
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EC6C:
bl sub_02010224
pop {r4, pc}
nop
_0200EC74: .word UNK_020ECFEC
thumb_func_start sub_0200EC78
sub_0200EC78: ; 0x0200EC78
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EC9A
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ECA0 ; =UNK_020ED0A0
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EC9A:
bl sub_0200FD1C
pop {r4, pc}
.balign 4
_0200ECA0: .word UNK_020ED0A0
thumb_func_start sub_0200ECA4
sub_0200ECA4: ; 0x0200ECA4
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200ECC4
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ECCC ; =UNK_020ED0C4
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200ECC4:
bl sub_0200FD1C
pop {r4, pc}
nop
_0200ECCC: .word UNK_020ED0C4
thumb_func_start sub_0200ECD0
sub_0200ECD0: ; 0x0200ECD0
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200ECF2
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ECF8 ; =UNK_020ED10C
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200ECF2:
bl sub_0200FD1C
pop {r4, pc}
.balign 4
_0200ECF8: .word UNK_020ED10C
thumb_func_start sub_0200ECFC
sub_0200ECFC: ; 0x0200ECFC
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200ED1C
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ED24 ; =UNK_020ED178
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200ED1C:
bl sub_0200FD1C
pop {r4, pc}
nop
_0200ED24: .word UNK_020ED178
thumb_func_start sub_0200ED28
sub_0200ED28: ; 0x0200ED28
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200ED4A
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ED50 ; =UNK_020ED004
add r0, r4, #0x0
bl sub_020103F0
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200ED4A:
bl sub_02010428
pop {r4, pc}
.balign 4
_0200ED50: .word UNK_020ED004
thumb_func_start sub_0200ED54
sub_0200ED54: ; 0x0200ED54
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200ED74
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200ED7C ; =UNK_020ED010
add r0, r4, #0x0
bl sub_020103F0
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200ED74:
bl sub_02010428
pop {r4, pc}
nop
_0200ED7C: .word UNK_020ED010
thumb_func_start sub_0200ED80
sub_0200ED80: ; 0x0200ED80
push {r4, lr}
sub sp, #0x10
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EDC4
ldr r0, _0200EDCC ; =UNK_020ED298
mov r1, #0x4
str r0, [sp, #0x0]
ldr r0, _0200EDD0 ; =UNK_020ED2D8
str r0, [sp, #0x4]
add r0, sp, #0x0
strb r1, [r0, #0x8]
mov r1, #0x0
strb r1, [r0, #0x9]
mov r1, #0x3f
strb r1, [r0, #0xa]
mov r1, #0x20
strb r1, [r0, #0xb]
mov r1, #0x1
strb r1, [r0, #0xc]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010688
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
add sp, #0x10
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EDC4:
bl sub_020106C0
add sp, #0x10
pop {r4, pc}
.balign 4
_0200EDCC: .word UNK_020ED298
_0200EDD0: .word UNK_020ED2D8
thumb_func_start sub_0200EDD4
sub_0200EDD4: ; 0x0200EDD4
push {r4, lr}
sub sp, #0x10
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EE14
ldr r0, _0200EE1C ; =UNK_020ED318
mov r1, #0x4
str r0, [sp, #0x0]
ldr r0, _0200EE20 ; =UNK_020ED358
mov r2, #0x0
str r0, [sp, #0x4]
add r0, sp, #0x0
strb r1, [r0, #0x8]
strb r2, [r0, #0x9]
mov r1, #0x3f
strb r1, [r0, #0xa]
mov r1, #0x20
strb r1, [r0, #0xb]
strb r2, [r0, #0xc]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010688
mov r0, #0x0
str r0, [r4, #0x28]
add sp, #0x10
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EE14:
bl sub_020106C0
add sp, #0x10
pop {r4, pc}
.balign 4
_0200EE1C: .word UNK_020ED318
_0200EE20: .word UNK_020ED358
thumb_func_start sub_0200EE24
sub_0200EE24: ; 0x0200EE24
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EE4C
ldr r1, _0200EE54 ; =UNK_020ECFD5
ldr r0, _0200EE58 ; =UNK_02105AF8
str r1, [r0, #0x0]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EE5C ; =UNK_02105AF8
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EE4C:
bl sub_02010F70
pop {r4, pc}
nop
_0200EE54: .word UNK_020ECFD5
_0200EE58: .word UNK_02105AF8
_0200EE5C: .word UNK_02105AF8
thumb_func_start sub_0200EE60
sub_0200EE60: ; 0x0200EE60
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EE86
ldr r1, _0200EE8C ; =UNK_020ECFCC
ldr r0, _0200EE90 ; =UNK_02105AF8
str r1, [r0, #0x8]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EE94 ; =UNK_02105B00
add r0, r4, #0x0
bl sub_02010F2C
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EE86:
bl sub_02010F70
pop {r4, pc}
.balign 4
_0200EE8C: .word UNK_020ECFCC
_0200EE90: .word UNK_02105AF8
_0200EE94: .word UNK_02105B00
thumb_func_start sub_0200EE98
sub_0200EE98: ; 0x0200EE98
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EECA
ldr r3, _0200EED4 ; =UNK_020ECFF8
add r2, sp, #0x0
ldmia r3!, {r0-r1}
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010948
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
add sp, #0xc
str r0, [r4, #0x2c]
pop {r3-r4, pc}
_0200EECA:
bl sub_02010988
add sp, #0xc
pop {r3-r4, pc}
nop
_0200EED4: .word UNK_020ECFF8
thumb_func_start sub_0200EED8
sub_0200EED8: ; 0x0200EED8
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EF08
ldr r3, _0200EF10 ; =UNK_020ED034
add r2, sp, #0x0
ldmia r3!, {r0-r1}
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010948
mov r0, #0x0
str r0, [r4, #0x28]
add sp, #0xc
str r0, [r4, #0x2c]
pop {r3-r4, pc}
_0200EF08:
bl sub_02010988
add sp, #0xc
pop {r3-r4, pc}
.balign 4
_0200EF10: .word UNK_020ED034
thumb_func_start sub_0200EF14
sub_0200EF14: ; 0x0200EF14
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EF46
ldr r3, _0200EF50 ; =UNK_020ED01C
add r2, sp, #0x0
ldmia r3!, {r0-r1}
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010C7C
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
add sp, #0xc
str r0, [r4, #0x2c]
pop {r3-r4, pc}
_0200EF46:
bl sub_02010CBC
add sp, #0xc
pop {r3-r4, pc}
nop
_0200EF50: .word UNK_020ED01C
thumb_func_start sub_0200EF54
sub_0200EF54: ; 0x0200EF54
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EF84
ldr r3, _0200EF8C ; =UNK_020ED028
add r2, sp, #0x0
ldmia r3!, {r0-r1}
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
ldrh r0, [r4, #0x24]
bl sub_0200E420
add r0, r4, #0x0
add r1, sp, #0x0
bl sub_02010C7C
mov r0, #0x0
str r0, [r4, #0x28]
add sp, #0xc
str r0, [r4, #0x2c]
pop {r3-r4, pc}
_0200EF84:
bl sub_02010CBC
add sp, #0xc
pop {r3-r4, pc}
.balign 4
_0200EF8C: .word UNK_020ED028
thumb_func_start sub_0200EF90
sub_0200EF90: ; 0x0200EF90
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EFB2
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EFB8 ; =UNK_020ED080
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EFB2:
bl sub_0200FF50
pop {r4, pc}
.balign 4
_0200EFB8: .word UNK_020ED080
thumb_func_start sub_0200EFBC
sub_0200EFBC: ; 0x0200EFBC
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200EFDC
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200EFE4 ; =UNK_020ED070
add r0, r4, #0x0
bl sub_0200FF18
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200EFDC:
bl sub_0200FF50
pop {r4, pc}
nop
_0200EFE4: .word UNK_020ED070
thumb_func_start sub_0200EFE8
sub_0200EFE8: ; 0x0200EFE8
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200F00A
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200F010 ; =UNK_020ED130
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200F00A:
bl sub_0200FD1C
pop {r4, pc}
.balign 4
_0200F010: .word UNK_020ED130
thumb_func_start sub_0200F014
sub_0200F014: ; 0x0200F014
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200F034
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200F03C ; =UNK_020ED19C
add r0, r4, #0x0
bl sub_0200FCC8
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200F034:
bl sub_0200FD1C
pop {r4, pc}
nop
_0200F03C: .word UNK_020ED19C
thumb_func_start sub_0200F040
sub_0200F040: ; 0x0200F040
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200F068
ldr r1, _0200F070 ; =UNK_020ECFAE
ldr r0, _0200F074 ; =UNK_02105AF8
str r1, [r0, #0x74]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200F078 ; =UNK_02105B48
add r0, r4, #0x0
bl sub_020111AC
mov r0, #0x1
str r0, [r4, #0x28]
mov r0, #0x0
str r0, [r4, #0x2c]
pop {r4, pc}
_0200F068:
bl sub_02011214
pop {r4, pc}
nop
_0200F070: .word UNK_020ECFAE
_0200F074: .word UNK_02105AF8
_0200F078: .word UNK_02105B48
thumb_func_start sub_0200F07C
sub_0200F07C: ; 0x0200F07C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0xc]
cmp r1, #0x0
bne _0200F0A2
ldr r1, _0200F0A8 ; =UNK_020ECFBA
ldr r0, _0200F0AC ; =UNK_02105B78
str r1, [r0, #0x24]
ldrh r0, [r4, #0x24]
bl sub_0200E420
ldr r1, _0200F0B0 ; =UNK_02105B78
add r0, r4, #0x0
bl sub_020111AC
mov r0, #0x0
str r0, [r4, #0x28]
str r0, [r4, #0x2c]
pop {r4, pc}
_0200F0A2:
bl sub_02011214
pop {r4, pc}
.balign 4
_0200F0A8: .word UNK_020ECFBA
_0200F0AC: .word UNK_02105B78
_0200F0B0: .word UNK_02105B78
thumb_func_start sub_0200F0B4
sub_0200F0B4: ; 0x0200F0B4
asr r0, r0, #0x4
lsl r1, r0, #0x1
lsl r0, r1, #0x1
ldr r2, _0200F0C8 ; =FX_SinCosTable_
add r1, r1, #0x1
lsl r1, r1, #0x1
ldr r3, _0200F0CC ; =FX_Div
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
bx r3
.balign 4
_0200F0C8: .word FX_SinCosTable_
_0200F0CC: .word FX_Div
thumb_func_start sub_0200F0D0
sub_0200F0D0: ; 0x0200F0D0
push {r4, lr}
add r4, r1, #0x0
bl sub_0200F0B4
lsl r2, r4, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
add r2, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r2, #0xc
orr r1, r0
asr r0, r1, #0xc
pop {r4, pc}
.balign 4
thumb_func_start sub_0200F0F8
sub_0200F0F8: ; 0x0200F0F8
push {r3-r7, lr}
sub sp, #0x8
add r5, r1, #0x0
add r7, r2, #0x0
add r6, r3, #0x0
bl sub_0200F0B4
cmp r6, r7
bge _0200F142
lsl r1, r6, #0x2
str r0, [sp, #0x0]
asr r0, r0, #0x1f
lsl r4, r6, #0xc
add r5, r5, r1
str r0, [sp, #0x4]
_0200F116:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
asr r3, r4, #0x1f
add r2, r4, #0x0
bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
ldr r2, _0200F148 ; =0x00000000
adc r1, r2
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
asr r0, r0, #0xc
stmia r5!, {r0}
mov r0, #0x1
lsl r0, r0, #0xc
add r6, r6, #0x1
add r4, r4, r0
cmp r6, r7
blt _0200F116
_0200F142:
add sp, #0x8
pop {r3-r7, pc}
nop
_0200F148: .word 0x00000000
thumb_func_start sub_0200F14C
sub_0200F14C: ; 0x0200F14C
push {r4, lr}
add r4, r1, #0x0
bl sub_0200F0B4
add r1, r0, #0x0
lsr r0, r4, #0x1f
add r0, r4, r0
asr r0, r0, #0x1
lsl r0, r0, #0xc
bl FX_Div
pop {r4, pc}
thumb_func_start sub_0200F164
sub_0200F164: ; 0x0200F164
ldr r3, _0200F170 ; =_s32_div_f
sub r0, r1, r0
lsl r0, r0, #0x7
add r1, r2, #0x0
bx r3
nop
_0200F170: .word _s32_div_f
thumb_func_start sub_0200F174
sub_0200F174: ; 0x0200F174
add r0, r0, r1
bpl _0200F17A
mov r0, #0x0
_0200F17A:
cmp r0, #0xff
ble _0200F180
mov r0, #0xff
_0200F180:
bx lr
.balign 4
thumb_func_start sub_0200F184
sub_0200F184: ; 0x0200F184
ldr r3, [r0, #0x0]
ldr r2, [r1, #0x0]
add r2, r3, r2
str r2, [r0, #0x0]
ldr r3, [r0, #0x4]
ldr r2, [r1, #0x4]
add r2, r3, r2
str r2, [r0, #0x4]
ldr r3, [r0, #0x8]
ldr r2, [r1, #0x8]
add r2, r3, r2
str r2, [r0, #0x8]
ldr r2, [r0, #0xc]
ldr r1, [r1, #0xc]
add r1, r2, r1
str r1, [r0, #0xc]
bx lr
.balign 4
thumb_func_start sub_0200F1A8
sub_0200F1A8: ; 0x0200F1A8
push {r3-r7, lr}
add r7, r1, #0x0
ldr r1, [sp, #0x1c]
add r5, r3, #0x0
str r1, [sp, #0x1c]
ldr r1, [r5, #0x0]
ldr r4, [sp, #0x18]
lsl r1, r1, #0x7
str r1, [r0, #0x0]
ldr r1, [r5, #0x4]
add r6, r2, #0x0
lsl r1, r1, #0x7
str r1, [r0, #0x4]
ldr r1, [r5, #0x8]
add r2, r4, #0x0
lsl r1, r1, #0x7
str r1, [r0, #0x8]
ldr r1, [r5, #0xc]
lsl r1, r1, #0x7
str r1, [r0, #0xc]
ldmia r2!, {r0-r1}
stmia r7!, {r0-r1}
ldmia r2!, {r0-r1}
stmia r7!, {r0-r1}
ldr r0, [r5, #0x0]
ldr r1, [r4, #0x0]
ldr r2, [sp, #0x1c]
bl sub_0200F164
str r0, [r6, #0x0]
ldr r0, [r5, #0x4]
ldr r1, [r4, #0x4]
ldr r2, [sp, #0x1c]
bl sub_0200F164
str r0, [r6, #0x4]
ldr r0, [r5, #0x8]
ldr r1, [r4, #0x8]
ldr r2, [sp, #0x1c]
bl sub_0200F164
str r0, [r6, #0x8]
ldr r0, [r5, #0xc]
ldr r1, [r4, #0xc]
ldr r2, [sp, #0x1c]
bl sub_0200F164
str r0, [r6, #0xc]
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200F20C
sub_0200F20C: ; 0x0200F20C
push {r3-r7, lr}
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r6, r1, #0x0
mov r1, #0x1c
bl Heap_Alloc
str r0, [r5, #0x14]
mov r2, #0x1c
mov r1, #0x0
_0200F220:
strb r1, [r0, #0x0]
add r0, r0, #0x1
sub r2, r2, #0x1
bne _0200F220
ldr r4, [r5, #0x14]
cmp r6, #0x0
ldrh r1, [r5, #0x24]
ldr r0, _0200F2A8 ; =0x00007FFF
bne _0200F254
cmp r1, r0
bne _0200F23C
mov r7, #0x10
mov r6, #0x0
b _0200F274
_0200F23C:
cmp r1, #0x0
bne _0200F248
mov r7, #0xf
mvn r7, r7
mov r6, #0x0
b _0200F274
_0200F248:
mov r7, #0xf
mvn r7, r7
mov r6, #0x0
bl GF_AssertFail
b _0200F274
_0200F254:
cmp r1, r0
bne _0200F25E
mov r7, #0x0
mov r6, #0x10
b _0200F274
_0200F25E:
cmp r1, #0x0
bne _0200F26A
mov r7, #0x0
add r6, r7, #0x0
sub r6, #0x10
b _0200F274
_0200F26A:
mov r7, #0x0
add r6, r7, #0x0
sub r6, #0x10
bl GF_AssertFail
_0200F274:
ldr r0, [r5, #0x10]
add r1, r7, #0x0
bl sub_0200E440
ldr r0, [r5, #0x4]
add r1, r6, #0x0
str r0, [r4, #0x0]
ldr r0, [r5, #0x8]
str r0, [r4, #0x4]
mov r0, #0x0
str r0, [r4, #0x8]
lsl r0, r7, #0x7
str r0, [r4, #0xc]
lsl r0, r6, #0x7
str r0, [r4, #0x10]
ldr r2, [r5, #0x4]
add r0, r7, #0x0
bl sub_0200F164
str r0, [r4, #0x14]
ldr r0, [r5, #0x10]
str r0, [r4, #0x18]
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
pop {r3-r7, pc}
.balign 4
_0200F2A8: .word 0x00007FFF
thumb_func_start sub_0200F2AC
sub_0200F2AC: ; 0x0200F2AC
push {r3-r5, lr}
add r5, r0, #0x0
ldr r1, [r5, #0xc]
mov r4, #0x0
ldr r0, [r5, #0x14]
cmp r1, #0x1
beq _0200F2C4
cmp r1, #0x2
beq _0200F2D4
cmp r1, #0x3
beq _0200F2E6
b _0200F2E8
_0200F2C4:
bl sub_0200F2EC
cmp r0, #0x1
bne _0200F2E8
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200F2E8
_0200F2D4:
bl Heap_Free
add r0, r4, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r4, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200F2E8
_0200F2E6:
mov r4, #0x1
_0200F2E8:
add r0, r4, #0x0
pop {r3-r5, pc}
thumb_func_start sub_0200F2EC
sub_0200F2EC: ; 0x0200F2EC
push {r4, lr}
add r1, r0, #0x0
ldr r0, [r1, #0x8]
mov r4, #0x0
add r2, r0, #0x1
str r2, [r1, #0x8]
ldr r0, [r1, #0x4]
cmp r2, r0
blt _0200F32A
str r4, [r1, #0x8]
ldr r0, [r1, #0x0]
sub r0, r0, #0x1
cmp r0, #0x0
ble _0200F314
str r0, [r1, #0x0]
ldr r2, [r1, #0xc]
ldr r0, [r1, #0x14]
add r0, r2, r0
str r0, [r1, #0xc]
b _0200F31A
_0200F314:
ldr r0, [r1, #0x10]
mov r4, #0x1
str r0, [r1, #0xc]
_0200F31A:
ldr r2, [r1, #0xc]
ldr r0, [r1, #0x18]
asr r1, r2, #0x6
lsr r1, r1, #0x19
add r1, r2, r1
asr r1, r1, #0x7
bl sub_0200E440
_0200F32A:
add r0, r4, #0x0
pop {r4, pc}
.balign 4
thumb_func_start sub_0200F330
sub_0200F330: ; 0x0200F330
push {r4-r6, lr}
add r4, r0, #0x0
bne _0200F33A
bl GF_AssertFail
_0200F33A:
ldr r0, _0200F54C ; =0x04000006
ldrh r0, [r0, #0x0]
cmp r0, #0xc0
bge _0200F3E0
add r5, r0, #0x1
cmp r5, #0xbf
ble _0200F34A
sub r5, #0xc0
_0200F34A:
ldr r0, [r4, #0x4]
cmp r0, #0x1
bne _0200F3FA
add r0, r4, #0x0
mov r1, #0x0
bl sub_0200F5D8
ldr r3, [r4, #0x8]
lsl r5, r5, #0x1
mov r4, #0x6
add r1, r0, r5
lsl r4, r4, #0x6
ldrsh r2, [r1, r4]
lsl r4, r4, #0x2
ldrsh r1, [r0, r5]
ldr r0, [r0, r4]
cmp r0, #0x0
ldr r0, _0200F550 ; =0x04000004
bne _0200F3B4
cmp r3, #0x0
bne _0200F394
ldrh r4, [r0, #0x0]
mov r3, #0x2
tst r3, r4
beq _0200F3E0
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3c]
mov r1, #0xc0
add r0, #0x40
strh r1, [r0, #0x0]
pop {r4-r6, pc}
_0200F394:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
beq _0200F3E0
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F554 ; =0x04001040
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
pop {r4-r6, pc}
_0200F3B4:
cmp r3, #0x0
bne _0200F3D8
ldrh r4, [r0, #0x0]
mov r3, #0x2
tst r3, r4
beq _0200F3E0
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3e]
mov r1, #0xc0
add r0, #0x42
strh r1, [r0, #0x0]
pop {r4-r6, pc}
_0200F3D8:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
bne _0200F3E2
_0200F3E0:
b _0200F548
_0200F3E2:
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F558 ; =0x04001042
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
pop {r4-r6, pc}
_0200F3FA:
add r0, r4, #0x0
mov r1, #0x0
bl sub_0200F5D8
add r3, r0, #0x0
lsl r5, r5, #0x1
mov r6, #0x6
add r1, r3, r5
lsl r6, r6, #0x6
ldrsh r2, [r1, r6]
lsl r6, r6, #0x2
ldrsh r1, [r3, r5]
ldr r3, [r3, r6]
ldr r0, [r4, #0x8]
cmp r3, #0x0
bne _0200F460
cmp r0, #0x0
ldr r0, _0200F550 ; =0x04000004
bne _0200F440
ldrh r6, [r0, #0x0]
mov r3, #0x2
tst r3, r6
beq _0200F4A4
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3c]
mov r1, #0xc0
add r0, #0x40
strh r1, [r0, #0x0]
b _0200F4A4
_0200F440:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
beq _0200F4A4
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F554 ; =0x04001040
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
b _0200F4A4
_0200F460:
cmp r0, #0x0
ldr r0, _0200F550 ; =0x04000004
bne _0200F486
ldrh r6, [r0, #0x0]
mov r3, #0x2
tst r3, r6
beq _0200F4A4
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3e]
mov r1, #0xc0
add r0, #0x42
strh r1, [r0, #0x0]
b _0200F4A4
_0200F486:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
beq _0200F4A4
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F558 ; =0x04001042
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
_0200F4A4:
add r0, r4, #0x0
mov r1, #0x1
bl sub_0200F5D8
ldr r3, [r4, #0x8]
mov r4, #0x6
add r1, r0, r5
lsl r4, r4, #0x6
ldrsh r2, [r1, r4]
lsl r4, r4, #0x2
ldrsh r1, [r0, r5]
ldr r0, [r0, r4]
cmp r0, #0x0
ldr r0, _0200F550 ; =0x04000004
bne _0200F506
cmp r3, #0x0
bne _0200F4E6
ldrh r4, [r0, #0x0]
mov r3, #0x2
tst r3, r4
beq _0200F548
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3c]
mov r1, #0xc0
add r0, #0x40
strh r1, [r0, #0x0]
pop {r4-r6, pc}
_0200F4E6:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
beq _0200F548
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F554 ; =0x04001040
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
pop {r4-r6, pc}
_0200F506:
cmp r3, #0x0
bne _0200F52A
ldrh r4, [r0, #0x0]
mov r3, #0x2
tst r3, r4
beq _0200F548
lsl r3, r1, #0x8
mov r1, #0xff
lsl r1, r1, #0x8
and r3, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
orr r1, r3
strh r1, [r0, #0x3e]
mov r1, #0xc0
add r0, #0x42
strh r1, [r0, #0x0]
pop {r4-r6, pc}
_0200F52A:
ldrh r3, [r0, #0x0]
mov r0, #0x2
tst r0, r3
beq _0200F548
mov r0, #0xff
lsl r1, r1, #0x8
lsl r0, r0, #0x8
and r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
ldr r1, _0200F558 ; =0x04001042
strh r0, [r1, #0x0]
mov r0, #0xc0
strh r0, [r1, #0x4]
_0200F548:
pop {r4-r6, pc}
nop
_0200F54C: .word 0x04000006
_0200F550: .word 0x04000004
_0200F554: .word 0x04001040
_0200F558: .word 0x04001042
thumb_func_start sub_0200F55C
sub_0200F55C: ; 0x0200F55C
push {r4-r6, lr}
add r4, r1, #0x0
add r5, r0, #0x0
add r6, r2, #0x0
cmp r4, #0x0
beq _0200F572
cmp r4, #0x1
beq _0200F572
cmp r4, #0x2
beq _0200F58C
pop {r4-r6, pc}
_0200F572:
ldr r1, _0200F5B8 ; =0x00000604
add r0, r3, #0x0
bl Heap_Alloc
str r0, [r5, #0x0]
mov r0, #0x1
str r0, [r5, #0x4]
str r6, [r5, #0x8]
mov r0, #0x6
ldr r1, [r5, #0x0]
lsl r0, r0, #0x8
str r4, [r1, r0]
pop {r4-r6, pc}
_0200F58C:
ldr r1, _0200F5BC ; =0x00000C08
add r0, r3, #0x0
bl Heap_Alloc
str r0, [r5, #0x0]
mov r0, #0x2
str r0, [r5, #0x4]
mov r0, #0x6
mov r3, #0x0
lsl r0, r0, #0x8
str r6, [r5, #0x8]
add r4, r3, #0x0
add r1, r0, #0x4
_0200F5A6:
ldr r2, [r5, #0x0]
add r2, r2, r4
str r3, [r2, r0]
add r3, r3, #0x1
add r4, r4, r1
cmp r3, #0x2
blt _0200F5A6
pop {r4-r6, pc}
nop
_0200F5B8: .word 0x00000604
_0200F5BC: .word 0x00000C08
thumb_func_start sub_0200F5C0
sub_0200F5C0: ; 0x0200F5C0
ldr r3, _0200F5C4 ; =sub_0200F5C8
bx r3
.balign 4
_0200F5C4: .word sub_0200F5C8
thumb_func_start sub_0200F5C8
sub_0200F5C8: ; 0x0200F5C8
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x0]
bl Heap_Free
mov r0, #0x0
str r0, [r4, #0x0]
pop {r4, pc}
thumb_func_start sub_0200F5D8
sub_0200F5D8: ; 0x0200F5D8
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, [r5, #0x4]
add r4, r1, #0x0
cmp r0, r4
bgt _0200F5E8
bl GF_AssertFail
_0200F5E8:
ldr r0, _0200F5F4 ; =0x00000604
ldr r1, [r5, #0x0]
mul r0, r4
add r0, r1, r0
pop {r3-r5, pc}
nop
_0200F5F4: .word 0x00000604
thumb_func_start sub_0200F5F8
sub_0200F5F8: ; 0x0200F5F8
push {r3-r7, lr}
add r5, r1, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x4]
mov r4, #0x0
cmp r0, #0x0
ble _0200F624
mov r7, #0x3
lsl r7, r7, #0x8
add r6, r7, #0x0
_0200F60C:
add r0, r5, #0x0
add r1, r4, #0x0
bl sub_0200F5D8
add r1, r0, r6
add r2, r7, #0x0
bl memcpy
ldr r0, [r5, #0x4]
add r4, r4, #0x1
cmp r4, r0
blt _0200F60C
_0200F624:
ldr r0, [sp, #0x0]
bl SysTask_Destroy
pop {r3-r7, pc}
thumb_func_start sub_0200F62C
sub_0200F62C: ; 0x0200F62C
push {r4-r5, lr}
sub sp, #0xc
add r5, r1, #0x0
add r4, r2, #0x0
cmp r0, #0x0
bne _0200F644
add r0, r5, #0x0
mov r1, #0x0
bl sub_02011634
add sp, #0xc
pop {r4-r5, pc}
_0200F644:
add r0, r5, #0x0
mov r1, #0x1
bl sub_02011634
mov r2, #0x0
add r0, r5, #0x0
mov r1, #0x3f
add r3, r2, #0x0
str r4, [sp, #0x0]
bl sub_02011650
mov r1, #0x0
str r1, [sp, #0x0]
str r1, [sp, #0x4]
add r0, r5, #0x0
add r2, r1, #0x0
add r3, r1, #0x0
str r4, [sp, #0x8]
bl sub_02011698
add r0, r5, #0x0
mov r1, #0x20
mov r2, #0x0
add r3, r4, #0x0
bl sub_02011678
add sp, #0xc
pop {r4-r5, pc}
thumb_func_start sub_0200F67C
sub_0200F67C: ; 0x0200F67C
push {r4-r7, lr}
sub sp, #0xc
add r7, r2, #0x0
ldr r2, [sp, #0x34]
add r6, r0, #0x0
add r5, r3, #0x0
ldr r4, [sp, #0x20]
cmp r2, #0x0
bne _0200F6B8
add r0, r1, #0x0
mov r1, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
bl sub_020114AC
add r0, r7, #0x0
mov r1, #0x0
add r2, r4, #0x0
bl sub_02011534
str r5, [sp, #0x0]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
str r4, [sp, #0x4]
bl sub_02011574
add sp, #0xc
pop {r4-r7, pc}
_0200F6B8:
mov r2, #0x0
str r4, [sp, #0x0]
bl sub_02011650
add r0, r6, #0x0
add r1, r7, #0x0
mov r2, #0x0
add r3, r4, #0x0
bl sub_02011678
ldr r0, [sp, #0x30]
ldr r1, [sp, #0x24]
str r0, [sp, #0x0]
str r5, [sp, #0x4]
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
add r0, r6, #0x0
str r4, [sp, #0x8]
bl sub_02011698
add sp, #0xc
pop {r4-r7, pc}
thumb_func_start sub_0200F6E4
sub_0200F6E4: ; 0x0200F6E4
push {r3, lr}
cmp r3, #0x0
bne _0200F6F4
add r0, r1, #0x0
add r1, r2, #0x0
bl sub_02011480
pop {r3, pc}
_0200F6F4:
bl sub_02011634
pop {r3, pc}
.balign 4
thumb_func_start sub_0200F6FC
sub_0200F6FC: ; 0x0200F6FC
push {r3-r7, lr}
add r4, r2, #0x0
mov r2, #0xc3
add r6, r1, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
add r5, r0, #0x0
add r7, r3, #0x0
bl memset
cmp r4, #0x1
bne _0200F726
mov r0, #0x6
lsl r0, r0, #0x6
str r7, [r5, r0]
mov r0, #0xc2
lsl r0, r0, #0x2
strb r4, [r5, r0]
add r0, r0, #0x1
strb r6, [r5, r0]
pop {r3-r7, pc}
_0200F726:
mov r0, #0x6
lsl r0, r0, #0x6
str r7, [r5, r0]
mov r0, #0xc1
ldr r1, [sp, #0x18]
lsl r0, r0, #0x2
str r1, [r5, r0]
add r1, r0, #0x4
strb r4, [r5, r1]
add r0, r0, #0x5
strb r6, [r5, r0]
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200F740
sub_0200F740: ; 0x0200F740
ldr r3, _0200F74C ; =sub_0200CA98
add r1, r0, #0x0
ldr r0, _0200F750 ; =sub_0200F780
ldr r2, _0200F754 ; =0x000003FF
bx r3
nop
_0200F74C: .word sub_0200CA98
_0200F750: .word sub_0200F780
_0200F754: .word 0x000003FF
thumb_func_start sub_0200F758
sub_0200F758: ; 0x0200F758
push {r3, lr}
ldr r3, _0200F768 ; =0x00000309
str r2, [sp, #0x0]
ldrb r3, [r1, r3]
ldr r2, _0200F76C ; =sub_0200F7AC
bl sub_0200E6CC
pop {r3, pc}
.balign 4
_0200F768: .word 0x00000309
_0200F76C: .word sub_0200F7AC
thumb_func_start sub_0200F770
sub_0200F770: ; 0x0200F770
ldr r3, _0200F778 ; =0x00000309
ldrb r1, [r1, r3]
ldr r3, _0200F77C ; =sub_0200E6F8
bx r3
.balign 4
_0200F778: .word 0x00000309
_0200F77C: .word sub_0200E6F8
thumb_func_start sub_0200F780
sub_0200F780: ; 0x0200F780
push {r3-r7, lr}
mov r7, #0xc0
add r6, r7, #0x0
str r0, [sp, #0x0]
add r5, r1, #0x0
mov r4, #0x0
add r6, #0xc4
_0200F78E:
add r0, r5, #0x0
add r0, #0xc0
add r1, r5, #0x0
add r2, r7, #0x0
bl memcpy
add r4, r4, #0x1
add r5, r5, r6
cmp r4, #0x2
blt _0200F78E
ldr r0, [sp, #0x0]
bl SysTask_Destroy
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200F7AC
sub_0200F7AC: ; 0x0200F7AC
push {r3-r5, lr}
add r4, r0, #0x0
bne _0200F7B6
bl GF_AssertFail
_0200F7B6:
ldr r0, _0200FAC0 ; =0x04000006
ldrh r0, [r0, #0x0]
cmp r0, #0xc0
bge _0200F838
add r0, r0, #0x1
cmp r0, #0xbf
ble _0200F7C6
sub r0, #0xc0
_0200F7C6:
mov r2, #0xc2
lsl r2, r2, #0x2
ldrb r1, [r4, r2]
cmp r1, #0x1
beq _0200F7D2
b _0200F96C
_0200F7D2:
add r0, r4, r0
add r0, #0xc0
ldrb r0, [r0, #0x0]
cmp r0, #0x0
bne _0200F8A2
add r0, r2, #0x1
ldrb r0, [r4, r0]
cmp r0, #0x0
ldr r0, _0200FAC4 ; =0x04000004
bne _0200F802
ldrh r2, [r0, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200F81C
add r0, #0x46
ldrh r2, [r0, #0x0]
mov r1, #0x3f
bic r2, r1
mov r1, #0x3f
orr r2, r1
mov r1, #0x20
orr r1, r2
strh r1, [r0, #0x0]
b _0200F81C
_0200F802:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200F81C
ldr r1, _0200FAC8 ; =0x0400104A
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x3f
orr r2, r0
mov r0, #0x20
orr r0, r2
strh r0, [r1, #0x0]
_0200F81C:
ldr r0, _0200FACC ; =0x00000309
ldrb r1, [r4, r0]
mov r0, #0x6
lsl r0, r0, #0x6
ldr r0, [r4, r0]
cmp r0, #0x0
bne _0200F868
cmp r1, #0x0
bne _0200F84C
ldr r2, _0200FAC4 ; =0x04000004
mov r0, #0x2
ldrh r1, [r2, #0x0]
tst r0, r1
bne _0200F83A
_0200F838:
b _0200FCB0
_0200F83A:
add r2, #0x44
ldrh r1, [r2, #0x0]
mov r0, #0x3f
bic r1, r0
mov r0, #0x20
orr r1, r0
orr r0, r1
strh r0, [r2, #0x0]
pop {r3-r5, pc}
_0200F84C:
ldr r0, _0200FAC4 ; =0x04000004
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200F954
ldr r1, _0200FAD0 ; =0x04001048
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x20
orr r2, r0
orr r0, r2
strh r0, [r1, #0x0]
pop {r3-r5, pc}
_0200F868:
cmp r1, #0x0
ldr r0, _0200FAC4 ; =0x04000004
bne _0200F888
ldrh r1, [r0, #0x0]
mov r2, #0x2
tst r1, r2
beq _0200F954
add r0, #0x44
ldrh r3, [r0, #0x0]
ldr r1, _0200FAD4 ; =0xFFFFC0FF
and r3, r1
lsl r1, r2, #0xc
orr r3, r1
orr r1, r3
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200F888:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200F954
ldr r2, _0200FAD0 ; =0x04001048
ldr r0, _0200FAD4 ; =0xFFFFC0FF
ldrh r1, [r2, #0x0]
and r1, r0
lsr r0, r2, #0xd
orr r1, r0
orr r0, r1
strh r0, [r2, #0x0]
pop {r3-r5, pc}
_0200F8A2:
add r0, r2, #0x1
ldrb r0, [r4, r0]
cmp r0, #0x0
ldr r0, _0200FAC4 ; =0x04000004
bne _0200F8C6
ldrh r2, [r0, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200F8DE
add r0, #0x46
ldrh r2, [r0, #0x0]
mov r1, #0x3f
bic r2, r1
mov r1, #0x20
orr r2, r1
orr r1, r2
strh r1, [r0, #0x0]
b _0200F8DE
_0200F8C6:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200F8DE
ldr r1, _0200FAC8 ; =0x0400104A
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x20
orr r2, r0
orr r0, r2
strh r0, [r1, #0x0]
_0200F8DE:
ldr r0, _0200FACC ; =0x00000309
ldrb r1, [r4, r0]
mov r0, #0x6
lsl r0, r0, #0x6
ldr r0, [r4, r0]
cmp r0, #0x0
ldr r0, _0200FAC4 ; =0x04000004
bne _0200F92A
cmp r1, #0x0
bne _0200F90E
ldrh r2, [r0, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200F954
add r0, #0x44
ldrh r2, [r0, #0x0]
mov r1, #0x3f
bic r2, r1
mov r1, #0x3f
orr r2, r1
mov r1, #0x20
orr r1, r2
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200F90E:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200F954
ldr r1, _0200FAD0 ; =0x04001048
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x3f
orr r2, r0
mov r0, #0x20
orr r0, r2
strh r0, [r1, #0x0]
pop {r3-r5, pc}
_0200F92A:
cmp r1, #0x0
bne _0200F94C
ldrh r1, [r0, #0x0]
mov r2, #0x2
tst r1, r2
beq _0200F954
add r0, #0x44
ldrh r3, [r0, #0x0]
ldr r1, _0200FAD4 ; =0xFFFFC0FF
and r3, r1
mov r1, #0x3f
lsl r1, r1, #0x8
orr r3, r1
lsl r1, r2, #0xc
orr r1, r3
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200F94C:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
bne _0200F956
_0200F954:
b _0200FCB0
_0200F956:
ldr r2, _0200FAD0 ; =0x04001048
ldr r0, _0200FAD4 ; =0xFFFFC0FF
ldrh r1, [r2, #0x0]
and r1, r0
mov r0, #0x3f
lsl r0, r0, #0x8
orr r1, r0
lsr r0, r2, #0xd
orr r0, r1
strh r0, [r2, #0x0]
pop {r3-r5, pc}
_0200F96C:
add r1, r4, r0
add r1, #0xc0
ldrb r1, [r1, #0x0]
cmp r1, #0x0
bne _0200FA38
add r1, r2, #0x1
ldrb r1, [r4, r1]
cmp r1, #0x0
ldr r1, _0200FAC4 ; =0x04000004
bne _0200F99C
ldrh r3, [r1, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200F9B6
add r1, #0x46
ldrh r3, [r1, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x3f
orr r3, r2
mov r2, #0x20
orr r2, r3
strh r2, [r1, #0x0]
b _0200F9B6
_0200F99C:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200F9B6
ldr r2, _0200FAC8 ; =0x0400104A
mov r1, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r1
mov r1, #0x3f
orr r3, r1
mov r1, #0x20
orr r1, r3
strh r1, [r2, #0x0]
_0200F9B6:
ldr r1, _0200FACC ; =0x00000309
ldrb r2, [r4, r1]
mov r1, #0x6
lsl r1, r1, #0x6
ldr r1, [r4, r1]
cmp r1, #0x0
ldr r1, _0200FAC4 ; =0x04000004
bne _0200F9FE
cmp r2, #0x0
bne _0200F9E4
ldrh r3, [r1, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200FA0A
add r1, #0x44
ldrh r3, [r1, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x20
orr r3, r2
orr r2, r3
strh r2, [r1, #0x0]
b _0200FB16
_0200F9E4:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FA0A
ldr r2, _0200FAD0 ; =0x04001048
mov r1, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r1
mov r1, #0x20
orr r3, r1
orr r1, r3
strh r1, [r2, #0x0]
b _0200FB16
_0200F9FE:
cmp r2, #0x0
bne _0200FA1E
ldrh r2, [r1, #0x0]
mov r3, #0x2
tst r2, r3
bne _0200FA0C
_0200FA0A:
b _0200FB16
_0200FA0C:
add r1, #0x44
ldrh r5, [r1, #0x0]
ldr r2, _0200FAD4 ; =0xFFFFC0FF
and r5, r2
lsl r2, r3, #0xc
orr r5, r2
orr r2, r5
strh r2, [r1, #0x0]
b _0200FB16
_0200FA1E:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FB16
ldr r3, _0200FAD0 ; =0x04001048
ldr r1, _0200FAD4 ; =0xFFFFC0FF
ldrh r2, [r3, #0x0]
and r2, r1
lsr r1, r3, #0xd
orr r2, r1
orr r1, r2
strh r1, [r3, #0x0]
b _0200FB16
_0200FA38:
add r1, r2, #0x1
ldrb r1, [r4, r1]
cmp r1, #0x0
ldr r1, _0200FAC4 ; =0x04000004
bne _0200FA5C
ldrh r3, [r1, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200FA74
add r1, #0x46
ldrh r3, [r1, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x20
orr r3, r2
orr r2, r3
strh r2, [r1, #0x0]
b _0200FA74
_0200FA5C:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FA74
ldr r2, _0200FAC8 ; =0x0400104A
mov r1, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r1
mov r1, #0x20
orr r3, r1
orr r1, r3
strh r1, [r2, #0x0]
_0200FA74:
ldr r1, _0200FACC ; =0x00000309
ldrb r2, [r4, r1]
mov r1, #0x6
lsl r1, r1, #0x6
ldr r1, [r4, r1]
cmp r1, #0x0
ldr r1, _0200FAC4 ; =0x04000004
bne _0200FAD8
cmp r2, #0x0
bne _0200FAA4
ldrh r3, [r1, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200FB16
add r1, #0x44
ldrh r3, [r1, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x3f
orr r3, r2
mov r2, #0x20
orr r2, r3
strh r2, [r1, #0x0]
b _0200FB16
_0200FAA4:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FB16
ldr r2, _0200FAD0 ; =0x04001048
mov r1, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r1
mov r1, #0x3f
orr r3, r1
mov r1, #0x20
orr r1, r3
strh r1, [r2, #0x0]
b _0200FB16
.balign 4
_0200FAC0: .word 0x04000006
_0200FAC4: .word 0x04000004
_0200FAC8: .word 0x0400104A
_0200FACC: .word 0x00000309
_0200FAD0: .word 0x04001048
_0200FAD4: .word 0xFFFFC0FF
_0200FAD8:
cmp r2, #0x0
bne _0200FAFA
ldrh r2, [r1, #0x0]
mov r3, #0x2
tst r2, r3
beq _0200FB16
add r1, #0x44
ldrh r5, [r1, #0x0]
ldr r2, _0200FCB4 ; =0xFFFFC0FF
and r5, r2
mov r2, #0x3f
lsl r2, r2, #0x8
orr r5, r2
lsl r2, r3, #0xc
orr r2, r5
strh r2, [r1, #0x0]
b _0200FB16
_0200FAFA:
ldrh r2, [r1, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FB16
ldr r3, _0200FCB8 ; =0x04001048
ldr r1, _0200FCB4 ; =0xFFFFC0FF
ldrh r2, [r3, #0x0]
and r2, r1
mov r1, #0x3f
lsl r1, r1, #0x8
orr r2, r1
lsr r1, r3, #0xd
orr r1, r2
strh r1, [r3, #0x0]
_0200FB16:
mov r1, #0x61
lsl r1, r1, #0x2
add r1, r4, r1
add r0, r1, r0
add r0, #0xc0
ldrb r0, [r0, #0x0]
cmp r0, #0x0
ldr r0, _0200FCBC ; =0x00000309
bne _0200FBEC
ldrb r0, [r4, r0]
cmp r0, #0x0
ldr r0, _0200FCC0 ; =0x04000004
bne _0200FB4C
ldrh r3, [r0, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200FB66
add r0, #0x46
ldrh r3, [r0, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x3f
orr r3, r2
mov r2, #0x20
orr r2, r3
strh r2, [r0, #0x0]
b _0200FB66
_0200FB4C:
ldrh r2, [r0, #0x0]
mov r0, #0x2
tst r0, r2
beq _0200FB66
ldr r2, _0200FCC4 ; =0x0400104A
mov r0, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r0
mov r0, #0x3f
orr r3, r0
mov r0, #0x20
orr r0, r3
strh r0, [r2, #0x0]
_0200FB66:
ldr r0, _0200FCBC ; =0x00000309
ldrb r2, [r4, r0]
mov r0, #0x6
lsl r0, r0, #0x6
ldr r0, [r1, r0]
cmp r0, #0x0
bne _0200FBB2
cmp r2, #0x0
bne _0200FB94
ldr r2, _0200FCC0 ; =0x04000004
mov r0, #0x2
ldrh r1, [r2, #0x0]
tst r0, r1
beq _0200FB9E
add r2, #0x44
ldrh r1, [r2, #0x0]
mov r0, #0x3f
bic r1, r0
mov r0, #0x20
orr r1, r0
orr r0, r1
strh r0, [r2, #0x0]
pop {r3-r5, pc}
_0200FB94:
ldr r0, _0200FCC0 ; =0x04000004
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
bne _0200FBA0
_0200FB9E:
b _0200FCB0
_0200FBA0:
ldr r1, _0200FCB8 ; =0x04001048
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x20
orr r2, r0
orr r0, r2
strh r0, [r1, #0x0]
pop {r3-r5, pc}
_0200FBB2:
cmp r2, #0x0
ldr r0, _0200FCC0 ; =0x04000004
bne _0200FBD2
ldrh r1, [r0, #0x0]
mov r2, #0x2
tst r1, r2
beq _0200FCB0
add r0, #0x44
ldrh r3, [r0, #0x0]
ldr r1, _0200FCB4 ; =0xFFFFC0FF
and r3, r1
lsl r1, r2, #0xc
orr r3, r1
orr r1, r3
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200FBD2:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200FCB0
ldr r2, _0200FCB8 ; =0x04001048
ldr r0, _0200FCB4 ; =0xFFFFC0FF
ldrh r1, [r2, #0x0]
and r1, r0
lsr r0, r2, #0xd
orr r1, r0
orr r0, r1
strh r0, [r2, #0x0]
pop {r3-r5, pc}
_0200FBEC:
ldrb r0, [r4, r0]
cmp r0, #0x0
ldr r0, _0200FCC0 ; =0x04000004
bne _0200FC0E
ldrh r3, [r0, #0x0]
mov r2, #0x2
tst r2, r3
beq _0200FC26
add r0, #0x46
ldrh r3, [r0, #0x0]
mov r2, #0x3f
bic r3, r2
mov r2, #0x20
orr r3, r2
orr r2, r3
strh r2, [r0, #0x0]
b _0200FC26
_0200FC0E:
ldrh r2, [r0, #0x0]
mov r0, #0x2
tst r0, r2
beq _0200FC26
ldr r2, _0200FCC4 ; =0x0400104A
mov r0, #0x3f
ldrh r3, [r2, #0x0]
bic r3, r0
mov r0, #0x20
orr r3, r0
orr r0, r3
strh r0, [r2, #0x0]
_0200FC26:
ldr r0, _0200FCBC ; =0x00000309
ldrb r2, [r4, r0]
mov r0, #0x6
lsl r0, r0, #0x6
ldr r0, [r1, r0]
cmp r0, #0x0
ldr r0, _0200FCC0 ; =0x04000004
bne _0200FC72
cmp r2, #0x0
bne _0200FC56
ldrh r2, [r0, #0x0]
mov r1, #0x2
tst r1, r2
beq _0200FCB0
add r0, #0x44
ldrh r2, [r0, #0x0]
mov r1, #0x3f
bic r2, r1
mov r1, #0x3f
orr r2, r1
mov r1, #0x20
orr r1, r2
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200FC56:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200FCB0
ldr r1, _0200FCB8 ; =0x04001048
mov r0, #0x3f
ldrh r2, [r1, #0x0]
bic r2, r0
mov r0, #0x3f
orr r2, r0
mov r0, #0x20
orr r0, r2
strh r0, [r1, #0x0]
pop {r3-r5, pc}
_0200FC72:
cmp r2, #0x0
bne _0200FC94
ldrh r1, [r0, #0x0]
mov r2, #0x2
tst r1, r2
beq _0200FCB0
add r0, #0x44
ldrh r3, [r0, #0x0]
ldr r1, _0200FCB4 ; =0xFFFFC0FF
and r3, r1
mov r1, #0x3f
lsl r1, r1, #0x8
orr r3, r1
lsl r1, r2, #0xc
orr r1, r3
strh r1, [r0, #0x0]
pop {r3-r5, pc}
_0200FC94:
ldrh r1, [r0, #0x0]
mov r0, #0x2
tst r0, r1
beq _0200FCB0
ldr r2, _0200FCB8 ; =0x04001048
ldr r0, _0200FCB4 ; =0xFFFFC0FF
ldrh r1, [r2, #0x0]
and r1, r0
mov r0, #0x3f
lsl r0, r0, #0x8
orr r1, r0
lsr r0, r2, #0xd
orr r0, r1
strh r0, [r2, #0x0]
_0200FCB0:
pop {r3-r5, pc}
nop
_0200FCB4: .word 0xFFFFC0FF
_0200FCB8: .word 0x04001048
_0200FCBC: .word 0x00000309
_0200FCC0: .word 0x04000004
_0200FCC4: .word 0x0400104A
thumb_func_start sub_0200FCC8
sub_0200FCC8: ; 0x0200FCC8
push {r4-r6, lr}
sub sp, #0x8
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r6, r1, #0x0
mov r1, #0x4c
bl Heap_Alloc
str r0, [r5, #0x14]
add r4, r0, #0x0
ldr r0, [r5, #0x10]
add r1, r6, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
add r0, r4, #0x0
bl sub_0200FE20
add r6, #0x20
ldrb r0, [r6, #0x0]
cmp r0, #0x0
ldr r0, [r5, #0x18]
bne _0200FD06
ldr r2, [r4, #0x30]
ldr r3, [r4, #0x44]
mov r1, #0x1
bl sub_0200F6E4
b _0200FD10
_0200FD06:
ldr r2, [r4, #0x30]
ldr r3, [r4, #0x44]
mov r1, #0x2
bl sub_0200F6E4
_0200FD10:
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x8
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_0200FD1C
sub_0200FD1C: ; 0x0200FD1C
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _0200FD34
cmp r0, #0x2
beq _0200FD50
cmp r0, #0x3
beq _0200FD64
b _0200FD66
_0200FD34:
add r0, r4, #0x0
bl sub_0200FE90
cmp r0, #0x1
bne _0200FD66
ldr r0, [r4, #0x44]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FD66
_0200FD50:
add r0, r4, #0x0
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FD66
_0200FD64:
mov r6, #0x1
_0200FD66:
add r0, r6, #0x0
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_0200FD6C
sub_0200FD6C: ; 0x0200FD6C
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r6, r1, #0x0
mov r1, #0x98
add r7, r2, #0x0
bl Heap_Alloc
str r0, [r5, #0x14]
add r4, r0, #0x0
ldr r0, [r5, #0x10]
add r1, r6, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
add r0, r4, #0x0
bl sub_0200FE20
ldr r0, [r5, #0x10]
add r1, r7, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
add r0, r4, #0x0
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
add r0, #0x4c
bl sub_0200FE20
ldr r0, [r5, #0x18]
ldr r2, [r5, #0x10]
ldr r3, [r4, #0x44]
mov r1, #0x3
bl sub_0200F6E4
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x8
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200FDC4
sub_0200FDC4: ; 0x0200FDC4
push {r3-r7, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _0200FDDC
cmp r0, #0x2
beq _0200FE04
cmp r0, #0x3
beq _0200FE18
b _0200FE1A
_0200FDDC:
add r0, r4, #0x0
bl sub_0200FE90
add r7, r0, #0x0
add r0, r4, #0x0
add r0, #0x4c
bl sub_0200FE90
add r0, r7, r0
cmp r0, #0x2
bne _0200FE1A
ldr r0, [r4, #0x44]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FE1A
_0200FE04:
add r0, r4, #0x0
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FE1A
_0200FE18:
mov r6, #0x1
_0200FE1A:
add r0, r6, #0x0
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200FE20
sub_0200FE20: ; 0x0200FE20
push {r3-r7, lr}
sub sp, #0x18
add r4, r1, #0x0
add r1, #0x10
add r7, r3, #0x0
add r5, r0, #0x0
add r6, r2, #0x0
str r1, [sp, #0x0]
add r1, r5, #0x0
add r2, r5, #0x0
add r1, #0x20
add r2, #0x10
add r3, r4, #0x0
str r6, [sp, #0x4]
bl sub_0200F1A8
ldr r1, [sp, #0x30]
add r0, r4, #0x0
add r2, r4, #0x0
str r1, [r5, #0x30]
add r0, #0x20
ldrb r0, [r0, #0x0]
add r2, #0x23
str r0, [r5, #0x34]
str r6, [r5, #0x38]
str r7, [r5, #0x3c]
mov r0, #0x0
str r0, [r5, #0x40]
ldr r0, [sp, #0x34]
str r0, [r5, #0x48]
ldrb r2, [r2, #0x0]
str r2, [r5, #0x44]
str r1, [sp, #0x0]
ldr r1, [r4, #0x0]
add r2, r4, #0x0
str r1, [sp, #0x4]
ldr r1, [r4, #0x4]
add r2, #0x22
str r1, [sp, #0x8]
ldr r1, [r4, #0x8]
str r1, [sp, #0xc]
ldr r1, [r4, #0xc]
str r1, [sp, #0x10]
ldr r1, [r5, #0x44]
str r1, [sp, #0x14]
add r1, r4, #0x0
add r1, #0x21
add r4, #0x20
ldrb r1, [r1, #0x0]
ldrb r2, [r2, #0x0]
ldrb r3, [r4, #0x0]
bl sub_0200F67C
add sp, #0x18
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_0200FE90
sub_0200FE90: ; 0x0200FE90
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
ldr r1, [r4, #0x40]
add r2, r1, #0x1
str r2, [r4, #0x40]
ldr r1, [r4, #0x3c]
cmp r2, r1
blt _0200FF10
mov r1, #0x0
str r1, [r4, #0x40]
ldr r1, [r4, #0x38]
sub r1, r1, #0x1
cmp r1, #0x0
ble _0200FEBA
str r1, [r4, #0x38]
add r1, r4, #0x0
add r1, #0x10
bl sub_0200F184
b _0200FED8
_0200FEBA:
ldr r0, [r4, #0x2c]
str r0, [sp, #0x0]
ldr r0, [r4, #0x34]
str r0, [sp, #0x4]
ldr r0, [r4, #0x30]
str r0, [sp, #0x8]
ldr r0, [r4, #0x48]
ldr r1, [r4, #0x20]
ldr r2, [r4, #0x24]
ldr r3, [r4, #0x28]
bl sub_02011698
add sp, #0xc
mov r0, #0x1
pop {r3-r4, pc}
_0200FED8:
ldr r1, [r4, #0xc]
asr r0, r1, #0x6
lsr r0, r0, #0x19
add r0, r1, r0
asr r0, r0, #0x7
str r0, [sp, #0x0]
ldr r0, [r4, #0x34]
str r0, [sp, #0x4]
ldr r0, [r4, #0x30]
str r0, [sp, #0x8]
ldr r2, [r4, #0x0]
ldr r3, [r4, #0x4]
asr r1, r2, #0x6
lsr r1, r1, #0x19
add r1, r2, r1
ldr r0, [r4, #0x48]
asr r2, r3, #0x6
lsr r2, r2, #0x19
add r2, r3, r2
ldr r4, [r4, #0x8]
asr r1, r1, #0x7
asr r3, r4, #0x6
lsr r3, r3, #0x19
add r3, r4, r3
asr r2, r2, #0x7
asr r3, r3, #0x7
bl sub_02011698
_0200FF10:
mov r0, #0x0
add sp, #0xc
pop {r3-r4, pc}
.balign 4
thumb_func_start sub_0200FF18
sub_0200FF18: ; 0x0200FF18
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x38
bl Heap_Alloc
str r0, [r5, #0x14]
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_0200FFAC
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_0200FF50
sub_0200FF50: ; 0x0200FF50
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _0200FF68
cmp r0, #0x2
beq _0200FF84
cmp r0, #0x3
beq _0200FF9E
b _0200FFA2
_0200FF68:
add r0, r4, #0x0
bl sub_02010084
cmp r0, #0x1
bne _0200FFA6
ldr r0, [r4, #0x2c]
ldr r1, [r4, #0x30]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FFA6
_0200FF84:
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0200FFA6
_0200FF9E:
mov r6, #0x1
b _0200FFA6
_0200FFA2:
bl GF_AssertFail
_0200FFA6:
add r0, r6, #0x0
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_0200FFAC
sub_0200FFAC: ; 0x0200FFAC
push {r4-r7, lr}
sub sp, #0x24
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
str r2, [sp, #0x18]
str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
bl sub_0200F164
str r0, [sp, #0x20]
ldrb r1, [r4, #0xc]
ldr r3, [sp, #0x44]
add r0, r5, #0x0
add r2, r6, #0x0
bl sub_0200F55C
ldr r0, [r4, #0x0]
lsl r0, r0, #0x7
str r0, [r5, #0xc]
mov r0, #0x8
ldrsh r0, [r4, r0]
str r0, [r5, #0x10]
mov r0, #0xa
ldrsh r0, [r4, r0]
str r0, [r5, #0x14]
ldr r0, [sp, #0x20]
str r0, [r5, #0x18]
ldr r0, [sp, #0x18]
str r0, [r5, #0x1c]
ldr r0, [sp, #0x1c]
str r0, [r5, #0x20]
mov r0, #0x0
str r0, [r5, #0x24]
ldr r0, [sp, #0x40]
str r7, [r5, #0x30]
str r0, [r5, #0x34]
ldr r0, [sp, #0x44]
str r0, [r5, #0x28]
ldrb r0, [r4, #0xf]
str r0, [r5, #0x2c]
add r0, r5, #0x0
bl sub_02010168
ldr r0, _02010078 ; =sub_0200F5F8
ldr r2, _0201007C ; =0x000003FF
add r1, r5, #0x0
bl sub_0200CA98
add r0, r5, #0x0
mov r1, #0x0
bl sub_0200F5D8
mov r1, #0x3
str r6, [sp, #0x0]
lsl r1, r1, #0x8
ldrsh r1, [r0, r1]
str r1, [sp, #0x4]
mov r1, #0x0
str r1, [sp, #0x8]
mov r1, #0x12
lsl r1, r1, #0x6
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x2c]
str r0, [sp, #0x14]
ldrb r1, [r4, #0xd]
ldrb r2, [r4, #0xe]
ldrb r3, [r4, #0xc]
add r0, r7, #0x0
bl sub_0200F67C
ldrb r0, [r4, #0xc]
cmp r0, #0x0
bne _02010058
ldr r3, [r5, #0x2c]
add r0, r7, #0x0
mov r1, #0x1
add r2, r6, #0x0
bl sub_0200F6E4
b _02010064
_02010058:
ldr r3, [r5, #0x2c]
add r0, r7, #0x0
mov r1, #0x2
add r2, r6, #0x0
bl sub_0200F6E4
_02010064:
ldr r0, [sp, #0x44]
ldr r2, _02010080 ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r5, #0x34]
add r1, r5, #0x0
add r3, r6, #0x0
bl sub_0200E6CC
add sp, #0x24
pop {r4-r7, pc}
.balign 4
_02010078: .word sub_0200F5F8
_0201007C: .word 0x000003FF
_02010080: .word sub_0200F330
thumb_func_start sub_02010084
sub_02010084: ; 0x02010084
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x24]
add r2, r1, #0x1
str r2, [r4, #0x24]
ldr r1, [r4, #0x20]
cmp r2, r1
blt _020100C8
mov r1, #0x0
str r1, [r4, #0x24]
ldr r1, [r4, #0x1c]
sub r1, r1, #0x1
cmp r1, #0x0
ble _020100BA
str r1, [r4, #0x1c]
ldr r2, [r4, #0xc]
ldr r1, [r4, #0x18]
add r1, r2, r1
str r1, [r4, #0xc]
bl sub_02010168
ldr r0, _020100CC ; =sub_0200F5F8
ldr r2, _020100D0 ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _020100C8
_020100BA:
ldr r0, [r4, #0x34]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x28]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_020100C8:
mov r0, #0x0
pop {r4, pc}
.balign 4
_020100CC: .word sub_0200F5F8
_020100D0: .word 0x000003FF
thumb_func_start sub_020100D4
sub_020100D4: ; 0x020100D4
push {r4-r7, lr}
sub sp, #0xc
str r1, [sp, #0x0]
asr r1, r0, #0x6
lsr r1, r1, #0x19
add r1, r0, r1
asr r1, r1, #0x7
ldr r5, [sp, #0x20]
ldr r4, [sp, #0x24]
sub r0, r3, r2
bpl _020100EC
neg r0, r0
_020100EC:
cmp r0, r1
blt _020100FA
mov r0, #0x0
str r0, [r5, #0x0]
add sp, #0xc
str r0, [r4, #0x0]
pop {r4-r7, pc}
_020100FA:
lsl r0, r0, #0xc
str r0, [sp, #0x4]
asr r7, r0, #0x1f
lsl r0, r1, #0xc
asr r1, r0, #0x1f
add r2, r0, #0x0
add r3, r1, #0x0
bl _ll_mul
str r0, [sp, #0x8]
ldr r0, [sp, #0x4]
add r6, r1, #0x0
add r1, r7, #0x0
add r2, r0, #0x0
add r3, r7, #0x0
bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
ldr r1, [sp, #0x8]
mov r7, #0x0
lsl r0, r0, #0xa
add r0, r1, r0
adc r6, r7
lsl r1, r6, #0x14
lsr r0, r0, #0xc
orr r0, r1
mov r1, #0x2
lsl r1, r1, #0xa
add r2, r2, r1
adc r3, r7
lsl r1, r3, #0x14
lsr r2, r2, #0xc
orr r2, r1
sub r0, r0, r2
bl FX_Sqrt
asr r2, r0, #0xc
ldr r0, [sp, #0x0]
sub r0, r0, r2
str r0, [r5, #0x0]
bpl _02010154
add r0, r7, #0x0
str r0, [r5, #0x0]
_02010154:
ldr r1, [r5, #0x0]
lsl r0, r2, #0x1
add r0, r1, r0
str r0, [r4, #0x0]
cmp r0, #0xff
ble _02010164
mov r0, #0xff
str r0, [r4, #0x0]
_02010164:
add sp, #0xc
pop {r4-r7, pc}
thumb_func_start sub_02010168
sub_02010168: ; 0x02010168
push {r3-r7, lr}
sub sp, #0x10
mov r1, #0x0
add r5, r0, #0x0
bl sub_0200F5D8
add r7, r0, #0x0
mov r4, #0x0
add r6, r7, #0x0
_0201017A:
ldr r2, [r5, #0x14]
cmp r4, r2
bgt _02010194
add r0, sp, #0xc
str r0, [sp, #0x0]
add r0, sp, #0x8
str r0, [sp, #0x4]
ldr r0, [r5, #0xc]
ldr r1, [r5, #0x10]
add r3, r4, #0x0
bl sub_020100D4
b _020101CE
_02010194:
lsl r0, r2, #0x1
cmp r4, r0
bgt _020101BC
sub r0, r0, r4
lsl r0, r0, #0x1
add r1, r7, r0
mov r0, #0x3
lsl r0, r0, #0x8
ldrsh r0, [r1, r0]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
lsl r0, r0, #0x1
sub r0, r0, r4
lsl r0, r0, #0x1
add r1, r7, r0
mov r0, #0x12
lsl r0, r0, #0x6
ldrsh r0, [r1, r0]
str r0, [sp, #0x8]
b _020101CE
_020101BC:
add r0, sp, #0xc
str r0, [sp, #0x0]
add r0, sp, #0x8
str r0, [sp, #0x4]
ldr r0, [r5, #0xc]
ldr r1, [r5, #0x10]
add r3, r4, #0x0
bl sub_020100D4
_020101CE:
mov r0, #0x3
ldr r1, [sp, #0xc]
lsl r0, r0, #0x8
strh r1, [r6, r0]
mov r0, #0x12
ldr r1, [sp, #0x8]
lsl r0, r0, #0x6
strh r1, [r6, r0]
add r4, r4, #0x1
add r6, r6, #0x2
cmp r4, #0xc0
blt _0201017A
add sp, #0x10
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_020101EC
sub_020101EC: ; 0x020101EC
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x30
bl Heap_Alloc
str r0, [r5, #0x14]
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_02010280
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02010224
sub_02010224: ; 0x02010224
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _0201023C
cmp r0, #0x2
beq _02010258
cmp r0, #0x3
beq _02010272
b _02010276
_0201023C:
add r0, r4, #0x0
bl sub_02010348
cmp r0, #0x1
bne _0201027A
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x24]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0201027A
_02010258:
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0201027A
_02010272:
mov r6, #0x1
b _0201027A
_02010276:
bl GF_AssertFail
_0201027A:
add r0, r6, #0x0
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_02010280
sub_02010280: ; 0x02010280
push {r3-r7, lr}
sub sp, #0x20
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
str r2, [sp, #0x18]
str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
bl sub_0200F164
str r0, [r5, #0x10]
ldrb r1, [r4, #0x8]
ldr r3, [sp, #0x44]
add r0, r5, #0x0
add r2, r6, #0x0
bl sub_0200F55C
ldr r0, [r4, #0x0]
lsl r0, r0, #0x7
str r0, [r5, #0xc]
ldr r0, [sp, #0x18]
str r0, [r5, #0x14]
ldr r0, [sp, #0x1c]
str r0, [r5, #0x18]
mov r0, #0x0
str r0, [r5, #0x1c]
ldr r0, [sp, #0x40]
str r7, [r5, #0x24]
str r0, [r5, #0x28]
ldr r0, [sp, #0x44]
str r0, [r5, #0x2c]
ldrb r0, [r4, #0xb]
str r0, [r5, #0x20]
add r0, r5, #0x0
bl sub_02010398
ldr r0, _0201033C ; =sub_0200F5F8
ldr r2, _02010340 ; =0x000003FF
add r1, r5, #0x0
bl sub_0200CA98
add r0, r5, #0x0
mov r1, #0x0
bl sub_0200F5D8
mov r1, #0x3
str r6, [sp, #0x0]
lsl r1, r1, #0x8
ldrsh r1, [r0, r1]
str r1, [sp, #0x4]
mov r1, #0x0
str r1, [sp, #0x8]
mov r1, #0x12
lsl r1, r1, #0x6
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x20]
str r0, [sp, #0x14]
ldrb r1, [r4, #0x9]
ldrb r2, [r4, #0xa]
ldrb r3, [r4, #0x8]
add r0, r7, #0x0
bl sub_0200F67C
ldrb r0, [r4, #0x8]
cmp r0, #0x0
bne _0201031C
ldr r3, [r5, #0x20]
add r0, r7, #0x0
mov r1, #0x1
add r2, r6, #0x0
bl sub_0200F6E4
b _02010328
_0201031C:
ldr r3, [r5, #0x20]
add r0, r7, #0x0
mov r1, #0x2
add r2, r6, #0x0
bl sub_0200F6E4
_02010328:
ldr r0, [sp, #0x44]
ldr r2, _02010344 ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r5, #0x28]
add r1, r5, #0x0
add r3, r6, #0x0
bl sub_0200E6CC
add sp, #0x20
pop {r3-r7, pc}
.balign 4
_0201033C: .word sub_0200F5F8
_02010340: .word 0x000003FF
_02010344: .word sub_0200F330
thumb_func_start sub_02010348
sub_02010348: ; 0x02010348
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x1c]
add r2, r1, #0x1
str r2, [r4, #0x1c]
ldr r1, [r4, #0x18]
cmp r2, r1
blt _0201038C
mov r1, #0x0
str r1, [r4, #0x1c]
ldr r1, [r4, #0x14]
sub r1, r1, #0x1
cmp r1, #0x0
ble _0201037E
str r1, [r4, #0x14]
ldr r2, [r4, #0xc]
ldr r1, [r4, #0x10]
add r1, r2, r1
str r1, [r4, #0xc]
bl sub_02010398
ldr r0, _02010390 ; =sub_0200F5F8
ldr r2, _02010394 ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _0201038C
_0201037E:
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x2c]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_0201038C:
mov r0, #0x0
pop {r4, pc}
.balign 4
_02010390: .word sub_0200F5F8
_02010394: .word 0x000003FF
thumb_func_start sub_02010398
sub_02010398: ; 0x02010398
push {r3-r7, lr}
sub sp, #0x1fc
sub sp, #0x104
add r4, r0, #0x0
mov r1, #0x0
bl sub_0200F5D8
ldr r1, [r4, #0xc]
add r5, r0, #0x0
asr r0, r1, #0x6
lsr r0, r0, #0x19
add r0, r1, r0
asr r0, r0, #0x7
add r1, sp, #0x0
mov r2, #0xc0
mov r3, #0x0
bl sub_0200F0F8
mov r7, #0x12
mov r6, #0x0
add r4, sp, #0x0
lsl r7, r7, #0x6
_020103C4:
ldr r1, [r4, #0x0]
mov r0, #0x80
neg r1, r1
bl sub_0200F174
mov r1, #0x3
lsl r1, r1, #0x8
strh r0, [r5, r1]
ldr r1, [r4, #0x0]
mov r0, #0x80
bl sub_0200F174
strh r0, [r5, r7]
add r6, r6, #0x1
add r4, r4, #0x4
add r5, r5, #0x2
cmp r6, #0xc0
blt _020103C4
add sp, #0x1fc
add sp, #0x104
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_020103F0
sub_020103F0: ; 0x020103F0
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x34
bl Heap_Alloc
str r0, [r5, #0x14]
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_0201047C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02010428
sub_02010428: ; 0x02010428
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _02010440
cmp r0, #0x2
beq _0201045C
cmp r0, #0x3
beq _02010476
b _02010478
_02010440:
add r0, r4, #0x0
bl sub_02010550
cmp r0, #0x1
bne _02010478
ldr r0, [r4, #0x24]
ldr r1, [r4, #0x28]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010478
_0201045C:
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010478
_02010476:
mov r6, #0x1
_02010478:
add r0, r6, #0x0
pop {r4-r6, pc}
thumb_func_start sub_0201047C
sub_0201047C: ; 0x0201047C
push {r4-r7, lr}
sub sp, #0x24
add r4, r1, #0x0
add r5, r0, #0x0
ldr r1, [r4, #0x4]
ldr r0, [r4, #0x0]
str r2, [sp, #0x18]
sub r0, r1, r0
add r1, r2, #0x0
str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
bl _s32_div_f
str r0, [sp, #0x20]
ldrb r1, [r4, #0x8]
ldr r3, [sp, #0x44]
add r0, r5, #0x0
add r2, r6, #0x0
bl sub_0200F55C
mov r0, #0x2
lsl r0, r0, #0x12
str r0, [r5, #0xc]
ldr r0, [r4, #0x0]
str r0, [r5, #0x10]
ldr r0, [sp, #0x20]
str r0, [r5, #0x14]
ldr r0, [sp, #0x18]
str r0, [r5, #0x18]
ldr r0, [sp, #0x1c]
str r0, [r5, #0x1c]
mov r0, #0x0
str r0, [r5, #0x20]
ldr r0, [sp, #0x40]
str r7, [r5, #0x28]
str r0, [r5, #0x2c]
ldr r0, [sp, #0x44]
str r0, [r5, #0x30]
ldrb r0, [r4, #0xb]
str r0, [r5, #0x24]
add r0, r5, #0x0
bl sub_020105A0
ldr r0, _02010544 ; =sub_0200F5F8
ldr r2, _02010548 ; =0x000003FF
add r1, r5, #0x0
bl sub_0200CA98
add r0, r5, #0x0
mov r1, #0x0
bl sub_0200F5D8
mov r1, #0xf
str r6, [sp, #0x0]
lsl r1, r1, #0x6
ldrsh r1, [r0, r1]
str r1, [sp, #0x4]
mov r1, #0x0
str r1, [sp, #0x8]
mov r1, #0x15
lsl r1, r1, #0x6
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x24]
str r0, [sp, #0x14]
ldrb r1, [r4, #0x9]
ldrb r2, [r4, #0xa]
ldrb r3, [r4, #0x8]
add r0, r7, #0x0
bl sub_0200F67C
ldrb r0, [r4, #0x8]
cmp r0, #0x0
bne _02010524
ldr r3, [r5, #0x24]
add r0, r7, #0x0
mov r1, #0x1
add r2, r6, #0x0
bl sub_0200F6E4
b _02010530
_02010524:
ldr r3, [r5, #0x24]
add r0, r7, #0x0
mov r1, #0x2
add r2, r6, #0x0
bl sub_0200F6E4
_02010530:
ldr r0, [sp, #0x44]
ldr r2, _0201054C ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r5, #0x2c]
add r1, r5, #0x0
add r3, r6, #0x0
bl sub_0200E6CC
add sp, #0x24
pop {r4-r7, pc}
.balign 4
_02010544: .word sub_0200F5F8
_02010548: .word 0x000003FF
_0201054C: .word sub_0200F330
thumb_func_start sub_02010550
sub_02010550: ; 0x02010550
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x20]
add r2, r1, #0x1
str r2, [r4, #0x20]
ldr r1, [r4, #0x1c]
cmp r2, r1
blt _02010594
mov r1, #0x0
str r1, [r4, #0x20]
ldr r1, [r4, #0x18]
sub r1, r1, #0x1
cmp r1, #0x0
ble _02010586
str r1, [r4, #0x18]
ldr r2, [r4, #0x10]
ldr r1, [r4, #0x14]
add r1, r2, r1
str r1, [r4, #0x10]
bl sub_020105A0
ldr r0, _02010598 ; =sub_0200F5F8
ldr r2, _0201059C ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _02010594
_02010586:
ldr r0, [r4, #0x2c]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x30]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_02010594:
mov r0, #0x0
pop {r4, pc}
.balign 4
_02010598: .word sub_0200F5F8
_0201059C: .word 0x000003FF
thumb_func_start sub_020105A0
sub_020105A0: ; 0x020105A0
push {r4-r7, lr}
sub sp, #0x1fc
sub sp, #0x110
add r4, r0, #0x0
mov r1, #0x0
bl sub_0200F5D8
str r0, [sp, #0x0]
ldr r0, [r4, #0x10]
ldr r2, [r4, #0xc]
asr r0, r0, #0x4
lsl r1, r0, #0x2
ldr r0, _02010680 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
add r2, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r2, #0xc
orr r1, r0
asr r7, r1, #0xc
lsl r0, r7, #0x1
mov r1, #0x15
bl _s32_div_f
add r0, r0, #0x1
lsl r0, r0, #0x1
mov r1, #0xb4
sub r2, r1, r0
ldr r0, _02010684 ; =0x0000FFFF
add r1, #0xb4
mul r0, r2
bl _s32_div_f
lsr r1, r0, #0x1f
add r1, r0, r1
asr r4, r1, #0x1
mov r1, #0x1
add r0, r4, #0x0
lsl r1, r1, #0x8
bl sub_0200F14C
asr r0, r0, #0xc
str r0, [sp, #0x4]
cmp r0, #0xc0
blt _0201060C
bl GF_AssertFail
_0201060C:
ldr r2, [sp, #0x4]
add r0, r4, #0x0
add r1, sp, #0xc
mov r3, #0x0
bl sub_0200F0F8
ldr r5, [sp, #0x0]
mov r4, #0x0
_0201061C:
ldr r0, [sp, #0x4]
add r1, r4, #0x1
sub r0, r0, r1
add r6, r7, #0x0
cmp r0, #0x0
ble _02010634
lsl r1, r0, #0x2
add r0, sp, #0xc
ldr r0, [r0, r1]
cmp r0, r7
ble _02010634
add r6, r0, #0x0
_02010634:
mov r0, #0x80
neg r1, r6
bl sub_0200F174
str r0, [sp, #0x8]
mov r0, #0x80
add r1, r6, #0x0
bl sub_0200F174
ldr r1, [sp, #0x8]
lsl r0, r0, #0x10
lsl r1, r1, #0x10
asr r2, r1, #0x10
mov r1, #0x3
lsl r1, r1, #0x8
strh r2, [r5, r1]
asr r1, r0, #0x10
mov r0, #0x12
lsl r0, r0, #0x6
strh r1, [r5, r0]
mov r0, #0xbf
sub r0, r0, r4
lsl r3, r0, #0x1
ldr r0, [sp, #0x0]
add r4, r4, #0x1
add r0, r0, r3
mov r3, #0x3
lsl r3, r3, #0x8
strh r2, [r0, r3]
mov r2, #0x12
lsl r2, r2, #0x6
add r5, r5, #0x2
strh r1, [r0, r2]
cmp r4, #0x60
blt _0201061C
add sp, #0x1fc
add sp, #0x110
pop {r4-r7, pc}
.balign 4
_02010680: .word FX_SinCosTable_
_02010684: .word 0x0000FFFF
thumb_func_start sub_02010688
sub_02010688: ; 0x02010688
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x30
bl Heap_Alloc
str r0, [r5, #0x14]
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_02010720
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_020106C0
sub_020106C0: ; 0x020106C0
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _020106D8
cmp r0, #0x2
beq _020106F4
cmp r0, #0x3
beq _02010714
b _02010718
_020106D8:
add r0, r4, #0x0
bl sub_02010834
cmp r0, #0x1
bne _0201071C
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x24]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0201071C
_020106F4:
add r0, r4, #0x0
bl sub_02010884
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _0201071C
_02010714:
mov r6, #0x1
b _0201071C
_02010718:
bl GF_AssertFail
_0201071C:
add r0, r6, #0x0
pop {r4-r6, pc}
thumb_func_start sub_02010720
sub_02010720: ; 0x02010720
push {r4-r7, lr}
sub sp, #0x24
add r5, r1, #0x0
add r7, r0, #0x0
str r2, [sp, #0x18]
ldr r0, [sp, #0x38]
ldrb r2, [r5, #0x8]
str r0, [sp, #0x38]
ldr r0, [sp, #0x44]
mov r1, #0x30
mul r1, r2
str r3, [sp, #0x1c]
str r0, [sp, #0x44]
bl Heap_Alloc
str r0, [r7, #0xc]
cmp r0, #0x0
bne _02010748
bl GF_AssertFail
_02010748:
ldrb r0, [r5, #0x8]
str r0, [r7, #0x10]
mov r0, #0x0
str r0, [sp, #0x20]
ldrb r0, [r5, #0x8]
cmp r0, #0x0
ble _02010788
ldr r6, [sp, #0x20]
add r4, r6, #0x0
_0201075A:
ldr r0, [r5, #0x4]
ldr r2, [r7, #0xc]
add r0, r0, r6
str r0, [sp, #0x0]
ldr r0, [sp, #0x18]
str r0, [sp, #0x4]
add r0, r2, r4
ldr r3, [r5, #0x0]
add r1, r0, #0x0
add r2, r2, r4
add r1, #0x20
add r2, #0x10
add r3, r3, r6
bl sub_0200F1A8
ldr r0, [sp, #0x20]
ldrb r1, [r5, #0x8]
add r0, r0, #0x1
add r6, #0x10
add r4, #0x30
str r0, [sp, #0x20]
cmp r0, r1
blt _0201075A
_02010788:
ldrb r1, [r5, #0x9]
ldr r2, [sp, #0x38]
ldr r3, [sp, #0x44]
add r0, r7, #0x0
bl sub_0200F55C
ldr r0, [sp, #0x18]
str r0, [r7, #0x14]
ldr r0, [sp, #0x1c]
str r0, [r7, #0x18]
mov r0, #0x0
str r0, [r7, #0x1c]
ldr r0, [sp, #0x3c]
str r0, [r7, #0x24]
ldr r0, [sp, #0x40]
str r0, [r7, #0x28]
ldr r0, [sp, #0x44]
str r0, [r7, #0x2c]
ldrb r0, [r5, #0xc]
str r0, [r7, #0x20]
add r0, r7, #0x0
bl sub_02010894
ldr r0, _02010828 ; =sub_0200F5F8
ldr r2, _0201082C ; =0x000003FF
add r1, r7, #0x0
bl sub_0200CA98
add r0, r7, #0x0
mov r1, #0x0
bl sub_0200F5D8
ldr r1, [sp, #0x38]
str r1, [sp, #0x0]
mov r1, #0x3
lsl r1, r1, #0x8
ldrsh r1, [r0, r1]
str r1, [sp, #0x4]
mov r1, #0x0
str r1, [sp, #0x8]
mov r1, #0x12
lsl r1, r1, #0x6
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r7, #0x20]
str r0, [sp, #0x14]
ldrb r1, [r5, #0xa]
ldrb r2, [r5, #0xb]
ldrb r3, [r5, #0x9]
ldr r0, [sp, #0x3c]
bl sub_0200F67C
ldrb r0, [r5, #0x9]
cmp r0, #0x0
ldr r0, [r7, #0x24]
bne _02010808
ldr r2, [sp, #0x38]
ldr r3, [r7, #0x20]
mov r1, #0x1
bl sub_0200F6E4
b _02010812
_02010808:
ldr r2, [sp, #0x38]
ldr r3, [r7, #0x20]
mov r1, #0x2
bl sub_0200F6E4
_02010812:
ldr r0, [sp, #0x44]
ldr r2, _02010830 ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r7, #0x28]
ldr r3, [sp, #0x38]
add r1, r7, #0x0
bl sub_0200E6CC
add sp, #0x24
pop {r4-r7, pc}
nop
_02010828: .word sub_0200F5F8
_0201082C: .word 0x000003FF
_02010830: .word sub_0200F330
thumb_func_start sub_02010834
sub_02010834: ; 0x02010834
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x1c]
add r2, r1, #0x1
str r2, [r4, #0x1c]
ldr r1, [r4, #0x18]
cmp r2, r1
blt _02010876
mov r1, #0x0
str r1, [r4, #0x1c]
ldr r1, [r4, #0x14]
sub r1, r1, #0x1
cmp r1, #0x0
ble _02010868
str r1, [r4, #0x14]
bl sub_02010920
add r0, r4, #0x0
bl sub_02010894
ldr r0, _0201087C ; =sub_0200F5F8
ldr r2, _02010880 ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _02010876
_02010868:
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x2c]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_02010876:
mov r0, #0x0
pop {r4, pc}
nop
_0201087C: .word sub_0200F5F8
_02010880: .word 0x000003FF
thumb_func_start sub_02010884
sub_02010884: ; 0x02010884
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0xc]
bl Heap_Free
mov r0, #0x0
str r0, [r4, #0xc]
pop {r4, pc}
thumb_func_start sub_02010894
sub_02010894: ; 0x02010894
push {r4-r6, lr}
mov r1, #0x0
add r6, r0, #0x0
bl sub_0200F5D8
mov r2, #0x3
lsl r2, r2, #0x8
add r0, r0, r2
mov r1, #0x0
bl memset
ldr r0, [r6, #0x10]
sub r4, r0, #0x1
bmi _020108C6
mov r0, #0x30
add r5, r4, #0x0
mul r5, r0
_020108B6:
ldr r1, [r6, #0xc]
add r0, r6, #0x0
add r1, r1, r5
bl sub_020108C8
sub r5, #0x30
sub r4, r4, #0x1
bpl _020108B6
_020108C6:
pop {r4-r6, pc}
thumb_func_start sub_020108C8
sub_020108C8: ; 0x020108C8
push {r4-r6, lr}
add r4, r1, #0x0
mov r1, #0x0
bl sub_0200F5D8
ldr r2, [r4, #0x0]
ldr r3, [r4, #0x8]
asr r1, r2, #0x6
lsr r1, r1, #0x19
add r1, r2, r1
asr r2, r1, #0x7
asr r1, r3, #0x6
ldr r5, [r4, #0xc]
lsr r1, r1, #0x19
add r1, r3, r1
asr r3, r5, #0x6
lsr r3, r3, #0x19
add r3, r5, r3
ldr r4, [r4, #0x4]
asr r5, r3, #0x7
asr r3, r4, #0x6
lsr r3, r3, #0x19
add r3, r4, r3
asr r3, r3, #0x7
asr r1, r1, #0x7
cmp r3, r5
bge _0201091E
lsl r4, r3, #0x1
lsl r1, r1, #0x10
add r4, r0, r4
lsl r0, r2, #0x10
asr r6, r1, #0x10
mov r1, #0x3
mov r2, #0x12
asr r0, r0, #0x10
lsl r1, r1, #0x8
lsl r2, r2, #0x6
_02010912:
strh r0, [r4, r1]
strh r6, [r4, r2]
add r3, r3, #0x1
add r4, r4, #0x2
cmp r3, r5
blt _02010912
_0201091E:
pop {r4-r6, pc}
thumb_func_start sub_02010920
sub_02010920: ; 0x02010920
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0x10]
mov r6, #0x0
cmp r0, #0x0
ble _02010944
add r4, r6, #0x0
_0201092E:
ldr r1, [r5, #0xc]
add r0, r1, r4
add r1, r1, r4
add r1, #0x10
bl sub_0200F184
ldr r0, [r5, #0x10]
add r6, r6, #0x1
add r4, #0x30
cmp r6, r0
blt _0201092E
_02010944:
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_02010948
sub_02010948: ; 0x02010948
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x38
bl Heap_Alloc
str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
bl memset
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_020109E8
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02010988
sub_02010988: ; 0x02010988
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _020109A0
cmp r0, #0x2
beq _020109BC
cmp r0, #0x3
beq _020109DC
b _020109E0
_020109A0:
add r0, r4, #0x0
bl sub_02010AE4
cmp r0, #0x1
bne _020109E4
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x30]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _020109E4
_020109BC:
add r0, r4, #0x0
bl sub_02010B3C
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _020109E4
_020109DC:
mov r6, #0x1
b _020109E4
_020109E0:
bl GF_AssertFail
_020109E4:
add r0, r6, #0x0
pop {r4-r6, pc}
thumb_func_start sub_020109E8
sub_020109E8: ; 0x020109E8
push {r3-r7, lr}
sub sp, #0x28
add r4, r1, #0x0
add r5, r0, #0x0
mov r1, #0x0
str r1, [r5, #0xc]
ldr r1, [r4, #0x0]
str r2, [sp, #0x18]
str r1, [r5, #0x10]
str r3, [sp, #0x1c]
ldr r2, [r4, #0x4]
ldr r1, [r4, #0x0]
ldr r6, [sp, #0x40]
sub r1, r2, r1
str r1, [r5, #0x14]
ldr r3, [sp, #0x4c]
mov r1, #0x2
add r2, r6, #0x0
ldr r7, [sp, #0x44]
bl sub_0200F55C
ldr r0, [sp, #0x18]
mov r1, #0x0
str r0, [r5, #0x18]
ldr r0, [sp, #0x1c]
str r1, [r5, #0x1c]
str r0, [r5, #0x20]
str r1, [r5, #0x24]
ldr r0, [sp, #0x48]
str r7, [r5, #0x30]
str r0, [r5, #0x34]
ldr r0, [sp, #0x4c]
str r0, [r5, #0x2c]
ldrb r0, [r4, #0xa]
str r0, [r5, #0x28]
add r0, r5, #0x0
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x18]
add r0, #0xc
bl sub_02010C64
add r0, r5, #0x0
bl sub_02010B40
ldr r0, _02010AD8 ; =sub_0200F5F8
ldr r2, _02010ADC ; =0x000003FF
add r1, r5, #0x0
bl sub_0200CA98
add r0, r5, #0x0
mov r1, #0x0
bl sub_0200F5D8
str r0, [sp, #0x20]
add r0, r5, #0x0
mov r1, #0x1
bl sub_0200F5D8
str r0, [sp, #0x24]
mov r1, #0x3
ldr r0, [sp, #0x20]
str r6, [sp, #0x0]
lsl r1, r1, #0x8
ldrsh r0, [r0, r1]
mov r1, #0x12
mov r3, #0x0
str r0, [sp, #0x4]
ldr r0, [sp, #0x20]
str r3, [sp, #0x8]
lsl r1, r1, #0x6
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
str r0, [sp, #0x14]
ldrb r1, [r4, #0x8]
ldrb r2, [r4, #0x9]
add r0, r7, #0x0
bl sub_0200F67C
mov r1, #0x3
ldr r0, [sp, #0x24]
str r6, [sp, #0x0]
lsl r1, r1, #0x8
ldrsh r0, [r0, r1]
mov r1, #0x12
lsl r1, r1, #0x6
str r0, [sp, #0x4]
mov r0, #0x0
str r0, [sp, #0x8]
ldr r0, [sp, #0x24]
mov r3, #0x1
ldrsh r0, [r0, r1]
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
str r0, [sp, #0x14]
ldrb r1, [r4, #0x8]
ldrb r2, [r4, #0x9]
add r0, r7, #0x0
bl sub_0200F67C
ldr r3, [r5, #0x28]
add r0, r7, #0x0
mov r1, #0x3
add r2, r6, #0x0
bl sub_0200F6E4
ldr r0, [sp, #0x4c]
ldr r2, _02010AE0 ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r5, #0x34]
add r1, r5, #0x0
add r3, r6, #0x0
bl sub_0200E6CC
add sp, #0x28
pop {r3-r7, pc}
.balign 4
_02010AD8: .word sub_0200F5F8
_02010ADC: .word 0x000003FF
_02010AE0: .word sub_0200F330
thumb_func_start sub_02010AE4
sub_02010AE4: ; 0x02010AE4
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x24]
add r1, r0, #0x1
str r1, [r4, #0x24]
ldr r0, [r4, #0x20]
cmp r1, r0
blt _02010B2E
mov r0, #0x0
str r0, [r4, #0x24]
ldr r0, [r4, #0x1c]
add r1, r0, #0x1
ldr r0, [r4, #0x18]
cmp r1, r0
bgt _02010B20
str r1, [r4, #0x1c]
add r0, r4, #0x0
ldr r2, [r4, #0x18]
add r0, #0xc
bl sub_02010C64
add r0, r4, #0x0
bl sub_02010B40
ldr r0, _02010B34 ; =sub_0200F5F8
ldr r2, _02010B38 ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _02010B2E
_02010B20:
ldr r0, [r4, #0x34]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x2c]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_02010B2E:
mov r0, #0x0
pop {r4, pc}
nop
_02010B34: .word sub_0200F5F8
_02010B38: .word 0x000003FF
thumb_func_start sub_02010B3C
sub_02010B3C: ; 0x02010B3C
bx lr
.balign 4
thumb_func_start sub_02010B40
sub_02010B40: ; 0x02010B40
push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
ldr r0, [r0, #0xc]
ldr r1, _02010C60 ; =0x00003FFF
bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
ldr r0, [sp, #0x0]
mov r1, #0x0
bl sub_0200F5D8
add r7, r0, #0x0
ldr r0, [sp, #0x0]
mov r1, #0x1
bl sub_0200F5D8
add r4, r0, #0x0
mov r6, #0x0
add r5, r4, #0x0
_02010B6C:
ldr r0, [sp, #0x0]
ldr r1, [r0, #0xc]
ldr r0, _02010C60 ; =0x00003FFF
cmp r1, r0
bge _02010BB0
mov r1, #0x60
ldr r0, [sp, #0x4]
sub r1, r1, r6
bl sub_0200F0D0
cmp r0, #0x7f
ble _02010B86
mov r0, #0x7f
_02010B86:
mov r1, #0xbf
sub r1, r1, r6
lsl r1, r1, #0x1
add r3, r7, r1
mov r1, #0x80
sub r2, r1, r0
mov r1, #0x3
lsl r1, r1, #0x8
strh r2, [r3, r1]
mov r1, #0x12
mov r2, #0x80
lsl r1, r1, #0x6
strh r2, [r3, r1]
mov r1, #0x3
lsl r1, r1, #0x8
strh r2, [r5, r1]
mov r1, #0x12
add r0, #0x80
lsl r1, r1, #0x6
strh r0, [r5, r1]
b _02010BD8
_02010BB0:
mov r0, #0xbf
sub r0, r0, r6
lsl r0, r0, #0x1
mov r1, #0x3
add r0, r7, r0
mov r2, #0x0
lsl r1, r1, #0x8
strh r2, [r0, r1]
mov r1, #0x12
mov r2, #0x80
lsl r1, r1, #0x6
strh r2, [r0, r1]
mov r0, #0x3
add r1, r2, #0x0
lsl r0, r0, #0x8
strh r1, [r5, r0]
mov r0, #0x12
mov r1, #0xff
lsl r0, r0, #0x6
strh r1, [r5, r0]
_02010BD8:
add r6, r6, #0x1
add r5, r5, #0x2
cmp r6, #0x60
blt _02010B6C
ldr r1, _02010C60 ; =0x00003FFF
ldr r0, [sp, #0x4]
mov r5, #0x60
add r4, #0xc0
sub r6, r1, r0
_02010BEA:
ldr r0, [sp, #0x0]
ldr r1, [r0, #0xc]
ldr r0, _02010C60 ; =0x00003FFF
cmp r1, r0
bge _02010C1A
mov r0, #0xbf
sub r0, r0, r5
lsl r0, r0, #0x1
mov r1, #0x3
add r0, r7, r0
mov r2, #0x80
lsl r1, r1, #0x8
strh r2, [r0, r1]
mov r1, #0x12
lsl r1, r1, #0x6
strh r2, [r0, r1]
mov r0, #0x3
add r1, r2, #0x0
lsl r0, r0, #0x8
strh r1, [r4, r0]
mov r0, #0x12
lsl r0, r0, #0x6
strh r1, [r4, r0]
b _02010C54
_02010C1A:
add r1, r5, #0x0
add r0, r6, #0x0
sub r1, #0x60
bl sub_0200F0D0
add r1, r0, #0x0
cmp r1, #0x7f
ble _02010C2C
mov r1, #0x7f
_02010C2C:
mov r0, #0xbf
sub r0, r0, r5
lsl r0, r0, #0x1
mov r2, #0x3
add r0, r7, r0
mov r3, #0x0
lsl r2, r2, #0x8
strh r3, [r0, r2]
mov r2, #0x80
sub r3, r2, r1
mov r2, #0x12
lsl r2, r2, #0x6
strh r3, [r0, r2]
mov r0, #0x3
add r1, #0x80
lsl r0, r0, #0x8
strh r1, [r4, r0]
mov r1, #0xff
add r0, r2, #0x0
strh r1, [r4, r0]
_02010C54:
add r5, r5, #0x1
add r4, r4, #0x2
cmp r5, #0xc0
blt _02010BEA
add sp, #0x8
pop {r3-r7, pc}
.balign 4
_02010C60: .word 0x00003FFF
thumb_func_start sub_02010C64
sub_02010C64: ; 0x02010C64
push {r4, lr}
add r4, r0, #0x0
ldr r3, [r4, #0x8]
add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
pop {r4, pc}
thumb_func_start sub_02010C7C
sub_02010C7C: ; 0x02010C7C
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
ldr r0, [r5, #0x20]
add r4, r1, #0x0
mov r1, #0x38
bl Heap_Alloc
str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
bl memset
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_02010D1C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02010CBC
sub_02010CBC: ; 0x02010CBC
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _02010CD4
cmp r0, #0x2
beq _02010CF0
cmp r0, #0x3
beq _02010D10
b _02010D14
_02010CD4:
add r0, r4, #0x0
bl sub_02010DEC
cmp r0, #0x1
bne _02010D18
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x30]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010D18
_02010CF0:
add r0, r4, #0x0
bl sub_02010E44
add r0, r4, #0x0
bl sub_0200F5C0
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010D18
_02010D10:
mov r6, #0x1
b _02010D18
_02010D14:
bl GF_AssertFail
_02010D18:
add r0, r6, #0x0
pop {r4-r6, pc}
thumb_func_start sub_02010D1C
sub_02010D1C: ; 0x02010D1C
push {r3-r7, lr}
sub sp, #0x20
add r4, r1, #0x0
ldr r1, [r4, #0x0]
add r5, r0, #0x0
str r1, [r5, #0xc]
ldr r1, [r4, #0x0]
str r3, [sp, #0x1c]
str r1, [r5, #0x10]
str r2, [sp, #0x18]
ldr r2, [r4, #0x4]
ldr r1, [r4, #0x0]
ldr r6, [sp, #0x38]
sub r1, r2, r1
str r1, [r5, #0x14]
ldr r3, [sp, #0x44]
mov r1, #0x2
add r2, r6, #0x0
ldr r7, [sp, #0x3c]
bl sub_0200F55C
ldr r0, [sp, #0x18]
mov r1, #0x0
str r0, [r5, #0x18]
ldr r0, [sp, #0x1c]
str r1, [r5, #0x1c]
str r0, [r5, #0x20]
str r1, [r5, #0x24]
ldr r0, [sp, #0x40]
str r7, [r5, #0x30]
str r0, [r5, #0x34]
ldr r0, [sp, #0x44]
str r0, [r5, #0x2c]
ldrb r0, [r4, #0xa]
str r0, [r5, #0x28]
add r0, r5, #0x0
bl sub_02010E48
ldr r0, _02010DE0 ; =sub_0200F5F8
ldr r2, _02010DE4 ; =0x000003FF
add r1, r5, #0x0
bl sub_0200CA98
add r0, r5, #0x0
mov r1, #0x0
bl sub_0200F5D8
add r0, r5, #0x0
mov r1, #0x1
bl sub_0200F5D8
str r6, [sp, #0x0]
mov r3, #0x0
str r3, [sp, #0x4]
str r3, [sp, #0x8]
mov r0, #0xff
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
str r0, [sp, #0x14]
ldrb r1, [r4, #0x8]
ldrb r2, [r4, #0x9]
add r0, r7, #0x0
bl sub_0200F67C
str r6, [sp, #0x0]
mov r0, #0x0
str r0, [sp, #0x4]
str r0, [sp, #0x8]
mov r0, #0xff
str r0, [sp, #0xc]
mov r0, #0xc0
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
mov r3, #0x1
str r0, [sp, #0x14]
ldrb r1, [r4, #0x8]
ldrb r2, [r4, #0x9]
add r0, r7, #0x0
bl sub_0200F67C
ldr r3, [r5, #0x28]
add r0, r7, #0x0
mov r1, #0x3
add r2, r6, #0x0
bl sub_0200F6E4
ldr r0, [sp, #0x44]
ldr r2, _02010DE8 ; =sub_0200F330
str r0, [sp, #0x0]
ldr r0, [r5, #0x34]
add r1, r5, #0x0
add r3, r6, #0x0
bl sub_0200E6CC
add sp, #0x20
pop {r3-r7, pc}
.balign 4
_02010DE0: .word sub_0200F5F8
_02010DE4: .word 0x000003FF
_02010DE8: .word sub_0200F330
thumb_func_start sub_02010DEC
sub_02010DEC: ; 0x02010DEC
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x24]
add r1, r0, #0x1
str r1, [r4, #0x24]
ldr r0, [r4, #0x20]
cmp r1, r0
blt _02010E36
mov r0, #0x0
str r0, [r4, #0x24]
ldr r0, [r4, #0x1c]
add r1, r0, #0x1
ldr r0, [r4, #0x18]
cmp r1, r0
bgt _02010E28
str r1, [r4, #0x1c]
add r0, r4, #0x0
ldr r2, [r4, #0x18]
add r0, #0xc
bl sub_02010F14
add r0, r4, #0x0
bl sub_02010E48
ldr r0, _02010E3C ; =sub_0200F5F8
ldr r2, _02010E40 ; =0x000003FF
add r1, r4, #0x0
bl sub_0200CA98
b _02010E36
_02010E28:
ldr r0, [r4, #0x34]
ldr r1, [r4, #0x8]
ldr r2, [r4, #0x2c]
bl sub_0200E6F8
mov r0, #0x1
pop {r4, pc}
_02010E36:
mov r0, #0x0
pop {r4, pc}
nop
_02010E3C: .word sub_0200F5F8
_02010E40: .word 0x000003FF
thumb_func_start sub_02010E44
sub_02010E44: ; 0x02010E44
bx lr
.balign 4
thumb_func_start sub_02010E48
sub_02010E48: ; 0x02010E48
push {r4-r7, lr}
sub sp, #0x1c
add r4, r0, #0x0
ldr r1, [r4, #0xc]
lsl r1, r1, #0x10
lsr r1, r1, #0x10
str r1, [sp, #0x8]
mov r1, #0x0
bl sub_0200F5D8
str r0, [sp, #0x10]
add r0, r4, #0x0
mov r1, #0x1
bl sub_0200F5D8
str r0, [sp, #0xc]
add r5, r0, #0x0
ldr r1, _02010F10 ; =0x00003FFF
ldr r0, [sp, #0x8]
ldr r6, [sp, #0x10]
sub r0, r1, r0
mov r7, #0x0
str r0, [sp, #0x4]
_02010E76:
mov r0, #0x60
sub r0, r0, r7
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x0]
bl sub_0200F0D0
add r4, r0, #0x0
ldr r0, [sp, #0x4]
ldr r1, [sp, #0x0]
bl sub_0200F0D0
cmp r4, #0x7f
ble _02010E94
mov r4, #0x7f
_02010E94:
cmp r0, #0x7f
ble _02010E9A
mov r0, #0x7f
_02010E9A:
mov r1, #0x80
sub r1, r1, r0
lsl r1, r1, #0x10
mov r2, #0x3
asr r1, r1, #0x10
lsl r2, r2, #0x8
str r1, [sp, #0x14]
strh r1, [r6, r2]
mov r1, #0x80
sub r1, r1, r4
lsl r1, r1, #0x10
asr r2, r1, #0x10
mov r1, #0x12
lsl r1, r1, #0x6
strh r2, [r6, r1]
mov r1, #0xbf
sub r1, r1, r7
mov r12, r2
lsl r1, r1, #0x1
ldr r2, [sp, #0x10]
add r0, #0x80
add r3, r2, r1
str r1, [sp, #0x18]
mov r2, #0x3
ldr r1, [sp, #0x14]
lsl r2, r2, #0x8
strh r1, [r3, r2]
mov r1, #0x12
mov r2, r12
lsl r1, r1, #0x6
strh r2, [r3, r1]
add r4, #0x80
lsl r1, r4, #0x10
asr r2, r1, #0x10
mov r1, #0x3
lsl r1, r1, #0x8
lsl r0, r0, #0x10
strh r2, [r5, r1]
asr r1, r0, #0x10
mov r0, #0x12
lsl r0, r0, #0x6
strh r1, [r5, r0]
ldr r3, [sp, #0xc]
ldr r0, [sp, #0x18]
add r7, r7, #0x1
add r0, r3, r0
mov r3, #0x3
lsl r3, r3, #0x8
strh r2, [r0, r3]
mov r2, #0x12
lsl r2, r2, #0x6
strh r1, [r0, r2]
add r6, r6, #0x2
add r5, r5, #0x2
cmp r7, #0x60
blt _02010E76
add sp, #0x1c
pop {r4-r7, pc}
nop
_02010F10: .word 0x00003FFF
thumb_func_start sub_02010F14
sub_02010F14: ; 0x02010F14
push {r4, lr}
add r4, r0, #0x0
ldr r3, [r4, #0x8]
add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
pop {r4, pc}
thumb_func_start sub_02010F2C
sub_02010F2C: ; 0x02010F2C
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
add r4, r1, #0x0
mov r1, #0xcd
ldr r0, [r5, #0x20]
lsl r1, r1, #0x2
bl Heap_Alloc
mov r2, #0xcd
str r0, [r5, #0x14]
mov r1, #0x0
lsl r2, r2, #0x2
bl memset
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x18]
str r0, [sp, #0x4]
ldr r0, [r5, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r5, #0x20]
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
bl sub_02010FD0
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02010F70
sub_02010F70: ; 0x02010F70
push {r4-r6, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
mov r6, #0x0
ldr r4, [r5, #0x14]
cmp r0, #0x1
beq _02010F88
cmp r0, #0x2
beq _02010FAA
cmp r0, #0x3
beq _02010FC4
b _02010FC8
_02010F88:
add r0, r4, #0x0
bl sub_020110BC
cmp r0, #0x1
bne _02010FCC
mov r1, #0xc9
lsl r1, r1, #0x2
ldr r0, [r4, r1]
add r1, #0x8
ldr r1, [r4, r1]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010FCC
_02010FAA:
add r0, r4, #0x0
bl sub_0201111C
ldr r0, [r5, #0x14]
bl Heap_Free
add r0, r6, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r6, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02010FCC
_02010FC4:
mov r6, #0x1
b _02010FCC
_02010FC8:
bl GF_AssertFail
_02010FCC:
add r0, r6, #0x0
pop {r4-r6, pc}
thumb_func_start sub_02010FD0
sub_02010FD0: ; 0x02010FD0
push {r3-r7, lr}
sub sp, #0x20
ldr r7, [sp, #0x38]
str r3, [sp, #0x1c]
mov r3, #0x0
add r4, r1, #0x0
str r2, [sp, #0x18]
str r3, [sp, #0x0]
add r1, r7, #0x0
mov r2, #0x1
add r5, r0, #0x0
ldr r6, [sp, #0x3c]
bl sub_0200F6FC
ldrb r0, [r4, #0x5]
cmp r0, #0x0
bne _0201100A
add r0, r5, #0x0
mov r1, #0x1
mov r2, #0xc0
bl memset
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x1
mov r2, #0xc0
bl memset
b _02011020
_0201100A:
add r0, r5, #0x0
mov r1, #0x0
mov r2, #0xc0
bl memset
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x0
mov r2, #0xc0
bl memset
_02011020:
mov r1, #0xc3
lsl r1, r1, #0x2
ldr r0, [r4, #0x0]
add r3, r1, #0x0
str r0, [r5, r1]
ldrb r2, [r4, #0x4]
add r0, r1, #0x4
add r3, #0x8
str r2, [r5, r0]
add r0, r1, #0x0
ldrb r2, [r4, #0x5]
add r0, #0x18
str r2, [r5, r0]
add r0, r1, #0x0
ldr r2, [sp, #0x44]
add r0, #0x1c
str r2, [r5, r0]
ldr r0, [sp, #0x18]
str r0, [r5, r3]
add r3, r1, #0x0
add r3, #0xc
mov r0, #0x0
str r0, [r5, r3]
add r3, r1, #0x0
ldr r0, [sp, #0x1c]
add r3, #0x10
str r0, [r5, r3]
add r3, r1, #0x0
add r3, #0x14
mov r0, #0x0
str r0, [r5, r3]
add r0, r1, #0x0
add r0, #0x20
str r6, [r5, r0]
ldr r0, [sp, #0x40]
add r1, #0x24
str r0, [r5, r1]
add r1, r5, #0x0
bl sub_0200F758
ldrb r0, [r4, #0x5]
cmp r0, #0x1
str r7, [sp, #0x0]
bne _02011090
mov r3, #0x0
str r3, [sp, #0x4]
str r3, [sp, #0x8]
str r3, [sp, #0xc]
str r3, [sp, #0x10]
str r0, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0x20
mov r2, #0x3f
bl sub_0200F67C
b _020110A6
_02011090:
mov r3, #0x0
str r3, [sp, #0x4]
str r3, [sp, #0x8]
str r3, [sp, #0xc]
str r3, [sp, #0x10]
str r0, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0x3f
mov r2, #0x20
bl sub_0200F67C
_020110A6:
mov r3, #0xc9
lsl r3, r3, #0x2
ldr r3, [r5, r3]
add r0, r6, #0x0
mov r1, #0x1
add r2, r7, #0x0
bl sub_0200F6E4
add sp, #0x20
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_020110BC
sub_020110BC: ; 0x020110BC
push {r4, lr}
mov r2, #0x32
add r4, r0, #0x0
lsl r2, r2, #0x4
ldr r1, [r4, r2]
add r1, r1, #0x1
str r1, [r4, r2]
sub r1, r2, #0x4
ldr r3, [r4, r2]
ldr r1, [r4, r1]
cmp r3, r1
blt _02011116
mov r1, #0x0
str r1, [r4, r2]
add r1, r2, #0x0
sub r1, #0x8
ldr r1, [r4, r1]
add r3, r1, #0x1
add r1, r2, #0x0
sub r1, #0xc
ldr r1, [r4, r1]
cmp r3, r1
bgt _02011102
add r1, r2, #0x0
sub r1, #0x8
ldr r1, [r4, r1]
sub r2, #0x8
add r1, r1, #0x1
str r1, [r4, r2]
bl sub_02011120
add r0, r4, #0x0
bl sub_0200F740
b _02011116
_02011102:
add r0, r2, #0x0
add r0, #0x10
add r2, #0x8
ldr r0, [r4, r0]
ldr r2, [r4, r2]
add r1, r4, #0x0
bl sub_0200F770
mov r0, #0x1
pop {r4, pc}
_02011116:
mov r0, #0x0
pop {r4, pc}
.balign 4
thumb_func_start sub_0201111C
sub_0201111C: ; 0x0201111C
bx lr
.balign 4
thumb_func_start sub_02011120
sub_02011120: ; 0x02011120
push {r3-r7, lr}
add r5, r0, #0x0
mov r0, #0x31
lsl r0, r0, #0x4
ldr r0, [r5, r0]
mov r6, #0x0
cmp r0, #0x0
ble _0201115A
mov r7, #0x31
add r4, r6, #0x0
lsl r7, r7, #0x4
_02011136:
mov r0, #0xc3
lsl r0, r0, #0x2
mov r2, #0xc6
mov r3, #0xc5
ldr r0, [r5, r0]
lsl r2, r2, #0x2
lsl r3, r3, #0x2
ldr r2, [r5, r2]
ldr r3, [r5, r3]
add r0, r0, r4
add r1, r5, #0x0
bl sub_0201115C
ldr r0, [r5, r7]
add r6, r6, #0x1
add r4, r4, #0x3
cmp r6, r0
blt _02011136
_0201115A:
pop {r3-r7, pc}
thumb_func_start sub_0201115C
sub_0201115C: ; 0x0201115C
push {r3-r7, lr}
add r7, r0, #0x0
ldrb r6, [r7, #0x0]
ldrb r4, [r7, #0x1]
add r5, r1, #0x0
add r1, r3, #0x0
sub r0, r4, r6
mul r0, r2
bl _s32_div_f
add r0, r0, r6
cmp r6, r4
bhi _0201117C
add r1, r6, #0x0
ldrb r6, [r7, #0x2]
b _0201118C
_0201117C:
ldrb r2, [r7, #0x2]
add r1, r4, #0x0
add r4, r6, #0x0
cmp r2, #0x0
bne _0201118A
mov r6, #0x1
b _0201118C
_0201118A:
mov r6, #0x0
_0201118C:
cmp r1, r4
bge _020111AA
mov r2, #0x0
mov r3, #0x1
_02011194:
cmp r1, r0
bne _020111A2
cmp r6, #0x0
bne _020111A0
add r6, r3, #0x0
b _020111A2
_020111A0:
add r6, r2, #0x0
_020111A2:
strb r6, [r5, r1]
add r1, r1, #0x1
cmp r1, r4
blt _02011194
_020111AA:
pop {r3-r7, pc}
thumb_func_start sub_020111AC
sub_020111AC: ; 0x020111AC
push {r3-r5, lr}
sub sp, #0x10
add r5, r0, #0x0
add r4, r1, #0x0
mov r1, #0xe2
ldr r0, [r5, #0x20]
lsl r1, r1, #0x2
bl Heap_Alloc
mov r2, #0xe2
mov r1, #0x0
lsl r2, r2, #0x2
str r0, [r5, #0x14]
bl memset
add r1, r4, #0x0
add r1, #0x23
ldrb r1, [r1, #0x0]
ldr r0, [r5, #0x14]
cmp r1, #0x0
ldr r1, [r5, #0x10]
bne _020111F2
str r1, [sp, #0x0]
ldr r1, [r5, #0x18]
str r1, [sp, #0x4]
ldr r1, [r5, #0x1c]
str r1, [sp, #0x8]
ldr r1, [r5, #0x20]
str r1, [sp, #0xc]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
add r1, r4, #0x0
bl sub_0201127C
b _0201120A
_020111F2:
str r1, [sp, #0x0]
ldr r1, [r5, #0x18]
str r1, [sp, #0x4]
ldr r1, [r5, #0x1c]
str r1, [sp, #0x8]
ldr r1, [r5, #0x20]
str r1, [sp, #0xc]
ldr r2, [r5, #0x4]
ldr r3, [r5, #0x8]
add r1, r4, #0x0
bl sub_0201137C
_0201120A:
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
add sp, #0x10
pop {r3-r5, pc}
thumb_func_start sub_02011214
sub_02011214: ; 0x02011214
push {r3-r5, lr}
add r5, r0, #0x0
ldr r1, [r5, #0xc]
mov r4, #0x0
ldr r0, [r5, #0x14]
cmp r1, #0x1
beq _0201122C
cmp r1, #0x2
beq _02011258
cmp r1, #0x3
beq _0201126A
b _0201126E
_0201122C:
ldr r1, _02011278 ; =0x00000386
ldrb r1, [r0, r1]
cmp r1, #0x0
bne _0201123C
add r1, r5, #0x0
bl sub_02011308
b _02011242
_0201123C:
add r1, r5, #0x0
bl sub_020113EC
_02011242:
cmp r0, #0x1
bne _02011272
ldr r0, [r5, #0x28]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x10]
bl sub_0200F62C
ldr r0, [r5, #0xc]
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02011272
_02011258:
bl Heap_Free
add r0, r4, #0x0
str r0, [r5, #0x14]
ldr r0, [r5, #0xc]
mov r4, #0x1
add r0, r0, #0x1
str r0, [r5, #0xc]
b _02011272
_0201126A:
mov r4, #0x1
b _02011272
_0201126E:
bl GF_AssertFail
_02011272:
add r0, r4, #0x0
pop {r3-r5, pc}
nop
_02011278: .word 0x00000386
thumb_func_start sub_0201127C
sub_0201127C: ; 0x0201127C
push {r3-r7, lr}
sub sp, #0x8
add r4, r1, #0x0
add r6, r2, #0x0
add r5, r0, #0x0
lsl r0, r6, #0xc
ldr r2, [r4, #0x2c]
add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
lsl r0, r0, #0xa
add r0, r2, r0
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
asr r2, r0, #0xc
mov r0, #0xe1
sub r1, r6, r2
lsl r0, r0, #0x2
strb r1, [r5, r0]
sub r1, r0, #0x4
str r4, [r5, r1]
add r1, r4, #0x0
add r1, #0x23
ldrb r1, [r1, #0x0]
add r0, r0, #0x2
add r3, r7, #0x0
strb r1, [r5, r0]
ldr r0, [sp, #0x20]
add r1, r4, #0x0
str r0, [sp, #0x0]
ldr r0, [sp, #0x24]
str r0, [sp, #0x4]
add r0, r5, #0x0
bl sub_0200FE20
add r0, r4, #0x0
add r0, #0x20
ldrb r0, [r0, #0x0]
cmp r0, #0x0
bne _020112EA
add r4, #0x23
ldrb r3, [r4, #0x0]
ldr r0, [sp, #0x24]
ldr r2, [sp, #0x20]
mov r1, #0x1
bl sub_0200F6E4
b _020112F8
_020112EA:
add r4, #0x23
ldrb r3, [r4, #0x0]
ldr r0, [sp, #0x24]
ldr r2, [sp, #0x20]
mov r1, #0x2
bl sub_0200F6E4
_020112F8:
ldr r0, _02011304 ; =0x00000385
mov r1, #0x0
strb r1, [r5, r0]
add sp, #0x8
pop {r3-r7, pc}
nop
_02011304: .word 0x00000385
thumb_func_start sub_02011308
sub_02011308: ; 0x02011308
push {r4-r6, lr}
sub sp, #0x10
add r4, r1, #0x0
ldr r1, _02011378 ; =0x00000385
add r5, r0, #0x0
ldrb r1, [r5, r1]
mov r6, #0x0
cmp r1, #0x0
beq _02011324
cmp r1, #0x1
beq _0201135A
cmp r1, #0x2
beq _02011370
b _02011372
_02011324:
bl sub_0200FE90
cmp r0, #0x1
bne _02011372
ldr r2, _02011378 ; =0x00000385
ldrb r0, [r5, r2]
sub r1, r2, #0x5
add r0, r0, #0x1
strb r0, [r5, r2]
ldr r0, [r4, #0x10]
sub r2, r2, #0x1
str r0, [sp, #0x0]
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, [r4, #0x1c]
str r0, [sp, #0x8]
ldr r0, [r4, #0x20]
str r0, [sp, #0xc]
ldr r1, [r5, r1]
add r0, r5, #0x0
ldrb r2, [r5, r2]
ldr r3, [r4, #0x8]
add r0, #0x4c
add r1, #0x24
bl sub_02010FD0
b _02011372
_0201135A:
add r0, #0x4c
bl sub_020110BC
cmp r0, #0x1
bne _02011372
ldr r0, _02011378 ; =0x00000385
mov r6, #0x1
ldrb r1, [r5, r0]
add r1, r1, #0x1
strb r1, [r5, r0]
b _02011372
_02011370:
mov r6, #0x1
_02011372:
add r0, r6, #0x0
add sp, #0x10
pop {r4-r6, pc}
.balign 4
_02011378: .word 0x00000385
thumb_func_start sub_0201137C
sub_0201137C: ; 0x0201137C
push {r3-r7, lr}
sub sp, #0x10
add r4, r1, #0x0
add r6, r2, #0x0
add r5, r0, #0x0
lsl r0, r6, #0xc
ldr r2, [r4, #0x2c]
add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
lsl r0, r0, #0xa
add r0, r2, r0
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
mov r1, #0xe1
asr r0, r0, #0xc
lsl r1, r1, #0x2
strb r0, [r5, r1]
ldrb r0, [r5, r1]
sub r2, r6, r0
sub r0, r1, #0x4
str r4, [r5, r0]
add r4, #0x23
add r0, r1, #0x2
ldrb r3, [r4, #0x0]
sub r1, r1, #0x4
strb r3, [r5, r0]
ldr r0, [sp, #0x28]
add r3, r7, #0x0
str r0, [sp, #0x0]
ldr r0, [sp, #0x2c]
str r0, [sp, #0x4]
ldr r0, [sp, #0x30]
str r0, [sp, #0x8]
ldr r0, [sp, #0x34]
str r0, [sp, #0xc]
ldr r1, [r5, r1]
add r0, r5, #0x0
add r0, #0x4c
add r1, #0x24
bl sub_02010FD0
ldr r0, _020113E8 ; =0x00000385
mov r1, #0x0
strb r1, [r5, r0]
add sp, #0x10
pop {r3-r7, pc}
.balign 4
_020113E8: .word 0x00000385
thumb_func_start sub_020113EC
sub_020113EC: ; 0x020113EC
push {r4-r6, lr}
sub sp, #0x8
add r4, r1, #0x0
ldr r1, _0201147C ; =0x00000385
add r5, r0, #0x0
ldrb r1, [r5, r1]
mov r6, #0x0
cmp r1, #0x0
beq _02011408
cmp r1, #0x1
beq _02011460
cmp r1, #0x2
beq _02011474
b _02011476
_02011408:
add r0, #0x4c
bl sub_020110BC
cmp r0, #0x1
bne _02011476
ldr r2, _0201147C ; =0x00000385
ldrb r0, [r5, r2]
sub r1, r2, #0x5
add r0, r0, #0x1
strb r0, [r5, r2]
ldr r0, [r4, #0x10]
sub r2, r2, #0x1
str r0, [sp, #0x0]
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldrb r2, [r5, r2]
ldr r1, [r5, r1]
ldr r3, [r4, #0x8]
add r0, r5, #0x0
bl sub_0200FE20
mov r0, #0xe
lsl r0, r0, #0x6
ldr r3, [r5, r0]
add r0, r3, #0x0
add r0, #0x20
ldrb r0, [r0, #0x0]
cmp r0, #0x0
ldr r0, [r4, #0x18]
bne _02011452
add r3, #0x23
ldrb r3, [r3, #0x0]
ldr r2, [r4, #0x10]
mov r1, #0x1
bl sub_0200F6E4
b _02011476
_02011452:
add r3, #0x23
ldrb r3, [r3, #0x0]
ldr r2, [r4, #0x10]
mov r1, #0x2
bl sub_0200F6E4
b _02011476
_02011460:
bl sub_0200FE90
cmp r0, #0x1
bne _02011476
ldr r0, _0201147C ; =0x00000385
mov r6, #0x1
ldrb r1, [r5, r0]
add r1, r1, #0x1
strb r1, [r5, r0]
b _02011476
_02011474:
mov r6, #0x1
_02011476:
add r0, r6, #0x0
add sp, #0x8
pop {r4-r6, pc}
.balign 4
_0201147C: .word 0x00000385