summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0202E29C.s1970
-rw-r--r--arm9/src/unk_0202E29C.c1110
-rw-r--r--arm9/src/unk_0202F150.c34
-rw-r--r--arm9/src/unk_02031734.c49
-rw-r--r--include/unk_0202E29C.h137
-rw-r--r--include/unk_0202F150.h10
6 files changed, 1281 insertions, 2029 deletions
diff --git a/arm9/asm/unk_0202E29C.s b/arm9/asm/unk_0202E29C.s
deleted file mode 100644
index 4bb83bc8..00000000
--- a/arm9/asm/unk_0202E29C.s
+++ /dev/null
@@ -1,1970 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EEC40
-UNK_020EEC40: ; 0x020EEC40
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-
- .section .bss
-
- .global UNK_021C59E8
-UNK_021C59E8: ; 0x021C59E8
- .space 0xc
-
- .text
-
- thumb_func_start FUN_0202E29C
-FUN_0202E29C: ; 0x0202E29C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _0202E332
- mov r1, #0xdb
- mov r0, #0xf
- lsl r1, r1, #0x4
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- mov r2, #0xdb
- str r0, [r1, #0x8]
- mov r1, #0x0
- lsl r2, r2, #0x4
- bl MI_CpuFill8
- bl FUN_0202CEEC
- add r1, r0, #0x0
- mov r0, #0xf
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- ldr r1, _0202E338 ; =0x00000CA4
- str r0, [r2, r1]
- bl FUN_0202CEEC
- add r2, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E338 ; =0x00000CA4
- ldr r0, [r1, r0]
- mov r1, #0x0
- bl MI_CpuFill8
- bl FUN_02023AC4
- add r1, r0, #0x0
- mov r0, #0xf
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- ldr r1, _0202E33C ; =0x00000CBC
- str r0, [r2, r1]
- bl FUN_02023AC4
- add r2, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E33C ; =0x00000CBC
- ldr r0, [r1, r0]
- mov r1, #0x0
- bl MI_CpuFill8
- ldr r2, _0202E334 ; =UNK_021C59E8
- mov r1, #0x33
- ldr r3, _0202E340 ; =0x00000333
- ldr r0, [r2, #0x8]
- lsl r1, r1, #0x6
- str r3, [r0, r1]
- add r0, r1, #0x0
- ldr r3, [r2, #0x8]
- sub r0, #0x8
- str r4, [r3, r0]
- ldr r0, [r2, #0x8]
- sub r1, #0x18
- add r0, r0, r1
- bl MailMsg_init
- bl FUN_0202E500
-_0202E332:
- pop {r4, pc}
- .balign 4
-_0202E334: .word UNK_021C59E8
-_0202E338: .word 0x00000CA4
-_0202E33C: .word 0x00000CBC
-_0202E340: .word 0x00000333
-
- thumb_func_start FUN_0202E344
-FUN_0202E344: ; 0x0202E344
- ldr r0, _0202E354 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202E350
- mov r0, #0x1
- bx lr
-_0202E350:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E354: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E358
-FUN_0202E358: ; 0x0202E358
- push {r4-r5}
- mov r5, #0x0
- cmp r2, #0x0
- ble _0202E378
-_0202E360:
- ldrb r4, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- cmp r4, r3
- beq _0202E36E
- mov r0, #0x0
- pop {r4-r5}
- bx lr
-_0202E36E:
- add r5, r5, #0x1
- add r0, r0, #0x1
- add r1, r1, #0x1
- cmp r5, r2
- blt _0202E360
-_0202E378:
- mov r0, #0x1
- pop {r4-r5}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202E380
-FUN_0202E380: ; 0x0202E380
- push {r3-r7, lr}
- add r7, r0, #0x0
- bl FUN_02033534
- add r5, r0, #0x0
- bl FUN_0203354C
- add r4, r7, #0x0
- add r6, r0, #0x0
- add r4, #0x50
- cmp r5, #0xe
- beq _0202E3C2
- ldrb r0, [r4, #0x4]
- bl FUN_0202D8B0
- cmp r0, #0x0
- beq _0202E3AC
- add r0, r5, #0x0
- bl FUN_0202D8B0
- cmp r0, #0x0
- bne _0202E3C2
-_0202E3AC:
- add r0, r4, #0x0
- add r0, #0x54
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0202E3BC
- ldrb r0, [r4, #0x4]
- cmp r0, #0xa
- beq _0202E460
-_0202E3BC:
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- bne _0202E460
-_0202E3C2:
- cmp r5, #0xe
- beq _0202E3CC
- ldrb r0, [r4, #0x5]
- cmp r0, r6
- bne _0202E460
-_0202E3CC:
- mov r6, #0x0
- add r4, r6, #0x0
- add r5, r6, #0x0
-_0202E3D2:
- ldr r0, _0202E464 ; =UNK_021C59E8
- ldr r1, _0202E468 ; =0x00000C84
- ldr r0, [r0, #0x8]
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E412
- add r0, #0x58
- add r0, r0, r5
- add r1, r7, #0x4
- mov r2, #0x6
- bl FUN_0202E358
- cmp r0, #0x0
- beq _0202E412
- ldr r2, _0202E464 ; =UNK_021C59E8
- lsl r1, r6, #0x1
- ldr r3, [r2, #0x8]
- mov r0, #0x96
- add r3, r3, r1
- ldr r1, _0202E468 ; =0x00000C84
- strh r0, [r3, r1]
- ldr r3, [r2, #0x8]
- mov r2, #0xc0
- add r1, r6, #0x0
- add r3, #0x54
- mul r1, r2
- add r0, r7, #0x0
- add r1, r3, r1
- bl MI_CpuCopy8
- pop {r3-r7, pc}
-_0202E412:
- add r6, r6, #0x1
- add r4, r4, #0x2
- add r5, #0xc0
- cmp r6, #0x10
- blt _0202E3D2
- ldr r0, _0202E464 ; =UNK_021C59E8
- ldr r2, _0202E468 ; =0x00000C84
- ldr r0, [r0, #0x8]
- mov r1, #0x0
- add r4, r0, #0x0
-_0202E426:
- ldrh r3, [r4, r2]
- cmp r3, #0x0
- beq _0202E434
- add r1, r1, #0x1
- add r4, r4, #0x2
- cmp r1, #0x10
- blt _0202E426
-_0202E434:
- cmp r1, #0x10
- bge _0202E460
- lsl r2, r1, #0x1
- add r2, r0, r2
- ldr r0, _0202E468 ; =0x00000C84
- mov r3, #0x96
- strh r3, [r2, r0]
- ldr r2, _0202E464 ; =UNK_021C59E8
- add r3, r1, #0x0
- ldr r4, [r2, #0x8]
- mov r2, #0xc0
- add r4, #0x54
- mul r3, r2
- add r0, r7, #0x0
- add r1, r4, r3
- bl MI_CpuCopy8
- ldr r0, _0202E464 ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E46C ; =0x00000CB4
- strb r2, [r1, r0]
-_0202E460:
- pop {r3-r7, pc}
- nop
-_0202E464: .word UNK_021C59E8
-_0202E468: .word 0x00000C84
-_0202E46C: .word 0x00000CB4
-
- thumb_func_start FUN_0202E470
-FUN_0202E470: ; 0x0202E470
- push {r3, lr}
- cmp r1, #0x0
- beq _0202E47A
- bl OS_Terminate
-_0202E47A:
- ldr r0, _0202E484 ; =UNK_021C59E8
- mov r1, #0x2
- str r1, [r0, #0x4]
- pop {r3, pc}
- nop
-_0202E484: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E488
-FUN_0202E488: ; 0x0202E488
- ldr r0, _0202E494 ; =UNK_021C59E8
- mov r1, #0x0
- str r1, [r0, #0x4]
- ldr r3, _0202E498 ; =FUN_02016454
- mov r0, #0x4
- bx r3
- .balign 4
-_0202E494: .word UNK_021C59E8
-_0202E498: .word FUN_02016454
-
- thumb_func_start FUN_0202E49C
-FUN_0202E49C: ; 0x0202E49C
- push {r3, lr}
- mov r0, #0x4
- bl FUN_02016444
- ldr r0, _0202E4C0 ; =UNK_021C59E8
- mov r1, #0x1
- str r1, [r0, #0x4]
- ldr r1, _0202E4C4 ; =FUN_0202E470
- mov r0, #0x8
- mov r2, #0x0
- bl FUN_02090DB8
- cmp r0, #0x1
- beq _0202E4BC
- bl OS_Terminate
-_0202E4BC:
- pop {r3, pc}
- nop
-_0202E4C0: .word UNK_021C59E8
-_0202E4C4: .word FUN_0202E470
-
- thumb_func_start FUN_0202E4C8
-FUN_0202E4C8: ; 0x0202E4C8
- ldr r0, _0202E4D8 ; =UNK_021C59E8
- ldr r0, [r0, #0x4]
- cmp r0, #0x2
- bne _0202E4D4
- mov r0, #0x1
- bx lr
-_0202E4D4:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E4D8: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E4DC
-FUN_0202E4DC: ; 0x0202E4DC
- ldr r0, _0202E4EC ; =UNK_021C59E8
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0202E4E8
- mov r0, #0x1
- bx lr
-_0202E4E8:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E4EC: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E4F0
-FUN_0202E4F0: ; 0x0202E4F0
- ldr r3, _0202E4F8 ; =FUN_02090CC8
- ldr r0, _0202E4FC ; =FUN_0202E488
- mov r1, #0x0
- bx r3
- .balign 4
-_0202E4F8: .word FUN_02090CC8
-_0202E4FC: .word FUN_0202E488
-
- thumb_func_start FUN_0202E500
-FUN_0202E500: ; 0x0202E500
- push {r3, lr}
- ldr r1, _0202E534 ; =UNK_021C59E8
- mov r0, #0xcb
- ldr r2, [r1, #0x8]
- mov r3, #0x0
- lsl r0, r0, #0x4
- str r3, [r2, r0]
- ldr r1, [r1, #0x8]
- sub r0, #0xc
- ldr r2, [r1, r0]
- mov r0, #0x1f
- add r1, r2, #0x0
- and r1, r0
- mov r0, #0x20
- sub r0, r0, r1
- add r0, r2, r0
- bl FUN_0202CE64
- ldr r0, _0202E534 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- mov r0, #0x33
- lsl r0, r0, #0x6
- ldr r0, [r1, r0]
- bl FUN_0202CB70
- pop {r3, pc}
- .balign 4
-_0202E534: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E538
-FUN_0202E538: ; 0x0202E538
- push {r3-r5, lr}
- mov r4, #0x0
- ldr r2, _0202E564 ; =UNK_021C59E8
- ldr r0, _0202E568 ; =0x00000C84
- add r5, r4, #0x0
- add r1, r4, #0x0
-_0202E544:
- ldr r3, [r2, #0x8]
- add r4, r4, #0x1
- add r3, r3, r5
- add r5, r5, #0x2
- strh r1, [r3, r0]
- cmp r4, #0x10
- blt _0202E544
- ldr r0, _0202E564 ; =UNK_021C59E8
- mov r2, #0x3
- ldr r0, [r0, #0x8]
- lsl r2, r2, #0xa
- add r0, #0x54
- bl MI_CpuFill8
- pop {r3-r5, pc}
- nop
-_0202E564: .word UNK_021C59E8
-_0202E568: .word 0x00000C84
-
- thumb_func_start FUN_0202E56C
-FUN_0202E56C: ; 0x0202E56C
- push {r3-r4}
- ldr r1, _0202E58C ; =UNK_021C59E8
- lsl r0, r0, #0x18
- ldr r2, [r1, #0x8]
- ldr r4, _0202E590 ; =0x00000DAD
- lsr r0, r0, #0x18
- ldrb r1, [r2, r4]
- mov r3, #0x8
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1c
- orr r0, r1
- strb r0, [r2, r4]
- pop {r3-r4}
- bx lr
- nop
-_0202E58C: .word UNK_021C59E8
-_0202E590: .word 0x00000DAD
-
- thumb_func_start FUN_0202E594
-FUN_0202E594: ; 0x0202E594
- push {r4-r5}
- ldr r1, _0202E5F0 ; =UNK_021C59E8
- ldr r0, _0202E5F4 ; =0x00000CB4
- ldr r3, [r1, #0x8]
- mov r2, #0x0
- strb r2, [r3, r0]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x1
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x4
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r4, [r1, #0x8]
- add r3, #0xf6
- strb r2, [r4, r3]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x10
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r4, [r1, #0x8]
- add r3, #0xf8
- strb r2, [r4, r3]
- ldr r1, [r1, #0x8]
- add r0, #0xf7
- strb r2, [r1, r0]
- pop {r4-r5}
- bx lr
- .balign 4
-_0202E5F0: .word UNK_021C59E8
-_0202E5F4: .word 0x00000CB4
-
- thumb_func_start FUN_0202E5F8
-FUN_0202E5F8: ; 0x0202E5F8
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_0202E594
- add r0, r5, #0x0
- bl FUN_0202E56C
- bl FUN_0202D2F4
- ldr r0, _0202E65C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E660 ; =0x00000DAB
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- bne _0202E62A
- ldr r0, _0202E664 ; =FUN_020303BC
- mov r1, #0xe
- bl FUN_0202D0A0
- ldr r0, _0202E65C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E660 ; =0x00000DAB
- strb r2, [r1, r0]
-_0202E62A:
- ldr r0, _0202E65C ; =UNK_021C59E8
- ldr r3, _0202E668 ; =0x00000DAD
- ldr r1, [r0, #0x8]
- mov r2, #0x20
- ldrb r0, [r1, r3]
- bic r0, r2
- lsl r2, r4, #0x18
- lsr r2, r2, #0x18
- lsl r2, r2, #0x1f
- lsr r2, r2, #0x1a
- orr r0, r2
- strb r0, [r1, r3]
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202E656
- bl FUN_0202CBFC
- cmp r0, #0x0
- beq _0202E656
- mov r0, #0x1
- pop {r3-r5, pc}
-_0202E656:
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_0202E65C: .word UNK_021C59E8
-_0202E660: .word 0x00000DAB
-_0202E664: .word FUN_020303BC
-_0202E668: .word 0x00000DAD
-
- thumb_func_start FUN_0202E66C
-FUN_0202E66C: ; 0x0202E66C
- push {r4, lr}
- sub sp, #0x8
- add r4, r1, #0x0
- bl FUN_0202E594
- cmp r4, #0x0
- beq _0202E67E
- bl FUN_0202E538
-_0202E67E:
- ldr r0, _0202E6DC ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E6E0 ; =0x00000DAB
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- bne _0202E69C
- ldr r0, _0202E6E4 ; =FUN_02030238
- mov r1, #0xe
- bl FUN_0202D0A0
- ldr r0, _0202E6DC ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E6E0 ; =0x00000DAB
- strb r2, [r1, r0]
-_0202E69C:
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202E6D4
- ldr r2, _0202E6E8 ; =UNK_020EEC40
- add r0, sp, #0x0
- ldrb r3, [r2, #0x0]
- add r1, sp, #0x0
- strb r3, [r0, #0x0]
- ldrb r3, [r2, #0x1]
- strb r3, [r0, #0x1]
- ldrb r3, [r2, #0x2]
- strb r3, [r0, #0x2]
- ldrb r3, [r2, #0x3]
- strb r3, [r0, #0x3]
- ldrb r3, [r2, #0x4]
- ldrb r2, [r2, #0x5]
- strb r3, [r0, #0x4]
- strb r2, [r0, #0x5]
- ldr r0, _0202E6EC ; =FUN_0202E380
- mov r2, #0x0
- bl FUN_0202C570
- cmp r0, #0x0
- beq _0202E6D4
- add sp, #0x8
- mov r0, #0x1
- pop {r4, pc}
-_0202E6D4:
- mov r0, #0x0
- add sp, #0x8
- pop {r4, pc}
- nop
-_0202E6DC: .word UNK_021C59E8
-_0202E6E0: .word 0x00000DAB
-_0202E6E4: .word FUN_02030238
-_0202E6E8: .word UNK_020EEC40
-_0202E6EC: .word FUN_0202E380
-
- thumb_func_start FUN_0202E6F0
-FUN_0202E6F0: ; 0x0202E6F0
- push {r3, lr}
- ldr r0, _0202E77C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- bne _0202E6FE
- mov r0, #0x1
- pop {r3, pc}
-_0202E6FE:
- ldr r0, _0202E780 ; =0x00000DAC
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- beq _0202E710
- cmp r0, #0x1
- beq _0202E740
- cmp r0, #0x2
- beq _0202E758
- b _0202E776
-_0202E710:
- bl FUN_0202D21C
- cmp r0, #0x0
- beq _0202E728
- bl FUN_0202C770
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E728:
- bl FUN_0202D1E4
- cmp r0, #0x0
- bne _0202E776
- bl FUN_0202D100
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x2
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E740:
- bl FUN_0202D1E4
- cmp r0, #0x0
- bne _0202E776
- bl FUN_0202D100
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x2
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E758:
- bl FUN_0202D1C8
- cmp r0, #0x0
- beq _0202E764
- mov r0, #0x1
- pop {r3, pc}
-_0202E764:
- bl FUN_0202D200
- cmp r0, #0x0
- beq _0202E776
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
-_0202E776:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_0202E77C: .word UNK_021C59E8
-_0202E780: .word 0x00000DAC
-
- thumb_func_start FUN_0202E784
-FUN_0202E784: ; 0x0202E784
- push {r3, lr}
- ldr r0, _0202E7A8 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- cmp r2, #0x0
- beq _0202E7A2
- ldr r0, _0202E7AC ; =0x00000DAA
- ldrb r1, [r2, r0]
- cmp r1, #0x0
- bne _0202E7A2
- mov r1, #0x1
- strb r1, [r2, r0]
- bl FUN_0202D100
- mov r0, #0x1
- pop {r3, pc}
-_0202E7A2:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_0202E7A8: .word UNK_021C59E8
-_0202E7AC: .word 0x00000DAA
-
- thumb_func_start FUN_0202E7B0
-FUN_0202E7B0: ; 0x0202E7B0
- push {r3, lr}
- ldr r1, _0202E7D0 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- cmp r2, #0x0
- beq _0202E7CE
- cmp r0, #0x0
- ldr r0, _0202E7D4 ; =0x00000DAA
- beq _0202E7C6
- mov r1, #0x2
- strb r1, [r2, r0]
- pop {r3, pc}
-_0202E7C6:
- mov r1, #0x0
- strb r1, [r2, r0]
- bl FUN_0202E500
-_0202E7CE:
- pop {r3, pc}
- .balign 4
-_0202E7D0: .word UNK_021C59E8
-_0202E7D4: .word 0x00000DAA
-
- thumb_func_start FUN_0202E7D8
-FUN_0202E7D8: ; 0x0202E7D8
- push {r3, lr}
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E808 ; =0x00000CBC
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E80C ; =0x00000CA4
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- mov r1, #0x0
- str r1, [r0, #0x8]
- pop {r3, pc}
- nop
-_0202E804: .word UNK_021C59E8
-_0202E808: .word 0x00000CBC
-_0202E80C: .word 0x00000CA4
-
- thumb_func_start FUN_0202E810
-FUN_0202E810: ; 0x0202E810
- push {r4, lr}
- bl FUN_02030F40
- cmp r0, #0x0
- bne _0202E81E
- mov r0, #0x0
- pop {r4, pc}
-_0202E81E:
- ldr r1, _0202E83C ; =UNK_021C59E8
- mov r0, #0x0
- ldr r4, [r1, #0x8]
- ldr r1, _0202E840 ; =0x00000C84
- add r3, r0, #0x0
-_0202E828:
- ldrh r2, [r4, r1]
- cmp r2, #0x0
- beq _0202E830
- add r0, r0, #0x1
-_0202E830:
- add r3, r3, #0x1
- add r4, r4, #0x2
- cmp r3, #0x10
- blt _0202E828
- pop {r4, pc}
- nop
-_0202E83C: .word UNK_021C59E8
-_0202E840: .word 0x00000C84
-
- thumb_func_start FUN_0202E844
-FUN_0202E844: ; 0x0202E844
- push {r3-r5, lr}
- ldr r1, _0202E870 ; =UNK_021C59E8
- mov r4, #0x0
- ldr r5, [r1, #0x8]
- ldr r1, _0202E874 ; =0x00000C84
- add r3, r4, #0x0
-_0202E850:
- ldrh r2, [r5, r1]
- cmp r2, #0x0
- beq _0202E860
- cmp r4, r0
- bne _0202E85E
- add r0, r3, #0x0
- pop {r3-r5, pc}
-_0202E85E:
- add r4, r4, #0x1
-_0202E860:
- add r3, r3, #0x1
- add r5, r5, #0x2
- cmp r3, #0x10
- blt _0202E850
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-_0202E870: .word UNK_021C59E8
-_0202E874: .word 0x00000C84
-
- thumb_func_start FUN_0202E878
-FUN_0202E878: ; 0x0202E878
- ldr r0, _0202E884 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E888 ; =0x00000CB4
- ldrb r0, [r1, r0]
- bx lr
- nop
-_0202E884: .word UNK_021C59E8
-_0202E888: .word 0x00000CB4
-
- thumb_func_start FUN_0202E88C
-FUN_0202E88C: ; 0x0202E88C
- ldr r0, _0202E898 ; =UNK_021C59E8
- mov r2, #0x0
- ldr r1, [r0, #0x8]
- ldr r0, _0202E89C ; =0x00000CB4
- strb r2, [r1, r0]
- bx lr
- .balign 4
-_0202E898: .word UNK_021C59E8
-_0202E89C: .word 0x00000CB4
-
- thumb_func_start FUN_0202E8A0
-FUN_0202E8A0: ; 0x0202E8A0
- ldr r1, _0202E8C8 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202E8CC ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E8C2
- mov r1, #0xc0
- mul r1, r0
- add r0, r3, r1
- add r0, #0xaa
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0202E8C4
- mov r0, #0x1
- bx lr
-_0202E8C2:
- mov r0, #0x0
-_0202E8C4:
- bx lr
- nop
-_0202E8C8: .word UNK_021C59E8
-_0202E8CC: .word 0x00000C84
-
- thumb_func_start FUN_0202E8D0
-FUN_0202E8D0: ; 0x0202E8D0
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r4, #0xf
-_0202E8D6:
- add r0, r4, #0x0
- bl FUN_0202E8A0
- cmp r0, r5
- ble _0202E8E8
- cmp r0, #0x8
- bge _0202E8E8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-_0202E8E8:
- sub r4, r4, #0x1
- bpl _0202E8D6
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202E8F4
-FUN_0202E8F4: ; 0x0202E8F4
- push {r3-r7, lr}
- bl FUN_0202E810
- cmp r0, #0x0
- bne _0202E904
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
-_0202E904:
- mov r5, #0x2d
- ldr r7, _0202E948 ; =UNK_021C59E8
- mov r6, #0xf
- mov r4, #0x1e
- lsl r5, r5, #0x6
-_0202E90E:
- ldr r0, [r7, #0x8]
- ldr r1, _0202E94C ; =0x00000C84
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E938
- add r0, #0x58
- add r0, r0, r5
- bl FUN_0202EFE4
- cmp r0, #0x0
- beq _0202E938
- add r0, r6, #0x0
- bl FUN_0202E8A0
- cmp r0, #0x1
- ble _0202E938
- cmp r0, #0x8
- bge _0202E938
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_0202E938:
- sub r4, r4, #0x2
- sub r5, #0xc0
- sub r6, r6, #0x1
- bpl _0202E90E
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
- nop
-_0202E948: .word UNK_021C59E8
-_0202E94C: .word 0x00000C84
-
- thumb_func_start FUN_0202E950
-FUN_0202E950: ; 0x0202E950
- push {r3-r7, lr}
- bl FUN_0202E810
- cmp r0, #0x0
- bne _0202E960
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
-_0202E960:
- mov r5, #0x2d
- ldr r7, _0202E9A4 ; =UNK_021C59E8
- mov r6, #0xf
- mov r4, #0x1e
- lsl r5, r5, #0x6
-_0202E96A:
- ldr r0, [r7, #0x8]
- ldr r1, _0202E9A8 ; =0x00000C84
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E986
- add r0, #0x58
- add r0, r0, r5
- bl FUN_0202EFE4
- cmp r0, #0x0
- beq _0202E986
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_0202E986:
- sub r4, r4, #0x2
- sub r5, #0xc0
- sub r6, r6, #0x1
- bpl _0202E96A
- mov r0, #0x1
- bl FUN_0202E8D0
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- bne _0202E9A2
- mov r0, #0x0
- bl FUN_0202E8D0
-_0202E9A2:
- pop {r3-r7, pc}
- .balign 4
-_0202E9A4: .word UNK_021C59E8
-_0202E9A8: .word 0x00000C84
-
- thumb_func_start FUN_0202E9AC
-FUN_0202E9AC: ; 0x0202E9AC
- push {r4-r6, lr}
- add r4, r1, #0x0
- ldr r1, _0202E9E0 ; =UNK_021C59E8
- mov r5, #0x0
- ldr r6, [r1, #0x8]
- ldr r1, _0202E9E4 ; =0x00000C84
- add r3, r5, #0x0
-_0202E9BA:
- ldrh r2, [r6, r1]
- cmp r2, #0x0
- beq _0202E9D4
- cmp r0, r5
- bne _0202E9D2
- add r0, r3, #0x0
- bl FUN_0202EF84
- add r1, r4, #0x0
- bl PlayerProfile_Copy
- pop {r4-r6, pc}
-_0202E9D2:
- add r5, r5, #0x1
-_0202E9D4:
- add r3, r3, #0x1
- add r6, r6, #0x2
- cmp r3, #0x10
- blt _0202E9BA
- pop {r4-r6, pc}
- nop
-_0202E9E0: .word UNK_021C59E8
-_0202E9E4: .word 0x00000C84
-
- thumb_func_start FUN_0202E9E8
-FUN_0202E9E8: ; 0x0202E9E8
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_0202CBD4
- cmp r0, #0x2
- bne _0202E9FC
- bl FUN_0202C770
- mov r0, #0x0
- pop {r3-r5, pc}
-_0202E9FC:
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202EA48
- bl FUN_02033534
- mov r1, #0xc0
- add r4, r5, #0x0
- mul r4, r1
- ldr r1, _0202EA4C ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- add r1, r3, r4
- add r1, #0x8a
- ldrh r2, [r1, #0x0]
- ldr r1, _0202EA50 ; =0x00000DA8
- strb r2, [r3, r1]
- bl FUN_0202D8B0
- cmp r0, #0x0
- beq _0202EA36
- ldr r1, _0202EA4C ; =UNK_021C59E8
- mov r0, #0x1
- ldr r1, [r1, #0x8]
- mov r2, #0x0
- add r1, #0x58
- add r1, r1, r4
- bl FUN_0202C4D8
- b _0202EA44
-_0202EA36:
- ldr r1, _0202EA4C ; =UNK_021C59E8
- mov r0, #0x1
- ldr r1, [r1, #0x8]
- add r1, #0x54
- add r1, r1, r4
- bl FUN_0202D034
-_0202EA44:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0202EA48:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-_0202EA4C: .word UNK_021C59E8
-_0202EA50: .word 0x00000DA8
-
- thumb_func_start FUN_0202EA54
-FUN_0202EA54: ; 0x0202EA54
- push {r4-r7}
- mov r4, #0x0
- ldr r1, _0202EA90 ; =UNK_021C59E8
- ldr r0, _0202EA94 ; =0x00000C84
- add r5, r4, #0x0
- mov r2, #0x1
-_0202EA60:
- ldr r3, [r1, #0x8]
- add r3, r3, r5
- ldrh r6, [r3, r0]
- cmp r6, #0x0
- beq _0202EA84
- beq _0202EA84
- ldr r6, _0202EA94 ; =0x00000C84
- ldrh r6, [r3, r6]
- sub r7, r6, #0x1
- ldr r6, _0202EA94 ; =0x00000C84
- strh r7, [r3, r6]
- ldr r3, [r1, #0x8]
- add r7, r3, r5
- ldrh r6, [r7, r6]
- cmp r6, #0x0
- bne _0202EA84
- ldr r6, _0202EA98 ; =0x00000CB4
- strb r2, [r3, r6]
-_0202EA84:
- add r4, r4, #0x1
- add r5, r5, #0x2
- cmp r4, #0x10
- blt _0202EA60
- pop {r4-r7}
- bx lr
- .balign 4
-_0202EA90: .word UNK_021C59E8
-_0202EA94: .word 0x00000C84
-_0202EA98: .word 0x00000CB4
-
- thumb_func_start FUN_0202EA9C
-FUN_0202EA9C: ; 0x0202EA9C
- push {r3-r5, lr}
- bl FUN_02033534
- add r5, r0, #0x0
- bl FUN_0202EF70
- add r4, r0, #0x0
- cmp r5, #0xf
- beq _0202EB24
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r5, r1, r0
- bl FUN_02023AC4
- cmp r0, #0x20
- ble _0202EAC2
- bl ErrorHandling
-_0202EAC2:
- bl PlayerProfile_sizeof
- cmp r0, #0x20
- beq _0202EACE
- bl ErrorHandling
-_0202EACE:
- bl PlayerProfile_sizeof
- add r1, r5, #0x0
- add r2, r0, #0x0
- add r0, r4, #0x0
- add r1, #0x10
- bl MI_CpuCopy8
- bl FUN_02023AC4
- add r2, r0, #0x0
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB74 ; =0x00000CBC
- ldr r0, [r1, r0]
- add r1, r5, #0x0
- add r1, #0x30
- bl MI_CpuCopy8
- add r0, r4, #0x0
- bl PlayerProfile_GetTrainerID
- str r0, [r5, #0x0]
- bl FUN_02033534
- strb r0, [r5, #0x4]
- bl FUN_0203354C
- strb r0, [r5, #0x5]
- ldr r0, _0202EB6C ; =UNK_021C59E8
- mov r2, #0x8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB78 ; =0x00000CA8
- add r0, r1, r0
- add r1, r5, #0x0
- add r1, #0x8
- bl MI_CpuCopy8
- bl FUN_0202D358
- add r5, #0x54
- strb r0, [r5, #0x0]
- b _0202EB4E
-_0202EB24:
- ldr r1, _0202EB6C ; =UNK_021C59E8
- ldr r4, [r1, #0x8]
- ldr r1, _0202EB70 ; =0x00000CC4
- add r5, r4, r1
- bl PlayerProfile_GetTrainerID
- ldr r1, _0202EB70 ; =0x00000CC4
- str r0, [r4, r1]
- bl FUN_02033534
- strb r0, [r5, #0x4]
- bl FUN_0203354C
- strb r0, [r5, #0x5]
- ldr r0, _0202EB6C ; =UNK_021C59E8
- add r5, #0x8
- ldr r0, [r0, #0x8]
- add r1, r5, #0x0
- mov r2, #0x54
- bl MI_CpuCopy8
-_0202EB4E:
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl DC_FlushRange
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl FUN_0202CB7C
- pop {r3-r5, pc}
- .balign 4
-_0202EB6C: .word UNK_021C59E8
-_0202EB70: .word 0x00000CC4
-_0202EB74: .word 0x00000CBC
-_0202EB78: .word 0x00000CA8
-
- thumb_func_start FUN_0202EB7C
-FUN_0202EB7C: ; 0x0202EB7C
- push {r4, lr}
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r4, r1, r0
- bl FUN_0202EDB8
- ldrb r1, [r4, #0x6]
- cmp r1, r0
- beq _0202EBC6
- bl FUN_0202EDB8
- strb r0, [r4, #0x6]
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl DC_FlushRange
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl FUN_0202CB7C
- ldr r3, _0202EBC8 ; =UNK_021C59E8
- ldr r2, _0202EBCC ; =0x00000CC4
- ldr r4, [r3, #0x8]
- ldrh r3, [r3, #0x0]
- add r0, r4, r2
- sub r2, r2, #0x4
- ldr r2, [r4, r2]
- mov r1, #0x5c
- bl FUN_0202D240
-_0202EBC6:
- pop {r4, pc}
- .balign 4
-_0202EBC8: .word UNK_021C59E8
-_0202EBCC: .word 0x00000CC4
-
- thumb_func_start FUN_0202EBD0
-FUN_0202EBD0: ; 0x0202EBD0
- push {r3-r5, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- bl FUN_0202CBD4
- add r5, r0, #0x0
- bl FUN_0202DF54
- bl FUN_0202EB7C
- bl FUN_0202D19C
- cmp r0, #0x0
- bne _0202EC0C
- bl FUN_0202EE24
- cmp r0, #0x0
- bne _0202EC0C
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED54 ; =0x00000DAD
- ldrb r1, [r2, r0]
- lsl r3, r1, #0x1d
- lsr r3, r3, #0x1f
- beq _0202EC0C
- mov r3, #0x1
- bic r1, r3
- mov r3, #0x1
- orr r1, r3
- strb r1, [r2, r0]
-_0202EC0C:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, _0202ED58 ; =0x0000FFFF
- ldr r3, [r0, #0x8]
- ldr r0, _0202ED5C ; =0x00000DA6
- ldrh r2, [r3, r0]
- cmp r2, r1
- bne _0202EC1C
- strh r4, [r3, r0]
-_0202EC1C:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED54 ; =0x00000DAD
- ldrb r1, [r2, r0]
- lsl r3, r1, #0x1e
- lsr r3, r3, #0x1f
- beq _0202EC3C
- sub r3, r0, #0x7
- ldrh r3, [r2, r3]
- cmp r3, r4
- bls _0202EC3C
- mov r3, #0x1
- bic r1, r3
- mov r3, #0x1
- orr r1, r3
- strb r1, [r2, r0]
-_0202EC3C:
- bl FUN_0202CBE8
- cmp r0, #0x19
- bne _0202EC4A
- mov r0, #0x0
- bl FUN_020335D0
-_0202EC4A:
- cmp r5, #0x9
- bhi _0202ED4C
- add r0, r5, r5
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0202EC5A: ; jump table (using 16-bit offset)
- .short _0202EC6E - _0202EC5A - 2; case 0
- .short _0202EC8E - _0202EC5A - 2; case 1
- .short _0202ED4C - _0202EC5A - 2; case 2
- .short _0202ED4C - _0202EC5A - 2; case 3
- .short _0202ED4C - _0202EC5A - 2; case 4
- .short _0202ED4C - _0202EC5A - 2; case 5
- .short _0202ED4C - _0202EC5A - 2; case 6
- .short _0202ECD2 - _0202EC5A - 2; case 7
- .short _0202ECB8 - _0202EC5A - 2; case 8
- .short _0202ECB8 - _0202EC5A - 2; case 9
-_0202EC6E:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r1, [r2, r0]
- cmp r1, #0x1
- bne _0202EC82
- bl FUN_0202E7D8
- add sp, #0x8
- pop {r3-r5, pc}
-_0202EC82:
- cmp r1, #0x2
- bne _0202ED4C
- mov r1, #0x3
- strb r1, [r2, r0]
- add sp, #0x8
- pop {r3-r5, pc}
-_0202EC8E:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x1
- bne _0202ECA2
- bl FUN_0202D178
- cmp r0, #0x0
- bne _0202ED4C
-_0202ECA2:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x2
- bne _0202ED4C
- bl FUN_0202D178
- add sp, #0x8
- cmp r0, #0x0
- pop {r3-r5, pc}
-_0202ECB8:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r3, [r0, #0x8]
- cmp r3, #0x0
- beq _0202ED4C
- ldr r1, _0202ED54 ; =0x00000DAD
- mov r0, #0x1
- ldrb r2, [r3, r1]
- add sp, #0x8
- bic r2, r0
- mov r0, #0x1
- orr r0, r2
- strb r0, [r3, r1]
- pop {r3-r5, pc}
-_0202ECD2:
- bl FUN_0202CDA4
- ldr r3, _0202ED50 ; =UNK_021C59E8
- ldr r2, _0202ED64 ; =0x00000DA9
- ldr r4, [r3, #0x8]
- ldrb r1, [r4, r2]
- cmp r1, #0x0
- bne _0202ECEE
- sub r1, r2, #0x5
- strh r0, [r4, r1]
- ldr r0, [r3, #0x8]
- mov r1, #0x5
- strb r1, [r0, r2]
- b _0202ECF2
-_0202ECEE:
- sub r0, r1, #0x1
- strb r0, [r4, r2]
-_0202ECF2:
- ldr r1, _0202ED50 ; =UNK_021C59E8
- ldr r0, _0202ED68 ; =0x00000DA4
- ldr r2, [r1, #0x8]
- ldrh r5, [r2, r0]
- add r0, #0x9
- ldrb r0, [r2, r0]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1f
- beq _0202ED0A
- ldrh r0, [r1, #0x0]
- add r0, r0, #0x1
- strh r0, [r1, #0x0]
-_0202ED0A:
- bl FUN_0202EA9C
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202D858
- add r4, r0, #0x0
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202EEE8
- str r0, [sp, #0x0]
- ldr r1, _0202ED50 ; =UNK_021C59E8
- ldr r0, _0202ED54 ; =0x00000DAD
- ldr r2, [r1, #0x8]
- add r3, r4, #0x0
- ldrb r0, [r2, r0]
- add r2, r5, #0x0
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x1f
- str r0, [sp, #0x4]
- ldrh r1, [r1, #0x0]
- mov r0, #0x0
- bl FUN_0202CF84
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED6C ; =0x00000DA8
- strb r5, [r1, r0]
-_0202ED4C:
- add sp, #0x8
- pop {r3-r5, pc}
- .balign 4
-_0202ED50: .word UNK_021C59E8
-_0202ED54: .word 0x00000DAD
-_0202ED58: .word 0x0000FFFF
-_0202ED5C: .word 0x00000DA6
-_0202ED60: .word 0x00000DAA
-_0202ED64: .word 0x00000DA9
-_0202ED68: .word 0x00000DA4
-_0202ED6C: .word 0x00000DA8
-
- thumb_func_start FUN_0202ED70
-FUN_0202ED70: ; 0x0202ED70
- push {r3, lr}
- ldr r1, _0202ED80 ; =UNK_021C59E8
- ldr r1, [r1, #0x8]
- cmp r1, #0x0
- beq _0202ED7E
- bl FUN_0202EBD0
-_0202ED7E:
- pop {r3, pc}
- .balign 4
-_0202ED80: .word UNK_021C59E8
-
- thumb_func_start FUN_0202ED84
-FUN_0202ED84: ; 0x0202ED84
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0202EDB4 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _0202ED94
- mov r0, #0x0
- pop {r4, pc}
-_0202ED94:
- bl FUN_0202CBD4
- cmp r0, #0x4
- beq _0202EDA0
- mov r0, #0x0
- pop {r4, pc}
-_0202EDA0:
- bl FUN_0202CB8C
- mov r2, #0x1
- add r1, r2, #0x0
- lsl r1, r4
- tst r0, r1
- bne _0202EDB0
- mov r2, #0x0
-_0202EDB0:
- add r0, r2, #0x0
- pop {r4, pc}
- .balign 4
-_0202EDB4: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EDB8
-FUN_0202EDB8: ; 0x0202EDB8
- push {r3-r5, lr}
- mov r4, #0x0
- add r5, r4, #0x0
-_0202EDBE:
- lsl r0, r5, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202ED84
- cmp r0, #0x0
- beq _0202EDCC
- add r4, r4, #0x1
-_0202EDCC:
- add r5, r5, #0x1
- cmp r5, #0x8
- blt _0202EDBE
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202EDD8
-FUN_0202EDD8: ; 0x0202EDD8
- ldr r0, _0202EDF0 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202EDEC
- ldr r0, _0202EDF4 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x3
- bne _0202EDEC
- mov r0, #0x1
- bx lr
-_0202EDEC:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202EDF0: .word UNK_021C59E8
-_0202EDF4: .word 0x00000DAA
-
- thumb_func_start FUN_0202EDF8
-FUN_0202EDF8: ; 0x0202EDF8
- ldr r0, _0202EE08 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE04
- mov r0, #0x1
- bx lr
-_0202EE04:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202EE08: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EE0C
-FUN_0202EE0C: ; 0x0202EE0C
- push {r3, lr}
- ldr r0, _0202EE20 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE1C
- bl FUN_0202D1C8
- pop {r3, pc}
-_0202EE1C:
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0202EE20: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EE24
-FUN_0202EE24: ; 0x0202EE24
- push {r3, lr}
- ldr r0, _0202EE3C ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE38
- bl FUN_0202CB8C
- ldr r1, _0202EE40 ; =0x0000FFFE
- and r0, r1
- pop {r3, pc}
-_0202EE38:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-_0202EE3C: .word UNK_021C59E8
-_0202EE40: .word 0x0000FFFE
-
- thumb_func_start FUN_0202EE44
-FUN_0202EE44: ; 0x0202EE44
- push {r3, lr}
- bl FUN_0202EE60
- cmp r0, #0x0
- beq _0202EE5A
- bl FUN_0202CBE8
- cmp r0, #0x14
- bne _0202EE5A
- mov r0, #0x1
- pop {r3, pc}
-_0202EE5A:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202EE60
-FUN_0202EE60: ; 0x0202EE60
- ldr r0, _0202EE7C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202EE76
- ldr r0, _0202EE80 ; =0x00000DAD
- ldrb r0, [r1, r0]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- beq _0202EE76
- mov r0, #0x1
- bx lr
-_0202EE76:
- mov r0, #0x0
- bx lr
- nop
-_0202EE7C: .word UNK_021C59E8
-_0202EE80: .word 0x00000DAD
-
- thumb_func_start FUN_0202EE84
-FUN_0202EE84: ; 0x0202EE84
- push {r3-r4}
- ldr r1, _0202EEA8 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- cmp r2, #0x0
- beq _0202EEA2
- ldr r4, _0202EEAC ; =0x00000DAD
- lsl r0, r0, #0x18
- ldrb r1, [r2, r4]
- lsr r0, r0, #0x18
- mov r3, #0x4
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1d
- orr r0, r1
- strb r0, [r2, r4]
-_0202EEA2:
- pop {r3-r4}
- bx lr
- nop
-_0202EEA8: .word UNK_021C59E8
-_0202EEAC: .word 0x00000DAD
-
- thumb_func_start FUN_0202EEB0
-FUN_0202EEB0: ; 0x0202EEB0
- push {r4-r5}
- ldr r5, _0202EEDC ; =UNK_021C59E8
- ldr r2, [r5, #0x8]
- cmp r2, #0x0
- beq _0202EED6
- ldr r4, _0202EEE0 ; =0x00000DAD
- lsl r0, r0, #0x18
- ldrb r1, [r2, r4]
- lsr r0, r0, #0x18
- mov r3, #0x2
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1e
- orr r0, r1
- strb r0, [r2, r4]
- ldr r2, _0202EEE4 ; =0x0000FFFF
- ldr r1, [r5, #0x8]
- sub r0, r4, #0x7
- strh r2, [r1, r0]
-_0202EED6:
- pop {r4-r5}
- bx lr
- nop
-_0202EEDC: .word UNK_021C59E8
-_0202EEE0: .word 0x00000DAD
-_0202EEE4: .word 0x0000FFFF
-
- thumb_func_start FUN_0202EEE8
-FUN_0202EEE8: ; 0x0202EEE8
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl WM_GetDispersionBeaconPeriod
- add r4, r0, #0x0
- cmp r5, #0x1a
- blo _0202EEFA
- bl ErrorHandling
-_0202EEFA:
- cmp r5, #0xa
- bne _0202EF04
- lsl r0, r4, #0xe
- lsr r0, r0, #0x10
- pop {r3-r5, pc}
-_0202EF04:
- cmp r5, #0x9
- beq _0202EF0C
- cmp r5, #0xd
- bne _0202EF12
-_0202EF0C:
- lsl r0, r4, #0xe
- lsr r0, r0, #0x10
- pop {r3-r5, pc}
-_0202EF12:
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202EF18
-FUN_0202EF18: ; 0x0202EF18
- ldr r1, _0202EF3C ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202EF36
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EF40 ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202EF36
- mov r1, #0xc0
- add r3, #0x54
- mul r1, r0
- add r0, r3, r1
- bx lr
-_0202EF36:
- mov r0, #0x0
- bx lr
- nop
-_0202EF3C: .word UNK_021C59E8
-_0202EF40: .word 0x00000C84
-
- thumb_func_start FUN_0202EF44
-FUN_0202EF44: ; 0x0202EF44
- ldr r1, _0202EF68 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202EF62
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EF6C ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202EF62
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- bx lr
-_0202EF62:
- mov r0, #0x0
- bx lr
- nop
-_0202EF68: .word UNK_021C59E8
-_0202EF6C: .word 0x00000C84
-
- thumb_func_start FUN_0202EF70
-FUN_0202EF70: ; 0x0202EF70
- ldr r0, _0202EF7C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EF80 ; =0x00000CB8
- ldr r0, [r1, r0]
- bx lr
- nop
-_0202EF7C: .word UNK_021C59E8
-_0202EF80: .word 0x00000CB8
-
- thumb_func_start FUN_0202EF84
-FUN_0202EF84: ; 0x0202EF84
- ldr r1, _0202EFA4 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EFA8 ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- bne _0202EF98
- mov r0, #0x0
- bx lr
-_0202EF98:
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- add r0, #0x10
- bx lr
- .balign 4
-_0202EFA4: .word UNK_021C59E8
-_0202EFA8: .word 0x00000C84
-
- thumb_func_start FUN_0202EFAC
-FUN_0202EFAC: ; 0x0202EFAC
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _0202EFDC ; =UNK_021C59E8
- add r4, r1, #0x0
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EFD8
- cmp r4, #0x8
- blt _0202EFC2
- bl ErrorHandling
-_0202EFC2:
- ldr r1, _0202EFDC ; =UNK_021C59E8
- add r0, r5, #0x0
- ldr r2, [r1, #0x8]
- ldr r1, _0202EFE0 ; =0x00000C54
- add r3, r2, r1
- mov r2, #0x6
- add r1, r4, #0x0
- mul r1, r2
- add r1, r3, r1
- bl MI_CpuCopy8
-_0202EFD8:
- pop {r3-r5, pc}
- nop
-_0202EFDC: .word UNK_021C59E8
-_0202EFE0: .word 0x00000C54
-
- thumb_func_start FUN_0202EFE4
-FUN_0202EFE4: ; 0x0202EFE4
- push {r4-r5}
- ldr r2, _0202F034 ; =UNK_021C59E8
- mov r1, #0x0
- ldr r3, [r2, #0x8]
- ldr r2, _0202F038 ; =0x00000C54
- add r2, r3, r2
- ldrb r3, [r0, #0x0]
-_0202EFF2:
- ldrb r4, [r2, #0x0]
- cmp r4, r3
- bne _0202F026
- ldrb r5, [r2, #0x1]
- ldrb r4, [r0, #0x1]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x2]
- ldrb r4, [r0, #0x2]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x3]
- ldrb r4, [r0, #0x3]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x4]
- ldrb r4, [r0, #0x4]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x5]
- ldrb r4, [r0, #0x5]
- cmp r5, r4
- bne _0202F026
- mov r0, #0x1
- pop {r4-r5}
- bx lr
-_0202F026:
- add r1, r1, #0x1
- add r2, r2, #0x6
- cmp r1, #0x8
- blt _0202EFF2
- mov r0, #0x0
- pop {r4-r5}
- bx lr
- .balign 4
-_0202F034: .word UNK_021C59E8
-_0202F038: .word 0x00000C54
-
- thumb_func_start FUN_0202F03C
-FUN_0202F03C: ; 0x0202F03C
- ldr r0, _0202F054 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202F04E
- ldr r0, _0202F058 ; =0x00000DAD
- ldrb r0, [r1, r0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- bx lr
-_0202F04E:
- mov r0, #0x0
- bx lr
- nop
-_0202F054: .word UNK_021C59E8
-_0202F058: .word 0x00000DAD
-
- thumb_func_start FUN_0202F05C
-FUN_0202F05C: ; 0x0202F05C
- ldr r0, _0202F070 ; =UNK_021C59E8
- ldr r3, [r0, #0x8]
- cmp r3, #0x0
- beq _0202F06E
- ldr r1, _0202F074 ; =0x00000DAD
- mov r0, #0x10
- ldrb r2, [r3, r1]
- orr r0, r2
- strb r0, [r3, r1]
-_0202F06E:
- bx lr
- .balign 4
-_0202F070: .word UNK_021C59E8
-_0202F074: .word 0x00000DAD
-
- thumb_func_start FUN_0202F078
-FUN_0202F078: ; 0x0202F078
- ldr r1, _0202F088 ; =UNK_021C59E8
- ldr r3, _0202F08C ; =MI_CpuCopy8
- ldr r2, [r1, #0x8]
- ldr r1, _0202F090 ; =0x00000CA8
- add r1, r2, r1
- mov r2, #0x8
- bx r3
- nop
-_0202F088: .word UNK_021C59E8
-_0202F08C: .word MI_CpuCopy8
-_0202F090: .word 0x00000CA8
-
- thumb_func_start FUN_0202F094
-FUN_0202F094: ; 0x0202F094
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02023AC4
- ldr r1, _0202F0B0 ; =UNK_021C59E8
- add r2, r0, #0x0
- ldr r3, [r1, #0x8]
- ldr r1, _0202F0B4 ; =0x00000CBC
- add r0, r4, #0x0
- ldr r1, [r3, r1]
- bl MI_CpuCopy8
- pop {r4, pc}
- nop
-_0202F0B0: .word UNK_021C59E8
-_0202F0B4: .word 0x00000CBC
-
- thumb_func_start FUN_0202F0B8
-FUN_0202F0B8: ; 0x0202F0B8
- push {r4, lr}
- bl FUN_0202EA9C
- ldr r3, _0202F0D4 ; =UNK_021C59E8
- ldr r2, _0202F0D8 ; =0x00000CC4
- ldr r4, [r3, #0x8]
- ldrh r3, [r3, #0x0]
- add r0, r4, r2
- sub r2, r2, #0x4
- ldr r2, [r4, r2]
- mov r1, #0x5c
- bl FUN_0202D240
- pop {r4, pc}
- .balign 4
-_0202F0D4: .word UNK_021C59E8
-_0202F0D8: .word 0x00000CC4
-
- thumb_func_start FUN_0202F0DC
-FUN_0202F0DC: ; 0x0202F0DC
- push {r4-r6, lr}
- mov r5, #0x0
- add r6, r0, #0x0
- add r4, r5, #0x0
-_0202F0E4:
- add r0, r4, #0x0
- bl FUN_0202EF44
- cmp r0, #0x0
- beq _0202F0F8
- ldrb r1, [r0, #0x4]
- cmp r1, r6
- bne _0202F0F8
- ldrb r0, [r0, #0x6]
- add r5, r5, r0
-_0202F0F8:
- add r4, r4, #0x1
- cmp r4, #0x10
- blt _0202F0E4
- add r0, r5, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0202F104
-FUN_0202F104: ; 0x0202F104
- ldr r3, _0202F108 ; =FUN_0202D2D0
- bx r3
- .balign 4
-_0202F108: .word FUN_0202D2D0
-
- thumb_func_start FUN_0202F10C
-FUN_0202F10C: ; 0x0202F10C
- push {r3, lr}
- ldr r1, _0202F120 ; =UNK_021C59E8
- mov r2, #0x54
- ldr r1, [r1, #0x8]
- bl MI_CpuCopy8
- bl FUN_0202F0B8
- pop {r3, pc}
- nop
-_0202F120: .word UNK_021C59E8
-
- thumb_func_start FUN_0202F124
-FUN_0202F124: ; 0x0202F124
- ldr r1, _0202F148 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202F144
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202F14C ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202F144
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- add r0, #0x8
- bx lr
-_0202F144:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202F148: .word UNK_021C59E8
-_0202F14C: .word 0x00000C84
diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c
new file mode 100644
index 00000000..36c18b16
--- /dev/null
+++ b/arm9/src/unk_0202E29C.c
@@ -0,0 +1,1110 @@
+#include "global.h"
+#include "unk_0202E29C.h"
+#include "MI_memory.h"
+#include "OS_cache.h"
+#include "game_init.h"
+#include "heap.h"
+#include "mail_message.h"
+#include "player_data.h"
+#include "unk_0202D858.h"
+#include "unk_0202F150.h"
+#include "unk_02031734.h"
+
+struct UnkStruct_0202E29C_const
+{
+ u8 unk0[6];
+};
+
+const struct UnkStruct_0202E29C_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } };
+
+struct
+{
+ u16 unk0;
+ u32 unk4;
+ struct UnkStruct_0202E29C *unk8;
+
+} UNK_021C59E8;
+
+extern u32 FUN_0202CEEC();
+extern u32 FUN_02023AC4();
+extern u32 FUN_02090DB8(u32 param0, void (*param1)(u32, u32), u32 param2);
+extern void FUN_02090CC8(void (*param0)(), u32 param1);
+extern void FUN_0202CE64(void *param0);
+extern void FUN_0202CB70(u32 param0);
+extern void FUN_0202D2F4();
+extern void FUN_0202D0A0(void (*param0)(u32, u8 *, u32), u32 param1);
+extern u32 FUN_0202CBD4();
+extern u32 FUN_0202CBFC();
+extern u32 FUN_0202C570(void (*param0)(struct UnkStruct_0202E29C_sub *, u32), u8 *param1, u32 param2);
+extern u32 FUN_0202D21C();
+extern void FUN_0202C770();
+extern u32 FUN_0202D1E4();
+extern void FUN_0202D100();
+extern u32 FUN_0202D1C8();
+extern u32 FUN_0202D200();
+extern void FUN_0202C4D8(u32 param0, u8 *param1, u32 param2);
+extern void FUN_0202D034(u32 param0, struct UnkStruct_0202E29C_sub *param1);
+extern u32 FUN_0202D358();
+extern void FUN_0202CB7C(void *param0, u32 param1);
+extern void FUN_0202D240(void *param0, u32 size, u32 param2, u32 param3);
+extern void FUN_0202DF54();
+extern u16 FUN_0202D19C();
+extern u32 FUN_0202CBE8();
+extern u32 FUN_0202D178();
+extern u16 FUN_0202CDA4();
+extern void FUN_0202CF84(u32 param0, u16 param1, u16 param2, u32 param3, u32 param4, u32 param5);
+extern u32 FUN_0202CB8C();
+extern u16 WM_GetDispersionBeaconPeriod();
+extern BOOL FUN_0202D2D0();
+
+THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data)
+{
+ if (UNK_021C59E8.unk8 == NULL)
+ {
+ UNK_021C59E8.unk8 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C));
+ MI_CpuFill8(UNK_021C59E8.unk8, 0, sizeof(struct UnkStruct_0202E29C));
+
+ UNK_021C59E8.unk8->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC());
+ MI_CpuFill8(UNK_021C59E8.unk8->unkCA4, 0, FUN_0202CEEC());
+
+ UNK_021C59E8.unk8->unkCBC = AllocFromHeap(0xf, FUN_02023AC4());
+ MI_CpuFill8(UNK_021C59E8.unk8->unkCBC, 0, FUN_02023AC4());
+
+ UNK_021C59E8.unk8->unkCC0 = 0x333;
+ UNK_021C59E8.unk8->unkCB8 = player_data;
+
+ MailMsg_init(&UNK_021C59E8.unk8->unkCA8);
+ FUN_0202E500();
+ }
+}
+
+THUMB_FUNC BOOL FUN_0202E344()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2)
+{
+ int i = 0;
+ while (i < param2)
+ {
+ if (*param0 != *param1)
+ {
+ return FALSE;
+ }
+
+ i++;
+ param0++;
+ param1++;
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1)
+{
+#pragma unused(param1)
+ s32 r5 = FUN_02033534();
+ u8 r6 = FUN_0203354C();
+ struct UnkStruct_0202E29C_sub4 *r4 = &param0->unk50;
+
+ if (r5 != 0xe)
+ {
+ if (FUN_0202D8B0(r4->unk04) == 0 || FUN_0202D8B0(r5) == 0)
+ {
+ if (r4->unk30[0x24] != 0)
+ {
+ if (r4->unk04 == 0xa)
+ {
+ return;
+ }
+ }
+
+ if (r4->unk04 != r5)
+ {
+ return;
+ }
+ }
+ }
+
+ if (r5 != 0xe)
+ {
+ if (r4->unk05 != r6)
+ {
+ return;
+ }
+ }
+
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (!FUN_0202E358(UNK_021C59E8.unk8->unk054[i].unk04, param0->unk04, 6))
+ {
+ continue;
+ }
+
+ UNK_021C59E8.unk8->unkC84[i] = 0x96;
+
+ MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub));
+ return;
+ }
+
+ int i;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ break;
+ }
+ }
+
+ if (i < 0x10)
+ {
+ UNK_021C59E8.unk8->unkC84[i] = 0x96;
+ MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub));
+ UNK_021C59E8.unk8->unkCB4 = 1;
+ }
+}
+
+THUMB_FUNC void FUN_0202E470(u32 param0, u32 param1)
+{
+#pragma unused(param0)
+ if (param1 != 0)
+ {
+ OS_Terminate();
+ }
+
+ UNK_021C59E8.unk4 = 2;
+}
+
+THUMB_FUNC void FUN_0202E488()
+{
+ UNK_021C59E8.unk4 = 0;
+ FUN_02016454(4);
+}
+
+THUMB_FUNC void FUN_0202E49C()
+{
+ FUN_02016444(4);
+ UNK_021C59E8.unk4 = 1;
+ if (FUN_02090DB8(8, FUN_0202E470, 0) != 1)
+ {
+ OS_Terminate();
+ }
+}
+
+THUMB_FUNC BOOL FUN_0202E4C8()
+{
+ if (UNK_021C59E8.unk4 == 2)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202E4DC()
+{
+ if (UNK_021C59E8.unk4 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202E4F0()
+{
+ FUN_02090CC8(FUN_0202E488, 0);
+}
+
+THUMB_FUNC void FUN_0202E500()
+{
+ UNK_021C59E8.unk8->unkCB0 = 0;
+ FUN_0202CE64(UNK_021C59E8.unk8->unkCA4 + (32 - (u32)(UNK_021C59E8.unk8->unkCA4) % 32));
+
+ FUN_0202CB70(UNK_021C59E8.unk8->unkCC0);
+}
+
+THUMB_FUNC void FUN_0202E538()
+{
+ for (int i = 0; i < 0x10; i++)
+ {
+ UNK_021C59E8.unk8->unkC84[i] = 0;
+ }
+
+ MI_CpuFill8(UNK_021C59E8.unk8->unk054, 0, 0xC00);
+}
+
+THUMB_FUNC void FUN_0202E56C(u32 param0)
+{
+ UNK_021C59E8.unk8->unkDAD =
+ (UNK_021C59E8.unk8->unkDAD & ~8 | (u32)((u8)param0 << 0x1f) >> 0x1c);
+}
+
+THUMB_FUNC void FUN_0202E594()
+{
+ UNK_021C59E8.unk8->unkCB4 = 0;
+
+ UNK_021C59E8.unk8->unkDAD &= ~1;
+
+ UNK_021C59E8.unk8->unkDAD &= ~4;
+
+ UNK_021C59E8.unk8->unkDAA = 0;
+
+ UNK_021C59E8.unk8->unkDAD &= ~0x10;
+
+ UNK_021C59E8.unk8->unkDAC = 0;
+
+ UNK_021C59E8.unk8->unkDAB = 0;
+}
+
+THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2)
+{
+#pragma unused(param0)
+ FUN_0202E594();
+ FUN_0202E56C(param1);
+ FUN_0202D2F4();
+
+ if (UNK_021C59E8.unk8->unkDAB == 0)
+ {
+ FUN_0202D0A0(FUN_020303BC, 0xe);
+ UNK_021C59E8.unk8->unkDAB = 1;
+ }
+
+ UNK_021C59E8.unk8->unkDAD =
+ (UNK_021C59E8.unk8->unkDAD & ~0x20 | (u32)((u8)param2 << 0x1f) >> 0x1a);
+ if (FUN_0202CBD4() == 1 && FUN_0202CBFC() != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1)
+{
+#pragma unused(param0)
+ FUN_0202E594();
+ if (param1 != 0)
+ {
+ FUN_0202E538();
+ }
+
+ if (UNK_021C59E8.unk8->unkDAB == 0)
+ {
+ FUN_0202D0A0(FUN_02030238, 0xe);
+ UNK_021C59E8.unk8->unkDAB = 1;
+ }
+
+ if (FUN_0202CBD4() == 1)
+ {
+ struct UnkStruct_0202E29C_const st0 = UNK_020EEC40;
+
+ if (FUN_0202C570(FUN_0202E380, st0.unk0, 0) != 0)
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_0202E6F0()
+{
+ if (UNK_021C59E8.unk8 == NULL)
+ {
+ return 1;
+ }
+
+ switch (UNK_021C59E8.unk8->unkDAC)
+ {
+ case 0:
+ if (FUN_0202D21C() != 0)
+ {
+ FUN_0202C770();
+ UNK_021C59E8.unk8->unkDAC = 1;
+ }
+ else if (FUN_0202D1E4() == 0)
+ {
+ FUN_0202D100();
+ UNK_021C59E8.unk8->unkDAC = 2;
+ }
+ break;
+
+ case 1:
+ if (FUN_0202D1E4() == 0)
+ {
+ FUN_0202D100();
+ UNK_021C59E8.unk8->unkDAC = 2;
+ }
+ break;
+ case 2:
+ if (FUN_0202D1C8() != 0)
+ {
+ return 1;
+ }
+
+ if (FUN_0202D200() != 0)
+ {
+ UNK_021C59E8.unk8->unkDAC = 1;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_0202E784()
+{
+ if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkDAA == 0)
+ {
+ UNK_021C59E8.unk8->unkDAA = 1;
+ FUN_0202D100();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202E7B0(u32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ if (param0 != 0)
+ {
+ UNK_021C59E8.unk8->unkDAA = 2;
+ return;
+ }
+
+ UNK_021C59E8.unk8->unkDAA = 0;
+ FUN_0202E500();
+ }
+}
+
+THUMB_FUNC void FUN_0202E7D8()
+{
+ FreeToHeap(UNK_021C59E8.unk8->unkCBC);
+ FreeToHeap(UNK_021C59E8.unk8->unkCA4);
+ FreeToHeap(UNK_021C59E8.unk8);
+
+ UNK_021C59E8.unk8 = NULL;
+}
+
+THUMB_FUNC u32 FUN_0202E810()
+{
+ if (FUN_02030F40() == 0)
+ {
+ return 0;
+ }
+
+ u32 count = 0;
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] != 0)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+THUMB_FUNC s32 FUN_0202E844(u32 param0)
+{
+ int i;
+ u32 count = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (count == param0)
+ {
+ return i;
+ }
+
+ count++;
+ }
+
+ ErrorHandling();
+ return 0;
+}
+
+THUMB_FUNC u8 FUN_0202E878()
+{
+ return UNK_021C59E8.unk8->unkCB4;
+}
+
+THUMB_FUNC void FUN_0202E88C()
+{
+ UNK_021C59E8.unk8->unkCB4 = 0;
+}
+
+THUMB_FUNC s32 FUN_0202E8A0(s32 param0)
+{
+ if (UNK_021C59E8.unk8->unkC84[param0] != 0)
+ {
+ if (UNK_021C59E8.unk8->unk054[param0].unk50.unk06 == 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return UNK_021C59E8.unk8->unk054[param0].unk50.unk06;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC s32 FUN_0202E8D0(s32 param0)
+{
+ for (int i = 0xf; i >= 0; i--)
+ {
+ s32 ret = FUN_0202E8A0(i);
+ if (ret > param0 && 8 > ret)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+THUMB_FUNC s32 FUN_0202E8F4()
+{
+ if (FUN_0202E810() == 0)
+ {
+ return -1;
+ }
+
+ for (int i = 0xf; i >= 0; i--)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04))
+ {
+ s32 ret2 = FUN_0202E8A0(i);
+ if (ret2 > 1 && ret2 < 8)
+ {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+}
+
+THUMB_FUNC s32 FUN_0202E950()
+{
+ if (FUN_0202E810() == 0)
+ {
+ return -1;
+ }
+
+ for (int i = 0xf; i >= 0; i--)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04))
+ {
+
+ return i;
+ }
+ }
+
+ s32 ret = FUN_0202E8D0(1);
+ if (ret == -1)
+ {
+ return FUN_0202E8D0(0);
+ }
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_0202E9AC(u32 param0, struct PlayerData *player_data)
+{
+ int i;
+ u32 count = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (param0 == count)
+ {
+
+ PlayerProfile_Copy(FUN_0202EF84(i), player_data);
+ return;
+ }
+
+ count++;
+ }
+}
+
+THUMB_FUNC u32 FUN_0202E9E8(u32 param0)
+{
+ if (FUN_0202CBD4() == 2)
+ {
+ FUN_0202C770();
+ return 0;
+ }
+
+ if (FUN_0202CBD4() == 1)
+ {
+ s32 ret = FUN_02033534();
+ UNK_021C59E8.unk8->unkDA8 = (u8)UNK_021C59E8.unk8->unk054[param0].unk36;
+ if (FUN_0202D8B0(ret) != 0)
+ {
+ FUN_0202C4D8(1, UNK_021C59E8.unk8->unk054[param0].unk04, 0);
+ }
+ else
+ {
+ FUN_0202D034(1, &UNK_021C59E8.unk8->unk054[param0]);
+ }
+
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_0202EA54()
+{
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ continue;
+ }
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ UNK_021C59E8.unk8->unkC84[i]--;
+
+ if (UNK_021C59E8.unk8->unkC84[i] == 0)
+ {
+ UNK_021C59E8.unk8->unkCB4 = 1;
+ }
+ }
+}
+
+THUMB_FUNC void FUN_0202EA9C()
+{
+ s32 res = FUN_02033534();
+ struct PlayerData *player_data = FUN_0202EF70();
+
+ if (res != 0xf)
+ {
+ struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4;
+ GF_ASSERT((s32)FUN_02023AC4() <= 0x20);
+ GF_ASSERT(PlayerProfile_sizeof() == 0x20);
+
+ MI_CpuCopy8(player_data, &res->unk08.unk08, PlayerProfile_sizeof());
+
+ MI_CpuCopy8(UNK_021C59E8.unk8->unkCBC, res->unk08.unk28, FUN_02023AC4());
+
+ res->unk00 = PlayerProfile_GetTrainerID(player_data);
+ res->unk04 = (u8)FUN_02033534();
+ res->unk05 = FUN_0203354C();
+
+ MI_CpuCopy8(&UNK_021C59E8.unk8->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage));
+ res->unk08.unk4C = (u8)FUN_0202D358();
+ }
+ else
+ {
+ struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4;
+ res->unk00 = PlayerProfile_GetTrainerID(player_data);
+ res->unk04 = (u8)FUN_02033534();
+ res->unk05 = FUN_0203354C();
+
+ MI_CpuCopy8(&UNK_021C59E8.unk8->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3));
+ }
+
+ DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+ FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+}
+
+THUMB_FUNC void FUN_0202EB7C()
+{
+ struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59E8.unk8->unkCC4;
+ if (r4->unk06 != FUN_0202EDB8())
+ {
+ r4->unk06 = (u8)FUN_0202EDB8();
+ DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+ FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+
+ FUN_0202D240(&UNK_021C59E8.unk8->unkCC4,
+ sizeof(struct UnkStruct_0202E29C_sub2),
+ UNK_021C59E8.unk8->unkCC0,
+ UNK_021C59E8.unk0);
+ }
+}
+
+THUMB_FUNC void FUN_0202EBD0(u16 param0)
+{
+ u32 r5 = FUN_0202CBD4();
+ FUN_0202DF54();
+ FUN_0202EB7C();
+
+ if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 &&
+ ((u32)(UNK_021C59E8.unk8->unkDAD << 0x1d) >> 0x1f) != 0)
+ {
+ UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1;
+ }
+
+ if (UNK_021C59E8.unk8->unkDA6 == 0xFFFF)
+ {
+ UNK_021C59E8.unk8->unkDA6 = param0;
+ }
+
+ if (((u32)(UNK_021C59E8.unk8->unkDAD << 0x1e) >> 0x1f) != 0 &&
+ UNK_021C59E8.unk8->unkDA6 > param0)
+ {
+ UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1;
+ }
+
+ if (FUN_0202CBE8() == 25)
+ {
+ FUN_020335D0(0);
+ }
+
+ switch (r5)
+ {
+ case 0:
+ if (UNK_021C59E8.unk8->unkDAA == 1)
+ {
+ FUN_0202E7D8();
+ return;
+ }
+ else if (UNK_021C59E8.unk8->unkDAA == 2)
+ {
+ UNK_021C59E8.unk8->unkDAA = 3;
+ }
+ break;
+
+ case 1:
+ if (UNK_021C59E8.unk8->unkDAA == 1 && FUN_0202D178() != 0)
+ {
+ return;
+ }
+
+ if (UNK_021C59E8.unk8->unkDAA == 2 && FUN_0202D178() != 0)
+ {
+ return;
+ }
+
+ break;
+
+ case 8:
+ case 9:
+
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1;
+ return;
+ }
+ break;
+
+ case 7:
+ u16 r0 = FUN_0202CDA4();
+ if (UNK_021C59E8.unk8->unkDA9 == 0)
+ {
+ UNK_021C59E8.unk8->unkDA4 = r0;
+ UNK_021C59E8.unk8->unkDA9 = 5;
+ }
+ else
+ {
+ UNK_021C59E8.unk8->unkDA9--;
+ }
+
+ u16 r5 = UNK_021C59E8.unk8->unkDA4;
+ if ((u32)(UNK_021C59E8.unk8->unkDAD << 0x1c) >> 0x1f != 0)
+ {
+ UNK_021C59E8.unk0++;
+ }
+
+ FUN_0202EA9C();
+
+ FUN_0202CF84(0,
+ UNK_021C59E8.unk0,
+ r5,
+ FUN_0202D858((u16)FUN_02033534()),
+ FUN_0202EEE8((u16)FUN_02033534()),
+ (u32)(UNK_021C59E8.unk8->unkDAD << 0x1a) >> 0x1f);
+
+ UNK_021C59E8.unk8->unkDA8 = (u8)r5;
+
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0202ED70(u16 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ FUN_0202EBD0(param0);
+ }
+}
+
+THUMB_FUNC u32 FUN_0202ED84(u16 param0)
+{
+ if (UNK_021C59E8.unk8 == NULL)
+ {
+ return 0;
+ }
+
+ if (FUN_0202CBD4() != 4)
+ {
+ return 0;
+ }
+
+ if ((FUN_0202CB8C() & (1 << param0)) == 0)
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_0202EDB8()
+{
+ u32 count = 0;
+ for (int i = 0; i < 8; i++)
+ {
+ if (FUN_0202ED84((u16)i) != 0)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+THUMB_FUNC BOOL FUN_0202EDD8()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ if (UNK_021C59E8.unk8->unkDAA == 3)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202EDF8()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_0202EE0C()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ return FUN_0202D1C8();
+ }
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_0202EE24()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ return FUN_0202CB8C() & 0xFFFE;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_0202EE44()
+{
+ if (FUN_0202EE60() && FUN_0202CBE8() == 0x14)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202EE60()
+{
+ if (UNK_021C59E8.unk8 != NULL && (u32)(UNK_021C59E8.unk8->unkDAD << 0x1f) >> 0x1f != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202EE84(u32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ UNK_021C59E8.unk8->unkDAD =
+ (UNK_021C59E8.unk8->unkDAD & ~4) | (u32)((u8)param0 << 0x1f) >> 0x1d;
+ }
+}
+
+THUMB_FUNC void FUN_0202EEB0(u32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ UNK_021C59E8.unk8->unkDAD =
+ (UNK_021C59E8.unk8->unkDAD & ~2) | (u32)((u8)param0 << 0x1f) >> 0x1e;
+
+ UNK_021C59E8.unk8->unkDA6 = 0xFFFF;
+ }
+}
+
+THUMB_FUNC u32 FUN_0202EEE8(u16 param0)
+{
+ u16 r4 = WM_GetDispersionBeaconPeriod();
+ GF_ASSERT(param0 < 0x1a);
+
+ if (param0 == 0xa)
+ {
+ return (u32)(r4 << 0xe) >> 0x10;
+ }
+
+ if (param0 == 9 || param0 == 0xd)
+ {
+ return (u32)(r4 << 0xe) >> 0x10;
+ }
+
+ return r4;
+}
+
+THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ if (UNK_021C59E8.unk8->unkC84[param0] != 0)
+ {
+ return &UNK_021C59E8.unk8->unk054[param0];
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ if (UNK_021C59E8.unk8->unkC84[param0] != 0)
+ {
+ return &UNK_021C59E8.unk8->unk054[param0].unk50;
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC struct PlayerData *FUN_0202EF70()
+{
+ return UNK_021C59E8.unk8->unkCB8;
+}
+
+THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0)
+{
+ if (UNK_021C59E8.unk8->unkC84[param0] == 0)
+ {
+ return NULL;
+ }
+
+ struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50;
+
+ return &r0->unk10;
+}
+
+THUMB_FUNC void FUN_0202EFAC(u8 *param0, s32 param1)
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ GF_ASSERT(param1 < 8);
+
+ MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkC54[param1], 6);
+ }
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC BOOL FUN_0202EFE4(u8 *param0)
+{
+
+ for (int i = 0; i < 8; i++)
+ {
+ if (UNK_021C59E8.unk8->unkC54[i][0] != param0[0])
+ {
+ continue;
+ }
+
+ if (UNK_021C59E8.unk8->unkC54[i][1] != param0[1])
+ {
+ continue;
+ }
+ if (UNK_021C59E8.unk8->unkC54[i][2] != param0[2])
+ {
+ continue;
+ }
+ if (UNK_021C59E8.unk8->unkC54[i][3] != param0[3])
+ {
+ continue;
+ }
+ if (UNK_021C59E8.unk8->unkC54[i][4] != param0[4])
+ {
+ continue;
+ }
+ if (UNK_021C59E8.unk8->unkC54[i][5] != param0[5])
+ {
+ continue;
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+#else
+THUMB_FUNC asm BOOL FUN_0202EFE4(u8 *param0)
+{
+ // clang-format off
+ push {r4-r5}
+ ldr r2, =UNK_021C59E8
+ mov r1, #0x0
+ ldr r3, [r2, #0x8]
+ ldr r2, =0x00000C54
+ add r2, r3, r2
+ ldrb r3, [r0, #0x0]
+_0202EFF2:
+ ldrb r4, [r2, #0x0]
+ cmp r4, r3
+ bne _0202F026
+ ldrb r5, [r2, #0x1]
+ ldrb r4, [r0, #0x1]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x2]
+ ldrb r4, [r0, #0x2]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x3]
+ ldrb r4, [r0, #0x3]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x4]
+ ldrb r4, [r0, #0x4]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x5]
+ ldrb r4, [r0, #0x5]
+ cmp r5, r4
+ bne _0202F026
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_0202F026:
+ add r1, r1, #0x1
+ add r2, r2, #0x6
+ cmp r1, #0x8
+ blt _0202EFF2
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ // clang-format on
+}
+#endif
+
+THUMB_FUNC u32 FUN_0202F03C()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ return (u32)(UNK_021C59E8.unk8->unkDAD << 0x1b) >> 0x1f;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_0202F05C()
+{
+ if (UNK_021C59E8.unk8 != NULL)
+ {
+ UNK_021C59E8.unk8->unkDAD |= 0x10;
+ }
+}
+
+THUMB_FUNC void FUN_0202F078(struct MailMessage *mail_message)
+{
+ MI_CpuCopy8(mail_message, &UNK_021C59E8.unk8->unkCA8, sizeof(struct MailMessage));
+}
+
+THUMB_FUNC void FUN_0202F094(void *param0)
+{
+ MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkCBC, FUN_02023AC4());
+}
+
+THUMB_FUNC void FUN_0202F0B8()
+{
+ FUN_0202EA9C();
+ FUN_0202D240(&UNK_021C59E8.unk8->unkCC4,
+ sizeof(struct UnkStruct_0202E29C_sub2),
+ UNK_021C59E8.unk8->unkCC0,
+ UNK_021C59E8.unk0);
+}
+
+THUMB_FUNC u32 FUN_0202F0DC(u8 param0)
+{
+ int i;
+ u32 r5 = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ struct UnkStruct_0202E29C_sub4 *res = FUN_0202EF44(i);
+ if (res != 0 && res->unk04 == param0)
+ {
+ r5 += res->unk06;
+ }
+ }
+
+ return r5;
+}
+
+THUMB_FUNC BOOL FUN_0202F104()
+{
+ return FUN_0202D2D0();
+}
+
+THUMB_FUNC void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0)
+{
+ MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk000, sizeof(struct UnkStruct_0202E29C_sub3));
+ FUN_0202F0B8();
+}
+
+THUMB_FUNC u8 *FUN_0202F124(u32 param0)
+{
+ if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkC84[param0] != 0)
+ {
+ struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50;
+ return r0->unk08;
+ }
+
+ return NULL;
+}
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index b8a42687..d52857c1 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -1,6 +1,8 @@
#include "unk_0202F150.h"
#include "unk_02031480.h"
#include "unk_02031734.h"
+#include "unk_0202E29C.h"
+
struct
{
@@ -15,20 +17,11 @@ extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *
extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2);
extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2);
extern void FUN_0202D804(u8 *param0);
-extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2);
extern void FUN_0202D330(void (*param0)(int));
-extern u32 FUN_0202E66C(u32 param0, u32 param1);
extern void MOD04_021D83C0();
-extern u32 FUN_0202E784();
extern void FUN_0202DBA4();
extern void FUN_0200CAB4(u32 param0);
extern void FUN_0202D824(u8 *param0);
-extern u32 FUN_0202E9E8(u32 param0);
-extern u32 FUN_0202F03C();
-extern u32 FUN_0202EE24();
-extern void FUN_0202EBD0(u16 param0);
-extern void FUN_0202ED70(u32 param0);
-extern void FUN_0202E538();
extern u32 MOD04_021D78FC(void *param0, u32 param1);
extern u32 FUN_0202CBD4();
extern void FUN_0202D4BC(void *param0);
@@ -49,10 +42,7 @@ extern s16 FUN_0202D9A0(u32 param0);
extern u32 FUN_0202DA04(u32 param0);
extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2);
extern u32 MOD04_021D8018();
-extern u32 FUN_0202EDF8();
extern u16 FUN_0202D19C();
-extern u32 FUN_0202EE60();
-extern void FUN_0202F05C();
extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *);
extern void FUN_0202D830(u8 *param0, u32 param1);
extern u32 MOD04_021D8624();
@@ -472,7 +462,7 @@ THUMB_FUNC void FUN_0202FA5C()
}
else
{
- if (FUN_0202E784() != 0)
+ if (FUN_0202E784())
{
r4 = 1;
}
@@ -1044,7 +1034,7 @@ THUMB_FUNC void FUN_02030074()
}
}
-THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2)
+THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2)
{
if (UNK_021C59F4.unk04->unk66F[0] != 0)
{
@@ -1143,7 +1133,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2)
FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF);
}
-THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2)
+THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2)
{
if (UNK_021C59F4.unk04->unk66F[param0] != 0)
{
@@ -1156,7 +1146,7 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2)
FUN_020303F4(param0, param1, param2);
}
-THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2)
+THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2)
{
#pragma unused(param2)
UNK_021C59F4.unk04->unk638[param0]--;
@@ -2033,11 +2023,11 @@ THUMB_FUNC s32 FUN_02030F20()
return r4;
}
-THUMB_FUNC u32 FUN_02030F40()
+THUMB_FUNC BOOL FUN_02030F40()
{
if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13)
{
- return 1;
+ return TRUE;
}
return FUN_0202EDF8();
@@ -2221,17 +2211,17 @@ THUMB_FUNC u32 FUN_020311E8()
return FUN_0202EE24();
}
-THUMB_FUNC u32 FUN_020311F0()
+THUMB_FUNC BOOL FUN_020311F0()
{
if (FUN_02031280() != 0)
{
- return 0;
+ return FALSE;
}
if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0)
{
FUN_020334E8(1, 1);
- return 1;
+ return TRUE;
}
return FUN_0202EE60();
@@ -2469,4 +2459,4 @@ THUMB_FUNC void FUN_02031468()
{
UNK_021C59F4.unk04->unk68A = 1;
}
-} \ No newline at end of file
+}
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
index 3222232c..65ed3bc4 100644
--- a/arm9/src/unk_02031734.c
+++ b/arm9/src/unk_02031734.c
@@ -5,6 +5,8 @@
#include "heap.h"
#include "player_data.h"
#include "unk_0202F150.h"
+#include "unk_0202E29C.h"
+
const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } };
@@ -24,33 +26,19 @@ char UNK_02105D64[] = " FULL";
struct UnkStruct_02031734 *UNK_021C5A00;
-extern void FUN_0202E49C();
extern void FUN_0202D8D0(u32 param0, u32 param1, u32 param2);
extern void FUN_02033E74();
extern void FUN_0202D918();
extern void FUN_02033ED0();
-extern void FUN_0202E4F0();
extern void FUN_0202D298();
extern void FUN_0202D344(u32 param0);
extern void FUN_0202D1B0(u8 param0);
extern void FUN_0202D36C(u32 param0);
extern u32 MOD04_021DDB08();
extern void FUN_02033EEC(u32 param0);
-extern u32 FUN_0202EDF8();
extern u32 WM_GetLinkLevel();
-extern u32 FUN_0202E4C8();
-extern void FUN_0202E29C(struct PlayerData *player_data);
extern void FUN_0202DB14(struct SaveBlock2 *sav2, u32 param1);
extern s64 _ll_mul(s64, s64);
-extern u32 FUN_0202EE0C();
-extern void FUN_0202EA54();
-extern s32 FUN_0202E8F4();
-extern s32 FUN_0202E950();
-extern u32 FUN_0202E8A0(u8 param0);
-extern u32 FUN_0202E6F0();
-extern void FUN_0202EE84(u8 param0);
-extern void FUN_0202E7B0(u32 param0);
-extern u32 FUN_0202F104();
extern void FUN_0202DBE0();
extern void FUN_0202DDE8();
extern void FUN_0202D308(void (*param0)(u32, u32));
@@ -58,7 +46,7 @@ extern void MOD04_021D83C0();
extern s32 MOD04_021D7F8C();
extern s32 MOD04_021D7800(u32 param0);
extern u32 MOD04_021D8494(s32 param0);
-extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u16), void (*param1)(u32, void *, u32));
+extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u32), void (*param1)(u32, u8 *, u32));
extern u32 MOD04_021D82BC(u8 param0);
extern void MOD04_021D836C();
extern u32 MOD04_021DD718(u32 *param0, u32 *param1);
@@ -66,11 +54,8 @@ extern void MOD04_021DD6F0();
extern s32 MOD04_021D76AC();
extern MOD05_021D74E0(struct SaveBlock2 *sav2, u32 param1);
extern void MOD04_021D83A8(void (*param0)(s32));
-extern void FUN_0202EEB0(u8 param0);
extern void FUN_02033F70(int, int, int);
extern void FUN_0200541C();
-extern u32 FUN_0202EDD8();
-extern u32 FUN_0202E344();
THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1)
{
@@ -451,7 +436,7 @@ THUMB_FUNC void FUN_02031CDC()
return;
}
- if (FUN_0202EDF8() != 0)
+ if (FUN_0202EDF8())
{
FUN_02033EEC(3 - WM_GetLinkLevel());
}
@@ -471,7 +456,7 @@ THUMB_FUNC void FUN_02031D30()
return;
}
- if (FUN_0202E4C8() == 0)
+ if (!FUN_0202E4C8())
{
return;
}
@@ -726,7 +711,7 @@ THUMB_FUNC void FUN_02032178()
THUMB_FUNC void FUN_02032194()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E7B0(0);
FUN_0202FC60();
@@ -744,7 +729,7 @@ THUMB_FUNC void FUN_020321B8()
THUMB_FUNC void FUN_020321D0()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30);
@@ -774,7 +759,7 @@ THUMB_FUNC void FUN_02032234()
THUMB_FUNC void FUN_0203224C()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30);
@@ -925,7 +910,7 @@ THUMB_FUNC void FUN_02032440()
THUMB_FUNC void FUN_02032478()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202D1B0(UNK_021C5A00->unk3C);
@@ -978,7 +963,7 @@ THUMB_FUNC void FUN_02032510()
THUMB_FUNC void FUN_02032578()
{
- if (FUN_0202F104() == 0)
+ if (!FUN_0202F104())
{
if (FUN_020311E8() != 0)
{
@@ -1394,7 +1379,7 @@ THUMB_FUNC void FUN_02032B84()
THUMB_FUNC void FUN_02032B8C()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, 0);
@@ -1479,7 +1464,7 @@ THUMB_FUNC void FUN_02032C6C(u32 param0, u32 param1)
THUMB_FUNC void FUN_02032CF4()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, 0);
@@ -1545,7 +1530,7 @@ THUMB_FUNC BOOL FUN_02032DAC()
THUMB_FUNC void FUN_02032E00()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, 0);
@@ -1559,7 +1544,7 @@ THUMB_FUNC void FUN_02032E00()
THUMB_FUNC void FUN_02032E48()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_0202E29C(UNK_021C5A00->unk2C);
FUN_0202DB14(UNK_021C5A00->unk28, 0);
@@ -1981,7 +1966,7 @@ THUMB_FUNC void FUN_020333F0()
THUMB_FUNC void FUN_0203341C()
{
- if (FUN_0202E4C8() != 0)
+ if (FUN_0202E4C8())
{
FUN_02016828(3, 0x31, 0x31000);
if (FUN_0202F918(1, 1, 0x200, 1) != 0)
@@ -2164,12 +2149,12 @@ THUMB_FUNC void FUN_020335F4()
THUMB_FUNC BOOL FUN_02033678()
{
- if (FUN_0202EDD8() != 0 || !FUN_02031810())
+ if (FUN_0202EDD8() || !FUN_02031810())
{
return TRUE;
}
- if (FUN_0202E344() == 0)
+ if (!FUN_0202E344())
{
return TRUE;
}
diff --git a/include/unk_0202E29C.h b/include/unk_0202E29C.h
new file mode 100644
index 00000000..d4316336
--- /dev/null
+++ b/include/unk_0202E29C.h
@@ -0,0 +1,137 @@
+#ifndef POKEDIAMOND_UNK_0202E29C_H
+#define POKEDIAMOND_UNK_0202E29C_H
+
+#include "global.h"
+#include "mail_message.h"
+#include "player_data.h"
+
+struct UnkStruct_0202E29C_sub4
+{
+ u32 unk00;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ u8 unk07;
+ u8 unk08[8];
+ struct PlayerData unk10;
+ u8 unk30[0x40];
+};
+
+struct UnkStruct_0202E29C_sub
+{
+ u32 unk00;
+ u8 unk04[6];
+ u8 unk0A[0x2C];
+ u16 unk36;
+ u8 unk38[0x18];
+ struct UnkStruct_0202E29C_sub4 unk50;
+};
+
+struct UnkStruct_0202E29C_sub3
+{
+ struct MailMessage unk00;
+ struct PlayerData unk08;
+ u8 unk28[0x20];
+ u8 unk48[0x4];
+ u8 unk4C;
+ u8 unk4D[7];
+};
+
+struct UnkStruct_0202E29C_sub2
+{
+ u32 unk00;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ struct UnkStruct_0202E29C_sub3 unk08;
+};
+
+struct UnkStruct_0202E29C
+{
+ struct UnkStruct_0202E29C_sub3 unk000;
+ struct UnkStruct_0202E29C_sub unk054[16];
+ u8 unkC54[8][6];
+ u16 unkC84[16];
+ void *unkCA4;
+ struct MailMessage unkCA8;
+ u32 unkCB0;
+ u8 unkCB4;
+ struct PlayerData *unkCB8;
+ void *unkCBC;
+ u32 unkCC0;
+ struct UnkStruct_0202E29C_sub2 unkCC4;
+ u8 unkD20[0x84];
+ u16 unkDA4;
+ u16 unkDA6;
+ u8 unkDA8;
+ u8 unkDA9;
+ u8 unkDAA;
+ u8 unkDAB;
+ u8 unkDAC;
+ u8 unkDAD;
+ u8 unkDAE[0x2];
+};
+
+void FUN_0202E29C(struct PlayerData *player_data);
+BOOL FUN_0202E344();
+BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2);
+void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1);
+void FUN_0202E470(u32 param0, u32 param1);
+void FUN_0202E488();
+void FUN_0202E49C();
+BOOL FUN_0202E4C8();
+BOOL FUN_0202E4DC();
+void FUN_0202E4F0();
+void FUN_0202E500();
+void FUN_0202E538();
+void FUN_0202E56C(u32 param0);
+void FUN_0202E594();
+BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2);
+u32 FUN_0202E66C(u32 param0, u32 param1);
+u32 FUN_0202E6F0();
+BOOL FUN_0202E784();
+void FUN_0202E7B0(u32 param0);
+void FUN_0202E7D8();
+u32 FUN_0202E810();
+s32 FUN_0202E844(u32 param0);
+u8 FUN_0202E878();
+void FUN_0202E88C();
+s32 FUN_0202E8A0(s32 param0);
+s32 FUN_0202E8D0(s32 param0);
+s32 FUN_0202E8F4();
+s32 FUN_0202E950();
+void FUN_0202E9AC(u32 param0, struct PlayerData *player_data);
+u32 FUN_0202E9E8(u32 param0);
+void FUN_0202EA54();
+void FUN_0202EA9C();
+void FUN_0202EB7C();
+void FUN_0202EBD0(u16 param0);
+void FUN_0202ED70(u16 param0);
+u32 FUN_0202ED84(u16 param0);
+u32 FUN_0202EDB8();
+BOOL FUN_0202EDD8();
+BOOL FUN_0202EDF8();
+u32 FUN_0202EE0C();
+u32 FUN_0202EE24();
+BOOL FUN_0202EE44();
+BOOL FUN_0202EE60();
+void FUN_0202EE84(u32 param0);
+void FUN_0202EEB0(u32 param0);
+u32 FUN_0202EEE8(u16 param0);
+struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0);
+struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0);
+struct PlayerData *FUN_0202EF70();
+struct PlayerData *FUN_0202EF84(int param0);
+void FUN_0202EFAC(u8 *param0, s32 param1);
+BOOL FUN_0202EFE4(u8 *param0);
+u32 FUN_0202F03C();
+void FUN_0202F05C();
+void FUN_0202F078(struct MailMessage *mail_message);
+void FUN_0202F094(void *param0);
+void FUN_0202F0B8();
+u32 FUN_0202F0DC(u8 param0);
+BOOL FUN_0202F104();
+void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0);
+u8 *FUN_0202F124(u32 param0);
+
+#endif // POKEDIAMOND_UNK_0202E29C_H
diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h
index 49c58a52..ea0846c6 100644
--- a/include/unk_0202F150.h
+++ b/include/unk_0202F150.h
@@ -113,10 +113,10 @@ THUMB_FUNC void FUN_0202FCCC();
THUMB_FUNC u32 FUN_0202FE2C(int param0);
THUMB_FUNC void FUN_0202FEEC();
THUMB_FUNC void FUN_02030074();
-THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2);
+THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2);
THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2);
-THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2);
+THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2);
+THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2);
THUMB_FUNC void FUN_020304D4(u32 param0);
THUMB_FUNC void FUN_020304F0(u32 param0);
THUMB_FUNC void FUN_0203050C();
@@ -146,7 +146,7 @@ THUMB_FUNC void FUN_02030DA4();
THUMB_FUNC void FUN_02030DFC();
THUMB_FUNC u32 FUN_02030E7C(u16 param0);
THUMB_FUNC s32 FUN_02030F20();
-THUMB_FUNC u32 FUN_02030F40();
+THUMB_FUNC BOOL FUN_02030F40();
THUMB_FUNC void FUN_02030F60(u8 param0);
THUMB_FUNC u8 FUN_02030F74(u32 param0);
THUMB_FUNC u32 FUN_02030F88(u32 param0);
@@ -163,7 +163,7 @@ THUMB_FUNC u16 FUN_02031190();
THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1);
THUMB_FUNC u32 FUN_020311DC(u32 param0);
THUMB_FUNC u32 FUN_020311E8();
-THUMB_FUNC u32 FUN_020311F0();
+THUMB_FUNC BOOL FUN_020311F0();
THUMB_FUNC int FUN_02031228(u16 param0);
THUMB_FUNC int FUN_02031248(u32 param0);
THUMB_FUNC int FUN_02031258(u32 param0);