diff options
-rw-r--r-- | arm9/asm/unk_0200BB14.s | 2135 | ||||
-rw-r--r-- | arm9/src/unk_0200BB14.c | 1323 | ||||
-rw-r--r-- | include/unk_0200BB14.h | 243 |
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 |