diff --git a/asm/include/unk_02037C94.inc b/asm/include/unk_02037C94.inc deleted file mode 100644 index b72de6596..000000000 --- a/asm/include/unk_02037C94.inc +++ /dev/null @@ -1,244 +0,0 @@ -#include -#pragma once -.public Sound_Stop -.public sub_0201A728 -.public sub_0201A738 -.public sub_0201A79C -.public Heap_CreateAtEnd -.public Heap_Destroy -.public Heap_Alloc -.public Heap_Free -.public GF_AssertFail -.public String_New -.public String_Delete -.public CopyU16ArrayToString -.public Save_PrepareForAsyncWrite -.public Save_WriteFileAsync -.public Save_Cancel -.public Save_PlayerData_GetProfile -.public PlayerProfile_GetPlayerName_NewString -.public PlayerProfile_GetTrainerID -.public PlayerProfile_GetTrainerGender -.public PlayerProfile_GetAvatar -.public PlayerProfile_GetLanguage -.public sub_0202C08C -.public sub_0202C090 -.public sub_0202C190 -.public sub_0202C23C -.public sub_0202C270 -.public sub_0202C2B4 -.public sub_0202C6F4 -.public WiFiHistory_GetLocationSeenState -.public WiFiHistory_SetLocationSeenState -.public sub_02033908 -.public sub_02033974 -.public sub_02033A0C -.public sub_02033A7C -.public sub_02033AA4 -.public sub_02033ACC -.public sub_02033FC4 -.public sub_02034044 -.public sub_0203410C -.public sub_02034154 -.public sub_02034354 -.public sub_020343E4 -.public sub_02034434 -.public sub_02034638 -.public sub_02034818 -.public sub_0203484C -.public sub_02034884 -.public sub_020348A8 -.public sub_020348CC -.public sub_02034A20 -.public sub_02034B0C -.public sub_02034BE4 -.public sub_02034D8C -.public sub_02034DB8 -.public sub_02034DE0 -.public sub_02034FE8 -.public sub_020350A8 -.public sub_020351AC -.public sub_0203528C -.public sub_02035630 -.public sub_02035650 -.public sub_02035664 -.public sub_020356C0 -.public sub_020356EC -.public sub_020358B0 -.public sub_02035ED8 -.public sub_02035F14 -.public sub_02035FD8 -.public sub_02035FE4 -.public sub_02036024 -.public sub_020360E4 -.public sub_0203622C -.public sub_0203624C -.public sub_02036274 -.public sub_020367A8 -.public sub_02036904 -.public sub_020369CC -.public sub_02037184 -.public sub_020373B4 -.public sub_02037454 -.public sub_02037474 -.public sub_020374E4 -.public sub_0203769C -.public sub_020376E0 -.public sub_020376F8 -.public sub_02037700 -.public sub_0203778C -.public sub_0203786C -.public sub_020378E4 -.public sub_02037988 -.public sub_02037AC0 -.public sub_02037B38 -.public sub_02037C94 -.public sub_02037D78 -.public sub_02037D8C -.public sub_02037DD4 -.public sub_02037E1C -.public sub_02037E38 -.public sub_02037E9C -.public sub_02037EC0 -.public sub_02037EC8 -.public sub_02037F18 -.public sub_02037F64 -.public sub_02037F94 -.public sub_02037FCC -.public sub_02037FF0 -.public sub_02038070 -.public sub_02038094 -.public sub_020380B0 -.public sub_020380CC -.public sub_020380F4 -.public sub_02038104 -.public sub_02038114 -.public sub_02038148 -.public sub_0203817C -.public sub_020388E0 -.public sub_02038918 -.public sub_0203893C -.public sub_0203894C -.public sub_0203897C -.public sub_0203898C -.public sub_02038B3C -.public sub_02038B9C -.public sub_02038C18 -.public sub_02038C1C -.public sub_02038D28 -.public sub_02038D64 -.public sub_02038D80 -.public sub_02038D90 -.public sub_02038F74 -.public sub_02039080 -.public sub_020390C4 -.public sub_02039220 -.public sub_02039264 -.public sub_02039274 -.public sub_020392A0 -.public sub_020392D8 -.public sub_02039330 -.public sub_02039358 -.public sub_02039378 -.public sub_020393B4 -.public sub_020393C8 -.public sub_02039418 -.public sub_0203946C -.public sub_020394A0 -.public sub_020394F4 -.public sub_02039528 -.public sub_0203957C -.public sub_020396FC -.public sub_0203976C -.public sub_020397C8 -.public sub_020397E4 -.public sub_020397FC -.public sub_0203981C -.public sub_0203986C -.public sub_0203988C -.public sub_020398C8 -.public sub_020398D4 -.public sub_02039918 -.public sub_0203993C -.public sub_02039954 -.public sub_0203996C -.public sub_02039980 -.public sub_02039998 -.public sub_020399B8 -.public sub_020399DC -.public sub_020399EC -.public sub_020399FC -.public sub_02039A00 -.public sub_02039AA4 -.public sub_02039AD8 -.public sub_02039AF8 -.public sub_02039B18 -.public sub_02039B38 -.public sub_02039B58 -.public sub_02039B7C -.public sub_02039E9C -.public sub_02039EAC -.public sub_02039EB4 -.public sub_02039F68 -.public sub_02039FB8 -.public sub_02039FD8 -.public sub_02039FFC -.public sub_0203A01C -.public sub_0203A040 -.public sub_0203A05C -.public sub_0203A084 -.public sub_0203A128 -.public sub_0203A1C4 -.public sub_0203A280 -.public sub_0203A378 -.public sub_0203A880 -.public sub_0203A914 -.public sub_0203A930 -.public ShowCommunicationError -.public LoadDwcOverlay -.public UnloadDwcOverlay -.public LoadOVY38 -.public UnloadOVY38 -.public DWC_Init -.public DWC_CheckFriendKey -.public DWC_IsValidFriendData -.public DWC_CreateUserData -.public DWC_CheckUserData -.public DWC_CheckHasProfile -.public DWC_CheckValidConsole -.public DWC_ClearDirtyFlag -.public DWC_GetGsProfileId -.public DWC_CreateFriendKeyToken -.public DWC_CreateExchangeToken -.public DWC_IsEqualFriendData -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public WM_GetLinkLevel -.public _ll_mul -.public gSystem -.public ov00_021E5900 -.public ov00_021E5B6C -.public ov00_021E5C84 -.public ov00_021E5E54 -.public ov00_021E6690 -.public ov00_021E6BE4 -.public ov00_021E6C68 -.public ov00_021E6CA4 -.public ov00_021E6CB8 -.public ov00_021E6D7C -.public ov00_021E70B8 -.public ov00_021EC11C -.public ov00_021EC210 -.public ov00_021EC9D4 -.public ov45_0222E6C8 -.public ov45_0222E804 -.public ov45_0222E8F4 -.public ov45_0222E91C -.public ov45_0222E944 -.public ov45_0222F028 -.public ov45_0222F154 -.public ov45_0222F254 -.public ov45_0222F274 -.public ov45_0222F350 -.public ov45_0222F464 -.public ov45_0222F70C diff --git a/asm/unk_02037C94.s b/asm/unk_02037C94.s deleted file mode 100644 index 6985fec32..000000000 --- a/asm/unk_02037C94.s +++ /dev/null @@ -1,5233 +0,0 @@ - .include "asm/macros.inc" - .include "unk_02037C94.inc" - .include "global.inc" - - .bss - -_021D4150: - .space 0x4 - - .rodata - -_020F6A90: - .word sub_0203827C - .word sub_02038398 - .word 0 - - .data - - .balign 4, 0 -_0210F904: - .asciz " GAME" - .balign 4, 0 -_0210F90C: - .asciz "FREAK" - .balign 4, 0 -_0210F914: - .asciz " FULL" - - .text - - thumb_func_start sub_02037C94 -sub_02037C94: ; 0x02037C94 - mov r0, #0x46 - bx lr - thumb_func_end sub_02037C94 - - thumb_func_start sub_02037C98 -sub_02037C98: ; 0x02037C98 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _02037D28 ; =_021D4150 - add r4, r1, #0 - ldr r0, [r0] - cmp r0, #0 - bne _02037D24 - cmp r5, #0 - bne _02037CAE - bl GF_AssertFail -_02037CAE: - bl sub_02034D8C - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02037D28 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02037D28 ; =_021D4150 - mov r2, #0x32 - ldr r1, [r0] - str r2, [r1, #0x44] - ldr r1, [r0] - mov r2, #1 - add r1, #0x52 - strb r2, [r1] - ldr r0, [r0] - str r5, [r0, #0x28] - add r0, r5, #0 - bl Save_PlayerData_GetProfile - ldr r1, _02037D28 ; =_021D4150 - ldr r2, [r1] - str r0, [r2, #0x2c] - ldr r0, [r1] - mov r2, #2 - add r0, #0x4a - strb r2, [r0] - ldr r0, [r1] - mov r2, #0 - add r0, #0x4c - strb r2, [r0] - ldr r0, [r1] - add r0, #0x57 - strb r2, [r0] - ldr r0, [r1] - add r0, #0x4e - strb r4, [r0] - ldr r0, [r1] - add r0, #0xc - bl sub_0203778C - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl sub_0203410C - cmp r4, #9 - beq _02037D24 - cmp r4, #0x11 - beq _02037D24 - cmp r4, #0xf - beq _02037D24 - bl sub_0203A880 -_02037D24: - pop {r3, r4, r5, pc} - nop -_02037D28: .word _021D4150 - thumb_func_end sub_02037C98 - - thumb_func_start sub_02037D2C -sub_02037D2C: ; 0x02037D2C - push {r3, lr} - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02037D72 - bl sub_02034154 - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _02037D48 - bl Heap_Free -_02037D48: - bl sub_02039998 - cmp r0, #0 - beq _02037D56 - mov r0, #0x30 - bl Heap_Destroy -_02037D56: - bl sub_0203A914 - bl sub_02034DE0 - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - mov r0, #0xf - bl Heap_Destroy - ldr r0, _02037D74 ; =_021D4150 - mov r1, #0 - str r1, [r0] -_02037D72: - pop {r3, pc} - .balign 4, 0 -_02037D74: .word _021D4150 - thumb_func_end sub_02037D2C - - thumb_func_start sub_02037D78 -sub_02037D78: ; 0x02037D78 - ldr r0, _02037D88 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02037D84 - mov r0, #1 - bx lr -_02037D84: - mov r0, #0 - bx lr - .balign 4, 0 -_02037D88: .word _021D4150 - thumb_func_end sub_02037D78 - - thumb_func_start sub_02037D8C -sub_02037D8C: ; 0x02037D8C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl sub_02037474 - cmp r0, #0 - bne _02037DC4 - ldr r2, _02037DC8 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r6, #0 - add r1, r7, #0 - bl sub_02037C98 - ldr r0, _02037DCC ; =_021D4150 - ldr r1, [r0] - add r1, #0x4f - strb r5, [r1] - ldr r0, [r0] - mov r1, #0 - str r4, [r0, #0x30] - ldr r0, _02037DD0 ; =sub_02038218 - bl sub_020381C0 -_02037DC4: - pop {r3, r4, r5, r6, r7, pc} - nop -_02037DC8: .word 0x00007080 -_02037DCC: .word _021D4150 -_02037DD0: .word sub_02038218 - thumb_func_end sub_02037D8C - - thumb_func_start sub_02037DD4 -sub_02037DD4: ; 0x02037DD4 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl sub_02037474 - cmp r0, #0 - bne _02037E0C - ldr r2, _02037E10 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r6, #0 - add r1, r7, #0 - bl sub_02037C98 - ldr r0, _02037E14 ; =_021D4150 - ldr r1, [r0] - add r1, #0x4f - strb r5, [r1] - ldr r0, [r0] - mov r1, #0 - str r4, [r0, #0x30] - ldr r0, _02037E18 ; =sub_02038294 - bl sub_020381C0 -_02037E0C: - pop {r3, r4, r5, r6, r7, pc} - nop -_02037E10: .word 0x00007080 -_02037E14: .word _021D4150 -_02037E18: .word sub_02038294 - thumb_func_end sub_02037DD4 - - thumb_func_start sub_02037E1C -sub_02037E1C: ; 0x02037E1C - ldr r1, _02037E2C ; =_021D4150 - ldr r3, _02037E30 ; =sub_020381C0 - ldr r1, [r1] - add r1, #0x4d - strb r0, [r1] - ldr r0, _02037E34 ; =sub_020382E4 - mov r1, #0 - bx r3 - .balign 4, 0 -_02037E2C: .word _021D4150 -_02037E30: .word sub_020381C0 -_02037E34: .word sub_020382E4 - thumb_func_end sub_02037E1C - - thumb_func_start sub_02037E38 -sub_02037E38: ; 0x02037E38 - push {r3, lr} - bl sub_02036274 - ldr r0, _02037E48 ; =sub_020383B0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02037E48: .word sub_020383B0 - thumb_func_end sub_02037E38 - - thumb_func_start sub_02037E4C -sub_02037E4C: ; 0x02037E4C - push {r3, lr} - ldr r0, _02037E94 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x40] - cmp r0, #0 - ble _02037E5E - sub r0, r0, #1 - str r0, [r1, #0x40] - b _02037E64 -_02037E5E: - bne _02037E64 - bl sub_020399EC -_02037E64: - ldr r0, _02037E94 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02037E72 - sub r0, r0, #1 - str r0, [r1, #0x44] -_02037E72: - bl sub_02034FE8 - cmp r0, #0 - beq _02037E90 - ldr r0, _02037E94 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bne _02037E90 - bl sub_02036024 - ldr r0, _02037E98 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_02037E90: - pop {r3, pc} - nop -_02037E94: .word _021D4150 -_02037E98: .word sub_02038408 - thumb_func_end sub_02037E4C - - thumb_func_start sub_02037E9C -sub_02037E9C: ; 0x02037E9C - push {r3, lr} - ldr r0, _02037EB4 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _02037EB2 - ldr r0, _02037EB8 ; =0x00000708 - str r0, [r1, #0x40] - ldr r0, _02037EBC ; =sub_02037E4C - mov r1, #5 - bl sub_020381C0 -_02037EB2: - pop {r3, pc} - .balign 4, 0 -_02037EB4: .word _021D4150 -_02037EB8: .word 0x00000708 -_02037EBC: .word sub_02037E4C - thumb_func_end sub_02037E9C - - thumb_func_start sub_02037EC0 -sub_02037EC0: ; 0x02037EC0 - ldr r3, _02037EC4 ; =sub_02033A0C - bx r3 - .balign 4, 0 -_02037EC4: .word sub_02033A0C - thumb_func_end sub_02037EC0 - - thumb_func_start sub_02037EC8 -sub_02037EC8: ; 0x02037EC8 - push {r4} - sub sp, #0xc - ldr r4, _02037F10 ; =_020F6A90 - add r3, sp, #0 - ldmia r4!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - ldr r0, _02037F14 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - cmp r0, #0 - bne _02037EEC - add sp, #0xc - mov r0, #0 - pop {r4} - bx lr -_02037EEC: - ldr r0, [sp] - cmp r0, #0 - beq _02037F08 -_02037EF2: - ldr r0, [r2] - cmp r1, r0 - bne _02037F00 - add sp, #0xc - mov r0, #1 - pop {r4} - bx lr -_02037F00: - add r2, r2, #4 - ldr r0, [r2] - cmp r0, #0 - bne _02037EF2 -_02037F08: - mov r0, #0 - add sp, #0xc - pop {r4} - bx lr - .balign 4, 0 -_02037F10: .word _020F6A90 -_02037F14: .word _021D4150 - thumb_func_end sub_02037EC8 - - thumb_func_start sub_02037F18 -sub_02037F18: ; 0x02037F18 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02037F58 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037F56 - ldr r2, _02037F5C ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - cmp r0, #0 - bne _02037F36 - bl sub_020399EC -_02037F36: - add r0, r4, #0 - mov r1, #9 - bl sub_02037C98 - ldr r0, _02037F58 ; =_021D4150 - mov r2, #9 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r0, [r0] - mov r1, #0 - add r0, #0x4f - strb r1, [r0] - ldr r0, _02037F60 ; =sub_020384B4 - bl sub_020381C0 -_02037F56: - pop {r4, pc} - .balign 4, 0 -_02037F58: .word _021D4150 -_02037F5C: .word 0x00007080 -_02037F60: .word sub_020384B4 - thumb_func_end sub_02037F18 - - thumb_func_start sub_02037F64 -sub_02037F64: ; 0x02037F64 - push {r3, lr} - ldr r1, _02037F8C ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - mov r0, #1 - bl sub_02033AA4 - bl sub_0203A880 - ldr r0, _02037F90 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_02037F8C: .word _021D4150 -_02037F90: .word sub_02038668 - thumb_func_end sub_02037F64 - - thumb_func_start sub_02037F94 -sub_02037F94: ; 0x02037F94 - ldr r0, _02037FC0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037FA2 - mov r0, #0 - mvn r0, r0 - bx lr -_02037FA2: - ldr r1, [r0, #0x24] - ldr r0, _02037FC4 ; =sub_020387E8 - cmp r1, r0 - bne _02037FAE - mov r0, #1 - bx lr -_02037FAE: - ldr r0, _02037FC8 ; =sub_02038800 - cmp r1, r0 - bne _02037FB8 - mov r0, #1 - b _02037FBA -_02037FB8: - mov r0, #0 -_02037FBA: - neg r0, r0 - bx lr - nop -_02037FC0: .word _021D4150 -_02037FC4: .word sub_020387E8 -_02037FC8: .word sub_02038800 - thumb_func_end sub_02037F94 - - thumb_func_start sub_02037FCC -sub_02037FCC: ; 0x02037FCC - ldr r0, _02037FE8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037FD8 - mov r0, #0 - bx lr -_02037FD8: - ldr r1, [r0, #0x24] - ldr r0, _02037FEC ; =sub_02038854 - cmp r1, r0 - bne _02037FE4 - mov r0, #1 - bx lr -_02037FE4: - mov r0, #0 - bx lr - .balign 4, 0 -_02037FE8: .word _021D4150 -_02037FEC: .word sub_02038854 - thumb_func_end sub_02037FCC - - thumb_func_start sub_02037FF0 -sub_02037FF0: ; 0x02037FF0 - push {r3, lr} - mov r0, #0 - bl sub_02033AA4 - ldr r0, _02038064 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #1 - bne _02038018 - add r0, r1, #0 - add r0, #0x54 - ldrb r0, [r0] - cmp r0, #1 - bne _02038018 - add r1, #0x4e - ldrb r0, [r1] - cmp r0, #9 - bne _02038020 -_02038018: - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 -_02038020: - bl sub_0203A914 - ldr r0, _02038064 ; =_021D4150 - mov r2, #9 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r1, [r0] - mov r2, #0 - add r1, #0x57 - strb r2, [r1] - ldr r0, [r0] - add r0, #0x4a - ldrb r0, [r0] - bl sub_02033908 - bl sub_0203769C - cmp r0, #0 - bne _02038058 - mov r0, #1 - bl sub_02033ACC - ldr r0, _02038068 ; =sub_02038418 - mov r1, #0xf - bl sub_020381C0 - pop {r3, pc} -_02038058: - ldr r0, _0203806C ; =sub_02038460 - mov r1, #5 - bl sub_020381C0 - pop {r3, pc} - nop -_02038064: .word _021D4150 -_02038068: .word sub_02038418 -_0203806C: .word sub_02038460 - thumb_func_end sub_02037FF0 - - thumb_func_start sub_02038070 -sub_02038070: ; 0x02038070 - ldr r0, _0203808C ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _0203807C - mov r0, #1 - bx lr -_0203807C: - ldr r1, [r0, #0x24] - ldr r0, _02038090 ; =sub_02038538 - cmp r1, r0 - beq _02038088 - mov r0, #1 - bx lr -_02038088: - mov r0, #0 - bx lr - .balign 4, 0 -_0203808C: .word _021D4150 -_02038090: .word sub_02038538 - thumb_func_end sub_02038070 - - thumb_func_start sub_02038094 -sub_02038094: ; 0x02038094 - push {r3, lr} - ldr r0, _020380A8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020380A6 - ldr r0, _020380AC ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_020380A6: - pop {r3, pc} - .balign 4, 0 -_020380A8: .word _021D4150 -_020380AC: .word sub_0203847C - thumb_func_end sub_02038094 - - thumb_func_start sub_020380B0 -sub_020380B0: ; 0x020380B0 - push {r3, lr} - ldr r0, _020380C8 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _020380C4 - mov r0, #1 - add r1, #0x57 - strb r0, [r1] - bl sub_02033AA4 -_020380C4: - pop {r3, pc} - nop -_020380C8: .word _021D4150 - thumb_func_end sub_020380B0 - - thumb_func_start sub_020380CC -sub_020380CC: ; 0x020380CC - push {r3, lr} - ldr r0, _020380EC ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _020380E8 - mov r0, #1 - add r1, #0x57 - strb r0, [r1] - bl sub_02033AA4 - ldr r0, _020380F0 ; =sub_020388A8 - mov r1, #0 - bl sub_020381C0 -_020380E8: - pop {r3, pc} - nop -_020380EC: .word _021D4150 -_020380F0: .word sub_020388A8 - thumb_func_end sub_020380CC - - thumb_func_start sub_020380F4 -sub_020380F4: ; 0x020380F4 - ldr r0, _02038100 ; =_021D4150 - mov r1, #0x12 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038100: .word _021D4150 - thumb_func_end sub_020380F4 - - thumb_func_start sub_02038104 -sub_02038104: ; 0x02038104 - ldr r0, _02038110 ; =_021D4150 - mov r1, #9 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038110: .word _021D4150 - thumb_func_end sub_02038104 - - thumb_func_start sub_02038114 -sub_02038114: ; 0x02038114 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_02037474 - cmp r0, #0 - bne _0203813C - ldr r2, _02038140 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - add r1, r4, #0 - bl sub_02037C98 - ldr r0, _02038144 ; =sub_02038E00 - mov r1, #0 - bl sub_020381C0 -_0203813C: - pop {r3, r4, r5, pc} - nop -_02038140: .word 0x00007080 -_02038144: .word sub_02038E00 - thumb_func_end sub_02038114 - - thumb_func_start sub_02038148 -sub_02038148: ; 0x02038148 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_02037474 - cmp r0, #0 - bne _02038170 - ldr r2, _02038174 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - add r1, r4, #0 - bl sub_02037C98 - ldr r0, _02038178 ; =sub_02038E48 - mov r1, #0 - bl sub_020381C0 -_02038170: - pop {r3, r4, r5, pc} - nop -_02038174: .word 0x00007080 -_02038178: .word sub_02038E48 - thumb_func_end sub_02038148 - - thumb_func_start sub_0203817C -sub_0203817C: ; 0x0203817C - push {r3, lr} - ldr r0, _020381BC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203818E - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _0203818E - blx r0 -_0203818E: - bl sub_02039998 - cmp r0, #0 - beq _020381A4 - bl ov00_021EC9D4 - mov r1, #3 - sub r0, r1, r0 - bl sub_0203A930 - pop {r3, pc} -_020381A4: - bl sub_02035650 - cmp r0, #0 - beq _020381B8 - bl WM_GetLinkLevel - mov r1, #3 - sub r0, r1, r0 - bl sub_0203A930 -_020381B8: - pop {r3, pc} - nop -_020381BC: .word _021D4150 - thumb_func_end sub_0203817C - - thumb_func_start sub_020381C0 -sub_020381C0: ; 0x020381C0 - ldr r2, _020381CC ; =_021D4150 - ldr r3, [r2] - str r0, [r3, #0x24] - ldr r0, [r2] - str r1, [r0, #0x44] - bx lr - .balign 4, 0 -_020381CC: .word _021D4150 - thumb_func_end sub_020381C0 - - thumb_func_start sub_020381D0 -sub_020381D0: ; 0x020381D0 - push {r3, lr} - bl sub_02039998 - cmp r0, #0 - bne _020381EC - bl sub_02035664 - cmp r0, #0 - beq _020381F4 - bl sub_020374E4 - mov r0, #1 - bl sub_020350A8 -_020381EC: - ldr r0, _020381F8 ; =sub_02038404 - mov r1, #0 - bl sub_020381C0 -_020381F4: - pop {r3, pc} - nop -_020381F8: .word sub_02038404 - thumb_func_end sub_020381D0 - - thumb_func_start sub_020381FC -sub_020381FC: ; 0x020381FC - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _02038212 - bl sub_0203622C - ldr r0, _02038214 ; =sub_020381D0 - mov r1, #0 - bl sub_020381C0 -_02038212: - pop {r3, pc} - .balign 4, 0 -_02038214: .word sub_020381D0 - thumb_func_end sub_020381FC - - thumb_func_start sub_02038218 -sub_02038218: ; 0x02038218 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038256 - ldr r0, _02038258 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038258 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02038256 - bl sub_02035FD8 - ldr r0, _0203825C ; =sub_02038260 - mov r1, #0 - bl sub_020381C0 -_02038256: - pop {r3, pc} - .balign 4, 0 -_02038258: .word _021D4150 -_0203825C: .word sub_02038260 - thumb_func_end sub_02038218 - - thumb_func_start sub_02038260 -sub_02038260: ; 0x02038260 - push {r3, lr} - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038276 - ldr r0, _02038278 ; =sub_0203827C - mov r1, #0 - bl sub_020381C0 -_02038276: - pop {r3, pc} - .balign 4, 0 -_02038278: .word sub_0203827C - thumb_func_end sub_02038260 - - thumb_func_start sub_0203827C -sub_0203827C: ; 0x0203827C - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _0203828E - ldr r0, _02038290 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_0203828E: - pop {r3, pc} - .balign 4, 0 -_02038290: .word sub_02038408 - thumb_func_end sub_0203827C - - thumb_func_start sub_02038294 -sub_02038294: ; 0x02038294 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020382D0 - ldr r0, _020382D4 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _020382D4 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020382D0 - bl sub_02035FD8 - ldr r0, _020382D8 ; =sub_020382DC - mov r1, #0 - bl sub_020381C0 -_020382D0: - pop {r3, pc} - nop -_020382D4: .word _021D4150 -_020382D8: .word sub_020382DC - thumb_func_end sub_02038294 - - thumb_func_start sub_020382DC -sub_020382DC: ; 0x020382DC - ldr r3, _020382E0 ; =sub_0203528C - bx r3 - .balign 4, 0 -_020382E0: .word sub_0203528C - thumb_func_end sub_020382DC - - thumb_func_start sub_020382E4 -sub_020382E4: ; 0x020382E4 - push {r3, lr} - bl sub_0203528C - ldr r0, _02038304 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _02038302 - ldr r0, _02038308 ; =sub_0203830C - mov r1, #0xa - bl sub_020381C0 -_02038302: - pop {r3, pc} - .balign 4, 0 -_02038304: .word _021D4150 -_02038308: .word sub_0203830C - thumb_func_end sub_020382E4 - - thumb_func_start sub_0203830C -sub_0203830C: ; 0x0203830C - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _0203831E - ldr r0, _0203833C ; =sub_02038344 - mov r1, #0 - bl sub_020381C0 -_0203831E: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _0203833A - bl sub_0203769C - cmp r0, #0 - beq _0203833A - ldr r0, _02038340 ; =sub_02038398 - mov r1, #0 - bl sub_020381C0 -_0203833A: - pop {r3, pc} - .balign 4, 0 -_0203833C: .word sub_02038344 -_02038340: .word sub_02038398 - thumb_func_end sub_0203830C - - thumb_func_start sub_02038344 -sub_02038344: ; 0x02038344 - push {r3, lr} - bl sub_02034FE8 - ldr r0, _02038354 ; =sub_02038358 - mov r1, #2 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038354: .word sub_02038358 - thumb_func_end sub_02038344 - - thumb_func_start sub_02038358 -sub_02038358: ; 0x02038358 - push {r3, lr} - ldr r0, _02038390 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203836A - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_0203836A: - bl sub_02035664 - cmp r0, #0 - beq _0203838C - mov r1, #1 - mov r0, #0 - lsl r2, r1, #9 - bl sub_02035F14 - cmp r0, #0 - beq _0203838C - bl sub_02035FD8 - ldr r0, _02038394 ; =sub_020382E4 - mov r1, #0xa - bl sub_020381C0 -_0203838C: - pop {r3, pc} - nop -_02038390: .word _021D4150 -_02038394: .word sub_020382E4 - thumb_func_end sub_02038358 - - thumb_func_start sub_02038398 -sub_02038398: ; 0x02038398 - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _020383AA - ldr r0, _020383AC ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_020383AA: - pop {r3, pc} - .balign 4, 0 -_020383AC: .word sub_02038408 - thumb_func_end sub_02038398 - - thumb_func_start sub_020383B0 -sub_020383B0: ; 0x020383B0 - push {r3, lr} - bl sub_02034FE8 - ldr r0, _020383C0 ; =sub_020383C4 - mov r1, #2 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_020383C0: .word sub_020383C4 - thumb_func_end sub_020383B0 - - thumb_func_start sub_020383C4 -sub_020383C4: ; 0x020383C4 - push {r3, lr} - ldr r0, _020383FC ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020383D6 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020383D6: - bl sub_02035664 - cmp r0, #0 - beq _020383F8 - mov r1, #1 - mov r0, #0 - lsl r2, r1, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020383F8 - bl sub_02035FD8 - ldr r0, _02038400 ; =sub_020382DC - mov r1, #0xa - bl sub_020381C0 -_020383F8: - pop {r3, pc} - nop -_020383FC: .word _021D4150 -_02038400: .word sub_020382DC - thumb_func_end sub_020383C4 - - thumb_func_start sub_02038404 -sub_02038404: ; 0x02038404 - bx lr - .balign 4, 0 - thumb_func_end sub_02038404 - - thumb_func_start sub_02038408 -sub_02038408: ; 0x02038408 - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _02038416 - bl sub_02037D2C -_02038416: - pop {r3, pc} - thumb_func_end sub_02038408 - - thumb_func_start sub_02038418 -sub_02038418: ; 0x02038418 - push {r3, lr} - bl sub_02037454 - cmp r0, #1 - bgt _02038434 - mov r0, #0 - bl sub_02033ACC - bl sub_0203624C - ldr r0, _02038458 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 -_02038434: - ldr r0, _0203845C ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02038444 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038444: - mov r0, #0 - bl sub_02033ACC - bl sub_0203624C - ldr r0, _02038458 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038458: .word sub_02038538 -_0203845C: .word _021D4150 - thumb_func_end sub_02038418 - - thumb_func_start sub_02038460 -sub_02038460: ; 0x02038460 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _02038476 - bl sub_0203622C - ldr r0, _02038478 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 -_02038476: - pop {r3, pc} - .balign 4, 0 -_02038478: .word sub_02038538 - thumb_func_end sub_02038460 - - thumb_func_start sub_0203847C -sub_0203847C: ; 0x0203847C - push {r3, lr} - ldr r0, _020384AC ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203848C - sub r0, r0, #1 - str r0, [r1, #0x44] -_0203848C: - bl sub_02034FE8 - cmp r0, #0 - beq _020384AA - ldr r0, _020384AC ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bne _020384AA - bl sub_02036024 - ldr r0, _020384B0 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_020384AA: - pop {r3, pc} - .balign 4, 0 -_020384AC: .word _021D4150 -_020384B0: .word sub_02038408 - thumb_func_end sub_0203847C - - thumb_func_start sub_020384B4 -sub_020384B4: ; 0x020384B4 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020384FC - ldr r0, _02038500 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038500 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4a - ldrb r0, [r0] - bl sub_02033908 - ldr r0, _02038500 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020384FC - bl sub_02035FD8 - ldr r0, _02038504 ; =sub_02038508 - mov r1, #0x40 - bl sub_020381C0 -_020384FC: - pop {r3, pc} - nop -_02038500: .word _021D4150 -_02038504: .word sub_02038508 - thumb_func_end sub_020384B4 - - thumb_func_start sub_02038508 -sub_02038508: ; 0x02038508 - push {r3, lr} - bl sub_0203528C - ldr r0, _02038530 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203851E - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_0203851E: - bl sub_02034FE8 - cmp r0, #0 - beq _0203852E - ldr r0, _02038534 ; =sub_02038550 - mov r1, #0 - bl sub_020381C0 -_0203852E: - pop {r3, pc} - .balign 4, 0 -_02038530: .word _021D4150 -_02038534: .word sub_02038550 - thumb_func_end sub_02038508 - - thumb_func_start sub_02038538 -sub_02038538: ; 0x02038538 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _0203854A - ldr r0, _0203854C ; =sub_02038550 - mov r1, #0 - bl sub_020381C0 -_0203854A: - pop {r3, pc} - .balign 4, 0 -_0203854C: .word sub_02038550 - thumb_func_end sub_02038538 - - thumb_func_start sub_02038550 -sub_02038550: ; 0x02038550 - push {r3, r4, r5, lr} - bl sub_02035664 - cmp r0, #0 - beq _020385A8 - ldr r1, _020385AC ; =_021D4150 - mov r2, #2 - ldr r1, [r1] - mov r0, #0 - add r1, #0x52 - ldrb r1, [r1] - lsl r2, r2, #8 - mov r3, #1 - bl sub_02035ED8 - cmp r0, #0 - beq _020385A8 - ldr r0, _020385AC ; =_021D4150 - ldr r4, [r0] - add r5, r4, #0 - add r5, #0xc - ldr r0, [r5, #8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - str r3, [r5, #4] - bl sub_02035FD8 - ldr r0, _020385AC ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x52 - strb r1, [r0] - ldr r0, _020385B0 ; =sub_020385B8 - ldr r1, _020385B4 ; =0x00002710 - bl sub_020381C0 -_020385A8: - pop {r3, r4, r5, pc} - nop -_020385AC: .word _021D4150 -_020385B0: .word sub_020385B8 -_020385B4: .word 0x00002710 - thumb_func_end sub_02038550 - - thumb_func_start sub_020385B8 -sub_020385B8: ; 0x020385B8 - push {r3, lr} - bl sub_020358B0 - cmp r0, #0 - bne _020385F2 - bl sub_020376F8 - cmp r0, #0 - beq _020385E2 - ldr r0, _02038604 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x52 - strb r1, [r0] - bl sub_0203A880 - ldr r0, _02038608 ; =sub_02038854 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020385E2: - ldr r0, _02038604 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020385F2 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020385F2: - bl sub_02034FE8 - cmp r0, #0 - beq _02038602 - ldr r0, _0203860C ; =sub_02038610 - mov r1, #0 - bl sub_020381C0 -_02038602: - pop {r3, pc} - .balign 4, 0 -_02038604: .word _021D4150 -_02038608: .word sub_02038854 -_0203860C: .word sub_02038610 - thumb_func_end sub_020385B8 - - thumb_func_start sub_02038610 -sub_02038610: ; 0x02038610 - push {r3, r4, r5, lr} - bl sub_02035664 - cmp r0, #0 - beq _0203865C - mov r0, #0 - mov r2, #2 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _0203865C - bl sub_02035FD8 - ldr r0, _02038660 ; =_021D4150 - ldr r4, [r0] - add r5, r4, #0 - add r5, #0xc - ldr r0, [r5, #8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0 - ldr r0, _02038664 ; =sub_02038508 - lsr r2, r3, #0x1b - lsl r1, r1, #5 - orr r1, r2 - str r3, [r5, #4] - bl sub_020381C0 -_0203865C: - pop {r3, r4, r5, pc} - nop -_02038660: .word _021D4150 -_02038664: .word sub_02038508 - thumb_func_end sub_02038610 - - thumb_func_start sub_02038668 -sub_02038668: ; 0x02038668 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _0203867A - ldr r0, _0203867C ; =sub_02038680 - mov r1, #0 - bl sub_020381C0 -_0203867A: - pop {r3, pc} - .balign 4, 0 -_0203867C: .word sub_02038680 - thumb_func_end sub_02038668 - - thumb_func_start sub_02038680 -sub_02038680: ; 0x02038680 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _020386A6 - mov r0, #0 - mov r2, #2 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _020386A6 - bl sub_02035FD8 - ldr r0, _020386A8 ; =sub_020386AC - mov r1, #0x64 - bl sub_020381C0 -_020386A6: - pop {r3, pc} - .balign 4, 0 -_020386A8: .word sub_020386AC - thumb_func_end sub_02038680 - - thumb_func_start sub_020386AC -sub_020386AC: ; 0x020386AC - push {r3, lr} - ldr r0, _02038704 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020351AC - cmp r0, #0 - beq _020386D8 - ldr r0, _02038704 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _020386D8 - ldr r0, _02038708 ; =sub_02038710 - mov r1, #0x64 - bl sub_020381C0 - pop {r3, pc} -_020386D8: - bl sub_02037700 - cmp r0, #0 - beq _020386EA - ldr r0, _0203870C ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020386EA: - ldr r0, _02038704 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020386FA - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020386FA: - ldr r0, _0203870C ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038704: .word _021D4150 -_02038708: .word sub_02038710 -_0203870C: .word sub_02038804 - thumb_func_end sub_020386AC - - thumb_func_start sub_02038710 -sub_02038710: ; 0x02038710 - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _02038724 - ldr r0, _02038760 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038724: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038744 - ldr r0, _02038764 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - ldr r0, _02038768 ; =sub_0203876C - mov r1, #0x78 - bl sub_020381C0 - pop {r3, pc} -_02038744: - ldr r0, _02038764 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02038754 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038754: - ldr r0, _02038760 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_02038760: .word sub_02038804 -_02038764: .word _021D4150 -_02038768: .word sub_0203876C - thumb_func_end sub_02038710 - - thumb_func_start sub_0203876C -sub_0203876C: ; 0x0203876C - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _02038780 - ldr r0, _020387D4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038780: - ldr r0, _020387D8 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x4c - ldrb r0, [r0] - cmp r0, #2 - bne _02038798 - ldr r0, _020387DC ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038798: - cmp r0, #1 - bne _020387AA - bl sub_02034434 - ldr r0, _020387E0 ; =sub_020387E8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020387AA: - ldr r0, [r1, #0x44] - cmp r0, #0x6e - ble _020387B8 - ldr r1, _020387E4 ; =_0210F90C - mov r0, #6 - bl sub_020376E0 -_020387B8: - ldr r0, _020387D8 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020387C8 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020387C8: - ldr r0, _020387D4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_020387D4: .word sub_02038804 -_020387D8: .word _021D4150 -_020387DC: .word sub_02038800 -_020387E0: .word sub_020387E8 -_020387E4: .word _0210F90C - thumb_func_end sub_0203876C - - thumb_func_start sub_020387E8 -sub_020387E8: ; 0x020387E8 - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _020387FA - ldr r0, _020387FC ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 -_020387FA: - pop {r3, pc} - .balign 4, 0 -_020387FC: .word sub_02038804 - thumb_func_end sub_020387E8 - - thumb_func_start sub_02038800 -sub_02038800: ; 0x02038800 - bx lr - .balign 4, 0 - thumb_func_end sub_02038800 - - thumb_func_start sub_02038804 -sub_02038804: ; 0x02038804 - push {r3, lr} - ldr r0, _02038848 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - bl sub_02034FE8 - cmp r0, #0 - beq _02038844 - ldr r0, _02038848 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - beq _0203883C - add r0, r1, #0 - add r0, #0x48 - ldrh r0, [r0] - add r1, #0x48 - sub r0, r0, #1 - strh r0, [r1] - ldr r0, _0203884C ; =sub_02038680 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_0203883C: - ldr r0, _02038850 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 -_02038844: - pop {r3, pc} - nop -_02038848: .word _021D4150 -_0203884C: .word sub_02038680 -_02038850: .word sub_02038800 - thumb_func_end sub_02038804 - - thumb_func_start sub_02038854 -sub_02038854: ; 0x02038854 - push {r3, lr} - bl sub_020376F8 - cmp r0, #0 - bne _02038878 - bl sub_02039918 - cmp r0, #0 - bne _02038884 - bl sub_02034FE8 - cmp r0, #0 - beq _02038884 - ldr r0, _020388A0 ; =sub_02038610 - mov r1, #0 - bl sub_020381C0 - b _02038884 -_02038878: - bl sub_0203769C - cmp r0, #0 - bne _02038884 - bl sub_02034638 -_02038884: - bl sub_02037700 - cmp r0, #0 - beq _0203889C - bl sub_02039918 - cmp r0, #0 - bne _0203889C - ldr r0, _020388A4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 -_0203889C: - pop {r3, pc} - nop -_020388A0: .word sub_02038610 -_020388A4: .word sub_02038804 - thumb_func_end sub_02038854 - - thumb_func_start sub_020388A8 -sub_020388A8: ; 0x020388A8 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _020388D6 - ldr r1, _020388D8 ; =_021D4150 - mov r0, #0 - ldr r1, [r1] - mov r2, #2 - add r1, #0x52 - ldrb r1, [r1] - lsl r2, r2, #8 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _020388D6 - bl sub_02035FD8 - ldr r0, _020388DC ; =sub_02038404 - mov r1, #0 - bl sub_020381C0 -_020388D6: - pop {r3, pc} - .balign 4, 0 -_020388D8: .word _021D4150 -_020388DC: .word sub_02038404 - thumb_func_end sub_020388A8 - - thumb_func_start sub_020388E0 -sub_020388E0: ; 0x020388E0 - push {r3, lr} - ldr r0, _02038914 ; =_021D4150 - mov r1, #0xd - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bl sub_0203769C - cmp r0, #0 - add r0, sp, #0 - bne _02038906 - mov r1, #0 - strb r1, [r0, #1] - add r1, sp, #0 - mov r0, #0xa - add r1, #1 - bl sub_020376E0 - pop {r3, pc} -_02038906: - mov r1, #0 - strb r1, [r0] - mov r0, #0xa - add r1, sp, #0 - bl sub_020376E0 - pop {r3, pc} - .balign 4, 0 -_02038914: .word _021D4150 - thumb_func_end sub_020388E0 - - thumb_func_start sub_02038918 -sub_02038918: ; 0x02038918 - ldr r1, _02038930 ; =_021D4150 - ldr r3, _02038934 ; =sub_020381C0 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - ldr r0, _02038938 ; =sub_020389BC - mov r1, #0 - bx r3 - .balign 4, 0 -_02038930: .word _021D4150 -_02038934: .word sub_020381C0 -_02038938: .word sub_020389BC - thumb_func_end sub_02038918 - - thumb_func_start sub_0203893C -sub_0203893C: ; 0x0203893C - ldr r0, _02038948 ; =_021D4150 - mov r1, #7 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038948: .word _021D4150 - thumb_func_end sub_0203893C - - thumb_func_start sub_0203894C -sub_0203894C: ; 0x0203894C - push {r3, lr} - ldr r1, _02038974 ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #7 - add r0, #0x4e - strb r2, [r0] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - bl sub_0203A880 - ldr r0, _02038978 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038974: .word _021D4150 -_02038978: .word sub_02038668 - thumb_func_end sub_0203894C - - thumb_func_start sub_0203897C -sub_0203897C: ; 0x0203897C - ldr r0, _02038988 ; =_021D4150 - mov r1, #0x1a - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038988: .word _021D4150 - thumb_func_end sub_0203897C - - thumb_func_start sub_0203898C -sub_0203898C: ; 0x0203898C - push {r3, lr} - ldr r1, _020389B4 ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #0x1a - add r0, #0x4e - strb r2, [r0] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - bl sub_0203A880 - ldr r0, _020389B8 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_020389B4: .word _021D4150 -_020389B8: .word sub_02038668 - thumb_func_end sub_0203898C - - thumb_func_start sub_020389BC -sub_020389BC: ; 0x020389BC - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _020389CE - ldr r0, _020389D0 ; =sub_020389D4 - mov r1, #0 - bl sub_020381C0 -_020389CE: - pop {r3, pc} - .balign 4, 0 -_020389D0: .word sub_020389D4 - thumb_func_end sub_020389BC - - thumb_func_start sub_020389D4 -sub_020389D4: ; 0x020389D4 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _02038A04 - ldr r0, _02038A08 ; =_021D4150 - mov r2, #2 - ldr r0, [r0] - mov r1, #0xd - add r0, #0x4e - strb r1, [r0] - mov r0, #0 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _02038A04 - bl sub_02035FE4 - ldr r0, _02038A0C ; =sub_02038A10 - mov r1, #0x64 - bl sub_020381C0 -_02038A04: - pop {r3, pc} - nop -_02038A08: .word _021D4150 -_02038A0C: .word sub_02038A10 - thumb_func_end sub_020389D4 - - thumb_func_start sub_02038A10 -sub_02038A10: ; 0x02038A10 - push {r3, lr} - ldr r0, _02038A84 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020351AC - cmp r0, #0 - beq _02038A3C - ldr r0, _02038A84 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _02038A3C - ldr r0, _02038A88 ; =sub_02038A94 - mov r1, #0x64 - bl sub_020381C0 - pop {r3, pc} -_02038A3C: - bl sub_02037700 - cmp r0, #0 - bne _02038A4E - ldr r0, _02038A84 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - bne _02038A7C -_02038A4E: - ldr r1, _02038A84 ; =_021D4150 - ldr r2, [r1] - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038A72 - ldr r0, _02038A8C ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038A72: - ldr r0, _02038A90 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038A7C: - beq _02038A82 - sub r0, r0, #1 - str r0, [r1, #0x44] -_02038A82: - pop {r3, pc} - .balign 4, 0 -_02038A84: .word _021D4150 -_02038A88: .word sub_02038A94 -_02038A8C: .word sub_02038800 -_02038A90: .word sub_020389BC - thumb_func_end sub_02038A10 - - thumb_func_start sub_02038A94 -sub_02038A94: ; 0x02038A94 - push {r3, lr} - ldr r0, _02038B2C ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0x5a - ble _02038AA6 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038AA6: - bl sub_02037700 - cmp r0, #0 - beq _02038ADC - ldr r1, _02038B2C ; =_021D4150 - ldr r2, [r1] - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038AD2 - ldr r0, _02038B30 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038AD2: - ldr r0, _02038B34 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038ADC: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038AF2 - ldr r0, _02038B38 ; =sub_020387E8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038AF2: - ldr r1, _02038B2C ; =_021D4150 - ldr r2, [r1] - ldr r0, [r2, #0x44] - cmp r0, #0 - beq _02038B02 - sub r0, r0, #1 - str r0, [r2, #0x44] - pop {r3, pc} -_02038B02: - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038B22 - ldr r0, _02038B30 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038B22: - ldr r0, _02038B34 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038B2C: .word _021D4150 -_02038B30: .word sub_02038800 -_02038B34: .word sub_020389BC -_02038B38: .word sub_020387E8 - thumb_func_end sub_02038A94 - - thumb_func_start sub_02038B3C -sub_02038B3C: ; 0x02038B3C - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r2, #0 - bl sub_0203769C - cmp r0, #0 - bne _02038B8A - ldr r6, _02038B8C ; =_0210F90C - mov r3, #1 - mov r2, #0 -_02038B50: - ldrb r1, [r6] - ldrb r0, [r4, r2] - cmp r1, r0 - beq _02038B5C - mov r3, #0 - b _02038B64 -_02038B5C: - add r2, r2, #1 - add r6, r6, #1 - cmp r2, #6 - blo _02038B50 -_02038B64: - cmp r3, #0 - beq _02038B80 - ldr r0, _02038B90 ; =_021D4150 - ldr r0, [r0] - add r0, #0x57 - ldrb r0, [r0] - cmp r0, #0 - bne _02038B80 - ldr r1, _02038B94 ; =_0210F904 - mov r0, #7 - strb r5, [r1] - bl sub_02037184 - pop {r4, r5, r6, pc} -_02038B80: - ldr r1, _02038B98 ; =_0210F914 - mov r0, #7 - strb r5, [r1] - bl sub_02037184 -_02038B8A: - pop {r4, r5, r6, pc} - .balign 4, 0 -_02038B8C: .word _0210F90C -_02038B90: .word _021D4150 -_02038B94: .word _0210F904 -_02038B98: .word _0210F914 - thumb_func_end sub_02038B3C - - thumb_func_start sub_02038B9C -sub_02038B9C: ; 0x02038B9C - push {r3, r4, r5, lr} - mov r4, #1 - ldr r5, _02038C0C ; =_0210F904 + 1 - add r3, r4, #0 -_02038BA4: - ldrb r1, [r5] - ldrb r0, [r2, r3] - cmp r1, r0 - beq _02038BB0 - mov r4, #0 - b _02038BB8 -_02038BB0: - add r3, r3, #1 - add r5, r5, #1 - cmp r3, #6 - blo _02038BA4 -_02038BB8: - cmp r4, #0 - beq _02038BD2 - ldrb r4, [r2] - bl sub_0203769C - cmp r4, r0 - bne _02038C08 - ldr r0, _02038C10 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - pop {r3, r4, r5, pc} -_02038BD2: - mov r4, #1 - ldr r3, _02038C14 ; =_0210F914 + 1 - add r5, r4, #0 -_02038BD8: - ldrb r1, [r3] - ldrb r0, [r2, r5] - cmp r1, r0 - beq _02038BE4 - mov r4, #0 - b _02038BEC -_02038BE4: - add r5, r5, #1 - add r3, r3, #1 - cmp r5, #6 - blo _02038BD8 -_02038BEC: - cmp r4, #0 - beq _02038C08 - ldrb r4, [r2] - bl sub_0203769C - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r4, r0 - bne _02038C08 - ldr r0, _02038C10 ; =_021D4150 - mov r1, #2 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] -_02038C08: - pop {r3, r4, r5, pc} - nop -_02038C0C: .word _0210F904 + 1 -_02038C10: .word _021D4150 -_02038C14: .word _0210F914 + 1 - thumb_func_end sub_02038B9C - - thumb_func_start sub_02038C18 -sub_02038C18: ; 0x02038C18 - mov r0, #6 - bx lr - thumb_func_end sub_02038C18 - - thumb_func_start sub_02038C1C -sub_02038C1C: ; 0x02038C1C - push {r3, lr} - ldr r1, _02038C30 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _02038C2E - add r1, #0x4a - strb r0, [r1] - bl sub_02033908 -_02038C2E: - pop {r3, pc} - .balign 4, 0 -_02038C30: .word _021D4150 - thumb_func_end sub_02038C1C - - thumb_func_start sub_02038C34 -sub_02038C34: ; 0x02038C34 - ldr r3, _02038C38 ; =sub_0203528C - bx r3 - .balign 4, 0 -_02038C38: .word sub_0203528C - thumb_func_end sub_02038C34 - - thumb_func_start sub_02038C3C -sub_02038C3C: ; 0x02038C3C - ldr r2, _02038CB4 ; =0x00400131 - cmp r0, r2 - bhi _02038C4C - bhs _02038C8A - ldr r2, _02038CB8 ; =0x00000333 - cmp r0, r2 - beq _02038C5E - bx lr -_02038C4C: - ldr r1, _02038CBC ; =0x00400286 - cmp r0, r1 - bhi _02038C56 - beq _02038C9E - bx lr -_02038C56: - add r1, #0x92 - cmp r0, r1 - beq _02038C76 - bx lr -_02038C5E: - cmp r1, #0xf - bne _02038CB0 - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #1 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C76: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #1 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C8A: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #2 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C9E: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #4 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] -_02038CB0: - bx lr - nop -_02038CB4: .word 0x00400131 -_02038CB8: .word 0x00000333 -_02038CBC: .word 0x00400286 -_02038CC0: .word _021D4150 - thumb_func_end sub_02038C3C - - thumb_func_start sub_02038CC4 -sub_02038CC4: ; 0x02038CC4 - push {r3, lr} - mov r0, #1 - add r1, r0, #0 - mov r2, #0x20 - bl sub_02035F14 - cmp r0, #0 - beq _02038CE0 - bl sub_02035FD8 - ldr r0, _02038CE4 ; =sub_02038C34 - mov r1, #0 - bl sub_020381C0 -_02038CE0: - pop {r3, pc} - nop -_02038CE4: .word sub_02038C34 - thumb_func_end sub_02038CC4 - - thumb_func_start sub_02038CE8 -sub_02038CE8: ; 0x02038CE8 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038D18 - ldr r0, _02038D1C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038D1C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - ldr r0, _02038D20 ; =sub_02038C3C - bl sub_02033A7C - ldr r0, _02038D24 ; =sub_02038CC4 - mov r1, #0 - bl sub_020381C0 -_02038D18: - pop {r3, pc} - nop -_02038D1C: .word _021D4150 -_02038D20: .word sub_02038C3C -_02038D24: .word sub_02038CC4 - thumb_func_end sub_02038CE8 - - thumb_func_start sub_02038D28 -sub_02038D28: ; 0x02038D28 - push {r4, lr} - add r4, r0, #0 - bl sub_02037474 - cmp r0, #0 - bne _02038D58 - mov r2, #7 - mov r0, #3 - mov r1, #0xf - lsl r2, r2, #0xc - bl Heap_CreateAtEnd - add r0, r4, #0 - mov r1, #0x11 - bl sub_02037C98 - ldr r0, _02038D5C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4f - strb r1, [r0] - ldr r0, _02038D60 ; =sub_02038CE8 - bl sub_020381C0 -_02038D58: - pop {r4, pc} - nop -_02038D5C: .word _021D4150 -_02038D60: .word sub_02038CE8 - thumb_func_end sub_02038D28 - - thumb_func_start sub_02038D64 -sub_02038D64: ; 0x02038D64 - push {r3, lr} - ldr r0, _02038D78 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02038D76 - ldr r0, _02038D7C ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_02038D76: - pop {r3, pc} - .balign 4, 0 -_02038D78: .word _021D4150 -_02038D7C: .word sub_0203847C - thumb_func_end sub_02038D64 - - thumb_func_start sub_02038D80 -sub_02038D80: ; 0x02038D80 - ldr r0, _02038D8C ; =_021D4150 - ldr r0, [r0] - add r0, #0x58 - ldrb r0, [r0] - bx lr - nop -_02038D8C: .word _021D4150 - thumb_func_end sub_02038D80 - - thumb_func_start sub_02038D90 -sub_02038D90: ; 0x02038D90 - push {r3, lr} - bl sub_02037988 - ldr r0, _02038DF0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02038DA2 - mov r0, #1 - pop {r3, pc} -_02038DA2: - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x18 - beq _02038DB2 - cmp r0, #0x19 - beq _02038DB2 - cmp r0, #0x24 - bne _02038DBA -_02038DB2: - bl ov00_021E6CB8 - mov r0, #1 - pop {r3, pc} -_02038DBA: - bl sub_02039998 - cmp r0, #0 - beq _02038DE2 - ldr r0, _02038DF0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x21 - bne _02038DD8 - ldr r0, _02038DF4 ; =sub_02039D78 - mov r1, #0 - bl sub_020381C0 - b _02038DEA -_02038DD8: - ldr r0, _02038DF8 ; =sub_020392F4 - mov r1, #0 - bl sub_020381C0 - b _02038DEA -_02038DE2: - ldr r0, _02038DFC ; =sub_020381FC - mov r1, #0 - bl sub_020381C0 -_02038DEA: - mov r0, #0 - pop {r3, pc} - nop -_02038DF0: .word _021D4150 -_02038DF4: .word sub_02039D78 -_02038DF8: .word sub_020392F4 -_02038DFC: .word sub_020381FC - thumb_func_end sub_02038D90 - - thumb_func_start sub_02038E00 -sub_02038E00: ; 0x02038E00 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038E3E - ldr r0, _02038E40 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038E40 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02038E3E - bl sub_02035FD8 - ldr r0, _02038E44 ; =sub_02038260 - mov r1, #0 - bl sub_020381C0 -_02038E3E: - pop {r3, pc} - .balign 4, 0 -_02038E40: .word _021D4150 -_02038E44: .word sub_02038260 - thumb_func_end sub_02038E00 - - thumb_func_start sub_02038E48 -sub_02038E48: ; 0x02038E48 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038E84 - ldr r0, _02038E88 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038E88 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _02038E84 - bl sub_02035FD8 - ldr r0, _02038E8C ; =sub_020382DC - mov r1, #0 - bl sub_020381C0 -_02038E84: - pop {r3, pc} - nop -_02038E88: .word _021D4150 -_02038E8C: .word sub_020382DC - thumb_func_end sub_02038E48 - - thumb_func_start sub_02038E90 -sub_02038E90: ; 0x02038E90 - bx lr - .balign 4, 0 - thumb_func_end sub_02038E90 - - thumb_func_start sub_02038E94 -sub_02038E94: ; 0x02038E94 - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02038EA8 - ldr r0, _02038EAC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02038EA8: - pop {r3, pc} - nop -_02038EAC: .word sub_02038E90 - thumb_func_end sub_02038E94 - - thumb_func_start sub_02038EB0 -sub_02038EB0: ; 0x02038EB0 - bx lr - .balign 4, 0 - thumb_func_end sub_02038EB0 - - thumb_func_start sub_02038EB4 -sub_02038EB4: ; 0x02038EB4 - bx lr - .balign 4, 0 - thumb_func_end sub_02038EB4 - - thumb_func_start sub_02038EB8 -sub_02038EB8: ; 0x02038EB8 - push {r3, lr} - mov r0, #1 - bl sub_0203786C - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0xa - blt _02038ED8 - cmp r0, #0x14 - bge _02038ED8 - ldr r0, _02038F60 ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038ED8: - cmp r0, #0 - bge _02038EE6 - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038EE6: - cmp r0, #0x17 - bne _02038EF4 - ldr r0, _02038F68 ; =sub_02038E94 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038EF4: - cmp r0, #0x18 - bne _02038F18 - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F0E - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F0E: - ldr r0, _02038F70 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F18: - cmp r0, #0x15 - bne _02038F3A - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F32 - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F32: - ldr r0, _02038F70 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 -_02038F3A: - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F5E - bl sub_02037454 - ldr r1, _02038F6C ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - ldrb r1, [r1] - cmp r1, r0 - beq _02038F5E - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02038F5E: - pop {r3, pc} - .balign 4, 0 -_02038F60: .word sub_02038EB4 -_02038F64: .word sub_02038E90 -_02038F68: .word sub_02038E94 -_02038F6C: .word _021D4150 -_02038F70: .word sub_02038EB0 - thumb_func_end sub_02038EB8 - - thumb_func_start sub_02038F74 -sub_02038F74: ; 0x02038F74 - push {r3, r4} - ldr r3, _02038F98 ; =_021D4150 - ldr r4, [r3] - cmp r4, #0 - beq _02038F94 - add r3, r0, #0 - sub r3, #0x19 - cmp r3, #1 - bls _02038F88 - neg r0, r0 -_02038F88: - str r0, [r4, #0x34] - ldr r0, _02038F98 ; =_021D4150 - ldr r3, [r0] - str r1, [r3, #0x38] - ldr r0, [r0] - str r2, [r0, #0x3c] -_02038F94: - pop {r3, r4} - bx lr - .balign 4, 0 -_02038F98: .word _021D4150 - thumb_func_end sub_02038F74 - - thumb_func_start sub_02038F9C -sub_02038F9C: ; 0x02038F9C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0xa - blt _02038FB6 - cmp r0, #0x14 - bge _02038FB6 - ldr r0, _02038FFC ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FB6: - cmp r0, #0 - bge _02038FC4 - ldr r0, _02039000 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FC4: - cmp r0, #0x14 - bne _02038FD2 - ldr r0, _02039004 ; =sub_02038EB8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FD2: - cmp r0, #0x15 - bne _02038FE0 - ldr r0, _02039008 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FE0: - cmp r0, #0x16 - bne _02038FEE - ldr r0, _02038FFC ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FEE: - cmp r0, #0x18 - bne _02038FFA - ldr r0, _02039008 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 -_02038FFA: - pop {r3, pc} - .balign 4, 0 -_02038FFC: .word sub_02038EB4 -_02039000: .word sub_02038E90 -_02039004: .word sub_02038EB8 -_02039008: .word sub_02038EB0 - thumb_func_end sub_02038F9C - - thumb_func_start sub_0203900C -sub_0203900C: ; 0x0203900C - push {r3, lr} - mov r0, #1 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039022 - ldr r0, _02039074 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039022: - ldr r0, _02039078 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r2, r0, #0 - ldr r0, _02039078 ; =_021D4150 - ldr r1, [r0] - mov r0, #0x51 - ldrsb r0, [r1, r0] - add r1, r2, #1 - mov r2, #0 - bl ov00_021E6D7C - add r0, r0, #3 - cmp r0, #3 - bhi _02039070 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02039052: ; jump table - .short _02039068 - _02039052 - 2 ; case 0 - .short _02039070 - _02039052 - 2 ; case 1 - .short _02039070 - _02039052 - 2 ; case 2 - .short _0203905A - _02039052 - 2 ; case 3 -_0203905A: - bl sub_0203622C - ldr r0, _0203907C ; =sub_02038F9C - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039068: - ldr r0, _02039074 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039070: - pop {r3, pc} - nop -_02039074: .word sub_02038E90 -_02039078: .word _021D4150 -_0203907C: .word sub_02038F9C - thumb_func_end sub_0203900C - - thumb_func_start sub_02039080 -sub_02039080: ; 0x02039080 - push {r4, lr} - add r4, r0, #0 - ldr r0, _020390B0 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _020390B4 ; =sub_02038F9C - cmp r1, r0 - beq _02039094 - mov r0, #0 - pop {r4, pc} -_02039094: - ldr r0, _020390B8 ; =sub_02036904 - ldr r1, _020390BC ; =sub_020367A8 - bl ov00_021E5C84 - ldr r0, _020390B0 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x51 - strb r4, [r0] - ldr r0, _020390C0 ; =sub_0203900C - bl sub_020381C0 - mov r0, #1 - pop {r4, pc} - .balign 4, 0 -_020390B0: .word _021D4150 -_020390B4: .word sub_02038F9C -_020390B8: .word sub_02036904 -_020390BC: .word sub_020367A8 -_020390C0: .word sub_0203900C - thumb_func_end sub_02039080 - - thumb_func_start sub_020390C4 -sub_020390C4: ; 0x020390C4 - ldr r0, _02039120 ; =_021D4150 - ldr r1, _02039124 ; =sub_02038F9C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, r1 - bne _020390D4 - mov r0, #0 - bx lr -_020390D4: - ldr r1, _02039128 ; =sub_02038EB8 - cmp r0, r1 - bne _020390DE - mov r0, #1 - bx lr -_020390DE: - ldr r1, _0203912C ; =sub_02038E94 - cmp r0, r1 - bne _020390E8 - mov r0, #3 - bx lr -_020390E8: - ldr r1, _02039130 ; =sub_02038EB0 - cmp r0, r1 - bne _020390F2 - mov r0, #4 - bx lr -_020390F2: - ldr r1, _02039134 ; =sub_02038EB4 - cmp r0, r1 - bne _020390FC - mov r0, #5 - bx lr -_020390FC: - ldr r1, _02039138 ; =sub_02039DE4 - cmp r0, r1 - bne _02039106 - mov r0, #0 - bx lr -_02039106: - ldr r1, _0203913C ; =sub_02039DC4 - cmp r0, r1 - bne _02039110 - mov r0, #1 - bx lr -_02039110: - ldr r1, _02039140 ; =sub_02039E7C - cmp r0, r1 - bne _0203911A - mov r0, #3 - bx lr -_0203911A: - mov r0, #2 - bx lr - nop -_02039120: .word _021D4150 -_02039124: .word sub_02038F9C -_02039128: .word sub_02038EB8 -_0203912C: .word sub_02038E94 -_02039130: .word sub_02038EB0 -_02039134: .word sub_02038EB4 -_02039138: .word sub_02039DE4 -_0203913C: .word sub_02039DC4 -_02039140: .word sub_02039E7C - thumb_func_end sub_020390C4 - - thumb_func_start sub_02039144 -sub_02039144: ; 0x02039144 - push {r3, lr} - ldr r0, _020391BC ; =sub_02036904 - ldr r1, _020391C0 ; =sub_020367A8 - bl ov00_021E5C84 - mov r0, #0 - mvn r0, r0 - mov r1, #4 - mov r2, #1 - bl ov00_021E6D7C - add r0, r0, #4 - cmp r0, #4 - bhi _0203919A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0203916C: ; jump table - .short _02039198 - _0203916C - 2 ; case 0 - .short _0203918E - _0203916C - 2 ; case 1 - .short _0203919A - _0203916C - 2 ; case 2 - .short _0203919A - _0203916C - 2 ; case 3 - .short _02039176 - _0203916C - 2 ; case 4 -_02039176: - ldr r0, _020391C4 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x5c - strb r1, [r0] - bl sub_0203622C - ldr r0, _020391C8 ; =sub_02038F9C - mov r1, #0 - bl sub_020381C0 - b _0203919A -_0203918E: - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _0203919A -_02039198: - pop {r3, pc} -_0203919A: - bl ov00_021E6690 - cmp r0, #0 - bge _020391AC - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020391AC: - cmp r0, #0x1a - bne _020391B8 - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_020391B8: - pop {r3, pc} - nop -_020391BC: .word sub_02036904 -_020391C0: .word sub_020367A8 -_020391C4: .word _021D4150 -_020391C8: .word sub_02038F9C -_020391CC: .word sub_02038E90 - thumb_func_end sub_02039144 - - thumb_func_start sub_020391D0 -sub_020391D0: ; 0x020391D0 - push {r3, lr} - mov r0, #0 - bl sub_0203786C - ldr r0, _02039214 ; =_021D4150 - ldr r0, [r0] - add r0, #0x50 - ldrb r0, [r0] - bl ov00_021E6BE4 - cmp r0, #0 - beq _020391FE - bl ov00_021E6C68 - cmp r0, #0 - beq _020391FE - bl sub_020343E4 - ldr r0, _02039218 ; =sub_02039144 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020391FE: - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039210 - ldr r0, _0203921C ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039210: - pop {r3, pc} - nop -_02039214: .word _021D4150 -_02039218: .word sub_02039144 -_0203921C: .word sub_02038E90 - thumb_func_end sub_020391D0 - - thumb_func_start sub_02039220 -sub_02039220: ; 0x02039220 - push {r3, lr} - bl sub_0203769C - cmp r0, #0 - bne _0203923C - ldr r0, _0203925C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039260 ; =sub_020391D0 - bl sub_020381C0 - b _0203924E -_0203923C: - ldr r0, _0203925C ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039260 ; =sub_020391D0 - mov r1, #0 - bl sub_020381C0 -_0203924E: - ldr r0, _0203925C ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x5c - strb r1, [r0] - pop {r3, pc} - nop -_0203925C: .word _021D4150 -_02039260: .word sub_020391D0 - thumb_func_end sub_02039220 - - thumb_func_start sub_02039264 -sub_02039264: ; 0x02039264 - ldr r0, _02039270 ; =_021D4150 - ldr r0, [r0] - add r0, #0x5c - ldrb r0, [r0] - bx lr - nop -_02039270: .word _021D4150 - thumb_func_end sub_02039264 - - thumb_func_start sub_02039274 -sub_02039274: ; 0x02039274 - ldr r0, _02039294 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _02039298 ; =sub_02039144 - cmp r1, r0 - bne _02039284 - mov r0, #1 - bx lr -_02039284: - ldr r0, _0203929C ; =sub_02039C60 - cmp r1, r0 - bne _0203928E - mov r0, #1 - bx lr -_0203928E: - mov r0, #0 - bx lr - nop -_02039294: .word _021D4150 -_02039298: .word sub_02039144 -_0203929C: .word sub_02039C60 - thumb_func_end sub_02039274 - - thumb_func_start sub_020392A0 -sub_020392A0: ; 0x020392A0 - ldr r0, _020392C8 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _020392CC ; =sub_02038F9C - cmp r1, r0 - bne _020392B0 - mov r0, #1 - bx lr -_020392B0: - ldr r0, _020392D0 ; =sub_02039144 - cmp r1, r0 - bne _020392BA - mov r0, #1 - bx lr -_020392BA: - ldr r0, _020392D4 ; =sub_02039C60 - cmp r1, r0 - bne _020392C4 - mov r0, #1 - bx lr -_020392C4: - mov r0, #0 - bx lr - .balign 4, 0 -_020392C8: .word _021D4150 -_020392CC: .word sub_02038F9C -_020392D0: .word sub_02039144 -_020392D4: .word sub_02039C60 - thumb_func_end sub_020392A0 - - thumb_func_start sub_020392D8 -sub_020392D8: ; 0x020392D8 - push {r3, lr} - ldr r0, _020392F0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020392E6 - bl GF_AssertFail -_020392E6: - ldr r0, _020392F0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x34 - pop {r3, pc} - nop -_020392F0: .word _021D4150 - thumb_func_end sub_020392D8 - - thumb_func_start sub_020392F4 -sub_020392F4: ; 0x020392F4 - push {r3, lr} - mov r0, #0 - bl sub_0203786C - mov r0, #0 - bl ov00_021E6BE4 - cmp r0, #0 - beq _02039312 - bl ov00_021E6C68 - ldr r0, _02039328 ; =sub_0203847C - mov r1, #0 - bl sub_020381C0 -_02039312: - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039324 - ldr r0, _0203932C ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039324: - pop {r3, pc} - nop -_02039328: .word sub_0203847C -_0203932C: .word sub_02038E90 - thumb_func_end sub_020392F4 - - thumb_func_start sub_02039330 -sub_02039330: ; 0x02039330 - push {r3, lr} - ldr r0, _02039350 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203934C - mov r0, #1 - bl sub_0201A738 - bl sub_020343E4 - ldr r0, _02039354 ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_0203934C: - pop {r3, pc} - nop -_02039350: .word _021D4150 -_02039354: .word sub_0203847C - thumb_func_end sub_02039330 - - thumb_func_start sub_02039358 -sub_02039358: ; 0x02039358 - push {r3, lr} - ldr r0, _02039370 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203936E - mov r1, #0 - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039374 ; =sub_020391D0 - bl sub_020381C0 -_0203936E: - pop {r3, pc} - .balign 4, 0 -_02039370: .word _021D4150 -_02039374: .word sub_020391D0 - thumb_func_end sub_02039358 - - thumb_func_start sub_02039378 -sub_02039378: ; 0x02039378 - push {r3, lr} - ldr r0, _020393AC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020393AA - mov r0, #0 - mov r1, #1 - bl sub_020398D4 - bl sub_0203769C - cmp r0, #0 - bne _02039398 - mov r1, #0 - ldr r0, _020393AC ; =_021D4150 - b _0203939C -_02039398: - ldr r0, _020393AC ; =_021D4150 - mov r1, #1 -_0203939C: - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _020393B0 ; =sub_020391D0 - mov r1, #0 - bl sub_020381C0 -_020393AA: - pop {r3, pc} - .balign 4, 0 -_020393AC: .word _021D4150 -_020393B0: .word sub_020391D0 - thumb_func_end sub_02039378 - - thumb_func_start sub_020393B4 -sub_020393B4: ; 0x020393B4 - push {r3, lr} - bl sub_0203769C - add r1, sp, #0 - strb r0, [r1] - mov r0, #0x15 - add r1, sp, #0 - bl sub_020376E0 - pop {r3, pc} - thumb_func_end sub_020393B4 - - thumb_func_start sub_020393C8 -sub_020393C8: ; 0x020393C8 - ldr r0, _02039408 ; =_021D4150 - ldr r2, [r0] - cmp r2, #0 - beq _02039402 - ldr r1, [r2, #0x24] - ldr r0, _0203940C ; =sub_02038E90 - cmp r1, r0 - bne _020393DC - mov r0, #1 - bx lr -_020393DC: - ldr r0, _02039410 ; =sub_02038E94 - cmp r1, r0 - bne _020393F0 - add r0, r2, #0 - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _020393F0 - mov r0, #1 - bx lr -_020393F0: - ldr r0, _02039414 ; =sub_02039E7C - cmp r1, r0 - bne _02039402 - add r2, #0x53 - ldrb r0, [r2] - cmp r0, #0 - beq _02039402 - mov r0, #1 - bx lr -_02039402: - mov r0, #0 - bx lr - nop -_02039408: .word _021D4150 -_0203940C: .word sub_02038E90 -_02039410: .word sub_02038E94 -_02039414: .word sub_02039E7C - thumb_func_end sub_020393C8 - - thumb_func_start sub_02039418 -sub_02039418: ; 0x02039418 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039468 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02039466 - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02039468 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02039468 ; =_021D4150 - mov r2, #0x18 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_02039466: - pop {r4, pc} - .balign 4, 0 -_02039468: .word _021D4150 - thumb_func_end sub_02039418 - - thumb_func_start sub_0203946C -sub_0203946C: ; 0x0203946C - push {r3, lr} - ldr r0, _0203949C ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039498 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _0203949C ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _0203949C ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_02039498: - pop {r3, pc} - nop -_0203949C: .word _021D4150 - thumb_func_end sub_0203946C - - thumb_func_start sub_020394A0 -sub_020394A0: ; 0x020394A0 - push {r4, lr} - add r4, r0, #0 - ldr r0, _020394F0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020394EE - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _020394F0 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _020394F0 ; =_021D4150 - mov r2, #0x19 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_020394EE: - pop {r4, pc} - .balign 4, 0 -_020394F0: .word _021D4150 - thumb_func_end sub_020394A0 - - thumb_func_start sub_020394F4 -sub_020394F4: ; 0x020394F4 - push {r3, lr} - ldr r0, _02039524 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039520 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _02039524 ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _02039524 ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_02039520: - pop {r3, pc} - nop -_02039524: .word _021D4150 - thumb_func_end sub_020394F4 - - thumb_func_start sub_02039528 -sub_02039528: ; 0x02039528 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039578 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02039576 - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02039578 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02039578 ; =_021D4150 - mov r2, #0x24 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_02039576: - pop {r4, pc} - .balign 4, 0 -_02039578: .word _021D4150 - thumb_func_end sub_02039528 - - thumb_func_start sub_0203957C -sub_0203957C: ; 0x0203957C - push {r3, lr} - ldr r0, _020395AC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020395A8 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _020395AC ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _020395AC ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_020395A8: - pop {r3, pc} - nop -_020395AC: .word _021D4150 - thumb_func_end sub_0203957C - - thumb_func_start sub_020395B0 -sub_020395B0: ; 0x020395B0 - push {r3, lr} - sub sp, #8 - ldr r0, _02039608 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020395C2 - add sp, #8 - mov r0, #0 - pop {r3, pc} -_020395C2: - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x18 - beq _020395CE - cmp r0, #0x24 - bne _020395E4 -_020395CE: - add r0, sp, #4 - add r1, sp, #0 - bl ov00_021EC11C - cmp r0, #0 - beq _02039600 - bl ov00_021EC210 - add sp, #8 - mov r0, #1 - pop {r3, pc} -_020395E4: - cmp r0, #0x19 - bne _02039600 - add r0, sp, #4 - add r1, sp, #0 - bl ov00_021EC11C - cmp r0, #0 - beq _02039600 - ldr r0, [sp] - cmp r0, #7 - bne _02039600 - add sp, #8 - mov r0, #1 - pop {r3, pc} -_02039600: - mov r0, #0 - add sp, #8 - pop {r3, pc} - nop -_02039608: .word _021D4150 - thumb_func_end sub_020395B0 - - thumb_func_start sub_0203960C -sub_0203960C: ; 0x0203960C - push {r3, lr} - bl ov00_021E5B6C - ldr r1, _02039680 ; =_021D4150 - ldr r3, [r1] - ldr r2, [r3, #0x44] - sub r2, r2, #1 - str r2, [r3, #0x44] - cmp r0, #0x1b - bne _02039660 - ldr r1, [r1] - add r0, r1, #0 - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x21 - bne _02039656 - ldr r0, [r1, #0x60] - bl ov45_0222E804 - cmp r0, #1 - bne _0203964C - ldr r1, _02039680 ; =_021D4150 - mov r2, #1 - ldr r0, [r1] - add r0, #0x64 - strb r2, [r0] - ldr r1, [r1] - ldr r0, _02039684 ; =sub_02039C14 - ldr r1, [r1, #0x44] - bl sub_020381C0 - pop {r3, pc} -_0203964C: - ldr r0, _02039688 ; =sub_02039DC0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039656: - ldr r0, _0203968C ; =sub_02039144 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039660: - cmp r0, #0 - beq _0203966C - ldr r0, _02039690 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_0203966C: - ldr r0, _02039680 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bgt _0203967E - ldr r0, _02039690 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_0203967E: - pop {r3, pc} - .balign 4, 0 -_02039680: .word _021D4150 -_02039684: .word sub_02039C14 -_02039688: .word sub_02039DC0 -_0203968C: .word sub_02039144 -_02039690: .word sub_02038E90 - thumb_func_end sub_0203960C - - thumb_func_start sub_02039694 -sub_02039694: ; 0x02039694 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020396EE - mov r2, #0xd5 - mov r0, #3 - mov r1, #0x30 - lsl r2, r2, #0xa - bl Heap_CreateAtEnd - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _020396EE - ldr r0, _020396F0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r3, r0, #0 - ldr r0, _020396F0 ; =_021D4150 - mov r2, #0xb1 - ldr r0, [r0] - mov r1, #0x30 - ldr r0, [r0, #0x28] - lsl r2, r2, #0xa - add r3, r3, #1 - bl ov00_021E5900 - ldr r0, _020396F4 ; =sub_020399DC - bl ov00_021E6CA4 - bl sub_02035FD8 - mov r1, #0xe1 - ldr r0, _020396F8 ; =sub_0203960C - lsl r1, r1, #4 - bl sub_020381C0 -_020396EE: - pop {r3, pc} - .balign 4, 0 -_020396F0: .word _021D4150 -_020396F4: .word sub_020399DC -_020396F8: .word sub_0203960C - thumb_func_end sub_02039694 - - thumb_func_start sub_020396FC -sub_020396FC: ; 0x020396FC - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl Save_PlayerData_GetProfile - bl sub_02037474 - cmp r0, #0 - beq _02039712 - mov r0, #0 - pop {r3, r4, r5, pc} -_02039712: - mov r0, #1 - bl sub_0201A728 - ldr r2, _02039760 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - mov r1, #0x17 - bl sub_02037C98 - mov r0, #0xf - add r1, r4, #0 - bl Heap_Alloc - ldr r1, _02039764 ; =_021D4150 - ldr r2, [r1] - str r0, [r2] - ldr r0, [r1] - mov r1, #0 - ldr r0, [r0] - add r2, r4, #0 - bl MI_CpuFill8 - ldr r0, _02039764 ; =_021D4150 - mov r1, #0 - ldr r2, [r0] - add r2, #0x4f - strb r1, [r2] - ldr r0, [r0] - str r5, [r0, #0x28] - ldr r0, _02039768 ; =sub_02039694 - bl sub_020381C0 - ldr r0, _02039764 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - pop {r3, r4, r5, pc} - .balign 4, 0 -_02039760: .word 0x00007080 -_02039764: .word _021D4150 -_02039768: .word sub_02039694 - thumb_func_end sub_020396FC - - thumb_func_start sub_0203976C -sub_0203976C: ; 0x0203976C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl Save_PlayerData_GetProfile - bl sub_02037474 - cmp r0, #0 - bne _020397B8 - mov r0, #1 - bl sub_0201A728 - ldr r2, _020397BC ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - mov r1, #0x21 - bl sub_02037C98 - ldr r0, _020397C0 ; =_021D4150 - mov r1, #0 - ldr r2, [r0] - str r1, [r2] - ldr r2, [r0] - str r4, [r2, #0x60] - ldr r2, [r0] - add r2, #0x64 - strb r1, [r2] - ldr r2, [r0] - add r2, #0x4f - strb r1, [r2] - ldr r0, [r0] - str r5, [r0, #0x28] - ldr r0, _020397C4 ; =sub_02039BA0 - bl sub_020381C0 -_020397B8: - pop {r3, r4, r5, pc} - nop -_020397BC: .word 0x00007080 -_020397C0: .word _021D4150 -_020397C4: .word sub_02039BA0 - thumb_func_end sub_0203976C - - thumb_func_start sub_020397C8 -sub_020397C8: ; 0x020397C8 - push {r3, lr} - ldr r0, _020397DC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020397DA - ldr r0, _020397E0 ; =sub_02039D78 - mov r1, #0 - bl sub_020381C0 -_020397DA: - pop {r3, pc} - .balign 4, 0 -_020397DC: .word _021D4150 -_020397E0: .word sub_02039D78 - thumb_func_end sub_020397C8 - - thumb_func_start sub_020397E4 -sub_020397E4: ; 0x020397E4 - ldr r0, _020397F8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020397F0 - mov r0, #0 - bx lr -_020397F0: - add r0, #0x64 - ldrb r0, [r0] - bx lr - nop -_020397F8: .word _021D4150 - thumb_func_end sub_020397E4 - - thumb_func_start sub_020397FC -sub_020397FC: ; 0x020397FC - ldr r0, _02039814 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039810 - ldr r1, [r0, #0x24] - ldr r0, _02039818 ; =sub_02039DC0 - cmp r1, r0 - bne _02039810 - mov r0, #1 - bx lr -_02039810: - mov r0, #0 - bx lr - .balign 4, 0 -_02039814: .word _021D4150 -_02039818: .word sub_02039DC0 - thumb_func_end sub_020397FC - - thumb_func_start sub_0203981C -sub_0203981C: ; 0x0203981C - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039864 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _0203982C - bl GF_AssertFail -_0203982C: - bl sub_020392A0 - cmp r0, #1 - beq _02039838 - bl GF_AssertFail -_02039838: - add r0, r4, #0 - bl ov45_0222F274 - cmp r0, #0 - bne _02039854 - add r0, r4, #0 - mov r1, #4 - bl ov45_0222F028 - ldr r0, _02039868 ; =sub_02039DE4 - mov r1, #0 - bl sub_020381C0 - pop {r4, pc} -_02039854: - add r0, r4, #0 - bl ov45_0222F350 - ldr r0, _02039868 ; =sub_02039DE4 - mov r1, #0 - bl sub_020381C0 - pop {r4, pc} - .balign 4, 0 -_02039864: .word _021D4150 -_02039868: .word sub_02039DE4 - thumb_func_end sub_0203981C - - thumb_func_start sub_0203986C -sub_0203986C: ; 0x0203986C - push {r3, lr} - bl ov45_0222F464 - cmp r0, #1 - bne _0203987A - bl ov45_0222F154 -_0203987A: - bl ov45_0222F70C - ldr r0, _02039888 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02039888: .word sub_02039E30 - thumb_func_end sub_0203986C - - thumb_func_start sub_0203988C -sub_0203988C: ; 0x0203988C - ldr r0, _020398B8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020398B4 - ldr r1, [r0, #0x24] - ldr r0, _020398BC ; =sub_02039DC4 - cmp r1, r0 - bne _020398A0 - mov r0, #2 - bx lr -_020398A0: - ldr r0, _020398C0 ; =sub_02039DE4 - cmp r1, r0 - bne _020398AA - mov r0, #1 - bx lr -_020398AA: - ldr r0, _020398C4 ; =sub_02039E30 - cmp r1, r0 - bne _020398B4 - mov r0, #3 - bx lr -_020398B4: - mov r0, #0 - bx lr - .balign 4, 0 -_020398B8: .word _021D4150 -_020398BC: .word sub_02039DC4 -_020398C0: .word sub_02039DE4 -_020398C4: .word sub_02039E30 - thumb_func_end sub_0203988C - - thumb_func_start sub_020398C8 -sub_020398C8: ; 0x020398C8 - ldr r0, _020398D0 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - bx lr - .balign 4, 0 -_020398D0: .word _021D4150 - thumb_func_end sub_020398C8 - - thumb_func_start sub_020398D4 -sub_020398D4: ; 0x020398D4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039914 ; =_021D4150 - ldr r2, [r0] - cmp r2, #0 - beq _02039904 - add r2, #0x53 - strb r4, [r2] - ldr r2, [r0] - add r2, #0x54 - strb r1, [r2] - cmp r4, #0 - beq _020398FC - bl sub_02037454 - ldr r1, _02039914 ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - strb r0, [r1] - b _02039904 -_020398FC: - ldr r0, [r0] - mov r1, #0 - add r0, #0x4b - strb r1, [r0] -_02039904: - add r0, r4, #0 - bl sub_020356C0 - add r0, r4, #0 - bl sub_020356EC - pop {r4, pc} - nop -_02039914: .word _021D4150 - thumb_func_end sub_020398D4 - - thumb_func_start sub_02039918 -sub_02039918: ; 0x02039918 - ldr r0, _02039938 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _02039934 - add r0, r1, #0 - add r0, #0x5d - ldrb r0, [r0] - cmp r0, #0 - beq _0203992E - mov r0, #1 - bx lr -_0203992E: - add r1, #0x54 - ldrb r0, [r1] - bx lr -_02039934: - mov r0, #0 - bx lr - .balign 4, 0 -_02039938: .word _021D4150 - thumb_func_end sub_02039918 - - thumb_func_start sub_0203993C -sub_0203993C: ; 0x0203993C - ldr r0, _02039950 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203994A - add r0, #0x4e - ldrb r0, [r0] - bx lr -_0203994A: - mov r0, #1 - bx lr - nop -_02039950: .word _021D4150 - thumb_func_end sub_0203993C - - thumb_func_start sub_02039954 -sub_02039954: ; 0x02039954 - ldr r0, _02039968 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039962 - add r0, #0x4f - ldrb r0, [r0] - bx lr -_02039962: - mov r0, #0 - bx lr - nop -_02039968: .word _021D4150 - thumb_func_end sub_02039954 - - thumb_func_start sub_0203996C -sub_0203996C: ; 0x0203996C - ldr r1, _02039978 ; =_021D4150 - ldr r3, _0203997C ; =MI_CpuCopy8 - ldr r1, [r1] - mov r2, #6 - add r1, r1, #4 - bx r3 - .balign 4, 0 -_02039978: .word _021D4150 -_0203997C: .word MI_CpuCopy8 - thumb_func_end sub_0203996C - - thumb_func_start sub_02039980 -sub_02039980: ; 0x02039980 - add r1, r0, #0 - ldr r0, _02039990 ; =_021D4150 - ldr r3, _02039994 ; =MI_CpuCopy8 - ldr r0, [r0] - mov r2, #6 - add r0, r0, #4 - bx r3 - nop -_02039990: .word _021D4150 -_02039994: .word MI_CpuCopy8 - thumb_func_end sub_02039980 - - thumb_func_start sub_02039998 -sub_02039998: ; 0x02039998 - push {r3, lr} - bl sub_0203993C - bl sub_02034044 - pop {r3, pc} - thumb_func_end sub_02039998 - - thumb_func_start sub_020399A4 -sub_020399A4: ; 0x020399A4 - ldr r1, _020399B4 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _020399B0 - add r1, #0x56 - strb r0, [r1] -_020399B0: - bx lr - nop -_020399B4: .word _021D4150 - thumb_func_end sub_020399A4 - - thumb_func_start sub_020399B8 -sub_020399B8: ; 0x020399B8 - push {r3, lr} - bl sub_0201A79C - cmp r0, #0 - beq _020399C6 - mov r0, #0 - pop {r3, pc} -_020399C6: - ldr r0, _020399D8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020399D4 - add r0, #0x56 - ldrb r0, [r0] - pop {r3, pc} -_020399D4: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 -_020399D8: .word _021D4150 - thumb_func_end sub_020399B8 - - thumb_func_start sub_020399DC -sub_020399DC: ; 0x020399DC - push {r3, lr} - add r2, r0, #0 - mov r0, #0 - mov r1, #1 - bl ShowCommunicationError -_020399E8: - b _020399E8 - .balign 4, 0 - thumb_func_end sub_020399DC - - thumb_func_start sub_020399EC -sub_020399EC: ; 0x020399EC - push {r3, lr} - mov r0, #0 - mov r1, #4 - add r2, r0, #0 - bl ShowCommunicationError -_020399F8: - b _020399F8 - .balign 4, 0 - thumb_func_end sub_020399EC - - thumb_func_start sub_020399FC -sub_020399FC: ; 0x020399FC - bx lr - .balign 4, 0 - thumb_func_end sub_020399FC - - thumb_func_start sub_02039A00 -sub_02039A00: ; 0x02039A00 - push {r3, lr} - bl sub_02039918 - cmp r0, #0 - beq _02039A98 - bl sub_02037700 - cmp r0, #0 - bne _02039A36 - bl sub_020393C8 - cmp r0, #0 - bne _02039A36 - bl sub_020395B0 - cmp r0, #0 - bne _02039A36 - ldr r0, _02039A9C ; =_021D4150 - ldr r0, [r0] - add r0, #0x5d - ldrb r0, [r0] - cmp r0, #0 - bne _02039A36 - bl sub_020397FC - cmp r0, #0 - beq _02039A98 -_02039A36: - bl sub_0201A79C - cmp r0, #0 - bne _02039A98 - bl sub_020399B8 - cmp r0, #0 - bne _02039A98 - bl Sound_Stop - ldr r0, _02039A9C ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl Save_Cancel - ldr r1, _02039AA0 ; =gSystem + 0x60 - mov r0, #1 - strb r0, [r1, #8] - ldr r1, _02039A9C ; =_021D4150 - ldr r2, [r1] - add r1, r2, #0 - add r1, #0x5d - ldrb r1, [r1] - cmp r1, #3 - bne _02039A70 - mov r0, #3 - bl sub_020399A4 - pop {r3, pc} -_02039A70: - cmp r1, #5 - bne _02039A7C - mov r0, #5 - bl sub_020399A4 - pop {r3, pc} -_02039A7C: - add r2, #0x4e - ldrb r1, [r2] - cmp r1, #0x19 - beq _02039A8C - cmp r1, #0xf - beq _02039A8C - cmp r1, #0x24 - bne _02039A94 -_02039A8C: - mov r0, #2 - bl sub_020399A4 - pop {r3, pc} -_02039A94: - bl sub_020399A4 -_02039A98: - pop {r3, pc} - nop -_02039A9C: .word _021D4150 -_02039AA0: .word gSystem + 0x60 - thumb_func_end sub_02039A00 - - thumb_func_start sub_02039AA4 -sub_02039AA4: ; 0x02039AA4 - push {r3, lr} - bl sub_02035630 - cmp r0, #0 - bne _02039AB6 - bl sub_02037D78 - cmp r0, #0 - bne _02039ABA -_02039AB6: - mov r0, #1 - pop {r3, pc} -_02039ABA: - bl sub_02034BE4 - cmp r0, #0 - bne _02039AC6 - mov r0, #1 - pop {r3, pc} -_02039AC6: - bl sub_02033974 - cmp r0, #0 - beq _02039AD2 - mov r0, #1 - pop {r3, pc} -_02039AD2: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039AA4 - - thumb_func_start sub_02039AD8 -sub_02039AD8: ; 0x02039AD8 - push {r3, lr} - ldr r1, _02039AF4 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _02039AEE - add r1, #0x5d - strb r0, [r1] - bl sub_02037988 - mov r0, #1 - pop {r3, pc} -_02039AEE: - mov r0, #0 - pop {r3, pc} - nop -_02039AF4: .word _021D4150 - thumb_func_end sub_02039AD8 - - thumb_func_start sub_02039AF8 -sub_02039AF8: ; 0x02039AF8 - ldr r0, _02039B0C ; =_021D4150 - mov r1, #0x1d - ldr r0, [r0] - ldr r3, _02039B10 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B14 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B0C: .word _021D4150 -_02039B10: .word ov00_021E5C84 -_02039B14: .word sub_020369CC - thumb_func_end sub_02039AF8 - - thumb_func_start sub_02039B18 -sub_02039B18: ; 0x02039B18 - ldr r0, _02039B2C ; =_021D4150 - mov r1, #0x23 - ldr r0, [r0] - ldr r3, _02039B30 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B34 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B2C: .word _021D4150 -_02039B30: .word ov00_021E5C84 -_02039B34: .word sub_020369CC - thumb_func_end sub_02039B18 - - thumb_func_start sub_02039B38 -sub_02039B38: ; 0x02039B38 - ldr r0, _02039B4C ; =_021D4150 - mov r1, #0x21 - ldr r0, [r0] - ldr r3, _02039B50 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B54 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B4C: .word _021D4150 -_02039B50: .word ov00_021E5C84 -_02039B54: .word sub_020369CC - thumb_func_end sub_02039B38 - - thumb_func_start sub_02039B58 -sub_02039B58: ; 0x02039B58 - ldr r0, _02039B6C ; =_021D4150 - ldr r3, _02039B70 ; =ov00_021E5C84 - ldr r0, [r0] - mov r1, #0x17 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B74 ; =sub_02036904 - ldr r1, _02039B78 ; =sub_020367A8 - bx r3 - nop -_02039B6C: .word _021D4150 -_02039B70: .word ov00_021E5C84 -_02039B74: .word sub_02036904 -_02039B78: .word sub_020367A8 - thumb_func_end sub_02039B58 - - thumb_func_start sub_02039B7C -sub_02039B7C: ; 0x02039B7C - ldr r0, _02039B90 ; =_021D4150 - ldr r3, _02039B94 ; =ov00_021E5C84 - ldr r0, [r0] - mov r1, #0x13 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B98 ; =sub_02036904 - ldr r1, _02039B9C ; =sub_020367A8 - bx r3 - nop -_02039B90: .word _021D4150 -_02039B94: .word ov00_021E5C84 -_02039B98: .word sub_02036904 -_02039B9C: .word sub_020367A8 - thumb_func_end sub_02039B7C - - thumb_func_start sub_02039BA0 -sub_02039BA0: ; 0x02039BA0 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02039C04 - mov r1, #0x30 - mov r0, #3 - lsl r2, r1, #0xd - bl Heap_CreateAtEnd - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02039C04 - ldr r0, _02039C08 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r3, r0, #0 - ldr r0, _02039C08 ; =_021D4150 - mov r2, #0x16 - ldr r0, [r0] - mov r1, #0x30 - ldr r0, [r0, #0x28] - lsl r2, r2, #0xe - add r3, r3, #1 - bl ov00_021E5900 - ldr r0, _02039C0C ; =sub_020399DC - bl ov00_021E6CA4 - bl sub_02035FD8 - mov r0, #0 - bl ov00_021E70B8 - mov r0, #0 - bl sub_020378E4 - mov r1, #0xe1 - ldr r0, _02039C10 ; =sub_0203960C - lsl r1, r1, #4 - bl sub_020381C0 -_02039C04: - pop {r3, pc} - nop -_02039C08: .word _021D4150 -_02039C0C: .word sub_020399DC -_02039C10: .word sub_0203960C - thumb_func_end sub_02039BA0 - - thumb_func_start sub_02039C14 -sub_02039C14: ; 0x02039C14 - push {r3, lr} - ldr r0, _02039C54 ; =_021D4150 - ldr r2, [r0] - ldr r1, [r2, #0x44] - sub r1, r1, #1 - str r1, [r2, #0x44] - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bgt _02039C32 - ldr r0, _02039C58 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039C32: - mov r0, #1 - bl sub_0203786C - bl sub_02039D3C - cmp r0, #0 - beq _02039C50 - bl ov45_0222E8F4 - cmp r0, #0 - beq _02039C50 - ldr r0, _02039C5C ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039C50: - pop {r3, pc} - nop -_02039C54: .word _021D4150 -_02039C58: .word sub_02038E90 -_02039C5C: .word sub_02039C60 - thumb_func_end sub_02039C14 - - thumb_func_start sub_02039C60 -sub_02039C60: ; 0x02039C60 - push {r3, lr} - bl sub_02039D3C - cmp r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039C60 - - thumb_func_start sub_02039C6C -sub_02039C6C: ; 0x02039C6C - push {r4, lr} - mov r4, #1 - cmp r0, #0xa - blt _02039C84 - cmp r0, #0x14 - bge _02039C84 - ldr r0, _02039CF4 ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039C84: - cmp r0, #0 - bge _02039C94 - ldr r0, _02039CF8 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039C94: - cmp r0, #0x17 - bne _02039CA4 - ldr r0, _02039CFC ; =sub_02039E7C - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039CA4: - cmp r0, #0x18 - bne _02039CC8 - ldr r0, _02039D00 ; =_021D4150 - mov r4, #0 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02039CC0 - ldr r0, _02039CF8 ; =sub_02038E90 - add r1, r4, #0 - bl sub_020381C0 - b _02039CC8 -_02039CC0: - ldr r0, _02039D04 ; =sub_02038EB0 - add r1, r4, #0 - bl sub_020381C0 -_02039CC8: - ldr r0, _02039D00 ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02039CEE - bl sub_02037454 - ldr r1, _02039D00 ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - ldrb r1, [r1] - cmp r1, r0 - beq _02039CEE - ldr r0, _02039CF8 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 -_02039CEE: - add r0, r4, #0 - pop {r4, pc} - nop -_02039CF4: .word sub_02038EB4 -_02039CF8: .word sub_02038E90 -_02039CFC: .word sub_02039E7C -_02039D00: .word _021D4150 -_02039D04: .word sub_02038EB0 - thumb_func_end sub_02039C6C - - thumb_func_start sub_02039D08 -sub_02039D08: ; 0x02039D08 - push {r4, lr} - mov r4, #1 - bl ov45_0222E6C8 - cmp r0, #4 - bhi _02039D34 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02039D20: ; jump table - .short _02039D34 - _02039D20 - 2 ; case 0 - .short _02039D34 - _02039D20 - 2 ; case 1 - .short _02039D34 - _02039D20 - 2 ; case 2 - .short _02039D34 - _02039D20 - 2 ; case 3 - .short _02039D2A - _02039D20 - 2 ; case 4 -_02039D2A: - ldr r0, _02039D38 ; =sub_02039DC0 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 -_02039D34: - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 -_02039D38: .word sub_02039DC0 - thumb_func_end sub_02039D08 - - thumb_func_start sub_02039D3C -sub_02039D3C: ; 0x02039D3C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - bl sub_02039C6C - cmp r0, #0 - beq _02039D50 - bl sub_02039D08 -_02039D50: - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039D3C - - thumb_func_start sub_02039D54 -sub_02039D54: ; 0x02039D54 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0x14 - blt _02039D66 - str r0, [r4] - b _02039D72 -_02039D66: - mov r1, #0 - str r1, [r4] - bl sub_02039C6C - cmp r0, #0 - beq _02039D76 -_02039D72: - bl sub_02039D08 -_02039D76: - pop {r4, pc} - thumb_func_end sub_02039D54 - - thumb_func_start sub_02039D78 -sub_02039D78: ; 0x02039D78 - push {r3, lr} - bl ov45_0222E91C - ldr r0, _02039D88 ; =sub_02039D8C - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02039D88: .word sub_02039D8C - thumb_func_end sub_02039D78 - - thumb_func_start sub_02039D8C -sub_02039D8C: ; 0x02039D8C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - bl sub_02039D08 - bl ov45_0222E944 - cmp r0, #0 - beq _02039DB8 - mov r0, #1 - bl sub_0201A738 - bl sub_020343E4 - ldr r0, _02039DBC ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 - mov r0, #0 - bl sub_0203786C -_02039DB8: - pop {r3, pc} - nop -_02039DBC: .word sub_0203847C - thumb_func_end sub_02039D8C - - thumb_func_start sub_02039DC0 -sub_02039DC0: ; 0x02039DC0 - bx lr - .balign 4, 0 - thumb_func_end sub_02039DC0 - - thumb_func_start sub_02039DC4 -sub_02039DC4: ; 0x02039DC4 - push {r3, lr} - bl sub_02039D3C - bl ov45_0222F254 - cmp r0, #1 - bne _02039DDE - bl ov45_0222F70C - ldr r0, _02039DE0 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 -_02039DDE: - pop {r3, pc} - .balign 4, 0 -_02039DE0: .word sub_02039E30 - thumb_func_end sub_02039DC4 - - thumb_func_start sub_02039DE4 -sub_02039DE4: ; 0x02039DE4 - push {r3, lr} - bl ov45_0222F254 - cmp r0, #1 - bne _02039DFC - bl ov45_0222F70C - ldr r0, _02039E24 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039DFC: - add r0, sp, #0 - bl sub_02039D54 - ldr r0, [sp] - cmp r0, #0 - beq _02039E22 - cmp r0, #0x14 - bne _02039E16 - ldr r0, _02039E28 ; =sub_02039DC4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039E16: - bl ov45_0222F70C - ldr r0, _02039E2C ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039E22: - pop {r3, pc} - .balign 4, 0 -_02039E24: .word sub_02039E30 -_02039E28: .word sub_02039DC4 -_02039E2C: .word sub_02039C60 - thumb_func_end sub_02039DE4 - - thumb_func_start sub_02039E30 -sub_02039E30: ; 0x02039E30 - push {r3, lr} - mov r0, #1 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039E46 - ldr r0, _02039E74 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039E46: - bl sub_02039D08 - cmp r0, #0 - beq _02039E72 - mov r0, #0 - bl ov00_021E6BE4 - cmp r0, #0 - beq _02039E72 - bl ov00_021E6C68 - cmp r0, #0 - beq _02039E72 - bl sub_0203622C - mov r0, #0 - bl sub_020378E4 - ldr r0, _02039E78 ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039E72: - pop {r3, pc} - .balign 4, 0 -_02039E74: .word sub_02038E90 -_02039E78: .word sub_02039C60 - thumb_func_end sub_02039E30 - - thumb_func_start sub_02039E7C -sub_02039E7C: ; 0x02039E7C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039E90 - ldr r0, _02039E98 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039E90: - bl sub_02039D08 - pop {r3, pc} - nop -_02039E98: .word sub_02038E90 - thumb_func_end sub_02039E7C - - thumb_func_start sub_02039E9C -sub_02039E9C: ; 0x02039E9C - ldr r0, _02039EA8 ; =_021D4150 - mov r1, #0x22 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02039EA8: .word _021D4150 - thumb_func_end sub_02039E9C - - thumb_func_start sub_02039EAC -sub_02039EAC: ; 0x02039EAC - mov r1, #0 - str r1, [r0] - bx lr - .balign 4, 0 - thumb_func_end sub_02039EAC - - thumb_func_start sub_02039EB4 -sub_02039EB4: ; 0x02039EB4 - push {r4, r5, r6, lr} - add r4, r2, #0 - add r6, r1, #0 - ldr r1, [r4] - add r5, r0, #0 - cmp r1, #6 - bhi _02039F64 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02039ECE: ; jump table - .short _02039EDC - _02039ECE - 2 ; case 0 - .short _02039EE8 - _02039ECE - 2 ; case 1 - .short _02039F00 - _02039ECE - 2 ; case 2 - .short _02039F28 - _02039ECE - 2 ; case 3 - .short _02039F38 - _02039ECE - 2 ; case 4 - .short _02039F5A - _02039ECE - 2 ; case 5 - .short _02039F60 - _02039ECE - 2 ; case 6 -_02039EDC: - mov r0, #0x6f - bl sub_02037AC0 - mov r0, #1 - str r0, [r4] - b _02039F64 -_02039EE8: - mov r0, #0x6f - bl sub_02037B38 - cmp r0, #0 - beq _02039F64 - add r0, r5, #0 - add r1, r6, #0 - bl Save_PrepareForAsyncWrite - mov r0, #2 - str r0, [r4] - b _02039F64 -_02039F00: - bl Save_WriteFileAsync - add r5, r0, #0 - cmp r5, #2 - bne _02039F0E - bl GF_AssertFail -_02039F0E: - cmp r5, #1 - bne _02039F1E - mov r0, #3 - str r0, [r4] - mov r0, #0x70 - bl sub_02037AC0 - b _02039F64 -_02039F1E: - cmp r5, #3 - bne _02039F64 - mov r0, #7 - str r0, [r4] - b _02039F64 -_02039F28: - mov r0, #0x70 - bl sub_02037B38 - cmp r0, #0 - beq _02039F64 - mov r0, #4 - str r0, [r4] - b _02039F64 -_02039F38: - bl Save_WriteFileAsync - add r5, r0, #0 - cmp r5, #1 - bne _02039F46 - bl GF_AssertFail -_02039F46: - cmp r5, #2 - bne _02039F50 - mov r0, #5 - str r0, [r4] - b _02039F64 -_02039F50: - cmp r5, #3 - bne _02039F64 - mov r0, #7 - str r0, [r4] - b _02039F64 -_02039F5A: - mov r0, #6 - str r0, [r4] - b _02039F64 -_02039F60: - mov r0, #1 - pop {r4, r5, r6, pc} -_02039F64: - mov r0, #0 - pop {r4, r5, r6, pc} - thumb_func_end sub_02039EB4 - - thumb_func_start sub_02039F68 -sub_02039F68: ; 0x02039F68 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - bl sub_02037454 - add r7, r0, #0 - mov r0, #0 - bl sub_02034818 - cmp r0, #0 - beq _02039FB6 - mov r5, #0 - cmp r7, #0 - ble _02039FB6 -_02039F82: - bl sub_0203769C - cmp r5, r0 - beq _02039FB0 - add r0, r5, #0 - bl sub_020348A8 - add r4, r0, #0 - add r0, r5, #0 - bl sub_020348CC - add r6, r0, #0 - add r0, r5, #0 - bl sub_02034818 - bl PlayerProfile_GetLanguage - add r3, r0, #0 - ldr r0, [sp] - add r1, r4, #0 - add r2, r6, #0 - bl sub_02039FB8 -_02039FB0: - add r5, r5, #1 - cmp r5, r7 - blt _02039F82 -_02039FB6: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_02039F68 - - thumb_func_start sub_02039FB8 -sub_02039FB8: ; 0x02039FB8 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bl WiFiHistory_GetLocationSeenState - cmp r0, #0 - bne _02039FD4 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - mov r3, #1 - bl WiFiHistory_SetLocationSeenState -_02039FD4: - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end sub_02039FB8 - - thumb_func_start sub_02039FD8 -sub_02039FD8: ; 0x02039FD8 - push {r3, r4, r5, lr} - mov r1, #0x72 - lsl r1, r1, #4 - bl Heap_Alloc - add r4, r0, #0 - add r0, #0x1f - mov r1, #0x1f - bic r0, r1 - bl DWC_Init - add r5, r0, #0 - add r0, r4, #0 - bl Heap_Free - add r0, r5, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end sub_02039FD8 - - thumb_func_start sub_02039FFC -sub_02039FFC: ; 0x02039FFC - push {r4, lr} - add r4, r0, #0 - bl LoadDwcOverlay - bl LoadOVY38 - add r0, r4, #0 - bl sub_02039FD8 - add r4, r0, #0 - bl UnloadDwcOverlay - bl UnloadOVY38 - add r0, r4, #0 - pop {r4, pc} - thumb_func_end sub_02039FFC - - thumb_func_start sub_0203A01C -sub_0203A01C: ; 0x0203A01C - push {r4, lr} - bl sub_0202C08C - add r4, r0, #0 - bl DWC_CheckUserData - cmp r0, #0 - bne _0203A03A - ldr r1, _0203A03C ; =0x4144414A - add r0, r4, #0 - bl DWC_CreateUserData - add r0, r4, #0 - bl DWC_ClearDirtyFlag -_0203A03A: - pop {r4, pc} - .balign 4, 0 -_0203A03C: .word 0x4144414A - thumb_func_end sub_0203A01C - - thumb_func_start sub_0203A040 -sub_0203A040: ; 0x0203A040 - push {r3, r4, lr} - sub sp, #0xc - bl sub_0202C08C - add r4, r0, #0 - add r1, sp, #0 - bl DWC_CreateExchangeToken - add r0, r4, #0 - add r1, sp, #0 - bl DWC_GetGsProfileId - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end sub_0203A040 - - thumb_func_start sub_0203A05C -sub_0203A05C: ; 0x0203A05C - push {r4, lr} - bl sub_0202C6F4 - bl sub_0202C08C - add r4, r0, #0 - bl DWC_CheckHasProfile - cmp r0, #0 - beq _0203A07E - add r0, r4, #0 - bl DWC_CheckValidConsole - cmp r0, #0 - beq _0203A07E - mov r0, #1 - pop {r4, pc} -_0203A07E: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end sub_0203A05C - - thumb_func_start sub_0203A084 -sub_0203A084: ; 0x0203A084 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r5, r1, #0 - str r2, [sp] - bl sub_0202C6F4 - bl sub_0202C08C - add r6, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - add r4, r0, #0 - mov r1, #0 - ldr r0, [sp] - mvn r1, r1 - str r1, [r0] - add r0, r5, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A0BE - add sp, #8 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A0BE: - mov r7, #0 -_0203A0C0: - add r0, r5, #0 - add r1, r4, #0 - bl DWC_IsEqualFriendData - cmp r0, #0 - beq _0203A0D6 - ldr r0, [sp] - add sp, #8 - str r7, [r0] - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0203A0D6: - add r0, r6, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - cmp r0, #0 - ble _0203A104 - add r0, r6, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - str r0, [sp, #4] - add r0, r6, #0 - add r1, r4, #0 - bl DWC_GetGsProfileId - ldr r1, [sp, #4] - cmp r1, r0 - bne _0203A104 - ldr r0, [sp] - add sp, #8 - str r7, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0203A104: - ldr r0, [sp] - ldr r0, [r0] - cmp r0, #0 - bge _0203A11A - add r0, r4, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A11A - ldr r0, [sp] - str r7, [r0] -_0203A11A: - add r7, r7, #1 - add r4, #0xc - cmp r7, #0x20 - blt _0203A0C0 - mov r0, #2 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_0203A084 - - thumb_func_start sub_0203A128 -sub_0203A128: ; 0x0203A128 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r4, r0, #0 - str r1, [sp] - str r2, [sp, #4] - add r6, r3, #0 - bl sub_0202C6F4 - bl sub_0202C08C - add r7, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - add r5, r0, #0 - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, r7, #0 - bl DWC_CheckFriendKey - cmp r0, #0 - bne _0203A160 - add sp, #0x18 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A160: - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, sp, #0xc - bl DWC_CreateFriendKeyToken - add r0, r7, #0 - add r1, sp, #0xc - bl DWC_GetGsProfileId - cmp r0, #0 - bgt _0203A17C - add sp, #0x18 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A17C: - mov r0, #0 - mvn r0, r0 - str r0, [r6] - mov r4, #0 -_0203A184: - add r0, r7, #0 - add r1, sp, #0xc - bl DWC_GetGsProfileId - str r0, [sp, #8] - add r0, r7, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - ldr r1, [sp, #8] - cmp r1, r0 - bne _0203A1A4 - add sp, #0x18 - str r4, [r6] - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0203A1A4: - ldr r0, [r6] - cmp r0, #0 - bge _0203A1B6 - add r0, r5, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A1B6 - str r4, [r6] -_0203A1B6: - add r4, r4, #1 - add r5, #0xc - cmp r4, #0x20 - blt _0203A184 - mov r0, #2 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_0203A128 - - thumb_func_start sub_0203A1C4 -sub_0203A1C4: ; 0x0203A1C4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r1, #0 - mov r1, #0 - add r5, r0, #0 - str r2, [sp, #4] - str r1, [sp, #0xc] - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - str r0, [sp, #8] - mov r4, #0 - bl sub_02037454 - cmp r0, #0 - ble _0203A278 -_0203A1E8: - bl sub_0203769C - cmp r4, r0 - beq _0203A26C - add r0, r4, #0 - bl sub_0203484C - add r7, r0, #0 - beq _0203A26C - add r0, r5, #0 - add r1, r7, #0 - add r2, sp, #0x10 - bl sub_0203A084 - str r0, [r6] - cmp r0, #3 - bne _0203A20E - bl GF_AssertFail -_0203A20E: - ldr r0, [r6] - cmp r0, #0 - bne _0203A22C - mov r0, #2 - str r0, [sp] - ldr r2, [sp, #0x10] - ldr r3, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - bl sub_0203A280 - add r0, r5, #0 - bl sub_02034A20 - b _0203A26C -_0203A22C: - cmp r0, #1 - bne _0203A264 - bl sub_02039998 - cmp r0, #0 - bne _0203A26C - mov r0, #1 - str r0, [sp] - ldr r2, [sp, #0x10] - ldr r3, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - bl sub_0203A280 - ldr r2, [sp, #0x10] - mov r1, #0xc - add r3, r2, #0 - mul r3, r1 - ldr r1, [sp, #8] - add r0, r7, #0 - add r1, r1, r3 - mov r2, #0xc - bl MI_CpuCopy8 - add r0, r5, #0 - bl sub_02034A20 - b _0203A26C -_0203A264: - cmp r0, #2 - bne _0203A26C - mov r0, #1 - str r0, [sp, #0xc] -_0203A26C: - add r6, r6, #4 - add r4, r4, #1 - bl sub_02037454 - cmp r4, r0 - blt _0203A1E8 -_0203A278: - ldr r0, [sp, #0xc] - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end sub_0203A1C4 - - thumb_func_start sub_0203A280 -sub_0203A280: ; 0x0203A280 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r2, #0 - str r0, [sp] - add r7, r1, #0 - str r3, [sp, #4] - bl sub_0202C6F4 - add r1, r5, #0 - add r4, r0, #0 - bl sub_0202C23C - str r0, [sp, #8] - add r0, r7, #0 - bl sub_02034818 - add r6, r0, #0 - ldr r0, [sp, #0x28] - cmp r0, #2 - beq _0203A2B6 - add r0, r7, #0 - bl sub_0203484C - ldr r1, [sp, #8] - mov r2, #0xc - bl MI_CpuCopy8 -_0203A2B6: - ldr r0, [sp, #0x28] - cmp r0, #0 - bne _0203A2FC - ldr r1, [sp, #4] - add r0, r6, #0 - bl PlayerProfile_GetPlayerName_NewString - str r0, [sp, #0xc] - ldr r2, [sp, #0xc] - add r0, r4, #0 - add r1, r5, #0 - bl sub_0202C270 - ldr r0, [sp, #0xc] - bl String_Delete - add r0, r6, #0 - bl PlayerProfile_GetTrainerGender - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C190 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #0 - bl sub_0202C190 - b _0203A334 -_0203A2FC: - sub r0, r0, #1 - cmp r0, #1 - bhi _0203A334 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C090 - cmp r0, #2 - bne _0203A334 - add r0, r6, #0 - bl PlayerProfile_GetTrainerGender - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C190 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #0 - bl sub_0202C190 -_0203A334: - ldr r1, [sp, #4] - mov r0, #0x78 - bl String_New - str r0, [sp, #0x10] - add r0, r7, #0 - bl sub_02034884 - add r1, r0, #0 - ldr r0, [sp, #0x10] - bl CopyU16ArrayToString - ldr r2, [sp, #0x10] - add r0, r4, #0 - add r1, r5, #0 - bl sub_0202C2B4 - ldr r0, [sp, #0x10] - bl String_Delete - add r0, r6, #0 - bl PlayerProfile_GetAvatar - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #7 - bl sub_0202C190 - ldr r0, [sp] - bl sub_02034A20 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - thumb_func_end sub_0203A280 - - thumb_func_start sub_0203A378 -sub_0203A378: ; 0x0203A378 - push {r4, r5, r6, lr} - add r4, r0, #0 - add r0, r1, #0 - bl sub_0203484C - add r6, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - add r5, r0, #0 - mov r4, #0 -_0203A38E: - add r0, r5, #0 - add r1, r4, #0 - bl sub_0202C23C - add r1, r0, #0 - add r0, r6, #0 - bl DWC_IsEqualFriendData - cmp r0, #0 - beq _0203A3A6 - add r0, r4, #0 - pop {r4, r5, r6, pc} -_0203A3A6: - add r4, r4, #1 - cmp r4, #0x20 - blt _0203A38E - mov r0, #0x20 - pop {r4, r5, r6, pc} - thumb_func_end sub_0203A378 diff --git a/include/dwcaccount.h b/include/dwcaccount.h index bfc58f2ad..f3038c276 100644 --- a/include/dwcaccount.h +++ b/include/dwcaccount.h @@ -3,7 +3,25 @@ #include "global.h" -BOOL DWC_CheckValidConsole(void); -BOOL DWC_CheckHasProfile(void); +typedef struct DWCUserData DWCUserData; + +typedef struct DWCFriendData { + u32 unk0; + u32 unk4; + u32 unk8; +} DWCFriendData; + +BOOL DWC_CheckValidConsole(DWCUserData *userData); +BOOL DWC_CheckHasProfile(DWCUserData *userData); +int DWC_IsValidFriendData(DWCFriendData *friendData); +void DWC_CreateExchangeToken(DWCUserData *, DWCFriendData *); +void DWC_CreateFriendKeyToken(DWCFriendData *friendData, u64 a1); +int DWC_CheckFriendKey(DWCUserData *userData, u64 a1); +int DWC_GetGsProfileId(DWCUserData *userData, DWCFriendData *friendData); +void DWC_CreateUserData(DWCUserData *userData, s32 a1); +void DWC_ClearDirtyFlag(DWCUserData *userData); +int DWC_CheckUserData(DWCUserData *userData); +int DWC_Init(int); +int DWC_IsEqualFriendData(DWCFriendData *friendData0, DWCFriendData *friendData1); #endif // POKEHEARTGOLD_DWCACCOUNT_H diff --git a/include/launch_application_internal.h b/include/launch_application_internal.h index 96acbf3ff..b7acc3004 100644 --- a/include/launch_application_internal.h +++ b/include/launch_application_internal.h @@ -130,7 +130,7 @@ typedef struct UnkStruct_0203F844 { Party *party; PCStorage *pcStorage; Pokedex *pokedex; - UnkStruct_021D2230 *unk14; + WiFiList *unk14; SaveWiFiHistory *wifiHistory; PlayerProfile *profile; SaveData *saveData; @@ -138,7 +138,7 @@ typedef struct UnkStruct_0203F844 { GameStats *gameStats; Bag *bag; BOOL natDexEnabled; - void *unk34; + int unk34; u32 unk38; int unk3C; } UnkStruct_0203F844; diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 7d294a03c..337f5e330 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -23,5 +23,18 @@ void ov00_021E5CBC(BOOL (*arg0)(s32)); void ov00_021E7328(void); BOOL ov00_021E7314(void); void ov00_021E6CCC(UnkStruct_ov44_02231958 *arg0, s32 arg1); +int ov00_021E6BE4(int arg0); +int ov00_021E6C68(void); +int ov00_021E5E54(int arg0); +void ov00_021E6CA4(void (*func)(u32)); +void ov00_021E5900(SaveData *saveData, int arg1, int arg2, int arg3); +void ov00_021E5C84(void (*func0)(), void (*func1)()); +s32 ov00_021E5B6C(void); +void ov00_021EC210(void); +int ov00_021EC11C(s32 *arg0, s32 *arg1); +s32 ov00_021E6690(void); +u32 ov00_021E6D7C(s32 arg0, s32 arg1, s32 arg2); +void ov00_021E6CB8(void); +int ov00_021EC9D4(void); #endif // POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_13_arm_2.h b/include/overlay_13_arm_2.h index 8fe10e68f..1c802202b 100644 --- a/include/overlay_13_arm_2.h +++ b/include/overlay_13_arm_2.h @@ -4,5 +4,6 @@ #include "global.h" BOOL ov13_0222B430(void *, s32, s32); +s32 WM_GetLinkLevel(void); #endif // POKEHEARTGOLD_OVERLAY_13_ARM_2_H diff --git a/include/overlay_44_02232E9C.h b/include/overlay_44_02232E9C.h index ebf089f62..f9b8fede8 100644 --- a/include/overlay_44_02232E9C.h +++ b/include/overlay_44_02232E9C.h @@ -159,7 +159,7 @@ typedef struct UnkStruct_ov44_0222AB24 { } UnkStruct_ov44_0222AB24; struct UnkStruct_ov44_022319EC { - UnkStruct_021D2230 *unk0; + WiFiList *unk0; UnkStruct_ov44_0223197C *unk4; u8 unk8[4]; u8 unkC[0x20]; diff --git a/include/overlay_45_thumb.h b/include/overlay_45_thumb.h new file mode 100644 index 000000000..f7b9b97d1 --- /dev/null +++ b/include/overlay_45_thumb.h @@ -0,0 +1,17 @@ +#ifndef POKEHEARTGOLD_OVERLAY_45_THUMB_H +#define POKEHEARTGOLD_OVERLAY_45_THUMB_H + +void ov45_0222F70C(void); +int ov45_0222F254(void); +int ov45_0222E944(void); +void ov45_0222E91C(void); +int ov45_0222E6C8(void); +int ov45_0222E8F4(void); +void ov45_0222F154(void); +int ov45_0222F464(void); +void ov45_0222F350(int arg0); +void ov45_0222F028(int arg0, int arg1); +int ov45_0222F274(int arg0); +int ov45_0222E804(int arg0); + +#endif // POKEHEARTGOLD_OVERLAY_45_THUMB_H diff --git a/include/overlay_72.h b/include/overlay_72.h index cea238492..67b2351f7 100644 --- a/include/overlay_72.h +++ b/include/overlay_72.h @@ -15,7 +15,7 @@ typedef struct NintendoWifiConnectArgs { Options *options; void *unk14; int unk18; - void *unk1C; + int unk1C; int unk20; int unk24; } NintendoWifiConnectArgs; diff --git a/include/unk_0202C034.h b/include/unk_0202C034.h index 6919865b0..b5de4cb7f 100644 --- a/include/unk_0202C034.h +++ b/include/unk_0202C034.h @@ -1,22 +1,27 @@ #ifndef POKEHEARTGOLD_UNK_0202C034_H #define POKEHEARTGOLD_UNK_0202C034_H +#include "dwcaccount.h" +#include "pm_string.h" #include "save.h" -typedef struct UnkStruct_021D2230 UnkStruct_021D2230; +typedef struct WiFiList WiFiList; void sub_0202C6FC(SaveData *saveData); void sub_0202C714(SaveData *saveData); -UnkStruct_021D2230 *sub_0202C6F4(SaveData *saveData); -int sub_0202C2F8(struct UnkStruct_021D2230 *a0); -void *sub_0202C08C(UnkStruct_021D2230 *a0); -u16 *sub_0202C254(struct UnkStruct_021D2230 *a0, s32 a1); -u16 *sub_0202C298(struct UnkStruct_021D2230 *a0, s32 a1); -s32 sub_0202C090(struct UnkStruct_021D2230 *a0, s32 a1, s32 a2); -void sub_0202C46C(struct UnkStruct_021D2230 *a0); -void sub_0202C4B0(struct UnkStruct_021D2230 *a0, s32 a1); -u16 sub_0202C318(struct UnkStruct_021D2230 *a0); -void sub_0202C190(UnkStruct_021D2230 *a0, int a1, int a2, u8 a3); -void sub_0202C03C(struct UnkStruct_021D2230 *a0); +WiFiList *sub_0202C6F4(SaveData *saveData); +int sub_0202C2F8(struct WiFiList *a0); +DWCUserData *sub_0202C08C(WiFiList *a0); +u16 *sub_0202C254(struct WiFiList *a0, s32 a1); +u16 *sub_0202C298(struct WiFiList *a0, s32 a1); +s32 sub_0202C090(struct WiFiList *a0, s32 a1, s32 a2); +void sub_0202C46C(struct WiFiList *a0); +void sub_0202C4B0(struct WiFiList *a0, s32 a1); +u16 sub_0202C318(struct WiFiList *a0); +void sub_0202C190(WiFiList *a0, int a1, int a2, u32 a3); +void sub_0202C03C(struct WiFiList *a0); +void sub_0202C2B4(struct WiFiList *a0, int a1, String *a2); +void sub_0202C270(struct WiFiList *a0, int a1, String *a2); +DWCFriendData *sub_0202C23C(struct WiFiList *a0, int a1); #endif // POKEHEARTGOLD_UNK_0202C034_H diff --git a/include/unk_02032844.h b/include/unk_02032844.h index eff14cd97..de9123e0a 100644 --- a/include/unk_02032844.h +++ b/include/unk_02032844.h @@ -4,5 +4,11 @@ #include "global.h" u16 sub_02033250(void); +int sub_02033974(void); +void sub_02033A7C(void *arg0); +void sub_02033ACC(int arg0); +void sub_02033908(int arg0); +void sub_02033AA4(int arg0); +void sub_02033A0C(int arg0); #endif // POKEHEARTGOLD_UNK_02032844_H diff --git a/include/unk_02033AE0.h b/include/unk_02033AE0.h index 4e6988a85..d1b050f8e 100644 --- a/include/unk_02033AE0.h +++ b/include/unk_02033AE0.h @@ -9,5 +9,8 @@ u32 sub_020342C4(void); u32 sub_020342C0(void); u32 sub_020342B8(void); u32 sub_02057A08(void); +s32 sub_02033FC4(u8 arg0); +s32 sub_02034044(void); +void sub_02034154(void); #endif // POKEHEARTGOLD_UNK_02033AE0_H diff --git a/include/unk_02034354.h b/include/unk_02034354.h index 484aac929..7afcddabb 100644 --- a/include/unk_02034354.h +++ b/include/unk_02034354.h @@ -1,10 +1,16 @@ #ifndef POKEHEARTGOLD_UNK_02034354_H #define POKEHEARTGOLD_UNK_02034354_H +#include "dwcaccount.h" #include "player_data.h" void sub_02034354(SaveData *saveData, int a1); void sub_020343E4(void); +void sub_02034A20(SaveData *saveData); +DWCFriendData *sub_0203484C(int a0); +int sub_020348A8(int a0); +int sub_020348CC(int a0); +u16 *sub_02034884(int a0); BOOL sub_02034420(void); void sub_02034434(void); void sub_02034638(void); diff --git a/include/unk_02034B0C.h b/include/unk_02034B0C.h index 09846c37d..f57d7e25c 100644 --- a/include/unk_02034B0C.h +++ b/include/unk_02034B0C.h @@ -5,6 +5,17 @@ void sub_02034D8C(void); BOOL sub_02034DB8(void); +BOOL sub_02034BE4(void); +BOOL sub_02035630(void); +void sub_020356EC(int arg0); +int sub_02035664(void); +int sub_02034FE8(void); +int sub_020351AC(int arg0); +int sub_020358B0(void); +void sub_0203528C(void); +void sub_02034B0C(PlayerProfile *playerProfile, int arg1); +void sub_020350A8(int arg0); +void sub_02034DE0(void); int sub_0203511C(); u32 sub_02035150(u32 index); u8 sub_02035184(); diff --git a/include/unk_02035900.h b/include/unk_02035900.h index de950b4f1..c7ccd29b2 100644 --- a/include/unk_02035900.h +++ b/include/unk_02035900.h @@ -4,6 +4,7 @@ #include "global.h" #include "safari_zone.h" +#include "unk_02037C94.h" BOOL sub_02036144(void); BOOL sub_020373B4(u16 arg0); @@ -12,10 +13,10 @@ int sub_02037454(void); BOOL sub_02037474(void); void sub_020374E4(void); void sub_02037504(void); -BOOL sub_0203769C(void); +u16 sub_0203769C(void); +void sub_020378E4(int a0); void sub_020376D4(s32 arg0, SafariZoneAreaSet *areaSet); void sub_020376EC(int arg0); -BOOL sub_02037700(); int sub_0203774C(u32 arg0); int sub_0203775C(u32 arg0); int sub_020378AC(int arg0); @@ -23,9 +24,25 @@ void sub_020380F4(void); void sub_02038104(void); int sub_02037824(int arg0); BOOL sub_02037880(void); -int sub_020378AC(int); +void sub_020369CC(void); +void sub_02036904(void); +void sub_020367A8(void); +void sub_0203622C(void); +void sub_0203786C(int); +void sub_02035FD8(void); +int sub_02035ED8(int arg0, int arg1, int arg2, int arg3); +void sub_02037988(void); +BOOL sub_02037700(void); +void sub_020376E0(int, u8 *); +void sub_02037184(int arg0, u8 *arg1); +void sub_02035FE4(void); +int sub_02035F14(int arg0, int arg1, int arg2); +int sub_020360E4(int arg0); +int sub_020376F8(void); +void sub_0203624C(void); +void sub_02036024(void); +void sub_02036274(void); +void sub_0203778C(MATHRandContext32 *arg0); BOOL sub_02037958(void); -void sub_020380F4(void); -void sub_02038104(void); #endif // POKEHEARTGOLD_UNK_02035900_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index e0008a0e5..835f9da40 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -3,44 +3,192 @@ #include "overlay_44_02232E9C.h" #include "save.h" +#include "save_wifi_history.h" #include "unk_0202C034.h" +typedef struct { + u64 x; + u64 mul; + u64 add; +} MATHRandContext32; + +s32 sub_02037C94(void); +void sub_02037C98(SaveData *saveData, s8 arg1); +void sub_02037D2C(void); BOOL sub_02037D78(void); +void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3); +void sub_02037DD4(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3); +void sub_02037E1C(s8 arg0); +void sub_02037E38(void); +void sub_02037E4C(void); +void sub_02037E9C(void); +s32 sub_02037EC8(void); +void sub_02037F18(SaveData *saveData); +void sub_02037F64(s8 arg0); +s32 sub_02037F94(void); +s32 sub_02037FCC(void); +s32 sub_02038070(void); +void sub_02038094(void); void sub_02037EC0(u32 arg0); void sub_02037FF0(void); void sub_020380B0(void); void sub_020380CC(void); -u32 *sub_020392D8(void); -BOOL sub_020393C8(void); -int sub_0203993C(void); -int sub_02039998(void); -int sub_02039FFC(int a0); -BOOL sub_02039AA4(void); -int sub_020399B8(void); +void sub_020380F4(void); +void sub_02038104(void); +void sub_02038114(SaveData *saveData, s8 arg1); +void sub_02038148(SaveData *saveData, s8 arg1); +void sub_0203817C(void); +void sub_020381C0(void (*func)(), int arg1); +void sub_020381D0(void); +void sub_020381FC(void); +void sub_02038218(void); +void sub_02038260(void); +void sub_0203827C(void); +void sub_02038294(void); +void sub_020382DC(void); +void sub_020382E4(void); +void sub_0203830C(void); +void sub_02038344(void); +void sub_02038358(void); +void sub_02038398(void); +void sub_020383B0(void); +void sub_020383C4(void); +void sub_02038404(void); +void sub_02038408(void); +void sub_02038418(void); +void sub_02038460(void); +void sub_0203847C(void); +void sub_020384B4(void); +void sub_02038508(void); +void sub_02038538(void); +void sub_02038550(void); +void sub_020385B8(void); +void sub_02038610(void); +void sub_02038668(void); +void sub_02038680(void); +void sub_020386AC(void); +void sub_02038710(void); +void sub_0203876C(void); +void sub_020387E8(void); +void sub_02038800(void); +void sub_02038804(void); +void sub_02038854(void); +void sub_020388A8(void); +void sub_020388E0(void); +void sub_02038918(s8 arg0); +void sub_0203893C(void); +void sub_0203894C(s8 arg0); +void sub_0203897C(void); +void sub_0203898C(s8 arg0); +void sub_020389BC(void); +void sub_020389D4(void); +void sub_02038A10(void); +void sub_02038A94(void); +void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2); +void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2); +s32 sub_02038C18(void); +void sub_02038C1C(s8 arg0); +void sub_02038C34(void); +void sub_02038C3C(u32 arg0, s32 arg1); +void sub_02038CC4(void); +void sub_02038CE8(void); +void sub_02038D28(SaveData *saveData); +void sub_02038D64(void); +u8 sub_02038D80(void); BOOL sub_02038D90(void); -BOOL sub_0203A05C(SaveData *saveData); -void sub_02039F68(void *); -void sub_02039AD8(int); -void *sub_0203A040(UnkStruct_021D2230 *a0); -void sub_020398D4(int a0, int a1); -void sub_02039B58(void); -void sub_02039358(void); -BOOL sub_020390C4(void); -void sub_020378E4(int a0); -void sub_02039B18(void); -void sub_02039AF8(void); -s32 sub_02039080(s32); -s32 sub_02039264(void); -UnkStruct_ov44_0223197C *sub_020398C8(void); -void sub_020393B4(void); +void sub_02038E00(void); +void sub_02038E48(void); +void sub_02038E90(void); +void sub_02038E94(void); +void sub_02038EB0(void); +void sub_02038EB4(void); +void sub_02038EB8(void); + +void sub_02038F74(u32 arg0, s32 arg1, s32 arg2); +void sub_02038F9C(void); +void sub_0203900C(void); +s32 sub_02039080(s32 arg0); +s32 sub_020390C4(void); +void sub_02039144(void); +void sub_020391D0(void); +void sub_02039220(void); +u8 sub_02039264(void); BOOL sub_02039274(void); -void sub_02039330(void); -void sub_0203A1C4(SaveData *saveData, void *a1, enum HeapID heapID); -void sub_02039B7C(void); BOOL sub_020392A0(void); -UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, int a1); +u32 *sub_020392D8(void); +void sub_020392F4(void); +void sub_02039330(void); +void sub_02039358(void); void sub_02039378(void); -void sub_02039FD8(enum HeapID heapID); +void sub_020393B4(void); +BOOL sub_020393C8(void); +void sub_02039418(SaveData *saveData); +void sub_0203946C(void); +void sub_020394A0(SaveData *saveData); +void sub_020394F4(void); +void sub_02039528(SaveData *saveData); +void sub_0203957C(void); +BOOL sub_020395B0(void); +void sub_0203960C(void); +void sub_02039694(void); +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1); +void sub_0203976C(SaveData *saveData, s32 arg1); +void sub_020397C8(void); +u8 sub_020397E4(void); +BOOL sub_020397FC(void); +void sub_0203981C(s32 arg0); +void sub_0203986C(void); +s32 sub_0203988C(void); +UnkStruct_ov44_0223197C *sub_020398C8(void); +void sub_020398D4(s8 arg0, s8 arg1); +BOOL sub_02039918(void); +u8 sub_0203993C(void); +u8 sub_02039954(void); +void sub_0203996C(void *arg0); +void sub_02039980(void *arg0); +int sub_02039998(void); + +void sub_020399A4(s8 arg0); +u8 sub_020399B8(void); +void sub_020399DC(u32 errorCode); +void sub_020399EC(void); +void sub_020399FC(void); +void sub_02039A00(void); +BOOL sub_02039AA4(void); +BOOL sub_02039AD8(int arg0); +void sub_02039AF8(void); +void sub_02039B18(void); +void sub_02039B38(void); +void sub_02039B58(void); +void sub_02039B7C(void); +void sub_02039BA0(void); +void sub_02039C14(void); +void sub_02039C60(void); +s32 sub_02039C6C(s32 arg0); +s32 sub_02039D08(void); +int sub_02039D3C(void); +void sub_02039D54(s32 *arg0); +void sub_02039D78(void); +void sub_02039D8C(void); +void sub_02039DC0(void); +void sub_02039DC4(void); +void sub_02039DE4(void); +void sub_02039E30(void); +void sub_02039E7C(void); void sub_02039E9C(void); +void sub_02039EAC(s32 *arg0); +s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2); +void sub_02039F68(SaveWiFiHistory *arg0); +void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3); +s32 sub_02039FD8(enum HeapID heapID); +s32 sub_02039FFC(enum HeapID heapID); +void sub_0203A01C(WiFiList *arg0); +int sub_0203A040(WiFiList *arg0); +BOOL sub_0203A05C(SaveData *saveData); +s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2); +int sub_0203A128(SaveData *saveData, u64 arg1, int *arg2); +s32 sub_0203A1C4(SaveData *saveData, s32 *arg1, enum HeapID heapID); +void sub_0203A280(SaveData *saveData, s32 arg1, s32 arg2, enum HeapID heapID, u32 arg4); +s32 sub_0203A378(SaveData *saveData, s32 arg1); #endif // POKEHEARTGOLD_UNK_02037C94_H diff --git a/include/unk_0203A3B0.h b/include/unk_0203A3B0.h index 497822d0d..14d995a1d 100644 --- a/include/unk_0203A3B0.h +++ b/include/unk_0203A3B0.h @@ -5,5 +5,7 @@ void sub_0203A880(void); void sub_0203A914(void); void sub_0203A964(void); void sub_0203A994(int a0); +void sub_0203A930(int a0); +void sub_0203A914(void); #endif // POKEHEARTGOLD_UNK_0203A3B0_H diff --git a/include/unk_020915B0.h b/include/unk_020915B0.h index 184cd9930..c2ef1ca7c 100644 --- a/include/unk_020915B0.h +++ b/include/unk_020915B0.h @@ -3,5 +3,7 @@ void UnloadDwcOverlay(void); void LoadDwcOverlay(void); +void UnloadOVY38(void); +void LoadOVY38(void); #endif // POKEHEARTGOLD_UNK_020915B0_H diff --git a/main.lsf b/main.lsf index 758a65515..adc346317 100644 --- a/main.lsf +++ b/main.lsf @@ -151,7 +151,7 @@ Static main Object asm/unk_02034B0C.o Object asm/unk_02035900.o Object asm/unk_020379A0.o - Object asm/unk_02037C94.o + Object src/unk_02037C94.o Object asm/unk_0203A3B0.o Object src/communication_error.o Object src/unk_0203AC88.o diff --git a/src/main.c b/src/main.c index 2f4fc4f30..efb996a17 100644 --- a/src/main.c +++ b/src/main.c @@ -63,7 +63,7 @@ void NitroMain(void) { sub_02005D00(); InitSoundData(Save_Chatot_Get(_02111868.unk_10.saveData), Save_PlayerData_GetOptionsAddr(_02111868.unk_10.saveData)); Init_Timer3(); - if (sub_02039FFC(3) == 3) { + if (sub_02039FFC(HEAP_ID_3) == 3) { ShowWFCUserInfoWarning(HEAP_ID_3, 0); } if (!Save_FlashChipIsDetected(_02111868.unk_10.saveData)) { diff --git a/src/overlay_44_0222CDAC.c b/src/overlay_44_0222CDAC.c index 4d5b89c68..11327487a 100644 --- a/src/overlay_44_0222CDAC.c +++ b/src/overlay_44_0222CDAC.c @@ -1419,8 +1419,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { } else { Sound_SetSceneAndPlayBGM(11, SEQ_GS_WIFI_ACCESS, 1); ov44_0222B0B0(arg0); - sub_0202C08C(arg0->unk0); - if (DWC_CheckHasProfile() == 0) { + if (!DWC_CheckHasProfile(sub_0202C08C(arg0->unk0))) { SetBgPriority(0, 3); SetBgPriority(1, 0); SetBgPriority(3, 0); @@ -1429,8 +1428,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { arg0->unk188 = ov44_02231A28(arg0->unk15C, &ov44_02235384, 0); arg0->unk348 = 6; } else { - sub_0202C08C(arg0->unk0); - if (DWC_CheckValidConsole() == 0) { + if (!DWC_CheckValidConsole(sub_0202C08C(arg0->unk0))) { ov44_0222F66C(arg0, 20); arg0->unk348 = 3; } else { @@ -3482,9 +3480,9 @@ s32 ov44_0222E9FC(UnkStruct_ov44_022319EC *arg0) { } s32 ov44_0222EA2C(UnkStruct_ov44_022319EC *arg0, s32 arg1) { - ListMenuTemplate spC; // Unknown struct of size 0x20 + s32 spC[8]; // Unknown struct of size 0x20 if ((ov44_0222E7C4(arg0) == 0) && (sub_02037B38(18) != 0) && (ov44_0222E9FC(arg0) == 1)) { - sub_0203A1C4(arg0->saveData, &spC, HEAP_ID_53); + sub_0203A1C4(arg0->saveData, spC, HEAP_ID_53); ov44_0222F7BC(arg0); u32 temp_r0 = ov44_02229F00(arg0, ov44_02231958(arg0, ov00_021E6EBC())); u32 var_r1 = temp_r0; @@ -4589,7 +4587,7 @@ void ov44_02230D8C(UnkStruct_ov44_022319EC *arg0, enum HeapID heapID) { } void ov44_02230E5C(UnkStruct_ov44_022319EC *arg0, enum HeapID heapID) { - UnkStruct_021D2230 *temp_r6 = sub_0202C6F4(arg0->saveData); + WiFiList *temp_r6 = sub_0202C6F4(arg0->saveData); s32 temp_r4 = arg0->unkB1C.unk71 - 1; // PLAZA GAMES PLAYED ReadMsgDataIntoString(arg0->unk168, msg_0778_00070, arg0->unk178); diff --git a/src/unk_02037C94.c b/src/unk_02037C94.c new file mode 100644 index 000000000..91e24b033 --- /dev/null +++ b/src/unk_02037C94.c @@ -0,0 +1,1932 @@ +#include "unk_02037C94.h" + +#include "communication_error.h" +#include "dwcaccount.h" +#include "overlay_00_thumb.h" +#include "overlay_13_arm_2.h" +#include "overlay_45_thumb.h" +#include "system.h" +#include "unk_02005D10.h" +#include "unk_02032844.h" +#include "unk_02033AE0.h" +#include "unk_02034354.h" +#include "unk_02034B0C.h" +#include "unk_02035900.h" +#include "unk_020379A0.h" +#include "unk_0203A3B0.h" +#include "unk_020915B0.h" + +typedef struct UnkStruct_sub_02039C6C { + UnkStruct_ov44_0223197C *unk0; + u8 unk4[8]; + MATHRandContext32 mathRandContext; + void (*unk24)(void); + SaveData *unk28; + PlayerProfile *unk2C; + s32 unk30; + u32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + u16 unk48; + u8 unk4A; + u8 unk4B; + u8 unk4C; + u8 unk4D; + u8 unk4E; + u8 unk4F; + u8 unk50; + s8 unk51; + u8 unk52; + u8 unk53; + u8 unk54; + u8 unk55; + u8 unk56; + u8 unk57; + u8 unk58; + u8 unk59[3]; + u8 unk5C; + u8 unk5D; + u8 unk5E; + u8 unkEF; + s32 unk60; + u8 unk64; +} UnkStruct_sub_02039C6C; + +UnkStruct_sub_02039C6C *_021D4150 = NULL; + +void (*const _020F6A90[3])(void) = { sub_0203827C, sub_02038398, NULL }; + +static u8 _0210F904[] = " GAME"; +static u8 _0210F90C[] = "FREAK"; +static u8 _0210F914[] = " FULL"; + +s32 sub_02037C94(void) { + return 70; +} + +void sub_02037C98(SaveData *saveData, s8 arg1) { + if (_021D4150 == NULL) { + GF_ASSERT(saveData); + sub_02034D8C(); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + ; + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); + _021D4150->unk44 = 50; + _021D4150->unk52 = 1; + _021D4150->unk28 = saveData; + _021D4150->unk2C = Save_PlayerData_GetProfile(saveData); + _021D4150->unk4A = 2; + _021D4150->unk4C = 0; + _021D4150->unk57 = 0; + _021D4150->unk4E = arg1; + sub_0203778C(&_021D4150->mathRandContext); + sub_0203410C(0, 0, 0); + if ((arg1 != 9) && (arg1 != 17) && (arg1 != 15)) { + sub_0203A880(); + } + } +} + +void sub_02037D2C(void) { + if (_021D4150) { + sub_02034154(); + if (_021D4150->unk0) { + Heap_Free(_021D4150->unk0); + } + if (sub_02039998()) { + Heap_Destroy(HEAP_ID_48); + } + sub_0203A914(); + sub_02034DE0(); + Heap_Free(_021D4150); + Heap_Destroy(HEAP_ID_15); + _021D4150 = NULL; + } +} + +BOOL sub_02037D78(void) { + return _021D4150 ? TRUE : FALSE; +} + +void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { + if (!sub_02037474()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); + _021D4150->unk4F = arg2; + _021D4150->unk30 = arg3; + sub_020381C0(sub_02038218, 0); + } +} + +void sub_02037DD4(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { + if (!sub_02037474()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); + _021D4150->unk4F = arg2; + _021D4150->unk30 = arg3; + sub_020381C0(sub_02038294, 0); + } +} + +void sub_02037E1C(s8 arg0) { + _021D4150->unk4D = arg0; + sub_020381C0(sub_020382E4, 0); +} + +void sub_02037E38(void) { + sub_02036274(); + sub_020381C0(sub_020383B0, 0); +} + +void sub_02037E4C(void) { + if (_021D4150->unk40 > 0) { + _021D4150->unk40--; + } else if (!_021D4150->unk40) { + sub_020399EC(); + } + if (_021D4150->unk44) { + _021D4150->unk44--; + } + if (sub_02034FE8() && !_021D4150->unk44) { + sub_02036024(); + sub_020381C0(sub_02038408, 0); + } +} + +void sub_02037E9C(void) { + if (_021D4150) { + _021D4150->unk40 = 1800; + sub_020381C0(sub_02037E4C, 5); + } +} + +void sub_02037EC0(u32 arg0) { + sub_02033A0C(arg0); +} + +s32 sub_02037EC8(void) { + void (*const sp0[3])(void); + ARRAY_ASSIGN(sp0, _020F6A90); + void (*func)(void) = _021D4150->unk24; + if (!_021D4150) { + return 0; + } + for (int i = 0; sp0[i] != NULL; i++) { + if (func == sp0[i]) { + return 1; + } + } + return 0; +} + +void sub_02037F18(SaveData *saveData) { + if (_021D4150 == NULL) { + if (!Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800)) { + sub_020399EC(); + } + sub_02037C98(saveData, 9); + _021D4150->unk4E = 9; + _021D4150->unk4F = 0; + sub_020381C0(sub_020384B4, 0); + } +} + +void sub_02037F64(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk48 = 3; + sub_02033AA4(1); + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +s32 sub_02037F94(void) { + if (_021D4150 == NULL) { + return -1; + } + if (_021D4150->unk24 == sub_020387E8) { + return 1; + } + if (_021D4150->unk24 == sub_02038800) { + return -1; + } else { + return 0; + } +} + +s32 sub_02037FCC(void) { + if (_021D4150 == NULL) { + return 0; + } + if (_021D4150->unk24 == sub_02038854) { + return 1; + } + return 0; +} + +void sub_02037FF0(void) { + sub_02033AA4(0); + if ((_021D4150->unk53 != 1) || (_021D4150->unk54 != 1) || (_021D4150->unk4E == 9)) { + sub_020398D4(0, 0); + } + sub_0203A914(); + _021D4150->unk4E = 9; + _021D4150->unk57 = 0; + sub_02033908(_021D4150->unk4A); + if (!sub_0203769C()) { + sub_02033ACC(1); + sub_020381C0(sub_02038418, 15); + } else { + sub_020381C0(sub_02038460, 5); + } +} + +s32 sub_02038070(void) { + if (_021D4150 == NULL) { + return 1; + } else if (_021D4150->unk24 != sub_02038538) { + return 1; + } + return 0; +} + +void sub_02038094(void) { + if (_021D4150) { + sub_020381C0(sub_0203847C, 5); + } +} + +void sub_020380B0(void) { + if (_021D4150) { + _021D4150->unk57 = 1; + sub_02033AA4(1); + } +} + +void sub_020380CC(void) { + if (_021D4150) { + _021D4150->unk57 = 1; + sub_02033AA4(1); + sub_020381C0(sub_020388A8, 0); + } +} + +void sub_020380F4(void) { + _021D4150->unk4E = 18; +} + +void sub_02038104(void) { + _021D4150->unk4E = 9; +} + +void sub_02038114(SaveData *saveData, s8 arg1) { + if (!sub_02037474()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); + sub_020381C0(sub_02038E00, 0); + } +} + +void sub_02038148(SaveData *saveData, s8 arg1) { + if (!sub_02037474()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); + sub_020381C0(sub_02038E48, 0); + } +} + +void sub_0203817C(void) { + if (_021D4150 && _021D4150->unk24) { + _021D4150->unk24(); + } + if (sub_02039998()) { + sub_0203A930(3 - ov00_021EC9D4()); + } else if (sub_02035650()) { + sub_0203A930(3 - WM_GetLinkLevel()); + } +} + +void sub_020381C0(void (*arg0)(), int arg1) { + _021D4150->unk24 = arg0; + _021D4150->unk44 = arg1; +} + +void sub_020381D0(void) { + if (!sub_02039998()) { + if (!sub_02035664()) { + return; + } else { + sub_020374E4(); + sub_020350A8(1); + } + } + sub_020381C0(sub_02038404, 0); +} + +void sub_020381FC(void) { + if (sub_02034FE8()) { + sub_0203622C(); + sub_020381C0(sub_020381D0, 0); + } +} + +void sub_02038218(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, _021D4150->unk30); + if (sub_02035ED8(1, 1, 512, 1)) { + sub_02035FD8(); + sub_020381C0(sub_02038260, 0); + } + } +} + +void sub_02038260(void) { + if (sub_020373B4(sub_0203769C()) != FALSE) { + sub_020381C0(sub_0203827C, 0); + } +} + +void sub_0203827C(void) { + if (!sub_02037474()) { + sub_020381C0(sub_02038408, 0); + } +} + +void sub_02038294(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, _021D4150->unk30); + if (sub_02035F14(1, 1, 512)) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 0); + } + } +} + +void sub_020382DC(void) { + sub_0203528C(); +} + +void sub_020382E4(void) { + sub_0203528C(); + if (sub_020360E4(_021D4150->unk4D)) { + sub_020381C0(sub_0203830C, 10); + } +} + +void sub_0203830C(void) { + if (sub_02037700()) { + sub_020381C0(sub_02038344, 0); + } + if (sub_020373B4(sub_0203769C()) && sub_0203769C()) { + sub_020381C0(sub_02038398, 0); + } +} + +void sub_02038344(void) { + sub_02034FE8(); + sub_020381C0(sub_02038358, 2); +} + +void sub_02038358(void) { + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + if (sub_02035664() && sub_02035F14(0, 1, 512)) { + sub_02035FD8(); + sub_020381C0(sub_020382E4, 10); + } +} + +void sub_02038398(void) { + if (!sub_02037474()) { + sub_020381C0(sub_02038408, 0); + } +} + +void sub_020383B0(void) { + sub_02034FE8(); + sub_020381C0(sub_020383C4, 2); +} + +void sub_020383C4(void) { + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + if (sub_02035664() && sub_02035F14(0, 1, 512)) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 10); + } +} + +void sub_02038404(void) { +} + +void sub_02038408(void) { + if (!sub_02037474()) { + sub_02037D2C(); + } +} + +void sub_02038418(void) { + if (sub_02037454() <= 1) { + sub_02033ACC(0); + sub_0203624C(); + sub_020381C0(sub_02038538, 0); + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + sub_02033ACC(0); + sub_0203624C(); + sub_020381C0(sub_02038538, 0); +} + +void sub_02038460(void) { + if (sub_02034FE8()) { + sub_0203622C(); + sub_020381C0(sub_02038538, 0); + } +} + +void sub_0203847C(void) { + if (_021D4150->unk44) { + _021D4150->unk44--; + } + if (sub_02034FE8() && !_021D4150->unk44) { + sub_02036024(); + sub_020381C0(sub_02038408, 0); + } +} + +void sub_020384B4(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02033908(_021D4150->unk4A); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035F14(1, 1, 512)) { + sub_02035FD8(); + sub_020381C0(sub_02038508, 64); + } + } +} + +void sub_02038508(void) { + sub_0203528C(); + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + if (sub_02034FE8()) { + sub_020381C0(sub_02038550, 0); + } +} + +void sub_02038538(void) { + if (sub_02034FE8()) { + sub_020381C0(sub_02038550, 0); + } +} + +void sub_02038550(void) { + if (sub_02035664() && sub_02035ED8(0, _021D4150->unk52, 512, 1)) { + // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); + MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; + mathRandContext->x = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; + // + sub_02035FD8(); + _021D4150->unk52 = 0; + sub_020381C0(&sub_020385B8, 10000); + } +} + +void sub_020385B8(void) { + if (!sub_020358B0()) { + if (sub_020376F8()) { + _021D4150->unk52 = 1; + sub_0203A880(); + sub_020381C0(sub_02038854, 0); + return; + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + } + if (sub_02034FE8()) { + sub_020381C0(sub_02038610, 0); + } +} + +void sub_02038610(void) { + if (sub_02035664() && sub_02035F14(0, 0, 512)) { + sub_02035FD8(); + // Equivalent to u32 rand = MATH_Rand32(&_021D4150->mathRandContext, 32) + MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; + u64 r0 = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; + mathRandContext->x = r0; + u32 rand = (u32)(((mathRandContext->x >> 32) * 32) >> 32); + // + sub_020381C0(sub_02038508, rand); + } +} + +void sub_02038668(void) { + if (sub_02034FE8()) { + sub_020381C0(sub_02038680, 0); + } +} + +void sub_02038680(void) { + if (sub_02035664() && sub_02035F14(0, 0, 512)) { + sub_02035FD8(); + sub_020381C0(sub_020386AC, 100); + } +} + +void sub_020386AC(void) { + if (sub_020351AC(_021D4150->unk4D) && sub_020360E4(_021D4150->unk4D)) { + sub_020381C0(sub_02038710, 100); + return; + } + if (sub_02037700()) { + sub_020381C0(sub_02038804, 0); + return; + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_02038710(void) { + if (sub_02037700()) { + sub_020381C0(sub_02038804, 0); + return; + } + if (sub_020373B4(sub_0203769C()) != FALSE) { + _021D4150->unk4C = 0; + sub_020381C0(sub_0203876C, 120); + return; + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_0203876C(void) { + if (sub_02037700()) { + sub_020381C0(sub_02038804, 0); + return; + } + if (_021D4150->unk4C == 2) { + sub_020381C0(sub_02038800, 0); + return; + } + if (_021D4150->unk4C == 1) { + sub_02034434(); + sub_020381C0(sub_020387E8, 0); + return; + } + if (_021D4150->unk44 > 110) { + sub_020376E0(6, _0210F90C); + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_020387E8(void) { + if (sub_02037700()) { + sub_020381C0(sub_02038804, 0); + } +} + +void sub_02038800(void) { +} + +void sub_02038804(void) { + _021D4150->unk4C = 0; + if (sub_02034FE8()) { + if (_021D4150->unk48) { + _021D4150->unk48--; + sub_020381C0(sub_02038680, 0); + return; + } + sub_020381C0(sub_02038800, 0); + } +} + +void sub_02038854(void) { + if (!sub_020376F8()) { + if (!sub_02039918() && sub_02034FE8()) { + sub_020381C0(sub_02038610, 0); + } + } else if (!sub_0203769C()) { + sub_02034638(); + } + if (sub_02037700() && !sub_02039918()) { + sub_020381C0(sub_02038804, 0); + } +} + +void sub_020388A8(void) { + if (sub_02035664() && sub_02035ED8(0, _021D4150->unk52, 512, 0)) { + sub_02035FD8(); + sub_020381C0(sub_02038404, 0); + } +} + +void sub_020388E0(void) { + u8 sp[2]; + _021D4150->unk4E = 13; + if (!sub_0203769C()) { + sp[1] = 0; + sub_020376E0(10, &sp[1]); + return; + } + sp[0] = 0; + sub_020376E0(10, sp); +} + +void sub_02038918(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk48 = 3; + sub_020381C0(sub_020389BC, 0); +} + +void sub_0203893C(void) { + _021D4150->unk4E = 7; +} + +void sub_0203894C(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk4E = 7; + _021D4150->unk48 = 3; + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +void sub_0203897C(void) { + _021D4150->unk4E = 26; +} + +void sub_0203898C(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk4E = 26; + _021D4150->unk48 = 3; + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +void sub_020389BC(void) { + if (sub_02034FE8()) { + sub_020381C0(sub_020389D4, 0); + } +} + +void sub_020389D4(void) { + if (sub_02035664()) { + _021D4150->unk4E = 13; + if (sub_02035F14(0, 0, 512)) { + sub_02035FE4(); + sub_020381C0(sub_02038A10, 100); + } + } +} + +void sub_02038A10(void) { + if (sub_020351AC(_021D4150->unk4D) && sub_020360E4(_021D4150->unk4D)) { + sub_020381C0(sub_02038A94, 100); + return; + } + if (sub_02037700() || !_021D4150->unk44) { + _021D4150->unk48--; + if (!_021D4150->unk48) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); + return; + } + if (_021D4150->unk44) { + _021D4150->unk44--; + } +} + +void sub_02038A94(void) { + if (_021D4150->unk44 > 90) { + _021D4150->unk44--; + return; + } + if (sub_02037700()) { + _021D4150->unk48--; + if (!_021D4150->unk48) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); + return; + } + if (sub_020373B4(sub_0203769C()) != FALSE) { + sub_020381C0(sub_020387E8, 0); + return; + } + if (_021D4150->unk44) { + _021D4150->unk44--; + return; + } + _021D4150->unk48--; + if (!_021D4150->unk48) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); +} + +void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2) { + u32 i; + if (!sub_0203769C()) { + BOOL var_r3 = TRUE; + for (i = 0; i < 6; i++) { + if (_0210F90C[i] != arg2[i]) { + var_r3 = FALSE; + break; + } + } + if (var_r3 && !_021D4150->unk57) { + _0210F904[0] = arg0; + sub_02037184(7, _0210F904); + } else { + _0210F914[0] = arg0; + sub_02037184(7, _0210F914); + } + } +} + +void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2) { + u32 i; + BOOL var_r4 = TRUE; + for (i = 1; i < 6; i++) { + if (_0210F904[i] != arg2[i]) { + var_r4 = FALSE; + break; + } + } + if (var_r4) { + u8 temp_r4 = *arg2; + if (temp_r4 == sub_0203769C()) { + _021D4150->unk4C = 1; + } + } else { + var_r4 = TRUE; + for (i = 1; i < 6; i++) { + if (_0210F914[i] != arg2[i]) { + var_r4 = FALSE; + break; + } + } + if (var_r4) { + u8 temp_r4_2 = *arg2; + u8 r0 = sub_0203769C(); + if (temp_r4_2 == r0) { + _021D4150->unk4C = 2; + } + } + } +} + +s32 sub_02038C18(void) { + return 6; +} + +void sub_02038C1C(s8 arg0) { + if (_021D4150) { + _021D4150->unk4A = arg0; + sub_02033908(arg0); + } +} + +void sub_02038C34(void) { + sub_0203528C(); +} + +void sub_02038C3C(u32 arg0, s32 arg1) { + switch (arg0) { + case 0x333: + if (arg1 == 15) { + _021D4150->unk58 = (1 | _021D4150->unk58); + } + break; + case 0x400318: + _021D4150->unk58 = (1 | _021D4150->unk58); + break; + case 0x400131: + _021D4150->unk58 = (2 | _021D4150->unk58); + break; + case 0x400286: + _021D4150->unk58 = (4 | _021D4150->unk58); + break; + } +} + +void sub_02038CC4(void) { + if (sub_02035F14(1, 1, 32)) { + sub_02035FD8(); + sub_020381C0(sub_02038C34, 0); + } +} + +void sub_02038CE8(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 0); + sub_02034354(_021D4150->unk28, 0); + sub_02033A7C(sub_02038C3C); + sub_020381C0(sub_02038CC4, 0); + } +} + +void sub_02038D28(SaveData *arg0) { + if (!sub_02037474()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7000); + sub_02037C98(arg0, 17); + _021D4150->unk4F = 0; + sub_020381C0(sub_02038CE8, 0); + } +} + +void sub_02038D64(void) { + if (_021D4150) { + sub_020381C0(sub_0203847C, 5); + } +} + +u8 sub_02038D80(void) { + return _021D4150->unk58; +} + +BOOL sub_02038D90(void) { + sub_02037988(); + if (_021D4150 == NULL) { + return TRUE; + } + if ((_021D4150->unk4E == 24) || (_021D4150->unk4E == 25) || (_021D4150->unk4E == 36)) { + ov00_021E6CB8(); + return TRUE; + } + if (sub_02039998()) { + if (_021D4150->unk4E == 33) { + sub_020381C0(sub_02039D78, 0); + } else { + sub_020381C0(sub_020392F4, 0); + } + } else { + sub_020381C0(sub_020381FC, 0); + } + return FALSE; +} + +void sub_02038E00(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035ED8(1, 1, 512, 1)) { + sub_02035FD8(); + sub_020381C0(sub_02038260, 0); + } + } +} + +void sub_02038E48(void) { + if (sub_02034DB8()) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035F14(1, 1, 512)) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 0); + } + } +} + +void sub_02038E90(void) { +} + +void sub_02038E94(void) { + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02038EB0(void) { +} + +void sub_02038EB4(void) { +} + +void sub_02038EB8(void) { + sub_0203786C(1); + s32 temp_r0 = ov00_021E5E54(0); + if ((temp_r0 >= 10) && (temp_r0 < 20)) { + sub_020381C0(sub_02038EB4, 0); + } else if (temp_r0 < 0) { + sub_020381C0(sub_02038E90, 0); + } else if (temp_r0 == 23) { + sub_020381C0(sub_02038E94, 0); + } else if (temp_r0 == 24) { + if (_021D4150->unk53) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } else if (temp_r0 == 21) { + if (_021D4150->unk53) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } + if (_021D4150->unk53 && (_021D4150->unk4B != sub_02037454())) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02038F74(u32 arg0, s32 arg1, s32 arg2) { + if (_021D4150) { + if (arg0 - 25 > 1) { + arg0 = -arg0; + } + _021D4150->unk34 = arg0; + _021D4150->unk38 = arg1; + _021D4150->unk3C = arg2; + } +} + +void sub_02038F9C(void) { + s32 temp_r0 = ov00_021E5E54(0); + if ((temp_r0 >= 10) && (temp_r0 < 20)) { + sub_020381C0(sub_02038EB4, 0); + } else if (temp_r0 < 0) { + sub_020381C0(sub_02038E90, 0); + } else if (temp_r0 == 20) { + sub_020381C0(sub_02038EB8, 0); + } else if (temp_r0 == 21) { + sub_020381C0(sub_02038EB0, 0); + } else if (temp_r0 == 22) { + sub_020381C0(sub_02038EB4, 0); + } else if (temp_r0 == 24) { + sub_020381C0(sub_02038EB0, 0); + } +} + +void sub_0203900C(void) { + if (ov00_021E5E54(1) < 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + u32 temp_r0 = ov00_021E6D7C(_021D4150->unk51, sub_02033FC4(_021D4150->unk4E) + 1, 0) + 3; + switch (temp_r0) { + case 3: + sub_0203622C(); + sub_020381C0(sub_02038F9C, 0); + return; + case 0: + sub_020381C0(sub_02038E90, 0); + case 1: + case 2: + return; + } +} + +s32 sub_02039080(s32 arg0) { + if (_021D4150->unk24 != sub_02038F9C) { + return 0; + } + ov00_021E5C84(&sub_02036904, &sub_020367A8); + _021D4150->unk51 = arg0; + sub_020381C0(sub_0203900C, 0); + return 1; +} + +s32 sub_020390C4(void) { + if (_021D4150->unk24 == sub_02038F9C) { + return 0; + } + if (_021D4150->unk24 == sub_02038EB8) { + return 1; + } + if (_021D4150->unk24 == &sub_02038E94) { + return 3; + } + if (_021D4150->unk24 == sub_02038EB0) { + return 4; + } + if (_021D4150->unk24 == sub_02038EB4) { + return 5; + } + if (_021D4150->unk24 == sub_02039DE4) { + return 0; + } + if (_021D4150->unk24 == sub_02039DC4) { + return 1; + } + if (_021D4150->unk24 == sub_02039E7C) { + return 3; + } + return 2; +} + +void sub_02039144(void) { + ov00_021E5C84(&sub_02036904, &sub_020367A8); + switch (ov00_021E6D7C(-1, 4, 1) + 4) { + case 4: + _021D4150->unk5C = 0; + sub_0203622C(); + sub_020381C0(sub_02038F9C, 0); + break; + case 1: + sub_020381C0(sub_02038E90, 0); + break; + case 0: + return; + case 2: + break; + } + s32 temp_r0_2 = ov00_021E6690(); + if (temp_r0_2 < 0) { + sub_020381C0(sub_02038E90, 0); + } else if (temp_r0_2 == 26) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_020391D0(void) { + sub_0203786C(0); + if (ov00_021E6BE4(_021D4150->unk50) && ov00_021E6C68()) { + sub_020343E4(); + sub_020381C0(sub_02039144, 0); + } else if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02039220(void) { + if (!sub_0203769C()) { + _021D4150->unk50 = 0; + sub_020381C0(sub_020391D0, 0); + } else { + _021D4150->unk50 = 1; + sub_020381C0(sub_020391D0, 0); + } + _021D4150->unk5C = 1; +} + +u8 sub_02039264(void) { + return _021D4150->unk5C; +} + +BOOL sub_02039274(void) { + if (_021D4150->unk24 == sub_02039144) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039C60) { + return TRUE; + } + return FALSE; +} + +BOOL sub_020392A0(void) { + if (_021D4150->unk24 == sub_02038F9C) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039144) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039C60) { + return TRUE; + } + return FALSE; +} + +u32 *sub_020392D8(void) { + GF_ASSERT(_021D4150); + return &_021D4150->unk34; +} + +void sub_020392F4(void) { + sub_0203786C(0); + if (ov00_021E6BE4(0)) { + ov00_021E6C68(); + sub_020381C0(sub_0203847C, 0); + } + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02039330(void) { + if (_021D4150) { + sub_0201A738(1); + sub_020343E4(); + sub_020381C0(sub_0203847C, 5); + } +} + +void sub_02039358(void) { + if (_021D4150) { + _021D4150->unk50 = 0; + sub_020381C0(sub_020391D0, 0); + } +} + +void sub_02039378(void) { + if (_021D4150) { + sub_020398D4(0, 1); + if (!sub_0203769C()) { + _021D4150->unk50 = 0; + } else { + _021D4150->unk50 = 1; + } + sub_020381C0(sub_020391D0, 0); + } +} + +void sub_020393B4(void) { + u8 r1 = sub_0203769C(); + sub_020376E0(21, &r1); +} + +BOOL sub_020393C8(void) { + if (_021D4150) { + void (*func)() = _021D4150->unk24; + if (func == sub_02038E90) { + return TRUE; + } + if (func == sub_02038E94 && _021D4150->unk53) { + return TRUE; + } + if (func == sub_02039E7C && _021D4150->unk53) { + return TRUE; + } + } + return FALSE; +} + +void sub_02039418(SaveData *saveData) { + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); + _021D4150->unk4E = 24; + _021D4150->unk55 = 1; + _021D4150->unk28 = saveData; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_0203946C(void) { + if (_021D4150) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +void sub_020394A0(SaveData *saveData) { + + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); + _021D4150->unk4E = 25; + _021D4150->unk55 = 1; + _021D4150->unk28 = saveData; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_020394F4(void) { + if (_021D4150) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +void sub_02039528(SaveData *saveData) { + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); + _021D4150->unk4E = 36; + _021D4150->unk55 = 1; + _021D4150->unk28 = saveData; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_0203957C(void) { + if (_021D4150) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +BOOL sub_020395B0(void) { + if (_021D4150 == NULL) { + return FALSE; + } + s32 sp4; + s32 sp0; + if (_021D4150->unk4E == 24 || _021D4150->unk4E == 36) { + if (ov00_021EC11C(&sp4, &sp0)) { + ov00_021EC210(); + return TRUE; + } + } else if ((_021D4150->unk4E == 25) && ov00_021EC11C(&sp4, &sp0) && (sp0 == 7)) { + return TRUE; + } + return FALSE; +} + +void sub_0203960C(void) { + s32 temp_r0 = ov00_021E5B6C(); + _021D4150->unk44--; + if (temp_r0 == 27) { + if (_021D4150->unk4E == 33) { + if (ov45_0222E804(_021D4150->unk60) == 1) { + _021D4150->unk64 = 1; + sub_020381C0(sub_02039C14, _021D4150->unk44); + } else { + sub_020381C0(sub_02039DC0, 0); + } + } else { + sub_020381C0(sub_02039144, 0); + } + } else { + if (temp_r0) { + sub_020381C0(sub_02038E90, 0); + } + if (_021D4150->unk44 <= 0) { + sub_020381C0(sub_02038E90, 0); + } + } +} + +void sub_02039694(void) { + if (sub_02034DB8()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x35400); + if (sub_02035ED8(1, 1, 512, 1)) { + ov00_021E5900(_021D4150->unk28, 48, 0x2C400, sub_02033FC4(_021D4150->unk4E) + 1); + ov00_021E6CA4(sub_020399DC); + sub_02035FD8(); + sub_020381C0(sub_0203960C, 3600); + } + } +} + +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1) { + Save_PlayerData_GetProfile(saveData); + if (sub_02037474()) { + return NULL; + } + sub_0201A728(1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, 23); + _021D4150->unk0 = Heap_Alloc(HEAP_ID_15, arg1); + MI_CpuClear8(_021D4150->unk0, arg1); + _021D4150->unk4F = 0; + _021D4150->unk28 = saveData; + sub_020381C0(sub_02039694, 0); + return _021D4150->unk0; +} + +void sub_0203976C(SaveData *saveData, s32 arg1) { + Save_PlayerData_GetProfile(saveData); + if (!sub_02037474()) { + sub_0201A728(1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, 33); + _021D4150->unk0 = NULL; + _021D4150->unk60 = arg1; + _021D4150->unk64 = 0; + _021D4150->unk4F = 0; + _021D4150->unk28 = saveData; + sub_020381C0(sub_02039BA0, 0); + } +} + +void sub_020397C8(void) { + if (_021D4150) { + sub_020381C0(sub_02039D78, 0); + } +} + +u8 sub_020397E4(void) { + if (_021D4150 == NULL) { + return 0; + } + return _021D4150->unk64; +} + +BOOL sub_020397FC(void) { + if (_021D4150 && (_021D4150->unk24 == sub_02039DC0)) { + return TRUE; + } + return FALSE; +} + +void sub_0203981C(s32 arg0) { + GF_ASSERT(_021D4150); + GF_ASSERT(sub_020392A0() == 1); + if (!ov45_0222F274(arg0)) { + ov45_0222F028(arg0, 4); + sub_020381C0(sub_02039DE4, 0); + } else { + ov45_0222F350(arg0); + sub_020381C0(sub_02039DE4, 0); + } +} + +void sub_0203986C(void) { + if (ov45_0222F464() == 1) { + ov45_0222F154(); + } + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); +} + +s32 sub_0203988C(void) { + if (_021D4150) { + if (_021D4150->unk24 == sub_02039DC4) { + return 2; + } + if (_021D4150->unk24 == sub_02039DE4) { + return 1; + } + if (_021D4150->unk24 == sub_02039E30) { + return 3; + } + } + return 0; +} + +UnkStruct_ov44_0223197C *sub_020398C8(void) { + return _021D4150->unk0; +} + +void sub_020398D4(s8 arg0, s8 arg1) { + if (_021D4150) { + _021D4150->unk53 = arg0; + _021D4150->unk54 = arg1; + if (arg0) { + _021D4150->unk4B = sub_02037454(); + } else { + _021D4150->unk4B = 0; + } + } + sub_020356C0(arg0); + sub_020356EC(arg0); +} + +BOOL sub_02039918(void) { + if (_021D4150) { + if (_021D4150->unk5D) { + return TRUE; + } + return _021D4150->unk54; + } + return FALSE; +} + +u8 sub_0203993C(void) { + if (_021D4150) { + return _021D4150->unk4E; + } + return 1; +} + +u8 sub_02039954(void) { + if (_021D4150) { + return _021D4150->unk4F; + } + return 0; +} + +void sub_0203996C(void *arg0) { + MI_CpuCopy8(arg0, &_021D4150->unk4, 6); +} + +void sub_02039980(void *arg0) { + MI_CpuCopy8(&_021D4150->unk4, arg0, 6); +} + +int sub_02039998(void) { + sub_0203993C(); + return sub_02034044(); +} + +void sub_020399A4(s8 arg0) { + if (_021D4150) { + _021D4150->unk56 = arg0; + } +} + +u8 sub_020399B8(void) { + if (sub_0201A79C()) { + return 0; + } + if (_021D4150) { + return _021D4150->unk56; + } + return 0; +} + +void sub_020399DC(u32 errorCode) { + ShowCommunicationError(HEAP_ID_DEFAULT, 1, errorCode); + while (TRUE) {} +} + +void sub_020399EC(void) { + ShowCommunicationError(HEAP_ID_DEFAULT, 4, 0); + while (TRUE) {} +} + +void sub_020399FC(void) { +} + +void sub_02039A00(void) { + if (sub_02039918() && (sub_02037700() || sub_020393C8() || sub_020395B0() || _021D4150->unk5D || sub_020397FC()) && !sub_0201A79C() && !sub_020399B8()) { + Sound_Stop(); + Save_Cancel(_021D4150->unk28); + gSystem.touchpadReadAuto = TRUE; + if (_021D4150->unk5D == 3) { + sub_020399A4(3); + return; + } + if (_021D4150->unk5D == 5) { + sub_020399A4(5); + return; + } + if ((_021D4150->unk4E == 25) || (_021D4150->unk4E == 15) || (_021D4150->unk4E == 36)) { + sub_020399A4(2); + return; + } + sub_020399A4(1); + } +} + +BOOL sub_02039AA4(void) { + if (sub_02035630() || !sub_02037D78()) { + return TRUE; + } + if (!sub_02034BE4()) { + return TRUE; + } + if (sub_02033974()) { + return TRUE; + } + return FALSE; +} + +BOOL sub_02039AD8(int arg0) { + if (_021D4150) { + _021D4150->unk5D = arg0; + sub_02037988(); + return TRUE; + } + return FALSE; +} + +void sub_02039AF8(void) { + _021D4150->unk4E = 29; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B18(void) { + _021D4150->unk4E = 35; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B38(void) { + _021D4150->unk4E = 33; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B58(void) { + _021D4150->unk4E = 23; + ov00_021E5C84(&sub_02036904, &sub_020367A8); +} + +void sub_02039B7C(void) { + _021D4150->unk4E = 19; + ov00_021E5C84(&sub_02036904, &sub_020367A8); +} + +void sub_02039BA0(void) { + if (sub_02034DB8()) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x60000); + if (sub_02035ED8(1, 1, 512, 1)) { + ov00_021E5900(_021D4150->unk28, 48, 0x58000, sub_02033FC4(_021D4150->unk4E) + 1); + ov00_021E6CA4(sub_020399DC); + sub_02035FD8(); + ov00_021E70B8(0); + sub_020378E4(0); + sub_020381C0(sub_0203960C, 3600); + } + } +} + +void sub_02039C14(void) { + _021D4150->unk44--; + if (_021D4150->unk44 <= 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + sub_0203786C(1); + if (sub_02039D3C() && ov45_0222E8F4()) { + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039C60(void) { + if (sub_02039D3C()) { + return; + } +} + +s32 sub_02039C6C(s32 arg0) { + s32 var_r4 = 1; + if ((arg0 >= 10) && (arg0 < 20)) { + sub_020381C0(sub_02038EB4, 0); + var_r4 = 0; + } else if (arg0 < 0) { + sub_020381C0(sub_02038E90, 0); + var_r4 = 0; + } else if (arg0 == 23) { + sub_020381C0(sub_02039E7C, 0); + var_r4 = 0; + } else if (arg0 == 24) { + var_r4 = 0; + if (_021D4150->unk53) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } + if (_021D4150->unk53 && (_021D4150->unk4B != sub_02037454())) { + sub_020381C0(sub_02038E90, 0); + var_r4 = 0; + } + return var_r4; +} + +s32 sub_02039D08(void) { + s32 var_r4 = 1; + u32 temp_r0 = ov45_0222E6C8(); + switch (temp_r0) { + case 0: + case 1: + case 2: + case 3: + break; + case 4: + sub_020381C0(sub_02039DC0, 0); + var_r4 = 0; + break; + } + return var_r4; +} + +int sub_02039D3C(void) { + s32 ret = sub_02039C6C(ov00_021E5E54(0)); + if (ret) { + return sub_02039D08(); + } + return ret; +} + +void sub_02039D54(s32 *arg0) { + s32 temp_r0 = ov00_021E5E54(0); + if (temp_r0 >= 20) { + *arg0 = temp_r0; + } else { + *arg0 = 0; + if (!sub_02039C6C(temp_r0)) { + return; + } + } + sub_02039D08(); +} + +void sub_02039D78(void) { + ov45_0222E91C(); + sub_020381C0(sub_02039D8C, 0); +} + +void sub_02039D8C(void) { + ov00_021E5E54(0); + sub_02039D08(); + if (ov45_0222E944()) { + sub_0201A738(1); + sub_020343E4(); + sub_020381C0(sub_0203847C, 5); + sub_0203786C(0); + } +} + +void sub_02039DC0(void) { +} + +void sub_02039DC4(void) { + sub_02039D3C(); + if (ov45_0222F254() == 1) { + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); + } +} + +void sub_02039DE4(void) { + + if (ov45_0222F254() == 1) { + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); + return; + } + s32 sp0; + sub_02039D54(&sp0); + if (sp0) { + if (sp0 == 20) { + sub_020381C0(sub_02039DC4, 0); + return; + } + ov45_0222F70C(); + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039E30(void) { + if (ov00_021E5E54(1) < 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + if (sub_02039D08() && ov00_021E6BE4(0) && ov00_021E6C68()) { + sub_0203622C(); + sub_020378E4(0); + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039E7C(void) { + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } + sub_02039D08(); +} + +void sub_02039E9C(void) { + _021D4150->unk4E = 34; +} + +void sub_02039EAC(s32 *arg0) { + *arg0 = 0; +} + +s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2) { + switch (*arg2) { + case 0: + sub_02037AC0(111); + *arg2 = 1; + default: + break; + case 1: + if (sub_02037B38(111)) { + Save_PrepareForAsyncWrite(saveData, arg1); + *arg2 = 2; + } + break; + case 2: + s32 temp_r0 = Save_WriteFileAsync(saveData); + GF_ASSERT(temp_r0 != 2); + if (temp_r0 == 1) { + *arg2 = 3; + sub_02037AC0(112); + } else if (temp_r0 == 3) { + *arg2 = 7; + } + break; + case 3: + if (sub_02037B38(112)) { + *arg2 = 4; + } + break; + case 4: + temp_r0 = Save_WriteFileAsync(saveData); + GF_ASSERT(temp_r0 != 1); + if (temp_r0 == 2) { + *arg2 = 5; + } else if (temp_r0 == 3) { + *arg2 = 7; + } + break; + case 5: + *arg2 = 6; + break; + case 6: + return 1; + } + return 0; +} + +void sub_02039F68(SaveWiFiHistory *arg0) { + s32 temp_r7 = sub_02037454(); + if (sub_02034818(0)) { + for (int i = 0; i < temp_r7; i++) { + if (i != sub_0203769C()) { + sub_02039FB8(arg0, sub_020348A8(i), sub_020348CC(i), PlayerProfile_GetLanguage(sub_02034818(i))); + } + } + } +} + +void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3) { + if (!WiFiHistory_GetLocationSeenState(arg0, arg1, arg2)) { + WiFiHistory_SetLocationSeenState(arg0, arg1, arg2, 1); + } +} + +s32 sub_02039FD8(enum HeapID heapID) { + void *temp_r0 = Heap_Alloc(heapID, 1824); + s32 temp_r5 = DWC_Init(((u32)temp_r0 + 31) & ~31); // TODO + Heap_Free(temp_r0); + return temp_r5; +} + +s32 sub_02039FFC(enum HeapID heapID) { + LoadDwcOverlay(); + LoadOVY38(); + s32 temp_r4 = sub_02039FD8(heapID); + UnloadDwcOverlay(); + UnloadOVY38(); + return temp_r4; +} + +void sub_0203A01C(WiFiList *arg0) { + + DWCUserData *userData = sub_0202C08C(arg0); + if (!DWC_CheckUserData(userData)) { + DWC_CreateUserData(userData, 0x4144414A); + DWC_ClearDirtyFlag(userData); + } +} + +int sub_0203A040(WiFiList *arg0) { + DWCUserData *userData = sub_0202C08C(arg0); + DWCFriendData friendData; + DWC_CreateExchangeToken(userData, &friendData); + return DWC_GetGsProfileId(userData, &friendData); +} + +BOOL sub_0203A05C(SaveData *saveData) { + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); + if (DWC_CheckHasProfile(userData) && DWC_CheckValidConsole(userData)) { + return TRUE; + } + return FALSE; +} + +s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2) { + int i; + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); + *arg2 = -1; + if (!DWC_IsValidFriendData(arg1)) { + return 3; + } + for (i = 0; i < 32; i++) { + if (DWC_IsEqualFriendData(arg1, &friendData[i])) { + *arg2 = i; + return 0; + } + if (DWC_GetGsProfileId(userData, arg1) > 0) { + if (DWC_GetGsProfileId(userData, arg1) == DWC_GetGsProfileId(userData, &friendData[i])) { + *arg2 = i; + return 1; + } + } + if ((*arg2 < 0) && !DWC_IsValidFriendData(&friendData[i])) { + *arg2 = i; + } + } + return 2; +} + +int sub_0203A128(SaveData *saveData, u64 arg1, int *arg2) { + int i; + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); + if (!DWC_CheckFriendKey(userData, arg1)) { + return 3; + } + DWCFriendData newFriendData; + DWC_CreateFriendKeyToken(&newFriendData, arg1); + if (DWC_GetGsProfileId(userData, &newFriendData) <= 0) { + return 3; + } + *arg2 = -1; + for (i = 0; i < 32; i++) { + if (DWC_GetGsProfileId(userData, &newFriendData) == DWC_GetGsProfileId(userData, &friendData[i])) { + *arg2 = i; + return 0; + } + if ((*arg2 < 0) && !DWC_IsValidFriendData(&friendData[i])) { + *arg2 = i; + } + } + return 2; +} + +s32 sub_0203A1C4(SaveData *saveData, s32 *arg1, enum HeapID heapID) { + s32 spC = 0; + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); + for (int i = 0; i < sub_02037454(); i++) { + if (i != sub_0203769C()) { + DWCFriendData *temp_r0 = sub_0203484C(i); + if (temp_r0) { + s32 sp10; + arg1[i] = sub_0203A084(saveData, temp_r0, &sp10); + GF_ASSERT(arg1[i] != 3); + if (arg1[i] == 0) { + sub_0203A280(saveData, i, sp10, heapID, 2); + sub_02034A20(saveData); + } else if (arg1[i] == 1) { + if (!sub_02039998()) { + sub_0203A280(saveData, i, sp10, heapID, 1); + MI_CpuCopy8(temp_r0, &friendData[sp10], sizeof(DWCFriendData)); + sub_02034A20(saveData); + } + } else if (arg1[i] == 2) { + spC = 1; + } + } + } + } + return spC; +} + +void sub_0203A280(SaveData *saveData, s32 arg1, s32 arg2, enum HeapID heapID, u32 arg4) { + WiFiList *wifiList = sub_0202C6F4(saveData); + DWCFriendData *friendData = sub_0202C23C(wifiList, arg2); + PlayerProfile *playerProfile = sub_02034818(arg1); + if (arg4 != 2) { + MI_CpuCopy8(sub_0203484C(arg1), friendData, 12); + } + if (arg4 == 0) { + String *string = PlayerProfile_GetPlayerName_NewString(playerProfile, heapID); + sub_0202C270(wifiList, arg2, string); + String_Delete(string); + sub_0202C190(wifiList, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(wifiList, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + } else if (((arg4 - 1) <= 1) && (sub_0202C090(wifiList, arg2, 8) == 2)) { + sub_0202C190(wifiList, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(wifiList, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + } + String *string = String_New(120, heapID); + CopyU16ArrayToString(string, sub_02034884(arg1)); + sub_0202C2B4(wifiList, arg2, string); + String_Delete(string); + sub_0202C190(wifiList, arg2, 7, PlayerProfile_GetAvatar(playerProfile)); + sub_02034A20(saveData); +} + +s32 sub_0203A378(SaveData *saveData, s32 arg1) { + int i; + DWCFriendData *friendData = sub_0203484C(arg1); + WiFiList *r5 = sub_0202C6F4(saveData); + + for (i = 0; i < 32; i++) { + if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i))) { + return i; + } + } + return 32; +}