summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-06-01 20:40:25 +0100
committerGitHub <noreply@github.com>2021-06-01 20:40:25 +0100
commitd7935f390ac3bb16bc00cdcba2065cc2b75aa51c (patch)
tree1c0c1fe083888a4bc07a953a94642865fea5a56c
parent66c988dd6b2d62e930d897c4a4d0c575464c8d0c (diff)
parentf67d6fe193eeee8058a45934d08c3b883cc08eb9 (diff)
Merge branch 'master' into master
-rw-r--r--arm9/asm/unk_0200BB14.s2135
-rw-r--r--arm9/src/unk_0200BB14.c1323
-rw-r--r--include/unk_0200BB14.h243
3 files changed, 1566 insertions, 2135 deletions
diff --git a/arm9/asm/unk_0200BB14.s b/arm9/asm/unk_0200BB14.s
deleted file mode 100644
index b8a6eab5..00000000
--- a/arm9/asm/unk_0200BB14.s
+++ /dev/null
@@ -1,2135 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0200BB14
-FUN_0200BB14: ; 0x0200BB14
- push {r4, lr}
- mov r1, #0x4e
- lsl r1, r1, #0x2
- add r4, r0, #0x0
- bl AllocFromHeap
- cmp r0, #0x0
- bne _0200BB28
- mov r0, #0x0
- pop {r4, pc}
-_0200BB28:
- str r4, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x4]
- mov r1, #0x1
- str r1, [r0, #0x8]
- pop {r4, pc}
-
- thumb_func_start FUN_0200BB34
-FUN_0200BB34: ; 0x0200BB34
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200BB3E
- bl GF_AssertFail
-_0200BB3E:
- ldr r0, [r4, #0x0]
- mov r1, #0x58
- bl AllocFromHeap
- cmp r0, #0x0
- bne _0200BB4E
- mov r0, #0x0
- pop {r4, pc}
-_0200BB4E:
- ldr r1, [r4, #0x4]
- mov r2, #0x0
- add r1, r1, #0x1
- str r1, [r4, #0x4]
- add r3, r0, #0x0
- add r1, r2, #0x0
-_0200BB5A:
- add r2, r2, #0x1
- str r1, [r3, #0xc]
- add r3, r3, #0x4
- cmp r2, #0x6
- blt _0200BB5A
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BB68
-FUN_0200BB68: ; 0x0200BB68
- add r0, #0x10
- bx lr
-
- thumb_func_start FUN_0200BB6C
-FUN_0200BB6C: ; 0x0200BB6C
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r5, #0x0
- bne _0200BB80
- bl GF_AssertFail
-_0200BB80:
- cmp r5, #0x0
- bne _0200BB8A
- add sp, #0x24
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BB8A:
- ldr r0, [r6, #0x0]
- str r0, [sp, #0x14]
- ldr r0, [r6, #0x4]
- str r0, [sp, #0x18]
- ldr r0, [r6, #0x8]
- str r0, [sp, #0x1c]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0x20]
- ldr r1, [r6, #0xc]
- ldr r2, [r6, #0x10]
- add r0, sp, #0x14
- bl FUN_0201D060
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl FUN_0201E00C
- bl NNS_G2dInitOamManagerModule
- ldr r0, [r5, #0x8]
- cmp r0, #0x1
- bne _0200BBD6
- ldr r0, [r4, #0x10]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x1c]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0x10]
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0x8]
- ldr r3, [r4, #0xc]
- bl FUN_02009EAC
-_0200BBD6:
- ldr r1, [r5, #0x0]
- mov r0, #0x20
- bl FUN_0201C328
- str r0, [r5, #0xc]
- bl FUN_0201D168
- bl FUN_0201E0BC
- mov r0, #0x1
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200BBF0
-FUN_0200BBF0: ; 0x0200BBF0
- push {r4, lr}
- add r3, r0, #0x0
- add r4, r1, #0x0
- cmp r3, #0x0
- beq _0200BBFE
- cmp r4, #0x0
- bne _0200BC02
-_0200BBFE:
- mov r0, #0x0
- pop {r4, pc}
-_0200BC02:
- add r0, r2, #0x0
- add r1, r3, #0x0
- ldr r2, [r3, #0x0]
- add r1, #0x10
- bl FUN_02008C9C
- str r0, [r4, #0x0]
- mov r0, #0x1
- pop {r4, pc}
-
- thumb_func_start FUN_0200BC14
-FUN_0200BC14: ; 0x0200BC14
- ldr r3, _0200BC18 ; =FUN_0201FFC8
- bx r3
- .balign 4
-_0200BC18: .word FUN_0201FFC8
-
- thumb_func_start FUN_0200BC1C
-FUN_0200BC1C: ; 0x0200BC1C
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200BC26
- bl GF_AssertFail
-_0200BC26:
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BC30
-FUN_0200BC30: ; 0x0200BC30
- ldr r3, _0200BC34 ; =FUN_02009F80
- bx r3
- .balign 4
-_0200BC34: .word FUN_02009F80
-
- thumb_func_start FUN_0200BC38
-FUN_0200BC38: ; 0x0200BC38
- ldr r3, _0200BC3C ; =FUN_0201C348
- bx r3
- .balign 4
-_0200BC3C: .word FUN_0201C348
-
- thumb_func_start FUN_0200BC40
-FUN_0200BC40: ; 0x0200BC40
- ldr r3, _0200BC48 ; =FUN_0201FD58
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200BC48: .word FUN_0201FD58
-
- thumb_func_start FUN_0200BC4C
-FUN_0200BC4C: ; 0x0200BC4C
- push {r3, lr}
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0200BC58
- bl FUN_02008C80
-_0200BC58:
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200BC5C
-FUN_0200BC5C: ; 0x0200BC5C
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, [r5, #0x54]
- mov r4, #0x0
- cmp r0, #0x0
- ble _0200BC7C
-_0200BC68:
- ldr r0, [r5, #0x8]
- add r1, r4, #0x0
- bl FUN_02009660
- bl FUN_020096B4
- ldr r0, [r5, #0x54]
- add r4, r4, #0x1
- cmp r4, r0
- blt _0200BC68
-_0200BC7C:
- ldr r0, [r5, #0x8]
- bl FreeToHeap
- ldr r0, [r5, #0x24]
- bl FUN_02009C30
- ldr r0, [r5, #0x28]
- bl FUN_02009E28
- ldr r0, [r5, #0x54]
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200BCAE
- add r4, r5, #0x0
-_0200BC98:
- ldr r0, [r4, #0x24]
- bl FUN_02009448
- ldr r0, [r4, #0xc]
- bl FUN_02008E2C
- ldr r0, [r5, #0x54]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200BC98
-_0200BCAE:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200BCB0
-FUN_0200BCB0: ; 0x0200BCB0
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0xc]
- bl FUN_0201C350
- bl FUN_0201D12C
- bl FUN_0201E08C
- ldr r0, [r4, #0x8]
- cmp r0, #0x1
- bne _0200BCCC
- bl FUN_02009FA0
-_0200BCCC:
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BCD0
-FUN_0200BCD0: ; 0x0200BCD0
- ldr r2, [r0, #0x4]
- ldr r3, _0200BCDC ; =FreeToHeap
- sub r2, r2, #0x1
- str r2, [r0, #0x4]
- add r0, r1, #0x0
- bx r3
- .balign 4
-_0200BCDC: .word FreeToHeap
-
- thumb_func_start FUN_0200BCE0
-FUN_0200BCE0: ; 0x0200BCE0
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0200BC40
- add r0, r4, #0x0
- bl FUN_0200BC4C
- add r0, r4, #0x0
- bl FUN_0200BC5C
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200BCD0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0200BD04
-FUN_0200BD04: ; 0x0200BD04
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _0200BD12
- bl GF_AssertFail
-_0200BD12:
- add r0, r4, #0x0
- bl FUN_0200BCB0
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start FUN_0200BD20
-FUN_0200BD20: ; 0x0200BD20
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- mov r0, #0x6
- add r4, r1, #0x0
- str r2, [sp, #0x10]
- str r0, [sp, #0x14]
- cmp r5, #0x0
- beq _0200BD36
- cmp r4, #0x0
- bne _0200BD3C
-_0200BD36:
- add sp, #0x24
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BD3C:
- add r0, r2, #0x0
- ldr r0, [r0, #0x10]
- cmp r0, #0x0
- bne _0200BD48
- mov r0, #0x4
- str r0, [sp, #0x14]
-_0200BD48:
- ldr r0, [sp, #0x14]
- str r0, [r4, #0x54]
- bl FUN_0200965C
- add r2, r0, #0x0
- ldr r1, [sp, #0x14]
- ldr r0, [r5, #0x0]
- mul r1, r2
- bl AllocFromHeap
- str r0, [r4, #0x8]
- ldr r0, [sp, #0x14]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200BD94
- ldr r6, [sp, #0x10]
-_0200BD68:
- ldr r0, [r4, #0x8]
- add r1, r7, #0x0
- bl FUN_02009660
- str r0, [sp, #0x18]
- ldr r0, [r5, #0x0]
- ldr r1, [r6, #0x0]
- bl FUN_020161A4
- ldr r1, [sp, #0x18]
- ldr r2, [r5, #0x0]
- str r0, [sp, #0x1c]
- bl FUN_02009668
- ldr r0, [sp, #0x1c]
- bl FreeToHeap
- ldr r0, [sp, #0x14]
- add r7, r7, #0x1
- add r6, r6, #0x4
- cmp r7, r0
- blt _0200BD68
-_0200BD94:
- ldr r0, [sp, #0x14]
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200BDBE
- add r7, r4, #0x0
-_0200BD9E:
- ldr r0, [r4, #0x8]
- add r1, r6, #0x0
- bl FUN_02009660
- bl FUN_020096CC
- ldr r2, [r5, #0x0]
- add r1, r6, #0x0
- bl FUN_02008DEC
- str r0, [r7, #0xc]
- ldr r0, [sp, #0x14]
- add r6, r6, #0x1
- add r7, r7, #0x4
- cmp r6, r0
- blt _0200BD9E
-_0200BDBE:
- ldr r0, [sp, #0x14]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200BDF6
- add r6, r4, #0x0
-_0200BDC8:
- ldr r0, [r4, #0x8]
- add r1, r7, #0x0
- bl FUN_02009660
- str r0, [sp, #0x20]
- bl FUN_020096CC
- ldr r1, [r5, #0x0]
- bl FUN_02009424
- add r2, r0, #0x0
- str r2, [r6, #0x24]
- ldr r0, [r6, #0xc]
- ldr r1, [sp, #0x20]
- ldr r3, [r5, #0x0]
- bl FUN_020093A8
- str r0, [r6, #0x3c]
- ldr r0, [sp, #0x14]
- add r7, r7, #0x1
- add r6, r6, #0x4
- cmp r7, r0
- blt _0200BDC8
-_0200BDF6:
- ldr r0, [r4, #0x24]
- bl FUN_02009A90
- ldr r0, [r4, #0x28]
- bl FUN_02009D34
- ldr r1, [sp, #0x10]
- ldr r0, [r5, #0x0]
- ldr r1, [r1, #0x18]
- bl FUN_020161A4
- ldr r1, [r4, #0x14]
- add r6, r0, #0x0
- str r1, [sp, #0x0]
- ldr r1, [r4, #0x18]
- str r1, [sp, #0x4]
- ldr r1, [r4, #0x1c]
- str r1, [sp, #0x8]
- ldr r1, [r4, #0x20]
- str r1, [sp, #0xc]
- ldr r1, [r5, #0x0]
- ldr r2, [r4, #0xc]
- ldr r3, [r4, #0x10]
- bl FUN_02008BE0
- str r0, [r4, #0x4]
- add r0, r6, #0x0
- bl FreeToHeap
- mov r0, #0x1
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200BE38
-FUN_0200BE38: ; 0x0200BE38
- push {r4, lr}
- sub sp, #0x28
- mov r3, #0x4
- mov r4, #0x6
- ldrsh r3, [r2, r3]
- ldrsh r4, [r2, r4]
- str r4, [sp, #0x0]
- str r3, [sp, #0x4]
- ldrh r4, [r2, #0xa]
- str r4, [sp, #0x8]
- ldr r4, [r2, #0xc]
- str r4, [sp, #0xc]
- ldr r4, [r2, #0x10]
- str r4, [sp, #0x10]
- ldr r4, [r2, #0x14]
- str r4, [sp, #0x14]
- ldr r4, [r2, #0x18]
- str r4, [sp, #0x18]
- ldr r4, [r2, #0x1c]
- str r4, [sp, #0x1c]
- ldr r4, [r2, #0x20]
- str r4, [sp, #0x20]
- ldr r4, [r2, #0x24]
- str r4, [sp, #0x24]
- ldr r2, [r2, #0x0]
- bl FUN_0200BE74
- add sp, #0x28
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BE74
-FUN_0200BE74: ; 0x0200BE74
- push {r4, lr}
- sub sp, #0x30
- add r4, r0, #0x0
- ldr r0, [r1, #0x0]
- str r0, [sp, #0x0]
- ldr r0, [r1, #0x4]
- ldr r1, [r0, #0x0]
- mov r0, #0x24
- mul r0, r2
- add r0, r1, r0
- str r0, [sp, #0x4]
- cmp r3, #0x0
- ble _0200BEA0
- lsl r0, r3, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BEAE
-_0200BEA0:
- lsl r0, r3, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BEAE:
- bl _ffix
- str r0, [sp, #0x8]
- add r1, sp, #0x28
- mov r0, #0x10
- ldrsh r0, [r1, r0]
- cmp r0, #0x0
- ble _0200BED0
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BEDE
-_0200BED0:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BEDE:
- bl _ffix
- str r0, [sp, #0xc]
- add r1, sp, #0x28
- mov r0, #0x14
- ldrsh r0, [r1, r0]
- cmp r0, #0x0
- ble _0200BF00
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BF0E
-_0200BF00:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BF0E:
- bl _ffix
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _0200BF24
- mov r0, #0x3
- ldr r1, [sp, #0xc]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0xc]
-_0200BF24:
- mov r0, #0x1
- lsl r0, r0, #0xc
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- str r0, [sp, #0x1c]
- mov r1, #0x0
- add r0, sp, #0x0
- strh r1, [r0, #0x20]
- ldr r0, [sp, #0x44]
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x4c]
- str r0, [sp, #0x28]
- ldr r0, [r4, #0x0]
- str r0, [sp, #0x2c]
- add r0, sp, #0x0
- bl FUN_0201FE94
- add r4, r0, #0x0
- beq _0200BF5A
- add r1, sp, #0x28
- ldrh r1, [r1, #0x18]
- bl FUN_02020130
- ldr r1, [sp, #0x48]
- add r0, r4, #0x0
- bl FUN_02020248
-_0200BF5A:
- add r0, r4, #0x0
- add sp, #0x30
- pop {r4, pc}
-
- thumb_func_start FUN_0200BF60
-FUN_0200BF60: ; 0x0200BF60
- push {r4-r7, lr}
- sub sp, #0xc
- str r0, [sp, #0x0]
- mov r0, #0x6
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x0]
- add r5, r1, #0x0
- add r6, r2, #0x0
- cmp r0, #0x0
- beq _0200BF78
- cmp r5, #0x0
- bne _0200BF7E
-_0200BF78:
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BF7E:
- ldr r0, [r6, #0x10]
- cmp r0, #0x0
- beq _0200BF8A
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- bne _0200BF8E
-_0200BF8A:
- mov r0, #0x4
- str r0, [sp, #0x4]
-_0200BF8E:
- ldr r0, [sp, #0x4]
- str r0, [r5, #0x54]
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _0200BFBE
- add r7, r6, #0x0
- add r4, r5, #0x0
-_0200BFA0:
- ldr r2, [sp, #0x0]
- ldr r0, [r7, #0x0]
- ldr r1, [sp, #0x8]
- ldr r2, [r2, #0x0]
- bl FUN_02008DEC
- str r0, [r4, #0xc]
- ldr r0, [sp, #0x8]
- add r7, r7, #0x4
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- add r4, r4, #0x4
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _0200BFA0
-_0200BFBE:
- ldr r0, [sp, #0x4]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200C004
- add r4, r7, #0x0
-_0200BFC8:
- ldr r0, [r6, #0x0]
- cmp r0, #0x0
- beq _0200BFF8
- ldr r1, [sp, #0x0]
- ldr r1, [r1, #0x0]
- bl FUN_02009424
- str r0, [r5, #0x24]
- mov r0, #0x0
- str r0, [r5, #0x3c]
- ldr r3, [r5, #0x24]
- add r1, r0, #0x0
- ldr r0, [r3, #0x4]
- cmp r0, #0x0
- ble _0200BFF8
- add r2, r1, #0x0
-_0200BFE8:
- ldr r0, [r3, #0x0]
- add r1, r1, #0x1
- str r4, [r0, r2]
- ldr r3, [r5, #0x24]
- add r2, r2, #0x4
- ldr r0, [r3, #0x4]
- cmp r1, r0
- blt _0200BFE8
-_0200BFF8:
- ldr r0, [sp, #0x4]
- add r7, r7, #0x1
- add r6, r6, #0x4
- add r5, r5, #0x4
- cmp r7, r0
- blt _0200BFC8
-_0200C004:
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C00C
-FUN_0200C00C: ; 0x0200C00C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C02A
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C02A:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C058
- bl FUN_02009B04
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C058:
- bl GF_AssertFail
- cmp r5, #0x0
- beq _0200C066
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C066:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C06C
-FUN_0200C06C: ; 0x0200C06C
- push {r3-r7, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0x10]
- ldr r1, [sp, #0x34]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C08C
- mov r0, #0x0
- add sp, #0x10
- mvn r0, r0
- pop {r3-r7, pc}
-_0200C08C:
- ldr r0, [sp, #0x34]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x30]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x2c]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0xc]
- ldr r0, [r4, #0x10]
- bl FUN_02008FEC
- add r5, r0, #0x0
- beq _0200C0D0
- bl FUN_02009D68
- cmp r0, #0x1
- beq _0200C0B8
- bl GF_AssertFail
-_0200C0B8:
- ldr r0, [r4, #0x28]
- add r1, r5, #0x0
- bl FUN_0200C474
- ldr r1, [sp, #0x30]
- add r0, r5, #0x0
- bl FUN_02009E88
- lsl r0, r0, #0x18
- add sp, #0x10
- asr r0, r0, #0x18
- pop {r3-r7, pc}
-_0200C0D0:
- bl GF_AssertFail
- mov r0, #0x0
- mvn r0, r0
- add sp, #0x10
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C0DC
-FUN_0200C0DC: ; 0x0200C0DC
- push {r4-r6, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- add r6, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- add r1, r3, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x30]
- ldr r3, [sp, #0x24]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x34]
- str r0, [sp, #0xc]
- add r0, r2, #0x0
- ldr r2, [sp, #0x20]
- bl FUN_0200C06C
- add r4, r0, #0x0
- mov r0, #0x0
- mvn r0, r0
- cmp r4, r0
- beq _0200C11A
- ldr r3, [sp, #0x2c]
- lsl r2, r4, #0x14
- add r0, r5, #0x0
- add r1, r6, #0x0
- lsr r2, r2, #0x10
- lsl r3, r3, #0x5
- bl FUN_02003108
-_0200C11A:
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- add sp, #0x10
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200C124
-FUN_0200C124: ; 0x0200C124
- push {r3-r4, lr}
- sub sp, #0xc
- ldr r4, [sp, #0x18]
- str r4, [sp, #0x0]
- mov r4, #0x2
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x8]
- bl FUN_0200C404
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C13C
-FUN_0200C13C: ; 0x0200C13C
- push {r3-r4, lr}
- sub sp, #0xc
- ldr r4, [sp, #0x18]
- str r4, [sp, #0x0]
- mov r4, #0x3
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x8]
- bl FUN_0200C404
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C154
-FUN_0200C154: ; 0x0200C154
- push {r4-r7, lr}
- sub sp, #0x74
- add r7, r0, #0x0
- ldr r0, [r7, #0x0]
- add r6, r1, #0x0
- mov r1, #0x10
- add r5, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _0200C170
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C170:
- ldr r0, [r7, #0x0]
- mov r1, #0x8
- bl AllocFromHeap
- str r0, [r4, #0x8]
- cmp r0, #0x0
- bne _0200C184
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C184:
- ldr r0, [r7, #0x0]
- mov r1, #0x24
- bl AllocFromHeap
- ldr r1, [r4, #0x8]
- str r0, [r1, #0x0]
- ldr r0, [r4, #0x8]
- ldr r0, [r0, #0x0]
- str r0, [r4, #0x4]
- ldr r0, [r4, #0x8]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- bne _0200C1AC
- cmp r0, #0x0
- beq _0200C1A6
- bl FreeToHeap
-_0200C1A6:
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C1AC:
- mov r1, #0x0
- add r2, r5, #0x0
- add r3, sp, #0x2c
-_0200C1B2:
- ldr r0, [r2, #0x14]
- add r1, r1, #0x1
- add r2, r2, #0x4
- stmia r3!, {r0}
- cmp r1, #0x6
- blt _0200C1B2
- ldr r0, [r6, #0x1c]
- cmp r0, #0x0
- beq _0200C1CA
- ldr r1, [r6, #0x20]
- cmp r1, #0x0
- bne _0200C1D4
-_0200C1CA:
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x40]
- b _0200C206
-_0200C1D4:
- mov r2, #0x0
- ldr r1, [sp, #0x3c]
- mvn r2, r2
- cmp r1, r2
- beq _0200C1EC
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C1EC
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x3c]
-_0200C1EC:
- mov r0, #0x0
- ldr r1, [sp, #0x40]
- mvn r0, r0
- cmp r1, r0
- beq _0200C206
- ldr r0, [r6, #0x20]
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C206
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x40]
-_0200C206:
- ldr r0, [sp, #0x38]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x3c]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x40]
- str r0, [sp, #0x8]
- ldr r0, [r5, #0x30]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x2c]
- str r0, [sp, #0x10]
- ldr r0, [r6, #0xc]
- str r0, [sp, #0x14]
- ldr r0, [r6, #0x10]
- str r0, [sp, #0x18]
- ldr r0, [r6, #0x14]
- str r0, [sp, #0x1c]
- ldr r0, [r6, #0x18]
- str r0, [sp, #0x20]
- ldr r0, [r6, #0x1c]
- str r0, [sp, #0x24]
- ldr r0, [r6, #0x20]
- str r0, [sp, #0x28]
- ldr r0, [r4, #0x4]
- ldr r1, [sp, #0x2c]
- ldr r2, [sp, #0x30]
- ldr r3, [sp, #0x34]
- bl FUN_02008AA4
- ldr r0, [r6, #0x0]
- str r0, [sp, #0x44]
- ldr r0, [r4, #0x4]
- str r0, [sp, #0x48]
- mov r0, #0x0
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C260
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C26E
-_0200C260:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C26E:
- bl _ffix
- str r0, [sp, #0x4c]
- mov r0, #0x2
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C28E
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C29C
-_0200C28E:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C29C:
- bl _ffix
- str r0, [sp, #0x50]
- mov r0, #0x4
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C2BC
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C2CA
-_0200C2BC:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C2CA:
- bl _ffix
- str r0, [sp, #0x54]
- ldr r0, [r5, #0x10]
- cmp r0, #0x2
- bne _0200C2E0
- mov r0, #0x3
- ldr r1, [sp, #0x50]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0x50]
-_0200C2E0:
- mov r0, #0x1
- lsl r0, r0, #0xc
- str r0, [sp, #0x58]
- str r0, [sp, #0x5c]
- str r0, [sp, #0x60]
- mov r1, #0x0
- add r0, sp, #0x2c
- strh r1, [r0, #0x38]
- ldr r0, [r5, #0x8]
- str r0, [sp, #0x68]
- ldr r0, [r5, #0x10]
- str r0, [sp, #0x6c]
- ldr r0, [r7, #0x0]
- str r0, [sp, #0x70]
- add r0, sp, #0x44
- bl FUN_0201FE94
- str r0, [r4, #0x0]
- ldr r0, [r5, #0x30]
- str r0, [r4, #0xc]
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _0200C328
- bl FUN_020202A0
- add r6, r0, #0x0
- ldrh r1, [r5, #0x6]
- ldr r0, [r4, #0x0]
- bl FUN_02020130
- ldr r1, [r5, #0xc]
- ldr r0, [r4, #0x0]
- add r1, r6, r1
- bl FUN_02020248
- b _0200C32C
-_0200C328:
- bl GF_AssertFail
-_0200C32C:
- add r0, r4, #0x0
- add sp, #0x74
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C334
-FUN_0200C334: ; 0x0200C334
- push {r3, lr}
- ldr r0, [r0, #0x10]
- bl FUN_020094F0
- mov r1, #0x0
- bl FUN_02009E54
- pop {r3, pc}
-
- thumb_func_start FUN_0200C344
-FUN_0200C344: ; 0x0200C344
- push {r4, lr}
- ldr r0, [r0, #0x10]
- add r4, r2, #0x0
- bl FUN_020094F0
- add r1, r4, #0x0
- bl FUN_02009E88
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200C358
-FUN_0200C358: ; 0x0200C358
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0xc]
- ldr r1, [r3, #0x24]
- ldr r3, _0200C364 ; =FUN_0200C4F4
- bx r3
- .balign 4
-_0200C364: .word FUN_0200C4F4
-
- thumb_func_start FUN_0200C368
-FUN_0200C368: ; 0x0200C368
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x10]
- ldr r1, [r3, #0x28]
- ldr r3, _0200C374 ; =FUN_0200C548
- bx r3
- .balign 4
-_0200C374: .word FUN_0200C548
-
- thumb_func_start FUN_0200C378
-FUN_0200C378: ; 0x0200C378
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x14]
- ldr r1, [r3, #0x2c]
- ldr r3, _0200C384 ; =FUN_0200C4A8
- bx r3
- .balign 4
-_0200C384: .word FUN_0200C4A8
-
- thumb_func_start FUN_0200C388
-FUN_0200C388: ; 0x0200C388
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x18]
- ldr r1, [r3, #0x30]
- ldr r3, _0200C394 ; =FUN_0200C4A8
- bx r3
- .balign 4
-_0200C394: .word FUN_0200C4A8
-
- thumb_func_start FUN_0200C398
-FUN_0200C398: ; 0x0200C398
- push {r3-r7, lr}
- add r6, r1, #0x0
- add r7, r0, #0x0
- add r0, r6, #0x0
- bl FUN_0200BC40
- ldr r0, [r6, #0x24]
- bl FUN_02009C30
- ldr r0, [r6, #0x28]
- bl FUN_02009E28
- ldr r0, [r6, #0x54]
- mov r4, #0x0
- cmp r0, #0x0
- ble _0200C3D0
- add r5, r6, #0x0
-_0200C3BA:
- ldr r0, [r5, #0x24]
- bl FUN_02009448
- ldr r0, [r5, #0xc]
- bl FUN_02008E2C
- ldr r0, [r6, #0x54]
- add r4, r4, #0x1
- add r5, r5, #0x4
- cmp r4, r0
- blt _0200C3BA
-_0200C3D0:
- add r0, r7, #0x0
- add r1, r6, #0x0
- bl FUN_0200BCD0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C3DC
-FUN_0200C3DC: ; 0x0200C3DC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0xc]
- cmp r0, #0x0
- beq _0200C3EE
- ldr r0, [r4, #0x4]
- ldr r0, [r0, #0x0]
- bl FUN_02009CDC
-_0200C3EE:
- ldr r0, [r4, #0x0]
- bl FUN_0201FFC8
- ldr r0, [r4, #0x8]
- bl FUN_02008C80
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200C404
-FUN_0200C404: ; 0x0200C404
- push {r4-r7, lr}
- sub sp, #0x14
- add r6, r1, #0x0
- add r7, r0, #0x0
- ldr r0, [sp, #0x2c]
- add r5, r6, #0x0
- lsl r4, r0, #0x2
- add r5, #0xc
- ldr r0, [r5, r4]
- ldr r1, [sp, #0x30]
- str r2, [sp, #0xc]
- str r3, [sp, #0x10]
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C42A
- add sp, #0x14
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C42A:
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0xc]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x10]
- str r0, [sp, #0x4]
- ldr r0, [r7, #0x0]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x8]
- ldr r0, [r5, r4]
- bl FUN_020090AC
- add r5, r0, #0x0
- beq _0200C460
- add r0, r6, r4
- ldr r0, [r0, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add r4, r0, #0x0
- cmp r4, #0x1
- beq _0200C45A
- bl GF_AssertFail
-_0200C45A:
- add sp, #0x14
- add r0, r4, #0x0
- pop {r4-r7, pc}
-_0200C460:
- bl GF_AssertFail
- cmp r5, #0x0
- beq _0200C46E
- add sp, #0x14
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C46E:
- mov r0, #0x0
- add sp, #0x14
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C474
-FUN_0200C474: ; 0x0200C474
- push {r3-r6}
- ldr r6, [r0, #0x4]
- mov r3, #0x0
- cmp r6, #0x0
- ble _0200C4A0
- ldr r5, [r0, #0x0]
- add r4, r5, #0x0
-_0200C482:
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- bne _0200C498
- lsl r2, r3, #0x2
- str r1, [r5, r2]
- ldr r1, [r0, #0x8]
- add r1, r1, #0x1
- str r1, [r0, #0x8]
- mov r0, #0x1
- pop {r3-r6}
- bx lr
-_0200C498:
- add r3, r3, #0x1
- add r4, r4, #0x4
- cmp r3, r6
- blt _0200C482
-_0200C4A0:
- mov r0, #0x0
- pop {r3-r6}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0200C4A8
-FUN_0200C4A8: ; 0x0200C4A8
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C4F0
- add r4, r6, #0x0
-_0200C4BA:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C4E6
- bl FUN_02009530
- cmp r0, r7
- bne _0200C4E6
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C4E6:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C4BA
-_0200C4F0:
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C4F4
-FUN_0200C4F4: ; 0x0200C4F4
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C542
- add r4, r6, #0x0
-_0200C506:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C538
- bl FUN_02009530
- cmp r0, r7
- bne _0200C538
- add r0, r7, #0x0
- bl FUN_0201D324
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C538:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C506
-_0200C542:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C548
-FUN_0200C548: ; 0x0200C548
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C596
- add r4, r6, #0x0
-_0200C55A:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C58C
- bl FUN_02009530
- cmp r0, r7
- bne _0200C58C
- add r0, r7, #0x0
- bl FUN_0201E1C8
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C58C:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C55A
-_0200C596:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C59C
-FUN_0200C59C: ; 0x0200C59C
- ldr r3, _0200C5A4 ; =FUN_020201E4
- mov r1, #0x1
- lsl r1, r1, #0xc
- bx r3
- .balign 4
-_0200C5A4: .word FUN_020201E4
-
- thumb_func_start FUN_0200C5A8
-FUN_0200C5A8: ; 0x0200C5A8
- ldr r3, _0200C5B0 ; =FUN_0200C59C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5B0: .word FUN_0200C59C
-
- thumb_func_start FUN_0200C5B4
-FUN_0200C5B4: ; 0x0200C5B4
- ldr r3, _0200C5BC ; =FUN_020201E4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5BC: .word FUN_020201E4
-
- thumb_func_start FUN_0200C5C0
-FUN_0200C5C0: ; 0x0200C5C0
- ldr r3, _0200C5C8 ; =FUN_02020130
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5C8: .word FUN_02020130
-
- thumb_func_start FUN_0200C5CC
-FUN_0200C5CC: ; 0x0200C5CC
- ldr r3, _0200C5D4 ; =FUN_020201DC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5D4: .word FUN_020201DC
-
- thumb_func_start FUN_0200C5D8
-FUN_0200C5D8: ; 0x0200C5D8
- ldr r3, _0200C5DC ; =FUN_020200BC
- bx r3
- .balign 4
-_0200C5DC: .word FUN_020200BC
-
- thumb_func_start FUN_0200C5E0
-FUN_0200C5E0: ; 0x0200C5E0
- ldr r3, _0200C5E8 ; =FUN_0200C5D8
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5E8: .word FUN_0200C5D8
-
- thumb_func_start FUN_0200C5EC
-FUN_0200C5EC: ; 0x0200C5EC
- ldr r3, _0200C5F0 ; =FUN_020200D8
- bx r3
- .balign 4
-_0200C5F0: .word FUN_020200D8
-
- thumb_func_start FUN_0200C5F4
-FUN_0200C5F4: ; 0x0200C5F4
- ldr r3, _0200C5FC ; =FUN_0200C5EC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5FC: .word FUN_0200C5EC
-
- thumb_func_start FUN_0200C600
-FUN_0200C600: ; 0x0200C600
- ldr r3, _0200C604 ; =FUN_02020388
- bx r3
- .balign 4
-_0200C604: .word FUN_02020388
-
- thumb_func_start FUN_0200C608
-FUN_0200C608: ; 0x0200C608
- ldr r3, _0200C610 ; =FUN_0200C600
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C610: .word FUN_0200C600
-
- thumb_func_start FUN_0200C614
-FUN_0200C614: ; 0x0200C614
- ldr r3, _0200C618 ; =FUN_02020208
- bx r3
- .balign 4
-_0200C618: .word FUN_02020208
-
- thumb_func_start FUN_0200C61C
-FUN_0200C61C: ; 0x0200C61C
- ldr r3, _0200C624 ; =FUN_0200C614
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C624: .word FUN_0200C614
-
- thumb_func_start FUN_0200C628
-FUN_0200C628: ; 0x0200C628
- ldr r3, _0200C62C ; =FUN_0202022C
- bx r3
- .balign 4
-_0200C62C: .word FUN_0202022C
-
- thumb_func_start FUN_0200C630
-FUN_0200C630: ; 0x0200C630
- ldr r3, _0200C638 ; =FUN_0200C628
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C638: .word FUN_0200C628
-
- thumb_func_start FUN_0200C63C
-FUN_0200C63C: ; 0x0200C63C
- ldr r3, _0200C640 ; =FUN_020200A0
- bx r3
- .balign 4
-_0200C640: .word FUN_020200A0
-
- thumb_func_start FUN_0200C644
-FUN_0200C644: ; 0x0200C644
- ldr r3, _0200C64C ; =FUN_0200C63C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C64C: .word FUN_0200C63C
-
- thumb_func_start FUN_0200C650
-FUN_0200C650: ; 0x0200C650
- ldr r3, _0200C654 ; =FUN_02020128
- bx r3
- .balign 4
-_0200C654: .word FUN_02020128
-
- thumb_func_start FUN_0200C658
-FUN_0200C658: ; 0x0200C658
- ldr r3, _0200C660 ; =FUN_0200C650
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C660: .word FUN_0200C650
-
- thumb_func_start FUN_0200C664
-FUN_0200C664: ; 0x0200C664
- ldr r3, _0200C668 ; =FUN_02020248
- bx r3
- .balign 4
-_0200C668: .word FUN_02020248
-
- thumb_func_start FUN_0200C66C
-FUN_0200C66C: ; 0x0200C66C
- ldr r3, _0200C674 ; =FUN_0200C664
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C674: .word FUN_0200C664
-
- thumb_func_start FUN_0200C678
-FUN_0200C678: ; 0x0200C678
- ldr r3, _0200C67C ; =FUN_020202A8
- bx r3
- .balign 4
-_0200C67C: .word FUN_020202A8
-
- thumb_func_start FUN_0200C680
-FUN_0200C680: ; 0x0200C680
- ldr r3, _0200C688 ; =FUN_0200C678
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C688: .word FUN_0200C678
-
- thumb_func_start FUN_0200C68C
-FUN_0200C68C: ; 0x0200C68C
- ldr r3, _0200C694 ; =FUN_02020300
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C694: .word FUN_02020300
-
- thumb_func_start FUN_0200C698
-FUN_0200C698: ; 0x0200C698
- ldr r3, _0200C6A0 ; =FUN_02020238
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bx r3
- .balign 4
-_0200C6A0: .word FUN_02020238
-
- thumb_func_start FUN_0200C6A4
-FUN_0200C6A4: ; 0x0200C6A4
- ldr r3, _0200C6AC ; =FUN_02020240
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6AC: .word FUN_02020240
-
- thumb_func_start FUN_0200C6B0
-FUN_0200C6B0: ; 0x0200C6B0
- ldr r3, _0200C6B8 ; =FUN_0200C698
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6B8: .word FUN_0200C698
-
- thumb_func_start FUN_0200C6BC
-FUN_0200C6BC: ; 0x0200C6BC
- ldr r3, _0200C6C0 ; =FUN_02020310
- bx r3
- .balign 4
-_0200C6C0: .word FUN_02020310
-
- thumb_func_start FUN_0200C6C4
-FUN_0200C6C4: ; 0x0200C6C4
- ldr r3, _0200C6CC ; =FUN_0200C6BC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6CC: .word FUN_0200C6BC
-
- thumb_func_start FUN_0200C6D0
-FUN_0200C6D0: ; 0x0200C6D0
- ldr r3, _0200C6D4 ; =FUN_0202032C
- bx r3
- .balign 4
-_0200C6D4: .word FUN_0202032C
-
- thumb_func_start FUN_0200C6D8
-FUN_0200C6D8: ; 0x0200C6D8
- ldr r3, _0200C6E0 ; =FUN_0200C6D0
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6E0: .word FUN_0200C6D0
-
- thumb_func_start FUN_0200C6E4
-FUN_0200C6E4: ; 0x0200C6E4
- push {r3-r4, lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- add r4, r0, #0x0
- str r1, [sp, #0x4]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C704
- mov r0, #0x3
- ldr r1, [sp, #0x4]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0x4]
-_0200C704:
- mov r0, #0x0
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- add r1, sp, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C714
-FUN_0200C714: ; 0x0200C714
- ldr r3, _0200C71C ; =FUN_0200C6E4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C71C: .word FUN_0200C6E4
-
- thumb_func_start FUN_0200C720
-FUN_0200C720: ; 0x0200C720
- push {r4-r5, lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- add r5, r0, #0x0
- add r4, r3, #0x0
- str r1, [sp, #0x4]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C73E
- ldr r0, [sp, #0x4]
- add r0, r0, r4
- str r0, [sp, #0x4]
-_0200C73E:
- mov r0, #0x0
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- add r1, sp, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0200C750
-FUN_0200C750: ; 0x0200C750
- push {r3, lr}
- ldr r0, [r0, #0x0]
- bl FUN_0200C720
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200C75C
-FUN_0200C75C: ; 0x0200C75C
- push {r3-r7, lr}
- add r7, r0, #0x0
- add r6, r1, #0x0
- add r5, r2, #0x0
- bl FUN_0202011C
- add r4, r0, #0x0
- ldr r1, [r4, #0x0]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r6, #0x0]
- add r0, r7, #0x0
- bl FUN_02020380
- cmp r0, #0x2
- ldr r1, [r4, #0x4]
- bne _0200C794
- mov r0, #0x3
- lsl r0, r0, #0x12
- sub r1, r1, r0
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-_0200C794:
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C7A0
-FUN_0200C7A0: ; 0x0200C7A0
- ldr r3, _0200C7A8 ; =FUN_0200C75C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C7A8: .word FUN_0200C75C
-
- thumb_func_start FUN_0200C7AC
-FUN_0200C7AC: ; 0x0200C7AC
- push {r3-r7, lr}
- str r0, [sp, #0x0]
- add r6, r1, #0x0
- add r5, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0202011C
- add r4, r0, #0x0
- ldr r1, [r4, #0x0]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r6, #0x0]
- ldr r0, [sp, #0x0]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C7E2
- ldr r0, [r4, #0x4]
- sub r1, r0, r7
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-_0200C7E2:
- ldr r1, [r4, #0x4]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C7F0
-FUN_0200C7F0: ; 0x0200C7F0
- push {r3, lr}
- ldr r0, [r0, #0x0]
- bl FUN_0200C7AC
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200C7FC
-FUN_0200C7FC: ; 0x0200C7FC
- push {r3-r6, lr}
- sub sp, #0xc
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_0202011C
- ldr r2, [r0, #0x0]
- lsl r1, r5, #0xc
- add r1, r2, r1
- str r1, [sp, #0x0]
- ldr r2, [r0, #0x4]
- lsl r1, r4, #0xc
- add r1, r2, r1
- str r1, [sp, #0x4]
- ldr r0, [r0, #0x8]
- add r1, sp, #0x0
- str r0, [sp, #0x8]
- add r0, r6, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200C82C
-FUN_0200C82C: ; 0x0200C82C
- ldr r3, _0200C834 ; =FUN_0200C7FC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C834: .word FUN_0200C7FC
-
- thumb_func_start FUN_0200C838
-FUN_0200C838: ; 0x0200C838
- ldr r3, _0200C83C ; =FUN_020200EC
- bx r3
- .balign 4
-_0200C83C: .word FUN_020200EC
-
- thumb_func_start FUN_0200C840
-FUN_0200C840: ; 0x0200C840
- ldr r3, _0200C848 ; =FUN_0200C838
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C848: .word FUN_0200C838
-
- thumb_func_start FUN_0200C84C
-FUN_0200C84C: ; 0x0200C84C
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r7, r2, #0x0
- bl FUN_02020120
- add r4, r0, #0x0
- ldr r0, _0200C880 ; =0x45800000
- add r1, r6, #0x0
- bl _fmul
- bl _ffix
- str r0, [r4, #0x0]
- ldr r0, _0200C880 ; =0x45800000
- add r1, r7, #0x0
- bl _fmul
- bl _ffix
- str r0, [r4, #0x4]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02020064
- pop {r3-r7, pc}
- .balign 4
-_0200C880: .word 0x45800000
-
- thumb_func_start FUN_0200C884
-FUN_0200C884: ; 0x0200C884
- ldr r3, _0200C88C ; =FUN_0200C84C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C88C: .word FUN_0200C84C
-
- thumb_func_start FUN_0200C890
-FUN_0200C890: ; 0x0200C890
- ldr r3, _0200C894 ; =FUN_02020088
- bx r3
- .balign 4
-_0200C894: .word FUN_02020088
-
- thumb_func_start FUN_0200C898
-FUN_0200C898: ; 0x0200C898
- ldr r3, _0200C8A0 ; =FUN_0200C890
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8A0: .word FUN_0200C890
-
- thumb_func_start FUN_0200C8A4
-FUN_0200C8A4: ; 0x0200C8A4
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r0, #0x0
- bl FUN_02020124
- add r0, r0, r5
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- add r0, r4, #0x0
- bl FUN_02020088
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200C8BC
-FUN_0200C8BC: ; 0x0200C8BC
- ldr r3, _0200C8C4 ; =FUN_0200C8A4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8C4: .word FUN_0200C8A4
-
- thumb_func_start FUN_0200C8C8
-FUN_0200C8C8: ; 0x0200C8C8
- ldr r3, _0200C8CC ; =FUN_02020100
- bx r3
- .balign 4
-_0200C8CC: .word FUN_02020100
-
- thumb_func_start FUN_0200C8D0
-FUN_0200C8D0: ; 0x0200C8D0
- ldr r3, _0200C8D8 ; =FUN_0200C8C8
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8D8: .word FUN_0200C8C8
-
- thumb_func_start FUN_0200C8DC
-FUN_0200C8DC: ; 0x0200C8DC
- push {lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- str r1, [sp, #0x4]
- mov r1, #0x0
- str r1, [sp, #0x8]
- ldr r0, [r0, #0x0]
- add r1, sp, #0x0
- bl FUN_02020054
- add sp, #0xc
- pop {pc}
-
- thumb_func_start FUN_0200C8F8
-FUN_0200C8F8: ; 0x0200C8F8
- ldr r3, _0200C900 ; =FUN_02020358
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C900: .word FUN_02020358
-
- thumb_func_start FUN_0200C904
-FUN_0200C904: ; 0x0200C904
- ldr r3, _0200C908 ; =FUN_02020398
- bx r3
- .balign 4
-_0200C908: .word FUN_02020398
-
- thumb_func_start FUN_0200C90C
-FUN_0200C90C: ; 0x0200C90C
- ldr r3, _0200C914 ; =FUN_0200C904
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C914: .word FUN_0200C904
-
- thumb_func_start FUN_0200C918
-FUN_0200C918: ; 0x0200C918
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C936
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C936:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C964
- bl FUN_02009AC4
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C964:
- bl GF_AssertFail
- cmp r5, #0x0
- beq _0200C972
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C972:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C978
-FUN_0200C978: ; 0x0200C978
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C996
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C996:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C9C4
- bl FUN_02009B78
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C9C4:
- bl GF_AssertFail
- cmp r5, #0x0
- beq _0200C9D2
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C9D2:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C9D8
-FUN_0200C9D8: ; 0x0200C9D8
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x24]
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_020094F0
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- ldr r3, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r4, #0xc]
- add r2, r7, #0x0
- bl FUN_020090FC
- add r0, r6, #0x0
- bl FUN_02009BE8
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200CA0C
-FUN_0200CA0C: ; 0x0200CA0C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0x10]
- ldr r1, [sp, #0x24]
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_020094F0
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- ldr r3, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x10]
- add r2, r7, #0x0
- bl FUN_02009168
- add r0, r6, #0x0
- bl FUN_02009DE0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200CA40
-FUN_0200CA40: ; 0x0200CA40
- ldr r0, [r0, #0x0]
- bx lr
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
new file mode 100644
index 00000000..45850885
--- /dev/null
+++ b/arm9/src/unk_0200BB14.c
@@ -0,0 +1,1323 @@
+#include "global.h"
+#include "unk_0200BB14.h"
+#include "game_init.h"
+#include "heap.h"
+
+extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2);
+extern void FUN_0201E00C(u32 param0, u32 param1);
+extern void NNS_G2dInitOamManagerModule();
+extern void FUN_02009EAC(u32 param0,
+ u32 param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8);
+extern u32 FUN_0201C328(u32 param0, u32 param1);
+extern void FUN_0201D168();
+extern void FUN_0201E0BC();
+extern u32 FUN_02008C9C(u32 param0, void *param1, u32 param2);
+extern void FUN_0201FFC8(u32 param0);
+extern void FUN_0201FDEC(u32 param0);
+extern void FUN_02009F80();
+extern void FUN_0201C348();
+extern void FUN_0201FD58(u32 param0);
+extern void FUN_02008C80(u32 param0);
+extern u32 FUN_02009660(u32 *param0, s32 param1);
+extern void FUN_020096B4(u32 param0);
+extern void FUN_02009C30(u32 *param0);
+extern void FUN_02009E28(u32 *param0);
+extern void FUN_02009448(u32 *param0);
+extern void FUN_02008E2C(u32 param0);
+extern void FUN_0201C350(u32 param0);
+extern void FUN_0201D12C();
+extern void FUN_0201E08C();
+extern void FUN_02009FA0();
+extern u32 FUN_0200965C(s32 param0);
+extern void FUN_02009668(void *param0, u32 param1, u32 param2);
+extern u32 FUN_020096CC(u32 param0);
+extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2);
+extern u32 *FUN_02009424(u32 param0, u32 param1);
+extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3);
+extern void FUN_02009A90(u32 *param0);
+extern void FUN_02009D34(u32 *param0);
+extern u32 FUN_02008BE0(void *param0,
+ u32 param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0);
+extern void FUN_02020130(u32 param0, u32 param1);
+extern void FUN_02020248(u32 param0, u32 param1);
+extern u32 FUN_0200945C(u32 param0, s32 param1);
+extern u32 FUN_02008F34(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
+extern void FUN_02009B04(u32 param0);
+extern u32 FUN_02008FEC(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7);
+extern u32 FUN_02009D68(u32 param0);
+extern u32 FUN_02009E88(u32 param0, u32 param1);
+extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3);
+extern void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ s32 param4,
+ s32 param5,
+ s32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13,
+ u32 param14);
+extern u8 FUN_020202A0(u32 param0);
+extern u32 FUN_020094F0(u32 param0, u32 param1);
+extern u32 FUN_02009E54(u32 param0, u32 param1);
+extern void FUN_02009CDC(u32 param0);
+extern u32 FUN_020090AC(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
+extern u32 FUN_02009530(u32 param0);
+extern void FUN_02009490(u32 param0, u32 param1);
+extern void FUN_0201D324(u32 param0);
+extern void FUN_0201E1C8(u32 param0);
+extern void FUN_020201E4(u32 param0, u32 param1);
+extern u32 FUN_020201DC(u32 param0);
+extern void FUN_020200BC(u32 param0, u32 param1);
+extern void FUN_020200D8(u32 param0, u32 param1);
+extern u32 FUN_02020388(u32 param0);
+extern void FUN_02020208(u32 param0);
+extern void FUN_0202022C(u32 param0);
+extern void FUN_020200A0(u32 param0, u32 param1);
+extern u8 FUN_02020128(u32 param0);
+extern void FUN_020202A8(u32 param0, u32 param1);
+extern u8 FUN_02020300(u32 param0);
+extern void FUN_02020238(u32 param0, u8 param1);
+extern u8 FUN_02020240(u32 param0);
+extern void FUN_02020310(u32 param0, u32 param1);
+extern u16 FUN_0202032C(u32 param0);
+extern u32 FUN_02020380(u32 param0);
+extern void FUN_02020044(u32 param0, u32 *param1);
+extern u32 *FUN_0202011C(u32 param0, u16 *param1, u16 *param2);
+extern void FUN_020200EC(u32 param0, u32 param1);
+extern u32 *FUN_02020120(u32 param0);
+extern void FUN_02020064(u32 param0, s32 *param1);
+extern void FUN_02020088(u32 param0, u16 param1);
+extern u16 FUN_02020124(u32 param0);
+extern void FUN_02020100(u32 param0, u32 param1);
+extern void FUN_02020054(u32 param0, u32 *param1);
+extern void FUN_02020358(u32 param0, u32 param1);
+extern void FUN_02020398(u32 param0, u32 param1);
+extern void FUN_02009AC4(u32 param0);
+extern void FUN_02009B78(u32 param0);
+extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
+extern void FUN_02009BE8(u32 param0);
+extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
+extern void FUN_02009DE0(u32 param0);
+
+THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id)
+{
+ struct UnkStruct_0200BB14_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200BB14_1));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ ptr->unk000 = heap_id;
+ ptr->unk004 = 0;
+ ptr->unk008 = 1;
+
+ return ptr;
+}
+
+THUMB_FUNC struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0)
+{
+ GF_ASSERT(param0 != NULL);
+
+ struct UnkStruct_0200BB14_2 *ptr =
+ AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_2));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ param0->unk004++;
+
+ for (s32 i = 0; i < 6; i++)
+ {
+ ptr->unk0c[i] = 0;
+ }
+
+ return ptr;
+}
+
+THUMB_FUNC u32 FUN_0200BB68(u32 param0)
+{
+ return param0 + 0x10;
+}
+
+THUMB_FUNC BOOL FUN_0200BB6C(
+ struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3)
+{
+ GF_ASSERT(param0 != NULL);
+
+ if (param0 == NULL)
+ {
+ return FALSE;
+ }
+
+ u32 st14[4] = { param2[0], param2[1], param2[2], param0->unk000 };
+
+ FUN_0201D060(st14, param2[3], param2[4]);
+ FUN_0201E00C(param3, param0->unk000);
+ NNS_G2dInitOamManagerModule();
+
+ if (param0->unk008 == 1)
+ {
+ FUN_02009EAC(param1[0],
+ param1[1],
+ param1[2],
+ param1[3],
+ param1[4],
+ param1[5],
+ param1[6],
+ param1[7],
+ param0->unk000);
+ }
+
+ param0->unk00c = FUN_0201C328(0x20, param0->unk000);
+ FUN_0201D168();
+ FUN_0201E0BC();
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_0200BBF0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2)
+{
+ if (param0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ param1->unk00 = FUN_02008C9C(param2, param0->unk010, param0->unk000);
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0200BC14(u32 param0)
+{
+ FUN_0201FFC8(param0);
+}
+
+THUMB_FUNC void FUN_0200BC1C(u32 *param0)
+{
+ GF_ASSERT(param0 != NULL);
+
+ FUN_0201FDEC(*param0);
+}
+
+THUMB_FUNC void FUN_0200BC30()
+{
+ FUN_02009F80();
+}
+
+THUMB_FUNC void FUN_0200BC38()
+{
+ FUN_0201C348();
+}
+
+THUMB_FUNC void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0)
+{
+ FUN_0201FD58(param0->unk00);
+}
+
+THUMB_FUNC void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0)
+{
+ if (param0->unk04 != 0)
+ {
+ FUN_02008C80(param0->unk04);
+ }
+}
+
+THUMB_FUNC void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0)
+{
+ for (s32 i = 0; i < param0->unk54; i++)
+ {
+ FUN_020096B4(FUN_02009660(param0->unk08, i));
+ }
+
+ FreeToHeap(param0->unk08);
+ FUN_02009C30(param0->unk24[0]);
+ FUN_02009E28(param0->unk24[1]);
+
+ for (s32 i = 0; i < param0->unk54; i++)
+ {
+ FUN_02009448(param0->unk24[i]);
+ FUN_02008E2C(param0->unk0c[i]);
+ }
+}
+
+THUMB_FUNC void FUN_0200BCB0(u32 *param0)
+{
+ FUN_0201C350(param0[3]);
+ FUN_0201D12C();
+ FUN_0201E08C();
+
+ if (param0[2] == 1)
+ {
+ FUN_02009FA0();
+ }
+}
+
+THUMB_FUNC void FUN_0200BCD0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ param0->unk004--;
+ FreeToHeap(param1);
+}
+
+THUMB_FUNC void FUN_0200BCE0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ FUN_0200BC40(param1);
+ FUN_0200BC4C(param1);
+ FUN_0200BC5C(param1);
+ FUN_0200BCD0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200BD04(u32 *param0)
+{
+ GF_ASSERT(param0[1] == 0);
+ FUN_0200BCB0(param0);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC BOOL FUN_0200BD20(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2)
+{
+ s32 st14 = 6;
+ const char **st10 = param2;
+
+ if (param0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ if (param2[4] == 0)
+ {
+ st14 = 4;
+ }
+
+ param1->unk54 = st14;
+ u32 r2 = FUN_0200965C(st14);
+ param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14);
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ u32 st18 = FUN_02009660(param1->unk08, i);
+ void *st1c = FUN_020161A4(param0->unk000, st10[i]);
+
+ FUN_02009668(st1c, st18, param0->unk000);
+ FreeToHeap(st1c);
+ }
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ param1->unk0c[i] =
+ FUN_02008DEC(FUN_020096CC(FUN_02009660(param1->unk08, i)), i, param0->unk000);
+ }
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ u32 st20 = FUN_02009660(param1->unk08, i);
+ param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000);
+ param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000);
+ }
+
+ FUN_02009A90(param1->unk24[0]);
+ FUN_02009D34(param1->unk24[1]);
+ void *r6 = FUN_020161A4(param0->unk000, st10[6]);
+ param1->unk04 = FUN_02008BE0(r6,
+ param0->unk000,
+ param1->unk0c[0],
+ param1->unk0c[1],
+ param1->unk0c[2],
+ param1->unk0c[3],
+ param1->unk0c[4],
+ param1->unk0c[5]);
+ FreeToHeap(r6);
+
+ return TRUE;
+}
+
+THUMB_FUNC u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2)
+{
+ return FUN_0200BE74(param0,
+ param1,
+ param2->unk00,
+ param2->unk04,
+ param2->unk06,
+ param2->unk04,
+ param2->unk0a,
+ param2->unk0c,
+ param2->unk10,
+ param2->unk14,
+ param2->unk18,
+ param2->unk1c,
+ param2->unk20,
+ param2->unk24);
+}
+
+THUMB_FUNC u32 FUN_0200BE74(u32 *param0,
+ u32 *param1,
+ u32 param2,
+ s16 param3,
+ s16 param4,
+ s16 param5,
+ u16 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13)
+{
+#pragma unused(param10)
+#pragma unused(param11)
+#pragma unused(param12)
+#pragma unused(param13)
+
+ struct UnkStruct_0200BB14_4 st0;
+ st0.unk00 = param1[0];
+ st0.unk04 = &(*(struct UnkStruct_0200BB14_sub **)(param1[1]))[param2];
+
+ f32 r0;
+ if (param3 > 0)
+ {
+ r0 = ((f32)(param3 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param3 * 0x1000) - (f32)0.5);
+ }
+ st0.unk08 = (s32)r0;
+
+ if (param4 > 0)
+ {
+ r0 = ((f32)(param4 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param4 * 0x1000) - (f32)0.5);
+ }
+ st0.unk0c = (s32)r0;
+
+ if (param5 > 0)
+ {
+ r0 = ((f32)(param5 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param5 * 0x1000) - (f32)0.5);
+ }
+ st0.unk10 = (s32)r0;
+
+ if (param9 == 2)
+ {
+ st0.unk0c += 0xC0000;
+ }
+
+ st0.unk14 = 0x1000;
+ st0.unk18 = 0x1000;
+ st0.unk1c = 0x1000;
+ st0.unk20 = 0;
+ st0.unk24 = param7;
+ st0.unk28 = param9;
+ st0.unk2c = param0[0];
+
+ u32 r4 = FUN_0201FE94(&st0);
+ if (r4 != 0)
+ {
+ FUN_02020130(r4, param6);
+
+ FUN_02020248(r4, param8);
+ }
+
+ return r4;
+}
+
+THUMB_FUNC BOOL FUN_0200BF60(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+{
+ struct UnkStruct_0200BB14_1 *st0 = param0;
+ s32 i;
+ s32 st4 = 6;
+
+ if (st0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ if (param2[4] == 0 || param2[5] == 0)
+ {
+ st4 = 4;
+ }
+
+ param1->unk54 = st4;
+
+ for (i = 0; i < st4; i++)
+ {
+ param1->unk0c[i] = FUN_02008DEC(param2[i], i, st0->unk000);
+ }
+
+ for (i = 0; i < st4; i++)
+ {
+ if (param2[i] != 0)
+ {
+ param1->unk24[i] = FUN_02009424(param2[i], st0->unk000);
+ param1->unk3c[i] = 0;
+
+ for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++)
+ {
+ ((u32 *)param1->unk24[i][0])[j] = 0;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009B04(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ s32 param7)
+{
+ if (FUN_0200945C(param1->unk0c[1], param7) == 0)
+ {
+ return -1;
+ }
+
+ u32 r5 =
+ FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ GF_ASSERT(FUN_02009D68(r5) == 1);
+ FUN_0200C474(param1->unk24[1], r5);
+ return (s8)FUN_02009E88(r5, param6);
+ }
+
+ GF_AssertFail();
+ return -1;
+}
+
+THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
+ u32 param1,
+ u32 *param2,
+ struct UnkStruct_0200BB14_2 *param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ s32 param9)
+{
+ s32 r4 = FUN_0200C06C(param2, param3, param4, param5, param6, param7, param8, param9);
+ if (r4 != -1)
+ {
+ FUN_02003108(param0, param1, (u16)(r4 << 4), param7 << 5);
+ }
+
+ return (u8)r4;
+}
+
+THUMB_FUNC u32 FUN_0200C124(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5)
+{
+ return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5);
+}
+
+THUMB_FUNC u32 FUN_0200C13C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5)
+{
+ return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5);
+}
+
+THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+{
+ struct UnkStruct_0200BB14_4 st44;
+ s32 st2c[6];
+
+ struct UnkStruct_0200BB14_5 *ptr =
+ AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_5));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ ptr->unk08 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_6));
+ if (ptr->unk08 == 0)
+ {
+ return NULL;
+ }
+
+ ptr->unk08->unk0 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_sub));
+ ptr->unk04 = ptr->unk08->unk0;
+ if (ptr->unk08->unk0 == NULL)
+ {
+ if (ptr->unk08 != NULL)
+ {
+ FreeToHeap(ptr->unk08);
+ }
+
+ return NULL;
+ }
+
+ for (s32 i = 0; i < 6; i++)
+ {
+ st2c[i] = (s32)param2[5 + i];
+ }
+
+ if (param1->unk0c[4] == 0 || param1->unk0c[5] == 0)
+ {
+ st2c[4] = -1;
+ st2c[5] = -1;
+ }
+ else
+ {
+ if (st2c[4] != -1 && FUN_0200945C(param1->unk0c[4], st2c[4]) == 0)
+ {
+ st2c[4] = -1;
+ }
+
+ if (st2c[5] != -1 && FUN_0200945C(param1->unk0c[5], st2c[5]) == 0)
+ {
+ st2c[5] = -1;
+ }
+ }
+
+ FUN_02008AA4(ptr->unk04,
+ st2c[0],
+ st2c[1],
+ st2c[2],
+ st2c[3],
+ st2c[4],
+ st2c[5],
+ param2[12],
+ param2[11],
+ param1->unk0c[0],
+ param1->unk0c[1],
+ param1->unk0c[2],
+ param1->unk0c[3],
+ param1->unk0c[4],
+ param1->unk0c[5]);
+
+ st44.unk00 = param1->unk00;
+ st44.unk04 = ptr->unk04;
+ f32 r0;
+ if (((s16 *)param2)[0] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[0] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[0] << 0xc) - (f32)0.5);
+ }
+ st44.unk08 = (s32)r0;
+
+ if (((s16 *)param2)[1] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[1] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[1] << 0xc) - (f32)0.5);
+ }
+ st44.unk0c = (s32)r0;
+
+ if (((s16 *)param2)[2] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[2] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[2] << 0xc) - (f32)0.5);
+ }
+ st44.unk10 = (s32)r0;
+
+ if (param2[4] == 2)
+ {
+ st44.unk0c += 0xC0000;
+ }
+
+ st44.unk14 = 0x1000;
+ st44.unk18 = 0x1000;
+ st44.unk1c = 0x1000;
+ st44.unk20 = 0;
+ st44.unk24 = param2[2];
+ st44.unk28 = param2[4];
+ st44.unk2c = param0->unk000;
+
+ ptr->unk00 = FUN_0201FE94(&st44);
+ ptr->unk0c = param2[12];
+
+ if (ptr->unk00 != 0)
+ {
+ u8 r6 = FUN_020202A0(ptr->unk00);
+
+ FUN_02020130(ptr->unk00, ((u16 *)param2)[3]);
+ FUN_02020248(ptr->unk00, r6 + param2[3]);
+ }
+ else
+ {
+ GF_AssertFail();
+ }
+
+ return ptr;
+}
+
+THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1)
+{
+ return FUN_02009E54(FUN_020094F0(param0[4], param1), 0);
+}
+
+THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2)
+{
+ return FUN_02009E88(FUN_020094F0(param0[4], param1), param2);
+}
+
+THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4F4(param0->unk0c[0], param0->unk24[0], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C548(param0->unk0c[1], param0->unk24[1], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4A8(param0->unk0c[2], param0->unk24[2], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4A8(param0->unk0c[3], param0->unk24[3], param1);
+}
+
+THUMB_FUNC void FUN_0200C398(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ FUN_0200BC40(param1);
+ FUN_02009C30(param1->unk24[0]);
+ FUN_02009E28(param1->unk24[1]);
+
+ for (s32 i = 0; i < param1->unk54; i++)
+ {
+ FUN_02009448(param1->unk24[i]);
+ FUN_02008E2C(param1->unk0c[i]);
+ }
+
+ FUN_0200BCD0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C3DC(u32 *param0)
+{
+ if (param0[3] != 0)
+ {
+ FUN_02009CDC(*(u32 *)param0[1]);
+ }
+
+ FUN_0201FFC8(param0[0]);
+ FUN_02008C80(param0[2]);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[param5], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ u32 r4 = FUN_0200C474(param1->unk24[param5], r5);
+ GF_ASSERT(r4 == 1);
+ return r4;
+ }
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
+{
+ for (s32 i = 0; i < (s32)param0[1]; i++)
+ {
+ if (((u32 *)param0[0])[i] == 0)
+ {
+ ((u32 *)param0[0])[i] = param1;
+ param0[2]++;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+ FUN_0201D324(param2);
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+ FUN_0201E1C8(param2);
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0200C59C(u32 param0)
+{
+ FUN_020201E4(param0, 0x1000);
+}
+
+THUMB_FUNC void FUN_0200C5A8(u32 *param0)
+{
+ FUN_0200C59C(param0[0]);
+}
+
+THUMB_FUNC void FUN_0200C5B4(u32 *param0, u32 param1)
+{
+ FUN_020201E4(param0[0], param1);
+}
+
+THUMB_FUNC void FUN_0200C5C0(u32 *param0, u32 param1)
+{
+ FUN_02020130(param0[0], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C5CC(u32 *param0)
+{
+ return FUN_020201DC(param0[0]);
+}
+
+THUMB_FUNC void FUN_0200C5D8(u32 param0, u32 param1)
+{
+ FUN_020200BC(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C5E0(u32 *param0, u32 param1)
+{
+ FUN_0200C5D8(param0[0], param1);
+}
+
+THUMB_FUNC void FUN_0200C5EC(u32 param0, u32 param1)
+{
+ FUN_020200D8(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C5F4(u32 *param0, u32 param1)
+{
+ FUN_0200C5EC(*param0, param1);
+}
+
+THUMB_FUNC u32 FUN_0200C600(u32 param0)
+{
+ return FUN_02020388(param0);
+}
+
+THUMB_FUNC u32 FUN_0200C608(u32 *param0)
+{
+ return FUN_0200C600(*param0);
+}
+
+THUMB_FUNC void FUN_0200C614(u32 param0)
+{
+ FUN_02020208(param0);
+}
+
+THUMB_FUNC void FUN_0200C61C(u32 *param0)
+{
+ FUN_0200C614(*param0);
+}
+
+THUMB_FUNC void FUN_0200C628(u32 param0)
+{
+ FUN_0202022C(param0);
+}
+
+THUMB_FUNC void FUN_0200C630(u32 *param0)
+{
+ FUN_0200C628(*param0);
+}
+
+THUMB_FUNC void FUN_0200C63C(u32 param0, u32 param1)
+{
+ FUN_020200A0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C644(u32 *param0, u32 param1)
+{
+ FUN_0200C63C(*param0, param1);
+}
+
+THUMB_FUNC u8 FUN_0200C650(u32 param0)
+{
+ return FUN_02020128(param0);
+}
+
+THUMB_FUNC u8 FUN_0200C658(u32 *param0)
+{
+ return FUN_0200C650(*param0);
+}
+
+THUMB_FUNC void FUN_0200C664(u32 param0, u32 param1)
+{
+ FUN_02020248(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C66C(u32 *param0, u32 param1)
+{
+ FUN_0200C664(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C678(u32 param0, u32 param1)
+{
+ FUN_020202A8(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C680(u32 *param0, u32 param1)
+{
+ FUN_0200C678(*param0, param1);
+}
+
+THUMB_FUNC u8 FUN_0200C68C(u32 *param0)
+{
+ return FUN_02020300(*param0);
+}
+
+THUMB_FUNC void FUN_0200C698(u32 param0, u32 param1)
+{
+ FUN_02020238(param0, (u8)param1);
+}
+
+THUMB_FUNC u8 FUN_0200C6A4(u32 *param0)
+{
+ return FUN_02020240(*param0);
+}
+
+THUMB_FUNC void FUN_0200C6B0(u32 *param0, u32 param1)
+{
+ FUN_0200C698(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C6BC(u32 param0, u32 param1)
+{
+ FUN_02020310(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C6C4(u32 *param0, u32 param1)
+{
+ FUN_0200C6BC(*param0, param1);
+}
+
+THUMB_FUNC u16 FUN_0200C6D0(u32 param0)
+{
+ return FUN_0202032C(param0);
+}
+
+THUMB_FUNC u16 FUN_0200C6D8(u32 *param0)
+{
+ return FUN_0200C6D0(*param0);
+}
+
+THUMB_FUNC void FUN_0200C6E4(u32 param0, u32 param1, u32 param2)
+{
+ u32 st0[3];
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ if (FUN_02020380(param0) == 2)
+ {
+ st0[1] += 0xc0000;
+ }
+ st0[2] = 0;
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C714(u32 *param0, u32 param1, u32 param2)
+{
+ FUN_0200C6E4(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3)
+{
+ u32 st0[3];
+
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ if (FUN_02020380(param0) == 2)
+ {
+ st0[1] += param3;
+ }
+ st0[2] = 0;
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3)
+{
+ FUN_0200C720(*param0, param1, param2, param3);
+}
+
+THUMB_FUNC void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2)
+{
+ s32 *r4 = FUN_0202011C(param0, param1, param2);
+
+ param1[0] = r4[0] / 0x1000;
+
+ if (FUN_02020380(param0) == 2)
+ {
+ s32 r1 = r4[1] - 0xc0000;
+
+ param2[0] = r1 / 0x1000;
+
+ return;
+ }
+
+ param2[0] = r4[1] / 0x1000;
+}
+
+THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2)
+{
+ FUN_0200C75C(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3)
+{
+ s32 *r4 = FUN_0202011C(param0, param1, param2);
+
+ param1[0] = r4[0] / 0x1000;
+
+ if (FUN_02020380(param0) == 2)
+ {
+ s32 r1 = r4[1] - param3;
+
+ param2[0] = r1 / 0x1000;
+
+ return;
+ }
+
+ param2[0] = r4[1] / 0x1000;
+}
+
+THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3)
+{
+ FUN_0200C7AC(*param0, param1, param2, param3);
+}
+
+THUMB_FUNC void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2)
+{
+ u32 st0[3];
+
+ u32 *r0 = FUN_0202011C(param0, param1, param2);
+
+ st0[0] = r0[0] + ((u32)param1 << 0xc);
+ st0[1] = r0[1] + ((u32)param2 << 0xc);
+ st0[2] = r0[2];
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2)
+{
+ FUN_0200C7FC(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C838(u32 param0, u32 param1)
+{
+ FUN_020200EC(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C840(u32 *param0, u32 param1)
+{
+ FUN_0200C838(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C84C(u32 param0, f32 param1, f32 param2)
+{
+ s32 *r4 = FUN_02020120(param0);
+
+ r4[0] = (s32)(param1 * 0x1000);
+ r4[1] = (s32)(param2 * 0x1000);
+
+ FUN_02020064(param0, r4);
+}
+
+THUMB_FUNC void FUN_0200C884(u32 *param0, f32 param1, f32 param2)
+{
+ FUN_0200C84C(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C890(u32 param0, u16 param1)
+{
+ FUN_02020088(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C898(u32 *param0, u16 param1)
+{
+ FUN_0200C890(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8A4(u32 param0, u32 param1)
+{
+ u16 r0 = FUN_02020124(param0);
+ r0 += param1;
+ FUN_02020088(param0, r0);
+}
+
+THUMB_FUNC void FUN_0200C8BC(u32 *param0, u32 param1)
+{
+ FUN_0200C8A4(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8C8(u32 param0, u32 param1)
+{
+ FUN_02020100(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8D0(u32 *param0, u32 param1)
+{
+ FUN_0200C8C8(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2)
+{
+ u32 st0[3];
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ st0[2] = 0;
+
+ FUN_02020054(*param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C8F8(u32 *param0, u32 param1)
+{
+ FUN_02020358(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C904(u32 param0, u32 param1)
+{
+ FUN_02020398(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1)
+{
+ FUN_0200C904(*param0, param1);
+}
+
+THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009AC4(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009B78(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0200C9D8(
+ u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+{
+ u32 r6 = FUN_020094F0(param1[3], param5);
+ FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]);
+
+ FUN_02009BE8(r6);
+}
+
+THUMB_FUNC void FUN_0200CA0C(
+ u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+{
+ u32 r6 = FUN_020094F0(param1[4], param5);
+ FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]);
+
+ FUN_02009DE0(r6);
+}
+
+THUMB_FUNC u32 FUN_0200CA40(u32 *param0)
+{
+ return *param0;
+}
diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h
new file mode 100644
index 00000000..a252fd93
--- /dev/null
+++ b/include/unk_0200BB14.h
@@ -0,0 +1,243 @@
+#ifndef POKEDIAMOND_UNK_0200BB14_H
+#define POKEDIAMOND_UNK_0200BB14_H
+
+#include "global.h"
+
+struct UnkStruct_0200BB14_1
+{
+ u32 unk000;
+ u32 unk004;
+ u32 unk008;
+ u32 unk00c;
+ u8 unk010[0x128];
+};
+
+struct UnkStruct_0200BB14_2
+{
+ u32 unk00;
+ u32 unk04;
+ u32 *unk08;
+ u32 unk0c[6];
+ u32 *unk24[6];
+ u32 unk3c[6];
+ s32 unk54;
+};
+
+struct UnkStruct_0200BB14_3
+{
+ u32 unk00;
+ s16 unk04;
+ s16 unk06;
+ u16 unk08;
+ u16 unk0a;
+ u32 unk0c;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1c;
+ u32 unk20;
+ u32 unk24;
+};
+
+struct UnkStruct_0200BB14_sub
+{
+ u8 unk00[0x24];
+};
+
+struct UnkStruct_0200BB14_4
+{
+ u32 unk00;
+ struct UnkStruct_0200BB14_sub *unk04;
+ s32 unk08;
+ s32 unk0c;
+ s32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1c;
+ u16 unk20;
+ u32 unk24;
+ u32 unk28;
+ u32 unk2c;
+};
+
+struct UnkStruct_0200BB14_6
+{
+ struct UnkStruct_0200BB14_sub *unk0;
+ u32 unk4;
+};
+struct UnkStruct_0200BB14_5
+{
+ u32 unk00;
+ struct UnkStruct_0200BB14_sub *unk04;
+ struct UnkStruct_0200BB14_6 *unk08;
+ u32 unk0c;
+};
+
+struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id);
+struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0);
+u32 FUN_0200BB68(u32 param0);
+BOOL FUN_0200BB6C(struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3);
+BOOL FUN_0200BBF0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2);
+void FUN_0200BC14(u32 param0);
+void FUN_0200BC1C(u32 *param0);
+void FUN_0200BC30();
+void FUN_0200BC38();
+void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BCB0(u32 *param0);
+void FUN_0200BCD0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200BCE0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200BD04(u32 *param0);
+BOOL FUN_0200BD20(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2);
+u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2);
+u32 FUN_0200BE74(u32 *param0,
+ u32 *param1,
+ u32 param2,
+ s16 param3,
+ s16 param4,
+ s16 param5,
+ u16 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13);
+BOOL FUN_0200BF60(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
+BOOL FUN_0200C00C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+s32 FUN_0200C06C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ s32 param7);
+u8 FUN_0200C0DC(u32 param0,
+ u32 param1,
+ u32 *param2,
+ struct UnkStruct_0200BB14_2 *param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ s32 param9);
+u32 FUN_0200C124(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5);
+u32 FUN_0200C13C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5);
+struct UnkStruct_0200BB14_5 *FUN_0200C154(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
+u32 FUN_0200C334(u32 *param0, u32 param1);
+u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2);
+u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200C3DC(u32 *param0);
+BOOL FUN_0200C404(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+BOOL FUN_0200C474(u32 *param0, u32 param1);
+BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2);
+BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2);
+BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2);
+void FUN_0200C59C(u32 param0);
+void FUN_0200C5A8(u32 *param0);
+void FUN_0200C5B4(u32 *param0, u32 param1);
+void FUN_0200C5C0(u32 *param0, u32 param1);
+u32 FUN_0200C5CC(u32 *param0);
+void FUN_0200C5D8(u32 param0, u32 param1);
+void FUN_0200C5E0(u32 *param0, u32 param1);
+void FUN_0200C5EC(u32 param0, u32 param1);
+void FUN_0200C5F4(u32 *param0, u32 param1);
+u32 FUN_0200C600(u32 param0);
+u32 FUN_0200C608(u32 *param0);
+void FUN_0200C614(u32 param0);
+void FUN_0200C61C(u32 *param0);
+void FUN_0200C628(u32 param0);
+void FUN_0200C630(u32 *param0);
+void FUN_0200C63C(u32 param0, u32 param1);
+void FUN_0200C644(u32 *param0, u32 param1);
+u8 FUN_0200C650(u32 param0);
+u8 FUN_0200C658(u32 *param0);
+void FUN_0200C664(u32 param0, u32 param1);
+void FUN_0200C66C(u32 *param0, u32 param1);
+void FUN_0200C678(u32 param0, u32 param1);
+void FUN_0200C680(u32 *param0, u32 param1);
+u8 FUN_0200C68C(u32 *param0);
+void FUN_0200C698(u32 param0, u32 param1);
+u8 FUN_0200C6A4(u32 *param0);
+void FUN_0200C6B0(u32 *param0, u32 param1);
+void FUN_0200C6BC(u32 param0, u32 param1);
+void FUN_0200C6C4(u32 *param0, u32 param1);
+u16 FUN_0200C6D0(u32 param0);
+u16 FUN_0200C6D8(u32 *param0);
+void FUN_0200C6E4(u32 param0, u32 param1, u32 param2);
+void FUN_0200C714(u32 *param0, u32 param1, u32 param2);
+void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3);
+void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3);
+void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2);
+void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2);
+void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3);
+void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3);
+void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2);
+void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2);
+void FUN_0200C838(u32 param0, u32 param1);
+void FUN_0200C840(u32 *param0, u32 param1);
+void FUN_0200C84C(u32 param0, f32 param1, f32 param2);
+void FUN_0200C884(u32 *param0, f32 param1, f32 param2);
+void FUN_0200C890(u32 param0, u16 param1);
+void FUN_0200C898(u32 *param0, u16 param1);
+void FUN_0200C8A4(u32 param0, u32 param1);
+void FUN_0200C8BC(u32 *param0, u32 param1);
+void FUN_0200C8C8(u32 param0, u32 param1);
+void FUN_0200C8D0(u32 *param0, u32 param1);
+void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2);
+void FUN_0200C8F8(u32 *param0, u32 param1);
+void FUN_0200C904(u32 param0, u32 param1);
+void FUN_0200C90C(u32 *param0, u32 param1);
+BOOL FUN_0200C918(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+BOOL FUN_0200C978(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
+void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
+u32 FUN_0200CA40(u32 *param0);
+
+#endif // POKEDIAMOND_UNK_0200BB14_H