summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_0200E1D0_s.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/unk_0200E1D0_s.s')
-rw-r--r--arm9/asm/unk_0200E1D0_s.s929
1 files changed, 929 insertions, 0 deletions
diff --git a/arm9/asm/unk_0200E1D0_s.s b/arm9/asm/unk_0200E1D0_s.s
new file mode 100644
index 00000000..a84df611
--- /dev/null
+++ b/arm9/asm/unk_0200E1D0_s.s
@@ -0,0 +1,929 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .public UNK_021C46B4
+
+ .section .rodata
+
+ .global UNK_020ECEF4
+UNK_020ECEF4: ; 0x020ECEF4
+ .word FUN_0200E850
+ .word FUN_0200E86C
+ .word FUN_0200E88C
+ .word FUN_0200E8C8
+ .word FUN_0200E900
+ .word FUN_0200E93C
+ .word FUN_0200E974
+ .word FUN_0200E9A0
+ .word FUN_0200E9CC
+ .word FUN_0200EA08
+ .word FUN_0200EA40
+ .word FUN_0200EA7C
+ .word FUN_0200EAB4
+ .word FUN_0200EAE0
+ .word FUN_0200EB0C
+ .word FUN_0200EB40
+ .word FUN_0200EB70
+ .word FUN_0200EB9C
+ .word FUN_0200EBC8
+ .word FUN_0200EBF4
+ .word FUN_0200EC20
+ .word FUN_0200EC4C
+ .word FUN_0200EC78
+ .word FUN_0200ECA4
+ .word FUN_0200ECD0
+ .word FUN_0200ECFC
+ .word FUN_0200ED28
+ .word FUN_0200ED54
+ .word FUN_0200ED80
+ .word FUN_0200EDD4
+ .word FUN_0200EE24
+ .word FUN_0200EE60
+ .word FUN_0200EE98
+ .word FUN_0200EED8
+ .word FUN_0200EF14
+ .word FUN_0200EF54
+ .word FUN_0200EF90
+ .word FUN_0200EFBC
+ .word FUN_0200EFE8
+ .word FUN_0200F014
+ .word FUN_0200F040
+ .word FUN_0200F07C
+
+ .text
+
+ thumb_func_start FUN_0200E1D0
+FUN_0200E1D0: ; 0x0200E1D0
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x30]
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r0, #0x0
+ bne _0200E1E6
+ bl GF_AssertFail
+_0200E1E6:
+ ldr r0, [sp, #0x34]
+ cmp r0, #0x0
+ bne _0200E1F0
+ bl GF_AssertFail
+_0200E1F0:
+ ldr r0, _0200E2AC ; =UNK_021C46B4 + 0x140
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E1FC
+ bl GF_AssertFail
+_0200E1FC:
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ bl FUN_0200E808
+ ldr r1, _0200E2B0 ; =UNK_021C46B4
+ add r0, r5, #0x0
+ bl FUN_0200E558
+ ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74
+ bl FUN_0200E5F4
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ add r1, r6, #0x0
+ bl FUN_0200E75C
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, _0200E2B8 ; =UNK_021C46B4 + 0x8C
+ ldr r2, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74
+ ldr r3, [sp, #0x34]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ add r1, r4, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, _0200E2BC ; =UNK_021C46B4 + 0x14
+ str r5, [sp, #0x18]
+ bl FUN_0200E5C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, _0200E2B8 ; =UNK_021C46B4 + 0x8C
+ ldr r2, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74
+ ldr r3, [sp, #0x34]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ add r1, r7, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, _0200E2C0 ; =UNK_021C46B4 + 0x44
+ str r5, [sp, #0x18]
+ bl FUN_0200E5C8
+ ldr r0, _0200E2AC ; =UNK_021C46B4 + 0x140
+ mov r1, #0x1
+ strh r1, [r0, #0xc]
+ ldr r0, _0200E2C4 ; =UNK_021C46B4 + 0x4
+ ldr r1, _0200E2BC ; =UNK_021C46B4 + 0x14
+ bl FUN_0200E528
+ ldr r0, _0200E2C8 ; =UNK_021C46B4 + 0x8
+ ldr r1, _0200E2C0 ; =UNK_021C46B4 + 0x44
+ bl FUN_0200E528
+ ldr r0, _0200E2CC ; =UNK_021C46B4
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E28E
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ add r0, #0x14
+ bl FUN_0200E7A8
+ ldr r1, _0200E2D0 ; =0x0000014E
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ mov r2, #0x1
+ strb r2, [r0, r1]
+_0200E28E:
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _0200E2A6
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ add r0, #0x44
+ bl FUN_0200E7A8
+ ldr r1, _0200E2D4 ; =0x0000014F
+ ldr r0, _0200E2B0 ; =UNK_021C46B4
+ mov r2, #0x1
+ strb r2, [r0, r1]
+_0200E2A6:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_0200E2AC: .word UNK_021C46B4 + 0x140
+_0200E2B0: .word UNK_021C46B4
+_0200E2B4: .word UNK_021C46B4 + 0x74
+_0200E2B8: .word UNK_021C46B4 + 0x8C
+_0200E2BC: .word UNK_021C46B4 + 0x14
+_0200E2C0: .word UNK_021C46B4 + 0x44
+_0200E2C4: .word UNK_021C46B4 + 0x4
+_0200E2C8: .word UNK_021C46B4 + 0x8
+_0200E2CC: .word UNK_021C46B4
+_0200E2D0: .word 0x0000014E
+_0200E2D4: .word 0x0000014F
+
+ thumb_func_start FUN_0200E2D8
+FUN_0200E2D8: ; 0x0200E2D8
+ push {r4, lr}
+ ldr r0, _0200E300 ; =UNK_021C46B4 + 0x140
+ ldr r4, _0200E304 ; =UNK_021C46B4
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E2FC
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0x14
+ add r2, #0x44
+ bl FUN_0200E4B8
+ cmp r0, #0x1
+ bne _0200E2FC
+ add r0, r4, #0x0
+ bl FUN_0200E460
+_0200E2FC:
+ pop {r4, pc}
+ nop
+_0200E300: .word UNK_021C46B4 + 0x140
+_0200E304: .word UNK_021C46B4
+
+ thumb_func_start FUN_0200E308
+FUN_0200E308: ; 0x0200E308
+ ldr r0, _0200E318 ; =UNK_021C46B4 + 0x140
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ bne _0200E314
+ mov r0, #0x1
+ bx lr
+_0200E314:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0200E318: .word UNK_021C46B4 + 0x140
+
+ thumb_func_start FUN_0200E31C
+FUN_0200E31C: ; 0x0200E31C
+ push {r3, lr}
+ ldr r0, _0200E368 ; =UNK_021C46B4 + 0x74
+ mov r1, #0x0
+ bl FUN_0200E6A0
+ ldr r0, _0200E368 ; =UNK_021C46B4 + 0x74
+ mov r1, #0x1
+ bl FUN_0200E6A0
+ ldr r0, _0200E36C ; =UNK_021C46B4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0200E33A
+ mov r1, #0x2
+ str r1, [r0, #0x20]
+_0200E33A:
+ ldr r0, _0200E36C ; =UNK_021C46B4
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0200E346
+ mov r1, #0x2
+ str r1, [r0, #0x50]
+_0200E346:
+ ldr r0, _0200E370 ; =UNK_021C46B4 + 0x4
+ ldr r1, _0200E374 ; =UNK_021C46B4 + 0x14
+ bl FUN_0200E528
+ ldr r0, _0200E378 ; =UNK_021C46B4 + 0x8
+ ldr r1, _0200E37C ; =UNK_021C46B4 + 0x44
+ bl FUN_0200E528
+ ldr r0, _0200E380 ; =UNK_021C46B4 + 0x140
+ mov r1, #0x0
+ strh r1, [r0, #0xc]
+ strb r1, [r0, #0xe]
+ strb r1, [r0, #0xf]
+ ldr r0, _0200E384 ; =UNK_021C46B4
+ bl FUN_0200E808
+ pop {r3, pc}
+ .balign 4
+_0200E368: .word UNK_021C46B4 + 0x74
+_0200E36C: .word UNK_021C46B4
+_0200E370: .word UNK_021C46B4 + 0x4
+_0200E374: .word UNK_021C46B4 + 0x14
+_0200E378: .word UNK_021C46B4 + 0x8
+_0200E37C: .word UNK_021C46B4 + 0x44
+_0200E380: .word UNK_021C46B4 + 0x140
+_0200E384: .word UNK_021C46B4
+
+ thumb_func_start FUN_0200E388
+FUN_0200E388: ; 0x0200E388
+ ldr r3, _0200E390 ; =FUN_02011480
+ add r1, r0, #0x0
+ mov r0, #0x0
+ bx r3
+ .balign 4
+_0200E390: .word FUN_02011480
+
+ thumb_func_start FUN_0200E394
+FUN_0200E394: ; 0x0200E394
+ ldr r3, _0200E39C ; =FUN_0200E440
+ mov r1, #0x0
+ bx r3
+ nop
+_0200E39C: .word FUN_0200E440
+
+ thumb_func_start FUN_0200E3A0
+FUN_0200E3A0: ; 0x0200E3A0
+ ldr r2, _0200E3B4 ; =0x00007FFF
+ cmp r1, r2
+ bne _0200E3AA
+ mov r1, #0x10
+ b _0200E3AE
+_0200E3AA:
+ mov r1, #0xf
+ mvn r1, r1
+_0200E3AE:
+ ldr r3, _0200E3B8 ; =FUN_0200E440
+ bx r3
+ nop
+_0200E3B4: .word 0x00007FFF
+_0200E3B8: .word FUN_0200E440
+
+ thumb_func_start FUN_0200E3BC
+FUN_0200E3BC: ; 0x0200E3BC
+ push {r0-r3}
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r0, sp, #0x1c
+ bne _0200E3D2
+ mov r1, #0x0
+ mov r2, #0x2
+ bl GX_LoadBGPltt
+ b _0200E3DA
+_0200E3D2:
+ mov r1, #0x0
+ mov r2, #0x2
+ bl GXS_LoadBGPltt
+_0200E3DA:
+ ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_02011634
+ mov r2, #0x0
+ ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C
+ mov r1, #0x3f
+ add r3, r2, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02011650
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_02011698
+ ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C
+ mov r1, #0x20
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02011678
+ add sp, #0xc
+ pop {r3-r4}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ nop
+_0200E41C: .word UNK_021C46B4 + 0x8C
+
+ thumb_func_start FUN_0200E420
+FUN_0200E420: ; 0x0200E420
+ push {r0-r3}
+ push {r3, lr}
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x2
+ bl GX_LoadBGPltt
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x2
+ bl GXS_LoadBGPltt
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_0200E440
+FUN_0200E440: ; 0x0200E440
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _0200E44E
+ ldr r0, _0200E458 ; =0x0400006C
+ bl GXx_SetMasterBrightness_
+ pop {r3, pc}
+_0200E44E:
+ ldr r0, _0200E45C ; =0x0400106C
+ bl GXx_SetMasterBrightness_
+ pop {r3, pc}
+ nop
+_0200E458: .word 0x0400006C
+_0200E45C: .word 0x0400106C
+
+ thumb_func_start FUN_0200E460
+FUN_0200E460: ; 0x0200E460
+ push {r4, lr}
+ mov r1, #0x53
+ add r4, r0, #0x0
+ mov r2, #0x0
+ lsl r1, r1, #0x2
+ strh r2, [r4, r1]
+ bl FUN_0200E770
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ strh r0, [r4, r1]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _0200E490
+ add r0, r4, #0x0
+ add r0, #0x14
+ bl FUN_0200E7D8
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0x0
+ bne _0200E490
+ ldr r0, _0200E4B4 ; =UNK_021C46B4 + 0x140
+ mov r1, #0x0
+ strb r1, [r0, #0xe]
+_0200E490:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0200E4AA
+ add r0, r4, #0x0
+ add r0, #0x44
+ bl FUN_0200E7D8
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0x0
+ bne _0200E4AA
+ ldr r0, _0200E4B4 ; =UNK_021C46B4 + 0x140
+ mov r1, #0x0
+ strb r1, [r0, #0xf]
+_0200E4AA:
+ add r0, r4, #0x0
+ bl FUN_0200E808
+ pop {r4, pc}
+ nop
+_0200E4B4: .word UNK_021C46B4 + 0x140
+
+ thumb_func_start FUN_0200E4B8
+FUN_0200E4B8: ; 0x0200E4B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r2, #0x0
+ cmp r0, #0x0
+ beq _0200E4CE
+ cmp r0, #0x1
+ beq _0200E4E0
+ cmp r0, #0x2
+ beq _0200E4FA
+ b _0200E512
+_0200E4CE:
+ add r0, r5, #0x4
+ bl FUN_0200E528
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E4E0:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _0200E4EE
+ add r0, r5, #0x4
+ bl FUN_0200E528
+ b _0200E512
+_0200E4EE:
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E4FA:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _0200E50C
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E50C:
+ add r0, r5, #0x4
+ bl FUN_0200E528
+_0200E512:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _0200E522
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _0200E522
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0200E522:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E528
+FUN_0200E528: ; 0x0200E528
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0200E540
+ add r0, r1, #0x0
+ bl FUN_0200E544
+ cmp r0, #0x1
+ bne _0200E540
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_0200E540:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E544
+FUN_0200E544: ; 0x0200E544
+ push {r3, lr}
+ ldr r1, [r0, #0x0]
+ lsl r2, r1, #0x2
+ ldr r1, _0200E554 ; =UNK_020ECEF4
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_0200E554: .word UNK_020ECEF4
+
+ thumb_func_start FUN_0200E558
+FUN_0200E558: ; 0x0200E558
+ push {r3, lr}
+ cmp r0, #0x4
+ bhi _0200E5B8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200E56A: ; jump table (using 16-bit offset)
+ .short _0200E574 - _0200E56A - 2; case 0
+ .short _0200E582 - _0200E56A - 2; case 1
+ .short _0200E590 - _0200E56A - 2; case 2
+ .short _0200E59E - _0200E56A - 2; case 3
+ .short _0200E5AC - _0200E56A - 2; case 4
+_0200E574:
+ mov r2, #0x1
+ add r0, r1, #0x0
+ mov r1, #0x0
+ add r3, r2, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E582:
+ add r0, r1, #0x0
+ mov r1, #0x1
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E590:
+ mov r2, #0x1
+ add r0, r1, #0x0
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E59E:
+ add r0, r1, #0x0
+ mov r1, #0x1
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E5AC:
+ add r0, r1, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x1
+ bl FUN_0200E5BC
+_0200E5B8:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E5BC
+FUN_0200E5BC: ; 0x0200E5BC
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r2, [r0, #0xc]
+ str r3, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0200E5C8
+FUN_0200E5C8: ; 0x0200E5C8
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ ldr r1, [sp, #0x0]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, [sp, #0x4]
+ str r1, [r0, #0x14]
+ ldr r1, [sp, #0x8]
+ str r1, [r0, #0x10]
+ ldr r1, [sp, #0xc]
+ str r1, [r0, #0x18]
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x1c]
+ ldr r1, [sp, #0x14]
+ str r1, [r0, #0x20]
+ ldr r1, _0200E5F0 ; =0xFFFFFFF0
+ add r1, sp
+ ldrh r1, [r1, #0x28]
+ strh r1, [r0, #0x24]
+ bx lr
+ .balign 4
+_0200E5F0: .word 0xFFFFFFF0
+
+ thumb_func_start FUN_0200E5F4
+FUN_0200E5F4: ; 0x0200E5F4
+ mov r3, #0x0
+ ldr r1, _0200E60C ; =FUN_0200E758
+ add r2, r3, #0x0
+_0200E5FA:
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x8]
+ str r2, [r0, #0x10]
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, #0x2
+ blt _0200E5FA
+ bx lr
+ nop
+_0200E60C: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E610
+FUN_0200E610: ; 0x0200E610
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0200E616:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ blx r1
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x2
+ blt _0200E616
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E628
+FUN_0200E628: ; 0x0200E628
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0x10
+ lsl r4, r3, #0x2
+ str r0, [sp, #0x8]
+ ldr r0, [r0, r4]
+ add r7, r2, #0x0
+ str r1, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0200E64A
+ bl GF_AssertFail
+_0200E64A:
+ add r6, r5, #0x0
+ add r6, #0x8
+ ldr r0, [r6, r4]
+ cmp r0, #0x0
+ bne _0200E658
+ bl GF_AssertFail
+_0200E658:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _0200E672
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ bne _0200E672
+ ldr r0, _0200E698 ; =FUN_0200E610
+ add r1, r5, #0x0
+ bl FUN_02015F34
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+_0200E672:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x1
+ beq _0200E67C
+ bl GF_AssertFail
+_0200E67C:
+ ldr r0, [sp, #0x0]
+ cmp r7, #0x0
+ str r0, [r5, r4]
+ beq _0200E688
+ str r7, [r6, r4]
+ b _0200E68C
+_0200E688:
+ ldr r0, _0200E69C ; =FUN_0200E758
+ str r0, [r6, r4]
+_0200E68C:
+ ldr r0, [sp, #0x8]
+ mov r1, #0x1
+ str r1, [r0, r4]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0200E698: .word FUN_0200E610
+_0200E69C: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E6A0
+FUN_0200E6A0: ; 0x0200E6A0
+ push {r3-r5, lr}
+ lsl r4, r1, #0x2
+ add r5, r0, #0x0
+ mov r1, #0x0
+ add r0, r5, r4
+ str r1, [r0, #0x10]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _0200E6BC
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ bne _0200E6BC
+ bl FUN_02015F1C
+_0200E6BC:
+ ldr r1, _0200E6C8 ; =FUN_0200E758
+ add r0, r5, r4
+ str r1, [r0, #0x8]
+ mov r0, #0x0
+ str r0, [r5, r4]
+ pop {r3-r5, pc}
+ .balign 4
+_0200E6C8: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E6CC
+FUN_0200E6CC: ; 0x0200E6CC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x10
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl AllocFromHeapAtEnd
+ add r1, r0, #0x0
+ str r5, [r1, #0x0]
+ str r4, [r1, #0x4]
+ mov r2, #0x1
+ str r6, [r1, #0x8]
+ ldr r0, _0200E6F4 ; =FUN_0200E71C
+ lsl r2, r2, #0xa
+ str r7, [r1, #0xc]
+ bl FUN_0200CA98
+ pop {r3-r7, pc}
+ .balign 4
+_0200E6F4: .word FUN_0200E71C
+
+ thumb_func_start FUN_0200E6F8
+FUN_0200E6F8: ; 0x0200E6F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x8
+ bl AllocFromHeapAtEnd
+ add r1, r0, #0x0
+ mov r2, #0x1
+ str r5, [r1, #0x0]
+ ldr r0, _0200E718 ; =FUN_0200E73C
+ lsl r2, r2, #0xa
+ str r4, [r1, #0x4]
+ bl FUN_0200CA98
+ pop {r3-r5, pc}
+ .balign 4
+_0200E718: .word FUN_0200E73C
+
+ thumb_func_start FUN_0200E71C
+FUN_0200E71C: ; 0x0200E71C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ ldr r3, [r4, #0xc]
+ bl FUN_0200E628
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ add r0, r4, #0x0
+ bl FreeToHeap
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200E73C
+FUN_0200E73C: ; 0x0200E73C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ bl FUN_0200E6A0
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ add r0, r4, #0x0
+ bl FreeToHeap
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200E758
+FUN_0200E758: ; 0x0200E758
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200E75C
+FUN_0200E75C: ; 0x0200E75C
+ ldr r2, _0200E76C ; =0x0000FFFF
+ cmp r1, r2
+ bne _0200E768
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ ldrh r1, [r0, r1]
+_0200E768:
+ add r0, r1, #0x0
+ bx lr
+ .balign 4
+_0200E76C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0200E770
+FUN_0200E770: ; 0x0200E770
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x1
+ bne _0200E77C
+ add r2, r0, #0x0
+ add r2, #0x14
+ b _0200E780
+_0200E77C:
+ add r2, r0, #0x0
+ add r2, #0x44
+_0200E780:
+ ldr r1, [r2, #0x28]
+ cmp r1, #0x1
+ bne _0200E78A
+ ldrh r0, [r2, #0x24]
+ bx lr
+_0200E78A:
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200E794
+FUN_0200E794: ; 0x0200E794
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r1, #0x10]
+ mov r1, #0x0
+ bl FUN_0200E440
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200E7A8
+FUN_0200E7A8: ; 0x0200E7A8
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x28]
+ cmp r0, #0x0
+ bne _0200E7CE
+ ldrh r2, [r1, #0x24]
+ ldr r0, _0200E7D0 ; =0x00007FFF
+ cmp r2, r0
+ beq _0200E7BE
+ cmp r2, #0x0
+ bne _0200E7CE
+_0200E7BE:
+ ldr r0, [r1, #0x2c]
+ cmp r0, #0x0
+ bne _0200E7CE
+ mov r2, #0x1
+ ldr r0, _0200E7D4 ; =FUN_0200E794
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+_0200E7CE:
+ pop {r3, pc}
+ .balign 4
+_0200E7D0: .word 0x00007FFF
+_0200E7D4: .word FUN_0200E794
+
+ thumb_func_start FUN_0200E7D8
+FUN_0200E7D8: ; 0x0200E7D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x1
+ bne _0200E800
+ ldrh r1, [r4, #0x24]
+ ldr r0, _0200E804 ; =0x00007FFF
+ cmp r1, r0
+ beq _0200E7EE
+ cmp r1, #0x0
+ bne _0200E800
+_0200E7EE:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0x0
+ bne _0200E800
+ ldr r0, [r4, #0x10]
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x10]
+ bl FUN_0200E388
+_0200E800:
+ pop {r4, pc}
+ nop
+_0200E804: .word 0x00007FFF
+
+ thumb_func_start FUN_0200E808
+FUN_0200E808: ; 0x0200E808
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x14
+ mov r0, #0x0
+_0200E812:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0200E812
+ add r0, r4, #0x0
+ add r0, #0x14
+ mov r1, #0x0
+ mov r2, #0x30
+ bl memset
+ add r0, r4, #0x0
+ add r0, #0x44
+ mov r1, #0x0
+ mov r2, #0x30
+ bl memset
+ add r2, r4, #0x0
+ add r2, #0x74
+ mov r1, #0x18
+ mov r0, #0x0
+_0200E83A:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0200E83A
+ add r4, #0x8c
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0xc0
+ bl memset
+ pop {r4, pc}