diff options
212 files changed, 66003 insertions, 68111 deletions
@@ -90,6 +90,7 @@ KNARC = tools/knarc/knarc$(EXE) MSGENC = tools/msgenc/msgenc$(EXE) MWLDARM = tools/mwccarm/$(MWCCVERSION)/mwldarm.exe MWASMARM = tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe +NITROBANNER = tools/nitrobanner/nitrobanner$(EXE) SCANINC = tools/scaninc/scaninc$(EXE) AS = $(WINE) $(MWASMARM) @@ -119,7 +120,6 @@ JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE) O2NARC = $(TOOLS_DIR)/o2narc/o2narc$(EXE) GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE) MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q -MAKEBANNER = $(WINE) $(TOOLS_DIR)/bin/makebanner.exe MAKEROM = $(WINE) $(TOOLS_DIR)/bin/makerom.exe FIXROM = $(TOOLS_DIR)/fixrom/fixrom$(EXE) NTRCOMP = $(WINE) $(TOOLS_DIR)/bin/ntrcomp.exe @@ -286,7 +286,7 @@ $(8BPP_COMP10_NOPAD_NCLR_PAL_FILES): GFX_FLAGS = -bitdepth 8 -nopad -comp 10 ######################## Misc ####################### $(BNR): $(TARGET).bsf $(ICON_FILE:%.png=%.gbapal) $(ICON_FILE:%.png=%.4bpp) - $(MAKEBANNER) $< $@ + $(NITROBANNER) $< $@ symbols.csv: arm9 arm7 (echo "Name,Location"; $(GREP) " *[0-9A-F]{8} [0-9A-F]{8} \S+ +\w+\t\(\w+\.o\)" arm9/$(BUILD_DIR)/arm9.elf.xMAP arm7/build/arm7.elf.xMAP | $(SED) 's/ *([0-9A-F]{8}) [0-9A-F]{8} \S+ +(\w+)\t\(\w+\.o\)/\2,\1/g' | cut -d: -f2) > $@ diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 06b32e1f..0e976777 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -15,7 +15,7 @@ Static arm9 Object sound.o Object unk_020040F4.o Object unk_020051F4.o - Object unk_02005CFC.o + Object sound_chatot.o Object poke_overlay.o Object unk_020061E8.o Object overlay_manager.o @@ -25,13 +25,14 @@ Static arm9 Object unk_02006D98.o Object unk_02008AA4.o Object unk_02008DEC.o - Object unk_02009EAC.o + Object oam.o + Object brightness.o Object msgdata.o Object script_buffers.o Object unk_0200BA78.o Object unk_0200BB14.o Object unk_0200CA44.o - Object unk_0200CABC.o + Object render_window.o Object unk_0200E1D0.o Object unk_0200E850.o Object unk_0201137C.o @@ -49,7 +50,7 @@ Static arm9 Object unk_02014590.o Object unk_02014BF4.o Object unk_02015CC0.o - Object unk_02015D14.o + Object rs_migrate_string.o Object unk_02015E30.o Object game_init.o Object heap.o @@ -172,7 +173,7 @@ Static arm9 Object scrcmd_coins.o Object scrcmd_money.o Object scrcmd_daycare.o - Object scrcmd_17.o + Object scrcmd_amity_square.o Object scrcmd_party.o Object scrcmd_fossils.o Object scrcmd_prizes.o @@ -315,8 +316,8 @@ Static arm9 Object unk_020893E0.o Object unk_02089498.o Object unk_02089960.o - Object unk_02089D90.o - Object unk_02089F24.o + Object save_data_read_error.o + Object save_data_write_error.o Object unk_0208A258.o Object unk_0208A300.o Object unk_0208A338.o @@ -657,7 +658,26 @@ Overlay MODULE_03 Overlay MODULE_04 { After arm9 - Object thumb_04.o + Object mod04_021D74E0.o + Object mod04_021D868C.o + Object mod04_021D8D18.o + Object mod04_021D9C2C.o + Object mod04_021DA260.o + Object mod04_021DB730.o + Object mod04_021DC8A4.o + Object mod04_021DCCC8.o + Object mod04_021DD36C.o + Object mod04_0220C680_certs.o + Object mod04_021DD6B0.o + Object mod04_021DD82C.o + Object mod04_021DD984.o + Object mod04_021DDF40.o + Object mod04_021DE2D0.o + Object mod04_021DE89C.o + Object mod04_021DEB90.o + Object mod04_021E05FC.o + Object mod04_021E10F8.o + Object mod04_021E26D0.o Object arm_04.o } @@ -702,7 +722,39 @@ Overlay MODULE_05 Object mod05_021E7C00.o Object mod05_021E80F8.o Object mod05_021E8310.o - Object module_05.o + Object mod05_021E8648.o + Object mod05_021E8860.o + Object mod05_021E88E8.o + Object mod05_021EC458.o + Object mod05_021ED9C0.o + Object mod05_021EDB70.o + Object mod05_021EDE34.o + Object mod05_021EFA9C.o + Object mod05_021EFBF8.o + Object mod05_021F0318.o + Object mod05_021F0514.o + Object mod05_021F1B0C.o + Object mod05_021F1CB8.o + Object mod05_021F1F04.o + Object mod05_021F3780.o + Object mod05_021F3854.o + Object mod05_021F38CC.o + Object mod05_021F3BC0.o + Object mod05_021F3C98.o + Object mod05_021F3FE0.o + Object mod05_021F445C.o + Object mod05_021F45B4.o + Object mod05_021F46C8.o + Object mod05_021F4968.o + Object mod05_021F4CF8.o + Object mod05_021F5268.o + Object mod05_021F5518.o + Object mod05_021F5990.o + Object mod05_021F5B9C.o + Object mod05_021F5C44.o + Object mod05_021F61DC.o + Object mod05_021F61F4.o + Object mod05_021F6360.o } Overlay MODULE_06 @@ -802,7 +854,12 @@ Overlay MODULE_20 { ##Pokétch## After MODULE_06 - Object module_20.o + Object mod20_02252440.o + Object mod20_02252C5C.o + Object mod20_022536F4.o + Object mod20_02253BA4.o + Object mod20_02254130.o + Object mod20_02254420.o } Overlay MODULE_21 diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s deleted file mode 100644 index 794a16de..00000000 --- a/arm9/asm/scrcmd_17.s +++ /dev/null @@ -1,215 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F4494 -UNK_020F4494: ; 0x020F4494 - .byte 0x00, 0x00, 0x05, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x0D, 0x00, 0x19, 0x00, 0x1F, 0x00 - .byte 0x10, 0x00, 0x21, 0x00, 0x02, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x17, 0x00, 0x1D, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0B, 0x00 - .byte 0x16, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x12, 0x00 - .byte 0x15, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x06, 0x00 - .byte 0x05, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x13, 0x00, 0x14, 0x00, 0x01, 0x00, 0x07, 0x00, 0x10, 0x00 - .byte 0x16, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x14, 0x00, 0x1D, 0x00, 0x04, 0x00 - .byte 0x08, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0A, 0x00 - - .text - - thumb_func_start ScrCmd_Unk0215 -ScrCmd_Unk0215: ; 0x02044158 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F54C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start ScrCmd_Unk0216 -ScrCmd_Unk0216: ; 0x0204416C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F55C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_Unk0217 -ScrCmd_Unk0217: ; 0x02044198 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0xf - bhs _020441D6 - mov r0, #0x0 - b _02044218 -_020441D6: - cmp r0, #0x1e - bhs _020441DE - mov r0, #0x1 - b _02044218 -_020441DE: - cmp r0, #0x2d - bhs _020441E6 - mov r0, #0x2 - b _02044218 -_020441E6: - cmp r0, #0x3c - bhs _020441EE - mov r0, #0x3 - b _02044218 -_020441EE: - cmp r0, #0x46 - bhs _020441F6 - mov r0, #0x4 - b _02044218 -_020441F6: - cmp r0, #0x50 - bhs _020441FE - mov r0, #0x5 - b _02044218 -_020441FE: - cmp r0, #0x58 - bhs _02044206 - mov r0, #0x6 - b _02044218 -_02044206: - cmp r0, #0x5d - bhs _0204420E - mov r0, #0x7 - b _02044218 -_0204420E: - cmp r0, #0x62 - bhs _02044216 - mov r0, #0x8 - b _02044218 -_02044216: - mov r0, #0x9 -_02044218: - ldr r2, _020442B4 ; =0x0000011D - cmp r5, r2 - bgt _02044244 - bge _02044290 - cmp r5, #0x27 - bgt _02044236 - cmp r5, #0x23 - blt _02044230 - beq _02044284 - cmp r5, #0x27 - beq _02044290 - b _0204429C -_02044230: - cmp r5, #0x19 - beq _02044294 - b _0204429C -_02044236: - cmp r5, #0x36 - bgt _0204423E - beq _0204428C - b _0204429C -_0204423E: - cmp r5, #0xff - beq _02044288 - b _0204429C -_02044244: - add r1, r2, #0x0 - add r1, #0x8c - cmp r5, r1 - bgt _0204426C - add r1, r2, #0x0 - add r1, #0x8c - cmp r5, r1 - bge _02044288 - add r1, r2, #0x0 - add r1, #0xf - cmp r5, r1 - bgt _02044264 - add r2, #0xf - cmp r5, r2 - beq _02044284 - b _0204429C -_02044264: - add r2, #0x84 - cmp r5, r2 - beq _0204428C - b _0204429C -_0204426C: - add r1, r2, #0x0 - add r1, #0x8e - cmp r5, r1 - bgt _0204427C - add r2, #0x8e - cmp r5, r2 - beq _02044298 - b _0204429C -_0204427C: - add r2, #0x9b - cmp r5, r2 - beq _02044298 - b _0204429C -_02044284: - mov r2, #0x0 - b _0204429E -_02044288: - mov r2, #0x1 - b _0204429E -_0204428C: - mov r2, #0x2 - b _0204429E -_02044290: - mov r2, #0x3 - b _0204429E -_02044294: - mov r2, #0x4 - b _0204429E -_02044298: - mov r2, #0x5 - b _0204429E -_0204429C: - mov r2, #0x0 -_0204429E: - add r3, r2, #0x0 - mov r1, #0x14 - mul r3, r1 - ldr r2, _020442B8 ; =UNK_020F4494 - lsl r1, r0, #0x1 - add r0, r2, r3 - ldrh r0, [r1, r0] - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - nop -_020442B4: .word 0x0000011D -_020442B8: .word UNK_020F4494 diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 8dcbdf20..29106585 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -14,32 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203B174 -FUN_0203B174: ; 0x0203B174 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - mov r0, #0x4 - mov r1, #0x10 - add r7, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - bne _0203B18E - bl GF_AssertFail - pop {r3-r7, pc} -_0203B18E: - str r5, [r4, #0xc] - str r6, [r4, #0x4] - ldr r0, _0203B1A4 ; =FUN_0203B1A8 - add r1, r4, #0x0 - mov r2, #0x0 - str r7, [r4, #0x8] - bl FUN_0200CA44 - str r0, [r4, #0x0] - pop {r3-r7, pc} - nop -_0203B1A4: .word FUN_0203B1A8 - thumb_func_start FUN_0203B1A8 FUN_0203B1A8: ; 0x0203B1A8 push {r3-r5, lr} diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s index 5ddfa9ab..cd5a4010 100644 --- a/arm9/asm/unk_02001B80.s +++ b/arm9/asm/unk_02001B80.s @@ -809,7 +809,7 @@ CreateYesNoMenu: ; 0x020020EC ldr r2, [sp, #0xc] ldr r3, [sp, #0x10] mov r1, #0x1 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 lsl r0, r5, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] @@ -881,7 +881,7 @@ FUN_020021EC: ; 0x020021EC ldr r0, [r5, #0x4] add r4, r1, #0x0 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, [r5, #0x4] bl RemoveWindow ldr r1, [r5, #0x4] diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s deleted file mode 100644 index e56b613f..00000000 --- a/arm9/asm/unk_02005CFC.s +++ /dev/null @@ -1,303 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02005CFC -FUN_02005CFC: ; 0x02005CFC - push {r3, lr} - mov r0, #0x1d - bl FUN_02003D38 - ldrb r0, [r0, #0x0] - cmp r0, #0x1 - bne _02005D1C - mov r0, #0xe - bl FUN_02004ABC - cmp r0, #0x0 - bne _02005D1C - bl FUN_02005DFC - mov r0, #0x1 - pop {r3, pc} -_02005D1C: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02005D20 -FUN_02005D20: ; 0x02005D20 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x1e - bl FUN_02003D38 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl Chatot_exists - cmp r0, #0x0 - bne _02005D3A - mov r0, #0x0 - pop {r3-r5, pc} -_02005D3A: - ldrb r0, [r4, #0x0] - cmp r0, #0x1 - beq _02005D44 - mov r0, #0x1 - pop {r3-r5, pc} -_02005D44: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02005D48 -FUN_02005D48: ; 0x02005D48 - push {r3-r7, lr} - sub sp, #0x30 - add r6, r0, #0x0 - add r5, r2, #0x0 - add r7, r3, #0x0 - bl FUN_02004DB4 - str r0, [sp, #0x0] - mov r0, #0x1d - bl FUN_02003D38 - str r0, [sp, #0x4] - add r0, r6, #0x0 - bl FUN_02005D20 - cmp r0, #0x0 - bne _02005D70 - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02005D70: - mov r0, #0x0 - bl FUN_02005614 - bl FUN_02005DFC - mov r0, #0xe - bl FUN_02004984 - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x13 - sub r1, r1, r2 - mov r0, #0x13 - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #0x0 - bl Chatot_GetData - add r1, r0, #0x0 - ldr r0, [sp, #0x0] - bl Chatot_Decode - mov r0, #0xe - bl FUN_02004930 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - bl FUN_02004DB4 - str r0, [sp, #0x10] - mov r0, #0x0 - str r0, [sp, #0x14] - str r0, [sp, #0x18] - mov r0, #0x7d - lsl r0, r0, #0x4 - str r0, [sp, #0x1c] - str r0, [sp, #0x20] - mov r0, #0x2 - lsl r0, r0, #0xe - add r0, r4, r0 - str r0, [sp, #0x28] - lsr r0, r7, #0x1f - add r0, r7, r0 - asr r0, r0, #0x1 - add r0, #0x40 - str r0, [sp, #0x2c] - add r0, sp, #0x8 - mov r1, #0xe - str r5, [sp, #0x24] - bl FUN_02004A6C - add r4, r0, #0x0 - mov r0, #0xe - add r1, r5, #0x0 - bl FUN_02004AF8 - ldr r0, [sp, #0x4] - mov r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x0 - bl FUN_02005E80 - add r0, r4, #0x0 - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02005DFC -FUN_02005DFC: ; 0x02005DFC - push {r3-r5, lr} - mov r0, #0xf - bl FUN_02003D38 - add r5, r0, #0x0 - mov r0, #0x1d - bl FUN_02003D38 - add r4, r0, #0x0 - ldrb r0, [r5, #0x0] - cmp r0, #0x1 - bne _02005E20 - mov r0, #0xe - bl FUN_02004C3C - mov r0, #0xe - bl FUN_02004A04 -_02005E20: - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02005E28 -FUN_02005E28: ; 0x02005E28 - push {lr} - sub sp, #0x1c - mov r0, #0x2 - str r0, [sp, #0x0] - bl FUN_02004DB4 - mov r1, #0x7d - str r0, [sp, #0x4] - lsl r1, r1, #0x4 - mov r0, #0x1f - str r1, [sp, #0x8] - tst r0, r1 - beq _02005E48 - mov r0, #0x1f - bic r1, r0 - str r1, [sp, #0x8] -_02005E48: - ldr r0, _02005E60 ; =0x00004174 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - str r0, [sp, #0x18] - add r0, sp, #0x0 - bl GF_MIC_StartAutoSampling - add sp, #0x1c - pop {pc} - nop -_02005E60: .word 0x00004174 - - thumb_func_start FUN_02005E64 -FUN_02005E64: ; 0x02005E64 - ldr r3, _02005E68 ; =GF_MIC_StopAutoSampling - bx r3 - .balign 4 -_02005E68: .word GF_MIC_StopAutoSampling - - thumb_func_start FUN_02005E6C -FUN_02005E6C: ; 0x02005E6C - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02004DB4 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl Chatot_Encode - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02005E80 -FUN_02005E80: ; 0x02005E80 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1e - bl FUN_02003D38 - strb r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02005E90 -FUN_02005E90: ; 0x02005E90 - push {r3-r7, lr} - add r5, r0, #0x0 - mov r0, #0x23 - add r7, r1, #0x0 - add r4, r2, #0x0 - add r6, r3, #0x0 - bl FUN_02003D38 - cmp r5, #0x0 - bne _02005EB2 - ldr r0, [r0, #0x0] - add r1, r7, #0x0 - add r2, r4, #0x0 - add r3, r6, #0x0 - bl FUN_02005D48 - b _02005EBE -_02005EB2: - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - add r3, r6, #0x0 - bl FUN_02005D48 -_02005EBE: - cmp r0, #0x0 - bne _02005ED8 - mov r0, #0x1 - bl FUN_02005E80 - mov r0, #0xb - str r0, [sp, #0x0] - ldr r1, _02005EDC ; =0x000001B9 - mov r0, #0x0 - add r2, r6, #0x0 - add r3, r4, #0x0 - bl FUN_020056AC -_02005ED8: - pop {r3-r7, pc} - nop -_02005EDC: .word 0x000001B9 - - thumb_func_start FUN_02005EE0 -FUN_02005EE0: ; 0x02005EE0 - push {r4, lr} - add r4, r0, #0x0 - bl Chatot_exists - cmp r0, #0x0 - bne _02005EF0 - mov r0, #0x0 - pop {r4, pc} -_02005EF0: - add r0, r4, #0x0 - bl Chatot_GetData - mov r1, #0xf - ldrsb r0, [r0, r1] - sub r1, #0x2d - cmp r0, r1 - bge _02005F04 - mov r0, #0x1 - pop {r4, pc} -_02005F04: - cmp r0, #0x1e - blt _02005F10 - cmp r0, #0x80 - bge _02005F10 - mov r0, #0x2 - pop {r4, pc} -_02005F10: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02005F14 -FUN_02005F14: ; 0x02005F14 - cmp r0, #0xb - bgt _02005F2E - bge _02005F32 - cmp r0, #0x5 - bgt _02005F36 - cmp r0, #0x0 - blt _02005F36 - beq _02005F32 - cmp r0, #0x1 - beq _02005F32 - cmp r0, #0x5 - beq _02005F32 - b _02005F36 -_02005F2E: - cmp r0, #0xc - bne _02005F36 -_02005F32: - mov r0, #0x1 - bx lr -_02005F36: - mov r0, #0x0 - bx lr - .balign 4 diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s deleted file mode 100644 index 0b8d98e7..00000000 --- a/arm9/asm/unk_02008AA4.s +++ /dev/null @@ -1,428 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02008AA4 -FUN_02008AA4: ; 0x02008AA4 - push {r3-r7, lr} - sub sp, #0x18 - mov r4, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x44] - add r6, r1, #0x0 - str r2, [sp, #0x0] - str r3, [sp, #0x4] - str r4, [sp, #0xc] - cmp r0, #0x0 - bne _02008AC2 - bl GF_AssertFail -_02008AC2: - ldr r0, [sp, #0x48] - cmp r0, #0x0 - bne _02008ACC - bl GF_AssertFail -_02008ACC: - ldr r0, [sp, #0x50] - cmp r0, #0x0 - bne _02008AD6 - bl GF_AssertFail -_02008AD6: - ldr r0, [sp, #0x4c] - cmp r0, #0x0 - bne _02008AE0 - bl GF_AssertFail -_02008AE0: - cmp r5, #0x0 - bne _02008AE8 - bl GF_AssertFail -_02008AE8: - ldr r0, [sp, #0x44] - add r1, r6, #0x0 - bl FUN_020094F0 - add r7, r0, #0x0 - bne _02008AF8 - bl GF_AssertFail -_02008AF8: - ldr r0, [sp, #0x48] - ldr r1, [sp, #0x0] - bl FUN_020094F0 - str r0, [sp, #0x14] - cmp r0, #0x0 - bne _02008B0A - bl GF_AssertFail -_02008B0A: - ldr r0, [sp, #0x4c] - ldr r1, [sp, #0x4] - bl FUN_020094F0 - str r0, [sp, #0x10] - cmp r0, #0x0 - bne _02008B1C - bl GF_AssertFail -_02008B1C: - ldr r0, [sp, #0x50] - cmp r0, #0x0 - beq _02008B3A - mov r2, #0x0 - ldr r1, [sp, #0x30] - mvn r2, r2 - cmp r1, r2 - beq _02008B3A - bl FUN_020094F0 - str r0, [sp, #0xc] - cmp r0, #0x0 - bne _02008B3A - bl GF_AssertFail -_02008B3A: - ldr r0, [sp, #0x54] - cmp r0, #0x0 - beq _02008B62 - mov r2, #0x0 - ldr r1, [sp, #0x34] - mvn r2, r2 - cmp r1, r2 - beq _02008B50 - bl FUN_020094F0 - add r4, r0, #0x0 -_02008B50: - mov r0, #0x0 - ldr r1, [sp, #0x38] - mvn r0, r0 - cmp r1, r0 - beq _02008B62 - ldr r0, [sp, #0x58] - bl FUN_020094F0 - str r0, [sp, #0x8] -_02008B62: - ldr r0, [sp, #0x3c] - cmp r0, #0x0 - beq _02008B82 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - bl FUN_02009C80 - add r6, r0, #0x0 - bne _02008B78 - bl GF_AssertFail -_02008B78: - add r0, r7, #0x0 - bl FUN_02009544 - str r0, [r5, #0x4] - b _02008B94 -_02008B82: - add r0, r7, #0x0 - bl FUN_02009C5C - add r6, r0, #0x0 - bne _02008B90 - bl GF_AssertFail -_02008B90: - mov r0, #0x0 - str r0, [r5, #0x4] -_02008B94: - ldr r0, [sp, #0x14] - add r1, r6, #0x0 - bl FUN_02009E54 - str r0, [r5, #0x8] - ldr r0, [sp, #0x10] - str r6, [r5, #0x0] - bl FUN_02009574 - str r0, [r5, #0xc] - ldr r0, [sp, #0xc] - cmp r0, #0x0 - beq _02008BB4 - bl FUN_0200958C - b _02008BB6 -_02008BB4: - mov r0, #0x0 -_02008BB6: - str r0, [r5, #0x10] - cmp r4, #0x0 - beq _02008BCC - add r0, r4, #0x0 - bl FUN_020095A4 - str r0, [r5, #0x14] - ldr r0, [sp, #0x8] - bl FUN_020095BC - b _02008BD0 -_02008BCC: - mov r0, #0x0 - str r0, [r5, #0x14] -_02008BD0: - str r0, [r5, #0x18] - ldr r0, [sp, #0x3c] - str r0, [r5, #0x1c] - ldr r0, [sp, #0x40] - add r5, #0x20 - strb r0, [r5, #0x0] - add sp, #0x18 - pop {r3-r7, pc} - - thumb_func_start FUN_02008BE0 -FUN_02008BE0: ; 0x02008BE0 - push {r4-r7, lr} - sub sp, #0x34 - add r5, r0, #0x0 - ldr r0, [sp, #0x48] - add r7, r1, #0x0 - str r0, [sp, #0x48] - ldr r0, [sp, #0x4c] - mov r4, #0x0 - str r0, [sp, #0x4c] - ldr r0, [sp, #0x50] - ldr r1, [r5, #0x0] - str r0, [sp, #0x50] - ldr r0, [sp, #0x54] - str r2, [sp, #0x2c] - str r0, [sp, #0x54] - sub r0, r4, #0x2 - str r3, [sp, #0x30] - cmp r1, r0 - beq _02008C14 - add r2, r5, #0x0 - sub r0, r4, #0x2 -_02008C0A: - add r2, #0x20 - ldr r1, [r2, #0x0] - add r4, r4, #0x1 - cmp r1, r0 - bne _02008C0A -_02008C14: - add r0, r7, #0x0 - mov r1, #0x8 - bl AllocFromHeap - mov r1, #0x24 - add r6, r0, #0x0 - add r0, r7, #0x0 - mul r1, r4 - bl AllocFromHeap - str r0, [r6, #0x0] - mov r7, #0x0 - str r4, [r6, #0x4] - cmp r4, #0x0 - ble _02008C7A - add r4, r7, #0x0 -_02008C34: - ldr r0, [r5, #0xc] - str r0, [sp, #0x0] - ldr r0, [r5, #0x10] - str r0, [sp, #0x4] - ldr r0, [r5, #0x14] - str r0, [sp, #0x8] - ldr r0, [r5, #0x18] - str r0, [sp, #0xc] - ldr r0, [r5, #0x1c] - str r0, [sp, #0x10] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x14] - ldr r0, [sp, #0x30] - str r0, [sp, #0x18] - ldr r0, [sp, #0x48] - str r0, [sp, #0x1c] - ldr r0, [sp, #0x4c] - str r0, [sp, #0x20] - ldr r0, [sp, #0x50] - str r0, [sp, #0x24] - ldr r0, [sp, #0x54] - str r0, [sp, #0x28] - ldr r0, [r6, #0x0] - ldr r1, [r5, #0x0] - ldr r2, [r5, #0x4] - ldr r3, [r5, #0x8] - add r0, r0, r4 - bl FUN_02008AA4 - ldr r0, [r6, #0x4] - add r7, r7, #0x1 - add r5, #0x20 - add r4, #0x24 - cmp r7, r0 - blt _02008C34 -_02008C7A: - add r0, r6, #0x0 - add sp, #0x34 - pop {r4-r7, pc} - - thumb_func_start FUN_02008C80 -FUN_02008C80: ; 0x02008C80 - push {r4, lr} - add r4, r0, #0x0 - bne _02008C8A - bl GF_AssertFail -_02008C8A: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _02008C94 - bl FreeToHeap -_02008C94: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start FUN_02008C9C -FUN_02008C9C: ; 0x02008C9C - push {r3-r6, lr} - sub sp, #0x1c - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r1, _02008D00 ; =0xFFFFF000 - add r0, r4, #0x0 - add r6, r2, #0x0 - bl FUN_0202134C - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - mov r0, #0xff - lsl r0, r0, #0xc - str r0, [sp, #0x8] - mov r0, #0x3 - lsl r0, r0, #0x12 - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r0, #0x98 - add r1, sp, #0x0 - mov r2, #0x1 - add r3, r4, #0x0 - bl FUN_02009FD8 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0xff - mov r1, #0x3 - lsl r1, r1, #0x12 - lsl r0, r0, #0xc - str r0, [sp, #0x8] - add r0, r4, #0x0 - str r1, [sp, #0x4] - str r1, [sp, #0xc] - add r0, #0xe0 - add r1, sp, #0x0 - mov r2, #0x2 - add r3, r4, #0x0 - bl FUN_02009FD8 - add r0, sp, #0x10 - str r5, [sp, #0x10] - str r4, [sp, #0x14] - str r6, [sp, #0x18] - bl FUN_0201FCB0 - add sp, #0x1c - pop {r3-r6, pc} - nop -_02008D00: .word 0xFFFFF000 - - thumb_func_start FUN_02008D04 -FUN_02008D04: ; 0x02008D04 - push {r3, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - mov r1, #0xff - lsl r1, r1, #0xc - str r1, [sp, #0x8] - mov r1, #0x3 - lsl r1, r1, #0x12 - str r1, [sp, #0xc] - add r0, #0x98 - add r1, sp, #0x0 - str r2, [sp, #0x4] - bl FUN_02021390 - add sp, #0x10 - pop {r3, pc} - - thumb_func_start FUN_02008D24 -FUN_02008D24: ; 0x02008D24 - push {r3, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - mov r1, #0xff - lsl r1, r1, #0xc - str r1, [sp, #0x8] - mov r1, #0x3 - lsl r1, r1, #0x12 - str r1, [sp, #0xc] - add r0, #0xe0 - add r1, sp, #0x0 - str r2, [sp, #0x4] - bl FUN_02021390 - add sp, #0x10 - pop {r3, pc} - - thumb_func_start FUN_02008D44 -FUN_02008D44: ; 0x02008D44 - push {r4, lr} - add r4, r0, #0x0 - cmp r1, #0x10 - beq _02008D5A - ldr r2, _02008DCC ; =0x00100010 - cmp r1, r2 - beq _02008D8A - ldr r0, _02008DD0 ; =0x00200010 - cmp r1, r0 - beq _02008D98 - b _02008DC4 -_02008D5A: - bl GX_GetBankForOBJ - cmp r0, #0x40 - beq _02008D6A - bl GX_GetBankForOBJ - cmp r0, #0x20 - bne _02008D7A -_02008D6A: - mov r0, #0x3e - mov r1, #0x2 - lsl r0, r0, #0x8 - lsl r1, r1, #0x8 - add r2, r4, #0x0 - bl FUN_0201D194 - pop {r4, pc} -_02008D7A: - mov r0, #0x7e - mov r1, #0x2 - lsl r0, r0, #0x8 - lsl r1, r1, #0x8 - add r2, r4, #0x0 - bl FUN_0201D194 - pop {r4, pc} -_02008D8A: - mov r0, #0xfe - lsr r1, r2, #0xb - lsl r0, r0, #0x8 - add r2, r4, #0x0 - bl FUN_0201D194 - pop {r4, pc} -_02008D98: - bl GX_GetBankForOBJ - cmp r0, #0x30 - beq _02008DA8 - bl GX_GetBankForOBJ - cmp r0, #0x50 - bne _02008DB6 -_02008DA8: - mov r1, #0x2 - ldr r0, _02008DD4 ; =0x00013E00 - lsl r1, r1, #0x8 - add r2, r4, #0x0 - bl FUN_0201D194 - pop {r4, pc} -_02008DB6: - mov r1, #0x2 - ldr r0, _02008DD8 ; =0x0001FE00 - lsl r1, r1, #0x8 - add r2, r4, #0x0 - bl FUN_0201D194 - pop {r4, pc} -_02008DC4: - bl GF_AssertFail - pop {r4, pc} - nop -_02008DCC: .word 0x00100010 -_02008DD0: .word 0x00200010 -_02008DD4: .word 0x00013E00 -_02008DD8: .word 0x0001FE00 - - thumb_func_start FUN_02008DDC -FUN_02008DDC: ; 0x02008DDC - ldr r3, _02008DE8 ; =FUN_0201E068 - add r1, r0, #0x0 - mov r0, #0x3 - lsl r0, r0, #0xe - bx r3 - nop -_02008DE8: .word FUN_0201E068 diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s deleted file mode 100644 index f257d2c8..00000000 --- a/arm9/asm/unk_02008DEC.s +++ /dev/null @@ -1,2280 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02008DEC -FUN_02008DEC: ; 0x02008DEC - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - str r2, [sp, #0x0] - add r0, r2, #0x0 - mov r1, #0x14 - bl AllocFromHeap - add r4, r0, #0x0 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl FUN_02020C44 - str r0, [r4, #0x0] - mov r0, #0xc - add r7, r5, #0x0 - mul r7, r0 - ldr r0, [sp, #0x0] - add r1, r7, #0x0 - bl AllocFromHeap - mov r1, #0x0 - add r2, r7, #0x0 - str r0, [r4, #0x4] - bl memset - str r5, [r4, #0x8] - mov r0, #0x0 - str r0, [r4, #0xc] - str r6, [r4, #0x10] - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02008E2C -FUN_02008E2C: ; 0x02008E2C - push {r4, lr} - add r4, r0, #0x0 - bne _02008E36 - bl GF_AssertFail -_02008E36: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _02008E40 - bl GF_AssertFail -_02008E40: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - bne _02008E4A - bl GF_AssertFail -_02008E4A: - add r0, r4, #0x0 - bl FUN_020094C4 - ldr r0, [r4, #0x0] - bl FUN_02020C90 - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r0, [r4, #0x4] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x4] - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start FUN_02008E6C -FUN_02008E6C: ; 0x02008E6C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _02008E80 - bl GF_AssertFail -_02008E80: - cmp r4, #0x0 - bne _02008E88 - bl GF_AssertFail -_02008E88: - ldr r0, [r4, #0x4] - cmp r0, r6 - bgt _02008E92 - bl GF_AssertFail -_02008E92: - ldr r1, [r5, #0x10] - ldr r0, [r4, #0x8] - cmp r1, r0 - beq _02008E9E - bl GF_AssertFail -_02008E9E: - add r0, r5, #0x0 - bl FUN_020097D0 - str r0, [sp, #0x1c] - cmp r0, #0x0 - bne _02008EAE - bl GF_AssertFail -_02008EAE: - ldrb r0, [r4, #0xc] - cmp r0, #0x0 - bne _02008EEA - ldr r2, [r4, #0x0] - mov r0, #0x4c - add r1, r6, #0x0 - mul r1, r0 - add r6, r2, r1 - ldr r1, [r2, r1] - add r0, r5, #0x0 - bl FUN_0200945C - cmp r0, #0x1 - beq _02008ECE - bl GF_AssertFail -_02008ECE: - ldr r0, [r6, #0x44] - ldr r1, [sp, #0x1c] - str r0, [sp, #0x0] - ldr r0, [r6, #0x48] - add r2, r6, #0x4 - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - str r7, [sp, #0xc] - ldr r3, [r6, #0x0] - add r0, r5, #0x0 - bl FUN_0200994C - b _02008F28 -_02008EEA: - mov r0, #0x18 - ldr r1, [r4, #0x0] - mul r0, r6 - add r6, r1, r0 - ldr r1, [r6, #0xc] - add r0, r5, #0x0 - bl FUN_0200945C - cmp r0, #0x1 - beq _02008F02 - bl GF_AssertFail -_02008F02: - ldr r0, [r6, #0x8] - ldr r1, [sp, #0x1c] - str r0, [sp, #0x0] - ldr r0, [r6, #0xc] - str r0, [sp, #0x4] - ldr r0, [r6, #0x10] - str r0, [sp, #0x8] - ldr r0, [r6, #0x14] - str r0, [sp, #0xc] - ldr r0, [r4, #0x8] - str r0, [sp, #0x10] - str r7, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - add r0, r5, #0x0 - bl FUN_02009978 -_02008F28: - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - ldr r0, [sp, #0x1c] - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02008F34 -FUN_02008F34: ; 0x02008F34 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02008F48 - bl GF_AssertFail -_02008F48: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _02008F52 - bl GF_AssertFail -_02008F52: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02008F60 - bl GF_AssertFail -_02008F60: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, #0x0 - str r0, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x40] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02008F90 -FUN_02008F90: ; 0x02008F90 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02008FA4 - bl GF_AssertFail -_02008FA4: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _02008FAE - bl GF_AssertFail -_02008FAE: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02008FBC - bl GF_AssertFail -_02008FBC: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02008FEC -FUN_02008FEC: ; 0x02008FEC - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009000 - bl GF_AssertFail -_02009000: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _0200900A - bl GF_AssertFail -_0200900A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009018 - bl GF_AssertFail -_02009018: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200904C -FUN_0200904C: ; 0x0200904C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009060 - bl GF_AssertFail -_02009060: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _0200906A - bl GF_AssertFail -_0200906A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009078 - bl GF_AssertFail -_02009078: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020090AC -FUN_020090AC: ; 0x020090AC - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020090C0 - bl GF_AssertFail -_020090C0: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _020090CE - bl GF_AssertFail -_020090CE: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - mov r1, #0x0 - str r1, [sp, #0x8] - ldr r0, [sp, #0x3c] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_020090FC -FUN_020090FC: ; 0x020090FC - push {r4-r7, lr} - sub sp, #0x24 - add r5, r0, #0x0 - add r4, r1, #0x0 - str r2, [sp, #0x1c] - str r3, [sp, #0x20] - cmp r5, #0x0 - bne _02009110 - bl GF_AssertFail -_02009110: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _0200911A - bl GF_AssertFail -_0200911A: - cmp r4, #0x0 - bne _02009122 - bl GF_AssertFail -_02009122: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _0200912C - bl GF_AssertFail -_0200912C: - add r0, r4, #0x0 - bl FUN_02009530 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl FUN_020095E4 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009490 - ldr r0, [sp, #0x38] - mov r1, #0x0 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - str r7, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x3c] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x20] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009978 - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start FUN_02009168 -FUN_02009168: ; 0x02009168 - push {r3-r7, lr} - sub sp, #0x28 - add r5, r0, #0x0 - add r4, r1, #0x0 - str r2, [sp, #0x1c] - str r3, [sp, #0x20] - cmp r5, #0x0 - bne _0200917C - bl GF_AssertFail -_0200917C: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _02009186 - bl GF_AssertFail -_02009186: - cmp r4, #0x0 - bne _0200918E - bl GF_AssertFail -_0200918E: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - beq _02009198 - bl GF_AssertFail -_02009198: - add r0, r4, #0x0 - bl FUN_02009530 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl FUN_020095E4 - add r7, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x24] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009490 - ldr r0, [sp, #0x40] - ldr r2, [sp, #0x1c] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0x24] - str r7, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - ldr r3, [sp, #0x20] - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009978 - add sp, #0x28 - pop {r3-r7, pc} - - thumb_func_start FUN_020091E0 -FUN_020091E0: ; 0x020091E0 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020091F4 - bl GF_AssertFail -_020091F4: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _020091FE - bl GF_AssertFail -_020091FE: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _0200920C - bl GF_AssertFail -_0200920C: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, #0x0 - str r0, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x40] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200923C -FUN_0200923C: ; 0x0200923C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009250 - bl GF_AssertFail -_02009250: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _0200925A - bl GF_AssertFail -_0200925A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009268 - bl GF_AssertFail -_02009268: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02009298 -FUN_02009298: ; 0x02009298 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020092AC - bl GF_AssertFail -_020092AC: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _020092B6 - bl GF_AssertFail -_020092B6: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _020092C4 - bl GF_AssertFail -_020092C4: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020092F8 -FUN_020092F8: ; 0x020092F8 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _0200930C - bl GF_AssertFail -_0200930C: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _02009316 - bl GF_AssertFail -_02009316: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009324 - bl GF_AssertFail -_02009324: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02009358 -FUN_02009358: ; 0x02009358 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _0200936C - bl GF_AssertFail -_0200936C: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _0200937A - bl GF_AssertFail -_0200937A: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - mov r1, #0x0 - str r1, [sp, #0x8] - ldr r0, [sp, #0x3c] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_020093A8 -FUN_020093A8: ; 0x020093A8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _020093BC - bl GF_AssertFail -_020093BC: - cmp r4, #0x0 - bne _020093C4 - bl GF_AssertFail -_020093C4: - str r6, [sp, #0x0] - str r7, [sp, #0x4] - ldr r3, [r4, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - mov r2, #0x0 - bl FUN_020093DC - ldr r0, [r4, #0x4] - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020093DC -FUN_020093DC: ; 0x020093DC - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - add r5, r2, #0x0 - ldr r0, [sp, #0x24] - add r7, r5, r3 - str r1, [sp, #0x4] - ldr r4, [sp, #0x20] - str r0, [sp, #0x24] - cmp r5, r7 - bge _02009420 - add r6, r4, #0x0 - add r6, #0x8 -_020093F6: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [sp, #0x24] - add r2, r5, #0x0 - bl FUN_02008E6C - cmp r4, #0x0 - beq _0200941A - ldr r2, [r4, #0x8] - ldr r1, [r4, #0x4] - cmp r1, r2 - ble _0200941A - ldr r1, [r4, #0x0] - lsl r2, r2, #0x2 - str r0, [r1, r2] - ldr r0, [r6, #0x0] - add r0, r0, #0x1 - str r0, [r6, #0x0] -_0200941A: - add r5, r5, #0x1 - cmp r5, r7 - blt _020093F6 -_02009420: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02009424 -FUN_02009424: ; 0x02009424 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0xc - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - lsl r1, r5, #0x2 - bl AllocFromHeap - str r0, [r4, #0x0] - str r5, [r4, #0x4] - mov r0, #0x0 - str r0, [r4, #0x8] - add r0, r4, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02009448 -FUN_02009448: ; 0x02009448 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200945C -FUN_0200945C: ; 0x0200945C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200946A - bl GF_AssertFail -_0200946A: - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_02020CB0 - pop {r3-r5, pc} - - thumb_func_start FUN_02009474 -FUN_02009474: ; 0x02009474 - push {r4, lr} - add r4, r0, #0x0 - bne _0200947E - bl GF_AssertFail -_0200947E: - add r0, r4, #0x0 - bl FUN_02009920 - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_02020E1C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009490 -FUN_02009490: ; 0x02009490 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200949E - bl GF_AssertFail -_0200949E: - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _020094A8 - bl GF_AssertFail -_020094A8: - add r0, r4, #0x0 - bl FUN_02009920 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_02020D68 - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r0, [r5, #0xc] - sub r0, r0, #0x1 - str r0, [r5, #0xc] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020094C4 -FUN_020094C4: ; 0x020094C4 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x8] - mov r6, #0x0 - cmp r0, #0x0 - ble _020094EC - add r4, r6, #0x0 -_020094D2: - ldr r1, [r5, #0x4] - ldr r0, [r1, r4] - cmp r0, #0x0 - beq _020094E2 - add r0, r5, #0x0 - add r1, r1, r4 - bl FUN_02009490 -_020094E2: - ldr r0, [r5, #0x8] - add r6, r6, #0x1 - add r4, #0xc - cmp r6, r0 - blt _020094D2 -_020094EC: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020094F0 -FUN_020094F0: ; 0x020094F0 - push {r3-r7, lr} - add r5, r0, #0x0 - add r7, r1, #0x0 - cmp r5, #0x0 - bne _020094FE - bl GF_AssertFail -_020094FE: - ldr r0, [r5, #0x8] - mov r6, #0x0 - cmp r0, #0x0 - ble _0200952C - add r4, r6, #0x0 -_02009508: - ldr r0, [r5, #0x4] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009522 - bl FUN_02020E38 - cmp r0, r7 - bne _02009522 - mov r0, #0xc - ldr r1, [r5, #0x4] - mul r0, r6 - add r0, r1, r0 - pop {r3-r7, pc} -_02009522: - ldr r0, [r5, #0x8] - add r6, r6, #0x1 - add r4, #0xc - cmp r6, r0 - blt _02009508 -_0200952C: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02009530 -FUN_02009530: ; 0x02009530 - push {r4, lr} - add r4, r0, #0x0 - bne _0200953A - bl GF_AssertFail -_0200953A: - ldr r0, [r4, #0x0] - bl FUN_02020E38 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009544 -FUN_02009544: ; 0x02009544 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _02009552 - bl GF_AssertFail -_02009552: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_0200955C -FUN_0200955C: ; 0x0200955C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x1 - beq _0200956A - bl GF_AssertFail -_0200956A: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_02009574 -FUN_02009574: ; 0x02009574 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x2 - beq _02009582 - bl GF_AssertFail -_02009582: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_0200958C -FUN_0200958C: ; 0x0200958C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x3 - beq _0200959A - bl GF_AssertFail -_0200959A: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095A4 -FUN_020095A4: ; 0x020095A4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x4 - beq _020095B2 - bl GF_AssertFail -_020095B2: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095BC -FUN_020095BC: ; 0x020095BC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x5 - beq _020095CA - bl GF_AssertFail -_020095CA: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095D4 -FUN_020095D4: ; 0x020095D4 - push {r4, lr} - add r4, r0, #0x0 - bne _020095DE - bl GF_AssertFail -_020095DE: - ldr r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020095E4 -FUN_020095E4: ; 0x020095E4 - push {r4, lr} - add r4, r0, #0x0 - bne _020095EE - bl GF_AssertFail -_020095EE: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - bne _020095FE - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x4] - pop {r4, pc} -_020095FE: - cmp r0, #0x1 - bne _0200960C - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x4] - pop {r4, pc} -_0200960C: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02009610 -FUN_02009610: ; 0x02009610 - push {r4, lr} - add r4, r0, #0x0 - bne _0200961A - bl GF_AssertFail -_0200961A: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _0200962A - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x8] - pop {r4, pc} -_0200962A: - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009630 -FUN_02009630: ; 0x02009630 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200963E - bl GF_AssertFail -_0200963E: - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _0200964C - add r0, r5, #0x0 - bl FUN_02009934 - str r4, [r0, #0x4] -_0200964C: - ldr r0, [r5, #0x4] - cmp r0, #0x1 - bne _0200965A - add r0, r5, #0x0 - bl FUN_02009934 - str r4, [r0, #0x4] -_0200965A: - pop {r3-r5, pc} - - thumb_func_start FUN_0200965C -FUN_0200965C: ; 0x0200965C - mov r0, #0x10 - bx lr - - thumb_func_start FUN_02009660 -FUN_02009660: ; 0x02009660 - lsl r1, r1, #0x4 - add r0, r0, r1 - bx lr - .balign 4 - - thumb_func_start FUN_02009668 -FUN_02009668: ; 0x02009668 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - cmp r4, #0x0 - bne _02009678 - bl GF_AssertFail -_02009678: - ldr r0, [r5, #0x0] - str r0, [r4, #0x8] - mov r0, #0x1 - strb r0, [r4, #0xc] - add r0, r5, #0x4 - bl FUN_020099E8 - add r2, r0, #0x0 - str r0, [r4, #0x4] - cmp r2, #0x0 - ble _0200969A - mov r1, #0x18 - add r0, r6, #0x0 - mul r1, r2 - bl AllocFromHeap - b _0200969C -_0200969A: - mov r0, #0x0 -_0200969C: - str r0, [r4, #0x0] - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020096B0 - ldr r3, [r4, #0x4] - mov r2, #0x18 - add r1, r5, #0x4 - mul r2, r3 - bl memcpy -_020096B0: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020096B4 -FUN_020096B4: ; 0x020096B4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020096C2 - bl FreeToHeap -_020096C2: - mov r0, #0x0 - str r0, [r4, #0x0] - str r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020096CC -FUN_020096CC: ; 0x020096CC - push {r4, lr} - add r4, r0, #0x0 - bne _020096D6 - bl GF_AssertFail -_020096D6: - ldr r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020096DC -FUN_020096DC: ; 0x020096DC - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _020096EA - bl GF_AssertFail -_020096EA: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _020096F4 - bl GF_AssertFail -_020096F4: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _02009704 - mov r0, #0x4c - mul r0, r4 - ldr r0, [r1, r0] - pop {r3-r5, pc} -_02009704: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0xc] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009710 -FUN_02009710: ; 0x02009710 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200971E - bl GF_AssertFail -_0200971E: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009728 - bl GF_AssertFail -_02009728: - ldrb r0, [r5, #0xc] - cmp r0, #0x1 - bne _02009738 - mov r0, #0x18 - ldr r1, [r5, #0x0] - mul r0, r4 - add r0, r1, r0 - ldr r6, [r0, #0x4] -_02009738: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0200973C -FUN_0200973C: ; 0x0200973C - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200974A - bl GF_AssertFail -_0200974A: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009754 - bl GF_AssertFail -_02009754: - ldrb r0, [r5, #0xc] - cmp r0, #0x1 - bne _02009764 - mov r0, #0x18 - ldr r1, [r5, #0x0] - mul r0, r4 - add r0, r1, r0 - ldr r6, [r0, #0x8] -_02009764: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02009768 -FUN_02009768: ; 0x02009768 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02009776 - bl GF_AssertFail -_02009776: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009780 - bl GF_AssertFail -_02009780: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _02009792 - mov r0, #0x4c - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x44] - pop {r3-r5, pc} -_02009792: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x10] - pop {r3-r5, pc} - - thumb_func_start FUN_0200979C -FUN_0200979C: ; 0x0200979C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _020097AA - bl GF_AssertFail -_020097AA: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _020097B4 - bl GF_AssertFail -_020097B4: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _020097C6 - mov r0, #0x4c - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x48] - pop {r3-r5, pc} -_020097C6: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x14] - pop {r3-r5, pc} - - thumb_func_start FUN_020097D0 -FUN_020097D0: ; 0x020097D0 - push {r3-r4} - ldr r4, [r0, #0x8] - mov r1, #0x0 - cmp r4, #0x0 - ble _020097F6 - ldr r3, [r0, #0x4] - add r2, r3, #0x0 -_020097DE: - ldr r0, [r2, #0x0] - cmp r0, #0x0 - bne _020097EE - mov r0, #0xc - mul r0, r1 - add r0, r3, r0 - pop {r3-r4} - bx lr -_020097EE: - add r1, r1, #0x1 - add r2, #0xc - cmp r1, r4 - blt _020097DE -_020097F6: - mov r0, #0x0 - pop {r3-r4} - bx lr - - thumb_func_start FUN_020097FC -FUN_020097FC: ; 0x020097FC - push {r3-r7, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - ldr r5, [sp, #0x18] - bl FUN_02020E0C - cmp r6, #0x5 - bhi _0200986A - add r1, r6, r6 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0200981E: ; jump table (using 16-bit offset) - .short _0200982A - _0200981E - 2; case 0 - .short _02009836 - _0200981E - 2; case 1 - .short _02009844 - _0200981E - 2; case 2 - .short _0200984E - _0200981E - 2; case 3 - .short _02009858 - _0200981E - 2; case 4 - .short _02009862 - _0200981E - 2; case 5 -_0200982A: - add r1, r7, #0x0 - add r2, r5, #0x0 - bl FUN_0200986C - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009836: - ldr r2, [sp, #0x0] - add r1, r7, #0x0 - add r3, r5, #0x0 - bl FUN_0200988C - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009844: - add r1, r5, #0x0 - bl FUN_020098B0 - str r0, [r4, #0x8] - pop {r3-r7, pc} -_0200984E: - add r1, r5, #0x0 - bl FUN_020098CC - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009858: - add r1, r5, #0x0 - bl FUN_020098E8 - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009862: - add r1, r5, #0x0 - bl FUN_02009904 - str r0, [r4, #0x8] -_0200986A: - pop {r3-r7, pc} - - thumb_func_start FUN_0200986C -FUN_0200986C: ; 0x0200986C - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r2, #0x0 - mov r1, #0x8 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedCharacterData - str r5, [r4, #0x4] - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0200988C -FUN_0200988C: ; 0x0200988C - push {r3-r7, lr} - add r7, r0, #0x0 - add r5, r1, #0x0 - add r0, r3, #0x0 - mov r1, #0xc - add r6, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r7, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedPaletteData - str r5, [r4, #0x4] - str r6, [r4, #0x8] - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020098B0 -FUN_020098B0: ; 0x020098B0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedCellBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020098CC -FUN_020098CC: ; 0x020098CC - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedAnimBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020098E8 -FUN_020098E8: ; 0x020098E8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedMultiCellBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009904 -FUN_02009904: ; 0x02009904 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedMCAnimBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009920 -FUN_02009920: ; 0x02009920 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - beq _0200992E - bl FreeToHeap -_0200992E: - mov r0, #0x0 - str r0, [r4, #0x8] - pop {r4, pc} - - thumb_func_start FUN_02009934 -FUN_02009934: ; 0x02009934 - push {r4, lr} - add r4, r0, #0x0 - bne _0200993E - bl GF_AssertFail -_0200993E: - ldr r0, [r4, #0x8] - cmp r0, #0x0 - bne _02009948 - bl GF_AssertFail -_02009948: - ldr r0, [r4, #0x8] - pop {r4, pc} - - thumb_func_start FUN_0200994C -FUN_0200994C: ; 0x0200994C - push {r3-r4, lr} - sub sp, #0x4 - add r4, r1, #0x0 - add r1, r2, #0x0 - add r2, r3, #0x0 - ldr r0, [r0, #0x0] - ldr r3, [sp, #0x1c] - bl FUN_02020D10 - str r0, [r4, #0x0] - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r4, #0x0 - bl FUN_020097FC - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_02009978 -FUN_02009978: ; 0x02009978 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - add r4, r1, #0x0 - str r0, [sp, #0x0] - add r0, r2, #0x0 - add r1, r3, #0x0 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x24] - bl GfGfxLoader_LoadFromNarc - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r2, [sp, #0x14] - bl FUN_02020CD4 - str r0, [r4, #0x0] - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x24] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r4, #0x0 - bl FUN_020097FC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020099B0 -FUN_020099B0: ; 0x020099B0 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - add r4, r1, #0x0 - str r0, [sp, #0x0] - add r0, r2, #0x0 - add r1, r3, #0x0 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x24] - bl FUN_02009A04 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r2, [sp, #0x14] - bl FUN_02020CD4 - str r0, [r4, #0x0] - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x24] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r4, #0x0 - bl FUN_020097FC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020099E8 -FUN_020099E8: ; 0x020099E8 - mov r3, #0x0 - ldr r2, [r0, #0x0] - sub r1, r3, #0x2 - cmp r2, r1 - beq _020099FE - sub r1, r3, #0x2 -_020099F4: - add r0, #0x18 - ldr r2, [r0, #0x0] - add r3, r3, #0x1 - cmp r2, r1 - bne _020099F4 -_020099FE: - add r0, r3, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_02009A04 -FUN_02009A04: ; 0x02009A04 - push {r4-r6, lr} - add r6, r3, #0x0 - add r5, r2, #0x0 - add r2, r6, #0x0 - bl NARC_AllocAndReadWholeMember - add r4, r0, #0x0 - beq _02009A4A - cmp r5, #0x0 - beq _02009A4A - ldr r0, [sp, #0x10] - cmp r0, #0x0 - bne _02009A2A - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeap - b _02009A34 -_02009A2A: - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeapAtEnd -_02009A34: - add r5, r0, #0x0 - cmp r5, #0x0 - beq _02009A48 - add r0, r4, #0x0 - add r1, r5, #0x0 - bl MI_UncompressLZ8 - add r0, r4, #0x0 - bl FreeToHeap -_02009A48: - add r4, r5, #0x0 -_02009A4A: - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02009A50 -FUN_02009A50: ; 0x02009A50 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009A5C - bl GF_AssertFail -_02009A5C: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009A6A - bl GF_AssertFail -_02009A6A: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D1F8 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009A90 -FUN_02009A90: ; 0x02009A90 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009A9A - bl GF_AssertFail -_02009A9A: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009AC2 - add r4, r6, #0x0 -_02009AA4: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009AB8 - bl FUN_02009A50 - cmp r0, #0x0 - bne _02009AB8 - bl GF_AssertFail -_02009AB8: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009AA4 -_02009AC2: - pop {r4-r6, pc} - - thumb_func_start FUN_02009AC4 -FUN_02009AC4: ; 0x02009AC4 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009AD0 - bl GF_AssertFail -_02009AD0: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009ADE - bl GF_AssertFail -_02009ADE: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D250 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009B04 -FUN_02009B04: ; 0x02009B04 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009B10 - bl GF_AssertFail -_02009B10: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009B1E - bl GF_AssertFail -_02009B1E: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D1F8 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009B44 -FUN_02009B44: ; 0x02009B44 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009B4E - bl GF_AssertFail -_02009B4E: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009B76 - add r4, r6, #0x0 -_02009B58: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009B6C - bl FUN_02009B04 - cmp r0, #0x0 - bne _02009B6C - bl GF_AssertFail -_02009B6C: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009B58 -_02009B76: - pop {r4-r6, pc} - - thumb_func_start FUN_02009B78 -FUN_02009B78: ; 0x02009B78 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009B84 - bl GF_AssertFail -_02009B84: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009B92 - bl GF_AssertFail -_02009B92: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D250 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009BB8 -FUN_02009BB8: ; 0x02009BB8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r5, r1, #0x0 - cmp r4, #0x0 - bne _02009BC6 - bl GF_AssertFail -_02009BC6: - cmp r5, #0x0 - bne _02009BCE - bl GF_AssertFail -_02009BCE: - add r0, r4, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009544 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201D2DC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009BE8 -FUN_02009BE8: ; 0x02009BE8 - push {r3-r5, lr} - add r5, r0, #0x0 - bne _02009BF2 - bl GF_AssertFail -_02009BF2: - add r0, r5, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009544 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201D2DC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009C0C -FUN_02009C0C: ; 0x02009C0C - push {r4, lr} - add r4, r0, #0x0 - bne _02009C16 - bl GF_AssertFail -_02009C16: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C24 - bl GF_AssertFail -_02009C24: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201D324 - pop {r4, pc} - - thumb_func_start FUN_02009C30 -FUN_02009C30: ; 0x02009C30 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009C3A - bl GF_AssertFail -_02009C3A: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009C5A - add r4, r6, #0x0 -_02009C44: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009C50 - bl FUN_02009C0C -_02009C50: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009C44 -_02009C5A: - pop {r4-r6, pc} - - thumb_func_start FUN_02009C5C -FUN_02009C5C: ; 0x02009C5C - push {r4, lr} - add r4, r0, #0x0 - bne _02009C66 - bl GF_AssertFail -_02009C66: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C74 - bl GF_AssertFail -_02009C74: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201D3B0 - pop {r4, pc} - - thumb_func_start FUN_02009C80 -FUN_02009C80: ; 0x02009C80 - push {r3-r5, lr} - add r4, r0, #0x0 - add r5, r1, #0x0 - cmp r4, #0x0 - bne _02009C8E - bl GF_AssertFail -_02009C8E: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C9C - bl GF_AssertFail -_02009C9C: - cmp r5, #0x0 - bne _02009CA4 - bl GF_AssertFail -_02009CA4: - add r0, r5, #0x0 - bl FUN_020095D4 - cmp r0, #0x2 - beq _02009CB2 - bl GF_AssertFail -_02009CB2: - add r0, r4, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009574 - add r1, r0, #0x0 - ldr r1, [r1, #0xc] - add r0, r4, #0x0 - ldr r1, [r1, #0x0] - bl FUN_0201D3D4 - cmp r0, #0x0 - bne _02009CDA - add r0, r4, #0x0 - bl FUN_0201D3B0 - bl FUN_0201D458 -_02009CDA: - pop {r3-r5, pc} - - thumb_func_start FUN_02009CDC -FUN_02009CDC: ; 0x02009CDC - push {r4, lr} - add r4, r0, #0x0 - bne _02009CE6 - bl GF_AssertFail -_02009CE6: - add r0, r4, #0x0 - bl FUN_0201D4F0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009CF0 -FUN_02009CF0: ; 0x02009CF0 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009CFC - bl GF_AssertFail -_02009CFC: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009D0A - bl GF_AssertFail -_02009D0A: - add r0, r4, #0x0 - bl FUN_0200955C - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x8] - add r0, sp, #0x0 - bl FUN_0201E0E4 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009D34 -FUN_02009D34: ; 0x02009D34 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009D3E - bl GF_AssertFail -_02009D3E: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009D66 - add r4, r6, #0x0 -_02009D48: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009D5C - bl FUN_02009CF0 - cmp r0, #0x0 - bne _02009D5C - bl GF_AssertFail -_02009D5C: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009D48 -_02009D66: - pop {r4-r6, pc} - - thumb_func_start FUN_02009D68 -FUN_02009D68: ; 0x02009D68 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009D74 - bl GF_AssertFail -_02009D74: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009D82 - bl GF_AssertFail -_02009D82: - add r0, r4, #0x0 - bl FUN_0200955C - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x8] - add r0, sp, #0x0 - bl FUN_0201E128 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009DAC -FUN_02009DAC: ; 0x02009DAC - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009DB6 - bl GF_AssertFail -_02009DB6: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009DDE - add r4, r6, #0x0 -_02009DC0: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009DD4 - bl FUN_02009D68 - cmp r0, #0x0 - bne _02009DD4 - bl GF_AssertFail -_02009DD4: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009DC0 -_02009DDE: - pop {r4-r6, pc} - - thumb_func_start FUN_02009DE0 -FUN_02009DE0: ; 0x02009DE0 - push {r3-r5, lr} - add r5, r0, #0x0 - bne _02009DEA - bl GF_AssertFail -_02009DEA: - add r0, r5, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0200955C - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201E168 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009E04 -FUN_02009E04: ; 0x02009E04 - push {r4, lr} - add r4, r0, #0x0 - bne _02009E0E - bl GF_AssertFail -_02009E0E: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009E1C - bl GF_AssertFail -_02009E1C: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201E1C8 - pop {r4, pc} - - thumb_func_start FUN_02009E28 -FUN_02009E28: ; 0x02009E28 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009E32 - bl GF_AssertFail -_02009E32: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009E52 - add r4, r6, #0x0 -_02009E3C: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009E48 - bl FUN_02009E04 -_02009E48: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009E3C -_02009E52: - pop {r4-r6, pc} - - thumb_func_start FUN_02009E54 -FUN_02009E54: ; 0x02009E54 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02009E62 - bl GF_AssertFail -_02009E62: - add r0, r5, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009E70 - bl GF_AssertFail -_02009E70: - add r0, r5, #0x0 - bl FUN_02009530 - cmp r4, #0x0 - beq _02009E82 - add r1, r4, #0x0 - bl FUN_0201E258 - pop {r3-r5, pc} -_02009E82: - bl FUN_0201E230 - pop {r3-r5, pc} - - thumb_func_start FUN_02009E88 -FUN_02009E88: ; 0x02009E88 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x0 - bl FUN_02009E54 - add r1, r4, #0x0 - bl NNS_G2dGetImagePaletteLocation - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02009EA8 - asr r1, r0, #0x4 - lsr r1, r1, #0x1b - add r1, r0, r1 - asr r0, r1, #0x5 -_02009EA8: - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s deleted file mode 100644 index b08b52fd..00000000 --- a/arm9/asm/unk_02009EAC.s +++ /dev/null @@ -1,664 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global UNK_021C4670 -UNK_021C4670: ; 0x021C4670 - .space 0x4 - - .global UNK_021C4674 -UNK_021C4674: ; 0x021C4674 - .space 0x20 - - .global UNK_021C4694 -UNK_021C4694: ; 0x021C4694 - .space 0x20 - - .text - - thumb_func_start FUN_02009EAC -FUN_02009EAC: ; 0x02009EAC - push {r3-r4, lr} - sub sp, #0x14 - add r4, r0, #0x0 - cmp r4, #0x4 - bge _02009EC0 - mov r0, #0x4 - cmp r1, #0x7c - ble _02009EC0 - sub r4, r0, r4 - sub r1, r1, r4 -_02009EC0: - cmp r2, #0x1 - bge _02009ED0 - mov r4, #0x1 - cmp r3, #0x1e - ble _02009ED2 - sub r2, r4, r2 - sub r3, r3, r2 - b _02009ED2 -_02009ED0: - add r4, r2, #0x0 -_02009ED2: - ldr r2, [sp, #0x20] - str r2, [sp, #0x0] - ldr r2, [sp, #0x24] - str r2, [sp, #0x4] - ldr r2, [sp, #0x28] - str r2, [sp, #0x8] - ldr r2, [sp, #0x2c] - str r2, [sp, #0xc] - ldr r2, [sp, #0x30] - str r2, [sp, #0x10] - add r2, r4, #0x0 - bl FUN_02009EF0 - add sp, #0x14 - pop {r3-r4, pc} - - thumb_func_start FUN_02009EF0 -FUN_02009EF0: ; 0x02009EF0 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r0, _02009F7C ; =UNK_021C4670 - add r4, r1, #0x0 - ldr r0, [r0, #0x0] - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r0, #0x0 - beq _02009F08 - bl GF_AssertFail -_02009F08: - ldr r0, [sp, #0x30] - mov r1, #0x3c - bl AllocFromHeap - ldr r1, _02009F7C ; =UNK_021C4670 - cmp r0, #0x0 - str r0, [r1, #0x0] - bne _02009F1C - bl GF_AssertFail -_02009F1C: - ldr r1, _02009F7C ; =UNK_021C4670 - lsl r3, r6, #0x10 - ldr r2, [sp, #0x30] - ldr r0, [r1, #0x0] - lsr r3, r3, #0x10 - str r2, [r0, #0x38] - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, [r1, #0x0] - lsl r1, r5, #0x10 - lsl r2, r4, #0x10 - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl NNS_G2dGetNewOamManagerInstance - cmp r0, #0x0 - bne _02009F48 - bl GF_AssertFail -_02009F48: - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x20] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, _02009F7C ; =UNK_021C4670 - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - ldr r0, [r0, #0x0] - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - lsl r3, r3, #0x10 - add r0, #0x1c - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - lsr r3, r3, #0x10 - bl NNS_G2dGetNewOamManagerInstance - cmp r0, #0x0 - bne _02009F78 - bl GF_AssertFail -_02009F78: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02009F7C: .word UNK_021C4670 - - thumb_func_start FUN_02009F80 -FUN_02009F80: ; 0x02009F80 - push {r3, lr} - ldr r0, _02009F9C ; =UNK_021C4670 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02009F98 - bl NNS_G2dApplyAndResetOamManagerBuffer - ldr r0, _02009F9C ; =UNK_021C4670 - ldr r0, [r0, #0x0] - add r0, #0x1c - bl NNS_G2dApplyAndResetOamManagerBuffer -_02009F98: - pop {r3, pc} - nop -_02009F9C: .word UNK_021C4670 - - thumb_func_start FUN_02009FA0 -FUN_02009FA0: ; 0x02009FA0 - push {r3, lr} - ldr r0, _02009FD4 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02009FAE - bl GF_AssertFail -_02009FAE: - ldr r0, _02009FD4 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_0200A064 - ldr r0, _02009FD4 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_0200A06C - ldr r0, _02009FD4 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - bl FreeToHeap - ldr r0, _02009FD4 ; =UNK_021C4670 - mov r1, #0x0 - str r1, [r0, #0x0] - pop {r3, pc} - nop -_02009FD4: .word UNK_021C4670 - - thumb_func_start FUN_02009FD8 -FUN_02009FD8: ; 0x02009FD8 - push {r4-r7, lr} - sub sp, #0xc - add r6, r0, #0x0 - ldr r0, _0200A024 ; =UNK_021C4670 - add r7, r1, #0x0 - ldr r0, [r0, #0x0] - add r5, r2, #0x0 - add r4, r3, #0x0 - cmp r0, #0x0 - bne _02009FF0 - bl GF_AssertFail -_02009FF0: - cmp r5, #0x1 - bne _0200A00C - ldr r0, _0200A028 ; =FUN_020213A0 - ldr r2, _0200A02C ; =FUN_0200A074 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldr r3, _0200A030 ; =FUN_0200A0B8 - add r0, r6, #0x0 - add r1, r7, #0x0 - str r4, [sp, #0x8] - bl FUN_0202135C - add sp, #0xc - pop {r4-r7, pc} -_0200A00C: - ldr r0, _0200A028 ; =FUN_020213A0 - ldr r2, _0200A034 ; =FUN_0200A094 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldr r3, _0200A038 ; =FUN_0200A0DC - add r0, r6, #0x0 - add r1, r7, #0x0 - str r4, [sp, #0x8] - bl FUN_0202135C - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0200A024: .word UNK_021C4670 -_0200A028: .word FUN_020213A0 -_0200A02C: .word FUN_0200A074 -_0200A030: .word FUN_0200A0B8 -_0200A034: .word FUN_0200A094 -_0200A038: .word FUN_0200A0DC - - thumb_func_start FUN_0200A03C -FUN_0200A03C: ; 0x0200A03C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0200A060 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _0200A04C - bl GF_AssertFail -_0200A04C: - cmp r4, #0x0 - bne _0200A056 - ldr r0, _0200A060 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - pop {r4, pc} -_0200A056: - ldr r0, _0200A060 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - add r0, #0x1c - pop {r4, pc} - nop -_0200A060: .word UNK_021C4670 - - thumb_func_start FUN_0200A064 -FUN_0200A064: ; 0x0200A064 - ldr r3, _0200A068 ; =FUN_020203CC - bx r3 - .balign 4 -_0200A068: .word FUN_020203CC - - thumb_func_start FUN_0200A06C -FUN_0200A06C: ; 0x0200A06C - ldr r3, _0200A070 ; =FUN_02020404 - bx r3 - .balign 4 -_0200A070: .word FUN_02020404 - - thumb_func_start FUN_0200A074 -FUN_0200A074: ; 0x0200A074 - push {r4, lr} - add r3, r0, #0x0 - ldr r0, _0200A090 ; =UNK_021C4670 - add r2, r1, #0x0 - ldr r0, [r0, #0x0] - add r1, r3, #0x0 - bl NNS_G2dEntryOamManagerOamWithAffineIdx - add r4, r0, #0x0 - bne _0200A08C - bl GF_AssertFail -_0200A08C: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 -_0200A090: .word UNK_021C4670 - - thumb_func_start FUN_0200A094 -FUN_0200A094: ; 0x0200A094 - push {r4, lr} - add r3, r0, #0x0 - ldr r0, _0200A0B4 ; =UNK_021C4670 - add r2, r1, #0x0 - ldr r0, [r0, #0x0] - add r1, r3, #0x0 - add r0, #0x1c - bl NNS_G2dEntryOamManagerOamWithAffineIdx - add r4, r0, #0x0 - bne _0200A0AE - bl GF_AssertFail -_0200A0AE: - add r0, r4, #0x0 - pop {r4, pc} - nop -_0200A0B4: .word UNK_021C4670 - - thumb_func_start FUN_0200A0B8 -FUN_0200A0B8: ; 0x0200A0B8 - push {r4, lr} - add r1, r0, #0x0 - ldr r0, _0200A0D4 ; =UNK_021C4670 - ldr r0, [r0, #0x0] - bl NNS_G2dEntryOamManagerAffine - add r4, r0, #0x0 - ldr r0, _0200A0D8 ; =0x0000FFFE - cmp r4, r0 - bne _0200A0D0 - bl GF_AssertFail -_0200A0D0: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 -_0200A0D4: .word UNK_021C4670 -_0200A0D8: .word 0x0000FFFE - - thumb_func_start FUN_0200A0DC -FUN_0200A0DC: ; 0x0200A0DC - push {r4, lr} - add r1, r0, #0x0 - ldr r0, _0200A0FC ; =UNK_021C4670 - ldr r0, [r0, #0x0] - add r0, #0x1c - bl NNS_G2dEntryOamManagerAffine - add r4, r0, #0x0 - ldr r0, _0200A100 ; =0x0000FFFE - cmp r4, r0 - bne _0200A0F6 - bl GF_AssertFail -_0200A0F6: - add r0, r4, #0x0 - pop {r4, pc} - nop -_0200A0FC: .word UNK_021C4670 -_0200A100: .word 0x0000FFFE - - thumb_func_start FUN_0200A104 -FUN_0200A104: ; 0x0200A104 - push {r3-r7, lr} - add r5, r0, #0x0 - mov r0, #0x10 - ldrsb r2, [r5, r0] - mov r0, #0x14 - ldrsh r0, [r5, r0] - add r1, r2, #0x0 - mov r7, #0x1a - ldrsh r2, [r5, r7] - mul r1, r0 - mov r6, #0xa - ldrsh r0, [r5, r6] - add r1, r2, r1 - mov r4, #0x0 - cmp r0, r1 - beq _0200A162 - cmp r2, r0 - beq _0200A162 - strh r1, [r5, #0x1a] - ldrh r3, [r5, #0x18] - ldrh r0, [r5, #0x16] - add r2, r5, #0x0 - add r1, r5, #0x0 - add r0, r3, r0 - strh r0, [r5, #0x18] - ldrh r3, [r5, #0x18] - ldrh r0, [r5, #0x8] - add r2, #0x1a - add r1, #0x18 - cmp r3, r0 - blo _0200A166 - mov r3, #0x10 - ldrsh r0, [r2, r4] - ldrsb r3, [r5, r3] - add r0, r0, r3 - strh r0, [r2, #0x0] - ldrsh r2, [r5, r7] - ldrsh r0, [r5, r6] - cmp r2, r0 - beq _0200A15E - ldrh r2, [r1, #0x0] - ldrh r0, [r5, #0x8] - sub r0, r2, r0 - strh r0, [r1, #0x0] - b _0200A166 -_0200A15E: - mov r4, #0x1 - b _0200A166 -_0200A162: - strh r0, [r5, #0x1a] - mov r4, #0x1 -_0200A166: - ldr r1, [r5, #0x4] - mov r0, #0x1 - tst r0, r1 - beq _0200A17C - mov r2, #0x1a - ldrsh r2, [r5, r2] - ldr r0, _0200A198 ; =0x04000050 - ldr r1, [r5, #0x0] - bl G2x_SetBlendBrightness_ - b _0200A18E -_0200A17C: - mov r0, #0x2 - tst r0, r1 - beq _0200A18E - mov r2, #0x1a - ldrsh r2, [r5, r2] - ldr r0, _0200A19C ; =0x04001050 - ldr r1, [r5, #0x0] - bl G2x_SetBlendBrightness_ -_0200A18E: - cmp r4, #0x1 - bne _0200A196 - mov r0, #0x0 - str r0, [r5, #0x1c] -_0200A196: - pop {r3-r7, pc} - .balign 4 -_0200A198: .word 0x04000050 -_0200A19C: .word 0x04001050 - - thumb_func_start FUN_0200A1A0 -FUN_0200A1A0: ; 0x0200A1A0 - push {r3-r7, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x1c] - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r0, #0x0 - beq _0200A1B4 - bl GF_AssertFail -_0200A1B4: - ldr r1, [sp, #0x18] - mov r0, #0x1 - lsl r1, r1, #0x18 - str r0, [r5, #0x1c] - lsr r1, r1, #0x18 - str r1, [r5, #0x0] - ldr r1, [sp, #0x1c] - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [r5, #0x4] - strh r4, [r5, #0x8] - strh r6, [r5, #0xa] - strh r7, [r5, #0x1a] - sub r1, r7, r6 - strh r1, [r5, #0x12] - mov r1, #0x12 - ldrsh r2, [r5, r1] - cmp r2, #0x0 - ble _0200A1E0 - sub r1, #0x13 - strb r1, [r5, #0x10] - b _0200A1EA -_0200A1E0: - strb r0, [r5, #0x10] - ldrsh r0, [r5, r1] - sub r1, #0x13 - mul r1, r0 - strh r1, [r5, #0x12] -_0200A1EA: - mov r0, #0x12 - ldrsh r0, [r5, r0] - add r1, r4, #0x0 - bl _s32_div_f - strh r0, [r5, #0x14] - mov r0, #0x12 - ldrsh r0, [r5, r0] - add r1, r4, #0x0 - bl _s32_div_f - strh r1, [r5, #0x16] - mov r0, #0x0 - strh r0, [r5, #0x18] - pop {r3-r7, pc} - - thumb_func_start FUN_0200A208 -FUN_0200A208: ; 0x0200A208 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r6, r2, #0x0 - add r4, r3, #0x0 - cmp r5, #0x0 - beq _0200A25E - ldr r1, [sp, #0x20] - mov r0, #0x1 - tst r0, r1 - beq _0200A23A - ldr r0, _0200A264 ; =0x04000050 - add r1, r4, #0x0 - bl G2x_SetBlendBrightness_ - str r4, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, _0200A268 ; =UNK_021C4694 - add r1, r5, #0x0 - add r2, r7, #0x0 - add r3, r6, #0x0 - bl FUN_0200A1A0 -_0200A23A: - ldr r1, [sp, #0x20] - mov r0, #0x2 - tst r0, r1 - beq _0200A25E - ldr r0, _0200A26C ; =0x04001050 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl G2x_SetBlendBrightness_ - str r4, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, _0200A270 ; =UNK_021C4674 - add r1, r5, #0x0 - add r2, r7, #0x0 - add r3, r6, #0x0 - bl FUN_0200A1A0 -_0200A25E: - add sp, #0x8 - pop {r3-r7, pc} - nop -_0200A264: .word 0x04000050 -_0200A268: .word UNK_021C4694 -_0200A26C: .word 0x04001050 -_0200A270: .word UNK_021C4674 - - thumb_func_start FUN_0200A274 -FUN_0200A274: ; 0x0200A274 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r2, #0x0 - mov r0, #0x1 - add r6, r1, #0x0 - tst r0, r4 - beq _0200A28A - ldr r0, _0200A2A4 ; =0x04000050 - add r2, r5, #0x0 - bl G2x_SetBlendBrightness_ -_0200A28A: - mov r0, #0x2 - tst r0, r4 - beq _0200A29A - ldr r0, _0200A2A8 ; =0x04001050 - add r1, r6, #0x0 - add r2, r5, #0x0 - bl G2x_SetBlendBrightness_ -_0200A29A: - add r0, r4, #0x0 - bl FUN_0200A2D8 - pop {r4-r6, pc} - nop -_0200A2A4: .word 0x04000050 -_0200A2A8: .word 0x04001050 - - thumb_func_start FUN_0200A2AC -FUN_0200A2AC: ; 0x0200A2AC - push {r3, lr} - ldr r0, _0200A2CC ; =UNK_021C4694 - mov r1, #0x0 - mov r2, #0x20 - bl MI_CpuFill8 - ldr r0, _0200A2D0 ; =UNK_021C4674 - mov r1, #0x0 - mov r2, #0x20 - bl MI_CpuFill8 - ldr r0, _0200A2D4 ; =UNK_021C4674 - mov r1, #0x0 - str r1, [r0, #0x3c] - str r1, [r0, #0x1c] - pop {r3, pc} - .balign 4 -_0200A2CC: .word UNK_021C4694 -_0200A2D0: .word UNK_021C4674 -_0200A2D4: .word UNK_021C4674 - - thumb_func_start FUN_0200A2D8 -FUN_0200A2D8: ; 0x0200A2D8 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1 - tst r0, r4 - beq _0200A2F2 - ldr r0, _0200A30C ; =UNK_021C4694 - mov r1, #0x0 - mov r2, #0x20 - bl MI_CpuFill8 - ldr r0, _0200A310 ; =UNK_021C4674 - mov r1, #0x0 - str r1, [r0, #0x3c] -_0200A2F2: - mov r0, #0x2 - tst r0, r4 - beq _0200A308 - ldr r0, _0200A314 ; =UNK_021C4674 - mov r1, #0x0 - mov r2, #0x20 - bl MI_CpuFill8 - ldr r0, _0200A310 ; =UNK_021C4674 - mov r1, #0x0 - str r1, [r0, #0x1c] -_0200A308: - pop {r4, pc} - nop -_0200A30C: .word UNK_021C4694 -_0200A310: .word UNK_021C4674 -_0200A314: .word UNK_021C4674 - - thumb_func_start FUN_0200A318 -FUN_0200A318: ; 0x0200A318 - push {r3, lr} - ldr r0, _0200A338 ; =UNK_021C4674 - ldr r0, [r0, #0x3c] - cmp r0, #0x0 - beq _0200A328 - ldr r0, _0200A33C ; =UNK_021C4694 - bl FUN_0200A104 -_0200A328: - ldr r0, _0200A338 ; =UNK_021C4674 - ldr r0, [r0, #0x1c] - cmp r0, #0x0 - beq _0200A336 - ldr r0, _0200A340 ; =UNK_021C4674 - bl FUN_0200A104 -_0200A336: - pop {r3, pc} - .balign 4 -_0200A338: .word UNK_021C4674 -_0200A33C: .word UNK_021C4694 -_0200A340: .word UNK_021C4674 - - thumb_func_start FUN_0200A344 -FUN_0200A344: ; 0x0200A344 - cmp r0, #0x3 - bne _0200A35A - ldr r0, _0200A380 ; =UNK_021C4674 - ldr r1, [r0, #0x3c] - cmp r1, #0x0 - bne _0200A37A - ldr r0, [r0, #0x1c] - cmp r0, #0x0 - bne _0200A37A - mov r0, #0x1 - bx lr -_0200A35A: - cmp r0, #0x1 - bne _0200A36A - ldr r0, _0200A380 ; =UNK_021C4674 - ldr r0, [r0, #0x3c] - cmp r0, #0x0 - bne _0200A37A - mov r0, #0x1 - bx lr -_0200A36A: - cmp r0, #0x2 - bne _0200A37A - ldr r0, _0200A380 ; =UNK_021C4674 - ldr r0, [r0, #0x1c] - cmp r0, #0x0 - bne _0200A37A - mov r0, #0x1 - bx lr -_0200A37A: - mov r0, #0x0 - bx lr - nop -_0200A380: .word UNK_021C4674 diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s deleted file mode 100644 index 62bace0d..00000000 --- a/arm9/asm/unk_0200CABC.s +++ /dev/null @@ -1,2866 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020ECE88 -UNK_020ECE88: ; 0x020ECE88 - .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ECE98 -UNK_020ECE98: ; 0x020ECE98 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ECEA8 -UNK_020ECEA8: ; 0x020ECEA8 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020ECEC0 -UNK_020ECEC0: ; 0x020ECEC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00 - .byte 0xD5, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_0200CABC -FUN_0200CABC: ; 0x0200CABC - push {r3-r5, lr} - sub sp, #0x10 - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r3, #0x0 - str r2, [sp, #0x0] - bne _0200CAE2 - mov r1, #0x0 - str r1, [sp, #0x4] - ldr r0, [sp, #0x20] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x26 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl GfGfxLoader_LoadCharData - add sp, #0x10 - pop {r3-r5, pc} -_0200CAE2: - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [sp, #0x20] - mov r1, #0x1 - str r0, [sp, #0xc] - mov r0, #0x26 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl GfGfxLoader_LoadCharData - add sp, #0x10 - pop {r3-r5, pc} - - thumb_func_start FUN_0200CAFC -FUN_0200CAFC: ; 0x0200CAFC - mov r0, #0x18 - bx lr - - thumb_func_start FUN_0200CB00 -FUN_0200CB00: ; 0x0200CB00 - push {r4-r6, lr} - sub sp, #0x10 - add r6, r0, #0x0 - add r0, sp, #0x10 - ldrb r0, [r0, #0x10] - add r5, r1, #0x0 - add r4, r3, #0x0 - cmp r0, #0x0 - beq _0200CB16 - mov r1, #0x1 - b _0200CB18 -_0200CB16: - mov r1, #0x0 -_0200CB18: - str r2, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [sp, #0x24] - add r2, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x26 - add r3, r5, #0x0 - bl GfGfxLoader_LoadCharData - add r0, sp, #0x10 - ldrb r0, [r0, #0x10] - cmp r0, #0x2 - bne _0200CB3A - mov r1, #0x2d - b _0200CB3C -_0200CB3A: - mov r1, #0x18 -_0200CB3C: - cmp r5, #0x4 - bhs _0200CB56 - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - mov r2, #0x0 - str r0, [sp, #0x4] - mov r0, #0x26 - lsl r3, r4, #0x5 - bl GfGfxLoader_GXLoadPal - add sp, #0x10 - pop {r4-r6, pc} -_0200CB56: - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - mov r2, #0x4 - str r0, [sp, #0x4] - mov r0, #0x26 - lsl r3, r4, #0x5 - bl GfGfxLoader_GXLoadPal - add sp, #0x10 - pop {r4-r6, pc} - - thumb_func_start FUN_0200CB6C -FUN_0200CB6C: ; 0x0200CB6C - push {r4-r7, lr} - sub sp, #0x24 - str r1, [sp, #0x14] - str r2, [sp, #0x18] - str r3, [sp, #0x1c] - ldr r2, [sp, #0x1c] - ldr r5, [sp, #0x40] - sub r7, r2, #0x1 - ldr r2, [sp, #0x18] - str r0, [sp, #0x10] - sub r6, r2, #0x1 - lsl r2, r7, #0x18 - lsr r2, r2, #0x18 - str r2, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - lsl r3, r6, #0x18 - str r5, [sp, #0xc] - add r2, sp, #0x28 - ldrh r2, [r2, #0x1c] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r1, sp, #0x28 - ldrh r4, [r1, #0x1c] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - ldrb r0, [r1, #0x10] - add r2, r4, #0x1 - lsl r2, r2, #0x10 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x18] - lsr r2, r2, #0x10 - bl FillBgTilemapRect - add r0, sp, #0x28 - ldrb r1, [r0, #0x10] - ldr r0, [sp, #0x18] - add r2, r4, #0x2 - add r0, r0, r1 - str r0, [sp, #0x20] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x20] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x3 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - add r0, sp, #0x28 - ldrb r0, [r0, #0x14] - lsl r2, r2, #0x10 - lsl r3, r6, #0x18 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - add r0, sp, #0x28 - ldrb r0, [r0, #0x14] - add r2, r4, #0x5 - lsl r2, r2, #0x10 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r0, sp, #0x28 - ldrb r1, [r0, #0x14] - ldr r0, [sp, #0x1c] - add r2, r4, #0x6 - add r7, r0, r1 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r6, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - add r0, sp, #0x28 - ldrb r0, [r0, #0x10] - add r2, r4, #0x7 - lsl r2, r2, #0x10 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x18] - lsr r2, r2, #0x10 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x20] - str r5, [sp, #0xc] - add r4, #0x8 - lsl r2, r4, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200CCA4 -FUN_0200CCA4: ; 0x0200CCA4 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - bl GetWindowBgId - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl GetWindowX - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl GetWindowY - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl GetWindowWidth - str r0, [sp, #0x1c] - add r0, r5, #0x0 - bl GetWindowHeight - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x14] - str r1, [sp, #0x0] - str r0, [sp, #0x4] - str r7, [sp, #0x8] - str r6, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x10] - ldr r3, [sp, #0x18] - bl FUN_0200CB6C - cmp r4, #0x0 - bne _0200CCF4 - add r0, r5, #0x0 - bl CopyWindowToVram -_0200CCF4: - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_0200CCF8 -FUN_0200CCF8: ; 0x0200CCF8 - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - add r4, r1, #0x0 - bl GetWindowBgId - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl GetWindowX - add r6, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowY - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowWidth - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl GetWindowHeight - sub r1, r7, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - ldr r1, [sp, #0x14] - add r0, r0, #0x2 - add r1, r1, #0x2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r0, r0, #0x18 - str r1, [sp, #0x4] - lsr r0, r0, #0x18 - sub r3, r6, #0x1 - lsl r3, r3, #0x18 - str r0, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x10] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - cmp r4, #0x0 - bne _0200CD5A - add r0, r5, #0x0 - bl ClearWindowTilemapAndCopyToVram -_0200CD5A: - add sp, #0x18 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200CD60 -FUN_0200CD60: ; 0x0200CD60 - add r0, r0, #0x2 - bx lr - - thumb_func_start FUN_0200CD64 -FUN_0200CD64: ; 0x0200CD64 - add r0, #0x19 - bx lr - - thumb_func_start FUN_0200CD68 -FUN_0200CD68: ; 0x0200CD68 - push {r4-r7, lr} - sub sp, #0x14 - str r0, [sp, #0x10] - add r0, sp, #0x18 - ldrb r7, [r0, #0x10] - add r6, r2, #0x0 - add r5, r1, #0x0 - add r0, r7, #0x0 - add r4, r3, #0x0 - bl FUN_0200CD60 - add r1, r0, #0x0 - str r6, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x10] - str r0, [sp, #0xc] - mov r0, #0x26 - add r3, r5, #0x0 - bl GfGfxLoader_LoadCharData - cmp r5, #0x4 - bhs _0200CDB8 - add r0, r7, #0x0 - bl FUN_0200CD64 - add r1, r0, #0x0 - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - mov r2, #0x0 - str r0, [sp, #0x4] - mov r0, #0x26 - lsl r3, r4, #0x5 - bl GfGfxLoader_GXLoadPal - add sp, #0x14 - pop {r4-r7, pc} -_0200CDB8: - add r0, r7, #0x0 - bl FUN_0200CD64 - add r1, r0, #0x0 - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - mov r2, #0x4 - str r0, [sp, #0x4] - mov r0, #0x26 - lsl r3, r4, #0x5 - bl GfGfxLoader_GXLoadPal - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200CDD8 -FUN_0200CDD8: ; 0x0200CDD8 - push {r3-r7, lr} - sub sp, #0x30 - str r1, [sp, #0x10] - str r2, [sp, #0x14] - str r3, [sp, #0x18] - ldr r2, [sp, #0x4c] - add r7, r0, #0x0 - str r2, [sp, #0x4c] - ldr r2, [sp, #0x18] - ldr r5, [sp, #0x50] - sub r6, r2, #0x1 - ldr r2, [sp, #0x14] - sub r2, r2, #0x2 - str r2, [sp, #0x28] - lsl r2, r6, #0x18 - lsr r2, r2, #0x18 - str r2, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - ldr r3, [sp, #0x28] - str r5, [sp, #0xc] - add r2, sp, #0x38 - lsl r3, r3, #0x18 - ldrh r2, [r2, #0x1c] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x14] - sub r0, r0, #0x1 - str r0, [sp, #0x24] - add r0, sp, #0x38 - ldrh r4, [r0, #0x1c] - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x24] - str r5, [sp, #0xc] - add r2, r4, #0x1 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - add r0, sp, #0x38 - ldrb r0, [r0, #0x10] - add r2, r4, #0x2 - lsl r2, r2, #0x10 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - ldr r1, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - bl FillBgTilemapRect - add r0, sp, #0x38 - ldrb r1, [r0, #0x10] - ldr r0, [sp, #0x14] - add r2, r4, #0x3 - add r0, r0, r1 - str r0, [sp, #0x2c] - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x2c] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x2c] - add r2, r4, #0x4 - add r0, r0, #0x1 - str r0, [sp, #0x20] - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x20] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x2c] - add r2, r4, #0x5 - add r0, r0, #0x2 - str r0, [sp, #0x1c] - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x1c] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - ldr r3, [sp, #0x28] - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [sp, #0x4c] - add r2, r4, #0x6 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - ldr r3, [sp, #0x24] - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [sp, #0x4c] - add r2, r4, #0x7 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [sp, #0x4c] - ldr r3, [sp, #0x2c] - str r0, [sp, #0x8] - str r5, [sp, #0xc] - add r2, #0x9 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [sp, #0x4c] - ldr r3, [sp, #0x20] - str r0, [sp, #0x8] - str r5, [sp, #0xc] - add r2, #0xa - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [sp, #0x4c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - str r5, [sp, #0xc] - add r2, #0xb - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r2, r4, #0x0 - ldr r3, [sp, #0x28] - add r2, #0xc - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x4c] - lsr r2, r2, #0x10 - add r6, r1, r0 - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r5, [sp, #0xc] - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x24] - str r5, [sp, #0xc] - add r2, #0xd - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - add r0, sp, #0x38 - ldrb r0, [r0, #0x10] - add r2, r4, #0x0 - add r2, #0xe - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - ldr r1, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x2c] - str r5, [sp, #0xc] - add r2, #0xf - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x20] - str r5, [sp, #0xc] - add r2, #0x10 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x1c] - str r5, [sp, #0xc] - add r4, #0x11 - lsl r2, r4, #0x10 - lsl r3, r3, #0x18 - ldr r1, [sp, #0x10] - add r0, r7, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D06C -FUN_0200D06C: ; 0x0200D06C - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl GetWindowBgId - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl GetWindowX - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl GetWindowY - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl GetWindowWidth - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowHeight - str r7, [sp, #0x0] - str r0, [sp, #0x4] - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x8] - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x18] - bl FUN_0200CDD8 - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D0BC -FUN_0200D0BC: ; 0x0200D0BC - push {r4-r6, lr} - add r6, r2, #0x0 - add r4, r1, #0x0 - add r1, r6, #0x0 - add r2, r3, #0x0 - add r5, r0, #0x0 - bl FUN_0200D06C - cmp r4, #0x0 - bne _0200D0D6 - add r0, r5, #0x0 - bl CopyWindowToVram -_0200D0D6: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_0200D18C - pop {r4-r6, pc} - - thumb_func_start FUN_0200D0E0 -FUN_0200D0E0: ; 0x0200D0E0 - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - add r4, r1, #0x0 - bl GetWindowBgId - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl GetWindowX - add r6, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowY - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowWidth - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl GetWindowHeight - sub r1, r7, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - ldr r1, [sp, #0x14] - add r0, r0, #0x2 - add r1, r1, #0x5 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r0, r0, #0x18 - str r1, [sp, #0x4] - lsr r0, r0, #0x18 - sub r3, r6, #0x2 - lsl r3, r3, #0x18 - str r0, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x10] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - cmp r4, #0x0 - bne _0200D142 - add r0, r5, #0x0 - bl ClearWindowTilemapAndCopyToVram -_0200D142: - add sp, #0x18 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D148 -FUN_0200D148: ; 0x0200D148 - push {r4-r5, lr} - sub sp, #0x24 - add r5, r1, #0x0 - str r0, [sp, #0x1c] - add r1, sp, #0x14 - strh r3, [r1, #0xc] - add r4, r2, #0x0 - add r0, sp, #0x20 - ldrh r2, [r0, #0x10] - add r3, r4, #0x0 - strh r2, [r1, #0xe] - ldr r2, [sp, #0x34] - str r2, [sp, #0x14] - ldrh r2, [r0, #0x18] - strh r2, [r1, #0x4] - ldrh r2, [r0, #0x1c] - strh r2, [r1, #0x6] - ldrh r1, [r0, #0x20] - add r2, r5, #0x0 - str r1, [sp, #0x0] - ldrh r1, [r0, #0x24] - str r1, [sp, #0x4] - ldrh r1, [r0, #0x28] - str r1, [sp, #0x8] - ldrh r0, [r0, #0x2c] - add r1, sp, #0x14 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - add r0, sp, #0x1c - bl BlitBitmapRect4Bit - add sp, #0x24 - pop {r4-r5, pc} - - thumb_func_start FUN_0200D18C -FUN_0200D18C: ; 0x0200D18C - push {r3-r7, lr} - sub sp, #0x40 - str r1, [sp, #0x24] - str r0, [sp, #0x20] - ldr r0, [r0, #0x0] - bl BgConfig_GetHeapId - add r6, r0, #0x0 - ldr r0, [sp, #0x20] - bl GetWindowBgId - mov r1, #0x6 - str r0, [sp, #0x28] - add r0, r6, #0x0 - lsl r1, r1, #0x6 - bl AllocFromHeap - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - bl BgGetCharPtr - add r4, r0, #0x0 - str r6, [sp, #0x0] - mov r0, #0x26 - mov r1, #0x16 - mov r2, #0x0 - add r3, sp, #0x3c - bl GfGfxLoader_GetCharData - str r0, [sp, #0x2c] - ldr r0, [sp, #0x3c] - mov r7, #0x0 - ldr r0, [r0, #0x14] - str r0, [sp, #0x30] - ldr r0, [sp, #0x24] - add r0, #0xa - lsl r0, r0, #0x5 - str r0, [sp, #0x34] - ldr r0, [sp, #0x24] - add r0, #0xb - lsl r0, r0, #0x5 - str r0, [sp, #0x38] -_0200D1E0: - ldr r1, [sp, #0x34] - lsl r6, r7, #0x7 - add r0, r5, r6 - add r1, r4, r1 - mov r2, #0x20 - bl memcpy - add r0, r6, #0x0 - ldr r1, [sp, #0x38] - add r0, #0x20 - add r0, r5, r0 - add r1, r4, r1 - mov r2, #0x20 - bl memcpy - add r0, r6, #0x0 - ldr r1, [sp, #0x34] - add r0, #0x40 - add r0, r5, r0 - add r1, r4, r1 - mov r2, #0x20 - bl memcpy - ldr r1, [sp, #0x38] - add r6, #0x60 - add r0, r5, r6 - add r1, r4, r1 - mov r2, #0x20 - bl memcpy - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - cmp r7, #0x3 - blo _0200D1E0 - mov r1, #0x30 - str r1, [sp, #0x0] - str r5, [sp, #0x4] - mov r3, #0xc - str r3, [sp, #0x8] - str r1, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - mov r2, #0x0 - str r2, [sp, #0x14] - str r3, [sp, #0x18] - str r1, [sp, #0x1c] - ldr r0, [sp, #0x30] - mov r1, #0x4 - bl FUN_0200D148 - ldr r0, [sp, #0x24] - mov r3, #0x6 - add r0, #0x12 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x28] - ldr r0, [r0, #0x0] - add r2, r5, #0x0 - lsl r3, r3, #0x6 - bl BG_LoadCharTilesData - ldr r0, [sp, #0x24] - bl FUN_02002840 - ldr r0, [sp, #0x2c] - bl FreeToHeap - add r0, r5, #0x0 - bl FreeToHeap - add sp, #0x40 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D274 -FUN_0200D274: ; 0x0200D274 - push {r4-r7, lr} - sub sp, #0x14 - str r0, [sp, #0x4] - str r1, [sp, #0x8] - add r0, sp, #0x18 - ldrb r0, [r0, #0x10] - add r7, r2, #0x0 - add r5, r3, #0x0 - bl FUN_0200CD60 - add r1, r0, #0x0 - ldr r0, [sp, #0x2c] - mov r2, #0x0 - str r0, [sp, #0x0] - mov r0, #0x26 - add r3, sp, #0x10 - bl GfGfxLoader_GetCharData - str r0, [sp, #0xc] - mov r1, #0x9 - ldr r0, [sp, #0x2c] - lsl r1, r1, #0x6 - bl AllocFromHeap - ldr r1, [sp, #0x10] - mov r2, #0x9 - ldr r1, [r1, #0x14] - lsl r2, r2, #0x6 - add r4, r0, #0x0 - bl memcpy - mov r0, #0x9 - mov r3, #0x0 - lsl r0, r0, #0x6 - mov r1, #0xf -_0200D2BA: - ldrb r2, [r4, r3] - lsl r6, r2, #0x14 - and r2, r1 - lsl r2, r2, #0x18 - lsr r6, r6, #0x18 - lsr r2, r2, #0x18 - cmp r6, #0x0 - bne _0200D2CC - add r6, r5, #0x0 -_0200D2CC: - cmp r2, #0x0 - bne _0200D2D2 - add r2, r5, #0x0 -_0200D2D2: - lsl r6, r6, #0x4 - orr r2, r6 - strb r2, [r4, r3] - add r3, r3, #0x1 - cmp r3, r0 - blo _0200D2BA - str r7, [sp, #0x0] - mov r3, #0x9 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x8] - add r2, r4, #0x0 - lsl r3, r3, #0x6 - bl BG_LoadCharTilesData - ldr r0, [sp, #0xc] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D300 -FUN_0200D300: ; 0x0200D300 - push {r4-r7, lr} - sub sp, #0x1c - str r0, [sp, #0x10] - add r5, r2, #0x0 - mov r0, #0xf - add r6, r1, #0x0 - add r7, r3, #0x0 - str r5, [sp, #0x0] - lsl r0, r0, #0x6 - str r0, [sp, #0x4] - mov r1, #0x0 - ldr r4, [sp, #0x38] - str r1, [sp, #0x8] - ldr r2, [sp, #0x10] - mov r0, #0x24 - add r3, r6, #0x0 - str r4, [sp, #0xc] - bl GfGfxLoader_LoadCharData - mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD - mov r1, #0x1 - add r2, r4, #0x0 - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x18 - str r0, [sp, #0x14] - bl NNS_G2dGetUnpackedPaletteData - add r2, sp, #0x20 - ldr r1, [sp, #0x18] - ldrb r2, [r2, #0x10] - lsl r3, r7, #0x15 - ldr r1, [r1, #0xc] - lsl r2, r2, #0x5 - add r1, r1, r2 - add r0, r6, #0x0 - mov r2, #0x20 - lsr r3, r3, #0x10 - bl BG_LoadPlttData - ldr r1, [sp, #0x14] - add r0, r4, #0x0 - bl FreeToHeapExplicit - add r0, sp, #0x20 - ldrb r3, [r0, #0x10] - cmp r3, #0x1 - bhi _0200D374 - ldrh r0, [r0, #0x14] - add r5, #0x1e - lsl r2, r5, #0x10 - str r0, [sp, #0x0] - ldr r0, [sp, #0x10] - add r1, r6, #0x0 - lsr r2, r2, #0x10 - str r4, [sp, #0x4] - bl FUN_0200D378 -_0200D374: - add sp, #0x1c - pop {r4-r7, pc} - - thumb_func_start FUN_0200D378 -FUN_0200D378: ; 0x0200D378 - push {r3-r5, lr} - sub sp, #0x10 - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r1, [sp, #0x20] - cmp r3, #0x0 - bne _0200D38C - add r1, #0x21 - lsl r0, r1, #0x10 - b _0200D390 -_0200D38C: - add r0, r1, #0x2 - lsl r0, r0, #0x10 -_0200D390: - lsr r1, r0, #0x10 - mov r0, #0x3 - str r2, [sp, #0x0] - lsl r0, r0, #0x8 - str r0, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x24] - add r2, r5, #0x0 - str r0, [sp, #0xc] - mov r0, #0x24 - add r3, r4, #0x0 - bl GfGfxLoader_LoadCharData - add sp, #0x10 - pop {r3-r5, pc} - - thumb_func_start FUN_0200D3B0 -FUN_0200D3B0: ; 0x0200D3B0 - push {r3-r7, lr} - sub sp, #0x40 - str r1, [sp, #0x14] - str r2, [sp, #0x18] - str r3, [sp, #0x1c] - ldr r2, [sp, #0x1c] - ldr r6, [sp, #0x5c] - sub r7, r2, #0x1 - ldr r2, [sp, #0x18] - ldr r5, [sp, #0x60] - str r2, [sp, #0x34] - sub r2, #0x9 - str r2, [sp, #0x34] - lsl r2, r7, #0x18 - lsr r2, r2, #0x18 - str r2, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - ldr r3, [sp, #0x34] - str r5, [sp, #0xc] - add r2, sp, #0x48 - lsl r3, r3, #0x18 - ldrh r2, [r2, #0x1c] - lsr r3, r3, #0x18 - str r0, [sp, #0x10] - bl FillBgTilemapRect - ldr r0, [sp, #0x18] - str r0, [sp, #0x30] - sub r0, #0x8 - str r0, [sp, #0x30] - add r0, sp, #0x48 - ldrh r4, [r0, #0x1c] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x30] - str r5, [sp, #0xc] - add r2, r4, #0x1 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r0, sp, #0x48 - ldrb r0, [r0, #0x10] - add r2, r4, #0x2 - lsl r2, r2, #0x10 - str r0, [sp, #0x3c] - add r0, r0, #0x7 - str r0, [sp, #0x24] - ldr r0, [sp, #0x18] - lsr r2, r2, #0x10 - sub r0, r0, #0x7 - str r0, [sp, #0x20] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - ldr r3, [sp, #0x20] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r5, [sp, #0xc] - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r2, r4, #0x3 - lsl r2, r2, #0x10 - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x3c] - lsr r2, r2, #0x10 - add r0, r1, r0 - str r0, [sp, #0x38] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x38] - str r5, [sp, #0xc] - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x38] - add r2, r4, #0x4 - add r0, r0, #0x1 - str r0, [sp, #0x2c] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x2c] - str r5, [sp, #0xc] - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x38] - add r0, r0, #0x2 - str r0, [sp, #0x28] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x28] - str r5, [sp, #0xc] - add r2, r4, #0x5 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x34] - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - add r2, r4, #0x6 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x30] - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - add r2, r4, #0x7 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldr r3, [sp, #0x18] - add r2, #0x8 - sub r3, r3, #0x1 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - ldr r3, [sp, #0x38] - str r5, [sp, #0xc] - add r2, #0x9 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - ldr r3, [sp, #0x2c] - str r5, [sp, #0xc] - add r2, #0xa - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r6, [sp, #0x8] - ldr r3, [sp, #0x28] - str r5, [sp, #0xc] - add r2, #0xb - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - add r2, r4, #0x0 - add r6, r0, r6 - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x34] - str r5, [sp, #0xc] - add r2, #0xc - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x30] - str r5, [sp, #0xc] - add r2, #0xd - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - add r2, r4, #0x0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - ldr r3, [sp, #0x20] - str r5, [sp, #0xc] - add r2, #0xe - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x38] - str r5, [sp, #0xc] - add r2, #0xf - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r2, r4, #0x0 - ldr r3, [sp, #0x2c] - str r5, [sp, #0xc] - add r2, #0x10 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0x28] - str r5, [sp, #0xc] - add r4, #0x11 - lsl r2, r4, #0x10 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add sp, #0x40 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D678 -FUN_0200D678: ; 0x0200D678 - push {r3-r7, lr} - sub sp, #0x28 - str r1, [sp, #0x10] - add r7, r0, #0x0 - str r2, [sp, #0x14] - bl GetWindowBgId - str r0, [sp, #0x20] - add r0, r7, #0x0 - bl GetWindowX - sub r0, r0, #0x7 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x18] - add r0, r7, #0x0 - bl GetWindowY - str r0, [sp, #0x1c] - mov r0, #0x0 - str r0, [sp, #0x24] -_0200D6A2: - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x24] - add r3, r2, #0x0 - add r0, r1, r0 - mov r1, #0x6 - mul r3, r1 - ldr r1, [sp, #0x10] - lsl r0, r0, #0x18 - mov r4, #0x0 - add r5, r1, r3 - lsr r6, r0, #0x18 -_0200D6BA: - str r6, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [sp, #0x14] - ldr r3, [sp, #0x18] - str r0, [sp, #0xc] - add r2, r4, r5 - add r3, r3, r4 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [r7, #0x0] - ldr r1, [sp, #0x20] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #0x6 - blo _0200D6BA - ldr r0, [sp, #0x24] - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x24] - cmp r0, #0x4 - blo _0200D6A2 - add sp, #0x28 - pop {r3-r7, pc} - - thumb_func_start FUN_0200D6F8 -FUN_0200D6F8: ; 0x0200D6F8 - push {r3-r7, lr} - sub sp, #0x28 - add r5, r0, #0x0 - str r1, [sp, #0x10] - add r4, r2, #0x0 - add r6, r3, #0x0 - bl GetWindowBgId - str r0, [sp, #0x14] - add r0, sp, #0x30 - ldrb r0, [r0, #0x10] - cmp r0, #0x1 - bhi _0200D756 - add r0, r5, #0x0 - bl GetWindowX - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl GetWindowY - str r0, [sp, #0x1c] - add r0, r5, #0x0 - bl GetWindowWidth - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowHeight - str r7, [sp, #0x0] - str r0, [sp, #0x4] - str r6, [sp, #0x8] - str r4, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - bl FUN_0200D3B0 - add r1, r4, #0x0 - add r1, #0x1e - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - add r2, r6, #0x0 - bl FUN_0200D678 - b _0200D788 -_0200D756: - add r0, r5, #0x0 - bl GetWindowX - str r0, [sp, #0x20] - add r0, r5, #0x0 - bl GetWindowY - str r0, [sp, #0x24] - add r0, r5, #0x0 - bl GetWindowWidth - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowHeight - str r7, [sp, #0x0] - str r0, [sp, #0x4] - str r6, [sp, #0x8] - str r4, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x20] - ldr r3, [sp, #0x24] - bl FUN_0200CDD8 -_0200D788: - ldr r0, [sp, #0x10] - cmp r0, #0x0 - bne _0200D794 - add r0, r5, #0x0 - bl CopyWindowToVram -_0200D794: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0200D18C - add sp, #0x28 - pop {r3-r7, pc} - - thumb_func_start FUN_0200D7A0 -FUN_0200D7A0: ; 0x0200D7A0 - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - add r4, r1, #0x0 - str r2, [sp, #0x10] - bl GetWindowBgId - str r0, [sp, #0x14] - cmp r4, #0x1 - bhi _0200D7FE - add r0, r5, #0x0 - bl GetWindowX - add r4, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowY - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowWidth - add r6, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowHeight - sub r1, r7, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r0, r0, #0x2 - lsl r0, r0, #0x18 - sub r4, #0x9 - lsl r3, r4, #0x18 - add r6, #0xb - str r1, [sp, #0x0] - lsl r1, r6, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x4] - lsr r0, r0, #0x18 - str r0, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x14] - lsr r3, r3, #0x18 - bl FillBgTilemapRect - b _0200D846 -_0200D7FE: - add r0, r5, #0x0 - bl GetWindowX - add r4, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowY - add r6, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowWidth - add r7, r0, #0x0 - add r0, r5, #0x0 - bl GetWindowHeight - sub r1, r6, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - add r1, r7, #0x4 - lsl r1, r1, #0x18 - add r0, r0, #0x2 - lsr r1, r1, #0x18 - lsl r0, r0, #0x18 - str r1, [sp, #0x4] - lsr r0, r0, #0x18 - sub r3, r4, #0x2 - lsl r3, r3, #0x18 - str r0, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x14] - lsr r3, r3, #0x18 - bl FillBgTilemapRect -_0200D846: - ldr r0, [sp, #0x10] - cmp r0, #0x0 - bne _0200D852 - add r0, r5, #0x0 - bl ClearWindowTilemapAndCopyToVram -_0200D852: - add sp, #0x18 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200D858 -FUN_0200D858: ; 0x0200D858 - push {r4-r7, lr} - sub sp, #0x34 - str r0, [sp, #0x20] - ldr r0, [r0, #0x0] - str r1, [sp, #0x24] - bl BgConfig_GetHeapId - str r0, [sp, #0x28] - ldr r0, [sp, #0x20] - bl GetWindowBgId - bl BgGetCharPtr - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - ldr r1, _0200D970 ; =0x0000048C - bl AllocFromHeap - ldr r1, [sp, #0x24] - add r4, r0, #0x0 - ldr r0, _0200D974 ; =0x00000404 - add r1, #0x12 - lsl r1, r1, #0x5 - add r0, r4, r0 - add r1, r5, r1 - mov r2, #0x80 - bl memcpy - ldr r0, [sp, #0x28] - mov r1, #0x80 - bl AllocFromHeap - ldr r1, [sp, #0x24] - mov r2, #0x20 - add r1, #0xa - lsl r1, r1, #0x5 - str r1, [sp, #0x2c] - add r1, r5, r1 - add r6, r0, #0x0 - bl memcpy - ldr r0, [sp, #0x24] - mov r2, #0x20 - add r0, #0xb - lsl r7, r0, #0x5 - add r0, r6, #0x0 - add r0, #0x20 - add r1, r5, r7 - bl memcpy - ldr r1, [sp, #0x2c] - add r0, r6, #0x0 - add r0, #0x40 - add r1, r5, r1 - mov r2, #0x20 - bl memcpy - add r0, r6, #0x0 - add r0, #0x60 - add r1, r5, r7 - mov r2, #0x20 - bl memcpy - mov r5, #0x0 - add r7, r4, #0x4 -_0200D8DA: - lsl r0, r5, #0x7 - add r0, r7, r0 - add r1, r6, #0x0 - mov r2, #0x80 - bl memcpy - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x8 - blo _0200D8DA - add r0, r6, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x28] - mov r1, #0x17 - str r0, [sp, #0x0] - mov r0, #0x26 - mov r2, #0x0 - add r3, sp, #0x30 - bl GfGfxLoader_GetCharData - mov r2, #0x80 - add r5, r0, #0x0 - str r2, [sp, #0x0] - add r0, r4, #0x4 - str r0, [sp, #0x4] - mov r3, #0x10 - str r3, [sp, #0x8] - str r2, [sp, #0xc] - mov r1, #0x0 - str r1, [sp, #0x10] - str r1, [sp, #0x14] - str r3, [sp, #0x18] - str r2, [sp, #0x1c] - ldr r0, [sp, #0x30] - add r2, r1, #0x0 - ldr r0, [r0, #0x14] - bl FUN_0200D148 - add r0, r5, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x20] - ldr r1, _0200D978 ; =0x00000484 - str r0, [r4, #0x0] - ldr r0, [sp, #0x24] - mov r2, #0x0 - strh r0, [r4, r1] - add r0, r1, #0x2 - strb r2, [r4, r0] - add r0, r1, #0x3 - ldrb r3, [r4, r0] - mov r0, #0x7f - bic r3, r0 - add r0, r1, #0x3 - strb r3, [r4, r0] - add r0, r1, #0x4 - ldrb r3, [r4, r0] - mov r0, #0x3 - bic r3, r0 - add r0, r1, #0x4 - strb r3, [r4, r0] - ldr r0, _0200D97C ; =FUN_0200DB7C - add r1, r4, #0x0 - bl FUN_0200CA60 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_0200D980 - add r0, r4, #0x0 - add sp, #0x34 - pop {r4-r7, pc} - nop -_0200D970: .word 0x0000048C -_0200D974: .word 0x00000404 -_0200D978: .word 0x00000484 -_0200D97C: .word FUN_0200DB7C - - thumb_func_start FUN_0200D980 -FUN_0200D980: ; 0x0200D980 - push {r4-r7, lr} - sub sp, #0x24 - add r5, r0, #0x0 - ldr r0, [r5, #0x0] - add r6, r1, #0x0 - bl GetWindowBgId - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetWindowX - str r0, [sp, #0x18] - ldr r0, [r5, #0x0] - bl GetWindowY - str r0, [sp, #0x1c] - ldr r0, [r5, #0x0] - bl GetWindowWidth - str r0, [sp, #0x20] - cmp r6, #0x2 - bne _0200DA8A - ldr r2, _0200DB78 ; =0x00000484 - add r1, r4, #0x0 - ldrh r0, [r5, r2] - sub r2, #0x80 - add r2, r5, r2 - add r0, #0x12 - str r0, [sp, #0x0] - ldr r0, [r5, #0x0] - mov r3, #0x80 - ldr r0, [r0, #0x0] - bl BG_LoadCharTilesData - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r7, r0, #0x2 - ldr r0, [sp, #0x20] - ldr r2, _0200DB78 ; =0x00000484 - add r6, r1, r0 - add r0, r6, #0x1 - str r0, [sp, #0x14] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldrh r2, [r5, r2] - ldr r0, [r5, #0x0] - ldr r3, [sp, #0x14] - add r2, #0xa - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - add r6, r6, #0x2 - lsl r3, r6, #0x18 - add r2, #0xb - lsl r2, r2, #0x10 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x14] - add r7, r0, #0x3 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - add r2, #0xa - lsl r2, r2, #0x10 - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - lsl r3, r6, #0x18 - ldr r0, [r0, #0x0] - add r2, #0xb - lsl r2, r2, #0x10 - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0x0] - bl BgCommitTilemapBufferToVram - add sp, #0x24 - pop {r4-r7, pc} -_0200DA8A: - ldr r3, _0200DB78 ; =0x00000484 - add r2, r5, #0x4 - ldrh r0, [r5, r3] - add r3, r3, #0x3 - add r1, r4, #0x0 - add r0, #0x12 - str r0, [sp, #0x0] - ldrb r3, [r5, r3] - ldr r0, [r5, #0x0] - lsl r3, r3, #0x19 - lsr r3, r3, #0x19 - lsl r3, r3, #0x7 - add r2, r2, r3 - ldr r0, [r0, #0x0] - mov r3, #0x80 - bl BG_LoadCharTilesData - cmp r6, #0x0 - beq _0200DB72 - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r7, r0, #0x2 - ldr r0, [sp, #0x20] - ldr r2, _0200DB78 ; =0x00000484 - add r6, r1, r0 - add r0, r6, #0x1 - str r0, [sp, #0x10] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldrh r2, [r5, r2] - ldr r0, [r5, #0x0] - ldr r3, [sp, #0x10] - add r2, #0x12 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - add r6, r6, #0x2 - lsl r3, r6, #0x18 - add r2, #0x13 - lsl r2, r2, #0x10 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x10] - add r7, r0, #0x3 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - add r2, #0x14 - lsl r2, r2, #0x10 - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r2, _0200DB78 ; =0x00000484 - ldr r0, [r5, #0x0] - ldrh r2, [r5, r2] - lsl r3, r6, #0x18 - ldr r0, [r0, #0x0] - add r2, #0x15 - lsl r2, r2, #0x10 - add r1, r4, #0x0 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0x0] - bl BgCommitTilemapBufferToVram -_0200DB72: - add sp, #0x24 - pop {r4-r7, pc} - nop -_0200DB78: .word 0x00000484 - - thumb_func_start FUN_0200DB7C -FUN_0200DB7C: ; 0x0200DB7C - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r0, _0200DBE4 ; =0x00000488 - ldrb r2, [r1, r0] - lsl r2, r2, #0x1e - lsr r2, r2, #0x1e - beq _0200DB9E - cmp r2, #0x1 - bne _0200DB96 - add r0, r1, #0x0 - mov r1, #0x2 - bl FUN_0200D980 -_0200DB96: - add r0, r4, #0x0 - bl FUN_0200CAB4 - pop {r3-r5, pc} -_0200DB9E: - sub r2, r0, #0x2 - ldrb r2, [r1, r2] - add r3, r2, #0x1 - sub r2, r0, #0x2 - strb r3, [r1, r2] - ldrb r2, [r1, r2] - cmp r2, #0x10 - bne _0200DBE0 - mov r3, #0x0 - sub r2, r0, #0x2 - strb r3, [r1, r2] - sub r2, r0, #0x1 - ldrb r2, [r1, r2] - mov r4, #0x7f - bic r2, r4 - sub r4, r0, #0x1 - ldrb r4, [r1, r4] - sub r0, r0, #0x1 - lsl r4, r4, #0x19 - lsr r4, r4, #0x19 - add r5, r4, #0x1 - mov r4, #0x7 - and r4, r5 - lsl r4, r4, #0x18 - lsr r5, r4, #0x18 - mov r4, #0x7f - and r4, r5 - orr r2, r4 - strb r2, [r1, r0] - add r0, r1, #0x0 - add r1, r3, #0x0 - bl FUN_0200D980 -_0200DBE0: - pop {r3-r5, pc} - nop -_0200DBE4: .word 0x00000488 - - thumb_func_start FUN_0200DBE8 -FUN_0200DBE8: ; 0x0200DBE8 - push {r4, lr} - add r4, r0, #0x0 - add r0, r1, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - bl FUN_0200CAB4 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200DBFC -FUN_0200DBFC: ; 0x0200DBFC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0200DC1C ; =FUN_0200DBE8 - add r1, r4, #0x0 - mov r2, #0x0 - bl FUN_0200CA98 - ldr r1, _0200DC20 ; =0x00000488 - mov r0, #0x3 - ldrb r2, [r4, r1] - bic r2, r0 - mov r0, #0x1 - orr r0, r2 - strb r0, [r4, r1] - pop {r4, pc} - nop -_0200DC1C: .word FUN_0200DBE8 -_0200DC20: .word 0x00000488 - - thumb_func_start FUN_0200DC24 -FUN_0200DC24: ; 0x0200DC24 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0200DC44 ; =FUN_0200DBE8 - add r1, r4, #0x0 - mov r2, #0x0 - bl FUN_0200CA98 - ldr r1, _0200DC48 ; =0x00000488 - mov r0, #0x3 - ldrb r2, [r4, r1] - bic r2, r0 - mov r0, #0x2 - orr r0, r2 - strb r0, [r4, r1] - pop {r4, pc} - nop -_0200DC44: .word FUN_0200DBE8 -_0200DC48: .word 0x00000488 - - thumb_func_start FUN_0200DC4C -FUN_0200DC4C: ; 0x0200DC4C - push {r4-r7, lr} - sub sp, #0xc - str r2, [sp, #0x4] - ldr r5, [sp, #0x30] - str r3, [sp, #0x8] - add r6, r0, #0x0 - add r7, r1, #0x0 - str r5, [sp, #0x0] - bl FUN_0200DD70 - add r4, r0, #0x0 - add r1, r5, #0x0 - bl FUN_0200DDAC - add r0, r4, #0x0 - bl FUN_0200DDD8 - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - bl FUN_0200DE30 - add r2, sp, #0x10 - ldrh r1, [r2, #0x18] - ldrb r2, [r2, #0x1c] - add r0, r4, #0x0 - bl FUN_0200DE80 - add r2, sp, #0x10 - ldrb r1, [r2, #0x10] - ldrh r2, [r2, #0x14] - add r0, r4, #0x0 - bl FUN_0200DFD8 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl BgCommitTilemapBufferToVram - ldr r0, _0200DCA0 ; =0x0000016F - add r0, r4, r0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0200DCA0: .word 0x0000016F - - thumb_func_start FUN_0200DCA4 -FUN_0200DCA4: ; 0x0200DCA4 - push {r4-r7, lr} - sub sp, #0xc - str r2, [sp, #0x4] - ldr r5, [sp, #0x2c] - str r3, [sp, #0x8] - add r6, r0, #0x0 - add r7, r1, #0x0 - str r5, [sp, #0x0] - bl FUN_0200DD70 - add r4, r0, #0x0 - add r1, r5, #0x0 - bl FUN_0200DDAC - add r0, r4, #0x0 - bl FUN_0200DDD8 - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - bl FUN_0200DE30 - ldr r1, [sp, #0x28] - add r0, r4, #0x0 - bl FUN_0200DEC0 - add r2, sp, #0x10 - ldrb r1, [r2, #0x10] - ldrh r2, [r2, #0x14] - add r0, r4, #0x0 - bl FUN_0200DFD8 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl BgCommitTilemapBufferToVram - ldr r0, _0200DCF4 ; =0x0000016F - add r0, r4, r0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0200DCF4: .word 0x0000016F - - thumb_func_start FUN_0200DCF8 -FUN_0200DCF8: ; 0x0200DCF8 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _0200DD6C ; =0x0000016F - add r4, r1, #0x0 - ldrb r1, [r4, r0] - cmp r1, #0x1 - beq _0200DD10 - cmp r1, #0x2 - beq _0200DD2E - cmp r1, #0x3 - beq _0200DD40 - b _0200DD54 -_0200DD10: - add r0, r4, #0x0 - bl FUN_0200E188 - mov r0, #0x59 - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - bl FUN_0200C3DC - add r0, r4, #0x0 - bl MOD05_021D99F8 - add r0, r5, #0x0 - bl FUN_0200621C - pop {r3-r5, pc} -_0200DD2E: - mov r1, #0x3 - strb r1, [r4, r0] - sub r0, #0xb - ldr r0, [r4, r0] - mov r1, #0x1 - ldr r0, [r0, #0x0] - bl FUN_02020130 - b _0200DD54 -_0200DD40: - sub r0, #0xb - ldr r0, [r4, r0] - ldr r0, [r0, #0x0] - bl FUN_0202022C - cmp r0, #0x6 - bne _0200DD54 - ldr r0, _0200DD6C ; =0x0000016F - mov r1, #0x0 - strb r1, [r4, r0] -_0200DD54: - mov r0, #0x59 - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - mov r1, #0x1 - ldr r0, [r0, #0x0] - lsl r1, r1, #0xc - bl FUN_020201E4 - ldr r0, [r4, #0x0] - bl FUN_0201FDEC - pop {r3-r5, pc} - .balign 4 -_0200DD6C: .word 0x0000016F - - thumb_func_start FUN_0200DD70 -FUN_0200DD70: ; 0x0200DD70 - push {r3-r7, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r7, r3, #0x0 - mov r1, #0x17 - add r6, r2, #0x0 - ldr r0, _0200DDA4 ; =FUN_0200DCF8 - ldr r3, [sp, #0x18] - lsl r1, r1, #0x4 - mov r2, #0x0 - bl FUN_020061E8 - bl FUN_0201B6C8 - ldr r1, _0200DDA8 ; =0x0000016F - mov r2, #0x0 - strb r2, [r0, r1] - sub r2, r1, #0x7 - str r5, [r0, r2] - sub r2, r1, #0x3 - strb r4, [r0, r2] - sub r2, r1, #0x2 - strb r6, [r0, r2] - sub r1, r1, #0x1 - strb r7, [r0, r1] - pop {r3-r7, pc} - .balign 4 -_0200DDA4: .word FUN_0200DCF8 -_0200DDA8: .word 0x0000016F - - thumb_func_start FUN_0200DDAC -FUN_0200DDAC: ; 0x0200DDAC - push {r4-r6, lr} - sub sp, #0x18 - ldr r5, _0200DDD4 ; =UNK_020ECEA8 - add r4, sp, #0x0 - add r6, r0, #0x0 - add r3, r1, #0x0 - add r2, r4, #0x0 - ldmia r5!, {r0-r1} - stmia r4!, {r0-r1} - ldmia r5!, {r0-r1} - stmia r4!, {r0-r1} - ldmia r5!, {r0-r1} - stmia r4!, {r0-r1} - add r1, r2, #0x0 - add r0, r6, #0x0 - mov r2, #0x1 - bl MOD05_021D959C - add sp, #0x18 - pop {r4-r6, pc} - .balign 4 -_0200DDD4: .word UNK_020ECEA8 - - thumb_func_start FUN_0200DDD8 -FUN_0200DDD8: ; 0x0200DDD8 - push {r3-r4, lr} - sub sp, #0xc - mov r1, #0x1 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, _0200DE2C ; =0x00015CD5 - mov r2, #0x31 - str r1, [sp, #0x8] - mov r1, #0x26 - mov r3, #0x0 - add r4, r0, #0x0 - bl MOD05_021D967C - ldr r0, _0200DE2C ; =0x00015CD5 - mov r1, #0x26 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r2, #0x2f - mov r3, #0x0 - bl MOD05_021D96F4 - ldr r0, _0200DE2C ; =0x00015CD5 - mov r1, #0x26 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r2, #0x2e - mov r3, #0x0 - bl MOD05_021D9708 - mov r0, #0x1 - str r0, [sp, #0x0] - ldr r0, _0200DE2C ; =0x00015CD5 - mov r1, #0x26 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r2, #0x30 - mov r3, #0x0 - bl MOD05_021D971C - add sp, #0xc - pop {r3-r4, pc} - nop -_0200DE2C: .word 0x00015CD5 - - thumb_func_start FUN_0200DE30 -FUN_0200DE30: ; 0x0200DE30 - push {r4-r7, lr} - sub sp, #0x34 - ldr r5, _0200DE7C ; =UNK_020ECEC0 - add r6, r2, #0x0 - add r4, r0, #0x0 - add r7, r1, #0x0 - add r3, sp, #0x0 - mov r2, #0x6 -_0200DE40: - ldmia r5!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _0200DE40 - ldr r0, [r5, #0x0] - str r0, [r3, #0x0] - add r0, r7, #0x5 - lsl r1, r0, #0x3 - add r0, sp, #0x0 - strh r1, [r0, #0x0] - add r1, r6, #0x5 - lsl r1, r1, #0x3 - strh r1, [r0, #0x2] - add r0, r4, #0x0 - add r1, sp, #0x0 - bl MOD05_021D9820 - mov r1, #0x59 - lsl r1, r1, #0x2 - str r0, [r4, r1] - ldr r0, [r4, #0x0] - bl FUN_0201FDEC - mov r0, #0x10 - mov r1, #0x1 - bl GX_EngineBToggleLayers - add sp, #0x34 - pop {r4-r7, pc} - nop -_0200DE7C: .word UNK_020ECEC0 - - thumb_func_start FUN_0200DE80 -FUN_0200DE80: ; 0x0200DE80 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - ldr r0, _0200DEBC ; =0x00000162 - add r4, r1, #0x0 - ldrh r0, [r5, r0] - add r6, r2, #0x0 - bl FUN_02006D98 - add r7, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r0, sp, #0xc - add r1, r4, #0x0 - add r2, r6, #0x0 - mov r3, #0x2 - bl FUN_02068C00 - add r0, r5, #0x0 - add r1, sp, #0xc - bl FUN_0200DEF4 - add r0, r7, #0x0 - bl FUN_020072E8 - add sp, #0x1c - pop {r4-r7, pc} - nop -_0200DEBC: .word 0x00000162 - - thumb_func_start FUN_0200DEC0 -FUN_0200DEC0: ; 0x0200DEC0 - push {r4-r6, lr} - sub sp, #0x10 - add r5, r0, #0x0 - ldr r0, _0200DEF0 ; =0x00000162 - add r4, r1, #0x0 - ldrh r0, [r5, r0] - bl FUN_02006D98 - add r6, r0, #0x0 - add r0, sp, #0x0 - add r1, r4, #0x0 - mov r2, #0x2 - bl FUN_02068B68 - add r0, r5, #0x0 - add r1, sp, #0x0 - bl FUN_0200DEF4 - add r0, r6, #0x0 - bl FUN_020072E8 - add sp, #0x10 - pop {r4-r6, pc} - nop -_0200DEF0: .word 0x00000162 - - thumb_func_start FUN_0200DEF4 -FUN_0200DEF4: ; 0x0200DEF4 - push {r3-r7, lr} - sub sp, #0x28 - add r5, r0, #0x0 - ldr r0, _0200DFC8 ; =0x00000162 - add r6, r1, #0x0 - mov r1, #0x19 - ldrh r0, [r5, r0] - lsl r1, r1, #0x8 - bl AllocFromHeap - add r2, sp, #0x18 - ldr r3, _0200DFCC ; =UNK_020ECE98 - add r4, r0, #0x0 - add r7, r2, #0x0 - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - str r4, [sp, #0x0] - ldr r2, _0200DFC8 ; =0x00000162 - ldrh r0, [r6, #0x0] - ldrh r1, [r6, #0x2] - ldrh r2, [r5, r2] - add r3, r7, #0x0 - bl FUN_02012400 - ldr r3, _0200DFD0 ; =UNK_020ECE88 - add r2, sp, #0x8 - add r7, r2, #0x0 - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - mov r0, #0x32 - lsl r0, r0, #0x6 - add r0, r4, r0 - str r0, [sp, #0x0] - ldr r2, _0200DFC8 ; =0x00000162 - ldrh r0, [r6, #0x0] - ldrh r1, [r6, #0x2] - ldrh r2, [r5, r2] - add r3, r7, #0x0 - bl FUN_02012400 - mov r0, #0x13 - lsl r0, r0, #0x4 - ldr r0, [r5, r0] - ldr r1, _0200DFD4 ; =0x00015CD5 - bl FUN_020094F0 - bl FUN_02009C5C - mov r1, #0x1 - str r0, [sp, #0x4] - bl NNS_G2dGetImageLocation - mov r1, #0x19 - add r7, r0, #0x0 - add r0, r4, #0x0 - lsl r1, r1, #0x8 - bl DC_FlushRange - mov r2, #0x19 - add r0, r4, #0x0 - add r1, r7, #0x0 - lsl r2, r2, #0x8 - bl GX_LoadOBJ - add r0, r4, #0x0 - bl FreeToHeap - ldr r2, _0200DFC8 ; =0x00000162 - ldrh r0, [r6, #0x0] - ldrh r1, [r6, #0x4] - ldrh r2, [r5, r2] - bl FUN_02012470 - add r4, r0, #0x0 - mov r0, #0x4d - lsl r0, r0, #0x2 - ldr r0, [r5, r0] - ldr r1, _0200DFD4 ; =0x00015CD5 - bl FUN_020094F0 - ldr r1, [sp, #0x4] - bl FUN_02009E54 - mov r1, #0x1 - bl NNS_G2dGetImagePaletteLocation - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x20 - bl DC_FlushRange - add r0, r4, #0x0 - add r1, r5, #0x0 - mov r2, #0x20 - bl GX_LoadOBJPltt - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x28 - pop {r3-r7, pc} - nop -_0200DFC8: .word 0x00000162 -_0200DFCC: .word UNK_020ECE98 -_0200DFD0: .word UNK_020ECE88 -_0200DFD4: .word 0x00015CD5 - - thumb_func_start FUN_0200DFD8 -FUN_0200DFD8: ; 0x0200DFD8 - push {r4-r6, lr} - sub sp, #0x10 - ldr r3, _0200E184 ; =0x0000016E - add r5, r0, #0x0 - ldrb r0, [r5, r3] - add r4, r1, #0x0 - sub r1, r3, #0x2 - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - sub r3, r3, #0x1 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - add r6, r2, #0x0 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x1 - ldrb r0, [r5, r3] - sub r1, r3, #0x2 - lsl r2, r2, #0x10 - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0xa - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r1, [r5, r1] - ldrb r3, [r5, r3] - ldr r0, [r5, r0] - lsr r2, r2, #0x10 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x2 - ldrb r0, [r5, r3] - lsl r2, r2, #0x10 - sub r1, r3, #0x2 - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - add r3, #0xa - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x4 - ldrb r0, [r5, r3] - lsl r2, r2, #0x10 - sub r1, r3, #0x2 - str r0, [sp, #0x0] - mov r0, #0xa - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r1, [r5, r1] - ldrb r3, [r5, r3] - ldr r0, [r5, r0] - lsr r2, r2, #0x10 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x3 - ldrb r0, [r5, r3] - lsl r2, r2, #0x10 - sub r1, r3, #0x2 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - mov r0, #0xa - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - sub r3, r3, #0x1 - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x5 - ldrb r0, [r5, r3] - lsl r2, r2, #0x10 - sub r1, r3, #0x2 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - mov r0, #0xa - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - add r3, #0xa - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x6 - ldrb r0, [r5, r3] - lsl r2, r2, #0x10 - sub r1, r3, #0x2 - add r0, #0xa - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - sub r3, r3, #0x1 - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r2, r6, #0x7 - ldrb r0, [r5, r3] - sub r1, r3, #0x2 - lsl r2, r2, #0x10 - add r0, #0xa - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0xa - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r1, [r5, r1] - ldrb r3, [r5, r3] - ldr r0, [r5, r0] - lsr r2, r2, #0x10 - bl FillBgTilemapRect - ldr r3, _0200E184 ; =0x0000016E - add r6, #0x8 - ldrb r0, [r5, r3] - lsl r2, r6, #0x10 - sub r1, r3, #0x2 - add r0, #0xa - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r4, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r5, r3] - ldrb r1, [r5, r1] - ldr r0, [r5, r0] - add r3, #0xa - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - mov r1, #0x5a - lsl r1, r1, #0x2 - ldr r0, [r5, r1] - add r1, r1, #0x4 - ldrb r1, [r5, r1] - bl ScheduleBgTilemapBufferTransfer - add sp, #0x10 - pop {r4-r6, pc} - nop -_0200E184: .word 0x0000016E - - thumb_func_start FUN_0200E188 -FUN_0200E188: ; 0x0200E188 - push {r4, lr} - sub sp, #0x10 - ldr r3, _0200E1CC ; =0x0000016E - add r4, r0, #0x0 - ldrb r0, [r4, r3] - mov r2, #0x0 - sub r1, r3, #0x2 - sub r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0xc - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r2, [sp, #0xc] - sub r0, r3, #0x6 - sub r3, r3, #0x1 - ldrb r3, [r4, r3] - ldrb r1, [r4, r1] - ldr r0, [r4, r0] - sub r3, r3, #0x1 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - mov r1, #0x5a - lsl r1, r1, #0x2 - ldr r0, [r4, r1] - add r1, r1, #0x4 - ldrb r1, [r4, r1] - bl ScheduleBgTilemapBufferTransfer - add sp, #0x10 - pop {r4, pc} - .balign 4 -_0200E1CC: .word 0x0000016E diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s index a464171a..32fcbf7b 100644 --- a/arm9/asm/unk_0200E850.s +++ b/arm9/asm/unk_0200E850.s @@ -5947,3 +5947,137 @@ _02011372: pop {r4-r6, pc} .balign 4 _02011378: .word 0x00000385 + + thumb_func_start FUN_0201137C +FUN_0201137C: ; 0x0201137C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + lsl r0, r6, #0xc + ldr r2, [r4, #0x2c] + add r7, r3, #0x0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r2, r0, #0x0 + mov r0, #0x2 + mov r3, #0x0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0xe1 + asr r0, r0, #0xc + lsl r1, r1, #0x2 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + sub r2, r6, r0 + sub r0, r1, #0x4 + str r4, [r5, r0] + add r4, #0x23 + add r0, r1, #0x2 + ldrb r3, [r4, #0x0] + sub r1, r1, #0x4 + strb r3, [r5, r0] + ldr r0, [sp, #0x28] + add r3, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + str r0, [sp, #0x8] + ldr r0, [sp, #0x34] + str r0, [sp, #0xc] + ldr r1, [r5, r1] + add r0, r5, #0x0 + add r0, #0x4c + add r1, #0x24 + bl FUN_02010FD0 + ldr r0, _020113E8 ; =0x00000385 + mov r1, #0x0 + strb r1, [r5, r0] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020113E8: .word 0x00000385 + + thumb_func_start FUN_020113EC +FUN_020113EC: ; 0x020113EC + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + ldr r1, _0201147C ; =0x00000385 + add r5, r0, #0x0 + ldrb r1, [r5, r1] + mov r6, #0x0 + cmp r1, #0x0 + beq _02011408 + cmp r1, #0x1 + beq _02011460 + cmp r1, #0x2 + beq _02011474 + b _02011476 +_02011408: + add r0, #0x4c + bl FUN_020110BC + cmp r0, #0x1 + bne _02011476 + ldr r2, _0201147C ; =0x00000385 + ldrb r0, [r5, r2] + sub r1, r2, #0x5 + add r0, r0, #0x1 + strb r0, [r5, r2] + ldr r0, [r4, #0x10] + sub r2, r2, #0x1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldrb r2, [r5, r2] + ldr r1, [r5, r1] + ldr r3, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_0200FE20 + mov r0, #0xe + lsl r0, r0, #0x6 + ldr r3, [r5, r0] + add r0, r3, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x18] + bne _02011452 + add r3, #0x23 + ldrb r3, [r3, #0x0] + ldr r2, [r4, #0x10] + mov r1, #0x1 + bl FUN_0200F6E4 + b _02011476 +_02011452: + add r3, #0x23 + ldrb r3, [r3, #0x0] + ldr r2, [r4, #0x10] + mov r1, #0x2 + bl FUN_0200F6E4 + b _02011476 +_02011460: + bl FUN_0200FE90 + cmp r0, #0x1 + bne _02011476 + ldr r0, _0201147C ; =0x00000385 + mov r6, #0x1 + ldrb r1, [r5, r0] + add r1, r1, #0x1 + strb r1, [r5, r0] + b _02011476 +_02011474: + mov r6, #0x1 +_02011476: + add r0, r6, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0201147C: .word 0x00000385 diff --git a/arm9/asm/unk_0201137C.s b/arm9/asm/unk_0201137C.s index 65e076bb..ad250827 100644 --- a/arm9/asm/unk_0201137C.s +++ b/arm9/asm/unk_0201137C.s @@ -3,140 +3,6 @@ .text - thumb_func_start FUN_0201137C -FUN_0201137C: ; 0x0201137C - push {r3-r7, lr} - sub sp, #0x10 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r5, r0, #0x0 - lsl r0, r6, #0xc - ldr r2, [r4, #0x2c] - add r7, r3, #0x0 - asr r1, r0, #0x1f - asr r3, r2, #0x1f - bl _ll_mul - add r2, r0, #0x0 - mov r0, #0x2 - mov r3, #0x0 - lsl r0, r0, #0xa - add r0, r2, r0 - adc r1, r3 - lsl r1, r1, #0x14 - lsr r0, r0, #0xc - orr r0, r1 - mov r1, #0xe1 - asr r0, r0, #0xc - lsl r1, r1, #0x2 - strb r0, [r5, r1] - ldrb r0, [r5, r1] - sub r2, r6, r0 - sub r0, r1, #0x4 - str r4, [r5, r0] - add r4, #0x23 - add r0, r1, #0x2 - ldrb r3, [r4, #0x0] - sub r1, r1, #0x4 - strb r3, [r5, r0] - ldr r0, [sp, #0x28] - add r3, r7, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x4] - ldr r0, [sp, #0x30] - str r0, [sp, #0x8] - ldr r0, [sp, #0x34] - str r0, [sp, #0xc] - ldr r1, [r5, r1] - add r0, r5, #0x0 - add r0, #0x4c - add r1, #0x24 - bl FUN_02010FD0 - ldr r0, _020113E8 ; =0x00000385 - mov r1, #0x0 - strb r1, [r5, r0] - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_020113E8: .word 0x00000385 - - thumb_func_start FUN_020113EC -FUN_020113EC: ; 0x020113EC - push {r4-r6, lr} - sub sp, #0x8 - add r4, r1, #0x0 - ldr r1, _0201147C ; =0x00000385 - add r5, r0, #0x0 - ldrb r1, [r5, r1] - mov r6, #0x0 - cmp r1, #0x0 - beq _02011408 - cmp r1, #0x1 - beq _02011460 - cmp r1, #0x2 - beq _02011474 - b _02011476 -_02011408: - add r0, #0x4c - bl FUN_020110BC - cmp r0, #0x1 - bne _02011476 - ldr r2, _0201147C ; =0x00000385 - ldrb r0, [r5, r2] - sub r1, r2, #0x5 - add r0, r0, #0x1 - strb r0, [r5, r2] - ldr r0, [r4, #0x10] - sub r2, r2, #0x1 - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldrb r2, [r5, r2] - ldr r1, [r5, r1] - ldr r3, [r4, #0x8] - add r0, r5, #0x0 - bl FUN_0200FE20 - mov r0, #0xe - lsl r0, r0, #0x6 - ldr r3, [r5, r0] - add r0, r3, #0x0 - add r0, #0x20 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - ldr r0, [r4, #0x18] - bne _02011452 - add r3, #0x23 - ldrb r3, [r3, #0x0] - ldr r2, [r4, #0x10] - mov r1, #0x1 - bl FUN_0200F6E4 - b _02011476 -_02011452: - add r3, #0x23 - ldrb r3, [r3, #0x0] - ldr r2, [r4, #0x10] - mov r1, #0x2 - bl FUN_0200F6E4 - b _02011476 -_02011460: - bl FUN_0200FE90 - cmp r0, #0x1 - bne _02011476 - ldr r0, _0201147C ; =0x00000385 - mov r6, #0x1 - ldrb r1, [r5, r0] - add r1, r1, #0x1 - strb r1, [r5, r0] - b _02011476 -_02011474: - mov r6, #0x1 -_02011476: - add r0, r6, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 -_0201147C: .word 0x00000385 - thumb_func_start FUN_02011480 FUN_02011480: ; 0x02011480 cmp r1, #0x0 diff --git a/arm9/asm/unk_02015D14.s b/arm9/asm/unk_02015D14.s deleted file mode 100644 index 7a67039f..00000000 --- a/arm9/asm/unk_02015D14.s +++ /dev/null @@ -1,238 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020ED734 -UNK_020ED734: ; 0x020ED734 - .short 0x0001, 0x01DE, 0x0003, 0x0003, 0x0005, 0x0005, 0x0007, 0x0007 - .short 0x0009, 0x0009, 0x000B, 0x000B, 0x000C, 0x000C, 0x000E, 0x000E - .short 0x0010, 0x0010, 0x0012, 0x0012, 0x0014, 0x0014, 0x0016, 0x0016 - .short 0x0018, 0x0018, 0x001A, 0x001A, 0x001C, 0x001C, 0x001E, 0x001E - .short 0x0020, 0x0020, 0x0022, 0x0022, 0x0025, 0x0025, 0x0027, 0x0027 - .short 0x0029, 0x0029, 0x002B, 0x002B, 0x002C, 0x002C, 0x002D, 0x002D - .short 0x002E, 0x002E, 0x002F, 0x002F, 0x0030, 0x0030, 0x0033, 0x0033 - .short 0x0036, 0x0036, 0x0039, 0x0039, 0x003C, 0x003C, 0x003F, 0x003F - .short 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042, 0x0043, 0x0043 - .short 0x0045, 0x0045, 0x0047, 0x0047, 0x0049, 0x0049, 0x004A, 0x004A - .short 0x004B, 0x004B, 0x004C, 0x004C, 0x004D, 0x004D, 0x004E, 0x004E - .short 0x004F, 0x004F, 0x0050, 0x0050, 0x0051, 0x0051, 0x0002, 0x0002 - .short 0x0004, 0x0004, 0x0006, 0x0006, 0x0008, 0x0008, 0x000A, 0x000A - .short 0x0044, 0x0044, 0x0046, 0x0046, 0x0048, 0x0048, 0x000D, 0x000D - .short 0x000F, 0x000F, 0x0011, 0x0011, 0x0013, 0x0013, 0x0015, 0x0015 - .short 0x0017, 0x0017, 0x0019, 0x0019, 0x001B, 0x001B, 0x001D, 0x001D - .short 0x001F, 0x001F, 0x0021, 0x0021, 0x0023, 0x0023, 0x0026, 0x0026 - .short 0x0028, 0x0028, 0x002A, 0x002A, 0x0031, 0x0031, 0x0034, 0x0034 - .short 0x0037, 0x0037, 0x003A, 0x003A, 0x003D, 0x003D, 0x0032, 0x0032 - .short 0x0035, 0x0035, 0x0038, 0x0038, 0x003B, 0x003B, 0x003E, 0x003E - .short 0x0024, 0x0024, 0x0053, 0x0053, 0x0055, 0x0055, 0x0057, 0x0057 - .short 0x0059, 0x0059, 0x005B, 0x005B, 0x005C, 0x005C, 0x005E, 0x005E - .short 0x0060, 0x0060, 0x0062, 0x0062, 0x0064, 0x0064, 0x0066, 0x0066 - .short 0x0068, 0x0068, 0x006A, 0x006A, 0x006C, 0x006C, 0x006E, 0x006E - .short 0x0070, 0x0070, 0x0072, 0x0072, 0x0075, 0x0075, 0x0077, 0x0077 - .short 0x0079, 0x0079, 0x007B, 0x007B, 0x007C, 0x007C, 0x007D, 0x007D - .short 0x007E, 0x007E, 0x007F, 0x007F, 0x0080, 0x0080, 0x0083, 0x0083 - .short 0x0086, 0x0086, 0x0089, 0x0089, 0x008C, 0x008C, 0x008F, 0x008F - .short 0x0090, 0x0090, 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093 - .short 0x0095, 0x0095, 0x0097, 0x0097, 0x0099, 0x0099, 0x009A, 0x009A - .short 0x009B, 0x009B, 0x009C, 0x009C, 0x009D, 0x009D, 0x009E, 0x009E - .short 0x009F, 0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x0052, 0x0052 - .short 0x0054, 0x0054, 0x0056, 0x0056, 0x0058, 0x0058, 0x005A, 0x005A - .short 0x0094, 0x0094, 0x0096, 0x0096, 0x0098, 0x0098, 0x005D, 0x005D - .short 0x005F, 0x005F, 0x0061, 0x0061, 0x0063, 0x0063, 0x0065, 0x0065 - .short 0x0067, 0x0067, 0x0069, 0x0069, 0x006B, 0x006B, 0x006D, 0x006D - .short 0x006F, 0x006F, 0x0071, 0x0071, 0x0073, 0x0073, 0x0076, 0x0076 - .short 0x0078, 0x0078, 0x007A, 0x007A, 0x0081, 0x0081, 0x0084, 0x0084 - .short 0x0087, 0x0087, 0x008A, 0x008A, 0x008D, 0x008D, 0x0082, 0x0082 - .short 0x0085, 0x0085, 0x0088, 0x0088, 0x008B, 0x008B, 0x008E, 0x008E - .short 0x0074, 0x0074, 0x00A2, 0x0121, 0x00A3, 0x0122, 0x00A4, 0x0123 - .short 0x00A5, 0x0124, 0x00A6, 0x0125, 0x00A7, 0x0126, 0x00A8, 0x0127 - .short 0x00A9, 0x0128, 0x00AA, 0x0129, 0x00AB, 0x012A, 0x00E1, 0x01AB - .short 0x00E2, 0x01AC, 0x00E4, 0x01AE, 0x00F1, 0x01BE, 0x00E6, 0x01B0 - .short 0x00E5, 0x01AF, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00E8, 0x01B2 - .short 0x00E9, 0x01B3, 0x00EE, 0x01BB, 0x00EF, 0x01BC, 0x0112, 0x0112 - .short 0x00E3, 0x01AD, 0x00F2, 0x0176, 0x00E7, 0x01B1, 0x00AC, 0x012B - .short 0x00AD, 0x012C, 0x00AE, 0x012D, 0x00AF, 0x012E, 0x00B0, 0x012F - .short 0x00B1, 0x0130, 0x00B2, 0x0131, 0x00B3, 0x0132, 0x00B4, 0x0133 - .short 0x00B5, 0x0134, 0x00B6, 0x0135, 0x00B7, 0x0136, 0x00B8, 0x0137 - .short 0x00B9, 0x0138, 0x00BA, 0x0139, 0x00BB, 0x013A, 0x00BC, 0x013B - .short 0x00BD, 0x013C, 0x00BE, 0x013D, 0x00BF, 0x013E, 0x00C0, 0x013F - .short 0x00C1, 0x0140, 0x00C2, 0x0141, 0x00C3, 0x0142, 0x00C4, 0x0143 - .short 0x00C5, 0x0144, 0x00C6, 0x0145, 0x00C7, 0x0146, 0x00C8, 0x0147 - .short 0x00C9, 0x0148, 0x00CA, 0x0149, 0x00CB, 0x014A, 0x00CC, 0x014B - .short 0x00CD, 0x014C, 0x00CE, 0x014D, 0x00CF, 0x014E, 0x00D0, 0x014F - .short 0x00D1, 0x0150, 0x00D2, 0x0151, 0x00D3, 0x0152, 0x00D4, 0x0153 - .short 0x00D5, 0x0154, 0x00D6, 0x0155, 0x00D7, 0x0156, 0x00D8, 0x0157 - .short 0x00D9, 0x0158, 0x00DA, 0x0159, 0x00DB, 0x015A, 0x00DC, 0x015B - .short 0x00DD, 0x015C, 0x00DE, 0x015D, 0x00DF, 0x015E, 0x011F, 0x011F - .short 0x00F6, 0x01C4, 0x0163, 0x0163, 0x0175, 0x0175, 0x017B, 0x017B - .short 0x0183, 0x0183, 0x0195, 0x0195, 0x019B, 0x019B - - .text - - thumb_func_start FUN_02015D14 -FUN_02015D14: ; 0x02015D14 - cmp r0, #0x7 - bhi _02015D34 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02015D24: ; jump table (using 16-bit offset) - .short _02015D34 - _02015D24 - 2; case 0 - .short _02015D34 - _02015D24 - 2; case 1 - .short _02015D38 - _02015D24 - 2; case 2 - .short _02015D3E - _02015D24 - 2; case 3 - .short _02015D38 - _02015D24 - 2; case 4 - .short _02015D42 - _02015D24 - 2; case 5 - .short _02015D34 - _02015D24 - 2; case 6 - .short _02015D38 - _02015D24 - 2; case 7 -_02015D34: - mov r0, #0xea - bx lr -_02015D38: - mov r0, #0x6d - lsl r0, r0, #0x2 - bx lr -_02015D3E: - ldr r0, _02015D48 ; =0x000001B7 - bx lr -_02015D42: - ldr r0, _02015D4C ; =0x000001B6 - bx lr - nop -_02015D48: .word 0x000001B7 -_02015D4C: .word 0x000001B6 - - thumb_func_start FUN_02015D50 -FUN_02015D50: ; 0x02015D50 - cmp r0, #0x7 - bhi _02015D70 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02015D60: ; jump table (using 16-bit offset) - .short _02015D70 - _02015D60 - 2; case 0 - .short _02015D70 - _02015D60 - 2; case 1 - .short _02015D74 - _02015D60 - 2; case 2 - .short _02015D78 - _02015D60 - 2; case 3 - .short _02015D74 - _02015D60 - 2; case 4 - .short _02015D7E - _02015D60 - 2; case 5 - .short _02015D70 - _02015D60 - 2; case 6 - .short _02015D74 - _02015D60 - 2; case 7 -_02015D70: - mov r0, #0xeb - bx lr -_02015D74: - ldr r0, _02015D84 ; =0x000001B5 - bx lr -_02015D78: - mov r0, #0x6e - lsl r0, r0, #0x2 - bx lr -_02015D7E: - mov r0, #0x6d - lsl r0, r0, #0x2 - bx lr - .balign 4 -_02015D84: .word 0x000001B5 - - thumb_func_start FUN_02015D88 -FUN_02015D88: ; 0x02015D88 - push {r3-r7, lr} - sub sp, #0x10 - add r6, r3, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - str r2, [sp, #0x8] - cmp r6, #0x1 - beq _02015D9C - mov r2, #0x1 - b _02015D9E -_02015D9C: - mov r2, #0x0 -_02015D9E: - ldr r0, [sp, #0x8] - mov r4, #0x0 - sub r0, r0, #0x1 - str r0, [sp, #0xc] - beq _02015E18 - ldr r1, _02015E28 ; =UNK_020ED734 - lsl r0, r2, #0x1 - ldr r5, [sp, #0x4] - add r7, r1, r0 -_02015DB0: - ldr r0, [sp, #0x0] - ldrb r0, [r0, r4] - cmp r0, #0xff - beq _02015E18 - cmp r0, #0xf7 - blo _02015DEA - ldr r0, [sp, #0x8] - sub r3, r0, #0x1 - cmp r3, #0xa - blo _02015DC6 - mov r3, #0xa -_02015DC6: - mov r1, #0x0 - cmp r3, #0x0 - ble _02015DDC - mov r0, #0x6b - ldr r2, [sp, #0x4] - lsl r0, r0, #0x2 -_02015DD2: - add r1, r1, #0x1 - strh r0, [r2, #0x0] - add r2, r2, #0x2 - cmp r1, r3 - blt _02015DD2 -_02015DDC: - ldr r0, [sp, #0x4] - ldr r2, _02015E2C ; =0x0000FFFF - lsl r1, r1, #0x1 - strh r2, [r0, r1] - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_02015DEA: - lsl r0, r0, #0x2 - ldrh r0, [r7, r0] - cmp r0, #0xea - beq _02015DF8 - cmp r0, #0xeb - beq _02015E02 - b _02015E0C -_02015DF8: - add r0, r6, #0x0 - bl FUN_02015D14 - strh r0, [r5, #0x0] - b _02015E0E -_02015E02: - add r0, r6, #0x0 - bl FUN_02015D50 - strh r0, [r5, #0x0] - b _02015E0E -_02015E0C: - strh r0, [r5, #0x0] -_02015E0E: - ldr r0, [sp, #0xc] - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, r0 - blo _02015DB0 -_02015E18: - ldr r2, _02015E2C ; =0x0000FFFF - ldr r0, [sp, #0x4] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - nop -_02015E28: .word UNK_020ED734 -_02015E2C: .word 0x0000FFFF diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s deleted file mode 100644 index a648ab1d..00000000 --- a/arm9/asm/unk_02021590.s +++ /dev/null @@ -1,514 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EE668 -UNK_020EE668: ; 0x020EE668 - .byte 0x00, 0x01, 0x02, 0x03 - - .global UNK_020EE66C -UNK_020EE66C: ; 0x020EE66C - .word FUN_020216EC, FUN_0202171C - - .global UNK_020EE674 -UNK_020EE674: ; 0x020EE674 - .word FUN_0202173C, FUN_0202174C - - .text - - thumb_func_start FUN_02021590 -FUN_02021590: ; 0x02021590 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r6, r1, #0x0 - ldr r0, [sp, #0x20] - mov r1, #0x78 - add r7, r2, #0x0 - str r3, [sp, #0x4] - bl AllocFromHeap - add r4, r0, #0x0 - beq _020215C0 - ldr r1, [sp, #0x20] - ldr r3, [sp, #0x4] - str r1, [sp, #0x0] - add r1, r5, #0x0 - add r2, r6, #0x0 - bl FUN_02021600 - ldr r2, [sp, #0x20] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl FUN_020216D4 -_020215C0: - add r0, r4, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020215C8 -FUN_020215C8: ; 0x020215C8 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02021728 - add r0, r4, #0x0 - bl FUN_020216B8 - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020215E0 -FUN_020215E0: ; 0x020215E0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - add r6, r2, #0x0 - cmp r1, r4 - beq _020215FC - bl FUN_02021728 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020216D4 -_020215FC: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02021600 -FUN_02021600: ; 0x02021600 - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - add r0, r1, #0x0 - ldr r1, [sp, #0x18] - add r4, r2, #0x0 - add r6, r3, #0x0 - bl NARC_ctor - str r0, [r5, #0x54] - cmp r0, #0x0 - beq _020216A6 - add r1, r5, #0x0 - add r1, #0x5c - str r1, [sp, #0x0] - add r1, r4, #0x0 - mov r2, #0x0 - mov r3, #0x10 - bl NARC_ReadFromMember - str r6, [r5, #0x6c] - cmp r6, #0x0 - beq _02021638 - mov r0, #0x0 - str r0, [r5, #0x74] - ldr r0, _020216AC ; =FUN_0202192C - str r0, [r5, #0x70] - b _02021660 -_02021638: - ldr r0, [r5, #0x60] - cmp r0, #0x0 - bne _02021642 - bl GF_AssertFail -_02021642: - ldr r0, [sp, #0x18] - ldr r1, [r5, #0x64] - bl AllocFromHeap - str r0, [r5, #0x74] - ldr r0, _020216B0 ; =FUN_02021924 - add r1, r4, #0x0 - str r0, [r5, #0x70] - ldr r0, [r5, #0x74] - str r0, [sp, #0x0] - ldr r0, [r5, #0x54] - ldr r2, [r5, #0x60] - ldr r3, [r5, #0x64] - bl NARC_ReadFromMember -_02021660: - add r0, r5, #0x0 - add r0, #0x6a - ldrb r0, [r0, #0x0] - cmp r0, #0x2 - bhi _02021674 - add r0, r5, #0x0 - add r0, #0x6b - ldrb r0, [r0, #0x0] - cmp r0, #0x2 - bls _02021678 -_02021674: - bl GF_AssertFail -_02021678: - add r0, r5, #0x0 - add r0, #0x6a - ldrb r0, [r0, #0x0] - ldr r2, _020216B4 ; =UNK_020EE668 - sub r0, r0, #0x1 - lsl r3, r0, #0x1 - add r0, r5, #0x0 - add r0, #0x6b - ldrb r0, [r0, #0x0] - sub r1, r0, #0x1 - add r0, r2, r3 - ldrb r0, [r1, r0] - str r0, [r5, #0x8] - add r0, r5, #0x0 - add r0, #0x6b - ldrb r1, [r0, #0x0] - add r0, r5, #0x0 - add r0, #0x6a - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x4 - mul r0, r1 - str r0, [r5, #0xc] - str r4, [r5, #0x58] -_020216A6: - add sp, #0x4 - pop {r3-r6, pc} - nop -_020216AC: .word FUN_0202192C -_020216B0: .word FUN_02021924 -_020216B4: .word UNK_020EE668 - - thumb_func_start FUN_020216B8 -FUN_020216B8: ; 0x020216B8 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x74] - cmp r0, #0x0 - beq _020216C6 - bl FreeToHeap -_020216C6: - ldr r0, [r4, #0x54] - cmp r0, #0x0 - beq _020216D0 - bl NARC_dtor -_020216D0: - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020216D4 -FUN_020216D4: ; 0x020216D4 - push {r3, lr} - add r3, r1, #0x0 - add r1, r2, #0x0 - str r3, [r0, #0x0] - ldr r2, _020216E8 ; =UNK_020EE66C - lsl r3, r3, #0x2 - ldr r2, [r2, r3] - blx r2 - pop {r3, pc} - nop -_020216E8: .word UNK_020EE66C - - thumb_func_start FUN_020216EC -FUN_020216EC: ; 0x020216EC - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0xc] - ldr r0, [r5, #0x64] - add r4, r2, #0x0 - mul r4, r0 - add r0, r1, #0x0 - add r1, r4, #0x0 - bl AllocFromHeap - str r0, [r5, #0x10] - ldr r0, _02021718 ; =FUN_02021774 - add r3, r4, #0x0 - str r0, [r5, #0x4] - ldr r0, [r5, #0x10] - str r0, [sp, #0x0] - ldr r0, [r5, #0x54] - ldr r1, [r5, #0x58] - ldr r2, [r5, #0x5c] - bl NARC_ReadFromMember - pop {r3-r5, pc} - .balign 4 -_02021718: .word FUN_02021774 - - thumb_func_start FUN_0202171C -FUN_0202171C: ; 0x0202171C - ldr r1, _02021724 ; =FUN_0202181C - str r1, [r0, #0x4] - bx lr - nop -_02021724: .word FUN_0202181C - - thumb_func_start FUN_02021728 -FUN_02021728: ; 0x02021728 - push {r3, lr} - ldr r1, [r0, #0x0] - lsl r2, r1, #0x2 - ldr r1, _02021738 ; =UNK_020EE674 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - nop -_02021738: .word UNK_020EE674 - - thumb_func_start FUN_0202173C -FUN_0202173C: ; 0x0202173C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x10] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x10] - pop {r4, pc} - - thumb_func_start FUN_0202174C -FUN_0202174C: ; 0x0202174C - bx lr - .balign 4 - - thumb_func_start FUN_02021750 -FUN_02021750: ; 0x02021750 - push {r3, lr} - ldr r3, [r0, #0x64] - cmp r1, r3 - bhi _02021764 - sub r1, r1, #0x1 - lsl r1, r1, #0x10 - ldr r3, [r0, #0x4] - lsr r1, r1, #0x10 - blx r3 - pop {r3, pc} -_02021764: - add r0, r2, #0x0 - mov r1, #0x0 - add r0, #0x80 - strb r1, [r0, #0x0] - add r2, #0x81 - strb r1, [r2, #0x0] - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02021774 -FUN_02021774: ; 0x02021774 - push {r3-r7, lr} - str r1, [sp, #0x0] - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - ldr r1, [r7, #0xc] - add r5, r0, #0x0 - ldr r0, [r7, #0x8] - add r6, r2, #0x0 - mul r5, r1 - ldr r4, [r7, #0x10] - cmp r0, #0x3 - bhi _02021802 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02021798: ; jump table (using 16-bit offset) - .short _020217A0 - _02021798 - 2; case 0 - .short _020217AA - _02021798 - 2; case 1 - .short _020217C0 - _02021798 - 2; case 2 - .short _020217D6 - _02021798 - 2; case 3 -_020217A0: - add r0, r4, r5 - add r1, r6, #0x0 - bl DecompressGlyphTile - b _02021802 -_020217AA: - add r0, r4, r5 - add r1, r6, #0x0 - bl DecompressGlyphTile - add r0, r4, r5 - add r1, r6, #0x0 - add r0, #0x10 - add r1, #0x40 - bl DecompressGlyphTile - b _02021802 -_020217C0: - add r0, r4, r5 - add r1, r6, #0x0 - bl DecompressGlyphTile - add r0, r4, r5 - add r1, r6, #0x0 - add r0, #0x10 - add r1, #0x20 - bl DecompressGlyphTile - b _02021802 -_020217D6: - add r0, r4, r5 - add r1, r6, #0x0 - bl DecompressGlyphTile - add r0, r4, r5 - add r1, r6, #0x0 - add r0, #0x10 - add r1, #0x20 - bl DecompressGlyphTile - add r0, r4, r5 - add r1, r6, #0x0 - add r0, #0x20 - add r1, #0x40 - bl DecompressGlyphTile - add r0, r4, r5 - add r1, r6, #0x0 - add r0, #0x30 - add r1, #0x60 - bl DecompressGlyphTile -_02021802: - ldr r1, [sp, #0x0] - ldr r2, [r7, #0x70] - add r0, r7, #0x0 - blx r2 - add r1, r6, #0x0 - add r1, #0x80 - add r7, #0x69 - strb r0, [r1, #0x0] - ldrb r0, [r7, #0x0] - add r6, #0x81 - strb r0, [r6, #0x0] - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0202181C -FUN_0202181C: ; 0x0202181C - push {r3-r7, lr} - add r4, r0, #0x0 - ldr r6, [r4, #0xc] - add r0, #0x14 - str r0, [sp, #0x0] - add r7, r1, #0x0 - add r5, r2, #0x0 - add r2, r7, #0x0 - ldr r3, [r4, #0x5c] - mul r2, r6 - add r2, r3, r2 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x58] - add r3, r6, #0x0 - bl NARC_ReadFromMember - ldr r0, [r4, #0x8] - cmp r0, #0x3 - bhi _020218C0 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0202184E: ; jump table (using 16-bit offset) - .short _02021856 - _0202184E - 2; case 0 - .short _02021862 - _0202184E - 2; case 1 - .short _0202187A - _0202184E - 2; case 2 - .short _02021892 - _0202184E - 2; case 3 -_02021856: - add r0, r4, #0x0 - add r0, #0x14 - add r1, r5, #0x0 - bl DecompressGlyphTile - b _020218C0 -_02021862: - add r0, r4, #0x0 - add r0, #0x14 - add r1, r5, #0x0 - bl DecompressGlyphTile - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x24 - add r1, #0x40 - bl DecompressGlyphTile - b _020218C0 -_0202187A: - add r0, r4, #0x0 - add r0, #0x14 - add r1, r5, #0x0 - bl DecompressGlyphTile - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x24 - add r1, #0x20 - bl DecompressGlyphTile - b _020218C0 -_02021892: - add r0, r4, #0x0 - add r0, #0x14 - add r1, r5, #0x0 - bl DecompressGlyphTile - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x24 - add r1, #0x20 - bl DecompressGlyphTile - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x34 - add r1, #0x40 - bl DecompressGlyphTile - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x44 - add r1, #0x60 - bl DecompressGlyphTile -_020218C0: - ldr r2, [r4, #0x70] - add r0, r4, #0x0 - add r1, r7, #0x0 - blx r2 - add r1, r5, #0x0 - add r1, #0x80 - add r4, #0x69 - strb r0, [r1, #0x0] - ldrb r0, [r4, #0x0] - add r5, #0x81 - strb r0, [r5, #0x0] - pop {r3-r7, pc} - - thumb_func_start FUN_020218D8 -FUN_020218D8: ; 0x020218D8 - push {r3-r7, lr} - add r4, r1, #0x0 - ldrh r1, [r4, #0x0] - add r5, r0, #0x0 - ldr r0, _0202191C ; =0x0000FFFF - add r7, r2, #0x0 - mov r6, #0x0 - cmp r1, r0 - beq _02021916 -_020218EA: - ldr r0, _02021920 ; =0x0000FFFE - cmp r1, r0 - bne _02021900 - add r0, r4, #0x0 - bl MsgArray_SkipControlCode - add r4, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _0202191C ; =0x0000FFFF - cmp r1, r0 - beq _02021916 -_02021900: - ldr r2, [r5, #0x70] - add r0, r5, #0x0 - sub r1, r1, #0x1 - blx r2 - add r4, r4, #0x2 - add r0, r7, r0 - add r6, r6, r0 - ldrh r1, [r4, #0x0] - ldr r0, _0202191C ; =0x0000FFFF - cmp r1, r0 - bne _020218EA -_02021916: - sub r0, r6, r7 - pop {r3-r7, pc} - nop -_0202191C: .word 0x0000FFFF -_02021920: .word 0x0000FFFE - - thumb_func_start FUN_02021924 -FUN_02021924: ; 0x02021924 - ldr r0, [r0, #0x74] - ldrb r0, [r0, r1] - bx lr - .balign 4 - - thumb_func_start FUN_0202192C -FUN_0202192C: ; 0x0202192C - add r0, #0x68 - ldrb r0, [r0, #0x0] - bx lr - .balign 4 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 94c65983..d0bddd04 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -550,7 +550,7 @@ _02035440: bl FUN_02035718 add r0, r4, #0x0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0x0 bl RemoveWindow add r0, r6, #0x0 @@ -630,7 +630,7 @@ FUN_0203549C: ; 0x0203549C add r0, r4, #0x0 mov r1, #0x1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _02035660 ; =0x00000143 mov r0, #0x0 mov r1, #0x1a @@ -962,7 +962,7 @@ _0203576C: add r0, #0x10 mov r1, #0x1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0x0 add r0, #0x10 mov r1, #0xf @@ -1090,7 +1090,7 @@ _020358CE: add r0, r5, #0x0 add r0, #0x10 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r5, #0x10 add r0, r5, #0x0 bl RemoveWindow @@ -2654,7 +2654,7 @@ FUN_020365BC: ; 0x020365BC bl FUN_02035718 add r0, r4, #0x0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldrb r1, [r4, #0x4] ldr r0, [r4, #0x0] bl ScheduleBgTilemapBufferTransfer @@ -2924,7 +2924,7 @@ FUN_020367E8: ; 0x020367E8 bl FUN_02035718 add r0, r4, #0x0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldrb r1, [r4, #0x4] ldr r0, [r4, #0x0] bl ScheduleBgTilemapBufferTransfer diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index aea1dbf8..d33d8df2 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -682,9 +682,9 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetPartyMonNature .word ScrCmd_FindPartyMonWithNature .word ScrCmd_Unk0214 - .word ScrCmd_Unk0215 - .word ScrCmd_Unk0216 - .word ScrCmd_Unk0217 + .word ScrCmd_ClearAmitySquareSteps + .word ScrCmd_CheckAmitySquareSteps + .word ScrCmd_GetAmitySquareAccessory .word ScrCmd_Unk0218 .word ScrCmd_Unk0219 .word ScrCmd_Unk021A diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s index 68018241..55ee967c 100644 --- a/arm9/asm/unk_02048120.s +++ b/arm9/asm/unk_02048120.s @@ -218,7 +218,7 @@ _020482B2: add r0, r4, #0x0 add r0, #0xc mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r0, #0xc bl RemoveWindow @@ -376,12 +376,12 @@ _0204840C: mvn r0, r0 mov r1, #0x37 mov r2, #0x1 - bl FUN_0200A274 + bl SetBrightness mov r0, #0xf mvn r0, r0 mov r1, #0x3f mov r2, #0x2 - bl FUN_0200A274 + bl SetBrightness add r0, r6, #0x0 add r1, r5, #0x0 bl FUN_02048164 @@ -400,7 +400,7 @@ _02048442: mov r0, #0x0 mov r1, #0x3f mov r2, #0x3 - bl FUN_0200A274 + bl SetBrightness bl FUN_02034E8C add r7, r0, #0x0 ldr r0, [r6, #0xc] diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index 8cf0ee61..6c2c53b9 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -2061,7 +2061,7 @@ _0204992E: add r0, r4, #0x0 add r0, #0x24 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r0, #0x24 bl RemoveWindow @@ -2072,7 +2072,7 @@ _02049946: add r0, r4, #0x0 add r0, #0x24 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r0, #0x24 bl RemoveWindow @@ -2218,14 +2218,14 @@ _02049A64: mov r0, #0x1e sub r2, #0x10 mov r3, #0x19 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] b _02049AB2 _02049A96: mov r0, #0x2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0x0 beq _02049AB2 mov r0, #0x1 @@ -2287,14 +2287,14 @@ _02049B02: sub r1, #0x2e mov r2, #0x0 mov r3, #0x1 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] b _02049BDC _02049B2C: mov r0, #0x2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0x0 beq _02049BDC ldr r0, [r5, #0x68] diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index ae7380b7..e7a0de7c 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -1180,7 +1180,7 @@ _02051798: add r0, r4, #0x0 add r0, #0x14 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x0 ldr r2, [r4, #0x8] add r1, r0, #0x0 @@ -1245,7 +1245,7 @@ FUN_02051810: ; 0x02051810 add r0, r5, #0x0 add r0, #0x14 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 add r0, #0x14 bl ClearWindowTilemapAndCopyToVram @@ -1782,7 +1782,7 @@ _02051C34: mov r1, #0x0 mov r2, #0x1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r1, r5, #0x0 ldr r0, [sp, #0x14] add r1, #0x81 @@ -1891,7 +1891,7 @@ _02051D0A: mov r1, #0x0 mov r2, #0x1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add sp, #0x18 pop {r3-r7, pc} .balign 4 @@ -2006,12 +2006,12 @@ _02051E20: .word 0x000005DC thumb_func_start FUN_02051E24 FUN_02051E24: ; 0x02051E24 - ldr r3, _02051E2C ; =FUN_0200CCF8 + ldr r3, _02051E2C ; =ClearFrameAndWindow1 ldr r0, [r0, #0x7c] mov r1, #0x1 bx r3 .balign 4 -_02051E2C: .word FUN_0200CCF8 +_02051E2C: .word ClearFrameAndWindow1 thumb_func_start FUN_02051E30 FUN_02051E30: ; 0x02051E30 @@ -2202,7 +2202,7 @@ _02051F7C: add r0, r4, #0x0 add r0, #0x8 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r0, #0x8 bl RemoveWindow diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s index ccff7b32..43f1137e 100644 --- a/arm9/asm/unk_0205CE48.s +++ b/arm9/asm/unk_0205CE48.s @@ -1462,7 +1462,7 @@ _0205D95C: beq _0205D9A0 add r0, r4, #0x0 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldrh r0, [r4, #0x16] add r0, r0, #0x1 strh r0, [r4, #0x16] diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index 2813b999..f09d524b 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -1188,7 +1188,7 @@ FUN_02062EC4: ; 0x02062EC4 add r4, r0, #0x0 add r0, #0xe4 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r0, #0xe4 bl ClearWindowTilemapAndCopyToVram @@ -1464,13 +1464,13 @@ _02063094: add r0, #0xd4 mov r1, #0x0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0x0 ldr r2, _02063170 ; =0x000003E2 add r0, #0xe4 mov r1, #0x1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0x0 add r0, #0xe4 mov r1, #0xff @@ -1526,7 +1526,7 @@ FUN_02063178: ; 0x02063178 add r0, r4, #0x0 add r0, #0xd4 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0x0 add r0, #0xd4 bl RemoveWindow @@ -1872,7 +1872,7 @@ FUN_02063430: ; 0x02063430 add r0, #0xd4 mov r1, #0x1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0x0 mov r1, #0x0 bl FUN_020632A4 @@ -1933,7 +1933,7 @@ FUN_020634DC: ; 0x020634DC add r0, r4, #0x0 add r0, #0xd4 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0x0 add r0, #0xd4 bl RemoveWindow diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 8fa3df67..1094df5d 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1119,7 +1119,7 @@ _02065C64: ldr r2, _02065CF4 ; =0x000003D9 mov r1, #0x0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0x0 str r1, [sp, #0x0] mov r2, #0x65 @@ -1139,7 +1139,7 @@ _02065C64: add r0, r5, r0 mov r1, #0x0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x17 lsl r0, r0, #0x4 ldr r0, [r5, r0] @@ -1371,7 +1371,7 @@ _02065E14: ldr r2, _02065EDC ; =0x000003D9 mov r1, #0x0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x17 lsl r0, r0, #0x4 ldr r0, [r5, r0] @@ -1431,7 +1431,7 @@ FUN_02065EF8: ; 0x02065EF8 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x65 lsl r0, r0, #0x2 add r0, r4, r0 @@ -1444,7 +1444,7 @@ FUN_02065EF8: ; 0x02065EF8 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x5d lsl r0, r0, #0x2 add r0, r4, r0 @@ -1488,7 +1488,7 @@ FUN_02065F8C: ; 0x02065F8C lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x16 lsl r0, r0, #0x4 add r1, sp, #0x0 @@ -2055,7 +2055,7 @@ FUN_02066404: ; 0x02066404 add r0, r5, r0 mov r1, #0x1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _02066426: mov r1, #0xd8 str r1, [sp, #0x0] @@ -2147,7 +2147,7 @@ FUN_020664D8: ; 0x020664D8 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x61 lsl r0, r0, #0x2 add r0, r4, r0 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 90e19c61..345ecae1 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -152,7 +152,7 @@ FUN_0206C700: ; 0x0206C700 mov r1, #0x0 mov r2, #0x1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0x0 bl FUN_02006D98 str r0, [r4, #0x18] @@ -1440,7 +1440,7 @@ _0206D2EE: mov r1, #0x0 mov r2, #0x1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4, #0x1c] mov r1, #0x6 mov r2, #0x0 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index c504af1a..07679fac 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -765,12 +765,12 @@ _0206F914: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x8d lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x8d lsl r0, r0, #0x2 add r0, r4, r0 @@ -3665,7 +3665,7 @@ FUN_020710C4: ; 0x020710C4 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xc mov r1, #0x8 bl AllocFromHeap @@ -4734,7 +4734,7 @@ _020718EC: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 bl FUN_02073DB4 ldr r0, _02071940 ; =0x000005A4 @@ -4992,7 +4992,7 @@ _02071ADE: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02071C28 ; =0x000005C8 mov r1, #0x0 ldr r0, [r4, r0] @@ -5112,7 +5112,7 @@ _02071BE0: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02071C28 ; =0x000005C8 mov r1, #0x0 ldr r0, [r4, r0] @@ -5642,7 +5642,7 @@ _02072054: mov r1, #0x1 mov r2, #0xa mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, r7 mov r1, #0xf bl FillWindowPixelBuffer @@ -5936,7 +5936,7 @@ FUN_020722B8: ; 0x020722B8 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -6061,7 +6061,7 @@ _020723D6: mov r1, #0x1 mov r2, #0xa mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #0x89 lsl r0, r0, #0x2 add r0, r5, r0 diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 92121142..521570bf 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -540,7 +540,7 @@ _0207291E: add r0, r5, r0 add r2, r1, #0x0 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xc str r0, [sp, #0x0] mov r0, #0x2 @@ -1559,7 +1559,7 @@ FUN_02073160: ; 0x02073160 mov r1, #0x1 mov r2, #0xa mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _0207317A: add r0, r4, #0x0 mov r1, #0xf @@ -1630,7 +1630,7 @@ FUN_020731E8: ; 0x020731E8 mov r1, #0x1 mov r2, #0xa mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _02073202: add r0, r5, r6 mov r1, #0xf @@ -2041,7 +2041,7 @@ FUN_020734C0: ; 0x020734C0 add r0, r5, r0 add r2, r1, #0x0 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x95 lsl r0, r0, #0x2 add r0, r5, r0 @@ -2236,7 +2236,7 @@ FUN_020736F4: ; 0x020736F4 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x95 lsl r0, r0, #0x2 add r0, r4, r0 diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 8a959bef..f3d54fee 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -35,7 +35,7 @@ FUN_02073DB4: ; 0x02073DB4 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x95 lsl r0, r0, #0x2 add r0, r4, r0 @@ -124,7 +124,7 @@ FUN_02073DF4: ; 0x02073DF4 strb r6, [r2, #0xb] add r2, r1, #0x0 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xc str r0, [sp, #0x0] mov r0, #0x2 @@ -179,7 +179,7 @@ FUN_02073EEC: ; 0x02073EEC add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02074044 ; =0x000006FC mov r1, #0x0 ldr r0, [r5, r0] @@ -311,7 +311,7 @@ _02074018: mov r1, #0x1 mov r2, #0xa mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #0x89 lsl r0, r0, #0x2 add r0, r5, r0 @@ -349,7 +349,7 @@ FUN_0207405C: ; 0x0207405C lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -436,7 +436,7 @@ FUN_020740AC: ; 0x020740AC strb r6, [r2, #0xb] add r2, r1, #0x0 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xc str r0, [sp, #0x0] mov r0, #0x2 @@ -490,7 +490,7 @@ FUN_020741A4: ; 0x020741A4 add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _020741EC ; =0x000006FC mov r1, #0x0 ldr r0, [r5, r0] @@ -679,7 +679,7 @@ FUN_02074340: ; 0x02074340 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -706,7 +706,7 @@ FUN_0207436C: ; 0x0207436C lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -810,7 +810,7 @@ FUN_02074454: ; 0x02074454 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -889,7 +889,7 @@ FUN_02074480: ; 0x02074480 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 bl FUN_02073DB4 add r0, r5, #0x0 @@ -2049,7 +2049,7 @@ FUN_02074E74: ; 0x02074E74 add r6, r1, #0x0 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 bl FUN_02073DB4 ldr r0, _02074F5C ; =0x000005A4 @@ -2177,7 +2177,7 @@ FUN_02074F6C: ; 0x02074F6C lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x22 mov r2, #0x1 @@ -2288,7 +2288,7 @@ _02075046: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 bl FUN_02073DB4 add r0, r5, #0x0 @@ -2368,7 +2368,7 @@ FUN_020750F8: ; 0x020750F8 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0x0 bl FUN_02075118 str r0, [r4, #0x0] @@ -2502,7 +2502,7 @@ _0207520A: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 bl FUN_02073DB4 add r0, r4, #0x0 @@ -2733,7 +2733,7 @@ FUN_020753B4: ; 0x020753B4 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 bl FUN_02073DB4 ldr r0, _020754A8 ; =0x00000B25 @@ -2861,7 +2861,7 @@ FUN_020754D0: ; 0x020754D0 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index 0ad8aad2..eec999c6 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -1729,7 +1729,7 @@ _02076360: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0x0 add r1, r5, #0x0 bl FUN_020709FC @@ -3276,7 +3276,7 @@ _020770DC: add r0, r4, r0 add r2, r1, #0x0 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xc str r0, [sp, #0x0] mov r0, #0x2 @@ -3316,12 +3316,12 @@ _02077130: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x91 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _0207722C ; =0x000006FC mov r1, #0x0 ldr r0, [r5, r0] @@ -3341,12 +3341,12 @@ _0207716A: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x91 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _0207722C ; =0x000006FC mov r1, #0x0 ldr r0, [r5, r0] @@ -3441,7 +3441,7 @@ FUN_02077248: ; 0x02077248 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _020772BC ; =0x00000B25 ldr r2, _020772C0 ; =0x0000070C ldrb r1, [r4, r0] diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index cdf9258d..00a42326 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1020,7 +1020,7 @@ _02077594: mov r1, #0x0 lsl r2, r2, #0x8 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0x0 mov r2, #0x6 ldr r0, _020776B0 ; =0x00000448 @@ -1505,7 +1505,7 @@ _02077982: lsl r0, r0, #0x2 ldr r0, [r4, r0] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData ldr r1, _02077A70 ; =0x000004AC mov r0, #0x12 ldr r1, [r4, r1] @@ -1655,7 +1655,7 @@ _02077ADA: FUN_02077AE8: ; 0x02077AE8 push {r3, lr} bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _02077B00 ; =0x027E0000 ldr r1, _02077B04 ; =0x00003FF8 mov r0, #0x1 @@ -3328,7 +3328,7 @@ FUN_02078894: ; 0x02078894 lsl r2, r2, #0x8 mov r3, #0xa add r5, r0, #0x0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0x0 str r3, [sp, #0x0] str r3, [sp, #0x4] diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index 3d3fd3fe..ea1b0029 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -3095,7 +3095,7 @@ _0207EF10: add r0, r6, #0x0 mov r1, #0x1 mov r3, #0xd - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r6, #0x0 mov r1, #0xf bl FillWindowPixelBuffer diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 4f43b41e..e8299712 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -3370,7 +3370,7 @@ FUN_0208251C: ; 0x0208251C add r5, r1, #0x0 ldr r4, [r5, r0] mov r0, #0x1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0x0 beq _02082594 ldrb r0, [r4, #0xb] @@ -3392,7 +3392,7 @@ FUN_0208251C: ; 0x0208251C mov r1, #0x0 mov r2, #0x4 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _0208259C ; =0x000005F8 bl PlaySE ldrb r0, [r4, #0xa] diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index f5e751fa..66073837 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -549,7 +549,7 @@ FUN_02086784: ; 0x02086784 mov r1, #0x1 mov r2, #0x14 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0x0 mov r1, #0xf bl FillWindowPixelBuffer @@ -711,7 +711,7 @@ _020868DE: ldr r0, [sp, #0x14] mov r2, #0x32 mov r3, #0xd - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x47 str r0, [sp, #0x0] mov r0, #0x2 @@ -733,7 +733,7 @@ FUN_02086960: ; 0x02086960 add r4, r0, #0x0 add r0, #0x28 mov r1, #0x1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0x0 add r0, #0x28 bl ClearWindowTilemapAndCopyToVram diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index b6b6ec25..ee6d24c9 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -545,7 +545,7 @@ _020898B8: add r0, #0x1c add r1, r6, #0x0 mov r3, #0x2 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #0x1 ldr r1, [r5, #0x0] lsl r0, r0, #0xa diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s index 7af6109f..d6f9c061 100644 --- a/arm9/asm/unk_02089960.s +++ b/arm9/asm/unk_02089960.s @@ -472,7 +472,7 @@ _02089CE8: add r0, #0x20 add r1, r6, #0x0 mov r3, #0x2 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #0x1 ldr r1, [r5, #0x0] lsl r0, r0, #0xa diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s deleted file mode 100644 index 4ef386dd..00000000 --- a/arm9/asm/unk_02089D90.s +++ /dev/null @@ -1,188 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .rodata - - .global UNK_020FF3E4 -UNK_020FF3E4: ; 0x020FF3E4 - .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00 - - .global UNK_020FF3EC -UNK_020FF3EC: ; 0x020FF3EC - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF3FC -UNK_020FF3FC: ; 0x020FF3FC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF418 -UNK_020FF418: ; 0x020FF418 - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_02089D90 -FUN_02089D90: ; 0x02089D90 - push {r3-r6, lr} - sub sp, #0x1c - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_0200E3A0 - mov r0, #0x0 - add r1, r0, #0x0 - bl Main_SetVBlankIntrCB - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_02015F34 - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _02089EF4 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0x0] - ldr r2, _02089EF8 ; =0x04001000 - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - mov r0, #0x4 - mov r1, #0x8 - bl SetKeyRepeatTimers - ldr r0, _02089EFC ; =gMain + 0x60 - mov r1, #0x0 - strb r1, [r0, #0x5] - bl GX_SwapDisplay - ldr r3, _02089F00 ; =0x04000050 - mov r0, #0x0 - strh r0, [r3, #0x0] - ldr r2, _02089F04 ; =0x04001050 - sub r3, #0x50 - strh r0, [r2, #0x0] - ldr r1, [r3, #0x0] - ldr r0, _02089F08 ; =0xFFFF1FFF - sub r2, #0x50 - and r1, r0 - str r1, [r3, #0x0] - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - ldr r0, _02089F0C ; =UNK_020FF418 - bl GX_SetBanks - add r0, r4, #0x0 - bl BgConfig_Alloc - add r5, r0, #0x0 - ldr r0, _02089F10 ; =UNK_020FF3EC - bl SetBothScreensModesAndDisable - mov r1, #0x0 - ldr r2, _02089F14 ; =UNK_020FF3FC - add r0, r5, #0x0 - add r3, r1, #0x0 - bl InitBgFromTemplate - add r0, r5, #0x0 - mov r1, #0x0 - bl BgClearTilemapBufferAndCommit - mov r1, #0x0 - str r1, [sp, #0x0] - ldr r2, _02089F18 ; =0x000001F7 - add r0, r5, #0x0 - mov r3, #0x2 - str r4, [sp, #0x4] - bl FUN_0200CB00 - mov r0, #0x0 - mov r1, #0x20 - add r2, r4, #0x0 - bl FUN_02002ED0 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - add r3, r4, #0x0 - bl BG_ClearCharDataRange - ldr r1, _02089F1C ; =0x00006C21 - mov r0, #0x0 - bl BG_SetMaskColor - ldr r1, _02089F1C ; =0x00006C21 - mov r0, #0x4 - bl BG_SetMaskColor - mov r0, #0x1 - mov r1, #0x1a - mov r2, #0x5 - add r3, r4, #0x0 - bl NewMsgDataFromNarc - add r6, r0, #0x0 - mov r0, #0x6 - lsl r0, r0, #0x6 - add r1, r4, #0x0 - bl String_ctor - add r4, r0, #0x0 - bl FUN_0201BD5C - ldr r2, _02089F20 ; =UNK_020FF3E4 - add r0, r5, #0x0 - add r1, sp, #0xc - bl AddWindow - mov r0, #0xd0 - str r0, [sp, #0x0] - mov r0, #0x90 - mov r2, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0xc - mov r1, #0xf - add r3, r2, #0x0 - bl FillWindowPixelRect - ldr r2, _02089F18 ; =0x000001F7 - add r0, sp, #0xc - mov r1, #0x0 - mov r3, #0x2 - bl FUN_0200CCA4 - add r0, r6, #0x0 - mov r1, #0x0 - add r2, r4, #0x0 - bl ReadMsgDataIntoString - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - add r0, sp, #0xc - add r2, r4, #0x0 - add r3, r1, #0x0 - str r1, [sp, #0x8] - bl AddTextPrinterParameterized - add r0, r4, #0x0 - bl String_dtor - bl GX_BothDispOn - mov r0, #0x0 - bl FUN_0200E394 - mov r0, #0x1 - bl FUN_0200E394 - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl FUN_0200A274 - mov r4, #0x1 -_02089EE4: - bl HandleDSLidAction - add r0, r4, #0x0 - add r1, r4, #0x0 - bl OS_WaitIrq - b _02089EE4 - nop -_02089EF4: .word 0xFFFFE0FF -_02089EF8: .word 0x04001000 -_02089EFC: .word gMain + 0x60 -_02089F00: .word 0x04000050 -_02089F04: .word 0x04001050 -_02089F08: .word 0xFFFF1FFF -_02089F0C: .word UNK_020FF418 -_02089F10: .word UNK_020FF3EC -_02089F14: .word UNK_020FF3FC -_02089F18: .word 0x000001F7 -_02089F1C: .word 0x00006C21 -_02089F20: .word UNK_020FF3E4 diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s deleted file mode 100644 index 63f6e77a..00000000 --- a/arm9/asm/unk_02089F24.s +++ /dev/null @@ -1,362 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - .extern UNK_020FF3E4 - .extern UNK_020FF3EC - .extern UNK_020FF3FC - .extern UNK_020FF418 - - .section .rodata - - .global UNK_020FF440 -UNK_020FF440: ; 0x020FF440 - .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00 - - .global UNK_020FF448 -UNK_020FF448: ; 0x020FF448 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF458 -UNK_020FF458: ; 0x020FF458 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF474 -UNK_020FF474: ; 0x020FF474 - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_02089F24 -FUN_02089F24: ; 0x02089F24 - push {r3-r6, lr} - sub sp, #0x1c - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_0200E3A0 - mov r0, #0x0 - add r1, r0, #0x0 - bl Main_SetVBlankIntrCB - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_02015F34 - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _0208A088 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0x0] - ldr r2, _0208A08C ; =0x04001000 - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - mov r0, #0x4 - mov r1, #0x8 - bl SetKeyRepeatTimers - ldr r0, _0208A090 ; =gMain + 0x60 - mov r1, #0x0 - strb r1, [r0, #0x5] - bl GX_SwapDisplay - ldr r3, _0208A094 ; =0x04000050 - mov r0, #0x0 - strh r0, [r3, #0x0] - ldr r2, _0208A098 ; =0x04001050 - sub r3, #0x50 - strh r0, [r2, #0x0] - ldr r1, [r3, #0x0] - ldr r0, _0208A09C ; =0xFFFF1FFF - sub r2, #0x50 - and r1, r0 - str r1, [r3, #0x0] - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - ldr r0, _0208A0A0 ; =UNK_020FF418 - bl GX_SetBanks - add r0, r4, #0x0 - bl BgConfig_Alloc - add r5, r0, #0x0 - ldr r0, _0208A0A4 ; =UNK_020FF3EC - bl SetBothScreensModesAndDisable - mov r1, #0x0 - ldr r2, _0208A0A8 ; =UNK_020FF3FC - add r0, r5, #0x0 - add r3, r1, #0x0 - bl InitBgFromTemplate - add r0, r5, #0x0 - mov r1, #0x0 - bl BgClearTilemapBufferAndCommit - mov r1, #0x0 - str r1, [sp, #0x0] - ldr r2, _0208A0AC ; =0x000001F7 - add r0, r5, #0x0 - mov r3, #0x2 - str r4, [sp, #0x4] - bl FUN_0200CB00 - mov r0, #0x0 - mov r1, #0x20 - add r2, r4, #0x0 - bl FUN_02002ED0 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - add r3, r4, #0x0 - bl BG_ClearCharDataRange - ldr r1, _0208A0B0 ; =0x00006C21 - mov r0, #0x0 - bl BG_SetMaskColor - ldr r1, _0208A0B0 ; =0x00006C21 - mov r0, #0x4 - bl BG_SetMaskColor - mov r0, #0x1 - mov r1, #0x1a - mov r2, #0x5 - add r3, r4, #0x0 - bl NewMsgDataFromNarc - add r6, r0, #0x0 - mov r0, #0x6 - lsl r0, r0, #0x6 - add r1, r4, #0x0 - bl String_ctor - add r4, r0, #0x0 - bl FUN_0201BD5C - ldr r2, _0208A0B4 ; =UNK_020FF3E4 - add r0, r5, #0x0 - add r1, sp, #0xc - bl AddWindow - mov r0, #0xd0 - str r0, [sp, #0x0] - mov r0, #0x90 - mov r2, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0xc - mov r1, #0xf - add r3, r2, #0x0 - bl FillWindowPixelRect - ldr r2, _0208A0AC ; =0x000001F7 - add r0, sp, #0xc - mov r1, #0x0 - mov r3, #0x2 - bl FUN_0200CCA4 - add r0, r6, #0x0 - mov r1, #0x1 - add r2, r4, #0x0 - bl ReadMsgDataIntoString - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - add r0, sp, #0xc - add r2, r4, #0x0 - add r3, r1, #0x0 - str r1, [sp, #0x8] - bl AddTextPrinterParameterized - add r0, r4, #0x0 - bl String_dtor - bl GX_BothDispOn - mov r0, #0x0 - bl FUN_0200E394 - mov r0, #0x1 - bl FUN_0200E394 - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl FUN_0200A274 - mov r4, #0x1 -_0208A078: - bl HandleDSLidAction - add r0, r4, #0x0 - add r1, r4, #0x0 - bl OS_WaitIrq - b _0208A078 - nop -_0208A088: .word 0xFFFFE0FF -_0208A08C: .word 0x04001000 -_0208A090: .word gMain + 0x60 -_0208A094: .word 0x04000050 -_0208A098: .word 0x04001050 -_0208A09C: .word 0xFFFF1FFF -_0208A0A0: .word UNK_020FF418 -_0208A0A4: .word UNK_020FF3EC -_0208A0A8: .word UNK_020FF3FC -_0208A0AC: .word 0x000001F7 -_0208A0B0: .word 0x00006C21 -_0208A0B4: .word UNK_020FF3E4 - - thumb_func_start FUN_0208A0B8 -FUN_0208A0B8: ; 0x0208A0B8 - push {r4-r7, lr} - sub sp, #0x1c - add r4, r0, #0x0 - cmp r1, #0x0 - bne _0208A0C6 - mov r6, #0x1 - b _0208A0C8 -_0208A0C6: - mov r6, #0x0 -_0208A0C8: - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_0200E3A0 - bl FUN_02015EF4 - mov r0, #0x0 - add r1, r0, #0x0 - bl Main_SetVBlankIntrCB - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_02015F34 - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _0208A228 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0x0] - ldr r2, _0208A22C ; =0x04001000 - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - mov r0, #0x4 - mov r1, #0x8 - bl SetKeyRepeatTimers - ldr r0, _0208A230 ; =gMain + 0x60 - mov r1, #0x0 - strb r1, [r0, #0x5] - bl GX_SwapDisplay - ldr r3, _0208A234 ; =0x04000050 - mov r1, #0x0 - strh r1, [r3, #0x0] - ldr r0, _0208A238 ; =0x04001050 - sub r3, #0x50 - strh r1, [r0, #0x0] - ldr r2, [r3, #0x0] - ldr r1, _0208A23C ; =0xFFFF1FFF - sub r0, #0x50 - and r2, r1 - str r2, [r3, #0x0] - ldr r2, [r0, #0x0] - and r1, r2 - str r1, [r0, #0x0] - ldr r0, _0208A240 ; =UNK_020FF474 - bl GX_SetBanks - add r0, r4, #0x0 - bl BgConfig_Alloc - add r5, r0, #0x0 - ldr r0, _0208A244 ; =UNK_020FF448 - bl SetBothScreensModesAndDisable - mov r1, #0x0 - ldr r2, _0208A248 ; =UNK_020FF458 - add r0, r5, #0x0 - add r3, r1, #0x0 - bl InitBgFromTemplate - add r0, r5, #0x0 - mov r1, #0x0 - bl BgClearTilemapBufferAndCommit - mov r1, #0x0 - str r1, [sp, #0x0] - ldr r2, _0208A24C ; =0x000001F7 - add r0, r5, #0x0 - mov r3, #0x2 - str r4, [sp, #0x4] - bl FUN_0200CB00 - mov r0, #0x0 - mov r1, #0x20 - add r2, r4, #0x0 - bl FUN_02002ED0 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - add r3, r4, #0x0 - bl BG_ClearCharDataRange - ldr r1, _0208A250 ; =0x00006C21 - mov r0, #0x0 - bl BG_SetMaskColor - ldr r1, _0208A250 ; =0x00006C21 - mov r0, #0x4 - bl BG_SetMaskColor - mov r0, #0x1 - mov r1, #0x1a - mov r2, #0x6 - add r3, r4, #0x0 - bl NewMsgDataFromNarc - add r7, r0, #0x0 - mov r0, #0x6 - lsl r0, r0, #0x6 - add r1, r4, #0x0 - bl String_ctor - add r4, r0, #0x0 - bl FUN_0201BD5C - ldr r2, _0208A254 ; =UNK_020FF440 - add r0, r5, #0x0 - add r1, sp, #0xc - bl AddWindow - mov r0, #0xd0 - str r0, [sp, #0x0] - mov r0, #0x90 - mov r2, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0xc - mov r1, #0xf - add r3, r2, #0x0 - bl FillWindowPixelRect - ldr r2, _0208A24C ; =0x000001F7 - add r0, sp, #0xc - mov r1, #0x0 - mov r3, #0x2 - bl FUN_0200CCA4 - add r0, r7, #0x0 - add r1, r6, #0x0 - add r2, r4, #0x0 - bl ReadMsgDataIntoString - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - add r0, sp, #0xc - add r2, r4, #0x0 - add r3, r1, #0x0 - str r1, [sp, #0x8] - bl AddTextPrinterParameterized - add r0, r4, #0x0 - bl String_dtor - bl GX_BothDispOn - mov r0, #0x0 - bl FUN_0200E394 - mov r0, #0x1 - bl FUN_0200E394 - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl FUN_0200A274 - mov r4, #0x1 - ; Battery-saver trap -_0208A21A: - bl HandleDSLidAction - add r0, r4, #0x0 - add r1, r4, #0x0 - bl OS_WaitIrq - b _0208A21A - .balign 4 -_0208A228: .word 0xFFFFE0FF -_0208A22C: .word 0x04001000 -_0208A230: .word gMain + 0x60 -_0208A234: .word 0x04000050 -_0208A238: .word 0x04001050 -_0208A23C: .word 0xFFFF1FFF -_0208A240: .word UNK_020FF474 -_0208A244: .word UNK_020FF448 -_0208A248: .word UNK_020FF458 -_0208A24C: .word 0x000001F7 -_0208A250: .word 0x00006C21 -_0208A254: .word UNK_020FF440 diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 8cc2030f..1b590bf4 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -477,7 +477,7 @@ _0208A722: add r0, r4, #0x0 mov r1, #0x0 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _0208A734: ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] @@ -513,7 +513,7 @@ FUN_0208A760: ; 0x0208A760 beq _0208A778 add r0, r4, #0x0 mov r1, #0x0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 _0208A778: pop {r4, pc} .balign 4 @@ -593,18 +593,18 @@ _0208A808: add r0, r7, #0x0 mov r2, #0xa5 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add sp, #0x14 pop {r4-r7, pc} thumb_func_start FUN_0208A820 FUN_0208A820: ; 0x0208A820 - ldr r3, _0208A828 ; =FUN_0200CCF8 + ldr r3, _0208A828 ; =ClearFrameAndWindow1 add r0, #0x28 mov r1, #0x1 bx r3 .balign 4 -_0208A828: .word FUN_0200CCF8 +_0208A828: .word ClearFrameAndWindow1 thumb_func_start FUN_0208A82C FUN_0208A82C: ; 0x0208A82C @@ -681,18 +681,18 @@ _0208A8B8: add r0, r7, #0x0 mov r2, #0xa5 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add sp, #0x14 pop {r4-r7, pc} thumb_func_start FUN_0208A8D0 FUN_0208A8D0: ; 0x0208A8D0 - ldr r3, _0208A8D8 ; =FUN_0200CCF8 + ldr r3, _0208A8D8 ; =ClearFrameAndWindow1 add r0, #0x38 mov r1, #0x1 bx r3 .balign 4 -_0208A8D8: .word FUN_0200CCF8 +_0208A8D8: .word ClearFrameAndWindow1 thumb_func_start FUN_0208A8DC FUN_0208A8DC: ; 0x0208A8DC diff --git a/arm9/global.inc b/arm9/global.inc index d00c06de..ee15a6c2 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -363,12 +363,12 @@ .extern PlaySound .extern FUN_02005CBC .extern FUN_02005CFC -.extern FUN_02005D20 +.extern Chatot_checkCry .extern FUN_02005D48 .extern FUN_02005DFC -.extern FUN_02005E28 -.extern FUN_02005E64 -.extern FUN_02005E6C +.extern Chatot_startRecording +.extern Chatot_stopRecording +.extern Chatot_saveRecording .extern FUN_02005E80 .extern FUN_02005E90 .extern FUN_02005EE0 @@ -514,17 +514,17 @@ .extern FUN_02009E54 .extern FUN_02009E88 .extern FUN_02009EAC -.extern FUN_02009F80 -.extern FUN_02009FA0 +.extern ApplyAndResetOamManagerBuffer +.extern DeinitOamData .extern FUN_02009FD8 -.extern FUN_0200A03C +.extern GetOamManager .extern FUN_0200A064 .extern FUN_0200A06C -.extern FUN_0200A208 -.extern FUN_0200A274 -.extern FUN_0200A2AC -.extern FUN_0200A318 -.extern FUN_0200A344 +.extern StartBrightnessTransition +.extern SetBrightness +.extern InitAllScreenBrightnessData +.extern DoAllScreenBrightnessTransitionStep +.extern IsBrightnessTransitionActive .extern ReadMsgData_NewNarc_ExistingString .extern ReadMsgData_NewNarc_NewString .extern NewMsgDataFromNarc @@ -689,18 +689,18 @@ .extern FUN_0200CABC .extern FUN_0200CAFC .extern FUN_0200CB00 -.extern FUN_0200CCA4 -.extern FUN_0200CCF8 +.extern DrawFrameAndWindow1 +.extern ClearFrameAndWindow1 .extern FUN_0200CD60 .extern FUN_0200CD64 .extern FUN_0200CD68 -.extern FUN_0200D06C -.extern FUN_0200D0BC -.extern FUN_0200D0E0 +.extern DrawWindowFrame2 +.extern DrawFrameAndWindow2 +.extern ClearFrameAndWindow2 .extern FUN_0200D274 .extern FUN_0200D300 -.extern FUN_0200D6F8 -.extern FUN_0200D7A0 +.extern DrawFrameAndWindow3 +.extern ClearFrameAndWindow3 .extern FUN_0200D858 .extern FUN_0200DBFC .extern FUN_0200DC24 @@ -1002,7 +1002,7 @@ .extern FUN_02015CC0 .extern FUN_02015CE0 .extern FUN_02015CF8 -.extern FUN_02015D88 +.extern ConvertRSStringToDPStringInternational .extern FUN_02015E30 .extern FUN_02015E3C .extern FUN_02015E60 @@ -1381,11 +1381,11 @@ .extern FUN_0202135C .extern FUN_02021390 .extern FUN_020213A0 -.extern FUN_02021590 -.extern FUN_020215C8 -.extern FUN_020215E0 -.extern FUN_02021750 -.extern FUN_020218D8 +.extern FontData_new +.extern FontData_delete +.extern FontData_ModeSwitch +.extern TryLoadGlyph +.extern GetStringWidth .extern StringGetWidth .extern StringGetWidth_SingleLine_HandleClearToControlCode .extern String_ctor @@ -3315,9 +3315,9 @@ .extern ScrCmd_Unk01A6 .extern ScrCmd_Unk01A7 .extern ScrCmd_Unk01AD -.extern ScrCmd_Unk0215 -.extern ScrCmd_Unk0216 -.extern ScrCmd_Unk0217 +.extern ScrCmd_ClearAmitySquareSteps +.extern ScrCmd_CheckAmitySquareSteps +.extern ScrCmd_GetAmitySquareAccessory .extern ScrCmd_GiveMon .extern ScrCmd_GetPartyMonSpecies .extern ScrCmd_CheckPartyMonOTID @@ -5467,9 +5467,9 @@ .extern FUN_02089418 .extern FUN_02089444 .extern FUN_0208946C -.extern FUN_02089D90 -.extern FUN_02089F24 -.extern FUN_0208A0B8 +.extern ShowSaveDataReadError +.extern ShowGBACartRemovedError +.extern ShowSaveDataWriteError .extern FUN_0208A258 .extern FUN_0208A300 .extern FUN_0208A320 @@ -6109,14 +6109,42 @@ .extern MOD04_021D8CF0 .extern MOD04_021D8D04 .extern MOD04_021D8F08 +.extern MOD04_021D97F8 +.extern MOD04_021D988C +.extern MOD04_021D98DC +.extern MOD04_021D991C +.extern MOD04_021D9974 +.extern MOD04_021D9ACC +.extern MOD04_021D9C1C .extern MOD04_021D9C2C .extern MOD04_021D9F78 +.extern MOD04_021DA238 .extern MOD04_021DA2F4 .extern MOD04_021DA334 .extern MOD04_021DA388 .extern MOD04_021DA3DC +.extern MOD04_021DAACC .extern MOD04_021DAB68 +.extern MOD04_021DAC98 +.extern MOD04_021DAE4C +.extern MOD04_021DB440 +.extern MOD04_021DB4A4 +.extern MOD04_021DB570 +.extern MOD04_021DB608 +.extern MOD04_021DC794 +.extern MOD04_021DC7AC +.extern MOD04_021DC7F0 +.extern MOD04_021DC870 +.extern MOD04_021DC970 .extern MOD04_021DCA84 +.extern MOD04_021DCF00 +.extern MOD04_021DCFFC +.extern MOD04_021DD26C +.extern MOD04_021DD2C4 +.extern MOD04_021DD36C +.extern MOD04_021DD4FC +.extern MOD04_021DD6B0 +.extern MOD04_021DD6D4 .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 @@ -6124,6 +6152,7 @@ .extern MOD04_021DD844 .extern MOD04_021DD860 .extern MOD04_021DD904 +.extern MOD04_021DD924 .extern MOD04_021DD944 .extern MOD04_021DD968 .extern MOD04_021DD984 @@ -6140,6 +6169,8 @@ .extern MOD04_021DDF40 .extern MOD04_021DDF4C .extern MOD04_021DE05C +.extern MOD04_021DE150 +.extern MOD04_021DE174 .extern MOD04_021DE1F8 .extern MOD04_021DE2D0 .extern MOD04_021DE308 @@ -6149,8 +6180,25 @@ .extern MOD04_021DE3D0 .extern MOD04_021DE404 .extern MOD04_021DE45C +.extern MOD04_021DE89C +.extern MOD04_021DE8C8 +.extern MOD04_021DE9F4 +.extern MOD04_021DEB0C +.extern MOD04_021DEB54 +.extern MOD04_021DF5F0 +.extern MOD04_021DF638 +.extern MOD04_021DF648 +.extern MOD04_021DF6BC +.extern MOD04_021DF704 +.extern MOD04_021DF748 +.extern MOD04_021DF760 +.extern MOD04_021DF7C4 +.extern MOD04_021DF88C +.extern MOD04_021DF8A8 +.extern MOD04_021DF8F4 .extern MOD04_021DF95C .extern MOD04_021DF978 +.extern MOD04_021DF9D4 .extern MOD04_021DFA40 .extern MOD04_021DFAF8 .extern MOD04_021DFB20 @@ -6160,16 +6208,65 @@ .extern MOD04_021DFF74 .extern MOD04_021E0200 .extern MOD04_021E0374 +.extern MOD04_021E05FC +.extern MOD04_021E0E48 +.extern MOD04_021E0EAC +.extern MOD04_021E0F00 +.extern MOD04_021E0F1C +.extern MOD04_021E1034 +.extern MOD04_021E1074 +.extern MOD04_021E1D90 +.extern MOD04_021E1E30 +.extern MOD04_021E1ED4 +.extern MOD04_021E1F18 +.extern MOD04_021E1F84 +.extern MOD04_021E1FE4 +.extern MOD04_021E2068 +.extern MOD04_021E20C8 +.extern MOD04_021E2114 +.extern MOD04_021E2174 +.extern MOD04_021E2228 +.extern MOD04_021E234C .extern MOD04_021E242C .extern MOD04_021E2454 .extern MOD04_021E2578 +.extern MOD04_021E852C +.extern MOD04_021E854C +.extern MOD04_021E85D4 +.extern MOD04_021E86A4 +.extern MOD04_021E874C +.extern MOD04_021E8780 +.extern MOD04_021E87D8 +.extern MOD04_021E8804 +.extern MOD04_021E8830 +.extern MOD04_021E8A50 +.extern MOD04_021E8A74 +.extern MOD04_021E8C08 +.extern MOD04_021E8DC0 +.extern MOD04_021E8E08 +.extern MOD04_021E8EF4 +.extern MOD04_021E8F80 +.extern MOD04_021E9204 +.extern MOD04_021E9464 +.extern MOD04_021E9568 +.extern MOD04_021E9FD0 +.extern MOD04_021EA138 +.extern MOD04_021EA1E0 +.extern MOD04_021EA368 .extern MOD04_021EA530 +.extern MOD04_021EA9C4 +.extern MOD04_021EA9D8 +.extern MOD04_021EAA64 +.extern MOD04_021EAC1C +.extern MOD04_021EAC5C +.extern MOD04_021EACB4 .extern MOD04_021EACF8 .extern MOD04_021EADD8 .extern MOD04_021EADF8 .extern MOD04_021EAE18 .extern MOD04_021EAE38 .extern MOD04_021EAE90 +.extern MOD04_021EAF20 .extern MOD04_021EB044 .extern MOD04_021EB0FC .extern MOD04_021EB3B8 @@ -6178,9 +6275,14 @@ .extern MOD04_021EB59C .extern MOD04_021EB9A4 .extern MOD04_021EB9D8 +.extern MOD04_021EBA28 +.extern MOD04_021EBAB8 .extern MOD04_021EBAE8 .extern MOD04_021EBB80 .extern MOD04_021EBC60 +.extern MOD04_021EE5F4 +.extern MOD04_021EE6A0 +.extern MOD04_021EE898 .extern MOD04_021EEFA8 .extern MOD04_021EEFFC .extern MOD04_021EF06C @@ -6202,6 +6304,87 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.extern MOD04_021F02B8 +.extern MOD04_021F034C +.extern MOD04_021F0580 +.extern MOD04_021F05F4 +.extern MOD04_021F0664 +.extern MOD04_021F06E4 +.extern MOD04_021F0828 +.extern MOD04_021F0864 +.extern MOD04_021F0944 +.extern MOD04_021F09B0 +.extern MOD04_021F0B30 +.extern MOD04_021F0B9C +.extern MOD04_021F0C84 +.extern MOD04_021F0D54 +.extern MOD04_021F0D8C +.extern MOD04_021F0EB0 +.extern MOD04_021F0F18 +.extern MOD04_021F0F64 +.extern MOD04_021F0F94 +.extern MOD04_021FBD00 +.extern MOD04_021FBE5C +.extern MOD04_021FBE7C +.extern MOD04_021FD3C4 +.extern MOD04_021FD3F8 +.extern MOD04_021FD434 +.extern MOD04_021FD43C +.extern MOD04_021FD454 +.extern MOD04_021FD45C +.extern MOD04_021FD488 +.extern MOD04_021FD52C +.extern MOD04_021FD6B0 +.extern MOD04_021FD6BC +.extern MOD04_021FD6C8 +.extern MOD04_021FD6D4 +.extern MOD04_021FD704 +.extern MOD04_021FD71C +.extern MOD04_021FFEB0 +.extern MOD04_021FFF78 +.extern MOD04_02200468 +.extern MOD04_022006B4 +.extern MOD04_022006EC +.extern MOD04_02200D6C +.extern MOD04_022011A8 +.extern MOD04_022021C0 +.extern MOD04_02202220 +.extern MOD04_02202254 +.extern MOD04_02202280 +.extern MOD04_02202308 +.extern MOD04_02202534 +.extern MOD04_02202568 +.extern MOD04_02202580 +.extern MOD04_02202598 +.extern MOD04_022025B0 +.extern MOD04_0220277C +.extern MOD04_02203898 +.extern MOD04_022038BC +.extern MOD04_022038C4 +.extern MOD04_022038E4 +.extern MOD04_02203908 +.extern MOD04_0220394C +.extern MOD04_02203A48 +.extern MOD04_02203BCC +.extern MOD04_02203BD4 +.extern MOD04_02203BE4 +.extern MOD04_02203BF4 +.extern MOD04_02203C04 +.extern MOD04_02203C38 +.extern MOD04_02203C50 +.extern MOD04_02203C7C +.extern MOD04_02203CC4 +.extern MOD04_02203D1C +.extern MOD04_02203E80 +.extern MOD04_02203EA4 +.extern MOD04_022069DC +.extern MOD04_02206E6C +.extern MOD04_02206EFC +.extern MOD04_02207158 +.extern MOD04_02207330 +.extern MOD04_0220733C +.extern MOD04_022074EC +.extern MOD04_022077A8 .extern MOD05_021D74E0 .extern MOD05_021D7A20 .extern MOD05_021D7A28 @@ -6547,6 +6730,8 @@ .extern MOD05_021E85FC .extern MOD05_021E8648 .extern MOD05_021E8698 +.extern MOD05_021E8860 +.extern MOD05_021E88C0 .extern MOD05_021E88E8 .extern MOD05_021E8A68 .extern MOD05_021E8BEC @@ -6596,7 +6781,11 @@ .extern MOD05_021ED644 .extern MOD05_021ED940 .extern MOD05_021ED9B4 +.extern MOD05_021ED9C0 +.extern MOD05_021ED9DC .extern MOD05_021EDA48 +.extern MOD05_021EDB70 +.extern MOD05_021EDB8C .extern MOD05_021EDBC8 .extern MOD05_021EE52C .extern MOD05_021EEF68 @@ -6611,6 +6800,7 @@ .extern MOD05_021EF5E0 .extern MOD05_021EF5FC .extern MOD05_021EF604 +.extern MOD05_021EF618 .extern MOD05_021EF620 .extern MOD05_021EF654 .extern MOD05_021EF824 @@ -6631,16 +6821,35 @@ .extern MOD05_021F04F8 .extern MOD05_021F0514 .extern MOD05_021F1AF8 +.extern MOD05_021F1B0C +.extern MOD05_021F1B2C +.extern MOD05_021F1B58 +.extern MOD05_021F1B60 +.extern MOD05_021F1B8C +.extern MOD05_021F1BD0 +.extern MOD05_021F1BF4 +.extern MOD05_021F1C14 .extern MOD05_021F1C1C +.extern MOD05_021F1C24 .extern MOD05_021F1C30 .extern MOD05_021F1CB8 .extern MOD05_021F1D2C .extern MOD05_021F1D8C .extern MOD05_021F1DC8 .extern MOD05_021F1DFC +.extern MOD05_021F1E2C .extern MOD05_021F1E64 .extern MOD05_021F1EC0 +.extern MOD05_021F1EDC +.extern MOD05_021F1EF4 +.extern MOD05_021F1EF8 +.extern MOD05_021F1EFC +.extern MOD05_021F1F00 +.extern MOD05_021F1F04 +.extern MOD05_021F1F58 .extern MOD05_021F1F78 +.extern MOD05_021F1FC8 +.extern MOD05_021F2060 .extern MOD05_021F2094 .extern MOD05_021F20D8 .extern MOD05_021F20F8 @@ -6651,13 +6860,30 @@ .extern MOD05_021F2E28 .extern MOD05_021F2F48 .extern MOD05_021F2F6C +.extern MOD05_021F2FAC +.extern MOD05_021F2FB8 +.extern MOD05_021F2FC4 .extern MOD05_021F3490 +.extern MOD05_021F3780 +.extern MOD05_021F379C +.extern MOD05_021F3810 .extern MOD05_021F38B8 .extern MOD05_021F3A18 .extern MOD05_021F3AB4 .extern MOD05_021F3B4C .extern MOD05_021F3B7C +.extern MOD05_021F3BC0 +.extern MOD05_021F3C30 +.extern MOD05_021F3C60 +.extern MOD05_021F3C68 .extern MOD05_021F3DA4 +.extern MOD05_021F4328 +.extern MOD05_021F4344 +.extern MOD05_021F43C0 +.extern MOD05_021F43CC +.extern MOD05_021F43E4 +.extern MOD05_021F4444 +.extern MOD05_021F4454 .extern MOD05_021F4498 .extern MOD05_021F44D8 .extern MOD05_021F450C @@ -6680,6 +6906,7 @@ .extern MOD05_021F4C74 .extern MOD05_021F4C88 .extern MOD05_021F4C9C +.extern MOD05_021F4CA8 .extern MOD05_021F4CBC .extern MOD05_021F4CD4 .extern MOD05_021F4CE4 @@ -6715,6 +6942,7 @@ .extern MOD05_021F5A5C .extern MOD05_021F5A74 .extern MOD05_021F5A90 +.extern MOD05_021F5AA4 .extern MOD05_021F5AB8 .extern MOD05_021F5AE4 .extern MOD05_021F5B9C @@ -7386,6 +7614,7 @@ .extern MOD20_0225298C .extern MOD20_022529A0 .extern MOD20_022529B4 +.extern MOD20_02252B1C .extern MOD20_02252B28 .extern MOD20_02252B48 .extern MOD20_02252B68 @@ -7397,11 +7626,17 @@ .extern MOD20_02252C38 .extern MOD20_02252C3C .extern MOD20_02252C40 +.extern MOD20_02252C44 +.extern MOD20_02252C5C .extern MOD20_02252D24 .extern MOD20_02252D34 .extern MOD20_02252D7C .extern MOD20_02252DB4 .extern MOD20_02252DEC +.extern MOD20_02252E18 +.extern MOD20_02252E80 +.extern MOD20_02252EA4 +.extern MOD20_02252EB0 .extern MOD20_022536F4 .extern MOD20_02253794 .extern MOD20_022537B8 @@ -7418,10 +7653,14 @@ .extern MOD20_022539C4 .extern MOD20_02253A04 .extern MOD20_02253AA4 +.extern MOD20_02253BA4 +.extern MOD20_02253C4C +.extern MOD20_02253C78 .extern MOD20_02253E74 .extern MOD20_02253F14 .extern MOD20_02253F28 .extern MOD20_02253F44 +.extern MOD20_02253F54 .extern MOD20_02253F64 .extern MOD20_02253F6C .extern MOD20_02253F78 @@ -7434,8 +7673,10 @@ .extern MOD20_02254014 .extern MOD20_02254130 .extern MOD20_02254198 +.extern MOD20_022541B4 .extern MOD20_022542AC .extern MOD20_022542C0 +.extern MOD20_022542CC .extern MOD20_02254420 .extern MOD20_02254460 .extern MOD20_02254488 @@ -8206,10 +8447,39 @@ .extern TP_SetCalibrateParam .extern TP_WaitBusy .extern TP_WaitRawResult +.extern UNK04_0220BEB4 +.extern UNK04_0220C684 +.extern UNK04_0220C7D0 +.extern UNK04_0220C920 +.extern UNK04_0220CA08 +.extern UNK04_0220CACC +.extern UNK04_0220CBB4 +.extern UNK04_0220CCD4 +.extern UNK04_0220CDEC +.extern UNK04_0220CF18 +.extern UNK04_0220D0CC +.extern UNK04_0220D1A8 +.extern UNK04_0220F018 +.extern UNK04_02210480 +.extern UNK04_02210484 +.extern UNK04_02210488 +.extern UNK04_0221048C +.extern UNK04_022104F8 +.extern UNK04_022104FC +.extern UNK04_02210F94 +.extern UNK04_02211094 .extern UNK05_021F64C8 +.extern UNK05_021F8B84 +.extern UNK05_021F8B88 +.extern UNK05_021F8B90 .extern UNK05_021F9080 +.extern UNK05_021F9094 +.extern UNK05_021F90E4 .extern UNK05_021F9194 .extern UNK05_021F9494 +.extern UNK05_021F9A9C +.extern UNK05_021FA0AC +.extern UNK05_021FAC6C .extern UNK05_021FC718 .extern UNK05_021FC79C .extern UNK05_021FC820 diff --git a/arm9/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h index 79588fe9..b1d7b5ea 100644 --- a/arm9/lib/NitroSDK/include/SPI_mic.h +++ b/arm9/lib/NitroSDK/include/SPI_mic.h @@ -1,6 +1,20 @@ #ifndef NITRO_SPI_MIC_H_ #define NITRO_SPI_MIC_H_ +struct MIC_SamplingData +{ + int unk00; + void *unk04; + int unk08; + int unk0c; + int unk10; + int unk14; + int unk18; +}; + void MIC_Init(void); +int MIC_StartAutoSampling(struct MIC_SamplingData *data); +int MIC_StopAutoSampling(void); +int MIC_DoSamplingAsync(int param0, int param1, int param2, int param3); #endif //NITRO_SPI_MIC_H_ diff --git a/arm9/lib/libnns/include/NNS_g2d.h b/arm9/lib/libnns/include/NNS_g2d.h index f7eed210..d65f0430 100644 --- a/arm9/lib/libnns/include/NNS_g2d.h +++ b/arm9/lib/libnns/include/NNS_g2d.h @@ -200,6 +200,11 @@ typedef struct NNSG2dAnimBankData } NNSG2dAnimBankData; +typedef struct NNSG2dOamManager +{ + u8 unk00[0x1c]; +} NNSG2dOamManager; + BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData); @@ -209,4 +214,11 @@ BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompre BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank); BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank); +BOOL NNS_G2dGetNewOamManagerInstance( + NNSG2dOamManager *oamManager, u16 param1, u16 param2, u16 param3, u16 param4, u32 param5); +void NNS_G2dApplyAndResetOamManagerBuffer(NNSG2dOamManager *oamManager); +u32 NNS_G2dEntryOamManagerOamWithAffineIdx( + NNSG2dOamManager *oamManager, u32 param1, u32 param2); +u32 NNS_G2dEntryOamManagerAffine(NNSG2dOamManager *oamManager, u32 param1); + #endif //NNSYS_NNS_G2D_H diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 259f9f52..71bf3cb8 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,20374 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021D8D18 -MOD04_021D8D18: ; 0x021D8D18 - stmdb sp!, {r4, lr} - ldr r2, _021D8D58 ; =UNK04_02210468 - ldr r1, _021D8D5C ; =0x000013D8 - ldr r2, [r2] - mov r4, r0 - add r0, r2, r1 - bl OS_LockMutex - ldr r2, _021D8D58 ; =UNK04_02210468 - ldr r1, _021D8D5C ; =0x000013D8 - ldr r0, [r2] - add r0, r0, #0x1000 - str r4, [r0, #4] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_021D8D58: .word UNK04_02210468 -_021D8D5C: .word 0x000013D8 - arm_func_end MOD04_021D8D18 - - arm_func_start MOD04_021D8D60 -MOD04_021D8D60: ; 0x021D8D60 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x98 - ldr r4, _021D8EE0 ; =UNK04_0221046C - mov r3, #0 - ldr r5, [r4, #4] - ldr ip, [r4] - cmp r5, r3 - mov r5, r0 - mov r6, r1 - mov r4, r2 - cmpeq ip, r3 - bne _021D8DC0 - ldr r0, _021D8EE4 ; =UNK04_0220BEF8 - bl strlen - mov r3, r0 - ldr r1, _021D8EE8 ; =UNK04_0220BF04 - ldr r2, _021D8EE4 ; =UNK04_0220BEF8 - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021D8E18 - add sp, sp, #0x98 - mov r0, #8 - ldmia sp!, {r4, r5, r6, pc} -_021D8DC0: - ldr r0, _021D8EEC ; =UNK04_0220BF0C - bl strlen - mov r3, r0 - ldr r1, _021D8EE8 ; =UNK04_0220BF04 - ldr r2, _021D8EEC ; =UNK04_0220BF0C - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl strlen - mov r3, r0 - ldr r1, _021D8EF0 ; =UNK04_0220BF14 - mov r0, r5 - mov r2, r6 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8E18: - ldr r1, _021D8EE0 ; =UNK04_0221046C - add r0, sp, #0 - bl MOD04_021D9F78 - cmp r0, #0 - addeq sp, sp, #0x98 - moveq r0, #5 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021D8EF4 ; =UNK04_0221048C - add r1, sp, #0 - ldr r2, [r0] - mov r0, r5 - bl MOD04_021D9C2C - cmp r0, #0 - addeq sp, sp, #0x98 - moveq r0, #8 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021D8EF8 ; =UNK04_02210460 - ldr r0, [r0] - cmp r0, #1 - bne _021D8E94 - ldr r0, _021D8EFC ; =UNK04_0220BF1C - bl strlen - mov r3, r0 - ldr r1, _021D8F00 ; =UNK04_0220BF20 - ldr r2, _021D8EFC ; =UNK04_0220BF1C - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8E94: - mov r0, r4 - bl wcslen - cmp r0, #0 - beq _021D8ED4 - mov r0, r4 - bl wcslen - mov r3, r0 - ldr r1, _021D8F04 ; =UNK04_0220BF28 - mov r0, r5 - mov r2, r4 - mov r3, r3, lsl #1 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8ED4: - mov r0, #0 - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021D8EE0: .word UNK04_0221046C -_021D8EE4: .word UNK04_0220BEF8 -_021D8EE8: .word UNK04_0220BF04 -_021D8EEC: .word UNK04_0220BF0C -_021D8EF0: .word UNK04_0220BF14 -_021D8EF4: .word UNK04_0221048C -_021D8EF8: .word UNK04_02210460 -_021D8EFC: .word UNK04_0220BF1C -_021D8F00: .word UNK04_0220BF20 -_021D8F04: .word UNK04_0220BF28 - arm_func_end MOD04_021D8D60 - - arm_func_start MOD04_021D8F08 -MOD04_021D8F08: ; 0x021D8F08 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021D91BC ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - str r1, [sp] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D91C0 ; =UNK04_0220BF34 - bl MOD04_021DA388 - str r0, [sp] - cmp r0, #0 - beq _021D8F40 - bl MOD04_021DCA84 -_021D8F40: - ldr r0, _021D91BC ; =UNK04_02210468 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D91C4 ; =errno - str r2, [sp] - str r2, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D91C8 ; =UNK04_0220BF3C - bl MOD04_021DA388 - bl atol - ldr r1, _021D91C4 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021D8F9C - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91CC ; =0x00004E85 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xc - ldmia sp!, {r4, r5, pc} -_021D8F9C: - cmp r0, #0xc8 - beq _021D8FC8 - ldr r2, _021D91BC ; =UNK04_02210468 - ldr r1, _021D91D0 ; =0x000059D8 - ldr r2, [r2] - add r1, r0, r1 - add r0, r2, #0x1000 - str r1, [r0, #8] - add sp, sp, #4 - mov r0, #0x12 - ldmia sp!, {r4, r5, pc} -_021D8FC8: - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91D4 ; =0x0000100C - ldr r3, [r0] - ldr r1, _021D91D8 ; =UNK04_0220BF48 - add r0, r3, #0x1000 - ldr r0, [r0, #0x314] - add r2, r3, r2 - mov r3, #4 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021D9014 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91CC ; =0x00004E85 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xe - ldmia sp!, {r4, r5, pc} -_021D9014: - ldr r1, _021D91BC ; =UNK04_02210468 - ldr r0, _021D91D4 ; =0x0000100C - ldr r2, [r1] - add r1, sp, #0 - add r0, r2, r0 - mov r2, #0xa - bl strtol - ldr r2, _021D91BC ; =UNK04_02210468 - ldr r1, _021D91D4 ; =0x0000100C - ldr r5, [r2] - mov r4, r0 - add r0, r5, r1 - bl strlen - ldr r1, _021D91D4 ; =0x0000100C - ldr r2, [sp] - add r1, r5, r1 - add r0, r1, r0 - cmp r2, r0 - ldrne r1, _021D91CC ; =0x00004E85 - addne r0, r5, #0x1000 - strne r1, [r0, #8] - addne sp, sp, #4 - movne r0, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D91DC ; =0x00004E20 - add r1, r5, #0x1000 - add r0, r4, r0 - str r0, [r1, #8] - cmp r4, #0x64 - bge _021D91B0 - ldr ip, _021D91BC ; =UNK04_02210468 - mov r0, #0 - ldr r1, [ip] - ldr r5, _021D91E0 ; =0x00001052 - add r1, r1, #0x1000 - strb r0, [r1, #0x52] - ldr r2, [ip] - ldr r1, _021D91E4 ; =UNK04_0220BF54 - add r2, r2, #0x1000 - strb r0, [r2, #0x1f] - ldr r2, [ip] - ldr r3, _021D91E8 ; =0x0000012D - add r2, r2, #0x1000 - strb r0, [r2, #0x17f] - ldr r2, [ip] - add r2, r2, #0x1000 - strb r0, [r2, #0x10] - ldr r2, [ip] - add r2, r2, #0x1000 - strb r0, [r2, #0x188] - ldr r2, [ip] - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - add r2, r2, r5 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91EC ; =0x0000101F - ldr r3, [r0] - ldr r1, _021D91F0 ; =UNK04_0220BF5C - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0x33 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91F4 ; =0x0000117F - ldr r3, [r0] - ldr r1, _021D91F8 ; =UNK04_0220BF64 - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #9 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91FC ; =0x00001010 - ldr r3, [r0] - ldr r1, _021D9200 ; =UNK04_0220BF70 - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0xf - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D9204 ; =0x00001188 - ldr r3, [r0] - ldr r1, _021D9208 ; =UNK04_0220BF7C - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0x41 - bl MOD04_021DA2F4 - ldr r0, _021D91BC ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - cmp r4, #0x28 - add r0, r0, #0x1000 - strb r1, [r0, #0x1b3] - ldrne r0, _021D920C ; =UNK04_02210464 - movne r1, #1 - strne r1, [r0] - ldreq r0, _021D920C ; =UNK04_02210464 - moveq r1, #2 - streq r1, [r0] -_021D91B0: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D91BC: .word UNK04_02210468 -_021D91C0: .word UNK04_0220BF34 -_021D91C4: .word errno -_021D91C8: .word UNK04_0220BF3C -_021D91CC: .word 0x00004E85 -_021D91D0: .word 0x000059D8 -_021D91D4: .word 0x0000100C -_021D91D8: .word UNK04_0220BF48 -_021D91DC: .word 0x00004E20 -_021D91E0: .word 0x00001052 -_021D91E4: .word UNK04_0220BF54 -_021D91E8: .word 0x0000012D -_021D91EC: .word 0x0000101F -_021D91F0: .word UNK04_0220BF5C -_021D91F4: .word 0x0000117F -_021D91F8: .word UNK04_0220BF64 -_021D91FC: .word 0x00001010 -_021D9200: .word UNK04_0220BF70 -_021D9204: .word 0x00001188 -_021D9208: .word UNK04_0220BF7C -_021D920C: .word UNK04_02210464 - arm_func_end MOD04_021D8F08 - - arm_func_start MOD04_021D9210 -MOD04_021D9210: ; 0x021D9210 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021D93F4 ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - add r2, r0, #0x1000 - ldr r0, [r2, #0x314] - ldr r5, [r2, #0x20c] - ldr r4, [r2, #0x210] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021D9260 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xe - ldmia sp!, {r4, r5, pc} -_021D9260: - bl MOD04_021D8F08 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0xe - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r1, _021D93F8 ; =0x00004E84 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r2, [r0, #8] - cmp r2, r1 - bge _021D9334 - ldr r0, _021D93FC ; =0x00004E22 - cmp r2, r0 - bne _021D9328 - ldr r0, _021D9400 ; =UNK04_0220BF88 - ldr r1, _021D9404 ; =0x0000071F - blx r5 - movs r5, r0 - bne _021D92D0 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_021D92D0: - add r1, r5, #0x1f - ldr r0, _021D9408 ; =UNK04_0221046C - bic r1, r1, #0x1f - bl FUN_02096710 - cmp r0, #1 - beq _021D9318 - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xf - ldmia sp!, {r4, r5, pc} -_021D9318: - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 -_021D9328: - add sp, sp, #4 - mov r0, #0x15 - ldmia sp!, {r4, r5, pc} -_021D9334: - ldr r0, _021D9410 ; =0x00004E88 - cmp r2, r0 - beq _021D9350 - ldr r0, _021D9414 ; =0x00004E8C - cmp r2, r0 - beq _021D9378 - b _021D93E8 -_021D9350: - ldr r0, _021D9408 ; =UNK04_0221046C - bl FUN_02096570 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9410 ; =0x00004E88 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x10 - ldmia sp!, {r4, r5, pc} -_021D9378: - ldr r0, _021D9400 ; =UNK04_0220BF88 - mov r1, #0x700 - blx r5 - movs r5, r0 - bne _021D93AC - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9414 ; =0x00004E8C - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x11 - ldmia sp!, {r4, r5, pc} -_021D93AC: - add r0, r5, #0x1f - bic r0, r0, #0x1f - bl DWCi_AUTH_MakeWiFiID - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9414 ; =0x00004E8C - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x11 - ldmia sp!, {r4, r5, pc} -_021D93E8: - mov r0, #0x12 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D93F4: .word UNK04_02210468 -_021D93F8: .word 0x00004E84 -_021D93FC: .word 0x00004E22 -_021D9400: .word UNK04_0220BF88 -_021D9404: .word 0x0000071F -_021D9408: .word UNK04_0221046C -_021D940C: .word UNK04_0220BF98 -_021D9410: .word 0x00004E88 -_021D9414: .word 0x00004E8C - arm_func_end MOD04_021D9210 - - arm_func_start MOD04_021D9418 -MOD04_021D9418: ; 0x021D9418 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, #0 - mov r0, #1 - ldr r7, _021D96D4 ; =0x00001388 - ldr fp, _021D96D8 ; =0x000082EA - ldr r5, _021D96DC ; =UNK04_02210468 - ldr r4, _021D96E0 ; =0x000013D8 - mov r6, sb - str sb, [sp, #8] - str sb, [sp, #0xc] - str r0, [sp, #4] -_021D9448: - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021D9470 - ldr r0, _021D96E4 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021D9470: - ldr r0, [r5] - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #8 - beq _021D9518 - ldr r0, _021D96E8 ; =0x00004E84 - str r0, [r1, #8] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #7 - bne _021D94C0 - mov r0, #0x14 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94C0: - cmp sb, #2 - ble _021D9508 - cmp r0, #2 - bne _021D94E0 - mov r0, #9 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94E0: - cmp r0, #3 - bne _021D94F8 - mov r0, #0xb - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94F8: - mov r0, #0xd - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9508: - ldr r0, [sp, #4] - add sb, sb, #1 - str r0, [sp] - b _021D9598 -_021D9518: - bl MOD04_021D9210 - cmp r0, #0x10 - beq _021D9544 - cmp r0, #0x11 - beq _021D956C - cmp r0, #0x15 - bne _021D9578 - mov r0, #0x15 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9544: - cmp sb, #2 - ble _021D955C - mov r0, #0x10 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D955C: - ldr r0, [sp, #8] - add sb, sb, #1 - str r0, [sp] - b _021D9598 -_021D956C: - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9578: - cmp sb, #2 - blt _021D958C - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D958C: - ldr r0, [sp, #4] - add sb, sb, #1 - str r0, [sp] -_021D9598: - bl OS_GetTick - mov r8, r0 - mov sl, r1 - bl OS_GetTick - subs r2, r0, r8 - sbc r0, r1, sl - mov r1, r0, lsl #6 - ldr r3, [sp, #0xc] - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, fp - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r7 - bhs _021D965C -_021D95D4: - ldr r0, [r5] - add r0, r0, r4 - bl OS_LockMutex - ldr r2, [r5] - add r1, r2, #0x1000 - ldr r0, [r1, #0x3f0] - cmp r0, #1 - bne _021D961C - ldr r2, _021D96E8 ; =0x00004E84 - ldr r0, _021D96E0 ; =0x000013D8 - str r2, [r1, #8] - ldr r1, [r5] - add r0, r1, r0 - bl OS_UnlockMutex - mov r0, #0x14 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D961C: - add r0, r2, r4 - bl OS_UnlockMutex - mov r0, r7 - bl OS_Sleep - bl OS_GetTick - subs r2, r0, r8 - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, fp - mov r3, r6 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r7 - blo _021D95D4 -_021D965C: - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - bl MOD04_021DAE4C - ldr r0, [r5] - add r0, r0, r4 - bl OS_LockMutex - ldr r0, [sp] - bl MOD04_021D96EC - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r2, [r5] - add r1, r2, #0x1000 - ldr r0, [r1, #4] - cmp r0, #0 - beq _021D96C0 - ldr r2, _021D96E8 ; =0x00004E84 - ldr r0, _021D96E0 ; =0x000013D8 - str r2, [r1, #8] - ldr r1, [r5] - add r0, r1, r0 - bl OS_UnlockMutex - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D96C0: - add r0, r2, r4 - bl OS_UnlockMutex - b _021D9448 - arm_func_end MOD04_021D9418 - - arm_func_start MOD04_021D96CC -MOD04_021D96CC: ; 0x021D96CC - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021D96D4: .word 0x00001388 -_021D96D8: .word 0x000082EA -_021D96DC: .word UNK04_02210468 -_021D96E0: .word 0x000013D8 -_021D96E4: .word 0x00001B34 -_021D96E8: .word 0x00004E84 - arm_func_end MOD04_021D96CC - - arm_func_start MOD04_021D96EC -MOD04_021D96EC: ; 0x021D96EC - stmdb sp!, {r4, lr} - ldr r1, _021D97E0 ; =UNK04_0220BEB4 - mov r4, r0 - ldr r0, [r1] - ldr r1, _021D97E4 ; =UNK04_0220BFA4 - bl strcmp - cmp r0, #0 - ldrne r0, _021D97E0 ; =UNK04_0220BEB4 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _021D97E8 ; =UNK04_02210468 - ldr r1, _021D97E0 ; =UNK04_0220BEB4 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r2, [r0, #0x20c] - str r2, [r1, #0xc] - ldr r2, [r0, #0x210] - str r2, [r1, #0x10] - ldr r0, [r0, #0x314] - bl MOD04_021DB608 - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - cmp r4, #1 - bne _021D9758 - ldr r0, _021D97EC ; =UNK04_0221046C - bl DWCi_BM_GetWiFiInfo -_021D9758: - ldr r0, _021D97E8 ; =UNK04_02210468 - ldr r2, _021D97F0 ; =0x000011CC - ldr r3, [r0] - add r0, r3, #0x1000 - ldr r0, [r0, #0x314] - add r1, r3, #0x1200 - add r2, r3, r2 - bl MOD04_021D8D60 - ldr r2, _021D97E8 ; =UNK04_02210468 - ldr r1, [r2] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2] - add r0, r0, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, [r0, #0x314] - bl MOD04_021DB570 - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, _021D97F4 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _021D97E8 ; =UNK04_02210468 - ldr r2, [r1] - sub r1, r0, #1 - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - bl MOD04_021DB4A4 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_021D97E0: .word UNK04_0220BEB4 -_021D97E4: .word UNK04_0220BFA4 -_021D97E8: .word UNK04_02210468 -_021D97EC: .word UNK04_0221046C -_021D97F0: .word 0x000011CC -_021D97F4: .word OSi_ThreadInfo - arm_func_end MOD04_021D96EC - - arm_func_start MOD04_021D97F8 -MOD04_021D97F8: ; 0x021D97F8 - stmdb sp!, {r4, lr} - ldr r1, _021D9874 ; =UNK04_02210468 - mov r4, r0 - ldr r1, [r1] - cmp r1, #0 - bne _021D981C - mov r1, #0 - mov r2, #0x1c4 - bl MI_CpuFill8 -_021D981C: - ldr r1, _021D9874 ; =UNK04_02210468 - ldr r0, _021D9878 ; =0x00001008 - ldr r2, [r1] - mov r1, r4 - add r0, r2, r0 - mov r2, #0x1c4 - bl MI_CpuCopy8 - ldr r1, [r4] - ldr r0, _021D987C ; =0x00004E20 - cmp r1, r0 - blt _021D9854 - ldr r0, _021D9880 ; =0x00007530 - cmp r1, r0 - blt _021D985C -_021D9854: - ldr r0, _021D9884 ; =0x00005206 - str r0, [r4] -_021D985C: - ldr r1, [r4] - ldr r0, _021D9888 ; =0x00004E84 - cmp r1, r0 - rsbge r0, r1, #0 - strge r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_021D9874: .word UNK04_02210468 -_021D9878: .word 0x00001008 -_021D987C: .word 0x00004E20 -_021D9880: .word 0x00007530 -_021D9884: .word 0x00005206 -_021D9888: .word 0x00004E84 - arm_func_end MOD04_021D97F8 - - arm_func_start MOD04_021D988C -MOD04_021D988C: ; 0x021D988C - stmdb sp!, {r4, lr} - ldr r0, _021D98D4 ; =UNK04_02210468 - ldr r1, [r0] - cmp r1, #0 - moveq r0, #0x16 - ldmeqia sp!, {r4, pc} - ldr r0, _021D98D8 ; =0x000013D8 - add r0, r1, r0 - bl OS_LockMutex - ldr r1, _021D98D4 ; =UNK04_02210468 - ldr r0, _021D98D8 ; =0x000013D8 - ldr r2, [r1] - add r1, r2, #0x1000 - add r0, r2, r0 - ldr r4, [r1, #4] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021D98D4: .word UNK04_02210468 -_021D98D8: .word 0x000013D8 - arm_func_end MOD04_021D988C - - arm_func_start MOD04_021D98DC -MOD04_021D98DC: ; 0x021D98DC - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021D9914 ; =UNK04_02210468 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9918 ; =0x00001318 - add r0, r1, r0 - bl OS_JoinThread - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021D9914: .word UNK04_02210468 -_021D9918: .word 0x00001318 - arm_func_end MOD04_021D98DC - - arm_func_start MOD04_021D991C -MOD04_021D991C: ; 0x021D991C - stmdb sp!, {r4, lr} - ldr r0, _021D996C ; =UNK04_02210468 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - ldr r4, [r1, #0x210] - cmp r0, #0 - beq _021D9948 - bl MOD04_021DAE4C -_021D9948: - ldr r1, _021D996C ; =UNK04_02210468 - ldr r0, _021D9970 ; =UNK04_0220BFC4 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021D996C ; =UNK04_02210468 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021D996C: .word UNK04_02210468 -_021D9970: .word UNK04_0220BFC4 - arm_func_end MOD04_021D991C - - arm_func_start MOD04_021D9974 -MOD04_021D9974: ; 0x021D9974 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9A10 ; =0x000013D8 - add r0, r1, r0 - bl OS_LockMutex - ldr r2, _021D9A0C ; =UNK04_02210468 - mov r3, #1 - ldr r0, [r2] - ldr r1, _021D9A10 ; =0x000013D8 - add r0, r0, #0x1000 - str r3, [r0, #0x3f0] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - cmp r0, #0 - beq _021D99DC - bl MOD04_021DB440 -_021D99DC: - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9A14 ; =0x00001318 - add r0, r1, r0 - bl OS_JoinThread - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021D9A0C: .word UNK04_02210468 -_021D9A10: .word 0x000013D8 -_021D9A14: .word 0x00001318 - arm_func_end MOD04_021D9974 - - arm_func_start MOD04_021D9A18 -MOD04_021D9A18: ; 0x021D9A18 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r1, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC0 ; =0x000013D8 - ldr r1, [r1] - add r0, r1, r0 - bl OS_InitMutex - ldr r1, _021D9ABC ; =UNK04_02210468 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r1, [r1] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - beq _021D9A74 - ldr r0, _021D9AC4 ; =0x00001318 - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} -_021D9A74: - ldr r2, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC4 ; =0x00001318 - ldr lr, [r2] - mov r3, #0x1000 - ldr r1, _021D9AC8 ; =MOD04_021D9418 - str r3, [sp] - mov ip, #0x10 - add r0, lr, r0 - add r3, lr, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r1, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC4 ; =0x00001318 - ldr r1, [r1] - add r0, r1, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021D9ABC: .word UNK04_02210468 -_021D9AC0: .word 0x000013D8 -_021D9AC4: .word 0x00001318 -_021D9AC8: .word MOD04_021D9418 - arm_func_end MOD04_021D9A18 - - arm_func_start MOD04_021D9ACC -MOD04_021D9ACC: ; 0x021D9ACC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021D9BFC ; =UNK04_02210468 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - addne sp, sp, #4 - ldr r2, [r5, #0x40] - movne r0, #2 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D9C00 ; =UNK04_0220BFD4 - ldr r1, _021D9C04 ; =0x000013F4 - blx r2 - ldr r1, _021D9BFC ; =UNK04_02210468 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021D9C04 ; =0x000013F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021D9BFC ; =UNK04_02210468 - ldr r2, _021D9C08 ; =0x00001008 - ldr r0, [r1] - ldr r3, _021D9C0C ; =UNK04_02210464 - add r0, r0, #0x1000 - str r4, [r0, #0x314] - ldr r0, [r1] - mov r1, #0 - add r0, r0, r2 - mov r2, #0x1c4 - str r1, [r3] - bl MI_CpuFill8 - ldr r2, _021D9BFC ; =UNK04_02210468 - ldr r3, _021D9C10 ; =0x00004E84 - ldr r0, [r2] - ldr r1, _021D9C14 ; =0x000011CC - add r0, r0, #0x1000 - str r3, [r0, #8] - ldr lr, [r2] - mov r4, #4 - add ip, lr, r1 -_021D9B7C: - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _021D9B7C - ldmia r5, {r0, r1} - stmia ip, {r0, r1} - add r0, lr, #0x1100 - mov r2, #0 - strh r2, [r0, #0xfe] - ldr r1, _021D9BFC ; =UNK04_02210468 - mov r0, #1 - ldr r1, [r1] - add r1, r1, #0x1000 - strb r2, [r1, #0x20b] - bl MOD04_021D96EC - ldr r2, _021D9BFC ; =UNK04_02210468 - ldr r1, [r2] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D9C18 ; =UNK04_02210460 - mov r1, #0 - str r1, [r0] - bl MOD04_021D9A18 - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D9BFC: .word UNK04_02210468 -_021D9C00: .word UNK04_0220BFD4 -_021D9C04: .word 0x000013F4 -_021D9C08: .word 0x00001008 -_021D9C0C: .word UNK04_02210464 -_021D9C10: .word 0x00004E84 -_021D9C14: .word 0x000011CC -_021D9C18: .word UNK04_02210460 - arm_func_end MOD04_021D9ACC - - arm_func_start MOD04_021D9C1C -MOD04_021D9C1C: ; 0x021D9C1C - ldr r1, _021D9C28 ; =UNK04_0220BEB4 - str r0, [r1] - bx lr - .align 2, 0 -_021D9C28: .word UNK04_0220BEB4 - arm_func_end MOD04_021D9C1C - - arm_func_start MOD04_021D9C2C -MOD04_021D9C2C: ; 0x021D9C2C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x28 - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov ip, #2 - ldr r2, _021D9F30 ; =UNK04_0220BFE4 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #1 - str ip, [sp] - bl OS_SNPrintf - add r0, sp, #4 - bl strlen - mov r3, r0 - ldr r1, _021D9F34 ; =UNK04_0220BFF0 - mov r0, r6 - add r2, sp, #4 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl strlen - mov r3, r0 - ldr r1, _021D9F38 ; =UNK04_0220BFF8 - mov r0, r6 - mov r2, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0xe - bl strlen - mov r3, r0 - ldr r1, _021D9F3C ; =UNK04_0220C000 - mov r0, r6 - add r2, r5, #0xe - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x41 - bl strlen - mov r3, r0 - ldr r1, _021D9F40 ; =UNK04_0220C008 - mov r0, r6 - add r2, r5, #0x41 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x6f - bl strlen - mov r3, r0 - ldr r1, _021D9F44 ; =UNK04_0220C010 - mov r0, r6 - add r2, r5, #0x6f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x15 - bl strlen - mov r3, r0 - ldr r1, _021D9F48 ; =UNK04_0220C018 - mov r0, r6 - add r2, r5, #0x15 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1a - bl strlen - mov r3, r0 - ldr r1, _021D9F4C ; =UNK04_0220C020 - mov r0, r6 - add r2, r5, #0x1a - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1d - bl strlen - mov r3, r0 - ldr r1, _021D9F50 ; =UNK04_0220C028 - mov r0, r6 - add r2, r5, #0x1d - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1f - bl strlen - mov r3, r0 - ldr r1, _021D9F54 ; =UNK04_0220C030 - mov r0, r6 - add r2, r5, #0x1f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2c - bl strlen - mov r3, r0 - ldr r1, _021D9F58 ; =UNK04_0220C038 - mov r0, r6 - add r2, r5, #0x2c - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2f - bl strlen - mov r3, r0 - ldr r1, _021D9F5C ; =UNK04_0220C040 - mov r0, r6 - add r2, r5, #0x2f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x34 - bl strlen - mov r3, r0 - ldr r1, _021D9F60 ; =UNK04_0220C048 - mov r0, r6 - add r2, r5, #0x34 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x7e - bl wcslen - mov r3, r0 - ldr r1, _021D9F64 ; =UNK04_0220C050 - mov r0, r6 - add r2, r5, #0x7e - mov r3, r3, lsl #1 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #1 - bne _021D9ED0 - add r0, r5, #0x4e - bl strlen - mov r3, r0 - ldr r1, _021D9F68 ; =UNK04_0220C058 - mov r0, r6 - add r2, r5, #0x4e - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_021D9ED0: - ldr r2, _021D9F6C ; =UNK04_0220C060 - mov ip, #2 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #1 - str ip, [sp] - bl OS_SNPrintf - ldr r1, _021D9F70 ; =UNK04_0220C078 - add r2, sp, #4 - mov r0, r6 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021D9F74 ; =UNK04_0220C084 - mov r0, r6 - add r2, r5, #0x15 - bl MOD04_021DAC98 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021D9F30: .word UNK04_0220BFE4 -_021D9F34: .word UNK04_0220BFF0 -_021D9F38: .word UNK04_0220BFF8 -_021D9F3C: .word UNK04_0220C000 -_021D9F40: .word UNK04_0220C008 -_021D9F44: .word UNK04_0220C010 -_021D9F48: .word UNK04_0220C018 -_021D9F4C: .word UNK04_0220C020 -_021D9F50: .word UNK04_0220C028 -_021D9F54: .word UNK04_0220C030 -_021D9F58: .word UNK04_0220C038 -_021D9F5C: .word UNK04_0220C040 -_021D9F60: .word UNK04_0220C048 -_021D9F64: .word UNK04_0220C050 -_021D9F68: .word UNK04_0220C058 -_021D9F6C: .word UNK04_0220C060 -_021D9F70: .word UNK04_0220C078 -_021D9F74: .word UNK04_0220C084 - arm_func_end MOD04_021D9C2C - - arm_func_start MOD04_021D9F78 -MOD04_021D9F78: ; 0x021D9F78 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x8c - mov r6, r1 - mov r1, #0 - mov r2, #0x94 - mov r4, r0 - bl MI_CpuFill8 - ldr r3, [r6] - ldr r5, [r6, #4] - mov r0, #0 - cmp r5, r0 - cmpeq r3, r0 - beq _021D9FC4 - ldr r2, _021DA218 ; =UNK04_0220C094 - mov r0, r4 - mov r1, #0xe - str r5, [sp] - bl OS_SNPrintf - b _021D9FE0 -_021D9FC4: - ldr r3, [r6, #8] - ldr r5, [r6, #0xc] - ldr r2, _021DA218 ; =UNK04_0220C094 - mov r0, r4 - mov r1, #0xe - str r5, [sp] - bl OS_SNPrintf -_021D9FE0: - ldrh r3, [r6, #0x10] - ldr r2, _021DA21C ; =UNK04_0220C09C - add r0, r4, #0xe - mov r1, #7 - bl OS_SNPrintf - ldr r0, _021DA220 ; =0x027FFE0C - ldrb r0, [r0] - cmp r0, #0 - bne _021DA008 - bl OS_Terminate -_021DA008: - ldr r0, _021DA220 ; =0x027FFE0C - add r1, r4, #0x15 - mov r2, #4 - bl MI_CpuCopy8 - ldr r0, _021DA224 ; =0x027FFE10 - ldrb r0, [r0] - cmp r0, #0 - bne _021DA02C - bl OS_Terminate -_021DA02C: - ldr r0, _021DA224 ; =0x027FFE10 - add r1, r4, #0x1a - mov r2, #2 - bl MI_CpuCopy8 - mov r1, #0x30 - add r0, sp, #0x16 - strb r1, [r4, #0x1d] - bl OS_GetMacAddress - ldr r5, _021DA228 ; =UNK04_0220C0A4 - add r7, sp, #0x16 - add r6, r4, #0x1f - mov r8, #0 -_021DA05C: - ldrb r2, [r7] - mov r0, r6 - mov r1, r5 - bl OS_SPrintf - add r8, r8, #1 - cmp r8, #6 - add r7, r7, #1 - add r6, r6, #2 - blt _021DA05C - add r0, sp, #0x38 - bl OS_GetOwnerInfo - ldrb r0, [sp, #0x38] - ldr r2, _021DA228 ; =UNK04_0220C0A4 - mov r1, #3 - cmp r0, #6 - movhi r0, #1 - strhib r0, [sp, #0x38] - ldrb r3, [sp, #0x38] - add r0, r4, #0x2c - bl OS_SNPrintf - add r0, sp, #0x3c - add r1, r4, #0x7e - mov r2, #0x14 - bl MI_CpuCopy8 - ldrb r1, [sp, #0x3b] - ldr r2, _021DA22C ; =UNK04_0220C0AC - add r0, r4, #0x2f - str r1, [sp] - ldrb r3, [sp, #0x3a] - mov r1, #5 - bl OS_SNPrintf - add r0, sp, #0x1c - bl RTC_GetDate - cmp r0, #0 - bne _021DA0F8 - add r0, sp, #0x2c - bl RTC_GetTime - cmp r0, #0 - beq _021DA104 -_021DA0F8: - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA104: - ldr r0, [sp, #0x20] - ldr r2, _021DA230 ; =UNK04_0220C0B8 - str r0, [sp] - ldr r1, [sp, #0x24] - add r0, r4, #0x34 - str r1, [sp, #4] - ldr r3, [sp, #0x2c] - mov r1, #0xd - str r3, [sp, #8] - ldr r3, [sp, #0x30] - str r3, [sp, #0xc] - ldr r3, [sp, #0x34] - str r3, [sp, #0x10] - ldr r3, [sp, #0x1c] - bl OS_SNPrintf - bl OS_DisableInterrupts - mov sb, r0 - bl WCM_GetApMacAddress - mov r8, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r8, #0 - bne _021DA174 - mov r0, sb - bl OS_RestoreInterrupts - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA174: - add r7, r4, #0x41 - mov r6, #0 - ldr r5, _021DA228 ; =UNK04_0220C0A4 -_021DA180: - ldrb r2, [r8, r6] - mov r0, r7 - mov r1, r5 - bl OS_SPrintf - add r6, r6, #1 - cmp r6, #6 - add r7, r7, #2 - blt _021DA180 - bl MOD04_021EBAB8 - mov r3, r0 - ldr r2, _021DA234 ; =UNK04_0220C0D4 - add r0, r4, #0x6f - mov r1, #0xe - bl OS_SNPrintf - add r0, sp, #0x14 - bl WCM_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DA1E8 - mov r0, sb - bl OS_RestoreInterrupts - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA1E8: - mov r0, r5 - add r1, r4, #0x72 - bl MOD04_021EE5F4 - mov r0, r5 - add r1, r4, #0x4e - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, sb - bl OS_RestoreInterrupts - mov r0, #1 - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021DA218: .word UNK04_0220C094 -_021DA21C: .word UNK04_0220C09C -_021DA220: .word 0x027FFE0C -_021DA224: .word 0x027FFE10 -_021DA228: .word UNK04_0220C0A4 -_021DA22C: .word UNK04_0220C0AC -_021DA230: .word UNK04_0220C0B8 -_021DA234: .word UNK04_0220C0D4 - arm_func_end MOD04_021D9F78 - - arm_func_start MOD04_021DA238 -MOD04_021DA238: ; 0x021DA238 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0 - bl DWCi_BM_GetWiFiInfo - add r1, sp, #0 - mov r0, r4 - bl MOD04_021D9F78 - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DA238 - - arm_func_start MOD04_021DA260 -MOD04_021DA260: ; 0x021DA260 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - add r0, r0, #0x1000 - mov sb, r2 - cmp sb, #0 - ldr r8, [r0, #0x14] - mov sl, r1 - mov r7, #0 - addle sp, sp, #4 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, r7 - mov r5, r7 - mov fp, r7 - mov r4, r7 -_021DA298: - ldr r1, [sl, r7, lsl #3] - cmp r1, #0 - beq _021DA2B4 - ldr r0, _021DA2EC ; =UNK04_0220C110 - mov r2, r6 - blx r8 - str r5, [sl, r7, lsl #3] -_021DA2B4: - add r0, sl, r7, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021DA2D8 - ldr r0, _021DA2F0 ; =UNK04_0220C12C - mov r2, fp - blx r8 - add r0, sl, r7, lsl #3 - str r4, [r0, #4] -_021DA2D8: - add r7, r7, #1 - cmp r7, sb - blt _021DA298 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DA2EC: .word UNK04_0220C110 -_021DA2F0: .word UNK04_0220C12C - arm_func_end MOD04_021DA260 - - arm_func_start MOD04_021DA2F4 -MOD04_021DA2F4: ; 0x021DA2F4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl MOD04_021DA388 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - cmp r0, r5 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - bl strcpy - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA2F4 - - arm_func_start MOD04_021DA334 -MOD04_021DA334: ; 0x021DA334 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl MOD04_021DA388 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - mov r1, r0 - mov r0, r4 - mov r2, r6 - mov r3, r5 - bl MOD04_021DD36C - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, r5 - ldmhsia sp!, {r4, r5, r6, pc} - mov r1, #0 - strb r1, [r6, r0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA334 - - arm_func_start MOD04_021DA388 -MOD04_021DA388: ; 0x021DA388 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 -_021DA398: - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r1, [r0, #0xa34] - cmp r1, #0 - beq _021DA3D4 - mov r0, r5 - bl strcmp - cmp r0, #0 - addeq r0, r6, r4, lsl #3 - addeq r0, r0, #0x1000 - ldreq r0, [r0, #0xa38] - ldmeqia sp!, {r4, r5, r6, pc} - add r4, r4, #1 - cmp r4, #0x20 - blt _021DA398 -_021DA3D4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA388 - - arm_func_start MOD04_021DA3DC -MOD04_021DA3DC: ; 0x021DA3DC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r2, _021DA668 ; =0x00001A34 - mov fp, r0 - add r0, fp, r2 - mov r6, r1 - mov r3, #0x20 - mov r1, #0 - mov r2, #0x100 - str r0, [sp, #8] - str r3, [sp, #0xc] - str r1, [sp, #0x10] - bl MI_CpuFill8 - add r0, fp, #0x1000 - ldr r5, [r0, #0xa04] - ldr r1, _021DA66C ; =UNK04_0220C148 - mov r0, r5 - bl strstr - str r0, [sp] - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r0, #4 - bl strlen - ldr r1, [sp] - add r1, r1, #4 - add r0, r1, r0 - str r0, [sp, #4] - ldr r1, _021DA670 ; =UNK04_0220C150 - mov r0, r5 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r8, r0, #1 - ldrsb r7, [r8, #3] - ldr r2, _021DA674 ; =UNK04_0220C154 - mov r5, #0 - add r1, sp, #8 - mov r0, fp - mov r3, r8 - strb r5, [r8, #3] - bl MOD04_021DA68C - cmp r0, #1 - addne sp, sp, #0x14 - strneb r7, [r8, #3] - movne r0, r5 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r7, [r8, #3] - cmp r6, #1 - beq _021DA4C8 - ldr r1, _021DA678 ; =UNK04_0220C160 - mov r0, r8 - mov r2, #3 - bl strncmp - cmp r0, #0 - beq _021DA4D4 -_021DA4C8: - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DA4D4: - ldr r1, _021DA67C ; =UNK04_0220C164 - add r0, r8, #4 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sb, r0, #2 - mov r6, r5 - b _021DA580 -_021DA4FC: - ldr r1, _021DA680 ; =UNK04_0220C168 - mov r0, sb - bl strstr - movs r7, r0 - beq _021DA598 - ldrsb sl, [r7] - add r8, r7, #2 - ldr r1, _021DA67C ; =UNK04_0220C164 - mov r0, r8 - strb r6, [r7] - bl strstr - movs r5, r0 - streqb sl, [r7] - beq _021DA598 - ldrsb r4, [r5] - mov r0, fp - mov r2, sb - strb r6, [r5] - add r1, sp, #8 - mov r3, r8 - bl MOD04_021DA68C - cmp r0, #1 - strneb sl, [r7] - addne sp, sp, #0x14 - strneb r4, [r5] - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r8 - bl strlen - strb sl, [r7] - add r0, r8, r0 - strb r4, [r5] - add sb, r0, #2 -_021DA580: - ldrsb r0, [sb] - cmp r0, #0xd - beq _021DA598 - ldrsb r0, [sb, #1] - cmp r0, #0xa - bne _021DA4FC -_021DA598: - ldr r0, [sp] - add r8, r0, #4 - ldr r0, [sp, #4] - cmp r8, r0 - bhs _021DA65C - mov r5, #0 -_021DA5B0: - ldr r1, _021DA684 ; =UNK04_0220C16C - mov r0, r8 - bl strstr - movs sl, r0 - beq _021DA65C - ldrsb r7, [sl] - add sb, sl, #1 - ldr r1, _021DA688 ; =UNK04_0220C170 - mov r0, sb - strb r5, [sl] - bl strstr - movs r6, r0 - bne _021DA5F4 - ldr r1, _021DA67C ; =UNK04_0220C164 - mov r0, sb - bl strstr - mov r6, r0 -_021DA5F4: - cmp r6, #0 - ldrnesb r4, [r6] - mov r0, fp - mov r2, r8 - add r1, sp, #8 - mov r3, sb - strneb r5, [r6] - bl MOD04_021DA68C - cmp r0, #1 - beq _021DA634 - strb r7, [sl] - cmp r6, #0 - add sp, sp, #0x14 - strneb r4, [r6] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DA634: - mov r0, sb - bl strlen - add r0, sb, r0 - add r8, r0, #1 - ldr r0, [sp, #4] - strb r7, [sl] - cmp r6, #0 - strneb r4, [r6] - cmp r8, r0 - blo _021DA5B0 -_021DA65C: - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DA668: .word 0x00001A34 -_021DA66C: .word UNK04_0220C148 -_021DA670: .word UNK04_0220C150 -_021DA674: .word UNK04_0220C154 -_021DA678: .word UNK04_0220C160 -_021DA67C: .word UNK04_0220C164 -_021DA680: .word UNK04_0220C168 -_021DA684: .word UNK04_0220C16C -_021DA688: .word UNK04_0220C170 - arm_func_end MOD04_021DA3DC - - arm_func_start MOD04_021DA68C -MOD04_021DA68C: ; 0x021DA68C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - ldr r4, [r8, #8] - ldr r1, [r8, #4] - add r0, r0, #0x1000 - cmp r4, r1 - ldr r5, [r0, #0x10] - ldr r4, [r0, #0x14] - mov r7, r2 - mov r6, r3 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - mov r1, r0 - ldr r0, _021DA7D8 ; =UNK04_0220C174 - add r1, r1, #1 - blx r5 - ldr r2, [r8] - ldr r1, [r8, #8] - str r0, [r2, r1, lsl #3] - ldr r3, [r8, #8] - ldr r2, [r8] - ldr r0, [r2, r3, lsl #3] - cmp r0, #0 - beq _021DA770 - mov r0, r6 - bl strlen - mov r1, r0 - ldr r0, _021DA7DC ; =UNK04_0220C194 - add r1, r1, #1 - blx r5 - ldr r2, [r8] - ldr r1, [r8, #8] - add r1, r2, r1, lsl #3 - str r0, [r1, #4] - ldr r3, [r8, #8] - ldr r2, [r8] - mov r1, r3, lsl #3 - add r0, r2, r3, lsl #3 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021DA770 - ldr r0, [r2, r1] - mov r1, r7 - bl strcpy - ldr r2, [r8] - ldr r0, [r8, #8] - mov r1, r6 - add r0, r2, r0, lsl #3 - ldr r0, [r0, #4] - bl strcpy - ldr r1, [r8, #8] - mov r0, #1 - add r1, r1, #1 - str r1, [r8, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021DA770: - ldr r1, [r2, r3, lsl #3] - cmp r1, #0 - beq _021DA798 - ldr r0, _021DA7E0 ; =UNK04_0220C1B4 - mov r2, #0 - blx r4 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - str r2, [r1, r0, lsl #3] -_021DA798: - ldr r1, [r8] - ldr r0, [r8, #8] - add r0, r1, r0, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021DA7D0 - ldr r0, _021DA7E4 ; =UNK04_0220C1D0 - mov r2, #0 - blx r4 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - add r0, r1, r0, lsl #3 - str r2, [r0, #4] -_021DA7D0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DA7D8: .word UNK04_0220C174 -_021DA7DC: .word UNK04_0220C194 -_021DA7E0: .word UNK04_0220C1B4 -_021DA7E4: .word UNK04_0220C1D0 - arm_func_end MOD04_021DA68C - - arm_func_start MOD04_021DA7E8 -MOD04_021DA7E8: ; 0x021DA7E8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r0 - mov r0, r6 - mov r4, #0 - bl strlen - cmp r0, #0x100 - movhs r0, r4 - ldmhsia sp!, {r4, r5, r6, pc} - ldr r0, _021DA934 ; =0x00001024 - mov r1, r6 - add r0, r5, r0 - mov r2, #0x100 - bl strncpy - mov r0, r6 - bl strlen - ldr r1, _021DA934 ; =0x00001024 - mov r6, r0 - add r0, r5, r1 - bl strlen - cmp r6, r0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, _021DA934 ; =0x00001024 - ldr r1, _021DA938 ; =UNK04_0220C1EC - add r0, r5, r0 - bl strstr - cmp r0, #0 - beq _021DA884 - ldr r0, _021DA93C ; =0x0000102B - add r1, r5, #0x1000 - add r0, r5, r0 - str r0, [r1, #0x124] - mov r0, r4 - str r0, [r1, #0x12c] - add r0, r5, #0x1100 - mov r1, #0x50 - strh r1, [r0, #0x30] - b _021DA8C0 -_021DA884: - ldr r0, _021DA934 ; =0x00001024 - ldr r1, _021DA940 ; =UNK04_0220C1F4 - add r0, r5, r0 - bl strstr - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - add r1, r0, #8 - add r0, r5, #0x1000 - str r1, [r0, #0x124] - mov r2, #1 - ldr r1, _021DA944 ; =0x000001BB - str r2, [r0, #0x12c] - add r0, r5, #0x1100 - strh r1, [r0, #0x30] -_021DA8C0: - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021DA948 ; =UNK04_0220C200 - bl strstr - cmp r0, #0 - movne r1, #0 - strneb r1, [r0] - addne r4, r0, #1 - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021DA94C ; =UNK04_0220C204 - bl strstr - cmp r0, #0 - addeq r0, r5, #0x1000 - moveq r1, #0 - streq r1, [r0, #0x128] - movne r1, #0 - strneb r1, [r0] - addne r1, r0, #1 - addne r0, r5, #0x1000 - strne r1, [r0, #0x128] - cmp r4, #0 - beq _021DA92C - mov r0, r4 - bl atol - add r1, r5, #0x1100 - strh r0, [r1, #0x30] -_021DA92C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DA934: .word 0x00001024 -_021DA938: .word UNK04_0220C1EC -_021DA93C: .word 0x0000102B -_021DA940: .word UNK04_0220C1F4 -_021DA944: .word 0x000001BB -_021DA948: .word UNK04_0220C200 -_021DA94C: .word UNK04_0220C204 - arm_func_end MOD04_021DA7E8 - - arm_func_start MOD04_021DA950 -MOD04_021DA950: ; 0x021DA950 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - add r0, r0, #0x1000 - mov r5, r2 - cmp r5, #0 - ldr r7, [r0, #0x14] - ldr r2, [r0, #0x10] - mov r6, r1 - addle sp, sp, #4 - movle r0, #0 - ldmleia sp!, {r4, r5, r6, r7, pc} - ldr r1, [r6, #0xc] - ldr r0, _021DAA08 ; =UNK04_0220C208 - add r1, r1, r5 - blx r2 - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6] - ldr r2, [r6, #0xc] - mov r1, r4 - bl MI_CpuCopy8 - ldr r1, [r6] - ldr r0, _021DAA0C ; =UNK04_0220C218 - mov r2, #0 - blx r7 - cmp r4, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6] - ldr r1, [r6, #4] - sub r0, r4, r0 - add r0, r1, r0 - str r0, [r6, #4] - ldr r1, [r6, #0xc] - mov r0, #1 - add r1, r1, r5 - str r1, [r6, #0xc] - str r4, [r6] - ldr r1, [r6, #0xc] - add r1, r4, r1 - str r1, [r6, #8] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DAA08: .word UNK04_0220C208 -_021DAA0C: .word UNK04_0220C218 - arm_func_end MOD04_021DA950 - - arm_func_start MOD04_021DAA10 -MOD04_021DAA10: ; 0x021DAA10 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4] - add r0, r0, #0x1000 - cmp r1, #0 - ldr r3, [r0, #0x14] - beq _021DAA38 - ldr r0, _021DAA4C ; =UNK04_0220C218 - mov r2, #0 - blx r3 -_021DAA38: - mov r0, r4 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DAA4C: .word UNK04_0220C218 - arm_func_end MOD04_021DAA10 - - arm_func_start MOD04_021DAA50 -MOD04_021DAA50: ; 0x021DAA50 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r2 - add r0, r0, #0x1000 - ldr r2, [r0, #0x10] - mov r4, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - ldr r0, _021DAABC ; =UNK04_0220C22C - mov r1, r5 - blx r2 - str r0, [r4] - ldr r0, [r4] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - str r0, [r4, #4] - str r5, [r4, #0xc] - ldr r2, [r4] - ldr r1, [r4, #0xc] - mov r0, #1 - add r1, r2, r1 - str r1, [r4, #8] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DAABC: .word UNK04_0220C22C - arm_func_end MOD04_021DAA50 - - arm_func_start MOD04_021DAAC0 -MOD04_021DAAC0: ; 0x021DAAC0 - ands r1, r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end MOD04_021DAAC0 - - arm_func_start MOD04_021DAACC -MOD04_021DAACC: ; 0x021DAACC - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - ldr r2, _021DAB60 ; =0x000019F4 - mov r7, r0 - mov r6, r1 - mov r0, r6 - add r4, r7, r2 - bl strlen - mov r5, r0 - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 - cmp r5, r1 - ble _021DAB34 - sub r2, r5, r1 - mov r0, r7 - mov r1, r4 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 -_021DAB34: - ldr r2, _021DAB64 ; =UNK04_0220C240 - mov r3, r6 - bl OS_SNPrintf - cmp r0, r5 - ldreq r1, [r4, #4] - movne r0, #1 - addeq r0, r1, r0 - streq r0, [r4, #4] - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DAB60: .word 0x000019F4 -_021DAB64: .word UNK04_0220C240 - arm_func_end MOD04_021DAACC - - arm_func_start MOD04_021DAB68 -MOD04_021DAB68: ; 0x021DAB68 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - mov sl, r0 - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f0] - ldr r0, _021DAC8C ; =0x000019F4 - cmp r4, #0 - ldreq r6, _021DAC90 ; =UNK04_0220C244 - mov r8, r2 - add r5, sl, #0x1000 - add r4, sl, r0 - ldr r0, [r5, #0x9f0] - mov r7, r3 - add fp, r0, #1 - mov r2, #0 - mov sb, r1 - ldrne r6, _021DAC94 ; =UNK04_0220C248 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str fp, [r5, #0x9f0] - bl MOD04_021DD4FC - mov r5, r0 - mov r0, r6 - bl strlen - mov fp, r0 - mov r0, sb - bl strlen - sub r1, fp, #2 - add r2, r1, r0 - ldr r0, [r4, #4] - ldr r1, [r4, #8] - add r2, r5, r2 - sub r1, r1, r0 - cmp r2, r1 - ble _021DAC28 - sub r2, r2, r1 - mov r0, sl - mov r1, r4 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 -_021DAC28: - mov r2, r6 - mov r3, sb - bl OS_SNPrintf - ldr r2, [r4, #4] - mov r1, r7 - add r0, r2, r0 - str r0, [r4, #4] - ldr r2, [r4, #4] - ldr r3, [r4, #8] - mov r0, r8 - sub r3, r3, r2 - sub r3, r3, #1 - bl MOD04_021DD4FC - cmp r0, #0 - addlt sp, sp, #4 - movlt r0, #1 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #4] - mov r0, #0 - add r1, r1, r5 - str r1, [r4, #4] - ldr r1, [r4, #4] - strb r0, [r1] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DAC8C: .word 0x000019F4 -_021DAC90: .word UNK04_0220C244 -_021DAC94: .word UNK04_0220C248 - arm_func_end MOD04_021DAB68 - - arm_func_start MOD04_021DAC98 -MOD04_021DAC98: ; 0x021DAC98 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #4 - mov r6, r2 - mov r8, r0 - ldr r2, _021DAD7C ; =0x000019F4 - mov r0, r6 - mov r7, r1 - add r5, r8, r2 - bl strlen - mov r4, r0 - ldr r0, _021DAD80 ; =UNK04_0220C250 - bl strlen - mov sb, r0 - mov r0, r7 - bl strlen - sub r1, sb, #4 - add r0, r1, r0 - add r4, r4, r0 - ldr r2, [r5, #8] - ldr r1, [r5, #4] - add r0, r4, #1 - sub r1, r2, r1 - cmp r0, r1 - ble _021DAD1C - sub r2, r4, r1 - mov r0, r8 - mov r1, r5 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DAD1C: - ldr r0, [r5] - ldr r1, _021DAD84 ; =UNK04_0220C148 - bl strstr - add r8, r0, #2 - ldrsb sb, [r0, #2] - mov r0, r8 - bl strlen - add r2, r0, #1 - add r0, r8, r4 - mov r1, r8 - bl memmove - ldr r2, _021DAD80 ; =UNK04_0220C250 - str r6, [sp] - mov r3, r7 - mov r0, r8 - add r1, r4, #1 - bl OS_SNPrintf - strb sb, [r8, r0] - ldr r1, [r5, #4] - mov r0, #0 - add r1, r1, r4 - str r1, [r5, #4] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021DAD7C: .word 0x000019F4 -_021DAD80: .word UNK04_0220C250 -_021DAD84: .word UNK04_0220C148 - arm_func_end MOD04_021DAC98 - - arm_func_start MOD04_021DAD88 -MOD04_021DAD88: ; 0x021DAD88 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r0 - add r0, r7, #0x1000 - ldr r1, [r0, #8] - ldr r0, _021DAE40 ; =0x000019F4 - cmp r1, #0 - ldreq r6, _021DAE44 ; =UNK04_0220C25C - add r5, r7, r0 - add r0, r7, #0x1000 - ldrne r6, _021DAE48 ; =UNK04_0220C2B0 - ldr r0, [r0, #0x124] - bl strlen - mov r4, r0 - mov r0, r6 - bl strlen - add r1, r7, #0x1000 - mov r8, r0 - ldr r0, [r1, #0x128] - bl strlen - sub r1, r8, #4 - add r0, r1, r0 - add r1, r4, r0 - ldr r0, _021DAE40 ; =0x000019F4 - add r2, r1, #0x400 - add r1, r7, r0 - mov r0, r7 - bl MOD04_021DAA50 - cmp r0, #1 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r3, r7, #0x1000 - ldr r0, [r3, #0x124] - mov r2, r6 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0xc] - ldr r3, [r3, #0x128] - bl OS_SNPrintf - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DAE40: .word 0x000019F4 -_021DAE44: .word UNK04_0220C25C -_021DAE48: .word UNK04_0220C2B0 - arm_func_end MOD04_021DAD88 - - arm_func_start MOD04_021DAE4C -MOD04_021DAE4C: ; 0x021DAE4C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r0 - add r1, r5, #0x1000 - ldr r4, [r1, #0x14] - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r1, _021DAF00 ; =0x00001A34 - mov r2, #0x20 - add r1, r5, r1 - bl MOD04_021DA260 - ldr r1, _021DAF04 ; =0x00001A04 - mov r0, r5 - add r1, r5, r1 - bl MOD04_021DAA10 - ldr r1, _021DAF08 ; =0x000019F4 - mov r0, r5 - add r1, r5, r1 - bl MOD04_021DAA10 - add r0, r5, #0x1000 - ldr r1, [r0, #0x9c8] - cmp r1, #0 - beq _021DAEC0 - ldr r0, _021DAF0C ; =UNK04_0220C2D0 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9c8] -_021DAEC0: - add r0, r5, #0x1000 - ldr r1, [r0, #0x9cc] - cmp r1, #0 - beq _021DAEE8 - ldr r0, _021DAF10 ; =UNK04_0220C2E8 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9cc] -_021DAEE8: - ldr r2, _021DAF14 ; =0x00001C10 - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DAF00: .word 0x00001A34 -_021DAF04: .word 0x00001A04 -_021DAF08: .word 0x000019F4 -_021DAF0C: .word UNK04_0220C2D0 -_021DAF10: .word UNK04_0220C2E8 -_021DAF14: .word 0x00001C10 - arm_func_end MOD04_021DAE4C - - arm_func_start MOD04_021DAF18 -MOD04_021DAF18: ; 0x021DAF18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - add r0, sl, #0x1000 - ldr fp, [r0, #0x1c] - ldr r0, _021DB224 ; =0x00001134 - ldr r1, _021DB228 ; =0x00001198 - ldr r2, _021DB22C ; =0x00001A04 - add r8, sl, r0 - cmp fp, #0 - mov r0, sl - add r6, sl, r1 - add r7, sl, r2 - mov r5, #0 - ldrle fp, _021DB230 ; =0x0000EA60 - bl MOD04_021DB35C - mov r0, sl - bl MOD04_021DB348 - movs r4, r0 - addeq r0, sl, #0x1000 - moveq r1, #2 - streq r1, [r0, #0x20] - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl CPS_SocUse - add r0, sl, #0x1000 - ldr r0, [r0, #0x12c] - cmp r0, #1 - bne _021DAFC8 - mov r0, r6 - mov r1, #0 - mov r2, #0x830 - bl MI_CpuFill8 - ldr r1, _021DB234 ; =MOD04_021DAAC0 - add r0, sl, #0x1000 - str r1, [r6, #0x810] - ldr r1, [r0, #0x124] - ldr r0, _021DB238 ; =UNK04_0220C0E4 - str r1, [r6, #0x800] - mov r1, #0xb - str r6, [r8, #0xc] - bl CPS_SetRootCa - mov r0, #1 - bl CPS_SetSsl -_021DAFC8: - add r0, sl, #0x1100 - ldrh r1, [r0, #0x30] - mov r2, r4 - mov r0, #0 - bl CPS_SocPingMode - bl CPS_TcpConnect - cmp r0, #0 - beq _021DB004 - add r0, sl, #0x1000 - mov r1, #3 - str r1, [r0, #0x20] - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DB004: - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f4] - mov r0, r4 - bl strlen - mov r1, r0 - mov r0, r4 - bl CPS_SocWrite - cmp r0, #0 - str r0, [sp, #8] - addle r0, sl, #0x1000 - movle r1, #5 - strle r1, [r0, #0x20] - ble _021DB20C - bl CPS_SocGetChar - mov r0, sl - bl MOD04_021DB3B8 - cmp r0, #0 - addeq r0, sl, #0x1000 - moveq r1, #7 - streq r1, [r0, #0x20] - beq _021DB20C - ldr r0, [r7] - str r0, [r7, #4] - ldr r1, [r7] - ldr r0, [r7, #0xc] - add r0, r1, r0 - str r0, [r7, #8] - bl OS_GetTick - mov r6, r0 - mov r0, fp, asr #0x1f - mov r8, r1 - str r0, [sp, #4] - mov r4, #0 -_021DB088: - ldr r0, _021DB23C ; =CPSMyIp - ldr r0, [r0] - cmp r0, #0 - addeq r0, sl, #0x1000 - moveq r1, #5 - streq r1, [r0, #0x20] - beq _021DB20C - bl CPS_SocGetLength - str r0, [sp, #8] - cmp r0, #0 - blt _021DB1E8 - cmp r0, #0 - ble _021DB16C - bl OS_GetTick - mov r6, r0 - add r0, sp, #8 - mov r8, r1 - bl CPS_SocRead - cmp r0, #0 - beq _021DB1E8 - ldr r2, [r7, #8] - ldr r1, [r7, #4] - sub r2, r2, #1 - ldr sb, [sp, #8] - sub r2, r2, r1 - cmp sb, r2 - movge sb, r2 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, [r7, #4] - cmp r5, #1 - add r0, r0, sb - str r0, [r7, #4] - ldr r0, [r7, #4] - strb r4, [r0] - bne _021DB144 - ldr r0, _021DB240 ; =0x00001A14 - add r0, sl, r0 - bl OS_LockMutex - add r1, sl, #0x1000 - ldr r2, [r1, #0xa30] - ldr r0, _021DB240 ; =0x00001A14 - add r2, r2, sb - add r0, sl, r0 - str r2, [r1, #0xa30] - bl OS_UnlockMutex - b _021DB150 -_021DB144: - mov r0, sl - bl MOD04_021DB248 - mov r5, r0 -_021DB150: - ldr r0, [sp, #8] - cmp r0, sb - bls _021DB164 - bl CPS_SocConsume - b _021DB1E8 -_021DB164: - mov r0, sb - bl CPS_SocConsume -_021DB16C: - add r0, sl, #0x1000 - ldr r1, [r0, #0xa2c] - cmp r1, #0 - blt _021DB188 - ldr r0, [r0, #0xa30] - cmp r0, r1 - bge _021DB1E8 -_021DB188: - bl OS_GetTick - subs r2, r0, r6 - sbc r0, r1, r8 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021DB244 ; =0x000082EA - mov r3, r4 - bl _ll_udiv - ldr r2, [sp, #4] - cmp r1, r2 - cmpeq r0, fp - addhi r0, sl, #0x1000 - movhi r1, #6 - strhi r1, [r0, #0x20] - bhi _021DB20C - mov r0, sl - bl MOD04_021DB3B8 - cmp r0, #0 - bne _021DB088 - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _021DB20C -_021DB1E8: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add r0, sl, #0x1000 - mov r1, #8 - str r1, [r0, #0x20] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DB20C: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DB224: .word 0x00001134 -_021DB228: .word 0x00001198 -_021DB22C: .word 0x00001A04 -_021DB230: .word 0x0000EA60 -_021DB234: .word MOD04_021DAAC0 -_021DB238: .word UNK04_0220C0E4 -_021DB23C: .word CPSMyIp -_021DB240: .word 0x00001A14 -_021DB244: .word 0x000082EA - arm_func_end MOD04_021DAF18 - - arm_func_start MOD04_021DB248 -MOD04_021DB248: ; 0x021DB248 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r5, r0 - add r0, r5, #0x1000 - ldr r6, [r0, #0xa04] - ldr r2, _021DB334 ; =0x00001A04 - ldr r1, _021DB338 ; =UNK04_0220C148 - mov r0, r6 - add r4, r5, r2 - bl strstr - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, _021DB338 ; =UNK04_0220C148 - mov r0, r6 - bl strstr - ldr r1, _021DB33C ; =0x00001A14 - add r6, r0, #4 - add r0, r5, r1 - bl OS_LockMutex - ldr r0, [r4, #4] - ldr r1, _021DB33C ; =0x00001A14 - sub r2, r0, r6 - add r0, r5, #0x1000 - str r2, [r0, #0xa30] - add r0, r5, r1 - bl OS_UnlockMutex - ldr r0, [r4] - ldr r1, _021DB340 ; =UNK04_0220C300 - bl strstr - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DB340 ; =UNK04_0220C300 - bl strlen - add r7, r4, r0 - ldr r1, _021DB344 ; =UNK04_0220C164 - mov r0, r7 - bl strstr - mov r4, r0 - ldr r0, _021DB33C ; =0x00001A14 - ldrsb r6, [r4] - mov r1, #0 - add r0, r5, r0 - strb r1, [r4] - bl OS_LockMutex - mov r0, r7 - bl atol - add r1, r5, #0x1000 - ldr r2, _021DB33C ; =0x00001A14 - str r0, [r1, #0xa2c] - add r0, r5, r2 - bl OS_UnlockMutex - strb r6, [r4] - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DB334: .word 0x00001A04 -_021DB338: .word UNK04_0220C148 -_021DB33C: .word 0x00001A14 -_021DB340: .word UNK04_0220C300 -_021DB344: .word UNK04_0220C164 - arm_func_end MOD04_021DB248 - - arm_func_start MOD04_021DB348 -MOD04_021DB348: ; 0x021DB348 - ldr ip, _021DB358 ; =CPS_Resolve - add r0, r0, #0x1000 - ldr r0, [r0, #0x124] - bx ip - .align 2, 0 -_021DB358: .word CPS_Resolve - arm_func_end MOD04_021DB348 - - arm_func_start MOD04_021DB35C -MOD04_021DB35C: ; 0x021DB35C - stmdb sp!, {r4, lr} - ldr r1, _021DB3AC ; =0x00001134 - mov r4, r0 - add r0, r4, r1 - mov r1, #0 - mov r2, #0x64 - bl MI_CpuFill8 - ldr r0, _021DB3B0 ; =0x00000B68 - add r1, r4, #0x1000 - str r0, [r1, #0x170] - ldr r3, [r1, #0x9c8] - ldr r0, _021DB3AC ; =0x00001134 - ldr r2, _021DB3B4 ; =0x000005EA - str r3, [r1, #0x174] - str r2, [r1, #0x17c] - ldr r2, [r1, #0x9cc] - add r0, r4, r0 - str r2, [r1, #0x180] - bl CPS_SocRegister - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB3AC: .word 0x00001134 -_021DB3B0: .word 0x00000B68 -_021DB3B4: .word 0x000005EA - arm_func_end MOD04_021DB35C - - arm_func_start MOD04_021DB3B8 -MOD04_021DB3B8: ; 0x021DB3B8 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x12c] - cmp r0, #1 - bne _021DB3EC - ldr r0, _021DB438 ; =0x000019D0 - add r0, r4, r0 - bl OS_GetLowEntropyData - ldr r0, _021DB438 ; =0x000019D0 - mov r1, #0x20 - add r0, r4, r0 - bl CPS_SslAddRandomSeed -_021DB3EC: - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_LockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xc0c] - cmp r0, #1 - bne _021DB41C - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_021DB41C: - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_UnlockMutex - mov r0, #0xa - bl OS_Sleep - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB438: .word 0x000019D0 -_021DB43C: .word 0x00001BF4 - arm_func_end MOD04_021DB3B8 - - arm_func_start MOD04_021DB440 -MOD04_021DB440: ; 0x021DB440 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldrb r0, [r0] - cmp r0, #0xff - ldmneia sp!, {r4, pc} - ldr r0, _021DB49C ; =0x00001BF4 - add r0, r4, r0 - bl OS_LockMutex - ldr r0, _021DB49C ; =0x00001BF4 - add r1, r4, #0x1000 - mov r2, #1 - add r0, r4, r0 - str r2, [r1, #0xc0c] - bl OS_UnlockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _021DB4A0 ; =0x00001B34 - add r0, r4, r0 - bl OS_JoinThread - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB49C: .word 0x00001BF4 -_021DB4A0: .word 0x00001B34 - arm_func_end MOD04_021DB440 - - arm_func_start MOD04_021DB4A4 -MOD04_021DB4A4: ; 0x021DB4A4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r3, _021DB55C ; =0x00001BF4 - mov r5, r0 - add r2, r5, #0x1000 - mov ip, #0 - add r0, r5, r3 - mov r4, r1 - str ip, [r2, #0xc0c] - bl OS_InitMutex - ldr r0, _021DB560 ; =0x00001A14 - add r0, r5, r0 - bl OS_InitMutex - add r0, r5, #0x1000 - ldr r0, [r0, #0x18] - cmp r0, #1 - ldreq r0, _021DB564 ; =UNK04_02210480 - moveq r1, #1 - streq r1, [r0] - ldrne r0, _021DB564 ; =UNK04_02210480 - movne r1, #0 - strne r1, [r0] - add r0, r5, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DB524 - ldr r0, _021DB568 ; =0x00001B34 - add r0, r5, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, pc} -_021DB524: - ldr r0, _021DB568 ; =0x00001B34 - mov r1, #0x1000 - str r1, [sp] - ldr r1, _021DB56C ; =MOD04_021DAF18 - mov r2, r5 - add r0, r5, r0 - add r3, r5, #0x1000 - str r4, [sp, #4] - bl OS_CreateThread - ldr r0, _021DB568 ; =0x00001B34 - add r0, r5, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DB55C: .word 0x00001BF4 -_021DB560: .word 0x00001A14 -_021DB564: .word UNK04_02210480 -_021DB568: .word 0x00001B34 -_021DB56C: .word MOD04_021DAF18 - arm_func_end MOD04_021DB4A4 - - arm_func_start MOD04_021DB570 -MOD04_021DB570: ; 0x021DB570 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _021DB5F4 ; =UNK04_0220C314 - ldr r2, _021DB5F8 ; =UNK04_0220C320 - mov r4, r0 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x1000 - ldr r0, [r0, #0x9f4] - ldr r1, _021DB5FC ; =UNK04_0220C148 - bl strstr - add r0, r0, #4 - bl strlen - movs r3, r0 - beq _021DB5E8 - ldr r2, _021DB600 ; =UNK04_0220C328 - add r0, sp, #0 - mov r1, #7 - bl OS_SNPrintf - ldr r1, _021DB604 ; =UNK04_0220C32C - add r2, sp, #0 - mov r0, r4 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} -_021DB5E8: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB5F4: .word UNK04_0220C314 -_021DB5F8: .word UNK04_0220C320 -_021DB5FC: .word UNK04_0220C148 -_021DB600: .word UNK04_0220C328 -_021DB604: .word UNK04_0220C32C - arm_func_end MOD04_021DB570 - - arm_func_start MOD04_021DB608 -MOD04_021DB608: ; 0x021DB608 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, _021DB714 ; =0x00001C10 - mov r6, r0 - ldr r4, [r5, #0xc] - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DB718 ; =0x00001004 - add r0, r6, #0x1000 - mvn r2, #0 - str r2, [r0, #0xa2c] - mov lr, r5 - str r2, [r0, #0xa30] - add ip, r6, r1 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldr r0, _021DB71C ; =UNK04_0220C33C - ldr r1, _021DB720 ; =0x00000B68 - blx r4 - add r1, r6, #0x1000 - str r0, [r1, #0x9c8] - ldr r0, [r1, #0x9c8] - cmp r0, #0 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021DB724 ; =UNK04_0220C354 - ldr r1, _021DB728 ; =0x000005EA - blx r4 - add r2, r6, #0x1000 - str r0, [r2, #0x9cc] - ldr r0, [r2, #0x9cc] - cmp r0, #0 - moveq r0, #1 - streq r0, [r2, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _021DB72C ; =0x00001A04 - ldr r2, [r2, #0xc] - mov r0, r6 - add r1, r6, r1 - bl MOD04_021DAA50 - cmp r0, #0 - addeq r1, r6, #0x1000 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r5] - mov r0, r6 - bl MOD04_021DA7E8 - cmp r0, #0 - addeq r1, r6, #0x1000 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl MOD04_021DAD88 - add r1, r6, #0x1000 - str r0, [r1, #0x20] - ldr r0, [r1, #0x20] - cmp r0, #0 - moveq r0, #0xff - streqb r0, [r1] - add r0, r6, #0x1000 - ldr r0, [r0, #0x20] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DB714: .word 0x00001C10 -_021DB718: .word 0x00001004 -_021DB71C: .word UNK04_0220C33C -_021DB720: .word 0x00000B68 -_021DB724: .word UNK04_0220C354 -_021DB728: .word 0x000005EA -_021DB72C: .word 0x00001A04 - arm_func_end MOD04_021DB608 - - arm_func_start MOD04_021DB730 -MOD04_021DB730: ; 0x021DB730 - stmdb sp!, {r4, lr} - ldr r2, _021DB770 ; =UNK04_02210484 - ldr r1, _021DB774 ; =0x000011DC - ldr r2, [r2] - mov r4, r0 - add r0, r2, r1 - bl OS_LockMutex - ldr r2, _021DB770 ; =UNK04_02210484 - ldr r1, _021DB774 ; =0x000011DC - ldr r0, [r2] - add r0, r0, #0x1000 - str r4, [r0] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB770: .word UNK04_02210484 -_021DB774: .word 0x000011DC - arm_func_end MOD04_021DB730 - - arm_func_start MOD04_021DB778 -MOD04_021DB778: ; 0x021DB778 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2d4 - ldr r5, _021DC670 ; =UNK04_02210484 - mov r0, #0 - str r0, [sp] - ldr r0, [r5] - ldr r7, [sp] - add r0, r0, #0x1000 - ldr sb, [r0, #0x108] - ldr r8, [r0, #0x10c] - mov r0, r7 - str r0, [sp, #8] - str r0, [sp, #0x1c] - mvn r0, #2 - str r0, [sp, #0x20] - mov r0, r7 - str r0, [sp, #0x24] - mvn r0, #3 - str r0, [sp, #0x28] - mov r0, r7 - str r0, [sp, #0x2c] - mov r0, #0x1000 - str r0, [sp, #0x14] - mov r0, #5 - str r0, [sp, #0x30] - mov r0, r7 - str r0, [sp, #0x34] - str r0, [sp, #0x38] - str r0, [sp, #0x3c] - mov r0, #4 - str r0, [sp, #0x40] - mov r0, r7 - str r0, [sp, #0x44] - str r0, [sp, #0x48] - str r0, [sp, #0x4c] - str r0, [sp, #0x50] - str r0, [sp, #0x58] - str r0, [sp, #0x54] - mvn r0, #4 - str r0, [sp, #0x5c] - mov r0, r7 - str r0, [sp, #0x60] - mvn r0, #1 - ldr r4, _021DC674 ; =UNK04_02210490 - mov r6, #1 - str r0, [sp, #0x18] -_021DB830: - ldr r0, _021DC678 ; =UNK04_02210494 - ldr r1, [sp, #0x14] - str r6, [r0, #4] - str r1, [r0, #8] - ldr r1, _021DC67C ; =0x00004E20 - str sb, [r0, #0xc] - str r1, [r0, #0x18] - str r8, [r0, #0x10] - ldr r0, _021DC680 ; =UNK04_0220C36C - ldr r1, [r5] - ldr r2, [r0] - ldr r0, _021DC678 ; =UNK04_02210494 - add r1, r1, #0x1000 - str r2, [r0] - ldr r0, [sp, #0x18] - str r0, [r1, #4] - ldr r0, [r4] - ldr r1, _021DC678 ; =UNK04_02210494 - bl MOD04_021DB608 - cmp r0, #0 - beq _021DB89C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DB89C: - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DB8C4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DB8C4: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DB8FC - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DB8FC: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DB91C - cmp r1, #8 - beq _021DB948 - b _021DB930 -_021DB91C: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DB930: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DB948: - ldr r1, [sp, #0x1c] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DB970 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DB970: - ldr r0, [r4] - ldr r1, _021DC68C ; =UNK04_0220C418 - bl MOD04_021DA388 - bl atol - mov sl, r0 - ldr r0, _021DC690 ; =errno - ldr r0, [r0] - cmp r0, #0x22 - bne _021DB9A0 - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DB9A0: - cmp sl, #0xc8 - beq _021DBCB4 - ldr r0, _021DC694 ; =0x0000012E - cmp sl, r0 - bne _021DBC9C - ldr r0, _021DC698 ; =UNK04_0221048C - str r6, [r0] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021DBC0C - ldr r1, _021DC674 ; =UNK04_02210490 - mvn r2, #5 - str r2, [r0, #4] - ldr r0, [r1] - bl MOD04_021DAE4C - ldr r2, _021DC678 ; =UNK04_02210494 - ldr r0, _021DC69C ; =UNK04_0220BEB4 - ldr r3, _021DC67C ; =0x00004E20 - ldr r0, [r0] - mov r5, #0 - mov r4, #0x200 - ldr r1, _021DC6A0 ; =UNK04_0220C424 - str r0, [r2] - str r5, [r2, #4] - str r4, [r2, #8] - str sb, [r2, #0xc] - str r8, [r2, #0x10] - str r3, [r2, #0x18] - bl strcmp - cmp r0, #0 - ldrne r0, _021DC678 ; =UNK04_02210494 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, _021DC678 ; =UNK04_02210494 - ldr r0, [r0] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DBA5C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBA5C: - add r0, sp, #0x240 - bl MOD04_021DA238 - cmp r0, #0 - beq _021DBA88 - ldr r0, _021DC674 ; =UNK04_02210490 - add r1, sp, #0x240 - ldr r0, [r0] - mov r2, #1 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DBAA0 -_021DBA88: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBAA0: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, _021DC6A4 ; =UNK04_0220C444 - ldr r0, [r0] - ldr r2, _021DC6A8 ; =UNK04_0220C44C - mov r3, #7 - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DBAF8 - ldr r0, _021DC670 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r4, [r0, #0x118] - mov r0, r4 - bl strlen - ldr r1, _021DC674 ; =UNK04_02210490 - mov r3, r0 - ldr r0, [r1] - ldr r1, _021DC6AC ; =UNK04_0220C454 - mov r2, r4 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DBB10 -_021DBAF8: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBB10: - ldr r1, _021DC670 ; =UNK04_02210484 - ldr r0, _021DC6B0 ; =UNK04_0220C464 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0x1000 - ldr r1, [r1, #0x118] - blx r8 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r0, [r0] - ldr r1, _021DC674 ; =UNK04_02210490 - add r0, r0, #0x1000 - str r2, [r0, #0x118] - ldr r0, [r1] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DBB6C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBB6C: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r2, _021DC674 ; =UNK04_02210490 - sub r1, r0, #1 - ldr r0, [r2] - bl MOD04_021DB4A4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DBBAC - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DBBAC: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DBBD0 - cmp r1, #8 - beq _021DBBFC - b _021DBBE4 -_021DBBD0: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DBBE4: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DBBFC: - bl MOD04_021DAE4C - mov r0, #7 - bl MOD04_021DB730 - b _021DC614 -_021DBC0C: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr fp, [r1, #0xa04] - cmp fp, #0 - bne _021DBC30 - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DBC30: - mov r0, fp - bl strlen - add r1, r0, #1 - ldr r0, _021DC6B4 ; =UNK04_0220C394 - blx sb - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x114] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x114] - str r0, [sp, #0xc] - cmp r0, #0 - bne _021DBC80 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DBC80: - mov r0, fp - bl strlen - mov r2, r0 - ldr r0, [sp, #0xc] - mov r1, fp - bl strncpy - b _021DBCB4 -_021DBC9C: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #0xa - bl MOD04_021DB730 - b _021DC614 -_021DBCB4: - ldr r0, [r4] - bl MOD04_021DAE4C - add r0, sp, #0x68 - bl DWCi_BM_GetWiFiInfo - ldr r2, [sp, #0x68] - ldr r1, [sp, #0x6c] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r0 - bne _021DBDEC - ldr r1, [r5] - ldr r0, _021DC6B8 ; =UNK04_022104B0 - add r2, r1, #0x1000 - ldr r1, [sp, #0x20] - str r1, [r2, #4] - ldr r2, [sp, #0x24] - mov r1, r0 - strh r2, [r1] - strb r2, [r1, #0x34] - ldr r2, [r5] - ldr r1, [r4] - add r3, r2, #0x1000 - ldr fp, [r3, #0x108] - mov r2, r0 - str fp, [r2, #0x40] - ldr r3, [r3, #0x10c] - str r3, [r2, #0x44] - bl MOD04_021D9ACC - cmp r0, #0 - beq _021DBD38 - mov r0, #5 - bl MOD04_021DB730 - b _021DC614 -_021DBD38: - bl MOD04_021D98DC - bl MOD04_021D988C - cmp r0, #0x15 - beq _021DBDE8 - bl MOD04_021D988C - cmp r0, #9 - bne _021DBD6C - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - b _021DBDD8 -_021DBD6C: - add r0, sp, #0x7c - bl MOD04_021D97F8 - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DBDC4 - ldr r1, [sp, #0x7c] - ldr r0, _021DC6C0 ; =0xFFFFA4FA - cmp r1, r0 - beq _021DBDA0 - bl MOD04_021D988C - cmp r0, #0xb - bne _021DBDC4 -_021DBDA0: - ldr r0, _021DC670 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - bl MOD04_021D991C - mov r0, #0xb - bl MOD04_021DB730 - b _021DC614 -_021DBDC4: - ldr r0, _021DC670 ; =UNK04_02210484 - ldr r1, [sp, #0x7c] - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DBDD8: - bl MOD04_021D991C - mov r0, #6 - bl MOD04_021DB730 - b _021DC614 -_021DBDE8: - bl MOD04_021D991C -_021DBDEC: - cmp sl, #0xc8 - bne _021DBE14 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DBE14: - ldr r0, [r5] - ldr r1, _021DC6A0 ; =UNK04_0220C424 - add r2, r0, #0x1000 - ldr r0, [sp, #0x28] - str r0, [r2, #4] - ldr r0, _021DC678 ; =UNK04_02210494 - ldr r2, [sp, #0x2c] - str sb, [r0, #0xc] - str r2, [r0, #4] - ldr r2, [sp, #0x14] - str r8, [r0, #0x10] - str r2, [r0, #8] - ldr r2, _021DC6C4 ; =0x00009C40 - str r2, [r0, #0x18] - ldr r0, _021DC69C ; =UNK04_0220BEB4 - ldr r2, _021DC678 ; =UNK04_02210494 - ldr r0, [r0] - str r0, [r2] - bl strcmp - cmp r0, #0 - ldrne r0, _021DC678 ; =UNK04_02210494 - ldr r1, _021DC678 ; =UNK04_02210494 - strne r6, [r0, #0x14] - ldr r0, [r4] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DBE98 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBE98: - add r0, sp, #0x240 - bl MOD04_021DA238 - cmp r0, #0 - beq _021DBEC0 - ldr r0, [r4] - add r1, sp, #0x240 - mov r2, r6 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DBED8 -_021DBEC0: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBED8: - ldr r0, [r4] - ldr r1, _021DC6A4 ; =UNK04_0220C444 - ldr r2, _021DC6C8 ; =UNK04_0220C484 - ldr r3, [sp, #0x30] - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DBF24 - ldr r0, [r5] - add r0, r0, #0x1000 - ldr sl, [r0, #0x114] - mov r0, sl - bl strlen - mov r3, r0 - ldr r0, [r4] - ldr r1, _021DC6CC ; =UNK04_0220C48C - mov r2, sl - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DBF3C -_021DBF24: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBF3C: - ldr r1, [r5] - ldr r0, _021DC6D0 ; =UNK04_0220C3B0 - add r1, r1, #0x1000 - ldr r2, [sp, #0x34] - ldr r1, [r1, #0x114] - blx r8 - ldr r0, [r5] - add r1, r0, #0x1000 - ldr r0, [sp, #0x38] - str r0, [r1, #0x114] - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DBF8C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBF8C: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DBFC4 - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DBFC4: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DC02C - cmp r1, #3 - beq _021DBFEC - cmp r1, #8 - beq _021DC058 - b _021DC040 -_021DBFEC: - bl MOD04_021DAE4C - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DC020 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC020: - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC02C: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DC040: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC058: - ldr r1, [sp, #0x3c] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DC080 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC080: - ldr r0, [r4] - ldr r1, _021DC68C ; =UNK04_0220C418 - bl MOD04_021DA388 - bl atol - mov sl, r0 - ldr r0, _021DC690 ; =errno - ldr r0, [r0] - cmp r0, #0x22 - bne _021DC0BC - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC0BC: - cmp sl, #0xc8 - beq _021DC118 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DC10C - ldr r0, _021DC694 ; =0x0000012E - cmp sl, r0 - bne _021DC10C - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC10C: - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC118: - ldr r0, [r4] - ldr r1, _021DC6D4 ; =UNK04_0220C494 - ldr r3, [sp, #0x40] - add r2, sp, #0x64 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021DC14C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC14C: - add r0, sp, #0x64 - bl atol - ldr r1, _021DC690 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021DC17C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC17C: - ldr r1, _021DC6BC ; =UNK04_02210488 - ldr r1, [r1] - cmp r1, #1 - bne _021DC1B4 - cmp r0, #0x72 - bne _021DC1B4 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC1B4: - cmp r0, #0x64 - blt _021DC1D4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #6 - bl MOD04_021DB730 - b _021DC614 -_021DC1D4: - ldr r2, [sp, #0x44] - ldr r0, [r4] - ldr r1, _021DC6D8 ; =UNK04_0220C4A0 - mov r3, r2 - bl MOD04_021DA334 - mov fp, r0 - cmp fp, #0 - bgt _021DC20C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC20C: - ldr r2, [sp, #0x48] - ldr r0, [r4] - ldr r1, _021DC6DC ; =UNK04_0220C4A4 - mov r3, r2 - bl MOD04_021DA334 - str r0, [sp, #4] - cmp r0, #0 - bgt _021DC244 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC244: - ldr r2, [sp, #0x4c] - ldr r0, [r4] - ldr r1, _021DC6E0 ; =UNK04_0220C4AC - mov r3, r2 - bl MOD04_021DA334 - mov sl, r0 - ldr r0, _021DC6E4 ; =UNK04_0220C3CC - add r1, fp, #1 - blx sb - str r0, [sp] - cmp r0, #0 - bne _021DC28C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC28C: - ldr r1, [sp, #4] - ldr r0, _021DC6E8 ; =UNK04_0220C3D8 - add r1, r1, #1 - blx sb - movs r7, r0 - bne _021DC2BC - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC2BC: - cmp sl, #0 - ble _021DC2F4 - ldr r0, _021DC6EC ; =UNK04_0220C3E8 - add r1, sl, #1 - blx sb - str r0, [sp, #8] - cmp r0, #0 - bne _021DC2F4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC2F4: - ldr r0, [r4] - ldr r1, _021DC6D8 ; =UNK04_0220C4A0 - ldr r2, [sp] - add r3, fp, #1 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC328 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC328: - ldr r1, [sp, #4] - ldr r2, [sp, #0x50] - add r3, r1, #1 - ldr r1, [sp] - strb r2, [r1, r0] - ldr r0, [r4] - ldr r1, _021DC6DC ; =UNK04_0220C4A4 - mov r2, r7 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC36C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC36C: - ldr r1, [sp, #0x54] - cmp sl, #0 - strb r1, [r7, r0] - mov fp, r1 - ble _021DC404 - ldr r0, [r4] - ldr r1, _021DC6E0 ; =UNK04_0220C4AC - ldr r2, [sp, #8] - add r3, sl, #1 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC3B4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC3B4: - ldr r2, [sp, #0x58] - ldr r1, [sp, #8] - strb r2, [r1, r0] - mov r0, r1 - bl atol - ldr r1, _021DC690 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021DC3F0 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC3F0: - mov r1, #0x3e8 - mul fp, r0, r1 - ldr r0, _021DC6F0 ; =0x0002BF20 - cmp fp, r0 - movgt fp, r0 -_021DC404: - ldr r0, [r4] - bl MOD04_021DAE4C - ldr r0, [r5] - ldr r1, _021DC678 ; =UNK04_02210494 - add r2, r0, #0x1000 - ldr r0, [sp, #0x5c] - str r0, [r2, #4] - mov r0, r1 - ldr r2, [sp] - str sb, [r0, #0xc] - str r2, [r0] - ldr r2, [sp, #0x60] - str r8, [r0, #0x10] - str r2, [r0, #4] - ldr r2, [sp, #0x14] - str r2, [r0, #8] - ldr r2, _021DC6F4 ; =0x0001D4C0 - str r2, [r0, #0x18] - ldr r0, [r4] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DC474 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DC474: - ldr r0, [r4] - mov r1, r7 - bl MOD04_021DAACC - cmp r0, #0 - beq _021DC4A0 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DC4A0: - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DC4C8 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DC4C8: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DC500 - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DC500: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DC520 - cmp r1, #8 - beq _021DC54C - b _021DC534 -_021DC520: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DC534: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC54C: - mov r1, r6 - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DC574 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC574: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr sl, [r1, #0xa04] - cmp sl, #0 - bne _021DC598 - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC598: - mov r0, sl - bl strlen - add r1, r0, #1 - ldr r0, _021DC6F8 ; =UNK04_0220C3F8 - blx sb - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x118] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x118] - str r0, [sp, #0x10] - cmp r0, #0 - bne _021DC5E8 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC5E8: - mov r0, sl - bl strlen - mov r2, r0 - ldr r0, [sp, #0x10] - mov r1, sl - bl strncpy - ldr r0, [r4] - bl MOD04_021DAE4C - mov r0, fp - bl OS_Sleep - b _021DB830 -_021DC614: - ldr r0, [sp] - cmp r0, #0 - beq _021DC630 - ldr r0, _021DC6FC ; =UNK04_0220C4B4 - ldr r1, [sp] - mov r2, #0 - blx r8 -_021DC630: - cmp r7, #0 - beq _021DC648 - ldr r0, _021DC700 ; =UNK04_0220C4C0 - mov r1, r7 - mov r2, #0 - blx r8 -_021DC648: - ldr r0, [sp, #8] - cmp r0, #0 - addeq sp, sp, #0x2d4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021DC704 ; =UNK04_0220C4CC - ldr r1, [sp, #8] - mov r2, #0 - blx r8 - add sp, sp, #0x2d4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DC670: .word UNK04_02210484 -_021DC674: .word UNK04_02210490 -_021DC678: .word UNK04_02210494 -_021DC67C: .word 0x00004E20 -_021DC680: .word UNK04_0220C36C -_021DC684: .word OSi_ThreadInfo -_021DC688: .word 0x00001B34 -_021DC68C: .word UNK04_0220C418 -_021DC690: .word errno -_021DC694: .word 0x0000012E -_021DC698: .word UNK04_0221048C -_021DC69C: .word UNK04_0220BEB4 -_021DC6A0: .word UNK04_0220C424 -_021DC6A4: .word UNK04_0220C444 -_021DC6A8: .word UNK04_0220C44C -_021DC6AC: .word UNK04_0220C454 -_021DC6B0: .word UNK04_0220C464 -_021DC6B4: .word UNK04_0220C394 -_021DC6B8: .word UNK04_022104B0 -_021DC6BC: .word UNK04_02210488 -_021DC6C0: .word 0xFFFFA4FA -_021DC6C4: .word 0x00009C40 -_021DC6C8: .word UNK04_0220C484 -_021DC6CC: .word UNK04_0220C48C -_021DC6D0: .word UNK04_0220C3B0 -_021DC6D4: .word UNK04_0220C494 -_021DC6D8: .word UNK04_0220C4A0 -_021DC6DC: .word UNK04_0220C4A4 -_021DC6E0: .word UNK04_0220C4AC -_021DC6E4: .word UNK04_0220C3CC -_021DC6E8: .word UNK04_0220C3D8 -_021DC6EC: .word UNK04_0220C3E8 -_021DC6F0: .word 0x0002BF20 -_021DC6F4: .word 0x0001D4C0 -_021DC6F8: .word UNK04_0220C3F8 -_021DC6FC: .word UNK04_0220C4B4 -_021DC700: .word UNK04_0220C4C0 -_021DC704: .word UNK04_0220C4CC - arm_func_end MOD04_021DB778 - - arm_func_start MOD04_021DC708 -MOD04_021DC708: ; 0x021DC708 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _021DC788 ; =UNK04_02210484 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021DC740 - ldr r0, _021DC78C ; =0x0000111C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} -_021DC740: - ldr r1, _021DC788 ; =UNK04_02210484 - ldr r0, _021DC78C ; =0x0000111C - ldr r2, [r1] - mov r3, #0x1000 - ldr r1, _021DC790 ; =MOD04_021DB778 - str r3, [sp] - mov ip, #0x10 - add r0, r2, r0 - add r3, r2, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r1, _021DC788 ; =UNK04_02210484 - ldr r0, _021DC78C ; =0x0000111C - ldr r1, [r1] - add r0, r1, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021DC788: .word UNK04_02210484 -_021DC78C: .word 0x0000111C -_021DC790: .word MOD04_021DB778 - arm_func_end MOD04_021DC708 - - arm_func_start MOD04_021DC794 -MOD04_021DC794: ; 0x021DC794 - ldr r0, _021DC7A8 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_021DC7A8: .word UNK04_02210484 - arm_func_end MOD04_021DC794 - - arm_func_start MOD04_021DC7AC -MOD04_021DC7AC: ; 0x021DC7AC - stmdb sp!, {r4, lr} - ldr r1, _021DC7E8 ; =UNK04_02210484 - ldr r0, _021DC7EC ; =0x000011DC - ldr r1, [r1] - add r0, r1, r0 - bl OS_LockMutex - ldr r1, _021DC7E8 ; =UNK04_02210484 - ldr r0, _021DC7EC ; =0x000011DC - ldr r2, [r1] - add r1, r2, #0x1000 - add r0, r2, r0 - ldr r4, [r1] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DC7E8: .word UNK04_02210484 -_021DC7EC: .word 0x000011DC - arm_func_end MOD04_021DC7AC - - arm_func_start MOD04_021DC7F0 -MOD04_021DC7F0: ; 0x021DC7F0 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DC864 ; =UNK04_02210484 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DC868 ; =UNK04_02210490 - ldr r0, [r0] - cmp r0, #0 - beq _021DC820 - bl MOD04_021DB440 -_021DC820: - bl MOD04_021D9974 - ldr r0, _021DC864 ; =UNK04_02210484 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021DC848 - ldr r0, _021DC86C ; =0x0000111C - add r0, r1, r0 - bl OS_JoinThread -_021DC848: - ldr r0, _021DC864 ; =UNK04_02210484 - mvn r1, #6 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DC864: .word UNK04_02210484 -_021DC868: .word UNK04_02210490 -_021DC86C: .word 0x0000111C - arm_func_end MOD04_021DC7F0 - - arm_func_start MOD04_021DC870 -MOD04_021DC870: ; 0x021DC870 - stmdb sp!, {r4, lr} - ldr r1, _021DC958 ; =UNK04_02210484 - ldr r0, _021DC95C ; =UNK04_02210490 - ldr r1, [r1] - ldr r0, [r0] - add r1, r1, #0x1000 - cmp r0, #0 - ldr r4, [r1, #0x10c] - beq _021DC8B8 - bl MOD04_021DAE4C - ldr r1, _021DC95C ; =UNK04_02210490 - ldr r0, _021DC960 ; =UNK04_0220C4D8 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021DC95C ; =UNK04_02210490 - mov r1, #0 - str r1, [r0] -_021DC8B8: - bl MOD04_021D991C - ldr r0, _021DC958 ; =UNK04_02210484 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x1000 - ldr r1, [r0, #0x114] - cmp r1, #0 - beq _021DC8FC - ldr r0, _021DC964 ; =UNK04_0220C3B0 - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x114] -_021DC8FC: - ldr r0, _021DC958 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021DC934 - ldr r0, _021DC968 ; =UNK04_0220C464 - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x118] -_021DC934: - ldr r1, _021DC958 ; =UNK04_02210484 - ldr r0, _021DC96C ; =UNK04_0220C4E8 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021DC958: .word UNK04_02210484 -_021DC95C: .word UNK04_02210490 -_021DC960: .word UNK04_0220C4D8 -_021DC964: .word UNK04_0220C3B0 -_021DC968: .word UNK04_0220C464 -_021DC96C: .word UNK04_0220C4E8 - arm_func_end MOD04_021DC870 - - arm_func_start MOD04_021DC970 -MOD04_021DC970: ; 0x021DC970 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r1, _021DCA5C ; =UNK04_02210484 - mov r5, r0 - ldr r0, [r1] - ldr r4, [r5] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021DCA60 ; =UNK04_0220C4FC - ldr r1, _021DCA64 ; =0x000011F4 - blx r4 - ldr r1, _021DCA5C ; =UNK04_02210484 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021DCA64 ; =0x000011F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DCA5C ; =UNK04_02210484 - ldr r2, _021DCA68 ; =0xFFFE7961 - ldr r0, [r1] - ldr r3, _021DCA6C ; =0x00001108 - add r0, r0, #0x1000 - str r2, [r0, #4] - ldr ip, [r1] - ldmia r5, {r0, r1, r2} - add r3, ip, r3 - stmia r3, {r0, r1, r2} - ldr r0, _021DCA70 ; =UNK04_02210490 - ldr r0, [r0] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021DCA74 ; =UNK04_0220C510 - ldr r1, _021DCA78 ; =0x00001C10 - blx r4 - ldr r1, _021DCA70 ; =UNK04_02210490 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r1, _021DCA5C ; =UNK04_02210484 - ldr r0, _021DCA7C ; =0x000011DC - ldr r2, [r1] - ldr r1, _021DCA80 ; =UNK04_0221048C - mov r3, #0 - add r0, r2, r0 - str r3, [r1] - bl OS_InitMutex - bl MOD04_021DC708 - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DCA5C: .word UNK04_02210484 -_021DCA60: .word UNK04_0220C4FC -_021DCA64: .word 0x000011F4 -_021DCA68: .word 0xFFFE7961 -_021DCA6C: .word 0x00001108 -_021DCA70: .word UNK04_02210490 -_021DCA74: .word UNK04_0220C510 -_021DCA78: .word 0x00001C10 -_021DCA7C: .word 0x000011DC -_021DCA80: .word UNK04_0221048C - arm_func_end MOD04_021DC970 - - arm_func_start MOD04_021DCA84 -MOD04_021DCA84: ; 0x021DCA84 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - mov r6, r0 - bl strlen - mov r4, r0 - ldr r0, _021DCCB4 ; =UNK04_0220C580 - bl strlen - cmp r4, r0 - bne _021DCCA8 - ldrsb r0, [r6, #7] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0xb] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0x10] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0x13] - cmp r0, #0x3a - bne _021DCCA8 - ldrsb r0, [r6, #0x16] - cmp r0, #0x3a - bne _021DCCA8 - ldrsb r0, [r6, #0x19] - cmp r0, #0x20 - bne _021DCCA8 - add r0, sp, #0 - bl RTC_GetDate - cmp r0, #0 - bne _021DCCA8 - add r0, sp, #0x10 - bl RTC_GetTime - cmp r0, #0 - bne _021DCCA8 - add r0, sp, #0 - add r1, sp, #0x10 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r5, r1 - mvn r0, #0 - cmp r5, r0 - cmpeq r4, r0 - beq _021DCCA8 - add r0, sp, #0x1c - mov r1, r6 - bl strcpy - mov r2, #0 - ldr r1, _021DCCB8 ; =errno - add r0, sp, #0x28 - strb r2, [sp, #0x23] - strb r2, [sp, #0x27] - strb r2, [sp, #0x2c] - strb r2, [sp, #0x2f] - strb r2, [sp, #0x32] - strb r2, [sp, #0x35] - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp] - ldr r1, [r1] - cmp r1, #0x22 - beq _021DCCA8 - sub r1, r0, #0x7d0 - mov r0, #0xd - str r1, [sp] - str r0, [sp, #4] - mov r8, #0 - ldr r7, _021DCCBC ; =UNK04_0220C550 - add r6, sp, #0x24 -_021DCB9C: - ldr r0, [r7, r8, lsl #2] - mov r1, r6 - bl strcmp - cmp r0, #0 - addeq r0, r8, #1 - streq r0, [sp, #4] - beq _021DCBC4 - add r8, r8, #1 - cmp r8, #0xc - blt _021DCB9C -_021DCBC4: - ldr r0, [sp, #4] - cmp r0, #0xc - bhi _021DCCA8 - ldr r1, _021DCCB8 ; =errno - mov r2, #0 - add r0, sp, #0x21 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #8] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x2d - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x10] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x30 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x14] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x33 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x18] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - add r0, sp, #0 - add r1, sp, #0x10 - bl RTC_ConvertDateTimeToSecond - mvn r2, #0 - cmp r1, r2 - cmpeq r0, r2 - beq _021DCCA8 - subs r4, r4, r0 - ldr r2, _021DCCC0 ; =UNK04_022104FC - sbc r3, r5, r1 - ldr r1, _021DCCC4 ; =UNK04_022104F8 - mov r0, #1 - str r3, [r2, #4] - str r0, [r1] - add sp, sp, #0x40 - str r4, [r2] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021DCCA8: - mov r0, #0 - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DCCB4: .word UNK04_0220C580 -_021DCCB8: .word errno -_021DCCBC: .word UNK04_0220C550 -_021DCCC0: .word UNK04_022104FC -_021DCCC4: .word UNK04_022104F8 - arm_func_end MOD04_021DCA84 - - arm_func_start MOD04_021DCCC8 -MOD04_021DCCC8: ; 0x021DCCC8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #0 - ldr r0, [r0] - add r4, r0, #8 - mov r0, r4 - bl MOD04_021DA3DC - cmp r0, #0 - bne _021DCD08 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD08: - ldr r1, _021DCEDC ; =UNK04_0220C5A0 - mov r0, r4 - bl MOD04_021DA388 - cmp r0, #0 - beq _021DCD20 - bl MOD04_021DCA84 -_021DCD20: - ldr r1, _021DCEE0 ; =UNK04_0220C5A8 - mov r0, r4 - bl MOD04_021DA388 - cmp r0, #0 - bne _021DCD4C - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD4C: - bl atol - ldr r1, _021DCEE4 ; =errno - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _021DCD7C - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD7C: - cmp r2, #0xc8 - beq _021DCDA0 - ldr r1, _021DCEE8 ; =0xFFFF9E58 - mov r0, #0x10 - sub r1, r1, r2 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCDA0: - ldr r1, _021DCEEC ; =UNK04_0220C5B4 - add r2, sp, #0 - mov r0, r4 - mov r3, #4 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021DCDD4 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCDD4: - add r0, sp, #0 - bl atol - ldr r1, _021DCEE4 ; =errno - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _021DCE08 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCE08: - cmp r2, #0x64 - blt _021DCE2C - ldr r1, _021DCEF0 ; =0xFFFFA240 - mov r0, #0x10 - sub r1, r1, r2 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCE2C: - ldr r0, _021DCED4 ; =UNK04_02210504 - ldr r1, _021DCEF4 ; =UNK04_0220C5C0 - ldr r2, [r0] - mov r0, r4 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc18] - mov r3, #0x40 - add r2, r2, #4 - bl MOD04_021DA334 - ldr r0, _021DCED4 ; =UNK04_02210504 - ldr r1, _021DCEF8 ; =UNK04_0220C5C8 - ldr r2, [r0] - mov r0, r4 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc18] - mov r3, #0x12c - add r2, r2, #0x45 - bl MOD04_021DA334 - ldr r1, _021DCEFC ; =UNK04_0220C5D8 - add r2, sp, #0 - mov r0, r4 - mov r3, #1 - bl MOD04_021DA334 - ldrsb r0, [sp] - cmp r0, #0x59 - bne _021DCEB0 - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0xc18] - str r1, [r0] - b _021DCEC8 -_021DCEB0: - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0xc18] - str r1, [r0] -_021DCEC8: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DCED4: .word UNK04_02210504 -_021DCED8: .word 0xFFFF9DF3 -_021DCEDC: .word UNK04_0220C5A0 -_021DCEE0: .word UNK04_0220C5A8 -_021DCEE4: .word errno -_021DCEE8: .word 0xFFFF9E58 -_021DCEEC: .word UNK04_0220C5B4 -_021DCEF0: .word 0xFFFFA240 -_021DCEF4: .word UNK04_0220C5C0 -_021DCEF8: .word UNK04_0220C5C8 -_021DCEFC: .word UNK04_0220C5D8 - arm_func_end MOD04_021DCCC8 - - arm_func_start MOD04_021DCF00 -MOD04_021DCF00: ; 0x021DCF00 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldr r0, _021DCFF4 ; =0x00001B3C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #1 - bne _021DCFE4 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x28] - cmp r0, #7 - beq _021DCFB0 - cmp r0, #8 - bne _021DCFC4 - bl MOD04_021DCCC8 - cmp r0, #0 - bne _021DCF94 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #4 - ldmfd sp!, {pc} -_021DCF94: - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #3 - ldmfd sp!, {pc} -_021DCFB0: - add r0, r1, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #5 - ldmfd sp!, {pc} -_021DCFC4: - add r0, r1, #8 - bl MOD04_021DAE4C - ldr r1, _021DCFF8 ; =0xFFFFA1DB - mov r0, #0x11 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #4 - ldmfd sp!, {pc} -_021DCFE4: - mov r0, #2 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DCFF0: .word UNK04_02210504 -_021DCFF4: .word 0x00001B3C -_021DCFF8: .word 0xFFFFA1DB - arm_func_end MOD04_021DCF00 - - arm_func_start MOD04_021DCFFC -MOD04_021DCFFC: ; 0x021DCFFC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xb4 - ldr r2, _021DD244 ; =UNK04_02210504 - mov r5, r0 - ldr r2, [r2] - mov r0, r1 - add r2, r2, #0x1000 - str r1, [r2, #0xc18] - mov r1, #0 - mov r2, #0x174 - bl MI_CpuFill8 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - beq _021DD058 - ldr r0, _021DD248 ; =0x00001B3C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - bne _021DD058 - bl OS_Terminate -_021DD058: - ldr r0, _021DD24C ; =UNK04_0220BEB4 - ldr r1, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - mov r3, #0 - ldr r4, [r1] - mov r2, #0x1000 - str r0, [sp] - str r3, [sp, #4] - str r2, [sp, #8] - ldr r2, [r4] - ldr r1, _021DD250 ; =UNK04_0220C5E4 - str r2, [sp, #0xc] - ldr r2, [r4, #4] - str r2, [sp, #0x10] - bl strcmp - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - moveq r0, #0 - ldr r2, _021DD254 ; =0x00004E20 - streq r0, [sp, #0x14] - add r1, sp, #0 - add r0, r4, #8 - str r2, [sp, #0x18] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DD0DC - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD0DC: - add r0, sp, #0x1c - bl MOD04_021DA238 - cmp r0, #0 - beq _021DD10C - ldr r0, _021DD244 ; =UNK04_02210504 - add r1, sp, #0x1c - ldr r0, [r0] - mov r2, #0 - add r0, r0, #8 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DD134 -_021DD10C: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD134: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, _021DD25C ; =UNK04_0220C604 - ldr r0, [r0] - ldr r2, _021DD260 ; =UNK04_0220C60C - add r0, r0, #8 - mov r3, #6 - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DD17C - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, _021DD264 ; =UNK04_0220C614 - ldr r0, [r0] - mov r2, r5 - add r0, r0, #8 - mov r3, #4 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DD1A4 -_021DD17C: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD1A4: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DB570 - cmp r0, #0 - beq _021DD1E4 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD1E4: - ldr r0, _021DD268 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _021DD244 ; =UNK04_02210504 - ldr r2, [r1] - sub r1, r0, #1 - add r0, r2, #8 - bl MOD04_021DB4A4 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - addne sp, sp, #0xb4 - movne r0, #1 - ldmneia sp!, {r4, r5, pc} - add r0, r1, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - mov r0, #0 - add sp, sp, #0xb4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DD244: .word UNK04_02210504 -_021DD248: .word 0x00001B3C -_021DD24C: .word UNK04_0220BEB4 -_021DD250: .word UNK04_0220C5E4 -_021DD254: .word 0x00004E20 -_021DD258: .word 0xFFFFA1DC -_021DD25C: .word UNK04_0220C604 -_021DD260: .word UNK04_0220C60C -_021DD264: .word UNK04_0220C614 -_021DD268: .word OSi_ThreadInfo - arm_func_end MOD04_021DCFFC - - arm_func_start MOD04_021DD26C -MOD04_021DD26C: ; 0x021DD26C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DD2BC ; =UNK04_02210504 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD2BC ; =UNK04_02210504 - ldr r0, _021DD2C0 ; =UNK04_0220C618 - ldr r1, [r1] - mov r2, #0 - ldr r3, [r1, #4] - blx r3 - ldr r0, _021DD2BC ; =UNK04_02210504 - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD2BC: .word UNK04_02210504 -_021DD2C0: .word UNK04_0220C618 - arm_func_end MOD04_021DD26C - - arm_func_start MOD04_021DD2C4 -MOD04_021DD2C4: ; 0x021DD2C4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DD35C ; =UNK04_02210504 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - beq _021DD2FC - ldr r1, _021DD360 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD2FC: - ldr r0, _021DD364 ; =UNK04_0220C628 - ldr r1, _021DD368 ; =0x00001C1C - blx r5 - ldr r1, _021DD35C ; =UNK04_02210504 - cmp r0, #0 - str r0, [r1] - bne _021DD330 - ldr r1, _021DD360 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD330: - ldr r2, _021DD368 ; =0x00001C1C - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DD35C ; =UNK04_02210504 - mov r0, #1 - ldr r2, [r1] - str r5, [r2] - ldr r1, [r1] - str r4, [r1, #4] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DD35C: .word UNK04_02210504 -_021DD360: .word 0xFFFFA1DC -_021DD364: .word UNK04_0220C628 -_021DD368: .word 0x00001C1C - arm_func_end MOD04_021DD2C4 - - arm_func_start MOD04_021DD36C -MOD04_021DD36C: ; 0x021DD36C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ands r4, r1, #3 - addne sp, sp, #8 - mvnne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r6, #0 - mov r5, r6 - cmp r1, #0 - bls _021DD3AC -_021DD394: - ldrsb r4, [r0, r5] - add r5, r5, #1 - cmp r4, #0x2a - addne r6, r6, #6 - cmp r5, r1 - blo _021DD394 -_021DD3AC: - cmp r2, #0 - moveq r0, r6, asr #2 - addeq r0, r6, r0, lsr #29 - addeq sp, sp, #8 - moveq r0, r0, asr #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, r6, asr #2 - add r4, r6, r4, lsr #29 - mov r4, r4, asr #3 - cmp r3, r4 - addlo sp, sp, #8 - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, pc} - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2] - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r6, r2 - add ip, sp, #0 - mov lr, #0 - mov r1, #0x3f - mov r3, #0x3e -_021DD408: - mov r8, lr - mov r5, ip -_021DD410: - ldrsb r7, [r0, r8] - cmp r7, #0x41 - blt _021DD42C - cmp r7, #0x5a - suble r7, r7, #0x41 - strleb r7, [r5] - ble _021DD474 -_021DD42C: - cmp r7, #0x61 - blt _021DD444 - cmp r7, #0x7a - suble r7, r7, #0x47 - strleb r7, [r5] - ble _021DD474 -_021DD444: - cmp r7, #0x30 - blt _021DD45C - cmp r7, #0x39 - addle r7, r7, #4 - strleb r7, [r5] - ble _021DD474 -_021DD45C: - cmp r7, #0x2e - streqb r3, [r5] - beq _021DD474 - cmp r7, #0x2d - streqb r1, [r5] - strneb lr, [r5] -_021DD474: - add r8, r8, #1 - cmp r8, #4 - add r5, r5, #1 - blt _021DD410 - ldrsb r8, [sp] - ldrsb r7, [sp, #1] - add r5, r6, #1 - mov r8, r8, lsl #2 - orr r7, r8, r7, asr #4 - sub r5, r5, r2 - strb r7, [r6] - cmp r5, r4 - add r0, r0, #4 - bge _021DD4F0 - ldrsb r8, [sp, #1] - ldrsb r7, [sp, #2] - add r5, r6, #2 - mov r8, r8, lsl #4 - orr r7, r8, r7, asr #2 - sub r5, r5, r2 - strb r7, [r6, #1] - cmp r5, r4 - bge _021DD4F0 - ldrsb r7, [sp, #2] - ldrsb r5, [sp, #3] - orr r5, r5, r7, lsl #6 - strb r5, [r6, #2] - add r6, r6, #3 - sub r5, r6, r2 - cmp r5, r4 - blt _021DD408 -_021DD4F0: - mov r0, r5 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MOD04_021DD36C - - arm_func_start MOD04_021DD4FC -MOD04_021DD4FC: ; 0x021DD4FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, _021DD69C ; =0xAAAAAAAB - str r2, [sp] - umull r4, r5, r1, r4 - ldr r6, _021DD6A0 ; =0x00000003 - mov r5, r5, lsr #1 - umull r4, r5, r6, r5 - mov sl, r0 - subs r5, r1, r4 - movne r4, #4 - ldr r2, _021DD69C ; =0xAAAAAAAB - ldr r0, [sp] - moveq r4, #0 - cmp r0, #0 - umull r0, r2, r1, r2 - mov r2, r2, lsr #1 - addeq sp, sp, #0xc - add r0, r4, r2, lsl #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r3, r0 - addlo sp, sp, #0xc - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, sl, r1 - ldr r6, [sp] - cmp sl, r7 - beq _021DD68C - mov r0, #1 - mov r5, #0 - str r0, [sp, #4] - mov fp, #3 - mov r4, #0x2a -_021DD580: - sub sb, r7, sl - ldr r1, _021DD6A4 ; =0x2AAAAAAB - mov r0, sb, lsl #3 - smull r2, r3, r1, r0 - ldr r1, _021DD6A8 ; =0x00000006 - add r3, r3, r0, lsr #31 - smull r2, r3, r1, r3 - subs r3, r0, r2 - ldr r1, _021DD6A4 ; =0x2AAAAAAB - ldrne r8, [sp, #4] - smull r2, r3, r1, r0 - moveq r8, r5 - add r3, r3, r0, lsr #31 - cmp sb, #3 - movge sb, fp - add r0, sp, #8 - mov r1, r5 - mov r2, fp - add r8, r3, r8 - bl MI_CpuFill8 - mov r0, sl - add r1, sp, #8 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, _021DD6AC ; =UNK04_0220C638 - cmp r8, #2 - ldr r1, [r0] - ldrb r0, [sp, #8] - mov r0, r0, asr #2 - ldrsb r0, [r1, r0] - strb r0, [r6] - strltb r4, [r6, #1] - blt _021DD628 - ldrb r2, [sp, #8] - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #9] - mov r2, r2, lsl #4 - and r2, r2, #0x3f - ldr r0, [r0] - orr r1, r2, r1, asr #4 - ldrsb r0, [r0, r1] - strb r0, [r6, #1] -_021DD628: - cmp r8, #3 - strltb r4, [r6, #2] - blt _021DD658 - ldrb r2, [sp, #9] - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #0xa] - mov r2, r2, lsl #2 - and r2, r2, #0x3f - ldr r0, [r0] - orr r1, r2, r1, asr #6 - ldrsb r0, [r0, r1] - strb r0, [r6, #2] -_021DD658: - cmp r8, #4 - strltb r4, [r6, #3] - blt _021DD67C - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #0xa] - ldr r2, [r0] - and r0, r1, #0x3f - ldrsb r0, [r2, r0] - strb r0, [r6, #3] -_021DD67C: - add sl, sl, sb - cmp sl, r7 - add r6, r6, #4 - bne _021DD580 -_021DD68C: - ldr r0, [sp] - sub r0, r6, r0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DD69C: .word 0xAAAAAAAB -_021DD6A0: .word 0x00000003 -_021DD6A4: .word 0x2AAAAAAB -_021DD6A8: .word 0x00000006 -_021DD6AC: .word UNK04_0220C638 - arm_func_end MOD04_021DD4FC - - arm_func_start MOD04_021DD6B0 -MOD04_021DD6B0: ; 0x021DD6B0 - ldr r3, _021DD6CC ; =UNK04_02210508 - ldr r2, [r3] - cmp r2, #9 - ldrne r2, _021DD6D0 ; =UNK04_0221050C - strne r0, [r3] - strne r1, [r2] - bx lr - .align 2, 0 -_021DD6CC: .word UNK04_02210508 -_021DD6D0: .word UNK04_0221050C - arm_func_end MOD04_021DD6B0 - - arm_func_start MOD04_021DD6D4 -MOD04_021DD6D4: ; 0x021DD6D4 - ldr r0, _021DD6EC ; =UNK04_02210508 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_021DD6EC: .word UNK04_02210508 - arm_func_end MOD04_021DD6D4 - - arm_func_start MOD04_021DD6F0 -MOD04_021DD6F0: ; 0x021DD6F0 - ldr r1, _021DD710 ; =UNK04_02210508 - ldr r0, [r1] - cmp r0, #9 - movne r2, #0 - ldrne r0, _021DD714 ; =UNK04_0221050C - strne r2, [r1] - strne r2, [r0] - bx lr - .align 2, 0 -_021DD710: .word UNK04_02210508 -_021DD714: .word UNK04_0221050C - arm_func_end MOD04_021DD6F0 - - arm_func_start MOD04_021DD718 -MOD04_021DD718: ; 0x021DD718 - cmp r0, #0 - ldrne r2, _021DD800 ; =UNK04_0221050C - ldrne r2, [r2] - strne r2, [r0] - cmp r1, #0 - beq _021DD7F4 - ldr r0, _021DD804 ; =UNK04_02210508 - ldr r0, [r0] - cmp r0, #0x11 - addls pc, pc, r0, lsl #2 - b _021DD7EC -_021DD744: ; jump table - b _021DD7EC ; case 0 - b _021DD7BC ; case 1 - b _021DD78C ; case 2 - b _021DD78C ; case 3 - b _021DD78C ; case 4 - b _021DD78C ; case 5 - b _021DD798 ; case 6 - b _021DD7A4 ; case 7 - b _021DD78C ; case 8 - b _021DD7BC ; case 9 - b _021DD7B0 ; case 10 - b _021DD7B0 ; case 11 - b _021DD7B0 ; case 12 - b _021DD7B0 ; case 13 - b _021DD7C8 ; case 14 - b _021DD7D4 ; case 15 - b _021DD7E0 ; case 16 - b _021DD7D4 ; case 17 -_021DD78C: - mov r0, #6 - str r0, [r1] - b _021DD7F4 -_021DD798: - mov r0, #3 - str r0, [r1] - b _021DD7F4 -_021DD7A4: - mov r0, #4 - str r0, [r1] - b _021DD7F4 -_021DD7B0: - mov r0, #1 - str r0, [r1] - b _021DD7F4 -_021DD7BC: - mov r0, #7 - str r0, [r1] - b _021DD7F4 -_021DD7C8: - mov r0, #5 - str r0, [r1] - b _021DD7F4 -_021DD7D4: - mov r0, #6 - str r0, [r1] - b _021DD7F4 -_021DD7E0: - mov r0, #2 - str r0, [r1] - b _021DD7F4 -_021DD7EC: - mov r0, #0 - str r0, [r1] -_021DD7F4: - ldr r0, _021DD804 ; =UNK04_02210508 - ldr r0, [r0] - bx lr - .align 2, 0 -_021DD800: .word UNK04_0221050C -_021DD804: .word UNK04_02210508 - arm_func_end MOD04_021DD718 - - arm_func_start MOD04_021DD808 -MOD04_021DD808: ; 0x021DD808 - cmp r0, #0 - ldrne r1, _021DD824 ; =UNK04_0221050C - ldrne r1, [r1] - strne r1, [r0] - ldr r0, _021DD828 ; =UNK04_02210508 - ldr r0, [r0] - bx lr - .align 2, 0 -_021DD824: .word UNK04_0221050C -_021DD828: .word UNK04_02210508 - arm_func_end MOD04_021DD808 - - arm_func_start MOD04_021DD82C -MOD04_021DD82C: ; 0x021DD82C - ldr ip, _021DD840 ; =MOD04_021DD904 - mov r1, r0 - mov r0, #5 - mov r2, #0 - bx ip - .align 2, 0 -_021DD840: .word MOD04_021DD904 - arm_func_end MOD04_021DD82C - - arm_func_start MOD04_021DD844 -MOD04_021DD844: ; 0x021DD844 - ldr ip, _021DD85C ; =MOD04_021DD8E8 - mov r2, r1 - mov r1, r0 - mov r3, r2 - mov r0, #5 - bx ip - .align 2, 0 -_021DD85C: .word MOD04_021DD8E8 - arm_func_end MOD04_021DD844 - - arm_func_start MOD04_021DD860 -MOD04_021DD860: ; 0x021DD860 - ldr ip, _021DD870 ; =MOD04_021DD944 - mov r1, r0 - mov r0, #5 - bx ip - .align 2, 0 -_021DD870: .word MOD04_021DD944 - arm_func_end MOD04_021DD860 - - arm_func_start MOD04_021DD874 -MOD04_021DD874: ; 0x021DD874 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr ip, _021DD8E0 ; =UNK04_02210514 - mov r4, r2 - mov r7, r3 - mov r5, r1 - ldr r2, [sp, #0x18] - ldr r3, [ip] - mov r1, r7 - mov r8, r0 - blx r3 - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r5, #0 - beq _021DD8D8 - mov r0, r5 - mov r1, r6 - mov r2, r7 - bl MI_CpuCopy8 - ldr r1, _021DD8E4 ; =UNK04_02210510 - mov r0, r8 - ldr r3, [r1] - mov r1, r5 - mov r2, r4 - blx r3 -_021DD8D8: - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DD8E0: .word UNK04_02210514 -_021DD8E4: .word UNK04_02210510 - arm_func_end MOD04_021DD874 - - arm_func_start MOD04_021DD8E8 -MOD04_021DD8E8: ; 0x021DD8E8 - stmdb sp!, {lr} - sub sp, sp, #4 - mov ip, #0x20 - str ip, [sp] - bl MOD04_021DD874 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DD8E8 - - arm_func_start MOD04_021DD904 -MOD04_021DD904: ; 0x021DD904 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD920 ; =UNK04_02210510 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD920: .word UNK04_02210510 - arm_func_end MOD04_021DD904 - - arm_func_start MOD04_021DD924 -MOD04_021DD924: ; 0x021DD924 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD940 ; =UNK04_02210514 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD940: .word UNK04_02210514 - arm_func_end MOD04_021DD924 - - arm_func_start MOD04_021DD944 -MOD04_021DD944: ; 0x021DD944 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD964 ; =UNK04_02210514 - mov r2, #0x20 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD964: .word UNK04_02210514 - arm_func_end MOD04_021DD944 - - arm_func_start MOD04_021DD968 -MOD04_021DD968: ; 0x021DD968 - ldr r3, _021DD97C ; =UNK04_02210514 - ldr r2, _021DD980 ; =UNK04_02210510 - str r0, [r3] - str r1, [r2] - bx lr - .align 2, 0 -_021DD97C: .word UNK04_02210514 -_021DD980: .word UNK04_02210510 - arm_func_end MOD04_021DD968 - - arm_func_start MOD04_021DD984 -MOD04_021DD984: ; 0x021DD984 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DDCE8 - bl MOD04_021DDB14 - cmp r0, #0 - beq _021DD9CC - bl MOD04_021EBAB8 - mov r2, r0 - cmp r2, #0x63 - ldr r1, _021DD9D8 ; =0xFFFF2D10 - movhi r2, #0x63 - mov r0, #8 - sub r1, r1, r2 - bl MOD04_021DD6B0 - bl MOD04_021DDBBC - add sp, sp, #4 - mov r0, #1 - ldmfd sp!, {pc} -_021DD9CC: - mov r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD9D8: .word 0xFFFF2D10 - arm_func_end MOD04_021DD984 - - arm_func_start MOD04_021DD9DC -MOD04_021DD9DC: ; 0x021DD9DC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r1, #0 - mov r2, #0x3c - mov r4, r0 - bl MI_CpuFill8 - mov r0, #0xff - str r0, [r4, #4] - bl MOD04_021DDC1C - cmp r0, #4 - addne sp, sp, #0x18 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - bl MOD04_021EBAB8 - str r0, [r4] - bl OS_DisableInterrupts - mov r6, r0 - bl WCM_GetApMacAddress - mov r5, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DDA4C - mov r0, r6 - bl OS_RestoreInterrupts - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DDA4C: - mov r0, r5 - add r1, r4, #0x33 - mov r2, #6 - bl MI_CpuCopy8 - ldr r0, [r4] - cmp r0, #0 - blt _021DDAB0 - cmp r0, #3 - bge _021DDAB0 - add r0, sp, #0 - bl WCM_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DDAA0 - mov r0, r6 - bl OS_RestoreInterrupts - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DDAA0: - ldrh r2, [sp] - mov r0, r5 - add r1, r4, #0x12 - bl MI_CpuCopy8 -_021DDAB0: - mov r0, r6 - bl OS_RestoreInterrupts - add r0, sp, #2 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - add r0, sp, #2 - bl MOD04_021EBA28 - cmp r0, #1 - bne _021DDAFC - ldrb r1, [sp, #8] - cmp r1, #0 - beq _021DDAFC - sub r3, r1, #0x30 - add r0, sp, #9 - add r1, r4, #8 - mov r2, #9 - str r3, [r4, #4] - bl MI_CpuCopy8 -_021DDAFC: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DD9DC - - arm_func_start MOD04_021DDB08 -MOD04_021DDB08: ; 0x021DDB08 - ldr ip, _021DDB10 ; =WCM_GetLinkLevel - bx ip - .align 2, 0 -_021DDB10: .word WCM_GetLinkLevel - arm_func_end MOD04_021DDB08 - - arm_func_start MOD04_021DDB14 -MOD04_021DDB14: ; 0x021DDB14 - ldr r0, _021DDB3C ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - beq _021DDB34 - ldrh r0, [r0, #4] - cmp r0, #6 - moveq r0, #1 - bxeq lr -_021DDB34: - mov r0, #0 - bx lr - .align 2, 0 -_021DDB3C: .word UNK04_02210518 - arm_func_end MOD04_021DDB14 - - arm_func_start MOD04_021DDB40 -MOD04_021DDB40: ; 0x021DDB40 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDBB8 ; =UNK04_02210518 - ldr r2, [r0] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldrh r1, [r2, #4] - cmp r1, #8 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - cmp r1, #1 - moveq r1, #0 - streq r1, [r0] - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - mov r0, #5 - strh r0, [r2, #4] - bl MOD04_021EB9D8 - cmp r0, #0 - ldrne r0, _021DDBB8 ; =UNK04_02210518 - movne r1, #0 - strne r1, [r0] - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDBB8: .word UNK04_02210518 - arm_func_end MOD04_021DDB40 - - arm_func_start MOD04_021DDBBC -MOD04_021DDBBC: ; 0x021DDBBC - stmdb sp!, {r4, lr} - ldr r0, _021DDC18 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - ldrh r1, [r1, #4] - cmp r1, #1 - moveq r1, #0 - streq r1, [r0] - ldmeqia sp!, {r4, pc} - bl MOD04_021EB9D8 - cmp r0, #0 - bne _021DDC08 - mov r4, #0xa -_021DDBF4: - mov r0, r4 - bl OS_Sleep - bl MOD04_021EB9D8 - cmp r0, #0 - beq _021DDBF4 -_021DDC08: - ldr r0, _021DDC18 ; =UNK04_02210518 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021DDC18: .word UNK04_02210518 - arm_func_end MOD04_021DDBBC - - arm_func_start MOD04_021DDC1C -MOD04_021DDC1C: ; 0x021DDC1C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDCE4 ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldrh r0, [r0, #4] - cmp r0, #1 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021EBAE8 - mov r1, r0 - cmp r1, #5 - bne _021DDC80 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #4 - ldr r3, [r1] - mov r2, #1 - strh r0, [r3, #4] - ldr r1, [r1] - add sp, sp, #4 - strh r2, [r1, #6] - ldmfd sp!, {pc} -_021DDC80: - cmp r1, #0 - bge _021DDCD8 - mvn r0, #9 - cmp r1, r0 - blt _021DDCB8 - sub r1, r1, #0x2bc - mov r0, #9 - bl MOD04_021DD6B0 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #8 - ldr r1, [r1] - add sp, sp, #4 - strh r0, [r1, #4] - ldmfd sp!, {pc} -_021DDCB8: - mov r0, #5 - bl MOD04_021DD6B0 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #7 - ldr r1, [r1] - add sp, sp, #4 - strh r0, [r1, #4] - ldmfd sp!, {pc} -_021DDCD8: - mov r0, #2 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDCE4: .word UNK04_02210518 - arm_func_end MOD04_021DDC1C - - arm_func_start MOD04_021DDCE8 -MOD04_021DDCE8: ; 0x021DDCE8 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDD78 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldrh r0, [r1, #4] - cmp r0, #2 - bne _021DDD28 - bl MOD04_021EBB80 - ldr r1, _021DDD78 ; =UNK04_02210518 - add sp, sp, #4 - ldr r1, [r1] - str r0, [r1] - ldmfd sp!, {pc} -_021DDD28: - cmp r0, #4 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldrh r0, [r1, #6] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl WCM_GetPhase - cmp r0, #9 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DDD78 ; =UNK04_02210518 - mov r3, #0 - ldr r2, [r0] - mov r1, #6 - strh r3, [r2, #6] - ldr r0, [r0] - strh r1, [r0, #4] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDD78: .word UNK04_02210518 - arm_func_end MOD04_021DDCE8 - - arm_func_start MOD04_021DDD7C -MOD04_021DDD7C: ; 0x021DDD7C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDDC8 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldr r0, [r1] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - mov r0, #3 - strh r0, [r1, #4] - bl MOD04_021DDC1C - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDDC8: .word UNK04_02210518 - arm_func_end MOD04_021DDD7C - - arm_func_start MOD04_021DDDCC -MOD04_021DDDCC: ; 0x021DDDCC - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _021DDE70 ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - beq _021DDE5C - ldrh r0, [r0, #4] - cmp r0, #1 - addne sp, sp, #0xc - ldmneia sp!, {pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - ldr r0, _021DDE70 ; =UNK04_02210518 - ldr r3, _021DDE74 ; =MOD04_021DD944 - ldr lr, [r0] - ldr r2, _021DDE78 ; =MOD04_021DD904 - ldrh ip, [lr, #8] - add r0, sp, #0 - mov r1, #2 - strb ip, [sp, #8] - ldrh ip, [lr, #0xa] - strb ip, [sp, #9] - str r3, [sp] - str r2, [sp, #4] - strh r1, [lr, #4] - bl MOD04_021EBC60 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {pc} - mov r0, #9 - mvn r1, #5 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmfd sp!, {pc} -_021DDE5C: - mov r0, #9 - mvn r1, #3 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021DDE70: .word UNK04_02210518 -_021DDE74: .word MOD04_021DD944 -_021DDE78: .word MOD04_021DD904 - arm_func_end MOD04_021DDDCC - - arm_func_start MOD04_021DDE7C -MOD04_021DDE7C: ; 0x021DDE7C - stmdb sp!, {lr} - sub sp, sp, #4 - cmp r0, #0 - beq _021DDEA4 - cmp r0, #1 - beq _021DDEB4 - cmp r0, #2 - beq _021DDEC4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEA4: - ldr r0, _021DDED4 ; =UNK04_0220D280 - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEB4: - ldr r0, _021DDED8 ; =UNK04_0220D2A8 - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEC4: - ldr r0, _021DDEDC ; =UNK04_0220D2CC - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDED4: .word UNK04_0220D280 -_021DDED8: .word UNK04_0220D2A8 -_021DDEDC: .word UNK04_0220D2CC - arm_func_end MOD04_021DDE7C - - arm_func_start MOD04_021DDEE0 -MOD04_021DDEE0: ; 0x021DDEE0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _021DDF3C ; =UNK04_02210518 - mov r6, r0 - ldr r2, [r2] - mov r5, r1 - mov r4, r3 - cmp r2, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - strh r5, [r6, #8] - mov r0, #1 - strh r0, [r6, #0xa] - strh r0, [r6, #4] - mov r0, #0 - ldr r1, _021DDF3C ; =UNK04_02210518 - strh r0, [r6, #6] - str r6, [r1] - bl MOD04_021DDE7C - mov r0, r4 - bl CPS_SetSslHandshakePriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DDF3C: .word UNK04_02210518 - arm_func_end MOD04_021DDEE0 - - arm_func_start MOD04_021DDF40 -MOD04_021DDF40: ; 0x021DDF40 - ldr ip, _021DDF48 ; =MOD04_021D9974 - bx ip - .align 2, 0 -_021DDF48: .word MOD04_021D9974 - arm_func_end MOD04_021DDF40 - - arm_func_start MOD04_021DDF4C -MOD04_021DDF4C: ; 0x021DDF4C - stmdb sp!, {lr} - sub sp, sp, #0x1c4 - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #0x1c4 - moveq r0, #0 - ldmeqia sp!, {pc} - add r0, r0, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - addeq sp, sp, #0x1c4 - moveq r0, #1 - ldmeqia sp!, {pc} - bl MOD04_021D988C - cmp r0, #0 - beq _021DDFA4 - cmp r0, #0x14 - beq _021DDFE0 - cmp r0, #0x15 - beq _021DDFB0 - b _021DE010 -_021DDFA4: - add sp, sp, #0x1c4 - mov r0, #2 - ldmfd sp!, {pc} -_021DDFB0: - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r0, _021DE054 ; =UNK04_0221051C - mov r1, #0 - str r1, [r0] - add sp, sp, #0x1c4 - mov r0, #3 - ldmfd sp!, {pc} -_021DDFE0: - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r0, _021DE054 ; =UNK04_0221051C - mov r1, #0 - str r1, [r0] - add sp, sp, #0x1c4 - mov r0, #5 - ldmfd sp!, {pc} -_021DE010: - add r0, sp, #0 - bl MOD04_021D97F8 - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r1, [sp] - ldr r2, _021DE054 ; =UNK04_0221051C - mov r3, #0 - mov r0, #2 - str r3, [r2] - bl MOD04_021DD6B0 - mov r0, #4 - add sp, sp, #0x1c4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE054: .word UNK04_0221051C -_021DE058: .word 0x00001E1C - arm_func_end MOD04_021DDF4C - - arm_func_start MOD04_021DE05C -MOD04_021DE05C: ; 0x021DE05C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DE130 ; =UNK04_0221051C - ldr r0, [r0] - cmp r0, #0 - beq _021DE078 - bl OS_Terminate -_021DE078: - ldr r1, _021DE134 ; =0x00001E1C - mov r0, #4 - bl MOD04_021DD944 - ldr r1, _021DE130 ; =UNK04_0221051C - cmp r0, #0 - str r0, [r1] - bne _021DE0AC - ldr r1, _021DE138 ; =0xFFFFB17C - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmfd sp!, {pc} -_021DE0AC: - ldr r2, _021DE134 ; =0x00001E1C - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _021DE130 ; =UNK04_0221051C - ldr r1, _021DE13C ; =0x00001C44 - ldr r2, [r0] - ldr r0, _021DE140 ; =UNK04_0220D2EC - add r1, r2, r1 - mov r2, #9 - bl MI_CpuCopy8 - ldr r1, _021DE130 ; =UNK04_0221051C - ldr r2, _021DE144 ; =MOD04_021DD944 - ldr r0, [r1] - ldr r3, _021DE148 ; =MOD04_021DD904 - add r0, r0, #0x1000 - str r2, [r0, #0xc50] - ldr r0, [r1] - ldr r2, _021DE14C ; =0x00001C10 - add r0, r0, #0x1000 - str r3, [r0, #0xc54] - ldr r1, [r1] - add r0, r1, r2 - bl MOD04_021D9ACC - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldr r1, _021DE138 ; =0xFFFFB17C - mov r0, #9 - bl MOD04_021DD6B0 - mov r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE130: .word UNK04_0221051C -_021DE134: .word 0x00001E1C -_021DE138: .word 0xFFFFB17C -_021DE13C: .word 0x00001C44 -_021DE140: .word UNK04_0220D2EC -_021DE144: .word MOD04_021DD944 -_021DE148: .word MOD04_021DD904 -_021DE14C: .word 0x00001C10 - arm_func_end MOD04_021DE05C - - arm_func_start MOD04_021DE150 -MOD04_021DE150: ; 0x021DE150 - stmdb sp!, {r4, lr} - bl MOD04_021DCF00 - mov r4, r0 - sub r0, r4, #3 - cmp r0, #2 - bhi _021DE16C - bl MOD04_021DD26C -_021DE16C: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DE150 - - arm_func_start MOD04_021DE174 -MOD04_021DE174: ; 0x021DE174 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - ldr r0, _021DE1EC ; =MOD04_021DD944 - ldr r1, _021DE1F0 ; =MOD04_021DD904 - bl MOD04_021DD2C4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - mov r0, r5 - bl strlen - cmp r0, #0 - bne _021DE1C0 - ldr r0, _021DE1F4 ; =UNK04_0220D2F0 - mov r1, r4 - bl MOD04_021DCFFC - b _021DE1CC -_021DE1C0: - mov r0, r5 - mov r1, r4 - bl MOD04_021DCFFC -_021DE1CC: - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r4, r5, pc} - bl MOD04_021DD26C - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DE1EC: .word MOD04_021DD944 -_021DE1F0: .word MOD04_021DD904 -_021DE1F4: .word UNK04_0220D2F0 - arm_func_end MOD04_021DE174 - - arm_func_start MOD04_021DE1F8 -MOD04_021DE1F8: ; 0x021DE1F8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DE2C4 ; =UNK04_022104F8 - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - bl RTC_GetDate - cmp r0, #0 - bne _021DE23C - mov r0, r4 - bl RTC_GetTime - cmp r0, #0 - beq _021DE248 -_021DE23C: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DE248: - mov r0, r5 - mov r1, r4 - bl RTC_ConvertDateTimeToSecond - mvn r2, #0 - cmp r1, r2 - cmpeq r0, r2 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021DE2C8 ; =UNK04_022104FC - mov ip, #0 - ldr lr, [r2] - ldr r3, [r2, #4] - subs r2, r0, lr - sbc r3, r1, r3 - subs r0, r2, ip - sbcs r0, r3, ip - blt _021DE2A0 - ldr r0, _021DE2CC ; =0xBC19137F - subs r0, r0, r2 - sbcs r0, ip, r3 - bge _021DE2AC -_021DE2A0: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DE2AC: - mov r0, r5 - mov r1, r4 - bl RTC_ConvertSecondToDateTime - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DE2C4: .word UNK04_022104F8 -_021DE2C8: .word UNK04_022104FC -_021DE2CC: .word 0xBC19137F - arm_func_end MOD04_021DE1F8 - - arm_func_start MOD04_021DE2D0 -MOD04_021DE2D0: ; 0x021DE2D0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl MOD04_02207330 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021DE2D0 - - arm_func_start MOD04_021DE308 -MOD04_021DE308: ; 0x021DE308 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {pc} - bl MOD04_02207158 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DE308 - - arm_func_start MOD04_021DE330 -MOD04_021DE330: ; 0x021DE330 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_0220733C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE330 - - arm_func_start MOD04_021DE364 -MOD04_021DE364: ; 0x021DE364 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xb0 - mul r2, r4, r0 - mov r0, r6 - mov r1, #0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022074EC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE364 - - arm_func_start MOD04_021DE3AC -MOD04_021DE3AC: ; 0x021DE3AC - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl MOD04_022077A8 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DE3AC - - arm_func_start MOD04_021DE3D0 -MOD04_021DE3D0: ; 0x021DE3D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022069DC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE3D0 - - arm_func_start MOD04_021DE404 -MOD04_021DE404: ; 0x021DE404 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DE454 ; =UNK04_02210520 - ldr r2, [r1] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - str r0, [r2, #4] - ldr r0, [r1] - ldr r0, [r0, #0x48] - cmp r0, #0 - bne _021DE440 - bl MOD04_021DE730 - b _021DE448 -_021DE440: - ldr r0, _021DE458 ; =MOD04_021DE730 - bl MOD04_02206E6C -_021DE448: - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE454: .word UNK04_02210520 -_021DE458: .word MOD04_021DE730 - arm_func_end MOD04_021DE404 - - arm_func_start MOD04_021DE45C -MOD04_021DE45C: ; 0x021DE45C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xa80 - mov r1, #0x20 - bl MOD04_021DE884 - ldr r2, _021DE568 ; =UNK04_02210520 - mov r1, #0 - str r0, [r2] - str r1, [r0, #0x48] - ldr r0, [r2] - mov r2, #0xa80 - bl MI_CpuFill8 - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r5 - ldr r3, [r0] - mov r2, #0x1f - str r6, [r3] - ldr r0, [r0] - add r0, r0, #8 - bl strncpy - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r4 - ldr r0, [r0] - mov r2, #0x1f - add r0, r0, #0x28 - bl strncpy - ldr r1, _021DE568 ; =UNK04_02210520 - ldr r0, _021DE56C ; =UNK04_0220D2F8 - ldr r1, [r1] - add r1, r1, #0x4c - bl MOD04_021DE174 - cmp r0, #0 - bne _021DE520 - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - bl MOD04_021DE86C - ldr r1, _021DE568 ; =UNK04_02210520 - mov r0, #0 - str r0, [r1] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_021DE520: - ldr r0, _021DE568 ; =UNK04_02210520 - mov r2, #0x800 - ldr r0, [r0] - ldr r1, _021DE570 ; =MOD04_021DE574 - add r0, r0, #0x9c0 - mov r3, r0 - str r2, [sp] - mov ip, #0x10 - mov r2, #0 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE568: .word UNK04_02210520 -_021DE56C: .word UNK04_0220D2F8 -_021DE570: .word MOD04_021DE574 - arm_func_end MOD04_021DE45C - - arm_func_start MOD04_021DE574 -MOD04_021DE574: ; 0x021DE574 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2a4 - mov r7, #0 - mov r6, #6 - mvn r5, #0 - mov r4, #0x64 -_021DE58C: - bl MOD04_021DE150 - cmp r0, #3 - bne _021DE6AC - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r5, [r0] - add r0, r5, #0x50 - bl strlen - mov r4, r0 - ldr r0, _021DE71C ; =UNK04_0220D300 - bl strlen - add r0, r4, r0 - cmp r0, #0xff - bls _021DE5D8 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE5D8: - ldr r2, _021DE720 ; =UNK04_0220D314 - add r0, sp, #0x10 - add r3, r5, #0x50 - mov r1, #0x100 - bl OS_SNPrintf - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, [r0] - add r0, r4, #0x91 - bl strlen - mov r1, r0 - add r2, sp, #0x110 - add r0, r4, #0x91 - mov r3, #0x190 - bl MOD04_021DD4FC - cmp r0, #0 - bge _021DE630 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE630: - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, _021DE724 ; =MOD04_021DE774 - ldr r2, [r0] - ldr r0, _021DE728 ; =MOD04_021DE884 - add r1, r2, #8 - str r1, [sp] - add r1, r2, #0x28 - str r1, [sp, #4] - ldr r1, _021DE72C ; =MOD04_021DE86C - add r2, sp, #0x10 - add r3, sp, #0x110 - str r4, [sp, #8] - bl MOD04_02206EFC - cmp r0, #0 - bne _021DE684 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE684: - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r3, [r1] - mov r4, #1 - mov r1, r0 - mvn r2, #0 - str r4, [r3, #0x48] - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6AC: - cmp r0, #4 - bne _021DE6EC - add r0, sp, #0xc - bl MOD04_021DD808 - ldr r1, [sp, #0xc] - mov r0, #0xe - bl MOD04_021DD6B0 - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r2, [r1] - mov r1, #3 - ldr r3, [r2] - mvn r2, #0 - blx r3 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6EC: - cmp r0, #5 - bne _021DE704 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MOD04_021DE774 -_021DE704: - mov r0, r4 - bl OS_Sleep - b _021DE58C - arm_func_end MOD04_021DE574 - - arm_func_start MOD04_021DE710 -MOD04_021DE710: ; 0x021DE710 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DE718: .word UNK04_02210520 -_021DE71C: .word UNK04_0220D300 -_021DE720: .word UNK04_0220D314 -_021DE724: .word MOD04_021DE774 -_021DE728: .word MOD04_021DE884 -_021DE72C: .word MOD04_021DE86C - arm_func_end MOD04_021DE710 - - arm_func_start MOD04_021DE730 -MOD04_021DE730: ; 0x021DE730 - stmdb sp!, {r4, lr} - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_JoinThread - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - ldr r4, [r0, #4] - bl MOD04_021DE86C - ldr r0, _021DE770 ; =UNK04_02210520 - mov r1, #0 - str r1, [r0] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - blx r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DE770: .word UNK04_02210520 - arm_func_end MOD04_021DE730 - - arm_func_start MOD04_021DE774 -MOD04_021DE774: ; 0x021DE774 - stmdb sp!, {r4, r5, r6, lr} - movs r5, r1 - mov r6, r0 - mov r4, r2 - bne _021DE79C - ldr r3, _021DE854 ; =UNK04_02210520 - ldr r3, [r3] - ldr r3, [r3] - blx r3 - ldmia sp!, {r4, r5, r6, pc} -_021DE79C: - cmp r5, #8 - addls pc, pc, r5, lsl #2 - b _021DE830 -_021DE7A8: ; jump table - b _021DE830 ; case 0 - b _021DE7CC ; case 1 - b _021DE7DC ; case 2 - b _021DE7E4 ; case 3 - b _021DE7F4 ; case 4 - b _021DE804 ; case 5 - b _021DE834 ; case 6 - b _021DE818 ; case 7 - b _021DE820 ; case 8 -_021DE7CC: - ldr r1, _021DE858 ; =0xFFFF86E7 - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE7DC: - bl OS_Terminate - b _021DE834 -_021DE7E4: - ldr r1, _021DE85C ; =0xFFFF86D4 - mov r0, #0xf - bl MOD04_021DD6B0 - b _021DE834 -_021DE7F4: - ldr r1, _021DE860 ; =0xFFFF86CA - mov r0, #0xe - bl MOD04_021DD6B0 - b _021DE834 -_021DE804: - ldr r1, _021DE864 ; =0xFFFF86E8 - mov r0, #0xe - sub r1, r1, r4 - bl MOD04_021DD6B0 - b _021DE834 -_021DE818: - bl OS_Terminate - b _021DE834 -_021DE820: - ldr r1, _021DE868 ; =0xFFFF86DF - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE830: - bl OS_Terminate -_021DE834: - ldr r1, _021DE854 ; =UNK04_02210520 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - ldr r3, [r2] - mov r2, r4 - blx r3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE854: .word UNK04_02210520 -_021DE858: .word 0xFFFF86E7 -_021DE85C: .word 0xFFFF86D4 -_021DE860: .word 0xFFFF86CA -_021DE864: .word 0xFFFF86E8 -_021DE868: .word 0xFFFF86DF - arm_func_end MOD04_021DE774 - - arm_func_start MOD04_021DE86C -MOD04_021DE86C: ; 0x021DE86C - ldr ip, _021DE880 ; =MOD04_021DD904 - mov r1, r0 - mov r0, #6 - mov r2, #0 - bx ip - .align 2, 0 -_021DE880: .word MOD04_021DD904 - arm_func_end MOD04_021DE86C - - arm_func_start MOD04_021DE884 -MOD04_021DE884: ; 0x021DE884 - ldr ip, _021DE898 ; =MOD04_021DD924 - mov r2, r1 - mov r1, r0 - mov r0, #6 - bx ip - .align 2, 0 -_021DE898: .word MOD04_021DD924 - arm_func_end MOD04_021DE884 - - arm_func_start MOD04_021DE89C -MOD04_021DE89C: ; 0x021DE89C - ldrh r1, [r0] - mov r2, #0 - cmp r1, #0 - beq _021DE8C0 -_021DE8AC: - add r2, r2, #1 - mov r1, r2, lsl #1 - ldrh r1, [r0, r1] - cmp r1, #0 - bne _021DE8AC -_021DE8C0: - mov r0, r2 - bx lr - arm_func_end MOD04_021DE89C - - arm_func_start MOD04_021DE8C8 -MOD04_021DE8C8: ; 0x021DE8C8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _021DE9E4 ; =UNK04_02210524 - mov r1, #0 - ldr r3, [r2, #4] - ldr ip, [r2] - cmp r3, r1 - mov r4, r0 - cmpeq ip, r1 - bne _021DE98C - ldr r0, [r2, #0xc] - ldr r3, [r2, #8] - cmp r0, r1 - cmpeq r3, r1 - bne _021DE98C - ldr r0, [r2, #0x14] - ldr r2, [r2, #0x10] - cmp r0, r1 - cmpeq r2, r1 - bne _021DE98C - add r0, sp, #0 - bl OS_GetMacAddress - bl OS_GetTick - ldr r2, [sp] - ldr r3, [sp, #4] - mov lr, r2, lsr #0x18 - mov r2, r1, lsl #0x18 - orr lr, lr, r3, lsl #8 - mvn r1, #0xff000000 - mov ip, r3, lsr #0x18 - and r1, lr, r1 - orr r3, r1, r0, lsl #24 - and r1, ip, #0 - orr r2, r2, r0, lsr #8 - orr r1, r1, r2 - str r1, [sp, #4] - ldr ip, _021DE9E4 ; =UNK04_02210524 - add r0, sp, #0 - str r3, [sp] - ldmia r0, {r2, r3} - stmia ip, {r2, r3} - ldr r3, _021DE9E8 ; =0x6C078965 - ldr r2, _021DE9EC ; =0x5D588B65 - ldr r1, _021DE9F0 ; =0x00269EC3 - mov r0, #0 - str r3, [ip, #8] - str r2, [ip, #0xc] - str r1, [ip, #0x10] - str r0, [ip, #0x14] -_021DE98C: - ldr r1, _021DE9E4 ; =UNK04_02210524 - ldr r3, [r1, #8] - ldr r2, [r1] - ldr r0, [r1, #4] - umull lr, ip, r3, r2 - mla ip, r3, r0, ip - ldr r0, [r1, #0xc] - ldr r3, [r1, #0x10] - mla ip, r0, r2, ip - adds r2, r3, lr - ldr r0, [r1, #0x14] - str r2, [r1] - adc r0, r0, ip - cmp r4, #0 - str r0, [r1, #4] - movne r3, #0 - umullne r2, r1, r0, r4 - mlane r1, r0, r3, r1 - mlane r1, r3, r4, r1 - movne r0, r1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DE9E4: .word UNK04_02210524 -_021DE9E8: .word 0x6C078965 -_021DE9EC: .word 0x5D588B65 -_021DE9F0: .word 0x00269EC3 - arm_func_end MOD04_021DE8C8 - - arm_func_start MOD04_021DE9F4 -MOD04_021DE9F4: ; 0x021DE9F4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - movs r4, r1 - mov r7, r0 - mov r6, r3 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r0, r2 - mov r1, r6 - bl strchr - movs r5, r0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} -_021DEA30: - mov r0, r7 - bl strlen - mov r2, r0 - mov r1, r7 - add r0, r5, #1 - bl strncmp - cmp r0, #0 - bne _021DEA68 - mov r0, r7 - bl strlen - add r0, r0, r5 - ldrsb r0, [r0, #1] - cmp r6, r0 - beq _021DEAA4 -_021DEA68: - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r0, #1 - bl strchr - movs r5, r0 - bne _021DEA30 - add sp, sp, #4 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DEAA4: - mov r1, r6 - add r0, r5, #1 - bl strchr - movs r5, r0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - addne r1, r5, #1 - subne r6, r0, r1 - bne _021DEAE8 - add r0, r5, #1 - bl strlen - mov r6, r0 -_021DEAE8: - mov r0, r4 - mov r2, r6 - add r1, r5, #1 - bl strncpy - mov r1, #0 - mov r0, r6 - strb r1, [r4, r6] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end MOD04_021DE9F4 - - arm_func_start MOD04_021DEB0C -MOD04_021DEB0C: ; 0x021DEB0C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, r3 - mov r0, r5 - mov r1, #0 - bl strchr - mov r2, r0 - mov r0, r7 - mov r1, r6 - mov r3, r4 - bl MOD04_021DEB54 - mov r0, r5 - bl strlen - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end MOD04_021DEB0C - - arm_func_start MOD04_021DEB54 -MOD04_021DEB54: ; 0x021DEB54 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - str r0, [sp] - mov r4, r2 - str r3, [sp, #4] - str r1, [sp, #8] - ldr r2, _021DEB8C ; =UNK04_0220D328 - mov r0, r4 - mov r1, #0x1000 - bl OS_SNPrintf - mov r0, r4 - bl strlen - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DEB8C: .word UNK04_0220D328 - arm_func_end MOD04_021DEB54 - - arm_func_start MOD04_021DEB90 -MOD04_021DEB90: ; 0x021DEB90 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD43C - bl MOD04_021EFB28 - ldr r2, _021DEBCC ; =UNK04_02210540 - ldr r1, _021DEBD0 ; =0xFFFE8515 - str r0, [r2] - mov r0, #9 - bl MOD04_021DD6B0 - ldr r0, _021DEBD4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DEBCC: .word UNK04_02210540 -_021DEBD0: .word 0xFFFE8515 -_021DEBD4: .word UNK04_0221053C - arm_func_end MOD04_021DEB90 - - arm_func_start MOD04_021DEBD8 -MOD04_021DEBD8: ; 0x021DEBD8 - ldr ip, _021DEBE0 ; =MOD04_021EAC1C - bx ip - .align 2, 0 -_021DEBE0: .word MOD04_021EAC1C - arm_func_end MOD04_021DEBD8 - - arm_func_start MOD04_021DEBE4 -MOD04_021DEBE4: ; 0x021DEBE4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r7, #0 - mov fp, r0 - mov sb, r1 - mov sl, r7 - bl MOD04_021E852C - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #4 - addls pc, pc, sb, lsl #2 - b _021DEC48 -_021DEC18: ; jump table - b _021DEC2C ; case 0 - b _021DEC2C ; case 1 - b _021DEC34 ; case 2 - b _021DEC34 ; case 3 - b _021DEC40 ; case 4 -_021DEC2C: - mov r4, r7 - b _021DEC48 -_021DEC34: - mov r4, #6 - ldr r6, _021DEF4C ; =0xFFFFE250 - b _021DEC48 -_021DEC40: - ldr r6, _021DEF50 ; =0xFFFFE24F - mov r4, #9 -_021DEC48: - cmp r4, #0 - bne _021DED00 - mov r0, fp - bl MOD04_021FD3C4 - movs r7, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021DEF54 ; =UNK04_0221053C - ldrb r8, [r7, #1] - ldr r1, [r0] - mov r5, #1 - mov r0, r5,lsl r8 - ldr r1, [r1, #0x644] - ands r0, r1, r0 - mov r0, r8 - moveq r5, #0 - bl MOD04_021EA9D8 - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - bne _021DECA8 - cmp sb, #0 - beq _021DECBC -_021DECA8: - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DECC0 - cmp r8, #0 - bne _021DECC0 -_021DECBC: - mov sl, #1 -_021DECC0: - mov r0, r8 - bl MOD04_021DF56C - ldr r1, _021DEF54 ; =UNK04_0221053C - ldrb r7, [r7] - ldr r2, _021DEF58 ; =UNK04_02210544 - mov fp, #0 - ldr r3, [r1] - str fp, [r2, r7, lsl #2] - ldrb r2, [r3, #0x361] - mov r7, r0 - sub r0, r2, #1 - strb r0, [r3, #0x361] - ldr r1, [r1] - ldrb r0, [r1, #0x368] - sub r0, r0, #1 - strb r0, [r1, #0x368] -_021DED00: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DED58 - ldr r0, [r1, #0x24] - cmp r0, #6 - bne _021DED58 - cmp r5, #0 - bne _021DED58 - ldrb r0, [r1, #0x369] - cmp r0, #2 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r4, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_021E85D4 - mov r0, r7 - bl MOD04_021E8A50 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DED58: - mov r0, r4 - mov r1, r6 - mov r2, r7 - bl MOD04_021E8A74 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r4, #0 - beq _021DED90 - mov r0, r4 - mov r1, r6 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DED90: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEE04 - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DEDBC - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DEE04 -_021DEDBC: - ldr r2, _021DEF54 ; =UNK04_0221053C - ldr r1, [r2] - ldrb r0, [r1, #0x361] - add r6, r0, #2 - add r3, r1, r6, lsl #2 - ldr r3, [r3, #0x448] - cmp r3, #0 - beq _021DEE04 - add r3, r1, r6 - ldrb r3, [r3, #0x624] - add r0, r0, #1 - add r0, r1, r0 - strb r3, [r0, #0x624] - ldr r0, [r2] - ldrb r1, [r0, #0x361] - add r0, r1, #1 - add r1, r1, #3 - bl MOD04_021E8830 -_021DEE04: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - bne _021DEE4C - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEE2C - bl MOD04_021E85D4 - b _021DEE68 -_021DEE2C: - ldrb r0, [r1, #0x361] - cmp r0, #0 - bne _021DEE68 - ldr r1, _021DEF5C ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - b _021DEE68 -_021DEE4C: - ldrb r0, [r1, #0x361] - cmp r0, #0 - bne _021DEE68 - ldr r1, _021DEF5C ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 -_021DEE68: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #0 - beq _021DEE88 - ldrb r0, [r1, #0x369] - cmp r0, #1 - bne _021DEEA4 -_021DEE88: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r2, [r0] - ldrb r1, [r2, #0x368] - strb r1, [r2, #0x36a] - ldr r0, [r0] - ldr r0, [r0, #0x364] - bl MOD04_02202308 -_021DEEA4: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r6, [r0] - ldr r0, [r6, #0x90] - cmp r0, #0 - beq _021DEF00 - cmp r5, #0 - beq _021DEF00 - cmp sb, #0 - moveq r5, #1 - mov r0, r7 - movne r5, #0 - bl MOD04_021E1F18 - str r0, [sp] - ldr r1, [r6, #0x94] - ldr r0, _021DEF54 ; =UNK04_0221053C - str r1, [sp, #4] - ldr r1, [r0] - mov r0, r4 - ldr r4, [r1, #0x90] - mov r1, r5 - mov r2, sl - mov r3, r8 - blx r4 -_021DEF00: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEF24 - ldrb r0, [r1, #0x369] - cmp r0, #2 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DEF24: - ldrb r0, [r1, #0x361] - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_02200D6C - bl MOD04_021E8DC0 - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DEF4C: .word 0xFFFFE250 -_021DEF50: .word 0xFFFFE24F -_021DEF54: .word UNK04_0221053C -_021DEF58: .word UNK04_02210544 -_021DEF5C: .word UNK04_0220D334 - arm_func_end MOD04_021DEBE4 - - arm_func_start MOD04_021DEF60 -MOD04_021DEF60: ; 0x021DEF60 - ldr ip, _021DEF68 ; =MOD04_021EAC5C - bx ip - .align 2, 0 -_021DEF68: .word MOD04_021EAC5C - arm_func_end MOD04_021DEF60 - - arm_func_start MOD04_021DEF6C -MOD04_021DEF6C: ; 0x021DEF6C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - add r4, sp, #0 - mov r3, #0 - strb r3, [r4] - strb r3, [r4, #1] - strb r3, [r4, #2] - strb r3, [r4, #3] - strb r3, [r4, #4] - strb r3, [r4, #5] - strb r3, [r4, #6] - strb r3, [r4, #7] - strb r3, [r4, #8] - strb r3, [r4, #9] - strb r3, [r4, #0xa] - mov r5, r1 - strb r3, [r4, #0xb] - ldr r4, [r5, #8] - mov r6, r0 - bl MOD04_021E2068 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0C8 ; =UNK04_0220D338 - bl strlen - mov r2, r0 - ldr r1, _021DF0C8 ; =UNK04_0220D338 - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0C8 ; =UNK04_0220D338 - bl strlen - add r4, r4, r0 - mov r0, r4 - mov r1, #0x76 - bl strchr - sub r7, r0, r4 - add r0, sp, #0 - mov r1, r4 - mov r2, r7 - bl strncpy - cmp r7, #0xa - addhi sp, sp, #0xc - ldmhiia sp!, {r4, r5, r6, r7, pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0CC ; =UNK04_0220D340 - add r1, r7, #1 - add r4, r4, r1 - bl strlen - mov r2, r0 - ldr r1, _021DF0CC ; =UNK04_0220D340 - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0D0 ; =UNK04_0221053C - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - beq _021DF0A8 - cmp r0, #6 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF0A8 - ldrb r0, [r1, #0x369] - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} -_021DF0A8: - ldr r0, _021DF0CC ; =UNK04_0220D340 - bl strlen - add r2, r4, r0 - ldr r1, [r5] - mov r0, r6 - bl MOD04_021E8EF4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DF0C8: .word UNK04_0220D338 -_021DF0CC: .word UNK04_0220D340 -_021DF0D0: .word UNK04_0221053C - arm_func_end MOD04_021DEF6C - - arm_func_start MOD04_021DF0D4 -MOD04_021DF0D4: ; 0x021DF0D4 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, [r1, #4] - ldr r0, _021DF120 ; =0x00000603 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DF124 ; =0x00000901 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DF128 ; =0x00000B01 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - mov r0, #3 - bl MOD04_021DF414 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF120: .word 0x00000603 -_021DF124: .word 0x00000901 -_021DF128: .word 0x00000B01 - arm_func_end MOD04_021DF0D4 - - arm_func_start MOD04_021DF12C -MOD04_021DF12C: ; 0x021DF12C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021DF174 - cmp r6, #0 - beq _021DF174 - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x4f4] - cmp r0, #0 - bne _021DF1D8 - bl MOD04_021E8DC0 - mov r0, #3 - bl MOD04_021DF5CC - b _021DF1D8 -_021DF174: - cmp r7, #0 - bne _021DF1D8 - mov r0, #6 - bl MOD04_021DF5CC - ldr r1, _021DF2AC ; =UNK04_0221053C - mov r0, #0 - ldr r3, [r1] - ldrb r1, [r3, #0x361] - cmp r1, #0 - blt _021DF1D8 - ldr r2, [r3, #0x64] -_021DF1A0: - add r1, r3, r0, lsl #2 - ldr r1, [r1, #0x448] - cmp r2, r1 - bne _021DF1C8 - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r1, [r1] - add r0, r1, r0 - ldrb r0, [r0, #0x624] - strb r0, [r1, #0x2c] - b _021DF1D8 -_021DF1C8: - ldrb r1, [r3, #0x361] - add r0, r0, #1 - cmp r0, r1 - ble _021DF1A0 -_021DF1D8: - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r0, _021DF2B0 ; =0x00000624 - ldr r2, [r1] - ldrb r1, [r2, #0x361] - add r0, r2, r0 - add r1, r1, #1 - bl MOD04_021DF530 - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r1, [r1] - str r0, [r1, #0x644] - bl MOD04_021E8780 - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF224 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DF258 -_021DF224: - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r1, [sp, #0x20] - ldr r3, [r0] - mov r0, r7 - str r1, [sp] - ldr r2, [r3, #0x8c] - mov r1, r6 - str r2, [sp, #4] - ldr r6, [r3, #0x88] - mov r2, r5 - mov r3, r4 - blx r6 - b _021DF26C -_021DF258: - ldr r2, [r1, #0x84] - ldr r3, [r1, #0x80] - mov r0, r7 - mov r1, r6 - blx r3 -_021DF26C: - cmp r7, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r0, #0x24] - cmp r0, #5 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DF2AC: .word UNK04_0221053C -_021DF2B0: .word 0x00000624 - arm_func_end MOD04_021DF12C - - arm_func_start MOD04_021DF2B4 -MOD04_021DF2B4: ; 0x021DF2B4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DF300 ; =UNK04_0221053C - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - ldr r0, [r0, #0x28] - cmp r0, #4 - beq _021DF2DC - bl MOD04_021DF5CC -_021DF2DC: - ldr r1, _021DF300 ; =UNK04_0221053C - mov r0, r5 - ldr r3, [r1] - mov r1, r4 - ldr r2, [r3, #0x7c] - ldr r3, [r3, #0x78] - blx r3 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DF300: .word UNK04_0221053C - arm_func_end MOD04_021DF2B4 - - arm_func_start MOD04_021DF304 -MOD04_021DF304: ; 0x021DF304 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r0 - mov r4, r1 - bne _021DF334 - ldr r1, _021DF36C ; =UNK04_0221053C - mov r0, #3 - ldr r1, [r1] - str r4, [r1, #0x64] - bl MOD04_021DF5CC - bl MOD04_021E1ED4 - b _021DF33C -_021DF334: - mov r0, #0 - bl MOD04_021DF5CC -_021DF33C: - ldr r0, _021DF36C ; =UNK04_0221053C - ldr r0, [r0] - ldr r3, [r0, #0x70] - cmp r3, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r2, [r0, #0x74] - mov r0, r5 - mov r1, r4 - blx r3 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DF36C: .word UNK04_0221053C - arm_func_end MOD04_021DF304 - - arm_func_start MOD04_021DF370 -MOD04_021DF370: ; 0x021DF370 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _021DF3F4 -_021DF38C: ; jump table - b _021DF3F4 ; case 0 - b _021DF3AC ; case 1 - b _021DF3B8 ; case 2 - b _021DF3C8 ; case 3 - b _021DF3D4 ; case 4 - b _021DF3B8 ; case 5 - b _021DF3E0 ; case 6 - b _021DF3EC ; case 7 -_021DF3AC: - mov r0, #9 - mvn r2, #0 - b _021DF3F4 -_021DF3B8: - mov r0, #0 - mov r2, r0 - mov r4, r0 - b _021DF3F4 -_021DF3C8: - mov r0, #6 - mvn r2, #9 - b _021DF3F4 -_021DF3D4: - mov r0, #6 - mvn r2, #0x1d - b _021DF3F4 -_021DF3E0: - mov r0, #6 - mvn r2, #0x45 - b _021DF3F4 -_021DF3EC: - mov r0, #6 - mvn r2, #0x4f -_021DF3F4: - cmp r0, #0 - beq _021DF408 - ldr r1, _021DF410 ; =0xFFFEFA48 - add r1, r2, r1 - bl MOD04_021E0EAC -_021DF408: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DF410: .word 0xFFFEFA48 - arm_func_end MOD04_021DF370 - - arm_func_start MOD04_021DF414 -MOD04_021DF414: ; 0x021DF414 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #4 - addls pc, pc, r6, lsl #2 - b _021DF470 -_021DF430: ; jump table - b _021DF470 ; case 0 - b _021DF444 ; case 1 - b _021DF450 ; case 2 - b _021DF45C ; case 3 - b _021DF468 ; case 4 -_021DF444: - mov r4, #9 - mvn r5, #0 - b _021DF470 -_021DF450: - mov r4, #9 - mvn r5, #1 - b _021DF470 -_021DF45C: - mov r4, #6 - mvn r5, #9 - b _021DF470 -_021DF468: - mov r4, #6 - mvn r5, #0x13 -_021DF470: - ldr r0, _021DF51C ; =UNK04_0221053C - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021DF500 -_021DF488: ; jump table - b _021DF500 ; case 0 - b _021DF4A0 ; case 1 - b _021DF4B8 ; case 2 - b _021DF500 ; case 3 - b _021DF4F4 ; case 4 - b _021DF4DC ; case 5 -_021DF4A0: - ldr r1, _021DF520 ; =0xFFFF11B8 - mov r0, r4 - add r5, r5, r1 - mov r1, r5 - bl MOD04_021E0EAC - b _021DF508 -_021DF4B8: - ldr r1, [r1, #0x9c] - ldr r0, _021DF520 ; =0xFFFF11B8 - cmp r1, #1 - add r5, r5, r0 - bge _021DF508 - mov r0, r4 - mov r1, r5 - bl MOD04_021E0EAC - b _021DF508 -_021DF4DC: - ldr r1, _021DF524 ; =0xFFFEC398 - mov r0, r4 - add r5, r5, r1 - mov r1, r5 - bl MOD04_021E8E08 - b _021DF508 -_021DF4F4: - ldr r0, _021DF528 ; =0xFFFEEAA8 - add r5, r5, r0 - b _021DF508 -_021DF500: - ldr r0, _021DF52C ; =0xFFFE9C88 - add r5, r5, r0 -_021DF508: - mov r0, r4 - mov r1, r5 - bl MOD04_021E2114 - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF51C: .word UNK04_0221053C -_021DF520: .word 0xFFFF11B8 -_021DF524: .word 0xFFFEC398 -_021DF528: .word 0xFFFEEAA8 -_021DF52C: .word 0xFFFE9C88 - arm_func_end MOD04_021DF414 - - arm_func_start MOD04_021DF530 -MOD04_021DF530: ; 0x021DF530 - stmdb sp!, {lr} - sub sp, sp, #4 - mov lr, #0 - mov ip, lr - cmp r1, #0 - ble _021DF560 - mov r3, #1 -_021DF54C: - ldrb r2, [r0, ip] - add ip, ip, #1 - cmp ip, r1 - orr lr, lr, r3, lsl r2 - blt _021DF54C -_021DF560: - mov r0, lr - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF530 - - arm_func_start MOD04_021DF56C -MOD04_021DF56C: ; 0x021DF56C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - add r0, sp, #0 - bl MOD04_021E874C - mov r1, r0 - cmp r1, #0 - mov r0, #0 - ble _021DF5B0 - ldr r3, [sp] -_021DF594: - ldrb r2, [r3] - cmp r4, r2 - beq _021DF5B0 - add r0, r0, #1 - cmp r0, r1 - add r3, r3, #1 - blt _021DF594 -_021DF5B0: - cmp r0, r1 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021E8830 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DF56C - - arm_func_start MOD04_021DF5CC -MOD04_021DF5CC: ; 0x021DF5CC - ldr r1, _021DF5E8 ; =UNK04_0221053C - ldr r3, [r1] - ldr r2, [r3, #0x24] - str r2, [r3, #0x28] - ldr r1, [r1] - str r0, [r1, #0x24] - bx lr - .align 2, 0 -_021DF5E8: .word UNK04_0221053C - arm_func_end MOD04_021DF5CC - - arm_func_start MOD04_021DF5EC -MOD04_021DF5EC: ; 0x021DF5EC - bx lr - arm_func_end MOD04_021DF5EC - - arm_func_start MOD04_021DF5F0 -MOD04_021DF5F0: ; 0x021DF5F0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #0 - ldr r4, _021DF634 ; =UNK04_02210544 -_021DF600: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _021DF620 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - cmp r6, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_021DF620: - add r5, r5, #1 - cmp r5, #0x20 - blt _021DF600 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF634: .word UNK04_02210544 - arm_func_end MOD04_021DF5F0 - - arm_func_start MOD04_021DF638 -MOD04_021DF638: ; 0x021DF638 - ldr r1, _021DF644 ; =UNK04_022105C4 - add r0, r1, r0, lsl #3 - bx lr - .align 2, 0 -_021DF644: .word UNK04_022105C4 - arm_func_end MOD04_021DF638 - - arm_func_start MOD04_021DF648 -MOD04_021DF648: ; 0x021DF648 - stmdb sp!, {lr} - sub sp, sp, #4 - cmp r1, #0 - mov ip, #0 - ble _021DF684 - ldr r2, _021DF6B8 ; =UNK04_0221053C - ldr r3, [r2] -_021DF664: - add r2, r3, ip, lsl #2 - ldr r2, [r2, #0x448] - cmp r0, r2 - beq _021DF684 - add r2, ip, #1 - and ip, r2, #0xff - cmp ip, r1 - blt _021DF664 -_021DF684: - cmp ip, r1 - addge sp, sp, #4 - movge r0, #0 - ldmgeia sp!, {pc} - ldr r0, _021DF6B8 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, ip - ldrb r0, [r0, #0x624] - bl MOD04_021DF760 - bl MOD04_021DF730 - bl MOD04_021DF6BC - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF6B8: .word UNK04_0221053C - arm_func_end MOD04_021DF648 - - arm_func_start MOD04_021DF6BC -MOD04_021DF6BC: ; 0x021DF6BC - ldr r1, _021DF6C8 ; =UNK04_02210544 - add r0, r1, r0, lsl #2 - bx lr - .align 2, 0 -_021DF6C8: .word UNK04_02210544 - arm_func_end MOD04_021DF6BC - - arm_func_start MOD04_021DF6CC -MOD04_021DF6CC: ; 0x021DF6CC - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DF6FC ; =UNK04_02210544 - mov r0, #0 - mov r2, #0x80 - bl MIi_CpuClear32 - ldr r1, _021DF700 ; =UNK04_022105C4 - mov r0, #0 - mov r2, #0x100 - bl MIi_CpuClear32 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF6FC: .word UNK04_02210544 -_021DF700: .word UNK04_022105C4 - arm_func_end MOD04_021DF6CC - - arm_func_start MOD04_021DF704 -MOD04_021DF704: ; 0x021DF704 - ldr r2, _021DF72C ; =UNK04_02210544 - mov r0, #0 -_021DF70C: - ldr r1, [r2, r0, lsl #2] - cmp r1, #0 - bxeq lr - add r0, r0, #1 - cmp r0, #0x20 - blt _021DF70C - mvn r0, #0 - bx lr - .align 2, 0 -_021DF72C: .word UNK04_02210544 - arm_func_end MOD04_021DF704 - - arm_func_start MOD04_021DF730 -MOD04_021DF730: ; 0x021DF730 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD3C4 - ldrb r0, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF730 - - arm_func_start MOD04_021DF748 -MOD04_021DF748: ; 0x021DF748 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF748 - - arm_func_start MOD04_021DF760 -MOD04_021DF760: ; 0x021DF760 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _021DF7BC ; =UNK04_0221053C - mov r6, r0 - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, _021DF7C0 ; =UNK04_02210544 - mov r5, #0 -_021DF784: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _021DF7A8 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - cmp r6, r0 - ldreq r0, _021DF7C0 ; =UNK04_02210544 - ldreq r0, [r0, r5, lsl #2] - ldmeqia sp!, {r4, r5, r6, pc} -_021DF7A8: - add r5, r5, #1 - cmp r5, #0x20 - blt _021DF784 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF7BC: .word UNK04_0221053C -_021DF7C0: .word UNK04_02210544 - arm_func_end MOD04_021DF760 - - arm_func_start MOD04_021DF7C4 -MOD04_021DF7C4: ; 0x021DF7C4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #0x4000 - bl MOD04_021DE8C8 - add r0, r0, #0xc000 - mov r1, r0, lsl #0x10 - ldr r3, _021DF87C ; =UNK04_0221053C - mov r0, #0 - mov r2, r0 - mov r1, r1, lsr #0x10 - ldr r4, [r3] - bl MOD04_021FFEB0 - ldr r1, _021DF880 ; =MOD04_021DEB90 - ldr r2, _021DF87C ; =UNK04_0221053C - str r1, [sp] - mov r1, r0 - ldr r0, [r2] - ldr r2, [r4, #0x14] - ldr r3, [r4, #0x18] - bl MOD04_021FD71C - mov r4, r0 - bl MOD04_021DF370 - cmp r0, #0 - addne sp, sp, #8 - movne r0, r4 - ldmneia sp!, {r4, pc} - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r1, _021DF884 ; =MOD04_021E9204 - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD6C8 - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r1, _021DF888 ; =MOD04_021E9464 - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD434 - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DF87C: .word UNK04_0221053C -_021DF880: .word MOD04_021DEB90 -_021DF884: .word MOD04_021E9204 -_021DF888: .word MOD04_021E9464 - arm_func_end MOD04_021DF7C4 - - arm_func_start MOD04_021DF88C -MOD04_021DF88C: ; 0x021DF88C - ldr r0, _021DF8A4 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x24] - moveq r0, #0 - bx lr - .align 2, 0 -_021DF8A4: .word UNK04_0221053C - arm_func_end MOD04_021DF88C - - arm_func_start MOD04_021DF8A8 -MOD04_021DF8A8: ; 0x021DF8A8 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DF8F0 ; =UNK04_0221053C - ldr r2, [r1] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - mov r1, #1 - mov r1, r1,lsl r0 - ldr r2, [r2, #0x644] - ands r1, r2, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - bl MOD04_021DF5F0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF8F0: .word UNK04_0221053C - arm_func_end MOD04_021DF8A8 - - arm_func_start MOD04_021DF8F4 -MOD04_021DF8F4: ; 0x021DF8F4 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r2, _021DF954 ; =UNK04_0221053C - ldr r3, [r2] - cmp r3, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldr r1, _021DF958 ; =0x00000624 - add r1, r3, r1 - str r1, [r0] - ldr r2, [r2] - ldrb r1, [r2, #0x369] - cmp r1, #2 - beq _021DF93C - ldrb r1, [r2, #0x369] - cmp r1, #3 - bne _021DF948 -_021DF93C: - bl MOD04_021E86A4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021DF948: - bl MOD04_021E874C - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF954: .word UNK04_0221053C -_021DF958: .word 0x00000624 - arm_func_end MOD04_021DF8F4 - - arm_func_start MOD04_021DF95C -MOD04_021DF95C: ; 0x021DF95C - ldr r0, _021DF974 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - ldrneb r0, [r0, #0x2c] - moveq r0, #0 - bx lr - .align 2, 0 -_021DF974: .word UNK04_0221053C - arm_func_end MOD04_021DF95C - - arm_func_start MOD04_021DF978 -MOD04_021DF978: ; 0x021DF978 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DF9D0 ; =UNK04_0221053C - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF9B0 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DF9C0 -_021DF9B0: - bl MOD04_021E87D8 - add sp, sp, #4 - add r0, r0, #1 - ldmfd sp!, {pc} -_021DF9C0: - bl MOD04_021E8804 - add r0, r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF9D0: .word UNK04_0221053C - arm_func_end MOD04_021DF978 - - arm_func_start MOD04_021DF9D4 -MOD04_021DF9D4: ; 0x021DF9D4 - stmdb sp!, {r4, lr} - ldr r1, _021DFA3C ; =UNK04_0221053C - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - beq _021DFA14 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFA14 - ldr r0, _021DFA3C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #5 - beq _021DFA1C - cmp r0, #6 - beq _021DFA1C -_021DFA14: - mvn r0, #0 - ldmia sp!, {r4, pc} -_021DFA1C: - mov r0, r4 - bl MOD04_021DF760 - cmp r0, #0 - mvneq r0, #1 - ldmeqia sp!, {r4, pc} - bl MOD04_021FD488 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DFA3C: .word UNK04_0221053C - arm_func_end MOD04_021DF9D4 - - arm_func_start MOD04_021DFA40 -MOD04_021DFA40: ; 0x021DFA40 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DFAF0 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - beq _021DFA80 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFA80 - ldr r0, _021DFAF0 ; =UNK04_0221053C - ldr r2, [r0] - ldr r0, [r2, #0x24] - cmp r0, #5 - beq _021DFA8C - cmp r0, #6 - beq _021DFA8C -_021DFA80: - add sp, sp, #4 - mvn r0, #0 - ldmfd sp!, {pc} -_021DFA8C: - ldrb r0, [r2, #0x361] - cmp r0, #0 - bne _021DFAC0 - ldr r1, _021DFAF4 ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - bl MOD04_02200D6C - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #4 - mov r0, #1 - ldmfd sp!, {pc} -_021DFAC0: - mov r1, #1 - ldr r0, _021DFAF0 ; =UNK04_0221053C - strb r1, [r2, #0x2d] - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD45C - ldr r1, _021DFAF0 ; =UNK04_0221053C - mov r0, #0 - ldr r1, [r1] - strb r0, [r1, #0x2d] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DFAF0: .word UNK04_0221053C -_021DFAF4: .word UNK04_0220D334 - arm_func_end MOD04_021DFA40 - - arm_func_start MOD04_021DFAF8 -MOD04_021DFAF8: ; 0x021DFAF8 - ldr r2, _021DFB1C ; =UNK04_0221053C - ldr r3, [r2] - cmp r3, #0 - moveq r0, #0 - strne r0, [r3, #0x90] - ldrne r2, [r2] - movne r0, #1 - strne r1, [r2, #0x94] - bx lr - .align 2, 0 -_021DFB1C: .word UNK04_0221053C - arm_func_end MOD04_021DFAF8 - - arm_func_start MOD04_021DFB20 -MOD04_021DFB20: ; 0x021DFB20 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x224 - mvn ip, #0 - mov r7, r0 - mov r6, r1 - mov r4, r2 - mov r5, r3 - str ip, [sp, #8] - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFB60 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #3 - beq _021DFB6C -_021DFB60: - add sp, sp, #0x224 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFB6C: - bl MOD04_021DF6CC - ldr r1, _021DFD04 ; =UNK04_0221053C - mov r0, #5 - ldr r2, [r1] - str r6, [r2, #0x88] - ldr r1, [r1] - str r4, [r1, #0x8c] - bl MOD04_021DF5CC - mov r0, r7 - bl MOD04_021E1F84 - movs r4, r0 - beq _021DFBB8 - ldr r0, _021DFD04 ; =UNK04_0221053C - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F05F4 - cmp r0, #0 - bne _021DFBC0 -_021DFBB8: - mov r5, #0xb - b _021DFC8C -_021DFBC0: - ldr r0, _021DFD04 ; =UNK04_0221053C - add r2, sp, #8 - ldr r0, [r0] - mov r1, r4 - add r0, r0, #0x1c - bl MOD04_021F0664 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r1, [sp, #8] - ldr r0, [r0] - add r2, sp, #0x10 - add r0, r0, #0x1c - bl MOD04_021F06E4 - ldr r0, [sp, #0x14] - cmp r0, #6 - movne r5, #0xb - bne _021DFC8C - ldr r0, _021DFD08 ; =UNK04_0220D344 - mov r6, #0x30 - add r1, sp, #0xc - add r2, sp, #0x18 - mov r3, #0x2f - strb r6, [sp, #0xc] - bl MOD04_021DE9F4 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0xa - bl strtoul - and r6, r0, #0xff - ldr r0, _021DFD0C ; =UNK04_0220D348 - add r1, sp, #0xc - add r2, sp, #0x18 - mov r3, #0x2f - bl MOD04_021DE9F4 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0xa - bl strtoul - and r0, r0, #0xff - cmp r0, r6 - moveq r5, #0xd - beq _021DFC8C - ldr r6, [sp, #0x238] - ldr r1, _021DFD10 ; =MOD04_021DF12C - mov r0, r4 - mov r3, r5 - mov r2, #0 - str r6, [sp] - bl MOD04_021E9FD0 - add sp, sp, #0x224 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFC8C: - mov r0, r5 - mov r1, #0 - bl MOD04_021DD6B0 - ldr r0, _021DFD04 ; =UNK04_0221053C - mov r1, #0 - ldr r4, [r0] - mov r0, r5 - str r1, [sp] - ldr r2, [r4, #0x8c] - mov r3, r1 - str r2, [sp, #4] - ldr r4, [r4, #0x88] - mov r2, #1 - blx r4 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - beq _021DFCF8 - ldr r0, [r0, #0x24] - cmp r0, #5 - bne _021DFCF8 - mov r0, #3 - bl MOD04_021DF5CC - ldr r1, _021DFD14 ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 -_021DFCF8: - mov r0, #1 - add sp, sp, #0x224 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DFD04: .word UNK04_0221053C -_021DFD08: .word UNK04_0220D344 -_021DFD0C: .word UNK04_0220D348 -_021DFD10: .word MOD04_021DF12C -_021DFD14: .word UNK04_0220D334 - arm_func_end MOD04_021DFB20 - - arm_func_start MOD04_021DFD18 -MOD04_021DFD18: ; 0x021DFD18 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFD50 - ldr r0, _021DFDB4 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #3 - beq _021DFD5C -_021DFD50: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFD5C: - bl MOD04_021DF6CC - ldr r1, _021DFDB4 ; =UNK04_0221053C - mov r2, #0 - ldr r3, [r1] - mov r0, #5 - str r6, [r3, #0x88] - ldr r3, [r1] - str r5, [r3, #0x8c] - ldr r1, [r1] - strb r2, [r1, #0x2c] - bl MOD04_021DF5CC - sub r0, r7, #1 - ldr r5, [sp, #0x18] - ldr r1, _021DFDB8 ; =MOD04_021DF12C - mov r3, r4 - and r0, r0, #0xff - mov r2, #0 - str r5, [sp] - bl MOD04_021EA138 - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DFDB4: .word UNK04_0221053C -_021DFDB8: .word MOD04_021DF12C - arm_func_end MOD04_021DFD18 - - arm_func_start MOD04_021DFDBC -MOD04_021DFDBC: ; 0x021DFDBC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFDF8 - ldr r0, _021DFE5C ; =UNK04_0221053C - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #3 - blt _021DFDF8 - cmp r1, #4 - bne _021DFE04 -_021DFDF8: - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DFE04: - str r6, [r2, #0x78] - ldr r1, [r0] - mov r0, #4 - str r5, [r1, #0x7c] - bl MOD04_021DF5CC - ldr r0, _021DFE5C ; =UNK04_0221053C - ldr r1, [sp, #0x20] - ldr r3, [r0] - ldr r0, [sp, #0x24] - str r4, [sp] - str r1, [sp, #4] - ldr r4, [sp, #0x28] - str r0, [sp, #8] - ldr r2, _021DFE60 ; =MOD04_021DF2B4 - add r0, r3, #0xe0 - add r1, r3, #0x1e0 - mov r3, #0 - str r4, [sp, #0xc] - bl MOD04_021E2174 - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DFE5C: .word UNK04_0221053C -_021DFE60: .word MOD04_021DF2B4 - arm_func_end MOD04_021DFDBC - - arm_func_start MOD04_021DFE64 -MOD04_021DFE64: ; 0x021DFE64 - stmdb sp!, {r4, r5, r6, lr} - movs r4, r0 - mov r6, r2 - mov r5, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFE9C - ldr r0, _021DFF6C ; =UNK04_0221053C - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #0 - beq _021DFEA4 -_021DFE9C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DFEA4: - str r6, [r2, #0x70] - ldr r1, [r0] - cmp r4, #0 - str r5, [r1, #0x74] - beq _021DFEC4 - ldrh r1, [r4] - cmp r1, #0 - bne _021DFECC -_021DFEC4: - mov r5, #0 - b _021DFF18 -_021DFECC: - ldr r1, [r0] - mov r0, #0 - add r1, r1, #0x2e - mov r2, #0x34 - bl MIi_CpuClear16 - mov r0, r4 - bl MOD04_021DE89C - cmp r0, #0x19 - movhi r5, #0x19 - bhi _021DFF00 - mov r0, r4 - bl MOD04_021DE89C - mov r5, r0 -_021DFF00: - ldr r1, _021DFF6C ; =UNK04_0221053C - mov r0, r4 - ldr r1, [r1] - mov r2, r5, lsl #1 - add r1, r1, #0x2e - bl MIi_CpuCopy16 -_021DFF18: - ldr r0, _021DFF6C ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - add r0, r0, r5, lsl #1 - strh r1, [r0, #0x2e] - bl MOD04_021DDC1C - cmp r0, #4 - beq _021DFF4C - ldr r1, _021DFF70 ; =0xFFFF1596 - mov r0, #2 - bl MOD04_021E0EAC - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021DFF4C: - mov r0, #1 - bl MOD04_021DF5CC - ldr r0, _021DFF6C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x68] - bl MOD04_021EE898 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DFF6C: .word UNK04_0221053C -_021DFF70: .word 0xFFFF1596 - arm_func_end MOD04_021DFE64 - - arm_func_start MOD04_021DFF74 -MOD04_021DFF74: ; 0x021DFF74 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD984 - cmp r0, #0 - beq _021DFF8C - bl MOD04_021DF5EC -_021DFF8C: - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x24] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _021E0194 -_021DFFD8: ; jump table - b _021E0194 ; case 0 - b _021DFFF4 ; case 1 - b _021E0124 ; case 2 - b _021E012C ; case 3 - b _021E012C ; case 4 - b _021E013C ; case 5 - b _021E014C ; case 6 -_021DFFF4: - bl MOD04_021EE6A0 - cmp r0, #1 - beq _021E0014 - cmp r0, #2 - beq _021E00FC - cmp r0, #3 - beq _021E0110 - b _021E0194 -_021E0014: - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0xa0] - add r0, r0, #0x1c - bl MOD04_021F0F94 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - ldr r2, _021E01E8 ; =MOD04_021DF0D4 - mov r3, r1 - add r0, r0, #0x1c - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01EC ; =MOD04_021DEF6C - ldr r0, [r0] - mov r1, #3 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01F0 ; =MOD04_021E20C8 - ldr r0, [r0] - mov r1, #1 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01F4 ; =MOD04_021E1FE4 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - mov r0, #2 - bl MOD04_021DF5CC - bl MOD04_021E1034 - b _021E0194 -_021E00FC: - ldr r1, _021E01F8 ; =0xFFFFB172 - mov r0, #3 - bl MOD04_021E0EAC - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0110: - ldr r1, _021E01FC ; =0xFFFFB17B - mov r0, #4 - bl MOD04_021E0EAC - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0124: - bl MOD04_021E0F1C - b _021E0194 -_021E012C: - bl MOD04_021E2228 - mov r0, #0 - bl MOD04_021E9568 - b _021E0194 -_021E013C: - mov r0, #1 - bl MOD04_021E9568 - bl MOD04_021E2228 - b _021E0194 -_021E014C: - bl MOD04_021EAA64 - bl MOD04_021E2228 - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021E0174 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021E0180 -_021E0174: - mov r0, #1 - bl MOD04_021E9568 - b _021E0194 -_021E0180: - ldr r0, [r1] - cmp r0, #0 - beq _021E0194 - mov r0, #0 - bl MOD04_021E9568 -_021E0194: - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x36c] - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, [r1, #0x364] - cmp r0, #0 - beq _021E01CC - bl MOD04_02202280 - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x364] -_021E01CC: - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x36c] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E01E4: .word UNK04_0221053C -_021E01E8: .word MOD04_021DF0D4 -_021E01EC: .word MOD04_021DEF6C -_021E01F0: .word MOD04_021E20C8 -_021E01F4: .word MOD04_021E1FE4 -_021E01F8: .word 0xFFFFB172 -_021E01FC: .word 0xFFFFB17B - arm_func_end MOD04_021DFF74 - - arm_func_start MOD04_021E0200 -MOD04_021E0200: ; 0x021E0200 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x364] - cmp r0, #0 - beq _021E023C - bl MOD04_02202280 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x364] -_021E023C: - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x36c] - ldr r0, [r0] - ldr r0, [r0, #0x438] - cmp r0, #0 - beq _021E0270 - bl MOD04_02203E80 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x438] -_021E0270: - bl MOD04_02200D6C - bl MOD04_021FBE7C - ldr r0, _021E0370 ; =UNK04_0221053C - ldr ip, [r0] - ldr r0, [ip, #0x1c] - cmp r0, #0 - beq _021E0324 - mov r1, #0 - mov r2, r1 - mov r3, r1 - add r0, ip, #0x1c - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #3 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #1 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, r2 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F0F18 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F0F64 - mov r1, #0 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - str r1, [r0, #0x1c] -_021E0324: - bl MOD04_021E0E48 - bl MOD04_021E1D90 - bl MOD04_021E854C - bl MOD04_021EA9C4 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _021E035C - bl MOD04_021FD704 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] -_021E035C: - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E0370: .word UNK04_0221053C - arm_func_end MOD04_021E0200 - - arm_func_start MOD04_021E0374 -MOD04_021E0374: ; 0x021E0374 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr ip, _021E05D8 ; =UNK04_0221053C - mov r6, r1 - mov r5, r2 - mov r4, r3 - str r0, [ip] - bl MOD04_021DD6F0 - ldr r0, _021E05D8 ; =UNK04_0221053C - mov r2, #0 - ldr r1, [r0] - ldr r3, _021E05DC ; =MOD04_021E8F80 - str r2, [r1] - ldr r1, [r0] - ldr r2, _021E05E0 ; =MOD04_021DEF60 - str r3, [r1, #4] - ldr r1, [r0] - ldr ip, [sp, #0x24] - str r2, [r1, #8] - cmp ip, #0 - ldr r2, [r0] - ldr r3, _021E05E4 ; =MOD04_021DEBE4 - ldr r1, _021E05E8 ; =MOD04_021DEBD8 - str r3, [r2, #0xc] - ldr r0, [r0] - ldr r3, [sp, #0x28] - str r1, [r0, #0x10] - ldr r0, _021E05D8 ; =UNK04_0221053C - moveq ip, #0x2000 - ldr r0, [r0] - cmp r3, #0 - str ip, [r0, #0x14] - moveq r3, #0x2000 - ldr r1, _021E05D8 ; =UNK04_0221053C - mov r0, #0 - ldr r2, [r1] - ldr ip, _021E05EC ; =UNK04_02210F94 - str r3, [r2, #0x18] - ldr r2, [r1] - ldr r3, _021E05F0 ; =UNK04_02211094 - str r0, [r2, #0x1c] - ldr r2, [r1] - str r6, [r2, #0x20] - ldr r2, [r1] - str r0, [r2, #0x24] - ldr r2, [r1] - str r0, [r2, #0x28] - ldr r2, [r1] - strb r0, [r2, #0x2c] - ldr r2, [r1] - strb r0, [r2, #0x2d] - ldr r2, [r1] - str r0, [r2, #0x64] - ldr r2, [r1] - str ip, [r2, #0x68] - ldr r2, [r1] - str r3, [r2, #0x6c] - ldr r2, [r1] - str r0, [r2, #0x70] - ldr r2, [r1] - str r0, [r2, #0x74] - ldr r2, [r1] - str r0, [r2, #0x78] - ldr r2, [r1] - str r0, [r2, #0x7c] - ldr r2, [r1] - str r0, [r2, #0x80] - ldr r2, [r1] - str r0, [r2, #0x84] - ldr r2, [r1] - str r0, [r2, #0x88] - ldr r2, [r1] - str r0, [r2, #0x8c] - ldr r2, [r1] - str r0, [r2, #0x90] - ldr r1, [r1] - str r0, [r1, #0x94] - bl MOD04_021DF6CC - ldr r0, _021E05D8 ; =UNK04_0221053C - mov r3, r5 - ldr r2, [r0] - ldr r1, [r6, #0x24] - ldr r0, _021E05F4 ; =MOD04_021DF304 - str r1, [sp] - add r1, r2, #0x2e - str r1, [sp, #4] - str r0, [sp, #8] - mov r5, #0 - add r0, r2, #0x98 - mov r1, r6 - add r2, r2, #0x1c - str r5, [sp, #0xc] - bl MOD04_021E1074 - ldr r0, _021E05D8 ; =UNK04_0221053C - ldr r2, [sp, #0x30] - ldr r5, [r0] - ldr r3, [sp, #0x2c] - str r2, [sp] - add r0, r5, #0x2f8 - add r1, r5, #0x1c - add r2, r5, #0x2e - bl MOD04_021E234C - ldr r0, _021E05D8 ; =UNK04_0221053C - ldr r1, _021E05EC ; =UNK04_02210F94 - ldr r2, [r0] - ldr r0, _021E05F0 ; =UNK04_02211094 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x30] - str r1, [sp, #8] - str r0, [sp, #0xc] - add r0, r2, #0x354 - add r1, r2, #0x1c - add r3, r2, #4 - bl MOD04_021EA368 - ldr r1, _021E05D8 ; =UNK04_0221053C - ldr r0, _021E05F8 ; =0x000007D8 - ldr r1, [r1] - add r0, r1, r0 - bl MOD04_021EACB4 - mov r0, r4 - bl strlen - cmp r0, #0x100 - movhs r5, #0xff - bhs _021E0578 - mov r0, r4 - bl strlen - mov r5, r0 -_021E0578: - ldr r1, _021E05EC ; =UNK04_02210F94 - mov r0, r4 - mov r2, r5 - bl MI_CpuCopy8 - ldr r0, [sp, #0x20] - ldr r1, _021E05EC ; =UNK04_02210F94 - mov r2, #0 - strb r2, [r1, r5] - bl strlen - cmp r0, #0x100 - movhs r4, #0xff - bhs _021E05B4 - ldr r0, [sp, #0x20] - bl strlen - mov r4, r0 -_021E05B4: - ldr r0, [sp, #0x20] - ldr r1, _021E05F0 ; =UNK04_02211094 - mov r2, r4 - bl MI_CpuCopy8 - ldr r0, _021E05F0 ; =UNK04_02211094 - mov r1, #0 - strb r1, [r0, r4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E05D8: .word UNK04_0221053C -_021E05DC: .word MOD04_021E8F80 -_021E05E0: .word MOD04_021DEF60 -_021E05E4: .word MOD04_021DEBE4 -_021E05E8: .word MOD04_021DEBD8 -_021E05EC: .word UNK04_02210F94 -_021E05F0: .word UNK04_02211094 -_021E05F4: .word MOD04_021DF304 -_021E05F8: .word 0x000007D8 - arm_func_end MOD04_021E0374 - - arm_func_start MOD04_021E05FC -MOD04_021E05FC: ; 0x021E05FC - ldr r0, _021E0624 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - beq _021E061C - ldr r0, [r0, #4] - cmp r0, #5 - moveq r0, #1 - bxeq lr -_021E061C: - mov r0, #0 - bx lr - .align 2, 0 -_021E0624: .word UNK04_022106C8 - arm_func_end MOD04_021E05FC - - arm_func_start MOD04_021E0628 -MOD04_021E0628: ; 0x021E0628 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r4, r1 - ldr r1, [r4] - mov r5, r0 - cmp r1, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r1, _021E07CC ; =UNK04_022106C8 - ldr r2, [r1] - ldr r1, [r2, #4] - cmp r1, #3 - bne _021E0704 - ldrsb r1, [r4, #0x8e] - cmp r1, #0 - bne _021E06DC - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #8 - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - ldr r1, _021E07D0 ; =0x00000705 - add r2, sp, #8 - mov r0, r5 - bl MOD04_021F0B30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r3, #4 - ldr r1, [r0] - ldr r0, _021E07D4 ; =MOD04_021E0628 - str r3, [r1, #4] - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #0x4c - cmp r0, #0 - ldmia sp!, {r4, r5, pc} -_021E06DC: - bl MOD04_021F0D54 - ldr r0, _021E07D8 ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r1, #1 - ldr r0, [r0] - add sp, sp, #0x4c - str r1, [r0, #4] - ldmia sp!, {r4, r5, pc} -_021E0704: - cmp r1, #4 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #0x1d - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - add r1, sp, #0x1d - add r0, r4, #0x8e - bl strcmp - cmp r0, #0 - bne _021E079C - ldr r0, _021E07CC ; =UNK04_022106C8 - add r2, sp, #0x32 - ldr r0, [r0] - ldr r1, [r0, #0xc] - add r0, r0, #0x3c - bl DWCi_Acc_LoginIdToUserName - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r2, [r4, #4] - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r1, r1, #0x3c - bl DWCi_Acc_SetLoginIdToUserData - mov r0, r5 - bl MOD04_021F0D54 - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r1, _021E07DC ; =UNK04_022106C4 - ldr r4, [r0] - ldr r0, _021E07E0 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, r4, #0x48 - add r1, r4, #0x148 - blx r3 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_021E079C: - ldr r0, _021E07D4 ; =MOD04_021E0628 - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - cmp r0, #0 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E07CC: .word UNK04_022106C8 -_021E07D0: .word 0x00000705 -_021E07D4: .word MOD04_021E0628 -_021E07D8: .word MOD04_021E0C80 -_021E07DC: .word UNK04_022106C4 -_021E07E0: .word UNK04_022106CC - arm_func_end MOD04_021E0628 - - arm_func_start MOD04_021E07E4 -MOD04_021E07E4: ; 0x021E07E4 - stmdb sp!, {lr} - sub sp, sp, #0x3d4 - bl MOD04_021D988C - cmp r0, #0x15 - bne _021E08BC - add r0, sp, #0 - bl MOD04_021D97F8 - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x4a - ldr r0, [r0] - add r0, r0, #0x48 - bl strcpy - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x100 - ldr r0, [r0] - add r1, r1, #0x77 - add r0, r0, #0x148 - bl strcpy - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x24] - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0898 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09E0 ; =UNK04_022106C4 - ldr ip, [r0] - ldr r0, _021E09E4 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, ip, #0x48 - add r1, ip, #0x148 - blx r3 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0898: - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09E8 ; =MOD04_021E0C98 - ldr r1, [r0] - mov r3, #3 - add r0, r1, #0x48 - add r1, r1, #0x148 - bl MOD04_021E0BE0 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E08BC: - bl MOD04_021D988C - cmp r0, #0 - addeq sp, sp, #0x3d4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09EC ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x28] - ldr ip, [ip, #0x2c] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E09F0 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _021E0958 - add r0, sp, #0x1c4 - bl MOD04_021D97F8 - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - mov r0, #2 - str r2, [r1, #0x24] - ldr r1, [sp, #0x1c4] - bl MOD04_021E0EAC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0958: - bl MOD04_021D991C - add r0, sp, #0x388 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0x388 - bl MI_CpuCopy8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09F4 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x3bc - add r1, r2, r1 - bl strcpy - ldr r2, _021E09F8 ; =MOD04_021DD944 - ldr r0, _021E09DC ; =UNK04_022106C8 - str r2, [sp, #0x3c8] - ldr r2, _021E09FC ; =MOD04_021DD904 - ldr r1, [r0] - str r2, [sp, #0x3cc] - ldr r1, [r1, #0x24] - add r0, sp, #0x388 - bl MOD04_021D9ACC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} - .align 2, 0 -_021E09DC: .word UNK04_022106C8 -_021E09E0: .word UNK04_022106C4 -_021E09E4: .word UNK04_022106CC -_021E09E8: .word MOD04_021E0C98 -_021E09EC: .word 0x000082EA -_021E09F0: .word 0x00002710 -_021E09F4: .word 0x00000251 -_021E09F8: .word MOD04_021DD944 -_021E09FC: .word MOD04_021DD904 - arm_func_end MOD04_021E07E4 - - arm_func_start MOD04_021E0A00 -MOD04_021E0A00: ; 0x021E0A00 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r5, r0 - mov r4, r1 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, _021E0BBC ; =UNK04_022106CC - ldr r1, _021E0BC0 ; =UNK04_022106C4 - ldr r0, [r0] - str r5, [r2] - str r4, [r1] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0A68 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r2, r1, #0x248 - ldr r1, [r0, #0x24] - add r0, r0, #0x10 - bl DWCi_Acc_LoginIdToUserName - b _021E0B1C -_021E0A68: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_IsValidLoginId - cmp r0, #0 - bne _021E0AD0 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x1c] - add r0, r0, #4 - bl DWCi_Acc_CheckConsoleUserId - cmp r0, #0 - beq _021E0ABC - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r3, r1, #0x3c - add r0, r0, #4 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - b _021E0B04 -_021E0ABC: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_CreateTempLoginId - b _021E0B04 -_021E0AD0: - bl OS_GetTick - ldr r2, _021E0BC4 ; =0x6C078965 - ldr r3, _021E0BC8 ; =0x5D588B65 - umull ip, r4, r0, r2 - mla r4, r0, r3, r4 - ldr r3, _021E0BB8 ; =UNK04_022106C8 - ldr r0, _021E0BCC ; =0x00269EC3 - mla r4, r1, r2, r4 - adds r0, ip, r0 - ldr r3, [r3] - adc r1, r4, #0 - add r0, r3, #0x3c - bl DWCi_Acc_SetPlayerId -_021E0B04: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r0] - ldr r1, [r2, #0xc] - add r0, r2, #0x3c - add r2, r2, #0x248 - bl DWCi_Acc_LoginIdToUserName -_021E0B1C: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0 - bl MI_CpuCopy8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, _021E0BD0 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x34 - add r1, r2, r1 - bl strcpy - ldr r4, _021E0BD4 ; =MOD04_021DD944 - ldr r3, _021E0BD8 ; =MOD04_021DD904 - ldr r1, _021E0BDC ; =0x00001C10 - mov r0, #0 - mov r2, #4 - str r4, [sp, #0x40] - str r3, [sp, #0x44] - bl MOD04_021DD924 - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r4, r0 - ldr r0, [r1] - str r4, [r0, #0x24] - bl OS_GetTick - ldr r2, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r2] - str r0, [r2, #0x28] - str r1, [r2, #0x2c] - mov r1, r4 - add r0, sp, #0 - bl MOD04_021D9ACC - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E0BB8: .word UNK04_022106C8 -_021E0BBC: .word UNK04_022106CC -_021E0BC0: .word UNK04_022106C4 -_021E0BC4: .word 0x6C078965 -_021E0BC8: .word 0x5D588B65 -_021E0BCC: .word 0x00269EC3 -_021E0BD0: .word 0x00000251 -_021E0BD4: .word MOD04_021DD944 -_021E0BD8: .word MOD04_021DD904 -_021E0BDC: .word 0x00001C10 - arm_func_end MOD04_021E0A00 - - arm_func_start MOD04_021E0BE0 -MOD04_021E0BE0: ; 0x021E0BE0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r4, _021E0C7C ; =UNK04_022106C8 - mov r6, r1 - ldr r4, [r4] - mov r1, r0 - add r0, r4, #0x48 - mov r5, r2 - mov r4, r3 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - mov r1, r6 - ldr r0, [r0] - add r0, r0, #0x148 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - ldr r6, [r0] - bl OS_GetTick - str r0, [r6, #0x34] - str r1, [r6, #0x38] - mov r3, #1 - ldr r0, _021E0C7C ; =UNK04_022106C8 - str r3, [r6, #0x30] - ldr r2, [r0] - mov r1, #0 - str r1, [sp] - str r5, [sp, #4] - str r1, [sp, #8] - ldr r0, [r2] - add r1, r2, #0x48 - add r2, r2, #0x148 - bl MOD04_021F0D8C - bl MOD04_021E0DB0 - cmp r0, #0 - ldreq r0, _021E0C7C ; =UNK04_022106C8 - ldreq r0, [r0] - streq r4, [r0, #4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E0C7C: .word UNK04_022106C8 - arm_func_end MOD04_021E0BE0 - - arm_func_start MOD04_021E0C80 -MOD04_021E0C80: ; 0x021E0C80 - ldr ip, _021E0C90 ; =MOD04_021E0BE0 - ldr r2, _021E0C94 ; =MOD04_021E0C98 - mov r3, #2 - bx ip - .align 2, 0 -_021E0C90: .word MOD04_021E0BE0 -_021E0C94: .word MOD04_021E0C98 - arm_func_end MOD04_021E0C80 - - arm_func_start MOD04_021E0C98 -MOD04_021E0C98: ; 0x021E0C98 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _021E0DA0 ; =UNK04_022106C8 - mov r2, #0 - ldr ip, [r3] - mov r4, r1 - str r2, [ip, #0x30] - ldr r1, [r4] - cmp r1, #0 - bne _021E0D90 - ldr ip, [r3] - ldr r1, [ip, #4] - cmp r1, #2 - bne _021E0D5C - ldr r1, [ip, #0x1c] - ldr r0, [r4, #4] - ldr r1, [r1, #0x1c] - cmp r1, r0 - bne _021E0D48 - ldr r1, _021E0DA4 ; =UNK04_0220D34C - mov r3, #5 - mov r0, #1 - str r3, [ip, #4] - bl MOD04_021E1E30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, _021E0DA0 ; =UNK04_022106C8 - ldr r1, [r4, #4] - ldr r3, [r0] - mov r0, #0 - ldr r2, [r3, #0x18] - ldr r3, [r3, #0x14] - blx r3 - bl MOD04_021DF7C4 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - bl MOD04_021EA1E0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D48: - ldr r1, _021E0DA8 ; =0xFFFF15A0 - mov r0, #6 - bl MOD04_021E0EAC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_021E0D5C: - cmp r1, #3 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r1, _021E0DAC ; =MOD04_021E0628 - mov r3, r2 - str r1, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D90: - mov r0, r1 - bl MOD04_021E0DB0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0DA0: .word UNK04_022106C8 -_021E0DA4: .word UNK04_0220D34C -_021E0DA8: .word 0xFFFF15A0 -_021E0DAC: .word MOD04_021E0628 - arm_func_end MOD04_021E0C98 - - arm_func_start MOD04_021E0DB0 -MOD04_021E0DB0: ; 0x021E0DB0 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _021E0E0C -_021E0DCC: ; jump table - b _021E0E0C ; case 0 - b _021E0DE0 ; case 1 - b _021E0DEC ; case 2 - b _021E0DF8 ; case 3 - b _021E0E04 ; case 4 -_021E0DE0: - mov r0, #9 - mvn r2, #0 - b _021E0E0C -_021E0DEC: - mov r0, #9 - mvn r2, #1 - b _021E0E0C -_021E0DF8: - mov r0, #6 - mvn r2, #9 - b _021E0E0C -_021E0E04: - mov r0, #6 - mvn r2, #0x13 -_021E0E0C: - ldr r1, _021E0E20 ; =0xFFFF11B8 - add r1, r2, r1 - bl MOD04_021E0EAC - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0E20: .word 0xFFFF11B8 - arm_func_end MOD04_021E0DB0 - - arm_func_start MOD04_021E0E24 -MOD04_021E0E24: ; 0x021E0E24 - ldr r0, _021E0E44 ; =UNK04_022106C8 - ldr r2, [r0] - cmp r2, #0 - movne r1, #0 - strne r1, [r2, #4] - ldrne r0, [r0] - strne r1, [r0, #0x30] - bx lr - .align 2, 0 -_021E0E44: .word UNK04_022106C8 - arm_func_end MOD04_021E0E24 - - arm_func_start MOD04_021E0E48 -MOD04_021E0E48: ; 0x021E0E48 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _021E0E94 - bl MOD04_021D9974 - bl MOD04_021D991C - ldr r1, _021E0EA8 ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x24] -_021E0E94: - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E0EA8: .word UNK04_022106C8 - arm_func_end MOD04_021E0E48 - - arm_func_start MOD04_021E0EAC -MOD04_021E0EAC: ; 0x021E0EAC - stmdb sp!, {r4, lr} - ldr r2, _021E0EFC ; =UNK04_022106C8 - mov r4, r0 - ldr r2, [r2] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021DD6B0 - ldr r0, _021E0EFC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r3, [r0, #0x14] - cmp r3, #0 - beq _021E0EF4 - ldr r2, [r0, #0x18] - mov r0, r4 - mov r1, #0 - blx r3 -_021E0EF4: - bl MOD04_021E0E24 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0EFC: .word UNK04_022106C8 - arm_func_end MOD04_021E0EAC - - arm_func_start MOD04_021E0F00 -MOD04_021E0F00: ; 0x021E0F00 - ldr r0, _021E0F18 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x1c] - moveq r0, #0 - bx lr - .align 2, 0 -_021E0F18: .word UNK04_022106C8 - arm_func_end MOD04_021E0F00 - - arm_func_start MOD04_021E0F1C -MOD04_021E0F1C: ; 0x021E0F1C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021E101C -_021E0F60: ; jump table - b _021E101C ; case 0 - b _021E0F78 ; case 1 - b _021E0F84 ; case 2 - b _021E0F84 ; case 3 - b _021E0F84 ; case 4 - b _021E101C ; case 5 -_021E0F78: - bl MOD04_021E07E4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0F84: - ldr r0, [r1] - cmp r0, #0 - beq _021E0FA0 - ldr r1, [r0] - cmp r1, #0 - beq _021E0FA0 - bl MOD04_021F0F18 -_021E0FA0: - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x30] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E1024 ; =UNK04_022106C8 - ldr r2, _021E1028 ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x34] - ldr ip, [ip, #0x38] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E102C ; =0x0000EA60 - cmp r1, #0 - cmpeq r0, r2 - addls sp, sp, #4 - ldmlsia sp!, {pc} - ldr r1, _021E1030 ; =0xFFFF1172 - mov r0, #6 - bl MOD04_021E0EAC - ldr r0, _021E1024 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x30] -_021E101C: - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E1024: .word UNK04_022106C8 -_021E1028: .word 0x000082EA -_021E102C: .word 0x0000EA60 -_021E1030: .word 0xFFFF1172 - arm_func_end MOD04_021E0F1C - - arm_func_start MOD04_021E1034 -MOD04_021E1034: ; 0x021E1034 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E106C ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E1070 ; =UNK04_022106C8 - mov r3, #1 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - str r1, [r0, #0x30] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E106C: .word MOD04_021E0C80 -_021E1070: .word UNK04_022106C8 - arm_func_end MOD04_021E1034 - - arm_func_start MOD04_021E1074 -MOD04_021E1074: ; 0x021E1074 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, _021E10F4 ; =UNK04_022106C8 - mov r6, r1 - mov r5, r2 - mov r1, #0 - mov r2, #0x260 - mov r4, r3 - str r0, [ip] - bl MI_CpuFill8 - ldr r0, _021E10F4 ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - ldr ip, [sp, #0x10] - str r5, [r1] - ldr r1, [r0] - ldr r5, [sp, #0x14] - str r2, [r1, #4] - ldr r1, [r0] - ldr r3, [sp, #0x18] - str r4, [r1, #8] - ldr r1, [r0] - ldr r2, [sp, #0x1c] - str ip, [r1, #0xc] - ldr r1, [r0] - str r5, [r1, #0x10] - ldr r1, [r0] - str r3, [r1, #0x14] - ldr r1, [r0] - str r2, [r1, #0x18] - ldr r0, [r0] - str r6, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E10F4: .word UNK04_022106C8 - arm_func_end MOD04_021E1074 - - arm_func_start MOD04_021E10F8 -MOD04_021E10F8: ; 0x021E10F8 - ldr r0, _021E1108 ; =UNK04_022106D0 - ldr r0, [r0] - ldr r0, [r0, #0x20] - bx lr - .align 2, 0 -_021E1108: .word UNK04_022106D0 - arm_func_end MOD04_021E10F8 - - arm_func_start MOD04_021E110C -MOD04_021E110C: ; 0x021E110C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sl, r1 - ldr r0, [sl] - mov r8, #0 - cmp r0, #0 - mov r0, #1 - str r0, [sp] - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _021E12B4 ; =UNK04_022106D0 - mov sb, r8 - ldr r2, [r4] - ldr r1, [r2, #0x14] - cmp r1, #0 - ble _021E1274 - mov r7, r8 - str r0, [sp, #4] - mov fp, r8 - mov r5, r0 -_021E115C: - ldr r0, [r2, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #1 - bne _021E11C8 - bl MOD04_021E0F00 - ldr r1, [r4] - add r2, sp, #8 - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl DWC_LoginIdToUserName - add r0, sp, #8 - add r1, sl, #0x8e - bl strcmp - cmp r0, #0 - bne _021E125C - ldr r0, [r4] - ldr r1, [sl, #4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_SetGsProfileId - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWCi_SetBuddyFriendData - mov r8, r5 - b _021E125C -_021E11C8: - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #3 - beq _021E11F8 - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #2 - bne _021E125C -_021E11F8: - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_IsBuddyFriendData - cmp r0, #1 - streq fp, [sp] - beq _021E125C - ldr r6, [sl, #4] - bl MOD04_021E0F00 - ldr r1, [r4] - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl DWC_GetGsProfileId - cmp r6, r0 - bne _021E125C - ldr r0, [r4] - mov r1, r6 - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_SetGsProfileId - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWCi_SetBuddyFriendData - ldr r8, [sp, #4] -_021E125C: - ldr r2, [r4] - add sb, sb, #1 - ldr r1, [r2, #0x14] - add r7, r7, #0xc - cmp sb, r1 - blt _021E115C -_021E1274: - cmp r8, #0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r2, #0x18] - ldr r2, [sl, #4] - bl MOD04_021E17F0 - ldr r1, [sp] - cmp r1, #0 - beq _021E129C - bl MOD04_021E1DA4 -_021E129C: - ldr r0, _021E12B4 ; =UNK04_022106D0 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x1d] - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E12B4: .word UNK04_022106D0 - arm_func_end MOD04_021E110C - - arm_func_start MOD04_021E12B8 -MOD04_021E12B8: ; 0x021E12B8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sb, r1 - ldr r1, [sb] - mov sl, r0 - cmp r1, #0 - mov fp, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _021E1410 ; =UNK04_022106D0 - mov r8, fp - ldr r1, [r4] - ldr r0, [r1, #0x14] - cmp r0, #0 - ble _021E13E4 - add r0, sb, #0x8e - mov r7, fp - mov r5, #1 - str r0, [sp] -_021E1304: - ldr r0, [r1, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #1 - bne _021E136C - bl MOD04_021E0F00 - ldr r1, [r4] - add r2, sp, #4 - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl DWC_LoginIdToUserName - ldr r1, [sp] - add r0, sp, #4 - bl strcmp - cmp r0, #0 - bne _021E13CC - ldr r1, [sb, #4] - mov r0, sl - bl MOD04_021F0944 - ldr r0, [r4] - ldr r1, [sb, #4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_SetGsProfileId - mov fp, r5 - b _021E13CC -_021E136C: - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #3 - beq _021E139C - ldr r0, [r4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl DWC_GetFriendDataType - cmp r0, #2 - bne _021E13CC -_021E139C: - ldr r6, [sb, #4] - bl MOD04_021E0F00 - ldr r1, [r4] - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl DWC_GetGsProfileId - cmp r6, r0 - bne _021E13CC - mov r0, sl - mov r1, r6 - bl MOD04_021F0944 - mov fp, r5 -_021E13CC: - ldr r1, [r4] - add r8, r8, #1 - ldr r0, [r1, #0x14] - add r7, r7, #0xc - cmp r8, r0 - blt _021E1304 -_021E13E4: - cmp fp, #0 - beq _021E13FC - ldr r0, [sb, #4] - bl MOD04_021E17BC - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E13FC: - ldr r1, [sb, #4] - mov r0, sl - bl MOD04_021F0864 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E1410: .word UNK04_022106D0 - arm_func_end MOD04_021E12B8 - - arm_func_start MOD04_021E1414 -MOD04_021E1414: ; 0x021E1414 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - mov sb, r1 - ldr r1, [sb] - mov sl, r0 - mov r8, r2 - cmp r1, #0 - bne _021E15FC - ldr r0, [sb, #4] - cmp r0, #0 - beq _021E15FC - mov r0, #0xc - ldr r1, _021E1670 ; =UNK04_022106D0 - mul r6, r8, r0 - ldr r0, [r1] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl DWC_GetFriendDataType - cmp r0, #0 - beq _021E15FC - ldr r7, _021E1670 ; =UNK04_022106D0 - ldr r1, [r7] - ldr r0, [r1] - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #1 - strb r0, [r1, #0x1d] - ldr r0, [sb, #4] - mov r5, #0 - cmp r0, #0 - ble _021E14FC - mov r4, r5 -_021E1498: - ldr r0, [r7] - ldr r1, [sb, #0xc] - ldr r0, [r0, #0x18] - ldr r2, [r1, r4] - mov r1, r8 - bl MOD04_021E1900 - cmp r0, #0 - beq _021E14E8 - ldr r0, _021E1670 ; =UNK04_022106D0 - mov r2, #1 - ldr r4, [r0] - ldr r1, _021E1674 ; =0x00000601 - ldrb r3, [r4, #0x1c] - add sp, sp, #4 - add r3, r3, #1 - strb r3, [r4, #0x1c] - ldr r0, [r0] - strb r2, [r0, #0x1e] - str r1, [sb, #8] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E14E8: - ldr r0, [sb, #4] - add r5, r5, #1 - cmp r5, r0 - add r4, r4, #0xac - blt _021E1498 -_021E14FC: - cmp r0, #0 - mov r5, #0 - ble _021E15C4 - mov r7, r5 - add fp, sp, #0 - mvn r4, #0 -_021E1514: - ldr r1, [sb, #0xc] - mov r0, sl - ldr r1, [r1, r7] - mov r2, fp - bl MOD04_021F0664 - bl MOD04_021E1678 - ldr r0, [sp] - cmp r0, r4 - bne _021E1548 - ldr r0, [sb, #0xc] - ldr r0, [r0, r7] - bl MOD04_021E17BC - b _021E15B0 -_021E1548: - ldr r0, _021E1670 ; =UNK04_022106D0 - ldr r1, [sb, #0xc] - ldr r0, [r0] - ldr r1, [r1] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl DWC_SetGsProfileId - ldr r0, _021E1670 ; =UNK04_022106D0 - ldr r0, [r0] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl DWCi_SetBuddyFriendData - mov r0, r8 - bl MOD04_021E1DA4 - ldr r0, _021E1670 ; =UNK04_022106D0 - mov r2, #1 - ldr r4, [r0] - ldr r1, _021E1674 ; =0x00000601 - ldrb r3, [r4, #0x1c] - add sp, sp, #4 - add r3, r3, #1 - strb r3, [r4, #0x1c] - ldr r0, [r0] - strb r2, [r0, #0x1e] - str r1, [sb, #8] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E15B0: - ldr r0, [sb, #4] - add r5, r5, #1 - cmp r5, r0 - add r7, r7, #0xac - blt _021E1514 -_021E15C4: - ldr r0, [sb, #8] - cmp r0, #0x600 - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021E1670 ; =UNK04_022106D0 - mov r1, #1 - ldr r3, [r0] - add sp, sp, #4 - ldrb r2, [r3, #0x1c] - add r2, r2, #1 - strb r2, [r3, #0x1c] - ldr r0, [r0] - strb r1, [r0, #0x1e] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E15FC: - ldr r0, [sb] - cmp r0, #0 - beq _021E1618 - bl MOD04_021E1678 - add sp, sp, #4 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E1618: - ldr r0, _021E1670 ; =UNK04_022106D0 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #1 - beq _021E1648 - ldr r1, [r1, #0x18] - mov r0, #0xc - mla r0, r8, r0, r1 - bl DWC_GetFriendDataType - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E1648: - ldr r0, _021E1670 ; =UNK04_022106D0 - mov r1, #1 - ldr r3, [r0] - ldrb r2, [r3, #0x1c] - add r2, r2, #1 - strb r2, [r3, #0x1c] - ldr r0, [r0] - strb r1, [r0, #0x1e] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E1670: .word UNK04_022106D0 -_021E1674: .word 0x00000601 - arm_func_end MOD04_021E1414 - - arm_func_start MOD04_021E1678 -MOD04_021E1678: ; 0x021E1678 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _021E16D4 -_021E1694: ; jump table - b _021E16D4 ; case 0 - b _021E16A8 ; case 1 - b _021E16B4 ; case 2 - b _021E16C0 ; case 3 - b _021E16CC ; case 4 -_021E16A8: - mov r0, #9 - mvn r2, #0 - b _021E16D4 -_021E16B4: - mov r0, #9 - mvn r2, #1 - b _021E16D4 -_021E16C0: - mov r0, #6 - mvn r2, #9 - b _021E16D4 -_021E16CC: - mov r0, #6 - mvn r2, #0x13 -_021E16D4: - ldr r1, _021E16E8 ; =0xFFFEEAA8 - add r1, r2, r1 - bl MOD04_021E2114 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E16E8: .word 0xFFFEEAA8 - arm_func_end MOD04_021E1678 - - arm_func_start MOD04_021E16EC -MOD04_021E16EC: ; 0x021E16EC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021E17B8 ; =UNK04_022106D0 - mov r3, #0 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - str r3, [sp] - cmp r2, #0 - beq _021E1720 - bl MOD04_021E05FC - cmp r0, #0 - bne _021E172C -_021E1720: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E172C: - bl MOD04_021E0F00 - mov r1, r5 - bl DWC_GetGsProfileId - mov r5, r0 - cmp r5, #0 - ble _021E176C - ldr r0, _021E17B8 ; =UNK04_022106D0 - add r2, sp, #0 - ldr r0, [r0] - mov r1, r5 - ldr r0, [r0, #4] - bl MOD04_021F0664 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r4, r5, pc} -_021E176C: - cmp r5, #0 - ble _021E1784 - ldr r1, [sp] - mvn r0, #0 - cmp r1, r0 - bne _021E1790 -_021E1784: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E1790: - ldr r0, _021E17B8 ; =UNK04_022106D0 - mov r2, r4 - ldr r0, [r0] - ldr r0, [r0, #4] - bl MOD04_021F06E4 - cmp r0, #0 - movne r0, #0 - moveq r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E17B8: .word UNK04_022106D0 - arm_func_end MOD04_021E16EC - - arm_func_start MOD04_021E17BC -MOD04_021E17BC: ; 0x021E17BC - stmdb sp!, {r4, lr} - ldr r2, _021E17E8 ; =UNK04_022106D0 - mov r1, r0 - ldr r0, [r2] - ldr r2, _021E17EC ; =UNK04_0220D350 - ldr r0, [r0, #4] - bl MOD04_021F09B0 - mov r4, r0 - bl MOD04_021E1678 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E17E8: .word UNK04_022106D0 -_021E17EC: .word UNK04_0220D350 - arm_func_end MOD04_021E17BC - - arm_func_start MOD04_021E17F0 -MOD04_021E17F0: ; 0x021E17F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r1 - mov fp, r0 - mvn r0, #0 - str r2, [sp] - cmp sl, #0 - str r0, [sp, #4] - mov r8, #0 - ble _021E18F0 - mov r6, fp - mov r5, fp - mov r0, #1 - str r0, [sp, #8] -_021E1828: - mov r0, r8 - bl MOD04_021E1F84 - movs sb, r0 - beq _021E18DC - ldr r0, [sp] - add r7, r8, #1 - cmp sb, r0 - streq r8, [sp, #4] - cmp r7, sl - bge _021E18DC - mov r0, #0xc - mla r4, r7, r0, fp -_021E1858: - mov r0, r7 - bl MOD04_021E1F84 - cmp sb, r0 - bne _021E18CC - mov r0, r6 - bl DWC_GetFriendDataType - cmp r0, #2 - bne _021E1894 - mov r0, r4 - bl DWC_GetFriendDataType - cmp r0, #3 - bne _021E1894 - mov r0, r5 - mov r1, sb - bl DWC_SetGsProfileId -_021E1894: - mov r0, r4 - bl DWC_IsBuddyFriendData - cmp r0, #0 - beq _021E18AC - mov r0, r5 - bl DWCi_SetBuddyFriendData -_021E18AC: - mov r0, fp - mov r1, r7 - mov r2, r8 - bl MOD04_021E19B8 - ldr r0, _021E18FC ; =UNK04_022106D0 - ldr r1, [r0] - ldr r0, [sp, #8] - strb r0, [r1, #0x1d] -_021E18CC: - add r7, r7, #1 - cmp r7, sl - add r4, r4, #0xc - blt _021E1858 -_021E18DC: - add r8, r8, #1 - cmp r8, sl - add r6, r6, #0xc - add r5, r5, #0xc - blt _021E1828 -_021E18F0: - ldr r0, [sp, #4] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E18FC: .word UNK04_022106D0 - arm_func_end MOD04_021E17F0 - - arm_func_start MOD04_021E1900 -MOD04_021E1900: ; 0x021E1900 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r6, r1 - mov r7, r0 - mov r5, r2 - cmp r6, #0 - mov r4, #0 - ble _021E19A8 -_021E1920: - mov r0, r4 - bl MOD04_021E1F84 - cmp r0, #0 - beq _021E199C - cmp r0, r5 - bne _021E199C - mov r0, #0xc - mla r0, r6, r0, r7 - bl DWC_IsBuddyFriendData - cmp r0, #0 - beq _021E1974 - mov r0, #0xc - mla r0, r4, r0, r7 - bl DWC_IsBuddyFriendData - cmp r0, #0 - bne _021E1974 - mov r0, r7 - mov r1, r4 - mov r2, r6 - bl MOD04_021E19B8 - b _021E1984 -_021E1974: - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl MOD04_021E19B8 -_021E1984: - ldr r1, _021E19B4 ; =UNK04_022106D0 - mov r0, #1 - ldr r1, [r1] - add sp, sp, #4 - strb r0, [r1, #0x1d] - ldmia sp!, {r4, r5, r6, r7, pc} -_021E199C: - add r4, r4, #1 - cmp r4, r6 - blt _021E1920 -_021E19A8: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E19B4: .word UNK04_022106D0 - arm_func_end MOD04_021E1900 - - arm_func_start MOD04_021E19B8 -MOD04_021E19B8: ; 0x021E19B8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r3, _021E1A1C ; =UNK04_022106D0 - mov r5, r1 - ldr r1, [r3] - mov r4, r2 - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - mov r2, #0xc - mla r0, r5, r2, r0 - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _021E1A1C ; =UNK04_022106D0 - ldr r0, [r0] - ldr r3, [r0, #0x3c] - cmp r3, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r2, [r0, #0x40] - mov r0, r5 - mov r1, r4 - blx r3 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E1A1C: .word UNK04_022106D0 - arm_func_end MOD04_021E19B8 - - arm_func_start MOD04_021E1A20 -MOD04_021E1A20: ; 0x021E1A20 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021E1A5C ; =UNK04_022106D0 - mov r0, #0 - ldr r3, [r1] - ldrb r1, [r3, #0x1d] - ldr r2, [r3, #0x30] - ldr r3, [r3, #0x2c] - blx r3 - ldr r0, _021E1A5C ; =UNK04_022106D0 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E1A5C: .word UNK04_022106D0 - arm_func_end MOD04_021E1A20 - - arm_func_start MOD04_021E1A60 -MOD04_021E1A60: ; 0x021E1A60 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24c - ldr r2, _021E1CC4 ; =UNK04_022106D0 - mov r6, r0 - ldr r2, [r2] - mov r5, r1 - ldrb r0, [r2, #0x1e] - cmp r0, #0 - bne _021E1B8C - ldr r0, [r2, #4] - add r1, sp, #0x18 - bl MOD04_021F0828 - bl MOD04_021E1678 - ldr r0, [sp, #0x18] - mov fp, #0 - str fp, [sp, #0x1c] - cmp r0, #0 - ble _021E1B7C - ldr r8, _021E1CC4 ; =UNK04_022106D0 - mov sb, #1 - mov r7, #0xc -_021E1AB4: - ldr r0, [r8] - ldr r1, [sp, #0x1c] - ldr r0, [r0, #4] - add r2, sp, #0x38 - bl MOD04_021F06E4 - bl MOD04_021E1678 - mov r4, fp - cmp r5, #0 - ble _021E1B30 -_021E1AD8: - mov r0, r4 - bl MOD04_021E1F84 - ldr r1, [sp, #0x38] - cmp r1, r0 - bne _021E1B24 - mul sl, r4, r7 - add r0, r6, sl - bl DWC_IsBuddyFriendData - cmp r0, #0 - bne _021E1B30 - add sl, r6, sl - ldr r1, [sp, #0x38] - mov r0, sl - bl DWC_SetGsProfileId - mov r0, sl - bl DWCi_SetBuddyFriendData - ldr r0, [r8] - strb sb, [r0, #0x1d] - b _021E1B30 -_021E1B24: - add r4, r4, #1 - cmp r4, r5 - blt _021E1AD8 -_021E1B30: - cmp r4, r5 - bne _021E1B64 - ldr r0, [r8] - ldr r1, [sp, #0x38] - ldr r0, [r0, #4] - bl MOD04_021F0580 - bl MOD04_021E1678 - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - sub r1, r1, #1 - sub r0, r0, #1 - str r1, [sp, #0x18] - str r0, [sp, #0x1c] -_021E1B64: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x18] - add r1, r1, #1 - str r1, [sp, #0x1c] - cmp r1, r0 - blt _021E1AB4 -_021E1B7C: - ldr r0, _021E1CC4 ; =UNK04_022106D0 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x1e] -_021E1B8C: - ldr sl, _021E1CC4 ; =UNK04_022106D0 - ldr r0, [sl] - ldrb r0, [r0, #0x1c] - cmp r0, r5 - addge sp, sp, #0x24c - ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r4, sp, #0x1c - mov r8, #0xc - mvn sb, #0 -_021E1BB0: - bl MOD04_021E1F84 - movs r7, r0 - beq _021E1C08 - ldr r1, [sl] - mov r0, r6 - ldrb r1, [r1, #0x1c] - mov r2, r7 - bl MOD04_021E1900 - cmp r0, #0 - bne _021E1C9C - ldr r0, [sl] - mov r1, r7 - ldr r0, [r0, #4] - mov r2, r4 - bl MOD04_021F0664 - bl MOD04_021E1678 - ldr r0, [sp, #0x1c] - cmp r0, sb - bne _021E1C9C - mov r0, r7 - bl MOD04_021E17BC - b _021E1C9C -_021E1C08: - bl MOD04_021E0F00 - ldr r1, [sl] - ldrb r2, [r1, #0x1c] - mla r1, r2, r8, r6 - bl DWC_GetGsProfileId - cmp r0, sb - bne _021E1C9C - bl MOD04_021E0F00 - ldr r2, _021E1CC4 ; =UNK04_022106D0 - mov r1, #0xc - ldr r3, [r2] - add r2, sp, #0x20 - ldrb r3, [r3, #0x1c] - mla r1, r3, r1, r6 - bl DWC_LoginIdToUserName - ldr r0, _021E1CC4 ; =UNK04_022106D0 - mov r1, #0 - ldr r4, [r0] - add r2, sp, #0x20 - str r1, [sp] - str r2, [sp, #4] - str r1, [sp, #8] - ldr r0, _021E1CC8 ; =MOD04_021E1414 - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldrb r0, [r4, #0x1c] - mov r2, r1 - mov r3, r1 - str r0, [sp, #0x14] - ldr r0, [r4, #4] - bl MOD04_021F0C84 - ldr r0, _021E1CC4 ; =UNK04_022106D0 - mov r1, #2 - ldr r0, [r0] - add sp, sp, #0x24c - strb r1, [r0, #0x1e] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E1C9C: - ldr r1, [sl] - ldrb r0, [r1, #0x1c] - add r0, r0, #1 - strb r0, [r1, #0x1c] - ldr r0, [sl] - ldrb r0, [r0, #0x1c] - cmp r0, r5 - blt _021E1BB0 - add sp, sp, #0x24c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E1CC4: .word UNK04_022106D0 -_021E1CC8: .word MOD04_021E1414 - arm_func_end MOD04_021E1A60 - - arm_func_start MOD04_021E1CCC -MOD04_021E1CCC: ; 0x021E1CCC - ldr r0, _021E1CF8 ; =UNK04_022106D0 - ldr r1, [r0] - cmp r1, #0 - bxeq lr - mov r2, #0 - str r2, [r1] - ldr r1, [r0] - strb r2, [r1, #0x1e] - ldr r0, [r0] - strb r2, [r0, #0x1f] - bx lr - .align 2, 0 -_021E1CF8: .word UNK04_022106D0 - arm_func_end MOD04_021E1CCC - - arm_func_start MOD04_021E1CFC -MOD04_021E1CFC: ; 0x021E1CFC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021E1D88 ; =UNK04_022106D0 - mov r5, #0 - ldr r4, [r0] - bl OS_GetTick - ldr r3, [r4, #0xc] - ldr r2, [r4, #0x10] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _021E1D8C ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, r5 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, #0x12c - blo _021E1D7C - ldr r1, [r4, #8] - ldr r0, _021E1D88 ; =UNK04_022106D0 - add r1, r1, #1 - str r1, [r4, #8] - ldr r0, [r0] - ldr r0, [r0, #4] - bl MOD04_021F0F18 - mov r5, r0 - bl OS_GetTick - ldr r2, _021E1D88 ; =UNK04_022106D0 - ldr r2, [r2] - str r0, [r2, #0xc] - str r1, [r2, #0x10] -_021E1D7C: - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E1D88: .word UNK04_022106D0 -_021E1D8C: .word 0x000082EA - arm_func_end MOD04_021E1CFC - - arm_func_start MOD04_021E1D90 -MOD04_021E1D90: ; 0x021E1D90 - ldr r0, _021E1DA0 ; =UNK04_022106D0 - mov r1, #0 - str r1, [r0] - bx lr - .align 2, 0 -_021E1DA0: .word UNK04_022106D0 - arm_func_end MOD04_021E1D90 - - arm_func_start MOD04_021E1DA4 -MOD04_021E1DA4: ; 0x021E1DA4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x210 - ldr r1, _021E1E2C ; =UNK04_022106D0 - mov r4, r0 - ldr r3, [r1] - ldr r2, [r3, #0x44] - cmp r2, #0 - beq _021E1DD8 - ldr r1, [r3] - cmp r1, #1 - beq _021E1DD8 - ldr r1, [r3, #0x48] - blx r2 -_021E1DD8: - ldr r0, _021E1E2C ; =UNK04_022106D0 - ldr r1, [r0] - ldr r0, [r1, #0x34] - cmp r0, #0 - addeq sp, sp, #0x210 - ldmeqia sp!, {r4, pc} - ldr r1, [r1, #0x18] - mov r0, #0xc - mla r0, r4, r0, r1 - add r1, sp, #0x108 - bl MOD04_021E26B8 - ldr r2, _021E1E2C ; =UNK04_022106D0 - mov r1, r0 - ldr r0, [r2] - add r2, sp, #0x108 - ldr r3, [r0, #0x38] - ldr ip, [r0, #0x34] - mov r0, r4 - blx ip - add sp, sp, #0x210 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E1E2C: .word UNK04_022106D0 - arm_func_end MOD04_021E1DA4 - - arm_func_start MOD04_021E1E30 -MOD04_021E1E30: ; 0x021E1E30 - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _021E1ED0 ; =UNK04_022106D0 - mov r6, r0 - ldr r0, [r3] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - beq _021E1E5C - bl MOD04_021E05FC - cmp r0, #0 - bne _021E1E64 -_021E1E5C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E1E64: - mvn r0, #0 - cmp r6, r0 - ldreq r0, _021E1ED0 ; =UNK04_022106D0 - ldreq r0, [r0] - ldreq r0, [r0, #4] - ldreq r0, [r0] - ldreq r6, [r0, #0x214] - cmp r5, #0 - ldreq r0, _021E1ED0 ; =UNK04_022106D0 - mov r1, r6 - ldreq r0, [r0] - ldreq r0, [r0, #4] - ldreq r0, [r0] - addeq r5, r0, #0x218 - cmp r4, #0 - ldreq r0, _021E1ED0 ; =UNK04_022106D0 - mov r2, r5 - ldreq r0, [r0] - ldreq r0, [r0, #4] - ldreq r0, [r0] - addeq r4, r0, #0x318 - ldr r0, _021E1ED0 ; =UNK04_022106D0 - mov r3, r4 - ldr r0, [r0] - ldr r0, [r0, #4] - bl MOD04_021F034C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E1ED0: .word UNK04_022106D0 - arm_func_end MOD04_021E1E30 - - arm_func_start MOD04_021E1ED4 -MOD04_021E1ED4: ; 0x021E1ED4 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E1F14 ; =UNK04_022106D0 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - mov r0, #0 - str r0, [r1, #8] - bl OS_GetTick - ldr r2, _021E1F14 ; =UNK04_022106D0 - ldr r2, [r2] - str r0, [r2, #0xc] - str r1, [r2, #0x10] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E1F14: .word UNK04_022106D0 - arm_func_end MOD04_021E1ED4 - - arm_func_start MOD04_021E1F18 -MOD04_021E1F18: ; 0x021E1F18 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _021E1F80 ; =UNK04_022106D0 - mov r6, r0 - ldr r0, [r4] - cmp r0, #0 - beq _021E1F38 - cmp r6, #0 - bne _021E1F40 -_021E1F38: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E1F40: - ldr r0, [r0, #0x14] - mov r5, #0 - cmp r0, #0 - ble _021E1F78 -_021E1F50: - mov r0, r5 - bl MOD04_021E1F84 - cmp r6, r0 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4] - add r5, r5, #1 - ldr r0, [r0, #0x14] - cmp r5, r0 - blt _021E1F50 -_021E1F78: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E1F80: .word UNK04_022106D0 - arm_func_end MOD04_021E1F18 - - arm_func_start MOD04_021E1F84 -MOD04_021E1F84: ; 0x021E1F84 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r1, _021E1FE0 ; =UNK04_022106D0 - mov r5, r0 - ldr r0, [r1] - ldr r4, [r0, #0x18] - cmp r4, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - bl MOD04_021E0F00 - mov r1, #0xc - mla r1, r5, r1, r4 - bl DWC_GetGsProfileId - cmp r0, #0 - beq _021E1FD4 - mvn r1, #0 - cmp r0, r1 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, pc} -_021E1FD4: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E1FE0: .word UNK04_022106D0 - arm_func_end MOD04_021E1F84 - - arm_func_start MOD04_021E1FE4 -MOD04_021E1FE4: ; 0x021E1FE4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x210 - ldr r2, _021E2064 ; =UNK04_022106D0 - mov r6, r0 - ldr r0, [r2] - mov r5, r1 - ldr r0, [r0, #0x34] - cmp r0, #0 - addeq sp, sp, #0x210 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r5] - bl MOD04_021E1F18 - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - addeq sp, sp, #0x210 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r5, #8] - add r2, sp, #0 - mov r0, r6 - bl MOD04_021F06E4 - ldr r0, _021E2064 ; =UNK04_022106D0 - ldr r1, [sp, #4] - ldr r0, [r0] - add r2, sp, #0x108 - ldr r3, [r0, #0x38] - ldr ip, [r0, #0x34] - mov r0, r4 - and r1, r1, #0xff - blx ip - add sp, sp, #0x210 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E2064: .word UNK04_022106D0 - arm_func_end MOD04_021E1FE4 - - arm_func_start MOD04_021E2068 -MOD04_021E2068: ; 0x021E2068 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - mov r5, r0 - ldr r0, [r4, #8] - ldr r1, _021E20C0 ; =UNK04_0220D354 - bl strcmp - cmp r0, #0 - addne sp, sp, #0xc - movne r0, #0 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021E20C4 ; =MOD04_021E110C - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E20C0: .word UNK04_0220D354 -_021E20C4: .word MOD04_021E110C - arm_func_end MOD04_021E2068 - - arm_func_start MOD04_021E20C8 -MOD04_021E20C8: ; 0x021E20C8 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r2, _021E210C ; =UNK04_022106D0 - ldr r2, [r2] - ldr r2, [r2, #0x18] - cmp r2, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} - ldr r3, _021E2110 ; =MOD04_021E12B8 - mov r2, #0 - str r3, [sp] - str r2, [sp, #4] - ldr r1, [r1] - mov r3, r2 - bl MOD04_021F0B9C - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021E210C: .word UNK04_022106D0 -_021E2110: .word MOD04_021E12B8 - arm_func_end MOD04_021E20C8 - - arm_func_start MOD04_021E2114 -MOD04_021E2114: ; 0x021E2114 - stmdb sp!, {r4, lr} - ldr r2, _021E2170 ; =UNK04_022106D0 - mov r4, r0 - ldr r2, [r2] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021DD6B0 - ldr r0, _021E2170 ; =UNK04_022106D0 - ldr r3, [r0] - ldr r0, [r3] - cmp r0, #0 - beq _021E2168 - cmp r0, #2 - beq _021E2168 - ldrb r1, [r3, #0x1d] - ldr r2, [r3, #0x30] - ldr r3, [r3, #0x2c] - mov r0, r4 - blx r3 -_021E2168: - bl MOD04_021E1CCC - ldmia sp!, {r4, pc} - .align 2, 0 -_021E2170: .word UNK04_022106D0 - arm_func_end MOD04_021E2114 - - arm_func_start MOD04_021E2174 -MOD04_021E2174: ; 0x021E2174 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021E2224 ; =UNK04_022106D0 - ldr r5, [sp, #0x10] - ldr r1, [r0] - ldr r4, [sp, #0x14] - str r2, [r1, #0x2c] - ldr r1, [r0] - ldr lr, [sp, #0x18] - str r3, [r1, #0x30] - ldr r1, [r0] - ldr ip, [sp, #0x1c] - str r5, [r1, #0x34] - ldr r1, [r0] - mov r3, #0 - str r4, [r1, #0x38] - ldr r1, [r0] - mov r2, #1 - str lr, [r1, #0x3c] - ldr r1, [r0] - str ip, [r1, #0x40] - ldr r1, [r0] - strb r3, [r1, #0x1d] - ldr r1, [r0] - strb r3, [r1, #0x1e] - ldr r1, [r0] - strb r3, [r1, #0x1f] - ldr r1, [r0] - strb r3, [r1, #0x1c] - ldr r1, [r0] - str r2, [r1] - ldr r1, [r0] - ldr r0, [r1, #0x18] - cmp r0, #0 - ldreqb r0, [r1, #0x1f] - addeq r0, r0, #1 - streqb r0, [r1, #0x1f] - ldr r0, _021E2224 ; =UNK04_022106D0 - ldr r1, [r0] - ldrb r0, [r1, #0x1f] - add r0, r0, #1 - strb r0, [r1, #0x1f] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E2224: .word UNK04_022106D0 - arm_func_end MOD04_021E2174 - - arm_func_start MOD04_021E2228 -MOD04_021E2228: ; 0x021E2228 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E2348 ; =UNK04_022106D0 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x18] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - bl MOD04_021E10F8 - cmp r0, #0 - bne _021E227C - bl MOD04_021FBE5C - cmp r0, #0 - beq _021E2280 -_021E227C: - bl MOD04_021FBD00 -_021E2280: - ldr r0, _021E2348 ; =UNK04_022106D0 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _021E231C - ldr r0, [r0] - cmp r0, #0 - beq _021E231C - bl MOD04_021E1CFC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E2348 ; =UNK04_022106D0 - ldr r3, [r0] - ldr r0, [r3, #0x18] - cmp r0, #0 - beq _021E231C - ldrb r2, [r3, #0x1e] - cmp r2, #3 - beq _021E231C - ldr r1, [r3, #8] - cmp r1, #7 - bls _021E231C - cmp r2, #1 - bhi _021E22EC - ldr r1, [r3, #0x14] - bl MOD04_021E1A60 -_021E22EC: - ldr r0, _021E2348 ; =UNK04_022106D0 - ldr r3, [r0] - ldrb r2, [r3, #0x1c] - ldr r1, [r3, #0x14] - cmp r2, r1 - blt _021E231C - mov r1, #3 - strb r1, [r3, #0x1e] - ldr r1, [r0] - ldrb r0, [r1, #0x1f] - add r0, r0, #1 - strb r0, [r1, #0x1f] -_021E231C: - ldr r0, _021E2348 ; =UNK04_022106D0 - ldr r1, [r0] - ldrb r0, [r1, #0x1f] - cmp r0, #2 - addlo sp, sp, #4 - ldmloia sp!, {pc} - mov r0, #0 - strb r0, [r1, #0x1f] - bl MOD04_021E1A20 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E2348: .word UNK04_022106D0 - arm_func_end MOD04_021E2228 - - arm_func_start MOD04_021E234C -MOD04_021E234C: ; 0x021E234C - stmdb sp!, {r4, lr} - ldr lr, _021E2428 ; =UNK04_022106D0 - mov ip, #0 - str r0, [lr] - str ip, [r0] - ldr r4, [lr] - ldr r0, [sp, #8] - str r1, [r4, #4] - ldr r1, [lr] - str ip, [r1, #8] - ldr r1, [lr] - str ip, [r1, #0xc] - str ip, [r1, #0x10] - str r0, [r1, #0x14] - ldr r0, [lr] - str r3, [r0, #0x18] - ldr r0, [lr] - strb ip, [r0, #0x1c] - ldr r0, [lr] - strb ip, [r0, #0x1d] - ldr r0, [lr] - strb ip, [r0, #0x1e] - ldr r0, [lr] - strb ip, [r0, #0x1f] - ldr r0, [lr] - str ip, [r0, #0x20] - ldr r0, [lr] - str ip, [r0, #0x24] - ldr r0, [lr] - str r2, [r0, #0x28] - ldr r0, [lr] - str ip, [r0, #0x2c] - ldr r0, [lr] - str ip, [r0, #0x30] - ldr r0, [lr] - str ip, [r0, #0x34] - ldr r0, [lr] - str ip, [r0, #0x38] - ldr r0, [lr] - str ip, [r0, #0x3c] - ldr r0, [lr] - str ip, [r0, #0x40] - ldr r0, [lr] - str ip, [r0, #0x44] - ldr r0, [lr] - str ip, [r0, #0x48] - ldr r0, [lr] - str ip, [r0, #0x4c] - ldr r0, [lr] - str ip, [r0, #0x50] - ldr r0, [lr] - str ip, [r0, #0x54] - ldr r0, [lr] - str ip, [r0, #0x58] - ldmia sp!, {r4, pc} - .align 2, 0 -_021E2428: .word UNK04_022106D0 - arm_func_end MOD04_021E234C - - arm_func_start MOD04_021E242C -MOD04_021E242C: ; 0x021E242C - ldr r2, _021E2450 ; =UNK04_022106D0 - ldr r3, [r2] - cmp r3, #0 - moveq r0, #0 - strne r0, [r3, #0x44] - ldrne r2, [r2] - movne r0, #1 - strne r1, [r2, #0x48] - bx lr - .align 2, 0 -_021E2450: .word UNK04_022106D0 - arm_func_end MOD04_021E242C - - arm_func_start MOD04_021E2454 -MOD04_021E2454: ; 0x021E2454 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x104 - ldr r2, _021E24DC ; =UNK04_022106D0 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - beq _021E2480 - bl MOD04_021E05FC - cmp r0, #0 - bne _021E248C -_021E2480: - add sp, sp, #0x104 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E248C: - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - mov r3, #0xff - bl MOD04_021DD4FC - mvn r3, #0 - cmp r0, r3 - addeq sp, sp, #0x104 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - add r2, sp, #0 - mov r1, #0 - strb r1, [r2, r0] - mov r0, r3 - bl MOD04_021E1E30 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E24DC: .word UNK04_022106D0 - arm_func_end MOD04_021E2454 - - arm_func_start MOD04_021E24E0 -MOD04_021E24E0: ; 0x021E24E0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x100 - mov r6, r3 - add r3, sp, #0 - ldr r4, [sp, #0x110] - bl MOD04_021E259C - movs r5, r0 - mvneq r1, #0 - addeq sp, sp, #0x100 - streq r1, [r4] - ldmeqia sp!, {r4, r5, r6, pc} - add r0, sp, #0 - bl strlen - mov r2, #0 - mov r1, r0 - add r0, sp, #0 - mov r3, r2 - bl MOD04_021DD36C - str r0, [r4] - cmp r6, #0 - beq _021E2544 - ldr r4, [r4] - mvn r0, #0 - cmp r4, r0 - bne _021E2550 -_021E2544: - add sp, sp, #0x100 - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} -_021E2550: - add r0, sp, #0 - bl strlen - mov r1, r0 - add r0, sp, #0 - mov r2, r6 - mov r3, r4 - bl MOD04_021DD36C - mov r0, r5 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E24E0 - - arm_func_start MOD04_021E2578 -MOD04_021E2578: ; 0x021E2578 - stmdb sp!, {lr} - sub sp, sp, #4 - mov r3, r1 - mov r1, #0 - str r2, [sp] - mov r2, r1 - bl MOD04_021E24E0 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E2578 - - arm_func_start MOD04_021E259C -MOD04_021E259C: ; 0x021E259C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x218 - mov r6, r1 - add r1, sp, #4 - mov r4, r2 - mov r5, r3 - bl MOD04_021E16EC - cmp r0, #0 - beq _021E268C - ldr r0, [sp, #8] - cmp r0, #6 - bne _021E2650 - cmp r6, #0 - beq _021E260C - ldr r0, _021E26B0 ; =UNK04_0220D38C - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl MOD04_021DE9F4 - cmp r0, #0 - movle r0, #0 - strleb r0, [r6] - ble _021E260C - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - strb r0, [r6] -_021E260C: - cmp r4, #0 - beq _021E2668 - ldr r0, _021E26B4 ; =UNK04_0220D390 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl MOD04_021DE9F4 - cmp r0, #0 - movle r0, #0 - strleb r0, [r4] - ble _021E2668 - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - strb r0, [r4] - b _021E2668 -_021E2650: - cmp r6, #0 - movne r0, #0 - strneb r0, [r6] - cmp r4, #0 - movne r0, #0 - strneb r0, [r4] -_021E2668: - cmp r5, #0 - beq _021E267C - add r1, sp, #0x10c - mov r0, r5 - bl strcpy -_021E267C: - ldr r0, [sp, #8] - add sp, sp, #0x218 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} -_021E268C: - cmp r6, #0 - movne r0, #0 - strneb r0, [r6] - cmp r4, #0 - movne r0, #0 - strneb r0, [r4] - mov r0, #0 - add sp, sp, #0x218 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E26B0: .word UNK04_0220D38C -_021E26B4: .word UNK04_0220D390 - arm_func_end MOD04_021E259C - - arm_func_start MOD04_021E26B8 -MOD04_021E26B8: ; 0x021E26B8 - ldr ip, _021E26CC ; =MOD04_021E259C - mov r3, r1 - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_021E26CC: .word MOD04_021E259C - arm_func_end MOD04_021E26B8 - - arm_func_start MOD04_021E26D0 -MOD04_021E26D0: ; 0x021E26D0 - ldr r1, _021E26E0 ; =UNK04_022106D8 - ldr r1, [r1] - str r0, [r1, #0x1a0] - bx lr - .align 2, 0 -_021E26E0: .word UNK04_022106D8 - arm_func_end MOD04_021E26D0 - - arm_func_start MOD04_021E26E4 -MOD04_021E26E4: ; 0x021E26E4 - ldr r0, _021E26F0 ; =UNK04_022106D8 - ldr r0, [r0] - bx lr - .align 2, 0 -_021E26F0: .word UNK04_022106D8 - arm_func_end MOD04_021E26E4 - - arm_func_start MOD04_021E26F4 -MOD04_021E26F4: ; 0x021E26F4 - ldr r1, _021E2700 ; =UNK04_022106D8 - str r0, [r1] - bx lr - .align 2, 0 -_021E2700: .word UNK04_022106D8 - arm_func_end MOD04_021E26F4 - - arm_func_start MOD04_021E2704 -MOD04_021E2704: ; 0x021E2704 - stmdb sp!, {lr} - sub sp, sp, #4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E273C - bl MOD04_021E26E4 - ldrb r1, [r0, #0x17d] - add r1, r1, #1 - strb r1, [r0, #0x17d] -_021E273C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E275C - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17d] - cmp r0, #5 - blo _021E2774 -_021E275C: - ldr r1, _021E2780 ; =0xFFFEAE6C - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #4 - mov r0, #0 - ldmfd sp!, {pc} -_021E2774: - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E2780: .word 0xFFFEAE6C - arm_func_end MOD04_021E2704 - - arm_func_start MOD04_021E2784 -MOD04_021E2784: ; 0x021E2784 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r5, r0 - mov r6, r2 - mov r4, r3 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _021E27BC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} -_021E27BC: - cmp r4, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - bne _021E29B8 - mov r0, #0 - str r0, [r4, #8] - bl MOD04_021E26E4 - ldrb r1, [r0, #0x14] - add r1, r1, #1 - strb r1, [r0, #0x14] - bl MOD04_021E26E4 - ldrb r1, [r4] - ldrb r5, [r0, #0x14] - cmp r1, #0 - beq _021E2950 - bl MOD04_021E26E4 - ldr r1, [r6, #4] - add r0, r0, r5, lsl #2 - str r1, [r0, #0x210] - ldrh r4, [r6, #2] - bl MOD04_021E26E4 - mov r2, r4, asr #8 - mov r1, r4, lsl #8 - add r0, r0, r5, lsl #1 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - add r0, r0, #0x200 - strh r1, [r0, #0x90] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17c] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x180] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - bne _021E2878 - mov r0, #0xc - bl MOD04_021E26D0 - b _021E2880 -_021E2878: - mov r0, #7 - bl MOD04_021E26D0 -_021E2880: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xc] - bl MOD04_021E26E4 - ldr r3, [r0, #0x200] - ldr r2, _021E2B58 ; =UNK04_0220D394 - add r0, sp, #0x10 - mov r1, #0xc - bl OS_SNPrintf - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - add r1, r6, r5, lsl #2 - mov r2, r0 - ldr r0, [r1, #0x210] - add r1, r2, r5, lsl #1 - add r1, r1, #0x200 - ldrh r1, [r1, #0x90] - mov r2, #0 - bl MOD04_021FFEB0 - mov r6, r0 - bl MOD04_021E26E4 - mvn r1, #0 - str r1, [sp] - ldr r3, _021E2B5C ; =0x00001388 - mov r1, #0 - str r3, [sp, #4] - ldr r0, [r0, #8] - mov r2, r6 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #4] - add r3, sp, #0x10 - ldr r0, [r0] - bl MOD04_021FD52C - cmp r0, #1 - bne _021E2928 - bl MOD04_021E36B0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} -_021E2928: - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - add sp, sp, #0x20 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E2950: - cmp r6, #0 - beq _021E2994 - sub r4, r5, #1 - bl MOD04_021E26E4 - ldr r1, [r6, #4] - add r0, r0, r4, lsl #2 - str r1, [r0, #0x210] - ldrh r5, [r6, #2] - bl MOD04_021E26E4 - mov r2, r5, asr #8 - mov r1, r5, lsl #8 - add r0, r0, r4, lsl #1 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - add r0, r0, #0x200 - strh r1, [r0, #0x90] -_021E2994: - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x18c] - mov r0, #7 - str r1, [r4, #0x190] - bl MOD04_021E26D0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} -_021E29B8: - ldr r0, [r4, #8] - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl MOD04_021E3754 - mov r6, r0 - cmp r6, #2 - beq _021E29E8 - cmp r6, #1 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} -_021E29E8: - ldrb r0, [r4] - cmp r0, #0 - bne _021E2A74 - cmp r6, #1 - beq _021E2A10 - cmp r6, #2 - bne _021E2A50 - ldrb r0, [r4, #1] - cmp r0, #1 - blo _021E2A50 -_021E2A10: - mov r0, #0 - str r0, [r4, #8] - bl MOD04_021E2704 - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E5908 - add sp, sp, #0x20 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E2A50: - ldrb r1, [r4, #1] - mov r0, r4 - add r1, r1, #1 - strb r1, [r4, #1] - bl MOD04_021E7A44 - bl MOD04_021E37A4 - add sp, sp, #0x20 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E2A74: - bl MOD04_021E26E4 - mov r5, r0 - bl OS_GetTick - str r0, [r5, #0x184] - str r1, [r5, #0x188] - cmp r6, #1 - beq _021E2AB0 - cmp r6, #2 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17c] - cmp r0, #1 - addlo sp, sp, #0x20 - ldmloia sp!, {r4, r5, r6, pc} -_021E2AB0: - mov r0, #0 - str r0, [r4, #8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E2AD8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E2AF0 -_021E2AD8: - mov r0, #1 - bl MOD04_021E2704 - cmp r0, #0 - bne _021E2B04 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} -_021E2AF0: - mov r0, #0 - bl MOD04_021E2704 - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, pc} -_021E2B04: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17c] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x180] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - cmp r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E2B58: .word UNK04_0220D394 -_021E2B5C: .word 0x00001388 - arm_func_end MOD04_021E2784 - - arm_func_start MOD04_021E2B60 -MOD04_021E2B60: ; 0x021E2B60 - bx lr - arm_func_end MOD04_021E2B60 - - arm_func_start MOD04_021E2B64 -MOD04_021E2B64: ; 0x021E2B64 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x9c - mov sl, r0 - mov sb, r1 - mov r8, #0 - bl MOD04_021DF88C - cmp r0, #5 - beq _021E2BB8 - bl MOD04_021DF88C - cmp r0, #6 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _021E2BB8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E2BB8: - cmp sb, #0x14 - addlo sp, sp, #0x9c - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r4, sp, #0x1c - add fp, sp, #8 - add r5, sl, #0x14 - mov r7, #0x14 - mov r6, #4 -_021E2BD8: - mov r0, sl - mov r1, fp - mov r2, r7 - bl MI_CpuCopy8 - ldr r1, _021E2C74 ; =UNK04_0220D398 - mov r0, fp - mov r2, r6 - bl strncmp - cmp r0, #0 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0xc] - cmp r0, #3 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sp, #0x11] - mov r0, r5 - mov r1, r4 - bl MI_CpuCopy8 - str r4, [sp] - ldrb r0, [sp, #0x11] - mov r0, r0, asr #2 - str r0, [sp, #4] - ldrb r0, [sp, #0x10] - ldrh r3, [sp, #0x12] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - bl MOD04_021E6730 - cmp r0, #0 - addeq sp, sp, #0x9c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sp, #0x11] - add r0, r0, #0x14 - add r8, r8, r0 - add r0, r8, #0x14 - cmp r0, sb - bls _021E2BD8 - add sp, sp, #0x9c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E2C74: .word UNK04_0220D398 - arm_func_end MOD04_021E2B64 - - arm_func_start MOD04_021E2C78 -MOD04_021E2C78: ; 0x021E2C78 - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E2C9C - mov r0, #6 - bl MOD04_021E26D0 - b _021E2CBC -_021E2C9C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _021E2CBC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - ldmneia sp!, {r4, pc} -_021E2CBC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x180] - cmp r4, r0 - bne _021E2CE0 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x17c] - add r1, r1, #1 - strb r1, [r0, #0x17c] - b _021E2CF4 -_021E2CE0: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17c] - bl MOD04_021E26E4 - str r4, [r0, #0x180] -_021E2CF4: - bl MOD04_021E26E4 - mov r2, #0 - str r2, [r0, #0x184] - str r2, [r0, #0x188] - mov r1, r4 - mov r0, #1 - bl MOD04_021E7B04 - bl MOD04_021E37A4 - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl MOD04_021E26E4 - mov r1, #0xff - strb r1, [r0, #0x3cc] - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E2C78 - - arm_func_start MOD04_021E2D2C -MOD04_021E2D2C: ; 0x021E2D2C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - bl MOD04_021E26E4 - str r5, [r0, #0x1c] - bl MOD04_021E26E4 - strh r4, [r0, #0x1a] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E2D2C - - arm_func_start MOD04_021E2D54 -MOD04_021E2D54: ; 0x021E2D54 - ldr ip, _021E2D5C ; =MOD04_021E3800 - bx ip - .align 2, 0 -_021E2D5C: .word MOD04_021E3800 - arm_func_end MOD04_021E2D54 - - arm_func_start MOD04_021E2D60 -MOD04_021E2D60: ; 0x021E2D60 - mov r0, #0 - bx lr - arm_func_end MOD04_021E2D60 - - arm_func_start MOD04_021E2D68 -MOD04_021E2D68: ; 0x021E2D68 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - cmp r0, #0 - beq _021E2D88 - cmp r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021E2D88: - mov r0, r6 - mov r1, #8 - bl MOD04_02202254 - mov r0, r6 - mov r1, #0xa - bl MOD04_02202254 - mov r0, r6 - mov r1, #0x32 - bl MOD04_02202254 - mov r0, r6 - mov r1, #0x33 - bl MOD04_02202254 - mov r0, r6 - mov r1, #0x34 - bl MOD04_02202254 - mov r0, r6 - mov r1, #0x35 - bl MOD04_02202254 - mov r0, r6 - mov r1, #0x36 - bl MOD04_02202254 - ldr r4, _021E2E0C ; =UNK04_02210704 - mov r5, #0 -_021E2DE4: - ldrb r1, [r4] - cmp r1, #0 - beq _021E2DF8 - mov r0, r6 - bl MOD04_02202254 -_021E2DF8: - add r5, r5, #1 - cmp r5, #0x9a - add r4, r4, #0xc - blt _021E2DE4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E2E0C: .word UNK04_02210704 - arm_func_end MOD04_021E2D68 - - arm_func_start MOD04_021E2E10 -MOD04_021E2E10: ; 0x021E2E10 - bx lr - arm_func_end MOD04_021E2E10 - - arm_func_start MOD04_021E2E14 -MOD04_021E2E14: ; 0x021E2E14 - bx lr - arm_func_end MOD04_021E2E14 - - arm_func_start MOD04_021E2E18 -MOD04_021E2E18: ; 0x021E2E18 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0x32 - bgt _021E2E54 - cmp r0, #0x32 - bge _021E2E9C - cmp r0, #0xa - bgt _021E2EF8 - cmp r0, #8 - blt _021E2EF8 - cmp r0, #8 - beq _021E2E74 - cmp r0, #0xa - beq _021E2E88 - b _021E2EF8 -_021E2E54: - sub r1, r0, #0x33 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _021E2EF8 -_021E2E64: ; jump table - b _021E2EB0 ; case 0 - b _021E2EC4 ; case 1 - b _021E2ED8 ; case 2 - b _021E2EE8 ; case 3 -_021E2E74: - bl MOD04_021E26E4 - ldrb r1, [r0, #0x14] - mov r0, r4 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2E88: - bl MOD04_021E26E4 - ldrb r1, [r0, #0x16] - mov r0, r4 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2E9C: - bl MOD04_021E26E4 - ldr r1, [r0, #0x200] - mov r0, r4 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2EB0: - bl MOD04_021E26E4 - ldrb r1, [r0, #0x15] - mov r0, r4 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2EC4: - bl MOD04_021E26E4 - ldr r1, [r0, #0x20] - mov r0, r4 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2ED8: - mov r0, r4 - mov r1, #3 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2EE8: - mov r0, r4 - mov r1, #1 - bl MOD04_02202220 - ldmia sp!, {r4, pc} -_021E2EF8: - subs r1, r0, #0x64 - ldmmiia sp!, {r4, pc} - cmp r1, #0x9a - ldmgeia sp!, {r4, pc} - mov r0, #0xc - mul r2, r1, r0 - ldr r0, _021E2F5C ; =UNK04_02210704 - ldrb r0, [r0, r2] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _021E2F60 ; =UNK04_02210705 - ldrb r0, [r0, r2] - cmp r0, #0 - beq _021E2F44 - ldr r1, _021E2F64 ; =UNK04_0221070C - mov r0, r4 - ldr r1, [r1, r2] - bl MOD04_022021C0 - ldmia sp!, {r4, pc} -_021E2F44: - ldr r1, _021E2F64 ; =UNK04_0221070C - mov r0, r4 - ldr r1, [r1, r2] - ldr r1, [r1] - bl MOD04_02202220 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E2F5C: .word UNK04_02210704 -_021E2F60: .word UNK04_02210705 -_021E2F64: .word UNK04_0221070C - arm_func_end MOD04_021E2E18 - - arm_func_start MOD04_021E2F68 -MOD04_021E2F68: ; 0x021E2F68 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov r8, #0 - mov r7, r8 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #1 - addle sp, sp, #0x1c - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov sb, r8 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #0 - ble _021E2FF8 - ldr r4, _021E30D8 ; =UNK04_0220BAC4 - ldr r6, _021E30DC ; =UNK04_0220D3A0 - mvn r5, #0 -_021E2FB4: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, sb - bl MOD04_02203BF4 - mov r1, r6 - mov r2, r5 - bl MOD04_0220394C - cmp r0, r8 - movgt r8, r0 - ldr r0, [r4, sb, lsl #2] - add sb, sb, #1 - add r7, r7, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp sb, r0 - blt _021E2FB4 -_021E2FF8: - mov r0, #0x64 - bl MOD04_021DE8C8 - mov sb, r0 - mov r6, #0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #0 - ble _021E3090 - add r5, sp, #0 - mov fp, r6 - mov r4, #0x64 -_021E3028: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - sub r0, r0, #1 - cmp r6, r0 - beq _021E3090 - cmp r6, #0 - subgt r0, r6, #1 - ldrgt sl, [r5, r0, lsl #2] - ldr r0, _021E30D8 ; =UNK04_0220BAC4 - movle sl, fp - ldr r2, [r0, r6, lsl #2] - mov r1, r7 - mul r0, r2, r4 - bl _s32_div_f - add r0, r0, sl - str r0, [r5, r6, lsl #2] - ldr r0, [r5, r6, lsl #2] - cmp sb, r0 - blo _021E3090 - add r6, r6, #1 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r6, r0 - blt _021E3028 -_021E3090: - mvn r0, #0x80000000 - cmp r8, r0 - addlt r8, r8, #1 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, r6 - bl MOD04_02203BF4 - ldr r1, _021E30DC ; =UNK04_0220D3A0 - mov r2, r8 - bl MOD04_02203A48 - bl MOD04_021E26E4 - mov r1, #0 - ldr r0, [r0, #0xe4] - ldr r2, _021E30DC ; =UNK04_0220D3A0 - mov r3, r1 - bl MOD04_02203BD4 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E30D8: .word UNK04_0220BAC4 -_021E30DC: .word UNK04_0220D3A0 - arm_func_end MOD04_021E2F68 - - arm_func_start MOD04_021E30E0 -MOD04_021E30E0: ; 0x021E30E0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r1, #0 - str r1, [sp, #4] - str r0, [sp] - mov r8, r1 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #0 - ble _021E3268 - mov r0, #0x80 - mov r4, #1 - mov r5, r8 - str r0, [sp, #8] - mov fp, #0x100 -_021E3120: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, r8 - bl MOD04_02203BF4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E31BC - ldr r1, _021E32D4 ; =UNK04_0220D3AC - mov r0, r6 - mov r2, r5 - bl MOD04_0220394C - mov sb, r0 - mov sl, r5 - mov r7, r4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E31B4 -_021E3170: - bl MOD04_021E26E4 - add r0, r0, r7, lsl #2 - ldr r0, [r0, #0xf4] - cmp sb, r0 - bne _021E31A0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, r6 - bl MOD04_02203C50 - mov sl, r4 - sub r8, r8, #1 - b _021E31B4 -_021E31A0: - add r7, r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _021E3170 -_021E31B4: - cmp sl, #0 - bne _021E3250 -_021E31BC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x474] - cmp r0, #0 - beq _021E3238 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - ldr r1, [r0, #0x478] - ldr r2, [r7, #0x474] - mov r0, r8 - blx r2 - mov r7, r0 - cmp r7, #0 - ble _021E321C - ldr r0, _021E32D8 ; =0x007FFFFF - cmp r7, r0 - movgt r7, r0 - mov r0, fp - bl MOD04_021DE8C8 - orr r2, r0, r7, lsl #8 - ldr r1, _021E32DC ; =UNK04_0220D3A0 - mov r0, r6 - bl MOD04_02203A48 - b _021E3250 -_021E321C: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, r6 - bl MOD04_02203C50 - str r4, [sp, #4] - sub r8, r8, #1 - b _021E3250 -_021E3238: - ldr r0, [sp, #8] - bl MOD04_021DE8C8 - mov r2, r0 - ldr r1, _021E32DC ; =UNK04_0220D3A0 - mov r0, r6 - bl MOD04_02203A48 -_021E3250: - add r8, r8, #1 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r8, r0 - blt _021E3120 -_021E3268: - ldr r0, [sp] - cmp r0, #0 - beq _021E32A0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #0 - beq _021E32A0 - bl MOD04_021E26E4 - mov r1, #0 - ldr r0, [r0, #0xe4] - ldr r2, _021E32DC ; =UNK04_0220D3A0 - mov r3, r1 - bl MOD04_02203BD4 -_021E32A0: - ldr r0, [sp, #4] - cmp r0, #0 - beq _021E32C8 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BE4 - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E32C8: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E32D4: .word UNK04_0220D3AC -_021E32D8: .word 0x007FFFFF -_021E32DC: .word UNK04_0220D3A0 - arm_func_end MOD04_021E30E0 - - arm_func_start MOD04_021E32E0 -MOD04_021E32E0: ; 0x021E32E0 - bx lr - arm_func_end MOD04_021E32E0 - - arm_func_start MOD04_021E32E4 -MOD04_021E32E4: ; 0x021E32E4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r6, r0 - cmp r1, #0 - beq _021E330C - cmp r1, #4 - beq _021E331C - add sp, sp, #4 - cmp r1, #5 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E330C: - mov r0, r2 - bl MOD04_021E32E0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E331C: - mov r5, #0 - bl MOD04_02203BE4 - cmp r0, #0 - ble _021E336C -_021E332C: - mov r0, r6 - mov r1, r5 - bl MOD04_02203BF4 - mov r4, r0 - bl MOD04_021E3F98 - cmp r0, #0 - bne _021E3358 - mov r0, r6 - mov r1, r4 - bl MOD04_02203C50 - sub r5, r5, #1 -_021E3358: - mov r0, r6 - add r5, r5, #1 - bl MOD04_02203BE4 - cmp r5, r0 - blt _021E332C -_021E336C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #2 - beq _021E3394 - cmp r0, #3 - beq _021E348C - cmp r0, #5 - beq _021E3508 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3394: - mov r0, r6 - mov r5, #0 - bl MOD04_02203BE4 - cmp r0, #0 - ble _021E3424 -_021E33A8: - mov r0, r6 - mov r1, r5 - bl MOD04_02203BF4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - cmp r0, #0 - beq _021E3410 - bl MOD04_021E26E4 - mov r7, r0 - mov r0, r4 - bl MOD04_02203908 - ldr r1, [r7, #0x1c] - cmp r1, r0 - bne _021E3410 - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - cmp r0, #0 - beq _021E3410 - bl MOD04_021E26E4 - mov r7, r0 - mov r0, r4 - bl MOD04_022038E4 - ldrh r1, [r7, #0x1a] - cmp r1, r0 - beq _021E3424 -_021E3410: - mov r0, r6 - add r5, r5, #1 - bl MOD04_02203BE4 - cmp r5, r0 - blt _021E33A8 -_021E3424: - mov r0, r6 - bl MOD04_02203BE4 - cmp r5, r0 - bge _021E3464 - mov r0, #3 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - bl MOD04_021E7E5C - bl MOD04_021E38E8 - add sp, sp, #4 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3464: - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - add sp, sp, #4 - str r1, [r4, #0xf0] - ldmia sp!, {r4, r5, r6, r7, pc} -_021E348C: - mov r0, #1 - bl MOD04_021E30E0 - bl MOD04_021E2F68 - mov r0, r6 - bl MOD04_02203BE4 - cmp r0, #0 - beq _021E34E0 - mov r0, #0 - mov r1, r0 - bl MOD04_021E6038 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, #4 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe8] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E34E0: - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - add sp, sp, #4 - str r1, [r4, #0xf0] - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3508: - mov r0, r6 - bl MOD04_02203BE4 - cmp r0, #0 - beq _021E3580 - mov r4, #0 -_021E351C: - mov r0, r6 - mov r1, r4 - bl MOD04_02203BF4 - mov r5, r0 - bl MOD04_02203908 - mov r7, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1b8] - cmp r7, r0 - bne _021E3564 - mov r0, r5 - bl MOD04_022038E4 - mov r7, r0 - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb4] - cmp r7, r0 - beq _021E3580 -_021E3564: - mov r0, r6 - mov r1, r5 - bl MOD04_02203C50 - mov r0, r6 - bl MOD04_02203BE4 - cmp r0, #0 - bne _021E351C -_021E3580: - mov r0, r6 - bl MOD04_02203BE4 - cmp r0, #0 - beq _021E3684 - mov r0, r6 - mov r1, #0 - bl MOD04_02203BF4 - ldr r1, _021E36AC ; =UNK04_0220D3AC - mov r2, #0 - bl MOD04_0220394C - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E3650 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r4, r0 - bne _021E3650 - mov r0, #0 - bl MOD04_021E30E0 - cmp r0, #0 - beq _021E3604 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E3650 - bl MOD04_021E5824 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E3650 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3604: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, #4 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, r0 - mov r0, #0 - ldr r2, [r1, #0xf4] - mov r1, r0 - bl MOD04_021E5D30 - bl MOD04_021E61EC - add sp, sp, #4 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3650: - mov r0, #6 - bl MOD04_021E26D0 - mov r0, r6 - mov r1, #0 - bl MOD04_02203BF4 - mov r2, r0 - mov r0, #0 - mov r1, r0 - bl MOD04_021E7B04 - bl MOD04_021E37A4 - add sp, sp, #4 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E3684: - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - str r1, [r4, #0xf0] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E36AC: .word UNK04_0220D3AC - arm_func_end MOD04_021E32E4 - - arm_func_start MOD04_021E36B0 -MOD04_021E36B0: ; 0x021E36B0 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _021E3734 -_021E36CC: ; jump table - b _021E3734 ; case 0 - b _021E36EC ; case 1 - b _021E36F8 ; case 2 - b _021E3708 ; case 3 - b _021E3714 ; case 4 - b _021E36F8 ; case 5 - b _021E3720 ; case 6 - b _021E372C ; case 7 -_021E36EC: - mov r0, #9 - mvn r2, #0 - b _021E3734 -_021E36F8: - mov r0, #0 - mov r2, r0 - mov r4, r0 - b _021E3734 -_021E3708: - mov r0, #6 - mvn r2, #9 - b _021E3734 -_021E3714: - mov r0, #6 - mvn r2, #0x1d - b _021E3734 -_021E3720: - mov r0, #6 - mvn r2, #0x45 - b _021E3734 -_021E372C: - mov r0, #6 - mvn r2, #0x4f -_021E3734: - cmp r0, #0 - beq _021E3748 - ldr r1, _021E3750 ; =0xFFFEAC28 - add r1, r2, r1 - bl MOD04_021E8E08 -_021E3748: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E3750: .word 0xFFFEAC28 - arm_func_end MOD04_021E36B0 - - arm_func_start MOD04_021E3754 -MOD04_021E3754: ; 0x021E3754 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #1 - beq _021E3778 - cmp r4, #2 - beq _021E3780 - b _021E3788 -_021E3778: - mov r0, #1 - ldmia sp!, {r4, pc} -_021E3780: - mov r0, #2 - ldmia sp!, {r4, pc} -_021E3788: - movs r0, #6 - beq _021E3798 - ldr r1, _021E37A0 ; =0xFFFEB007 - bl MOD04_021E8E08 -_021E3798: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E37A0: .word 0xFFFEB007 - arm_func_end MOD04_021E3754 - - arm_func_start MOD04_021E37A4 -MOD04_021E37A4: ; 0x021E37A4 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #1 - beq _021E37D4 - cmp r4, #2 - beq _021E37E0 - cmp r4, #3 - moveq r0, #6 - mvneq r2, #0x1d - b _021E37E8 -_021E37D4: - mov r0, #9 - mvn r2, #0 - b _021E37E8 -_021E37E0: - mov r0, #6 - mvn r2, #0x31 -_021E37E8: - ldr r1, _021E37FC ; =0xFFFEB010 - add r1, r2, r1 - bl MOD04_021E8E08 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E37FC: .word 0xFFFEB010 - arm_func_end MOD04_021E37A4 - - arm_func_start MOD04_021E3800 -MOD04_021E3800: ; 0x021E3800 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #5 - addls pc, pc, r6, lsl #2 - b _021E386C -_021E381C: ; jump table - b _021E386C ; case 0 - b _021E3834 ; case 1 - b _021E3840 ; case 2 - b _021E384C ; case 3 - b _021E3858 ; case 4 - b _021E3864 ; case 5 -_021E3834: - mov r4, #6 - mvn r5, #0x31 - b _021E386C -_021E3840: - mov r4, #6 - mvn r5, #0x3b - b _021E386C -_021E384C: - mov r4, #6 - mvn r5, #0x1d - b _021E386C -_021E3858: - mov r4, #6 - mvn r5, #0x4f - b _021E386C -_021E3864: - mov r4, #6 - mvn r5, #0x13 -_021E386C: - bl MOD04_021DF88C - cmp r0, #2 - beq _021E388C - cmp r0, #4 - beq _021E389C - cmp r0, #5 - beq _021E38B0 - b _021E38C4 -_021E388C: - mov r0, r4 - sub r1, r5, #0xfa00 - bl MOD04_021E0EAC - b _021E38D4 -_021E389C: - ldr r1, _021E38DC ; =0xFFFEDEF0 - mov r0, r4 - add r1, r5, r1 - bl MOD04_021E2114 - b _021E38D4 -_021E38B0: - ldr r1, _021E38E0 ; =0xFFFEB7E0 - mov r0, r4 - add r1, r5, r1 - bl MOD04_021E8E08 - b _021E38D4 -_021E38C4: - ldr r1, _021E38E4 ; =0xFFFE90D0 - mov r0, r4 - add r1, r5, r1 - bl MOD04_021DD6B0 -_021E38D4: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E38DC: .word 0xFFFEDEF0 -_021E38E0: .word 0xFFFEB7E0 -_021E38E4: .word 0xFFFE90D0 - arm_func_end MOD04_021E3800 - - arm_func_start MOD04_021E38E8 -MOD04_021E38E8: ; 0x021E38E8 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #6 - addls pc, pc, r4, lsl #2 - b _021E3964 -_021E3904: ; jump table - b _021E3964 ; case 0 - b _021E3920 ; case 1 - b _021E392C ; case 2 - b _021E3938 ; case 3 - b _021E3944 ; case 4 - b _021E3950 ; case 5 - b _021E395C ; case 6 -_021E3920: - mov r0, #6 - mvn r2, #0x31 - b _021E3964 -_021E392C: - mov r0, #6 - mvn r2, #0x1d - b _021E3964 -_021E3938: - mov r0, #6 - mvn r2, #0x13 - b _021E3964 -_021E3944: - mov r0, #6 - mvn r2, #0x27 - b _021E3964 -_021E3950: - mov r0, #9 - mvn r2, #0 - b _021E3964 -_021E395C: - mov r0, #9 - mvn r2, #1 -_021E3964: - ldr r1, _021E3978 ; =0xFFFEB3F8 - add r1, r2, r1 - bl MOD04_021E8E08 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E3978: .word 0xFFFEB3F8 - arm_func_end MOD04_021E38E8 - - arm_func_start MOD04_021E397C -MOD04_021E397C: ; 0x021E397C - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _021E39D8 -_021E3998: ; jump table - b _021E39D8 ; case 0 - b _021E39AC ; case 1 - b _021E39B8 ; case 2 - b _021E39C4 ; case 3 - b _021E39D0 ; case 4 -_021E39AC: - mov r0, #9 - mvn r2, #0 - b _021E39D8 -_021E39B8: - mov r0, #9 - mvn r2, #1 - b _021E39D8 -_021E39C4: - mov r0, #6 - mvn r2, #9 - b _021E39D8 -_021E39D0: - mov r0, #6 - mvn r2, #0x13 -_021E39D8: - ldr r1, _021E39EC ; =0xFFFEC398 - add r1, r2, r1 - bl MOD04_021E8E08 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E39EC: .word 0xFFFEC398 - arm_func_end MOD04_021E397C - - arm_func_start MOD04_021E39F0 -MOD04_021E39F0: ; 0x021E39F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r0, _021E3E1C ; =UNK04_022106D4 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r0, [r0] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x13 - bne _021E3C58 - mov r0, #0 - bl MOD04_021E3EC4 - ldr r1, _021E3E1C ; =UNK04_022106D4 - ldr r5, [r1] - ldr r1, [r5, #8] - cmp r1, r0 - bne _021E3B2C - ldr r1, [r5, #0xc] - cmp r1, r0 - bne _021E3AB8 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - mov r0, #0 - sub r1, r1, #1 - strb r1, [r4, #0x1a4] - bl MOD04_021E51C0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3AB8: - bl OS_GetTick - str r0, [r5, #0x18] - str r1, [r5, #0x1c] - mov r0, #0 - str r0, [r5, #8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E3B0C - mov r0, #3 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - add sp, sp, #8 - str r1, [r4, #0xf0] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3B0C: - mov r0, #4 - bl MOD04_021E26D0 - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl MOD04_021E5D30 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3B2C: - ldrb r4, [r5, #2] - bl OS_GetTick - ldr r3, [r5, #0x18] - ldr r2, [r5, #0x1c] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _021E3E20 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E3E24 ; =0x00001770 - mul r2, r4, r2 - cmp r1, r2, asr #31 - cmpeq r0, r2 - addlo sp, sp, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r4, #5 - bls _021E3B98 - mov r0, #1 - bl MOD04_021E3E28 - bl MOD04_021E4B40 - mov r0, #1 - bl MOD04_021E4CF8 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3B98: - mov r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E3C3C - ldr r8, _021E3E1C ; =UNK04_022106D4 - mov r5, #0 - mov r4, #0x11 - mov r6, r7 -_021E3BBC: - bl MOD04_021E26E4 - add r0, r0, r7 - ldrb r0, [r0, #0x2d0] - ldr r1, [r8] - mov r0, r6,lsl r0 - ldr r1, [r1, #8] - ands r0, r1, r0 - bne _021E3C28 - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - str r5, [sp] - str r5, [sp, #4] - add r0, r0, r7, lsl #1 - add r1, sl, r7, lsl #2 - add r2, sb, r7, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r4 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3C28: - add r7, r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _021E3BBC -_021E3C3C: - ldr r0, _021E3E1C ; =UNK04_022106D4 - add sp, sp, #8 - ldr r1, [r0] - ldrb r0, [r1, #2] - add r0, r0, #1 - strb r0, [r1, #2] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3C58: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - beq _021E3C7C - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #3 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3C7C: - ldr r0, _021E3E1C ; =UNK04_022106D4 - ldr r4, [r0] - bl MOD04_021E26E4 - ldrb r1, [r4, #1] - ldrb r2, [r0, #0xd] - sub r0, r1, #1 - cmp r2, r0 - addlt sp, sp, #8 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r0, [r4, #2] - cmp r0, #0 - bne _021E3CF0 - ldr r0, _021E3E1C ; =UNK04_022106D4 - ldr r4, [r0] - bl OS_GetTick - ldr r3, [r4, #0x10] - ldr r2, [r4, #0x14] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _021E3E20 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2 - bhs _021E3D48 -_021E3CF0: - ldrb r0, [r4, #2] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _021E3E1C ; =UNK04_022106D4 - ldr r4, [r0] - bl OS_GetTick - ldr r3, [r4, #0x18] - ldr r2, [r4, #0x1c] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _021E3E20 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2, lsr #2 - addlo sp, sp, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3D48: - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r0, #0 - beq _021E3D74 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E3D74: - mov r0, #0x13 - bl MOD04_021E26D0 - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E3DF8 - mov r6, #0 - mov r5, #0x11 -_021E3D98: - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - str r6, [sp] - str r6, [sp, #4] - add r0, r0, r4, lsl #1 - add r1, r8, r4, lsl #2 - add r2, r7, r4, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r5 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E3D98 -_021E3DF8: - ldr r0, _021E3E1C ; =UNK04_022106D4 - ldr r4, [r0] - bl OS_GetTick - str r0, [r4, #0x18] - str r1, [r4, #0x1c] - mov r0, #1 - strb r0, [r4, #2] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_021E3E1C: .word UNK04_022106D4 -_021E3E20: .word 0x000082EA -_021E3E24: .word 0x00001770 - arm_func_end MOD04_021E39F0 - - arm_func_start MOD04_021E3E28 -MOD04_021E3E28: ; 0x021E3E28 - stmdb sp!, {r4, lr} - ldr r1, _021E3E98 ; =UNK04_022106D4 - mov r4, r0 - ldr r3, [r1] - cmp r3, #0 - ldmeqia sp!, {r4, pc} - ldrb r0, [r3] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - str r2, [r3, #8] - ldr r0, [r1] - str r2, [r0, #0xc] - ldr r0, [r1] - strb r2, [r0, #2] - bl OS_GetTick - ldr r2, _021E3E98 ; =UNK04_022106D4 - cmp r4, #0 - ldr r2, [r2] - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - ldmneia sp!, {r4, pc} - bl OS_GetTick - ldr r2, _021E3E98 ; =UNK04_022106D4 - ldr r2, [r2] - str r0, [r2, #0x10] - str r1, [r2, #0x14] - ldmia sp!, {r4, pc} - .align 2, 0 -_021E3E98: .word UNK04_022106D4 - arm_func_end MOD04_021E3E28 - - arm_func_start MOD04_021E3E9C -MOD04_021E3E9C: ; 0x021E3E9C - stmdb sp!, {r4, lr} - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ad] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1f8] - str r1, [r4, #0x1fc] - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E3E9C - - arm_func_start MOD04_021E3EC4 -MOD04_021E3EC4: ; 0x021E3EC4 - stmdb sp!, {r4, r5, r6, lr} - cmp r0, #0 - mov r6, #0 - beq _021E3EE4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x2f0] - bic r0, r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021E3EE4: - mov r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E3F20 - mov r4, r5 -_021E3EFC: - bl MOD04_021E26E4 - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - add r5, r5, #1 - orr r6, r6, r4, lsl r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _021E3EFC -_021E3F20: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E3EC4 - - arm_func_start MOD04_021E3F28 -MOD04_021E3F28: ; 0x021E3F28 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - cmp r1, #0 - moveq r4, #1 - mov r5, r0 - movne r4, #0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - bgt _021E3F8C -_021E3F50: - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r5, r0 - bne _021E3F78 - bl MOD04_021E26E4 - add r0, r0, r4 - add sp, sp, #4 - ldrb r0, [r0, #0x2d0] - ldmia sp!, {r4, r5, pc} -_021E3F78: - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E3F50 -_021E3F8C: - mov r0, #0xff - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E3F28 - - arm_func_start MOD04_021E3F98 -MOD04_021E3F98: ; 0x021E3F98 - stmdb sp!, {r4, lr} - ldr r1, _021E405C ; =UNK04_0220D3B4 - mvn r2, #0 - mov r4, r0 - bl MOD04_0220394C - mvn r2, #0 - cmp r0, r2 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _021E4060 ; =UNK04_0220D3C0 - mov r0, r4 - bl MOD04_0220394C - mvn r2, #0 - cmp r0, r2 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _021E4064 ; =UNK04_0220D3CC - mov r0, r4 - bl MOD04_0220394C - mvn r2, #0 - cmp r0, r2 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _021E4068 ; =UNK04_0220D3D8 - mov r0, r4 - bl MOD04_0220394C - mvn r1, #0 - cmp r0, r1 - bne _021E4028 - ldr r1, _021E4068 ; =UNK04_0220D3D8 - mov r0, r4 - mov r2, #0 - bl MOD04_0220394C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_021E4028: - ldr r1, _021E406C ; =UNK04_0220D3E4 - mov r0, r4 - mvn r2, #0 - bl MOD04_0220394C - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _021E4070 ; =UNK04_0220D3AC - mov r0, r4 - mov r2, #0 - bl MOD04_0220394C - ldmia sp!, {r4, pc} - .align 2, 0 -_021E405C: .word UNK04_0220D3B4 -_021E4060: .word UNK04_0220D3C0 -_021E4064: .word UNK04_0220D3CC -_021E4068: .word UNK04_0220D3D8 -_021E406C: .word UNK04_0220D3E4 -_021E4070: .word UNK04_0220D3AC - arm_func_end MOD04_021E3F98 - - arm_func_start MOD04_021E4074 -MOD04_021E4074: ; 0x021E4074 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x2fc] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - mov r4, #0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x344] - cmp r0, #0 - ble _021E40E8 -_021E40AC: - bl MOD04_021E26E4 - add r0, r0, r4 - ldrb r0, [r0, #0x304] - bl MOD04_021E1F84 - cmp r0, #0 - ble _021E40D4 - cmp r0, r5 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, pc} -_021E40D4: - add r4, r4, #1 - bl MOD04_021E26E4 - ldr r0, [r0, #0x344] - cmp r4, r0 - blt _021E40AC -_021E40E8: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E4074 - - arm_func_start MOD04_021E40F4 -MOD04_021E40F4: ; 0x021E40F4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_021E4100: - mov r5, r4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r0, #0 - blt _021E413C -_021E4114: - bl MOD04_021E26E4 - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - cmp r6, r0 - beq _021E413C - add r5, r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r5, r0 - ble _021E4114 -_021E413C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r5, r0 - bgt _021E415C - add r0, r6, #1 - and r6, r0, #0xff - cmp r6, #0x20 - blo _021E4100 -_021E415C: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E40F4 - - arm_func_start MOD04_021E4164 -MOD04_021E4164: ; 0x021E4164 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - ldr r6, _021E41BC ; =UNK04_02210704 - mov r7, #0 - mov r4, r7 - mov r5, #4 -_021E417C: - ldr r1, [r6, #4] - cmp r1, #0 - beq _021E4194 - mov r0, r5 - mov r2, r4 - bl MOD04_021DD904 -_021E4194: - add r7, r7, #1 - cmp r7, #0x9a - add r6, r6, #0xc - blt _021E417C - ldr r1, _021E41BC ; =UNK04_02210704 - ldr r2, _021E41C0 ; =0x00000738 - mov r0, #0 - bl MIi_CpuClear32 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E41BC: .word UNK04_02210704 -_021E41C0: .word 0x00000738 - arm_func_end MOD04_021E4164 - - arm_func_start MOD04_021E41C4 -MOD04_021E41C4: ; 0x021E41C4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _021E41FC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xe - beq _021E41FC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xf - bne _021E4240 -_021E41FC: - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E43D8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r4, r0 - mov r5, r1 - b _021E424C -_021E4240: - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E424C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _021E4270 - cmp r0, #0xe - beq _021E42A4 - cmp r0, #0xf - beq _021E43AC - b _021E43CC -_021E4270: - ldr r0, _021E43DC ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _021E43CC - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - mov r1, #0xe - bl MOD04_021E4604 - cmp r0, #0 - bne _021E43CC - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E42A4: - ldr r0, _021E43DC ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _021E43CC - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1ac] - add r1, r1, #1 - strb r1, [r0, #0x1ac] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1ac] - cmp r0, #5 - bls _021E4330 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1d8] - bl MOD04_021E4A00 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E4324 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ac] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e8] - str r1, [r4, #0x1ec] - b _021E43CC -_021E4324: - mov r0, #2 - bl MOD04_021E4CF8 - b _021E43CC -_021E4330: - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E43CC - mov r5, #0xd - mov r6, r4 -_021E434C: - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - ldr r1, [r7, #0x1d8] - mov r0, r6,lsl r0 - ands r0, r1, r0 - bne _021E4394 - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r5 - bl MOD04_021E4604 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} -_021E4394: - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E434C - b _021E43CC -_021E43AC: - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb2] - cmp r5, r0, asr #31 - cmpeq r4, r0 - bls _021E43CC - mov r0, #2 - bl MOD04_021E4CF8 -_021E43CC: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E43D8: .word 0x000082EA -_021E43DC: .word 0x00001770 - arm_func_end MOD04_021E41C4 - - arm_func_start MOD04_021E43E0 -MOD04_021E43E0: ; 0x021E43E0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DF88C - cmp r0, #6 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - cmp r5, #0xd - beq _021E441C - cmp r5, #0xe - beq _021E4458 - cmp r5, #0xf - beq _021E45E0 - b _021E45F8 -_021E441C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _021E443C - mov r0, #8 - bl MOD04_021E26D0 - mov r0, r4 - bl MOD04_021E4B78 -_021E443C: - mov r0, r6 - mov r1, #0xe - bl MOD04_021E4604 - cmp r0, #0 - bne _021E45F8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E4458: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xe - bne _021E45C4 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E4600 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r2, r0, lsr #1 - mov r0, r1, lsr #1 - cmp r0, #0 - orr r2, r2, r1, lsl #31 - cmpeq r2, #0x12c - bls _021E4524 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E4600 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r3, r0, lsr #1 - mov r0, #0x12c - orr r3, r3, r1, lsl #31 - rsb r0, r0, #0 - mvn r2, #0 - adds r5, r3, r0 - adc r4, r2, r1, lsr #1 - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb2] - cmp r4, r0, asr #31 - cmpeq r5, r0 - bls _021E4524 - bl MOD04_021E26E4 - add r0, r0, #0x100 - strh r5, [r0, #0xb2] -_021E4524: - mov r0, r6 - mov r1, #0 - bl MOD04_021E3F28 - mov r4, r0 - cmp r4, #0xff - beq _021E4550 - bl MOD04_021E26E4 - ldr r2, [r0, #0x1d8] - mov r1, #1 - orr r1, r2, r1, lsl r4 - str r1, [r0, #0x1d8] -_021E4550: - mov r0, #1 - bl MOD04_021E3EC4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1d8] - cmp r4, r0 - bne _021E45F8 - mov r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E45B8 - mov r4, #0xf -_021E4584: - bl MOD04_021E26E4 - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r4 - bl MOD04_021E4604 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _021E4584 -_021E45B8: - mov r0, #0xf - bl MOD04_021E26D0 - b _021E45F8 -_021E45C4: - mov r0, r6 - mov r1, #0xf - bl MOD04_021E4604 - cmp r0, #0 - bne _021E45F8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E45E0: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #8 - bne _021E45F8 - mov r0, #2 - bl MOD04_021E4CF8 -_021E45F8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E4600: .word 0x000082EA - arm_func_end MOD04_021E43E0 - - arm_func_start MOD04_021E4604 -MOD04_021E4604: ; 0x021E4604 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r5, r1 - cmp r5, #0xd - mov r6, r0 - movne r4, #0 - bne _021E4630 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - mov r4, #1 - str r0, [sp, #8] -_021E4630: - add r0, sp, #8 - str r0, [sp] - mov r2, #0 - mov r0, r5 - mov r1, r6 - mov r3, r2 - str r4, [sp, #4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e8] - str r1, [r4, #0x1ec] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E4604 - - arm_func_start MOD04_021E4684 -MOD04_021E4684: ; 0x021E4684 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #9 - beq _021E46BC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - beq _021E46BC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x11 - bne _021E4700 -_021E46BC: - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1e0] - ldr r0, [r0, #0x1e4] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E4908 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r4, r0 - mov r5, r1 - b _021E470C -_021E4700: - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E470C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #9 - beq _021E4730 - cmp r0, #0x10 - beq _021E47A0 - cmp r0, #0x11 - beq _021E48DC - b _021E48FC -_021E4730: - ldr r0, _021E490C ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _021E48FC - bl MOD04_021DF88C - cmp r0, #5 - bne _021E477C - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1ad] - cmp r0, #5 - blo _021E477C - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5908 - cmp r0, #0 - bne _021E48FC - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E477C: - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1ad] - add r1, r1, #1 - strb r1, [r0, #0x1ad] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x2d0] - mov r1, #3 - bl MOD04_021E4910 - b _021E48FC -_021E47A0: - ldr r0, _021E490C ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _021E48FC - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1ab] - add r1, r1, #1 - strb r1, [r0, #0x1ab] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1ab] - cmp r0, #5 - bls _021E4870 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E47F0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E4800 -_021E47F0: - bl MOD04_021E4B40 - mov r0, #1 - bl MOD04_021E4CF8 - b _021E48FC -_021E4800: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1d4] - bl MOD04_021E4A00 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E4850 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ab] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e0] - str r1, [r4, #0x1e4] - b _021E48FC -_021E4850: - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - bl MOD04_021E59D4 - cmp r0, #0 - bne _021E48FC - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E4870: - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E48FC - mov r5, #2 - mov r6, r4 -_021E488C: - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - ldr r1, [r7, #0x1d4] - mov r0, r6,lsl r0 - ands r0, r1, r0 - bne _021E48C4 - bl MOD04_021E26E4 - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - mov r1, r5 - bl MOD04_021E4910 -_021E48C4: - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E488C - b _021E48FC -_021E48DC: - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - cmp r5, r0, asr #31 - cmpeq r4, r0 - bls _021E48FC - mov r0, #4 - bl MOD04_021E51C0 -_021E48FC: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E4908: .word 0x000082EA -_021E490C: .word 0x00001770 - arm_func_end MOD04_021E4684 - - arm_func_start MOD04_021E4910 -MOD04_021E4910: ; 0x021E4910 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r4, r1 - mov r5, r0 - cmp r4, #2 - beq _021E4934 - cmp r4, #3 - beq _021E49AC - b _021E49D0 -_021E4934: - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r6, r0 - ldrb r0, [r0, #0x2d0] - mov r6, #1 - cmp r5, r0 - moveq r0, #1 - streqb r0, [sp] - movne r0, #0 - strneb r0, [sp] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blo _021E49D0 -_021E4974: - bl MOD04_021E26E4 - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - cmp r5, r0 - streqb r6, [sp, #1] - streqb r5, [sp, #2] - beq _021E49D0 - add r0, r6, #1 - and r6, r0, #0xff - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r6, r0 - bls _021E4974 - b _021E49D0 -_021E49AC: - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - strb r0, [sp] - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - mov r0, r0, asr #8 - strb r0, [sp, #1] -_021E49D0: - add r2, sp, #0 - mov r0, r4 - mov r1, r5 - mov r3, #4 - bl MOD04_021EAF20 - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e0] - str r1, [r4, #0x1e4] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E4910 - - arm_func_start MOD04_021E4A00 -MOD04_021E4A00: ; 0x021E4A00 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x108 - mov sb, #0 - mov sl, r0 - mov r8, sb - mov r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E4A8C - add r4, sp, #8 - add r5, sp, #0x88 - mov r6, r7 -_021E4A34: - bl MOD04_021E26E4 - add r0, r0, r7 - ldrb r0, [r0, #0x2d0] - mov r0, r6,lsl r0 - ands r0, sl, r0 - beq _021E4A64 - bl MOD04_021E26E4 - add r0, r0, r7, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r5, r8, lsl #2] - add r8, r8, #1 - b _021E4A78 -_021E4A64: - bl MOD04_021E26E4 - add r0, r0, r7, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r4, sb, lsl #2] - add sb, sb, #1 -_021E4A78: - add r7, r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _021E4A34 -_021E4A8C: - cmp r8, #0 - mov sl, #0 - ble _021E4AE4 - add r7, sp, #8 - add r5, sp, #0x88 - mov r4, sl - mov r6, #0x10 -_021E4AA8: - str r7, [sp] - str sb, [sp, #4] - ldr r1, [r5, sl, lsl #2] - mov r0, r6 - mov r2, r4 - mov r3, r4 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x108 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add sl, sl, #1 - cmp sl, r8 - blt _021E4AA8 -_021E4AE4: - bl MOD04_021E26E4 - mov r1, #2 - strb r1, [r0, #0x1a8] - cmp sb, #0 - mov r6, #0 - ble _021E4B28 - add r5, sp, #8 - mov r4, r6 -_021E4B04: - ldr r0, [r5, r6, lsl #2] - mov r1, r4 - bl MOD04_021E3F28 - cmp r0, #0xff - beq _021E4B1C - bl MOD04_021DF9D4 -_021E4B1C: - add r6, r6, #1 - cmp r6, sb - blt _021E4B04 -_021E4B28: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - mov r0, #1 - add sp, sp, #0x108 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end MOD04_021E4A00 - - arm_func_start MOD04_021E4B40 -MOD04_021E4B40: ; 0x021E4B40 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - mov r1, #2 - strb r1, [r0, #0x1a8] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E4B40 - - arm_func_start MOD04_021E4B78 -MOD04_021E4B78: ; 0x021E4B78 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - bl MOD04_021E26E4 - str r5, [r0, #0x20c] - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - mov r0, r5 - add r1, r1, #1 - bl MOD04_021DF648 - movs r4, r0 - beq _021E4BD4 - bl MOD04_021E26E4 - mov r1, #2 - strb r1, [r0, #0x1a8] - ldr r0, [r4] - bl MOD04_021FD488 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r4, r5, pc} -_021E4BD4: - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - mov r0, r5 - add r1, r1, #1 - bl MOD04_021E89EC - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E4B78 - - arm_func_start MOD04_021E4BF4 -MOD04_021E4BF4: ; 0x021E4BF4 - stmdb sp!, {r4, lr} - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _021E4CA4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E4C64 - mov r0, #3 - bl MOD04_021E26D0 - mov r0, #0 - bl MOD04_021E7E5C - mov r4, r0 - bl MOD04_021E38E8 - cmp r0, #0 - beq _021E4CAC - mov r0, r4 - ldmia sp!, {r4, pc} -_021E4C64: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E4CAC - mov r0, #4 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - mov r1, #0 - bl MOD04_021E6038 - mov r4, r0 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E4CAC - mov r0, r4 - ldmia sp!, {r4, pc} -_021E4CA4: - mov r0, #1 - bl MOD04_021E4CF8 -_021E4CAC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E4BF4 - - arm_func_start MOD04_021E4CB4 -MOD04_021E4CB4: ; 0x021E4CB4 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021E4B40 - mov r0, #1 - bl MOD04_021E4CF8 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E4CB4 - - arm_func_start MOD04_021E4CF8 -MOD04_021E4CF8: ; 0x021E4CF8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r4, r0 - bne _021E4D14 - bl MOD04_021E4ED4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_021E4D14: - bl MOD04_021E8174 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _021E4D38 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E4D94 -_021E4D38: - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r6, #1 - movne r6, #0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - bl MOD04_021E1F18 - mov r4, r0 - bl MOD04_021E26E4 - str r4, [sp] - ldr r1, [r0, #0x468] - mov r0, #0 - str r1, [sp, #4] - ldr ip, [r5, #0x464] - mov r2, r6 - mov r1, #1 - mov r3, r0 - blx ip - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_021E4D94: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E4DC8 - cmp r4, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - bl MOD04_021E7E5C - bl MOD04_021E38E8 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E4DC8: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r0 - mov r2, r0 - bl MOD04_021E5D30 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E4CF8 - - arm_func_start MOD04_021E4E00 -MOD04_021E4E00: ; 0x021E4E00 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r4, #0 - str r4, [sp, #8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E4EC8 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20] - cmp r0, #0 - beq _021E4EC8 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r1, [r5, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - beq _021E4EC8 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - add r2, sp, #8 - mov r1, #1 - str r2, [sp] - str r1, [sp, #4] - ldrb r3, [r0, #0xd] - ldrb r2, [r6, #0xd] - ldr r1, [r7, #0x20] - add r3, r3, #1 - add r2, r2, #1 - add r3, r4, r3, lsl #1 - add r2, r5, r2, lsl #2 - ldrh r3, [r3, #0xa4] - ldr r2, [r2, #0x24] - mov r0, #0xc - bl MOD04_021E7884 - mov r4, r0 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20] -_021E4EC8: - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end MOD04_021E4E00 - - arm_func_start MOD04_021E4ED4 -MOD04_021E4ED4: ; 0x021E4ED4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - ldr r1, _021E4F90 ; =UNK04_0220D3F0 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - bl MOD04_021E397C - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E8034 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - cmp r0, #0 - movne r6, #1 - bne _021E4F28 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r6, #1 - movne r6, #0 -_021E4F28: - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - bl MOD04_021E1F18 - mov r4, r0 - bl MOD04_021E26E4 - str r4, [sp] - ldr r1, [r0, #0x468] - mov r2, r7 - str r1, [sp, #4] - ldr ip, [r5, #0x464] - mov r3, r6 - mov r0, #0 - mov r1, #1 - blx ip - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a9] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E4F90: .word UNK04_0220D3F0 - arm_func_end MOD04_021E4ED4 - - arm_func_start MOD04_021E4F94 -MOD04_021E4F94: ; 0x021E4F94 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20c] - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #2 - bne _021E4FC4 - bl MOD04_021E4ED4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021E4FC4: - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x1a9] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E5038 - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x1a9] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E5010 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C - b _021E502C -_021E5010: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} -_021E502C: - bl MOD04_021E4ED4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021E5038: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - beq _021E5098 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #5 - beq _021E5098 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _021E5098 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #7 - beq _021E5098 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - beq _021E5098 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - bne _021E50D8 -_021E5098: - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r0, #0 - beq _021E50C4 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} -_021E50C4: - bl MOD04_021E4E00 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} -_021E50D8: - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _021E5100 - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - bl MOD04_022006B4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E5100: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E512C - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x1a9] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C -_021E512C: - bl MOD04_021E4ED4 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E4F94 - - arm_func_start MOD04_021E5138 -MOD04_021E5138: ; 0x021E5138 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _021E5168 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_021E5168: - cmp r5, #0 - mov r4, #0 - bls _021E51B8 -_021E5174: - ldr r0, [r6, r4, lsl #2] - bl MOD04_021E4074 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _021E51AC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_021E51AC: - add r4, r4, #1 - cmp r4, r5 - blo _021E5174 -_021E51B8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E5138 - - arm_func_start MOD04_021E51C0 -MOD04_021E51C0: ; 0x021E51C0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - cmp r0, #4 - mov r5, #3 - mov r4, #0 - addls pc, pc, r0, lsl #2 - b _021E57E8 -_021E51DC: ; jump table - b _021E51F0 ; case 0 - b _021E5594 ; case 1 - b _021E55D8 ; case 2 - b _021E569C ; case 3 - b _021E56BC ; case 4 -_021E51F0: - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - ldrb r1, [r6, #0x1a4] - sub r0, r0, #1 - cmp r1, r0 - bge _021E52B0 - mov r0, #0xd - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r5, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [sp, #8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - str r0, [sp, #0xc] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r5, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0x10] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r5, r0, lsl #2 - ldr r0, [r0, #0x24] - str r0, [sp, #0x14] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - mov r5, #5 - add r0, r0, #1 - add r0, r6, r0, lsl #1 - ldrh r0, [r0, #0xa4] - str r0, [sp, #0x18] - b _021E54FC -_021E52B0: - bl MOD04_021E26E4 - mov r1, r4 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, r4 - str r1, [r0, #0x20] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E52F0 - mov r0, r5 - bl MOD04_021E26D0 - b _021E5314 -_021E52F0: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E530C - mov r0, #4 - bl MOD04_021E26D0 - b _021E5314 -_021E530C: - mov r0, #0xa - bl MOD04_021E26D0 -_021E5314: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a4] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _021E534C - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r1, [r6, #0xd] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _021E53FC -_021E534C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E5384 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r6, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r7, #0x20c] - b _021E53A4 -_021E5384: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20c] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - str r0, [r6, #0xf4] -_021E53A4: - mov r0, #0x10 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1d4] - mov r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E54EC - mov r6, #2 -_021E53D0: - bl MOD04_021E26E4 - add r0, r0, r7 - ldrb r0, [r0, #0x2d0] - mov r1, r6 - bl MOD04_021E4910 - add r7, r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _021E53D0 - b _021E54EC -_021E53FC: - mov r0, #0 - str r0, [sp, #8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - str r0, [sp, #0xc] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r6, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0x10] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E5460 - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r6, r0 - bl OS_GetTick - str r0, [r6, #0xec] - str r1, [r6, #0xf0] - b _021E54EC -_021E5460: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E54EC - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl MOD04_021E5D30 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _021E54EC - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #2 - blo _021E54EC - bl MOD04_021E26E4 - mov r8, r0 - mov r0, #0 - bl MOD04_021E3EC4 - mov r6, r0 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - mov r1, #1 - ldr r2, [r8, #0x1dc] - add r0, r7, r0 - ldrb r0, [r0, #0x2d0] - mvn r0, r1, lsl r0 - and r0, r6, r0 - cmp r2, r0 - beq _021E54EC - bl MOD04_021E4CB4 - b _021E57E8 -_021E54EC: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - movne r4, #1 -_021E54FC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - beq _021E57E8 - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - add r1, sp, #8 - str r1, [sp] - str r5, [sp, #4] - mov ip, r0 - ldrb r3, [sb, #0xd] - ldrb r2, [r7, #0xd] - ldrb r1, [ip, #0xd] - add r5, sl, r3, lsl #2 - add r2, r8, r2, lsl #2 - add r3, r6, r1, lsl #1 - ldrh r3, [r3, #0xa4] - ldr r1, [r5, #0xf4] - ldr r2, [r2, #0x24] - mov r0, #8 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x3cd] - b _021E57E8 -_021E5594: - mov r0, #1 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E55D0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r5, #0x20c] -_021E55D0: - mov r4, #1 - b _021E57E8 -_021E55D8: - mov r0, #1 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E5600 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E5620 -_021E5600: - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - str r0, [r5, #0x20] -_021E5620: - bl MOD04_021E3E9C - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - bls _021E57E8 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - add r3, r8, #0xf4 - ldrb r2, [r0, #0xd] - mov r1, #1 - mov r0, #9 - sub r2, r2, #1 - add r2, r3, r2, lsl #2 - str r2, [sp] - str r1, [sp, #4] - ldr r1, [r7, #0xf4] - ldr r2, [r6, #0x24] - ldrh r3, [r5, #0xa4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E57E8 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E569C: - mov r0, #1 - bl MOD04_021E26D0 - bl MOD04_021E3E9C - bl MOD04_021E26E4 - mov r1, r4 - str r1, [r0, #0x20c] - mov r4, #1 - b _021E57E8 -_021E56BC: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _021E56DC - ldr r1, _021E581C ; =UNK04_0220D3F0 - mov r0, #2 - mov r2, r4 - bl MOD04_021E1E30 -_021E56DC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - bl MOD04_021E1F18 - mov r5, r0 - bl MOD04_021E26E4 - str r5, [sp] - ldr r1, [r0, #0x468] - mov r0, #0 - str r1, [sp, #4] - ldr r5, [r6, #0x464] - mov r2, r7 - mov r1, r0 - mov r3, r0 - blx r5 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E5750 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E5758 -_021E5750: - bl MOD04_021E8034 - b _021E57DC -_021E5758: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _021E5780 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203E80 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe4] -_021E5780: - bl MOD04_02200D6C - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E57C8 - bl MOD04_021E85D4 - bl MOD04_021E397C - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _021E5820 ; =UNK04_022106DC - ldrb r1, [r0] - cmp r1, #1 - moveq r1, #1 - streqb r1, [r0, #1] - mov r0, #0xa - bl MOD04_021E26D0 - b _021E57D0 -_021E57C8: - mov r0, #1 - bl MOD04_021E26D0 -_021E57D0: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20c] -_021E57DC: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a9] -_021E57E8: - cmp r4, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203C04 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_021E581C: .word UNK04_0220D3F0 -_021E5820: .word UNK04_022106DC - arm_func_end MOD04_021E51C0 - - arm_func_start MOD04_021E5824 -MOD04_021E5824: ; 0x021E5824 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E58BC - mov r5, #0xa -_021E5844: - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - add r1, r6, #0x348 - str r1, [sp] - ldr ip, [r0, #0x348] - add r3, r7, r4, lsl #1 - add ip, ip, #1 - str ip, [sp, #4] - add r1, sb, r4, lsl #2 - add r2, r8, r4, lsl #2 - ldrh r3, [r3, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r5 - bl MOD04_021E7884 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E5844 -_021E58BC: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20] - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x1a8] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - mov r0, r1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end MOD04_021E5824 - - arm_func_start MOD04_021E5908 -MOD04_021E5908: ; 0x021E5908 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E5950 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E5938 - bl MOD04_021E4B40 -_021E5938: - ldr r1, _021E59D0 ; =0xFFFEC5D2 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E5950: - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r5, #0x14] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _021E5998 - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - bl MOD04_022006B4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E5998: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E59B0 - bl MOD04_021E4CB4 - b _021E59C4 -_021E59B0: - mov r0, #4 - bl MOD04_021E26D0 - mov r0, #0 - bl MOD04_021E5C44 - mov r4, r0 -_021E59C4: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E59D0: .word 0xFFFEC5D2 - arm_func_end MOD04_021E5908 - - arm_func_start MOD04_021E59D4 -MOD04_021E59D4: ; 0x021E59D4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E5A0C - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r1, [r4, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - moveq r4, #0 - beq _021E5A10 -_021E5A0C: - mov r4, #1 -_021E5A10: - cmp r4, #0 - beq _021E5A3C - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 -_021E5A3C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0x1f - bhs _021E5A6C - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - mov r1, #0 - add r0, r0, #1 - add r0, r6, r0, lsl #2 - str r1, [r0, #0xf4] -_021E5A6C: - bl MOD04_021E26E4 - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _021E5AA0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - bl MOD04_022006B4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E5AA0: - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r6, #0x14] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - cmp r4, #0 - bne _021E5AE0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E5BE8 - bl MOD04_021E4CB4 - b _021E5BE8 -_021E5AE0: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E5B1C - mov r0, #3 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #2 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - str r1, [r4, #0xf0] - b _021E5BE8 -_021E5B1C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E5B48 - mov r0, #4 - bl MOD04_021E26D0 - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl MOD04_021E5D30 - b _021E5BE8 -_021E5B48: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E5BE8 - mov r0, #0xe - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1d8] - bl MOD04_021E26E4 - add r1, r0, #0x100 - mov r2, #0 - mov r0, r5 - strh r2, [r1, #0xb2] - bl MOD04_021E4B78 - mov r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E5BD0 - mov r4, #0xd -_021E5B9C: - bl MOD04_021E26E4 - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r4 - bl MOD04_021E4604 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _021E5B9C -_021E5BD0: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - bne _021E5BE8 - mov r0, #2 - bl MOD04_021E4CF8 -_021E5BE8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E59D4 - - arm_func_start MOD04_021E5BF0 -MOD04_021E5BF0: ; 0x021E5BF0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r2, [r4, #0x24] - mov r1, r5 - mov r0, #5 - bl MOD04_021E7884 - mov r4, r0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E5BF0 - - arm_func_start MOD04_021E5C44 -MOD04_021E5C44: ; 0x021E5C44 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a7] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E5CC0 - mov r0, #3 - bl MOD04_021E26D0 - mov r0, #0 - bl MOD04_021E7E5C - bl MOD04_021E38E8 - cmp r0, #0 - beq _021E5D20 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E5CC0: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E5CF8 - mov r0, #0 - mov r1, r0 - mov r2, r5 - bl MOD04_021E5D30 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E5D20 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E5CF8: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E5D20 - ldr r1, _021E5D2C ; =0xFFFEC5E6 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021E5D20: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E5D2C: .word 0xFFFEC5E6 - arm_func_end MOD04_021E5C44 - - arm_func_start MOD04_021E5D30 -MOD04_021E5D30: ; 0x021E5D30 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x23c - movs r4, r1 - str r0, [sp] - str r2, [sp, #4] - beq _021E5D58 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a5] - str r0, [sp, #0xc] - b _021E5D90 -_021E5D58: - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x344] - ldrb r1, [r5, #0x1a5] - sub r0, r0, #1 - cmp r1, r0 - movge r0, #0 - strge r0, [sp, #0xc] - bge _021E5D90 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a5] - add r0, r0, #1 - str r0, [sp, #0xc] -_021E5D90: - cmp r4, #0 - moveq r0, #1 - mov sb, #0 - streq r0, [sp, #8] - strne sb, [sp, #8] - mov r7, #1 - mov r8, #0 - mov r5, #0x2f - mov r4, #0xa -_021E5DB4: - ldr r0, [sp, #8] - cmp r0, #0 - bne _021E5DC8 - cmp sb, #0 - beq _021E5DFC -_021E5DC8: - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1a5] - add r1, r1, #1 - strb r1, [r0, #0x1a5] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r1, [r6, #0x1a5] - ldr r0, [r0, #0x344] - cmp r1, r0 - blt _021E5DFC - bl MOD04_021E26E4 - strb r8, [r0, #0x1a5] -_021E5DFC: - cmp sb, #0 - beq _021E5E50 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1a5] - ldr r0, [sp, #0xc] - cmp r0, r1 - bne _021E5E50 - bl MOD04_021E26E4 - ldr r1, _021E6028 ; =0x00000BB8 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - add sp, sp, #0x23c - mov r0, r1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021E5E50: - mov sb, r7 - bl MOD04_021E0F00 - mov fp, r0 - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r1, r0 - ldrb r2, [r1, #0x1a5] - ldr r3, [sl, #0x2fc] - mov r1, #0xc - add r2, r6, r2 - ldrb r2, [r2, #0x304] - mov r0, fp - mla r1, r2, r1, r3 - bl DWC_GetGsProfileId - movs sl, r0 - beq _021E5DB4 - mvn r0, #0 - cmp sl, r0 - beq _021E5DB4 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov fp, r0 - bl MOD04_021E26E4 - ldr r2, [r6, #0x2fc] - ldrb r1, [r0, #0x1a5] - mov r0, #0xc - add r1, fp, r1 - ldrb r1, [r1, #0x304] - mla r0, r1, r0, r2 - bl DWCi_Acc_IsValidFriendData - cmp r0, #0 - beq _021E5DB4 - mov r6, r7 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E5F1C -_021E5EF4: - bl MOD04_021E26E4 - add r0, r0, r6, lsl #2 - ldr r0, [r0, #0xf4] - cmp sl, r0 - beq _021E5F1C - add r6, r6, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r6, r0 - ble _021E5EF4 -_021E5F1C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r6, r0 - ble _021E5DB4 - bl MOD04_021E26E4 - ldr r0, [r0] - mov r1, sl - add r2, sp, #0x18 - bl MOD04_021F0664 - mov r6, r0 - bl MOD04_021E26E4 - ldr r0, [r0] - ldr r1, [sp, #0x18] - add r2, sp, #0x28 - bl MOD04_021F06E4 - orrs r0, r6, r0 - bne _021E5DB4 - ldr r0, [sp, #0x2c] - cmp r0, #4 - bne _021E5DB4 - ldr r0, _021E602C ; =UNK04_0220D3F4 - add r1, sp, #0x1c - add r2, sp, #0x30 - mov r3, r5 - bl MOD04_021DE9F4 - mov r6, r0 - ldr r0, _021E6030 ; =UNK04_0220D3F8 - add r1, sp, #0x12 - add r2, sp, #0x30 - mov r3, r5 - bl MOD04_021DE9F4 - mov fp, r0 - ldr r0, _021E6034 ; =UNK04_0220D3FC - add r1, sp, #0x10 - add r2, sp, #0x30 - mov r3, r5 - bl MOD04_021DE9F4 - cmp r6, #0 - ble _021E5DB4 - cmp fp, #0 - ble _021E5DB4 - cmp r0, #0 - ble _021E5DB4 - add r0, sp, #0x1c - mov r1, r8 - mov r2, r4 - bl strtoul - cmp r0, #3 - bne _021E5DB4 - add r0, sp, #0x12 - mov r1, r8 - mov r2, r4 - bl strtoul - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x16] - cmp r6, r0 - bne _021E5DB4 - ldr r0, [sp, #4] - cmp sl, r0 - moveq r0, #1 - streq r0, [sp] - ldr r1, [sp] - mov r0, sl - bl MOD04_021E6038 - add sp, sp, #0x23c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E6028: .word 0x00000BB8 -_021E602C: .word UNK04_0220D3F4 -_021E6030: .word UNK04_0220D3F8 -_021E6034: .word UNK04_0220D3FC - arm_func_end MOD04_021E5D30 - - arm_func_start MOD04_021E6038 -MOD04_021E6038: ; 0x021E6038 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r5, r0 - cmp r1, #0 - bne _021E606C - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _021E60A0 - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - cmp r0, #0 - bne _021E60A0 -_021E606C: - bl MOD04_021E26E4 - mov r1, #1 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1c0] - str r1, [r4, #0x1c4] - bl MOD04_021E26E4 - str r5, [r0, #0xf4] - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E60A0: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E6124 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, #0 - bl MOD04_02203BF4 - mov r6, r0 - bl MOD04_021E26E4 - mov r4, r0 - ldr r1, _021E61E4 ; =UNK04_0220D3AC - mov r0, r6 - mov r2, #0 - bl MOD04_0220394C - str r0, [r4, #0xf4] - bl MOD04_021E26E4 - mov r4, r0 - mov r0, r6 - bl MOD04_02203908 - str r0, [r4, #0x24] - bl MOD04_021E26E4 - mov r4, r0 - mov r0, r6 - bl MOD04_022038E4 - strh r0, [r4, #0xa4] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - mov r4, #1 - str r0, [r6, #0x204] - b _021E6160 -_021E6124: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E613C - bl MOD04_021E26E4 - str r5, [r0, #0xf4] -_021E613C: - bl MOD04_021E26E4 - str r5, [r0, #0x204] - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - str r0, [sp, #0xc] - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - mov r4, #3 - str r0, [sp, #0x10] -_021E6160: - bl MOD04_021E26E4 - ldr r1, _021E61E8 ; =0x00001770 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - mov r6, r0 - bl OS_GetTick - str r0, [r6, #0x1cc] - str r1, [r6, #0x1d0] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - movne r7, #0xb - moveq r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - str r0, [sp, #8] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - add r2, sp, #8 - str r2, [sp] - mov r3, r0 - str r4, [sp, #4] - ldrh r3, [r3, #0xa4] - ldr r2, [r6, #0x24] - mov r1, r5 - mov r0, r7 - bl MOD04_021E7884 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E61E4: .word UNK04_0220D3AC -_021E61E8: .word 0x00001770 - arm_func_end MOD04_021E6038 - - arm_func_start MOD04_021E61EC -MOD04_021E61EC: ; 0x021E61EC - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E6210 - mov r0, r4 - bl MOD04_021E38E8 - ldmia sp!, {r4, pc} -_021E6210: - mov r0, r4 - bl MOD04_021E397C - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E61EC - - arm_func_start MOD04_021E621C -MOD04_021E621C: ; 0x021E621C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5] - mov r6, r0 - add r4, r1, #2 - cmp r4, #2 - bls _021E6250 - bl MOD04_021E26E4 - sub r2, r4, #2 - add r1, r0, #0x350 - add r0, r5, #4 - mov r2, r2, lsl #2 - bl MIi_CpuCopy32 -_021E6250: - bl MOD04_021E26E4 - sub r1, r4, #1 - str r1, [r0, #0x348] - bl MOD04_021E26E4 - str r6, [r0, #0x34c] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E621C - - arm_func_start MOD04_021E6268 -MOD04_021E6268: ; 0x021E6268 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E62A4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20] - cmp r6, r0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021E62A4: - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - str r6, [r0, #0x20] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #2 - str r6, [r0, #0xf4] - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #2 - str r5, [r0, #0x24] - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #1 - strh r4, [r0, #0xa4] - bl MOD04_021E26E4 - str r5, [r0, #0x1b8] - bl MOD04_021E26E4 - add r0, r0, #0x100 - strh r4, [r0, #0xb4] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E40F4 - ldrb r1, [r4, #0x14] - add r1, r1, #1 - add r1, r5, r1 - strb r0, [r1, #0x2d0] - str r6, [sp, #8] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - mov r7, #1 - add r0, r0, #1 - add r0, r4, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0xc] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r0, #1 - blt _021E6414 - add r6, sp, #8 - mov r5, #2 - mov r4, #7 -_021E63B8: - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - str r6, [sp] - str r5, [sp, #4] - add r0, r0, r7, lsl #1 - add r1, sb, r7, lsl #2 - add r2, r8, r7, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r4 - bl MOD04_021E7884 - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r7, r7, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r7, r0 - ble _021E63B8 -_021E6414: - mov r0, #1 - bl MOD04_021E3E28 - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end MOD04_021E6268 - - arm_func_start MOD04_021E6428 -MOD04_021E6428: ; 0x021E6428 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r8, r3 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E6490 - cmp r0, #1 - beq _021E6460 - cmp r0, #2 - beq _021E6670 - b _021E6724 -_021E6460: - bl MOD04_021E26E4 - ldr r0, [r0] - mov r1, r7 - bl MOD04_021F05F4 - cmp r0, #0 - moveq r4, #0xff - beq _021E6724 - mov r0, r7 - bl MOD04_021E4074 - cmp r0, #0 - moveq r4, #3 - beq _021E6724 -_021E6490: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r8, r0 - bne _021E64F8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a9] - cmp r0, #0 - bne _021E64F8 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r1, [r4, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - beq _021E64F8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E655C - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r1, [r4, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - bne _021E655C -_021E64F8: - mov r4, #3 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E6724 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - ldr r0, [r0, #0xb4] - cmp r0, #0 - bne _021E6724 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E6724 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r1, [r5, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - bne _021E6724 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - b _021E6724 -_021E655C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #3 - beq _021E657C - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _021E65AC -_021E657C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _021E659C - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - cmp r0, #0 - beq _021E65AC -_021E659C: - cmp r6, #0 - bne _021E65B4 - cmp r5, #0 - bne _021E65B4 -_021E65AC: - mov r4, #4 - b _021E6724 -_021E65B4: - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r0, #0 - beq _021E6668 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r7, r0 - bne _021E6610 - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _021E6600 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - cmp r0, r7 - bge _021E6608 - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r7, r0 - beq _021E6608 -_021E6600: - mov r4, #2 - b _021E6724 -_021E6608: - mov r4, #0xff - b _021E6724 -_021E6610: - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _021E663C - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - cmp r0, r7 - bge _021E6660 - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - bne _021E6660 -_021E663C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - movne r0, #0xff - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, #2 - b _021E6724 -_021E6660: - mov r4, #3 - b _021E6724 -_021E6668: - mov r4, #2 - b _021E6724 -_021E6670: - bl MOD04_021E26E4 - ldr r0, [r0] - mov r1, r7 - bl MOD04_021F05F4 - cmp r0, #0 - moveq r4, #0xff - beq _021E6724 - cmp r8, #3 - bne _021E66B0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r1, [r4, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _021E66B8 -_021E66B0: - mov r4, #3 - b _021E6724 -_021E66B8: - ldr r0, _021E672C ; =UNK04_022106DC - ldrb r1, [r0] - cmp r1, #1 - bne _021E66D8 - ldrb r0, [r0, #1] - cmp r0, #1 - moveq r4, #0x13 - beq _021E6724 -_021E66D8: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xa - bne _021E6718 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _021E6708 - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - cmp r0, #0 - beq _021E6718 -_021E6708: - cmp r6, #0 - bne _021E6720 - cmp r5, #0 - bne _021E6720 -_021E6718: - mov r4, #4 - b _021E6724 -_021E6720: - mov r4, #2 -_021E6724: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021E672C: .word UNK04_022106DC - arm_func_end MOD04_021E6428 - - arm_func_start MOD04_021E6730 -MOD04_021E6730: ; 0x021E6730 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x118 - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov sl, r3 - ldr r6, [sp, #0x138] - ldr r5, [sp, #0x13c] - mov r4, #0 - bl MOD04_021E26E4 - cmp r0, #0 - beq _021E6770 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0 - bne _021E677C -_021E6770: - add sp, sp, #0x118 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E677C: - bl MOD04_021DF88C - cmp r0, #5 - bne _021E67AC - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E67AC - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E67AC - bl MOD04_021E3E9C -_021E67AC: - cmp sb, #0x40 - bgt _021E684C - cmp sb, #0x40 - bge _021E7594 - cmp sb, #0x20 - addls pc, pc, sb, lsl #2 - b _021E7608 -_021E67C8: ; jump table - b _021E7608 ; case 0 - b _021E6854 ; case 1 - b _021E6A20 ; case 2 - b _021E6BF8 ; case 3 - b _021E6C58 ; case 4 - b _021E6D78 ; case 5 - b _021E6DF4 ; case 6 - b _021E6F04 ; case 7 - b _021E701C ; case 8 - b _021E719C ; case 9 - b _021E71F0 ; case 10 - b _021E6854 ; case 11 - b _021E7298 ; case 12 - b _021E730C ; case 13 - b _021E730C ; case 14 - b _021E730C ; case 15 - b _021E7330 ; case 16 - b _021E7380 ; case 17 - b _021E7424 ; case 18 - b _021E7480 ; case 19 - b _021E7608 ; case 20 - b _021E7608 ; case 21 - b _021E7608 ; case 22 - b _021E7608 ; case 23 - b _021E7608 ; case 24 - b _021E7608 ; case 25 - b _021E7608 ; case 26 - b _021E7608 ; case 27 - b _021E7608 ; case 28 - b _021E7608 ; case 29 - b _021E7608 ; case 30 - b _021E7608 ; case 31 - b _021E7498 ; case 32 -_021E684C: - cmp sb, #0x41 - b _021E7608 -_021E6854: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - ldrne r0, [r6, #8] - ldrne r7, [r6, #4] - movne r0, r0, lsl #0x10 - movne sl, r0, lsr #0x10 - cmp sb, #0xb - moveq r0, #1 - movne r0, #0 - str r0, [sp] - ldr r3, [r6] - mov r0, r8 - mov r1, r7 - mov r2, sl - bl MOD04_021E6428 - mov r5, r0 - cmp r5, #2 - bne _021E6994 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1dc] - mov r0, r8 - mov r1, r7 - mov r2, sl - bl MOD04_021E6268 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E6918 - bl MOD04_021E26E4 - ldr r0, [r0, #0x46c] - cmp r0, #0 - beq _021E6918 - bl MOD04_021E26E4 - mov r6, r0 - mov r0, r8 - bl MOD04_021E1F18 - mov r4, r0 - bl MOD04_021E26E4 - ldr r1, [r0, #0x470] - ldr r2, [r6, #0x46c] - mov r0, r4 - blx r2 -_021E6918: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - mov r4, #1 - str r0, [sp, #0x14] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r0, #1 - blt _021E6960 - add r6, sp, #0x14 -_021E693C: - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r6, r4, lsl #2] - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - cmp r4, r0 - ble _021E693C -_021E6960: - bl MOD04_021E26E4 - ldr r1, [r0, #0x1c] - add r0, sp, #0x14 - str r1, [r0, r4, lsl #2] - bl MOD04_021E26E4 - ldrh r2, [r0, #0x1a] - add r3, r4, #1 - add r1, sp, #0x14 - mov r0, #0xb - str r2, [r1, r3, lsl #2] - add r4, r4, #2 - bl MOD04_021E26D0 - b _021E69E0 -_021E6994: - cmp r5, #3 - bne _021E69E0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x16] - cmp r0, #0 - beq _021E69E0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r1, [r6, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _021E69E0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r0, #0x10 - streq r0, [sp, #0x14] - moveq r4, #1 -_021E69E0: - cmp r5, #0xff - beq _021E7608 - add r1, sp, #0x14 - str r1, [sp] - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, sl - str r4, [sp, #4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6A20: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _021E7608 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a7] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #4] - str r1, [r0, #0x24] - bl MOD04_021E26E4 - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #8] - strh r1, [r0, #0xa4] - bl MOD04_021E26E4 - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #4] - str r1, [r0, #0x1b8] - bl MOD04_021E26E4 - ldr r1, [r6] - add r0, r0, #0x100 - add r1, r6, r1, lsl #2 - ldr r1, [r1, #8] - strh r1, [r0, #0xb4] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E6B4C - ldr r1, [r6] - add r0, r6, #4 - bl MOD04_021E5138 - cmp r0, #0 - beq _021E6B08 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E6B4C - mov r0, r8 - mov r1, r6 - bl MOD04_021E621C - b _021E6B4C -_021E6B08: - mov r0, r8 - bl MOD04_021E5BF0 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, #0 - mov r1, r0 - mov r2, r8 - bl MOD04_021E5D30 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6B4C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E6BD0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E6B90 - mov r0, r8 - mov r1, r6 - bl MOD04_021E621C - bl MOD04_021E5824 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6B90: - mov r0, #6 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - mov r1, #0 - bl MOD04_02203BF4 - mov r2, r0 - mov r0, #0 - mov r1, r0 - bl MOD04_021E7B04 - bl MOD04_021E37A4 - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6BD0: - mov r0, #5 - bl MOD04_021E26D0 - mov r0, r8 - bl MOD04_021E7E5C - bl MOD04_021E38E8 - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6BF8: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _021E7608 - cmp r5, #0 - ble _021E6C44 - ldr r0, [r6] - cmp r0, #0x10 - bne _021E6C44 - mov r0, #0xd - mov r1, #0 - bl MOD04_021E8E08 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6C44: - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - bl MOD04_021E5C44 - add sp, sp, #0x118 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6C58: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _021E7608 - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _021E6CAC - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a7] - cmp r0, #0x10 - blo _021E6CBC -_021E6CAC: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E6D00 -_021E6CBC: - bl MOD04_021E26E4 - mov r1, #1 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1c0] - str r1, [r4, #0x1c4] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E7608 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1a7] - add r1, r1, #1 - strb r1, [r0, #0x1a7] - b _021E7608 -_021E6D00: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a7] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E6D54 - mov r0, #3 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #1 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - str r1, [r4, #0xf0] - b _021E7608 -_021E6D54: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E7608 - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl MOD04_021E5D30 - b _021E7608 -_021E6D78: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20] - cmp r8, r0 - bne _021E7608 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E6DD8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - bne _021E6DD8 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf8] - cmp r8, r0 - bne _021E6DD8 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C -_021E6DD8: - mov r0, r8 - bl MOD04_021E59D4 - cmp r0, #0 - bne _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6DF4: - ldr r0, [r6, #4] - ldr r4, [r6] - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E6E20 - mov r0, #6 - bl MOD04_021E26D0 - b _021E6E50 -_021E6E20: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _021E6E40 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - bne _021E7608 -_021E6E40: - bl MOD04_021E26E4 - ldr r0, [r0, #0x20] - cmp r8, r0 - bne _021E7608 -_021E6E50: - bl MOD04_021E26E4 - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r6, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - beq _021E6E9C - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r6, r0, lsl #2 - str r8, [r0, #0xf4] -_021E6E9C: - mov r1, r5, asr #8 - mov r0, r5, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - str r4, [sp, #0x10] - strh r0, [sp, #0xe] - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x194] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD43C - mov r4, r0 - bl MOD04_021E26E4 - add r3, r0, #0x194 - mov r1, r4 - mov r0, #0 - add r2, sp, #0xc - bl MOD04_021E2784 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - b _021E7608 -_021E6F04: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E7608 - ldr r0, [r6] - str r0, [sp, #8] - ldr r0, [r6, #4] - and r4, r0, #0xff - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E6F98 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _021E6F98 - ldr r0, [sp, #8] - bl MOD04_021E4074 - str r0, [sp, #0x14] - add r0, sp, #0x14 - str r0, [sp] - mov r5, #1 - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x20 - str r5, [sp, #4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E6F98: - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - ldr r1, [sp, #8] - add r0, r0, #1 - add r0, r5, r0, lsl #2 - str r1, [r0, #0xf4] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r5, r0 - strb r4, [r0, #0x2d0] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - bl MOD04_021E26E4 - ldr r0, [r0, #0x46c] - cmp r0, #0 - beq _021E7608 - bl MOD04_021E26E4 - mov r5, r0 - ldr r0, [sp, #8] - bl MOD04_021E1F18 - mov r4, r0 - bl MOD04_021E26E4 - ldr r1, [r0, #0x470] - ldr r2, [r5, #0x46c] - mov r0, r4 - blx r2 - b _021E7608 -_021E701C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E7608 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E7608 - ldr r0, [r6] - str r0, [sp, #8] - cmp r0, #0 - bne _021E7084 - ldr r5, [r6, #4] - ldr r4, [r6, #8] - bl MOD04_021E26E4 - add r0, r5, r0 - strb r4, [r0, #0x2d0] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r2, [r0, #0x200] - add r1, r4, r5, lsl #2 - mov r0, #3 - str r2, [r1, #0xf4] - bl MOD04_021E51C0 - b _021E7608 -_021E7084: - ldr r0, [r6, #8] - ldr r4, [r6, #4] - and r5, r0, #0xff - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r1, [sp, #8] - ldr r0, [r0, #0xf4] - cmp r1, r0 - bne _021E7104 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - sub r0, r0, #1 - cmp r4, r0 - bne _021E7104 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - add r1, sp, #8 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r2, [r4, #0x24] - mov r1, r8 - mov r0, #9 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7104: - bl MOD04_021E26E4 - ldr r1, [sp, #8] - add r0, r0, r4, lsl #2 - str r1, [r0, #0xf4] - bl MOD04_021E26E4 - add r0, r4, r0 - strb r5, [r0, #0x2d0] - bl MOD04_021E26E4 - ldr r1, [r6, #0xc] - add r0, r0, r4, lsl #2 - str r1, [r0, #0x24] - bl MOD04_021E26E4 - ldr r1, [r6, #0x10] - add r0, r0, r4, lsl #1 - strh r1, [r0, #0xa4] - bl MOD04_021E26E4 - ldr r1, [r6, #0xc] - str r1, [r0, #0x1b8] - bl MOD04_021E26E4 - add r1, r0, #0x100 - ldr r2, [r6, #0x10] - mov r0, #5 - strh r2, [r1, #0xb4] - bl MOD04_021E26D0 - ldr r0, [sp, #8] - bl MOD04_021E7E5C - bl MOD04_021E38E8 - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - b _021E7608 -_021E719C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xd - bne _021E7608 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a4] - ldr r1, [r6] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r1, r0 - bne _021E7608 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1a4] - add r1, r1, #1 - strb r1, [r0, #0x1a4] - mov r0, #0 - bl MOD04_021E51C0 - b _021E7608 -_021E71F0: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - beq _021E7210 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x12 - bne _021E7608 -_021E7210: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E7234 - ldr r1, [r6] - add r0, r6, #4 - bl MOD04_021E5138 - cmp r0, #0 - beq _021E7250 -_021E7234: - bl MOD04_021E26E4 - ldr r1, [r6, #4] - str r1, [r0, #0x208] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a7] - b _021E725C -_021E7250: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] -_021E725C: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E7280 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C - b _021E7608 -_021E7280: - bl MOD04_021E4BF4 - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7298: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E7608 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E72C8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E72E4 -_021E72C8: - mov r0, r8 - bl MOD04_021E5908 - cmp r0, #0 - bne _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E72E4: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E7608 - bl MOD04_021E26E4 - str r8, [r0, #0x20c] - bl MOD04_021E4B40 - mov r0, #0 - bl MOD04_021E4CF8 - b _021E7608 -_021E730C: - ldr r2, [r6] - mov r0, r8 - mov r1, sb - bl MOD04_021E43E0 - cmp r0, #0 - bne _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7330: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - cmp r8, r0 - addne sp, sp, #0x118 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r5, #0 - mov r7, #0 - ble _021E7608 - mov r4, r7 -_021E7358: - ldr r0, [r6, r7, lsl #2] - mov r1, r4 - bl MOD04_021E3F28 - cmp r0, #0xff - beq _021E7370 - bl MOD04_021DF9D4 -_021E7370: - add r7, r7, #1 - cmp r7, r5 - blt _021E7358 - b _021E7608 -_021E7380: - ldr r0, _021E7614 ; =UNK04_022106D4 - ldr r4, [r0] - cmp r4, #0 - beq _021E73E0 - ldrb r0, [r4] - cmp r0, #0 - beq _021E73E0 - bl OS_GetTick - ldr r3, [r4, #0x10] - ldr r2, [r4, #0x14] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _021E7618 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2 - movhs r0, #1 - strhs r0, [sp, #0x14] - bhs _021E73E8 -_021E73E0: - mov r0, #0 - str r0, [sp, #0x14] -_021E73E8: - add r0, sp, #0x14 - str r0, [sp] - mov r4, #1 - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x12 - str r4, [sp, #4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7424: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x13 - bne _021E7608 - mov r0, r8 - mov r1, #0 - bl MOD04_021E3F28 - cmp r0, #0xff - beq _021E7608 - ldr r1, _021E7614 ; =UNK04_022106D4 - mov r4, #1 - ldr r3, [r1] - mov r5, r4,lsl r0 - ldr r2, [r3, #8] - orr r0, r2, r4, lsl r0 - str r0, [r3, #8] - ldr r0, [r6] - cmp r0, #0 - ldrne r1, [r1] - ldrne r0, [r1, #0xc] - orrne r0, r0, r5 - strne r0, [r1, #0xc] - b _021E7608 -_021E7480: - mov r0, #0xc - mov r1, #0 - bl MOD04_021E8E08 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7498: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E7608 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _021E7608 - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E7608 -_021E74CC: - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E757C - ldr r0, [r6] - cmp r0, #0 - bne _021E7554 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - beq _021E750C - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - bne _021E7524 -_021E750C: - bl MOD04_021E4E00 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E7524: - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _021E754C - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - bl MOD04_022006B4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E754C: - bl MOD04_021E4CB4 - b _021E7608 -_021E7554: - bl MOD04_021E26E4 - mov r4, r0 - mov r0, r8 - mov r1, #0 - bl MOD04_021E3F28 - ldr r2, [r4, #0x1dc] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [r4, #0x1dc] - b _021E7608 -_021E757C: - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E74CC - b _021E7608 -_021E7594: - mov r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E7608 -_021E75A8: - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _021E75F4 - mov r4, #0 - str r4, [sp] - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x41 - str r4, [sp, #4] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E7608 - add sp, sp, #0x118 - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021E75F4: - add r4, r4, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _021E75A8 -_021E7608: - mov r0, #1 - add sp, sp, #0x118 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_021E7614: .word UNK04_022106D4 -_021E7618: .word 0x000082EA - arm_func_end MOD04_021E6730 - - arm_func_start MOD04_021E761C -MOD04_021E761C: ; 0x021E761C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #4 - mov sb, r1 - mov r4, r0 - mov r8, r2 - mov r0, sb - mov r1, #0 - bl strchr - mov r7, r0 - cmp r8, #0 - mov r6, #0 - ble _021E767C - mov r5, #0x2f -_021E7650: - mov r0, sb - mov r1, r5 - bl strchr - cmp r0, #0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r6, r6, #1 - cmp r6, r8 - add sb, r0, #1 - blt _021E7650 -_021E767C: - mov r0, sb - mov r1, #0x2f - bl strchr - cmp r0, #0 - moveq r0, r7 - cmp sb, r0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - sub r5, r0, sb - mov r0, sb - mov r1, r4 - mov r2, r5 - bl MI_CpuCopy8 - mov r1, #0 - mov r0, r5 - strb r1, [r4, r5] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end MOD04_021E761C - - arm_func_start MOD04_021E76C8 -MOD04_021E76C8: ; 0x021E76C8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x208 - mov r7, r0 - mov r5, r2 - mov r4, r3 - mov r0, #3 - mov r6, r1 - str r0, [sp] - ldr ip, _021E7760 ; =UNK04_0220D410 - ldr r2, _021E7764 ; =UNK04_0220D400 - ldr r3, _021E7768 ; =UNK04_0220D408 - add r0, sp, #8 - mov r1, #0x200 - str ip, [sp, #4] - bl OS_SNPrintf - add r1, sp, #8 - add r2, sp, #9 - strb r6, [r1, r0] - mov r1, #0 - strb r1, [r2, r0] - cmp r4, #0 - add r8, r2, r0 - beq _021E7748 - mov r0, r4 - bl strlen - mov r6, r0 - mov r0, r4 - mov r1, r8 - mov r2, r6 - bl MI_CpuCopy8 - mov r0, #0 - strb r0, [r8, r6] -_021E7748: - add r2, sp, #8 - mov r0, r7 - mov r1, r5 - bl MOD04_021F02B8 - add sp, sp, #0x208 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021E7760: .word UNK04_0220D410 -_021E7764: .word UNK04_0220D400 -_021E7768: .word UNK04_0220D408 - arm_func_end MOD04_021E76C8 - - arm_func_start MOD04_021E776C -MOD04_021E776C: ; 0x021E776C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x9c - mov r5, r0 - mov r8, r1 - mov r7, r2 - cmp r3, #0 - ldr r4, [sp, #0xb8] - beq _021E77A8 - cmp r4, #0 - beq _021E77A8 - add r1, sp, #0x18 - mov r0, r3 - mov r2, r4, lsl #2 - bl MIi_CpuCopy32 - b _021E77AC -_021E77A8: - mov r4, #0 -_021E77AC: - ldr r6, _021E7880 ; =UNK04_0220D398 - add sb, sp, #4 - ldrb r3, [r6] - ldrb r2, [r6, #1] - mov r0, r4, lsl #2 - mov r1, #3 - strb r3, [sb] - strb r2, [sb, #1] - ldrb r3, [r6, #2] - ldrb r2, [r6, #3] - strb r3, [sb, #2] - strb r2, [sb, #3] - ldrb r2, [r6, #4] - strb r2, [sb, #4] - str r1, [sp, #8] - strb r5, [sp, #0xc] - strb r0, [sp, #0xd] - bl MOD04_021E26E4 - ldrh r0, [r0, #0x1a] - strh r0, [sp, #0xe] - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c] - str r0, [sp, #0x10] - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - mov r6, #0 - str r0, [sp, #0x14] - mov r4, r6 -_021E781C: - bl MOD04_021E26E4 - mov r5, r0 - mov r0, r8 - mov r1, r4 - mov r2, r4 - bl MOD04_021FFEB0 - mov r1, r0 - ldrb r0, [sp, #0xd] - mov r2, r7 - mov r3, sb - add r0, r0, #0x14 - str r0, [sp] - ldr r0, [r5, #0xe4] - bl MOD04_02203CC4 - cmp r0, #0 - addeq sp, sp, #0x9c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r0, #2 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r6, r6, #1 - cmp r6, #5 - blt _021E781C - add sp, sp, #0x9c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021E7880: .word UNK04_0220D398 - arm_func_end MOD04_021E776C - - arm_func_start MOD04_021E7884 -MOD04_021E7884: ; 0x021E7884 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x224 - mov fp, r0 - str r1, [sp, #4] - str r2, [sp, #8] - str r3, [sp, #0xc] - ldr sl, [sp, #0x248] - ldr sb, [sp, #0x24c] - mov r8, #0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E78E0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _021E78D8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _021E7900 -_021E78D8: - cmp fp, #6 - bne _021E7900 -_021E78E0: - ldr r1, [sp, #8] - ldr r2, [sp, #0xc] - mov r0, fp - mov r3, sl - str sb, [sp] - bl MOD04_021E776C - mov r4, r0 - b _021E79A0 -_021E7900: - cmp sl, #0 - beq _021E7978 - cmp sb, #0 - beq _021E7978 - ldr r3, [sl] - ldr r2, _021E7A3C ; =UNK04_0220D394 - add r0, sp, #0x20 - mov r1, #0x200 - bl OS_SNPrintf - mov r8, r0 - cmp sb, #1 - mov r7, #1 - ble _021E7978 - add r6, sp, #0x10 - mov r5, #0x10 -_021E793C: - ldr r3, [sl, r7, lsl #2] - ldr r2, _021E7A40 ; =UNK04_0220D414 - mov r0, r6 - mov r1, r5 - bl OS_SNPrintf - mov r4, r0 - add r1, sp, #0x20 - mov r0, r6 - add r1, r1, r8 - mov r2, r4 - bl MI_CpuCopy8 - add r7, r7, #1 - add r8, r8, r4 - cmp r7, sb - blt _021E793C -_021E7978: - add r0, sp, #0x20 - mov r1, #0 - strb r1, [r0, r8] - bl MOD04_021E26E4 - ldr r0, [r0] - ldr r2, [sp, #4] - add r3, sp, #0x20 - mov r1, fp - bl MOD04_021E76C8 - mov r4, r0 -_021E79A0: - cmp fp, #2 - beq _021E79C0 - cmp fp, #6 - beq _021E79C0 - add r0, fp, #0xf8 - and r0, r0, #0xff - cmp r0, #1 - bhi _021E7A30 -_021E79C0: - bl MOD04_021E26E4 - strb fp, [r0, #0x3cc] - bl MOD04_021E26E4 - add r1, r0, #0x300 - ldr r0, [sp, #0xc] - strh r0, [r1, #0xce] - bl MOD04_021E26E4 - ldr r1, [sp, #8] - str r1, [r0, #0x3d0] - bl MOD04_021E26E4 - ldr r1, [sp, #4] - str r1, [r0, #0x454] - bl MOD04_021E26E4 - str sb, [r0, #0x458] - bl MOD04_021E26E4 - mov r5, r0 - bl OS_GetTick - str r0, [r5, #0x45c] - str r1, [r5, #0x460] - cmp sl, #0 - beq _021E7A30 - cmp sb, #0 - beq _021E7A30 - bl MOD04_021E26E4 - add r1, r0, #0x3d4 - mov r0, sl - mov r2, sb, lsl #2 - bl MIi_CpuCopy32 -_021E7A30: - mov r0, r4 - add sp, sp, #0x224 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021E7A3C: .word UNK04_0220D394 -_021E7A40: .word UNK04_0220D414 - arm_func_end MOD04_021E7884 - - arm_func_start MOD04_021E7A44 -MOD04_021E7A44: ; 0x021E7A44 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - ldrb r0, [r7] - cmp r0, #0 - bne _021E7A9C - bl MOD04_021E26E4 - mov r4, r0 - mov r1, #0 - ldr r0, [r7, #4] - mov r2, r1 - bl MOD04_021FFEB0 - mov r1, r0 - ldrh r2, [r7, #2] - ldr r0, [r4, #0xe4] - ldr r3, [r7, #8] - bl MOD04_02203C7C - bl MOD04_021E38E8 - cmp r0, #0 - addne sp, sp, #0xc - movne r0, #2 - ldmneia sp!, {r4, r5, r6, r7, pc} -_021E7A9C: - ldr r5, _021E7AFC ; =MOD04_021E2784 - ldr r4, _021E7B00 ; =MOD04_021E2B60 - mov r6, #0 -_021E7AA8: - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD43C - str r5, [sp] - str r7, [sp, #4] - ldrb r2, [r7] - ldr r1, [r7, #8] - mov r3, r4 - bl MOD04_022006EC - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - add r6, r6, #1 - cmp r6, #5 - blt _021E7AA8 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E7AFC: .word MOD04_021E2784 -_021E7B00: .word MOD04_021E2B60 - arm_func_end MOD04_021E7A44 - - arm_func_start MOD04_021E7B04 -MOD04_021E7B04: ; 0x021E7B04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov r4, r0 - mov r8, r1 - mov r7, r2 - bl MOD04_021E26E4 - cmp r4, #0 - ldrb r6, [r0, #0x14] - mov r4, #0 - bne _021E7D48 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - add r1, r0, #0x100 - ldr r2, [r5, #0x200] - ldr r0, _021E7DEC ; =0x0000FFFF - ldrh r1, [r1, #0x7e] - and r2, r2, r0 - mov r0, r7 - orr r8, r2, r1, lsl #16 - bl MOD04_022038C4 - cmp r0, #0 - beq _021E7BC0 - mov r0, r7 - bl MOD04_02203908 - mov r5, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203BCC - cmp r5, r0 - movne r5, #1 - bne _021E7C48 - bl MOD04_021E26E4 - mov r5, r0 - mov r0, r7 - bl MOD04_022038BC - add r1, r5, r6, lsl #2 - str r0, [r1, #0x210] - bl MOD04_021E26E4 - mov r5, r0 - mov r0, r7 - bl MOD04_02203898 - add r1, r5, r6, lsl #1 - add r1, r1, #0x200 - strh r0, [r1, #0x90] - mov r5, r4 - b _021E7C48 -_021E7BC0: - bl SOC_GetHostID - mov r0, r0, lsl #0x10 - ldr r1, _021E7DEC ; =0x0000FFFF - ldr r2, _021E7DF0 ; =0x0000A8C0 - and r1, r1, r0, lsr #16 - cmp r1, r2 - mov r0, r0, lsr #0x10 - beq _021E7C08 - and r1, r0, #0xff - cmp r1, #0xac - bne _021E7C00 - and r0, r0, #0xff00 - cmp r0, #0x1000 - blo _021E7C00 - cmp r0, #0x1f00 - bls _021E7C08 -_021E7C00: - cmp r1, #0x10 - bne _021E7C10 -_021E7C08: - mov r5, #1 - b _021E7C48 -_021E7C10: - bl MOD04_021E26E4 - mov r5, r0 - mov r0, r7 - bl MOD04_02203908 - add r1, r5, r6, lsl #2 - str r0, [r1, #0x210] - bl MOD04_021E26E4 - mov r5, r0 - mov r0, r7 - bl MOD04_022038E4 - add r1, r5, r6, lsl #1 - add r1, r1, #0x200 - strh r0, [r1, #0x90] - mov r5, #0 -_021E7C48: - cmp r5, #0 - beq _021E7C74 - bl MOD04_021E26E4 - mov r6, r0 - mov r0, #0x10000 - bl MOD04_021DE8C8 - add r1, r6, #0x100 - strh r0, [r1, #0x7e] - bl MOD04_021E26E4 - str r8, [r0, #0x19c] - b _021E7D00 -_021E7C74: - bl SOC_GetHostID - str r0, [sp, #8] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD454 - str r0, [sp, #0xc] - bl MOD04_021E26E4 - mov sb, r0 - mov r0, r7 - bl MOD04_02203908 - mov r8, r0 - mov r0, r7 - bl MOD04_022038E4 - add r1, sb, r6, lsl #2 - add r6, sp, #8 - mov r3, r0 - mov r0, #2 - str r6, [sp] - str r0, [sp, #4] - ldr r1, [r1, #0xf4] - mov r2, r8 - mov r0, #6 - bl MOD04_021E7884 - mov r6, r0 - bl MOD04_021E26E4 - mov r1, #0 - cmp r6, #0 - strb r1, [r0, #0x3cd] - addne sp, sp, #0x14 - movne r0, #2 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E7D00: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x194] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x195] - bl MOD04_021E26E4 - mov r6, r0 - mov r0, r7 - bl MOD04_022038E4 - add r1, r6, #0x100 - strh r0, [r1, #0x96] - bl MOD04_021E26E4 - mov r6, r0 - mov r0, r7 - bl MOD04_02203908 - str r0, [r6, #0x198] - b _021E7D88 -_021E7D48: - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x194] - bl MOD04_021E26E4 - mov r1, r4 - strb r1, [r0, #0x195] - bl MOD04_021E26E4 - add r0, r0, #0x100 - mov r1, r4 - strh r1, [r0, #0x96] - bl MOD04_021E26E4 - mov r1, r4 - str r1, [r0, #0x198] - bl MOD04_021E26E4 - str r8, [r0, #0x19c] - mov r5, #1 -_021E7D88: - cmp r5, #0 - beq _021E7DA4 - bl MOD04_021E26E4 - add r0, r0, #0x194 - bl MOD04_021E7A44 - mov r4, r0 - b _021E7DE0 -_021E7DA4: - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD43C - mov r5, r0 - bl MOD04_021E26E4 - add r3, r0, #0x194 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl MOD04_021E2784 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] -_021E7DE0: - mov r0, r4 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021E7DEC: .word 0x0000FFFF -_021E7DF0: .word 0x0000A8C0 - arm_func_end MOD04_021E7B04 - - arm_func_start MOD04_021E7DF4 -MOD04_021E7DF4: ; 0x021E7DF4 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov lr, #3 - ldr ip, _021E7E48 ; =UNK04_0220D3AC - str lr, [sp] - str ip, [sp, #4] - str r1, [sp, #8] - str r2, [sp, #0xc] - str r2, [sp, #0x10] - ldr r2, _021E7E4C ; =UNK04_0220D3CC - ldr r1, _021E7E50 ; =UNK04_0220D3D8 - str r2, [sp, #0x14] - str r3, [sp, #0x18] - str r1, [sp, #0x1c] - ldr r2, _021E7E54 ; =UNK04_0220D418 - ldr r3, _021E7E58 ; =UNK04_0220D3E4 - mov r1, #0x100 - str ip, [sp, #0x20] - bl OS_SNPrintf - add sp, sp, #0x24 - ldmfd sp!, {pc} - .align 2, 0 -_021E7E48: .word UNK04_0220D3AC -_021E7E4C: .word UNK04_0220D3CC -_021E7E50: .word UNK04_0220D3D8 -_021E7E54: .word UNK04_0220D418 -_021E7E58: .word UNK04_0220D3E4 - arm_func_end MOD04_021E7DF4 - - arm_func_start MOD04_021E7E5C -MOD04_021E7E5C: ; 0x021E7E5C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x1b0 - mov r7, #8 - mov r6, #0xa - mov r5, #0x32 - mov r4, #0x33 - mov r3, #0x34 - mov r2, #0x35 - mov r1, #0x36 - strb r7, [sp, #0x10c] - strb r6, [sp, #0x10d] - strb r5, [sp, #0x10e] - strb r4, [sp, #0x10f] - strb r3, [sp, #0x110] - strb r2, [sp, #0x111] - strb r1, [sp, #0x112] - mov r5, r0 - mov r4, #7 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E7EC4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E7EF4 -_021E7EC4: - add r1, sp, #0x100 - ldr r2, _021E8020 ; =UNK04_02210704 - add r1, r1, #0x13 - mov r3, #0 -_021E7ED4: - ldrb r0, [r2] - add r3, r3, #1 - add r2, r2, #0xc - cmp r0, #0 - strneb r0, [r1], #1 - addne r4, r4, #1 - cmp r3, #0x9a - blt _021E7ED4 -_021E7EF4: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021E7FAC -_021E7F08: ; jump table - b _021E7FAC ; case 0 - b _021E7FAC ; case 1 - b _021E7F8C ; case 2 - b _021E7F20 ; case 3 - b _021E7F8C ; case 4 - b _021E7F8C ; case 5 -_021E7F20: - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - bne _021E7F84 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldr r1, [r6, #0x200] - ldrb r2, [r5, #0x16] - ldrb r3, [r0, #0x15] - add r0, sp, #0xc - bl MOD04_021E7DF4 - ldr r0, _021E8024 ; =UNK04_022106E0 - ldr r5, [r0] - cmp r5, #0 - beq _021E7FAC - add r0, sp, #0xc - ldr r2, _021E8028 ; =UNK04_0220D470 - mov r3, r0 - mov r1, #0x100 - str r5, [sp] - bl OS_SNPrintf - b _021E7FAC -_021E7F84: - bl MOD04_021E26E4 - ldr r5, [r0, #0x208] -_021E7F8C: - ldr r2, _021E802C ; =UNK04_0220D47C - ldr r3, _021E8030 ; =UNK04_0220D3AC - add r0, sp, #0xc - mov r1, #0x100 - str r5, [sp] - bl OS_SNPrintf - bl MOD04_021E26E4 - str r5, [r0, #0x204] -_021E7FAC: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203C04 - mov sl, #0 - add sb, sp, #0xc - add r5, sp, #0x10c - mov r6, sl - mov r8, #6 - mov r7, #1 -_021E7FD0: - bl MOD04_021E26E4 - str r4, [sp] - str sb, [sp, #4] - str r8, [sp, #8] - ldr r0, [r0, #0xe4] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl MOD04_02203D1C - cmp r0, #0 - addeq sp, sp, #0x1b0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r0, #2 - addne sp, sp, #0x1b0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add sl, sl, #1 - cmp sl, #5 - blt _021E7FD0 - add sp, sp, #0x1b0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_021E8020: .word UNK04_02210704 -_021E8024: .word UNK04_022106E0 -_021E8028: .word UNK04_0220D470 -_021E802C: .word UNK04_0220D47C -_021E8030: .word UNK04_0220D3AC - arm_func_end MOD04_021E7E5C - - arm_func_start MOD04_021E8034 -MOD04_021E8034: ; 0x021E8034 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _021E8074 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203E80 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe4] -_021E8074: - bl MOD04_02200D6C - mov r0, #0 - bl MOD04_021E26D0 - ldr r0, _021E80C0 ; =UNK04_022106E0 - ldr r1, [r0] - cmp r1, #0 - beq _021E80A8 - mov r0, #4 - mov r2, #0 - bl MOD04_021DD904 - ldr r0, _021E80C0 ; =UNK04_022106E0 - mov r1, #0 - str r1, [r0] -_021E80A8: - bl MOD04_021E4164 - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x18] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E80C0: .word UNK04_022106E0 - arm_func_end MOD04_021E8034 - - arm_func_start MOD04_021E80C4 -MOD04_021E80C4: ; 0x021E80C4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r7, r0 - mov r0, #0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021E8174 - bl MOD04_021E26E4 - strb r7, [r0, #0x15] - bl MOD04_021E26E4 - strb r6, [r0, #0x16] - bl MOD04_021E26E4 - str r5, [r0, #0x464] - bl MOD04_021E26E4 - str r4, [r0, #0x468] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17d] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x2d0] - mov r0, #0x32 - ldr r1, _021E8160 ; =UNK04_0220D3AC - bl MOD04_0220277C - mov r0, #0x33 - ldr r1, _021E8164 ; =UNK04_0220D3CC - bl MOD04_0220277C - mov r0, #0x34 - ldr r1, _021E8168 ; =UNK04_0220D3D8 - bl MOD04_0220277C - mov r0, #0x35 - ldr r1, _021E816C ; =UNK04_0220D3E4 - bl MOD04_0220277C - mov r0, #0x36 - ldr r1, _021E8170 ; =UNK04_0220D3A0 - bl MOD04_0220277C - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E8160: .word UNK04_0220D3AC -_021E8164: .word UNK04_0220D3CC -_021E8168: .word UNK04_0220D3D8 -_021E816C: .word UNK04_0220D3E4 -_021E8170: .word UNK04_0220D3A0 - arm_func_end MOD04_021E80C4 - - arm_func_start MOD04_021E8174 -MOD04_021E8174: ; 0x021E8174 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r4, r0 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xc] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17c] - bl MOD04_021E26E4 - mov r5, r0 - mov r0, #0x10000 - bl MOD04_021DE8C8 - add r1, r5, #0x100 - strh r0, [r1, #0x7e] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x180] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a4] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a9] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1aa] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ab] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ac] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a7] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a8] - bl MOD04_021E26E4 - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb2] - bl MOD04_021E26E4 - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb4] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1b8] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1e0] - str r1, [r0, #0x1e4] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1f0] - str r1, [r0, #0x1f4] - bl MOD04_021E26E4 - add r1, r0, #0x3cc - mov r0, #0 - mov r2, #0x98 - bl MIi_CpuClear32 - cmp r4, #2 - bne _021E82F0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x14] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E82CC - mov r0, #1 - bl MOD04_021E26D0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} -_021E82CC: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, pc} - mov r0, #0xa - bl MOD04_021E26D0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} -_021E82F0: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xd] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xe] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x14] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe8] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a5] - bl MOD04_021E26E4 - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb0] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1bc] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c0] - str r1, [r0, #0x1c4] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1cc] - str r1, [r0, #0x1d0] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1d4] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x204] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x208] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x2f0] - bl MOD04_021E26E4 - add r1, r0, #0x24 - mov r0, #0 - mov r2, #0x80 - bl MIi_CpuClear32 - bl MOD04_021E26E4 - add r1, r0, #0xa4 - mov r0, #0 - mov r2, #0x40 - bl MIi_CpuClear16 - bl MOD04_021E26E4 - add r1, r0, #0xf4 - mov r0, #0 - mov r2, #0x80 - bl MIi_CpuClear32 - bl MOD04_021E26E4 - add r1, r0, #0x194 - mov r0, #0 - mov r2, #0xc - bl MIi_CpuClear32 - bl MOD04_021E26E4 - add r1, r0, #0x210 - mov r0, #0 - mov r2, #0x80 - bl MIi_CpuClear32 - bl MOD04_021E26E4 - add r1, r0, #0x290 - mov r0, #0 - mov r2, #0x40 - bl MIi_CpuClear16 - bl MOD04_021E26E4 - add r0, r0, #0x2d0 - mov r1, #0 - mov r2, #0x20 - bl MI_CpuFill8 - bl MOD04_021E26E4 - add r1, r0, #0x348 - mov r0, #0 - mov r2, #0x84 - bl MIi_CpuClear32 - cmp r4, #1 - bne _021E84A8 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E8484 - mov r0, #3 - bl MOD04_021E26D0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} -_021E8484: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, pc} - mov r0, #4 - bl MOD04_021E26D0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} -_021E84A8: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x15] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x16] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x18] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20c] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1a6] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ae] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ad] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1f8] - str r1, [r0, #0x1fc] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x46c] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x470] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021E8174 - - arm_func_start MOD04_021E852C -MOD04_021E852C: ; 0x021E852C - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E852C - - arm_func_start MOD04_021E854C -MOD04_021E854C: ; 0x021E854C - stmdb sp!, {lr} - sub sp, sp, #4 - mov r0, #0 - bl MOD04_021E26F4 - ldr r0, _021E85C8 ; =UNK04_022106E0 - ldr r1, [r0] - cmp r1, #0 - beq _021E8584 - mov r0, #4 - mov r2, #0 - bl MOD04_021DD904 - ldr r0, _021E85C8 ; =UNK04_022106E0 - mov r1, #0 - str r1, [r0] -_021E8584: - bl MOD04_021E4164 - ldr r0, _021E85CC ; =UNK04_022106D4 - ldr r1, [r0] - cmp r1, #0 - beq _021E85B0 - mov r0, #4 - mov r2, #0 - bl MOD04_021DD904 - ldr r0, _021E85CC ; =UNK04_022106D4 - mov r1, #0 - str r1, [r0] -_021E85B0: - ldr r0, _021E85D0 ; =UNK04_022106DC - mov r1, #0 - strb r1, [r0] - strb r1, [r0, #1] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E85C8: .word UNK04_022106E0 -_021E85CC: .word UNK04_022106D4 -_021E85D0: .word UNK04_022106DC - arm_func_end MOD04_021E854C - - arm_func_start MOD04_021E85D4 -MOD04_021E85D4: ; 0x021E85D4 - stmdb sp!, {lr} - sub sp, sp, #0x2c - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addne sp, sp, #0x2c - movne r0, #0 - ldmneia sp!, {pc} - bl MOD04_021E26E4 - ldrb r1, [r0, #0x16] - ldr r2, _021E8694 ; =UNK04_0220D394 - add r0, sp, #0 - add r3, r1, #1 - mov r1, #0xc - bl OS_SNPrintf - ldr r0, _021E8698 ; =UNK04_0220D484 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl MOD04_021DEB54 - bl MOD04_021E26E4 - ldrb r2, [r0, #0xd] - add r0, sp, #0 - mov r1, #0xc - add r3, r2, #1 - ldr r2, _021E8694 ; =UNK04_0220D394 - bl OS_SNPrintf - ldr r0, _021E869C ; =UNK04_0220D488 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl MOD04_021DEB0C - ldr r2, _021E8694 ; =UNK04_0220D394 - add r0, sp, #0 - mov r1, #0xc - mov r3, #3 - bl OS_SNPrintf - ldr r0, _021E86A0 ; =UNK04_0220D3F4 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl MOD04_021DEB0C - mov r0, #6 - add r1, sp, #0xc - mov r2, #0 - bl MOD04_021E1E30 - add sp, sp, #0x2c - ldmfd sp!, {pc} - .align 2, 0 -_021E8694: .word UNK04_0220D394 -_021E8698: .word UNK04_0220D484 -_021E869C: .word UNK04_0220D488 -_021E86A0: .word UNK04_0220D3F4 - arm_func_end MOD04_021E85D4 - - arm_func_start MOD04_021E86A4 -MOD04_021E86A4: ; 0x021E86A4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - bl MOD04_021E26E4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _021E8748 ; =UNK04_022106E4 - mov r1, #0 - mov r2, #0x20 - bl MI_CpuFill8 - mov r6, #0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xe] - cmp r0, #0 - blt _021E8730 - ldr r5, _021E8748 ; =UNK04_022106E4 - mov r4, #1 -_021E86E8: - bl MOD04_021E26E4 - mov r8, r0 - bl MOD04_021E26E4 - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - ldr r1, [r8, #0x2f0] - mov r0, r4,lsl r0 - ands r0, r1, r0 - beq _021E8730 - bl MOD04_021E26E4 - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - add r6, r6, #1 - strb r0, [r5], #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xe] - cmp r6, r0 - ble _021E86E8 -_021E8730: - ldr r0, _021E8748 ; =UNK04_022106E4 - str r0, [r7] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xe] - add r0, r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021E8748: .word UNK04_022106E4 - arm_func_end MOD04_021E86A4 - - arm_func_start MOD04_021E874C -MOD04_021E874C: ; 0x021E874C - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021E26E4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021E26E4 - add r0, r0, #0x2d0 - str r0, [r4] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E874C - - arm_func_start MOD04_021E8780 -MOD04_021E8780: ; 0x021E8780 - stmdb sp!, {r4, r5, r6, lr} - mvn r6, #0 - mov r5, #0 - mov r4, #1 -_021E8790: - bl MOD04_021E26E4 - mov r1, r4,lsl r5 - ldr r0, [r0, #0x2f0] - add r5, r5, #1 - ands r0, r1, r0 - addne r6, r6, #1 - cmp r5, #0x20 - blt _021E8790 - mvn r0, #0 - cmp r6, r0 - bne _021E87CC - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xe] - ldmia sp!, {r4, r5, r6, pc} -_021E87CC: - bl MOD04_021E26E4 - strb r6, [r0, #0xe] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E8780 - - arm_func_start MOD04_021E87D8 -MOD04_021E87D8: ; 0x021E87D8 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0xe] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E87D8 - - arm_func_start MOD04_021E8804 -MOD04_021E8804: ; 0x021E8804 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E8804 - - arm_func_start MOD04_021E8830 -MOD04_021E8830: ; 0x021E8830 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - mov sb, r0 - mov r8, r1 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_021E26E4 - add r0, r0, sb, lsl #2 - ldr fp, [r0, #0xf4] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - add r0, r0, sb - ldrb r0, [r0, #0x2d0] - mov r1, #1 - ldr r2, [r4, #0x2f0] - mvn r0, r1, lsl r0 - and r0, r2, r0 - str r0, [r4, #0x2f0] - bl MOD04_021E8780 - sub r0, r8, #1 - cmp sb, r0 - bge _021E8970 - sub r0, r8, sb - sub r6, r0, #1 - cmp r6, #0 - mov r7, #0 - ble _021E8970 -_021E88AC: - add r4, sb, r7 - add r5, r4, #1 - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r0, r0, r5, lsl #2 - ldr r1, [r0, #0x24] - add r0, sl, r4, lsl #2 - str r1, [r0, #0x24] - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r0, r0, r5, lsl #1 - ldrh r1, [r0, #0xa4] - add r0, sl, r4, lsl #1 - strh r1, [r0, #0xa4] - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r1, sl, r4, lsl #2 - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r1, #0xf4] - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r1, sl, r4, lsl #2 - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x210] - str r0, [r1, #0x210] - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r1, sl, r4, lsl #1 - add r1, r1, #0x200 - add r0, r0, r5, lsl #1 - add r0, r0, #0x200 - ldrh r0, [r0, #0x90] - strh r0, [r1, #0x90] - bl MOD04_021E26E4 - mov sl, r0 - bl MOD04_021E26E4 - add r1, r0, r5 - add r0, sl, r4 - ldrb r1, [r1, #0x2d0] - add r7, r7, #1 - cmp r7, r6 - strb r1, [r0, #0x2d0] - blt _021E88AC -_021E8970: - cmp r8, #0 - ble _021E89E0 - sub r4, r8, #1 - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0x24] - bl MOD04_021E26E4 - add r0, r0, r4, lsl #1 - mov r1, #0 - strh r1, [r0, #0xa4] - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0xf4] - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0x210] - bl MOD04_021E26E4 - add r0, r0, r4, lsl #1 - add r0, r0, #0x200 - mov r1, #0 - strh r1, [r0, #0x90] - bl MOD04_021E26E4 - add r0, r0, r4 - mov r1, #0 - strb r1, [r0, #0x2d0] -_021E89E0: - mov r0, fp - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MOD04_021E8830 - - arm_func_start MOD04_021E89EC -MOD04_021E89EC: ; 0x021E89EC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl MOD04_021E26E4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - mov r4, #0 - ble _021E8A48 -_021E8A14: - bl MOD04_021E26E4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r6, r0 - bne _021E8A3C - mov r0, r4 - mov r1, r5 - bl MOD04_021E8830 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021E8A3C: - add r4, r4, #1 - cmp r4, r5 - blt _021E8A14 -_021E8A48: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E89EC - - arm_func_start MOD04_021E8A50 -MOD04_021E8A50: ; 0x021E8A50 - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a8] - cmp r0, #2 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl MOD04_021E59D4 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E8A50 - - arm_func_start MOD04_021E8A74 -MOD04_021E8A74: ; 0x021E8A74 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - bl MOD04_021DF88C - cmp r0, #5 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r4, r5, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, pc} - cmp r5, #0 - beq _021E8AD4 - ldr r1, _021E8C00 ; =0xFFFEC780 - mov r0, r5 - add r1, r4, r1 - bl MOD04_021E8E08 - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r4, r5, pc} -_021E8AD4: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x2d0] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a9] - cmp r0, #1 - beq _021E8B10 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a8] - cmp r0, #1 - beq _021E8B10 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a8] - cmp r0, #2 - bne _021E8B1C -_021E8B10: - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r4, r5, pc} -_021E8B1C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _021E8B44 - bl MOD04_021E26E4 - ldr r0, [r0, #0x19c] - bl MOD04_022006B4 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x19c] -_021E8B44: - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _021E8B84 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a8] - cmp r0, #0 - bne _021E8BF4 - bl MOD04_021E26E4 - mov r1, #3 - strb r1, [r0, #0x1a8] - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD45C - b _021E8BF4 -_021E8B84: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E8BA4 - ldr r1, _021E8C04 ; =0xFFFEC5D2 - mov r0, #6 - bl MOD04_021E8E08 - b _021E8BF4 -_021E8BA4: - bl MOD04_021E26E4 - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _021E8BBC - bl MOD04_021E4BF4 - b _021E8BF4 -_021E8BBC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E8BEC - mov r0, #0x12 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1f0] - str r1, [r4, #0x1f4] - b _021E8BF4 -_021E8BEC: - mov r0, #1 - bl MOD04_021E4CF8 -_021E8BF4: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E8C00: .word 0xFFFEC780 -_021E8C04: .word 0xFFFEC5D2 - arm_func_end MOD04_021E8A74 - - arm_func_start MOD04_021E8C08 -MOD04_021E8C08: ; 0x021E8C08 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r2 - cmp r1, #2 - beq _021E8C30 - cmp r1, #3 - beq _021E8CDC - cmp r1, #4 - beq _021E8DA4 - ldmia sp!, {r4, r5, r6, pc} -_021E8C30: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _021E8CCC - ldrb r0, [r4] - cmp r0, #1 - bne _021E8C58 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x20c] -_021E8C58: - ldrb r6, [r4, #1] - bl MOD04_021E26E4 - ldrb r1, [r4, #2] - add r0, r0, r6 - strb r1, [r0, #0x2d0] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r1, [r0, #0x200] - add r0, r4, r6, lsl #2 - str r1, [r0, #0xf4] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E8CA4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _021E8CB8 -_021E8CA4: - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] -_021E8CB8: - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ad] - mov r0, #9 - bl MOD04_021E26D0 -_021E8CCC: - mov r0, r5 - mov r1, #3 - bl MOD04_021E4910 - ldmia sp!, {r4, r5, r6, pc} -_021E8CDC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - bne _021E8D94 - bl MOD04_021E26E4 - ldr r2, [r0, #0x1d4] - mov r1, #1 - orr r1, r2, r1, lsl r5 - str r1, [r0, #0x1d4] - ldrb r1, [r4] - ldrb r0, [r4, #1] - orr r4, r1, r0, lsl #8 - bl MOD04_021E26E4 - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - cmp r4, r0 - ble _021E8D2C - bl MOD04_021E26E4 - add r0, r0, #0x100 - strh r4, [r0, #0xb0] -_021E8D2C: - mov r0, #0 - bl MOD04_021E3EC4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1d4] - cmp r4, r0 - ldmneia sp!, {r4, r5, r6, pc} - mov r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _021E8D88 - mov r4, #4 -_021E8D60: - bl MOD04_021E26E4 - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - mov r1, r4 - bl MOD04_021E4910 - add r5, r5, #1 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _021E8D60 -_021E8D88: - mov r0, #0x11 - bl MOD04_021E26D0 - ldmia sp!, {r4, r5, r6, pc} -_021E8D94: - mov r0, r5 - mov r1, #4 - bl MOD04_021E4910 - ldmia sp!, {r4, r5, r6, pc} -_021E8DA4: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #9 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #4 - bl MOD04_021E51C0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021E8C08 - - arm_func_start MOD04_021E8DC0 -MOD04_021E8DC0: ; 0x021E8DC0 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x14] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x16] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E8DC0 - - arm_func_start MOD04_021E8E08 -MOD04_021E8E08: ; 0x021E8E08 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl MOD04_021E4B40 - mov r0, r4 - mov r1, r5 - bl MOD04_021DD6B0 - ldr r1, _021E8EC8 ; =UNK04_0220D3F0 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r7, #1 - movne r7, #0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r8, #1 - movne r8, #0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x20c] - bl MOD04_021E1F18 - mov r5, r0 - bl MOD04_021E26E4 - str r5, [sp] - ldr r1, [r0, #0x468] - mov r0, r4 - str r1, [sp, #4] - ldr r4, [r6, #0x464] - mov r2, r8 - mov r3, r7 - mov r1, #0 - blx r4 - bl MOD04_021E8034 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021E8EC8: .word UNK04_0220D3F0 - arm_func_end MOD04_021E8E08 - - arm_func_start MOD04_021E8ECC -MOD04_021E8ECC: ; 0x021E8ECC - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021E26E4 - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x3cd] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021E8ECC - - arm_func_start MOD04_021E8EF4 -MOD04_021E8EF4: ; 0x021E8EF4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x21c - mov fp, r2 - mov sl, #0 - str r1, [sp, #8] - add sb, sp, #0xc - add r5, sp, #0x1c - mov r7, sl - add r8, fp, #1 - mov r6, #0xa - mvn r4, #0 -_021E8F20: - mov r0, sb - mov r1, r8 - mov r2, sl - bl MOD04_021E761C - cmp r0, r4 - beq _021E8F58 - mov r0, sb - mov r1, r7 - mov r2, r6 - bl strtoul - str r0, [r5, sl, lsl #2] - add sl, sl, #1 - cmp sl, #0x80 - blt _021E8F20 -_021E8F58: - add r0, sp, #0x1c - str r0, [sp] - str sl, [sp, #4] - ldrb r0, [fp] - mov r2, #0 - ldr r1, [sp, #8] - mov r3, r2 - bl MOD04_021E6730 - add sp, sp, #0x21c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MOD04_021E8EF4 - - arm_func_start MOD04_021E8F80 -MOD04_021E8F80: ; 0x021E8F80 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r6, r0 - mov r4, r1 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #7 - beq _021E8FC4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, pc} -_021E8FC4: - cmp r4, #0 - beq _021E9140 - cmp r4, #5 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r4, #6 - bne _021E9114 - bl MOD04_021E26E4 - ldrb r1, [r0, #0xc] - add r1, r1, #1 - strb r1, [r0, #0xc] - bl MOD04_021E26E4 - ldrb r0, [r0, #0xc] - cmp r0, #5 - bls _021E9030 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xc] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9030: - bl MOD04_021E26E4 - ldr r3, [r0, #0x200] - ldr r2, _021E91F8 ; =UNK04_0220D394 - add r0, sp, #0x10 - mov r1, #0xc - bl OS_SNPrintf - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r2, [r6, #0x14] - ldrb r1, [r0, #0x14] - add r0, r7, r2, lsl #2 - add r1, r5, r1, lsl #1 - add r1, r1, #0x200 - ldrh r1, [r1, #0x90] - ldr r0, [r0, #0x210] - mov r2, #0 - bl MOD04_021FFEB0 - mov r5, r0 - bl MOD04_021E26E4 - mvn r1, #0 - str r1, [sp] - ldr r3, _021E91FC ; =0x00001388 - mov r1, #0 - str r3, [sp, #4] - ldr r0, [r0, #8] - mov r2, r5 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #4] - add r3, sp, #0x10 - ldr r0, [r0] - bl MOD04_021FD52C - cmp r0, #1 - bne _021E90E0 - bl MOD04_021E36B0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_021E90E0: - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x14] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9114: - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9140: - bl MOD04_021DF704 - mov r5, r0 - mvn r1, #0 - cmp r5, r1 - bne _021E9168 - ldr r1, _021E9200 ; =0xFFFEABC4 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9168: - bl MOD04_021DF6BC - mov r4, r0 - mov r0, r5 - bl MOD04_021DF638 - str r6, [r4] - mov r4, r0 - bl MOD04_021E26E4 - ldrb r2, [r0, #0xd] - mov r1, #0 - add r2, r2, #1 - strb r2, [r0, #0xd] - strb r5, [r4] - strh r1, [r4, #2] - str r1, [r4, #4] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r2, [r0, #0xd] - mov r0, r6 - mov r1, r4 - add r2, r5, r2 - ldrb r2, [r2, #0x2d0] - strb r2, [r4, #1] - bl MOD04_021FD3F8 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - bne _021E91E8 - mov r0, #0 - bl MOD04_021E51C0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_021E91E8: - mov r0, #1 - bl MOD04_021E51C0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E91F8: .word UNK04_0220D394 -_021E91FC: .word 0x00001388 -_021E9200: .word 0xFFFEABC4 - arm_func_end MOD04_021E8F80 - - arm_func_start MOD04_021E9204 -MOD04_021E9204: ; 0x021E9204 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #4 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl MOD04_021E26E4 - cmp r0, #0 - beq _021E9244 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #7 - bne _021E9244 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a9] - cmp r0, #0 - beq _021E925C -_021E9244: - ldr r1, _021E944C ; =UNK04_0220D48C - mov r0, r8 - mvn r2, #0 - bl MOD04_021FD6B0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021E925C: - bl MOD04_021DF704 - mov r5, r0 - mvn r2, #0 - cmp r5, r2 - bne _021E9290 - ldr r1, _021E9450 ; =UNK04_0220D498 - mov r0, r8 - bl MOD04_021FD6B0 - ldr r1, _021E9454 ; =0xFFFEABC4 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021E9290: - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0x210] - cmp r7, r0 - bne _021E92D4 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #1 - add r0, r0, #0x200 - ldrh r0, [r0, #0x90] - cmp r6, r0 - beq _021E9364 -_021E92D4: - ldr r0, [sp, #0x24] - ldrb r1, [r0] - cmp r1, #0 - beq _021E934C - mov r1, #0 - mov r2, #0xa - bl strtoul - mov r4, r0 - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r4, r0 - bne _021E934C - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - str r7, [r0, #0x210] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #1 - add r0, r0, #0x200 - strh r6, [r0, #0x90] - b _021E9364 -_021E934C: - ldr r1, _021E9458 ; =UNK04_0220D4A4 - mov r0, r8 - mvn r2, #0 - bl MOD04_021FD6B0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021E9364: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl MOD04_021E26E4 - ldr r1, [r0, #8] - mov r0, r8 - bl MOD04_021FD6BC - cmp r0, #0 - bne _021E93A0 - ldr r1, _021E945C ; =0xFFFEC5E6 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021E93A0: - bl MOD04_021E8ECC - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - cmp r0, #0 - bne _021E93D4 - ldr r1, [sp, #0x20] - ldr r0, _021E9460 ; =0x0000FFFF - mov r4, r1, asr #1 - cmp r4, r0 - movge r4, r0 - bl MOD04_021E26E4 - add r0, r0, #0x100 - strh r4, [r0, #0xb0] -_021E93D4: - mov r0, r5 - bl MOD04_021DF6BC - mov r4, r0 - mov r0, r5 - bl MOD04_021DF638 - str r8, [r4] - mov r4, r0 - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - add r1, r1, #1 - strb r1, [r0, #0xd] - strb r5, [r4] - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - mov r0, r8 - mov r2, #0 - sub r1, r1, #1 - add r1, r5, r1 - ldrb r3, [r1, #0x2d0] - mov r1, r4 - strb r3, [r4, #1] - strh r2, [r4, #2] - str r2, [r4, #4] - bl MOD04_021FD3F8 - mov r0, #2 - bl MOD04_021E51C0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021E944C: .word UNK04_0220D48C -_021E9450: .word UNK04_0220D498 -_021E9454: .word 0xFFFEABC4 -_021E9458: .word UNK04_0220D4A4 -_021E945C: .word 0xFFFEC5E6 -_021E9460: .word 0x0000FFFF - arm_func_end MOD04_021E9204 - - arm_func_start MOD04_021E9464 -MOD04_021E9464: ; 0x021E9464 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r0, [sp, #0x18] - mov r5, r1 - mov r6, r2 - mov r4, r3 - cmp r0, #0 - beq _021E948C - cmp r4, #0 - bne _021E9498 -_021E948C: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E9498: - add r1, sp, #0 - mov r0, #0 - mov r2, #8 - bl MIi_CpuClear32 - mov r1, r6, asr #8 - mov r0, r6, lsl #8 - mov r2, #2 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strb r2, [sp, #1] - strh r0, [sp, #2] - str r5, [sp, #4] - ldrb r5, [r4] - cmp r5, #0xfe - bne _021E94E4 - ldrb r0, [r4, #1] - cmp r0, #0xfd - beq _021E94EC -_021E94E4: - cmp r5, #0x5c - bne _021E9518 -_021E94EC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _021E9558 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - ldr r2, [sp, #0x18] - add r3, sp, #0 - mov r1, r4 - bl MOD04_022011A8 - b _021E9558 -_021E9518: - ldr r1, _021E9564 ; =UNK04_0220F018 - mov r0, r4 - mov r2, #6 - bl memcmp - cmp r0, #0 - bne _021E9544 - ldr r1, [sp, #0x18] - add r2, sp, #0 - mov r0, r4 - bl MOD04_021FFF78 - b _021E9558 -_021E9544: - cmp r5, #0xfe - moveq r0, #0 - add sp, sp, #8 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021E9558: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E9564: .word UNK04_0220F018 - arm_func_end MOD04_021E9464 - - arm_func_start MOD04_021E9568 -MOD04_021E9568: ; 0x021E9568 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r4, r0 - bl MOD04_021E26E4 - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - cmp r4, #0 - bne _021E95E4 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _021E95B8 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202534 -_021E95B8: - bl MOD04_021E26E4 - ldr r0, [r0, #4] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD6D4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E95E4: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _021E9D04 -_021E960C: ; jump table - b _021E9D04 ; case 0 - b _021E9C0C ; case 1 - b _021E97B8 ; case 2 - b _021E97B8 ; case 3 - b _021E9644 ; case 4 - b _021E97B8 ; case 5 - b _021E9D04 ; case 6 - b _021E9870 ; case 7 - b _021E9D04 ; case 8 - b _021E9D04 ; case 9 - b _021E9D04 ; case 10 - b _021E99F8 ; case 11 - b _021E9D04 ; case 12 - b _021E9AEC ; case 13 -_021E9644: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1c8] - cmp r0, #0 - beq _021E9730 - bl OS_GetTick - mov r6, r0 - mov r7, r1 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - ldr r1, [r5, #0x1cc] - ldr r0, [r5, #0x1d0] - subs r2, r6, r1 - sbc r0, r7, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - ldr r1, [r4, #0x1c8] - cmpeq r0, r1 - bls _021E9730 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c8] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _021E971C - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1aa] - add r1, r1, #1 - strb r1, [r0, #0x1aa] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1aa] - cmp r0, #5 - bls _021E96F8 - ldr r1, _021E9EFC ; =0xFFFEC5D2 - mov r0, #6 - bl MOD04_021E8E08 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E96F8: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - mov r1, #0 - bl MOD04_021E6038 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E9730 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E971C: - mov r0, #0 - bl MOD04_021E5C44 - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} -_021E9730: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1bc] - cmp r0, #0 - beq _021E9D04 - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - ldr r0, _021E9F00 ; =0x00000BB8 - mla r5, r1, r0, r0 - bl OS_GetTick - mov r4, r0 - mov r6, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1c0] - ldr r0, [r0, #0x1c4] - subs r2, r4, r1 - sbc r0, r6, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r5 - blo _021E9D04 - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - mov r1, #0 - bl MOD04_021E6038 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E97B8: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe8] - cmp r0, #0 - ble _021E9D04 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #3 - bne _021E97EC - bl MOD04_021E26E4 - ldrb r1, [r0, #0xd] - ldr r0, _021E9F00 ; =0x00000BB8 - mla r5, r1, r0, r0 - b _021E9800 -_021E97EC: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe8] - cmp r0, #1 - moveq r5, #0x3e8 - ldrne r5, _021E9F00 ; =0x00000BB8 -_021E9800: - bl OS_GetTick - mov r4, r0 - mov r6, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0xec] - ldr r0, [r0, #0xf0] - subs r3, r4, r1 - sbc r0, r6, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r5 - bls _021E9D04 - bl MOD04_021E26E4 - ldr r0, [r0, #0x204] - bl MOD04_021E7E5C - bl MOD04_021E38E8 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe8] - b _021E9D04 -_021E9870: - bl MOD04_021E26E4 - ldr r2, [r0, #0x18c] - ldr r1, [r0, #0x190] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r0 - beq _021E9900 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x18c] - ldr r0, [r0, #0x190] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F04 ; =0x000061A8 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9D04 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5908 - cmp r0, #0 - bne _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9900: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x3cc] - cmp r0, #6 - bne _021E9D04 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F08 ; =0x00001770 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9D04 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x3cd] - add r1, r1, #1 - strb r1, [r0, #0x3cd] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x3cd] - cmp r0, #5 - bls _021E9998 - bl MOD04_021E8ECC - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5908 - cmp r0, #0 - bne _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9998: - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - add r1, r4, #0x3d4 - str r1, [sp] - add r3, r5, #0x300 - ldr r1, [r0, #0x458] - mov r0, #6 - str r1, [sp, #4] - ldr r1, [r7, #0x454] - ldr r2, [r6, #0x3d0] - ldrh r3, [r3, #0xce] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E99F8: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x3cc] - cmp r0, #2 - bne _021E9D04 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _021E9A60 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F08 ; =0x00001770 - cmp r1, #0 - cmpeq r0, r2 - bhi _021E9AB8 -_021E9A60: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E9D04 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F0C ; =0x00004A38 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9D04 -_021E9AB8: - bl MOD04_021E8ECC - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - cmp r0, #0 - bne _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9AEC: - bl MOD04_021E26E4 - ldrb r0, [r0, #0x3cc] - cmp r0, #8 - bne _021E9D04 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F10 ; =0x00007530 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9D04 - bl MOD04_021E26E4 - ldrb r1, [r0, #0x3cd] - add r1, r1, #1 - strb r1, [r0, #0x3cd] - bl MOD04_021E26E4 - ldrb r0, [r0, #0x3cd] - cmp r0, #0 - beq _021E9BAC - bl MOD04_021E8ECC - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _021E9BA4 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl MOD04_021E59D4 - cmp r0, #0 - bne _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9BA4: - bl MOD04_021E4CB4 - b _021E9D04 -_021E9BAC: - bl MOD04_021E26E4 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - add r1, r4, #0x3d4 - str r1, [sp] - add r3, r5, #0x300 - ldr r1, [r0, #0x458] - mov r0, #8 - str r1, [sp, #4] - ldr r1, [r7, #0x454] - ldr r2, [r6, #0x3d0] - ldrh r3, [r3, #0xce] - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - beq _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9C0C: - bl MOD04_021DF88C - cmp r0, #5 - bne _021E9D04 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1f8] - ldr r0, [r0, #0x1fc] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F10 ; =0x00007530 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9D04 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1ad] - cmp r0, #5 - blo _021E9C8C - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - bl MOD04_021E5908 - cmp r0, #0 - bne _021E9D04 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_021E9C8C: - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r1, [r5, #0xf4] - ldr r2, [r4, #0x24] - mov r0, #0x40 - bl MOD04_021E7884 - bl MOD04_021E61EC - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldrb r1, [r0, #0x1ad] - add r1, r1, #1 - strb r1, [r0, #0x1ad] - bl MOD04_021E26E4 - mov r4, r0 - bl OS_GetTick - ldr r2, _021E9F14 ; =0xFF403B3A - mvn r3, #0 - adds r0, r0, r2 - str r0, [r4, #0x1f8] - adc r0, r1, r3 - str r0, [r4, #0x1fc] -_021E9D04: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - beq _021E9D24 - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #6 - bne _021E9DA0 -_021E9D24: - bl MOD04_021E26E4 - ldr r2, [r0, #0x184] - ldr r1, [r0, #0x188] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r0 - beq _021E9DA0 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x184] - ldr r0, [r0, #0x188] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F18 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9DA0 - bl MOD04_021E26E4 - mov r1, #0 - add r3, r0, #0x194 - mov r2, r1 - mov r0, #1 - bl MOD04_021E2784 -_021E9DA0: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _021E9DBC - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - bl MOD04_02203C38 -_021E9DBC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_021E9F1C - bl MOD04_02200468 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021E9DEC - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD6D4 -_021E9DEC: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0x12 - bne _021E9E54 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl MOD04_021E26E4 - ldr r1, [r0, #0x1f0] - ldr r0, [r0, #0x1f4] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _021E9EF8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _021E9F00 ; =0x00000BB8 - cmp r1, #0 - cmpeq r0, r2 - bls _021E9E54 - bl MOD04_021E4BF4 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} -_021E9E54: - bl MOD04_021E4684 - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E41C4 - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E39F0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1ae] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xa - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] - bl MOD04_021E85D4 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1ae] - bl MOD04_021E26E4 - ldr r0, [r0, #0x47c] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x480] - ldr r1, [r4, #0x47c] - blx r1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021E9EF8: .word 0x000082EA -_021E9EFC: .word 0xFFFEC5D2 -_021E9F00: .word 0x00000BB8 -_021E9F04: .word 0x000061A8 -_021E9F08: .word 0x00001770 -_021E9F0C: .word 0x00004A38 -_021E9F10: .word 0x00007530 -_021E9F14: .word 0xFF403B3A -_021E9F18: .word 0x00002710 - arm_func_end MOD04_021E9568 - - arm_func_start MOD04_021E9F1C -MOD04_021E9F1C: ; 0x021E9F1C - stmdb sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} - bl MOD04_02202534 - ldr r0, [r4, #0xb4] - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl MOD04_021E26E4 - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _021E9F5C - cmp r0, #1 - beq _021E9F5C - cmp r0, #2 - beq _021E9FB0 - ldmia sp!, {r4, pc} -_021E9F5C: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, pc} -_021E9F70: ; jump table - ldmia sp!, {r4, pc} ; case 0 - b _021E9FA0 ; case 1 - b _021E9FA0 ; case 2 - b _021E9FA0 ; case 3 - b _021E9FA0 ; case 4 - ldmia sp!, {r4, pc} ; case 5 - b _021E9FA0 ; case 6 - ldmia sp!, {r4, pc} ; case 7 - ldmia sp!, {r4, pc} ; case 8 - ldmia sp!, {r4, pc} ; case 9 - ldmia sp!, {r4, pc} ; case 10 - b _021E9FA0 ; case 11 -_021E9FA0: - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - ldmia sp!, {r4, pc} -_021E9FB0: - bl MOD04_021E26E4 - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - ldmneia sp!, {r4, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021E9F1C - - arm_func_start MOD04_021E9FD0 -MOD04_021E9FD0: ; 0x021E9FD0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r5, r2 - mov r6, r0 - mov r4, r3 - mov r2, r1 - mov r3, r5 - mov r0, #3 - mov r1, #0 - bl MOD04_021E80C4 - bl MOD04_021E26E4 - str r4, [r0, #0x46c] - bl MOD04_021E26E4 - ldr r1, [sp, #0x28] - str r1, [r0, #0x470] - bl MOD04_021E26E4 - mov r1, #1 - strb r1, [r0, #0x17] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - str r0, [r4, #0x20] - bl MOD04_021E26E4 - str r6, [r0, #0xf4] - mov r0, #4 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - cmp r0, #0 - bne _021EA0A4 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - mov r5, r0 - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - mov r2, r0 - mov r0, #0x14 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r3, #0 - str r3, [sp, #8] - ldr r0, _021EA130 ; =MOD04_021E32E4 - str r0, [sp, #0xc] - str r3, [sp, #0x10] - ldr r0, [r5, #0x2f4] - ldr r1, [r4, #0x2f4] - ldr r2, [r2, #0x2f8] - bl MOD04_02203EA4 - str r0, [r6, #0xe4] -_021EA0A4: - bl MOD04_021E26E4 - ldr r0, [r0, #0xe4] - cmp r0, #0 - bne _021EA0C8 - mov r0, #5 - bl MOD04_021E38E8 - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, pc} -_021EA0C8: - ldr r1, _021EA134 ; =UNK04_0220D3F0 - mov r0, #5 - mov r2, #0 - bl MOD04_021E1E30 - bl MOD04_021E397C - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _021EA110 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - bl MOD04_021EA1E0 - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, pc} -_021EA110: - bl MOD04_021E26E4 - ldr r0, [r0, #0xf4] - mov r1, #0 - bl MOD04_021E6038 - bl MOD04_021E61EC - cmp r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021EA130: .word MOD04_021E32E4 -_021EA134: .word UNK04_0220D3F0 - arm_func_end MOD04_021E9FD0 - - arm_func_start MOD04_021EA138 -MOD04_021EA138: ; 0x021EA138 - stmdb sp!, {r4, lr} - mov lr, r1 - mov ip, r2 - mov r4, r3 - mov r1, r0 - mov r2, lr - mov r3, ip - mov r0, #2 - bl MOD04_021E80C4 - bl MOD04_021E26E4 - str r4, [r0, #0x46c] - bl MOD04_021E26E4 - ldr r1, [sp, #8] - str r1, [r0, #0x470] - bl MOD04_021E26E4 - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - str r0, [r4, #0xf4] - bl MOD04_021E26E4 - mov r1, #1 - str r1, [r0, #0x2f0] - bl MOD04_021E26E4 - mov r2, #0 - strb r2, [r0, #0xe] - ldr r1, _021EA1DC ; =UNK04_022106DC - mov r0, #0xa - strb r2, [r1, #1] - bl MOD04_021E26D0 - bl MOD04_021E85D4 - bl MOD04_021E397C - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl MOD04_021E26E4 - ldr r0, [r0, #0x200] - bl MOD04_021EA1E0 - ldmia sp!, {r4, pc} - .align 2, 0 -_021EA1DC: .word UNK04_022106DC - arm_func_end MOD04_021EA138 - - arm_func_start MOD04_021EA1E0 -MOD04_021EA1E0: ; 0x021EA1E0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov r4, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - addne sp, sp, #0x2c - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_021E26E4 - str r4, [r0, #0x200] - mov sl, #0 - ldr fp, _021EA344 ; =MOD04_021E2E18 - mov r4, sl - mov r5, #1 -_021EA21C: - bl MOD04_021E26E4 - mov sb, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD43C - mov r8, r0 - bl MOD04_021E26E4 - ldr r0, [r0, #4] - ldr r0, [r0] - bl MOD04_021FD454 - mov r7, r0 - bl MOD04_021E26E4 - mov r6, r0 - bl MOD04_021E26E4 - ldr r3, [r0, #0x2f8] - mov r1, r8 - str r3, [sp] - str r5, [sp, #4] - str r5, [sp, #8] - ldr r3, _021EA348 ; =MOD04_021E2E14 - str fp, [sp, #0xc] - str r3, [sp, #0x10] - ldr r3, _021EA34C ; =MOD04_021E2E10 - mov r2, r7 - str r3, [sp, #0x14] - ldr r3, _021EA350 ; =MOD04_021E2D68 - add r0, sb, #0x10 - str r3, [sp, #0x18] - ldr r3, _021EA354 ; =MOD04_021E2D60 - str r3, [sp, #0x1c] - ldr r3, _021EA358 ; =MOD04_021E2D54 - str r3, [sp, #0x20] - str r4, [sp, #0x24] - ldr r3, [r6, #0x2f4] - bl MOD04_022025B0 - movs r6, r0 - beq _021EA2E4 - cmp r6, #3 - bne _021EA2C4 - cmp sl, #4 - bne _021EA2D8 -_021EA2C4: - mov r0, r6 - bl MOD04_021E3800 - add sp, sp, #0x2c - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EA2D8: - add sl, sl, #1 - cmp sl, #5 - blt _021EA21C -_021EA2E4: - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c] - bl MOD04_021E26E4 - mov r1, #0 - strh r1, [r0, #0x1a] - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - ldr r1, _021EA35C ; =MOD04_021E2D2C - bl MOD04_02202568 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - ldr r1, _021EA360 ; =MOD04_021E2C78 - bl MOD04_02202598 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - ldr r1, _021EA364 ; =MOD04_021E2B64 - bl MOD04_02202580 - bl MOD04_021E26E4 - ldr r0, [r0, #0x10] - bl MOD04_02202308 - mov r0, r6 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021EA344: .word MOD04_021E2E18 -_021EA348: .word MOD04_021E2E14 -_021EA34C: .word MOD04_021E2E10 -_021EA350: .word MOD04_021E2D68 -_021EA354: .word MOD04_021E2D60 -_021EA358: .word MOD04_021E2D54 -_021EA35C: .word MOD04_021E2D2C -_021EA360: .word MOD04_021E2C78 -_021EA364: .word MOD04_021E2B64 - arm_func_end MOD04_021EA1E0 - - arm_func_start MOD04_021EA368 -MOD04_021EA368: ; 0x021EA368 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021E26F4 - bl MOD04_021E26E4 - str r6, [r0] - bl MOD04_021E26E4 - str r5, [r0, #4] - bl MOD04_021E26E4 - str r4, [r0, #8] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x10] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1c] - bl MOD04_021E26E4 - mov r1, #0 - strh r1, [r0, #0x1a] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0xe4] - mov r0, r1 - bl MOD04_021E26D0 - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0xf] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x19] - bl MOD04_021E26E4 - mov r1, #0 - strb r1, [r0, #0x1af] - bl MOD04_021E26E4 - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb6] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x1dc] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x200] - bl MOD04_021E26E4 - ldr r1, [sp, #0x10] - str r1, [r0, #0x2f4] - bl MOD04_021E26E4 - ldr r1, [sp, #0x14] - str r1, [r0, #0x2f8] - bl MOD04_021E26E4 - ldr r1, [sp, #0x18] - str r1, [r0, #0x2fc] - bl MOD04_021E26E4 - ldr r1, [sp, #0x1c] - str r1, [r0, #0x300] - bl MOD04_021E26E4 - add r0, r0, #0x304 - mov r1, #0 - mov r2, #0x40 - bl MI_CpuFill8 - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x344] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x464] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x468] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x474] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x478] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x47c] - bl MOD04_021E26E4 - mov r1, #0 - str r1, [r0, #0x480] - bl MOD04_021E4164 - ldr r1, _021EA4D0 ; =UNK04_022106DC - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - strh r0, [r1, #2] - bl MOD04_021E8174 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021EA4D0: .word UNK04_022106DC - arm_func_end MOD04_021EA368 - - arm_func_start MOD04_021EA4D4 -MOD04_021EA4D4: ; 0x021EA4D4 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {pc} - bl MOD04_021E26E4 - cmp r0, #0 - beq _021EA518 - bl MOD04_021DF88C - cmp r0, #5 - bne _021EA518 - bl MOD04_021E26E4 - ldrb r0, [r0, #0x1a9] - cmp r0, #0 - beq _021EA524 -_021EA518: - add sp, sp, #4 - mov r0, #0 - ldmfd sp!, {pc} -_021EA524: - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021EA4D4 - - arm_func_start MOD04_021EA530 -MOD04_021EA530: ; 0x021EA530 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021EA4D4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - bl MOD04_021E4F94 - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021EA530 - arm_func_start MOD04_021EA55C MOD04_021EA55C: ; 0x021EA55C stmdb sp!, {lr} @@ -60012,12 +39644,8 @@ _0220BAB8: arm_func_end MOD04_url_strlen .section .rodata - .global UNK_0220BAC4 -UNK04_0220BAC4: ; 0x0220BAC4 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global UNK_0220BADC + .global UNK04_0220BADC UNK04_0220BADC: ; 0x0220BADC .byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32 @@ -60168,1150 +39796,6 @@ UNK04_0220BE70: ; 0x0220BE70 .byte 0x0A, 0x00, 0x00, 0x00 .section .data - .global UNK_0220BEB4 -UNK04_0220BEB4: ; 0x0220BEB4 - .word UNK04_0220BED0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00 - - .global UNK04_0220BED0 -UNK04_0220BED0: ; 0x0220BED0 - .asciz "https://nas.test.nintendowifi.net/ac" - - .balign 4, 0 - .global UNK_0220BEF8 -UNK04_0220BEF8: ; 0x0220BEF8 - .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x00 - - .global UNK_0220BF04 -UNK04_0220BF04: ; 0x0220BF04 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220BF0C -UNK04_0220BF0C: ; 0x0220BF0C - .byte 0x6C, 0x6F, 0x67, 0x69, 0x6E, 0x00, 0x00, 0x00 - - .global UNK_0220BF14 -UNK04_0220BF14: ; 0x0220BF14 - .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220BF1C -UNK04_0220BF1C: ; 0x0220BF1C - .asciz "Y" - - .balign 4, 0 - .global UNK_0220BF20 -UNK04_0220BF20: ; 0x0220BF20 - .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00 - - .global UNK_0220BF28 -UNK04_0220BF28: ; 0x0220BF28 - .byte 0x69, 0x6E, 0x67, 0x61, 0x6D, 0x65, 0x73, 0x6E, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF34 -UNK04_0220BF34: ; 0x0220BF34 - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF3C -UNK04_0220BF3C: ; 0x0220BF3C - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220BF48 -UNK04_0220BF48: ; 0x0220BF48 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF54 -UNK04_0220BF54: ; 0x0220BF54 - .byte 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00 - - .global UNK_0220BF5C -UNK04_0220BF5C: ; 0x0220BF5C - .byte 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x00 - - .global UNK_0220BF64 -UNK04_0220BF64: ; 0x0220BF64 - .byte 0x63, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220BF70 -UNK04_0220BF70: ; 0x0220BF70 - .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF7C -UNK04_0220BF7C: ; 0x0220BF7C - .byte 0x53, 0x65, 0x74, 0x2D, 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x00, 0x00 - - .global UNK_0220BF88 -UNK04_0220BF88: ; 0x0220BF88 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF98 -UNK04_0220BF98: ; 0x0220BF98 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00 - - .balign 4, 0 - .global UNK_0220BFA4 -UNK04_0220BFA4: ; 0x0220BFA4 - .asciz "https://nas.nintendowifi.net/ac" - - .balign 4, 0 - .global UNK_0220BFC4 -UNK04_0220BFC4: ; 0x0220BFC4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BFD4 -UNK04_0220BFD4: ; 0x0220BFD4 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00 - - .global UNK_0220BFE4 -UNK04_0220BFE4: ; 0x0220BFE4 - .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BFF0 -UNK04_0220BFF0: ; 0x0220BFF0 - .byte 0x73, 0x64, 0x6B, 0x76, 0x65, 0x72, 0x00, 0x00 - - .global UNK_0220BFF8 -UNK04_0220BFF8: ; 0x0220BFF8 - .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 - - .global UNK_0220C000 -UNK04_0220C000: ; 0x0220C000 - .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 - - .global UNK_0220C008 -UNK04_0220C008: ; 0x0220C008 - .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00 - - .global UNK_0220C010 -UNK04_0220C010: ; 0x0220C010 - .byte 0x61, 0x70, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00 - - .global UNK_0220C018 -UNK04_0220C018: ; 0x0220C018 - .byte 0x67, 0x61, 0x6D, 0x65, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220C020 -UNK04_0220C020: ; 0x0220C020 - .byte 0x6D, 0x61, 0x6B, 0x65, 0x72, 0x63, 0x64, 0x00 - - .global UNK_0220C028 -UNK04_0220C028: ; 0x0220C028 - .byte 0x75, 0x6E, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220C030 -UNK04_0220C030: ; 0x0220C030 - .byte 0x6D, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 - - .global UNK_0220C038 -UNK04_0220C038: ; 0x0220C038 - .byte 0x6C, 0x61, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C040 -UNK04_0220C040: ; 0x0220C040 - .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00 - - .global UNK_0220C048 -UNK04_0220C048: ; 0x0220C048 - .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6D, 0x65, 0x00 - - .global UNK_0220C050 -UNK04_0220C050: ; 0x0220C050 - .byte 0x64, 0x65, 0x76, 0x6E, 0x61, 0x6D, 0x65, 0x00 - - .global UNK_0220C058 -UNK04_0220C058: ; 0x0220C058 - .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C060 -UNK04_0220C060: ; 0x0220C060 - .byte 0x4E, 0x69, 0x74, 0x72, 0x6F, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4B, 0x2F, 0x25 - .byte 0x64, 0x2E, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C078 -UNK04_0220C078: ; 0x0220C078 - .byte 0x55, 0x73, 0x65, 0x72, 0x2D, 0x41, 0x67, 0x65, 0x6E, 0x74, 0x00, 0x00 - - .global UNK_0220C084 -UNK04_0220C084: ; 0x0220C084 - .byte 0x48, 0x54, 0x54, 0x50, 0x5F, 0x58, 0x5F, 0x47, 0x41, 0x4D, 0x45, 0x43, 0x44, 0x00, 0x00, 0x00 - - .global UNK_0220C094 -UNK04_0220C094: ; 0x0220C094 - .byte 0x25, 0x30, 0x31, 0x33, 0x6C, 0x6C, 0x75, 0x00 - - .global UNK_0220C09C -UNK04_0220C09C: ; 0x0220C09C - .byte 0x25, 0x30, 0x33, 0x75, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0A4 -UNK04_0220C0A4: ; 0x0220C0A4 - .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0AC -UNK04_0220C0AC: ; 0x0220C0AC - .byte 0x25, 0x30, 0x32, 0x78, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0B8 -UNK04_0220C0B8: ; 0x0220C0B8 - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0D4 -UNK04_0220C0D4: ; 0x0220C0D4 - .byte 0x25, 0x30, 0x32, 0x64, 0x3A, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2D, 0x30, 0x30, 0x00 - - .global UNK_0220C0E4 -UNK04_0220C0E4: ; 0x0220C0E4 - .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8 - .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0 - .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC - - .global UNK_0220C110 -UNK04_0220C110: ; 0x0220C110 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79 - .byte 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00 - - .global UNK_0220C12C -UNK04_0220C12C: ; 0x0220C12C - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79 - .byte 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C148 -UNK04_0220C148: ; 0x0220C148 - .byte 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C150 -UNK04_0220C150: ; 0x0220C150 - .byte 0x20, 0x00, 0x00, 0x00 - - .global UNK_0220C154 -UNK04_0220C154: ; 0x0220C154 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C160 -UNK04_0220C160: ; 0x0220C160 - .byte 0x32, 0x30, 0x30, 0x00 - - .global UNK_0220C164 -UNK04_0220C164: ; 0x0220C164 - .byte 0x0D, 0x0A, 0x00, 0x00 - - .global UNK_0220C168 -UNK04_0220C168: ; 0x0220C168 - .byte 0x3A, 0x20, 0x00, 0x00 - - .global UNK_0220C16C -UNK04_0220C16C: ; 0x0220C16C - .byte 0x3D, 0x00, 0x00, 0x00 - - .global UNK_0220C170 -UNK04_0220C170: ; 0x0220C170 - .byte 0x26, 0x00, 0x00, 0x00 - - .global UNK_0220C174 -UNK04_0220C174: ; 0x0220C174 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E - .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C194 -UNK04_0220C194: ; 0x0220C194 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E - .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C1B4 -UNK04_0220C1B4: ; 0x0220C1B4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74 - .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00 - - .global UNK_0220C1D0 -UNK04_0220C1D0: ; 0x0220C1D0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74 - .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00 - - .global UNK_0220C1EC -UNK04_0220C1EC: ; 0x0220C1EC - .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x00 - - .global UNK_0220C1F4 -UNK04_0220C1F4: ; 0x0220C1F4 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C200 -UNK04_0220C200: ; 0x0220C200 - .byte 0x3A, 0x00, 0x00, 0x00 - - .global UNK_0220C204 -UNK04_0220C204: ; 0x0220C204 - .byte 0x2F, 0x00, 0x00, 0x00 - - .global UNK_0220C208 -UNK04_0220C208: ; 0x0220C208 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x74, 0x72, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C218 -UNK04_0220C218: ; 0x0220C218 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C22C -UNK04_0220C22C: ; 0x0220C22C - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65 - .byte 0x72, 0x00, 0x00, 0x00 - - .global UNK_0220C240 -UNK04_0220C240: ; 0x0220C240 - .byte 0x25, 0x73, 0x00, 0x00 - - .global UNK_0220C244 -UNK04_0220C244: ; 0x0220C244 - .byte 0x25, 0x73, 0x3D, 0x00 - - .global UNK_0220C248 -UNK04_0220C248: ; 0x0220C248 - .byte 0x26, 0x25, 0x73, 0x3D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C250 -UNK04_0220C250: ; 0x0220C250 - .byte 0x25, 0x73, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C25C -UNK04_0220C25C: ; 0x0220C25C - .byte 0x50, 0x4F, 0x53, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E - .byte 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x3A - .byte 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x78, 0x2D, 0x77 - .byte 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E, 0x63, 0x6F, 0x64 - .byte 0x65, 0x64, 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C2B0 -UNK04_0220C2B0: ; 0x0220C2B0 - .byte 0x47, 0x45, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30 - .byte 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00 - - .global UNK_0220C2D0 -UNK04_0220C2D0: ; 0x0220C2D0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72, 0x65 - .byte 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 - - .global UNK_0220C2E8 -UNK04_0220C2E8: ; 0x0220C2E8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73, 0x65 - .byte 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 - - .global UNK_0220C300 -UNK04_0220C300: ; 0x0220C300 - .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C314 -UNK04_0220C314: ; 0x0220C314 - .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C320 -UNK04_0220C320: ; 0x0220C320 - .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C328 -UNK04_0220C328: ; 0x0220C328 - .byte 0x25, 0x64, 0x00, 0x00 - - .global UNK_0220C32C -UNK04_0220C32C: ; 0x0220C32C - .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x00 - - .global UNK_0220C33C -UNK04_0220C33C: ; 0x0220C33C - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72 - .byte 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00 - - .global UNK_0220C354 -UNK04_0220C354: ; 0x0220C354 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73 - .byte 0x65, 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00 - - .global UNK_0220C36C -UNK04_0220C36C: ; 0x0220C36C - .word UNK04_0220C370 - - .global UNK_0220C370 -UNK04_0220C370: ; 0x0220C370 - .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x74 - .byte 0x65, 0x73, 0x74, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69 - .byte 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x00, 0x00, 0x00 - - .global UNK_0220C394 -UNK04_0220C394: ; 0x0220C394 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00 - - .global UNK_0220C3B0 -UNK04_0220C3B0: ; 0x0220C3B0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00, 0x00 - - .global UNK_0220C3CC -UNK04_0220C3CC: ; 0x0220C3CC - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00 - - .global UNK_0220C3D8 -UNK04_0220C3D8: ; 0x0220C3D8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00 - - .global UNK_0220C3E8 -UNK04_0220C3E8: ; 0x0220C3E8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00 - - .global UNK_0220C3F8 -UNK04_0220C3F8: ; 0x0220C3F8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00 - - .global UNK_0220C418 -UNK04_0220C418: ; 0x0220C418 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C424 -UNK04_0220C424: ; 0x0220C424 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220C444 -UNK04_0220C444: ; 0x0220C444 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C44C -UNK04_0220C44C: ; 0x0220C44C - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 - - .global UNK_0220C454 -UNK04_0220C454: ; 0x0220C454 - .byte 0x48, 0x6F, 0x74, 0x53, 0x70, 0x6F, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00 - - .global UNK_0220C464 -UNK04_0220C464: ; 0x0220C464 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x00 - - .global UNK_0220C484 -UNK04_0220C484: ; 0x0220C484 - .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C48C -UNK04_0220C48C: ; 0x0220C48C - .byte 0x48, 0x54, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C494 -UNK04_0220C494: ; 0x0220C494 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4A0 -UNK04_0220C4A0: ; 0x0220C4A0 - .byte 0x75, 0x72, 0x6C, 0x00 - - .global UNK_0220C4A4 -UNK04_0220C4A4: ; 0x0220C4A4 - .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4AC -UNK04_0220C4AC: ; 0x0220C4AC - .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4B4 -UNK04_0220C4B4: ; 0x0220C4B4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4C0 -UNK04_0220C4C0: ; 0x0220C4C0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 - - .global UNK_0220C4CC -UNK04_0220C4CC: ; 0x0220C4CC - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00 - - .global UNK_0220C4D8 -UNK04_0220C4D8: ; 0x0220C4D8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4E8 -UNK04_0220C4E8: ; 0x0220C4E8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4FC -UNK04_0220C4FC: ; 0x0220C4FC - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x00, 0x00, 0x00 - - .global UNK_0220C510 -UNK04_0220C510: ; 0x0220C510 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00 - - .global UNK_0220C520 -UNK04_0220C520: ; 0x0220C520 - .byte 0x44, 0x65, 0x63, 0x00 - - .global UNK_0220C524 -UNK04_0220C524: ; 0x0220C524 - .byte 0x4A, 0x75, 0x6C, 0x00 - - .global UNK_0220C528 -UNK04_0220C528: ; 0x0220C528 - .byte 0x4F, 0x63, 0x74, 0x00 - - .global UNK_0220C52C -UNK04_0220C52C: ; 0x0220C52C - .byte 0x53, 0x65, 0x70, 0x00 - - .global UNK_0220C530 -UNK04_0220C530: ; 0x0220C530 - .byte 0x41, 0x75, 0x67, 0x00 - - .global UNK_0220C534 -UNK04_0220C534: ; 0x0220C534 - .byte 0x4E, 0x6F, 0x76, 0x00 - - .global UNK_0220C538 -UNK04_0220C538: ; 0x0220C538 - .byte 0x4A, 0x75, 0x6E, 0x00 - - .global UNK_0220C53C -UNK04_0220C53C: ; 0x0220C53C - .byte 0x4D, 0x61, 0x79, 0x00 - - .global UNK_0220C540 -UNK04_0220C540: ; 0x0220C540 - .byte 0x41, 0x70, 0x72, 0x00 - - .global UNK_0220C544 -UNK04_0220C544: ; 0x0220C544 - .byte 0x4D, 0x61, 0x72, 0x00 - - .global UNK_0220C548 -UNK04_0220C548: ; 0x0220C548 - .byte 0x46, 0x65, 0x62, 0x00 - - .global UNK_0220C54C -UNK04_0220C54C: ; 0x0220C54C - .byte 0x4A, 0x61, 0x6E, 0x00 - - .global UNK_0220C550 -UNK04_0220C550: ; 0x0220C550 - .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540 - .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530 - .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520 - - .global UNK_0220C580 -UNK04_0220C580: ; 0x0220C580 - .byte 0x46, 0x72, 0x69, 0x2C, 0x20, 0x30, 0x33, 0x20, 0x4D, 0x61, 0x72, 0x20, 0x32, 0x30, 0x30, 0x36 - .byte 0x20, 0x30, 0x31, 0x3A, 0x32, 0x38, 0x3A, 0x31, 0x33, 0x20, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00 - - .global UNK_0220C5A0 -UNK04_0220C5A0: ; 0x0220C5A0 - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5A8 -UNK04_0220C5A8: ; 0x0220C5A8 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C5B4 -UNK04_0220C5B4: ; 0x0220C5B4 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5C0 -UNK04_0220C5C0: ; 0x0220C5C0 - .byte 0x73, 0x76, 0x63, 0x68, 0x6F, 0x73, 0x74, 0x00 - - .global UNK_0220C5C8 -UNK04_0220C5C8: ; 0x0220C5C8 - .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5D8 -UNK04_0220C5D8: ; 0x0220C5D8 - .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00 - - .global UNK_0220C5E4 -UNK04_0220C5E4: ; 0x0220C5E4 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220C604 -UNK04_0220C604: ; 0x0220C604 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C60C -UNK04_0220C60C: ; 0x0220C60C - .byte 0x53, 0x56, 0x43, 0x4C, 0x4F, 0x43, 0x00, 0x00 - - .global UNK_0220C614 -UNK04_0220C614: ; 0x0220C614 - .byte 0x73, 0x76, 0x63, 0x00 - - .global UNK_0220C618 -UNK04_0220C618: ; 0x0220C618 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C628 -UNK04_0220C628: ; 0x0220C628 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00 - - .global UNK_0220C638 -UNK04_0220C638: ; 0x0220C638 - .word UNK04_0220C63C - - .global UNK_0220C63C -UNK04_0220C63C: ; 0x0220C63C - .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C - .byte 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62 - .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72 - .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 - .byte 0x38, 0x39, 0x2E, 0x2D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C680 -UNK04_0220C680: ; 0x0220C680 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220C684 -UNK04_0220C684: ; 0x0220C684 - .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 - .word UNK04_0220C680 - - .global UNK_0220C698 -UNK04_0220C698: ; 0x0220C698 - .byte 0x42, 0x45, 0x2C, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x6E - .byte 0x76, 0x2D, 0x73, 0x61, 0x2C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x47 - .byte 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43 - .byte 0x41, 0x00, 0x00, 0x00 - - .global UNK_0220C6CC -UNK04_0220C6CC: ; 0x0220C6CC - .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB - .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD - .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89 - .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70 - .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C - .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35 - .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39 - .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC - .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74 - .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5 - .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F - .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77 - .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9 - .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19 - .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C - .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F - .byte 0x7F, 0x93, 0x90, 0xCF - - .global UNK_0220C7CC -UNK04_0220C7CC: ; 0x0220C7CC - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220C7D0 -UNK04_0220C7D0: ; 0x0220C7D0 - .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 - .word UNK04_0220C7CC - - .global UNK_0220C7E4 -UNK04_0220C7E4: ; 0x0220C7E4 - .byte 0x49, 0x45, 0x2C, 0x20 - .byte 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x2C, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72 - .byte 0x54, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65 - .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C81C -UNK04_0220C81C: ; 0x0220C81C - .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A - .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29 - .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2 - .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52 - .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8 - .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8 - .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F - .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12 - .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68 - .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC - .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C - .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F - .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9 - .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99 - .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68 - .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90 - .byte 0xDC, 0x27, 0x1A, 0x39 - - .global UNK_0220C91C -UNK04_0220C91C: ; 0x0220C91C - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220C920 -UNK04_0220C920: ; 0x0220C920 - .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 - .word UNK04_0220C91C - - .global UNK_0220C934 -UNK04_0220C934: ; 0x0220C934 - .byte 0x55, 0x53, 0x2C, 0x20 - .byte 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C - .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20 - .byte 0x53, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C - .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20 - .byte 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00 - - .global UNK_0220C984 -UNK04_0220C984: ; 0x0220C984 - .byte 0x95, 0x0F, 0xA0, 0xB6 - .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B - .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A - .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F - .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95 - .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9 - .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85 - .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80 - .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99 - - .global UNK_0220CA04 -UNK04_0220CA04: ; 0x0220CA04 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CA08 -UNK04_0220CA08: ; 0x0220CA08 - .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 - .word UNK04_0220CA04 - - .global UNK_0220CA1C -UNK04_0220CA1C: ; 0x0220CA1C - .byte 0x55, 0x53, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70 - .byte 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62 - .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220CA48 -UNK04_0220CA48: ; 0x0220CA48 - .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9 - .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD - .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66 - .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5 - .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF - .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25 - .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24 - .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03 - - .global UNK_0220CAC8 -UNK04_0220CAC8: ; 0x0220CAC8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CACC -UNK04_0220CACC: ; 0x0220CACC - .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 - .word UNK04_0220CAC8 - - .global UNK_0220CAE0 -UNK04_0220CAE0: ; 0x0220CAE0 - .byte 0x55, 0x53, 0x2C, 0x20, 0x57, 0x61, 0x73, 0x68 - .byte 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F - .byte 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x2C - .byte 0x20, 0x4E, 0x4F, 0x41, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x20, 0x43 - .byte 0x41, 0x2C, 0x20, 0x63, 0x61, 0x40, 0x6E, 0x6F, 0x61, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E - .byte 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00 - - .global UNK_0220CB30 -UNK04_0220CB30: ; 0x0220CB30 - .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF - .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21 - .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD - .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B - .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40 - .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31 - .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66 - .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C - .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B - - .global UNK_0220CBB0 -UNK04_0220CBB0: ; 0x0220CBB0 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CBB4 -UNK04_0220CBB4: ; 0x0220CBB4 - .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 - .word UNK04_0220CBB0 - - .global UNK_0220CBC8 -UNK04_0220CBC8: ; 0x0220CBC8 - .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE - .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A - .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17 - .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0 - .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C - .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F - .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD - .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37 - - .global UNK_0220CC48 -UNK04_0220CC48: ; 0x0220CC48 - .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65 - .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63 - .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69 - .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6D, 0x69 - .byte 0x75, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x70, 0x72 - .byte 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x2D, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00 - - .global UNK_0220CCD0 -UNK04_0220CCD0: ; 0x0220CCD0 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CCD4 -UNK04_0220CCD4: ; 0x0220CCD4 - .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 - .word UNK04_0220CCD0 - - .global UNK_0220CCE8 -UNK04_0220CCE8: ; 0x0220CCE8 - .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65 - .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63 - .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69 - .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65 - .byte 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 0x72 - .byte 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00, 0x00 - - .global UNK_0220CD68 -UNK04_0220CD68: ; 0x0220CD68 - .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75 - .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20 - .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15 - .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD - .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B - .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C - .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B - .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D - - .global UNK_0220CDE8 -UNK04_0220CDE8: ; 0x0220CDE8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CDEC -UNK04_0220CDEC: ; 0x0220CDEC - .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 - .word UNK04_0220CDE8 - - .global UNK_0220CE00 -UNK04_0220CE00: ; 0x0220CE00 - .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0 - .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D - .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F - .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47 - .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77 - .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D - .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97 - .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61 - .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67 - - .global UNK_0220CE80 -UNK04_0220CE80: ; 0x0220CE80 - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69 - .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x2C - .byte 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69 - .byte 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61 - .byte 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E - .byte 0x6C, 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75 - .byte 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00 - - .global UNK_0220CF14 -UNK04_0220CF14: ; 0x0220CF14 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220CF18 -UNK04_0220CF18: ; 0x0220CF18 - .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 - .word UNK04_0220CF14 - - .global UNK_0220CF2C -UNK04_0220CF2C: ; 0x0220CF2C - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E - .byte 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E - .byte 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x2C, 0x20 - .byte 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67 - .byte 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75 - .byte 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C - .byte 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x33, 0x00 - - .global UNK_0220CFC8 -UNK04_0220CFC8: ; 0x0220CFC8 - .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9 - .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5 - .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D - .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67 - .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69 - .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0 - .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC - .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3 - .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED - .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF - .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76 - .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8 - .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2 - .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63 - .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D - .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97 - - .global UNK_0220D0C8 -UNK04_0220D0C8: ; 0x0220D0C8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220D0CC -UNK04_0220D0CC: ; 0x0220D0CC - .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 - .word UNK04_0220D0C8 - - .global UNK_0220D0E0 -UNK04_0220D0E0: ; 0x0220D0E0 - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69 - .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 - - .global UNK_0220D124 -UNK04_0220D124: ; 0x0220D124 - .byte 0xC9, 0x5C, 0x59, 0x9E - .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45 - .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25 - .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00 - .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6 - .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F - .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20 - .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15 - .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7 - - .global UNK_0220D1A4 -UNK04_0220D1A4: ; 0x0220D1A4 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK_0220D1A8 -UNK04_0220D1A8: ; 0x0220D1A8 - .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 - .word UNK04_0220D1A4 - - .global UNK_0220D1BC -UNK04_0220D1BC: ; 0x0220D1BC - .byte 0x55, 0x53, 0x2C, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61 - .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C - .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74 - .byte 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 - - .global UNK_0220D200 -UNK04_0220D200: ; 0x0220D200 - .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A - .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB - .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82 - .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05 - .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D - .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98 - .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49 - .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD - .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00 - - .global UNK_0220D280 -UNK04_0220D280: ; 0x0220D280 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x74, 0x65, 0x73, 0x74 - .byte 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65 - .byte 0x74, 0x2F, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D2A8 -UNK04_0220D2A8: ; 0x0220D2A8 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x64, 0x65, 0x76, 0x2E - .byte 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74 - .byte 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220D2CC -UNK04_0220D2CC: ; 0x0220D2CC - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220D2EC -UNK04_0220D2EC: ; 0x0220D2EC - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D2F0 -UNK04_0220D2F0: ; 0x0220D2F0 - .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D2F8 -UNK04_0220D2F8: ; 0x0220D2F8 - .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D300 -UNK04_0220D300: ; 0x0220D300 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C, 0x6F, 0x61 - .byte 0x64, 0x00, 0x00, 0x00 - - .global UNK_0220D314 -UNK04_0220D314: ; 0x0220D314 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x25, 0x73, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C - .byte 0x6F, 0x61, 0x64, 0x00 - - .global UNK_0220D328 -UNK04_0220D328: ; 0x0220D328 - .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D334 -UNK04_0220D334: ; 0x0220D334 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D338 -UNK04_0220D338: ; 0x0220D338 - .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D340 -UNK04_0220D340: ; 0x0220D340 - .byte 0x4D, 0x41, 0x54, 0x00 - - .global UNK_0220D344 -UNK04_0220D344: ; 0x0220D344 - .byte 0x53, 0x43, 0x4D, 0x00 - - .global UNK_0220D348 -UNK04_0220D348: ; 0x0220D348 - .byte 0x53, 0x43, 0x4E, 0x00 - - .global UNK_0220D34C -UNK04_0220D34C: ; 0x0220D34C - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D350 -UNK04_0220D350: ; 0x0220D350 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D354 -UNK04_0220D354: ; 0x0220D354 - .byte 0x49, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65 - .byte 0x64, 0x20, 0x79, 0x6F, 0x75, 0x72, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74 - .byte 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x6D, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x79, 0x6F, 0x75, 0x72 - .byte 0x20, 0x6C, 0x69, 0x73, 0x74, 0x00, 0x00, 0x00 - - .global UNK_0220D38C -UNK04_0220D38C: ; 0x0220D38C - .byte 0x53, 0x43, 0x4D, 0x00 - - .global UNK_0220D390 -UNK04_0220D390: ; 0x0220D390 - .byte 0x53, 0x43, 0x4E, 0x00 - - .global UNK_0220D394 -UNK04_0220D394: ; 0x0220D394 - .byte 0x25, 0x75, 0x00, 0x00 - - .global UNK_0220D398 -UNK04_0220D398: ; 0x0220D398 - .byte 0x53, 0x42, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D3A0 -UNK04_0220D3A0: ; 0x0220D3A0 - .byte 0x64, 0x77, 0x63, 0x5F, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D3AC -UNK04_0220D3AC: ; 0x0220D3AC - .byte 0x64, 0x77, 0x63, 0x5F, 0x70, 0x69, 0x64, 0x00 - - .global UNK_0220D3B4 -UNK04_0220D3B4: ; 0x0220D3B4 - .byte 0x6E, 0x75, 0x6D, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00 - - .global UNK_0220D3C0 -UNK04_0220D3C0: ; 0x0220D3C0 - .byte 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00 - - .global UNK_0220D3CC -UNK04_0220D3CC: ; 0x0220D3CC - .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220D3D8 -UNK04_0220D3D8: ; 0x0220D3D8 - .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x72, 0x65, 0x73, 0x76, 0x00, 0x00, 0x00 - - .global UNK_0220D3E4 -UNK04_0220D3E4: ; 0x0220D3E4 - .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D3F0 -UNK04_0220D3F0: ; 0x0220D3F0 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D3F4 -UNK04_0220D3F4: ; 0x0220D3F4 - .byte 0x56, 0x45, 0x52, 0x00 - - .global UNK_0220D3F8 -UNK04_0220D3F8: ; 0x0220D3F8 - .byte 0x46, 0x4D, 0x45, 0x00 - - .global UNK_0220D3FC -UNK04_0220D3FC: ; 0x0220D3FC - .byte 0x4D, 0x44, 0x46, 0x00 - - .global UNK_0220D400 -UNK04_0220D400: ; 0x0220D400 - .byte 0x25, 0x73, 0x25, 0x64, 0x76, 0x25, 0x73, 0x00 - - .global UNK_0220D408 -UNK04_0220D408: ; 0x0220D408 - .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D410 -UNK04_0220D410: ; 0x0220D410 - .byte 0x4D, 0x41, 0x54, 0x00 - - .global UNK_0220D414 -UNK04_0220D414: ; 0x0220D414 - .byte 0x2F, 0x25, 0x75, 0x00 - - .global UNK_0220D418 -UNK04_0220D418: ; 0x0220D418 - .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20, 0x21 - .byte 0x3D, 0x20, 0x25, 0x75, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79 - .byte 0x65, 0x72, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6D - .byte 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3C, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64 - .byte 0x20, 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20 - .byte 0x21, 0x3D, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00 - - .global UNK_0220D470 -UNK04_0220D470: ; 0x0220D470 - .byte 0x25, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x25, 0x73, 0x29, 0x00 - - .global UNK_0220D47C -UNK04_0220D47C: ; 0x0220D47C - .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x75, 0x00 - - .global UNK_0220D484 -UNK04_0220D484: ; 0x0220D484 - .byte 0x53, 0x43, 0x4D, 0x00 - - .global UNK_0220D488 -UNK04_0220D488: ; 0x0220D488 - .byte 0x53, 0x43, 0x4E, 0x00 - - .global UNK_0220D48C -UNK04_0220D48C: ; 0x0220D48C - .byte 0x49, 0x6E, 0x69, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x00, 0x00 - - .global UNK_0220D498 -UNK04_0220D498: ; 0x0220D498 - .byte 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x00 - - .global UNK_0220D4A4 -UNK04_0220D4A4: ; 0x0220D4A4 - .byte 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20 - .byte 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x00 .global UNK_0220D4BC UNK04_0220D4BC: ; 0x0220D4BC @@ -63178,7 +41662,7 @@ UNK04_0220F010: ; 0x0220F010 UNK04_0220F014: ; 0x0220F014 .byte 0x3A, 0x25, 0x64, 0x00 - .global UNK_0220F018 + .global UNK04_0220F018 UNK04_0220F018: ; 0x0220F018 .byte 0xFD, 0xFC, 0x1E, 0x66, 0x6A, 0xB2, 0x00, 0x00 @@ -63822,158 +42306,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210460 -UNK04_02210460: ; 0x02210460 - .space 0x4 - - .global UNK04_02210464 -UNK04_02210464: ; 0x02210464 - .space 0x4 - - .global UNK04_02210468 -UNK04_02210468: ; 0x02210468 - .space 0x4 - - .global UNK04_0221046C -UNK04_0221046C: ; 0x0221046C - .space 0x14 - - .global UNK04_02210480 -UNK04_02210480: ; 0x02210480 - .space 0x4 - - .global UNK04_02210484 -UNK04_02210484: ; 0x02210484 - .space 0x4 - - .global UNK04_02210488 -UNK04_02210488: ; 0x02210488 - .space 0x4 - - .global UNK04_0221048C -UNK04_0221048C: ; 0x0221048C - .space 0x4 - - .global UNK04_02210490 -UNK04_02210490: ; 0x02210490 - .space 0x4 - - .global UNK04_02210494 -UNK04_02210494: ; 0x02210494 - .space 0x1C - - .global UNK04_022104B0 -UNK04_022104B0: ; 0x022104B0 - .space 0x48 - - .global UNK04_022104F8 -UNK04_022104F8: ; 0x022104F8 - .space 0x4 - - .global UNK04_022104FC -UNK04_022104FC: ; 0x022104FC - .space 0x8 - - .global UNK04_02210504 -UNK04_02210504: ; 0x02210504 - .space 0x4 - - .global UNK04_02210508 -UNK04_02210508: ; 0x02210508 - .space 0x4 - - .global UNK04_0221050C -UNK04_0221050C: ; 0x0221050C - .space 0x4 - - .global UNK04_02210510 -UNK04_02210510: ; 0x02210510 - .space 0x4 - - .global UNK04_02210514 -UNK04_02210514: ; 0x02210514 - .space 0x4 - - .global UNK04_02210518 -UNK04_02210518: ; 0x02210518 - .space 0x4 - - .global UNK04_0221051C -UNK04_0221051C: ; 0x0221051C - .space 0x4 - - .global UNK04_02210520 -UNK04_02210520: ; 0x02210520 - .space 0x4 - - .global UNK04_02210524 -UNK04_02210524: ; 0x02210524 - .space 0x18 - - .global UNK04_0221053C -UNK04_0221053C: ; 0x0221053C - .space 0x4 - - .global UNK04_02210540 -UNK04_02210540: ; 0x02210540 - .space 0x4 - - .global UNK04_02210544 -UNK04_02210544: ; 0x02210544 - .space 0x80 - - .global UNK04_022105C4 -UNK04_022105C4: ; 0x022105C4 - .space 0x100 - - .global UNK04_022106C4 -UNK04_022106C4: ; 0x022106C4 - .space 0x4 - - .global UNK04_022106C8 -UNK04_022106C8: ; 0x022106C8 - .space 0x4 - - .global UNK04_022106CC -UNK04_022106CC: ; 0x022106CC - .space 0x4 - - .global UNK04_022106D0 -UNK04_022106D0: ; 0x022106D0 - .space 0x4 - - .global UNK04_022106D4 -UNK04_022106D4: ; 0x022106D4 - .space 0x4 - - .global UNK04_022106D8 -UNK04_022106D8: ; 0x022106D8 - .space 0x4 - - .global UNK04_022106DC -UNK04_022106DC: ; 0x022106DC - .space 0x4 - - .global UNK04_022106E0 -UNK04_022106E0: ; 0x022106E0 - .space 0x4 - - .global UNK04_022106E4 -UNK04_022106E4: ; 0x022106E4 - .space 0x20 - - .global UNK04_02210704 -UNK04_02210704: ; 0x02210704 - .space 0x1 - - .global UNK04_02210705 -UNK04_02210705: ; 0x02210705 - .space 0x7 - - .global UNK04_0221070C -UNK04_0221070C: ; 0x0221070C - .space 0x730 - .global UNK04_02210E3C UNK04_02210E3C: ; 0x02210E3C .space 0x4 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/mod04_021D74E0.s index 6f673fe8..4eba9197 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/mod04_021D74E0.s @@ -2302,856 +2302,22 @@ MOD04_021D8678: ; 0x021D8678 _021D8684: .word UNK04_0220FBC0 _021D8688: .word 0x00001F68 - thumb_func_start MOD04_021D868C -MOD04_021D868C: ; 0x021D868C - push {r3, r4, r5, lr} - bl MIC_Init - bl PM_Init - mov r0, #1 - bl PM_SetAmp - mov r0, #3 - bl PM_SetAmpGain - ldr r0, _021D8718 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r3, _021D871C ; =0x00003584 - add r5, r2, #0 - str r2, [r1, r3] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #0xc - str r2, [r4, r1] - ldr r4, [r0, #4] - add r1, r3, #4 - str r2, [r4, r1] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #8 - str r2, [r4, r1] - ldr r1, [r0, #4] - add r3, #0x10 - str r2, [r1, r3] - ldr r3, _021D8720 ; =0x00003598 - add r1, r2, #0 -_021D86CE: - ldr r4, [r0, #4] - add r2, r2, #1 - add r4, r4, r5 - add r5, r5, #2 - strh r1, [r4, r3] - cmp r2, #0x10 - blt _021D86CE - ldr r0, _021D8718 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8724 ; =0x000035B8 - str r1, [r2, r0] - mov r0, #1 - bl FUN_020AA770 - bl NNS_SndInit - ldr r0, _021D8718 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8728 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmInit - ldr r1, _021D8718 ; =UNK04_0220FBC8 - mov r0, #0 - ldr r2, [r1, #4] - mov r1, #0xb1 - lsl r1, r1, #6 - add r1, r2, r1 - mov r2, #0x22 - lsl r2, r2, #6 - bl MIi_CpuClearFast - ldr r0, _021D8718 ; =UNK04_0220FBC8 - mov r1, #0 - str r1, [r0, #8] - pop {r3, r4, r5, pc} - nop -_021D8718: .word UNK04_0220FBC8 -_021D871C: .word 0x00003584 -_021D8720: .word 0x00003598 -_021D8724: .word 0x000035B8 -_021D8728: .word 0x00003504 - - thumb_func_start MOD04_021D872C -MOD04_021D872C: ; 0x021D872C - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D8730 -MOD04_021D8730: ; 0x021D8730 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r3, #0 - ldr r4, [sp, #0x14] - cmp r0, #0 - bne _021D8748 - ldr r0, [r6] - mov r1, #0 - add r2, r5, #0 - bl MI_CpuFill8 - pop {r4, r5, r6, pc} -_021D8748: - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D87BC ; =0x00003565 - ldrb r1, [r2, r0] - cmp r1, #0 - beq _021D876A - add r0, r0, #3 - add r0, r2, r0 - ldr r1, _021D87C0 ; =MOD04_021D872C - mov r2, #0 - bl MIC_StartAutoSamplingAsync - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D87BC ; =0x00003565 - strb r2, [r1, r0] -_021D876A: - bl MIC_GetLastSamplingAddress - sub r0, r0, r4 - cmp r0, r5 - bhs _021D8776 - add r4, r4, r5 -_021D8776: - ldr r0, _021D87C4 ; =0x027FFFA8 - ldrh r1, [r0] - mov r0, #2 - lsl r0, r0, #0xe - and r0, r1 - asr r0, r0, #0xf - beq _021D878E - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - mov r0, #0xb1 - lsl r0, r0, #6 - add r4, r1, r0 -_021D878E: - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D87C8 ; =0x000034FC - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D87A2 - add r0, r4, #0 - add r1, r5, #0 - bl FUN_020AABDC -_021D87A2: - ldr r0, [r6] - add r1, r5, #0 - mov r2, #0 - bl FUN_020AA824 - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D87CC ; =0x00003564 - strb r2, [r1, r0] - pop {r4, r5, r6, pc} - .align 2, 0 -_021D87B8: .word UNK04_0220FBC8 -_021D87BC: .word 0x00003565 -_021D87C0: .word MOD04_021D872C -_021D87C4: .word 0x027FFFA8 -_021D87C8: .word 0x000034FC -_021D87CC: .word 0x00003564 - - thumb_func_start MOD04_021D87D0 -MOD04_021D87D0: ; 0x021D87D0 - push {r4, lr} - ldr r1, _021D8810 ; =UNK04_0220FBC8 - ldr r2, [r1, #4] - ldr r1, _021D8814 ; =0x00003560 - ldr r1, [r2, r1] - cmp r1, #0 - bne _021D880A - bl FUN_020ACD54 - add r4, r0, #0 - bne _021D87EA - mov r0, #0 - pop {r4, pc} -_021D87EA: - mov r1, #0 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D87FE - add r0, r4, #0 - bl FUN_020ACC84 - mov r0, #0 - pop {r4, pc} -_021D87FE: - ldr r0, _021D8810 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8814 ; =0x00003560 - str r4, [r1, r0] - mov r0, #1 - pop {r4, pc} -_021D880A: - mov r0, #0 - pop {r4, pc} - nop -_021D8810: .word UNK04_0220FBC8 -_021D8814: .word 0x00003560 - - thumb_func_start MOD04_021D8818 -MOD04_021D8818: ; 0x021D8818 - push {r3, lr} - ldr r0, _021D8858 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D885C ; =0x00003560 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8852 - ldr r1, [r0, #0xc] - cmp r1, #4 - bne _021D8852 - mov r1, #0 - bl FUN_020ACAB0 - cmp r0, #0 - beq _021D883A - mov r0, #0 - pop {r3, pc} -_021D883A: - ldr r0, _021D8858 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D885C ; =0x00003560 - ldr r0, [r1, r0] - bl FUN_020AADCC - cmp r0, #0 - beq _021D884E - mov r0, #1 - pop {r3, pc} -_021D884E: - mov r0, #0 - pop {r3, pc} -_021D8852: - mov r0, #0 - pop {r3, pc} - nop -_021D8858: .word UNK04_0220FBC8 -_021D885C: .word 0x00003560 - - thumb_func_start MOD04_021D8860 -MOD04_021D8860: ; 0x021D8860 - push {r4, lr} - add r4, r2, #0 - cmp r1, #0xc - bhi _021D8902 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D8874: ; jump table - .short _021D8902 - _021D8874 - 2 ; case 0 - .short _021D888E - _021D8874 - 2 ; case 1 - .short _021D88F4 - _021D8874 - 2 ; case 2 - .short _021D88FC - _021D8874 - 2 ; case 3 - .short _021D88CE - _021D8874 - 2 ; case 4 - .short _021D8902 - _021D8874 - 2 ; case 5 - .short _021D8902 - _021D8874 - 2 ; case 6 - .short _021D88DE - _021D8874 - 2 ; case 7 - .short _021D88AE - _021D8874 - 2 ; case 8 - .short _021D88C2 - _021D8874 - 2 ; case 9 - .short _021D8902 - _021D8874 - 2 ; case 10 - .short _021D88FC - _021D8874 - 2 ; case 11 - .short _021D88FC - _021D8874 - 2 ; case 12 -_021D888E: - ldr r0, _021D8904 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8908 ; =0x00003560 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D88AA - add r0, r4, #0 - mov r1, #3 - bl FUN_020ACAB0 - add r0, r4, #0 - bl FUN_020ACC84 - pop {r4, pc} -_021D88AA: - str r4, [r2, r0] - pop {r4, pc} -_021D88AE: - add r0, r4, #0 - mov r1, #0 - bl FUN_020ACAB0 - add r0, r4, #0 - bl MOD04_021D8910 - bl MOD04_021D8C6C - pop {r4, pc} -_021D88C2: - add r0, r4, #0 - bl MOD04_021D8910 - bl MOD04_021D8C6C - pop {r4, pc} -_021D88CE: - add r0, r4, #0 - mov r1, #4 - bl FUN_020ACAB0 - add r0, r4, #0 - bl MOD04_021D8910 - pop {r4, pc} -_021D88DE: - add r0, r4, #0 - bl FUN_020AADCC - cmp r0, #0 - beq _021D8902 - ldr r0, _021D8904 ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D890C ; =0x000034F8 - str r2, [r1, r0] - pop {r4, pc} -_021D88F4: - add r0, r4, #0 - bl MOD04_021D8910 - pop {r4, pc} -_021D88FC: - add r0, r4, #0 - bl MOD04_021D8910 -_021D8902: - pop {r4, pc} - .align 2, 0 -_021D8904: .word UNK04_0220FBC8 -_021D8908: .word 0x00003560 -_021D890C: .word 0x000034F8 - - thumb_func_start MOD04_021D8910 -MOD04_021D8910: ; 0x021D8910 - push {r4, lr} - ldr r1, _021D893C ; =UNK04_0220FBC8 - add r4, r0, #0 - ldr r2, [r1, #4] - ldr r1, _021D8940 ; =0x00003560 - ldr r1, [r2, r1] - cmp r4, r1 - bne _021D8936 - bl FUN_020AACFC - add r0, r4, #0 - bl FUN_020ACC84 - ldr r0, _021D893C ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8940 ; =0x00003560 - str r2, [r1, r0] - pop {r4, pc} -_021D8936: - bl FUN_020ACC84 - pop {r4, pc} - .align 2, 0 -_021D893C: .word UNK04_0220FBC8 -_021D8940: .word 0x00003560 - - thumb_func_start MOD04_021D8944 -MOD04_021D8944: ; 0x021D8944 - push {r4, r5, r6, lr} - bl OS_GetTick - add r4, r0, #0 - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - add r5, r1, #0 - ldr r0, [r0, #0xc] - sub r1, r4, r0 - mov r0, #0xfa - lsl r0, r0, #8 - mul r0, r1 - ldr r1, _021D8A40 ; =0x000082EA - bl _u32_div_f - ldr r1, _021D8A3C ; =UNK04_0220FBC8 - ldr r3, _021D8A44 ; =0x0000411A - ldr r2, [r1, #8] - sub r0, r0, r3 - add r2, r2, r0 - ldr r0, _021D8A48 ; =0xFFFFD8F0 - str r2, [r1, #8] - cmp r2, r0 - bge _021D8976 - mov r0, #0 - str r0, [r1, #8] -_021D8976: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - str r4, [r0, #0xc] - str r5, [r0, #0x10] - bl VCT_Main - ldr r4, _021D8A3C ; =UNK04_0220FBC8 - ldr r0, _021D8A44 ; =0x0000411A - ldr r1, [r4, #8] - cmp r1, r0 - blt _021D899C - add r6, r0, #0 - add r5, r0, #0 -_021D898E: - bl VCT_Main - ldr r0, [r4, #8] - sub r0, r0, r6 - str r0, [r4, #8] - cmp r0, r5 - bge _021D898E -_021D899C: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8A4C ; =0x0000358C - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D89EC - sub r0, r0, #4 - ldr r0, [r2, r0] - cmp r0, #3 - bhi _021D89E2 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D89BC: ; jump table - .short _021D89C4 - _021D89BC - 2 ; case 0 - .short _021D89CC - _021D89BC - 2 ; case 1 - .short _021D89D4 - _021D89BC - 2 ; case 2 - .short _021D89DC - _021D89BC - 2 ; case 3 -_021D89C4: - mov r0, #3 - bl PM_SetAmpGain - b _021D89E2 -_021D89CC: - mov r0, #2 - bl PM_SetAmpGain - b _021D89E2 -_021D89D4: - mov r0, #1 - bl PM_SetAmpGain - b _021D89E2 -_021D89DC: - mov r0, #0 - bl PM_SetAmpGain -_021D89E2: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8A4C ; =0x0000358C - str r2, [r1, r0] -_021D89EC: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8A00 - cmp r0, #1 - beq _021D8A3A - cmp r0, #2 - pop {r4, r5, r6, pc} -_021D8A00: - bl MOD04_021D8018 - cmp r0, #0 - bne _021D8A1E - mov r0, #1 - bl MOD04_021D87D0 - cmp r0, #0 - beq _021D8A3A - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #1 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - str r2, [r1, r0] - pop {r4, r5, r6, pc} -_021D8A1E: - bl MOD04_021D8018 - cmp r0, #1 - bne _021D8A3A - mov r0, #0 - bl MOD04_021D8818 - cmp r0, #0 - beq _021D8A3A - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - str r2, [r1, r0] -_021D8A3A: - pop {r4, r5, r6, pc} - .align 2, 0 -_021D8A3C: .word UNK04_0220FBC8 -_021D8A40: .word 0x000082EA -_021D8A44: .word 0x0000411A -_021D8A48: .word 0xFFFFD8F0 -_021D8A4C: .word 0x0000358C -_021D8A50: .word 0x000034F8 - - thumb_func_start MOD04_021D8A54 -MOD04_021D8A54: ; 0x021D8A54 - push {r3, lr} - ldr r3, _021D8A78 ; =UNK04_0220FBC8 - ldr r3, [r3, #4] - cmp r3, #0 - bne _021D8A62 - mov r0, #0 - pop {r3, pc} -_021D8A62: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl VCT_HandleData - cmp r0, #0 - beq _021D8A72 - mov r0, #1 - pop {r3, pc} -_021D8A72: - mov r0, #0 - pop {r3, pc} - nop -_021D8A78: .word UNK04_0220FBC8 - - thumb_func_start MOD04_021D8A7C -MOD04_021D8A7C: ; 0x021D8A7C - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - ldr r2, _021D8BC8 ; =UNK04_0220BAC0 - add r4, r1, #0 - ldrb r3, [r2] - add r1, sp, #0x10 - add r5, r0, #0 - strb r3, [r1] - ldrb r3, [r2, #1] - ldrb r2, [r2, #2] - strb r3, [r1, #1] - strb r2, [r1, #2] - ldr r1, _021D8BCC ; =UNK04_0220FBC8 - ldr r1, [r1, #4] - cmp r1, #0 - bne _021D8ACA - ldr r1, _021D8BD0 ; =0x000035DC - bl AllocFromHeap - ldr r2, _021D8BCC ; =UNK04_0220FBC8 - mov r1, #0x35 - str r0, [r2] - add r0, #0x1f - lsr r0, r0, #5 - lsl r0, r0, #5 - str r0, [r2, #4] - lsl r1, r1, #8 - str r5, [r0, r1] - add r0, r1, #0 - ldr r5, _021D8BD4 ; =UNK04_0220FBE0 - ldr r3, [r2, #4] - sub r0, #0x40 - str r5, [r3, r0] - ldr r0, [r2, #4] - mov r3, #0 - sub r1, #0x3c - str r3, [r0, r1] - bl MOD04_021D868C -_021D8ACA: - ldr r5, _021D8BCC ; =UNK04_0220FBC8 - mov r7, #0x11 - ldr r0, [r5, #4] - ldr r3, _021D8BD8 ; =0x00003568 - mov r1, #3 - str r1, [r0, r3] - add r1, r3, #0 - ldr r0, [r5, #4] - sub r1, #0xa8 - ldr r2, [r0, r1] - add r1, r3, #4 - str r2, [r0, r1] - lsl r7, r7, #6 - add r0, r3, #0 - ldr r1, [r5, #4] - lsl r2, r7, #1 - add r0, #8 - str r2, [r1, r0] - mov r2, #0x41 - add r0, r3, #0 - ldr r1, [r5, #4] - lsl r2, r2, #6 - add r0, #0xc - str r2, [r1, r0] - add r0, r3, #0 - ldr r2, [r5, #4] - mov r1, #1 - add r0, #0x10 - str r1, [r2, r0] - add r2, r3, #0 - ldr r6, [r5, #4] - mov r0, #0 - add r2, #0x14 - str r0, [r6, r2] - add r2, r3, #0 - ldr r6, [r5, #4] - add r2, #0x18 - str r0, [r6, r2] - sub r0, r3, #3 - ldr r2, [r5, #4] - sub r3, #0x64 - strb r1, [r2, r0] - ldr r0, [r5, #4] - add r2, sp, #0x10 - add r0, r0, r3 - bl NNS_SndStrmAllocChannel - add r0, r5, #0 - ldr r1, [r0, #4] - ldr r0, _021D8BDC ; =0x00003504 - add r0, r1, r0 - mov r1, #0 - bl NNS_SndStrmSetVolume - mov r0, #0x41 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r0, _021D8BE0 ; =MOD04_021D8730 - add r1, r5, #0 - str r0, [sp, #8] - mov r0, #0xd3 - ldr r2, [r1, #4] - lsl r0, r0, #6 - ldr r2, [r2, r0] - add r0, #0x44 - str r2, [sp, #0xc] - ldr r3, [r1, #4] - mov r2, #0x8f - lsl r2, r2, #6 - add r0, r3, r0 - add r2, r3, r2 - mov r1, #1 - lsl r3, r7, #1 - bl NNS_SndStrmSetup - ldr r2, _021D8BCC ; =UNK04_0220FBC8 - ldr r1, _021D8BE4 ; =0x000034F8 - ldr r0, [r2, #4] - mov r5, #0 - str r5, [r0, r1] - add r0, r1, #0 - ldr r3, [r2, #4] - add r0, #0x68 - str r5, [r3, r0] - mov r0, #1 - str r0, [sp, #0x1c] - ldr r0, [r2, #4] - sub r1, #0x30 - add r0, r0, r1 - str r0, [sp, #0x14] - mov r0, #2 - str r0, [sp, #0x18] - bl MOD04_021D8018 - add r1, sp, #0x10 - strb r0, [r1, #0x10] - ldr r0, _021D8BE8 ; =MOD04_021D8860 - str r0, [sp, #0x2c] - add r0, r5, #0 - str r0, [sp, #0x30] - ldr r0, _021D8BCC ; =UNK04_0220FBC8 - ldr r0, [r0, #4] - str r0, [sp, #0x24] - mov r0, #0x8f - lsl r0, r0, #6 - str r0, [sp, #0x28] - add r0, sp, #0x14 - bl VCT_Init - cmp r0, #0 - ldr r0, _021D8BCC ; =UNK04_0220FBC8 - add r2, r5, #0 - ldr r1, [r0, #4] - ldr r0, _021D8BEC ; =0x000034FC - str r2, [r1, r0] - add r0, r4, #0 - bl FUN_020AA7A0 - bl MOD04_021D8BF0 - mov r0, #1 - bl FUN_020AA760 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_021D8BC8: .word UNK04_0220BAC0 -_021D8BCC: .word UNK04_0220FBC8 -_021D8BD0: .word 0x000035DC -_021D8BD4: .word UNK04_0220FBE0 -_021D8BD8: .word 0x00003568 -_021D8BDC: .word 0x00003504 -_021D8BE0: .word MOD04_021D8730 -_021D8BE4: .word 0x000034F8 -_021D8BE8: .word MOD04_021D8860 -_021D8BEC: .word 0x000034FC - - thumb_func_start MOD04_021D8BF0 -MOD04_021D8BF0: ; 0x021D8BF0 - ldr r0, _021D8BFC ; =UNK04_0220FBC8 - ldr r3, _021D8C00 ; =NNS_SndStrmStart - ldr r1, [r0, #4] - ldr r0, _021D8C04 ; =0x00003504 - add r0, r1, r0 - bx r3 - .align 2, 0 -_021D8BFC: .word UNK04_0220FBC8 -_021D8C00: .word NNS_SndStrmStart -_021D8C04: .word 0x00003504 - - thumb_func_start MOD04_021D8C08 -MOD04_021D8C08: ; 0x021D8C08 - push {r3, lr} - ldr r0, _021D8C50 ; =UNK04_0220FBC8 - ldr r1, _021D8C54 ; =0x00003560 - ldr r2, [r0, #4] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D8C1E - sub r1, #0x68 - ldr r1, [r2, r1] - cmp r1, #0 - bne _021D8C24 -_021D8C1E: - bl MOD04_021D8C6C - pop {r3, pc} -_021D8C24: - cmp r1, #1 - bne _021D8C38 - mov r1, #2 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D8C38 - bl MOD04_021D8C6C - pop {r3, pc} -_021D8C38: - ldr r0, _021D8C50 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8C54 ; =0x00003560 - ldr r0, [r1, r0] - mov r1, #1 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D8C4E - bl MOD04_021D8C6C -_021D8C4E: - pop {r3, pc} - .align 2, 0 -_021D8C50: .word UNK04_0220FBC8 -_021D8C54: .word 0x00003560 - - thumb_func_start MOD04_021D8C58 -MOD04_021D8C58: ; 0x021D8C58 - ldr r1, _021D8C64 ; =UNK04_0220FBC8 - ldr r2, [r1, #4] - ldr r1, _021D8C68 ; =0x000034C4 - str r0, [r2, r1] - bx lr - nop -_021D8C64: .word UNK04_0220FBC8 -_021D8C68: .word 0x000034C4 - - thumb_func_start MOD04_021D8C6C -MOD04_021D8C6C: ; 0x021D8C6C - push {r4, lr} - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0] - cmp r1, #0 - beq _021D8CBA - ldr r1, [r0, #4] - ldr r0, _021D8CC0 ; =0x000034C4 - ldr r4, [r1, r0] - bl MIC_StopAutoSampling - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8CC4 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmStop - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8CC4 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmFreeChannel - bl VCT_Cleanup - ldr r1, _021D8CBC ; =UNK04_0220FBC8 - mov r0, #0x35 - ldr r2, [r1, #4] - lsl r0, r0, #8 - ldr r0, [r2, r0] - ldr r1, [r1] - bl FreeToHeapExplicit - mov r1, #0 - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - cmp r4, #0 - str r1, [r0] - str r1, [r0, #4] - beq _021D8CBA - blx r4 -_021D8CBA: - pop {r4, pc} - .align 2, 0 -_021D8CBC: .word UNK04_0220FBC8 -_021D8CC0: .word 0x000034C4 -_021D8CC4: .word 0x00003504 - - thumb_func_start MOD04_021D8CC8 -MOD04_021D8CC8: ; 0x021D8CC8 - push {r3, lr} - sub sp, #0x10 - ldr r0, _021D8CEC ; =UNK04_0220FBC8 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D8CE6 - add r0, sp, #0 - bl FUN_020AD144 - ldr r0, [sp, #4] - cmp r0, #2 - ble _021D8CE6 - ldr r0, [sp] - add sp, #0x10 - pop {r3, pc} -_021D8CE6: - mov r0, #0 - add sp, #0x10 - pop {r3, pc} - .align 2, 0 -_021D8CEC: .word UNK04_0220FBC8 - - thumb_func_start MOD04_021D8CF0 -MOD04_021D8CF0: ; 0x021D8CF0 - ldr r0, _021D8CFC ; =UNK04_0220FBC8 - mov r2, #1 - ldr r1, [r0, #4] - ldr r0, _021D8D00 ; =0x000034FC - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8CFC: .word UNK04_0220FBC8 -_021D8D00: .word 0x000034FC - - thumb_func_start MOD04_021D8D04 -MOD04_021D8D04: ; 0x021D8D04 - ldr r0, _021D8D10 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8D14 ; =0x000034FC - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8D10: .word UNK04_0220FBC8 -_021D8D14: .word 0x000034FC - - .section .rodata + .section .bss - .global UNK04_0220BAC0 -UNK04_0220BAC0: ; 0x0220BAC0 - .byte 0x0D, 0x0D, 0x0D + .global UNK04_0220FBC0 +UNK04_0220FBC0: ; 0x0220FBC0 + .space 0x8 .section .data + .balign 4 + .global UNK04_0220BEA0 UNK04_0220BEA0: ; 0x0220BEA0 .asciz "pokemondpds" + .balign 4 + .global UNK04_0220BEAC UNK04_0220BEAC: ; 0x0220BEAC .asciz "1vTlwb" - - .section .bss - .global UNK04_0220FBC0 -UNK04_0220FBC0: ; 0x0220FBC0 - .space 0x8 - - .global UNK04_0220FBC8 -UNK04_0220FBC8: ; 0x0220FBC8 - .space 0x18 - - .global UNK04_0220FBE0 -UNK04_0220FBE0: ; 0x0220FBE0 - .space 0x880 diff --git a/arm9/modules/04/asm/mod04_021D868C.s b/arm9/modules/04/asm/mod04_021D868C.s new file mode 100644 index 00000000..4921962f --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D868C.s @@ -0,0 +1,845 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD04_021D868C +MOD04_021D868C: ; 0x021D868C + push {r3, r4, r5, lr} + bl MIC_Init + bl PM_Init + mov r0, #1 + bl PM_SetAmp + mov r0, #3 + bl PM_SetAmpGain + ldr r0, _021D8718 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r3, _021D871C ; =0x00003584 + add r5, r2, #0 + str r2, [r1, r3] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #0xc + str r2, [r4, r1] + ldr r4, [r0, #4] + add r1, r3, #4 + str r2, [r4, r1] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #8 + str r2, [r4, r1] + ldr r1, [r0, #4] + add r3, #0x10 + str r2, [r1, r3] + ldr r3, _021D8720 ; =0x00003598 + add r1, r2, #0 +_021D86CE: + ldr r4, [r0, #4] + add r2, r2, #1 + add r4, r4, r5 + add r5, r5, #2 + strh r1, [r4, r3] + cmp r2, #0x10 + blt _021D86CE + ldr r0, _021D8718 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8724 ; =0x000035B8 + str r1, [r2, r0] + mov r0, #1 + bl FUN_020AA770 + bl NNS_SndInit + ldr r0, _021D8718 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8728 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmInit + ldr r1, _021D8718 ; =UNK04_0220FBC8 + mov r0, #0 + ldr r2, [r1, #4] + mov r1, #0xb1 + lsl r1, r1, #6 + add r1, r2, r1 + mov r2, #0x22 + lsl r2, r2, #6 + bl MIi_CpuClearFast + ldr r0, _021D8718 ; =UNK04_0220FBC8 + mov r1, #0 + str r1, [r0, #8] + pop {r3, r4, r5, pc} + nop +_021D8718: .word UNK04_0220FBC8 +_021D871C: .word 0x00003584 +_021D8720: .word 0x00003598 +_021D8724: .word 0x000035B8 +_021D8728: .word 0x00003504 + + thumb_func_start MOD04_021D872C +MOD04_021D872C: ; 0x021D872C + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D8730 +MOD04_021D8730: ; 0x021D8730 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r3, #0 + ldr r4, [sp, #0x14] + cmp r0, #0 + bne _021D8748 + ldr r0, [r6] + mov r1, #0 + add r2, r5, #0 + bl MI_CpuFill8 + pop {r4, r5, r6, pc} +_021D8748: + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _021D876A + add r0, r0, #3 + add r0, r2, r0 + ldr r1, _021D87C0 ; =MOD04_021D872C + mov r2, #0 + bl MIC_StartAutoSamplingAsync + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + strb r2, [r1, r0] +_021D876A: + bl MIC_GetLastSamplingAddress + sub r0, r0, r4 + cmp r0, r5 + bhs _021D8776 + add r4, r4, r5 +_021D8776: + ldr r0, _021D87C4 ; =0x027FFFA8 + ldrh r1, [r0] + mov r0, #2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _021D878E + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + mov r0, #0xb1 + lsl r0, r0, #6 + add r4, r1, r0 +_021D878E: + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D87C8 ; =0x000034FC + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D87A2 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020AABDC +_021D87A2: + ldr r0, [r6] + add r1, r5, #0 + mov r2, #0 + bl FUN_020AA824 + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D87CC ; =0x00003564 + strb r2, [r1, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_021D87B8: .word UNK04_0220FBC8 +_021D87BC: .word 0x00003565 +_021D87C0: .word MOD04_021D872C +_021D87C4: .word 0x027FFFA8 +_021D87C8: .word 0x000034FC +_021D87CC: .word 0x00003564 + + thumb_func_start MOD04_021D87D0 +MOD04_021D87D0: ; 0x021D87D0 + push {r4, lr} + ldr r1, _021D8810 ; =UNK04_0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8814 ; =0x00003560 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D880A + bl FUN_020ACD54 + add r4, r0, #0 + bne _021D87EA + mov r0, #0 + pop {r4, pc} +_021D87EA: + mov r1, #0 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D87FE + add r0, r4, #0 + bl FUN_020ACC84 + mov r0, #0 + pop {r4, pc} +_021D87FE: + ldr r0, _021D8810 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8814 ; =0x00003560 + str r4, [r1, r0] + mov r0, #1 + pop {r4, pc} +_021D880A: + mov r0, #0 + pop {r4, pc} + nop +_021D8810: .word UNK04_0220FBC8 +_021D8814: .word 0x00003560 + + thumb_func_start MOD04_021D8818 +MOD04_021D8818: ; 0x021D8818 + push {r3, lr} + ldr r0, _021D8858 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8852 + ldr r1, [r0, #0xc] + cmp r1, #4 + bne _021D8852 + mov r1, #0 + bl FUN_020ACAB0 + cmp r0, #0 + beq _021D883A + mov r0, #0 + pop {r3, pc} +_021D883A: + ldr r0, _021D8858 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + bl FUN_020AADCC + cmp r0, #0 + beq _021D884E + mov r0, #1 + pop {r3, pc} +_021D884E: + mov r0, #0 + pop {r3, pc} +_021D8852: + mov r0, #0 + pop {r3, pc} + nop +_021D8858: .word UNK04_0220FBC8 +_021D885C: .word 0x00003560 + + thumb_func_start MOD04_021D8860 +MOD04_021D8860: ; 0x021D8860 + push {r4, lr} + add r4, r2, #0 + cmp r1, #0xc + bhi _021D8902 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8874: ; jump table + .short _021D8902 - _021D8874 - 2 ; case 0 + .short _021D888E - _021D8874 - 2 ; case 1 + .short _021D88F4 - _021D8874 - 2 ; case 2 + .short _021D88FC - _021D8874 - 2 ; case 3 + .short _021D88CE - _021D8874 - 2 ; case 4 + .short _021D8902 - _021D8874 - 2 ; case 5 + .short _021D8902 - _021D8874 - 2 ; case 6 + .short _021D88DE - _021D8874 - 2 ; case 7 + .short _021D88AE - _021D8874 - 2 ; case 8 + .short _021D88C2 - _021D8874 - 2 ; case 9 + .short _021D8902 - _021D8874 - 2 ; case 10 + .short _021D88FC - _021D8874 - 2 ; case 11 + .short _021D88FC - _021D8874 - 2 ; case 12 +_021D888E: + ldr r0, _021D8904 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8908 ; =0x00003560 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D88AA + add r0, r4, #0 + mov r1, #3 + bl FUN_020ACAB0 + add r0, r4, #0 + bl FUN_020ACC84 + pop {r4, pc} +_021D88AA: + str r4, [r2, r0] + pop {r4, pc} +_021D88AE: + add r0, r4, #0 + mov r1, #0 + bl FUN_020ACAB0 + add r0, r4, #0 + bl MOD04_021D8910 + bl MOD04_021D8C6C + pop {r4, pc} +_021D88C2: + add r0, r4, #0 + bl MOD04_021D8910 + bl MOD04_021D8C6C + pop {r4, pc} +_021D88CE: + add r0, r4, #0 + mov r1, #4 + bl FUN_020ACAB0 + add r0, r4, #0 + bl MOD04_021D8910 + pop {r4, pc} +_021D88DE: + add r0, r4, #0 + bl FUN_020AADCC + cmp r0, #0 + beq _021D8902 + ldr r0, _021D8904 ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D890C ; =0x000034F8 + str r2, [r1, r0] + pop {r4, pc} +_021D88F4: + add r0, r4, #0 + bl MOD04_021D8910 + pop {r4, pc} +_021D88FC: + add r0, r4, #0 + bl MOD04_021D8910 +_021D8902: + pop {r4, pc} + .align 2, 0 +_021D8904: .word UNK04_0220FBC8 +_021D8908: .word 0x00003560 +_021D890C: .word 0x000034F8 + + thumb_func_start MOD04_021D8910 +MOD04_021D8910: ; 0x021D8910 + push {r4, lr} + ldr r1, _021D893C ; =UNK04_0220FBC8 + add r4, r0, #0 + ldr r2, [r1, #4] + ldr r1, _021D8940 ; =0x00003560 + ldr r1, [r2, r1] + cmp r4, r1 + bne _021D8936 + bl FUN_020AACFC + add r0, r4, #0 + bl FUN_020ACC84 + ldr r0, _021D893C ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8940 ; =0x00003560 + str r2, [r1, r0] + pop {r4, pc} +_021D8936: + bl FUN_020ACC84 + pop {r4, pc} + .align 2, 0 +_021D893C: .word UNK04_0220FBC8 +_021D8940: .word 0x00003560 + + thumb_func_start MOD04_021D8944 +MOD04_021D8944: ; 0x021D8944 + push {r4, r5, r6, lr} + bl OS_GetTick + add r4, r0, #0 + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + add r5, r1, #0 + ldr r0, [r0, #0xc] + sub r1, r4, r0 + mov r0, #0xfa + lsl r0, r0, #8 + mul r0, r1 + ldr r1, _021D8A40 ; =0x000082EA + bl _u32_div_f + ldr r1, _021D8A3C ; =UNK04_0220FBC8 + ldr r3, _021D8A44 ; =0x0000411A + ldr r2, [r1, #8] + sub r0, r0, r3 + add r2, r2, r0 + ldr r0, _021D8A48 ; =0xFFFFD8F0 + str r2, [r1, #8] + cmp r2, r0 + bge _021D8976 + mov r0, #0 + str r0, [r1, #8] +_021D8976: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + str r4, [r0, #0xc] + str r5, [r0, #0x10] + bl VCT_Main + ldr r4, _021D8A3C ; =UNK04_0220FBC8 + ldr r0, _021D8A44 ; =0x0000411A + ldr r1, [r4, #8] + cmp r1, r0 + blt _021D899C + add r6, r0, #0 + add r5, r0, #0 +_021D898E: + bl VCT_Main + ldr r0, [r4, #8] + sub r0, r0, r6 + str r0, [r4, #8] + cmp r0, r5 + bge _021D898E +_021D899C: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D89EC + sub r0, r0, #4 + ldr r0, [r2, r0] + cmp r0, #3 + bhi _021D89E2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D89BC: ; jump table + .short _021D89C4 - _021D89BC - 2 ; case 0 + .short _021D89CC - _021D89BC - 2 ; case 1 + .short _021D89D4 - _021D89BC - 2 ; case 2 + .short _021D89DC - _021D89BC - 2 ; case 3 +_021D89C4: + mov r0, #3 + bl PM_SetAmpGain + b _021D89E2 +_021D89CC: + mov r0, #2 + bl PM_SetAmpGain + b _021D89E2 +_021D89D4: + mov r0, #1 + bl PM_SetAmpGain + b _021D89E2 +_021D89DC: + mov r0, #0 + bl PM_SetAmpGain +_021D89E2: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + str r2, [r1, r0] +_021D89EC: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8A00 + cmp r0, #1 + beq _021D8A3A + cmp r0, #2 + pop {r4, r5, r6, pc} +_021D8A00: + bl MOD04_021D8018 + cmp r0, #0 + bne _021D8A1E + mov r0, #1 + bl MOD04_021D87D0 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] + pop {r4, r5, r6, pc} +_021D8A1E: + bl MOD04_021D8018 + cmp r0, #1 + bne _021D8A3A + mov r0, #0 + bl MOD04_021D8818 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] +_021D8A3A: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8A3C: .word UNK04_0220FBC8 +_021D8A40: .word 0x000082EA +_021D8A44: .word 0x0000411A +_021D8A48: .word 0xFFFFD8F0 +_021D8A4C: .word 0x0000358C +_021D8A50: .word 0x000034F8 + + thumb_func_start MOD04_021D8A54 +MOD04_021D8A54: ; 0x021D8A54 + push {r3, lr} + ldr r3, _021D8A78 ; =UNK04_0220FBC8 + ldr r3, [r3, #4] + cmp r3, #0 + bne _021D8A62 + mov r0, #0 + pop {r3, pc} +_021D8A62: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl VCT_HandleData + cmp r0, #0 + beq _021D8A72 + mov r0, #1 + pop {r3, pc} +_021D8A72: + mov r0, #0 + pop {r3, pc} + nop +_021D8A78: .word UNK04_0220FBC8 + + thumb_func_start MOD04_021D8A7C +MOD04_021D8A7C: ; 0x021D8A7C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r2, _021D8BC8 ; =UNK04_0220BAC0 + add r4, r1, #0 + ldrb r3, [r2] + add r1, sp, #0x10 + add r5, r0, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + ldrb r2, [r2, #2] + strb r3, [r1, #1] + strb r2, [r1, #2] + ldr r1, _021D8BCC ; =UNK04_0220FBC8 + ldr r1, [r1, #4] + cmp r1, #0 + bne _021D8ACA + ldr r1, _021D8BD0 ; =0x000035DC + bl AllocFromHeap + ldr r2, _021D8BCC ; =UNK04_0220FBC8 + mov r1, #0x35 + str r0, [r2] + add r0, #0x1f + lsr r0, r0, #5 + lsl r0, r0, #5 + str r0, [r2, #4] + lsl r1, r1, #8 + str r5, [r0, r1] + add r0, r1, #0 + ldr r5, _021D8BD4 ; =UNK04_0220FBE0 + ldr r3, [r2, #4] + sub r0, #0x40 + str r5, [r3, r0] + ldr r0, [r2, #4] + mov r3, #0 + sub r1, #0x3c + str r3, [r0, r1] + bl MOD04_021D868C +_021D8ACA: + ldr r5, _021D8BCC ; =UNK04_0220FBC8 + mov r7, #0x11 + ldr r0, [r5, #4] + ldr r3, _021D8BD8 ; =0x00003568 + mov r1, #3 + str r1, [r0, r3] + add r1, r3, #0 + ldr r0, [r5, #4] + sub r1, #0xa8 + ldr r2, [r0, r1] + add r1, r3, #4 + str r2, [r0, r1] + lsl r7, r7, #6 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r7, #1 + add r0, #8 + str r2, [r1, r0] + mov r2, #0x41 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r2, #6 + add r0, #0xc + str r2, [r1, r0] + add r0, r3, #0 + ldr r2, [r5, #4] + mov r1, #1 + add r0, #0x10 + str r1, [r2, r0] + add r2, r3, #0 + ldr r6, [r5, #4] + mov r0, #0 + add r2, #0x14 + str r0, [r6, r2] + add r2, r3, #0 + ldr r6, [r5, #4] + add r2, #0x18 + str r0, [r6, r2] + sub r0, r3, #3 + ldr r2, [r5, #4] + sub r3, #0x64 + strb r1, [r2, r0] + ldr r0, [r5, #4] + add r2, sp, #0x10 + add r0, r0, r3 + bl NNS_SndStrmAllocChannel + add r0, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BDC ; =0x00003504 + add r0, r1, r0 + mov r1, #0 + bl NNS_SndStrmSetVolume + mov r0, #0x41 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021D8BE0 ; =MOD04_021D8730 + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #0xd3 + ldr r2, [r1, #4] + lsl r0, r0, #6 + ldr r2, [r2, r0] + add r0, #0x44 + str r2, [sp, #0xc] + ldr r3, [r1, #4] + mov r2, #0x8f + lsl r2, r2, #6 + add r0, r3, r0 + add r2, r3, r2 + mov r1, #1 + lsl r3, r7, #1 + bl NNS_SndStrmSetup + ldr r2, _021D8BCC ; =UNK04_0220FBC8 + ldr r1, _021D8BE4 ; =0x000034F8 + ldr r0, [r2, #4] + mov r5, #0 + str r5, [r0, r1] + add r0, r1, #0 + ldr r3, [r2, #4] + add r0, #0x68 + str r5, [r3, r0] + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, [r2, #4] + sub r1, #0x30 + add r0, r0, r1 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + bl MOD04_021D8018 + add r1, sp, #0x10 + strb r0, [r1, #0x10] + ldr r0, _021D8BE8 ; =MOD04_021D8860 + str r0, [sp, #0x2c] + add r0, r5, #0 + str r0, [sp, #0x30] + ldr r0, _021D8BCC ; =UNK04_0220FBC8 + ldr r0, [r0, #4] + str r0, [sp, #0x24] + mov r0, #0x8f + lsl r0, r0, #6 + str r0, [sp, #0x28] + add r0, sp, #0x14 + bl VCT_Init + cmp r0, #0 + ldr r0, _021D8BCC ; =UNK04_0220FBC8 + add r2, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BEC ; =0x000034FC + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_020AA7A0 + bl MOD04_021D8BF0 + mov r0, #1 + bl FUN_020AA760 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021D8BC8: .word UNK04_0220BAC0 +_021D8BCC: .word UNK04_0220FBC8 +_021D8BD0: .word 0x000035DC +_021D8BD4: .word UNK04_0220FBE0 +_021D8BD8: .word 0x00003568 +_021D8BDC: .word 0x00003504 +_021D8BE0: .word MOD04_021D8730 +_021D8BE4: .word 0x000034F8 +_021D8BE8: .word MOD04_021D8860 +_021D8BEC: .word 0x000034FC + + thumb_func_start MOD04_021D8BF0 +MOD04_021D8BF0: ; 0x021D8BF0 + ldr r0, _021D8BFC ; =UNK04_0220FBC8 + ldr r3, _021D8C00 ; =NNS_SndStrmStart + ldr r1, [r0, #4] + ldr r0, _021D8C04 ; =0x00003504 + add r0, r1, r0 + bx r3 + .align 2, 0 +_021D8BFC: .word UNK04_0220FBC8 +_021D8C00: .word NNS_SndStrmStart +_021D8C04: .word 0x00003504 + + thumb_func_start MOD04_021D8C08 +MOD04_021D8C08: ; 0x021D8C08 + push {r3, lr} + ldr r0, _021D8C50 ; =UNK04_0220FBC8 + ldr r1, _021D8C54 ; =0x00003560 + ldr r2, [r0, #4] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D8C1E + sub r1, #0x68 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D8C24 +_021D8C1E: + bl MOD04_021D8C6C + pop {r3, pc} +_021D8C24: + cmp r1, #1 + bne _021D8C38 + mov r1, #2 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C38 + bl MOD04_021D8C6C + pop {r3, pc} +_021D8C38: + ldr r0, _021D8C50 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8C54 ; =0x00003560 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C4E + bl MOD04_021D8C6C +_021D8C4E: + pop {r3, pc} + .align 2, 0 +_021D8C50: .word UNK04_0220FBC8 +_021D8C54: .word 0x00003560 + + thumb_func_start MOD04_021D8C58 +MOD04_021D8C58: ; 0x021D8C58 + ldr r1, _021D8C64 ; =UNK04_0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8C68 ; =0x000034C4 + str r0, [r2, r1] + bx lr + nop +_021D8C64: .word UNK04_0220FBC8 +_021D8C68: .word 0x000034C4 + + thumb_func_start MOD04_021D8C6C +MOD04_021D8C6C: ; 0x021D8C6C + push {r4, lr} + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0] + cmp r1, #0 + beq _021D8CBA + ldr r1, [r0, #4] + ldr r0, _021D8CC0 ; =0x000034C4 + ldr r4, [r1, r0] + bl MIC_StopAutoSampling + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmStop + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmFreeChannel + bl VCT_Cleanup + ldr r1, _021D8CBC ; =UNK04_0220FBC8 + mov r0, #0x35 + ldr r2, [r1, #4] + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r1, [r1] + bl FreeToHeapExplicit + mov r1, #0 + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + cmp r4, #0 + str r1, [r0] + str r1, [r0, #4] + beq _021D8CBA + blx r4 +_021D8CBA: + pop {r4, pc} + .align 2, 0 +_021D8CBC: .word UNK04_0220FBC8 +_021D8CC0: .word 0x000034C4 +_021D8CC4: .word 0x00003504 + + thumb_func_start MOD04_021D8CC8 +MOD04_021D8CC8: ; 0x021D8CC8 + push {r3, lr} + sub sp, #0x10 + ldr r0, _021D8CEC ; =UNK04_0220FBC8 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D8CE6 + add r0, sp, #0 + bl FUN_020AD144 + ldr r0, [sp, #4] + cmp r0, #2 + ble _021D8CE6 + ldr r0, [sp] + add sp, #0x10 + pop {r3, pc} +_021D8CE6: + mov r0, #0 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 +_021D8CEC: .word UNK04_0220FBC8 + + thumb_func_start MOD04_021D8CF0 +MOD04_021D8CF0: ; 0x021D8CF0 + ldr r0, _021D8CFC ; =UNK04_0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8D00 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8CFC: .word UNK04_0220FBC8 +_021D8D00: .word 0x000034FC + + thumb_func_start MOD04_021D8D04 +MOD04_021D8D04: ; 0x021D8D04 + ldr r0, _021D8D10 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8D14 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8D10: .word UNK04_0220FBC8 +_021D8D14: .word 0x000034FC + + .section .rodata + + .global UNK04_0220BAC0 +UNK04_0220BAC0: ; 0x0220BAC0 + .byte 0x0D, 0x0D, 0x0D + + .section .bss + + .global UNK04_0220FBC8 +UNK04_0220FBC8: ; 0x0220FBC8 + .space 0x18 + + .global UNK04_0220FBE0 +UNK04_0220FBE0: ; 0x0220FBE0 + .space 0x880 diff --git a/arm9/modules/04/asm/mod04_021D8D18.s b/arm9/modules/04/asm/mod04_021D8D18.s new file mode 100644 index 00000000..b91bc85a --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D8D18.s @@ -0,0 +1,1233 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021D8D18 +MOD04_021D8D18: ; 0x021D8D18 + stmdb sp!, {r4, lr} + ldr r2, _021D8D58 ; =UNK04_02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021D8D58 ; =UNK04_02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0, #4] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021D8D58: .word UNK04_02210468 +_021D8D5C: .word 0x000013D8 + arm_func_end MOD04_021D8D18 + + arm_func_start MOD04_021D8D60 +MOD04_021D8D60: ; 0x021D8D60 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + ldr r4, _021D8EE0 ; =UNK04_0221046C + mov r3, #0 + ldr r5, [r4, #4] + ldr ip, [r4] + cmp r5, r3 + mov r5, r0 + mov r6, r1 + mov r4, r2 + cmpeq ip, r3 + bne _021D8DC0 + ldr r0, _021D8EE4 ; =UNK04_0220BEF8 + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =UNK04_0220BF04 + ldr r2, _021D8EE4 ; =UNK04_0220BEF8 + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021D8E18 + add sp, sp, #0x98 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_021D8DC0: + ldr r0, _021D8EEC ; =UNK04_0220BF0C + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =UNK04_0220BF04 + ldr r2, _021D8EEC ; =UNK04_0220BF0C + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl strlen + mov r3, r0 + ldr r1, _021D8EF0 ; =UNK04_0220BF14 + mov r0, r5 + mov r2, r6 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E18: + ldr r1, _021D8EE0 ; =UNK04_0221046C + add r0, sp, #0 + bl MOD04_021D9F78 + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF4 ; =UNK04_0221048C + add r1, sp, #0 + ldr r2, [r0] + mov r0, r5 + bl MOD04_021D9C2C + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #8 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF8 ; =UNK04_02210460 + ldr r0, [r0] + cmp r0, #1 + bne _021D8E94 + ldr r0, _021D8EFC ; =UNK04_0220BF1C + bl strlen + mov r3, r0 + ldr r1, _021D8F00 ; =UNK04_0220BF20 + ldr r2, _021D8EFC ; =UNK04_0220BF1C + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E94: + mov r0, r4 + bl wcslen + cmp r0, #0 + beq _021D8ED4 + mov r0, r4 + bl wcslen + mov r3, r0 + ldr r1, _021D8F04 ; =UNK04_0220BF28 + mov r0, r5 + mov r2, r4 + mov r3, r3, lsl #1 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8ED4: + mov r0, #0 + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D8EE0: .word UNK04_0221046C +_021D8EE4: .word UNK04_0220BEF8 +_021D8EE8: .word UNK04_0220BF04 +_021D8EEC: .word UNK04_0220BF0C +_021D8EF0: .word UNK04_0220BF14 +_021D8EF4: .word UNK04_0221048C +_021D8EF8: .word UNK04_02210460 +_021D8EFC: .word UNK04_0220BF1C +_021D8F00: .word UNK04_0220BF20 +_021D8F04: .word UNK04_0220BF28 + arm_func_end MOD04_021D8D60 + + arm_func_start MOD04_021D8F08 +MOD04_021D8F08: ; 0x021D8F08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D91BC ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + str r1, [sp] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C0 ; =UNK04_0220BF34 + bl MOD04_021DA388 + str r0, [sp] + cmp r0, #0 + beq _021D8F40 + bl MOD04_021DCA84 +_021D8F40: + ldr r0, _021D91BC ; =UNK04_02210468 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D91C4 ; =errno + str r2, [sp] + str r2, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C8 ; =UNK04_0220BF3C + bl MOD04_021DA388 + bl atol + ldr r1, _021D91C4 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021D8F9C + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xc + ldmia sp!, {r4, r5, pc} +_021D8F9C: + cmp r0, #0xc8 + beq _021D8FC8 + ldr r2, _021D91BC ; =UNK04_02210468 + ldr r1, _021D91D0 ; =0x000059D8 + ldr r2, [r2] + add r1, r0, r1 + add r0, r2, #0x1000 + str r1, [r0, #8] + add sp, sp, #4 + mov r0, #0x12 + ldmia sp!, {r4, r5, pc} +_021D8FC8: + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91D4 ; =0x0000100C + ldr r3, [r0] + ldr r1, _021D91D8 ; =UNK04_0220BF48 + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r2, r3, r2 + mov r3, #4 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021D9014 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9014: + ldr r1, _021D91BC ; =UNK04_02210468 + ldr r0, _021D91D4 ; =0x0000100C + ldr r2, [r1] + add r1, sp, #0 + add r0, r2, r0 + mov r2, #0xa + bl strtol + ldr r2, _021D91BC ; =UNK04_02210468 + ldr r1, _021D91D4 ; =0x0000100C + ldr r5, [r2] + mov r4, r0 + add r0, r5, r1 + bl strlen + ldr r1, _021D91D4 ; =0x0000100C + ldr r2, [sp] + add r1, r5, r1 + add r0, r1, r0 + cmp r2, r0 + ldrne r1, _021D91CC ; =0x00004E85 + addne r0, r5, #0x1000 + strne r1, [r0, #8] + addne sp, sp, #4 + movne r0, #0xc + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D91DC ; =0x00004E20 + add r1, r5, #0x1000 + add r0, r4, r0 + str r0, [r1, #8] + cmp r4, #0x64 + bge _021D91B0 + ldr ip, _021D91BC ; =UNK04_02210468 + mov r0, #0 + ldr r1, [ip] + ldr r5, _021D91E0 ; =0x00001052 + add r1, r1, #0x1000 + strb r0, [r1, #0x52] + ldr r2, [ip] + ldr r1, _021D91E4 ; =UNK04_0220BF54 + add r2, r2, #0x1000 + strb r0, [r2, #0x1f] + ldr r2, [ip] + ldr r3, _021D91E8 ; =0x0000012D + add r2, r2, #0x1000 + strb r0, [r2, #0x17f] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x10] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x188] + ldr r2, [ip] + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + add r2, r2, r5 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91EC ; =0x0000101F + ldr r3, [r0] + ldr r1, _021D91F0 ; =UNK04_0220BF5C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x33 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91F4 ; =0x0000117F + ldr r3, [r0] + ldr r1, _021D91F8 ; =UNK04_0220BF64 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #9 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91FC ; =0x00001010 + ldr r3, [r0] + ldr r1, _021D9200 ; =UNK04_0220BF70 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0xf + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D9204 ; =0x00001188 + ldr r3, [r0] + ldr r1, _021D9208 ; =UNK04_0220BF7C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x41 + bl MOD04_021DA2F4 + ldr r0, _021D91BC ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + cmp r4, #0x28 + add r0, r0, #0x1000 + strb r1, [r0, #0x1b3] + ldrne r0, _021D920C ; =UNK04_02210464 + movne r1, #1 + strne r1, [r0] + ldreq r0, _021D920C ; =UNK04_02210464 + moveq r1, #2 + streq r1, [r0] +_021D91B0: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D91BC: .word UNK04_02210468 +_021D91C0: .word UNK04_0220BF34 +_021D91C4: .word errno +_021D91C8: .word UNK04_0220BF3C +_021D91CC: .word 0x00004E85 +_021D91D0: .word 0x000059D8 +_021D91D4: .word 0x0000100C +_021D91D8: .word UNK04_0220BF48 +_021D91DC: .word 0x00004E20 +_021D91E0: .word 0x00001052 +_021D91E4: .word UNK04_0220BF54 +_021D91E8: .word 0x0000012D +_021D91EC: .word 0x0000101F +_021D91F0: .word UNK04_0220BF5C +_021D91F4: .word 0x0000117F +_021D91F8: .word UNK04_0220BF64 +_021D91FC: .word 0x00001010 +_021D9200: .word UNK04_0220BF70 +_021D9204: .word 0x00001188 +_021D9208: .word UNK04_0220BF7C +_021D920C: .word UNK04_02210464 + arm_func_end MOD04_021D8F08 + + arm_func_start MOD04_021D9210 +MOD04_021D9210: ; 0x021D9210 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D93F4 ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + add r2, r0, #0x1000 + ldr r0, [r2, #0x314] + ldr r5, [r2, #0x20c] + ldr r4, [r2, #0x210] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021D9260 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9260: + bl MOD04_021D8F08 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0xe + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r1, _021D93F8 ; =0x00004E84 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #8] + cmp r2, r1 + bge _021D9334 + ldr r0, _021D93FC ; =0x00004E22 + cmp r2, r0 + bne _021D9328 + ldr r0, _021D9400 ; =UNK04_0220BF88 + ldr r1, _021D9404 ; =0x0000071F + blx r5 + movs r5, r0 + bne _021D92D0 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021D92D0: + add r1, r5, #0x1f + ldr r0, _021D9408 ; =UNK04_0221046C + bic r1, r1, #0x1f + bl FUN_02096710 + cmp r0, #1 + beq _021D9318 + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xf + ldmia sp!, {r4, r5, pc} +_021D9318: + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 +_021D9328: + add sp, sp, #4 + mov r0, #0x15 + ldmia sp!, {r4, r5, pc} +_021D9334: + ldr r0, _021D9410 ; =0x00004E88 + cmp r2, r0 + beq _021D9350 + ldr r0, _021D9414 ; =0x00004E8C + cmp r2, r0 + beq _021D9378 + b _021D93E8 +_021D9350: + ldr r0, _021D9408 ; =UNK04_0221046C + bl FUN_02096570 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9410 ; =0x00004E88 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x10 + ldmia sp!, {r4, r5, pc} +_021D9378: + ldr r0, _021D9400 ; =UNK04_0220BF88 + mov r1, #0x700 + blx r5 + movs r5, r0 + bne _021D93AC + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93AC: + add r0, r5, #0x1f + bic r0, r0, #0x1f + bl DWCi_AUTH_MakeWiFiID + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93E8: + mov r0, #0x12 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D93F4: .word UNK04_02210468 +_021D93F8: .word 0x00004E84 +_021D93FC: .word 0x00004E22 +_021D9400: .word UNK04_0220BF88 +_021D9404: .word 0x0000071F +_021D9408: .word UNK04_0221046C +_021D940C: .word UNK04_0220BF98 +_021D9410: .word 0x00004E88 +_021D9414: .word 0x00004E8C + arm_func_end MOD04_021D9210 + + arm_func_start MOD04_021D9418 +MOD04_021D9418: ; 0x021D9418 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, #0 + mov r0, #1 + ldr r7, _021D96D4 ; =0x00001388 + ldr fp, _021D96D8 ; =0x000082EA + ldr r5, _021D96DC ; =UNK04_02210468 + ldr r4, _021D96E0 ; =0x000013D8 + mov r6, sb + str sb, [sp, #8] + str sb, [sp, #0xc] + str r0, [sp, #4] +_021D9448: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x314] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021D9470 + ldr r0, _021D96E4 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021D9470: + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #8 + beq _021D9518 + ldr r0, _021D96E8 ; =0x00004E84 + str r0, [r1, #8] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #7 + bne _021D94C0 + mov r0, #0x14 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94C0: + cmp sb, #2 + ble _021D9508 + cmp r0, #2 + bne _021D94E0 + mov r0, #9 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94E0: + cmp r0, #3 + bne _021D94F8 + mov r0, #0xb + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94F8: + mov r0, #0xd + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9508: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D9518: + bl MOD04_021D9210 + cmp r0, #0x10 + beq _021D9544 + cmp r0, #0x11 + beq _021D956C + cmp r0, #0x15 + bne _021D9578 + mov r0, #0x15 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9544: + cmp sb, #2 + ble _021D955C + mov r0, #0x10 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D955C: + ldr r0, [sp, #8] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D956C: + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9578: + cmp sb, #2 + blt _021D958C + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D958C: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] +_021D9598: + bl OS_GetTick + mov r8, r0 + mov sl, r1 + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + ldr r3, [sp, #0xc] + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + bhs _021D965C +_021D95D4: + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #0x3f0] + cmp r0, #1 + bne _021D961C + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + mov r0, #0x14 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D961C: + add r0, r2, r4 + bl OS_UnlockMutex + mov r0, r7 + bl OS_Sleep + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + mov r3, r6 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + blo _021D95D4 +_021D965C: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + bl MOD04_021DAE4C + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r0, [sp] + bl MOD04_021D96EC + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #4] + cmp r0, #0 + beq _021D96C0 + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D96C0: + add r0, r2, r4 + bl OS_UnlockMutex + b _021D9448 + arm_func_end MOD04_021D9418 + + arm_func_start MOD04_021D96CC +MOD04_021D96CC: ; 0x021D96CC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021D96D4: .word 0x00001388 +_021D96D8: .word 0x000082EA +_021D96DC: .word UNK04_02210468 +_021D96E0: .word 0x000013D8 +_021D96E4: .word 0x00001B34 +_021D96E8: .word 0x00004E84 + arm_func_end MOD04_021D96CC + + arm_func_start MOD04_021D96EC +MOD04_021D96EC: ; 0x021D96EC + stmdb sp!, {r4, lr} + ldr r1, _021D97E0 ; =UNK04_0220BEB4 + mov r4, r0 + ldr r0, [r1] + ldr r1, _021D97E4 ; =UNK04_0220BFA4 + bl strcmp + cmp r0, #0 + ldrne r0, _021D97E0 ; =UNK04_0220BEB4 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021D97E8 ; =UNK04_02210468 + ldr r1, _021D97E0 ; =UNK04_0220BEB4 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x20c] + str r2, [r1, #0xc] + ldr r2, [r0, #0x210] + str r2, [r1, #0x10] + ldr r0, [r0, #0x314] + bl MOD04_021DB608 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + cmp r4, #1 + bne _021D9758 + ldr r0, _021D97EC ; =UNK04_0221046C + bl DWCi_BM_GetWiFiInfo +_021D9758: + ldr r0, _021D97E8 ; =UNK04_02210468 + ldr r2, _021D97F0 ; =0x000011CC + ldr r3, [r0] + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r1, r3, #0x1200 + add r2, r3, r2 + bl MOD04_021D8D60 + ldr r2, _021D97E8 ; =UNK04_02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r1, [r0, #4] + cmp r1, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, [r0, #0x314] + bl MOD04_021DB570 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, _021D97F4 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021D97E8 ; =UNK04_02210468 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + bl MOD04_021DB4A4 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D97E0: .word UNK04_0220BEB4 +_021D97E4: .word UNK04_0220BFA4 +_021D97E8: .word UNK04_02210468 +_021D97EC: .word UNK04_0221046C +_021D97F0: .word 0x000011CC +_021D97F4: .word OSi_ThreadInfo + arm_func_end MOD04_021D96EC + + arm_func_start MOD04_021D97F8 +MOD04_021D97F8: ; 0x021D97F8 + stmdb sp!, {r4, lr} + ldr r1, _021D9874 ; =UNK04_02210468 + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + bne _021D981C + mov r1, #0 + mov r2, #0x1c4 + bl MI_CpuFill8 +_021D981C: + ldr r1, _021D9874 ; =UNK04_02210468 + ldr r0, _021D9878 ; =0x00001008 + ldr r2, [r1] + mov r1, r4 + add r0, r2, r0 + mov r2, #0x1c4 + bl MI_CpuCopy8 + ldr r1, [r4] + ldr r0, _021D987C ; =0x00004E20 + cmp r1, r0 + blt _021D9854 + ldr r0, _021D9880 ; =0x00007530 + cmp r1, r0 + blt _021D985C +_021D9854: + ldr r0, _021D9884 ; =0x00005206 + str r0, [r4] +_021D985C: + ldr r1, [r4] + ldr r0, _021D9888 ; =0x00004E84 + cmp r1, r0 + rsbge r0, r1, #0 + strge r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D9874: .word UNK04_02210468 +_021D9878: .word 0x00001008 +_021D987C: .word 0x00004E20 +_021D9880: .word 0x00007530 +_021D9884: .word 0x00005206 +_021D9888: .word 0x00004E84 + arm_func_end MOD04_021D97F8 + + arm_func_start MOD04_021D988C +MOD04_021D988C: ; 0x021D988C + stmdb sp!, {r4, lr} + ldr r0, _021D98D4 ; =UNK04_02210468 + ldr r1, [r0] + cmp r1, #0 + moveq r0, #0x16 + ldmeqia sp!, {r4, pc} + ldr r0, _021D98D8 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021D98D4 ; =UNK04_02210468 + ldr r0, _021D98D8 ; =0x000013D8 + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1, #4] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D98D4: .word UNK04_02210468 +_021D98D8: .word 0x000013D8 + arm_func_end MOD04_021D988C + + arm_func_start MOD04_021D98DC +MOD04_021D98DC: ; 0x021D98DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9914 ; =UNK04_02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9918 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9914: .word UNK04_02210468 +_021D9918: .word 0x00001318 + arm_func_end MOD04_021D98DC + + arm_func_start MOD04_021D991C +MOD04_021D991C: ; 0x021D991C + stmdb sp!, {r4, lr} + ldr r0, _021D996C ; =UNK04_02210468 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + ldr r4, [r1, #0x210] + cmp r0, #0 + beq _021D9948 + bl MOD04_021DAE4C +_021D9948: + ldr r1, _021D996C ; =UNK04_02210468 + ldr r0, _021D9970 ; =UNK04_0220BFC4 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021D996C ; =UNK04_02210468 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D996C: .word UNK04_02210468 +_021D9970: .word UNK04_0220BFC4 + arm_func_end MOD04_021D991C + + arm_func_start MOD04_021D9974 +MOD04_021D9974: ; 0x021D9974 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A10 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r2, _021D9A0C ; =UNK04_02210468 + mov r3, #1 + ldr r0, [r2] + ldr r1, _021D9A10 ; =0x000013D8 + add r0, r0, #0x1000 + str r3, [r0, #0x3f0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + cmp r0, #0 + beq _021D99DC + bl MOD04_021DB440 +_021D99DC: + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A14 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9A0C: .word UNK04_02210468 +_021D9A10: .word 0x000013D8 +_021D9A14: .word 0x00001318 + arm_func_end MOD04_021D9974 + + arm_func_start MOD04_021D9A18 +MOD04_021D9A18: ; 0x021D9A18 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC0 ; =0x000013D8 + ldr r1, [r1] + add r0, r1, r0 + bl OS_InitMutex + ldr r1, _021D9ABC ; =UNK04_02210468 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3f0] + ldr r1, [r1] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + beq _021D9A74 + ldr r0, _021D9AC4 ; =0x00001318 + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021D9A74: + ldr r2, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr lr, [r2] + mov r3, #0x1000 + ldr r1, _021D9AC8 ; =MOD04_021D9418 + str r3, [sp] + mov ip, #0x10 + add r0, lr, r0 + add r3, lr, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021D9ABC: .word UNK04_02210468 +_021D9AC0: .word 0x000013D8 +_021D9AC4: .word 0x00001318 +_021D9AC8: .word MOD04_021D9418 + arm_func_end MOD04_021D9A18 + + arm_func_start MOD04_021D9ACC +MOD04_021D9ACC: ; 0x021D9ACC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021D9BFC ; =UNK04_02210468 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + addne sp, sp, #4 + ldr r2, [r5, #0x40] + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C00 ; =UNK04_0220BFD4 + ldr r1, _021D9C04 ; =0x000013F4 + blx r2 + ldr r1, _021D9BFC ; =UNK04_02210468 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021D9C04 ; =0x000013F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021D9BFC ; =UNK04_02210468 + ldr r2, _021D9C08 ; =0x00001008 + ldr r0, [r1] + ldr r3, _021D9C0C ; =UNK04_02210464 + add r0, r0, #0x1000 + str r4, [r0, #0x314] + ldr r0, [r1] + mov r1, #0 + add r0, r0, r2 + mov r2, #0x1c4 + str r1, [r3] + bl MI_CpuFill8 + ldr r2, _021D9BFC ; =UNK04_02210468 + ldr r3, _021D9C10 ; =0x00004E84 + ldr r0, [r2] + ldr r1, _021D9C14 ; =0x000011CC + add r0, r0, #0x1000 + str r3, [r0, #8] + ldr lr, [r2] + mov r4, #4 + add ip, lr, r1 +_021D9B7C: + ldmia r5!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _021D9B7C + ldmia r5, {r0, r1} + stmia ip, {r0, r1} + add r0, lr, #0x1100 + mov r2, #0 + strh r2, [r0, #0xfe] + ldr r1, _021D9BFC ; =UNK04_02210468 + mov r0, #1 + ldr r1, [r1] + add r1, r1, #0x1000 + strb r2, [r1, #0x20b] + bl MOD04_021D96EC + ldr r2, _021D9BFC ; =UNK04_02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C18 ; =UNK04_02210460 + mov r1, #0 + str r1, [r0] + bl MOD04_021D9A18 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D9BFC: .word UNK04_02210468 +_021D9C00: .word UNK04_0220BFD4 +_021D9C04: .word 0x000013F4 +_021D9C08: .word 0x00001008 +_021D9C0C: .word UNK04_02210464 +_021D9C10: .word 0x00004E84 +_021D9C14: .word 0x000011CC +_021D9C18: .word UNK04_02210460 + arm_func_end MOD04_021D9ACC + + arm_func_start MOD04_021D9C1C +MOD04_021D9C1C: ; 0x021D9C1C + ldr r1, _021D9C28 ; =UNK04_0220BEB4 + str r0, [r1] + bx lr + .align 2, 0 +_021D9C28: .word UNK04_0220BEB4 + arm_func_end MOD04_021D9C1C + + .section .data + + .global UNK04_0220BEB4 +UNK04_0220BEB4: ; 0x0220BEB4 + .word UNK04_0220BED0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00 + + .global UNK04_0220BED0 +UNK04_0220BED0: ; 0x0220BED0 + .asciz "https://nas.test.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220BEF8 +UNK04_0220BEF8: ; 0x0220BEF8 + .asciz "acctcreate" + + .balign 4, 0 + .global UNK04_0220BF04 +UNK04_0220BF04: ; 0x0220BF04 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220BF0C +UNK04_0220BF0C: ; 0x0220BF0C + .asciz "login" + + .balign 4, 0 + .global UNK04_0220BF14 +UNK04_0220BF14: ; 0x0220BF14 + .asciz "gsbrcd" + + .balign 4, 0 + .global UNK04_0220BF1C +UNK04_0220BF1C: ; 0x0220BF1C + .asciz "Y" + + .balign 4, 0 + .global UNK04_0220BF20 +UNK04_0220BF20: ; 0x0220BF20 + .asciz "iswfc" + + .balign 4, 0 + .global UNK04_0220BF28 +UNK04_0220BF28: ; 0x0220BF28 + .asciz "ingamesn" + + .balign 4, 0 + .global UNK04_0220BF34 +UNK04_0220BF34: ; 0x0220BF34 + .asciz "Date" + + .balign 4, 0 + .global UNK04_0220BF3C +UNK04_0220BF3C: ; 0x0220BF3C + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220BF48 +UNK04_0220BF48: ; 0x0220BF48 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220BF54 +UNK04_0220BF54: ; 0x0220BF54 + .asciz "token" + + .balign 4, 0 + .global UNK04_0220BF5C +UNK04_0220BF5C: ; 0x0220BF5C + .asciz "locator" + + .balign 4, 0 + .global UNK04_0220BF64 +UNK04_0220BF64: ; 0x0220BF64 + .asciz "challenge" + + .balign 4, 0 + .global UNK04_0220BF70 +UNK04_0220BF70: ; 0x0220BF70 + .asciz "datetime" + + .balign 4, 0 + .global UNK04_0220BF7C +UNK04_0220BF7C: ; 0x0220BF7C + .asciz "Set-Cookie" + + .balign 4, 0 + .global UNK04_0220BF88 +UNK04_0220BF88: ; 0x0220BF88 + .asciz "ALLOC bmwork" + + .balign 4, 0 + .global UNK04_0220BF98 +UNK04_0220BF98: ; 0x0220BF98 + .asciz "FREE bmwork" + + .balign 4, 0 + .global UNK04_0220BFA4 +UNK04_0220BFA4: ; 0x0220BFA4 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220BFC4 +UNK04_0220BFC4: ; 0x0220BFC4 + .asciz "FREE DWCauth" + + .balign 4, 0 + .global UNK04_0220BFD4 +UNK04_0220BFD4: ; 0x0220BFD4 + .asciz "ALLOC DWCauth" + + .balign 4, 0 + .section .bss + + .global UNK04_02210460 +UNK04_02210460: ; 0x02210460 + .space 0x4 + + .global UNK04_02210464 +UNK04_02210464: ; 0x02210464 + .space 0x4 + + .global UNK04_02210468 +UNK04_02210468: ; 0x02210468 + .space 0x4 + + .global UNK04_0221046C +UNK04_0221046C: ; 0x0221046C + .space 0x14 + + .global UNK04_02210480 +UNK04_02210480: ; 0x02210480 + .space 0x4 + + .global UNK04_02210484 +UNK04_02210484: ; 0x02210484 + .space 0x4 + + .global UNK04_02210488 +UNK04_02210488: ; 0x02210488 + .space 0x4 + + .global UNK04_0221048C +UNK04_0221048C: ; 0x0221048C + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s new file mode 100644 index 00000000..fdff3193 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D9C2C.s @@ -0,0 +1,549 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021D9C2C +MOD04_021D9C2C: ; 0x021D9C2C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov ip, #2 + ldr r2, _021D9F30 ; =UNK04_0220BFE4 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + add r0, sp, #4 + bl strlen + mov r3, r0 + ldr r1, _021D9F34 ; =UNK04_0220BFF0 + mov r0, r6 + add r2, sp, #4 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl strlen + mov r3, r0 + ldr r1, _021D9F38 ; =UNK04_0220BFF8 + mov r0, r6 + mov r2, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0xe + bl strlen + mov r3, r0 + ldr r1, _021D9F3C ; =UNK04_0220C000 + mov r0, r6 + add r2, r5, #0xe + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x41 + bl strlen + mov r3, r0 + ldr r1, _021D9F40 ; =UNK04_0220C008 + mov r0, r6 + add r2, r5, #0x41 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x6f + bl strlen + mov r3, r0 + ldr r1, _021D9F44 ; =UNK04_0220C010 + mov r0, r6 + add r2, r5, #0x6f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x15 + bl strlen + mov r3, r0 + ldr r1, _021D9F48 ; =UNK04_0220C018 + mov r0, r6 + add r2, r5, #0x15 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1a + bl strlen + mov r3, r0 + ldr r1, _021D9F4C ; =UNK04_0220C020 + mov r0, r6 + add r2, r5, #0x1a + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1d + bl strlen + mov r3, r0 + ldr r1, _021D9F50 ; =UNK04_0220C028 + mov r0, r6 + add r2, r5, #0x1d + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1f + bl strlen + mov r3, r0 + ldr r1, _021D9F54 ; =UNK04_0220C030 + mov r0, r6 + add r2, r5, #0x1f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2c + bl strlen + mov r3, r0 + ldr r1, _021D9F58 ; =UNK04_0220C038 + mov r0, r6 + add r2, r5, #0x2c + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2f + bl strlen + mov r3, r0 + ldr r1, _021D9F5C ; =UNK04_0220C040 + mov r0, r6 + add r2, r5, #0x2f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x34 + bl strlen + mov r3, r0 + ldr r1, _021D9F60 ; =UNK04_0220C048 + mov r0, r6 + add r2, r5, #0x34 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x7e + bl wcslen + mov r3, r0 + ldr r1, _021D9F64 ; =UNK04_0220C050 + mov r0, r6 + add r2, r5, #0x7e + mov r3, r3, lsl #1 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + bne _021D9ED0 + add r0, r5, #0x4e + bl strlen + mov r3, r0 + ldr r1, _021D9F68 ; =UNK04_0220C058 + mov r0, r6 + add r2, r5, #0x4e + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_021D9ED0: + ldr r2, _021D9F6C ; =UNK04_0220C060 + mov ip, #2 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + ldr r1, _021D9F70 ; =UNK04_0220C078 + add r2, sp, #4 + mov r0, r6 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021D9F74 ; =UNK04_0220C084 + mov r0, r6 + add r2, r5, #0x15 + bl MOD04_021DAC98 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D9F30: .word UNK04_0220BFE4 +_021D9F34: .word UNK04_0220BFF0 +_021D9F38: .word UNK04_0220BFF8 +_021D9F3C: .word UNK04_0220C000 +_021D9F40: .word UNK04_0220C008 +_021D9F44: .word UNK04_0220C010 +_021D9F48: .word UNK04_0220C018 +_021D9F4C: .word UNK04_0220C020 +_021D9F50: .word UNK04_0220C028 +_021D9F54: .word UNK04_0220C030 +_021D9F58: .word UNK04_0220C038 +_021D9F5C: .word UNK04_0220C040 +_021D9F60: .word UNK04_0220C048 +_021D9F64: .word UNK04_0220C050 +_021D9F68: .word UNK04_0220C058 +_021D9F6C: .word UNK04_0220C060 +_021D9F70: .word UNK04_0220C078 +_021D9F74: .word UNK04_0220C084 + arm_func_end MOD04_021D9C2C + + arm_func_start MOD04_021D9F78 +MOD04_021D9F78: ; 0x021D9F78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x8c + mov r6, r1 + mov r1, #0 + mov r2, #0x94 + mov r4, r0 + bl MI_CpuFill8 + ldr r3, [r6] + ldr r5, [r6, #4] + mov r0, #0 + cmp r5, r0 + cmpeq r3, r0 + beq _021D9FC4 + ldr r2, _021DA218 ; =UNK04_0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf + b _021D9FE0 +_021D9FC4: + ldr r3, [r6, #8] + ldr r5, [r6, #0xc] + ldr r2, _021DA218 ; =UNK04_0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf +_021D9FE0: + ldrh r3, [r6, #0x10] + ldr r2, _021DA21C ; =UNK04_0220C09C + add r0, r4, #0xe + mov r1, #7 + bl OS_SNPrintf + ldr r0, _021DA220 ; =0x027FFE0C + ldrb r0, [r0] + cmp r0, #0 + bne _021DA008 + bl OS_Terminate +_021DA008: + ldr r0, _021DA220 ; =0x027FFE0C + add r1, r4, #0x15 + mov r2, #4 + bl MI_CpuCopy8 + ldr r0, _021DA224 ; =0x027FFE10 + ldrb r0, [r0] + cmp r0, #0 + bne _021DA02C + bl OS_Terminate +_021DA02C: + ldr r0, _021DA224 ; =0x027FFE10 + add r1, r4, #0x1a + mov r2, #2 + bl MI_CpuCopy8 + mov r1, #0x30 + add r0, sp, #0x16 + strb r1, [r4, #0x1d] + bl OS_GetMacAddress + ldr r5, _021DA228 ; =UNK04_0220C0A4 + add r7, sp, #0x16 + add r6, r4, #0x1f + mov r8, #0 +_021DA05C: + ldrb r2, [r7] + mov r0, r6 + mov r1, r5 + bl OS_SPrintf + add r8, r8, #1 + cmp r8, #6 + add r7, r7, #1 + add r6, r6, #2 + blt _021DA05C + add r0, sp, #0x38 + bl OS_GetOwnerInfo + ldrb r0, [sp, #0x38] + ldr r2, _021DA228 ; =UNK04_0220C0A4 + mov r1, #3 + cmp r0, #6 + movhi r0, #1 + strhib r0, [sp, #0x38] + ldrb r3, [sp, #0x38] + add r0, r4, #0x2c + bl OS_SNPrintf + add r0, sp, #0x3c + add r1, r4, #0x7e + mov r2, #0x14 + bl MI_CpuCopy8 + ldrb r1, [sp, #0x3b] + ldr r2, _021DA22C ; =UNK04_0220C0AC + add r0, r4, #0x2f + str r1, [sp] + ldrb r3, [sp, #0x3a] + mov r1, #5 + bl OS_SNPrintf + add r0, sp, #0x1c + bl RTC_GetDate + cmp r0, #0 + bne _021DA0F8 + add r0, sp, #0x2c + bl RTC_GetTime + cmp r0, #0 + beq _021DA104 +_021DA0F8: + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA104: + ldr r0, [sp, #0x20] + ldr r2, _021DA230 ; =UNK04_0220C0B8 + str r0, [sp] + ldr r1, [sp, #0x24] + add r0, r4, #0x34 + str r1, [sp, #4] + ldr r3, [sp, #0x2c] + mov r1, #0xd + str r3, [sp, #8] + ldr r3, [sp, #0x30] + str r3, [sp, #0xc] + ldr r3, [sp, #0x34] + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + bl OS_SNPrintf + bl OS_DisableInterrupts + mov sb, r0 + bl WCM_GetApMacAddress + mov r8, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r8, #0 + bne _021DA174 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA174: + add r7, r4, #0x41 + mov r6, #0 + ldr r5, _021DA228 ; =UNK04_0220C0A4 +_021DA180: + ldrb r2, [r8, r6] + mov r0, r7 + mov r1, r5 + bl OS_SPrintf + add r6, r6, #1 + cmp r6, #6 + add r7, r7, #2 + blt _021DA180 + bl MOD04_021EBAB8 + mov r3, r0 + ldr r2, _021DA234 ; =UNK04_0220C0D4 + add r0, r4, #0x6f + mov r1, #0xe + bl OS_SNPrintf + add r0, sp, #0x14 + bl WCM_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DA1E8 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA1E8: + mov r0, r5 + add r1, r4, #0x72 + bl MOD04_021EE5F4 + mov r0, r5 + add r1, r4, #0x4e + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, sb + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DA218: .word UNK04_0220C094 +_021DA21C: .word UNK04_0220C09C +_021DA220: .word 0x027FFE0C +_021DA224: .word 0x027FFE10 +_021DA228: .word UNK04_0220C0A4 +_021DA22C: .word UNK04_0220C0AC +_021DA230: .word UNK04_0220C0B8 +_021DA234: .word UNK04_0220C0D4 + arm_func_end MOD04_021D9F78 + + arm_func_start MOD04_021DA238 +MOD04_021DA238: ; 0x021DA238 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0 + bl DWCi_BM_GetWiFiInfo + add r1, sp, #0 + mov r0, r4 + bl MOD04_021D9F78 + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DA238 + + .section .data + + .global UNK04_0220BFE4 +UNK04_0220BFE4: ; 0x0220BFE4 + .asciz "%03d%03d" + + .balign 4, 0 + .global UNK04_0220BFF0 +UNK04_0220BFF0: ; 0x0220BFF0 + .asciz "sdkver" + + .balign 4, 0 + .global UNK04_0220BFF8 +UNK04_0220BFF8: ; 0x0220BFF8 + .asciz "userid" + + .balign 4, 0 + .global UNK04_0220C000 +UNK04_0220C000: ; 0x0220C000 + .asciz "passwd" + + .balign 4, 0 + .global UNK04_0220C008 +UNK04_0220C008: ; 0x0220C008 + .asciz "bssid" + + .balign 4, 0 + .global UNK04_0220C010 +UNK04_0220C010: ; 0x0220C010 + .asciz "apinfo" + + .balign 4, 0 + .global UNK04_0220C018 +UNK04_0220C018: ; 0x0220C018 + .asciz "gamecd" + + .balign 4, 0 + .global UNK04_0220C020 +UNK04_0220C020: ; 0x0220C020 + .asciz "makercd" + + .balign 4, 0 + .global UNK04_0220C028 +UNK04_0220C028: ; 0x0220C028 + .asciz "unitcd" + + .balign 4, 0 + .global UNK04_0220C030 +UNK04_0220C030: ; 0x0220C030 + .asciz "macadr" + + .balign 4, 0 + .global UNK04_0220C038 +UNK04_0220C038: ; 0x0220C038 + .asciz "lang" + + .balign 4, 0 + .global UNK04_0220C040 +UNK04_0220C040: ; 0x0220C040 + .asciz "birth" + + .balign 4, 0 + .global UNK04_0220C048 +UNK04_0220C048: ; 0x0220C048 + .asciz "devtime" + + .balign 4, 0 + .global UNK04_0220C050 +UNK04_0220C050: ; 0x0220C050 + .asciz "devname" + + .balign 4, 0 + .global UNK04_0220C058 +UNK04_0220C058: ; 0x0220C058 + .asciz "ssid" + + .balign 4, 0 + .global UNK04_0220C060 +UNK04_0220C060: ; 0x0220C060 + .asciz "Nitro WiFi SDK/%d.%d" + + .balign 4, 0 + .global UNK04_0220C078 +UNK04_0220C078: ; 0x0220C078 + .asciz "User-Agent" + + .balign 4, 0 + .global UNK04_0220C084 +UNK04_0220C084: ; 0x0220C084 + .asciz "HTTP_X_GAMECD" + + .balign 4, 0 + .global UNK04_0220C094 +UNK04_0220C094: ; 0x0220C094 + .asciz "%013llu" + + .balign 4, 0 + .global UNK04_0220C09C +UNK04_0220C09C: ; 0x0220C09C + .asciz "%03u" + + .balign 4, 0 + .global UNK04_0220C0A4 +UNK04_0220C0A4: ; 0x0220C0A4 + .asciz "%02x" + + .balign 4, 0 + .global UNK04_0220C0AC +UNK04_0220C0AC: ; 0x0220C0AC + .asciz "%02x%02x" + + .balign 4, 0 + .global UNK04_0220C0B8 +UNK04_0220C0B8: ; 0x0220C0B8 + .asciz "%02d%02d%02d%02d%02d%02d" + + .balign 4, 0 + .global UNK04_0220C0D4 +UNK04_0220C0D4: ; 0x0220C0D4 + .asciz "%02d:0000000-00" + + .balign 4, 0 diff --git a/arm9/modules/04/asm/mod04_021DA260.s b/arm9/modules/04/asm/mod04_021DA260.s new file mode 100644 index 00000000..de6114d7 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DA260.s @@ -0,0 +1,1689 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DA260 +MOD04_021DA260: ; 0x021DA260 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov sb, r2 + cmp sb, #0 + ldr r8, [r0, #0x14] + mov sl, r1 + mov r7, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r6, r7 + mov r5, r7 + mov fp, r7 + mov r4, r7 +_021DA298: + ldr r1, [sl, r7, lsl #3] + cmp r1, #0 + beq _021DA2B4 + ldr r0, _021DA2EC ; =UNK04_0220C110 + mov r2, r6 + blx r8 + str r5, [sl, r7, lsl #3] +_021DA2B4: + add r0, sl, r7, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA2D8 + ldr r0, _021DA2F0 ; =UNK04_0220C12C + mov r2, fp + blx r8 + add r0, sl, r7, lsl #3 + str r4, [r0, #4] +_021DA2D8: + add r7, r7, #1 + cmp r7, sb + blt _021DA298 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA2EC: .word UNK04_0220C110 +_021DA2F0: .word UNK04_0220C12C + arm_func_end MOD04_021DA260 + + arm_func_start MOD04_021DA2F4 +MOD04_021DA2F4: ; 0x021DA2F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl MOD04_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + cmp r0, r5 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + bl strcpy + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA2F4 + + arm_func_start MOD04_021DA334 +MOD04_021DA334: ; 0x021DA334 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl MOD04_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + mov r1, r0 + mov r0, r4 + mov r2, r6 + mov r3, r5 + bl MOD04_021DD36C + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, r5 + ldmhsia sp!, {r4, r5, r6, pc} + mov r1, #0 + strb r1, [r6, r0] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA334 + + arm_func_start MOD04_021DA388 +MOD04_021DA388: ; 0x021DA388 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 +_021DA398: + add r0, r6, r4, lsl #3 + add r0, r0, #0x1000 + ldr r1, [r0, #0xa34] + cmp r1, #0 + beq _021DA3D4 + mov r0, r5 + bl strcmp + cmp r0, #0 + addeq r0, r6, r4, lsl #3 + addeq r0, r0, #0x1000 + ldreq r0, [r0, #0xa38] + ldmeqia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #0x20 + blt _021DA398 +_021DA3D4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA388 + + arm_func_start MOD04_021DA3DC +MOD04_021DA3DC: ; 0x021DA3DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r2, _021DA668 ; =0x00001A34 + mov fp, r0 + add r0, fp, r2 + mov r6, r1 + mov r3, #0x20 + mov r1, #0 + mov r2, #0x100 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + bl MI_CpuFill8 + add r0, fp, #0x1000 + ldr r5, [r0, #0xa04] + ldr r1, _021DA66C ; =UNK04_0220C148 + mov r0, r5 + bl strstr + str r0, [sp] + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r0, #4 + bl strlen + ldr r1, [sp] + add r1, r1, #4 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DA670 ; =UNK04_0220C150 + mov r0, r5 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r8, r0, #1 + ldrsb r7, [r8, #3] + ldr r2, _021DA674 ; =UNK04_0220C154 + mov r5, #0 + add r1, sp, #8 + mov r0, fp + mov r3, r8 + strb r5, [r8, #3] + bl MOD04_021DA68C + cmp r0, #1 + addne sp, sp, #0x14 + strneb r7, [r8, #3] + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r7, [r8, #3] + cmp r6, #1 + beq _021DA4C8 + ldr r1, _021DA678 ; =UNK04_0220C160 + mov r0, r8 + mov r2, #3 + bl strncmp + cmp r0, #0 + beq _021DA4D4 +_021DA4C8: + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA4D4: + ldr r1, _021DA67C ; =UNK04_0220C164 + add r0, r8, #4 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r0, #2 + mov r6, r5 + b _021DA580 +_021DA4FC: + ldr r1, _021DA680 ; =UNK04_0220C168 + mov r0, sb + bl strstr + movs r7, r0 + beq _021DA598 + ldrsb sl, [r7] + add r8, r7, #2 + ldr r1, _021DA67C ; =UNK04_0220C164 + mov r0, r8 + strb r6, [r7] + bl strstr + movs r5, r0 + streqb sl, [r7] + beq _021DA598 + ldrsb r4, [r5] + mov r0, fp + mov r2, sb + strb r6, [r5] + add r1, sp, #8 + mov r3, r8 + bl MOD04_021DA68C + cmp r0, #1 + strneb sl, [r7] + addne sp, sp, #0x14 + strneb r4, [r5] + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r8 + bl strlen + strb sl, [r7] + add r0, r8, r0 + strb r4, [r5] + add sb, r0, #2 +_021DA580: + ldrsb r0, [sb] + cmp r0, #0xd + beq _021DA598 + ldrsb r0, [sb, #1] + cmp r0, #0xa + bne _021DA4FC +_021DA598: + ldr r0, [sp] + add r8, r0, #4 + ldr r0, [sp, #4] + cmp r8, r0 + bhs _021DA65C + mov r5, #0 +_021DA5B0: + ldr r1, _021DA684 ; =UNK04_0220C16C + mov r0, r8 + bl strstr + movs sl, r0 + beq _021DA65C + ldrsb r7, [sl] + add sb, sl, #1 + ldr r1, _021DA688 ; =UNK04_0220C170 + mov r0, sb + strb r5, [sl] + bl strstr + movs r6, r0 + bne _021DA5F4 + ldr r1, _021DA67C ; =UNK04_0220C164 + mov r0, sb + bl strstr + mov r6, r0 +_021DA5F4: + cmp r6, #0 + ldrnesb r4, [r6] + mov r0, fp + mov r2, r8 + add r1, sp, #8 + mov r3, sb + strneb r5, [r6] + bl MOD04_021DA68C + cmp r0, #1 + beq _021DA634 + strb r7, [sl] + cmp r6, #0 + add sp, sp, #0x14 + strneb r4, [r6] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA634: + mov r0, sb + bl strlen + add r0, sb, r0 + add r8, r0, #1 + ldr r0, [sp, #4] + strb r7, [sl] + cmp r6, #0 + strneb r4, [r6] + cmp r8, r0 + blo _021DA5B0 +_021DA65C: + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA668: .word 0x00001A34 +_021DA66C: .word UNK04_0220C148 +_021DA670: .word UNK04_0220C150 +_021DA674: .word UNK04_0220C154 +_021DA678: .word UNK04_0220C160 +_021DA67C: .word UNK04_0220C164 +_021DA680: .word UNK04_0220C168 +_021DA684: .word UNK04_0220C16C +_021DA688: .word UNK04_0220C170 + arm_func_end MOD04_021DA3DC + + arm_func_start MOD04_021DA68C +MOD04_021DA68C: ; 0x021DA68C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + ldr r4, [r8, #8] + ldr r1, [r8, #4] + add r0, r0, #0x1000 + cmp r4, r1 + ldr r5, [r0, #0x10] + ldr r4, [r0, #0x14] + mov r7, r2 + mov r6, r3 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl strlen + mov r1, r0 + ldr r0, _021DA7D8 ; =UNK04_0220C174 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + str r0, [r2, r1, lsl #3] + ldr r3, [r8, #8] + ldr r2, [r8] + ldr r0, [r2, r3, lsl #3] + cmp r0, #0 + beq _021DA770 + mov r0, r6 + bl strlen + mov r1, r0 + ldr r0, _021DA7DC ; =UNK04_0220C194 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + add r1, r2, r1, lsl #3 + str r0, [r1, #4] + ldr r3, [r8, #8] + ldr r2, [r8] + mov r1, r3, lsl #3 + add r0, r2, r3, lsl #3 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021DA770 + ldr r0, [r2, r1] + mov r1, r7 + bl strcpy + ldr r2, [r8] + ldr r0, [r8, #8] + mov r1, r6 + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bl strcpy + ldr r1, [r8, #8] + mov r0, #1 + add r1, r1, #1 + str r1, [r8, #8] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DA770: + ldr r1, [r2, r3, lsl #3] + cmp r1, #0 + beq _021DA798 + ldr r0, _021DA7E0 ; =UNK04_0220C1B4 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + str r2, [r1, r0, lsl #3] +_021DA798: + ldr r1, [r8] + ldr r0, [r8, #8] + add r0, r1, r0, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA7D0 + ldr r0, _021DA7E4 ; =UNK04_0220C1D0 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + add r0, r1, r0, lsl #3 + str r2, [r0, #4] +_021DA7D0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DA7D8: .word UNK04_0220C174 +_021DA7DC: .word UNK04_0220C194 +_021DA7E0: .word UNK04_0220C1B4 +_021DA7E4: .word UNK04_0220C1D0 + arm_func_end MOD04_021DA68C + + arm_func_start MOD04_021DA7E8 +MOD04_021DA7E8: ; 0x021DA7E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r0 + mov r0, r6 + mov r4, #0 + bl strlen + cmp r0, #0x100 + movhs r0, r4 + ldmhsia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + mov r1, r6 + add r0, r5, r0 + mov r2, #0x100 + bl strncpy + mov r0, r6 + bl strlen + ldr r1, _021DA934 ; =0x00001024 + mov r6, r0 + add r0, r5, r1 + bl strlen + cmp r6, r0 + movne r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA938 ; =UNK04_0220C1EC + add r0, r5, r0 + bl strstr + cmp r0, #0 + beq _021DA884 + ldr r0, _021DA93C ; =0x0000102B + add r1, r5, #0x1000 + add r0, r5, r0 + str r0, [r1, #0x124] + mov r0, r4 + str r0, [r1, #0x12c] + add r0, r5, #0x1100 + mov r1, #0x50 + strh r1, [r0, #0x30] + b _021DA8C0 +_021DA884: + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA940 ; =UNK04_0220C1F4 + add r0, r5, r0 + bl strstr + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r1, r0, #8 + add r0, r5, #0x1000 + str r1, [r0, #0x124] + mov r2, #1 + ldr r1, _021DA944 ; =0x000001BB + str r2, [r0, #0x12c] + add r0, r5, #0x1100 + strh r1, [r0, #0x30] +_021DA8C0: + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA948 ; =UNK04_0220C200 + bl strstr + cmp r0, #0 + movne r1, #0 + strneb r1, [r0] + addne r4, r0, #1 + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA94C ; =UNK04_0220C204 + bl strstr + cmp r0, #0 + addeq r0, r5, #0x1000 + moveq r1, #0 + streq r1, [r0, #0x128] + movne r1, #0 + strneb r1, [r0] + addne r1, r0, #1 + addne r0, r5, #0x1000 + strne r1, [r0, #0x128] + cmp r4, #0 + beq _021DA92C + mov r0, r4 + bl atol + add r1, r5, #0x1100 + strh r0, [r1, #0x30] +_021DA92C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DA934: .word 0x00001024 +_021DA938: .word UNK04_0220C1EC +_021DA93C: .word 0x0000102B +_021DA940: .word UNK04_0220C1F4 +_021DA944: .word 0x000001BB +_021DA948: .word UNK04_0220C200 +_021DA94C: .word UNK04_0220C204 + arm_func_end MOD04_021DA7E8 + + arm_func_start MOD04_021DA950 +MOD04_021DA950: ; 0x021DA950 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov r5, r2 + cmp r5, #0 + ldr r7, [r0, #0x14] + ldr r2, [r0, #0x10] + mov r6, r1 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r6, #0xc] + ldr r0, _021DAA08 ; =UNK04_0220C208 + add r1, r1, r5 + blx r2 + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r2, [r6, #0xc] + mov r1, r4 + bl MI_CpuCopy8 + ldr r1, [r6] + ldr r0, _021DAA0C ; =UNK04_0220C218 + mov r2, #0 + blx r7 + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r1, [r6, #4] + sub r0, r4, r0 + add r0, r1, r0 + str r0, [r6, #4] + ldr r1, [r6, #0xc] + mov r0, #1 + add r1, r1, r5 + str r1, [r6, #0xc] + str r4, [r6] + ldr r1, [r6, #0xc] + add r1, r4, r1 + str r1, [r6, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAA08: .word UNK04_0220C208 +_021DAA0C: .word UNK04_0220C218 + arm_func_end MOD04_021DA950 + + arm_func_start MOD04_021DAA10 +MOD04_021DAA10: ; 0x021DAA10 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, [r4] + add r0, r0, #0x1000 + cmp r1, #0 + ldr r3, [r0, #0x14] + beq _021DAA38 + ldr r0, _021DAA4C ; =UNK04_0220C218 + mov r2, #0 + blx r3 +_021DAA38: + mov r0, r4 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DAA4C: .word UNK04_0220C218 + arm_func_end MOD04_021DAA10 + + arm_func_start MOD04_021DAA50 +MOD04_021DAA50: ; 0x021DAA50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r2 + add r0, r0, #0x1000 + ldr r2, [r0, #0x10] + mov r4, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _021DAABC ; =UNK04_0220C22C + mov r1, r5 + blx r2 + str r0, [r4] + ldr r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + str r0, [r4, #4] + str r5, [r4, #0xc] + ldr r2, [r4] + ldr r1, [r4, #0xc] + mov r0, #1 + add r1, r2, r1 + str r1, [r4, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAABC: .word UNK04_0220C22C + arm_func_end MOD04_021DAA50 + + arm_func_start MOD04_021DAAC0 +MOD04_021DAAC0: ; 0x021DAAC0 + ands r1, r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + arm_func_end MOD04_021DAAC0 + + arm_func_start MOD04_021DAACC +MOD04_021DAACC: ; 0x021DAACC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _021DAB60 ; =0x000019F4 + mov r7, r0 + mov r6, r1 + mov r0, r6 + add r4, r7, r2 + bl strlen + mov r5, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 + cmp r5, r1 + ble _021DAB34 + sub r2, r5, r1 + mov r0, r7 + mov r1, r4 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAB34: + ldr r2, _021DAB64 ; =UNK04_0220C240 + mov r3, r6 + bl OS_SNPrintf + cmp r0, r5 + ldreq r1, [r4, #4] + movne r0, #1 + addeq r0, r1, r0 + streq r0, [r4, #4] + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAB60: .word 0x000019F4 +_021DAB64: .word UNK04_0220C240 + arm_func_end MOD04_021DAACC + + arm_func_start MOD04_021DAB68 +MOD04_021DAB68: ; 0x021DAB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f0] + ldr r0, _021DAC8C ; =0x000019F4 + cmp r4, #0 + ldreq r6, _021DAC90 ; =UNK04_0220C244 + mov r8, r2 + add r5, sl, #0x1000 + add r4, sl, r0 + ldr r0, [r5, #0x9f0] + mov r7, r3 + add fp, r0, #1 + mov r2, #0 + mov sb, r1 + ldrne r6, _021DAC94 ; =UNK04_0220C248 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str fp, [r5, #0x9f0] + bl MOD04_021DD4FC + mov r5, r0 + mov r0, r6 + bl strlen + mov fp, r0 + mov r0, sb + bl strlen + sub r1, fp, #2 + add r2, r1, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + add r2, r5, r2 + sub r1, r1, r0 + cmp r2, r1 + ble _021DAC28 + sub r2, r2, r1 + mov r0, sl + mov r1, r4 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAC28: + mov r2, r6 + mov r3, sb + bl OS_SNPrintf + ldr r2, [r4, #4] + mov r1, r7 + add r0, r2, r0 + str r0, [r4, #4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + mov r0, r8 + sub r3, r3, r2 + sub r3, r3, #1 + bl MOD04_021DD4FC + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #4] + mov r0, #0 + add r1, r1, r5 + str r1, [r4, #4] + ldr r1, [r4, #4] + strb r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DAC8C: .word 0x000019F4 +_021DAC90: .word UNK04_0220C244 +_021DAC94: .word UNK04_0220C248 + arm_func_end MOD04_021DAB68 + + arm_func_start MOD04_021DAC98 +MOD04_021DAC98: ; 0x021DAC98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r6, r2 + mov r8, r0 + ldr r2, _021DAD7C ; =0x000019F4 + mov r0, r6 + mov r7, r1 + add r5, r8, r2 + bl strlen + mov r4, r0 + ldr r0, _021DAD80 ; =UNK04_0220C250 + bl strlen + mov sb, r0 + mov r0, r7 + bl strlen + sub r1, sb, #4 + add r0, r1, r0 + add r4, r4, r0 + ldr r2, [r5, #8] + ldr r1, [r5, #4] + add r0, r4, #1 + sub r1, r2, r1 + cmp r0, r1 + ble _021DAD1C + sub r2, r4, r1 + mov r0, r8 + mov r1, r5 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DAD1C: + ldr r0, [r5] + ldr r1, _021DAD84 ; =UNK04_0220C148 + bl strstr + add r8, r0, #2 + ldrsb sb, [r0, #2] + mov r0, r8 + bl strlen + add r2, r0, #1 + add r0, r8, r4 + mov r1, r8 + bl memmove + ldr r2, _021DAD80 ; =UNK04_0220C250 + str r6, [sp] + mov r3, r7 + mov r0, r8 + add r1, r4, #1 + bl OS_SNPrintf + strb sb, [r8, r0] + ldr r1, [r5, #4] + mov r0, #0 + add r1, r1, r4 + str r1, [r5, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DAD7C: .word 0x000019F4 +_021DAD80: .word UNK04_0220C250 +_021DAD84: .word UNK04_0220C148 + arm_func_end MOD04_021DAC98 + + arm_func_start MOD04_021DAD88 +MOD04_021DAD88: ; 0x021DAD88 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + add r0, r7, #0x1000 + ldr r1, [r0, #8] + ldr r0, _021DAE40 ; =0x000019F4 + cmp r1, #0 + ldreq r6, _021DAE44 ; =UNK04_0220C25C + add r5, r7, r0 + add r0, r7, #0x1000 + ldrne r6, _021DAE48 ; =UNK04_0220C2B0 + ldr r0, [r0, #0x124] + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + add r1, r7, #0x1000 + mov r8, r0 + ldr r0, [r1, #0x128] + bl strlen + sub r1, r8, #4 + add r0, r1, r0 + add r1, r4, r0 + ldr r0, _021DAE40 ; =0x000019F4 + add r2, r1, #0x400 + add r1, r7, r0 + mov r0, r7 + bl MOD04_021DAA50 + cmp r0, #1 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r3, r7, #0x1000 + ldr r0, [r3, #0x124] + mov r2, r6 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x128] + bl OS_SNPrintf + ldr r1, [r5, #4] + add r0, r1, r0 + str r0, [r5, #4] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DAE40: .word 0x000019F4 +_021DAE44: .word UNK04_0220C25C +_021DAE48: .word UNK04_0220C2B0 + arm_func_end MOD04_021DAD88 + + arm_func_start MOD04_021DAE4C +MOD04_021DAE4C: ; 0x021DAE4C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + add r1, r5, #0x1000 + ldr r4, [r1, #0x14] + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DAF00 ; =0x00001A34 + mov r2, #0x20 + add r1, r5, r1 + bl MOD04_021DA260 + ldr r1, _021DAF04 ; =0x00001A04 + mov r0, r5 + add r1, r5, r1 + bl MOD04_021DAA10 + ldr r1, _021DAF08 ; =0x000019F4 + mov r0, r5 + add r1, r5, r1 + bl MOD04_021DAA10 + add r0, r5, #0x1000 + ldr r1, [r0, #0x9c8] + cmp r1, #0 + beq _021DAEC0 + ldr r0, _021DAF0C ; =UNK04_0220C2D0 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9c8] +_021DAEC0: + add r0, r5, #0x1000 + ldr r1, [r0, #0x9cc] + cmp r1, #0 + beq _021DAEE8 + ldr r0, _021DAF10 ; =UNK04_0220C2E8 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9cc] +_021DAEE8: + ldr r2, _021DAF14 ; =0x00001C10 + mov r0, r5 + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAF00: .word 0x00001A34 +_021DAF04: .word 0x00001A04 +_021DAF08: .word 0x000019F4 +_021DAF0C: .word UNK04_0220C2D0 +_021DAF10: .word UNK04_0220C2E8 +_021DAF14: .word 0x00001C10 + arm_func_end MOD04_021DAE4C + + arm_func_start MOD04_021DAF18 +MOD04_021DAF18: ; 0x021DAF18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + add r0, sl, #0x1000 + ldr fp, [r0, #0x1c] + ldr r0, _021DB224 ; =0x00001134 + ldr r1, _021DB228 ; =0x00001198 + ldr r2, _021DB22C ; =0x00001A04 + add r8, sl, r0 + cmp fp, #0 + mov r0, sl + add r6, sl, r1 + add r7, sl, r2 + mov r5, #0 + ldrle fp, _021DB230 ; =0x0000EA60 + bl MOD04_021DB35C + mov r0, sl + bl MOD04_021DB348 + movs r4, r0 + addeq r0, sl, #0x1000 + moveq r1, #2 + streq r1, [r0, #0x20] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl CPS_SocUse + add r0, sl, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DAFC8 + mov r0, r6 + mov r1, #0 + mov r2, #0x830 + bl MI_CpuFill8 + ldr r1, _021DB234 ; =MOD04_021DAAC0 + add r0, sl, #0x1000 + str r1, [r6, #0x810] + ldr r1, [r0, #0x124] + ldr r0, _021DB238 ; =UNK04_0220C0E4 + str r1, [r6, #0x800] + mov r1, #0xb + str r6, [r8, #0xc] + bl CPS_SetRootCa + mov r0, #1 + bl CPS_SetSsl +_021DAFC8: + add r0, sl, #0x1100 + ldrh r1, [r0, #0x30] + mov r2, r4 + mov r0, #0 + bl CPS_SocPingMode + bl CPS_TcpConnect + cmp r0, #0 + beq _021DB004 + add r0, sl, #0x1000 + mov r1, #3 + str r1, [r0, #0x20] + bl CPS_SocRelease + bl CPS_SocUnRegister + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB004: + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f4] + mov r0, r4 + bl strlen + mov r1, r0 + mov r0, r4 + bl CPS_SocWrite + cmp r0, #0 + str r0, [sp, #8] + addle r0, sl, #0x1000 + movle r1, #5 + strle r1, [r0, #0x20] + ble _021DB20C + bl CPS_SocGetChar + mov r0, sl + bl MOD04_021DB3B8 + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #7 + streq r1, [r0, #0x20] + beq _021DB20C + ldr r0, [r7] + str r0, [r7, #4] + ldr r1, [r7] + ldr r0, [r7, #0xc] + add r0, r1, r0 + str r0, [r7, #8] + bl OS_GetTick + mov r6, r0 + mov r0, fp, asr #0x1f + mov r8, r1 + str r0, [sp, #4] + mov r4, #0 +_021DB088: + ldr r0, _021DB23C ; =CPSMyIp + ldr r0, [r0] + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #5 + streq r1, [r0, #0x20] + beq _021DB20C + bl CPS_SocGetLength + str r0, [sp, #8] + cmp r0, #0 + blt _021DB1E8 + cmp r0, #0 + ble _021DB16C + bl OS_GetTick + mov r6, r0 + add r0, sp, #8 + mov r8, r1 + bl CPS_SocRead + cmp r0, #0 + beq _021DB1E8 + ldr r2, [r7, #8] + ldr r1, [r7, #4] + sub r2, r2, #1 + ldr sb, [sp, #8] + sub r2, r2, r1 + cmp sb, r2 + movge sb, r2 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, [r7, #4] + cmp r5, #1 + add r0, r0, sb + str r0, [r7, #4] + ldr r0, [r7, #4] + strb r4, [r0] + bne _021DB144 + ldr r0, _021DB240 ; =0x00001A14 + add r0, sl, r0 + bl OS_LockMutex + add r1, sl, #0x1000 + ldr r2, [r1, #0xa30] + ldr r0, _021DB240 ; =0x00001A14 + add r2, r2, sb + add r0, sl, r0 + str r2, [r1, #0xa30] + bl OS_UnlockMutex + b _021DB150 +_021DB144: + mov r0, sl + bl MOD04_021DB248 + mov r5, r0 +_021DB150: + ldr r0, [sp, #8] + cmp r0, sb + bls _021DB164 + bl CPS_SocConsume + b _021DB1E8 +_021DB164: + mov r0, sb + bl CPS_SocConsume +_021DB16C: + add r0, sl, #0x1000 + ldr r1, [r0, #0xa2c] + cmp r1, #0 + blt _021DB188 + ldr r0, [r0, #0xa30] + cmp r0, r1 + bge _021DB1E8 +_021DB188: + bl OS_GetTick + subs r2, r0, r6 + sbc r0, r1, r8 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021DB244 ; =0x000082EA + mov r3, r4 + bl _ll_udiv + ldr r2, [sp, #4] + cmp r1, r2 + cmpeq r0, fp + addhi r0, sl, #0x1000 + movhi r1, #6 + strhi r1, [r0, #0x20] + bhi _021DB20C + mov r0, sl + bl MOD04_021DB3B8 + cmp r0, #0 + bne _021DB088 + add r0, sl, #0x1000 + mov r1, #7 + str r1, [r0, #0x20] + b _021DB20C +_021DB1E8: + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister + add r0, sl, #0x1000 + mov r1, #8 + str r1, [r0, #0x20] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB20C: + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DB224: .word 0x00001134 +_021DB228: .word 0x00001198 +_021DB22C: .word 0x00001A04 +_021DB230: .word 0x0000EA60 +_021DB234: .word MOD04_021DAAC0 +_021DB238: .word UNK04_0220C0E4 +_021DB23C: .word CPSMyIp +_021DB240: .word 0x00001A14 +_021DB244: .word 0x000082EA + arm_func_end MOD04_021DAF18 + + arm_func_start MOD04_021DB248 +MOD04_021DB248: ; 0x021DB248 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + add r0, r5, #0x1000 + ldr r6, [r0, #0xa04] + ldr r2, _021DB334 ; =0x00001A04 + ldr r1, _021DB338 ; =UNK04_0220C148 + mov r0, r6 + add r4, r5, r2 + bl strstr + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r1, _021DB338 ; =UNK04_0220C148 + mov r0, r6 + bl strstr + ldr r1, _021DB33C ; =0x00001A14 + add r6, r0, #4 + add r0, r5, r1 + bl OS_LockMutex + ldr r0, [r4, #4] + ldr r1, _021DB33C ; =0x00001A14 + sub r2, r0, r6 + add r0, r5, #0x1000 + str r2, [r0, #0xa30] + add r0, r5, r1 + bl OS_UnlockMutex + ldr r0, [r4] + ldr r1, _021DB340 ; =UNK04_0220C300 + bl strstr + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DB340 ; =UNK04_0220C300 + bl strlen + add r7, r4, r0 + ldr r1, _021DB344 ; =UNK04_0220C164 + mov r0, r7 + bl strstr + mov r4, r0 + ldr r0, _021DB33C ; =0x00001A14 + ldrsb r6, [r4] + mov r1, #0 + add r0, r5, r0 + strb r1, [r4] + bl OS_LockMutex + mov r0, r7 + bl atol + add r1, r5, #0x1000 + ldr r2, _021DB33C ; =0x00001A14 + str r0, [r1, #0xa2c] + add r0, r5, r2 + bl OS_UnlockMutex + strb r6, [r4] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DB334: .word 0x00001A04 +_021DB338: .word UNK04_0220C148 +_021DB33C: .word 0x00001A14 +_021DB340: .word UNK04_0220C300 +_021DB344: .word UNK04_0220C164 + arm_func_end MOD04_021DB248 + + arm_func_start MOD04_021DB348 +MOD04_021DB348: ; 0x021DB348 + ldr ip, _021DB358 ; =CPS_Resolve + add r0, r0, #0x1000 + ldr r0, [r0, #0x124] + bx ip + .align 2, 0 +_021DB358: .word CPS_Resolve + arm_func_end MOD04_021DB348 + + arm_func_start MOD04_021DB35C +MOD04_021DB35C: ; 0x021DB35C + stmdb sp!, {r4, lr} + ldr r1, _021DB3AC ; =0x00001134 + mov r4, r0 + add r0, r4, r1 + mov r1, #0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r0, _021DB3B0 ; =0x00000B68 + add r1, r4, #0x1000 + str r0, [r1, #0x170] + ldr r3, [r1, #0x9c8] + ldr r0, _021DB3AC ; =0x00001134 + ldr r2, _021DB3B4 ; =0x000005EA + str r3, [r1, #0x174] + str r2, [r1, #0x17c] + ldr r2, [r1, #0x9cc] + add r0, r4, r0 + str r2, [r1, #0x180] + bl CPS_SocRegister + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB3AC: .word 0x00001134 +_021DB3B0: .word 0x00000B68 +_021DB3B4: .word 0x000005EA + arm_func_end MOD04_021DB35C + + arm_func_start MOD04_021DB3B8 +MOD04_021DB3B8: ; 0x021DB3B8 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DB3EC + ldr r0, _021DB438 ; =0x000019D0 + add r0, r4, r0 + bl OS_GetLowEntropyData + ldr r0, _021DB438 ; =0x000019D0 + mov r1, #0x20 + add r0, r4, r0 + bl CPS_SslAddRandomSeed +_021DB3EC: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xc0c] + cmp r0, #1 + bne _021DB41C + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_021DB41C: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0xa + bl OS_Sleep + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB438: .word 0x000019D0 +_021DB43C: .word 0x00001BF4 + arm_func_end MOD04_021DB3B8 + + arm_func_start MOD04_021DB440 +MOD04_021DB440: ; 0x021DB440 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldrb r0, [r0] + cmp r0, #0xff + ldmneia sp!, {r4, pc} + ldr r0, _021DB49C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + ldr r0, _021DB49C ; =0x00001BF4 + add r1, r4, #0x1000 + mov r2, #1 + add r0, r4, r0 + str r2, [r1, #0xc0c] + bl OS_UnlockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _021DB4A0 ; =0x00001B34 + add r0, r4, r0 + bl OS_JoinThread + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB49C: .word 0x00001BF4 +_021DB4A0: .word 0x00001B34 + arm_func_end MOD04_021DB440 + + arm_func_start MOD04_021DB4A4 +MOD04_021DB4A4: ; 0x021DB4A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r3, _021DB55C ; =0x00001BF4 + mov r5, r0 + add r2, r5, #0x1000 + mov ip, #0 + add r0, r5, r3 + mov r4, r1 + str ip, [r2, #0xc0c] + bl OS_InitMutex + ldr r0, _021DB560 ; =0x00001A14 + add r0, r5, r0 + bl OS_InitMutex + add r0, r5, #0x1000 + ldr r0, [r0, #0x18] + cmp r0, #1 + ldreq r0, _021DB564 ; =UNK04_02210480 + moveq r1, #1 + streq r1, [r0] + ldrne r0, _021DB564 ; =UNK04_02210480 + movne r1, #0 + strne r1, [r0] + add r0, r5, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB524 + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, pc} +_021DB524: + ldr r0, _021DB568 ; =0x00001B34 + mov r1, #0x1000 + str r1, [sp] + ldr r1, _021DB56C ; =MOD04_021DAF18 + mov r2, r5 + add r0, r5, r0 + add r3, r5, #0x1000 + str r4, [sp, #4] + bl OS_CreateThread + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DB55C: .word 0x00001BF4 +_021DB560: .word 0x00001A14 +_021DB564: .word UNK04_02210480 +_021DB568: .word 0x00001B34 +_021DB56C: .word MOD04_021DAF18 + arm_func_end MOD04_021DB4A4 + + arm_func_start MOD04_021DB570 +MOD04_021DB570: ; 0x021DB570 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _021DB5F4 ; =UNK04_0220C314 + ldr r2, _021DB5F8 ; =UNK04_0220C320 + mov r4, r0 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + add r0, r4, #0x1000 + ldr r0, [r0, #0x9f4] + ldr r1, _021DB5FC ; =UNK04_0220C148 + bl strstr + add r0, r0, #4 + bl strlen + movs r3, r0 + beq _021DB5E8 + ldr r2, _021DB600 ; =UNK04_0220C328 + add r0, sp, #0 + mov r1, #7 + bl OS_SNPrintf + ldr r1, _021DB604 ; =UNK04_0220C32C + add r2, sp, #0 + mov r0, r4 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_021DB5E8: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB5F4: .word UNK04_0220C314 +_021DB5F8: .word UNK04_0220C320 +_021DB5FC: .word UNK04_0220C148 +_021DB600: .word UNK04_0220C328 +_021DB604: .word UNK04_0220C32C + arm_func_end MOD04_021DB570 + + arm_func_start MOD04_021DB608 +MOD04_021DB608: ; 0x021DB608 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, _021DB714 ; =0x00001C10 + mov r6, r0 + ldr r4, [r5, #0xc] + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DB718 ; =0x00001004 + add r0, r6, #0x1000 + mvn r2, #0 + str r2, [r0, #0xa2c] + mov lr, r5 + str r2, [r0, #0xa30] + add ip, r6, r1 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _021DB71C ; =UNK04_0220C33C + ldr r1, _021DB720 ; =0x00000B68 + blx r4 + add r1, r6, #0x1000 + str r0, [r1, #0x9c8] + ldr r0, [r1, #0x9c8] + cmp r0, #0 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021DB724 ; =UNK04_0220C354 + ldr r1, _021DB728 ; =0x000005EA + blx r4 + add r2, r6, #0x1000 + str r0, [r2, #0x9cc] + ldr r0, [r2, #0x9cc] + cmp r0, #0 + moveq r0, #1 + streq r0, [r2, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _021DB72C ; =0x00001A04 + ldr r2, [r2, #0xc] + mov r0, r6 + add r1, r6, r1 + bl MOD04_021DAA50 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5] + mov r0, r6 + bl MOD04_021DA7E8 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl MOD04_021DAD88 + add r1, r6, #0x1000 + str r0, [r1, #0x20] + ldr r0, [r1, #0x20] + cmp r0, #0 + moveq r0, #0xff + streqb r0, [r1] + add r0, r6, #0x1000 + ldr r0, [r0, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DB714: .word 0x00001C10 +_021DB718: .word 0x00001004 +_021DB71C: .word UNK04_0220C33C +_021DB720: .word 0x00000B68 +_021DB724: .word UNK04_0220C354 +_021DB728: .word 0x000005EA +_021DB72C: .word 0x00001A04 + arm_func_end MOD04_021DB608 + + .section .data + + .global UNK04_0220C0E4 ; I really don't know about this table, I'm gonna assume it's extern for now because it's weird +UNK04_0220C0E4: ; 0x0220C0E4 + .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8 + .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0 + .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC + + .global UNK04_0220C110 +UNK04_0220C110: ; 0x0220C110 + .asciz "FREE array_entry[i].label" + + .balign 4, 0 + .global UNK04_0220C12C +UNK04_0220C12C: ; 0x0220C12C + .asciz "FREE array_entry[i].value" + + .balign 4, 0 + .global UNK04_0220C148 +UNK04_0220C148: ; 0x0220C148 + .asciz "\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C150 +UNK04_0220C150: ; 0x0220C150 + .asciz " " + + .balign 4, 0 + .global UNK04_0220C154 +UNK04_0220C154: ; 0x0220C154 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C160 +UNK04_0220C160: ; 0x0220C160 + .asciz "200" + + .balign 4, 0 + .global UNK04_0220C164 +UNK04_0220C164: ; 0x0220C164 + .asciz "\r\n" + + .balign 4, 0 + .global UNK04_0220C168 +UNK04_0220C168: ; 0x0220C168 + .asciz ": " + + .balign 4, 0 + .global UNK04_0220C16C +UNK04_0220C16C: ; 0x0220C16C + .asciz "=" + + .balign 4, 0 + .global UNK04_0220C170 +UNK04_0220C170: ; 0x0220C170 + .asciz "&" + + .balign 4, 0 + .global UNK04_0220C174 +UNK04_0220C174: ; 0x0220C174 + .asciz "ALLOC result->entry[i].label" + + .balign 4, 0 + .global UNK04_0220C194 +UNK04_0220C194: ; 0x0220C194 + .asciz "ALLOC result->entry[i].value" + + .balign 4, 0 + .global UNK04_0220C1B4 +UNK04_0220C1B4: ; 0x0220C1B4 + .asciz "FREE result->entry[i].label" + + .balign 4, 0 + .global UNK04_0220C1D0 +UNK04_0220C1D0: ; 0x0220C1D0 + .asciz "FREE result->entry[i].value" + + .balign 4, 0 + .global UNK04_0220C1EC +UNK04_0220C1EC: ; 0x0220C1EC + .asciz "http://" + + .balign 4, 0 + .global UNK04_0220C1F4 +UNK04_0220C1F4: ; 0x0220C1F4 + .asciz "https://" + + .balign 4, 0 + .global UNK04_0220C200 +UNK04_0220C200: ; 0x0220C200 + .asciz ":" + + .balign 4, 0 + .global UNK04_0220C204 +UNK04_0220C204: ; 0x0220C204 + .asciz "/" + + .balign 4, 0 + .global UNK04_0220C208 +UNK04_0220C208: ; 0x0220C208 + .asciz "ALLOC newptr" + + .balign 4, 0 + .global UNK04_0220C218 +UNK04_0220C218: ; 0x0220C218 + .asciz "FREE buf->buffer" + + .balign 4, 0 + .global UNK04_0220C22C +UNK04_0220C22C: ; 0x0220C22C + .asciz "ALLOC buf->buffer" + + .balign 4, 0 + .global UNK04_0220C240 +UNK04_0220C240: ; 0x0220C240 + .asciz "%s" + + .balign 4, 0 + .global UNK04_0220C244 +UNK04_0220C244: ; 0x0220C244 + .asciz "%s=" + + .balign 4, 0 + .global UNK04_0220C248 +UNK04_0220C248: ; 0x0220C248 + .asciz "&%s=" + + .balign 4, 0 + .global UNK04_0220C250 +UNK04_0220C250: ; 0x0220C250 + .asciz "%s: %s\r\n" + + .balign 4, 0 + .global UNK04_0220C25C +UNK04_0220C25C: ; 0x0220C25C + .ascii "POST /%s HTTP/1.0\r\n" + .ascii "Content-type: application/x-www-form-urlencoded\r\n" + .asciz "Host: %s\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C2B0 +UNK04_0220C2B0: ; 0x0220C2B0 + .ascii "GET /%s HTTP/1.0\r\n" + .asciz "Host: %s\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C2D0 +UNK04_0220C2D0: ; 0x0220C2D0 + .asciz "FREE http->lowrecvbuf" + + .balign 4, 0 + .global UNK04_0220C2E8 +UNK04_0220C2E8: ; 0x0220C2E8 + .asciz "FREE http->lowsendbuf" + + .balign 4, 0 + .global UNK04_0220C300 +UNK04_0220C300: ; 0x0220C300 + .asciz "Content-Length: " + + .balign 4, 0 + .global UNK04_0220C314 +UNK04_0220C314: ; 0x0220C314 + .asciz "Connection" + + .balign 4, 0 + .global UNK04_0220C320 +UNK04_0220C320: ; 0x0220C320 + .asciz "close" + + .balign 4, 0 + .global UNK04_0220C328 +UNK04_0220C328: ; 0x0220C328 + .asciz "%d" + + .balign 4, 0 + .global UNK04_0220C32C +UNK04_0220C32C: ; 0x0220C32C + .asciz "Content-Length" + + .balign 4, 0 + .global UNK04_0220C33C +UNK04_0220C33C: ; 0x0220C33C + .asciz "ALLOC http->lowrecvbuf" + + .balign 4, 0 + .global UNK04_0220C354 +UNK04_0220C354: ; 0x0220C354 + .asciz "ALLOC http->lowsendbuf" + + .balign 4, 0 diff --git a/arm9/modules/04/asm/mod04_021DB730.s b/arm9/modules/04/asm/mod04_021DB730.s new file mode 100644 index 00000000..c506ed71 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DB730.s @@ -0,0 +1,1512 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DB730 +MOD04_021DB730: ; 0x021DB730 + stmdb sp!, {r4, lr} + ldr r2, _021DB770 ; =UNK04_02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021DB770 ; =UNK04_02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB770: .word UNK04_02210484 +_021DB774: .word 0x000011DC + arm_func_end MOD04_021DB730 + + arm_func_start MOD04_021DB778 +MOD04_021DB778: ; 0x021DB778 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2d4 + ldr r5, _021DC670 ; =UNK04_02210484 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + ldr r7, [sp] + add r0, r0, #0x1000 + ldr sb, [r0, #0x108] + ldr r8, [r0, #0x10c] + mov r0, r7 + str r0, [sp, #8] + str r0, [sp, #0x1c] + mvn r0, #2 + str r0, [sp, #0x20] + mov r0, r7 + str r0, [sp, #0x24] + mvn r0, #3 + str r0, [sp, #0x28] + mov r0, r7 + str r0, [sp, #0x2c] + mov r0, #0x1000 + str r0, [sp, #0x14] + mov r0, #5 + str r0, [sp, #0x30] + mov r0, r7 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + mov r0, #4 + str r0, [sp, #0x40] + mov r0, r7 + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + str r0, [sp, #0x58] + str r0, [sp, #0x54] + mvn r0, #4 + str r0, [sp, #0x5c] + mov r0, r7 + str r0, [sp, #0x60] + mvn r0, #1 + ldr r4, _021DC674 ; =UNK04_02210490 + mov r6, #1 + str r0, [sp, #0x18] +_021DB830: + ldr r0, _021DC678 ; =UNK04_02210494 + ldr r1, [sp, #0x14] + str r6, [r0, #4] + str r1, [r0, #8] + ldr r1, _021DC67C ; =0x00004E20 + str sb, [r0, #0xc] + str r1, [r0, #0x18] + str r8, [r0, #0x10] + ldr r0, _021DC680 ; =UNK04_0220C36C + ldr r1, [r5] + ldr r2, [r0] + ldr r0, _021DC678 ; =UNK04_02210494 + add r1, r1, #0x1000 + str r2, [r0] + ldr r0, [sp, #0x18] + str r0, [r1, #4] + ldr r0, [r4] + ldr r1, _021DC678 ; =UNK04_02210494 + bl MOD04_021DB608 + cmp r0, #0 + beq _021DB89C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DB89C: + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DB8C4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DB8C4: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB8FC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DB8FC: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DB91C + cmp r1, #8 + beq _021DB948 + b _021DB930 +_021DB91C: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DB930: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DB948: + ldr r1, [sp, #0x1c] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DB970 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DB970: + ldr r0, [r4] + ldr r1, _021DC68C ; =UNK04_0220C418 + bl MOD04_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =errno + ldr r0, [r0] + cmp r0, #0x22 + bne _021DB9A0 + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DB9A0: + cmp sl, #0xc8 + beq _021DBCB4 + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DBC9C + ldr r0, _021DC698 ; =UNK04_0221048C + str r6, [r0] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DBC0C + ldr r1, _021DC674 ; =UNK04_02210490 + mvn r2, #5 + str r2, [r0, #4] + ldr r0, [r1] + bl MOD04_021DAE4C + ldr r2, _021DC678 ; =UNK04_02210494 + ldr r0, _021DC69C ; =UNK04_0220BEB4 + ldr r3, _021DC67C ; =0x00004E20 + ldr r0, [r0] + mov r5, #0 + mov r4, #0x200 + ldr r1, _021DC6A0 ; =UNK04_0220C424 + str r0, [r2] + str r5, [r2, #4] + str r4, [r2, #8] + str sb, [r2, #0xc] + str r8, [r2, #0x10] + str r3, [r2, #0x18] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =UNK04_02210494 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, _021DC678 ; =UNK04_02210494 + ldr r0, [r0] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DBA5C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBA5C: + add r0, sp, #0x240 + bl MOD04_021DA238 + cmp r0, #0 + beq _021DBA88 + ldr r0, _021DC674 ; =UNK04_02210490 + add r1, sp, #0x240 + ldr r0, [r0] + mov r2, #1 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DBAA0 +_021DBA88: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBAA0: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, _021DC6A4 ; =UNK04_0220C444 + ldr r0, [r0] + ldr r2, _021DC6A8 ; =UNK04_0220C44C + mov r3, #7 + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DBAF8 + ldr r0, _021DC670 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r4, [r0, #0x118] + mov r0, r4 + bl strlen + ldr r1, _021DC674 ; =UNK04_02210490 + mov r3, r0 + ldr r0, [r1] + ldr r1, _021DC6AC ; =UNK04_0220C454 + mov r2, r4 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DBB10 +_021DBAF8: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBB10: + ldr r1, _021DC670 ; =UNK04_02210484 + ldr r0, _021DC6B0 ; =UNK04_0220C464 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x1000 + ldr r1, [r1, #0x118] + blx r8 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r0, [r0] + ldr r1, _021DC674 ; =UNK04_02210490 + add r0, r0, #0x1000 + str r2, [r0, #0x118] + ldr r0, [r1] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DBB6C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBB6C: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r2, _021DC674 ; =UNK04_02210490 + sub r1, r0, #1 + ldr r0, [r2] + bl MOD04_021DB4A4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBBAC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBBAC: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DBBD0 + cmp r1, #8 + beq _021DBBFC + b _021DBBE4 +_021DBBD0: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBBE4: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DBBFC: + bl MOD04_021DAE4C + mov r0, #7 + bl MOD04_021DB730 + b _021DC614 +_021DBC0C: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr fp, [r1, #0xa04] + cmp fp, #0 + bne _021DBC30 + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DBC30: + mov r0, fp + bl strlen + add r1, r0, #1 + ldr r0, _021DC6B4 ; =UNK04_0220C394 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x114] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x114] + str r0, [sp, #0xc] + cmp r0, #0 + bne _021DBC80 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DBC80: + mov r0, fp + bl strlen + mov r2, r0 + ldr r0, [sp, #0xc] + mov r1, fp + bl strncpy + b _021DBCB4 +_021DBC9C: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #0xa + bl MOD04_021DB730 + b _021DC614 +_021DBCB4: + ldr r0, [r4] + bl MOD04_021DAE4C + add r0, sp, #0x68 + bl DWCi_BM_GetWiFiInfo + ldr r2, [sp, #0x68] + ldr r1, [sp, #0x6c] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _021DBDEC + ldr r1, [r5] + ldr r0, _021DC6B8 ; =UNK04_022104B0 + add r2, r1, #0x1000 + ldr r1, [sp, #0x20] + str r1, [r2, #4] + ldr r2, [sp, #0x24] + mov r1, r0 + strh r2, [r1] + strb r2, [r1, #0x34] + ldr r2, [r5] + ldr r1, [r4] + add r3, r2, #0x1000 + ldr fp, [r3, #0x108] + mov r2, r0 + str fp, [r2, #0x40] + ldr r3, [r3, #0x10c] + str r3, [r2, #0x44] + bl MOD04_021D9ACC + cmp r0, #0 + beq _021DBD38 + mov r0, #5 + bl MOD04_021DB730 + b _021DC614 +_021DBD38: + bl MOD04_021D98DC + bl MOD04_021D988C + cmp r0, #0x15 + beq _021DBDE8 + bl MOD04_021D988C + cmp r0, #9 + bne _021DBD6C + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + b _021DBDD8 +_021DBD6C: + add r0, sp, #0x7c + bl MOD04_021D97F8 + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DBDC4 + ldr r1, [sp, #0x7c] + ldr r0, _021DC6C0 ; =0xFFFFA4FA + cmp r1, r0 + beq _021DBDA0 + bl MOD04_021D988C + cmp r0, #0xb + bne _021DBDC4 +_021DBDA0: + ldr r0, _021DC670 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + bl MOD04_021D991C + mov r0, #0xb + bl MOD04_021DB730 + b _021DC614 +_021DBDC4: + ldr r0, _021DC670 ; =UNK04_02210484 + ldr r1, [sp, #0x7c] + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBDD8: + bl MOD04_021D991C + mov r0, #6 + bl MOD04_021DB730 + b _021DC614 +_021DBDE8: + bl MOD04_021D991C +_021DBDEC: + cmp sl, #0xc8 + bne _021DBE14 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DBE14: + ldr r0, [r5] + ldr r1, _021DC6A0 ; =UNK04_0220C424 + add r2, r0, #0x1000 + ldr r0, [sp, #0x28] + str r0, [r2, #4] + ldr r0, _021DC678 ; =UNK04_02210494 + ldr r2, [sp, #0x2c] + str sb, [r0, #0xc] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r8, [r0, #0x10] + str r2, [r0, #8] + ldr r2, _021DC6C4 ; =0x00009C40 + str r2, [r0, #0x18] + ldr r0, _021DC69C ; =UNK04_0220BEB4 + ldr r2, _021DC678 ; =UNK04_02210494 + ldr r0, [r0] + str r0, [r2] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =UNK04_02210494 + ldr r1, _021DC678 ; =UNK04_02210494 + strne r6, [r0, #0x14] + ldr r0, [r4] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DBE98 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBE98: + add r0, sp, #0x240 + bl MOD04_021DA238 + cmp r0, #0 + beq _021DBEC0 + ldr r0, [r4] + add r1, sp, #0x240 + mov r2, r6 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DBED8 +_021DBEC0: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBED8: + ldr r0, [r4] + ldr r1, _021DC6A4 ; =UNK04_0220C444 + ldr r2, _021DC6C8 ; =UNK04_0220C484 + ldr r3, [sp, #0x30] + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DBF24 + ldr r0, [r5] + add r0, r0, #0x1000 + ldr sl, [r0, #0x114] + mov r0, sl + bl strlen + mov r3, r0 + ldr r0, [r4] + ldr r1, _021DC6CC ; =UNK04_0220C48C + mov r2, sl + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DBF3C +_021DBF24: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBF3C: + ldr r1, [r5] + ldr r0, _021DC6D0 ; =UNK04_0220C3B0 + add r1, r1, #0x1000 + ldr r2, [sp, #0x34] + ldr r1, [r1, #0x114] + blx r8 + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [sp, #0x38] + str r0, [r1, #0x114] + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DBF8C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBF8C: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBFC4 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBFC4: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC02C + cmp r1, #3 + beq _021DBFEC + cmp r1, #8 + beq _021DC058 + b _021DC040 +_021DBFEC: + bl MOD04_021DAE4C + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC020 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC020: + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC02C: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC040: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC058: + ldr r1, [sp, #0x3c] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DC080 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC080: + ldr r0, [r4] + ldr r1, _021DC68C ; =UNK04_0220C418 + bl MOD04_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =errno + ldr r0, [r0] + cmp r0, #0x22 + bne _021DC0BC + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC0BC: + cmp sl, #0xc8 + beq _021DC118 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC10C + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DC10C + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC10C: + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC118: + ldr r0, [r4] + ldr r1, _021DC6D4 ; =UNK04_0220C494 + ldr r3, [sp, #0x40] + add r2, sp, #0x64 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021DC14C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC14C: + add r0, sp, #0x64 + bl atol + ldr r1, _021DC690 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC17C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC17C: + ldr r1, _021DC6BC ; =UNK04_02210488 + ldr r1, [r1] + cmp r1, #1 + bne _021DC1B4 + cmp r0, #0x72 + bne _021DC1B4 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC1B4: + cmp r0, #0x64 + blt _021DC1D4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #6 + bl MOD04_021DB730 + b _021DC614 +_021DC1D4: + ldr r2, [sp, #0x44] + ldr r0, [r4] + ldr r1, _021DC6D8 ; =UNK04_0220C4A0 + mov r3, r2 + bl MOD04_021DA334 + mov fp, r0 + cmp fp, #0 + bgt _021DC20C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC20C: + ldr r2, [sp, #0x48] + ldr r0, [r4] + ldr r1, _021DC6DC ; =UNK04_0220C4A4 + mov r3, r2 + bl MOD04_021DA334 + str r0, [sp, #4] + cmp r0, #0 + bgt _021DC244 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC244: + ldr r2, [sp, #0x4c] + ldr r0, [r4] + ldr r1, _021DC6E0 ; =UNK04_0220C4AC + mov r3, r2 + bl MOD04_021DA334 + mov sl, r0 + ldr r0, _021DC6E4 ; =UNK04_0220C3CC + add r1, fp, #1 + blx sb + str r0, [sp] + cmp r0, #0 + bne _021DC28C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC28C: + ldr r1, [sp, #4] + ldr r0, _021DC6E8 ; =UNK04_0220C3D8 + add r1, r1, #1 + blx sb + movs r7, r0 + bne _021DC2BC + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC2BC: + cmp sl, #0 + ble _021DC2F4 + ldr r0, _021DC6EC ; =UNK04_0220C3E8 + add r1, sl, #1 + blx sb + str r0, [sp, #8] + cmp r0, #0 + bne _021DC2F4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC2F4: + ldr r0, [r4] + ldr r1, _021DC6D8 ; =UNK04_0220C4A0 + ldr r2, [sp] + add r3, fp, #1 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC328 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC328: + ldr r1, [sp, #4] + ldr r2, [sp, #0x50] + add r3, r1, #1 + ldr r1, [sp] + strb r2, [r1, r0] + ldr r0, [r4] + ldr r1, _021DC6DC ; =UNK04_0220C4A4 + mov r2, r7 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC36C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC36C: + ldr r1, [sp, #0x54] + cmp sl, #0 + strb r1, [r7, r0] + mov fp, r1 + ble _021DC404 + ldr r0, [r4] + ldr r1, _021DC6E0 ; =UNK04_0220C4AC + ldr r2, [sp, #8] + add r3, sl, #1 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC3B4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC3B4: + ldr r2, [sp, #0x58] + ldr r1, [sp, #8] + strb r2, [r1, r0] + mov r0, r1 + bl atol + ldr r1, _021DC690 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC3F0 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC3F0: + mov r1, #0x3e8 + mul fp, r0, r1 + ldr r0, _021DC6F0 ; =0x0002BF20 + cmp fp, r0 + movgt fp, r0 +_021DC404: + ldr r0, [r4] + bl MOD04_021DAE4C + ldr r0, [r5] + ldr r1, _021DC678 ; =UNK04_02210494 + add r2, r0, #0x1000 + ldr r0, [sp, #0x5c] + str r0, [r2, #4] + mov r0, r1 + ldr r2, [sp] + str sb, [r0, #0xc] + str r2, [r0] + ldr r2, [sp, #0x60] + str r8, [r0, #0x10] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r2, [r0, #8] + ldr r2, _021DC6F4 ; =0x0001D4C0 + str r2, [r0, #0x18] + ldr r0, [r4] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DC474 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DC474: + ldr r0, [r4] + mov r1, r7 + bl MOD04_021DAACC + cmp r0, #0 + beq _021DC4A0 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DC4A0: + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DC4C8 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DC4C8: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DC500 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DC500: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC520 + cmp r1, #8 + beq _021DC54C + b _021DC534 +_021DC520: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC534: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC54C: + mov r1, r6 + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DC574 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC574: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr sl, [r1, #0xa04] + cmp sl, #0 + bne _021DC598 + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC598: + mov r0, sl + bl strlen + add r1, r0, #1 + ldr r0, _021DC6F8 ; =UNK04_0220C3F8 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x118] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x118] + str r0, [sp, #0x10] + cmp r0, #0 + bne _021DC5E8 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC5E8: + mov r0, sl + bl strlen + mov r2, r0 + ldr r0, [sp, #0x10] + mov r1, sl + bl strncpy + ldr r0, [r4] + bl MOD04_021DAE4C + mov r0, fp + bl OS_Sleep + b _021DB830 +_021DC614: + ldr r0, [sp] + cmp r0, #0 + beq _021DC630 + ldr r0, _021DC6FC ; =UNK04_0220C4B4 + ldr r1, [sp] + mov r2, #0 + blx r8 +_021DC630: + cmp r7, #0 + beq _021DC648 + ldr r0, _021DC700 ; =UNK04_0220C4C0 + mov r1, r7 + mov r2, #0 + blx r8 +_021DC648: + ldr r0, [sp, #8] + cmp r0, #0 + addeq sp, sp, #0x2d4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DC704 ; =UNK04_0220C4CC + ldr r1, [sp, #8] + mov r2, #0 + blx r8 + add sp, sp, #0x2d4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DC670: .word UNK04_02210484 +_021DC674: .word UNK04_02210490 +_021DC678: .word UNK04_02210494 +_021DC67C: .word 0x00004E20 +_021DC680: .word UNK04_0220C36C +_021DC684: .word OSi_ThreadInfo +_021DC688: .word 0x00001B34 +_021DC68C: .word UNK04_0220C418 +_021DC690: .word errno +_021DC694: .word 0x0000012E +_021DC698: .word UNK04_0221048C +_021DC69C: .word UNK04_0220BEB4 +_021DC6A0: .word UNK04_0220C424 +_021DC6A4: .word UNK04_0220C444 +_021DC6A8: .word UNK04_0220C44C +_021DC6AC: .word UNK04_0220C454 +_021DC6B0: .word UNK04_0220C464 +_021DC6B4: .word UNK04_0220C394 +_021DC6B8: .word UNK04_022104B0 +_021DC6BC: .word UNK04_02210488 +_021DC6C0: .word 0xFFFFA4FA +_021DC6C4: .word 0x00009C40 +_021DC6C8: .word UNK04_0220C484 +_021DC6CC: .word UNK04_0220C48C +_021DC6D0: .word UNK04_0220C3B0 +_021DC6D4: .word UNK04_0220C494 +_021DC6D8: .word UNK04_0220C4A0 +_021DC6DC: .word UNK04_0220C4A4 +_021DC6E0: .word UNK04_0220C4AC +_021DC6E4: .word UNK04_0220C3CC +_021DC6E8: .word UNK04_0220C3D8 +_021DC6EC: .word UNK04_0220C3E8 +_021DC6F0: .word 0x0002BF20 +_021DC6F4: .word 0x0001D4C0 +_021DC6F8: .word UNK04_0220C3F8 +_021DC6FC: .word UNK04_0220C4B4 +_021DC700: .word UNK04_0220C4C0 +_021DC704: .word UNK04_0220C4CC + arm_func_end MOD04_021DB778 + + arm_func_start MOD04_021DC708 +MOD04_021DC708: ; 0x021DC708 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DC788 ; =UNK04_02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC740 + ldr r0, _021DC78C ; =0x0000111C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021DC740: + ldr r1, _021DC788 ; =UNK04_02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r2, [r1] + mov r3, #0x1000 + ldr r1, _021DC790 ; =MOD04_021DB778 + str r3, [sp] + mov ip, #0x10 + add r0, r2, r0 + add r3, r2, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021DC788 ; =UNK04_02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DC788: .word UNK04_02210484 +_021DC78C: .word 0x0000111C +_021DC790: .word MOD04_021DB778 + arm_func_end MOD04_021DC708 + + arm_func_start MOD04_021DC794 +MOD04_021DC794: ; 0x021DC794 + ldr r0, _021DC7A8 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_021DC7A8: .word UNK04_02210484 + arm_func_end MOD04_021DC794 + + arm_func_start MOD04_021DC7AC +MOD04_021DC7AC: ; 0x021DC7AC + stmdb sp!, {r4, lr} + ldr r1, _021DC7E8 ; =UNK04_02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r1, [r1] + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021DC7E8 ; =UNK04_02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC7E8: .word UNK04_02210484 +_021DC7EC: .word 0x000011DC + arm_func_end MOD04_021DC7AC + + arm_func_start MOD04_021DC7F0 +MOD04_021DC7F0: ; 0x021DC7F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DC864 ; =UNK04_02210484 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DC868 ; =UNK04_02210490 + ldr r0, [r0] + cmp r0, #0 + beq _021DC820 + bl MOD04_021DB440 +_021DC820: + bl MOD04_021D9974 + ldr r0, _021DC864 ; =UNK04_02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC848 + ldr r0, _021DC86C ; =0x0000111C + add r0, r1, r0 + bl OS_JoinThread +_021DC848: + ldr r0, _021DC864 ; =UNK04_02210484 + mvn r1, #6 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DC864: .word UNK04_02210484 +_021DC868: .word UNK04_02210490 +_021DC86C: .word 0x0000111C + arm_func_end MOD04_021DC7F0 + + arm_func_start MOD04_021DC870 +MOD04_021DC870: ; 0x021DC870 + stmdb sp!, {r4, lr} + ldr r1, _021DC958 ; =UNK04_02210484 + ldr r0, _021DC95C ; =UNK04_02210490 + ldr r1, [r1] + ldr r0, [r0] + add r1, r1, #0x1000 + cmp r0, #0 + ldr r4, [r1, #0x10c] + beq _021DC8B8 + bl MOD04_021DAE4C + ldr r1, _021DC95C ; =UNK04_02210490 + ldr r0, _021DC960 ; =UNK04_0220C4D8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC95C ; =UNK04_02210490 + mov r1, #0 + str r1, [r0] +_021DC8B8: + bl MOD04_021D991C + ldr r0, _021DC958 ; =UNK04_02210484 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r0, #0x1000 + ldr r1, [r0, #0x114] + cmp r1, #0 + beq _021DC8FC + ldr r0, _021DC964 ; =UNK04_0220C3B0 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x114] +_021DC8FC: + ldr r0, _021DC958 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DC934 + ldr r0, _021DC968 ; =UNK04_0220C464 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x118] +_021DC934: + ldr r1, _021DC958 ; =UNK04_02210484 + ldr r0, _021DC96C ; =UNK04_0220C4E8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC958: .word UNK04_02210484 +_021DC95C: .word UNK04_02210490 +_021DC960: .word UNK04_0220C4D8 +_021DC964: .word UNK04_0220C3B0 +_021DC968: .word UNK04_0220C464 +_021DC96C: .word UNK04_0220C4E8 + arm_func_end MOD04_021DC870 + + arm_func_start MOD04_021DC970 +MOD04_021DC970: ; 0x021DC970 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021DCA5C ; =UNK04_02210484 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r5] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA60 ; =UNK04_0220C4FC + ldr r1, _021DCA64 ; =0x000011F4 + blx r4 + ldr r1, _021DCA5C ; =UNK04_02210484 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DCA64 ; =0x000011F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DCA5C ; =UNK04_02210484 + ldr r2, _021DCA68 ; =0xFFFE7961 + ldr r0, [r1] + ldr r3, _021DCA6C ; =0x00001108 + add r0, r0, #0x1000 + str r2, [r0, #4] + ldr ip, [r1] + ldmia r5, {r0, r1, r2} + add r3, ip, r3 + stmia r3, {r0, r1, r2} + ldr r0, _021DCA70 ; =UNK04_02210490 + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA74 ; =UNK04_0220C510 + ldr r1, _021DCA78 ; =0x00001C10 + blx r4 + ldr r1, _021DCA70 ; =UNK04_02210490 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DCA5C ; =UNK04_02210484 + ldr r0, _021DCA7C ; =0x000011DC + ldr r2, [r1] + ldr r1, _021DCA80 ; =UNK04_0221048C + mov r3, #0 + add r0, r2, r0 + str r3, [r1] + bl OS_InitMutex + bl MOD04_021DC708 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DCA5C: .word UNK04_02210484 +_021DCA60: .word UNK04_0220C4FC +_021DCA64: .word 0x000011F4 +_021DCA68: .word 0xFFFE7961 +_021DCA6C: .word 0x00001108 +_021DCA70: .word UNK04_02210490 +_021DCA74: .word UNK04_0220C510 +_021DCA78: .word 0x00001C10 +_021DCA7C: .word 0x000011DC +_021DCA80: .word UNK04_0221048C + arm_func_end MOD04_021DC970 + + .section .data + + .global UNK04_0220C36C +UNK04_0220C36C: ; 0x0220C36C + .word UNK04_0220C370 + + .global UNK04_0220C370 +UNK04_0220C370: ; 0x0220C370 + .asciz "http://conntest.nintendowifi.net/" + + .balign 4, 0 + .global UNK04_0220C394 +UNK04_0220C394: ; 0x0220C394 + .asciz "ALLOC DWCnetcheck->body_302" + + .balign 4, 0 + .global UNK04_0220C3B0 +UNK04_0220C3B0: ; 0x0220C3B0 + .asciz "FREE DWCnetcheck->body_302" + + .balign 4, 0 + .global UNK04_0220C3CC +UNK04_0220C3CC: ; 0x0220C3CC + .asciz "ALLOC url" + + .balign 4, 0 + .global UNK04_0220C3D8 +UNK04_0220C3D8: ; 0x0220C3D8 + .asciz "ALLOC data_len" + + .balign 4, 0 + .global UNK04_0220C3E8 +UNK04_0220C3E8: ; 0x0220C3E8 + .asciz "ALLOC wait_len" + + .balign 4, 0 + .global UNK04_0220C3F8 +UNK04_0220C3F8: ; 0x0220C3F8 + .asciz "ALLOC DWCnetcheck->body_wayport" + + .balign 4, 0 + .global UNK04_0220C418 +UNK04_0220C418: ; 0x0220C418 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C424 +UNK04_0220C424: ; 0x0220C424 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220C444 +UNK04_0220C444: ; 0x0220C444 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220C44C +UNK04_0220C44C: ; 0x0220C44C + .asciz "message" + + .balign 4, 0 + .global UNK04_0220C454 +UNK04_0220C454: ; 0x0220C454 + .asciz "HotSpotResponse" + + .balign 4, 0 + .global UNK04_0220C464 +UNK04_0220C464: ; 0x0220C464 + .asciz "FREE DWCnetcheck->body_wayport" + + .balign 4, 0 + .global UNK04_0220C484 +UNK04_0220C484: ; 0x0220C484 + .asciz "parse" + + .balign 4, 0 + .global UNK04_0220C48C +UNK04_0220C48C: ; 0x0220C48C + .asciz "HTML" + + .balign 4, 0 + .global UNK04_0220C494 +UNK04_0220C494: ; 0x0220C494 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220C4A0 +UNK04_0220C4A0: ; 0x0220C4A0 + .asciz "url" + + .balign 4, 0 + .global UNK04_0220C4A4 +UNK04_0220C4A4: ; 0x0220C4A4 + .asciz "data" + + .balign 4, 0 + .global UNK04_0220C4AC +UNK04_0220C4AC: ; 0x0220C4AC + .asciz "wait" + + .balign 4, 0 + .global UNK04_0220C4B4 +UNK04_0220C4B4: ; 0x0220C4B4 + .asciz "FREE url" + + .balign 4, 0 + .global UNK04_0220C4C0 +UNK04_0220C4C0: ; 0x0220C4C0 + .asciz "FREE data" + + .balign 4, 0 + .global UNK04_0220C4CC +UNK04_0220C4CC: ; 0x0220C4CC + .asciz "FREE wait" + + .balign 4, 0 + .global UNK04_0220C4D8 +UNK04_0220C4D8: ; 0x0220C4D8 + .asciz "FREE DWChttp" + + .balign 4, 0 + .global UNK04_0220C4E8 +UNK04_0220C4E8: ; 0x0220C4E8 + .asciz "FREE DWCnetcheck" + + .balign 4, 0 + .global UNK04_0220C4FC +UNK04_0220C4FC: ; 0x0220C4FC + .asciz "ALLOC DWCnetcheck" + + .balign 4, 0 + .global UNK04_0220C510 +UNK04_0220C510: ; 0x0220C510 + .asciz "ALLOC DWChttp" + + .balign 4, 0 + .section .bss + + .global UNK04_02210490 +UNK04_02210490: ; 0x02210490 + .space 0x4 + + .global UNK04_02210494 +UNK04_02210494: ; 0x02210494 + .space 0x1C + + .global UNK04_022104B0 +UNK04_022104B0: ; 0x022104B0 + .space 0x48 diff --git a/arm9/modules/04/asm/mod04_021DC8A4.s b/arm9/modules/04/asm/mod04_021DC8A4.s new file mode 100644 index 00000000..7668cb10 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DC8A4.s @@ -0,0 +1,240 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DCA84 +MOD04_021DCA84: ; 0x021DCA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + mov r6, r0 + bl strlen + mov r4, r0 + ldr r0, _021DCCB4 ; =UNK04_0220C580 + bl strlen + cmp r4, r0 + bne _021DCCA8 + ldrsb r0, [r6, #7] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0xb] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x10] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x13] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x16] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x19] + cmp r0, #0x20 + bne _021DCCA8 + add r0, sp, #0 + bl RTC_GetDate + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0x10 + bl RTC_GetTime + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r5, r1 + mvn r0, #0 + cmp r5, r0 + cmpeq r4, r0 + beq _021DCCA8 + add r0, sp, #0x1c + mov r1, r6 + bl strcpy + mov r2, #0 + ldr r1, _021DCCB8 ; =errno + add r0, sp, #0x28 + strb r2, [sp, #0x23] + strb r2, [sp, #0x27] + strb r2, [sp, #0x2c] + strb r2, [sp, #0x2f] + strb r2, [sp, #0x32] + strb r2, [sp, #0x35] + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp] + ldr r1, [r1] + cmp r1, #0x22 + beq _021DCCA8 + sub r1, r0, #0x7d0 + mov r0, #0xd + str r1, [sp] + str r0, [sp, #4] + mov r8, #0 + ldr r7, _021DCCBC ; =UNK04_0220C550 + add r6, sp, #0x24 +_021DCB9C: + ldr r0, [r7, r8, lsl #2] + mov r1, r6 + bl strcmp + cmp r0, #0 + addeq r0, r8, #1 + streq r0, [sp, #4] + beq _021DCBC4 + add r8, r8, #1 + cmp r8, #0xc + blt _021DCB9C +_021DCBC4: + ldr r0, [sp, #4] + cmp r0, #0xc + bhi _021DCCA8 + ldr r1, _021DCCB8 ; =errno + mov r2, #0 + add r0, sp, #0x21 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #8] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x2d + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x10] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x30 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x14] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x33 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x18] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + beq _021DCCA8 + subs r4, r4, r0 + ldr r2, _021DCCC0 ; =UNK04_022104FC + sbc r3, r5, r1 + ldr r1, _021DCCC4 ; =UNK04_022104F8 + mov r0, #1 + str r3, [r2, #4] + str r0, [r1] + add sp, sp, #0x40 + str r4, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DCCA8: + mov r0, #0 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DCCB4: .word UNK04_0220C580 +_021DCCB8: .word errno +_021DCCBC: .word UNK04_0220C550 +_021DCCC0: .word UNK04_022104FC +_021DCCC4: .word UNK04_022104F8 + arm_func_end MOD04_021DCA84 + + .section .data + + .global UNK04_0220C520 +UNK04_0220C520: ; 0x0220C520 + .asciz "Dec" + + .balign 4, 0 + .global UNK04_0220C524 +UNK04_0220C524: ; 0x0220C524 + .asciz "Jul" + + .balign 4, 0 + .global UNK04_0220C528 +UNK04_0220C528: ; 0x0220C528 + .asciz "Oct" + + .balign 4, 0 + .global UNK04_0220C52C +UNK04_0220C52C: ; 0x0220C52C + .asciz "Sep" + + .balign 4, 0 + .global UNK04_0220C530 +UNK04_0220C530: ; 0x0220C530 + .asciz "Aug" + + .balign 4, 0 + .global UNK04_0220C534 +UNK04_0220C534: ; 0x0220C534 + .asciz "Nov" + + .balign 4, 0 + .global UNK04_0220C538 +UNK04_0220C538: ; 0x0220C538 + .asciz "Jun" + + .balign 4, 0 + .global UNK04_0220C53C +UNK04_0220C53C: ; 0x0220C53C + .asciz "May" + + .balign 4, 0 + .global UNK04_0220C540 +UNK04_0220C540: ; 0x0220C540 + .asciz "Apr" + + .balign 4, 0 + .global UNK04_0220C544 +UNK04_0220C544: ; 0x0220C544 + .asciz "Mar" + + .balign 4, 0 + .global UNK04_0220C548 +UNK04_0220C548: ; 0x0220C548 + .asciz "Feb" + + .balign 4, 0 + .global UNK04_0220C54C +UNK04_0220C54C: ; 0x0220C54C + .asciz "Jan" + + .balign 4, 0 + .global UNK04_0220C550 +UNK04_0220C550: ; 0x0220C550 + .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540 + .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530 + .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520 + + .global UNK04_0220C580 +UNK04_0220C580: ; 0x0220C580 + .asciz "Fri, 03 Mar 2006 01:28:13 GMT" + + .balign 4, 0 + .section .bss + + .global UNK04_022104F8 +UNK04_022104F8: ; 0x022104F8 + .space 0x4 + + .global UNK04_022104FC +UNK04_022104FC: ; 0x022104FC + .space 0x8 diff --git a/arm9/modules/04/asm/mod04_021DCCC8.s b/arm9/modules/04/asm/mod04_021DCCC8.s new file mode 100644 index 00000000..a182f7c3 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DCCC8.s @@ -0,0 +1,545 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DCCC8 +MOD04_021DCCC8: ; 0x021DCCC8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #0 + ldr r0, [r0] + add r4, r0, #8 + mov r0, r4 + bl MOD04_021DA3DC + cmp r0, #0 + bne _021DCD08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD08: + ldr r1, _021DCEDC ; =UNK04_0220C5A0 + mov r0, r4 + bl MOD04_021DA388 + cmp r0, #0 + beq _021DCD20 + bl MOD04_021DCA84 +_021DCD20: + ldr r1, _021DCEE0 ; =UNK04_0220C5A8 + mov r0, r4 + bl MOD04_021DA388 + cmp r0, #0 + bne _021DCD4C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD4C: + bl atol + ldr r1, _021DCEE4 ; =errno + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCD7C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD7C: + cmp r2, #0xc8 + beq _021DCDA0 + ldr r1, _021DCEE8 ; =0xFFFF9E58 + mov r0, #0x10 + sub r1, r1, r2 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDA0: + ldr r1, _021DCEEC ; =UNK04_0220C5B4 + add r2, sp, #0 + mov r0, r4 + mov r3, #4 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021DCDD4 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDD4: + add r0, sp, #0 + bl atol + ldr r1, _021DCEE4 ; =errno + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCE08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE08: + cmp r2, #0x64 + blt _021DCE2C + ldr r1, _021DCEF0 ; =0xFFFFA240 + mov r0, #0x10 + sub r1, r1, r2 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE2C: + ldr r0, _021DCED4 ; =UNK04_02210504 + ldr r1, _021DCEF4 ; =UNK04_0220C5C0 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x40 + add r2, r2, #4 + bl MOD04_021DA334 + ldr r0, _021DCED4 ; =UNK04_02210504 + ldr r1, _021DCEF8 ; =UNK04_0220C5C8 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x12c + add r2, r2, #0x45 + bl MOD04_021DA334 + ldr r1, _021DCEFC ; =UNK04_0220C5D8 + add r2, sp, #0 + mov r0, r4 + mov r3, #1 + bl MOD04_021DA334 + ldrsb r0, [sp] + cmp r0, #0x59 + bne _021DCEB0 + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] + b _021DCEC8 +_021DCEB0: + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] +_021DCEC8: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DCED4: .word UNK04_02210504 +_021DCED8: .word 0xFFFF9DF3 +_021DCEDC: .word UNK04_0220C5A0 +_021DCEE0: .word UNK04_0220C5A8 +_021DCEE4: .word errno +_021DCEE8: .word 0xFFFF9E58 +_021DCEEC: .word UNK04_0220C5B4 +_021DCEF0: .word 0xFFFFA240 +_021DCEF4: .word UNK04_0220C5C0 +_021DCEF8: .word UNK04_0220C5C8 +_021DCEFC: .word UNK04_0220C5D8 + arm_func_end MOD04_021DCCC8 + + arm_func_start MOD04_021DCF00 +MOD04_021DCF00: ; 0x021DCF00 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r0, _021DCFF4 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #1 + bne _021DCFE4 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x28] + cmp r0, #7 + beq _021DCFB0 + cmp r0, #8 + bne _021DCFC4 + bl MOD04_021DCCC8 + cmp r0, #0 + bne _021DCF94 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCF94: + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #3 + ldmfd sp!, {pc} +_021DCFB0: + add r0, r1, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #5 + ldmfd sp!, {pc} +_021DCFC4: + add r0, r1, #8 + bl MOD04_021DAE4C + ldr r1, _021DCFF8 ; =0xFFFFA1DB + mov r0, #0x11 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCFE4: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DCFF0: .word UNK04_02210504 +_021DCFF4: .word 0x00001B3C +_021DCFF8: .word 0xFFFFA1DB + arm_func_end MOD04_021DCF00 + + arm_func_start MOD04_021DCFFC +MOD04_021DCFFC: ; 0x021DCFFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xb4 + ldr r2, _021DD244 ; =UNK04_02210504 + mov r5, r0 + ldr r2, [r2] + mov r0, r1 + add r2, r2, #0x1000 + str r1, [r2, #0xc18] + mov r1, #0 + mov r2, #0x174 + bl MI_CpuFill8 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + beq _021DD058 + ldr r0, _021DD248 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _021DD058 + bl OS_Terminate +_021DD058: + ldr r0, _021DD24C ; =UNK04_0220BEB4 + ldr r1, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + mov r3, #0 + ldr r4, [r1] + mov r2, #0x1000 + str r0, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + ldr r2, [r4] + ldr r1, _021DD250 ; =UNK04_0220C5E4 + str r2, [sp, #0xc] + ldr r2, [r4, #4] + str r2, [sp, #0x10] + bl strcmp + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + moveq r0, #0 + ldr r2, _021DD254 ; =0x00004E20 + streq r0, [sp, #0x14] + add r1, sp, #0 + add r0, r4, #8 + str r2, [sp, #0x18] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DD0DC + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD0DC: + add r0, sp, #0x1c + bl MOD04_021DA238 + cmp r0, #0 + beq _021DD10C + ldr r0, _021DD244 ; =UNK04_02210504 + add r1, sp, #0x1c + ldr r0, [r0] + mov r2, #0 + add r0, r0, #8 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DD134 +_021DD10C: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD134: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, _021DD25C ; =UNK04_0220C604 + ldr r0, [r0] + ldr r2, _021DD260 ; =UNK04_0220C60C + add r0, r0, #8 + mov r3, #6 + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DD17C + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, _021DD264 ; =UNK04_0220C614 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #8 + mov r3, #4 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DD1A4 +_021DD17C: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1A4: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DB570 + cmp r0, #0 + beq _021DD1E4 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1E4: + ldr r0, _021DD268 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021DD244 ; =UNK04_02210504 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #8 + bl MOD04_021DB4A4 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addne sp, sp, #0xb4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + add r0, r1, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + mov r0, #0 + add sp, sp, #0xb4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD244: .word UNK04_02210504 +_021DD248: .word 0x00001B3C +_021DD24C: .word UNK04_0220BEB4 +_021DD250: .word UNK04_0220C5E4 +_021DD254: .word 0x00004E20 +_021DD258: .word 0xFFFFA1DC +_021DD25C: .word UNK04_0220C604 +_021DD260: .word UNK04_0220C60C +_021DD264: .word UNK04_0220C614 +_021DD268: .word OSi_ThreadInfo + arm_func_end MOD04_021DCFFC + + arm_func_start MOD04_021DD26C +MOD04_021DD26C: ; 0x021DD26C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DD2BC ; =UNK04_02210504 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD2BC ; =UNK04_02210504 + ldr r0, _021DD2C0 ; =UNK04_0220C618 + ldr r1, [r1] + mov r2, #0 + ldr r3, [r1, #4] + blx r3 + ldr r0, _021DD2BC ; =UNK04_02210504 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD2BC: .word UNK04_02210504 +_021DD2C0: .word UNK04_0220C618 + arm_func_end MOD04_021DD26C + + arm_func_start MOD04_021DD2C4 +MOD04_021DD2C4: ; 0x021DD2C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DD35C ; =UNK04_02210504 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _021DD2FC + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD2FC: + ldr r0, _021DD364 ; =UNK04_0220C628 + ldr r1, _021DD368 ; =0x00001C1C + blx r5 + ldr r1, _021DD35C ; =UNK04_02210504 + cmp r0, #0 + str r0, [r1] + bne _021DD330 + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD330: + ldr r2, _021DD368 ; =0x00001C1C + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DD35C ; =UNK04_02210504 + mov r0, #1 + ldr r2, [r1] + str r5, [r2] + ldr r1, [r1] + str r4, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD35C: .word UNK04_02210504 +_021DD360: .word 0xFFFFA1DC +_021DD364: .word UNK04_0220C628 +_021DD368: .word 0x00001C1C + arm_func_end MOD04_021DD2C4 + + .section .data + + .global UNK04_0220C5A0 +UNK04_0220C5A0: ; 0x0220C5A0 + .asciz "Date" + + .balign 4, 0 + .global UNK04_0220C5A8 +UNK04_0220C5A8: ; 0x0220C5A8 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C5B4 +UNK04_0220C5B4: ; 0x0220C5B4 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220C5C0 +UNK04_0220C5C0: ; 0x0220C5C0 + .asciz "svchost" + + .balign 4, 0 + .global UNK04_0220C5C8 +UNK04_0220C5C8: ; 0x0220C5C8 + .asciz "servicetoken" + + .balign 4, 0 + .global UNK04_0220C5D8 +UNK04_0220C5D8: ; 0x0220C5D8 + .asciz "statusdata" + + .balign 4, 0 + .global UNK04_0220C5E4 +UNK04_0220C5E4: ; 0x0220C5E4 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220C604 +UNK04_0220C604: ; 0x0220C604 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220C60C +UNK04_0220C60C: ; 0x0220C60C + .asciz "SVCLOC" + + .balign 4, 0 + .global UNK04_0220C614 +UNK04_0220C614: ; 0x0220C614 + .asciz "svc" + + .balign 4, 0 + .global UNK04_0220C618 +UNK04_0220C618: ; 0x0220C618 + .asciz "FREE intwork" + + .balign 4, 0 + .global UNK04_0220C628 +UNK04_0220C628: ; 0x0220C628 + .asciz "ALLOC intwork" + + .balign 4, 0 + .section .bss + + .global UNK04_02210504 +UNK04_02210504: ; 0x02210504 + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DD36C.s b/arm9/modules/04/asm/mod04_021DD36C.s new file mode 100644 index 00000000..19966827 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD36C.s @@ -0,0 +1,248 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD36C +MOD04_021DD36C: ; 0x021DD36C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ands r4, r1, #3 + addne sp, sp, #8 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, #0 + mov r5, r6 + cmp r1, #0 + bls _021DD3AC +_021DD394: + ldrsb r4, [r0, r5] + add r5, r5, #1 + cmp r4, #0x2a + addne r6, r6, #6 + cmp r5, r1 + blo _021DD394 +_021DD3AC: + cmp r2, #0 + moveq r0, r6, asr #2 + addeq r0, r6, r0, lsr #29 + addeq sp, sp, #8 + moveq r0, r0, asr #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r6, asr #2 + add r4, r6, r4, lsr #29 + mov r4, r4, asr #3 + cmp r3, r4 + addlo sp, sp, #8 + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2] + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, r2 + add ip, sp, #0 + mov lr, #0 + mov r1, #0x3f + mov r3, #0x3e +_021DD408: + mov r8, lr + mov r5, ip +_021DD410: + ldrsb r7, [r0, r8] + cmp r7, #0x41 + blt _021DD42C + cmp r7, #0x5a + suble r7, r7, #0x41 + strleb r7, [r5] + ble _021DD474 +_021DD42C: + cmp r7, #0x61 + blt _021DD444 + cmp r7, #0x7a + suble r7, r7, #0x47 + strleb r7, [r5] + ble _021DD474 +_021DD444: + cmp r7, #0x30 + blt _021DD45C + cmp r7, #0x39 + addle r7, r7, #4 + strleb r7, [r5] + ble _021DD474 +_021DD45C: + cmp r7, #0x2e + streqb r3, [r5] + beq _021DD474 + cmp r7, #0x2d + streqb r1, [r5] + strneb lr, [r5] +_021DD474: + add r8, r8, #1 + cmp r8, #4 + add r5, r5, #1 + blt _021DD410 + ldrsb r8, [sp] + ldrsb r7, [sp, #1] + add r5, r6, #1 + mov r8, r8, lsl #2 + orr r7, r8, r7, asr #4 + sub r5, r5, r2 + strb r7, [r6] + cmp r5, r4 + add r0, r0, #4 + bge _021DD4F0 + ldrsb r8, [sp, #1] + ldrsb r7, [sp, #2] + add r5, r6, #2 + mov r8, r8, lsl #4 + orr r7, r8, r7, asr #2 + sub r5, r5, r2 + strb r7, [r6, #1] + cmp r5, r4 + bge _021DD4F0 + ldrsb r7, [sp, #2] + ldrsb r5, [sp, #3] + orr r5, r5, r7, lsl #6 + strb r5, [r6, #2] + add r6, r6, #3 + sub r5, r6, r2 + cmp r5, r4 + blt _021DD408 +_021DD4F0: + mov r0, r5 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end MOD04_021DD36C + + arm_func_start MOD04_021DD4FC +MOD04_021DD4FC: ; 0x021DD4FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r4, _021DD69C ; =0xAAAAAAAB + str r2, [sp] + umull r4, r5, r1, r4 + ldr r6, _021DD6A0 ; =0x00000003 + mov r5, r5, lsr #1 + umull r4, r5, r6, r5 + mov sl, r0 + subs r5, r1, r4 + movne r4, #4 + ldr r2, _021DD69C ; =0xAAAAAAAB + ldr r0, [sp] + moveq r4, #0 + cmp r0, #0 + umull r0, r2, r1, r2 + mov r2, r2, lsr #1 + addeq sp, sp, #0xc + add r0, r4, r2, lsl #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r3, r0 + addlo sp, sp, #0xc + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r7, sl, r1 + ldr r6, [sp] + cmp sl, r7 + beq _021DD68C + mov r0, #1 + mov r5, #0 + str r0, [sp, #4] + mov fp, #3 + mov r4, #0x2a +_021DD580: + sub sb, r7, sl + ldr r1, _021DD6A4 ; =0x2AAAAAAB + mov r0, sb, lsl #3 + smull r2, r3, r1, r0 + ldr r1, _021DD6A8 ; =0x00000006 + add r3, r3, r0, lsr #31 + smull r2, r3, r1, r3 + subs r3, r0, r2 + ldr r1, _021DD6A4 ; =0x2AAAAAAB + ldrne r8, [sp, #4] + smull r2, r3, r1, r0 + moveq r8, r5 + add r3, r3, r0, lsr #31 + cmp sb, #3 + movge sb, fp + add r0, sp, #8 + mov r1, r5 + mov r2, fp + add r8, r3, r8 + bl MI_CpuFill8 + mov r0, sl + add r1, sp, #8 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, _021DD6AC ; =UNK04_0220C638 + cmp r8, #2 + ldr r1, [r0] + ldrb r0, [sp, #8] + mov r0, r0, asr #2 + ldrsb r0, [r1, r0] + strb r0, [r6] + strltb r4, [r6, #1] + blt _021DD628 + ldrb r2, [sp, #8] + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #9] + mov r2, r2, lsl #4 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #4 + ldrsb r0, [r0, r1] + strb r0, [r6, #1] +_021DD628: + cmp r8, #3 + strltb r4, [r6, #2] + blt _021DD658 + ldrb r2, [sp, #9] + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #0xa] + mov r2, r2, lsl #2 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #6 + ldrsb r0, [r0, r1] + strb r0, [r6, #2] +_021DD658: + cmp r8, #4 + strltb r4, [r6, #3] + blt _021DD67C + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #0xa] + ldr r2, [r0] + and r0, r1, #0x3f + ldrsb r0, [r2, r0] + strb r0, [r6, #3] +_021DD67C: + add sl, sl, sb + cmp sl, r7 + add r6, r6, #4 + bne _021DD580 +_021DD68C: + ldr r0, [sp] + sub r0, r6, r0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DD69C: .word 0xAAAAAAAB +_021DD6A0: .word 0x00000003 +_021DD6A4: .word 0x2AAAAAAB +_021DD6A8: .word 0x00000006 +_021DD6AC: .word UNK04_0220C638 + arm_func_end MOD04_021DD4FC + + .section .data + + .global UNK04_0220C638 +UNK04_0220C638: ; 0x0220C638 + .word UNK04_0220C63C + + .global UNK04_0220C63C +UNK04_0220C63C: ; 0x0220C63C + .asciz "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-" + + .balign 4, 0 diff --git a/arm9/modules/04/asm/mod04_021DD6B0.s b/arm9/modules/04/asm/mod04_021DD6B0.s new file mode 100644 index 00000000..4b9455e6 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD6B0.s @@ -0,0 +1,145 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD6B0 +MOD04_021DD6B0: ; 0x021DD6B0 + ldr r3, _021DD6CC ; =UNK04_02210508 + ldr r2, [r3] + cmp r2, #9 + ldrne r2, _021DD6D0 ; =UNK04_0221050C + strne r0, [r3] + strne r1, [r2] + bx lr + .align 2, 0 +_021DD6CC: .word UNK04_02210508 +_021DD6D0: .word UNK04_0221050C + arm_func_end MOD04_021DD6B0 + + arm_func_start MOD04_021DD6D4 +MOD04_021DD6D4: ; 0x021DD6D4 + ldr r0, _021DD6EC ; =UNK04_02210508 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_021DD6EC: .word UNK04_02210508 + arm_func_end MOD04_021DD6D4 + + arm_func_start MOD04_021DD6F0 +MOD04_021DD6F0: ; 0x021DD6F0 + ldr r1, _021DD710 ; =UNK04_02210508 + ldr r0, [r1] + cmp r0, #9 + movne r2, #0 + ldrne r0, _021DD714 ; =UNK04_0221050C + strne r2, [r1] + strne r2, [r0] + bx lr + .align 2, 0 +_021DD710: .word UNK04_02210508 +_021DD714: .word UNK04_0221050C + arm_func_end MOD04_021DD6F0 + + arm_func_start MOD04_021DD718 +MOD04_021DD718: ; 0x021DD718 + cmp r0, #0 + ldrne r2, _021DD800 ; =UNK04_0221050C + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + beq _021DD7F4 + ldr r0, _021DD804 ; =UNK04_02210508 + ldr r0, [r0] + cmp r0, #0x11 + addls pc, pc, r0, lsl #2 + b _021DD7EC +_021DD744: ; jump table + b _021DD7EC ; case 0 + b _021DD7BC ; case 1 + b _021DD78C ; case 2 + b _021DD78C ; case 3 + b _021DD78C ; case 4 + b _021DD78C ; case 5 + b _021DD798 ; case 6 + b _021DD7A4 ; case 7 + b _021DD78C ; case 8 + b _021DD7BC ; case 9 + b _021DD7B0 ; case 10 + b _021DD7B0 ; case 11 + b _021DD7B0 ; case 12 + b _021DD7B0 ; case 13 + b _021DD7C8 ; case 14 + b _021DD7D4 ; case 15 + b _021DD7E0 ; case 16 + b _021DD7D4 ; case 17 +_021DD78C: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD798: + mov r0, #3 + str r0, [r1] + b _021DD7F4 +_021DD7A4: + mov r0, #4 + str r0, [r1] + b _021DD7F4 +_021DD7B0: + mov r0, #1 + str r0, [r1] + b _021DD7F4 +_021DD7BC: + mov r0, #7 + str r0, [r1] + b _021DD7F4 +_021DD7C8: + mov r0, #5 + str r0, [r1] + b _021DD7F4 +_021DD7D4: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD7E0: + mov r0, #2 + str r0, [r1] + b _021DD7F4 +_021DD7EC: + mov r0, #0 + str r0, [r1] +_021DD7F4: + ldr r0, _021DD804 ; =UNK04_02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD800: .word UNK04_0221050C +_021DD804: .word UNK04_02210508 + arm_func_end MOD04_021DD718 + + arm_func_start MOD04_021DD808 +MOD04_021DD808: ; 0x021DD808 + cmp r0, #0 + ldrne r1, _021DD824 ; =UNK04_0221050C + ldrne r1, [r1] + strne r1, [r0] + ldr r0, _021DD828 ; =UNK04_02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD824: .word UNK04_0221050C +_021DD828: .word UNK04_02210508 + arm_func_end MOD04_021DD808 + + .section .bss + + .global UNK04_02210508 +UNK04_02210508: ; 0x02210508 + .space 0x4 + + .global UNK04_0221050C +UNK04_0221050C: ; 0x0221050C + .space 0x4
\ No newline at end of file diff --git a/arm9/modules/04/asm/mod04_021DD82C.s b/arm9/modules/04/asm/mod04_021DD82C.s new file mode 100644 index 00000000..7c697698 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD82C.s @@ -0,0 +1,145 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD82C +MOD04_021DD82C: ; 0x021DD82C + ldr ip, _021DD840 ; =MOD04_021DD904 + mov r1, r0 + mov r0, #5 + mov r2, #0 + bx ip + .align 2, 0 +_021DD840: .word MOD04_021DD904 + arm_func_end MOD04_021DD82C + + arm_func_start MOD04_021DD844 +MOD04_021DD844: ; 0x021DD844 + ldr ip, _021DD85C ; =MOD04_021DD8E8 + mov r2, r1 + mov r1, r0 + mov r3, r2 + mov r0, #5 + bx ip + .align 2, 0 +_021DD85C: .word MOD04_021DD8E8 + arm_func_end MOD04_021DD844 + + arm_func_start MOD04_021DD860 +MOD04_021DD860: ; 0x021DD860 + ldr ip, _021DD870 ; =MOD04_021DD944 + mov r1, r0 + mov r0, #5 + bx ip + .align 2, 0 +_021DD870: .word MOD04_021DD944 + arm_func_end MOD04_021DD860 + + arm_func_start MOD04_021DD874 +MOD04_021DD874: ; 0x021DD874 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _021DD8E0 ; =UNK04_02210514 + mov r4, r2 + mov r7, r3 + mov r5, r1 + ldr r2, [sp, #0x18] + ldr r3, [ip] + mov r1, r7 + mov r8, r0 + blx r3 + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + beq _021DD8D8 + mov r0, r5 + mov r1, r6 + mov r2, r7 + bl MI_CpuCopy8 + ldr r1, _021DD8E4 ; =UNK04_02210510 + mov r0, r8 + ldr r3, [r1] + mov r1, r5 + mov r2, r4 + blx r3 +_021DD8D8: + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DD8E0: .word UNK04_02210514 +_021DD8E4: .word UNK04_02210510 + arm_func_end MOD04_021DD874 + + arm_func_start MOD04_021DD8E8 +MOD04_021DD8E8: ; 0x021DD8E8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0x20 + str ip, [sp] + bl MOD04_021DD874 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DD8E8 + + arm_func_start MOD04_021DD904 +MOD04_021DD904: ; 0x021DD904 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD920 ; =UNK04_02210510 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD920: .word UNK04_02210510 + arm_func_end MOD04_021DD904 + + arm_func_start MOD04_021DD924 +MOD04_021DD924: ; 0x021DD924 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD940 ; =UNK04_02210514 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD940: .word UNK04_02210514 + arm_func_end MOD04_021DD924 + + arm_func_start MOD04_021DD944 +MOD04_021DD944: ; 0x021DD944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD964 ; =UNK04_02210514 + mov r2, #0x20 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD964: .word UNK04_02210514 + arm_func_end MOD04_021DD944 + + arm_func_start MOD04_021DD968 +MOD04_021DD968: ; 0x021DD968 + ldr r3, _021DD97C ; =UNK04_02210514 + ldr r2, _021DD980 ; =UNK04_02210510 + str r0, [r3] + str r1, [r2] + bx lr + .align 2, 0 +_021DD97C: .word UNK04_02210514 +_021DD980: .word UNK04_02210510 + arm_func_end MOD04_021DD968 + + .section .bss + + .global UNK04_02210510 +UNK04_02210510: ; 0x02210510 + .space 0x4 + + .global UNK04_02210514 +UNK04_02210514: ; 0x02210514 + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s new file mode 100644 index 00000000..fa1292f3 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD984.s @@ -0,0 +1,469 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD984 +MOD04_021DD984: ; 0x021DD984 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DDCE8 + bl MOD04_021DDB14 + cmp r0, #0 + beq _021DD9CC + bl MOD04_021EBAB8 + mov r2, r0 + cmp r2, #0x63 + ldr r1, _021DD9D8 ; =0xFFFF2D10 + movhi r2, #0x63 + mov r0, #8 + sub r1, r1, r2 + bl MOD04_021DD6B0 + bl MOD04_021DDBBC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DD9CC: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD9D8: .word 0xFFFF2D10 + arm_func_end MOD04_021DD984 + + arm_func_start MOD04_021DD9DC +MOD04_021DD9DC: ; 0x021DD9DC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r1, #0 + mov r2, #0x3c + mov r4, r0 + bl MI_CpuFill8 + mov r0, #0xff + str r0, [r4, #4] + bl MOD04_021DDC1C + cmp r0, #4 + addne sp, sp, #0x18 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD04_021EBAB8 + str r0, [r4] + bl OS_DisableInterrupts + mov r6, r0 + bl WCM_GetApMacAddress + mov r5, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDA4C + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDA4C: + mov r0, r5 + add r1, r4, #0x33 + mov r2, #6 + bl MI_CpuCopy8 + ldr r0, [r4] + cmp r0, #0 + blt _021DDAB0 + cmp r0, #3 + bge _021DDAB0 + add r0, sp, #0 + bl WCM_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDAA0 + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDAA0: + ldrh r2, [sp] + mov r0, r5 + add r1, r4, #0x12 + bl MI_CpuCopy8 +_021DDAB0: + mov r0, r6 + bl OS_RestoreInterrupts + add r0, sp, #2 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + add r0, sp, #2 + bl MOD04_021EBA28 + cmp r0, #1 + bne _021DDAFC + ldrb r1, [sp, #8] + cmp r1, #0 + beq _021DDAFC + sub r3, r1, #0x30 + add r0, sp, #9 + add r1, r4, #8 + mov r2, #9 + str r3, [r4, #4] + bl MI_CpuCopy8 +_021DDAFC: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DD9DC + + arm_func_start MOD04_021DDB08 +MOD04_021DDB08: ; 0x021DDB08 + ldr ip, _021DDB10 ; =WCM_GetLinkLevel + bx ip + .align 2, 0 +_021DDB10: .word WCM_GetLinkLevel + arm_func_end MOD04_021DDB08 + + arm_func_start MOD04_021DDB14 +MOD04_021DDB14: ; 0x021DDB14 + ldr r0, _021DDB3C ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDB34 + ldrh r0, [r0, #4] + cmp r0, #6 + moveq r0, #1 + bxeq lr +_021DDB34: + mov r0, #0 + bx lr + .align 2, 0 +_021DDB3C: .word UNK04_02210518 + arm_func_end MOD04_021DDB14 + + arm_func_start MOD04_021DDB40 +MOD04_021DDB40: ; 0x021DDB40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDBB8 ; =UNK04_02210518 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldrh r1, [r2, #4] + cmp r1, #8 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #5 + strh r0, [r2, #4] + bl MOD04_021EB9D8 + cmp r0, #0 + ldrne r0, _021DDBB8 ; =UNK04_02210518 + movne r1, #0 + strne r1, [r0] + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDBB8: .word UNK04_02210518 + arm_func_end MOD04_021DDB40 + + arm_func_start MOD04_021DDBBC +MOD04_021DDBBC: ; 0x021DDBBC + stmdb sp!, {r4, lr} + ldr r0, _021DDC18 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldrh r1, [r1, #4] + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + ldmeqia sp!, {r4, pc} + bl MOD04_021EB9D8 + cmp r0, #0 + bne _021DDC08 + mov r4, #0xa +_021DDBF4: + mov r0, r4 + bl OS_Sleep + bl MOD04_021EB9D8 + cmp r0, #0 + beq _021DDBF4 +_021DDC08: + ldr r0, _021DDC18 ; =UNK04_02210518 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DDC18: .word UNK04_02210518 + arm_func_end MOD04_021DDBBC + + arm_func_start MOD04_021DDC1C +MOD04_021DDC1C: ; 0x021DDC1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDCE4 ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrh r0, [r0, #4] + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021EBAE8 + mov r1, r0 + cmp r1, #5 + bne _021DDC80 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #4 + ldr r3, [r1] + mov r2, #1 + strh r0, [r3, #4] + ldr r1, [r1] + add sp, sp, #4 + strh r2, [r1, #6] + ldmfd sp!, {pc} +_021DDC80: + cmp r1, #0 + bge _021DDCD8 + mvn r0, #9 + cmp r1, r0 + blt _021DDCB8 + sub r1, r1, #0x2bc + mov r0, #9 + bl MOD04_021DD6B0 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #8 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCB8: + mov r0, #5 + bl MOD04_021DD6B0 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #7 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCD8: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDCE4: .word UNK04_02210518 + arm_func_end MOD04_021DDC1C + + arm_func_start MOD04_021DDCE8 +MOD04_021DDCE8: ; 0x021DDCE8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDD78 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldrh r0, [r1, #4] + cmp r0, #2 + bne _021DDD28 + bl MOD04_021EBB80 + ldr r1, _021DDD78 ; =UNK04_02210518 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1] + ldmfd sp!, {pc} +_021DDD28: + cmp r0, #4 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r0, [r1, #6] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl WCM_GetPhase + cmp r0, #9 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DDD78 ; =UNK04_02210518 + mov r3, #0 + ldr r2, [r0] + mov r1, #6 + strh r3, [r2, #6] + ldr r0, [r0] + strh r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDD78: .word UNK04_02210518 + arm_func_end MOD04_021DDCE8 + + arm_func_start MOD04_021DDD7C +MOD04_021DDD7C: ; 0x021DDD7C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDDC8 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r0, [r1] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #3 + strh r0, [r1, #4] + bl MOD04_021DDC1C + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDDC8: .word UNK04_02210518 + arm_func_end MOD04_021DDD7C + + arm_func_start MOD04_021DDDCC +MOD04_021DDDCC: ; 0x021DDDCC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DDE70 ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDE5C + ldrh r0, [r0, #4] + cmp r0, #1 + addne sp, sp, #0xc + ldmneia sp!, {pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _021DDE70 ; =UNK04_02210518 + ldr r3, _021DDE74 ; =MOD04_021DD944 + ldr lr, [r0] + ldr r2, _021DDE78 ; =MOD04_021DD904 + ldrh ip, [lr, #8] + add r0, sp, #0 + mov r1, #2 + strb ip, [sp, #8] + ldrh ip, [lr, #0xa] + strb ip, [sp, #9] + str r3, [sp] + str r2, [sp, #4] + strh r1, [lr, #4] + bl MOD04_021EBC60 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + mov r0, #9 + mvn r1, #5 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} +_021DDE5C: + mov r0, #9 + mvn r1, #3 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DDE70: .word UNK04_02210518 +_021DDE74: .word MOD04_021DD944 +_021DDE78: .word MOD04_021DD904 + arm_func_end MOD04_021DDDCC + + arm_func_start MOD04_021DDE7C +MOD04_021DDE7C: ; 0x021DDE7C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021DDEA4 + cmp r0, #1 + beq _021DDEB4 + cmp r0, #2 + beq _021DDEC4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEA4: + ldr r0, _021DDED4 ; =UNK04_0220D280 + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEB4: + ldr r0, _021DDED8 ; =UNK04_0220D2A8 + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEC4: + ldr r0, _021DDEDC ; =UNK04_0220D2CC + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDED4: .word UNK04_0220D280 +_021DDED8: .word UNK04_0220D2A8 +_021DDEDC: .word UNK04_0220D2CC + arm_func_end MOD04_021DDE7C + + arm_func_start MOD04_021DDEE0 +MOD04_021DDEE0: ; 0x021DDEE0 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _021DDF3C ; =UNK04_02210518 + mov r6, r0 + ldr r2, [r2] + mov r5, r1 + mov r4, r3 + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r6, #8] + mov r0, #1 + strh r0, [r6, #0xa] + strh r0, [r6, #4] + mov r0, #0 + ldr r1, _021DDF3C ; =UNK04_02210518 + strh r0, [r6, #6] + str r6, [r1] + bl MOD04_021DDE7C + mov r0, r4 + bl CPS_SetSslHandshakePriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DDF3C: .word UNK04_02210518 + arm_func_end MOD04_021DDEE0 + + .section .data + + .global UNK04_0220D280 +UNK04_0220D280: ; 0x0220D280 + .asciz "https://nas.test.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220D2A8 +UNK04_0220D2A8: ; 0x0220D2A8 + .asciz "https://nas.dev.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220D2CC +UNK04_0220D2CC: ; 0x0220D2CC + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .section .bss + + .global UNK04_02210518 +UNK04_02210518: ; 0x02210518 + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s new file mode 100644 index 00000000..6be2d80a --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DDF40.s @@ -0,0 +1,291 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DDF40 +MOD04_021DDF40: ; 0x021DDF40 + ldr ip, _021DDF48 ; =MOD04_021D9974 + bx ip + .align 2, 0 +_021DDF48: .word MOD04_021D9974 + arm_func_end MOD04_021DDF40 + + arm_func_start MOD04_021DDF4C +MOD04_021DDF4C: ; 0x021DDF4C + stmdb sp!, {lr} + sub sp, sp, #0x1c4 + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r0, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD04_021D988C + cmp r0, #0 + beq _021DDFA4 + cmp r0, #0x14 + beq _021DDFE0 + cmp r0, #0x15 + beq _021DDFB0 + b _021DE010 +_021DDFA4: + add sp, sp, #0x1c4 + mov r0, #2 + ldmfd sp!, {pc} +_021DDFB0: + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r0, _021DE054 ; =UNK04_0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #3 + ldmfd sp!, {pc} +_021DDFE0: + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r0, _021DE054 ; =UNK04_0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #5 + ldmfd sp!, {pc} +_021DE010: + add r0, sp, #0 + bl MOD04_021D97F8 + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r1, [sp] + ldr r2, _021DE054 ; =UNK04_0221051C + mov r3, #0 + mov r0, #2 + str r3, [r2] + bl MOD04_021DD6B0 + mov r0, #4 + add sp, sp, #0x1c4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE054: .word UNK04_0221051C +_021DE058: .word 0x00001E1C + arm_func_end MOD04_021DDF4C + + arm_func_start MOD04_021DE05C +MOD04_021DE05C: ; 0x021DE05C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DE130 ; =UNK04_0221051C + ldr r0, [r0] + cmp r0, #0 + beq _021DE078 + bl OS_Terminate +_021DE078: + ldr r1, _021DE134 ; =0x00001E1C + mov r0, #4 + bl MOD04_021DD944 + ldr r1, _021DE130 ; =UNK04_0221051C + cmp r0, #0 + str r0, [r1] + bne _021DE0AC + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021DE0AC: + ldr r2, _021DE134 ; =0x00001E1C + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _021DE130 ; =UNK04_0221051C + ldr r1, _021DE13C ; =0x00001C44 + ldr r2, [r0] + ldr r0, _021DE140 ; =UNK04_0220D2EC + add r1, r2, r1 + mov r2, #9 + bl MI_CpuCopy8 + ldr r1, _021DE130 ; =UNK04_0221051C + ldr r2, _021DE144 ; =MOD04_021DD944 + ldr r0, [r1] + ldr r3, _021DE148 ; =MOD04_021DD904 + add r0, r0, #0x1000 + str r2, [r0, #0xc50] + ldr r0, [r1] + ldr r2, _021DE14C ; =0x00001C10 + add r0, r0, #0x1000 + str r3, [r0, #0xc54] + ldr r1, [r1] + add r0, r1, r2 + bl MOD04_021D9ACC + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl MOD04_021DD6B0 + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE130: .word UNK04_0221051C +_021DE134: .word 0x00001E1C +_021DE138: .word 0xFFFFB17C +_021DE13C: .word 0x00001C44 +_021DE140: .word UNK04_0220D2EC +_021DE144: .word MOD04_021DD944 +_021DE148: .word MOD04_021DD904 +_021DE14C: .word 0x00001C10 + arm_func_end MOD04_021DE05C + + arm_func_start MOD04_021DE150 +MOD04_021DE150: ; 0x021DE150 + stmdb sp!, {r4, lr} + bl MOD04_021DCF00 + mov r4, r0 + sub r0, r4, #3 + cmp r0, #2 + bhi _021DE16C + bl MOD04_021DD26C +_021DE16C: + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DE150 + + arm_func_start MOD04_021DE174 +MOD04_021DE174: ; 0x021DE174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + ldr r0, _021DE1EC ; =MOD04_021DD944 + ldr r1, _021DE1F0 ; =MOD04_021DD904 + bl MOD04_021DD2C4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + bl strlen + cmp r0, #0 + bne _021DE1C0 + ldr r0, _021DE1F4 ; =UNK04_0220D2F0 + mov r1, r4 + bl MOD04_021DCFFC + b _021DE1CC +_021DE1C0: + mov r0, r5 + mov r1, r4 + bl MOD04_021DCFFC +_021DE1CC: + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + bl MOD04_021DD26C + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE1EC: .word MOD04_021DD944 +_021DE1F0: .word MOD04_021DD904 +_021DE1F4: .word UNK04_0220D2F0 + arm_func_end MOD04_021DE174 + + arm_func_start MOD04_021DE1F8 +MOD04_021DE1F8: ; 0x021DE1F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DE2C4 ; =UNK04_022104F8 + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl RTC_GetDate + cmp r0, #0 + bne _021DE23C + mov r0, r4 + bl RTC_GetTime + cmp r0, #0 + beq _021DE248 +_021DE23C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE248: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DE2C8 ; =UNK04_022104FC + mov ip, #0 + ldr lr, [r2] + ldr r3, [r2, #4] + subs r2, r0, lr + sbc r3, r1, r3 + subs r0, r2, ip + sbcs r0, r3, ip + blt _021DE2A0 + ldr r0, _021DE2CC ; =0xBC19137F + subs r0, r0, r2 + sbcs r0, ip, r3 + bge _021DE2AC +_021DE2A0: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE2AC: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertSecondToDateTime + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE2C4: .word UNK04_022104F8 +_021DE2C8: .word UNK04_022104FC +_021DE2CC: .word 0xBC19137F + arm_func_end MOD04_021DE1F8 + + .section .data + + .global UNK04_0220D2EC +UNK04_0220D2EC: ; 0x0220D2EC + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK04_0220D2F0 +UNK04_0220D2F0: ; 0x0220D2F0 + .asciz "0000" + + .balign 4, 0 + .section .bss + + .global UNK04_0221051C +UNK04_0221051C: ; 0x0221051C + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DE2D0.s b/arm9/modules/04/asm/mod04_021DE2D0.s new file mode 100644 index 00000000..27ad8bc1 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DE2D0.s @@ -0,0 +1,482 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DE2D0 +MOD04_021DE2D0: ; 0x021DE2D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl MOD04_02207330 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021DE2D0 + + arm_func_start MOD04_021DE308 +MOD04_021DE308: ; 0x021DE308 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD04_02207158 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DE308 + + arm_func_start MOD04_021DE330 +MOD04_021DE330: ; 0x021DE330 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_0220733C + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE330 + + arm_func_start MOD04_021DE364 +MOD04_021DE364: ; 0x021DE364 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xb0 + mul r2, r4, r0 + mov r0, r6 + mov r1, #0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022074EC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE364 + + arm_func_start MOD04_021DE3AC +MOD04_021DE3AC: ; 0x021DE3AC + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD04_022077A8 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DE3AC + + arm_func_start MOD04_021DE3D0 +MOD04_021DE3D0: ; 0x021DE3D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022069DC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE3D0 + + arm_func_start MOD04_021DE404 +MOD04_021DE404: ; 0x021DE404 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DE454 ; =UNK04_02210520 + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _021DE440 + bl MOD04_021DE730 + b _021DE448 +_021DE440: + ldr r0, _021DE458 ; =MOD04_021DE730 + bl MOD04_02206E6C +_021DE448: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE454: .word UNK04_02210520 +_021DE458: .word MOD04_021DE730 + arm_func_end MOD04_021DE404 + + arm_func_start MOD04_021DE45C +MOD04_021DE45C: ; 0x021DE45C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xa80 + mov r1, #0x20 + bl MOD04_021DE884 + ldr r2, _021DE568 ; =UNK04_02210520 + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x48] + ldr r0, [r2] + mov r2, #0xa80 + bl MI_CpuFill8 + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r5 + ldr r3, [r0] + mov r2, #0x1f + str r6, [r3] + ldr r0, [r0] + add r0, r0, #8 + bl strncpy + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r4 + ldr r0, [r0] + mov r2, #0x1f + add r0, r0, #0x28 + bl strncpy + ldr r1, _021DE568 ; =UNK04_02210520 + ldr r0, _021DE56C ; =UNK04_0220D2F8 + ldr r1, [r1] + add r1, r1, #0x4c + bl MOD04_021DE174 + cmp r0, #0 + bne _021DE520 + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + bl MOD04_021DE86C + ldr r1, _021DE568 ; =UNK04_02210520 + mov r0, #0 + str r0, [r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021DE520: + ldr r0, _021DE568 ; =UNK04_02210520 + mov r2, #0x800 + ldr r0, [r0] + ldr r1, _021DE570 ; =MOD04_021DE574 + add r0, r0, #0x9c0 + mov r3, r0 + str r2, [sp] + mov ip, #0x10 + mov r2, #0 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE568: .word UNK04_02210520 +_021DE56C: .word UNK04_0220D2F8 +_021DE570: .word MOD04_021DE574 + arm_func_end MOD04_021DE45C + + arm_func_start MOD04_021DE574 +MOD04_021DE574: ; 0x021DE574 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x2a4 + mov r7, #0 + mov r6, #6 + mvn r5, #0 + mov r4, #0x64 +_021DE58C: + bl MOD04_021DE150 + cmp r0, #3 + bne _021DE6AC + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r5, [r0] + add r0, r5, #0x50 + bl strlen + mov r4, r0 + ldr r0, _021DE71C ; =UNK04_0220D300 + bl strlen + add r0, r4, r0 + cmp r0, #0xff + bls _021DE5D8 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE5D8: + ldr r2, _021DE720 ; =UNK04_0220D314 + add r0, sp, #0x10 + add r3, r5, #0x50 + mov r1, #0x100 + bl OS_SNPrintf + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, [r0] + add r0, r4, #0x91 + bl strlen + mov r1, r0 + add r2, sp, #0x110 + add r0, r4, #0x91 + mov r3, #0x190 + bl MOD04_021DD4FC + cmp r0, #0 + bge _021DE630 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE630: + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, _021DE724 ; =MOD04_021DE774 + ldr r2, [r0] + ldr r0, _021DE728 ; =MOD04_021DE884 + add r1, r2, #8 + str r1, [sp] + add r1, r2, #0x28 + str r1, [sp, #4] + ldr r1, _021DE72C ; =MOD04_021DE86C + add r2, sp, #0x10 + add r3, sp, #0x110 + str r4, [sp, #8] + bl MOD04_02206EFC + cmp r0, #0 + bne _021DE684 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE684: + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r3, [r1] + mov r4, #1 + mov r1, r0 + mvn r2, #0 + str r4, [r3, #0x48] + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6AC: + cmp r0, #4 + bne _021DE6EC + add r0, sp, #0xc + bl MOD04_021DD808 + ldr r1, [sp, #0xc] + mov r0, #0xe + bl MOD04_021DD6B0 + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r2, [r1] + mov r1, #3 + ldr r3, [r2] + mvn r2, #0 + blx r3 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6EC: + cmp r0, #5 + bne _021DE704 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD04_021DE774 +_021DE704: + mov r0, r4 + bl OS_Sleep + b _021DE58C + arm_func_end MOD04_021DE574 + + arm_func_start MOD04_021DE710 +MOD04_021DE710: ; 0x021DE710 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE718: .word UNK04_02210520 +_021DE71C: .word UNK04_0220D300 +_021DE720: .word UNK04_0220D314 +_021DE724: .word MOD04_021DE774 +_021DE728: .word MOD04_021DE884 +_021DE72C: .word MOD04_021DE86C + arm_func_end MOD04_021DE710 + + arm_func_start MOD04_021DE730 +MOD04_021DE730: ; 0x021DE730 + stmdb sp!, {r4, lr} + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_JoinThread + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + ldr r4, [r0, #4] + bl MOD04_021DE86C + ldr r0, _021DE770 ; =UNK04_02210520 + mov r1, #0 + str r1, [r0] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE770: .word UNK04_02210520 + arm_func_end MOD04_021DE730 + + arm_func_start MOD04_021DE774 +MOD04_021DE774: ; 0x021DE774 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + bne _021DE79C + ldr r3, _021DE854 ; =UNK04_02210520 + ldr r3, [r3] + ldr r3, [r3] + blx r3 + ldmia sp!, {r4, r5, r6, pc} +_021DE79C: + cmp r5, #8 + addls pc, pc, r5, lsl #2 + b _021DE830 +_021DE7A8: ; jump table + b _021DE830 ; case 0 + b _021DE7CC ; case 1 + b _021DE7DC ; case 2 + b _021DE7E4 ; case 3 + b _021DE7F4 ; case 4 + b _021DE804 ; case 5 + b _021DE834 ; case 6 + b _021DE818 ; case 7 + b _021DE820 ; case 8 +_021DE7CC: + ldr r1, _021DE858 ; =0xFFFF86E7 + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE7DC: + bl OS_Terminate + b _021DE834 +_021DE7E4: + ldr r1, _021DE85C ; =0xFFFF86D4 + mov r0, #0xf + bl MOD04_021DD6B0 + b _021DE834 +_021DE7F4: + ldr r1, _021DE860 ; =0xFFFF86CA + mov r0, #0xe + bl MOD04_021DD6B0 + b _021DE834 +_021DE804: + ldr r1, _021DE864 ; =0xFFFF86E8 + mov r0, #0xe + sub r1, r1, r4 + bl MOD04_021DD6B0 + b _021DE834 +_021DE818: + bl OS_Terminate + b _021DE834 +_021DE820: + ldr r1, _021DE868 ; =0xFFFF86DF + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE830: + bl OS_Terminate +_021DE834: + ldr r1, _021DE854 ; =UNK04_02210520 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + ldr r3, [r2] + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE854: .word UNK04_02210520 +_021DE858: .word 0xFFFF86E7 +_021DE85C: .word 0xFFFF86D4 +_021DE860: .word 0xFFFF86CA +_021DE864: .word 0xFFFF86E8 +_021DE868: .word 0xFFFF86DF + arm_func_end MOD04_021DE774 + + arm_func_start MOD04_021DE86C +MOD04_021DE86C: ; 0x021DE86C + ldr ip, _021DE880 ; =MOD04_021DD904 + mov r1, r0 + mov r0, #6 + mov r2, #0 + bx ip + .align 2, 0 +_021DE880: .word MOD04_021DD904 + arm_func_end MOD04_021DE86C + + arm_func_start MOD04_021DE884 +MOD04_021DE884: ; 0x021DE884 + ldr ip, _021DE898 ; =MOD04_021DD924 + mov r2, r1 + mov r1, r0 + mov r0, #6 + bx ip + .align 2, 0 +_021DE898: .word MOD04_021DD924 + arm_func_end MOD04_021DE884 + + .section .data + + .global UNK04_0220D2F8 +UNK04_0220D2F8: ; 0x0220D2F8 + .asciz "9000" + + .balign 4, 0 + .global UNK04_0220D300 +UNK04_0220D300: ; 0x0220D300 + .asciz "https:///download" + + .balign 4, 0 + .global UNK04_0220D314 +UNK04_0220D314: ; 0x0220D314 + .asciz "https://%s/download" + + .balign 4, 0 + .section .bss + + .global UNK04_02210520 +UNK04_02210520: ; 0x02210520 + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DE89C.s b/arm9/modules/04/asm/mod04_021DE89C.s new file mode 100644 index 00000000..f4ff2977 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DE89C.s @@ -0,0 +1,236 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DE89C +MOD04_021DE89C: ; 0x021DE89C + ldrh r1, [r0] + mov r2, #0 + cmp r1, #0 + beq _021DE8C0 +_021DE8AC: + add r2, r2, #1 + mov r1, r2, lsl #1 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _021DE8AC +_021DE8C0: + mov r0, r2 + bx lr + arm_func_end MOD04_021DE89C + + arm_func_start MOD04_021DE8C8 +MOD04_021DE8C8: ; 0x021DE8C8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _021DE9E4 ; =UNK04_02210524 + mov r1, #0 + ldr r3, [r2, #4] + ldr ip, [r2] + cmp r3, r1 + mov r4, r0 + cmpeq ip, r1 + bne _021DE98C + ldr r0, [r2, #0xc] + ldr r3, [r2, #8] + cmp r0, r1 + cmpeq r3, r1 + bne _021DE98C + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + cmp r0, r1 + cmpeq r2, r1 + bne _021DE98C + add r0, sp, #0 + bl OS_GetMacAddress + bl OS_GetTick + ldr r2, [sp] + ldr r3, [sp, #4] + mov lr, r2, lsr #0x18 + mov r2, r1, lsl #0x18 + orr lr, lr, r3, lsl #8 + mvn r1, #0xff000000 + mov ip, r3, lsr #0x18 + and r1, lr, r1 + orr r3, r1, r0, lsl #24 + and r1, ip, #0 + orr r2, r2, r0, lsr #8 + orr r1, r1, r2 + str r1, [sp, #4] + ldr ip, _021DE9E4 ; =UNK04_02210524 + add r0, sp, #0 + str r3, [sp] + ldmia r0, {r2, r3} + stmia ip, {r2, r3} + ldr r3, _021DE9E8 ; =0x6C078965 + ldr r2, _021DE9EC ; =0x5D588B65 + ldr r1, _021DE9F0 ; =0x00269EC3 + mov r0, #0 + str r3, [ip, #8] + str r2, [ip, #0xc] + str r1, [ip, #0x10] + str r0, [ip, #0x14] +_021DE98C: + ldr r1, _021DE9E4 ; =UNK04_02210524 + ldr r3, [r1, #8] + ldr r2, [r1] + ldr r0, [r1, #4] + umull lr, ip, r3, r2 + mla ip, r3, r0, ip + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla ip, r0, r2, ip + adds r2, r3, lr + ldr r0, [r1, #0x14] + str r2, [r1] + adc r0, r0, ip + cmp r4, #0 + str r0, [r1, #4] + movne r3, #0 + umullne r2, r1, r0, r4 + mlane r1, r0, r3, r1 + mlane r1, r3, r4, r1 + movne r0, r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE9E4: .word UNK04_02210524 +_021DE9E8: .word 0x6C078965 +_021DE9EC: .word 0x5D588B65 +_021DE9F0: .word 0x00269EC3 + arm_func_end MOD04_021DE8C8 + + arm_func_start MOD04_021DE9F4 +MOD04_021DE9F4: ; 0x021DE9F4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r4, r1 + mov r7, r0 + mov r6, r3 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r2 + mov r1, r6 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021DEA30: + mov r0, r7 + bl strlen + mov r2, r0 + mov r1, r7 + add r0, r5, #1 + bl strncmp + cmp r0, #0 + bne _021DEA68 + mov r0, r7 + bl strlen + add r0, r0, r5 + ldrsb r0, [r0, #1] + cmp r6, r0 + beq _021DEAA4 +_021DEA68: + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r0, #1 + bl strchr + movs r5, r0 + bne _021DEA30 + add sp, sp, #4 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DEAA4: + mov r1, r6 + add r0, r5, #1 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addne r1, r5, #1 + subne r6, r0, r1 + bne _021DEAE8 + add r0, r5, #1 + bl strlen + mov r6, r0 +_021DEAE8: + mov r0, r4 + mov r2, r6 + add r1, r5, #1 + bl strncpy + mov r1, #0 + mov r0, r6 + strb r1, [r4, r6] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end MOD04_021DE9F4 + + arm_func_start MOD04_021DEB0C +MOD04_021DEB0C: ; 0x021DEB0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, r3 + mov r0, r5 + mov r1, #0 + bl strchr + mov r2, r0 + mov r0, r7 + mov r1, r6 + mov r3, r4 + bl MOD04_021DEB54 + mov r0, r5 + bl strlen + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end MOD04_021DEB0C + + arm_func_start MOD04_021DEB54 +MOD04_021DEB54: ; 0x021DEB54 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + str r0, [sp] + mov r4, r2 + str r3, [sp, #4] + str r1, [sp, #8] + ldr r2, _021DEB8C ; =UNK04_0220D328 + mov r0, r4 + mov r1, #0x1000 + bl OS_SNPrintf + mov r0, r4 + bl strlen + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DEB8C: .word UNK04_0220D328 + arm_func_end MOD04_021DEB54 + + .section .data + + .global UNK04_0220D328 +UNK04_0220D328: ; 0x0220D328 + .asciz "%c%s%c%s" + + .balign 4, 0 + + .section .bss + + .global UNK04_02210524 +UNK04_02210524: ; 0x02210524 + .space 0x18 diff --git a/arm9/modules/04/asm/mod04_021DEB90.s b/arm9/modules/04/asm/mod04_021DEB90.s new file mode 100644 index 00000000..f0917879 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DEB90.s @@ -0,0 +1,2044 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DEB90 +MOD04_021DEB90: ; 0x021DEB90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD43C + bl MOD04_021EFB28 + ldr r2, _021DEBCC ; =UNK04_02210540 + ldr r1, _021DEBD0 ; =0xFFFE8515 + str r0, [r2] + mov r0, #9 + bl MOD04_021DD6B0 + ldr r0, _021DEBD4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DEBCC: .word UNK04_02210540 +_021DEBD0: .word 0xFFFE8515 +_021DEBD4: .word UNK04_0221053C + arm_func_end MOD04_021DEB90 + + arm_func_start MOD04_021DEBD8 +MOD04_021DEBD8: ; 0x021DEBD8 + ldr ip, _021DEBE0 ; =MOD04_021EAC1C + bx ip + .align 2, 0 +_021DEBE0: .word MOD04_021EAC1C + arm_func_end MOD04_021DEBD8 + + arm_func_start MOD04_021DEBE4 +MOD04_021DEBE4: ; 0x021DEBE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r7, #0 + mov fp, r0 + mov sb, r1 + mov sl, r7 + bl MOD04_021E852C + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sb, #4 + addls pc, pc, sb, lsl #2 + b _021DEC48 +_021DEC18: ; jump table + b _021DEC2C ; case 0 + b _021DEC2C ; case 1 + b _021DEC34 ; case 2 + b _021DEC34 ; case 3 + b _021DEC40 ; case 4 +_021DEC2C: + mov r4, r7 + b _021DEC48 +_021DEC34: + mov r4, #6 + ldr r6, _021DEF4C ; =0xFFFFE250 + b _021DEC48 +_021DEC40: + ldr r6, _021DEF50 ; =0xFFFFE24F + mov r4, #9 +_021DEC48: + cmp r4, #0 + bne _021DED00 + mov r0, fp + bl MOD04_021FD3C4 + movs r7, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DEF54 ; =UNK04_0221053C + ldrb r8, [r7, #1] + ldr r1, [r0] + mov r5, #1 + mov r0, r5,lsl r8 + ldr r1, [r1, #0x644] + ands r0, r1, r0 + mov r0, r8 + moveq r5, #0 + bl MOD04_021EA9D8 + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DECA8 + cmp sb, #0 + beq _021DECBC +_021DECA8: + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DECC0 + cmp r8, #0 + bne _021DECC0 +_021DECBC: + mov sl, #1 +_021DECC0: + mov r0, r8 + bl MOD04_021DF56C + ldr r1, _021DEF54 ; =UNK04_0221053C + ldrb r7, [r7] + ldr r2, _021DEF58 ; =UNK04_02210544 + mov fp, #0 + ldr r3, [r1] + str fp, [r2, r7, lsl #2] + ldrb r2, [r3, #0x361] + mov r7, r0 + sub r0, r2, #1 + strb r0, [r3, #0x361] + ldr r1, [r1] + ldrb r0, [r1, #0x368] + sub r0, r0, #1 + strb r0, [r1, #0x368] +_021DED00: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DED58 + ldr r0, [r1, #0x24] + cmp r0, #6 + bne _021DED58 + cmp r5, #0 + bne _021DED58 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_021E85D4 + mov r0, r7 + bl MOD04_021E8A50 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED58: + mov r0, r4 + mov r1, r6 + mov r2, r7 + bl MOD04_021E8A74 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + beq _021DED90 + mov r0, r4 + mov r1, r6 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED90: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE04 + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DEDBC + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DEE04 +_021DEDBC: + ldr r2, _021DEF54 ; =UNK04_0221053C + ldr r1, [r2] + ldrb r0, [r1, #0x361] + add r6, r0, #2 + add r3, r1, r6, lsl #2 + ldr r3, [r3, #0x448] + cmp r3, #0 + beq _021DEE04 + add r3, r1, r6 + ldrb r3, [r3, #0x624] + add r0, r0, #1 + add r0, r1, r0 + strb r3, [r0, #0x624] + ldr r0, [r2] + ldrb r1, [r0, #0x361] + add r0, r1, #1 + add r1, r1, #3 + bl MOD04_021E8830 +_021DEE04: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DEE4C + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE2C + bl MOD04_021E85D4 + b _021DEE68 +_021DEE2C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + b _021DEE68 +_021DEE4C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 +_021DEE68: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #0 + beq _021DEE88 + ldrb r0, [r1, #0x369] + cmp r0, #1 + bne _021DEEA4 +_021DEE88: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r2, [r0] + ldrb r1, [r2, #0x368] + strb r1, [r2, #0x36a] + ldr r0, [r0] + ldr r0, [r0, #0x364] + bl MOD04_02202308 +_021DEEA4: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r6, [r0] + ldr r0, [r6, #0x90] + cmp r0, #0 + beq _021DEF00 + cmp r5, #0 + beq _021DEF00 + cmp sb, #0 + moveq r5, #1 + mov r0, r7 + movne r5, #0 + bl MOD04_021E1F18 + str r0, [sp] + ldr r1, [r6, #0x94] + ldr r0, _021DEF54 ; =UNK04_0221053C + str r1, [sp, #4] + ldr r1, [r0] + mov r0, r4 + ldr r4, [r1, #0x90] + mov r1, r5 + mov r2, sl + mov r3, r8 + blx r4 +_021DEF00: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEF24 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DEF24: + ldrb r0, [r1, #0x361] + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_02200D6C + bl MOD04_021E8DC0 + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DEF4C: .word 0xFFFFE250 +_021DEF50: .word 0xFFFFE24F +_021DEF54: .word UNK04_0221053C +_021DEF58: .word UNK04_02210544 +_021DEF5C: .word UNK04_0220D334 + arm_func_end MOD04_021DEBE4 + + arm_func_start MOD04_021DEF60 +MOD04_021DEF60: ; 0x021DEF60 + ldr ip, _021DEF68 ; =MOD04_021EAC5C + bx ip + .align 2, 0 +_021DEF68: .word MOD04_021EAC5C + arm_func_end MOD04_021DEF60 + + arm_func_start MOD04_021DEF6C +MOD04_021DEF6C: ; 0x021DEF6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + add r4, sp, #0 + mov r3, #0 + strb r3, [r4] + strb r3, [r4, #1] + strb r3, [r4, #2] + strb r3, [r4, #3] + strb r3, [r4, #4] + strb r3, [r4, #5] + strb r3, [r4, #6] + strb r3, [r4, #7] + strb r3, [r4, #8] + strb r3, [r4, #9] + strb r3, [r4, #0xa] + mov r5, r1 + strb r3, [r4, #0xb] + ldr r4, [r5, #8] + mov r6, r0 + bl MOD04_021E2068 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =UNK04_0220D338 + bl strlen + mov r2, r0 + ldr r1, _021DF0C8 ; =UNK04_0220D338 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =UNK04_0220D338 + bl strlen + add r4, r4, r0 + mov r0, r4 + mov r1, #0x76 + bl strchr + sub r7, r0, r4 + add r0, sp, #0 + mov r1, r4 + mov r2, r7 + bl strncpy + cmp r7, #0xa + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0CC ; =UNK04_0220D340 + add r1, r7, #1 + add r4, r4, r1 + bl strlen + mov r2, r0 + ldr r1, _021DF0CC ; =UNK04_0220D340 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0D0 ; =UNK04_0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + beq _021DF0A8 + cmp r0, #6 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF0A8 + ldrb r0, [r1, #0x369] + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_021DF0A8: + ldr r0, _021DF0CC ; =UNK04_0220D340 + bl strlen + add r2, r4, r0 + ldr r1, [r5] + mov r0, r6 + bl MOD04_021E8EF4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF0C8: .word UNK04_0220D338 +_021DF0CC: .word UNK04_0220D340 +_021DF0D0: .word UNK04_0221053C + arm_func_end MOD04_021DEF6C + + arm_func_start MOD04_021DF0D4 +MOD04_021DF0D4: ; 0x021DF0D4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [r1, #4] + ldr r0, _021DF120 ; =0x00000603 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF124 ; =0x00000901 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF128 ; =0x00000B01 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #3 + bl MOD04_021DF414 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF120: .word 0x00000603 +_021DF124: .word 0x00000901 +_021DF128: .word 0x00000B01 + arm_func_end MOD04_021DF0D4 + + arm_func_start MOD04_021DF12C +MOD04_021DF12C: ; 0x021DF12C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021DF174 + cmp r6, #0 + beq _021DF174 + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x4f4] + cmp r0, #0 + bne _021DF1D8 + bl MOD04_021E8DC0 + mov r0, #3 + bl MOD04_021DF5CC + b _021DF1D8 +_021DF174: + cmp r7, #0 + bne _021DF1D8 + mov r0, #6 + bl MOD04_021DF5CC + ldr r1, _021DF2AC ; =UNK04_0221053C + mov r0, #0 + ldr r3, [r1] + ldrb r1, [r3, #0x361] + cmp r1, #0 + blt _021DF1D8 + ldr r2, [r3, #0x64] +_021DF1A0: + add r1, r3, r0, lsl #2 + ldr r1, [r1, #0x448] + cmp r2, r1 + bne _021DF1C8 + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r1, [r1] + add r0, r1, r0 + ldrb r0, [r0, #0x624] + strb r0, [r1, #0x2c] + b _021DF1D8 +_021DF1C8: + ldrb r1, [r3, #0x361] + add r0, r0, #1 + cmp r0, r1 + ble _021DF1A0 +_021DF1D8: + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r0, _021DF2B0 ; =0x00000624 + ldr r2, [r1] + ldrb r1, [r2, #0x361] + add r0, r2, r0 + add r1, r1, #1 + bl MOD04_021DF530 + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r1, [r1] + str r0, [r1, #0x644] + bl MOD04_021E8780 + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF224 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF258 +_021DF224: + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + mov r0, r7 + str r1, [sp] + ldr r2, [r3, #0x8c] + mov r1, r6 + str r2, [sp, #4] + ldr r6, [r3, #0x88] + mov r2, r5 + mov r3, r4 + blx r6 + b _021DF26C +_021DF258: + ldr r2, [r1, #0x84] + ldr r3, [r1, #0x80] + mov r0, r7 + mov r1, r6 + blx r3 +_021DF26C: + cmp r7, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r0, #0x24] + cmp r0, #5 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF2AC: .word UNK04_0221053C +_021DF2B0: .word 0x00000624 + arm_func_end MOD04_021DF12C + + arm_func_start MOD04_021DF2B4 +MOD04_021DF2B4: ; 0x021DF2B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DF300 ; =UNK04_0221053C + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + ldr r0, [r0, #0x28] + cmp r0, #4 + beq _021DF2DC + bl MOD04_021DF5CC +_021DF2DC: + ldr r1, _021DF300 ; =UNK04_0221053C + mov r0, r5 + ldr r3, [r1] + mov r1, r4 + ldr r2, [r3, #0x7c] + ldr r3, [r3, #0x78] + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF300: .word UNK04_0221053C + arm_func_end MOD04_021DF2B4 + + arm_func_start MOD04_021DF304 +MOD04_021DF304: ; 0x021DF304 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _021DF334 + ldr r1, _021DF36C ; =UNK04_0221053C + mov r0, #3 + ldr r1, [r1] + str r4, [r1, #0x64] + bl MOD04_021DF5CC + bl MOD04_021E1ED4 + b _021DF33C +_021DF334: + mov r0, #0 + bl MOD04_021DF5CC +_021DF33C: + ldr r0, _021DF36C ; =UNK04_0221053C + ldr r0, [r0] + ldr r3, [r0, #0x70] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r0, #0x74] + mov r0, r5 + mov r1, r4 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF36C: .word UNK04_0221053C + arm_func_end MOD04_021DF304 + + arm_func_start MOD04_021DF370 +MOD04_021DF370: ; 0x021DF370 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _021DF3F4 +_021DF38C: ; jump table + b _021DF3F4 ; case 0 + b _021DF3AC ; case 1 + b _021DF3B8 ; case 2 + b _021DF3C8 ; case 3 + b _021DF3D4 ; case 4 + b _021DF3B8 ; case 5 + b _021DF3E0 ; case 6 + b _021DF3EC ; case 7 +_021DF3AC: + mov r0, #9 + mvn r2, #0 + b _021DF3F4 +_021DF3B8: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _021DF3F4 +_021DF3C8: + mov r0, #6 + mvn r2, #9 + b _021DF3F4 +_021DF3D4: + mov r0, #6 + mvn r2, #0x1d + b _021DF3F4 +_021DF3E0: + mov r0, #6 + mvn r2, #0x45 + b _021DF3F4 +_021DF3EC: + mov r0, #6 + mvn r2, #0x4f +_021DF3F4: + cmp r0, #0 + beq _021DF408 + ldr r1, _021DF410 ; =0xFFFEFA48 + add r1, r2, r1 + bl MOD04_021E0EAC +_021DF408: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF410: .word 0xFFFEFA48 + arm_func_end MOD04_021DF370 + + arm_func_start MOD04_021DF414 +MOD04_021DF414: ; 0x021DF414 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #4 + addls pc, pc, r6, lsl #2 + b _021DF470 +_021DF430: ; jump table + b _021DF470 ; case 0 + b _021DF444 ; case 1 + b _021DF450 ; case 2 + b _021DF45C ; case 3 + b _021DF468 ; case 4 +_021DF444: + mov r4, #9 + mvn r5, #0 + b _021DF470 +_021DF450: + mov r4, #9 + mvn r5, #1 + b _021DF470 +_021DF45C: + mov r4, #6 + mvn r5, #9 + b _021DF470 +_021DF468: + mov r4, #6 + mvn r5, #0x13 +_021DF470: + ldr r0, _021DF51C ; =UNK04_0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021DF500 +_021DF488: ; jump table + b _021DF500 ; case 0 + b _021DF4A0 ; case 1 + b _021DF4B8 ; case 2 + b _021DF500 ; case 3 + b _021DF4F4 ; case 4 + b _021DF4DC ; case 5 +_021DF4A0: + ldr r1, _021DF520 ; =0xFFFF11B8 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl MOD04_021E0EAC + b _021DF508 +_021DF4B8: + ldr r1, [r1, #0x9c] + ldr r0, _021DF520 ; =0xFFFF11B8 + cmp r1, #1 + add r5, r5, r0 + bge _021DF508 + mov r0, r4 + mov r1, r5 + bl MOD04_021E0EAC + b _021DF508 +_021DF4DC: + ldr r1, _021DF524 ; =0xFFFEC398 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl MOD04_021E8E08 + b _021DF508 +_021DF4F4: + ldr r0, _021DF528 ; =0xFFFEEAA8 + add r5, r5, r0 + b _021DF508 +_021DF500: + ldr r0, _021DF52C ; =0xFFFE9C88 + add r5, r5, r0 +_021DF508: + mov r0, r4 + mov r1, r5 + bl MOD04_021E2114 + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF51C: .word UNK04_0221053C +_021DF520: .word 0xFFFF11B8 +_021DF524: .word 0xFFFEC398 +_021DF528: .word 0xFFFEEAA8 +_021DF52C: .word 0xFFFE9C88 + arm_func_end MOD04_021DF414 + + arm_func_start MOD04_021DF530 +MOD04_021DF530: ; 0x021DF530 + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, #0 + mov ip, lr + cmp r1, #0 + ble _021DF560 + mov r3, #1 +_021DF54C: + ldrb r2, [r0, ip] + add ip, ip, #1 + cmp ip, r1 + orr lr, lr, r3, lsl r2 + blt _021DF54C +_021DF560: + mov r0, lr + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF530 + + arm_func_start MOD04_021DF56C +MOD04_021DF56C: ; 0x021DF56C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + bl MOD04_021E874C + mov r1, r0 + cmp r1, #0 + mov r0, #0 + ble _021DF5B0 + ldr r3, [sp] +_021DF594: + ldrb r2, [r3] + cmp r4, r2 + beq _021DF5B0 + add r0, r0, #1 + cmp r0, r1 + add r3, r3, #1 + blt _021DF594 +_021DF5B0: + cmp r0, r1 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021E8830 + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DF56C + + arm_func_start MOD04_021DF5CC +MOD04_021DF5CC: ; 0x021DF5CC + ldr r1, _021DF5E8 ; =UNK04_0221053C + ldr r3, [r1] + ldr r2, [r3, #0x24] + str r2, [r3, #0x28] + ldr r1, [r1] + str r0, [r1, #0x24] + bx lr + .align 2, 0 +_021DF5E8: .word UNK04_0221053C + arm_func_end MOD04_021DF5CC + + arm_func_start MOD04_021DF5EC +MOD04_021DF5EC: ; 0x021DF5EC + bx lr + arm_func_end MOD04_021DF5EC + + arm_func_start MOD04_021DF5F0 +MOD04_021DF5F0: ; 0x021DF5F0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + ldr r4, _021DF634 ; =UNK04_02210544 +_021DF600: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF620 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021DF620: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF600 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF634: .word UNK04_02210544 + arm_func_end MOD04_021DF5F0 + + arm_func_start MOD04_021DF638 +MOD04_021DF638: ; 0x021DF638 + ldr r1, _021DF644 ; =UNK04_022105C4 + add r0, r1, r0, lsl #3 + bx lr + .align 2, 0 +_021DF644: .word UNK04_022105C4 + arm_func_end MOD04_021DF638 + + arm_func_start MOD04_021DF648 +MOD04_021DF648: ; 0x021DF648 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + mov ip, #0 + ble _021DF684 + ldr r2, _021DF6B8 ; =UNK04_0221053C + ldr r3, [r2] +_021DF664: + add r2, r3, ip, lsl #2 + ldr r2, [r2, #0x448] + cmp r0, r2 + beq _021DF684 + add r2, ip, #1 + and ip, r2, #0xff + cmp ip, r1 + blt _021DF664 +_021DF684: + cmp ip, r1 + addge sp, sp, #4 + movge r0, #0 + ldmgeia sp!, {pc} + ldr r0, _021DF6B8 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, ip + ldrb r0, [r0, #0x624] + bl MOD04_021DF760 + bl MOD04_021DF730 + bl MOD04_021DF6BC + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6B8: .word UNK04_0221053C + arm_func_end MOD04_021DF648 + + arm_func_start MOD04_021DF6BC +MOD04_021DF6BC: ; 0x021DF6BC + ldr r1, _021DF6C8 ; =UNK04_02210544 + add r0, r1, r0, lsl #2 + bx lr + .align 2, 0 +_021DF6C8: .word UNK04_02210544 + arm_func_end MOD04_021DF6BC + + arm_func_start MOD04_021DF6CC +MOD04_021DF6CC: ; 0x021DF6CC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF6FC ; =UNK04_02210544 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + ldr r1, _021DF700 ; =UNK04_022105C4 + mov r0, #0 + mov r2, #0x100 + bl MIi_CpuClear32 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6FC: .word UNK04_02210544 +_021DF700: .word UNK04_022105C4 + arm_func_end MOD04_021DF6CC + + arm_func_start MOD04_021DF704 +MOD04_021DF704: ; 0x021DF704 + ldr r2, _021DF72C ; =UNK04_02210544 + mov r0, #0 +_021DF70C: + ldr r1, [r2, r0, lsl #2] + cmp r1, #0 + bxeq lr + add r0, r0, #1 + cmp r0, #0x20 + blt _021DF70C + mvn r0, #0 + bx lr + .align 2, 0 +_021DF72C: .word UNK04_02210544 + arm_func_end MOD04_021DF704 + + arm_func_start MOD04_021DF730 +MOD04_021DF730: ; 0x021DF730 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD3C4 + ldrb r0, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF730 + + arm_func_start MOD04_021DF748 +MOD04_021DF748: ; 0x021DF748 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF748 + + arm_func_start MOD04_021DF760 +MOD04_021DF760: ; 0x021DF760 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _021DF7BC ; =UNK04_0221053C + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, _021DF7C0 ; =UNK04_02210544 + mov r5, #0 +_021DF784: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF7A8 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + ldreq r0, _021DF7C0 ; =UNK04_02210544 + ldreq r0, [r0, r5, lsl #2] + ldmeqia sp!, {r4, r5, r6, pc} +_021DF7A8: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF784 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF7BC: .word UNK04_0221053C +_021DF7C0: .word UNK04_02210544 + arm_func_end MOD04_021DF760 + + arm_func_start MOD04_021DF7C4 +MOD04_021DF7C4: ; 0x021DF7C4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0x4000 + bl MOD04_021DE8C8 + add r0, r0, #0xc000 + mov r1, r0, lsl #0x10 + ldr r3, _021DF87C ; =UNK04_0221053C + mov r0, #0 + mov r2, r0 + mov r1, r1, lsr #0x10 + ldr r4, [r3] + bl MOD04_021FFEB0 + ldr r1, _021DF880 ; =MOD04_021DEB90 + ldr r2, _021DF87C ; =UNK04_0221053C + str r1, [sp] + mov r1, r0 + ldr r0, [r2] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl MOD04_021FD71C + mov r4, r0 + bl MOD04_021DF370 + cmp r0, #0 + addne sp, sp, #8 + movne r0, r4 + ldmneia sp!, {r4, pc} + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r1, _021DF884 ; =MOD04_021E9204 + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD6C8 + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r1, _021DF888 ; =MOD04_021E9464 + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD434 + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF87C: .word UNK04_0221053C +_021DF880: .word MOD04_021DEB90 +_021DF884: .word MOD04_021E9204 +_021DF888: .word MOD04_021E9464 + arm_func_end MOD04_021DF7C4 + + arm_func_start MOD04_021DF88C +MOD04_021DF88C: ; 0x021DF88C + ldr r0, _021DF8A4 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x24] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF8A4: .word UNK04_0221053C + arm_func_end MOD04_021DF88C + + arm_func_start MOD04_021DF8A8 +MOD04_021DF8A8: ; 0x021DF8A8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF8F0 ; =UNK04_0221053C + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r1, #1 + mov r1, r1,lsl r0 + ldr r2, [r2, #0x644] + ands r1, r2, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl MOD04_021DF5F0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF8F0: .word UNK04_0221053C + arm_func_end MOD04_021DF8A8 + + arm_func_start MOD04_021DF8F4 +MOD04_021DF8F4: ; 0x021DF8F4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _021DF954 ; =UNK04_0221053C + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r1, _021DF958 ; =0x00000624 + add r1, r3, r1 + str r1, [r0] + ldr r2, [r2] + ldrb r1, [r2, #0x369] + cmp r1, #2 + beq _021DF93C + ldrb r1, [r2, #0x369] + cmp r1, #3 + bne _021DF948 +_021DF93C: + bl MOD04_021E86A4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DF948: + bl MOD04_021E874C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF954: .word UNK04_0221053C +_021DF958: .word 0x00000624 + arm_func_end MOD04_021DF8F4 + + arm_func_start MOD04_021DF95C +MOD04_021DF95C: ; 0x021DF95C + ldr r0, _021DF974 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + ldrneb r0, [r0, #0x2c] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF974: .word UNK04_0221053C + arm_func_end MOD04_021DF95C + + arm_func_start MOD04_021DF978 +MOD04_021DF978: ; 0x021DF978 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DF9D0 ; =UNK04_0221053C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF9B0 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF9C0 +_021DF9B0: + bl MOD04_021E87D8 + add sp, sp, #4 + add r0, r0, #1 + ldmfd sp!, {pc} +_021DF9C0: + bl MOD04_021E8804 + add r0, r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF9D0: .word UNK04_0221053C + arm_func_end MOD04_021DF978 + + arm_func_start MOD04_021DF9D4 +MOD04_021DF9D4: ; 0x021DF9D4 + stmdb sp!, {r4, lr} + ldr r1, _021DFA3C ; =UNK04_0221053C + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _021DFA14 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFA14 + ldr r0, _021DFA3C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #5 + beq _021DFA1C + cmp r0, #6 + beq _021DFA1C +_021DFA14: + mvn r0, #0 + ldmia sp!, {r4, pc} +_021DFA1C: + mov r0, r4 + bl MOD04_021DF760 + cmp r0, #0 + mvneq r0, #1 + ldmeqia sp!, {r4, pc} + bl MOD04_021FD488 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DFA3C: .word UNK04_0221053C + arm_func_end MOD04_021DF9D4 + + arm_func_start MOD04_021DFA40 +MOD04_021DFA40: ; 0x021DFA40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DFAF0 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFA80 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFA80 + ldr r0, _021DFAF0 ; =UNK04_0221053C + ldr r2, [r0] + ldr r0, [r2, #0x24] + cmp r0, #5 + beq _021DFA8C + cmp r0, #6 + beq _021DFA8C +_021DFA80: + add sp, sp, #4 + mvn r0, #0 + ldmfd sp!, {pc} +_021DFA8C: + ldrb r0, [r2, #0x361] + cmp r0, #0 + bne _021DFAC0 + ldr r1, _021DFAF4 ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + bl MOD04_02200D6C + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DFAC0: + mov r1, #1 + ldr r0, _021DFAF0 ; =UNK04_0221053C + strb r1, [r2, #0x2d] + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD45C + ldr r1, _021DFAF0 ; =UNK04_0221053C + mov r0, #0 + ldr r1, [r1] + strb r0, [r1, #0x2d] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DFAF0: .word UNK04_0221053C +_021DFAF4: .word UNK04_0220D334 + arm_func_end MOD04_021DFA40 + + arm_func_start MOD04_021DFAF8 +MOD04_021DFAF8: ; 0x021DFAF8 + ldr r2, _021DFB1C ; =UNK04_0221053C + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + strne r0, [r3, #0x90] + ldrne r2, [r2] + movne r0, #1 + strne r1, [r2, #0x94] + bx lr + .align 2, 0 +_021DFB1C: .word UNK04_0221053C + arm_func_end MOD04_021DFAF8 + + arm_func_start MOD04_021DFB20 +MOD04_021DFB20: ; 0x021DFB20 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x224 + mvn ip, #0 + mov r7, r0 + mov r6, r1 + mov r4, r2 + mov r5, r3 + str ip, [sp, #8] + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFB60 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFB6C +_021DFB60: + add sp, sp, #0x224 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFB6C: + bl MOD04_021DF6CC + ldr r1, _021DFD04 ; =UNK04_0221053C + mov r0, #5 + ldr r2, [r1] + str r6, [r2, #0x88] + ldr r1, [r1] + str r4, [r1, #0x8c] + bl MOD04_021DF5CC + mov r0, r7 + bl MOD04_021E1F84 + movs r4, r0 + beq _021DFBB8 + ldr r0, _021DFD04 ; =UNK04_0221053C + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F05F4 + cmp r0, #0 + bne _021DFBC0 +_021DFBB8: + mov r5, #0xb + b _021DFC8C +_021DFBC0: + ldr r0, _021DFD04 ; =UNK04_0221053C + add r2, sp, #8 + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1c + bl MOD04_021F0664 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r1, [sp, #8] + ldr r0, [r0] + add r2, sp, #0x10 + add r0, r0, #0x1c + bl MOD04_021F06E4 + ldr r0, [sp, #0x14] + cmp r0, #6 + movne r5, #0xb + bne _021DFC8C + ldr r0, _021DFD08 ; =UNK04_0220D344 + mov r6, #0x30 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + strb r6, [sp, #0xc] + bl MOD04_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r6, r0, #0xff + ldr r0, _021DFD0C ; =UNK04_0220D348 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + bl MOD04_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r0, r0, #0xff + cmp r0, r6 + moveq r5, #0xd + beq _021DFC8C + ldr r6, [sp, #0x238] + ldr r1, _021DFD10 ; =MOD04_021DF12C + mov r0, r4 + mov r3, r5 + mov r2, #0 + str r6, [sp] + bl MOD04_021E9FD0 + add sp, sp, #0x224 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFC8C: + mov r0, r5 + mov r1, #0 + bl MOD04_021DD6B0 + ldr r0, _021DFD04 ; =UNK04_0221053C + mov r1, #0 + ldr r4, [r0] + mov r0, r5 + str r1, [sp] + ldr r2, [r4, #0x8c] + mov r3, r1 + str r2, [sp, #4] + ldr r4, [r4, #0x88] + mov r2, #1 + blx r4 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFCF8 + ldr r0, [r0, #0x24] + cmp r0, #5 + bne _021DFCF8 + mov r0, #3 + bl MOD04_021DF5CC + ldr r1, _021DFD14 ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 +_021DFCF8: + mov r0, #1 + add sp, sp, #0x224 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFD04: .word UNK04_0221053C +_021DFD08: .word UNK04_0220D344 +_021DFD0C: .word UNK04_0220D348 +_021DFD10: .word MOD04_021DF12C +_021DFD14: .word UNK04_0220D334 + arm_func_end MOD04_021DFB20 + + arm_func_start MOD04_021DFD18 +MOD04_021DFD18: ; 0x021DFD18 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFD50 + ldr r0, _021DFDB4 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFD5C +_021DFD50: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFD5C: + bl MOD04_021DF6CC + ldr r1, _021DFDB4 ; =UNK04_0221053C + mov r2, #0 + ldr r3, [r1] + mov r0, #5 + str r6, [r3, #0x88] + ldr r3, [r1] + str r5, [r3, #0x8c] + ldr r1, [r1] + strb r2, [r1, #0x2c] + bl MOD04_021DF5CC + sub r0, r7, #1 + ldr r5, [sp, #0x18] + ldr r1, _021DFDB8 ; =MOD04_021DF12C + mov r3, r4 + and r0, r0, #0xff + mov r2, #0 + str r5, [sp] + bl MOD04_021EA138 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFDB4: .word UNK04_0221053C +_021DFDB8: .word MOD04_021DF12C + arm_func_end MOD04_021DFD18 + + arm_func_start MOD04_021DFDBC +MOD04_021DFDBC: ; 0x021DFDBC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFDF8 + ldr r0, _021DFE5C ; =UNK04_0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #3 + blt _021DFDF8 + cmp r1, #4 + bne _021DFE04 +_021DFDF8: + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFE04: + str r6, [r2, #0x78] + ldr r1, [r0] + mov r0, #4 + str r5, [r1, #0x7c] + bl MOD04_021DF5CC + ldr r0, _021DFE5C ; =UNK04_0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + ldr r0, [sp, #0x24] + str r4, [sp] + str r1, [sp, #4] + ldr r4, [sp, #0x28] + str r0, [sp, #8] + ldr r2, _021DFE60 ; =MOD04_021DF2B4 + add r0, r3, #0xe0 + add r1, r3, #0x1e0 + mov r3, #0 + str r4, [sp, #0xc] + bl MOD04_021E2174 + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFE5C: .word UNK04_0221053C +_021DFE60: .word MOD04_021DF2B4 + arm_func_end MOD04_021DFDBC + + arm_func_start MOD04_021DFE64 +MOD04_021DFE64: ; 0x021DFE64 + stmdb sp!, {r4, r5, r6, lr} + movs r4, r0 + mov r6, r2 + mov r5, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFE9C + ldr r0, _021DFF6C ; =UNK04_0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #0 + beq _021DFEA4 +_021DFE9C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFEA4: + str r6, [r2, #0x70] + ldr r1, [r0] + cmp r4, #0 + str r5, [r1, #0x74] + beq _021DFEC4 + ldrh r1, [r4] + cmp r1, #0 + bne _021DFECC +_021DFEC4: + mov r5, #0 + b _021DFF18 +_021DFECC: + ldr r1, [r0] + mov r0, #0 + add r1, r1, #0x2e + mov r2, #0x34 + bl MIi_CpuClear16 + mov r0, r4 + bl MOD04_021DE89C + cmp r0, #0x19 + movhi r5, #0x19 + bhi _021DFF00 + mov r0, r4 + bl MOD04_021DE89C + mov r5, r0 +_021DFF00: + ldr r1, _021DFF6C ; =UNK04_0221053C + mov r0, r4 + ldr r1, [r1] + mov r2, r5, lsl #1 + add r1, r1, #0x2e + bl MIi_CpuCopy16 +_021DFF18: + ldr r0, _021DFF6C ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + add r0, r0, r5, lsl #1 + strh r1, [r0, #0x2e] + bl MOD04_021DDC1C + cmp r0, #4 + beq _021DFF4C + ldr r1, _021DFF70 ; =0xFFFF1596 + mov r0, #2 + bl MOD04_021E0EAC + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021DFF4C: + mov r0, #1 + bl MOD04_021DF5CC + ldr r0, _021DFF6C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x68] + bl MOD04_021EE898 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFF6C: .word UNK04_0221053C +_021DFF70: .word 0xFFFF1596 + arm_func_end MOD04_021DFE64 + + arm_func_start MOD04_021DFF74 +MOD04_021DFF74: ; 0x021DFF74 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD984 + cmp r0, #0 + beq _021DFF8C + bl MOD04_021DF5EC +_021DFF8C: + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x24] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _021E0194 +_021DFFD8: ; jump table + b _021E0194 ; case 0 + b _021DFFF4 ; case 1 + b _021E0124 ; case 2 + b _021E012C ; case 3 + b _021E012C ; case 4 + b _021E013C ; case 5 + b _021E014C ; case 6 +_021DFFF4: + bl MOD04_021EE6A0 + cmp r0, #1 + beq _021E0014 + cmp r0, #2 + beq _021E00FC + cmp r0, #3 + beq _021E0110 + b _021E0194 +_021E0014: + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0xa0] + add r0, r0, #0x1c + bl MOD04_021F0F94 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + ldr r2, _021E01E8 ; =MOD04_021DF0D4 + mov r3, r1 + add r0, r0, #0x1c + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01EC ; =MOD04_021DEF6C + ldr r0, [r0] + mov r1, #3 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01F0 ; =MOD04_021E20C8 + ldr r0, [r0] + mov r1, #1 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01F4 ; =MOD04_021E1FE4 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD04_021DF5CC + bl MOD04_021E1034 + b _021E0194 +_021E00FC: + ldr r1, _021E01F8 ; =0xFFFFB172 + mov r0, #3 + bl MOD04_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0110: + ldr r1, _021E01FC ; =0xFFFFB17B + mov r0, #4 + bl MOD04_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0124: + bl MOD04_021E0F1C + b _021E0194 +_021E012C: + bl MOD04_021E2228 + mov r0, #0 + bl MOD04_021E9568 + b _021E0194 +_021E013C: + mov r0, #1 + bl MOD04_021E9568 + bl MOD04_021E2228 + b _021E0194 +_021E014C: + bl MOD04_021EAA64 + bl MOD04_021E2228 + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021E0174 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021E0180 +_021E0174: + mov r0, #1 + bl MOD04_021E9568 + b _021E0194 +_021E0180: + ldr r0, [r1] + cmp r0, #0 + beq _021E0194 + mov r0, #0 + bl MOD04_021E9568 +_021E0194: + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x36c] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [r1, #0x364] + cmp r0, #0 + beq _021E01CC + bl MOD04_02202280 + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E01CC: + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x36c] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E01E4: .word UNK04_0221053C +_021E01E8: .word MOD04_021DF0D4 +_021E01EC: .word MOD04_021DEF6C +_021E01F0: .word MOD04_021E20C8 +_021E01F4: .word MOD04_021E1FE4 +_021E01F8: .word 0xFFFFB172 +_021E01FC: .word 0xFFFFB17B + arm_func_end MOD04_021DFF74 + + arm_func_start MOD04_021E0200 +MOD04_021E0200: ; 0x021E0200 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x364] + cmp r0, #0 + beq _021E023C + bl MOD04_02202280 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E023C: + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x36c] + ldr r0, [r0] + ldr r0, [r0, #0x438] + cmp r0, #0 + beq _021E0270 + bl MOD04_02203E80 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x438] +_021E0270: + bl MOD04_02200D6C + bl MOD04_021FBE7C + ldr r0, _021E0370 ; =UNK04_0221053C + ldr ip, [r0] + ldr r0, [ip, #0x1c] + cmp r0, #0 + beq _021E0324 + mov r1, #0 + mov r2, r1 + mov r3, r1 + add r0, ip, #0x1c + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #3 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #1 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, r2 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F0F18 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F0F64 + mov r1, #0 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + str r1, [r0, #0x1c] +_021E0324: + bl MOD04_021E0E48 + bl MOD04_021E1D90 + bl MOD04_021E854C + bl MOD04_021EA9C4 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _021E035C + bl MOD04_021FD704 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_021E035C: + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0370: .word UNK04_0221053C + arm_func_end MOD04_021E0200 + + arm_func_start MOD04_021E0374 +MOD04_021E0374: ; 0x021E0374 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr ip, _021E05D8 ; =UNK04_0221053C + mov r6, r1 + mov r5, r2 + mov r4, r3 + str r0, [ip] + bl MOD04_021DD6F0 + ldr r0, _021E05D8 ; =UNK04_0221053C + mov r2, #0 + ldr r1, [r0] + ldr r3, _021E05DC ; =MOD04_021E8F80 + str r2, [r1] + ldr r1, [r0] + ldr r2, _021E05E0 ; =MOD04_021DEF60 + str r3, [r1, #4] + ldr r1, [r0] + ldr ip, [sp, #0x24] + str r2, [r1, #8] + cmp ip, #0 + ldr r2, [r0] + ldr r3, _021E05E4 ; =MOD04_021DEBE4 + ldr r1, _021E05E8 ; =MOD04_021DEBD8 + str r3, [r2, #0xc] + ldr r0, [r0] + ldr r3, [sp, #0x28] + str r1, [r0, #0x10] + ldr r0, _021E05D8 ; =UNK04_0221053C + moveq ip, #0x2000 + ldr r0, [r0] + cmp r3, #0 + str ip, [r0, #0x14] + moveq r3, #0x2000 + ldr r1, _021E05D8 ; =UNK04_0221053C + mov r0, #0 + ldr r2, [r1] + ldr ip, _021E05EC ; =UNK04_02210F94 + str r3, [r2, #0x18] + ldr r2, [r1] + ldr r3, _021E05F0 ; =UNK04_02211094 + str r0, [r2, #0x1c] + ldr r2, [r1] + str r6, [r2, #0x20] + ldr r2, [r1] + str r0, [r2, #0x24] + ldr r2, [r1] + str r0, [r2, #0x28] + ldr r2, [r1] + strb r0, [r2, #0x2c] + ldr r2, [r1] + strb r0, [r2, #0x2d] + ldr r2, [r1] + str r0, [r2, #0x64] + ldr r2, [r1] + str ip, [r2, #0x68] + ldr r2, [r1] + str r3, [r2, #0x6c] + ldr r2, [r1] + str r0, [r2, #0x70] + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r2, [r1] + str r0, [r2, #0x78] + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r2, [r1] + str r0, [r2, #0x80] + ldr r2, [r1] + str r0, [r2, #0x84] + ldr r2, [r1] + str r0, [r2, #0x88] + ldr r2, [r1] + str r0, [r2, #0x8c] + ldr r2, [r1] + str r0, [r2, #0x90] + ldr r1, [r1] + str r0, [r1, #0x94] + bl MOD04_021DF6CC + ldr r0, _021E05D8 ; =UNK04_0221053C + mov r3, r5 + ldr r2, [r0] + ldr r1, [r6, #0x24] + ldr r0, _021E05F4 ; =MOD04_021DF304 + str r1, [sp] + add r1, r2, #0x2e + str r1, [sp, #4] + str r0, [sp, #8] + mov r5, #0 + add r0, r2, #0x98 + mov r1, r6 + add r2, r2, #0x1c + str r5, [sp, #0xc] + bl MOD04_021E1074 + ldr r0, _021E05D8 ; =UNK04_0221053C + ldr r2, [sp, #0x30] + ldr r5, [r0] + ldr r3, [sp, #0x2c] + str r2, [sp] + add r0, r5, #0x2f8 + add r1, r5, #0x1c + add r2, r5, #0x2e + bl MOD04_021E234C + ldr r0, _021E05D8 ; =UNK04_0221053C + ldr r1, _021E05EC ; =UNK04_02210F94 + ldr r2, [r0] + ldr r0, _021E05F0 ; =UNK04_02211094 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r2, #0x354 + add r1, r2, #0x1c + add r3, r2, #4 + bl MOD04_021EA368 + ldr r1, _021E05D8 ; =UNK04_0221053C + ldr r0, _021E05F8 ; =0x000007D8 + ldr r1, [r1] + add r0, r1, r0 + bl MOD04_021EACB4 + mov r0, r4 + bl strlen + cmp r0, #0x100 + movhs r5, #0xff + bhs _021E0578 + mov r0, r4 + bl strlen + mov r5, r0 +_021E0578: + ldr r1, _021E05EC ; =UNK04_02210F94 + mov r0, r4 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [sp, #0x20] + ldr r1, _021E05EC ; =UNK04_02210F94 + mov r2, #0 + strb r2, [r1, r5] + bl strlen + cmp r0, #0x100 + movhs r4, #0xff + bhs _021E05B4 + ldr r0, [sp, #0x20] + bl strlen + mov r4, r0 +_021E05B4: + ldr r0, [sp, #0x20] + ldr r1, _021E05F0 ; =UNK04_02211094 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, _021E05F0 ; =UNK04_02211094 + mov r1, #0 + strb r1, [r0, r4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E05D8: .word UNK04_0221053C +_021E05DC: .word MOD04_021E8F80 +_021E05E0: .word MOD04_021DEF60 +_021E05E4: .word MOD04_021DEBE4 +_021E05E8: .word MOD04_021DEBD8 +_021E05EC: .word UNK04_02210F94 +_021E05F0: .word UNK04_02211094 +_021E05F4: .word MOD04_021DF304 +_021E05F8: .word 0x000007D8 + arm_func_end MOD04_021E0374 + + .section .data + + .global UNK04_0220D334 +UNK04_0220D334: ; 0x0220D334 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK04_0220D338 +UNK04_0220D338: ; 0x0220D338 + .asciz "GPCM" + + .balign 4, 0 + .global UNK04_0220D340 +UNK04_0220D340: ; 0x0220D340 + .asciz "MAT" + + .balign 4, 0 + .global UNK04_0220D344 +UNK04_0220D344: ; 0x0220D344 + .asciz "SCM" + + .balign 4, 0 + .global UNK04_0220D348 +UNK04_0220D348: ; 0x0220D348 + .asciz "SCN" + + .balign 4, 0 + .section .bss + + .global UNK04_0221053C +UNK04_0221053C: ; 0x0221053C + .space 0x4 + + .global UNK04_02210540 +UNK04_02210540: ; 0x02210540 + .space 0x4 + + .global UNK04_02210544 +UNK04_02210544: ; 0x02210544 + .space 0x80 + + .global UNK04_022105C4 +UNK04_022105C4: ; 0x022105C4 + .space 0x100 diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s new file mode 100644 index 00000000..0ce6279d --- /dev/null +++ b/arm9/modules/04/asm/mod04_021E05FC.s @@ -0,0 +1,830 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021E05FC +MOD04_021E05FC: ; 0x021E05FC + ldr r0, _021E0624 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + beq _021E061C + ldr r0, [r0, #4] + cmp r0, #5 + moveq r0, #1 + bxeq lr +_021E061C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0624: .word UNK04_022106C8 + arm_func_end MOD04_021E05FC + + arm_func_start MOD04_021E0628 +MOD04_021E0628: ; 0x021E0628 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r1, _021E07CC ; =UNK04_022106C8 + ldr r2, [r1] + ldr r1, [r2, #4] + cmp r1, #3 + bne _021E0704 + ldrsb r1, [r4, #0x8e] + cmp r1, #0 + bne _021E06DC + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #8 + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + ldr r1, _021E07D0 ; =0x00000705 + add r2, sp, #8 + mov r0, r5 + bl MOD04_021F0B30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r3, #4 + ldr r1, [r0] + ldr r0, _021E07D4 ; =MOD04_021E0628 + str r3, [r1, #4] + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #0x4c + cmp r0, #0 + ldmia sp!, {r4, r5, pc} +_021E06DC: + bl MOD04_021F0D54 + ldr r0, _021E07D8 ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #0x4c + str r1, [r0, #4] + ldmia sp!, {r4, r5, pc} +_021E0704: + cmp r1, #4 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x1d + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + add r1, sp, #0x1d + add r0, r4, #0x8e + bl strcmp + cmp r0, #0 + bne _021E079C + ldr r0, _021E07CC ; =UNK04_022106C8 + add r2, sp, #0x32 + ldr r0, [r0] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl DWCi_Acc_LoginIdToUserName + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r2, [r4, #4] + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r1, r1, #0x3c + bl DWCi_Acc_SetLoginIdToUserData + mov r0, r5 + bl MOD04_021F0D54 + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r1, _021E07DC ; =UNK04_022106C4 + ldr r4, [r0] + ldr r0, _021E07E0 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, r4, #0x48 + add r1, r4, #0x148 + blx r3 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} +_021E079C: + ldr r0, _021E07D4 ; =MOD04_021E0628 + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + cmp r0, #0 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E07CC: .word UNK04_022106C8 +_021E07D0: .word 0x00000705 +_021E07D4: .word MOD04_021E0628 +_021E07D8: .word MOD04_021E0C80 +_021E07DC: .word UNK04_022106C4 +_021E07E0: .word UNK04_022106CC + arm_func_end MOD04_021E0628 + + arm_func_start MOD04_021E07E4 +MOD04_021E07E4: ; 0x021E07E4 + stmdb sp!, {lr} + sub sp, sp, #0x3d4 + bl MOD04_021D988C + cmp r0, #0x15 + bne _021E08BC + add r0, sp, #0 + bl MOD04_021D97F8 + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x4a + ldr r0, [r0] + add r0, r0, #0x48 + bl strcpy + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x100 + ldr r0, [r0] + add r1, r1, #0x77 + add r0, r0, #0x148 + bl strcpy + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x24] + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0898 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09E0 ; =UNK04_022106C4 + ldr ip, [r0] + ldr r0, _021E09E4 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, ip, #0x48 + add r1, ip, #0x148 + blx r3 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0898: + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09E8 ; =MOD04_021E0C98 + ldr r1, [r0] + mov r3, #3 + add r0, r1, #0x48 + add r1, r1, #0x148 + bl MOD04_021E0BE0 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E08BC: + bl MOD04_021D988C + cmp r0, #0 + addeq sp, sp, #0x3d4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09EC ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x28] + ldr ip, [ip, #0x2c] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E09F0 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E0958 + add r0, sp, #0x1c4 + bl MOD04_021D97F8 + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + mov r0, #2 + str r2, [r1, #0x24] + ldr r1, [sp, #0x1c4] + bl MOD04_021E0EAC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0958: + bl MOD04_021D991C + add r0, sp, #0x388 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0x388 + bl MI_CpuCopy8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09F4 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x3bc + add r1, r2, r1 + bl strcpy + ldr r2, _021E09F8 ; =MOD04_021DD944 + ldr r0, _021E09DC ; =UNK04_022106C8 + str r2, [sp, #0x3c8] + ldr r2, _021E09FC ; =MOD04_021DD904 + ldr r1, [r0] + str r2, [sp, #0x3cc] + ldr r1, [r1, #0x24] + add r0, sp, #0x388 + bl MOD04_021D9ACC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} + .align 2, 0 +_021E09DC: .word UNK04_022106C8 +_021E09E0: .word UNK04_022106C4 +_021E09E4: .word UNK04_022106CC +_021E09E8: .word MOD04_021E0C98 +_021E09EC: .word 0x000082EA +_021E09F0: .word 0x00002710 +_021E09F4: .word 0x00000251 +_021E09F8: .word MOD04_021DD944 +_021E09FC: .word MOD04_021DD904 + arm_func_end MOD04_021E07E4 + + arm_func_start MOD04_021E0A00 +MOD04_021E0A00: ; 0x021E0A00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, _021E0BBC ; =UNK04_022106CC + ldr r1, _021E0BC0 ; =UNK04_022106C4 + ldr r0, [r0] + str r5, [r2] + str r4, [r1] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0A68 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r2, r1, #0x248 + ldr r1, [r0, #0x24] + add r0, r0, #0x10 + bl DWCi_Acc_LoginIdToUserName + b _021E0B1C +_021E0A68: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_IsValidLoginId + cmp r0, #0 + bne _021E0AD0 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r0, #4 + bl DWCi_Acc_CheckConsoleUserId + cmp r0, #0 + beq _021E0ABC + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r3, r1, #0x3c + add r0, r0, #4 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + b _021E0B04 +_021E0ABC: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_CreateTempLoginId + b _021E0B04 +_021E0AD0: + bl OS_GetTick + ldr r2, _021E0BC4 ; =0x6C078965 + ldr r3, _021E0BC8 ; =0x5D588B65 + umull ip, r4, r0, r2 + mla r4, r0, r3, r4 + ldr r3, _021E0BB8 ; =UNK04_022106C8 + ldr r0, _021E0BCC ; =0x00269EC3 + mla r4, r1, r2, r4 + adds r0, ip, r0 + ldr r3, [r3] + adc r1, r4, #0 + add r0, r3, #0x3c + bl DWCi_Acc_SetPlayerId +_021E0B04: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r0] + ldr r1, [r2, #0xc] + add r0, r2, #0x3c + add r2, r2, #0x248 + bl DWCi_Acc_LoginIdToUserName +_021E0B1C: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, _021E0BD0 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x34 + add r1, r2, r1 + bl strcpy + ldr r4, _021E0BD4 ; =MOD04_021DD944 + ldr r3, _021E0BD8 ; =MOD04_021DD904 + ldr r1, _021E0BDC ; =0x00001C10 + mov r0, #0 + mov r2, #4 + str r4, [sp, #0x40] + str r3, [sp, #0x44] + bl MOD04_021DD924 + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl OS_GetTick + ldr r2, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r2] + str r0, [r2, #0x28] + str r1, [r2, #0x2c] + mov r1, r4 + add r0, sp, #0 + bl MOD04_021D9ACC + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E0BB8: .word UNK04_022106C8 +_021E0BBC: .word UNK04_022106CC +_021E0BC0: .word UNK04_022106C4 +_021E0BC4: .word 0x6C078965 +_021E0BC8: .word 0x5D588B65 +_021E0BCC: .word 0x00269EC3 +_021E0BD0: .word 0x00000251 +_021E0BD4: .word MOD04_021DD944 +_021E0BD8: .word MOD04_021DD904 +_021E0BDC: .word 0x00001C10 + arm_func_end MOD04_021E0A00 + + arm_func_start MOD04_021E0BE0 +MOD04_021E0BE0: ; 0x021E0BE0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r4, _021E0C7C ; =UNK04_022106C8 + mov r6, r1 + ldr r4, [r4] + mov r1, r0 + add r0, r4, #0x48 + mov r5, r2 + mov r4, r3 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + mov r1, r6 + ldr r0, [r0] + add r0, r0, #0x148 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + ldr r6, [r0] + bl OS_GetTick + str r0, [r6, #0x34] + str r1, [r6, #0x38] + mov r3, #1 + ldr r0, _021E0C7C ; =UNK04_022106C8 + str r3, [r6, #0x30] + ldr r2, [r0] + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, r2, #0x48 + add r2, r2, #0x148 + bl MOD04_021F0D8C + bl MOD04_021E0DB0 + cmp r0, #0 + ldreq r0, _021E0C7C ; =UNK04_022106C8 + ldreq r0, [r0] + streq r4, [r0, #4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E0C7C: .word UNK04_022106C8 + arm_func_end MOD04_021E0BE0 + + arm_func_start MOD04_021E0C80 +MOD04_021E0C80: ; 0x021E0C80 + ldr ip, _021E0C90 ; =MOD04_021E0BE0 + ldr r2, _021E0C94 ; =MOD04_021E0C98 + mov r3, #2 + bx ip + .align 2, 0 +_021E0C90: .word MOD04_021E0BE0 +_021E0C94: .word MOD04_021E0C98 + arm_func_end MOD04_021E0C80 + + arm_func_start MOD04_021E0C98 +MOD04_021E0C98: ; 0x021E0C98 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r3, _021E0DA0 ; =UNK04_022106C8 + mov r2, #0 + ldr ip, [r3] + mov r4, r1 + str r2, [ip, #0x30] + ldr r1, [r4] + cmp r1, #0 + bne _021E0D90 + ldr ip, [r3] + ldr r1, [ip, #4] + cmp r1, #2 + bne _021E0D5C + ldr r1, [ip, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r1, #0x1c] + cmp r1, r0 + bne _021E0D48 + ldr r1, _021E0DA4 ; =UNK04_0220D34C + mov r3, #5 + mov r0, #1 + str r3, [ip, #4] + bl MOD04_021E1E30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, _021E0DA0 ; =UNK04_022106C8 + ldr r1, [r4, #4] + ldr r3, [r0] + mov r0, #0 + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x14] + blx r3 + bl MOD04_021DF7C4 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + bl MOD04_021EA1E0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D48: + ldr r1, _021E0DA8 ; =0xFFFF15A0 + mov r0, #6 + bl MOD04_021E0EAC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_021E0D5C: + cmp r1, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r1, _021E0DAC ; =MOD04_021E0628 + mov r3, r2 + str r1, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D90: + mov r0, r1 + bl MOD04_021E0DB0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0DA0: .word UNK04_022106C8 +_021E0DA4: .word UNK04_0220D34C +_021E0DA8: .word 0xFFFF15A0 +_021E0DAC: .word MOD04_021E0628 + arm_func_end MOD04_021E0C98 + + arm_func_start MOD04_021E0DB0 +MOD04_021E0DB0: ; 0x021E0DB0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E0E0C +_021E0DCC: ; jump table + b _021E0E0C ; case 0 + b _021E0DE0 ; case 1 + b _021E0DEC ; case 2 + b _021E0DF8 ; case 3 + b _021E0E04 ; case 4 +_021E0DE0: + mov r0, #9 + mvn r2, #0 + b _021E0E0C +_021E0DEC: + mov r0, #9 + mvn r2, #1 + b _021E0E0C +_021E0DF8: + mov r0, #6 + mvn r2, #9 + b _021E0E0C +_021E0E04: + mov r0, #6 + mvn r2, #0x13 +_021E0E0C: + ldr r1, _021E0E20 ; =0xFFFF11B8 + add r1, r2, r1 + bl MOD04_021E0EAC + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0E20: .word 0xFFFF11B8 + arm_func_end MOD04_021E0DB0 + + arm_func_start MOD04_021E0E24 +MOD04_021E0E24: ; 0x021E0E24 + ldr r0, _021E0E44 ; =UNK04_022106C8 + ldr r2, [r0] + cmp r2, #0 + movne r1, #0 + strne r1, [r2, #4] + ldrne r0, [r0] + strne r1, [r0, #0x30] + bx lr + .align 2, 0 +_021E0E44: .word UNK04_022106C8 + arm_func_end MOD04_021E0E24 + + arm_func_start MOD04_021E0E48 +MOD04_021E0E48: ; 0x021E0E48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _021E0E94 + bl MOD04_021D9974 + bl MOD04_021D991C + ldr r1, _021E0EA8 ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x24] +_021E0E94: + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0EA8: .word UNK04_022106C8 + arm_func_end MOD04_021E0E48 + + arm_func_start MOD04_021E0EAC +MOD04_021E0EAC: ; 0x021E0EAC + stmdb sp!, {r4, lr} + ldr r2, _021E0EFC ; =UNK04_022106C8 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021DD6B0 + ldr r0, _021E0EFC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021E0EF4 + ldr r2, [r0, #0x18] + mov r0, r4 + mov r1, #0 + blx r3 +_021E0EF4: + bl MOD04_021E0E24 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0EFC: .word UNK04_022106C8 + arm_func_end MOD04_021E0EAC + + arm_func_start MOD04_021E0F00 +MOD04_021E0F00: ; 0x021E0F00 + ldr r0, _021E0F18 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x1c] + moveq r0, #0 + bx lr + .align 2, 0 +_021E0F18: .word UNK04_022106C8 + arm_func_end MOD04_021E0F00 + + arm_func_start MOD04_021E0F1C +MOD04_021E0F1C: ; 0x021E0F1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E101C +_021E0F60: ; jump table + b _021E101C ; case 0 + b _021E0F78 ; case 1 + b _021E0F84 ; case 2 + b _021E0F84 ; case 3 + b _021E0F84 ; case 4 + b _021E101C ; case 5 +_021E0F78: + bl MOD04_021E07E4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0F84: + ldr r0, [r1] + cmp r0, #0 + beq _021E0FA0 + ldr r1, [r0] + cmp r1, #0 + beq _021E0FA0 + bl MOD04_021F0F18 +_021E0FA0: + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E1024 ; =UNK04_022106C8 + ldr r2, _021E1028 ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x34] + ldr ip, [ip, #0x38] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E102C ; =0x0000EA60 + cmp r1, #0 + cmpeq r0, r2 + addls sp, sp, #4 + ldmlsia sp!, {pc} + ldr r1, _021E1030 ; =0xFFFF1172 + mov r0, #6 + bl MOD04_021E0EAC + ldr r0, _021E1024 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x30] +_021E101C: + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1024: .word UNK04_022106C8 +_021E1028: .word 0x000082EA +_021E102C: .word 0x0000EA60 +_021E1030: .word 0xFFFF1172 + arm_func_end MOD04_021E0F1C + + arm_func_start MOD04_021E1034 +MOD04_021E1034: ; 0x021E1034 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E106C ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E1070 ; =UNK04_022106C8 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + str r1, [r0, #0x30] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E106C: .word MOD04_021E0C80 +_021E1070: .word UNK04_022106C8 + arm_func_end MOD04_021E1034 + + arm_func_start MOD04_021E1074 +MOD04_021E1074: ; 0x021E1074 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _021E10F4 ; =UNK04_022106C8 + mov r6, r1 + mov r5, r2 + mov r1, #0 + mov r2, #0x260 + mov r4, r3 + str r0, [ip] + bl MI_CpuFill8 + ldr r0, _021E10F4 ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + ldr ip, [sp, #0x10] + str r5, [r1] + ldr r1, [r0] + ldr r5, [sp, #0x14] + str r2, [r1, #4] + ldr r1, [r0] + ldr r3, [sp, #0x18] + str r4, [r1, #8] + ldr r1, [r0] + ldr r2, [sp, #0x1c] + str ip, [r1, #0xc] + ldr r1, [r0] + str r5, [r1, #0x10] + ldr r1, [r0] + str r3, [r1, #0x14] + ldr r1, [r0] + str r2, [r1, #0x18] + ldr r0, [r0] + str r6, [r0, #0x1c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E10F4: .word UNK04_022106C8 + arm_func_end MOD04_021E1074 + + .section .data + + .global UNK04_0220D34C +UNK04_0220D34C: ; 0x0220D34C + .byte 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global UNK04_022106C4 +UNK04_022106C4: ; 0x022106C4 + .space 0x4 + + .global UNK04_022106C8 +UNK04_022106C8: ; 0x022106C8 + .space 0x4 + + .global UNK04_022106CC +UNK04_022106CC: ; 0x022106CC + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021E10F8.s b/arm9/modules/04/asm/mod04_021E10F8.s new file mode 100644 index 00000000..0216e485 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021E10F8.s @@ -0,0 +1,1670 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021E10F8 +MOD04_021E10F8: ; 0x021E10F8 + ldr r0, _021E1108 ; =UNK04_022106D0 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 +_021E1108: .word UNK04_022106D0 + arm_func_end MOD04_021E10F8 + + arm_func_start MOD04_021E110C +MOD04_021E110C: ; 0x021E110C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov sl, r1 + ldr r0, [sl] + mov r8, #0 + cmp r0, #0 + mov r0, #1 + str r0, [sp] + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _021E12B4 ; =UNK04_022106D0 + mov sb, r8 + ldr r2, [r4] + ldr r1, [r2, #0x14] + cmp r1, #0 + ble _021E1274 + mov r7, r8 + str r0, [sp, #4] + mov fp, r8 + mov r5, r0 +_021E115C: + ldr r0, [r2, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #1 + bne _021E11C8 + bl MOD04_021E0F00 + ldr r1, [r4] + add r2, sp, #8 + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl DWC_LoginIdToUserName + add r0, sp, #8 + add r1, sl, #0x8e + bl strcmp + cmp r0, #0 + bne _021E125C + ldr r0, [r4] + ldr r1, [sl, #4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_SetGsProfileId + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWCi_SetBuddyFriendData + mov r8, r5 + b _021E125C +_021E11C8: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #3 + beq _021E11F8 + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #2 + bne _021E125C +_021E11F8: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_IsBuddyFriendData + cmp r0, #1 + streq fp, [sp] + beq _021E125C + ldr r6, [sl, #4] + bl MOD04_021E0F00 + ldr r1, [r4] + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl DWC_GetGsProfileId + cmp r6, r0 + bne _021E125C + ldr r0, [r4] + mov r1, r6 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_SetGsProfileId + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWCi_SetBuddyFriendData + ldr r8, [sp, #4] +_021E125C: + ldr r2, [r4] + add sb, sb, #1 + ldr r1, [r2, #0x14] + add r7, r7, #0xc + cmp sb, r1 + blt _021E115C +_021E1274: + cmp r8, #0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r2, #0x18] + ldr r2, [sl, #4] + bl MOD04_021E17F0 + ldr r1, [sp] + cmp r1, #0 + beq _021E129C + bl MOD04_021E1DA4 +_021E129C: + ldr r0, _021E12B4 ; =UNK04_022106D0 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E12B4: .word UNK04_022106D0 + arm_func_end MOD04_021E110C + + arm_func_start MOD04_021E12B8 +MOD04_021E12B8: ; 0x021E12B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + cmp r1, #0 + mov fp, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _021E1410 ; =UNK04_022106D0 + mov r8, fp + ldr r1, [r4] + ldr r0, [r1, #0x14] + cmp r0, #0 + ble _021E13E4 + add r0, sb, #0x8e + mov r7, fp + mov r5, #1 + str r0, [sp] +_021E1304: + ldr r0, [r1, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #1 + bne _021E136C + bl MOD04_021E0F00 + ldr r1, [r4] + add r2, sp, #4 + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl DWC_LoginIdToUserName + ldr r1, [sp] + add r0, sp, #4 + bl strcmp + cmp r0, #0 + bne _021E13CC + ldr r1, [sb, #4] + mov r0, sl + bl MOD04_021F0944 + ldr r0, [r4] + ldr r1, [sb, #4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_SetGsProfileId + mov fp, r5 + b _021E13CC +_021E136C: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #3 + beq _021E139C + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl DWC_GetFriendDataType + cmp r0, #2 + bne _021E13CC +_021E139C: + ldr r6, [sb, #4] + bl MOD04_021E0F00 + ldr r1, [r4] + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl DWC_GetGsProfileId + cmp r6, r0 + bne _021E13CC + mov r0, sl + mov r1, r6 + bl MOD04_021F0944 + mov fp, r5 +_021E13CC: + ldr r1, [r4] + add r8, r8, #1 + ldr r0, [r1, #0x14] + add r7, r7, #0xc + cmp r8, r0 + blt _021E1304 +_021E13E4: + cmp fp, #0 + beq _021E13FC + ldr r0, [sb, #4] + bl MOD04_021E17BC + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E13FC: + ldr r1, [sb, #4] + mov r0, sl + bl MOD04_021F0864 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1410: .word UNK04_022106D0 + arm_func_end MOD04_021E12B8 + + arm_func_start MOD04_021E1414 +MOD04_021E1414: ; 0x021E1414 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + mov r8, r2 + cmp r1, #0 + bne _021E15FC + ldr r0, [sb, #4] + cmp r0, #0 + beq _021E15FC + mov r0, #0xc + ldr r1, _021E1670 ; =UNK04_022106D0 + mul r6, r8, r0 + ldr r0, [r1] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl DWC_GetFriendDataType + cmp r0, #0 + beq _021E15FC + ldr r7, _021E1670 ; =UNK04_022106D0 + ldr r1, [r7] + ldr r0, [r1] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + strb r0, [r1, #0x1d] + ldr r0, [sb, #4] + mov r5, #0 + cmp r0, #0 + ble _021E14FC + mov r4, r5 +_021E1498: + ldr r0, [r7] + ldr r1, [sb, #0xc] + ldr r0, [r0, #0x18] + ldr r2, [r1, r4] + mov r1, r8 + bl MOD04_021E1900 + cmp r0, #0 + beq _021E14E8 + ldr r0, _021E1670 ; =UNK04_022106D0 + mov r2, #1 + ldr r4, [r0] + ldr r1, _021E1674 ; =0x00000601 + ldrb r3, [r4, #0x1c] + add sp, sp, #4 + add r3, r3, #1 + strb r3, [r4, #0x1c] + ldr r0, [r0] + strb r2, [r0, #0x1e] + str r1, [sb, #8] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E14E8: + ldr r0, [sb, #4] + add r5, r5, #1 + cmp r5, r0 + add r4, r4, #0xac + blt _021E1498 +_021E14FC: + cmp r0, #0 + mov r5, #0 + ble _021E15C4 + mov r7, r5 + add fp, sp, #0 + mvn r4, #0 +_021E1514: + ldr r1, [sb, #0xc] + mov r0, sl + ldr r1, [r1, r7] + mov r2, fp + bl MOD04_021F0664 + bl MOD04_021E1678 + ldr r0, [sp] + cmp r0, r4 + bne _021E1548 + ldr r0, [sb, #0xc] + ldr r0, [r0, r7] + bl MOD04_021E17BC + b _021E15B0 +_021E1548: + ldr r0, _021E1670 ; =UNK04_022106D0 + ldr r1, [sb, #0xc] + ldr r0, [r0] + ldr r1, [r1] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl DWC_SetGsProfileId + ldr r0, _021E1670 ; =UNK04_022106D0 + ldr r0, [r0] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl DWCi_SetBuddyFriendData + mov r0, r8 + bl MOD04_021E1DA4 + ldr r0, _021E1670 ; =UNK04_022106D0 + mov r2, #1 + ldr r4, [r0] + ldr r1, _021E1674 ; =0x00000601 + ldrb r3, [r4, #0x1c] + add sp, sp, #4 + add r3, r3, #1 + strb r3, [r4, #0x1c] + ldr r0, [r0] + strb r2, [r0, #0x1e] + str r1, [sb, #8] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E15B0: + ldr r0, [sb, #4] + add r5, r5, #1 + cmp r5, r0 + add r7, r7, #0xac + blt _021E1514 +_021E15C4: + ldr r0, [sb, #8] + cmp r0, #0x600 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021E1670 ; =UNK04_022106D0 + mov r1, #1 + ldr r3, [r0] + add sp, sp, #4 + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1e] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E15FC: + ldr r0, [sb] + cmp r0, #0 + beq _021E1618 + bl MOD04_021E1678 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1618: + ldr r0, _021E1670 ; =UNK04_022106D0 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #1 + beq _021E1648 + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r8, r0, r1 + bl DWC_GetFriendDataType + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1648: + ldr r0, _021E1670 ; =UNK04_022106D0 + mov r1, #1 + ldr r3, [r0] + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1e] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1670: .word UNK04_022106D0 +_021E1674: .word 0x00000601 + arm_func_end MOD04_021E1414 + + arm_func_start MOD04_021E1678 +MOD04_021E1678: ; 0x021E1678 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E16D4 +_021E1694: ; jump table + b _021E16D4 ; case 0 + b _021E16A8 ; case 1 + b _021E16B4 ; case 2 + b _021E16C0 ; case 3 + b _021E16CC ; case 4 +_021E16A8: + mov r0, #9 + mvn r2, #0 + b _021E16D4 +_021E16B4: + mov r0, #9 + mvn r2, #1 + b _021E16D4 +_021E16C0: + mov r0, #6 + mvn r2, #9 + b _021E16D4 +_021E16CC: + mov r0, #6 + mvn r2, #0x13 +_021E16D4: + ldr r1, _021E16E8 ; =0xFFFEEAA8 + add r1, r2, r1 + bl MOD04_021E2114 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E16E8: .word 0xFFFEEAA8 + arm_func_end MOD04_021E1678 + + arm_func_start MOD04_021E16EC +MOD04_021E16EC: ; 0x021E16EC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021E17B8 ; =UNK04_022106D0 + mov r3, #0 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + str r3, [sp] + cmp r2, #0 + beq _021E1720 + bl MOD04_021E05FC + cmp r0, #0 + bne _021E172C +_021E1720: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E172C: + bl MOD04_021E0F00 + mov r1, r5 + bl DWC_GetGsProfileId + mov r5, r0 + cmp r5, #0 + ble _021E176C + ldr r0, _021E17B8 ; =UNK04_022106D0 + add r2, sp, #0 + ldr r0, [r0] + mov r1, r5 + ldr r0, [r0, #4] + bl MOD04_021F0664 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} +_021E176C: + cmp r5, #0 + ble _021E1784 + ldr r1, [sp] + mvn r0, #0 + cmp r1, r0 + bne _021E1790 +_021E1784: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E1790: + ldr r0, _021E17B8 ; =UNK04_022106D0 + mov r2, r4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD04_021F06E4 + cmp r0, #0 + movne r0, #0 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E17B8: .word UNK04_022106D0 + arm_func_end MOD04_021E16EC + + arm_func_start MOD04_021E17BC +MOD04_021E17BC: ; 0x021E17BC + stmdb sp!, {r4, lr} + ldr r2, _021E17E8 ; =UNK04_022106D0 + mov r1, r0 + ldr r0, [r2] + ldr r2, _021E17EC ; =UNK04_0220D350 + ldr r0, [r0, #4] + bl MOD04_021F09B0 + mov r4, r0 + bl MOD04_021E1678 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E17E8: .word UNK04_022106D0 +_021E17EC: .word UNK04_0220D350 + arm_func_end MOD04_021E17BC + + arm_func_start MOD04_021E17F0 +MOD04_021E17F0: ; 0x021E17F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r1 + mov fp, r0 + mvn r0, #0 + str r2, [sp] + cmp sl, #0 + str r0, [sp, #4] + mov r8, #0 + ble _021E18F0 + mov r6, fp + mov r5, fp + mov r0, #1 + str r0, [sp, #8] +_021E1828: + mov r0, r8 + bl MOD04_021E1F84 + movs sb, r0 + beq _021E18DC + ldr r0, [sp] + add r7, r8, #1 + cmp sb, r0 + streq r8, [sp, #4] + cmp r7, sl + bge _021E18DC + mov r0, #0xc + mla r4, r7, r0, fp +_021E1858: + mov r0, r7 + bl MOD04_021E1F84 + cmp sb, r0 + bne _021E18CC + mov r0, r6 + bl DWC_GetFriendDataType + cmp r0, #2 + bne _021E1894 + mov r0, r4 + bl DWC_GetFriendDataType + cmp r0, #3 + bne _021E1894 + mov r0, r5 + mov r1, sb + bl DWC_SetGsProfileId +_021E1894: + mov r0, r4 + bl DWC_IsBuddyFriendData + cmp r0, #0 + beq _021E18AC + mov r0, r5 + bl DWCi_SetBuddyFriendData +_021E18AC: + mov r0, fp + mov r1, r7 + mov r2, r8 + bl MOD04_021E19B8 + ldr r0, _021E18FC ; =UNK04_022106D0 + ldr r1, [r0] + ldr r0, [sp, #8] + strb r0, [r1, #0x1d] +_021E18CC: + add r7, r7, #1 + cmp r7, sl + add r4, r4, #0xc + blt _021E1858 +_021E18DC: + add r8, r8, #1 + cmp r8, sl + add r6, r6, #0xc + add r5, r5, #0xc + blt _021E1828 +_021E18F0: + ldr r0, [sp, #4] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E18FC: .word UNK04_022106D0 + arm_func_end MOD04_021E17F0 + + arm_func_start MOD04_021E1900 +MOD04_021E1900: ; 0x021E1900 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + cmp r6, #0 + mov r4, #0 + ble _021E19A8 +_021E1920: + mov r0, r4 + bl MOD04_021E1F84 + cmp r0, #0 + beq _021E199C + cmp r0, r5 + bne _021E199C + mov r0, #0xc + mla r0, r6, r0, r7 + bl DWC_IsBuddyFriendData + cmp r0, #0 + beq _021E1974 + mov r0, #0xc + mla r0, r4, r0, r7 + bl DWC_IsBuddyFriendData + cmp r0, #0 + bne _021E1974 + mov r0, r7 + mov r1, r4 + mov r2, r6 + bl MOD04_021E19B8 + b _021E1984 +_021E1974: + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl MOD04_021E19B8 +_021E1984: + ldr r1, _021E19B4 ; =UNK04_022106D0 + mov r0, #1 + ldr r1, [r1] + add sp, sp, #4 + strb r0, [r1, #0x1d] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E199C: + add r4, r4, #1 + cmp r4, r6 + blt _021E1920 +_021E19A8: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E19B4: .word UNK04_022106D0 + arm_func_end MOD04_021E1900 + + arm_func_start MOD04_021E19B8 +MOD04_021E19B8: ; 0x021E19B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r3, _021E1A1C ; =UNK04_022106D0 + mov r5, r1 + ldr r1, [r3] + mov r4, r2 + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r2, #0xc + mla r0, r5, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _021E1A1C ; =UNK04_022106D0 + ldr r0, [r0] + ldr r3, [r0, #0x3c] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r0, #0x40] + mov r0, r5 + mov r1, r4 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1A1C: .word UNK04_022106D0 + arm_func_end MOD04_021E19B8 + + arm_func_start MOD04_021E1A20 +MOD04_021E1A20: ; 0x021E1A20 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021E1A5C ; =UNK04_022106D0 + mov r0, #0 + ldr r3, [r1] + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + blx r3 + ldr r0, _021E1A5C ; =UNK04_022106D0 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1A5C: .word UNK04_022106D0 + arm_func_end MOD04_021E1A20 + + arm_func_start MOD04_021E1A60 +MOD04_021E1A60: ; 0x021E1A60 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24c + ldr r2, _021E1CC4 ; =UNK04_022106D0 + mov r6, r0 + ldr r2, [r2] + mov r5, r1 + ldrb r0, [r2, #0x1e] + cmp r0, #0 + bne _021E1B8C + ldr r0, [r2, #4] + add r1, sp, #0x18 + bl MOD04_021F0828 + bl MOD04_021E1678 + ldr r0, [sp, #0x18] + mov fp, #0 + str fp, [sp, #0x1c] + cmp r0, #0 + ble _021E1B7C + ldr r8, _021E1CC4 ; =UNK04_022106D0 + mov sb, #1 + mov r7, #0xc +_021E1AB4: + ldr r0, [r8] + ldr r1, [sp, #0x1c] + ldr r0, [r0, #4] + add r2, sp, #0x38 + bl MOD04_021F06E4 + bl MOD04_021E1678 + mov r4, fp + cmp r5, #0 + ble _021E1B30 +_021E1AD8: + mov r0, r4 + bl MOD04_021E1F84 + ldr r1, [sp, #0x38] + cmp r1, r0 + bne _021E1B24 + mul sl, r4, r7 + add r0, r6, sl + bl DWC_IsBuddyFriendData + cmp r0, #0 + bne _021E1B30 + add sl, r6, sl + ldr r1, [sp, #0x38] + mov r0, sl + bl DWC_SetGsProfileId + mov r0, sl + bl DWCi_SetBuddyFriendData + ldr r0, [r8] + strb sb, [r0, #0x1d] + b _021E1B30 +_021E1B24: + add r4, r4, #1 + cmp r4, r5 + blt _021E1AD8 +_021E1B30: + cmp r4, r5 + bne _021E1B64 + ldr r0, [r8] + ldr r1, [sp, #0x38] + ldr r0, [r0, #4] + bl MOD04_021F0580 + bl MOD04_021E1678 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + sub r1, r1, #1 + sub r0, r0, #1 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] +_021E1B64: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r1, r1, #1 + str r1, [sp, #0x1c] + cmp r1, r0 + blt _021E1AB4 +_021E1B7C: + ldr r0, _021E1CC4 ; =UNK04_022106D0 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1e] +_021E1B8C: + ldr sl, _021E1CC4 ; =UNK04_022106D0 + ldr r0, [sl] + ldrb r0, [r0, #0x1c] + cmp r0, r5 + addge sp, sp, #0x24c + ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #0x1c + mov r8, #0xc + mvn sb, #0 +_021E1BB0: + bl MOD04_021E1F84 + movs r7, r0 + beq _021E1C08 + ldr r1, [sl] + mov r0, r6 + ldrb r1, [r1, #0x1c] + mov r2, r7 + bl MOD04_021E1900 + cmp r0, #0 + bne _021E1C9C + ldr r0, [sl] + mov r1, r7 + ldr r0, [r0, #4] + mov r2, r4 + bl MOD04_021F0664 + bl MOD04_021E1678 + ldr r0, [sp, #0x1c] + cmp r0, sb + bne _021E1C9C + mov r0, r7 + bl MOD04_021E17BC + b _021E1C9C +_021E1C08: + bl MOD04_021E0F00 + ldr r1, [sl] + ldrb r2, [r1, #0x1c] + mla r1, r2, r8, r6 + bl DWC_GetGsProfileId + cmp r0, sb + bne _021E1C9C + bl MOD04_021E0F00 + ldr r2, _021E1CC4 ; =UNK04_022106D0 + mov r1, #0xc + ldr r3, [r2] + add r2, sp, #0x20 + ldrb r3, [r3, #0x1c] + mla r1, r3, r1, r6 + bl DWC_LoginIdToUserName + ldr r0, _021E1CC4 ; =UNK04_022106D0 + mov r1, #0 + ldr r4, [r0] + add r2, sp, #0x20 + str r1, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + ldr r0, _021E1CC8 ; =MOD04_021E1414 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldrb r0, [r4, #0x1c] + mov r2, r1 + mov r3, r1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl MOD04_021F0C84 + ldr r0, _021E1CC4 ; =UNK04_022106D0 + mov r1, #2 + ldr r0, [r0] + add sp, sp, #0x24c + strb r1, [r0, #0x1e] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1C9C: + ldr r1, [sl] + ldrb r0, [r1, #0x1c] + add r0, r0, #1 + strb r0, [r1, #0x1c] + ldr r0, [sl] + ldrb r0, [r0, #0x1c] + cmp r0, r5 + blt _021E1BB0 + add sp, sp, #0x24c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1CC4: .word UNK04_022106D0 +_021E1CC8: .word MOD04_021E1414 + arm_func_end MOD04_021E1A60 + + arm_func_start MOD04_021E1CCC +MOD04_021E1CCC: ; 0x021E1CCC + ldr r0, _021E1CF8 ; =UNK04_022106D0 + ldr r1, [r0] + cmp r1, #0 + bxeq lr + mov r2, #0 + str r2, [r1] + ldr r1, [r0] + strb r2, [r1, #0x1e] + ldr r0, [r0] + strb r2, [r0, #0x1f] + bx lr + .align 2, 0 +_021E1CF8: .word UNK04_022106D0 + arm_func_end MOD04_021E1CCC + + arm_func_start MOD04_021E1CFC +MOD04_021E1CFC: ; 0x021E1CFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021E1D88 ; =UNK04_022106D0 + mov r5, #0 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0xc] + ldr r2, [r4, #0x10] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E1D8C ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, r5 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x12c + blo _021E1D7C + ldr r1, [r4, #8] + ldr r0, _021E1D88 ; =UNK04_022106D0 + add r1, r1, #1 + str r1, [r4, #8] + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD04_021F0F18 + mov r5, r0 + bl OS_GetTick + ldr r2, _021E1D88 ; =UNK04_022106D0 + ldr r2, [r2] + str r0, [r2, #0xc] + str r1, [r2, #0x10] +_021E1D7C: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1D88: .word UNK04_022106D0 +_021E1D8C: .word 0x000082EA + arm_func_end MOD04_021E1CFC + + arm_func_start MOD04_021E1D90 +MOD04_021E1D90: ; 0x021E1D90 + ldr r0, _021E1DA0 ; =UNK04_022106D0 + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021E1DA0: .word UNK04_022106D0 + arm_func_end MOD04_021E1D90 + + arm_func_start MOD04_021E1DA4 +MOD04_021E1DA4: ; 0x021E1DA4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x210 + ldr r1, _021E1E2C ; =UNK04_022106D0 + mov r4, r0 + ldr r3, [r1] + ldr r2, [r3, #0x44] + cmp r2, #0 + beq _021E1DD8 + ldr r1, [r3] + cmp r1, #1 + beq _021E1DD8 + ldr r1, [r3, #0x48] + blx r2 +_021E1DD8: + ldr r0, _021E1E2C ; =UNK04_022106D0 + ldr r1, [r0] + ldr r0, [r1, #0x34] + cmp r0, #0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, pc} + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r4, r0, r1 + add r1, sp, #0x108 + bl MOD04_021E26B8 + ldr r2, _021E1E2C ; =UNK04_022106D0 + mov r1, r0 + ldr r0, [r2] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + blx ip + add sp, sp, #0x210 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E1E2C: .word UNK04_022106D0 + arm_func_end MOD04_021E1DA4 + + arm_func_start MOD04_021E1E30 +MOD04_021E1E30: ; 0x021E1E30 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _021E1ED0 ; =UNK04_022106D0 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + beq _021E1E5C + bl MOD04_021E05FC + cmp r0, #0 + bne _021E1E64 +_021E1E5C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E1E64: + mvn r0, #0 + cmp r6, r0 + ldreq r0, _021E1ED0 ; =UNK04_022106D0 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + ldreq r6, [r0, #0x214] + cmp r5, #0 + ldreq r0, _021E1ED0 ; =UNK04_022106D0 + mov r1, r6 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + addeq r5, r0, #0x218 + cmp r4, #0 + ldreq r0, _021E1ED0 ; =UNK04_022106D0 + mov r2, r5 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + addeq r4, r0, #0x318 + ldr r0, _021E1ED0 ; =UNK04_022106D0 + mov r3, r4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD04_021F034C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E1ED0: .word UNK04_022106D0 + arm_func_end MOD04_021E1E30 + + arm_func_start MOD04_021E1ED4 +MOD04_021E1ED4: ; 0x021E1ED4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1F14 ; =UNK04_022106D0 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + str r0, [r1, #8] + bl OS_GetTick + ldr r2, _021E1F14 ; =UNK04_022106D0 + ldr r2, [r2] + str r0, [r2, #0xc] + str r1, [r2, #0x10] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1F14: .word UNK04_022106D0 + arm_func_end MOD04_021E1ED4 + + arm_func_start MOD04_021E1F18 +MOD04_021E1F18: ; 0x021E1F18 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _021E1F80 ; =UNK04_022106D0 + mov r6, r0 + ldr r0, [r4] + cmp r0, #0 + beq _021E1F38 + cmp r6, #0 + bne _021E1F40 +_021E1F38: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E1F40: + ldr r0, [r0, #0x14] + mov r5, #0 + cmp r0, #0 + ble _021E1F78 +_021E1F50: + mov r0, r5 + bl MOD04_021E1F84 + cmp r6, r0 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4] + add r5, r5, #1 + ldr r0, [r0, #0x14] + cmp r5, r0 + blt _021E1F50 +_021E1F78: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E1F80: .word UNK04_022106D0 + arm_func_end MOD04_021E1F18 + + arm_func_start MOD04_021E1F84 +MOD04_021E1F84: ; 0x021E1F84 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021E1FE0 ; =UNK04_022106D0 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r0, #0x18] + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl MOD04_021E0F00 + mov r1, #0xc + mla r1, r5, r1, r4 + bl DWC_GetGsProfileId + cmp r0, #0 + beq _021E1FD4 + mvn r1, #0 + cmp r0, r1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} +_021E1FD4: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1FE0: .word UNK04_022106D0 + arm_func_end MOD04_021E1F84 + + arm_func_start MOD04_021E1FE4 +MOD04_021E1FE4: ; 0x021E1FE4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x210 + ldr r2, _021E2064 ; =UNK04_022106D0 + mov r6, r0 + ldr r0, [r2] + mov r5, r1 + ldr r0, [r0, #0x34] + cmp r0, #0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r5] + bl MOD04_021E1F18 + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5, #8] + add r2, sp, #0 + mov r0, r6 + bl MOD04_021F06E4 + ldr r0, _021E2064 ; =UNK04_022106D0 + ldr r1, [sp, #4] + ldr r0, [r0] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + and r1, r1, #0xff + blx ip + add sp, sp, #0x210 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2064: .word UNK04_022106D0 + arm_func_end MOD04_021E1FE4 + + arm_func_start MOD04_021E2068 +MOD04_021E2068: ; 0x021E2068 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + ldr r0, [r4, #8] + ldr r1, _021E20C0 ; =UNK04_0220D354 + bl strcmp + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E20C4 ; =MOD04_021E110C + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E20C0: .word UNK04_0220D354 +_021E20C4: .word MOD04_021E110C + arm_func_end MOD04_021E2068 + + arm_func_start MOD04_021E20C8 +MOD04_021E20C8: ; 0x021E20C8 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _021E210C ; =UNK04_022106D0 + ldr r2, [r2] + ldr r2, [r2, #0x18] + cmp r2, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} + ldr r3, _021E2110 ; =MOD04_021E12B8 + mov r2, #0 + str r3, [sp] + str r2, [sp, #4] + ldr r1, [r1] + mov r3, r2 + bl MOD04_021F0B9C + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021E210C: .word UNK04_022106D0 +_021E2110: .word MOD04_021E12B8 + arm_func_end MOD04_021E20C8 + + arm_func_start MOD04_021E2114 +MOD04_021E2114: ; 0x021E2114 + stmdb sp!, {r4, lr} + ldr r2, _021E2170 ; =UNK04_022106D0 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021DD6B0 + ldr r0, _021E2170 ; =UNK04_022106D0 + ldr r3, [r0] + ldr r0, [r3] + cmp r0, #0 + beq _021E2168 + cmp r0, #2 + beq _021E2168 + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + mov r0, r4 + blx r3 +_021E2168: + bl MOD04_021E1CCC + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2170: .word UNK04_022106D0 + arm_func_end MOD04_021E2114 + + arm_func_start MOD04_021E2174 +MOD04_021E2174: ; 0x021E2174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021E2224 ; =UNK04_022106D0 + ldr r5, [sp, #0x10] + ldr r1, [r0] + ldr r4, [sp, #0x14] + str r2, [r1, #0x2c] + ldr r1, [r0] + ldr lr, [sp, #0x18] + str r3, [r1, #0x30] + ldr r1, [r0] + ldr ip, [sp, #0x1c] + str r5, [r1, #0x34] + ldr r1, [r0] + mov r3, #0 + str r4, [r1, #0x38] + ldr r1, [r0] + mov r2, #1 + str lr, [r1, #0x3c] + ldr r1, [r0] + str ip, [r1, #0x40] + ldr r1, [r0] + strb r3, [r1, #0x1d] + ldr r1, [r0] + strb r3, [r1, #0x1e] + ldr r1, [r0] + strb r3, [r1, #0x1f] + ldr r1, [r0] + strb r3, [r1, #0x1c] + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + ldr r0, [r1, #0x18] + cmp r0, #0 + ldreqb r0, [r1, #0x1f] + addeq r0, r0, #1 + streqb r0, [r1, #0x1f] + ldr r0, _021E2224 ; =UNK04_022106D0 + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E2224: .word UNK04_022106D0 + arm_func_end MOD04_021E2174 + + arm_func_start MOD04_021E2228 +MOD04_021E2228: ; 0x021E2228 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E2348 ; =UNK04_022106D0 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x18] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD04_021E10F8 + cmp r0, #0 + bne _021E227C + bl MOD04_021FBE5C + cmp r0, #0 + beq _021E2280 +_021E227C: + bl MOD04_021FBD00 +_021E2280: + ldr r0, _021E2348 ; =UNK04_022106D0 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E231C + ldr r0, [r0] + cmp r0, #0 + beq _021E231C + bl MOD04_021E1CFC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E2348 ; =UNK04_022106D0 + ldr r3, [r0] + ldr r0, [r3, #0x18] + cmp r0, #0 + beq _021E231C + ldrb r2, [r3, #0x1e] + cmp r2, #3 + beq _021E231C + ldr r1, [r3, #8] + cmp r1, #7 + bls _021E231C + cmp r2, #1 + bhi _021E22EC + ldr r1, [r3, #0x14] + bl MOD04_021E1A60 +_021E22EC: + ldr r0, _021E2348 ; =UNK04_022106D0 + ldr r3, [r0] + ldrb r2, [r3, #0x1c] + ldr r1, [r3, #0x14] + cmp r2, r1 + blt _021E231C + mov r1, #3 + strb r1, [r3, #0x1e] + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] +_021E231C: + ldr r0, _021E2348 ; =UNK04_022106D0 + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + cmp r0, #2 + addlo sp, sp, #4 + ldmloia sp!, {pc} + mov r0, #0 + strb r0, [r1, #0x1f] + bl MOD04_021E1A20 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E2348: .word UNK04_022106D0 + arm_func_end MOD04_021E2228 + + arm_func_start MOD04_021E234C +MOD04_021E234C: ; 0x021E234C + stmdb sp!, {r4, lr} + ldr lr, _021E2428 ; =UNK04_022106D0 + mov ip, #0 + str r0, [lr] + str ip, [r0] + ldr r4, [lr] + ldr r0, [sp, #8] + str r1, [r4, #4] + ldr r1, [lr] + str ip, [r1, #8] + ldr r1, [lr] + str ip, [r1, #0xc] + str ip, [r1, #0x10] + str r0, [r1, #0x14] + ldr r0, [lr] + str r3, [r0, #0x18] + ldr r0, [lr] + strb ip, [r0, #0x1c] + ldr r0, [lr] + strb ip, [r0, #0x1d] + ldr r0, [lr] + strb ip, [r0, #0x1e] + ldr r0, [lr] + strb ip, [r0, #0x1f] + ldr r0, [lr] + str ip, [r0, #0x20] + ldr r0, [lr] + str ip, [r0, #0x24] + ldr r0, [lr] + str r2, [r0, #0x28] + ldr r0, [lr] + str ip, [r0, #0x2c] + ldr r0, [lr] + str ip, [r0, #0x30] + ldr r0, [lr] + str ip, [r0, #0x34] + ldr r0, [lr] + str ip, [r0, #0x38] + ldr r0, [lr] + str ip, [r0, #0x3c] + ldr r0, [lr] + str ip, [r0, #0x40] + ldr r0, [lr] + str ip, [r0, #0x44] + ldr r0, [lr] + str ip, [r0, #0x48] + ldr r0, [lr] + str ip, [r0, #0x4c] + ldr r0, [lr] + str ip, [r0, #0x50] + ldr r0, [lr] + str ip, [r0, #0x54] + ldr r0, [lr] + str ip, [r0, #0x58] + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2428: .word UNK04_022106D0 + arm_func_end MOD04_021E234C + + arm_func_start MOD04_021E242C +MOD04_021E242C: ; 0x021E242C + ldr r2, _021E2450 ; =UNK04_022106D0 + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + strne r0, [r3, #0x44] + ldrne r2, [r2] + movne r0, #1 + strne r1, [r2, #0x48] + bx lr + .align 2, 0 +_021E2450: .word UNK04_022106D0 + arm_func_end MOD04_021E242C + + arm_func_start MOD04_021E2454 +MOD04_021E2454: ; 0x021E2454 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x104 + ldr r2, _021E24DC ; =UNK04_022106D0 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _021E2480 + bl MOD04_021E05FC + cmp r0, #0 + bne _021E248C +_021E2480: + add sp, sp, #0x104 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E248C: + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + mov r3, #0xff + bl MOD04_021DD4FC + mvn r3, #0 + cmp r0, r3 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + add r2, sp, #0 + mov r1, #0 + strb r1, [r2, r0] + mov r0, r3 + bl MOD04_021E1E30 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E24DC: .word UNK04_022106D0 + arm_func_end MOD04_021E2454 + + arm_func_start MOD04_021E24E0 +MOD04_021E24E0: ; 0x021E24E0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x100 + mov r6, r3 + add r3, sp, #0 + ldr r4, [sp, #0x110] + bl MOD04_021E259C + movs r5, r0 + mvneq r1, #0 + addeq sp, sp, #0x100 + streq r1, [r4] + ldmeqia sp!, {r4, r5, r6, pc} + add r0, sp, #0 + bl strlen + mov r2, #0 + mov r1, r0 + add r0, sp, #0 + mov r3, r2 + bl MOD04_021DD36C + str r0, [r4] + cmp r6, #0 + beq _021E2544 + ldr r4, [r4] + mvn r0, #0 + cmp r4, r0 + bne _021E2550 +_021E2544: + add sp, sp, #0x100 + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} +_021E2550: + add r0, sp, #0 + bl strlen + mov r1, r0 + add r0, sp, #0 + mov r2, r6 + mov r3, r4 + bl MOD04_021DD36C + mov r0, r5 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E24E0 + + arm_func_start MOD04_021E2578 +MOD04_021E2578: ; 0x021E2578 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r1 + mov r1, #0 + str r2, [sp] + mov r2, r1 + bl MOD04_021E24E0 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E2578 + + arm_func_start MOD04_021E259C +MOD04_021E259C: ; 0x021E259C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x218 + mov r6, r1 + add r1, sp, #4 + mov r4, r2 + mov r5, r3 + bl MOD04_021E16EC + cmp r0, #0 + beq _021E268C + ldr r0, [sp, #8] + cmp r0, #6 + bne _021E2650 + cmp r6, #0 + beq _021E260C + ldr r0, _021E26B0 ; =UNK04_0220D38C + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl MOD04_021DE9F4 + cmp r0, #0 + movle r0, #0 + strleb r0, [r6] + ble _021E260C + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r6] +_021E260C: + cmp r4, #0 + beq _021E2668 + ldr r0, _021E26B4 ; =UNK04_0220D390 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl MOD04_021DE9F4 + cmp r0, #0 + movle r0, #0 + strleb r0, [r4] + ble _021E2668 + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r4] + b _021E2668 +_021E2650: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] +_021E2668: + cmp r5, #0 + beq _021E267C + add r1, sp, #0x10c + mov r0, r5 + bl strcpy +_021E267C: + ldr r0, [sp, #8] + add sp, sp, #0x218 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} +_021E268C: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] + mov r0, #0 + add sp, sp, #0x218 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E26B0: .word UNK04_0220D38C +_021E26B4: .word UNK04_0220D390 + arm_func_end MOD04_021E259C + + arm_func_start MOD04_021E26B8 +MOD04_021E26B8: ; 0x021E26B8 + ldr ip, _021E26CC ; =MOD04_021E259C + mov r3, r1 + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_021E26CC: .word MOD04_021E259C + arm_func_end MOD04_021E26B8 + + .section .data + + .global UNK04_0220D350 +UNK04_0220D350: ; 0x0220D350 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK04_0220D354 +UNK04_0220D354: ; 0x0220D354 + .asciz "I have authorized your request to add me to your list" + + .balign 4, 0 + .global UNK04_0220D38C +UNK04_0220D38C: ; 0x0220D38C + .asciz "SCM" + + .balign 4, 0 + .global UNK04_0220D390 +UNK04_0220D390: ; 0x0220D390 + .asciz "SCN" + + .balign 4, 0 + .section .bss + + .global UNK04_022106D0 +UNK04_022106D0: ; 0x022106D0 + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021E26D0.s b/arm9/modules/04/asm/mod04_021E26D0.s new file mode 100644 index 00000000..8471cb82 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021E26D0.s @@ -0,0 +1,9238 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021E26D0 +MOD04_021E26D0: ; 0x021E26D0 + ldr r1, _021E26E0 ; =UNK04_022106D8 + ldr r1, [r1] + str r0, [r1, #0x1a0] + bx lr + .align 2, 0 +_021E26E0: .word UNK04_022106D8 + arm_func_end MOD04_021E26D0 + + arm_func_start MOD04_021E26E4 +MOD04_021E26E4: ; 0x021E26E4 + ldr r0, _021E26F0 ; =UNK04_022106D8 + ldr r0, [r0] + bx lr + .align 2, 0 +_021E26F0: .word UNK04_022106D8 + arm_func_end MOD04_021E26E4 + + arm_func_start MOD04_021E26F4 +MOD04_021E26F4: ; 0x021E26F4 + ldr r1, _021E2700 ; =UNK04_022106D8 + str r0, [r1] + bx lr + .align 2, 0 +_021E2700: .word UNK04_022106D8 + arm_func_end MOD04_021E26F4 + + arm_func_start MOD04_021E2704 +MOD04_021E2704: ; 0x021E2704 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E273C + bl MOD04_021E26E4 + ldrb r1, [r0, #0x17d] + add r1, r1, #1 + strb r1, [r0, #0x17d] +_021E273C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E275C + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17d] + cmp r0, #5 + blo _021E2774 +_021E275C: + ldr r1, _021E2780 ; =0xFFFEAE6C + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021E2774: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E2780: .word 0xFFFEAE6C + arm_func_end MOD04_021E2704 + + arm_func_start MOD04_021E2784 +MOD04_021E2784: ; 0x021E2784 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r5, r0 + mov r6, r2 + mov r4, r3 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E27BC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_021E27BC: + cmp r4, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r5, #0 + bne _021E29B8 + mov r0, #0 + str r0, [r4, #8] + bl MOD04_021E26E4 + ldrb r1, [r0, #0x14] + add r1, r1, #1 + strb r1, [r0, #0x14] + bl MOD04_021E26E4 + ldrb r1, [r4] + ldrb r5, [r0, #0x14] + cmp r1, #0 + beq _021E2950 + bl MOD04_021E26E4 + ldr r1, [r6, #4] + add r0, r0, r5, lsl #2 + str r1, [r0, #0x210] + ldrh r4, [r6, #2] + bl MOD04_021E26E4 + mov r2, r4, asr #8 + mov r1, r4, lsl #8 + add r0, r0, r5, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _021E2878 + mov r0, #0xc + bl MOD04_021E26D0 + b _021E2880 +_021E2878: + mov r0, #7 + bl MOD04_021E26D0 +_021E2880: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl MOD04_021E26E4 + ldr r3, [r0, #0x200] + ldr r2, _021E2B58 ; =UNK04_0220D394 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SNPrintf + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + add r1, r6, r5, lsl #2 + mov r2, r0 + ldr r0, [r1, #0x210] + add r1, r2, r5, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + mov r2, #0 + bl MOD04_021FFEB0 + mov r6, r0 + bl MOD04_021E26E4 + mvn r1, #0 + str r1, [sp] + ldr r3, _021E2B5C ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl MOD04_021FD52C + cmp r0, #1 + bne _021E2928 + bl MOD04_021E36B0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E2928: + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2950: + cmp r6, #0 + beq _021E2994 + sub r4, r5, #1 + bl MOD04_021E26E4 + ldr r1, [r6, #4] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x210] + ldrh r5, [r6, #2] + bl MOD04_021E26E4 + mov r2, r5, asr #8 + mov r1, r5, lsl #8 + add r0, r0, r4, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] +_021E2994: + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x18c] + mov r0, #7 + str r1, [r4, #0x190] + bl MOD04_021E26D0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E29B8: + ldr r0, [r4, #8] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl MOD04_021E3754 + mov r6, r0 + cmp r6, #2 + beq _021E29E8 + cmp r6, #1 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_021E29E8: + ldrb r0, [r4] + cmp r0, #0 + bne _021E2A74 + cmp r6, #1 + beq _021E2A10 + cmp r6, #2 + bne _021E2A50 + ldrb r0, [r4, #1] + cmp r0, #1 + blo _021E2A50 +_021E2A10: + mov r0, #0 + str r0, [r4, #8] + bl MOD04_021E2704 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E5908 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2A50: + ldrb r1, [r4, #1] + mov r0, r4 + add r1, r1, #1 + strb r1, [r4, #1] + bl MOD04_021E7A44 + bl MOD04_021E37A4 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2A74: + bl MOD04_021E26E4 + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x184] + str r1, [r5, #0x188] + cmp r6, #1 + beq _021E2AB0 + cmp r6, #2 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17c] + cmp r0, #1 + addlo sp, sp, #0x20 + ldmloia sp!, {r4, r5, r6, pc} +_021E2AB0: + mov r0, #0 + str r0, [r4, #8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E2AD8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E2AF0 +_021E2AD8: + mov r0, #1 + bl MOD04_021E2704 + cmp r0, #0 + bne _021E2B04 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E2AF0: + mov r0, #0 + bl MOD04_021E2704 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} +_021E2B04: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + cmp r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2B58: .word UNK04_0220D394 +_021E2B5C: .word 0x00001388 + arm_func_end MOD04_021E2784 + + arm_func_start MOD04_021E2B60 +MOD04_021E2B60: ; 0x021E2B60 + bx lr + arm_func_end MOD04_021E2B60 + + arm_func_start MOD04_021E2B64 +MOD04_021E2B64: ; 0x021E2B64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x9c + mov sl, r0 + mov sb, r1 + mov r8, #0 + bl MOD04_021DF88C + cmp r0, #5 + beq _021E2BB8 + bl MOD04_021DF88C + cmp r0, #6 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E2BB8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E2BB8: + cmp sb, #0x14 + addlo sp, sp, #0x9c + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #0x1c + add fp, sp, #8 + add r5, sl, #0x14 + mov r7, #0x14 + mov r6, #4 +_021E2BD8: + mov r0, sl + mov r1, fp + mov r2, r7 + bl MI_CpuCopy8 + ldr r1, _021E2C74 ; =UNK04_0220D398 + mov r0, fp + mov r2, r6 + bl strncmp + cmp r0, #0 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0xc] + cmp r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sp, #0x11] + mov r0, r5 + mov r1, r4 + bl MI_CpuCopy8 + str r4, [sp] + ldrb r0, [sp, #0x11] + mov r0, r0, asr #2 + str r0, [sp, #4] + ldrb r0, [sp, #0x10] + ldrh r3, [sp, #0x12] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + bl MOD04_021E6730 + cmp r0, #0 + addeq sp, sp, #0x9c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sp, #0x11] + add r0, r0, #0x14 + add r8, r8, r0 + add r0, r8, #0x14 + cmp r0, sb + bls _021E2BD8 + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E2C74: .word UNK04_0220D398 + arm_func_end MOD04_021E2B64 + + arm_func_start MOD04_021E2C78 +MOD04_021E2C78: ; 0x021E2C78 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E2C9C + mov r0, #6 + bl MOD04_021E26D0 + b _021E2CBC +_021E2C9C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E2CBC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} +_021E2CBC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x180] + cmp r4, r0 + bne _021E2CE0 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x17c] + add r1, r1, #1 + strb r1, [r0, #0x17c] + b _021E2CF4 +_021E2CE0: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl MOD04_021E26E4 + str r4, [r0, #0x180] +_021E2CF4: + bl MOD04_021E26E4 + mov r2, #0 + str r2, [r0, #0x184] + str r2, [r0, #0x188] + mov r1, r4 + mov r0, #1 + bl MOD04_021E7B04 + bl MOD04_021E37A4 + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl MOD04_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E2C78 + + arm_func_start MOD04_021E2D2C +MOD04_021E2D2C: ; 0x021E2D2C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl MOD04_021E26E4 + str r5, [r0, #0x1c] + bl MOD04_021E26E4 + strh r4, [r0, #0x1a] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E2D2C + + arm_func_start MOD04_021E2D54 +MOD04_021E2D54: ; 0x021E2D54 + ldr ip, _021E2D5C ; =MOD04_021E3800 + bx ip + .align 2, 0 +_021E2D5C: .word MOD04_021E3800 + arm_func_end MOD04_021E2D54 + + arm_func_start MOD04_021E2D60 +MOD04_021E2D60: ; 0x021E2D60 + mov r0, #0 + bx lr + arm_func_end MOD04_021E2D60 + + arm_func_start MOD04_021E2D68 +MOD04_021E2D68: ; 0x021E2D68 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + cmp r0, #0 + beq _021E2D88 + cmp r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021E2D88: + mov r0, r6 + mov r1, #8 + bl MOD04_02202254 + mov r0, r6 + mov r1, #0xa + bl MOD04_02202254 + mov r0, r6 + mov r1, #0x32 + bl MOD04_02202254 + mov r0, r6 + mov r1, #0x33 + bl MOD04_02202254 + mov r0, r6 + mov r1, #0x34 + bl MOD04_02202254 + mov r0, r6 + mov r1, #0x35 + bl MOD04_02202254 + mov r0, r6 + mov r1, #0x36 + bl MOD04_02202254 + ldr r4, _021E2E0C ; =UNK04_02210704 + mov r5, #0 +_021E2DE4: + ldrb r1, [r4] + cmp r1, #0 + beq _021E2DF8 + mov r0, r6 + bl MOD04_02202254 +_021E2DF8: + add r5, r5, #1 + cmp r5, #0x9a + add r4, r4, #0xc + blt _021E2DE4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2E0C: .word UNK04_02210704 + arm_func_end MOD04_021E2D68 + + arm_func_start MOD04_021E2E10 +MOD04_021E2E10: ; 0x021E2E10 + bx lr + arm_func_end MOD04_021E2E10 + + arm_func_start MOD04_021E2E14 +MOD04_021E2E14: ; 0x021E2E14 + bx lr + arm_func_end MOD04_021E2E14 + + arm_func_start MOD04_021E2E18 +MOD04_021E2E18: ; 0x021E2E18 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0x32 + bgt _021E2E54 + cmp r0, #0x32 + bge _021E2E9C + cmp r0, #0xa + bgt _021E2EF8 + cmp r0, #8 + blt _021E2EF8 + cmp r0, #8 + beq _021E2E74 + cmp r0, #0xa + beq _021E2E88 + b _021E2EF8 +_021E2E54: + sub r1, r0, #0x33 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _021E2EF8 +_021E2E64: ; jump table + b _021E2EB0 ; case 0 + b _021E2EC4 ; case 1 + b _021E2ED8 ; case 2 + b _021E2EE8 ; case 3 +_021E2E74: + bl MOD04_021E26E4 + ldrb r1, [r0, #0x14] + mov r0, r4 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2E88: + bl MOD04_021E26E4 + ldrb r1, [r0, #0x16] + mov r0, r4 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2E9C: + bl MOD04_021E26E4 + ldr r1, [r0, #0x200] + mov r0, r4 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2EB0: + bl MOD04_021E26E4 + ldrb r1, [r0, #0x15] + mov r0, r4 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2EC4: + bl MOD04_021E26E4 + ldr r1, [r0, #0x20] + mov r0, r4 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2ED8: + mov r0, r4 + mov r1, #3 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2EE8: + mov r0, r4 + mov r1, #1 + bl MOD04_02202220 + ldmia sp!, {r4, pc} +_021E2EF8: + subs r1, r0, #0x64 + ldmmiia sp!, {r4, pc} + cmp r1, #0x9a + ldmgeia sp!, {r4, pc} + mov r0, #0xc + mul r2, r1, r0 + ldr r0, _021E2F5C ; =UNK04_02210704 + ldrb r0, [r0, r2] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _021E2F60 ; =UNK04_02210705 + ldrb r0, [r0, r2] + cmp r0, #0 + beq _021E2F44 + ldr r1, _021E2F64 ; =UNK04_0221070C + mov r0, r4 + ldr r1, [r1, r2] + bl MOD04_022021C0 + ldmia sp!, {r4, pc} +_021E2F44: + ldr r1, _021E2F64 ; =UNK04_0221070C + mov r0, r4 + ldr r1, [r1, r2] + ldr r1, [r1] + bl MOD04_02202220 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2F5C: .word UNK04_02210704 +_021E2F60: .word UNK04_02210705 +_021E2F64: .word UNK04_0221070C + arm_func_end MOD04_021E2E18 + + arm_func_start MOD04_021E2F68 +MOD04_021E2F68: ; 0x021E2F68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov r8, #0 + mov r7, r8 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #1 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, r8 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #0 + ble _021E2FF8 + ldr r4, _021E30D8 ; =UNK04_0220BAC4 + ldr r6, _021E30DC ; =UNK04_0220D3A0 + mvn r5, #0 +_021E2FB4: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, sb + bl MOD04_02203BF4 + mov r1, r6 + mov r2, r5 + bl MOD04_0220394C + cmp r0, r8 + movgt r8, r0 + ldr r0, [r4, sb, lsl #2] + add sb, sb, #1 + add r7, r7, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp sb, r0 + blt _021E2FB4 +_021E2FF8: + mov r0, #0x64 + bl MOD04_021DE8C8 + mov sb, r0 + mov r6, #0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #0 + ble _021E3090 + add r5, sp, #0 + mov fp, r6 + mov r4, #0x64 +_021E3028: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + sub r0, r0, #1 + cmp r6, r0 + beq _021E3090 + cmp r6, #0 + subgt r0, r6, #1 + ldrgt sl, [r5, r0, lsl #2] + ldr r0, _021E30D8 ; =UNK04_0220BAC4 + movle sl, fp + ldr r2, [r0, r6, lsl #2] + mov r1, r7 + mul r0, r2, r4 + bl _s32_div_f + add r0, r0, sl + str r0, [r5, r6, lsl #2] + ldr r0, [r5, r6, lsl #2] + cmp sb, r0 + blo _021E3090 + add r6, r6, #1 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r6, r0 + blt _021E3028 +_021E3090: + mvn r0, #0x80000000 + cmp r8, r0 + addlt r8, r8, #1 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl MOD04_02203BF4 + ldr r1, _021E30DC ; =UNK04_0220D3A0 + mov r2, r8 + bl MOD04_02203A48 + bl MOD04_021E26E4 + mov r1, #0 + ldr r0, [r0, #0xe4] + ldr r2, _021E30DC ; =UNK04_0220D3A0 + mov r3, r1 + bl MOD04_02203BD4 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E30D8: .word UNK04_0220BAC4 +_021E30DC: .word UNK04_0220D3A0 + arm_func_end MOD04_021E2F68 + + arm_func_start MOD04_021E30E0 +MOD04_021E30E0: ; 0x021E30E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r1, #0 + str r1, [sp, #4] + str r0, [sp] + mov r8, r1 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #0 + ble _021E3268 + mov r0, #0x80 + mov r4, #1 + mov r5, r8 + str r0, [sp, #8] + mov fp, #0x100 +_021E3120: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r8 + bl MOD04_02203BF4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E31BC + ldr r1, _021E32D4 ; =UNK04_0220D3AC + mov r0, r6 + mov r2, r5 + bl MOD04_0220394C + mov sb, r0 + mov sl, r5 + mov r7, r4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E31B4 +_021E3170: + bl MOD04_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + cmp sb, r0 + bne _021E31A0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl MOD04_02203C50 + mov sl, r4 + sub r8, r8, #1 + b _021E31B4 +_021E31A0: + add r7, r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E3170 +_021E31B4: + cmp sl, #0 + bne _021E3250 +_021E31BC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x474] + cmp r0, #0 + beq _021E3238 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + ldr r1, [r0, #0x478] + ldr r2, [r7, #0x474] + mov r0, r8 + blx r2 + mov r7, r0 + cmp r7, #0 + ble _021E321C + ldr r0, _021E32D8 ; =0x007FFFFF + cmp r7, r0 + movgt r7, r0 + mov r0, fp + bl MOD04_021DE8C8 + orr r2, r0, r7, lsl #8 + ldr r1, _021E32DC ; =UNK04_0220D3A0 + mov r0, r6 + bl MOD04_02203A48 + b _021E3250 +_021E321C: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl MOD04_02203C50 + str r4, [sp, #4] + sub r8, r8, #1 + b _021E3250 +_021E3238: + ldr r0, [sp, #8] + bl MOD04_021DE8C8 + mov r2, r0 + ldr r1, _021E32DC ; =UNK04_0220D3A0 + mov r0, r6 + bl MOD04_02203A48 +_021E3250: + add r8, r8, #1 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r8, r0 + blt _021E3120 +_021E3268: + ldr r0, [sp] + cmp r0, #0 + beq _021E32A0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #0 + beq _021E32A0 + bl MOD04_021E26E4 + mov r1, #0 + ldr r0, [r0, #0xe4] + ldr r2, _021E32DC ; =UNK04_0220D3A0 + mov r3, r1 + bl MOD04_02203BD4 +_021E32A0: + ldr r0, [sp, #4] + cmp r0, #0 + beq _021E32C8 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BE4 + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E32C8: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E32D4: .word UNK04_0220D3AC +_021E32D8: .word 0x007FFFFF +_021E32DC: .word UNK04_0220D3A0 + arm_func_end MOD04_021E30E0 + + arm_func_start MOD04_021E32E0 +MOD04_021E32E0: ; 0x021E32E0 + bx lr + arm_func_end MOD04_021E32E0 + + arm_func_start MOD04_021E32E4 +MOD04_021E32E4: ; 0x021E32E4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + cmp r1, #0 + beq _021E330C + cmp r1, #4 + beq _021E331C + add sp, sp, #4 + cmp r1, #5 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E330C: + mov r0, r2 + bl MOD04_021E32E0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E331C: + mov r5, #0 + bl MOD04_02203BE4 + cmp r0, #0 + ble _021E336C +_021E332C: + mov r0, r6 + mov r1, r5 + bl MOD04_02203BF4 + mov r4, r0 + bl MOD04_021E3F98 + cmp r0, #0 + bne _021E3358 + mov r0, r6 + mov r1, r4 + bl MOD04_02203C50 + sub r5, r5, #1 +_021E3358: + mov r0, r6 + add r5, r5, #1 + bl MOD04_02203BE4 + cmp r5, r0 + blt _021E332C +_021E336C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #2 + beq _021E3394 + cmp r0, #3 + beq _021E348C + cmp r0, #5 + beq _021E3508 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3394: + mov r0, r6 + mov r5, #0 + bl MOD04_02203BE4 + cmp r0, #0 + ble _021E3424 +_021E33A8: + mov r0, r6 + mov r1, r5 + bl MOD04_02203BF4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _021E3410 + bl MOD04_021E26E4 + mov r7, r0 + mov r0, r4 + bl MOD04_02203908 + ldr r1, [r7, #0x1c] + cmp r1, r0 + bne _021E3410 + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E3410 + bl MOD04_021E26E4 + mov r7, r0 + mov r0, r4 + bl MOD04_022038E4 + ldrh r1, [r7, #0x1a] + cmp r1, r0 + beq _021E3424 +_021E3410: + mov r0, r6 + add r5, r5, #1 + bl MOD04_02203BE4 + cmp r5, r0 + blt _021E33A8 +_021E3424: + mov r0, r6 + bl MOD04_02203BE4 + cmp r5, r0 + bge _021E3464 + mov r0, #3 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + bl MOD04_021E7E5C + bl MOD04_021E38E8 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3464: + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #4 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E348C: + mov r0, #1 + bl MOD04_021E30E0 + bl MOD04_021E2F68 + mov r0, r6 + bl MOD04_02203BE4 + cmp r0, #0 + beq _021E34E0 + mov r0, #0 + mov r1, r0 + bl MOD04_021E6038 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #4 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E34E0: + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #4 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3508: + mov r0, r6 + bl MOD04_02203BE4 + cmp r0, #0 + beq _021E3580 + mov r4, #0 +_021E351C: + mov r0, r6 + mov r1, r4 + bl MOD04_02203BF4 + mov r5, r0 + bl MOD04_02203908 + mov r7, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1b8] + cmp r7, r0 + bne _021E3564 + mov r0, r5 + bl MOD04_022038E4 + mov r7, r0 + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb4] + cmp r7, r0 + beq _021E3580 +_021E3564: + mov r0, r6 + mov r1, r5 + bl MOD04_02203C50 + mov r0, r6 + bl MOD04_02203BE4 + cmp r0, #0 + bne _021E351C +_021E3580: + mov r0, r6 + bl MOD04_02203BE4 + cmp r0, #0 + beq _021E3684 + mov r0, r6 + mov r1, #0 + bl MOD04_02203BF4 + ldr r1, _021E36AC ; =UNK04_0220D3AC + mov r2, #0 + bl MOD04_0220394C + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E3650 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r4, r0 + bne _021E3650 + mov r0, #0 + bl MOD04_021E30E0 + cmp r0, #0 + beq _021E3604 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E3650 + bl MOD04_021E5824 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E3650 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3604: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #4 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, r0 + mov r0, #0 + ldr r2, [r1, #0xf4] + mov r1, r0 + bl MOD04_021E5D30 + bl MOD04_021E61EC + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3650: + mov r0, #6 + bl MOD04_021E26D0 + mov r0, r6 + mov r1, #0 + bl MOD04_02203BF4 + mov r2, r0 + mov r0, #0 + mov r1, r0 + bl MOD04_021E7B04 + bl MOD04_021E37A4 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3684: + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E36AC: .word UNK04_0220D3AC + arm_func_end MOD04_021E32E4 + + arm_func_start MOD04_021E36B0 +MOD04_021E36B0: ; 0x021E36B0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _021E3734 +_021E36CC: ; jump table + b _021E3734 ; case 0 + b _021E36EC ; case 1 + b _021E36F8 ; case 2 + b _021E3708 ; case 3 + b _021E3714 ; case 4 + b _021E36F8 ; case 5 + b _021E3720 ; case 6 + b _021E372C ; case 7 +_021E36EC: + mov r0, #9 + mvn r2, #0 + b _021E3734 +_021E36F8: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _021E3734 +_021E3708: + mov r0, #6 + mvn r2, #9 + b _021E3734 +_021E3714: + mov r0, #6 + mvn r2, #0x1d + b _021E3734 +_021E3720: + mov r0, #6 + mvn r2, #0x45 + b _021E3734 +_021E372C: + mov r0, #6 + mvn r2, #0x4f +_021E3734: + cmp r0, #0 + beq _021E3748 + ldr r1, _021E3750 ; =0xFFFEAC28 + add r1, r2, r1 + bl MOD04_021E8E08 +_021E3748: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3750: .word 0xFFFEAC28 + arm_func_end MOD04_021E36B0 + + arm_func_start MOD04_021E3754 +MOD04_021E3754: ; 0x021E3754 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _021E3778 + cmp r4, #2 + beq _021E3780 + b _021E3788 +_021E3778: + mov r0, #1 + ldmia sp!, {r4, pc} +_021E3780: + mov r0, #2 + ldmia sp!, {r4, pc} +_021E3788: + movs r0, #6 + beq _021E3798 + ldr r1, _021E37A0 ; =0xFFFEB007 + bl MOD04_021E8E08 +_021E3798: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E37A0: .word 0xFFFEB007 + arm_func_end MOD04_021E3754 + + arm_func_start MOD04_021E37A4 +MOD04_021E37A4: ; 0x021E37A4 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _021E37D4 + cmp r4, #2 + beq _021E37E0 + cmp r4, #3 + moveq r0, #6 + mvneq r2, #0x1d + b _021E37E8 +_021E37D4: + mov r0, #9 + mvn r2, #0 + b _021E37E8 +_021E37E0: + mov r0, #6 + mvn r2, #0x31 +_021E37E8: + ldr r1, _021E37FC ; =0xFFFEB010 + add r1, r2, r1 + bl MOD04_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E37FC: .word 0xFFFEB010 + arm_func_end MOD04_021E37A4 + + arm_func_start MOD04_021E3800 +MOD04_021E3800: ; 0x021E3800 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #5 + addls pc, pc, r6, lsl #2 + b _021E386C +_021E381C: ; jump table + b _021E386C ; case 0 + b _021E3834 ; case 1 + b _021E3840 ; case 2 + b _021E384C ; case 3 + b _021E3858 ; case 4 + b _021E3864 ; case 5 +_021E3834: + mov r4, #6 + mvn r5, #0x31 + b _021E386C +_021E3840: + mov r4, #6 + mvn r5, #0x3b + b _021E386C +_021E384C: + mov r4, #6 + mvn r5, #0x1d + b _021E386C +_021E3858: + mov r4, #6 + mvn r5, #0x4f + b _021E386C +_021E3864: + mov r4, #6 + mvn r5, #0x13 +_021E386C: + bl MOD04_021DF88C + cmp r0, #2 + beq _021E388C + cmp r0, #4 + beq _021E389C + cmp r0, #5 + beq _021E38B0 + b _021E38C4 +_021E388C: + mov r0, r4 + sub r1, r5, #0xfa00 + bl MOD04_021E0EAC + b _021E38D4 +_021E389C: + ldr r1, _021E38DC ; =0xFFFEDEF0 + mov r0, r4 + add r1, r5, r1 + bl MOD04_021E2114 + b _021E38D4 +_021E38B0: + ldr r1, _021E38E0 ; =0xFFFEB7E0 + mov r0, r4 + add r1, r5, r1 + bl MOD04_021E8E08 + b _021E38D4 +_021E38C4: + ldr r1, _021E38E4 ; =0xFFFE90D0 + mov r0, r4 + add r1, r5, r1 + bl MOD04_021DD6B0 +_021E38D4: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E38DC: .word 0xFFFEDEF0 +_021E38E0: .word 0xFFFEB7E0 +_021E38E4: .word 0xFFFE90D0 + arm_func_end MOD04_021E3800 + + arm_func_start MOD04_021E38E8 +MOD04_021E38E8: ; 0x021E38E8 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #6 + addls pc, pc, r4, lsl #2 + b _021E3964 +_021E3904: ; jump table + b _021E3964 ; case 0 + b _021E3920 ; case 1 + b _021E392C ; case 2 + b _021E3938 ; case 3 + b _021E3944 ; case 4 + b _021E3950 ; case 5 + b _021E395C ; case 6 +_021E3920: + mov r0, #6 + mvn r2, #0x31 + b _021E3964 +_021E392C: + mov r0, #6 + mvn r2, #0x1d + b _021E3964 +_021E3938: + mov r0, #6 + mvn r2, #0x13 + b _021E3964 +_021E3944: + mov r0, #6 + mvn r2, #0x27 + b _021E3964 +_021E3950: + mov r0, #9 + mvn r2, #0 + b _021E3964 +_021E395C: + mov r0, #9 + mvn r2, #1 +_021E3964: + ldr r1, _021E3978 ; =0xFFFEB3F8 + add r1, r2, r1 + bl MOD04_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3978: .word 0xFFFEB3F8 + arm_func_end MOD04_021E38E8 + + arm_func_start MOD04_021E397C +MOD04_021E397C: ; 0x021E397C + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E39D8 +_021E3998: ; jump table + b _021E39D8 ; case 0 + b _021E39AC ; case 1 + b _021E39B8 ; case 2 + b _021E39C4 ; case 3 + b _021E39D0 ; case 4 +_021E39AC: + mov r0, #9 + mvn r2, #0 + b _021E39D8 +_021E39B8: + mov r0, #9 + mvn r2, #1 + b _021E39D8 +_021E39C4: + mov r0, #6 + mvn r2, #9 + b _021E39D8 +_021E39D0: + mov r0, #6 + mvn r2, #0x13 +_021E39D8: + ldr r1, _021E39EC ; =0xFFFEC398 + add r1, r2, r1 + bl MOD04_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E39EC: .word 0xFFFEC398 + arm_func_end MOD04_021E397C + + arm_func_start MOD04_021E39F0 +MOD04_021E39F0: ; 0x021E39F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _021E3E1C ; =UNK04_022106D4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [r0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _021E3C58 + mov r0, #0 + bl MOD04_021E3EC4 + ldr r1, _021E3E1C ; =UNK04_022106D4 + ldr r5, [r1] + ldr r1, [r5, #8] + cmp r1, r0 + bne _021E3B2C + ldr r1, [r5, #0xc] + cmp r1, r0 + bne _021E3AB8 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, #0 + sub r1, r1, #1 + strb r1, [r4, #0x1a4] + bl MOD04_021E51C0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3AB8: + bl OS_GetTick + str r0, [r5, #0x18] + str r1, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E3B0C + mov r0, #3 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #8 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B0C: + mov r0, #4 + bl MOD04_021E26D0 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl MOD04_021E5D30 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B2C: + ldrb r4, [r5, #2] + bl OS_GetTick + ldr r3, [r5, #0x18] + ldr r2, [r5, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E3E24 ; =0x00001770 + mul r2, r4, r2 + cmp r1, r2, asr #31 + cmpeq r0, r2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r4, #5 + bls _021E3B98 + mov r0, #1 + bl MOD04_021E3E28 + bl MOD04_021E4B40 + mov r0, #1 + bl MOD04_021E4CF8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B98: + mov r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3C3C + ldr r8, _021E3E1C ; =UNK04_022106D4 + mov r5, #0 + mov r4, #0x11 + mov r6, r7 +_021E3BBC: + bl MOD04_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + ldr r1, [r8] + mov r0, r6,lsl r0 + ldr r1, [r1, #8] + ands r0, r1, r0 + bne _021E3C28 + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + str r5, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sl, r7, lsl #2 + add r2, sb, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C28: + add r7, r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E3BBC +_021E3C3C: + ldr r0, _021E3E1C ; =UNK04_022106D4 + add sp, sp, #8 + ldr r1, [r0] + ldrb r0, [r1, #2] + add r0, r0, #1 + strb r0, [r1, #2] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C58: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + beq _021E3C7C + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C7C: + ldr r0, _021E3E1C ; =UNK04_022106D4 + ldr r4, [r0] + bl MOD04_021E26E4 + ldrb r1, [r4, #1] + ldrb r2, [r0, #0xd] + sub r0, r1, #1 + cmp r2, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [r4, #2] + cmp r0, #0 + bne _021E3CF0 + ldr r0, _021E3E1C ; =UNK04_022106D4 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + bhs _021E3D48 +_021E3CF0: + ldrb r0, [r4, #2] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _021E3E1C ; =UNK04_022106D4 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x18] + ldr r2, [r4, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2, lsr #2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3D48: + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E3D74 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3D74: + mov r0, #0x13 + bl MOD04_021E26D0 + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3DF8 + mov r6, #0 + mov r5, #0x11 +_021E3D98: + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + str r6, [sp] + str r6, [sp, #4] + add r0, r0, r4, lsl #1 + add r1, r8, r4, lsl #2 + add r2, r7, r4, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E3D98 +_021E3DF8: + ldr r0, _021E3E1C ; =UNK04_022106D4 + ldr r4, [r0] + bl OS_GetTick + str r0, [r4, #0x18] + str r1, [r4, #0x1c] + mov r0, #1 + strb r0, [r4, #2] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E3E1C: .word UNK04_022106D4 +_021E3E20: .word 0x000082EA +_021E3E24: .word 0x00001770 + arm_func_end MOD04_021E39F0 + + arm_func_start MOD04_021E3E28 +MOD04_021E3E28: ; 0x021E3E28 + stmdb sp!, {r4, lr} + ldr r1, _021E3E98 ; =UNK04_022106D4 + mov r4, r0 + ldr r3, [r1] + cmp r3, #0 + ldmeqia sp!, {r4, pc} + ldrb r0, [r3] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #0 + str r2, [r3, #8] + ldr r0, [r1] + str r2, [r0, #0xc] + ldr r0, [r1] + strb r2, [r0, #2] + bl OS_GetTick + ldr r2, _021E3E98 ; =UNK04_022106D4 + cmp r4, #0 + ldr r2, [r2] + str r0, [r2, #0x18] + str r1, [r2, #0x1c] + ldmneia sp!, {r4, pc} + bl OS_GetTick + ldr r2, _021E3E98 ; =UNK04_022106D4 + ldr r2, [r2] + str r0, [r2, #0x10] + str r1, [r2, #0x14] + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3E98: .word UNK04_022106D4 + arm_func_end MOD04_021E3E28 + + arm_func_start MOD04_021E3E9C +MOD04_021E3E9C: ; 0x021E3E9C + stmdb sp!, {r4, lr} + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f8] + str r1, [r4, #0x1fc] + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E3E9C + + arm_func_start MOD04_021E3EC4 +MOD04_021E3EC4: ; 0x021E3EC4 + stmdb sp!, {r4, r5, r6, lr} + cmp r0, #0 + mov r6, #0 + beq _021E3EE4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x2f0] + bic r0, r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021E3EE4: + mov r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3F20 + mov r4, r5 +_021E3EFC: + bl MOD04_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + add r5, r5, #1 + orr r6, r6, r4, lsl r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E3EFC +_021E3F20: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E3EC4 + + arm_func_start MOD04_021E3F28 +MOD04_021E3F28: ; 0x021E3F28 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + cmp r1, #0 + moveq r4, #1 + mov r5, r0 + movne r4, #0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + bgt _021E3F8C +_021E3F50: + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r5, r0 + bne _021E3F78 + bl MOD04_021E26E4 + add r0, r0, r4 + add sp, sp, #4 + ldrb r0, [r0, #0x2d0] + ldmia sp!, {r4, r5, pc} +_021E3F78: + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E3F50 +_021E3F8C: + mov r0, #0xff + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E3F28 + + arm_func_start MOD04_021E3F98 +MOD04_021E3F98: ; 0x021E3F98 + stmdb sp!, {r4, lr} + ldr r1, _021E405C ; =UNK04_0220D3B4 + mvn r2, #0 + mov r4, r0 + bl MOD04_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4060 ; =UNK04_0220D3C0 + mov r0, r4 + bl MOD04_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4064 ; =UNK04_0220D3CC + mov r0, r4 + bl MOD04_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4068 ; =UNK04_0220D3D8 + mov r0, r4 + bl MOD04_0220394C + mvn r1, #0 + cmp r0, r1 + bne _021E4028 + ldr r1, _021E4068 ; =UNK04_0220D3D8 + mov r0, r4 + mov r2, #0 + bl MOD04_0220394C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_021E4028: + ldr r1, _021E406C ; =UNK04_0220D3E4 + mov r0, r4 + mvn r2, #0 + bl MOD04_0220394C + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4070 ; =UNK04_0220D3AC + mov r0, r4 + mov r2, #0 + bl MOD04_0220394C + ldmia sp!, {r4, pc} + .align 2, 0 +_021E405C: .word UNK04_0220D3B4 +_021E4060: .word UNK04_0220D3C0 +_021E4064: .word UNK04_0220D3CC +_021E4068: .word UNK04_0220D3D8 +_021E406C: .word UNK04_0220D3E4 +_021E4070: .word UNK04_0220D3AC + arm_func_end MOD04_021E3F98 + + arm_func_start MOD04_021E4074 +MOD04_021E4074: ; 0x021E4074 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x2fc] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r4, #0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x344] + cmp r0, #0 + ble _021E40E8 +_021E40AC: + bl MOD04_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x304] + bl MOD04_021E1F84 + cmp r0, #0 + ble _021E40D4 + cmp r0, r5 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} +_021E40D4: + add r4, r4, #1 + bl MOD04_021E26E4 + ldr r0, [r0, #0x344] + cmp r4, r0 + blt _021E40AC +_021E40E8: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E4074 + + arm_func_start MOD04_021E40F4 +MOD04_021E40F4: ; 0x021E40F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_021E4100: + mov r5, r4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #0 + blt _021E413C +_021E4114: + bl MOD04_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + cmp r6, r0 + beq _021E413C + add r5, r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r5, r0 + ble _021E4114 +_021E413C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r5, r0 + bgt _021E415C + add r0, r6, #1 + and r6, r0, #0xff + cmp r6, #0x20 + blo _021E4100 +_021E415C: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E40F4 + + arm_func_start MOD04_021E4164 +MOD04_021E4164: ; 0x021E4164 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r6, _021E41BC ; =UNK04_02210704 + mov r7, #0 + mov r4, r7 + mov r5, #4 +_021E417C: + ldr r1, [r6, #4] + cmp r1, #0 + beq _021E4194 + mov r0, r5 + mov r2, r4 + bl MOD04_021DD904 +_021E4194: + add r7, r7, #1 + cmp r7, #0x9a + add r6, r6, #0xc + blt _021E417C + ldr r1, _021E41BC ; =UNK04_02210704 + ldr r2, _021E41C0 ; =0x00000738 + mov r0, #0 + bl MIi_CpuClear32 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E41BC: .word UNK04_02210704 +_021E41C0: .word 0x00000738 + arm_func_end MOD04_021E4164 + + arm_func_start MOD04_021E41C4 +MOD04_021E41C4: ; 0x021E41C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E41FC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + beq _021E41FC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xf + bne _021E4240 +_021E41FC: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E43D8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _021E424C +_021E4240: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E424C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E4270 + cmp r0, #0xe + beq _021E42A4 + cmp r0, #0xf + beq _021E43AC + b _021E43CC +_021E4270: + ldr r0, _021E43DC ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E43CC + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0xe + bl MOD04_021E4604 + cmp r0, #0 + bne _021E43CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E42A4: + ldr r0, _021E43DC ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E43CC + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1ac] + add r1, r1, #1 + strb r1, [r0, #0x1ac] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1ac] + cmp r0, #5 + bls _021E4330 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1d8] + bl MOD04_021E4A00 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E4324 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ac] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + b _021E43CC +_021E4324: + mov r0, #2 + bl MOD04_021E4CF8 + b _021E43CC +_021E4330: + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E43CC + mov r5, #0xd + mov r6, r4 +_021E434C: + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d8] + mov r0, r6,lsl r0 + ands r0, r1, r0 + bne _021E4394 + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r5 + bl MOD04_021E4604 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021E4394: + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E434C + b _021E43CC +_021E43AC: + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _021E43CC + mov r0, #2 + bl MOD04_021E4CF8 +_021E43CC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E43D8: .word 0x000082EA +_021E43DC: .word 0x00001770 + arm_func_end MOD04_021E41C4 + + arm_func_start MOD04_021E43E0 +MOD04_021E43E0: ; 0x021E43E0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DF88C + cmp r0, #6 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + cmp r5, #0xd + beq _021E441C + cmp r5, #0xe + beq _021E4458 + cmp r5, #0xf + beq _021E45E0 + b _021E45F8 +_021E441C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E443C + mov r0, #8 + bl MOD04_021E26D0 + mov r0, r4 + bl MOD04_021E4B78 +_021E443C: + mov r0, r6 + mov r1, #0xe + bl MOD04_021E4604 + cmp r0, #0 + bne _021E45F8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E4458: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + bne _021E45C4 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4600 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r2, r0, lsr #1 + mov r0, r1, lsr #1 + cmp r0, #0 + orr r2, r2, r1, lsl #31 + cmpeq r2, #0x12c + bls _021E4524 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4600 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r3, r0, lsr #1 + mov r0, #0x12c + orr r3, r3, r1, lsl #31 + rsb r0, r0, #0 + mvn r2, #0 + adds r5, r3, r0 + adc r4, r2, r1, lsr #1 + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r4, r0, asr #31 + cmpeq r5, r0 + bls _021E4524 + bl MOD04_021E26E4 + add r0, r0, #0x100 + strh r5, [r0, #0xb2] +_021E4524: + mov r0, r6 + mov r1, #0 + bl MOD04_021E3F28 + mov r4, r0 + cmp r4, #0xff + beq _021E4550 + bl MOD04_021E26E4 + ldr r2, [r0, #0x1d8] + mov r1, #1 + orr r1, r2, r1, lsl r4 + str r1, [r0, #0x1d8] +_021E4550: + mov r0, #1 + bl MOD04_021E3EC4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1d8] + cmp r4, r0 + bne _021E45F8 + mov r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E45B8 + mov r4, #0xf +_021E4584: + bl MOD04_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl MOD04_021E4604 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E4584 +_021E45B8: + mov r0, #0xf + bl MOD04_021E26D0 + b _021E45F8 +_021E45C4: + mov r0, r6 + mov r1, #0xf + bl MOD04_021E4604 + cmp r0, #0 + bne _021E45F8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E45E0: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + bne _021E45F8 + mov r0, #2 + bl MOD04_021E4CF8 +_021E45F8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E4600: .word 0x000082EA + arm_func_end MOD04_021E43E0 + + arm_func_start MOD04_021E4604 +MOD04_021E4604: ; 0x021E4604 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r1 + cmp r5, #0xd + mov r6, r0 + movne r4, #0 + bne _021E4630 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + mov r4, #1 + str r0, [sp, #8] +_021E4630: + add r0, sp, #8 + str r0, [sp] + mov r2, #0 + mov r0, r5 + mov r1, r6 + mov r3, r2 + str r4, [sp, #4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E4604 + + arm_func_start MOD04_021E4684 +MOD04_021E4684: ; 0x021E4684 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _021E46BC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _021E46BC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x11 + bne _021E4700 +_021E46BC: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1e0] + ldr r0, [r0, #0x1e4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4908 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _021E470C +_021E4700: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E470C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _021E4730 + cmp r0, #0x10 + beq _021E47A0 + cmp r0, #0x11 + beq _021E48DC + b _021E48FC +_021E4730: + ldr r0, _021E490C ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E48FC + bl MOD04_021DF88C + cmp r0, #5 + bne _021E477C + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _021E477C + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5908 + cmp r0, #0 + bne _021E48FC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E477C: + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x2d0] + mov r1, #3 + bl MOD04_021E4910 + b _021E48FC +_021E47A0: + ldr r0, _021E490C ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E48FC + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1ab] + add r1, r1, #1 + strb r1, [r0, #0x1ab] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1ab] + cmp r0, #5 + bls _021E4870 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E47F0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E4800 +_021E47F0: + bl MOD04_021E4B40 + mov r0, #1 + bl MOD04_021E4CF8 + b _021E48FC +_021E4800: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1d4] + bl MOD04_021E4A00 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E4850 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ab] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + b _021E48FC +_021E4850: + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + bl MOD04_021E59D4 + cmp r0, #0 + bne _021E48FC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E4870: + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E48FC + mov r5, #2 + mov r6, r4 +_021E488C: + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d4] + mov r0, r6,lsl r0 + ands r0, r1, r0 + bne _021E48C4 + bl MOD04_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + mov r1, r5 + bl MOD04_021E4910 +_021E48C4: + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E488C + b _021E48FC +_021E48DC: + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _021E48FC + mov r0, #4 + bl MOD04_021E51C0 +_021E48FC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4908: .word 0x000082EA +_021E490C: .word 0x00001770 + arm_func_end MOD04_021E4684 + + arm_func_start MOD04_021E4910 +MOD04_021E4910: ; 0x021E4910 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r1 + mov r5, r0 + cmp r4, #2 + beq _021E4934 + cmp r4, #3 + beq _021E49AC + b _021E49D0 +_021E4934: + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + mov r6, #1 + cmp r5, r0 + moveq r0, #1 + streqb r0, [sp] + movne r0, #0 + strneb r0, [sp] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blo _021E49D0 +_021E4974: + bl MOD04_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + cmp r5, r0 + streqb r6, [sp, #1] + streqb r5, [sp, #2] + beq _021E49D0 + add r0, r6, #1 + and r6, r0, #0xff + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + bls _021E4974 + b _021E49D0 +_021E49AC: + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + strb r0, [sp] + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + mov r0, r0, asr #8 + strb r0, [sp, #1] +_021E49D0: + add r2, sp, #0 + mov r0, r4 + mov r1, r5 + mov r3, #4 + bl MOD04_021EAF20 + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E4910 + + arm_func_start MOD04_021E4A00 +MOD04_021E4A00: ; 0x021E4A00 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x108 + mov sb, #0 + mov sl, r0 + mov r8, sb + mov r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E4A8C + add r4, sp, #8 + add r5, sp, #0x88 + mov r6, r7 +_021E4A34: + bl MOD04_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + mov r0, r6,lsl r0 + ands r0, sl, r0 + beq _021E4A64 + bl MOD04_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, r8, lsl #2] + add r8, r8, #1 + b _021E4A78 +_021E4A64: + bl MOD04_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r4, sb, lsl #2] + add sb, sb, #1 +_021E4A78: + add r7, r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E4A34 +_021E4A8C: + cmp r8, #0 + mov sl, #0 + ble _021E4AE4 + add r7, sp, #8 + add r5, sp, #0x88 + mov r4, sl + mov r6, #0x10 +_021E4AA8: + str r7, [sp] + str sb, [sp, #4] + ldr r1, [r5, sl, lsl #2] + mov r0, r6 + mov r2, r4 + mov r3, r4 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x108 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sl, #1 + cmp sl, r8 + blt _021E4AA8 +_021E4AE4: + bl MOD04_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + cmp sb, #0 + mov r6, #0 + ble _021E4B28 + add r5, sp, #8 + mov r4, r6 +_021E4B04: + ldr r0, [r5, r6, lsl #2] + mov r1, r4 + bl MOD04_021E3F28 + cmp r0, #0xff + beq _021E4B1C + bl MOD04_021DF9D4 +_021E4B1C: + add r6, r6, #1 + cmp r6, sb + blt _021E4B04 +_021E4B28: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, #1 + add sp, sp, #0x108 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end MOD04_021E4A00 + + arm_func_start MOD04_021E4B40 +MOD04_021E4B40: ; 0x021E4B40 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E4B40 + + arm_func_start MOD04_021E4B78 +MOD04_021E4B78: ; 0x021E4B78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD04_021E26E4 + str r5, [r0, #0x20c] + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl MOD04_021DF648 + movs r4, r0 + beq _021E4BD4 + bl MOD04_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + ldr r0, [r4] + bl MOD04_021FD488 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E4BD4: + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl MOD04_021E89EC + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E4B78 + + arm_func_start MOD04_021E4BF4 +MOD04_021E4BF4: ; 0x021E4BF4 + stmdb sp!, {r4, lr} + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E4CA4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E4C64 + mov r0, #3 + bl MOD04_021E26D0 + mov r0, #0 + bl MOD04_021E7E5C + mov r4, r0 + bl MOD04_021E38E8 + cmp r0, #0 + beq _021E4CAC + mov r0, r4 + ldmia sp!, {r4, pc} +_021E4C64: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E4CAC + mov r0, #4 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + mov r1, #0 + bl MOD04_021E6038 + mov r4, r0 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E4CAC + mov r0, r4 + ldmia sp!, {r4, pc} +_021E4CA4: + mov r0, #1 + bl MOD04_021E4CF8 +_021E4CAC: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E4BF4 + + arm_func_start MOD04_021E4CB4 +MOD04_021E4CB4: ; 0x021E4CB4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021E4B40 + mov r0, #1 + bl MOD04_021E4CF8 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E4CB4 + + arm_func_start MOD04_021E4CF8 +MOD04_021E4CF8: ; 0x021E4CF8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r4, r0 + bne _021E4D14 + bl MOD04_021E4ED4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021E4D14: + bl MOD04_021E8174 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E4D38 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E4D94 +_021E4D38: + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r6, #1 + movne r6, #0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + bl MOD04_021E1F18 + mov r4, r0 + bl MOD04_021E26E4 + str r4, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r2, r6 + mov r1, #1 + mov r3, r0 + blx ip + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021E4D94: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E4DC8 + cmp r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + bl MOD04_021E7E5C + bl MOD04_021E38E8 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E4DC8: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl MOD04_021E5D30 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E4CF8 + + arm_func_start MOD04_021E4E00 +MOD04_021E4E00: ; 0x021E4E00 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r4, #0 + str r4, [sp, #8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E4EC8 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _021E4EC8 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + beq _021E4EC8 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + add r2, sp, #8 + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + ldrb r3, [r0, #0xd] + ldrb r2, [r6, #0xd] + ldr r1, [r7, #0x20] + add r3, r3, #1 + add r2, r2, #1 + add r3, r4, r3, lsl #1 + add r2, r5, r2, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r2, [r2, #0x24] + mov r0, #0xc + bl MOD04_021E7884 + mov r4, r0 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] +_021E4EC8: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end MOD04_021E4E00 + + arm_func_start MOD04_021E4ED4 +MOD04_021E4ED4: ; 0x021E4ED4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _021E4F90 ; =UNK04_0220D3F0 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + bl MOD04_021E397C + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E8034 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + movne r6, #1 + bne _021E4F28 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r6, #1 + movne r6, #0 +_021E4F28: + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + bl MOD04_021E1F18 + mov r4, r0 + bl MOD04_021E26E4 + str r4, [sp] + ldr r1, [r0, #0x468] + mov r2, r7 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r3, r6 + mov r0, #0 + mov r1, #1 + blx ip + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4F90: .word UNK04_0220D3F0 + arm_func_end MOD04_021E4ED4 + + arm_func_start MOD04_021E4F94 +MOD04_021E4F94: ; 0x021E4F94 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #2 + bne _021E4FC4 + bl MOD04_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E4FC4: + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5038 + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E5010 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C + b _021E502C +_021E5010: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E502C: + bl MOD04_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E5038: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + beq _021E5098 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #5 + beq _021E5098 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E5098 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + beq _021E5098 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E5098 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E50D8 +_021E5098: + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E50C4 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E50C4: + bl MOD04_021E4E00 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E50D8: + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5100 + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + bl MOD04_022006B4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5100: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E512C + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C +_021E512C: + bl MOD04_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E4F94 + + arm_func_start MOD04_021E5138 +MOD04_021E5138: ; 0x021E5138 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E5168 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021E5168: + cmp r5, #0 + mov r4, #0 + bls _021E51B8 +_021E5174: + ldr r0, [r6, r4, lsl #2] + bl MOD04_021E4074 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E51AC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021E51AC: + add r4, r4, #1 + cmp r4, r5 + blo _021E5174 +_021E51B8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E5138 + + arm_func_start MOD04_021E51C0 +MOD04_021E51C0: ; 0x021E51C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + cmp r0, #4 + mov r5, #3 + mov r4, #0 + addls pc, pc, r0, lsl #2 + b _021E57E8 +_021E51DC: ; jump table + b _021E51F0 ; case 0 + b _021E5594 ; case 1 + b _021E55D8 ; case 2 + b _021E569C ; case 3 + b _021E56BC ; case 4 +_021E51F0: + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + ldrb r1, [r6, #0x1a4] + sub r0, r0, #1 + cmp r1, r0 + bge _021E52B0 + mov r0, #0xd + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [sp, #8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + str r0, [sp, #0xc] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + ldr r0, [r0, #0x24] + str r0, [sp, #0x14] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + mov r5, #5 + add r0, r0, #1 + add r0, r6, r0, lsl #1 + ldrh r0, [r0, #0xa4] + str r0, [sp, #0x18] + b _021E54FC +_021E52B0: + bl MOD04_021E26E4 + mov r1, r4 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, r4 + str r1, [r0, #0x20] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E52F0 + mov r0, r5 + bl MOD04_021E26D0 + b _021E5314 +_021E52F0: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E530C + mov r0, #4 + bl MOD04_021E26D0 + b _021E5314 +_021E530C: + mov r0, #0xa + bl MOD04_021E26D0 +_021E5314: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a4] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E534C + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r1, [r6, #0xd] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E53FC +_021E534C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E5384 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r7, #0x20c] + b _021E53A4 +_021E5384: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r6, #0xf4] +_021E53A4: + mov r0, #0x10 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d4] + mov r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E54EC + mov r6, #2 +_021E53D0: + bl MOD04_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + mov r1, r6 + bl MOD04_021E4910 + add r7, r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E53D0 + b _021E54EC +_021E53FC: + mov r0, #0 + str r0, [sp, #8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + str r0, [sp, #0xc] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5460 + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0xec] + str r1, [r6, #0xf0] + b _021E54EC +_021E5460: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E54EC + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl MOD04_021E5D30 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E54EC + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #2 + blo _021E54EC + bl MOD04_021E26E4 + mov r8, r0 + mov r0, #0 + bl MOD04_021E3EC4 + mov r6, r0 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + mov r1, #1 + ldr r2, [r8, #0x1dc] + add r0, r7, r0 + ldrb r0, [r0, #0x2d0] + mvn r0, r1, lsl r0 + and r0, r6, r0 + cmp r2, r0 + beq _021E54EC + bl MOD04_021E4CB4 + b _021E57E8 +_021E54EC: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + movne r4, #1 +_021E54FC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _021E57E8 + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + add r1, sp, #8 + str r1, [sp] + str r5, [sp, #4] + mov ip, r0 + ldrb r3, [sb, #0xd] + ldrb r2, [r7, #0xd] + ldrb r1, [ip, #0xd] + add r5, sl, r3, lsl #2 + add r2, r8, r2, lsl #2 + add r3, r6, r1, lsl #1 + ldrh r3, [r3, #0xa4] + ldr r1, [r5, #0xf4] + ldr r2, [r2, #0x24] + mov r0, #8 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x3cd] + b _021E57E8 +_021E5594: + mov r0, #1 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E55D0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, #0x20c] +_021E55D0: + mov r4, #1 + b _021E57E8 +_021E55D8: + mov r0, #1 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E5600 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5620 +_021E5600: + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r5, #0x20] +_021E5620: + bl MOD04_021E3E9C + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + bls _021E57E8 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + add r3, r8, #0xf4 + ldrb r2, [r0, #0xd] + mov r1, #1 + mov r0, #9 + sub r2, r2, #1 + add r2, r3, r2, lsl #2 + str r2, [sp] + str r1, [sp, #4] + ldr r1, [r7, #0xf4] + ldr r2, [r6, #0x24] + ldrh r3, [r5, #0xa4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E57E8 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E569C: + mov r0, #1 + bl MOD04_021E26D0 + bl MOD04_021E3E9C + bl MOD04_021E26E4 + mov r1, r4 + str r1, [r0, #0x20c] + mov r4, #1 + b _021E57E8 +_021E56BC: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E56DC + ldr r1, _021E581C ; =UNK04_0220D3F0 + mov r0, #2 + mov r2, r4 + bl MOD04_021E1E30 +_021E56DC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + bl MOD04_021E1F18 + mov r5, r0 + bl MOD04_021E26E4 + str r5, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr r5, [r6, #0x464] + mov r2, r7 + mov r1, r0 + mov r3, r0 + blx r5 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E5750 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5758 +_021E5750: + bl MOD04_021E8034 + b _021E57DC +_021E5758: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E5780 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203E80 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] +_021E5780: + bl MOD04_02200D6C + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E57C8 + bl MOD04_021E85D4 + bl MOD04_021E397C + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _021E5820 ; =UNK04_022106DC + ldrb r1, [r0] + cmp r1, #1 + moveq r1, #1 + streqb r1, [r0, #1] + mov r0, #0xa + bl MOD04_021E26D0 + b _021E57D0 +_021E57C8: + mov r0, #1 + bl MOD04_021E26D0 +_021E57D0: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] +_021E57DC: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] +_021E57E8: + cmp r4, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203C04 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E581C: .word UNK04_0220D3F0 +_021E5820: .word UNK04_022106DC + arm_func_end MOD04_021E51C0 + + arm_func_start MOD04_021E5824 +MOD04_021E5824: ; 0x021E5824 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E58BC + mov r5, #0xa +_021E5844: + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + add r1, r6, #0x348 + str r1, [sp] + ldr ip, [r0, #0x348] + add r3, r7, r4, lsl #1 + add ip, ip, #1 + str ip, [sp, #4] + add r1, sb, r4, lsl #2 + add r2, r8, r4, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl MOD04_021E7884 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E5844 +_021E58BC: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a8] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end MOD04_021E5824 + + arm_func_start MOD04_021E5908 +MOD04_021E5908: ; 0x021E5908 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5950 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E5938 + bl MOD04_021E4B40 +_021E5938: + ldr r1, _021E59D0 ; =0xFFFEC5D2 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5950: + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r5, #0x14] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5998 + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + bl MOD04_022006B4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5998: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E59B0 + bl MOD04_021E4CB4 + b _021E59C4 +_021E59B0: + mov r0, #4 + bl MOD04_021E26D0 + mov r0, #0 + bl MOD04_021E5C44 + mov r4, r0 +_021E59C4: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E59D0: .word 0xFFFEC5D2 + arm_func_end MOD04_021E5908 + + arm_func_start MOD04_021E59D4 +MOD04_021E59D4: ; 0x021E59D4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E5A0C + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + moveq r4, #0 + beq _021E5A10 +_021E5A0C: + mov r4, #1 +_021E5A10: + cmp r4, #0 + beq _021E5A3C + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 +_021E5A3C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0x1f + bhs _021E5A6C + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + mov r1, #0 + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r1, [r0, #0xf4] +_021E5A6C: + bl MOD04_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5AA0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + bl MOD04_022006B4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5AA0: + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r6, #0x14] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + cmp r4, #0 + bne _021E5AE0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E5BE8 + bl MOD04_021E4CB4 + b _021E5BE8 +_021E5AE0: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5B1C + mov r0, #3 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _021E5BE8 +_021E5B1C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5B48 + mov r0, #4 + bl MOD04_021E26D0 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl MOD04_021E5D30 + b _021E5BE8 +_021E5B48: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E5BE8 + mov r0, #0xe + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d8] + bl MOD04_021E26E4 + add r1, r0, #0x100 + mov r2, #0 + mov r0, r5 + strh r2, [r1, #0xb2] + bl MOD04_021E4B78 + mov r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E5BD0 + mov r4, #0xd +_021E5B9C: + bl MOD04_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl MOD04_021E4604 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E5B9C +_021E5BD0: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _021E5BE8 + mov r0, #2 + bl MOD04_021E4CF8 +_021E5BE8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E59D4 + + arm_func_start MOD04_021E5BF0 +MOD04_021E5BF0: ; 0x021E5BF0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r5 + mov r0, #5 + bl MOD04_021E7884 + mov r4, r0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E5BF0 + + arm_func_start MOD04_021E5C44 +MOD04_021E5C44: ; 0x021E5C44 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5CC0 + mov r0, #3 + bl MOD04_021E26D0 + mov r0, #0 + bl MOD04_021E7E5C + bl MOD04_021E38E8 + cmp r0, #0 + beq _021E5D20 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5CC0: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5CF8 + mov r0, #0 + mov r1, r0 + mov r2, r5 + bl MOD04_021E5D30 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E5D20 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5CF8: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5D20 + ldr r1, _021E5D2C ; =0xFFFEC5E6 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5D20: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E5D2C: .word 0xFFFEC5E6 + arm_func_end MOD04_021E5C44 + + arm_func_start MOD04_021E5D30 +MOD04_021E5D30: ; 0x021E5D30 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x23c + movs r4, r1 + str r0, [sp] + str r2, [sp, #4] + beq _021E5D58 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a5] + str r0, [sp, #0xc] + b _021E5D90 +_021E5D58: + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x344] + ldrb r1, [r5, #0x1a5] + sub r0, r0, #1 + cmp r1, r0 + movge r0, #0 + strge r0, [sp, #0xc] + bge _021E5D90 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a5] + add r0, r0, #1 + str r0, [sp, #0xc] +_021E5D90: + cmp r4, #0 + moveq r0, #1 + mov sb, #0 + streq r0, [sp, #8] + strne sb, [sp, #8] + mov r7, #1 + mov r8, #0 + mov r5, #0x2f + mov r4, #0xa +_021E5DB4: + ldr r0, [sp, #8] + cmp r0, #0 + bne _021E5DC8 + cmp sb, #0 + beq _021E5DFC +_021E5DC8: + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1a5] + add r1, r1, #1 + strb r1, [r0, #0x1a5] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r1, [r6, #0x1a5] + ldr r0, [r0, #0x344] + cmp r1, r0 + blt _021E5DFC + bl MOD04_021E26E4 + strb r8, [r0, #0x1a5] +_021E5DFC: + cmp sb, #0 + beq _021E5E50 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1a5] + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _021E5E50 + bl MOD04_021E26E4 + ldr r1, _021E6028 ; =0x00000BB8 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + add sp, sp, #0x23c + mov r0, r1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E5E50: + mov sb, r7 + bl MOD04_021E0F00 + mov fp, r0 + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r1, r0 + ldrb r2, [r1, #0x1a5] + ldr r3, [sl, #0x2fc] + mov r1, #0xc + add r2, r6, r2 + ldrb r2, [r2, #0x304] + mov r0, fp + mla r1, r2, r1, r3 + bl DWC_GetGsProfileId + movs sl, r0 + beq _021E5DB4 + mvn r0, #0 + cmp sl, r0 + beq _021E5DB4 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov fp, r0 + bl MOD04_021E26E4 + ldr r2, [r6, #0x2fc] + ldrb r1, [r0, #0x1a5] + mov r0, #0xc + add r1, fp, r1 + ldrb r1, [r1, #0x304] + mla r0, r1, r0, r2 + bl DWCi_Acc_IsValidFriendData + cmp r0, #0 + beq _021E5DB4 + mov r6, r7 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E5F1C +_021E5EF4: + bl MOD04_021E26E4 + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0xf4] + cmp sl, r0 + beq _021E5F1C + add r6, r6, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + ble _021E5EF4 +_021E5F1C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + ble _021E5DB4 + bl MOD04_021E26E4 + ldr r0, [r0] + mov r1, sl + add r2, sp, #0x18 + bl MOD04_021F0664 + mov r6, r0 + bl MOD04_021E26E4 + ldr r0, [r0] + ldr r1, [sp, #0x18] + add r2, sp, #0x28 + bl MOD04_021F06E4 + orrs r0, r6, r0 + bne _021E5DB4 + ldr r0, [sp, #0x2c] + cmp r0, #4 + bne _021E5DB4 + ldr r0, _021E602C ; =UNK04_0220D3F4 + add r1, sp, #0x1c + add r2, sp, #0x30 + mov r3, r5 + bl MOD04_021DE9F4 + mov r6, r0 + ldr r0, _021E6030 ; =UNK04_0220D3F8 + add r1, sp, #0x12 + add r2, sp, #0x30 + mov r3, r5 + bl MOD04_021DE9F4 + mov fp, r0 + ldr r0, _021E6034 ; =UNK04_0220D3FC + add r1, sp, #0x10 + add r2, sp, #0x30 + mov r3, r5 + bl MOD04_021DE9F4 + cmp r6, #0 + ble _021E5DB4 + cmp fp, #0 + ble _021E5DB4 + cmp r0, #0 + ble _021E5DB4 + add r0, sp, #0x1c + mov r1, r8 + mov r2, r4 + bl strtoul + cmp r0, #3 + bne _021E5DB4 + add r0, sp, #0x12 + mov r1, r8 + mov r2, r4 + bl strtoul + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x16] + cmp r6, r0 + bne _021E5DB4 + ldr r0, [sp, #4] + cmp sl, r0 + moveq r0, #1 + streq r0, [sp] + ldr r1, [sp] + mov r0, sl + bl MOD04_021E6038 + add sp, sp, #0x23c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E6028: .word 0x00000BB8 +_021E602C: .word UNK04_0220D3F4 +_021E6030: .word UNK04_0220D3F8 +_021E6034: .word UNK04_0220D3FC + arm_func_end MOD04_021E5D30 + + arm_func_start MOD04_021E6038 +MOD04_021E6038: ; 0x021E6038 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r5, r0 + cmp r1, #0 + bne _021E606C + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E60A0 + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + bne _021E60A0 +_021E606C: + bl MOD04_021E26E4 + mov r1, #1 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl MOD04_021E26E4 + str r5, [r0, #0xf4] + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E60A0: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6124 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, #0 + bl MOD04_02203BF4 + mov r6, r0 + bl MOD04_021E26E4 + mov r4, r0 + ldr r1, _021E61E4 ; =UNK04_0220D3AC + mov r0, r6 + mov r2, #0 + bl MOD04_0220394C + str r0, [r4, #0xf4] + bl MOD04_021E26E4 + mov r4, r0 + mov r0, r6 + bl MOD04_02203908 + str r0, [r4, #0x24] + bl MOD04_021E26E4 + mov r4, r0 + mov r0, r6 + bl MOD04_022038E4 + strh r0, [r4, #0xa4] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + mov r4, #1 + str r0, [r6, #0x204] + b _021E6160 +_021E6124: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E613C + bl MOD04_021E26E4 + str r5, [r0, #0xf4] +_021E613C: + bl MOD04_021E26E4 + str r5, [r0, #0x204] + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + str r0, [sp, #0xc] + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + mov r4, #3 + str r0, [sp, #0x10] +_021E6160: + bl MOD04_021E26E4 + ldr r1, _021E61E8 ; =0x00001770 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0x1cc] + str r1, [r6, #0x1d0] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + movne r7, #0xb + moveq r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + str r0, [sp, #8] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + add r2, sp, #8 + str r2, [sp] + mov r3, r0 + str r4, [sp, #4] + ldrh r3, [r3, #0xa4] + ldr r2, [r6, #0x24] + mov r1, r5 + mov r0, r7 + bl MOD04_021E7884 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E61E4: .word UNK04_0220D3AC +_021E61E8: .word 0x00001770 + arm_func_end MOD04_021E6038 + + arm_func_start MOD04_021E61EC +MOD04_021E61EC: ; 0x021E61EC + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6210 + mov r0, r4 + bl MOD04_021E38E8 + ldmia sp!, {r4, pc} +_021E6210: + mov r0, r4 + bl MOD04_021E397C + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E61EC + + arm_func_start MOD04_021E621C +MOD04_021E621C: ; 0x021E621C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5] + mov r6, r0 + add r4, r1, #2 + cmp r4, #2 + bls _021E6250 + bl MOD04_021E26E4 + sub r2, r4, #2 + add r1, r0, #0x350 + add r0, r5, #4 + mov r2, r2, lsl #2 + bl MIi_CpuCopy32 +_021E6250: + bl MOD04_021E26E4 + sub r1, r4, #1 + str r1, [r0, #0x348] + bl MOD04_021E26E4 + str r6, [r0, #0x34c] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E621C + + arm_func_start MOD04_021E6268 +MOD04_021E6268: ; 0x021E6268 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E62A4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20] + cmp r6, r0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E62A4: + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + str r6, [r0, #0x20] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r6, [r0, #0xf4] + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r5, [r0, #0x24] + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #1 + strh r4, [r0, #0xa4] + bl MOD04_021E26E4 + str r5, [r0, #0x1b8] + bl MOD04_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb4] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E40F4 + ldrb r1, [r4, #0x14] + add r1, r1, #1 + add r1, r5, r1 + strb r0, [r1, #0x2d0] + str r6, [sp, #8] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + mov r7, #1 + add r0, r0, #1 + add r0, r4, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0xc] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _021E6414 + add r6, sp, #8 + mov r5, #2 + mov r4, #7 +_021E63B8: + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + str r6, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sb, r7, lsl #2 + add r2, r8, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl MOD04_021E7884 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r7, r7, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r7, r0 + ble _021E63B8 +_021E6414: + mov r0, #1 + bl MOD04_021E3E28 + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end MOD04_021E6268 + + arm_func_start MOD04_021E6428 +MOD04_021E6428: ; 0x021E6428 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r8, r3 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E6490 + cmp r0, #1 + beq _021E6460 + cmp r0, #2 + beq _021E6670 + b _021E6724 +_021E6460: + bl MOD04_021E26E4 + ldr r0, [r0] + mov r1, r7 + bl MOD04_021F05F4 + cmp r0, #0 + moveq r4, #0xff + beq _021E6724 + mov r0, r7 + bl MOD04_021E4074 + cmp r0, #0 + moveq r4, #3 + beq _021E6724 +_021E6490: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r8, r0 + bne _021E64F8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + bne _021E64F8 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + beq _021E64F8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E655C + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _021E655C +_021E64F8: + mov r4, #3 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6724 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + ldr r0, [r0, #0xb4] + cmp r0, #0 + bne _021E6724 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E6724 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _021E6724 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + b _021E6724 +_021E655C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + beq _021E657C + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E65AC +_021E657C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E659C + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E65AC +_021E659C: + cmp r6, #0 + bne _021E65B4 + cmp r5, #0 + bne _021E65B4 +_021E65AC: + mov r4, #4 + b _021E6724 +_021E65B4: + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E6668 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r7, r0 + bne _021E6610 + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021E6600 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + cmp r0, r7 + bge _021E6608 + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r7, r0 + beq _021E6608 +_021E6600: + mov r4, #2 + b _021E6724 +_021E6608: + mov r4, #0xff + b _021E6724 +_021E6610: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021E663C + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + cmp r0, r7 + bge _021E6660 + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _021E6660 +_021E663C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + movne r0, #0xff + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, #2 + b _021E6724 +_021E6660: + mov r4, #3 + b _021E6724 +_021E6668: + mov r4, #2 + b _021E6724 +_021E6670: + bl MOD04_021E26E4 + ldr r0, [r0] + mov r1, r7 + bl MOD04_021F05F4 + cmp r0, #0 + moveq r4, #0xff + beq _021E6724 + cmp r8, #3 + bne _021E66B0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E66B8 +_021E66B0: + mov r4, #3 + b _021E6724 +_021E66B8: + ldr r0, _021E672C ; =UNK04_022106DC + ldrb r1, [r0] + cmp r1, #1 + bne _021E66D8 + ldrb r0, [r0, #1] + cmp r0, #1 + moveq r4, #0x13 + beq _021E6724 +_021E66D8: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + bne _021E6718 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E6708 + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E6718 +_021E6708: + cmp r6, #0 + bne _021E6720 + cmp r5, #0 + bne _021E6720 +_021E6718: + mov r4, #4 + b _021E6724 +_021E6720: + mov r4, #2 +_021E6724: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E672C: .word UNK04_022106DC + arm_func_end MOD04_021E6428 + + arm_func_start MOD04_021E6730 +MOD04_021E6730: ; 0x021E6730 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x118 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov sl, r3 + ldr r6, [sp, #0x138] + ldr r5, [sp, #0x13c] + mov r4, #0 + bl MOD04_021E26E4 + cmp r0, #0 + beq _021E6770 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0 + bne _021E677C +_021E6770: + add sp, sp, #0x118 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E677C: + bl MOD04_021DF88C + cmp r0, #5 + bne _021E67AC + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E67AC + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E67AC + bl MOD04_021E3E9C +_021E67AC: + cmp sb, #0x40 + bgt _021E684C + cmp sb, #0x40 + bge _021E7594 + cmp sb, #0x20 + addls pc, pc, sb, lsl #2 + b _021E7608 +_021E67C8: ; jump table + b _021E7608 ; case 0 + b _021E6854 ; case 1 + b _021E6A20 ; case 2 + b _021E6BF8 ; case 3 + b _021E6C58 ; case 4 + b _021E6D78 ; case 5 + b _021E6DF4 ; case 6 + b _021E6F04 ; case 7 + b _021E701C ; case 8 + b _021E719C ; case 9 + b _021E71F0 ; case 10 + b _021E6854 ; case 11 + b _021E7298 ; case 12 + b _021E730C ; case 13 + b _021E730C ; case 14 + b _021E730C ; case 15 + b _021E7330 ; case 16 + b _021E7380 ; case 17 + b _021E7424 ; case 18 + b _021E7480 ; case 19 + b _021E7608 ; case 20 + b _021E7608 ; case 21 + b _021E7608 ; case 22 + b _021E7608 ; case 23 + b _021E7608 ; case 24 + b _021E7608 ; case 25 + b _021E7608 ; case 26 + b _021E7608 ; case 27 + b _021E7608 ; case 28 + b _021E7608 ; case 29 + b _021E7608 ; case 30 + b _021E7608 ; case 31 + b _021E7498 ; case 32 +_021E684C: + cmp sb, #0x41 + b _021E7608 +_021E6854: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + ldrne r0, [r6, #8] + ldrne r7, [r6, #4] + movne r0, r0, lsl #0x10 + movne sl, r0, lsr #0x10 + cmp sb, #0xb + moveq r0, #1 + movne r0, #0 + str r0, [sp] + ldr r3, [r6] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl MOD04_021E6428 + mov r5, r0 + cmp r5, #2 + bne _021E6994 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1dc] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl MOD04_021E6268 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E6918 + bl MOD04_021E26E4 + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _021E6918 + bl MOD04_021E26E4 + mov r6, r0 + mov r0, r8 + bl MOD04_021E1F18 + mov r4, r0 + bl MOD04_021E26E4 + ldr r1, [r0, #0x470] + ldr r2, [r6, #0x46c] + mov r0, r4 + blx r2 +_021E6918: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + mov r4, #1 + str r0, [sp, #0x14] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _021E6960 + add r6, sp, #0x14 +_021E693C: + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r6, r4, lsl #2] + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + cmp r4, r0 + ble _021E693C +_021E6960: + bl MOD04_021E26E4 + ldr r1, [r0, #0x1c] + add r0, sp, #0x14 + str r1, [r0, r4, lsl #2] + bl MOD04_021E26E4 + ldrh r2, [r0, #0x1a] + add r3, r4, #1 + add r1, sp, #0x14 + mov r0, #0xb + str r2, [r1, r3, lsl #2] + add r4, r4, #2 + bl MOD04_021E26D0 + b _021E69E0 +_021E6994: + cmp r5, #3 + bne _021E69E0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _021E69E0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r1, [r6, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E69E0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r0, #0x10 + streq r0, [sp, #0x14] + moveq r4, #1 +_021E69E0: + cmp r5, #0xff + beq _021E7608 + add r1, sp, #0x14 + str r1, [sp] + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, sl + str r4, [sp, #4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6A20: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x24] + bl MOD04_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xa4] + bl MOD04_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x1b8] + bl MOD04_021E26E4 + ldr r1, [r6] + add r0, r0, #0x100 + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xb4] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E6B4C + ldr r1, [r6] + add r0, r6, #4 + bl MOD04_021E5138 + cmp r0, #0 + beq _021E6B08 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E6B4C + mov r0, r8 + mov r1, r6 + bl MOD04_021E621C + b _021E6B4C +_021E6B08: + mov r0, r8 + bl MOD04_021E5BF0 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, #0 + mov r1, r0 + mov r2, r8 + bl MOD04_021E5D30 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6B4C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6BD0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E6B90 + mov r0, r8 + mov r1, r6 + bl MOD04_021E621C + bl MOD04_021E5824 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6B90: + mov r0, #6 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, #0 + bl MOD04_02203BF4 + mov r2, r0 + mov r0, #0 + mov r1, r0 + bl MOD04_021E7B04 + bl MOD04_021E37A4 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6BD0: + mov r0, #5 + bl MOD04_021E26D0 + mov r0, r8 + bl MOD04_021E7E5C + bl MOD04_021E38E8 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6BF8: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + cmp r5, #0 + ble _021E6C44 + ldr r0, [r6] + cmp r0, #0x10 + bne _021E6C44 + mov r0, #0xd + mov r1, #0 + bl MOD04_021E8E08 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6C44: + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + bl MOD04_021E5C44 + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6C58: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E6CAC + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a7] + cmp r0, #0x10 + blo _021E6CBC +_021E6CAC: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E6D00 +_021E6CBC: + bl MOD04_021E26E4 + mov r1, #1 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E7608 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1a7] + add r1, r1, #1 + strb r1, [r0, #0x1a7] + b _021E7608 +_021E6D00: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6D54 + mov r0, #3 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #1 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _021E7608 +_021E6D54: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7608 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl MOD04_021E5D30 + b _021E7608 +_021E6D78: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _021E7608 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E6DD8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + bne _021E6DD8 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf8] + cmp r8, r0 + bne _021E6DD8 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C +_021E6DD8: + mov r0, r8 + bl MOD04_021E59D4 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6DF4: + ldr r0, [r6, #4] + ldr r4, [r6] + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E6E20 + mov r0, #6 + bl MOD04_021E26D0 + b _021E6E50 +_021E6E20: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E6E40 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _021E7608 +_021E6E40: + bl MOD04_021E26E4 + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _021E7608 +_021E6E50: + bl MOD04_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + beq _021E6E9C + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r8, [r0, #0xf4] +_021E6E9C: + mov r1, r5, asr #8 + mov r0, r5, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + str r4, [sp, #0x10] + strh r0, [sp, #0xe] + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x194] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD43C + mov r4, r0 + bl MOD04_021E26E4 + add r3, r0, #0x194 + mov r1, r4 + mov r0, #0 + add r2, sp, #0xc + bl MOD04_021E2784 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + b _021E7608 +_021E6F04: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + ldr r0, [r6] + str r0, [sp, #8] + ldr r0, [r6, #4] + and r4, r0, #0xff + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E6F98 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E6F98 + ldr r0, [sp, #8] + bl MOD04_021E4074 + str r0, [sp, #0x14] + add r0, sp, #0x14 + str r0, [sp] + mov r5, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x20 + str r5, [sp, #4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6F98: + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + ldr r1, [sp, #8] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + str r1, [r0, #0xf4] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + bl MOD04_021E26E4 + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _021E7608 + bl MOD04_021E26E4 + mov r5, r0 + ldr r0, [sp, #8] + bl MOD04_021E1F18 + mov r4, r0 + bl MOD04_021E26E4 + ldr r1, [r0, #0x470] + ldr r2, [r5, #0x46c] + mov r0, r4 + blx r2 + b _021E7608 +_021E701C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E7608 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + ldr r0, [r6] + str r0, [sp, #8] + cmp r0, #0 + bne _021E7084 + ldr r5, [r6, #4] + ldr r4, [r6, #8] + bl MOD04_021E26E4 + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r2, [r0, #0x200] + add r1, r4, r5, lsl #2 + mov r0, #3 + str r2, [r1, #0xf4] + bl MOD04_021E51C0 + b _021E7608 +_021E7084: + ldr r0, [r6, #8] + ldr r4, [r6, #4] + and r5, r0, #0xff + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r1, [sp, #8] + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _021E7104 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + sub r0, r0, #1 + cmp r4, r0 + bne _021E7104 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + add r1, sp, #8 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r8 + mov r0, #9 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7104: + bl MOD04_021E26E4 + ldr r1, [sp, #8] + add r0, r0, r4, lsl #2 + str r1, [r0, #0xf4] + bl MOD04_021E26E4 + add r0, r4, r0 + strb r5, [r0, #0x2d0] + bl MOD04_021E26E4 + ldr r1, [r6, #0xc] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x24] + bl MOD04_021E26E4 + ldr r1, [r6, #0x10] + add r0, r0, r4, lsl #1 + strh r1, [r0, #0xa4] + bl MOD04_021E26E4 + ldr r1, [r6, #0xc] + str r1, [r0, #0x1b8] + bl MOD04_021E26E4 + add r1, r0, #0x100 + ldr r2, [r6, #0x10] + mov r0, #5 + strh r2, [r1, #0xb4] + bl MOD04_021E26D0 + ldr r0, [sp, #8] + bl MOD04_021E7E5C + bl MOD04_021E38E8 + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + b _021E7608 +_021E719C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + bne _021E7608 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a4] + ldr r1, [r6] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _021E7608 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1a4] + add r1, r1, #1 + strb r1, [r0, #0x1a4] + mov r0, #0 + bl MOD04_021E51C0 + b _021E7608 +_021E71F0: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + beq _021E7210 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _021E7608 +_021E7210: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E7234 + ldr r1, [r6] + add r0, r6, #4 + bl MOD04_021E5138 + cmp r0, #0 + beq _021E7250 +_021E7234: + bl MOD04_021E26E4 + ldr r1, [r6, #4] + str r1, [r0, #0x208] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + b _021E725C +_021E7250: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] +_021E725C: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E7280 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C + b _021E7608 +_021E7280: + bl MOD04_021E4BF4 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7298: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E72C8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E72E4 +_021E72C8: + mov r0, r8 + bl MOD04_021E5908 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E72E4: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E7608 + bl MOD04_021E26E4 + str r8, [r0, #0x20c] + bl MOD04_021E4B40 + mov r0, #0 + bl MOD04_021E4CF8 + b _021E7608 +_021E730C: + ldr r2, [r6] + mov r0, r8 + mov r1, sb + bl MOD04_021E43E0 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7330: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + addne sp, sp, #0x118 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r5, #0 + mov r7, #0 + ble _021E7608 + mov r4, r7 +_021E7358: + ldr r0, [r6, r7, lsl #2] + mov r1, r4 + bl MOD04_021E3F28 + cmp r0, #0xff + beq _021E7370 + bl MOD04_021DF9D4 +_021E7370: + add r7, r7, #1 + cmp r7, r5 + blt _021E7358 + b _021E7608 +_021E7380: + ldr r0, _021E7614 ; =UNK04_022106D4 + ldr r4, [r0] + cmp r4, #0 + beq _021E73E0 + ldrb r0, [r4] + cmp r0, #0 + beq _021E73E0 + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E7618 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + movhs r0, #1 + strhs r0, [sp, #0x14] + bhs _021E73E8 +_021E73E0: + mov r0, #0 + str r0, [sp, #0x14] +_021E73E8: + add r0, sp, #0x14 + str r0, [sp] + mov r4, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x12 + str r4, [sp, #4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7424: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _021E7608 + mov r0, r8 + mov r1, #0 + bl MOD04_021E3F28 + cmp r0, #0xff + beq _021E7608 + ldr r1, _021E7614 ; =UNK04_022106D4 + mov r4, #1 + ldr r3, [r1] + mov r5, r4,lsl r0 + ldr r2, [r3, #8] + orr r0, r2, r4, lsl r0 + str r0, [r3, #8] + ldr r0, [r6] + cmp r0, #0 + ldrne r1, [r1] + ldrne r0, [r1, #0xc] + orrne r0, r0, r5 + strne r0, [r1, #0xc] + b _021E7608 +_021E7480: + mov r0, #0xc + mov r1, #0 + bl MOD04_021E8E08 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7498: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7608 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E7608 + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E7608 +_021E74CC: + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E757C + ldr r0, [r6] + cmp r0, #0 + bne _021E7554 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E750C + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E7524 +_021E750C: + bl MOD04_021E4E00 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7524: + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E754C + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + bl MOD04_022006B4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E754C: + bl MOD04_021E4CB4 + b _021E7608 +_021E7554: + bl MOD04_021E26E4 + mov r4, r0 + mov r0, r8 + mov r1, #0 + bl MOD04_021E3F28 + ldr r2, [r4, #0x1dc] + mov r1, #1 + orr r0, r2, r1, lsl r0 + str r0, [r4, #0x1dc] + b _021E7608 +_021E757C: + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E74CC + b _021E7608 +_021E7594: + mov r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E7608 +_021E75A8: + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E75F4 + mov r4, #0 + str r4, [sp] + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x41 + str r4, [sp, #4] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E75F4: + add r4, r4, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E75A8 +_021E7608: + mov r0, #1 + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E7614: .word UNK04_022106D4 +_021E7618: .word 0x000082EA + arm_func_end MOD04_021E6730 + + arm_func_start MOD04_021E761C +MOD04_021E761C: ; 0x021E761C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r1 + mov r4, r0 + mov r8, r2 + mov r0, sb + mov r1, #0 + bl strchr + mov r7, r0 + cmp r8, #0 + mov r6, #0 + ble _021E767C + mov r5, #0x2f +_021E7650: + mov r0, sb + mov r1, r5 + bl strchr + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r6, r6, #1 + cmp r6, r8 + add sb, r0, #1 + blt _021E7650 +_021E767C: + mov r0, sb + mov r1, #0x2f + bl strchr + cmp r0, #0 + moveq r0, r7 + cmp sb, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + sub r5, r0, sb + mov r0, sb + mov r1, r4 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, #0 + mov r0, r5 + strb r1, [r4, r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end MOD04_021E761C + + arm_func_start MOD04_021E76C8 +MOD04_021E76C8: ; 0x021E76C8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x208 + mov r7, r0 + mov r5, r2 + mov r4, r3 + mov r0, #3 + mov r6, r1 + str r0, [sp] + ldr ip, _021E7760 ; =UNK04_0220D410 + ldr r2, _021E7764 ; =UNK04_0220D400 + ldr r3, _021E7768 ; =UNK04_0220D408 + add r0, sp, #8 + mov r1, #0x200 + str ip, [sp, #4] + bl OS_SNPrintf + add r1, sp, #8 + add r2, sp, #9 + strb r6, [r1, r0] + mov r1, #0 + strb r1, [r2, r0] + cmp r4, #0 + add r8, r2, r0 + beq _021E7748 + mov r0, r4 + bl strlen + mov r6, r0 + mov r0, r4 + mov r1, r8 + mov r2, r6 + bl MI_CpuCopy8 + mov r0, #0 + strb r0, [r8, r6] +_021E7748: + add r2, sp, #8 + mov r0, r7 + mov r1, r5 + bl MOD04_021F02B8 + add sp, sp, #0x208 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E7760: .word UNK04_0220D410 +_021E7764: .word UNK04_0220D400 +_021E7768: .word UNK04_0220D408 + arm_func_end MOD04_021E76C8 + + arm_func_start MOD04_021E776C +MOD04_021E776C: ; 0x021E776C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x9c + mov r5, r0 + mov r8, r1 + mov r7, r2 + cmp r3, #0 + ldr r4, [sp, #0xb8] + beq _021E77A8 + cmp r4, #0 + beq _021E77A8 + add r1, sp, #0x18 + mov r0, r3 + mov r2, r4, lsl #2 + bl MIi_CpuCopy32 + b _021E77AC +_021E77A8: + mov r4, #0 +_021E77AC: + ldr r6, _021E7880 ; =UNK04_0220D398 + add sb, sp, #4 + ldrb r3, [r6] + ldrb r2, [r6, #1] + mov r0, r4, lsl #2 + mov r1, #3 + strb r3, [sb] + strb r2, [sb, #1] + ldrb r3, [r6, #2] + ldrb r2, [r6, #3] + strb r3, [sb, #2] + strb r2, [sb, #3] + ldrb r2, [r6, #4] + strb r2, [sb, #4] + str r1, [sp, #8] + strb r5, [sp, #0xc] + strb r0, [sp, #0xd] + bl MOD04_021E26E4 + ldrh r0, [r0, #0x1a] + strh r0, [sp, #0xe] + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c] + str r0, [sp, #0x10] + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + mov r6, #0 + str r0, [sp, #0x14] + mov r4, r6 +_021E781C: + bl MOD04_021E26E4 + mov r5, r0 + mov r0, r8 + mov r1, r4 + mov r2, r4 + bl MOD04_021FFEB0 + mov r1, r0 + ldrb r0, [sp, #0xd] + mov r2, r7 + mov r3, sb + add r0, r0, #0x14 + str r0, [sp] + ldr r0, [r5, #0xe4] + bl MOD04_02203CC4 + cmp r0, #0 + addeq sp, sp, #0x9c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r0, #2 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r6, r6, #1 + cmp r6, #5 + blt _021E781C + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E7880: .word UNK04_0220D398 + arm_func_end MOD04_021E776C + + arm_func_start MOD04_021E7884 +MOD04_021E7884: ; 0x021E7884 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x224 + mov fp, r0 + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr sl, [sp, #0x248] + ldr sb, [sp, #0x24c] + mov r8, #0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E78E0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E78D8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E7900 +_021E78D8: + cmp fp, #6 + bne _021E7900 +_021E78E0: + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + mov r0, fp + mov r3, sl + str sb, [sp] + bl MOD04_021E776C + mov r4, r0 + b _021E79A0 +_021E7900: + cmp sl, #0 + beq _021E7978 + cmp sb, #0 + beq _021E7978 + ldr r3, [sl] + ldr r2, _021E7A3C ; =UNK04_0220D394 + add r0, sp, #0x20 + mov r1, #0x200 + bl OS_SNPrintf + mov r8, r0 + cmp sb, #1 + mov r7, #1 + ble _021E7978 + add r6, sp, #0x10 + mov r5, #0x10 +_021E793C: + ldr r3, [sl, r7, lsl #2] + ldr r2, _021E7A40 ; =UNK04_0220D414 + mov r0, r6 + mov r1, r5 + bl OS_SNPrintf + mov r4, r0 + add r1, sp, #0x20 + mov r0, r6 + add r1, r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + add r7, r7, #1 + add r8, r8, r4 + cmp r7, sb + blt _021E793C +_021E7978: + add r0, sp, #0x20 + mov r1, #0 + strb r1, [r0, r8] + bl MOD04_021E26E4 + ldr r0, [r0] + ldr r2, [sp, #4] + add r3, sp, #0x20 + mov r1, fp + bl MOD04_021E76C8 + mov r4, r0 +_021E79A0: + cmp fp, #2 + beq _021E79C0 + cmp fp, #6 + beq _021E79C0 + add r0, fp, #0xf8 + and r0, r0, #0xff + cmp r0, #1 + bhi _021E7A30 +_021E79C0: + bl MOD04_021E26E4 + strb fp, [r0, #0x3cc] + bl MOD04_021E26E4 + add r1, r0, #0x300 + ldr r0, [sp, #0xc] + strh r0, [r1, #0xce] + bl MOD04_021E26E4 + ldr r1, [sp, #8] + str r1, [r0, #0x3d0] + bl MOD04_021E26E4 + ldr r1, [sp, #4] + str r1, [r0, #0x454] + bl MOD04_021E26E4 + str sb, [r0, #0x458] + bl MOD04_021E26E4 + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x45c] + str r1, [r5, #0x460] + cmp sl, #0 + beq _021E7A30 + cmp sb, #0 + beq _021E7A30 + bl MOD04_021E26E4 + add r1, r0, #0x3d4 + mov r0, sl + mov r2, sb, lsl #2 + bl MIi_CpuCopy32 +_021E7A30: + mov r0, r4 + add sp, sp, #0x224 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E7A3C: .word UNK04_0220D394 +_021E7A40: .word UNK04_0220D414 + arm_func_end MOD04_021E7884 + + arm_func_start MOD04_021E7A44 +MOD04_021E7A44: ; 0x021E7A44 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + ldrb r0, [r7] + cmp r0, #0 + bne _021E7A9C + bl MOD04_021E26E4 + mov r4, r0 + mov r1, #0 + ldr r0, [r7, #4] + mov r2, r1 + bl MOD04_021FFEB0 + mov r1, r0 + ldrh r2, [r7, #2] + ldr r0, [r4, #0xe4] + ldr r3, [r7, #8] + bl MOD04_02203C7C + bl MOD04_021E38E8 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E7A9C: + ldr r5, _021E7AFC ; =MOD04_021E2784 + ldr r4, _021E7B00 ; =MOD04_021E2B60 + mov r6, #0 +_021E7AA8: + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD43C + str r5, [sp] + str r7, [sp, #4] + ldrb r2, [r7] + ldr r1, [r7, #8] + mov r3, r4 + bl MOD04_022006EC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + add r6, r6, #1 + cmp r6, #5 + blt _021E7AA8 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E7AFC: .word MOD04_021E2784 +_021E7B00: .word MOD04_021E2B60 + arm_func_end MOD04_021E7A44 + + arm_func_start MOD04_021E7B04 +MOD04_021E7B04: ; 0x021E7B04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r8, r1 + mov r7, r2 + bl MOD04_021E26E4 + cmp r4, #0 + ldrb r6, [r0, #0x14] + mov r4, #0 + bne _021E7D48 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + add r1, r0, #0x100 + ldr r2, [r5, #0x200] + ldr r0, _021E7DEC ; =0x0000FFFF + ldrh r1, [r1, #0x7e] + and r2, r2, r0 + mov r0, r7 + orr r8, r2, r1, lsl #16 + bl MOD04_022038C4 + cmp r0, #0 + beq _021E7BC0 + mov r0, r7 + bl MOD04_02203908 + mov r5, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203BCC + cmp r5, r0 + movne r5, #1 + bne _021E7C48 + bl MOD04_021E26E4 + mov r5, r0 + mov r0, r7 + bl MOD04_022038BC + add r1, r5, r6, lsl #2 + str r0, [r1, #0x210] + bl MOD04_021E26E4 + mov r5, r0 + mov r0, r7 + bl MOD04_02203898 + add r1, r5, r6, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, r4 + b _021E7C48 +_021E7BC0: + bl SOC_GetHostID + mov r0, r0, lsl #0x10 + ldr r1, _021E7DEC ; =0x0000FFFF + ldr r2, _021E7DF0 ; =0x0000A8C0 + and r1, r1, r0, lsr #16 + cmp r1, r2 + mov r0, r0, lsr #0x10 + beq _021E7C08 + and r1, r0, #0xff + cmp r1, #0xac + bne _021E7C00 + and r0, r0, #0xff00 + cmp r0, #0x1000 + blo _021E7C00 + cmp r0, #0x1f00 + bls _021E7C08 +_021E7C00: + cmp r1, #0x10 + bne _021E7C10 +_021E7C08: + mov r5, #1 + b _021E7C48 +_021E7C10: + bl MOD04_021E26E4 + mov r5, r0 + mov r0, r7 + bl MOD04_02203908 + add r1, r5, r6, lsl #2 + str r0, [r1, #0x210] + bl MOD04_021E26E4 + mov r5, r0 + mov r0, r7 + bl MOD04_022038E4 + add r1, r5, r6, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, #0 +_021E7C48: + cmp r5, #0 + beq _021E7C74 + bl MOD04_021E26E4 + mov r6, r0 + mov r0, #0x10000 + bl MOD04_021DE8C8 + add r1, r6, #0x100 + strh r0, [r1, #0x7e] + bl MOD04_021E26E4 + str r8, [r0, #0x19c] + b _021E7D00 +_021E7C74: + bl SOC_GetHostID + str r0, [sp, #8] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD454 + str r0, [sp, #0xc] + bl MOD04_021E26E4 + mov sb, r0 + mov r0, r7 + bl MOD04_02203908 + mov r8, r0 + mov r0, r7 + bl MOD04_022038E4 + add r1, sb, r6, lsl #2 + add r6, sp, #8 + mov r3, r0 + mov r0, #2 + str r6, [sp] + str r0, [sp, #4] + ldr r1, [r1, #0xf4] + mov r2, r8 + mov r0, #6 + bl MOD04_021E7884 + mov r6, r0 + bl MOD04_021E26E4 + mov r1, #0 + cmp r6, #0 + strb r1, [r0, #0x3cd] + addne sp, sp, #0x14 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E7D00: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x194] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x195] + bl MOD04_021E26E4 + mov r6, r0 + mov r0, r7 + bl MOD04_022038E4 + add r1, r6, #0x100 + strh r0, [r1, #0x96] + bl MOD04_021E26E4 + mov r6, r0 + mov r0, r7 + bl MOD04_02203908 + str r0, [r6, #0x198] + b _021E7D88 +_021E7D48: + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x194] + bl MOD04_021E26E4 + mov r1, r4 + strb r1, [r0, #0x195] + bl MOD04_021E26E4 + add r0, r0, #0x100 + mov r1, r4 + strh r1, [r0, #0x96] + bl MOD04_021E26E4 + mov r1, r4 + str r1, [r0, #0x198] + bl MOD04_021E26E4 + str r8, [r0, #0x19c] + mov r5, #1 +_021E7D88: + cmp r5, #0 + beq _021E7DA4 + bl MOD04_021E26E4 + add r0, r0, #0x194 + bl MOD04_021E7A44 + mov r4, r0 + b _021E7DE0 +_021E7DA4: + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD43C + mov r5, r0 + bl MOD04_021E26E4 + add r3, r0, #0x194 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl MOD04_021E2784 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] +_021E7DE0: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E7DEC: .word 0x0000FFFF +_021E7DF0: .word 0x0000A8C0 + arm_func_end MOD04_021E7B04 + + arm_func_start MOD04_021E7DF4 +MOD04_021E7DF4: ; 0x021E7DF4 + stmdb sp!, {lr} + sub sp, sp, #0x24 + mov lr, #3 + ldr ip, _021E7E48 ; =UNK04_0220D3AC + str lr, [sp] + str ip, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, _021E7E4C ; =UNK04_0220D3CC + ldr r1, _021E7E50 ; =UNK04_0220D3D8 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r2, _021E7E54 ; =UNK04_0220D418 + ldr r3, _021E7E58 ; =UNK04_0220D3E4 + mov r1, #0x100 + str ip, [sp, #0x20] + bl OS_SNPrintf + add sp, sp, #0x24 + ldmfd sp!, {pc} + .align 2, 0 +_021E7E48: .word UNK04_0220D3AC +_021E7E4C: .word UNK04_0220D3CC +_021E7E50: .word UNK04_0220D3D8 +_021E7E54: .word UNK04_0220D418 +_021E7E58: .word UNK04_0220D3E4 + arm_func_end MOD04_021E7DF4 + + arm_func_start MOD04_021E7E5C +MOD04_021E7E5C: ; 0x021E7E5C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x1b0 + mov r7, #8 + mov r6, #0xa + mov r5, #0x32 + mov r4, #0x33 + mov r3, #0x34 + mov r2, #0x35 + mov r1, #0x36 + strb r7, [sp, #0x10c] + strb r6, [sp, #0x10d] + strb r5, [sp, #0x10e] + strb r4, [sp, #0x10f] + strb r3, [sp, #0x110] + strb r2, [sp, #0x111] + strb r1, [sp, #0x112] + mov r5, r0 + mov r4, #7 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E7EC4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7EF4 +_021E7EC4: + add r1, sp, #0x100 + ldr r2, _021E8020 ; =UNK04_02210704 + add r1, r1, #0x13 + mov r3, #0 +_021E7ED4: + ldrb r0, [r2] + add r3, r3, #1 + add r2, r2, #0xc + cmp r0, #0 + strneb r0, [r1], #1 + addne r4, r4, #1 + cmp r3, #0x9a + blt _021E7ED4 +_021E7EF4: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E7FAC +_021E7F08: ; jump table + b _021E7FAC ; case 0 + b _021E7FAC ; case 1 + b _021E7F8C ; case 2 + b _021E7F20 ; case 3 + b _021E7F8C ; case 4 + b _021E7F8C ; case 5 +_021E7F20: + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _021E7F84 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldr r1, [r6, #0x200] + ldrb r2, [r5, #0x16] + ldrb r3, [r0, #0x15] + add r0, sp, #0xc + bl MOD04_021E7DF4 + ldr r0, _021E8024 ; =UNK04_022106E0 + ldr r5, [r0] + cmp r5, #0 + beq _021E7FAC + add r0, sp, #0xc + ldr r2, _021E8028 ; =UNK04_0220D470 + mov r3, r0 + mov r1, #0x100 + str r5, [sp] + bl OS_SNPrintf + b _021E7FAC +_021E7F84: + bl MOD04_021E26E4 + ldr r5, [r0, #0x208] +_021E7F8C: + ldr r2, _021E802C ; =UNK04_0220D47C + ldr r3, _021E8030 ; =UNK04_0220D3AC + add r0, sp, #0xc + mov r1, #0x100 + str r5, [sp] + bl OS_SNPrintf + bl MOD04_021E26E4 + str r5, [r0, #0x204] +_021E7FAC: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203C04 + mov sl, #0 + add sb, sp, #0xc + add r5, sp, #0x10c + mov r6, sl + mov r8, #6 + mov r7, #1 +_021E7FD0: + bl MOD04_021E26E4 + str r4, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + ldr r0, [r0, #0xe4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl MOD04_02203D1C + cmp r0, #0 + addeq sp, sp, #0x1b0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, #2 + addne sp, sp, #0x1b0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sl, #1 + cmp sl, #5 + blt _021E7FD0 + add sp, sp, #0x1b0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E8020: .word UNK04_02210704 +_021E8024: .word UNK04_022106E0 +_021E8028: .word UNK04_0220D470 +_021E802C: .word UNK04_0220D47C +_021E8030: .word UNK04_0220D3AC + arm_func_end MOD04_021E7E5C + + arm_func_start MOD04_021E8034 +MOD04_021E8034: ; 0x021E8034 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E8074 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203E80 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] +_021E8074: + bl MOD04_02200D6C + mov r0, #0 + bl MOD04_021E26D0 + ldr r0, _021E80C0 ; =UNK04_022106E0 + ldr r1, [r0] + cmp r1, #0 + beq _021E80A8 + mov r0, #4 + mov r2, #0 + bl MOD04_021DD904 + ldr r0, _021E80C0 ; =UNK04_022106E0 + mov r1, #0 + str r1, [r0] +_021E80A8: + bl MOD04_021E4164 + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x18] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E80C0: .word UNK04_022106E0 + arm_func_end MOD04_021E8034 + + arm_func_start MOD04_021E80C4 +MOD04_021E80C4: ; 0x021E80C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r0, #0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021E8174 + bl MOD04_021E26E4 + strb r7, [r0, #0x15] + bl MOD04_021E26E4 + strb r6, [r0, #0x16] + bl MOD04_021E26E4 + str r5, [r0, #0x464] + bl MOD04_021E26E4 + str r4, [r0, #0x468] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17d] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x2d0] + mov r0, #0x32 + ldr r1, _021E8160 ; =UNK04_0220D3AC + bl MOD04_0220277C + mov r0, #0x33 + ldr r1, _021E8164 ; =UNK04_0220D3CC + bl MOD04_0220277C + mov r0, #0x34 + ldr r1, _021E8168 ; =UNK04_0220D3D8 + bl MOD04_0220277C + mov r0, #0x35 + ldr r1, _021E816C ; =UNK04_0220D3E4 + bl MOD04_0220277C + mov r0, #0x36 + ldr r1, _021E8170 ; =UNK04_0220D3A0 + bl MOD04_0220277C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E8160: .word UNK04_0220D3AC +_021E8164: .word UNK04_0220D3CC +_021E8168: .word UNK04_0220D3D8 +_021E816C: .word UNK04_0220D3E4 +_021E8170: .word UNK04_0220D3A0 + arm_func_end MOD04_021E80C4 + + arm_func_start MOD04_021E8174 +MOD04_021E8174: ; 0x021E8174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl MOD04_021E26E4 + mov r5, r0 + mov r0, #0x10000 + bl MOD04_021DE8C8 + add r1, r5, #0x100 + strh r0, [r1, #0x7e] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a4] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1aa] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ab] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ac] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + bl MOD04_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb2] + bl MOD04_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb4] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1b8] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1e0] + str r1, [r0, #0x1e4] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1f0] + str r1, [r0, #0x1f4] + bl MOD04_021E26E4 + add r1, r0, #0x3cc + mov r0, #0 + mov r2, #0x98 + bl MIi_CpuClear32 + cmp r4, #2 + bne _021E82F0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x14] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E82CC + mov r0, #1 + bl MOD04_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E82CC: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0xa + bl MOD04_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E82F0: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xd] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xe] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x14] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a5] + bl MOD04_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb0] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c0] + str r1, [r0, #0x1c4] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1cc] + str r1, [r0, #0x1d0] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d4] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x2f0] + bl MOD04_021E26E4 + add r1, r0, #0x24 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl MOD04_021E26E4 + add r1, r0, #0xa4 + mov r0, #0 + mov r2, #0x40 + bl MIi_CpuClear16 + bl MOD04_021E26E4 + add r1, r0, #0xf4 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl MOD04_021E26E4 + add r1, r0, #0x194 + mov r0, #0 + mov r2, #0xc + bl MIi_CpuClear32 + bl MOD04_021E26E4 + add r1, r0, #0x210 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl MOD04_021E26E4 + add r1, r0, #0x290 + mov r0, #0 + mov r2, #0x40 + bl MIi_CpuClear16 + bl MOD04_021E26E4 + add r0, r0, #0x2d0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + bl MOD04_021E26E4 + add r1, r0, #0x348 + mov r0, #0 + mov r2, #0x84 + bl MIi_CpuClear32 + cmp r4, #1 + bne _021E84A8 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E8484 + mov r0, #3 + bl MOD04_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E8484: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #4 + bl MOD04_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E84A8: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x15] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x16] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x18] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a6] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ae] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1f8] + str r1, [r0, #0x1fc] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x46c] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x470] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021E8174 + + arm_func_start MOD04_021E852C +MOD04_021E852C: ; 0x021E852C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E852C + + arm_func_start MOD04_021E854C +MOD04_021E854C: ; 0x021E854C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD04_021E26F4 + ldr r0, _021E85C8 ; =UNK04_022106E0 + ldr r1, [r0] + cmp r1, #0 + beq _021E8584 + mov r0, #4 + mov r2, #0 + bl MOD04_021DD904 + ldr r0, _021E85C8 ; =UNK04_022106E0 + mov r1, #0 + str r1, [r0] +_021E8584: + bl MOD04_021E4164 + ldr r0, _021E85CC ; =UNK04_022106D4 + ldr r1, [r0] + cmp r1, #0 + beq _021E85B0 + mov r0, #4 + mov r2, #0 + bl MOD04_021DD904 + ldr r0, _021E85CC ; =UNK04_022106D4 + mov r1, #0 + str r1, [r0] +_021E85B0: + ldr r0, _021E85D0 ; =UNK04_022106DC + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E85C8: .word UNK04_022106E0 +_021E85CC: .word UNK04_022106D4 +_021E85D0: .word UNK04_022106DC + arm_func_end MOD04_021E854C + + arm_func_start MOD04_021E85D4 +MOD04_021E85D4: ; 0x021E85D4 + stmdb sp!, {lr} + sub sp, sp, #0x2c + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addne sp, sp, #0x2c + movne r0, #0 + ldmneia sp!, {pc} + bl MOD04_021E26E4 + ldrb r1, [r0, #0x16] + ldr r2, _021E8694 ; =UNK04_0220D394 + add r0, sp, #0 + add r3, r1, #1 + mov r1, #0xc + bl OS_SNPrintf + ldr r0, _021E8698 ; =UNK04_0220D484 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl MOD04_021DEB54 + bl MOD04_021E26E4 + ldrb r2, [r0, #0xd] + add r0, sp, #0 + mov r1, #0xc + add r3, r2, #1 + ldr r2, _021E8694 ; =UNK04_0220D394 + bl OS_SNPrintf + ldr r0, _021E869C ; =UNK04_0220D488 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl MOD04_021DEB0C + ldr r2, _021E8694 ; =UNK04_0220D394 + add r0, sp, #0 + mov r1, #0xc + mov r3, #3 + bl OS_SNPrintf + ldr r0, _021E86A0 ; =UNK04_0220D3F4 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl MOD04_021DEB0C + mov r0, #6 + add r1, sp, #0xc + mov r2, #0 + bl MOD04_021E1E30 + add sp, sp, #0x2c + ldmfd sp!, {pc} + .align 2, 0 +_021E8694: .word UNK04_0220D394 +_021E8698: .word UNK04_0220D484 +_021E869C: .word UNK04_0220D488 +_021E86A0: .word UNK04_0220D3F4 + arm_func_end MOD04_021E85D4 + + arm_func_start MOD04_021E86A4 +MOD04_021E86A4: ; 0x021E86A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + bl MOD04_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _021E8748 ; =UNK04_022106E4 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + mov r6, #0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xe] + cmp r0, #0 + blt _021E8730 + ldr r5, _021E8748 ; =UNK04_022106E4 + mov r4, #1 +_021E86E8: + bl MOD04_021E26E4 + mov r8, r0 + bl MOD04_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + ldr r1, [r8, #0x2f0] + mov r0, r4,lsl r0 + ands r0, r1, r0 + beq _021E8730 + bl MOD04_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + add r6, r6, #1 + strb r0, [r5], #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xe] + cmp r6, r0 + ble _021E86E8 +_021E8730: + ldr r0, _021E8748 ; =UNK04_022106E4 + str r0, [r7] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xe] + add r0, r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E8748: .word UNK04_022106E4 + arm_func_end MOD04_021E86A4 + + arm_func_start MOD04_021E874C +MOD04_021E874C: ; 0x021E874C + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021E26E4 + add r0, r0, #0x2d0 + str r0, [r4] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E874C + + arm_func_start MOD04_021E8780 +MOD04_021E8780: ; 0x021E8780 + stmdb sp!, {r4, r5, r6, lr} + mvn r6, #0 + mov r5, #0 + mov r4, #1 +_021E8790: + bl MOD04_021E26E4 + mov r1, r4,lsl r5 + ldr r0, [r0, #0x2f0] + add r5, r5, #1 + ands r0, r1, r0 + addne r6, r6, #1 + cmp r5, #0x20 + blt _021E8790 + mvn r0, #0 + cmp r6, r0 + bne _021E87CC + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} +_021E87CC: + bl MOD04_021E26E4 + strb r6, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E8780 + + arm_func_start MOD04_021E87D8 +MOD04_021E87D8: ; 0x021E87D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0xe] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E87D8 + + arm_func_start MOD04_021E8804 +MOD04_021E8804: ; 0x021E8804 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E8804 + + arm_func_start MOD04_021E8830 +MOD04_021E8830: ; 0x021E8830 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_021E26E4 + add r0, r0, sb, lsl #2 + ldr fp, [r0, #0xf4] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + add r0, r0, sb + ldrb r0, [r0, #0x2d0] + mov r1, #1 + ldr r2, [r4, #0x2f0] + mvn r0, r1, lsl r0 + and r0, r2, r0 + str r0, [r4, #0x2f0] + bl MOD04_021E8780 + sub r0, r8, #1 + cmp sb, r0 + bge _021E8970 + sub r0, r8, sb + sub r6, r0, #1 + cmp r6, #0 + mov r7, #0 + ble _021E8970 +_021E88AC: + add r4, sb, r7 + add r5, r4, #1 + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x24] + add r0, sl, r4, lsl #2 + str r1, [r0, #0x24] + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r0, r0, r5, lsl #1 + ldrh r1, [r0, #0xa4] + add r0, sl, r4, lsl #1 + strh r1, [r0, #0xa4] + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r1, sl, r4, lsl #2 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r1, #0xf4] + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r1, sl, r4, lsl #2 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x210] + str r0, [r1, #0x210] + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r1, sl, r4, lsl #1 + add r1, r1, #0x200 + add r0, r0, r5, lsl #1 + add r0, r0, #0x200 + ldrh r0, [r0, #0x90] + strh r0, [r1, #0x90] + bl MOD04_021E26E4 + mov sl, r0 + bl MOD04_021E26E4 + add r1, r0, r5 + add r0, sl, r4 + ldrb r1, [r1, #0x2d0] + add r7, r7, #1 + cmp r7, r6 + strb r1, [r0, #0x2d0] + blt _021E88AC +_021E8970: + cmp r8, #0 + ble _021E89E0 + sub r4, r8, #1 + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x24] + bl MOD04_021E26E4 + add r0, r0, r4, lsl #1 + mov r1, #0 + strh r1, [r0, #0xa4] + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0xf4] + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x210] + bl MOD04_021E26E4 + add r0, r0, r4, lsl #1 + add r0, r0, #0x200 + mov r1, #0 + strh r1, [r0, #0x90] + bl MOD04_021E26E4 + add r0, r0, r4 + mov r1, #0 + strb r1, [r0, #0x2d0] +_021E89E0: + mov r0, fp + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end MOD04_021E8830 + + arm_func_start MOD04_021E89EC +MOD04_021E89EC: ; 0x021E89EC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl MOD04_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r5, #0 + mov r4, #0 + ble _021E8A48 +_021E8A14: + bl MOD04_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r6, r0 + bne _021E8A3C + mov r0, r4 + mov r1, r5 + bl MOD04_021E8830 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021E8A3C: + add r4, r4, #1 + cmp r4, r5 + blt _021E8A14 +_021E8A48: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E89EC + + arm_func_start MOD04_021E8A50 +MOD04_021E8A50: ; 0x021E8A50 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl MOD04_021E59D4 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E8A50 + + arm_func_start MOD04_021E8A74 +MOD04_021E8A74: ; 0x021E8A74 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl MOD04_021DF88C + cmp r0, #5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #0 + beq _021E8AD4 + ldr r1, _021E8C00 ; =0xFFFEC780 + mov r0, r5 + add r1, r4, r1 + bl MOD04_021E8E08 + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E8AD4: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x2d0] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #1 + beq _021E8B10 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #1 + beq _021E8B10 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + bne _021E8B1C +_021E8B10: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E8B1C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E8B44 + bl MOD04_021E26E4 + ldr r0, [r0, #0x19c] + bl MOD04_022006B4 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E8B44: + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E8B84 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #0 + bne _021E8BF4 + bl MOD04_021E26E4 + mov r1, #3 + strb r1, [r0, #0x1a8] + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD45C + b _021E8BF4 +_021E8B84: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E8BA4 + ldr r1, _021E8C04 ; =0xFFFEC5D2 + mov r0, #6 + bl MOD04_021E8E08 + b _021E8BF4 +_021E8BA4: + bl MOD04_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E8BBC + bl MOD04_021E4BF4 + b _021E8BF4 +_021E8BBC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E8BEC + mov r0, #0x12 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f0] + str r1, [r4, #0x1f4] + b _021E8BF4 +_021E8BEC: + mov r0, #1 + bl MOD04_021E4CF8 +_021E8BF4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E8C00: .word 0xFFFEC780 +_021E8C04: .word 0xFFFEC5D2 + arm_func_end MOD04_021E8A74 + + arm_func_start MOD04_021E8C08 +MOD04_021E8C08: ; 0x021E8C08 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #2 + beq _021E8C30 + cmp r1, #3 + beq _021E8CDC + cmp r1, #4 + beq _021E8DA4 + ldmia sp!, {r4, r5, r6, pc} +_021E8C30: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E8CCC + ldrb r0, [r4] + cmp r0, #1 + bne _021E8C58 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] +_021E8C58: + ldrb r6, [r4, #1] + bl MOD04_021E26E4 + ldrb r1, [r4, #2] + add r0, r0, r6 + strb r1, [r0, #0x2d0] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r1, [r0, #0x200] + add r0, r4, r6, lsl #2 + str r1, [r0, #0xf4] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E8CA4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E8CB8 +_021E8CA4: + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] +_021E8CB8: + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + mov r0, #9 + bl MOD04_021E26D0 +_021E8CCC: + mov r0, r5 + mov r1, #3 + bl MOD04_021E4910 + ldmia sp!, {r4, r5, r6, pc} +_021E8CDC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + bne _021E8D94 + bl MOD04_021E26E4 + ldr r2, [r0, #0x1d4] + mov r1, #1 + orr r1, r2, r1, lsl r5 + str r1, [r0, #0x1d4] + ldrb r1, [r4] + ldrb r0, [r4, #1] + orr r4, r1, r0, lsl #8 + bl MOD04_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r4, r0 + ble _021E8D2C + bl MOD04_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_021E8D2C: + mov r0, #0 + bl MOD04_021E3EC4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1d4] + cmp r4, r0 + ldmneia sp!, {r4, r5, r6, pc} + mov r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E8D88 + mov r4, #4 +_021E8D60: + bl MOD04_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + mov r1, r4 + bl MOD04_021E4910 + add r5, r5, #1 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E8D60 +_021E8D88: + mov r0, #0x11 + bl MOD04_021E26D0 + ldmia sp!, {r4, r5, r6, pc} +_021E8D94: + mov r0, r5 + mov r1, #4 + bl MOD04_021E4910 + ldmia sp!, {r4, r5, r6, pc} +_021E8DA4: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #4 + bl MOD04_021E51C0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021E8C08 + + arm_func_start MOD04_021E8DC0 +MOD04_021E8DC0: ; 0x021E8DC0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x14] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x16] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E8DC0 + + arm_func_start MOD04_021E8E08 +MOD04_021E8E08: ; 0x021E8E08 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r4, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl MOD04_021E4B40 + mov r0, r4 + mov r1, r5 + bl MOD04_021DD6B0 + ldr r1, _021E8EC8 ; =UNK04_0220D3F0 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r7, #1 + movne r7, #0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r8, #1 + movne r8, #0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x20c] + bl MOD04_021E1F18 + mov r5, r0 + bl MOD04_021E26E4 + str r5, [sp] + ldr r1, [r0, #0x468] + mov r0, r4 + str r1, [sp, #4] + ldr r4, [r6, #0x464] + mov r2, r8 + mov r3, r7 + mov r1, #0 + blx r4 + bl MOD04_021E8034 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E8EC8: .word UNK04_0220D3F0 + arm_func_end MOD04_021E8E08 + + arm_func_start MOD04_021E8ECC +MOD04_021E8ECC: ; 0x021E8ECC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x3cd] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021E8ECC + + arm_func_start MOD04_021E8EF4 +MOD04_021E8EF4: ; 0x021E8EF4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x21c + mov fp, r2 + mov sl, #0 + str r1, [sp, #8] + add sb, sp, #0xc + add r5, sp, #0x1c + mov r7, sl + add r8, fp, #1 + mov r6, #0xa + mvn r4, #0 +_021E8F20: + mov r0, sb + mov r1, r8 + mov r2, sl + bl MOD04_021E761C + cmp r0, r4 + beq _021E8F58 + mov r0, sb + mov r1, r7 + mov r2, r6 + bl strtoul + str r0, [r5, sl, lsl #2] + add sl, sl, #1 + cmp sl, #0x80 + blt _021E8F20 +_021E8F58: + add r0, sp, #0x1c + str r0, [sp] + str sl, [sp, #4] + ldrb r0, [fp] + mov r2, #0 + ldr r1, [sp, #8] + mov r3, r2 + bl MOD04_021E6730 + add sp, sp, #0x21c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end MOD04_021E8EF4 + + arm_func_start MOD04_021E8F80 +MOD04_021E8F80: ; 0x021E8F80 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r0 + mov r4, r1 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + beq _021E8FC4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E8FC4: + cmp r4, #0 + beq _021E9140 + cmp r4, #5 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #6 + bne _021E9114 + bl MOD04_021E26E4 + ldrb r1, [r0, #0xc] + add r1, r1, #1 + strb r1, [r0, #0xc] + bl MOD04_021E26E4 + ldrb r0, [r0, #0xc] + cmp r0, #5 + bls _021E9030 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9030: + bl MOD04_021E26E4 + ldr r3, [r0, #0x200] + ldr r2, _021E91F8 ; =UNK04_0220D394 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SNPrintf + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r2, [r6, #0x14] + ldrb r1, [r0, #0x14] + add r0, r7, r2, lsl #2 + add r1, r5, r1, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + ldr r0, [r0, #0x210] + mov r2, #0 + bl MOD04_021FFEB0 + mov r5, r0 + bl MOD04_021E26E4 + mvn r1, #0 + str r1, [sp] + ldr r3, _021E91FC ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r5 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl MOD04_021FD52C + cmp r0, #1 + bne _021E90E0 + bl MOD04_021E36B0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E90E0: + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9114: + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9140: + bl MOD04_021DF704 + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + bne _021E9168 + ldr r1, _021E9200 ; =0xFFFEABC4 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9168: + bl MOD04_021DF6BC + mov r4, r0 + mov r0, r5 + bl MOD04_021DF638 + str r6, [r4] + mov r4, r0 + bl MOD04_021E26E4 + ldrb r2, [r0, #0xd] + mov r1, #0 + add r2, r2, #1 + strb r2, [r0, #0xd] + strb r5, [r4] + strh r1, [r4, #2] + str r1, [r4, #4] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r2, [r0, #0xd] + mov r0, r6 + mov r1, r4 + add r2, r5, r2 + ldrb r2, [r2, #0x2d0] + strb r2, [r4, #1] + bl MOD04_021FD3F8 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E91E8 + mov r0, #0 + bl MOD04_021E51C0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E91E8: + mov r0, #1 + bl MOD04_021E51C0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E91F8: .word UNK04_0220D394 +_021E91FC: .word 0x00001388 +_021E9200: .word 0xFFFEABC4 + arm_func_end MOD04_021E8F80 + + arm_func_start MOD04_021E9204 +MOD04_021E9204: ; 0x021E9204 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl MOD04_021E26E4 + cmp r0, #0 + beq _021E9244 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + bne _021E9244 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + beq _021E925C +_021E9244: + ldr r1, _021E944C ; =UNK04_0220D48C + mov r0, r8 + mvn r2, #0 + bl MOD04_021FD6B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E925C: + bl MOD04_021DF704 + mov r5, r0 + mvn r2, #0 + cmp r5, r2 + bne _021E9290 + ldr r1, _021E9450 ; =UNK04_0220D498 + mov r0, r8 + bl MOD04_021FD6B0 + ldr r1, _021E9454 ; =0xFFFEABC4 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E9290: + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0x210] + cmp r7, r0 + bne _021E92D4 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + ldrh r0, [r0, #0x90] + cmp r6, r0 + beq _021E9364 +_021E92D4: + ldr r0, [sp, #0x24] + ldrb r1, [r0] + cmp r1, #0 + beq _021E934C + mov r1, #0 + mov r2, #0xa + bl strtoul + mov r4, r0 + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, sb, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r4, r0 + bne _021E934C + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + str r7, [r0, #0x210] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + strh r6, [r0, #0x90] + b _021E9364 +_021E934C: + ldr r1, _021E9458 ; =UNK04_0220D4A4 + mov r0, r8 + mvn r2, #0 + bl MOD04_021FD6B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E9364: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl MOD04_021E26E4 + ldr r1, [r0, #8] + mov r0, r8 + bl MOD04_021FD6BC + cmp r0, #0 + bne _021E93A0 + ldr r1, _021E945C ; =0xFFFEC5E6 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E93A0: + bl MOD04_021E8ECC + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _021E93D4 + ldr r1, [sp, #0x20] + ldr r0, _021E9460 ; =0x0000FFFF + mov r4, r1, asr #1 + cmp r4, r0 + movge r4, r0 + bl MOD04_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_021E93D4: + mov r0, r5 + bl MOD04_021DF6BC + mov r4, r0 + mov r0, r5 + bl MOD04_021DF638 + str r8, [r4] + mov r4, r0 + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + add r1, r1, #1 + strb r1, [r0, #0xd] + strb r5, [r4] + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r8 + mov r2, #0 + sub r1, r1, #1 + add r1, r5, r1 + ldrb r3, [r1, #0x2d0] + mov r1, r4 + strb r3, [r4, #1] + strh r2, [r4, #2] + str r2, [r4, #4] + bl MOD04_021FD3F8 + mov r0, #2 + bl MOD04_021E51C0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E944C: .word UNK04_0220D48C +_021E9450: .word UNK04_0220D498 +_021E9454: .word 0xFFFEABC4 +_021E9458: .word UNK04_0220D4A4 +_021E945C: .word 0xFFFEC5E6 +_021E9460: .word 0x0000FFFF + arm_func_end MOD04_021E9204 + + arm_func_start MOD04_021E9464 +MOD04_021E9464: ; 0x021E9464 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, [sp, #0x18] + mov r5, r1 + mov r6, r2 + mov r4, r3 + cmp r0, #0 + beq _021E948C + cmp r4, #0 + bne _021E9498 +_021E948C: + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E9498: + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + bl MIi_CpuClear32 + mov r1, r6, asr #8 + mov r0, r6, lsl #8 + mov r2, #2 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strb r2, [sp, #1] + strh r0, [sp, #2] + str r5, [sp, #4] + ldrb r5, [r4] + cmp r5, #0xfe + bne _021E94E4 + ldrb r0, [r4, #1] + cmp r0, #0xfd + beq _021E94EC +_021E94E4: + cmp r5, #0x5c + bne _021E9518 +_021E94EC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021E9558 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x18] + add r3, sp, #0 + mov r1, r4 + bl MOD04_022011A8 + b _021E9558 +_021E9518: + ldr r1, _021E9564 ; =UNK04_0220F018 + mov r0, r4 + mov r2, #6 + bl memcmp + cmp r0, #0 + bne _021E9544 + ldr r1, [sp, #0x18] + add r2, sp, #0 + mov r0, r4 + bl MOD04_021FFF78 + b _021E9558 +_021E9544: + cmp r5, #0xfe + moveq r0, #0 + add sp, sp, #8 + movne r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E9558: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E9564: .word UNK04_0220F018 + arm_func_end MOD04_021E9464 + + arm_func_start MOD04_021E9568 +MOD04_021E9568: ; 0x021E9568 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r4, r0 + bl MOD04_021E26E4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + bne _021E95E4 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021E95B8 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202534 +_021E95B8: + bl MOD04_021E26E4 + ldr r0, [r0, #4] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD6D4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E95E4: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _021E9D04 +_021E960C: ; jump table + b _021E9D04 ; case 0 + b _021E9C0C ; case 1 + b _021E97B8 ; case 2 + b _021E97B8 ; case 3 + b _021E9644 ; case 4 + b _021E97B8 ; case 5 + b _021E9D04 ; case 6 + b _021E9870 ; case 7 + b _021E9D04 ; case 8 + b _021E9D04 ; case 9 + b _021E9D04 ; case 10 + b _021E99F8 ; case 11 + b _021E9D04 ; case 12 + b _021E9AEC ; case 13 +_021E9644: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1c8] + cmp r0, #0 + beq _021E9730 + bl OS_GetTick + mov r6, r0 + mov r7, r1 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + ldr r1, [r5, #0x1cc] + ldr r0, [r5, #0x1d0] + subs r2, r6, r1 + sbc r0, r7, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + ldr r1, [r4, #0x1c8] + cmpeq r0, r1 + bls _021E9730 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E971C + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1aa] + add r1, r1, #1 + strb r1, [r0, #0x1aa] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1aa] + cmp r0, #5 + bls _021E96F8 + ldr r1, _021E9EFC ; =0xFFFEC5D2 + mov r0, #6 + bl MOD04_021E8E08 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E96F8: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl MOD04_021E6038 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E9730 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E971C: + mov r0, #0 + bl MOD04_021E5C44 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021E9730: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1bc] + cmp r0, #0 + beq _021E9D04 + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + ldr r0, _021E9F00 ; =0x00000BB8 + mla r5, r1, r0, r0 + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1c0] + ldr r0, [r0, #0x1c4] + subs r2, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + blo _021E9D04 + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl MOD04_021E6038 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E97B8: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe8] + cmp r0, #0 + ble _021E9D04 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + bne _021E97EC + bl MOD04_021E26E4 + ldrb r1, [r0, #0xd] + ldr r0, _021E9F00 ; =0x00000BB8 + mla r5, r1, r0, r0 + b _021E9800 +_021E97EC: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe8] + cmp r0, #1 + moveq r5, #0x3e8 + ldrne r5, _021E9F00 ; =0x00000BB8 +_021E9800: + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0xec] + ldr r0, [r0, #0xf0] + subs r3, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + bls _021E9D04 + bl MOD04_021E26E4 + ldr r0, [r0, #0x204] + bl MOD04_021E7E5C + bl MOD04_021E38E8 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + b _021E9D04 +_021E9870: + bl MOD04_021E26E4 + ldr r2, [r0, #0x18c] + ldr r1, [r0, #0x190] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + beq _021E9900 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x18c] + ldr r0, [r0, #0x190] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F04 ; =0x000061A8 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9900: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #6 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F08 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x3cd] + cmp r0, #5 + bls _021E9998 + bl MOD04_021E8ECC + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9998: + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #6 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E99F8: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #2 + bne _021E9D04 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E9A60 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F08 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bhi _021E9AB8 +_021E9A60: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F0C ; =0x00004A38 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 +_021E9AB8: + bl MOD04_021E8ECC + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9AEC: + bl MOD04_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #8 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F10 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl MOD04_021E26E4 + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl MOD04_021E26E4 + ldrb r0, [r0, #0x3cd] + cmp r0, #0 + beq _021E9BAC + bl MOD04_021E8ECC + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E9BA4 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl MOD04_021E59D4 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9BA4: + bl MOD04_021E4CB4 + b _021E9D04 +_021E9BAC: + bl MOD04_021E26E4 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #8 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9C0C: + bl MOD04_021DF88C + cmp r0, #5 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1f8] + ldr r0, [r0, #0x1fc] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F10 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _021E9C8C + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + bl MOD04_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9C8C: + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r1, [r5, #0xf4] + ldr r2, [r4, #0x24] + mov r0, #0x40 + bl MOD04_021E7884 + bl MOD04_021E61EC + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl MOD04_021E26E4 + mov r4, r0 + bl OS_GetTick + ldr r2, _021E9F14 ; =0xFF403B3A + mvn r3, #0 + adds r0, r0, r2 + str r0, [r4, #0x1f8] + adc r0, r1, r3 + str r0, [r4, #0x1fc] +_021E9D04: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E9D24 + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + bne _021E9DA0 +_021E9D24: + bl MOD04_021E26E4 + ldr r2, [r0, #0x184] + ldr r1, [r0, #0x188] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + beq _021E9DA0 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x184] + ldr r0, [r0, #0x188] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F18 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9DA0 + bl MOD04_021E26E4 + mov r1, #0 + add r3, r0, #0x194 + mov r2, r1 + mov r0, #1 + bl MOD04_021E2784 +_021E9DA0: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E9DBC + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + bl MOD04_02203C38 +_021E9DBC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_021E9F1C + bl MOD04_02200468 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E9DEC + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD6D4 +_021E9DEC: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _021E9E54 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl MOD04_021E26E4 + ldr r1, [r0, #0x1f0] + ldr r0, [r0, #0x1f4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F00 ; =0x00000BB8 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9E54 + bl MOD04_021E4BF4 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E9E54: + bl MOD04_021E4684 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E41C4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E39F0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1ae] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl MOD04_021E85D4 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ae] + bl MOD04_021E26E4 + ldr r0, [r0, #0x47c] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x480] + ldr r1, [r4, #0x47c] + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E9EF8: .word 0x000082EA +_021E9EFC: .word 0xFFFEC5D2 +_021E9F00: .word 0x00000BB8 +_021E9F04: .word 0x000061A8 +_021E9F08: .word 0x00001770 +_021E9F0C: .word 0x00004A38 +_021E9F10: .word 0x00007530 +_021E9F14: .word 0xFF403B3A +_021E9F18: .word 0x00002710 + arm_func_end MOD04_021E9568 + + arm_func_start MOD04_021E9F1C +MOD04_021E9F1C: ; 0x021E9F1C + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + bl MOD04_02202534 + ldr r0, [r4, #0xb4] + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl MOD04_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E9F5C + cmp r0, #1 + beq _021E9F5C + cmp r0, #2 + beq _021E9FB0 + ldmia sp!, {r4, pc} +_021E9F5C: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, pc} +_021E9F70: ; jump table + ldmia sp!, {r4, pc} ; case 0 + b _021E9FA0 ; case 1 + b _021E9FA0 ; case 2 + b _021E9FA0 ; case 3 + b _021E9FA0 ; case 4 + ldmia sp!, {r4, pc} ; case 5 + b _021E9FA0 ; case 6 + ldmia sp!, {r4, pc} ; case 7 + ldmia sp!, {r4, pc} ; case 8 + ldmia sp!, {r4, pc} ; case 9 + ldmia sp!, {r4, pc} ; case 10 + b _021E9FA0 ; case 11 +_021E9FA0: + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + ldmia sp!, {r4, pc} +_021E9FB0: + bl MOD04_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021E9F1C + + arm_func_start MOD04_021E9FD0 +MOD04_021E9FD0: ; 0x021E9FD0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r5, r2 + mov r6, r0 + mov r4, r3 + mov r2, r1 + mov r3, r5 + mov r0, #3 + mov r1, #0 + bl MOD04_021E80C4 + bl MOD04_021E26E4 + str r4, [r0, #0x46c] + bl MOD04_021E26E4 + ldr r1, [sp, #0x28] + str r1, [r0, #0x470] + bl MOD04_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r4, #0x20] + bl MOD04_021E26E4 + str r6, [r0, #0xf4] + mov r0, #4 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + bne _021EA0A4 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + mov r5, r0 + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + mov r2, r0 + mov r0, #0x14 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + ldr r0, _021EA130 ; =MOD04_021E32E4 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x2f4] + ldr r1, [r4, #0x2f4] + ldr r2, [r2, #0x2f8] + bl MOD04_02203EA4 + str r0, [r6, #0xe4] +_021EA0A4: + bl MOD04_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + bne _021EA0C8 + mov r0, #5 + bl MOD04_021E38E8 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} +_021EA0C8: + ldr r1, _021EA134 ; =UNK04_0220D3F0 + mov r0, #5 + mov r2, #0 + bl MOD04_021E1E30 + bl MOD04_021E397C + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _021EA110 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + bl MOD04_021EA1E0 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} +_021EA110: + bl MOD04_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl MOD04_021E6038 + bl MOD04_021E61EC + cmp r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EA130: .word MOD04_021E32E4 +_021EA134: .word UNK04_0220D3F0 + arm_func_end MOD04_021E9FD0 + + arm_func_start MOD04_021EA138 +MOD04_021EA138: ; 0x021EA138 + stmdb sp!, {r4, lr} + mov lr, r1 + mov ip, r2 + mov r4, r3 + mov r1, r0 + mov r2, lr + mov r3, ip + mov r0, #2 + bl MOD04_021E80C4 + bl MOD04_021E26E4 + str r4, [r0, #0x46c] + bl MOD04_021E26E4 + ldr r1, [sp, #8] + str r1, [r0, #0x470] + bl MOD04_021E26E4 + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r4, #0xf4] + bl MOD04_021E26E4 + mov r1, #1 + str r1, [r0, #0x2f0] + bl MOD04_021E26E4 + mov r2, #0 + strb r2, [r0, #0xe] + ldr r1, _021EA1DC ; =UNK04_022106DC + mov r0, #0xa + strb r2, [r1, #1] + bl MOD04_021E26D0 + bl MOD04_021E85D4 + bl MOD04_021E397C + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl MOD04_021E26E4 + ldr r0, [r0, #0x200] + bl MOD04_021EA1E0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EA1DC: .word UNK04_022106DC + arm_func_end MOD04_021EA138 + + arm_func_start MOD04_021EA1E0 +MOD04_021EA1E0: ; 0x021EA1E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov r4, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + addne sp, sp, #0x2c + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_021E26E4 + str r4, [r0, #0x200] + mov sl, #0 + ldr fp, _021EA344 ; =MOD04_021E2E18 + mov r4, sl + mov r5, #1 +_021EA21C: + bl MOD04_021E26E4 + mov sb, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD43C + mov r8, r0 + bl MOD04_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl MOD04_021FD454 + mov r7, r0 + bl MOD04_021E26E4 + mov r6, r0 + bl MOD04_021E26E4 + ldr r3, [r0, #0x2f8] + mov r1, r8 + str r3, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r3, _021EA348 ; =MOD04_021E2E14 + str fp, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, _021EA34C ; =MOD04_021E2E10 + mov r2, r7 + str r3, [sp, #0x14] + ldr r3, _021EA350 ; =MOD04_021E2D68 + add r0, sb, #0x10 + str r3, [sp, #0x18] + ldr r3, _021EA354 ; =MOD04_021E2D60 + str r3, [sp, #0x1c] + ldr r3, _021EA358 ; =MOD04_021E2D54 + str r3, [sp, #0x20] + str r4, [sp, #0x24] + ldr r3, [r6, #0x2f4] + bl MOD04_022025B0 + movs r6, r0 + beq _021EA2E4 + cmp r6, #3 + bne _021EA2C4 + cmp sl, #4 + bne _021EA2D8 +_021EA2C4: + mov r0, r6 + bl MOD04_021E3800 + add sp, sp, #0x2c + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021EA2D8: + add sl, sl, #1 + cmp sl, #5 + blt _021EA21C +_021EA2E4: + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c] + bl MOD04_021E26E4 + mov r1, #0 + strh r1, [r0, #0x1a] + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA35C ; =MOD04_021E2D2C + bl MOD04_02202568 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA360 ; =MOD04_021E2C78 + bl MOD04_02202598 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA364 ; =MOD04_021E2B64 + bl MOD04_02202580 + bl MOD04_021E26E4 + ldr r0, [r0, #0x10] + bl MOD04_02202308 + mov r0, r6 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021EA344: .word MOD04_021E2E18 +_021EA348: .word MOD04_021E2E14 +_021EA34C: .word MOD04_021E2E10 +_021EA350: .word MOD04_021E2D68 +_021EA354: .word MOD04_021E2D60 +_021EA358: .word MOD04_021E2D54 +_021EA35C: .word MOD04_021E2D2C +_021EA360: .word MOD04_021E2C78 +_021EA364: .word MOD04_021E2B64 + arm_func_end MOD04_021EA1E0 + + arm_func_start MOD04_021EA368 +MOD04_021EA368: ; 0x021EA368 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021E26F4 + bl MOD04_021E26E4 + str r6, [r0] + bl MOD04_021E26E4 + str r5, [r0, #4] + bl MOD04_021E26E4 + str r4, [r0, #8] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x10] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c] + bl MOD04_021E26E4 + mov r1, #0 + strh r1, [r0, #0x1a] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] + mov r0, r1 + bl MOD04_021E26D0 + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0xf] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x19] + bl MOD04_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1af] + bl MOD04_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb6] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x1dc] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x200] + bl MOD04_021E26E4 + ldr r1, [sp, #0x10] + str r1, [r0, #0x2f4] + bl MOD04_021E26E4 + ldr r1, [sp, #0x14] + str r1, [r0, #0x2f8] + bl MOD04_021E26E4 + ldr r1, [sp, #0x18] + str r1, [r0, #0x2fc] + bl MOD04_021E26E4 + ldr r1, [sp, #0x1c] + str r1, [r0, #0x300] + bl MOD04_021E26E4 + add r0, r0, #0x304 + mov r1, #0 + mov r2, #0x40 + bl MI_CpuFill8 + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x344] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x464] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x468] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x474] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x478] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x47c] + bl MOD04_021E26E4 + mov r1, #0 + str r1, [r0, #0x480] + bl MOD04_021E4164 + ldr r1, _021EA4D0 ; =UNK04_022106DC + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strh r0, [r1, #2] + bl MOD04_021E8174 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EA4D0: .word UNK04_022106DC + arm_func_end MOD04_021EA368 + + arm_func_start MOD04_021EA4D4 +MOD04_021EA4D4: ; 0x021EA4D4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD04_021E26E4 + cmp r0, #0 + beq _021EA518 + bl MOD04_021DF88C + cmp r0, #5 + bne _021EA518 + bl MOD04_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + beq _021EA524 +_021EA518: + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021EA524: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021EA4D4 + + arm_func_start MOD04_021EA530 +MOD04_021EA530: ; 0x021EA530 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021EA4D4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl MOD04_021E4F94 + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021EA530 + + .section .rodata + + .global UNK04_0220BAC4 +UNK04_0220BAC4: ; 0x0220BAC4 + .word 0x00000003, 0x00000003, 0x00000002, 0x00000002 + .word 0x00000001, 0x00000001 + + .section .data + + .global UNK04_0220D394 +UNK04_0220D394: ; 0x0220D394 + .asciz "%u" + + .balign 4, 0 + .global UNK04_0220D398 +UNK04_0220D398: ; 0x0220D398 + .asciz "SBCM" + + .balign 4, 0 + .global UNK04_0220D3A0 +UNK04_0220D3A0: ; 0x0220D3A0 + .asciz "dwc_eval" + + .balign 4, 0 + .global UNK04_0220D3AC +UNK04_0220D3AC: ; 0x0220D3AC + .asciz "dwc_pid" + + .balign 4, 0 + .global UNK04_0220D3B4 +UNK04_0220D3B4: ; 0x0220D3B4 + .asciz "numplayers" + + .balign 4, 0 + .global UNK04_0220D3C0 +UNK04_0220D3C0: ; 0x0220D3C0 + .asciz "maxplayers" + + .balign 4, 0 + .global UNK04_0220D3CC +UNK04_0220D3CC: ; 0x0220D3CC + .asciz "dwc_mtype" + + .balign 4, 0 + .global UNK04_0220D3D8 +UNK04_0220D3D8: ; 0x0220D3D8 + .asciz "dwc_mresv" + + .balign 4, 0 + .global UNK04_0220D3E4 +UNK04_0220D3E4: ; 0x0220D3E4 + .asciz "dwc_mver" + + .balign 4, 0 + .global UNK04_0220D3F0 +UNK04_0220D3F0: ; 0x0220D3F0 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK04_0220D3F4 +UNK04_0220D3F4: ; 0x0220D3F4 + .asciz "VER" + + .balign 4, 0 + .global UNK04_0220D3F8 +UNK04_0220D3F8: ; 0x0220D3F8 + .asciz "FME" + + .balign 4, 0 + .global UNK04_0220D3FC +UNK04_0220D3FC: ; 0x0220D3FC + .asciz "MDF" + + .balign 4, 0 + .global UNK04_0220D400 +UNK04_0220D400: ; 0x0220D400 + .asciz "%s%dv%s" + + .balign 4, 0 + .global UNK04_0220D408 +UNK04_0220D408: ; 0x0220D408 + .asciz "GPCM" + + .balign 4, 0 + .global UNK04_0220D410 +UNK04_0220D410: ; 0x0220D410 + .asciz "MAT" + + .balign 4, 0 + .global UNK04_0220D414 +UNK04_0220D414: ; 0x0220D414 + .asciz "/%u" + + .balign 4, 0 + .global UNK04_0220D418 +UNK04_0220D418: ; 0x0220D418 + .asciz "%s = %d and %s != %u and maxplayers = %d and numplayers < %d and %s = %d and %s != %s" + + .balign 4, 0 + .global UNK04_0220D470 +UNK04_0220D470: ; 0x0220D470 + .asciz "%s and (%s)" + + .balign 4, 0 + .global UNK04_0220D47C +UNK04_0220D47C: ; 0x0220D47C + .asciz "%s = %u" + + .balign 4, 0 + .global UNK04_0220D484 +UNK04_0220D484: ; 0x0220D484 + .asciz "SCM" + + .balign 4, 0 + .global UNK04_0220D488 +UNK04_0220D488: ; 0x0220D488 + .asciz "SCN" + + .balign 4, 0 + .global UNK04_0220D48C +UNK04_0220D48C: ; 0x0220D48C + .asciz "Init state" + + .balign 4, 0 + .global UNK04_0220D498 +UNK04_0220D498: ; 0x0220D498 + .asciz "Server full" + + .balign 4, 0 + .global UNK04_0220D4A4 +UNK04_0220D4A4: ; 0x0220D4A4 + .asciz "Unknown connect attempt" + + .balign 4, 0 + .section .bss + + .global UNK04_022106D4 +UNK04_022106D4: ; 0x022106D4 + .space 0x4 + + .global UNK04_022106D8 +UNK04_022106D8: ; 0x022106D8 + .space 0x4 + + .global UNK04_022106DC +UNK04_022106DC: ; 0x022106DC + .space 0x4 + + .global UNK04_022106E0 +UNK04_022106E0: ; 0x022106E0 + .space 0x4 + + .global UNK04_022106E4 +UNK04_022106E4: ; 0x022106E4 + .space 0x20 + + .global UNK04_02210704 +UNK04_02210704: ; 0x02210704 + .space 0x1 + + .global UNK04_02210705 +UNK04_02210705: ; 0x02210705 + .space 0x7 + + .global UNK04_0221070C +UNK04_0221070C: ; 0x0221070C + .space 0x730 diff --git a/arm9/modules/04/asm/mod04_0220C680_certs.s b/arm9/modules/04/asm/mod04_0220C680_certs.s new file mode 100644 index 00000000..0117740f --- /dev/null +++ b/arm9/modules/04/asm/mod04_0220C680_certs.s @@ -0,0 +1,325 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .data + .balign 4, 0 + + .global UNK04_0220C680 +UNK04_0220C680: ; 0x0220C680 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C684 +UNK04_0220C684: ; 0x0220C684 + .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 + .word UNK04_0220C680 + + .global UNK04_0220C698 +UNK04_0220C698: ; 0x0220C698 + .asciz "BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA" + + .balign 4, 0 + .global UNK04_0220C6CC +UNK04_0220C6CC: ; 0x0220C6CC + .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB + .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD + .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89 + .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70 + .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C + .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35 + .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39 + .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC + .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74 + .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5 + .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F + .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77 + .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9 + .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19 + .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C + .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F + .byte 0x7F, 0x93, 0x90, 0xCF + + .global UNK04_0220C7CC +UNK04_0220C7CC: ; 0x0220C7CC + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C7D0 +UNK04_0220C7D0: ; 0x0220C7D0 + .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 + .word UNK04_0220C7CC + + .global UNK04_0220C7E4 +UNK04_0220C7E4: ; 0x0220C7E4 + .asciz "IE, Baltimore, CyberTrust, Baltimore CyberTrust Root" + + .balign 4, 0 + .global UNK04_0220C81C +UNK04_0220C81C: ; 0x0220C81C + .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A + .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29 + .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2 + .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52 + .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8 + .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8 + .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F + .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12 + .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68 + .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC + .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C + .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F + .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9 + .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99 + .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68 + .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90 + .byte 0xDC, 0x27, 0x1A, 0x39 + + .global UNK04_0220C91C +UNK04_0220C91C: ; 0x0220C91C + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C920 +UNK04_0220C920: ; 0x0220C920 + .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 + .word UNK04_0220C91C + + .global UNK04_0220C934 +UNK04_0220C934: ; 0x0220C934 + .asciz "US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root" + + .balign 4, 0 + .global UNK04_0220C984 +UNK04_0220C984: ; 0x0220C984 + .byte 0x95, 0x0F, 0xA0, 0xB6 + .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B + .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A + .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F + .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95 + .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9 + .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85 + .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80 + .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99 + + .global UNK04_0220CA04 +UNK04_0220CA04: ; 0x0220CA04 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CA08 +UNK04_0220CA08: ; 0x0220CA08 + .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 + .word UNK04_0220CA04 + + .global UNK04_0220CA1C +UNK04_0220CA1C: ; 0x0220CA1C + .asciz "US, GTE Corporation, GTE CyberTrust Root" + + .balign 4, 0 + .global UNK04_0220CA48 +UNK04_0220CA48: ; 0x0220CA48 + .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9 + .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD + .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66 + .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5 + .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF + .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25 + .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24 + .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03 + + .global UNK04_0220CAC8 +UNK04_0220CAC8: ; 0x0220CAC8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CACC +UNK04_0220CACC: ; 0x0220CACC + .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 + .word UNK04_0220CAC8 + + .global UNK04_0220CAE0 +UNK04_0220CAE0: ; 0x0220CAE0 + .asciz "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com" + + .balign 4, 0 + .global UNK04_0220CB30 +UNK04_0220CB30: ; 0x0220CB30 + .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF + .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21 + .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD + .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B + .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40 + .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31 + .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66 + .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C + .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B + + .global UNK04_0220CBB0 +UNK04_0220CBB0: ; 0x0220CBB0 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CBB4 +UNK04_0220CBB4: ; 0x0220CBB4 + .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 + .word UNK04_0220CBB0 + + .global UNK04_0220CBC8 +UNK04_0220CBC8: ; 0x0220CBC8 + .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE + .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A + .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17 + .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0 + .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C + .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F + .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD + .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37 + + .global UNK04_0220CC48 +UNK04_0220CC48: ; 0x0220CC48 + .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, " + .asciz "Thawte Premium Server CA, premium-server@thawte.com" + + .balign 4, 0 + .global UNK04_0220CCD0 +UNK04_0220CCD0: ; 0x0220CCD0 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CCD4 +UNK04_0220CCD4: ; 0x0220CCD4 + .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 + .word UNK04_0220CCD0 + + .global UNK04_0220CCE8 +UNK04_0220CCE8: ; 0x0220CCE8 + .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, " + .asciz "Thawte Server CA, server-certs@thawte.com" + + .balign 4, 0 + .global UNK04_0220CD68 +UNK04_0220CD68: ; 0x0220CD68 + .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75 + .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20 + .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15 + .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD + .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B + .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C + .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B + .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D + + .global UNK04_0220CDE8 +UNK04_0220CDE8: ; 0x0220CDE8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CDEC +UNK04_0220CDEC: ; 0x0220CDEC + .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 + .word UNK04_0220CDE8 + + .global UNK04_0220CE00 +UNK04_0220CE00: ; 0x0220CE00 + .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0 + .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D + .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F + .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47 + .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77 + .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D + .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97 + .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61 + .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67 + + .global UNK04_0220CE80 +UNK04_0220CE80: ; 0x0220CE80 + .ascii "US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc." + .asciz " - For authorized use only, VeriSign Trust Network" + + .balign 4, 0 + .global UNK04_0220CF14 +UNK04_0220CF14: ; 0x0220CF14 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CF18 +UNK04_0220CF18: ; 0x0220CF18 + .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 + .word UNK04_0220CF14 + + .global UNK04_0220CF2C +UNK04_0220CF2C: ; 0x0220CF2C + .ascii "US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, " + .asciz "VeriSign Class 3 Public Primary Certification Authority - G3" + + .balign 4, 0 + .global UNK04_0220CFC8 +UNK04_0220CFC8: ; 0x0220CFC8 + .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9 + .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5 + .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D + .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67 + .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69 + .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0 + .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC + .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3 + .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED + .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF + .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76 + .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8 + .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2 + .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63 + .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D + .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97 + + .global UNK04_0220D0C8 +UNK04_0220D0C8: ; 0x0220D0C8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220D0CC +UNK04_0220D0CC: ; 0x0220D0CC + .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 + .word UNK04_0220D0C8 + + .global UNK04_0220D0E0 +UNK04_0220D0E0: ; 0x0220D0E0 + .asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority" + + .balign 4, 0 + .global UNK04_0220D124 +UNK04_0220D124: ; 0x0220D124 + .byte 0xC9, 0x5C, 0x59, 0x9E + .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45 + .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25 + .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00 + .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6 + .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F + .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20 + .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15 + .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7 + + .global UNK04_0220D1A4 +UNK04_0220D1A4: ; 0x0220D1A4 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220D1A8 +UNK04_0220D1A8: ; 0x0220D1A8 + .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 + .word UNK04_0220D1A4 + + .global UNK04_0220D1BC +UNK04_0220D1BC: ; 0x0220D1BC + .asciz "US, RSA Data Security, Inc., Secure Server Certification Authority" + + .balign 4, 0 + .global UNK04_0220D200 +UNK04_0220D200: ; 0x0220D200 + .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A + .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB + .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82 + .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05 + .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D + .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98 + .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49 + .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD + .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index 52073cac..4b30f2d3 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -10,7 +10,7 @@ MOD05_021D74E0: ; 0x021D74E0 ldr r0, [r4, #8] bl DoScheduledBgGpuUpdates bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r0, [r4, #0x34] bl FUN_020583A0 bl MOD05_021F2D48 @@ -744,10 +744,10 @@ MOD05_021D7B38: ; 0x021D7B38 thumb_func_start MOD05_021D7B5C MOD05_021D7B5C: ; 0x021D7B5C - ldr r3, _021D7B60 ; =FUN_02009FA0 + ldr r3, _021D7B60 ; =DeinitOamData bx r3 .balign 4, 0 -_021D7B60: .word FUN_02009FA0 +_021D7B60: .word DeinitOamData thumb_func_start MOD05_021D7B64 MOD05_021D7B64: ; 0x021D7B64 diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s index 20fc2752..78c16fd0 100644 --- a/arm9/modules/05/asm/mod05_021E1AD8.s +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -290,7 +290,7 @@ _021E1CA8: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 bl MOD05_021E1DE4 add r1, r4, #0 @@ -541,7 +541,7 @@ MOD05_021E1ECC: ; 0x021E1ECC add r0, #0xa8 ldr r0, [r0] mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r6, #0 add r0, #0xa8 ldr r0, [r0] @@ -727,7 +727,7 @@ _021E2032: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 bl MOD05_021E2170 add r2, r4, #0 @@ -1139,7 +1139,7 @@ MOD05_021E2368: ; 0x021E2368 lsl r0, r0, #4 ldr r0, [r6, r0] mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r6, #0 add r0, #8 bl RemoveWindow @@ -1307,7 +1307,7 @@ _021E2496: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 lsl r0, r4, #0x13 lsr r0, r0, #0x10 str r0, [sp] @@ -1407,7 +1407,7 @@ MOD05_021E25A4: ; 0x021E25A4 add r0, #0xa8 ldr r0, [r0] mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r6, #0 add r0, #0xa8 ldr r0, [r0] @@ -1642,7 +1642,7 @@ _021E270A: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 @@ -1747,7 +1747,7 @@ MOD05_021E27E8: ; 0x021E27E8 add r0, r4, #0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 mov r1, #0xf bl FillWindowPixelBuffer @@ -1788,7 +1788,7 @@ MOD05_021E288C: ; 0x021E288C push {r4, lr} add r4, r0, #0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 mov r1, #1 bl WindowArray_dtor @@ -1907,7 +1907,7 @@ MOD05_021E2950: ; 0x021E2950 add r0, r4, #0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r1, r4, #0 bl MOD05_021E29C8 @@ -1922,7 +1922,7 @@ MOD05_021E29B4: ; 0x021E29B4 push {r4, lr} add r4, r0, #0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 mov r1, #1 bl WindowArray_dtor @@ -2036,7 +2036,7 @@ MOD05_021E2A70: ; 0x021E2A70 add r0, r4, #0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r1, r4, #0 bl MOD05_021E2AD4 diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s index 8fb0d143..5aeaf2cc 100644 --- a/arm9/modules/05/asm/mod05_021E3340.s +++ b/arm9/modules/05/asm/mod05_021E3340.s @@ -35,14 +35,14 @@ _021E3370: sub r1, #0x12 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E3414 _021E3388: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021E3414 ldr r0, [r5, #8] @@ -67,7 +67,7 @@ _021E33A0: add r0, r6, #0 bl Sav2_Poketch_Give mov r0, #1 - bl FUN_0200A03C + bl GetOamManager str r0, [sp] ldr r1, [r5, #4] ldr r2, [r5, #0xc] @@ -87,14 +87,14 @@ _021E33E4: mov r0, #4 sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E3414 _021E33FE: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021E3414 add r0, r4, #0 diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s index 6c9c422b..d6f55205 100644 --- a/arm9/modules/05/asm/mod05_021E8310.s +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -286,7 +286,7 @@ MOD05_021E84F4: ; 0x021E84F4 ldr r2, _021E8568 ; =0x000003D9 mov r1, #0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add sp, #0x14 pop {r3, r4, pc} .balign 4, 0 @@ -299,7 +299,7 @@ MOD05_021E856C: ; 0x021E856C add r4, r0, #0 ldr r0, [r4, #0x10] mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, [r4, #0x10] bl RemoveWindow ldr r0, [r4, #0x10] diff --git a/arm9/modules/05/asm/mod05_021E8648.s b/arm9/modules/05/asm/mod05_021E8648.s new file mode 100644 index 00000000..12fe946f --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E8648.s @@ -0,0 +1,279 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E8648 +MOD05_021E8648: ; 0x021E8648 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021E8690 ; =MOD05_021E8728 + ldr r3, [r5, #0x28] + mov r1, #0x38 + mov r2, #5 + bl FUN_020061E8 + add r6, r0, #0 + bl FUN_0201B6C8 + add r4, r0, #0 + add r2, r4, #4 + mov r3, #5 +_021E8664: + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + sub r3, r3, #1 + bne _021E8664 + ldr r0, [r5] + str r0, [r2] + str r6, [r4, #0x34] + mov r0, #0 + str r0, [r4, #0x30] + bl GX_GetBankForLCDC + str r0, [r4] + add r0, r4, #4 + bl MOD05_021E87C8 + ldr r0, _021E8694 ; =MOD05_021E8768 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E8690: .word MOD05_021E8728 +_021E8694: .word MOD05_021E8768 + + thumb_func_start MOD05_021E8698 +MOD05_021E8698: ; 0x021E8698 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + bl GX_SetGraphicsMode + ldr r0, [r4] + ldr r0, [r0] + bl GX_SetBankForLCDC + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0xa + bgt _021E86C8 + bge _021E86EC + cmp r0, #6 + bgt _021E8708 + cmp r0, #2 + blt _021E8708 + beq _021E86CE + cmp r0, #6 + beq _021E86DE + b _021E8708 +_021E86C8: + cmp r0, #0xe + beq _021E86FA + b _021E8708 +_021E86CE: + mov r1, #0x1a + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86DE: + mov r2, #2 + ldr r1, _021E871C ; =0x06820000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86EC: + mov r2, #2 + ldr r1, _021E8720 ; =0x06840000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86FA: + mov r2, #2 + ldr r1, _021E8724 ; =0x06860000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E8708: + mov r0, #0 + bl GX_SetBankForLCDC +_021E870E: + ldr r0, [r4] + ldr r0, [r0, #0x34] + bl FUN_0200621C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 +_021E871C: .word 0x06820000 +_021E8720: .word 0x06840000 +_021E8724: .word 0x06860000 + + thumb_func_start MOD05_021E8728 +MOD05_021E8728: ; 0x021E8728 + push {r4, r5, r6, r7} + ldr r0, [r1, #0x30] + cmp r0, #0 + beq _021E8760 + ldr r6, [r1, #0x20] + ldr r5, [r1, #0x10] + ldr r4, [r1, #0x1c] + ldr r3, [r1, #0x18] + ldr r2, [r1, #0x14] + ldr r0, [r1, #0x24] + ldr r1, [r1, #0x28] + lsl r5, r5, #0x14 + lsl r7, r1, #8 + lsl r1, r3, #0x18 + lsl r3, r2, #0x1d + mov r2, #2 + lsl r2, r2, #0x1e + orr r3, r2 + lsl r2, r4, #0x19 + orr r2, r3 + orr r1, r2 + lsl r6, r6, #0x10 + orr r1, r5 + orr r1, r6 + orr r1, r7 + orr r1, r0 + ldr r0, _021E8764 ; =0x04000064 + str r1, [r0] +_021E8760: + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 +_021E8764: .word 0x04000064 + + thumb_func_start MOD05_021E8768 +MOD05_021E8768: ; 0x021E8768 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0xa + bgt _021E8786 + bge _021E879C + cmp r0, #6 + bgt _021E87AC + cmp r0, #2 + blt _021E87AC + beq _021E878C + cmp r0, #6 + beq _021E8794 + b _021E87AC +_021E8786: + cmp r0, #0xe + beq _021E87A4 + b _021E87AC +_021E878C: + mov r0, #1 + bl GX_SetBankForLCDC + b _021E87B2 +_021E8794: + mov r0, #2 + bl GX_SetBankForLCDC + b _021E87B2 +_021E879C: + mov r0, #4 + bl GX_SetBankForLCDC + b _021E87B2 +_021E87A4: + mov r0, #8 + bl GX_SetBankForLCDC + b _021E87B2 +_021E87AC: + mov r0, #0 + bl GX_SetBankForLCDC +_021E87B2: + ldr r0, [r4, #4] + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + bl GX_SetGraphicsMode + mov r0, #1 + str r0, [r4, #0x30] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E87C8 +MOD05_021E87C8: ; 0x021E87C8 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0xa + bgt _021E87E4 + bge _021E8808 + cmp r0, #6 + bgt _021E8822 + cmp r0, #2 + blt _021E8822 + beq _021E87EA + cmp r0, #6 + beq _021E87FA + b _021E8822 +_021E87E4: + cmp r0, #0xe + beq _021E8816 + b _021E8822 +_021E87EA: + mov r1, #0x1a + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E87FA: + mov r2, #2 + ldr r1, _021E8850 ; =0x06820000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E8808: + mov r2, #2 + ldr r1, _021E8854 ; =0x06840000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E8816: + mov r2, #2 + ldr r1, _021E8858 ; =0x06860000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast +_021E8822: + ldr r5, [r4, #0x10] + ldr r1, [r4, #0x1c] + ldr r3, [r4, #0x18] + ldr r6, [r4, #0x14] + ldr r0, [r4, #0xc] + mov r4, #2 + lsl r2, r1, #0x10 + lsl r1, r0, #0x14 + lsl r5, r5, #0x1d + lsl r4, r4, #0x1e + orr r4, r5 + lsl r3, r3, #0x19 + lsl r0, r6, #0x18 + orr r3, r4 + orr r0, r3 + orr r0, r1 + add r1, r2, #0 + orr r1, r0 + mov r0, #0x10 + orr r1, r0 + ldr r0, _021E885C ; =0x04000064 + str r1, [r0] + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E8850: .word 0x06820000 +_021E8854: .word 0x06840000 +_021E8858: .word 0x06860000 +_021E885C: .word 0x04000064 diff --git a/arm9/modules/05/asm/mod05_021E8860.s b/arm9/modules/05/asm/mod05_021E8860.s new file mode 100644 index 00000000..2adced2f --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E8860.s @@ -0,0 +1,77 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E8860 +MOD05_021E8860: ; 0x021E8860 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + mov r0, #2 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #4 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #8 + mov r1, #0 + bl GX_EngineAToggleLayers + bl GX_ResetBankForBG + mov r0, #4 + add r1, r0, #0 + bl AllocFromHeap + add r7, r0, #0 + mov r0, #0 + add r1, r7, #0 + mov r2, #4 + bl MIi_CpuClear32 + ldr r6, _021E88BC ; =UNK05_021F78E4 + add r3, sp, #0 + mov r2, #5 +_021E889E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E889E + ldr r0, [r6] + str r0, [r3] + add r0, sp, #0 + str r5, [sp, #0x20] + str r4, [sp, #0x24] + bl MOD05_021E8648 + str r0, [r7] + add r0, r7, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E88BC: .word UNK05_021F78E4 + + thumb_func_start MOD05_021E88C0 +MOD05_021E88C0: ; 0x021E88C0 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r0, [r4] + mov r2, #0 + add r3, r1, #0 + bl MOD05_021E8698 + mov r0, #4 + bl GX_SetBankForBG + mov r0, #0xe + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r1, [r4] + mov r0, #4 + bl FreeToHeapExplicit + pop {r4, pc} + + .section .rodata + + .global UNK05_021F78E4 +UNK05_021F78E4: ; 0x021F78E4 + .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021E88E8.s b/arm9/modules/05/asm/mod05_021E88E8.s new file mode 100644 index 00000000..d8dcb1a0 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E88E8.s @@ -0,0 +1,7400 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E88E8 +MOD05_021E88E8: ; 0x021E88E8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bls _021E88FA + b _021E8A56 +_021E88FA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8906: ; jump table + .short _021E8912 - _021E8906 - 2 ; case 0 + .short _021E8936 - _021E8906 - 2 ; case 1 + .short _021E8952 - _021E8906 - 2 ; case 2 + .short _021E899C - _021E8906 - 2 ; case 3 + .short _021E89F4 - _021E8906 - 2 ; case 4 + .short _021E8A1C - _021E8906 - 2 ; case 5 +_021E8912: + mov r0, #4 + mov r1, #0x20 + bl AllocFromHeap + str r0, [r4, #0xc] + mov r1, #0 + mov r2, #0x20 + bl memset + ldr r5, [r4, #0xc] + bl MOD05_021E3768 + str r0, [r5, #0x1c] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8936: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8952: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E8A56 + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4] + mov r2, #2 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8A5C ; =0xFFFFD000 + str r1, [sp] + str r0, [sp, #4] + lsl r0, r0, #2 + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + mov r3, #7 + bl MOD05_021E37CC + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + mov r3, #0x1e + str r0, [sp] + add r0, r5, #4 + add r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E899C: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + cmp r6, #1 + bne _021E8A56 + ldr r0, [r4] + mov r2, #2 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8A5C ; =0xFFFFD000 + mov r3, #6 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E3888 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + str r0, [sp] + ldr r3, _021E8A60 ; =0xFFF01000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E89F4: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + cmp r6, #1 + bne _021E8A56 + add r0, r4, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E8A56 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8A1C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021E8A64 ; =0x04000010 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8A42 + mov r0, #1 + str r0, [r1] +_021E8A42: + ldr r0, [r5, #0x1c] + bl MOD05_021E37A4 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C +_021E8A56: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E8A5C: .word 0xFFFFD000 +_021E8A60: .word 0xFFF01000 +_021E8A64: .word 0x04000010 + + thumb_func_start MOD05_021E8A68 +MOD05_021E8A68: ; 0x021E8A68 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bls _021E8A7A + b _021E8BD6 +_021E8A7A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8A86: ; jump table + .short _021E8A92 - _021E8A86 - 2 ; case 0 + .short _021E8AB6 - _021E8A86 - 2 ; case 1 + .short _021E8AD2 - _021E8A86 - 2 ; case 2 + .short _021E8B1C - _021E8A86 - 2 ; case 3 + .short _021E8B74 - _021E8A86 - 2 ; case 4 + .short _021E8B9C - _021E8A86 - 2 ; case 5 +_021E8A92: + mov r0, #4 + mov r1, #0x20 + bl AllocFromHeap + str r0, [r4, #0xc] + mov r1, #0 + mov r2, #0x20 + bl memset + ldr r5, [r4, #0xc] + bl MOD05_021E3768 + str r0, [r5, #0x1c] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8AB6: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8AD2: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E8BD6 + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4] + mov r2, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8BDC ; =0xFFFFE000 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021E8BE0 ; =0xFFFF4000 + mov r3, #7 + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E37CC + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + mov r3, #0x1e + str r0, [sp] + add r0, r5, #4 + add r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E8B1C: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + cmp r6, #1 + bne _021E8BD6 + ldr r0, [r4] + mov r2, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8BDC ; =0xFFFFE000 + mov r3, #6 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E3888 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x1e + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + str r0, [sp] + ldr r3, _021E8BE4 ; =0xFFF9C000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E8B74: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + cmp r6, #1 + bne _021E8BD6 + add r0, r4, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E8BD6 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8B9C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021E8BE8 ; =0x04000010 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8BC2 + mov r0, #1 + str r0, [r1] +_021E8BC2: + ldr r0, [r5, #0x1c] + bl MOD05_021E37A4 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C +_021E8BD6: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E8BDC: .word 0xFFFFE000 +_021E8BE0: .word 0xFFFF4000 +_021E8BE4: .word 0xFFF9C000 +_021E8BE8: .word 0x04000010 + + thumb_func_start MOD05_021E8BEC +MOD05_021E8BEC: ; 0x021E8BEC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #6 + bls _021E8BFE + b _021E8D16 +_021E8BFE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8C0A: ; jump table + .short _021E8C18 - _021E8C0A - 2 ; case 0 + .short _021E8C4A - _021E8C0A - 2 ; case 1 + .short _021E8C6A - _021E8C0A - 2 ; case 2 + .short _021E8CA0 - _021E8C0A - 2 ; case 3 + .short _021E8CB2 - _021E8C0A - 2 ; case 4 + .short _021E8CD4 - _021E8C0A - 2 ; case 5 + .short _021E8CE6 - _021E8C0A - 2 ; case 6 +_021E8C18: + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeap + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021E8C26: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8C26 + ldr r0, [r4, #0xc] + mov r1, #4 + bl MOD05_021E8E8C + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8C4A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + mov r0, #0xa + str r0, [r5, #0xc] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8C6A: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8D16 + ldr r0, [r4] + mov r3, #0x32 + add r0, r0, #1 + str r0, [r4] + mov r0, #0xc + str r0, [r5, #0xc] + lsl r0, r0, #0xc + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E8D1C ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r2, #0xbf + sub r3, #0x76 + bl MOD05_021E8EC0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8CA0: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8D16 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CB2: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x1e + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CD4: + bl FUN_0200E308 + cmp r0, #0 + beq _021E8D16 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CE6: + add r0, r5, #0 + bl MOD05_021E8EA8 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8D00 + mov r0, #1 + str r0, [r1] +_021E8D00: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E8D16: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021E8D1C: .word 0x04000010 + + thumb_func_start MOD05_021E8D20 +MOD05_021E8D20: ; 0x021E8D20 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #6 + bls _021E8D32 + b _021E8E4C +_021E8D32: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8D3E: ; jump table + .short _021E8D4C - _021E8D3E - 2 ; case 0 + .short _021E8D7E - _021E8D3E - 2 ; case 1 + .short _021E8D9E - _021E8D3E - 2 ; case 2 + .short _021E8DD6 - _021E8D3E - 2 ; case 3 + .short _021E8DE8 - _021E8D3E - 2 ; case 4 + .short _021E8E0A - _021E8D3E - 2 ; case 5 + .short _021E8E1C - _021E8D3E - 2 ; case 6 +_021E8D4C: + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeap + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021E8D5A: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8D5A + ldr r0, [r4, #0xc] + mov r1, #4 + bl MOD05_021E8E8C + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8D7E: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + mov r0, #0xa + str r0, [r5, #0xc] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8D9E: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8E4C + ldr r0, [r4] + mov r3, #0x32 + add r0, r0, #1 + str r0, [r4] + mov r0, #0xc + str r0, [r5, #0xc] + mov r0, #0xf + lsl r0, r0, #0xc + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E8E50 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r2, #0xbf + add r3, #0xdf + bl MOD05_021E8EC0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8DD6: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8E4C + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8DE8: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x1e + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8E0A: + bl FUN_0200E308 + cmp r0, #0 + beq _021E8E4C + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8E1C: + add r0, r5, #0 + bl MOD05_021E8EA8 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8E36 + mov r0, #1 + str r0, [r1] +_021E8E36: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E8E4C: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021E8E50: .word 0x04000010 + + thumb_func_start MOD05_021E8E54 +MOD05_021E8E54: ; 0x021E8E54 + ldr r3, _021E8E60 ; =FUN_0200CA60 + mov r2, #1 + add r1, r0, #0 + ldr r0, _021E8E64 ; =MOD05_021E8E68 + lsl r2, r2, #0xa + bx r3 + .balign 4, 0 +_021E8E60: .word FUN_0200CA60 +_021E8E64: .word MOD05_021E8E68 + + thumb_func_start MOD05_021E8E68 +MOD05_021E8E68: ; 0x021E8E68 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #8] + cmp r0, #2 + blo _021E8E7C + ldr r0, [r4] + bl FUN_02012B30 + mov r0, #0 + str r0, [r4, #8] +_021E8E7C: + ldr r0, [r4] + bl FUN_02012B68 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8E8C +MOD05_021E8E8C: ; 0x021E8E8C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_02012A00 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD05_021E8E54 + str r0, [r4, #4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8EA8 +MOD05_021E8EA8: ; 0x021E8EA8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4] + bl FUN_02012AC4 + ldr r0, [r4] + bl FUN_02012B00 + pop {r4, pc} + + thumb_func_start MOD05_021E8EC0 +MOD05_021E8EC0: ; 0x021E8EC0 + push {r4, r5, lr} + sub sp, #0x14 + ldr r4, [sp, #0x20] + add r5, sp, #0x10 + str r4, [sp] + mov r4, #0x14 + ldrsh r4, [r5, r4] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + ldr r0, [r0] + bl FUN_02012A30 + add sp, #0x14 + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8EE8 +MOD05_021E8EE8: ; 0x021E8EE8 + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0] + add r7, r1, #0 + bl FUN_02012B20 + add r5, r0, #0 + mov r6, #0 +_021E8EF6: + ldr r0, [r5] + add r1, r7, #0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r6, #0 + bl _u32_div_f + mov r1, #1 + tst r0, r1 + bne _021E8F0E + lsl r0, r4, #0x10 + b _021E8F12 +_021E8F0E: + neg r0, r4 + lsl r0, r0, #0x10 +_021E8F12: + lsr r0, r0, #0x10 + str r0, [r5] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xc0 + blt _021E8EF6 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E8F20 +MOD05_021E8F20: ; 0x021E8F20 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bhi _021E9026 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8F3C: ; jump table + .short _021E8F48 - _021E8F3C - 2 ; case 0 + .short _021E8F68 - _021E8F3C - 2 ; case 1 + .short _021E8F84 - _021E8F3C - 2 ; case 2 + .short _021E8F92 - _021E8F3C - 2 ; case 3 + .short _021E8FDC - _021E8F3C - 2 ; case 4 + .short _021E8FFC - _021E8F3C - 2 ; case 5 +_021E8F48: + mov r0, #4 + mov r1, #0x1c + bl AllocFromHeap + str r0, [r4, #0xc] + mov r2, #0x1c + mov r1, #0 +_021E8F56: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8F56 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F68: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F84: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021E9026 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F92: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x19 + add r1, r0, #0 + mov r0, #0xc + lsl r2, r2, #0x10 + str r0, [sp] + ldr r3, _021E902C ; =0xFFFFE000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8FDC: + add r0, r5, #4 + bl MOD05_021E36A4 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + bl FUN_0200E308 + cmp r0, #0 + beq _021E9026 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8FFC: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E9010 + mov r0, #1 + str r0, [r1] +_021E9010: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E9026: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E902C: .word 0xFFFFE000 + + thumb_func_start MOD05_021E9030 +MOD05_021E9030: ; 0x021E9030 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bhi _021E9136 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E904C: ; jump table + .short _021E9058 - _021E904C - 2 ; case 0 + .short _021E9078 - _021E904C - 2 ; case 1 + .short _021E9094 - _021E904C - 2 ; case 2 + .short _021E90A2 - _021E904C - 2 ; case 3 + .short _021E90EC - _021E904C - 2 ; case 4 + .short _021E910C - _021E904C - 2 ; case 5 +_021E9058: + mov r0, #4 + mov r1, #0x1c + bl AllocFromHeap + str r0, [r4, #0xc] + mov r2, #0x1c + mov r1, #0 +_021E9066: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E9066 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E9078: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E9094: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021E9136 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E90A2: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl Camera_GetDistance + mov r2, #0x32 + add r1, r0, #0 + mov r0, #0xc + lsl r2, r2, #0x10 + str r0, [sp] + ldr r3, _021E913C ; =0xFFFFB000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E90EC: + add r0, r5, #4 + bl MOD05_021E36A4 + ldr r0, [r5, #4] + ldr r1, [r5] + bl Camera_SetDistance + bl FUN_0200E308 + cmp r0, #0 + beq _021E9136 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E910C: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E9120 + mov r0, #1 + str r0, [r1] +_021E9120: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E9136: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E913C: .word 0xFFFFB000 + + thumb_func_start MOD05_021E9140 +MOD05_021E9140: ; 0x021E9140 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r7, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r7] + ldr r4, [r7, #0xc] + cmp r0, #7 + bls _021E9152 + b _021E948A +_021E9152: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E915E: ; jump table + .short _021E916E - _021E915E - 2 ; case 0 + .short _021E9228 - _021E915E - 2 ; case 1 + .short _021E9242 - _021E915E - 2 ; case 2 + .short _021E924E - _021E915E - 2 ; case 3 + .short _021E92B2 - _021E915E - 2 ; case 4 + .short _021E931A - _021E915E - 2 ; case 5 + .short _021E93A6 - _021E915E - 2 ; case 6 + .short _021E9430 - _021E915E - 2 ; case 7 +_021E916E: + mov r1, #0x1e + mov r0, #4 + lsl r1, r1, #4 + bl AllocFromHeap + mov r2, #0x1e + str r0, [r7, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r0, [r7, #0x10] + ldr r4, [r7, #0xc] + ldr r1, [r0, #0x20] + mov r0, #7 + lsl r0, r0, #6 + str r1, [r4, r0] + bl MOD05_021E3768 + str r0, [r4, #0x44] + add r0, r4, #0 + add r0, #0x48 + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021E949C ; =0x000927C0 + mov r1, #0x61 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x48 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp, #0x14] + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x48 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021E91D4: + mov r0, #0 + str r0, [sp] + mov r1, #0x61 + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + ldr r0, [sp, #0x1c] + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020310 + ldr r0, [sp, #0x14] + add r5, r5, #4 + add r0, r0, #1 + add r6, r6, #2 + str r0, [sp, #0x14] + cmp r0, #2 + blt _021E91D4 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9228: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r7, #4 + bl MOD05_021E3474 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9242: + ldr r1, [r7, #4] + cmp r1, #0 + beq _021E9310 + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E924E: + mov r0, #0xa + mov r2, #1 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x29 + lsl r2, r2, #0xc + mov r3, #2 + bl MOD05_021E3644 + ldr r1, [r4] + add r0, sp, #0x50 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + mov r6, #0 + add r5, r4, #0 +_021E9270: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x50 + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9270 + add r0, r4, #0 + ldr r2, _021E94A0 ; =0x0000FFFF + add r0, #0x18 + mov r1, #0 + mov r3, #0xa + bl MOD05_021E35B0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E92B2: + add r0, r4, #0 + bl MOD05_021E36A4 + ldr r1, [r4] + str r0, [sp, #0x18] + add r0, sp, #0x50 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + mov r6, #0 + add r5, r4, #0 +_021E92D2: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x50 + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E92D2 + mov r0, #0x6e + ldr r1, [r4, #0x18] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r0, [r4, r1] + ldr r2, [r4, #0x18] + sub r1, #0xbc + sub r1, r2, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020088 + ldr r0, [sp, #0x18] + cmp r0, #1 + beq _021E9312 +_021E9310: + b _021E948A +_021E9312: + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E931A: + mov r0, #0 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0xa + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r4, #0x44] + add r0, r7, #0 + mov r2, #0x60 + mov r3, #6 + bl MOD05_021E37CC + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_02020130 + mov r0, #6 + str r0, [sp] + add r0, r4, #0 + mov r2, #0xff + mov r3, #0xa + add r0, #0x2c + mov r1, #0 + lsl r2, r2, #0xc + lsl r3, r3, #0xc + bl MOD05_021E3644 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0x71 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E94A4 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E93A6: + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E36A4 + mov r1, #2 + ldr r2, [r4, #0x2c] + lsl r1, r1, #0x12 + sub r1, r1, r2 + mov r2, #6 + add r0, sp, #0x2c + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x2c + ldmia r3!, {r0, r1} + add r2, sp, #0x44 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r2, [r4, #0x2c] + lsl r1, r1, #0x12 + add r1, r2, r1 + mov r2, #6 + add r0, sp, #0x20 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x20 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x44 + str r0, [r2] + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + add r0, r7, #0 + bl MOD05_021E35AC + cmp r0, #0 + beq _021E948A + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9430: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r7, #0x14] + cmp r1, #0 + beq _021E944A + mov r0, #1 + str r0, [r1] +_021E944A: + mov r6, #0 + add r5, r4, #0 +_021E944E: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E944E + mov r1, #0x61 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x48 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x48 + bl MOD05_021E3E44 + ldr r0, [r4, #0x44] + bl MOD05_021E37A4 + ldr r1, [r7, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021E948A: + ldr r0, [r7] + cmp r0, #7 + beq _021E9496 + ldr r0, [r4, #0x48] + bl FUN_0201FDEC +_021E9496: + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_021E949C: .word 0x000927C0 +_021E94A0: .word 0x0000FFFF +_021E94A4: .word 0xFFFF6000 + + thumb_func_start MOD05_021E94A8 +MOD05_021E94A8: ; 0x021E94A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r6, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r6] + ldr r4, [r6, #0xc] + cmp r0, #7 + bhi _021E95A2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E94C4: ; jump table + .short _021E94D4 - _021E94C4 - 2 ; case 0 + .short _021E9582 - _021E94C4 - 2 ; case 1 + .short _021E959C - _021E94C4 - 2 ; case 2 + .short _021E95AA - _021E94C4 - 2 ; case 3 + .short _021E9638 - _021E94C4 - 2 ; case 4 + .short _021E96C8 - _021E94C4 - 2 ; case 5 + .short _021E9702 - _021E94C4 - 2 ; case 6 + .short _021E972C - _021E94C4 - 2 ; case 7 +_021E94D4: + mov r1, #0x71 + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + mov r2, #0x71 + str r0, [r6, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r0, [r6, #0x10] + ldr r4, [r6, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x69 + lsl r0, r0, #2 + str r1, [r4, r0] + bl MOD05_021E39FC + str r0, [r4, #0x28] + add r0, r4, #0 + add r0, #0x2c + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021E9798 ; =0x000927C0 + mov r1, #0x5a + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x2c + mov r7, #0 + add r5, r4, #0 + str r0, [sp, #0x14] +_021E9536: + mov r0, #0 + str r0, [sp] + mov r1, #0x5a + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + ldr r0, [sp, #0x14] + add r1, r4, r1 + lsl r2, r2, #0x12 + mov r3, #0 + bl MOD05_021E3FC4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #2 + blt _021E9536 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9582: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r6, #4 + bl MOD05_021E3474 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E959C: + ldr r1, [r6, #4] + cmp r1, #0 + bne _021E95A4 +_021E95A2: + b _021E9786 +_021E95A4: + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E95AA: + mov r2, #3 + ldr r1, _021E979C ; =0xFFF40000 + add r0, r4, #0 + lsl r2, r2, #0x12 + mov r3, #8 + bl MOD05_021E35EC + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + sub r1, r2, r1 + add r0, sp, #0x3c + lsr r2, r2, #1 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x3c + ldmia r3!, {r0, r1} + add r2, sp, #0x6c + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r3, #0 + str r0, [r2] + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + add r0, sp, #0x30 + add r1, r1, r2 + bl MOD05_021E3FF8 + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, sp, #0x60 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x6c + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x60 + bl FUN_02020044 + add r0, r4, #0 + ldr r2, _021E97A0 ; =0x0001FFFE + add r0, #0x14 + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9638: + add r0, r4, #0 + bl MOD05_021E35FC + mov r2, #2 + add r5, r0, #0 + ldr r1, [r4] + lsl r2, r2, #0x12 + sub r1, r2, r1 + add r0, sp, #0x24 + lsr r2, r2, #1 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x24 + ldmia r3!, {r0, r1} + add r2, sp, #0x54 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r3, #0 + str r0, [r2] + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + add r0, sp, #0x18 + add r1, r1, r2 + bl MOD05_021E3FF8 + add r3, sp, #0x18 + ldmia r3!, {r0, r1} + add r2, sp, #0x48 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x54 + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x48 + bl FUN_02020044 + add r0, r4, #0 + add r0, #0x14 + bl MOD05_021E35C0 + mov r0, #0x67 + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + ldr r1, [r4, #0x14] + mov r0, #0x1a + lsl r0, r0, #4 + neg r1, r1 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + cmp r5, #1 + bne _021E9786 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E96C8: + mov r3, #1 + lsl r3, r3, #0xc + str r3, [sp] + ldr r1, [r4, #0x28] + add r0, r6, #0 + mov r2, #8 + bl MOD05_021E3A70 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x6a + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E97A4 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9702: + mov r0, #0x6a + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + add r0, r6, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E9786 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E972C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r6, #0x14] + cmp r1, #0 + beq _021E9746 + mov r0, #1 + str r0, [r1] +_021E9746: + mov r7, #0 + add r5, r4, #0 +_021E974A: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #2 + blt _021E974A + mov r1, #0x5a + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E3E44 + ldr r0, [r4, #0x28] + bl MOD05_021E3A48 + ldr r1, [r6, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021E9786: + ldr r0, [r6] + cmp r0, #7 + beq _021E9792 + ldr r0, [r4, #0x2c] + bl FUN_0201FDEC +_021E9792: + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9798: .word 0x000927C0 +_021E979C: .word 0xFFF40000 +_021E97A0: .word 0x0001FFFE +_021E97A4: .word 0xFFFF6000 + + thumb_func_start MOD05_021E97A8 +MOD05_021E97A8: ; 0x021E97A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r7, r1, #0 + str r0, [sp, #0x14] + ldr r0, [r7] + ldr r4, [r7, #0xc] + cmp r0, #7 + bls _021E97BA + b _021E9B2A +_021E97BA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E97C6: ; jump table + .short _021E97D6 - _021E97C6 - 2 ; case 0 + .short _021E9892 - _021E97C6 - 2 ; case 1 + .short _021E98AC - _021E97C6 - 2 ; case 2 + .short _021E98F2 - _021E97C6 - 2 ; case 3 + .short _021E9958 - _021E97C6 - 2 ; case 4 + .short _021E99E4 - _021E97C6 - 2 ; case 5 + .short _021E9A68 - _021E97C6 - 2 ; case 6 + .short _021E9AD0 - _021E97C6 - 2 ; case 7 +_021E97D6: + mov r1, #0x7a + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + mov r2, #0x7a + str r0, [r7, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r0, [r7, #0x10] + ldr r4, [r7, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x72 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x40 + mov r1, #4 + bl MOD05_021E8E8C + mov r0, #0x79 + mov r1, #0xc + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x50 + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021E9B4C ; =0x000927C0 + mov r1, #0x63 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x50 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x50 + mov r6, #0 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021E9844: + mov r0, #0 + str r0, [sp] + mov r1, #0x63 + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + ldr r0, [sp, #0x1c] + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020310 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9844 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9892: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r7, #4 + bl MOD05_021E3474 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E98AC: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E98E4 + mov r0, #3 + lsl r0, r0, #0xe + mov r3, #0x32 + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E9B50 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x40 + mov r2, #0xbf + sub r3, #0x76 + bl MOD05_021E8EC0 + mov r0, #1 + str r0, [r4, #0x4c] +_021E98E4: + ldr r0, [r7, #4] + cmp r0, #0 + beq _021E99BE + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E98F2: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + mov r2, #0x10 + mov r3, #8 + bl MOD05_021E35B0 + ldr r3, [r4, #0x18] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021E9B54 ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + mov r6, #0 + add r5, r4, #0 +_021E9916: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9916 + add r0, r4, #0 + ldr r2, _021E9B58 ; =0x0000FFFF + add r0, #0x2c + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9958: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r6, r0, #0 + ldr r1, [r4, #0x18] + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021E9B5C ; =0x04000052 + strh r1, [r0] + ldr r0, [r4, #0x2c] + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E35C0 + cmp r0, #0 + bne _021E99A2 + mov r0, #7 + ldr r1, [r4, #0x2c] + lsl r0, r0, #6 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r0, #0x71 + lsl r0, r0, #2 + lsl r1, r5, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + b _021E99BA +_021E99A2: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 +_021E99BA: + cmp r6, #1 + beq _021E99C0 +_021E99BE: + b _021E9B2A +_021E99C0: + ldr r0, _021E9B54 ; =0x04000050 + mov r6, #0 + strh r6, [r0] + add r5, r4, #0 +_021E99C8: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020398 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E99C8 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E99E4: + mov r1, #8 + str r1, [sp] + ldr r3, _021E9B60 ; =0x0000019A + add r0, r4, #0 + lsl r1, r1, #9 + mov r2, #0x29 + bl MOD05_021E3644 + ldr r1, [r4] + add r0, sp, #0x34 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x34 + add r2, sp, #0x4c + ldmia r3!, {r0, r1} + str r2, [sp, #0x20] + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r6, #0 + str r0, [r2] + add r5, r4, #0 +_021E9A12: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x20] + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9A12 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x73 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E9B64 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x18 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9A68: + add r0, r4, #0 + bl MOD05_021E36A4 + ldr r1, [r4] + str r0, [sp, #0x18] + add r0, sp, #0x28 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x28 + add r2, sp, #0x40 + ldmia r3!, {r0, r1} + str r2, [sp, #0x24] + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r6, #0 + str r0, [r2] + add r5, r4, #0 +_021E9A8E: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x24] + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9A8E + mov r0, #0x73 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x73 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E9B2A + bl FUN_0200E308 + cmp r0, #1 + bne _021E9B2A + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9AD0: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r7, #0x14] + cmp r1, #0 + beq _021E9AE2 + mov r0, #1 + str r0, [r1] +_021E9AE2: + add r0, r4, #0 + add r0, #0x40 + bl MOD05_021E8EA8 + mov r6, #0 + str r6, [r4, #0x4c] + add r5, r4, #0 +_021E9AF0: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9AF0 + mov r1, #0x63 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x50 + add r1, r4, r1 + bl MOD05_021E3F3C + add r4, #0x50 + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r7, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + ldr r0, [sp, #0x14] + bl FUN_0200621C + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} +_021E9B2A: + ldr r0, [r4, #0x4c] + cmp r0, #1 + bne _021E9B3A + add r0, r4, #0 + add r0, #0x40 + mov r1, #2 + bl MOD05_021E8EE8 +_021E9B3A: + ldr r0, [r7] + cmp r0, #7 + beq _021E9B46 + ldr r0, [r4, #0x50] + bl FUN_0201FDEC +_021E9B46: + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9B4C: .word 0x000927C0 +_021E9B50: .word 0x04000010 +_021E9B54: .word 0x04000050 +_021E9B58: .word 0x0000FFFF +_021E9B5C: .word 0x04000052 +_021E9B60: .word 0x0000019A +_021E9B64: .word 0xFFFF6000 + + thumb_func_start MOD05_021E9B68 +MOD05_021E9B68: ; 0x021E9B68 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x18] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x1c] + ldr r4, [r1, #0xc] + cmp r0, #7 + bls _021E9B7C + b _021EA01A +_021E9B7C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9B88: ; jump table + .short _021E9B98 - _021E9B88 - 2 ; case 0 + .short _021E9CAA - _021E9B88 - 2 ; case 1 + .short _021E9CCA - _021E9B88 - 2 ; case 2 + .short _021E9D24 - _021E9B88 - 2 ; case 3 + .short _021E9DE4 - _021E9B88 - 2 ; case 4 + .short _021E9E82 - _021E9B88 - 2 ; case 5 + .short _021E9F1C - _021E9B88 - 2 ; case 6 + .short _021E9F70 - _021E9B88 - 2 ; case 7 +_021E9B98: + mov r1, #9 + mov r0, #4 + lsl r1, r1, #6 + bl AllocFromHeap + ldr r1, [sp, #0x1c] + mov r2, #9 + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #6 + bl memset + ldr r0, [sp, #0x1c] + ldr r4, [r0, #0xc] + ldr r0, [r0, #0x10] + ldr r1, [r0, #0x20] + mov r0, #0x22 + lsl r0, r0, #4 + str r1, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + mov r1, #4 + bl MOD05_021E8E8C + mov r0, #0x8f + mov r1, #0xe + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #3 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021E9F5C ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021E9C02: + mov r0, #0 + str r0, [sp] + mov r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #4 + bl MOD05_021E4140 + mov r1, #0x7d + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E9C02 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + mov r0, #4 + mov r1, #1 + bl AllocWindows + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, [r4, r1] + ldr r0, [r0, #0x10] + mov r2, #3 + ldr r0, [r0, #8] + bl AddWindowParameterized + mov r1, #0 + add r0, sp, #0x28 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x28 + mov r2, #2 + mov r3, #0x1e + bl BG_LoadPlttData + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FillWindowPixelBuffer + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ScheduleWindowCopyToVram + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9CAA: + mov r1, #0x10 + ldr r3, [sp, #0x1c] + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9CCA: + mov r3, #0x8f + lsl r3, r3, #2 + ldr r0, [r4, r3] + sub r0, r0, #1 + str r0, [r4, r3] + ldr r0, [r4, r3] + cmp r0, #0 + bne _021E9D08 + mov r0, #3 + lsl r0, r0, #0xe + str r0, [sp] + add r0, r3, #0 + add r0, #0xe4 + str r0, [sp, #4] + ldr r0, _021E9F60 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r3, #0 + sub r0, #0x2c + add r0, r4, r0 + mov r2, #0xbf + add r3, #0x6e + bl MOD05_021E8EC0 + mov r0, #0x87 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021E9D08: + ldr r0, [sp, #0x1c] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E9D34 + mov r0, #0x8f + mov r1, #6 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9D24: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021E9D36 +_021E9D34: + b _021EA01A +_021E9D36: + sub r0, #0x1c + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0x89 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E9F64 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r2, _021E9F68 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x5f + lsl r0, r0, #2 + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r3, #0x40 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + sub r0, #0x18 + mov r1, #0x2b + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0xf8 + bl MOD05_021E4160 + mov r1, #0x2b + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #1 + lsl r0, r1, #9 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + mov r0, #0x8f + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EA01A +_021E9DE4: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + bge _021E9E92 + sub r0, #0xac + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r2, _021E9F6C ; =0xFFFF0001 + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, #0x14 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + mov r1, #0x40 + str r1, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + mov r1, #0xd7 + add r3, r1, #0 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0x61 + bl MOD05_021E4160 + mov r1, #0xd7 + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #1 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0x81 + mov r0, #1 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x1c] + add r1, #0x38 + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x1c] + str r2, [r0] + mov r0, #2 + str r0, [r4, r1] + b _021EA01A +_021E9E82: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021E9E94 +_021E9E92: + b _021EA01A +_021E9E94: + sub r0, #0x98 + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r2, _021E9F68 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, #0x10 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + mov r1, #0x40 + str r1, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + mov r1, #0x81 + add r3, r1, #0 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0xb7 + bl MOD05_021E4160 + mov r1, #0x81 + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #2 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9F1C: + mov r0, #0x89 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + mov r1, #2 + lsl r1, r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA01A + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021EA01A + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA01A + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A + nop +_021E9F5C: .word 0x000927C0 +_021E9F60: .word 0x04000010 +_021E9F64: .word 0xFFFF6000 +_021E9F68: .word 0x0000FFFF +_021E9F6C: .word 0xFFFF0001 +_021E9F70: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021E9F8C + mov r0, #1 + str r0, [r1] +_021E9F8C: + mov r0, #0x21 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E8EA8 + mov r0, #0x87 + lsl r0, r0, #2 + mov r6, #0 + add r7, r0, #0 + str r6, [r4, r0] + add r5, r4, #0 + sub r7, #0x28 +_021E9FA4: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + ldr r0, [r5, r7] + bl MOD05_021E4158 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E9FA4 + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ClearWindowTilemapAndCopyToVram + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl RemoveWindow + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl WindowArray_dtor + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl BG_ClearCharDataRange + ldr r0, [sp, #0x1c] + mov r1, #3 + ldr r0, [r0, #0x10] + ldr r0, [r0, #8] + bl BgClearTilemapBufferAndCommit + ldr r1, [sp, #0x1c] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FreeToHeapExplicit + ldr r0, [sp, #0x18] + bl FUN_0200621C + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021EA01A: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #1 + bne _021EA02E + sub r0, #0xc + add r0, r4, r0 + mov r1, #2 + bl MOD05_021E8EE8 +_021EA02E: + mov r1, #0x5f + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x20] + add r0, r4, r1 + add r1, #0x3c + add r5, r4, #0 + str r0, [sp, #0x24] + add r7, r4, r1 + add r6, r4, #0 +_021EA042: + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EA0B0 + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD05_021E41B8 + cmp r0, #0 + beq _021EA062 + mov r0, #2 + mov r1, #0 + lsl r0, r0, #8 + str r1, [r5, r0] +_021EA062: + ldr r0, [sp, #0x24] + bl MOD05_021E35C0 + add r0, r7, #0 + bl MOD05_021E35C0 + mov r1, #0x6e + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r6, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020044 +_021EA0B0: + ldr r0, [sp, #0x24] + add r5, r5, #4 + add r0, #0x14 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x20] + cmp r0, #3 + blt _021EA042 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ScheduleWindowCopyToVram + ldr r0, [sp, #0x1c] + ldr r0, [r0] + cmp r0, #7 + beq _021EA0DE + ldr r0, [r4] + bl FUN_0201FDEC +_021EA0DE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EA0E4 +MOD05_021EA0E4: ; 0x021EA0E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #0xc] + cmp r0, #7 + bhi _021EA1B8 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA100: ; jump table + .short _021EA110 - _021EA100 - 2 ; case 0 + .short _021EA198 - _021EA100 - 2 ; case 1 + .short _021EA1B2 - _021EA100 - 2 ; case 2 + .short _021EA1C0 - _021EA100 - 2 ; case 3 + .short _021EA236 - _021EA100 - 2 ; case 4 + .short _021EA2C2 - _021EA100 - 2 ; case 5 + .short _021EA310 - _021EA100 - 2 ; case 6 + .short _021EA338 - _021EA100 - 2 ; case 7 +_021EA110: + mov r1, #0x1f + mov r0, #4 + lsl r1, r1, #4 + bl AllocFromHeap + mov r2, #0x1f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r0, [r5, #0x10] + ldr r4, [r5, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x1d + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0x5c + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EA394 ; =0x000927C0 + mov r1, #0x66 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x5c + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x66 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #2 + ldr r3, _021EA398 ; =0xFFFE0000 + add r0, #0x5c + add r1, r4, r1 + lsl r2, r2, #0x12 + bl MOD05_021E3FC4 + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA198: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA1B2: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EA1BA +_021EA1B8: + b _021EA382 +_021EA1BA: + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA1C0: + mov r2, #1 + mov r0, #0xc + lsl r2, r2, #0x14 + str r0, [sp] + add r0, r4, #0 + mov r1, #0 + lsr r3, r2, #7 + bl MOD05_021E3644 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + mov r2, #2 + ldr r1, _021EA39C ; =0x0000019A + add r0, #0x18 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3644 + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + mov r2, #2 + ldr r1, _021EA39C ; =0x0000019A + add r0, #0x30 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3644 + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x30] + add r0, sp, #0x28 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x28 + mov r2, #2 + bl FUN_02020074 + add r0, r4, #0 + ldr r2, _021EA3A0 ; =0x0000FFFF + add r0, #0x48 + mov r1, #0 + mov r3, #0xc + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA236: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r1, #2 + lsl r1, r1, #0x12 + add r6, r0, #0 + ldr r3, [r4] + lsr r2, r1, #2 + sub r2, r3, r2 + add r0, sp, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x10 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r7, #0 + str r0, [r2] + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E36A4 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E36A4 + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x30] + add r0, sp, #0x28 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x28 + bl FUN_02020064 + add r0, r4, #0 + add r0, #0x48 + bl MOD05_021E35C0 + mov r0, #0x73 + ldr r1, [r4, #0x48] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + cmp r6, #1 + bne _021EA382 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA2C2: + ldr r0, [r5, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0x1d + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x75 + mov r2, #0xfa + lsl r0, r0, #2 + lsl r2, r2, #0xe + mov r3, #0xa + add r0, r4, r0 + sub r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x12 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA310: + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x75 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + bl FUN_0200E308 + cmp r0, #0 + beq _021EA382 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA338: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r5, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EA354 + mov r0, #1 + str r0, [r1] +_021EA354: + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #0x66 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x5c + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x5c + bl MOD05_021E3E44 + ldr r1, [r5, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C +_021EA382: + ldr r0, [r5] + cmp r0, #7 + beq _021EA38E + ldr r0, [r4, #0x5c] + bl FUN_0201FDEC +_021EA38E: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021EA394: .word 0x000927C0 +_021EA398: .word 0xFFFE0000 +_021EA39C: .word 0x0000019A +_021EA3A0: .word 0x0000FFFF + + thumb_func_start MOD05_021EA3A4 +MOD05_021EA3A4: ; 0x021EA3A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x14] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x18] + ldr r4, [r1, #0xc] + cmp r0, #9 + bls _021EA3B8 + b _021EA7DE +_021EA3B8: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA3C4: ; jump table + .short _021EA3D8 - _021EA3C4 - 2 ; case 0 + .short _021EA4CE - _021EA3C4 - 2 ; case 1 + .short _021EA4EE - _021EA3C4 - 2 ; case 2 + .short _021EA506 - _021EA3C4 - 2 ; case 3 + .short _021EA582 - _021EA3C4 - 2 ; case 4 + .short _021EA5FE - _021EA3C4 - 2 ; case 5 + .short _021EA674 - _021EA3C4 - 2 ; case 6 + .short _021EA6B4 - _021EA3C4 - 2 ; case 7 + .short _021EA6FA - _021EA3C4 - 2 ; case 8 + .short _021EA748 - _021EA3C4 - 2 ; case 9 +_021EA3D8: + mov r1, #0x8a + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + ldr r1, [sp, #0x18] + mov r2, #0x8a + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r0, [sp, #0x18] + mov r2, #1 + ldr r4, [r0, #0xc] + ldr r0, [r0, #0x10] + ldr r1, [r0, #0x20] + mov r0, #0x82 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #3 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EA738 ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021EA430: + mov r0, #0 + mov r2, #0 + str r0, [sp] + add r3, r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + sub r3, #0x20 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA430 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + mov r0, #4 + mov r1, #1 + bl AllocWindows + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [sp, #0x18] + ldr r1, [r4, r1] + ldr r0, [r0, #0x10] + mov r2, #3 + ldr r0, [r0, #8] + bl AddWindowParameterized + mov r1, #0 + add r0, sp, #0x28 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x28 + mov r2, #2 + mov r3, #0x1e + bl BG_LoadPlttData + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl FillWindowPixelBuffer + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl ScheduleWindowCopyToVram + mov r0, #4 + bl MOD05_021E4394 + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA4CE: + mov r1, #0x10 + ldr r3, [sp, #0x18] + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA4EE: + ldr r1, [sp, #0x18] + ldr r1, [r1, #4] + cmp r1, #0 + beq _021EA516 + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + mov r0, #0x89 + mov r1, #0 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021EA7DE +_021EA506: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + ble _021EA518 +_021EA516: + b _021EA7DE +_021EA518: + sub r0, #0xa8 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #2 + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r2, _021EA740 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r1, #0x7d + mov r3, #1 + lsl r1, r1, #2 + str r3, [r4, r1] + ldr r0, [sp, #0x18] + add r1, #0x30 + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x18] + str r2, [r0] + strh r3, [r4, r1] + b _021EA7DE +_021EA582: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + bgt _021EA68E + sub r0, #0x94 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #0xd + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r2, _021EA744 ; =0xFFFF0001 + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r1, #0x7e + mov r0, #1 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x18] + add r1, #0x2c + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x18] + str r2, [r0] + mov r0, #3 + strh r0, [r4, r1] + b _021EA7DE +_021EA5FE: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + bgt _021EA68E + sub r0, #0x80 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #3 + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r2, _021EA740 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x7f + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA674: + mov r1, #0x7d + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA68E + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021EA68E + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021EA690 +_021EA68E: + b _021EA7DE +_021EA690: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EA698: + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA698 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA6B4: + mov r0, #0xf + mov r1, #1 + str r0, [sp] + mov r0, #0x81 + lsl r0, r0, #2 + lsl r3, r1, #9 + ldr r0, [r4, r0] + ldr r3, [r4, r3] + add r2, r1, #0 + bl MOD05_021E43E4 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x83 + mov r2, #0xfa + lsl r0, r0, #2 + lsl r2, r2, #0xe + mov r3, #0xa + add r0, r4, r0 + sub r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA6FA: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021E4424 + add r5, r0, #0 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl ScheduleWindowCopyToVram + mov r0, #0x83 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x83 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + cmp r5, #1 + bne _021EA7DE + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE + .balign 4, 0 +_021EA738: .word 0x000927C0 +_021EA73C: .word 0xFFFE0000 +_021EA740: .word 0x0000FFFF +_021EA744: .word 0xFFFF0001 +_021EA748: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x18] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021EA764 + mov r0, #1 + str r0, [r1] +_021EA764: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EA76C: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA76C + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021E43C4 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl ClearWindowTilemapAndCopyToVram + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl RemoveWindow + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl WindowArray_dtor + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl BG_ClearCharDataRange + ldr r0, [sp, #0x18] + mov r1, #3 + ldr r0, [r0, #0x10] + ldr r0, [r0, #8] + bl BgClearTilemapBufferAndCommit + ldr r1, [sp, #0x18] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FreeToHeapExplicit + ldr r0, [sp, #0x14] + bl FUN_0200621C +_021EA7DE: + mov r1, #0x5f + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x1c] + add r0, r4, r1 + add r1, #0x3c + add r5, r4, #0 + str r0, [sp, #0x20] + add r7, r4, r1 + add r6, r4, #0 +_021EA7F2: + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EA85A + ldr r0, [sp, #0x20] + bl MOD05_021E35C0 + str r0, [sp, #0x24] + add r0, r7, #0 + bl MOD05_021E35C0 + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _021EA818 + mov r0, #0x7d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_021EA818: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020044 + mov r1, #0x6e + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r6, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 +_021EA85A: + ldr r0, [sp, #0x20] + add r5, r5, #4 + add r0, #0x14 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x1c] + cmp r0, #3 + blt _021EA7F2 + ldr r0, [sp, #0x18] + ldr r0, [r0] + cmp r0, #9 + beq _021EA87E + ldr r0, [r4] + bl FUN_0201FDEC +_021EA87E: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EA884 +MOD05_021EA884: ; 0x021EA884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #7 + bls _021EA896 + b _021EAAC6 +_021EA896: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA8A2: ; jump table + .short _021EA8B2 - _021EA8A2 - 2 ; case 0 + .short _021EA93E - _021EA8A2 - 2 ; case 1 + .short _021EA958 - _021EA8A2 - 2 ; case 2 + .short _021EA964 - _021EA8A2 - 2 ; case 3 + .short _021EA996 - _021EA8A2 - 2 ; case 4 + .short _021EA9C8 - _021EA8A2 - 2 ; case 5 + .short _021EAA38 - _021EA8A2 - 2 ; case 6 + .short _021EAA7C - _021EA8A2 - 2 ; case 7 +_021EA8B2: + mov r1, #0x69 + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + mov r2, #0x69 + str r0, [r4, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r5, [r4, #0xc] + mov r1, #1 + add r0, r5, #0 + add r0, #0x2c + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021EAAD8 ; =0x000927C0 + mov r1, #0x5a + str r0, [sp, #0xc] + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r5, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x5a + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + add r0, #0x2c + add r1, r5, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA93E: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA958: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021EA9AE + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA964: + add r0, r5, #0 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xc + bl MOD05_021E35B0 + ldr r3, [r5] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021EAADC ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA996: + add r0, r5, #0 + bl MOD05_021E35C0 + ldr r2, [r5] + mov r1, #0x10 + sub r1, r1, r2 + lsl r1, r1, #8 + orr r1, r2 + ldr r2, _021EAAE0 ; =0x04000052 + cmp r0, #1 + strh r1, [r2] + beq _021EA9B0 +_021EA9AE: + b _021EAAC6 +_021EA9B0: + mov r1, #0 + sub r0, r2, #2 + strh r1, [r0] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020398 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA9C8: + mov r0, #6 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + ldr r2, _021EAAE4 ; =0x0000019A + add r0, #0x14 + lsl r1, r1, #0xc + mov r3, #1 + bl MOD05_021E3644 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + ldr r1, [r5, #0x14] + add r0, sp, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r6, sp, #0x1c + add r3, sp, #0x34 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020064 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x10 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EAA38: + add r0, r5, #0 + add r0, #0x14 + bl MOD05_021E36A4 + ldr r1, [r5, #0x14] + add r6, r0, #0 + add r0, sp, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x10 + add r2, sp, #0x28 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r7, #0 + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020064 + cmp r6, #1 + bne _021EAAC6 + bl FUN_0200E308 + cmp r0, #1 + bne _021EAAC6 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EAA7C: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EAA98 + mov r0, #1 + str r0, [r1] +_021EAA98: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + mov r1, #0x5a + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r5, r1 + bl MOD05_021E3F3C + add r0, r5, #0 + add r0, #0x2c + bl MOD05_021E3E44 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C +_021EAAC6: + ldr r0, [r4] + cmp r0, #7 + beq _021EAAD2 + ldr r0, [r5, #0x2c] + bl FUN_0201FDEC +_021EAAD2: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EAAD8: .word 0x000927C0 +_021EAADC: .word 0x04000050 +_021EAAE0: .word 0x04000052 +_021EAAE4: .word 0x0000019A + + thumb_func_start MOD05_021EAAE8 +MOD05_021EAAE8: ; 0x021EAAE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r6] + ldr r4, [r6, #0xc] + cmp r0, #7 + bhi _021EABBC + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EAB04: ; jump table + .short _021EAB14 - _021EAB04 - 2 ; case 0 + .short _021EAB9C - _021EAB04 - 2 ; case 1 + .short _021EABB6 - _021EAB04 - 2 ; case 2 + .short _021EABC4 - _021EAB04 - 2 ; case 3 + .short _021EAC0E - _021EAB04 - 2 ; case 4 + .short _021EACC0 - _021EAB04 - 2 ; case 5 + .short _021EACEA - _021EAB04 - 2 ; case 6 + .short _021EACFA - _021EAB04 - 2 ; case 7 +_021EAB14: + mov r1, #0x1b + mov r0, #4 + lsl r1, r1, #4 + bl AllocFromHeap + mov r2, #0x1b + str r0, [r6, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r4, [r6, #0xc] + mov r1, #4 + add r0, r4, #0 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EAD5C ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0 + add r5, r4, #0 +_021EAB5A: + mov r0, #0 + mov r1, #0x4f + str r0, [sp] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EAB5A + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EAB9C: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r6, #4 + bl MOD05_021E3474 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EABB6: + ldr r1, [r6, #4] + cmp r1, #0 + bne _021EABBE +_021EABBC: + b _021EAD4C +_021EABBE: + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EABC4: + mov r3, #6 + mov r2, #4 + lsl r3, r3, #6 + str r2, [sp] + add r0, r4, r3 + mov r1, #0 + lsl r2, r2, #0x11 + add r3, #0x1a + bl MOD05_021E3644 + mov r3, #0x66 + mov r0, #4 + mov r2, #0xa + lsl r3, r3, #2 + str r0, [sp] + add r0, r4, r3 + mov r1, #0 + lsl r2, r2, #0x10 + add r3, r3, #2 + bl MOD05_021E3644 + mov r7, #0 + add r5, r4, #0 +_021EABF2: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EABF2 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EAC0E: + mov r0, #6 + lsl r0, r0, #6 + mov r7, #0 + add r5, r4, r0 +_021EAC16: + add r0, r5, #0 + bl MOD05_021E36A4 + add r7, r7, #1 + add r5, #0x18 + str r0, [sp, #0x14] + cmp r7, #2 + blt _021EAC16 + mov r2, #6 + lsl r2, r2, #6 + ldr r3, [r4, r2] + mov r1, #2 + lsl r2, r2, #0xa + sub r2, r2, r3 + add r0, sp, #0x18 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r2, #6 + lsl r2, r2, #6 + ldr r3, [r4, r2] + mov r1, #2 + lsl r2, r2, #0xa + add r2, r3, r2 + add r0, sp, #0x18 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r1, #2 + lsl r1, r1, #0x12 + sub r1, r1, r2 + mov r2, #6 + add r0, sp, #0x18 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r1, #2 + lsl r1, r1, #0x12 + add r1, r2, r1 + mov r2, #6 + add r0, sp, #0x18 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _021EAD4C + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACC0: + ldr r0, [r6, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x22 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACEA: + bl FUN_0200E308 + cmp r0, #1 + bne _021EAD4C + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACFA: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r6, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r6, #0x14] + cmp r1, #0 + beq _021EAD16 + mov r0, #1 + str r0, [r1] +_021EAD16: + mov r7, #0 + add r5, r4, #0 +_021EAD1A: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EAD1A + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r6, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021EAD4C: + ldr r0, [r6] + cmp r0, #7 + beq _021EAD58 + ldr r0, [r4] + bl FUN_0201FDEC +_021EAD58: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EAD5C: .word 0x000927C0 + + thumb_func_start MOD05_021EAD60 +MOD05_021EAD60: ; 0x021EAD60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + str r0, [sp, #0x10] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x14] + ldr r4, [r1, #0xc] + cmp r0, #7 + bhi _021EAE6E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EAD7E: ; jump table + .short _021EAD8E - _021EAD7E - 2 ; case 0 + .short _021EAE1A - _021EAD7E - 2 ; case 1 + .short _021EAE3A - _021EAD7E - 2 ; case 2 + .short _021EAE5E - _021EAD7E - 2 ; case 3 + .short _021EAF9C - _021EAD7E - 2 ; case 4 + .short _021EAFAE - _021EAD7E - 2 ; case 5 + .short _021EAFDE - _021EAD7E - 2 ; case 6 + .short _021EAFF2 - _021EAD7E - 2 ; case 7 +_021EAD8E: + mov r1, #0x3d + mov r0, #4 + lsl r1, r1, #4 + bl AllocFromHeap + ldr r1, [sp, #0x14] + mov r2, #0x3d + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r0, [sp, #0x14] + mov r1, #6 + ldr r4, [r0, #0xc] + mov r2, #1 + add r0, r4, #0 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EB138 ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021EADDC: + mov r0, #0 + str r0, [sp] + mov r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021EADDC + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAE1A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + ldr r3, [sp, #0x14] + sub r1, #0x11 + add r2, r1, #0 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAE3A: + ldr r1, [sp, #0x14] + ldr r1, [r1, #4] + cmp r1, #0 + beq _021EAE6E + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + mov r0, #0xf2 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r1, [r4, r0] + add r0, r0, #4 + lsl r2, r1, #5 + ldr r1, _021EB13C ; =UNK05_021F7A50 + ldr r1, [r1, r2] + str r1, [r4, r0] + b _021EB04A +_021EAE5E: + mov r0, #0xf3 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021EAE70 +_021EAE6E: + b _021EB04A +_021EAE70: + sub r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + str r1, [sp] + mov r1, #0x86 + lsl r1, r1, #2 + add r2, r4, r1 + mov r1, #0x18 + mul r1, r0 + lsl r3, r0, #5 + add r0, r2, r1 + ldr r1, _021EB140 ; =UNK05_021F7A38 + ldr r2, _021EB144 ; =UNK05_021F7A3C + ldr r5, _021EB148 ; =UNK05_021F7A40 + ldr r1, [r1, r3] + ldr r2, [r2, r3] + ldr r3, [r5, r3] + bl MOD05_021E3644 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + str r1, [sp] + mov r1, #0xaa + lsl r1, r1, #2 + add r2, r4, r1 + mov r1, #0x18 + mul r1, r0 + lsl r3, r0, #5 + add r0, r2, r1 + ldr r1, _021EB14C ; =UNK05_021F7A44 + ldr r2, _021EB150 ; =UNK05_021F7A48 + ldr r5, _021EB154 ; =UNK05_021F7A4C + ldr r1, [r1, r3] + ldr r2, [r2, r3] + ldr r3, [r5, r3] + bl MOD05_021E3644 + mov r0, #0x62 + lsl r0, r0, #2 + mov r1, #8 + add r3, r4, r0 + mov r0, #0xf2 + str r1, [sp] + lsl r0, r0, #2 + ldr r2, [r4, r0] + mov r0, #0x18 + mul r0, r2 + add r0, r3, r0 + ldr r3, _021EB158 ; =0xFFFFF99A + lsl r1, r1, #0xa + mov r2, #0x29 + bl MOD05_021E3644 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r2, [r4, r0] + sub r0, #0x90 + add r1, r4, r0 + mov r0, #0x14 + mul r0, r2 + lsl r3, r2, #5 + ldr r2, _021EB15C ; =UNK05_021F7A54 + add r0, r1, r0 + ldr r2, [r2, r3] + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EB140 ; =UNK05_021F7A38 + lsl r3, r0, #5 + ldr r2, _021EB14C ; =UNK05_021F7A44 + ldr r1, [r1, r3] + ldr r2, [r2, r3] + add r0, sp, #0x3c + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0x3c + bl FUN_02020044 + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x30 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #2 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0x30 + bl FUN_02020074 + mov r1, #0xf2 + lsl r1, r1, #2 + ldr r0, [r4, r1] + mov r3, #1 + lsl r0, r0, #2 + add r2, r4, r0 + add r0, r1, #0 + sub r0, #0x18 + str r3, [r2, r0] + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #6 + blt _021EAF90 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAF90: + lsl r2, r0, #5 + ldr r0, _021EB13C ; =UNK05_021F7A50 + ldr r2, [r0, r2] + add r0, r1, #4 + str r2, [r4, r0] + b _021EB04A +_021EAF9C: + mov r1, #0xf1 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _021EB04A + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFAE: + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x22 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFDE: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB04A + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFF2: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021EB012 + mov r0, #1 + str r0, [r1] +_021EB012: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EB01A: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021EB01A + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [sp, #0x14] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FreeToHeapExplicit + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021EB04A: + mov r1, #0x86 + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x18] + add r0, r4, r1 + str r0, [sp, #0x28] + add r0, r1, #0 + add r0, #0x90 + add r0, r4, r0 + sub r1, #0x90 + str r0, [sp, #0x24] + add r0, r4, r1 + str r0, [sp, #0x20] + mov r0, #0xce + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r4, #0 + str r0, [sp, #0x1c] + add r6, r4, #0 + add r7, r4, #0 +_021EB072: + mov r0, #0x3b + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EB0FE + ldr r0, [sp, #0x28] + bl MOD05_021E36A4 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + bl MOD05_021E36A4 + ldr r0, [sp, #0x20] + bl MOD05_021E36A4 + ldr r0, [sp, #0x1c] + bl MOD05_021E35C0 + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _021EB0AE + mov r0, #0x3b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_020200A0 +_021EB0AE: + mov r1, #0x86 + mov r2, #0xaa + lsl r1, r1, #2 + lsl r2, r2, #2 + ldr r1, [r6, r1] + ldr r2, [r6, r2] + add r0, sp, #0x3c + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, sp, #0x3c + bl FUN_02020044 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r1, [r6, r0] + add r0, sp, #0x30 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, sp, #0x30 + bl FUN_02020064 + mov r1, #0xce + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r7, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 +_021EB0FE: + ldr r0, [sp, #0x28] + add r5, r5, #4 + add r0, #0x18 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r7, #0x14 + add r0, #0x18 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, #0x14 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #6 + blt _021EB072 + ldr r0, [sp, #0x14] + ldr r0, [r0] + cmp r0, #7 + beq _021EB134 + ldr r0, [r4] + bl FUN_0201FDEC +_021EB134: + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EB138: .word 0x000927C0 +_021EB13C: .word UNK05_021F7A50 +_021EB140: .word UNK05_021F7A38 +_021EB144: .word UNK05_021F7A3C +_021EB148: .word UNK05_021F7A40 +_021EB14C: .word UNK05_021F7A44 +_021EB150: .word UNK05_021F7A48 +_021EB154: .word UNK05_021F7A4C +_021EB158: .word 0xFFFFF99A +_021EB15C: .word UNK05_021F7A54 + + thumb_func_start MOD05_021EB160 +MOD05_021EB160: ; 0x021EB160 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #0xc] + cmp r0, #7 + bls _021EB172 + b _021EB3F2 +_021EB172: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB17E: ; jump table + .short _021EB18E - _021EB17E - 2 ; case 0 + .short _021EB272 - _021EB17E - 2 ; case 1 + .short _021EB28C - _021EB17E - 2 ; case 2 + .short _021EB29A - _021EB17E - 2 ; case 3 + .short _021EB2D4 - _021EB17E - 2 ; case 4 + .short _021EB312 - _021EB17E - 2 ; case 5 + .short _021EB344 - _021EB17E - 2 ; case 6 + .short _021EB374 - _021EB17E - 2 ; case 7 +_021EB18E: + mov r1, #0x6f + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + mov r2, #0x6f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r4, [r5, #0xc] + mov r1, #1 + add r0, r4, #0 + add r0, #8 + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #8 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + ldr r0, _021EB404 ; =0x000927C0 + mov r1, #0x51 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #1 + add r0, #8 + add r1, r4, r1 + add r3, r2, #0 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x51 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + add r0, #8 + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + mov r0, #4 + bl MOD05_021E4688 + str r0, [r4, #4] + mov r0, #4 + mov r1, #1 + bl AllocWindows + str r0, [r4] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x10] + ldr r1, [r4] + ldr r0, [r0, #8] + mov r2, #3 + bl AddWindowParameterized + mov r1, #0 + add r0, sp, #0x14 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x14 + mov r2, #2 + mov r3, #0x1e + bl BG_LoadPlttData + ldr r0, [r4] + mov r1, #0 + bl FillWindowPixelBuffer + ldr r0, [r4] + bl ScheduleWindowCopyToVram + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB272: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB28C: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EB294 + b _021EB3F2 +_021EB294: + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB29A: + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xf + bl MOD05_021E35B0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r3, [r4, r0] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021EB408 ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB2D4: + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r2, #0x19 + lsl r2, r2, #4 + ldr r1, [r4, r2] + mov r3, #0x10 + sub r3, r3, r1 + lsl r3, r3, #8 + orr r1, r3 + ldr r3, _021EB40C ; =0x04000052 + cmp r0, #1 + strh r1, [r3] + bne _021EB3F2 + mov r1, #0 + sub r0, r3, #2 + sub r2, #0x18 + strh r1, [r0] + ldr r0, [r4, r2] + bl FUN_02020398 + ldr r0, [r5] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r5] + mov r0, #0x6e + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EB3F2 +_021EB312: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + bgt _021EB3F2 + sub r0, #0x3c + add r0, r4, r0 + mov r1, #0 + mov r2, #0xe + mov r3, #0x10 + bl MOD05_021E35B0 + ldr r0, [r4, #4] + ldr r2, [r4] + mov r1, #0x10 + mov r3, #0xf + bl MOD05_021E46D4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB344: + mov r0, #0x5f + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r1, [r4, r0] + lsl r0, r1, #4 + orr r1, r0 + ldr r0, _021EB410 ; =0x0400004D + strb r1, [r0] + ldr r0, [r4, #4] + bl MOD05_021E4754 + cmp r0, #0 + beq _021EB36C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021EB36C: + ldr r0, [r4] + bl ScheduleWindowCopyToVram + b _021EB3F2 +_021EB374: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #4] + bl MOD05_021E46B4 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EB394 + mov r0, #1 + str r0, [r1] +_021EB394: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #0x51 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #8 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #8 + bl MOD05_021E3E44 + ldr r0, [r4] + bl ClearWindowTilemapAndCopyToVram + ldr r0, [r4] + bl RemoveWindow + ldr r0, [r4] + mov r1, #1 + bl WindowArray_dtor + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl BG_ClearCharDataRange + ldr r0, [r5, #0x10] + mov r1, #3 + ldr r0, [r0, #8] + bl BgClearTilemapBufferAndCommit + ldr r0, _021EB410 ; =0x0400004D + mov r1, #0 + strb r1, [r0] + ldr r1, [r5, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C +_021EB3F2: + ldr r0, [r5] + cmp r0, #7 + beq _021EB3FE + ldr r0, [r4, #8] + bl FUN_0201FDEC +_021EB3FE: + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_021EB404: .word 0x000927C0 +_021EB408: .word 0x04000050 +_021EB40C: .word 0x04000052 +_021EB410: .word 0x0400004D + + thumb_func_start MOD05_021EB414 +MOD05_021EB414: ; 0x021EB414 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #8] + ldr r1, [r5, #0x20] + bl Camera_SetPerspectiveAngle + ldr r0, [r4] + ldr r1, [r5, #0x20] + bl Camera_SetDistance + ldrh r1, [r4, #4] + add r0, sp, #0 + strh r1, [r0] + ldrh r1, [r4, #6] + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl Camera_SetAngle + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EB448 +MOD05_021EB448: ; 0x021EB448 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #7 + bls _021EB45A + b _021EB5A0 +_021EB45A: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB466: ; jump table + .short _021EB476 - _021EB466 - 2 ; case 0 + .short _021EB4AE - _021EB466 - 2 ; case 1 + .short _021EB4C6 - _021EB466 - 2 ; case 2 + .short _021EB4D4 - _021EB466 - 2 ; case 3 + .short _021EB4F8 - _021EB466 - 2 ; case 4 + .short _021EB534 - _021EB466 - 2 ; case 5 + .short _021EB556 - _021EB466 - 2 ; case 6 + .short _021EB56C - _021EB466 - 2 ; case 7 +_021EB476: + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeap + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021EB484: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021EB484 + mov r0, #2 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #4 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #8 + mov r1, #0 + bl GX_EngineAToggleLayers + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4AE: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4C6: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021EB5A0 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4D4: + mov r0, #3 + mov r1, #0xf + bl MOD05_021E8860 + mov r2, #0 + str r0, [r5] + mov r0, #0xc + add r1, r2, #0 + mul r1, r0 + ldr r0, _021EB5A4 ; =UNK05_021F7982 + str r2, [r5, #8] + ldrh r0, [r0, r1] + add sp, #0xc + str r0, [r5, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4F8: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021EB5A0 + ldr r2, [r5, #8] + mov r1, #0xc + ldr r3, _021EB5A8 ; =UNK05_021F7978 + mul r1, r2 + ldr r0, [r4, #0x10] + add r1, r3, r1 + bl MOD05_021EB414 + ldr r0, [r5, #8] + add r2, r0, #1 + str r2, [r5, #8] + cmp r2, #0x10 + blo _021EB524 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB524: + mov r0, #0xc + add r1, r2, #0 + mul r1, r0 + ldr r0, _021EB5A4 ; =UNK05_021F7982 + add sp, #0xc + ldrh r0, [r0, r1] + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, pc} +_021EB534: + mov r0, #0xa + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EB5AC ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB556: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB5A0 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB56C: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD05_021E88C0 + ldr r0, _021EB5B0 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EB58A + mov r0, #1 + str r0, [r1] +_021EB58A: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021EB5A0: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021EB5A4: .word UNK05_021F7982 +_021EB5A8: .word UNK05_021F7978 +_021EB5AC: .word 0x00007FFF +_021EB5B0: .word 0x04000050 + + thumb_func_start MOD05_021EB5B4 +MOD05_021EB5B4: ; 0x021EB5B4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #9 + bhi _021EB636 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB5D0: ; jump table + .short _021EB5E4 - _021EB5D0 - 2 ; case 0 + .short _021EB618 - _021EB5D0 - 2 ; case 1 + .short _021EB630 - _021EB5D0 - 2 ; case 2 + .short _021EB640 - _021EB5D0 - 2 ; case 3 + .short _021EB66E - _021EB5D0 - 2 ; case 4 + .short _021EB698 - _021EB5D0 - 2 ; case 5 + .short _021EB6C6 - _021EB5D0 - 2 ; case 6 + .short _021EB6E8 - _021EB5D0 - 2 ; case 7 + .short _021EB70A - _021EB5D0 - 2 ; case 8 + .short _021EB720 - _021EB5D0 - 2 ; case 9 +_021EB5E4: + mov r0, #4 + mov r1, #0x38 + bl AllocFromHeap + mov r1, #0 + mov r2, #0x38 + str r0, [r4, #0xc] + bl memset + mov r0, #2 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #4 + mov r1, #0 + bl GX_EngineAToggleLayers + mov r0, #8 + mov r1, #0 + bl GX_EngineAToggleLayers + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB618: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB630: + ldr r1, [r4, #4] + cmp r1, #0 + bne _021EB638 +_021EB636: + b _021EB754 +_021EB638: + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB640: + mov r0, #5 + mov r1, #0xd + bl MOD05_021E8860 + str r0, [r5] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + bl Camera_GetPerspectiveAngle + mov r2, #1 + add r1, r0, #0 + add r5, #8 + lsl r2, r2, #8 + add r0, r5, #0 + add r2, r1, r2 + mov r3, #0x28 + bl MOD05_021E35B0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB66E: + add r0, r5, #0 + add r0, #8 + bl MOD05_021E35C0 + add r6, r0, #0 + ldr r0, [r5, #8] + ldr r1, [r4, #0x10] + lsl r0, r0, #0x10 + ldr r1, [r1, #0x20] + lsr r0, r0, #0x10 + bl Camera_SetPerspectiveAngle + cmp r6, #1 + bne _021EB754 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + mov r0, #5 + str r0, [r5, #0x34] + pop {r3, r4, r5, r6, pc} +_021EB698: + ldr r0, [r5, #0x34] + sub r0, r0, #1 + str r0, [r5, #0x34] + bpl _021EB754 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + bl Camera_GetDistance + mov r3, #8 + str r3, [sp] + ldr r2, _021EB758 ; =0x0092E000 + add r1, r0, #0 + add r5, #0x1c + add r0, r5, #0 + sub r2, r1, r2 + lsl r3, r3, #8 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB6C6: + add r0, r5, #0 + add r0, #0x1c + bl MOD05_021E36A4 + ldr r1, [r4, #0x10] + add r6, r0, #0 + ldr r0, [r5, #0x1c] + ldr r1, [r1, #0x20] + bl Camera_SetDistance + cmp r6, #1 + bne _021EB754 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB6E8: + mov r0, #0x3c + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EB75C ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB70A: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB754 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB720: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD05_021E88C0 + ldr r0, _021EB760 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EB73E + mov r0, #1 + str r0, [r1] +_021EB73E: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021EB754: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021EB758: .word 0x0092E000 +_021EB75C: .word 0x00007FFF +_021EB760: .word 0x04000050 + + thumb_func_start MOD05_021EB764 +MOD05_021EB764: ; 0x021EB764 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + str r1, [sp, #0x14] + ldr r1, [r5] + add r6, r2, #0 + ldr r4, [r5, #0xc] + cmp r1, #0xe + bls _021EB778 + b _021EBB72 +_021EB778: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021EB784: ; jump table + .short _021EB7A2 - _021EB784 - 2 ; case 0 + .short _021EB848 - _021EB784 - 2 ; case 1 + .short _021EB85E - _021EB784 - 2 ; case 2 + .short _021EB86A - _021EB784 - 2 ; case 3 + .short _021EB8B8 - _021EB784 - 2 ; case 4 + .short _021EB8D6 - _021EB784 - 2 ; case 5 + .short _021EB99C - _021EB784 - 2 ; case 6 + .short _021EB9EE - _021EB784 - 2 ; case 7 + .short _021EBA04 - _021EB784 - 2 ; case 8 + .short _021EBA34 - _021EB784 - 2 ; case 9 + .short _021EBA4A - _021EB784 - 2 ; case 10 + .short _021EBA72 - _021EB784 - 2 ; case 11 + .short _021EBA8A - _021EB784 - 2 ; case 12 + .short _021EBAAA - _021EB784 - 2 ; case 13 + .short _021EBB0E - _021EB784 - 2 ; case 14 +_021EB7A2: + mov r1, #0x1f + ldr r0, [sp, #0x14] + lsl r1, r1, #4 + bl AllocFromHeap + mov r2, #0x1f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r4, [r5, #0xc] + mov r1, #1 + add r0, r4, #0 + add r0, #0x44 + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #0x17 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EBB4C ; =0x000927C0 + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #6 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #6 + mov r3, #0x11 + ldr r2, _021EBB50 ; =0xFFFE0000 + add r0, #0x44 + add r1, r4, r1 + lsl r3, r3, #0xe + bl MOD05_021E3FC4 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0 + str r0, [sp] + ldrh r0, [r6, #6] + ldr r1, [sp, #0x14] + mov r3, #0xa + str r0, [sp, #4] + mov r0, #0x6d + lsl r0, r0, #2 + ldrh r2, [r6, #4] + ldr r0, [r4, r0] + bl MOD05_021E4014 + ldr r0, [r5, #0x10] + ldr r0, [r0, #8] + bl MOD05_021E3C00 + bl MOD05_021E4788 + str r0, [r4, #0x40] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB848: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB85E: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021EB8E6 + add r0, r1, #1 + str r0, [r5] + b _021EBB72 +_021EB86A: + ldr r3, [r5, #0x10] + mov r0, #0xd + ldr r3, [r3, #8] + mov r1, #0xc + mov r2, #0xb + bl MOD05_021E3D20 + mov r0, #0x79 + mov r2, #8 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x10 + str r0, [sp] + mov r0, #0x1f + str r0, [sp, #4] + mov r0, #0x17 + str r0, [sp, #8] + ldr r1, [r4, #0x40] + add r0, r5, #0 + add r3, r2, #0 + bl MOD05_021E47BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x2c + add r2, r1, #0 + mov r3, #0xf + bl MOD05_021E35EC + mov r0, #8 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB8B8: + bl MOD05_021E35AC + cmp r0, #0 + beq _021EB8E6 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x40] + bl MOD05_021E47A0 + mov r0, #0x7b + mov r1, #0xa + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EBB72 +_021EB8D6: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + blt _021EB8E8 +_021EB8E6: + b _021EBB72 +_021EB8E8: + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x18 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020064 + mov r0, #0 + str r0, [sp] + mov r0, #0x6e + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x11 + mov r2, #2 + lsl r0, r0, #0xe + mov r1, #0x62 + lsl r2, r2, #0xc + mov r3, #0x40 + bl MOD05_021E49F0 + ldr r3, _021EBB54 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r3] + mov r1, #0x1f + bic r2, r0 + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r3] + ldrh r2, [r3, #2] + bic r2, r0 + mov r0, #0xf + orr r0, r2 + orr r0, r1 + strh r0, [r3, #2] + lsl r0, r1, #0x15 + ldr r3, [r0] + ldr r2, _021EBB58 ; =0xFFFF1FFF + lsl r1, r1, #8 + and r2, r3 + orr r1, r2 + str r1, [r0] + mov r3, #4 + str r3, [sp] + ldr r1, _021EBB50 ; =0xFFFE0000 + ldr r2, [r6] + add r0, r4, #0 + lsl r3, r3, #0x10 + bl MOD05_021E3644 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + mov r2, #0x11 + ldr r1, [r4] + add r0, sp, #0x24 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB99C: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x11 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x24 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x24 + bl FUN_02020044 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + mov r1, #0 + str r1, [sp] + mov r1, #0x6e + lsl r1, r1, #2 + add r1, r4, r1 + str r1, [sp, #4] + mov r2, #2 + ldr r0, [r0, #4] + mov r1, #0x62 + lsl r2, r2, #0xc + mov r3, #0x40 + bl MOD05_021E49F0 + cmp r6, #1 + bne _021EBA60 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB9EE: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA04: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r7, r0, #0 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E4AD0 + cmp r7, #1 + bne _021EBA60 + mov r3, #0 + str r3, [sp] + mov r0, #0x6d + lsl r0, r0, #2 + ldrh r2, [r6, #4] + ldr r0, [r4, r0] + ldr r1, [sp, #0x14] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA34: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA4A: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E4AD0 + cmp r6, #1 + beq _021EBA62 +_021EBA60: + b _021EBB72 +_021EBA62: + ldr r0, [r5] + mov r1, #0x1a + add r0, r0, #1 + str r0, [r5] + mov r0, #0x7b + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EBB72 +_021EBA72: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bge _021EBB72 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA8A: + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EBB5C ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBAAA: + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E35FC + mov r2, #1 + ldr r3, [r4, #0x2c] + lsl r2, r2, #0xc + add r1, r3, r2 + add r2, r3, r2 + add r0, sp, #0x18 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020064 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r6, r0, #0 + ldr r0, [r4, #0x2c] + mov r1, #0x44 + mov r2, #0x1e + bl MOD05_021E4A3C + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x6e + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + ldr r0, [r6, #4] + ldr r2, [sp, #0x1c] + mov r3, #0x40 + bl MOD05_021E49F0 + bl FUN_0200E308 + cmp r0, #0 + beq _021EBB72 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBB0E: + ldr r1, _021EBB5C ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EBB20 + mov r0, #1 + str r0, [r1] +_021EBB20: + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #6 + add r0, #0x44 + add r1, r4, r1 + bl MOD05_021E3F3C + add r4, #0x44 + add r0, r4, #0 + bl MOD05_021E3E44 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021EBB58 ; =0xFFFF1FFF + b _021EBB60 + nop +_021EBB4C: .word 0x000927C0 +_021EBB50: .word 0xFFFE0000 +_021EBB54: .word 0x04000048 +_021EBB58: .word 0xFFFF1FFF +_021EBB5C: .word 0x00007FFF +_021EBB60: + and r0, r1 + str r0, [r2] + ldr r1, [r5, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EBB72: + mov r1, #0x79 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #1 + bne _021EBBB6 + ldr r3, [r4, #0x2c] + mov r0, #0 + str r3, [sp] + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + add r0, r1, #4 + ldr r0, [r4, r0] + sub r1, #0x24 + str r0, [sp, #0x10] + add r0, r4, r1 + ldr r1, [r5, #0x10] + mov r2, #3 + ldr r1, [r1, #8] + bl MOD05_021E3DA0 + mov r3, #0x7a + lsl r3, r3, #2 + ldr r0, [r4, r3] + sub r0, #0xf + lsr r2, r0, #0x1f + lsl r1, r0, #0x17 + sub r1, r1, r2 + mov r0, #0x17 + ror r1, r0 + add r0, r2, r1 + str r0, [r4, r3] +_021EBBB6: + ldr r0, [r5] + cmp r0, #0xe + beq _021EBBC2 + ldr r0, [r4, #0x44] + bl FUN_0201FDEC +_021EBBC2: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EBBC8 +MOD05_021EBBC8: ; 0x021EBBC8 + push {r4, lr} + ldr r2, _021EBBE4 ; =UNK05_021F7938 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBBE0 + add r0, r4, #0 + bl FUN_0200621C +_021EBBE0: + pop {r4, pc} + nop +_021EBBE4: .word UNK05_021F7938 + + thumb_func_start MOD05_021EBBE8 +MOD05_021EBBE8: ; 0x021EBBE8 + push {r4, lr} + ldr r2, _021EBC04 ; =UNK05_021F7940 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC00 + add r0, r4, #0 + bl FUN_0200621C +_021EBC00: + pop {r4, pc} + nop +_021EBC04: .word UNK05_021F7940 + + thumb_func_start MOD05_021EBC08 +MOD05_021EBC08: ; 0x021EBC08 + push {r4, lr} + ldr r2, _021EBC24 ; =UNK05_021F7948 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC20 + add r0, r4, #0 + bl FUN_0200621C +_021EBC20: + pop {r4, pc} + nop +_021EBC24: .word UNK05_021F7948 + + thumb_func_start MOD05_021EBC28 +MOD05_021EBC28: ; 0x021EBC28 + push {r4, lr} + ldr r2, _021EBC44 ; =UNK05_021F7950 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC40 + add r0, r4, #0 + bl FUN_0200621C +_021EBC40: + pop {r4, pc} + nop +_021EBC44: .word UNK05_021F7950 + + thumb_func_start MOD05_021EBC48 +MOD05_021EBC48: ; 0x021EBC48 + push {r4, lr} + ldr r2, _021EBC64 ; =UNK05_021F7958 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC60 + add r0, r4, #0 + bl FUN_0200621C +_021EBC60: + pop {r4, pc} + nop +_021EBC64: .word UNK05_021F7958 + + thumb_func_start MOD05_021EBC68 +MOD05_021EBC68: ; 0x021EBC68 + push {r4, lr} + ldr r2, _021EBC84 ; =UNK05_021F7960 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC80 + add r0, r4, #0 + bl FUN_0200621C +_021EBC80: + pop {r4, pc} + nop +_021EBC84: .word UNK05_021F7960 + + thumb_func_start MOD05_021EBC88 +MOD05_021EBC88: ; 0x021EBC88 + push {r4, lr} + ldr r2, _021EBCA4 ; =UNK05_021F7968 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBCA0 + add r0, r4, #0 + bl FUN_0200621C +_021EBCA0: + pop {r4, pc} + nop +_021EBCA4: .word UNK05_021F7968 + + thumb_func_start MOD05_021EBCA8 +MOD05_021EBCA8: ; 0x021EBCA8 + push {r4, lr} + ldr r2, _021EBCC4 ; =UNK05_021F7970 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBCC0 + add r0, r4, #0 + bl FUN_0200621C +_021EBCC0: + pop {r4, pc} + nop +_021EBCC4: .word UNK05_021F7970 + + thumb_func_start MOD05_021EBCC8 +MOD05_021EBCC8: ; 0x021EBCC8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetProfileAddr + bl PlayerProfile_GetTrainerGender + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EBCD8 +MOD05_021EBCD8: ; 0x021EBCD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + ldr r0, [r5] + str r1, [sp, #0x10] + str r2, [sp, #0x14] + ldr r4, [r5, #0xc] + cmp r0, #0x13 + bls _021EBCEC + b _021EC3A0 +_021EBCEC: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EBCF8: ; jump table + .short _021EBD20 - _021EBCF8 - 2 ; case 0 + .short _021EBEC0 - _021EBCF8 - 2 ; case 1 + .short _021EBED6 - _021EBCF8 - 2 ; case 2 + .short _021EBEE4 - _021EBCF8 - 2 ; case 3 + .short _021EBF6C - _021EBCF8 - 2 ; case 4 + .short _021EBFBA - _021EBCF8 - 2 ; case 5 + .short _021EBFD0 - _021EBCF8 - 2 ; case 6 + .short _021EC002 - _021EBCF8 - 2 ; case 7 + .short _021EC018 - _021EBCF8 - 2 ; case 8 + .short _021EC038 - _021EBCF8 - 2 ; case 9 + .short _021EC0D4 - _021EBCF8 - 2 ; case 10 + .short _021EC122 - _021EBCF8 - 2 ; case 11 + .short _021EC138 - _021EBCF8 - 2 ; case 12 + .short _021EC16A - _021EBCF8 - 2 ; case 13 + .short _021EC180 - _021EBCF8 - 2 ; case 14 + .short _021EC19E - _021EBCF8 - 2 ; case 15 + .short _021EC1E8 - _021EBCF8 - 2 ; case 16 + .short _021EC21C - _021EBCF8 - 2 ; case 17 + .short _021EC284 - _021EBCF8 - 2 ; case 18 + .short _021EC342 - _021EBCF8 - 2 ; case 19 +_021EBD20: + mov r1, #0x9b + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + bl AllocFromHeap + mov r2, #0x9b + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl memset + ldr r4, [r5, #0xc] + mov r1, #4 + add r0, r4, #0 + add r0, #0x44 + mov r2, #3 + bl MOD05_021E3E14 + mov r0, #0x17 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EC0C0 ; =0x000927C0 + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EC0C4 ; =0x000927C1 + mov r1, #0x6d + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0xf + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x11 + str r0, [sp, #8] + ldr r0, _021EC0C8 ; =0x000927C2 + mov r1, #0x7a + str r0, [sp, #0xc] + ldr r2, [sp, #0x14] + add r0, r4, #0 + lsl r1, r1, #2 + ldrb r2, [r2, #6] + add r0, #0x44 + add r1, r4, r1 + mov r3, #0xc + bl MOD05_021E3E64 + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x34 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + str r0, [sp, #0x18] + str r0, [sp, #0x20] + add r0, r4, #0 + str r0, [sp, #0x24] + add r0, #0x44 + mov r7, #0 + add r6, r4, #0 + str r0, [sp, #0x24] +_021EBDCE: + cmp r7, #3 + bge _021EBDDA + mov r0, #0 + ldr r1, [sp, #0x18] + str r0, [sp, #0x1c] + b _021EBDEA +_021EBDDA: + sub r1, r7, #1 + mov r0, #0x34 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #0x20] + add r1, r0, r2 + mov r0, #1 + str r0, [sp, #0x1c] +_021EBDEA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r2, #0 + ldr r0, [sp, #0x24] + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r1, [sp, #0x1c] + bl FUN_02020130 + ldr r0, [sp, #0x18] + add r7, r7, #1 + add r0, #0x34 + add r6, r6, #4 + str r0, [sp, #0x18] + cmp r7, #4 + blt _021EBDCE + ldr r0, [r5, #0x10] + bl MOD05_021EBCC8 + cmp r0, #0 + bne _021EBE48 + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r1, #0 + b _021EBE60 +_021EBE48: + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r0, #0x87 + str r2, [sp, #4] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r1, #1 +_021EBE60: + mov r0, #0x99 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x34 + bl FUN_02020064 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x14] + mov r0, #0x22 + lsl r0, r0, #4 + ldrb r2, [r2, #5] + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x34 + bl FUN_02020064 + mov r0, #0x10 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBEC0: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBED6: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EBEDE + b _021EC3A0 +_021EBEDE: + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBEE4: + mov r0, #6 + mov r2, #0x2e + mov r3, #1 + str r0, [sp] + ldr r1, _021EC0CC ; =0xFFFB0000 + add r0, r4, #0 + lsl r2, r2, #0xc + lsl r3, r3, #0x12 + bl MOD05_021E3644 + mov r2, #0x72 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x89 + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBF6C: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x72 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + cmp r6, #1 + bne _021EC02E + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBFBA: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBFD0: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC02E + mov r3, #0 + mov r2, #0x87 + str r3, [sp] + lsl r2, r2, #2 + ldr r0, [r4, r2] + add r2, #0x48 + ldr r1, [sp, #0x10] + ldr r2, [r4, r2] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC002: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC018: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + beq _021EC030 +_021EC02E: + b _021EC3A0 +_021EC030: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC038: + mov r0, #6 + mov r1, #0x15 + mov r2, #0xd + str r0, [sp] + ldr r3, _021EC0D0 ; =0xFFFC0000 + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + bl MOD05_021E3644 + mov r2, #0x11 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x8a + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 + .balign 4, 0 +_021EC0C0: .word 0x000927C0 +_021EC0C4: .word 0x000927C1 +_021EC0C8: .word 0x000927C2 +_021EC0CC: .word 0xFFFB0000 +_021EC0D0: .word 0xFFFC0000 +_021EC0D4: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x11 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + cmp r6, #1 + bne _021EC212 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC122: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC138: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC212 + mov r3, #0 + mov r0, #0x22 + ldr r2, [sp, #0x14] + str r3, [sp] + lsl r0, r0, #4 + ldrb r2, [r2, #5] + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC16A: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC180: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC212 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC19E: + ldr r0, [r5, #0x10] + mov r1, #0x8b + ldr r0, [r0, #0x20] + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, sp, #0x2c + bl Camera_GetAngle + add r1, sp, #0x2c + mov r2, #0x92 + ldrh r0, [r1] + lsl r2, r2, #2 + strh r0, [r4, r2] + ldrh r3, [r1, #2] + add r0, r2, #2 + strh r3, [r4, r0] + ldrh r3, [r1, #4] + add r0, r2, #4 + strh r3, [r4, r0] + ldrh r1, [r1, #6] + add r0, r2, #6 + ldr r3, [sp, #0x14] + strh r1, [r4, r0] + ldrh r1, [r4, r2] + add r2, #8 + add r0, r4, r2 + ldr r2, [sp, #0x14] + ldrb r3, [r3, #4] + ldr r2, [r2] + add r2, r1, r2 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC1E8: + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r1, #0x25 + lsl r1, r1, #4 + add r6, r0, #0 + add r0, r1, #0 + ldr r2, [r4, r1] + sub r0, #8 + strh r2, [r4, r0] + add r0, r1, #0 + sub r1, #0x24 + sub r0, #8 + ldr r1, [r4, r1] + add r0, r4, r0 + bl Camera_SetAngle + cmp r6, #1 + beq _021EC214 +_021EC212: + b _021EC3A0 +_021EC214: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC21C: + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Camera_GetDistance + add r1, r0, #0 + mov r0, #0x1e + str r0, [sp] + mov r0, #0x23 + mov r2, #0xfa + lsl r0, r0, #4 + lsl r2, r2, #0xc + add r0, r4, r0 + sub r2, r1, r2 + mov r3, #0 + bl MOD05_021E3644 + mov r0, #0x1e + mov r1, #0 + mov r2, #6 + str r0, [sp] + add r0, r4, #0 + lsl r2, r2, #0x10 + add r3, r1, #0 + bl MOD05_021E3644 + mov r0, #0x1e + str r0, [sp] + add r0, r4, #0 + mov r1, #0 + mov r2, #6 + add r0, #0x18 + lsl r2, r2, #0x10 + add r3, r1, #0 + bl MOD05_021E3644 + mov r0, #0x1e + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EC3B4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC284: + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E36A4 + add r0, r4, #0 + bl MOD05_021E36A4 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E36A4 + mov r1, #0x23 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl Camera_SetDistance + mov r1, #0x2e + ldr r2, [r4] + lsl r1, r1, #0xc + sub r1, r1, r2 + mov r2, #0x72 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xc + add r2, r3, r2 + add r0, sp, #0x40 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r1, #0xd + ldr r2, [r4] + lsl r1, r1, #0x10 + add r1, r2, r1 + mov r2, #0x11 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xe + sub r2, r2, r3 + add r0, sp, #0x40 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + bl FUN_0200E308 + cmp r0, #0 + beq _021EC3A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC342: + ldr r1, _021EC3B4 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EC354 + mov r0, #1 + str r0, [r1] +_021EC354: + mov r7, #0 + add r6, r4, #0 +_021EC358: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #4 + blt _021EC358 + mov r0, #6 + lsl r0, r0, #6 + add r6, r4, r0 + add r0, r4, #0 + str r0, [sp, #0x28] + add r0, #0x44 + mov r7, #0 + str r0, [sp, #0x28] +_021EC37A: + ldr r0, [sp, #0x28] + add r1, r6, #0 + bl MOD05_021E3F3C + add r7, r7, #1 + add r6, #0x34 + cmp r7, #3 + blt _021EC37A + add r4, #0x44 + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r5, #0xc] + mov r0, #4 + bl FreeToHeapExplicit + add sp, #0x4c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021EC3A0: + ldr r0, [r5] + cmp r0, #0x13 + beq _021EC3AC + ldr r0, [r4, #0x44] + bl FUN_0201FDEC +_021EC3AC: + mov r0, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_021EC3B4: .word 0x00007FFF + + thumb_func_start MOD05_021EC3B8 +MOD05_021EC3B8: ; 0x021EC3B8 + push {r4, lr} + ldr r2, _021EC3D4 ; =UNK05_021F7910 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC3D0 + add r0, r4, #0 + bl FUN_0200621C +_021EC3D0: + pop {r4, pc} + nop +_021EC3D4: .word UNK05_021F7910 + + thumb_func_start MOD05_021EC3D8 +MOD05_021EC3D8: ; 0x021EC3D8 + push {r4, lr} + ldr r2, _021EC3F4 ; =UNK05_021F7918 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC3F0 + add r0, r4, #0 + bl FUN_0200621C +_021EC3F0: + pop {r4, pc} + nop +_021EC3F4: .word UNK05_021F7918 + + thumb_func_start MOD05_021EC3F8 +MOD05_021EC3F8: ; 0x021EC3F8 + push {r4, lr} + ldr r2, _021EC414 ; =UNK05_021F7920 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC410 + add r0, r4, #0 + bl FUN_0200621C +_021EC410: + pop {r4, pc} + nop +_021EC414: .word UNK05_021F7920 + + thumb_func_start MOD05_021EC418 +MOD05_021EC418: ; 0x021EC418 + push {r4, lr} + ldr r2, _021EC434 ; =UNK05_021F7928 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC430 + add r0, r4, #0 + bl FUN_0200621C +_021EC430: + pop {r4, pc} + nop +_021EC434: .word UNK05_021F7928 + + thumb_func_start MOD05_021EC438 +MOD05_021EC438: ; 0x021EC438 + push {r4, lr} + ldr r2, _021EC454 ; =UNK05_021F7930 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC450 + add r0, r4, #0 + bl FUN_0200621C +_021EC450: + pop {r4, pc} + nop +_021EC454: .word UNK05_021F7930 + + .section .rodata + + .global UNK05_021F7910 +UNK05_021F7910: ; 0x021F7910 + .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x41, 0x0E, 0x00 + + .global UNK05_021F7918 +UNK05_021F7918: ; 0x021F7918 + .byte 0xDC, 0x05, 0x00, 0x00 + .byte 0x0F, 0x42, 0x12, 0x00 + + .global UNK05_021F7920 +UNK05_021F7920: ; 0x021F7920 + .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x43, 0x13, 0x00 + + .global UNK05_021F7928 +UNK05_021F7928: ; 0x021F7928 + .byte 0xDC, 0x05, 0x00, 0x00 + .byte 0x0F, 0x44, 0x14, 0x00 + + .global UNK05_021F7930 +UNK05_021F7930: ; 0x021F7930 + .byte 0xB8, 0x0B, 0x00, 0x00, 0x1E, 0x45, 0x15, 0x00 + + .global UNK05_021F7938 +UNK05_021F7938: ; 0x021F7938 + .byte 0x00, 0x00, 0x0B, 0x00 + .byte 0x3E, 0x00, 0x01, 0x00 + + .global UNK05_021F7940 +UNK05_021F7940: ; 0x021F7940 + .byte 0x00, 0x00, 0x0B, 0x00, 0x4A, 0x00, 0x01, 0x00 + + .global UNK05_021F7948 +UNK05_021F7948: ; 0x021F7948 + .byte 0x00, 0x00, 0x0C, 0x00 + .byte 0x4B, 0x00, 0x00, 0x00 + + .global UNK05_021F7950 +UNK05_021F7950: ; 0x021F7950 + .byte 0x00, 0x00, 0x0B, 0x00, 0x4C, 0x00, 0x01, 0x00 + + .global UNK05_021F7958 +UNK05_021F7958: ; 0x021F7958 + .byte 0x00, 0x00, 0x0C, 0x00 + .byte 0x4D, 0x00, 0x01, 0x00 + + .global UNK05_021F7960 +UNK05_021F7960: ; 0x021F7960 + .byte 0x00, 0x00, 0x0B, 0x00, 0x4E, 0x00, 0x01, 0x00 + + .global UNK05_021F7968 +UNK05_021F7968: ; 0x021F7968 + .byte 0x00, 0x00, 0x0B, 0x00 + .byte 0x40, 0x00, 0x01, 0x00 + + .global UNK05_021F7970 +UNK05_021F7970: ; 0x021F7970 + .byte 0x00, 0x00, 0x0B, 0x00, 0x4F, 0x00, 0x01, 0x00 + + .global UNK05_021F7978 +UNK05_021F7978: ; 0x021F7978 + .byte 0xC1, 0xAE, 0x29, 0x00 + .byte 0x02, 0xD6, 0x00, 0x00, 0xC1, 0x05 + + .global UNK05_021F7982 +UNK05_021F7982: ; 0x021F7982 + .byte 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xCF, 0x00, 0xFF + .byte 0x01, 0x06, 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE6, 0x00, 0x10, 0x91, 0x06, 0x04, 0x00 + .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x0A, 0x11, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00 + .byte 0x02, 0xE1, 0x00, 0xF0, 0x80, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xC6, 0x00, 0x00 + .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0x00, 0x08, 0x03, 0x00 + .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x02, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00 + .byte 0x02, 0xD0, 0x00, 0x10, 0x00, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD9, 0x00, 0xF5 + .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD0, 0x00, 0x0A, 0xC1, 0x04, 0x02, 0x00 + .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0xC1, 0x03, 0x02, 0x00, 0xC1, 0xAE, 0x29, 0x00 + .byte 0x02, 0xD0, 0x00, 0xF0, 0x50, 0x06, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xA0 + .byte 0x41, 0x02, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0xA2, 0xE1, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00 + .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x41, 0x02, 0x01, 0x00 + + .global UNK05_021F7A38 +UNK05_021F7A38: ; 0x021F7A38 + .byte 0x00, 0x40, 0x10, 0x00 + + .global UNK05_021F7A3C +UNK05_021F7A3C: ; 0x021F7A3C + .byte 0x00, 0x00, 0x08, 0x00 + + .global UNK05_021F7A40 +UNK05_021F7A40: ; 0x021F7A40 + .byte 0x00, 0x20, 0xFE, 0xFF + + .global UNK05_021F7A44 +UNK05_021F7A44: ; 0x021F7A44 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021F7A48 +UNK05_021F7A48: ; 0x021F7A48 + .byte 0x00, 0x40, 0x06, 0x00 + + .global UNK05_021F7A4C +UNK05_021F7A4C: ; 0x021F7A4C + .byte 0x00, 0x40, 0x01, 0x00 + + .global UNK05_021F7A50 +UNK05_021F7A50: ; 0x021F7A50 + .byte 0x04, 0x00, 0x00, 0x00 + + .global UNK05_021F7A54 +UNK05_021F7A54: ; 0x021F7A54 + .byte 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0xC0, 0x08, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0xC0, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x40, 0x10, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021EC458.s b/arm9/modules/05/asm/mod05_021EC458.s new file mode 100644 index 00000000..216dfbb7 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021EC458.s @@ -0,0 +1,2938 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021EC458 +MOD05_021EC458: ; 0x021EC458 + push {r3, lr} + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon + pop {r3, pc} + + thumb_func_start MOD05_021EC464 +MOD05_021EC464: ; 0x021EC464 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r0, #0 + add r5, r4, #0 + mov r7, #5 +_021EC46E: + add r0, r6, #0 + add r1, r5, #0 + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon + add r1, r7, #0 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021EC48C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021EC48C: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #2 + blo _021EC46E + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC49C +MOD05_021EC49C: ; 0x021EC49C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021EC4D8 ; =UNK05_021FD680 + mov r4, #0 + str r5, [r0] + mov r6, #5 + add r7, r4, #0 +_021EC4AA: + add r0, r5, #0 + add r1, r4, #0 + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon + add r1, r6, #0 + add r2, r7, #0 + bl GetBoxMonData + cmp r0, #0 + bne _021EC4C6 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EC4C6: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + blo _021EC4AA + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EC4D8: .word UNK05_021FD680 + + thumb_func_start MOD05_021EC4DC +MOD05_021EC4DC: ; 0x021EC4DC + push {r3, lr} + mov r1, #6 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl ItemIdIsMail + pop {r3, pc} + + thumb_func_start MOD05_021EC4F0 +MOD05_021EC4F0: ; 0x021EC4F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r2, #0 + add r6, r0, #0 + str r1, [sp] + add r7, r3, #0 + bl GetPartyMonByIndex + add r4, r0, #0 + add r0, r5, #0 + bl DayCareMon_GetExtras + str r0, [sp, #8] + add r0, r5, #0 + bl DayCareMon_GetBoxMon + str r0, [sp, #4] + add r0, r7, #0 + bl Sav2_PlayerData_GetProfileAddr + bl PlayerProfile_GetNamePtr + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #0xc + bl GetMonData + add r0, r4, #0 + bl FUN_020690E4 + bl MOD05_021EC4DC + cmp r0, #0 + beq _021EC544 + ldr r0, [sp, #8] + bl DayCareMail_GetCapsule + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0xa9 + bl GetMonData +_021EC544: + ldr r1, [sp, #4] + add r0, r4, #0 + bl CopyBoxPokemonToBoxPokemon + add r0, r5, #0 + mov r1, #0 + bl DayCareMon_SetSteps + ldr r1, [sp] + add r0, r6, #0 + bl RemoveMonFromParty + ldr r1, _021EC578 ; =0x000001B9 + add r0, r6, #0 + bl PartyHasMon + cmp r0, #0 + bne _021EC572 + add r0, r7, #0 + bl Sav2_Chatot_get + bl Chatot_invalidate +_021EC572: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021EC578: .word 0x000001B9 + + thumb_func_start MOD05_021EC57C +MOD05_021EC57C: ; 0x021EC57C + push {r3, r4, r5, r6, r7, lr} + add r7, r3, #0 + add r5, r0, #0 + add r0, r7, #0 + add r6, r1, #0 + add r4, r2, #0 + bl FUN_02029FC8 + mov r1, #0x28 + bl FUN_0202A0E8 + add r0, r4, #0 + bl MOD05_021EC49C + add r1, r0, #0 + add r0, r4, #0 + bl Sav2_DayCare_GetMonX + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD05_021EC4F0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC5B0 +MOD05_021EC5B0: ; 0x021EC5B0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + mov r1, #0 + bl Sav2_DayCare_GetMonX + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl Sav2_DayCare_GetMonX + add r4, r0, #0 + add r0, r5, #0 + bl DayCareMon_GetBoxMon + add r6, r0, #0 + add r0, r4, #0 + bl DayCareMon_GetBoxMon + add r7, r0, #0 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + bne _021EC600 + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021EC600 + add r0, r5, #0 + add r1, r4, #0 + bl DayCareMon_Copy + add r0, r4, #0 + bl DayCareMon_Init +_021EC600: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC604 +MOD05_021EC604: ; 0x021EC604 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #8] + add r4, sp, #8 + add r6, sp, #4 + add r7, sp, #4 +_021EC616: + add r0, r5, #0 + bl FUN_020690E8 + cmp r0, #0 + beq _021EC658 + mov r0, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02069818 + cmp r0, #0 + beq _021EC64E +_021EC632: + ldr r1, _021EC664 ; =0x0000FFFF + cmp r0, r1 + bne _021EC640 + ldrh r1, [r7] + add r0, r5, #0 + bl FUN_02069708 +_021EC640: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02069818 + cmp r0, #0 + bne _021EC632 +_021EC64E: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #0x64 + blt _021EC616 +_021EC658: + add r0, r5, #0 + bl CalcMonLevelAndStats + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021EC664: .word 0x0000FFFF + + thumb_func_start MOD05_021EC668 +MOD05_021EC668: ; 0x021EC668 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r6, r1, #0 + mov r0, #4 + add r7, r2, #0 + bl AllocMonZeroed + add r4, r0, #0 + add r0, r6, #0 + bl DayCareMon_GetBoxMon + add r5, r0, #0 + add r0, r6, #0 + bl DayCareMon_GetExtras + str r0, [sp, #4] + add r0, r7, #0 + mov r1, #0 + add r2, r5, #0 + bl BufferBoxMonNickname + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + add r0, r5, #0 + add r1, r4, #0 + bl CopyBoxPokemonToPokemon + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl GetMonData + cmp r0, #0x64 + beq _021EC6E0 + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl GetMonData + str r0, [sp, #8] + add r0, r6, #0 + bl DayCareMon_GetSteps + ldr r1, [sp, #8] + add r2, sp, #8 + add r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #8 + bl SetMonData + add r0, r4, #0 + bl MOD05_021EC604 +_021EC6E0: + add r0, r5, #0 + bl MOD05_021EC4DC + cmp r0, #0 + beq _021EC6FA + ldr r0, [sp, #4] + bl DayCareMail_GetCapsule + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0xa9 + bl SetMonData +_021EC6FA: + ldr r0, [sp] + add r1, r4, #0 + bl AddMonToParty + add r0, r5, #0 + bl ZeroBoxMonData + add r0, r6, #0 + mov r1, #0 + bl DayCareMon_SetSteps + add r0, r4, #0 + bl FreeToHeap + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EC71C +MOD05_021EC71C: ; 0x021EC71C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + add r1, r3, #0 + bl Sav2_DayCare_GetMonX + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021EC668 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + bl MOD05_021EC5B0 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC744 +MOD05_021EC744: ; 0x021EC744 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #4 + add r5, r1, #0 + bl AllocMonZeroed + add r7, r0, #0 + bl FUN_020690E4 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl CopyPokemonToBoxPokemon + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl GetBoxMonData + str r0, [sp] + add r0, r0, r5 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r2, sp, #0 + bl SetBoxMonData + add r0, r4, #0 + bl CalcBoxMonLevel + add r4, r0, #0 + add r0, r7, #0 + bl FreeToHeap + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EC78C +MOD05_021EC78C: ; 0x021EC78C + push {r4, r5, r6, lr} + add r5, r0, #0 + bl DayCareMon_GetBoxMon + add r6, r0, #0 + bl CalcBoxMonLevel + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0 + bl DayCareMon_GetSteps + add r1, r0, #0 + add r0, r6, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r0, r0, r4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC7B4 +MOD05_021EC7B4: ; 0x021EC7B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl DayCareMon_GetBoxMon + add r4, r0, #0 + add r0, r5, #0 + bl DayCareMon_GetSteps + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC7D4 +MOD05_021EC7D4: ; 0x021EC7D4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl DayCareMon_GetBoxMon + add r6, r0, #0 + add r0, r4, #0 + bl MOD05_021EC78C + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #1 + add r0, r5, #0 + add r2, r4, #0 + mov r3, #3 + str r1, [sp, #4] + bl BufferIntegerAsString + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl BufferBoxMonNickname + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC810 +MOD05_021EC810: ; 0x021EC810 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl DayCareMon_GetBoxMon + add r6, r0, #0 + add r0, r4, #0 + bl MOD05_021EC78C + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl BufferBoxMonNickname + add r1, r4, #1 + mov r0, #0x64 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + mov r0, #0 + str r0, [sp] + mov r1, #1 + add r0, r5, #0 + add r2, r4, #0 + mov r3, #5 + str r1, [sp, #4] + bl BufferIntegerAsString + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC854 +MOD05_021EC854: ; 0x021EC854 + push {r4, lr} + add r4, r2, #0 + bl Sav2_DayCare_GetMonX + add r1, r4, #0 + bl MOD05_021EC810 + pop {r4, pc} + + thumb_func_start MOD05_021EC864 +MOD05_021EC864: ; 0x021EC864 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl Sav2_DayCare_GetMonX + add r4, r0, #0 + bl DayCareMon_GetBoxMon + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021EC888 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021EC7D4 + pop {r3, r4, r5, pc} +_021EC888: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EC88C +MOD05_021EC88C: ; 0x021EC88C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + bl MOD05_021EC458 + str r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl MOD05_021EC458 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC8A8 +MOD05_021EC8A8: ; 0x021EC8A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #0 + mvn r1, r1 + str r1, [sp] + add r1, sp, #4 + bl MOD05_021EC88C + mov r4, #0 + add r5, sp, #4 +_021EC8BC: + ldr r0, [r5] + bl GetBoxMonGender + cmp r0, #1 + bne _021EC8C8 + str r4, [sp] +_021EC8C8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021EC8BC + mov r7, #0 + add r6, r7, #0 + add r4, sp, #4 + add r5, sp, #0xc +_021EC8D8: + ldr r0, [r4] + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + str r0, [r5] + cmp r0, #0x84 + bne _021EC8EC + add r7, r7, #1 + str r6, [sp] +_021EC8EC: + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #2 + blt _021EC8D8 + cmp r7, #2 + bne _021EC90E + bl LCRandom + ldr r1, _021EC940 ; =0x00007FFF + cmp r0, r1 + blo _021EC90A + mov r0, #0 + str r0, [sp] + b _021EC90E +_021EC90A: + mov r0, #1 + str r0, [sp] +_021EC90E: + ldr r0, [sp] + mov r2, #0 + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + mov r1, #6 + bl GetBoxMonData + cmp r0, #0xe5 + bne _021EC938 + bl LCRandom + ldr r1, _021EC940 ; =0x00007FFF + cmp r0, r1 + blo _021EC932 + mov r0, #0 + mvn r0, r0 + str r0, [sp] +_021EC932: + ldr r0, [sp] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EC938: + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EC940: .word 0x00007FFF + + thumb_func_start MOD05_021EC944 +MOD05_021EC944: ; 0x021EC944 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r5, #0 + bl MOD05_021EC8A8 + add r1, r0, #0 + bpl _021EC960 + bl MTRandom + add r1, r0, #0 + ldr r0, [sp] + bl Sav2_DayCare_SetEggPID + pop {r3, r4, r5, r6, r7, pc} +_021EC960: + ldr r0, [sp] + bl MOD05_021EC458 + add r1, r5, #0 + add r2, r1, #0 + bl GetBoxMonData + bl GetNatureFromPersonality + mov r7, #0x96 + add r6, r0, #0 + lsl r7, r7, #4 +_021EC978: + bl MTRandom + add r4, r0, #0 + bl GetNatureFromPersonality + cmp r6, r0 + bne _021EC98A + cmp r4, #0 + bne _021EC990 +_021EC98A: + add r5, r5, #1 + cmp r5, r7 + ble _021EC978 +_021EC990: + ldr r0, [sp] + add r1, r4, #0 + bl Sav2_DayCare_SetEggPID + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC99C +MOD05_021EC99C: ; 0x021EC99C + push {r3, r4} + sub sp, #8 + mov r2, #0xff + strb r2, [r0, r1] + mov r2, #0 + add r3, sp, #0 +_021EC9A8: + ldrb r1, [r0, r2] + add r2, r2, #1 + strb r1, [r3] + add r3, r3, #1 + cmp r2, #6 + blt _021EC9A8 + mov r2, #0 + add r4, r2, #0 + add r3, sp, #0 +_021EC9BA: + ldrb r1, [r3] + cmp r1, #0xff + beq _021EC9C4 + strb r1, [r0, r2] + add r2, r2, #1 +_021EC9C4: + add r4, r4, #1 + add r3, r3, #1 + cmp r4, #6 + blt _021EC9BA + add sp, #8 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EC9D4 +MOD05_021EC9D4: ; 0x021EC9D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + str r1, [sp] + mov r0, #0 + add r1, sp, #8 +_021EC9E0: + strb r0, [r1, r0] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #6 + blo _021EC9E0 + add r7, sp, #0xc + mov r5, #0 + add r6, sp, #8 + add r7, #2 +_021EC9F4: + bl LCRandom + mov r1, #6 + sub r1, r1, r5 + bl _s32_div_f + ldrb r0, [r6, r1] + add r1, r5, #0 + strb r0, [r7, r5] + add r0, r6, #0 + bl MOD05_021EC99C + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021EC9F4 + add r6, sp, #4 + mov r5, #0 + add r6, #1 + mov r7, #0x1f +_021ECA1E: + bl LCRandom + lsr r1, r0, #0x1f + lsl r0, r0, #0x1f + sub r0, r0, r1 + ror r0, r7 + add r0, r1, r0 + strb r0, [r6, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021ECA1E + mov r5, #0 + add r7, sp, #4 + add r6, sp, #4 +_021ECA3E: + add r1, sp, #4 + add r1, #1 + ldrb r1, [r1, r5] + ldr r0, [sp] + bl MOD05_021EC458 + add r1, sp, #0xc + add r1, #2 + ldrb r1, [r1, r5] + cmp r1, #5 + bhi _021ECAEE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021ECA60: ; jump table + .short _021ECA6C - _021ECA60 - 2 ; case 0 + .short _021ECA82 - _021ECA60 - 2 ; case 1 + .short _021ECA98 - _021ECA60 - 2 ; case 2 + .short _021ECAAE - _021ECA60 - 2 ; case 3 + .short _021ECAC4 - _021ECA60 - 2 ; case 4 + .short _021ECADA - _021ECA60 - 2 ; case 5 +_021ECA6C: + mov r1, #0x46 + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x46 + add r2, r7, #0 + bl SetMonData + b _021ECAEE +_021ECA82: + mov r1, #0x47 + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x47 + add r2, r7, #0 + bl SetMonData + b _021ECAEE +_021ECA98: + mov r1, #0x48 + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x48 + add r2, r7, #0 + bl SetMonData + b _021ECAEE +_021ECAAE: + mov r1, #0x49 + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x49 + add r2, r7, #0 + bl SetMonData + b _021ECAEE +_021ECAC4: + mov r1, #0x4a + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x4a + add r2, r7, #0 + bl SetMonData + b _021ECAEE +_021ECADA: + mov r1, #0x4b + mov r2, #0 + bl GetBoxMonData + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x4b + add r2, r7, #0 + bl SetMonData +_021ECAEE: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021ECA3E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ECAFC +MOD05_021ECAFC: ; 0x021ECAFC + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r1, #0 + mov r1, #5 + add r2, r4, #0 + add r6, r4, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, _021ECB60 ; =0x00004E20 + ldr r3, _021ECB64 ; =0x00000775 + add r2, r2, r0 + ldr r0, _021ECB68 ; =UNK05_021F7B48 + add r1, r4, #0 +_021ECB1A: + lsl r7, r1, #1 + ldrh r7, [r0, r7] + cmp r2, r7 + bne _021ECB2A + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _021ECB34 +_021ECB2A: + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, r3 + blo _021ECB1A +_021ECB34: + ldr r2, _021ECB68 ; =UNK05_021F7B48 + lsl r0, r6, #1 + ldr r3, _021ECB60 ; =0x00004E20 + mov r1, #0 + add r0, r2, r0 +_021ECB3E: + lsl r6, r1, #1 + ldrh r2, [r0, r6] + cmp r2, r3 + bhi _021ECB58 + add r1, r1, #1 + strh r2, [r5, r6] + add r2, r4, #1 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsr r1, r1, #0x10 + lsr r4, r2, #0x10 + cmp r1, #0x10 + blo _021ECB3E +_021ECB58: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECB60: .word 0x00004E20 +_021ECB64: .word 0x00000775 +_021ECB68: .word UNK05_021F7B48 + + thumb_func_start MOD05_021ECB6C +MOD05_021ECB6C: ; 0x021ECB6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + str r1, [sp] + mov r0, #4 + mov r1, #0xb4 + str r2, [sp, #4] + bl AllocFromHeap + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #0xb4 + str r0, [sp, #0x1c] + bl MIi_CpuClearFast + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r7, #0 + mov r1, #0x70 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + add r2, r4, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0xc] + add r2, #0x30 + bl Species_LoadLearnsetTable + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + mov r5, #0 +_021ECBC0: + lsl r0, r5, #2 + add r6, r5, #0 + str r0, [sp, #0x20] + add r0, r4, r0 + add r6, #0x36 + str r0, [sp, #0x10] + ldr r0, [sp] + add r1, r6, #0 + mov r2, #0 + bl GetBoxMonData + ldr r1, [sp, #0x20] + mov r2, #0 + str r0, [r4, r1] + ldr r0, [sp, #4] + add r1, r6, #0 + bl GetBoxMonData + ldr r1, [sp, #0x10] + str r0, [r1, #0x20] + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + blo _021ECBC0 + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x94 + bl MOD05_021ECAFC + add r5, r0, #0 + mov r6, #0 +_021ECC00: + lsl r0, r6, #2 + ldr r1, [r4, r0] + str r0, [sp, #0x24] + cmp r1, #0 + beq _021ECC50 + mov r0, #0 + cmp r5, #0 + bls _021ECC46 +_021ECC10: + lsl r2, r0, #1 + add r2, r4, r2 + add r2, #0x94 + ldrh r2, [r2] + cmp r1, r2 + bne _021ECC3C + lsl r1, r1, #0x10 + add r0, r7, #0 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECC46 + ldr r1, [sp, #0x24] + add r0, r7, #0 + ldr r1, [r4, r1] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 + b _021ECC46 +_021ECC3C: + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r5 + blo _021ECC10 +_021ECC46: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECC00 +_021ECC50: + mov r0, #0 + str r0, [sp, #8] +_021ECC54: + ldr r0, [sp, #8] + lsl r6, r0, #2 + ldr r0, [r4, r6] + cmp r0, #0 + beq _021ECCAC + mov r5, #0 +_021ECC60: + mov r0, #0x52 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl TMHMGetMove + ldr r1, [r4, r6] + cmp r1, r0 + bne _021ECCA2 + lsl r2, r5, #0x18 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0xc] + lsr r2, r2, #0x18 + bl FUN_0206A16C + cmp r0, #0 + beq _021ECCA2 + ldr r1, [r4, r6] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECCA2 + ldr r1, [r4, r6] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 +_021ECCA2: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021ECC60 +_021ECCAC: + ldr r0, [sp, #8] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + cmp r0, #4 + blo _021ECC54 + mov r6, #0 +_021ECCBC: + lsl r1, r6, #2 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021ECCFC + mov r3, #0 +_021ECCC6: + lsl r2, r3, #2 + add r2, r4, r2 + ldr r0, [r4, r1] + ldr r2, [r2, #0x20] + cmp r0, r2 + bne _021ECCE8 + cmp r0, #0 + beq _021ECCE8 + ldr r2, [sp, #0x1c] + add r5, r2, #0 + add r5, r5, #1 + lsl r5, r5, #0x10 + lsr r5, r5, #0x10 + lsl r2, r2, #2 + str r5, [sp, #0x1c] + add r2, r4, r2 + str r0, [r2, #0x10] +_021ECCE8: + add r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + cmp r3, #4 + blo _021ECCC6 + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECCBC +_021ECCFC: + mov r6, #0 +_021ECCFE: + lsl r0, r6, #2 + add r5, r4, r0 + ldr r3, [r5, #0x10] + cmp r3, #0 + beq _021ECD54 + ldr r0, [sp, #0x14] + mov r2, #0 + cmp r0, #0 + bls _021ECD4A +_021ECD10: + lsl r0, r2, #1 + add r0, r4, r0 + ldrh r1, [r0, #0x30] + cmp r1, #0 + beq _021ECD3E + ldr r0, [r5, #0x10] + cmp r0, r1 + bne _021ECD3E + lsl r1, r3, #0x10 + add r0, r7, #0 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECD4A + ldr r1, [r5, #0x10] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 + b _021ECD4A +_021ECD3E: + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [sp, #0x14] + cmp r2, r0 + blo _021ECD10 +_021ECD4A: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECCFE +_021ECD54: + add r0, r4, #0 + bl FreeToHeap + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECD60: .word 0x0000FFFF + + thumb_func_start MOD05_021ECD64 +MOD05_021ECD64: ; 0x021ECD64 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl Sav2_DayCare_SetEggPID + add r0, r4, #0 + mov r1, #0 + bl Sav2_DayCare_SetEggCycleCounter + pop {r4, pc} + + thumb_func_start MOD05_021ECD78 +MOD05_021ECD78: ; 0x021ECD78 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r2, _021ECDE8 ; =UNK05_021F7B12 + mov r3, #0 + mov r1, #6 +_021ECD8C: + add r0, r3, #0 + mul r0, r1 + ldrh r0, [r2, r0] + cmp r5, r0 + bne _021ECD9A + add r6, r3, #0 + b _021ECDA4 +_021ECD9A: + add r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + cmp r3, #9 + blo _021ECD8C +_021ECDA4: + cmp r3, #9 + bne _021ECDAE + add sp, #8 + add r0, r5, #0 + pop {r4, r5, r6, pc} +_021ECDAE: + ldr r0, [sp] + mov r1, #6 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #4] + mov r1, #6 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #6 + add r1, r6, #0 + mul r1, r0 + ldr r0, _021ECDEC ; =UNK05_021F7B14 + ldrh r0, [r0, r1] + cmp r4, r0 + beq _021ECDE0 + cmp r2, r0 + beq _021ECDE0 + ldr r0, _021ECDF0 ; =UNK05_021F7B16 + ldrh r5, [r0, r1] +_021ECDE0: + add r0, r5, #0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021ECDE8: .word UNK05_021F7B12 +_021ECDEC: .word UNK05_021F7B14 +_021ECDF0: .word UNK05_021F7B16 + + thumb_func_start MOD05_021ECDF4 +MOD05_021ECDF4: ; 0x021ECDF4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + add r0, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r0, [sp] + mov r1, #6 + mov r2, #0 + bl GetBoxMonData + add r5, r0, #0 + ldr r0, [sp, #4] + mov r1, #6 + mov r2, #0 + bl GetBoxMonData + cmp r5, #0xec + beq _021ECE20 + cmp r0, #0xec + bne _021ECE3A +_021ECE20: + mov r1, #0x56 + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_02069698 + ldr r1, _021ECE40 ; =0x0000FFFF + cmp r0, r1 + bne _021ECE3A + mov r1, #0x56 + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_02069708 +_021ECE3A: + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021ECE40: .word 0x0000FFFF + + thumb_func_start MOD05_021ECE44 +MOD05_021ECE44: ; 0x021ECE44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r1, sp, #4 + str r0, [sp] + bl MOD05_021EC88C + mov r4, #0 + add r7, sp, #4 +_021ECE56: + lsl r6, r4, #2 + ldr r0, [r7, r6] + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + lsl r1, r4, #1 + add r2, sp, #0xc + strh r0, [r2, r1] + add r0, r2, #0 + ldrh r0, [r0, r1] + cmp r0, #0x84 + bne _021ECE7A + mov r0, #1 + eor r0, r4 + strb r0, [r5] + strb r4, [r5, #1] + b _021ECE8C +_021ECE7A: + ldr r0, [r7, r6] + bl GetBoxMonGender + cmp r0, #1 + bne _021ECE8C + mov r0, #1 + strb r4, [r5] + eor r0, r4 + strb r0, [r5, #1] +_021ECE8C: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _021ECE56 + ldrb r0, [r5] + lsl r1, r0, #1 + add r0, sp, #0xc + ldrh r0, [r0, r1] + bl ReadFromPersonalPmsNarc + add r4, r0, #0 + cmp r4, #0x1d + bne _021ECEBC + ldr r0, [sp] + bl Sav2_DayCare_GetEggPID + mov r1, #2 + lsl r1, r1, #0xe + tst r0, r1 + beq _021ECEBA + mov r4, #0x20 + b _021ECEBC +_021ECEBA: + mov r4, #0x1d +_021ECEBC: + ldr r0, _021ECF08 ; =0x0000013A + cmp r4, r0 + bne _021ECED6 + ldr r0, [sp] + bl Sav2_DayCare_GetEggPID + mov r1, #2 + lsl r1, r1, #0xe + tst r0, r1 + beq _021ECED4 + ldr r4, _021ECF0C ; =0x00000139 + b _021ECED6 +_021ECED4: + ldr r4, _021ECF08 ; =0x0000013A +_021ECED6: + ldr r0, _021ECF10 ; =0x000001EA + cmp r4, r0 + bne _021ECEDE + sub r4, r0, #1 +_021ECEDE: + ldrb r0, [r5, #1] + lsl r1, r0, #1 + add r0, sp, #0xc + ldrh r0, [r0, r1] + cmp r0, #0x84 + bne _021ECF02 + ldrb r0, [r5] + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + bl GetBoxMonGender + cmp r0, #1 + beq _021ECF02 + ldrb r1, [r5, #1] + ldrb r0, [r5] + strb r0, [r5, #1] + strb r1, [r5] +_021ECF02: + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021ECF08: .word 0x0000013A +_021ECF0C: .word 0x00000139 +_021ECF10: .word 0x000001EA + + thumb_func_start MOD05_SetEggStats +MOD05_SetEggStats: ; 0x021ECF14 + push {r0, r1, r2, r3} + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #0x13 ; BASE_EGG_CYCLES + add r4, r3, #0 + bl GetMonBaseStat + add r1, sp, #0x10 + strb r0, [r1] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + mov r3, #0x20 + bl CreateMon + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0, #2] + mov r1, #4 + strh r1, [r0, #4] + add r0, r5, #0 + mov r1, #0x9a + add r2, sp, #0x14 + bl SetMonData + add r0, r5, #0 + mov r1, #9 + add r2, sp, #0x10 + bl SetMonData + add r2, sp, #0x10 + add r0, r5, #0 + mov r1, #0x9b + add r2, #2 + bl SetMonData + add r0, sp, #0x30 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _021ECF7E + add r0, r5, #0 + mov r1, #0x97 + add r2, sp, #0x38 + bl SetMonData +_021ECF7E: + add r2, sp, #0x10 + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x4c + add r2, #1 + bl SetMonData + ldr r0, _021ED008 ; =0x000001EE + mov r1, #4 + bl GetSpeciesName + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r6, #0 + bl SetMonData + add r0, r6, #0 + bl String_dtor + ldr r0, [sp, #0x40] + cmp r0, #4 + bne _021ECFEE + add r0, r4, #0 + bl PlayerProfile_GetTrainerID + str r0, [sp, #0x1c] + add r0, r4, #0 + bl PlayerProfile_GetTrainerGender + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #0x20 + bl PlayerProfile_GetPlayerName_NewString + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x90 + add r2, r6, #0 + bl SetMonData + add r0, r5, #0 + mov r1, #7 + add r2, sp, #0x1c + bl SetMonData + add r0, r5, #0 + mov r1, #0x9c + add r2, sp, #0x18 + bl SetMonData + add r0, r6, #0 + bl String_dtor +_021ECFEE: + mov r0, #0 + str r0, [sp] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0208089C + add sp, #0x20 + pop {r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4, 0 +_021ED008: .word 0x000001EE + + thumb_func_start MOD05_DayCare_CreateEgg +MOD05_DayCare_CreateEgg: ; 0x021ED00C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r7, r0, #0 + ldr r0, [sp, #0x10] + mov r1, #0x13 ; BASE_EGG_CYCLES + add r5, r2, #0 + add r6, r3, #0 + bl GetMonBaseStat + add r1, sp, #0x14 + strb r0, [r1] + add r0, r5, #0 + bl Sav2_DayCare_GetEggPID + add r4, r0, #0 + add r0, r5, #0 + bl Sav2_DayCare_MasudaCheck + cmp r0, #0 + beq _021ED05E + add r0, r6, #0 + add r1, r4, #0 + bl CalcShininessByOtIdAndPersonality + cmp r0, #0 + bne _021ED05E + mov r5, #0 +_021ED044: + add r0, r4, #0 + bl PRandom + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl CalcShininessByOtIdAndPersonality + cmp r0, #0 + bne _021ED05E + add r5, r5, #1 + cmp r5, #4 + blt _021ED044 +_021ED05E: + mov r2, #1 + str r2, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + add r0, r7, #0 + mov r3, #0x20 + bl CreateMon + add r2, sp, #0x14 + mov r1, #0 + add r0, sp, #0x14 + strb r1, [r0, #1] + mov r1, #4 + strh r1, [r0, #2] + add r0, r7, #0 + mov r1, #0x9a + add r2, #2 + bl SetMonData + add r0, r7, #0 + mov r1, #9 + add r2, sp, #0x14 + bl SetMonData + add r2, sp, #0x14 + add r0, r7, #0 + mov r1, #0x9b + add r2, #1 + bl SetMonData + add r0, r7, #0 + mov r1, #0x70 + add r2, sp, #0x30 + bl SetMonData + ldr r0, _021ED0C8 ; =0x000001EE + mov r1, #4 + bl GetSpeciesName + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0x76 + add r2, r4, #0 + bl SetMonData + add r0, r4, #0 + bl String_dtor + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021ED0C8: .word 0x000001EE + + thumb_func_start MOD05_DayCare_GiveEggToPlayer +MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #4 + str r1, [sp, #4] + add r7, r2, #0 + bl AllocMonZeroed + add r1, sp, #0x10 + add r4, r0, #0 + add r0, r5, #0 + add r1, #1 + bl MOD05_021ECE44 + add r1, r5, #0 + bl MOD05_021ECD78 + add r6, r0, #0 + add r0, r7, #0 + bl PlayerProfile_GetTrainerID + add r1, sp, #0x10 + str r0, [sp, #8] + ldrb r1, [r1, #1] + add r0, r5, #0 + bl MOD05_021EC458 + mov r1, #0x70 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r3, [sp, #8] + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_DayCare_CreateEgg + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021EC9D4 + add r1, sp, #0x10 + ldrb r1, [r1, #2] + add r0, r5, #0 + bl MOD05_021EC458 + add r1, sp, #0x10 + str r0, [sp, #0xc] + ldrb r1, [r1, #1] + add r0, r5, #0 + bl MOD05_021EC458 + add r2, r0, #0 + ldr r1, [sp, #0xc] + add r0, r4, #0 + bl MOD05_021ECB6C + mov r0, #1 + mov r1, #0 + bl FUN_02015CF8 + add r3, r0, #0 + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + bl FUN_0208089C + cmp r6, #0xac + bne _021ED168 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021ECDF4 +_021ED168: + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x4c + add r2, sp, #0x10 + bl SetMonData + ldr r0, [sp, #4] + add r1, r4, #0 + bl AddMonToParty + add r0, r5, #0 + bl MOD05_021ECD64 + add r0, r4, #0 + bl FreeToHeap + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ED190 +MOD05_021ED190: ; 0x021ED190 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl GetPartyCount + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _021ED1E0 + mov r7, #0xac +_021ED1A2: + add r0, r5, #0 + add r1, r4, #0 + bl GetPartyMonByIndex + add r1, r7, #0 + mov r2, #0 + bl GetMonData + cmp r0, #0 + bne _021ED1D6 + add r0, r5, #0 + add r1, r4, #0 + bl GetPartyMonByIndex + mov r1, #0xa + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x28 + beq _021ED1D2 + cmp r0, #0x31 + bne _021ED1D6 +_021ED1D2: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021ED1D6: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + blt _021ED1A2 +_021ED1E0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ED1E4 +MOD05_021ED1E4: ; 0x021ED1E4 + push {r4, r5, r6, r7} + mov r4, #0 + add r3, r4, #0 +_021ED1EA: + ldrh r7, [r0] + add r5, r3, #0 + add r6, r1, #0 +_021ED1F0: + ldrh r2, [r6] + cmp r7, r2 + bne _021ED1FC + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021ED1FC: + add r5, r5, #1 + add r6, r6, #2 + cmp r5, #2 + blt _021ED1F0 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #2 + blt _021ED1EA + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021ED214 +MOD05_021ED214: ; 0x021ED214 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + add r4, sp, #0x18 + str r0, [sp] + add r7, sp, #8 + add r6, sp, #0x1c +_021ED228: + ldr r0, [r5] + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + strh r0, [r4] + ldr r0, [r5] + mov r1, #7 + mov r2, #0 + bl GetBoxMonData + ldr r1, [sp] + str r0, [r1] + mov r1, #0 + ldr r0, [r5] + add r2, r1, #0 + bl GetBoxMonData + add r1, r0, #0 + ldrh r0, [r4] + bl GetGenderBySpeciesAndPersonality + stmia r7!, {r0} + ldrh r0, [r4] + mov r1, #0x16 ; BASE_EGG_GROUP_1 + bl GetMonBaseStat + strh r0, [r6] + ldrh r0, [r4] + mov r1, #0x17 ; GASE_EGG_GROUP_2 + bl GetMonBaseStat + strh r0, [r6, #2] + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #4] + add r4, r4, #2 + add r0, r0, #1 + add r6, r6, #4 + str r0, [sp, #4] + cmp r0, #2 + blo _021ED228 + add r0, sp, #8 + ldrh r1, [r0, #0x14] + cmp r1, #0xf + beq _021ED28E + ldrh r0, [r0, #0x18] + cmp r0, #0xf + bne _021ED294 +_021ED28E: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED294: + cmp r1, #0xd + bne _021ED2A2 + cmp r0, #0xd + bne _021ED2A2 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2A2: + cmp r1, #0xd + beq _021ED2AA + cmp r0, #0xd + bne _021ED2BE +_021ED2AA: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + bne _021ED2B8 + add sp, #0x24 + mov r0, #0x14 + pop {r4, r5, r6, r7, pc} +_021ED2B8: + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED2BE: + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + cmp r0, r1 + bne _021ED2CC + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2CC: + cmp r0, #2 + beq _021ED2D4 + cmp r1, #2 + bne _021ED2DA +_021ED2D4: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2DA: + add r0, sp, #0x1c + add r1, sp, #0x20 + bl MOD05_021ED1E4 + cmp r0, #0 + bne _021ED2EC + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2EC: + add r0, sp, #8 + ldrh r1, [r0, #0x10] + ldrh r0, [r0, #0x12] + cmp r1, r0 + bne _021ED30A + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + beq _021ED304 + add sp, #0x24 + mov r0, #0x46 + pop {r4, r5, r6, r7, pc} +_021ED304: + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED30A: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + beq _021ED318 + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED318: + mov r0, #0x14 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED320 +MOD05_021ED320: ; 0x021ED320 + push {r3, lr} + sub sp, #8 + add r1, sp, #0 + bl MOD05_021EC88C + add r0, sp, #0 + bl MOD05_021ED214 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021ED334 +MOD05_021ED334: ; 0x021ED334 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl Script_GetDay + add r5, r0, #0 + add r0, r4, #0 + bl Script_GetMonth + mov r1, #0x64 + mul r1, r0 + add r0, r4, #0 + add r5, r5, r1 + bl FUN_0204B33C + cmp r0, #0 + beq _021ED358 + mov r0, #0xff + pop {r3, r4, r5, pc} +_021ED358: + ldr r2, _021ED374 ; =UNK05_021F7AF8 + mov r1, #0 +_021ED35C: + ldrh r0, [r2] + cmp r5, r0 + bne _021ED366 + mov r0, #0xe6 + pop {r3, r4, r5, pc} +_021ED366: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0xd + blo _021ED35C + mov r0, #0xff + pop {r3, r4, r5, pc} + nop +_021ED374: .word UNK05_021F7AF8 + + thumb_func_start MOD05_021ED378 +MOD05_021ED378: ; 0x021ED378 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r1, sp, #8 + str r0, [sp] + str r2, [sp, #4] + bl MOD05_021EC88C + mov r6, #0 + add r4, r6, #0 + add r5, sp, #8 +_021ED38E: + ldr r0, [r5] + mov r1, #0xab + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021ED3AC + ldr r0, [sp] + add r1, r4, #0 + bl Sav2_DayCare_GetMonX + mov r1, #1 + bl DayCareMon_AddSteps + add r6, r6, #1 +_021ED3AC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blo _021ED38E + ldr r0, [sp] + bl Sav2_DayCare_GetEggPID + cmp r0, #0 + bne _021ED3F8 + cmp r6, #2 + bne _021ED3F8 + ldr r0, [sp] + mov r1, #1 + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetSteps + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xff + bne _021ED3F8 + ldr r0, [sp] + bl MOD05_021ED320 + add r4, r0, #0 + bl LCRandom + mov r1, #0x64 + mul r1, r0 + add r0, r1, #0 + ldr r1, _021ED498 ; =0x0000FFFF + bl _u32_div_f + cmp r4, r0 + bls _021ED3F8 + ldr r0, [sp] + bl MOD05_021EC944 +_021ED3F8: + ldr r0, [sp] + bl Sav2_DayCare_GetEggCycleCounter + add r4, r0, #0 + ldr r0, [sp] + add r1, r4, #1 + bl Sav2_DayCare_SetEggCycleCounter + ldr r0, [sp, #4] + bl MOD05_021ED334 + add r1, r4, #1 + cmp r1, r0 + bne _021ED490 + ldr r0, [sp] + mov r1, #0 + bl Sav2_DayCare_SetEggCycleCounter + add r0, r7, #0 + bl MOD05_021ED190 + add r6, r0, #0 + add r0, r7, #0 + mov r5, #0 + bl GetPartyCount + cmp r0, #0 + bls _021ED490 +_021ED430: + add r0, r7, #0 + add r1, r5, #0 + bl GetPartyMonByIndex + mov r1, #0x4c + mov r2, #0 + add r4, r0, #0 + bl GetMonData + cmp r0, #0 + beq _021ED484 + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl GetMonData + cmp r0, #0 + bne _021ED484 + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl GetMonData + str r0, [sp, #0x10] + cmp r0, #0 + beq _021ED47E + cmp r0, r6 + blo _021ED46E + sub r0, r0, r6 + str r0, [sp, #0x10] + b _021ED472 +_021ED46E: + sub r0, r0, #1 + str r0, [sp, #0x10] +_021ED472: + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0x10 + bl SetMonData + b _021ED484 +_021ED47E: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021ED484: + add r0, r7, #0 + add r5, r5, #1 + bl GetPartyCount + cmp r5, r0 + blo _021ED430 +_021ED490: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021ED498: .word 0x0000FFFF + + thumb_func_start MOD05_021ED49C +MOD05_021ED49C: ; 0x021ED49C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl GetPartyCount + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _021ED4DA +_021ED4AC: + add r0, r7, #0 + add r1, r5, #0 + bl GetPartyMonByIndex + mov r1, #0x4c + mov r2, #0 + add r4, r0, #0 + bl GetMonData + cmp r0, #0 + beq _021ED4D4 + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl GetMonData + cmp r0, #0 + bne _021ED4D4 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021ED4D4: + add r5, r5, #1 + cmp r5, r6 + blt _021ED4AC +_021ED4DA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED4E0 +MOD05_021ED4E0: ; 0x021ED4E0 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r0, [sp] + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021ED50E + ldr r2, [sp] + add r0, r4, #0 + mov r1, #0 + bl BufferBoxMonNickname + ldr r2, [sp] + add r0, r4, #0 + mov r1, #2 + bl BufferBoxMonOTName +_021ED50E: + ldr r0, [sp, #4] + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + beq _021ED526 + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #1 + bl BufferBoxMonNickname +_021ED526: + add sp, #8 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED52C +MOD05_021ED52C: ; 0x021ED52C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r1, sp, #0x18 + ldrb r6, [r1, #0x10] + add r5, r0, #0 + add r7, r2, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl Sav2_DayCare_GetMonX + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021EC458 + add r5, r0, #0 + ldr r0, [sp, #0x2c] + add r1, r4, #0 + add r2, r5, #0 + bl BufferBoxMonNickname + ldr r0, [sp, #0xc] + bl DayCareMon_GetSteps + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r1, r7, #0 + mov r3, #3 + bl BufferIntegerAsString + add r0, r5, #0 + mov r1, #0x6f + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + beq _021ED5B4 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl GetBoxMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1d + beq _021ED5A4 + cmp r0, #0x20 + bne _021ED5B4 +_021ED5A4: + add r0, r5, #0 + mov r1, #0x4d + mov r2, #0 + bl GetBoxMonData + cmp r0, #0 + bne _021ED5B4 + mov r4, #2 +_021ED5B4: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #8] + add r2, r4, #0 + bl BufferGenderSymbol + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED5C4 +MOD05_021ED5C4: ; 0x021ED5C4 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl GetPartyMonByIndex + add r4, r0, #0 + bl FUN_020690E4 + add r2, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl BufferBoxMonNickname + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021ED5EC +MOD05_021ED5EC: ; 0x021ED5EC + push {r4, lr} + add r4, r0, #0 + bl Sav2_DayCare_GetEggPID + cmp r0, #0 + beq _021ED5FC + mov r0, #1 + pop {r4, pc} +_021ED5FC: + add r0, r4, #0 + bl MOD05_021EC464 + cmp r0, #0 + beq _021ED60E + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} +_021ED60E: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED614 +MOD05_021ED614: ; 0x021ED614 + cmp r0, #0x14 + bhi _021ED620 + bhs _021ED632 + cmp r0, #0 + beq _021ED62E + b _021ED63E +_021ED620: + cmp r0, #0x32 + bhi _021ED628 + beq _021ED636 + b _021ED63E +_021ED628: + cmp r0, #0x46 + beq _021ED63A + b _021ED63E +_021ED62E: + mov r0, #3 + bx lr +_021ED632: + mov r0, #2 + bx lr +_021ED636: + mov r0, #1 + bx lr +_021ED63A: + mov r0, #0 + bx lr +_021ED63E: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021ED644 +MOD05_021ED644: ; 0x021ED644 + push {r3, lr} + bl MOD05_021ED320 + bl MOD05_021ED614 + pop {r3, pc} + + thumb_func_start MOD05_021ED650 +MOD05_021ED650: ; 0x021ED650 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r0, #0 + add r5, r1, #0 + mov r0, #8 + bl String_ctor + str r0, [sp, #0x10] + add r0, r5, #0 + bl AllocMonZeroed + add r6, r0, #0 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + mov r5, #0 + add r7, sp, #0x34 +_021ED67C: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x36 + mov r2, #0 + bl GetMonData + lsl r1, r5, #1 + strh r0, [r7, r1] + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x3a + mov r2, #0 + bl GetMonData + add r1, sp, #0x30 + strb r0, [r1, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _021ED67C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl GetMonData + add r7, r0, #0 + mov r5, #0 +_021ED6B4: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x46 + mov r2, #0 + bl GetMonData + add r1, sp, #0x24 + add r1, #2 + strb r0, [r1, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #6 + blo _021ED6B4 + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #9] + add r0, r4, #0 + mov r1, #0x79 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #8] + add r0, r4, #0 + mov r1, #0xb + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #7] + add r0, r4, #0 + mov r1, #0x99 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #0xa] + add r0, r4, #0 + mov r1, #0x6e + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #5] + ldr r2, [sp, #0x10] + add r0, r4, #0 + mov r1, #0x90 + bl GetMonData + add r0, r4, #0 + mov r1, #0x9c + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #3] + add r0, r4, #0 + mov r1, #7 + mov r2, #0 + bl GetMonData + str r0, [sp, #0x2c] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #4] + ldr r1, _021ED93C ; =0x000001EA + ldr r0, [sp, #0x14] + cmp r0, r1 + bne _021ED788 + add r0, r4, #0 + mov r1, #0x97 + mov r2, #0 + bl GetMonData + add r5, r0, #0 + mov r0, #2 + mov r1, #1 + bl FUN_02015CF8 + cmp r5, r0 + bne _021ED788 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl CalcShininessByOtIdAndPersonality + cmp r0, #0 + beq _021ED788 +_021ED774: + add r0, r7, #0 + bl PRandom + add r7, r0, #0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl CalcShininessByOtIdAndPersonality + cmp r0, #0 + bne _021ED774 +_021ED788: + mov r2, #1 + str r2, [sp] + str r7, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x14] + add r0, r6, #0 + mov r3, #0x20 + bl CreateMon + mov r5, #0 + add r7, sp, #0x34 +_021ED7A2: + add r1, r5, #0 + lsl r2, r5, #1 + add r0, r6, #0 + add r1, #0x36 + add r2, r7, r2 + bl SetMonData + add r1, r5, #0 + add r2, sp, #0x30 + add r0, r6, #0 + add r1, #0x3a + add r2, r2, r5 + bl SetMonData + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _021ED7A2 + add r7, sp, #0x24 + mov r5, #0 + add r7, #2 +_021ED7CE: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x46 + add r2, r7, r5 + bl SetMonData + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #6 + blo _021ED7CE + add r2, sp, #0x20 + add r0, r6, #0 + mov r1, #0xc + add r2, #1 + bl SetMonData + add r0, r6, #0 + mov r1, #0x79 + add r2, sp, #0x20 + bl SetMonData + add r2, sp, #0x1c + add r0, r6, #0 + mov r1, #0xb + add r2, #3 + bl SetMonData + add r2, sp, #0x1c + mov r1, #0x78 + add r0, sp, #0x18 + strb r1, [r0, #6] + add r0, r6, #0 + mov r1, #9 + add r2, #2 + bl SetMonData + add r2, sp, #0x20 + add r0, r6, #0 + mov r1, #0x99 + add r2, #2 + bl SetMonData + add r2, sp, #0x1c + add r0, r6, #0 + mov r1, #0x6e + add r2, #1 + bl SetMonData + ldr r2, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x90 + bl SetMonData + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x9c + add r2, #3 + bl SetMonData + add r0, r6, #0 + mov r1, #7 + add r2, sp, #0x2c + bl SetMonData + add r0, r6, #0 + mov r1, #0x70 + add r2, sp, #0x1c + bl SetMonData + add r0, r4, #0 + mov r1, #0x97 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strh r0, [r1, #0xc] + add r0, r4, #0 + mov r1, #0x91 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #2] + add r0, r4, #0 + mov r1, #0x92 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #1] + add r0, r4, #0 + mov r1, #0x93 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1] + add r0, r6, #0 + mov r1, #0x97 + add r2, sp, #0x24 + bl SetMonData + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x91 + add r2, #2 + bl SetMonData + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x92 + add r2, #1 + bl SetMonData + add r0, r6, #0 + mov r1, #0x93 + add r2, sp, #0x18 + bl SetMonData + add r0, r4, #0 + mov r1, #0x98 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strh r0, [r1, #0xc] + add r0, r4, #0 + mov r1, #0x94 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #2] + add r0, r4, #0 + mov r1, #0x95 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1, #1] + add r0, r4, #0 + mov r1, #0x96 + mov r2, #0 + bl GetMonData + add r1, sp, #0x18 + strb r0, [r1] + add r0, r6, #0 + mov r1, #0x98 + add r2, sp, #0x24 + bl SetMonData + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x94 + add r2, #2 + bl SetMonData + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x95 + add r2, #1 + bl SetMonData + add r0, r6, #0 + mov r1, #0x96 + add r2, sp, #0x18 + bl SetMonData + add r0, r6, #0 + add r1, r4, #0 + bl CopyPokemonToPokemon + ldr r0, [sp, #0x10] + bl String_dtor + add r0, r6, #0 + bl FreeToHeap + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_021ED93C: .word 0x000001EA + + thumb_func_start MOD05_021ED940 +MOD05_021ED940: ; 0x021ED940 + push {r4, r5, lr} + sub sp, #0x1c + mov r3, #0x46 + add r2, sp, #0 + strb r3, [r2, #3] + mov r5, #0 + strb r5, [r2, #2] + mov r3, #4 + strb r3, [r2, #1] + add r4, r0, #0 + strb r5, [r2] + bl MOD05_021ED650 + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x4c + add r2, #3 + bl SetMonData + add r0, r4, #0 + mov r1, #5 + add r2, r5, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r5, #0 + add r2, sp, #4 + bl GetSpeciesNameIntoArray + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #4 + bl SetMonData + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x4d + add r2, #2 + bl SetMonData + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x9a + add r2, #1 + bl SetMonData + add r0, r4, #0 + mov r1, #0x9b + add r2, sp, #0 + bl SetMonData + add r0, r4, #0 + bl CalcMonLevelAndStats + add sp, #0x1c + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED9B4 +MOD05_021ED9B4: ; 0x021ED9B4 + push {r3, lr} + bl MOD05_021ED214 + bl MOD05_021ED614 + pop {r3, pc} + + .section .rodata + + .global UNK05_021F7AF8 +UNK05_021F7AF8: ; 0x021F7AF8 + .byte 0x70, 0x00, 0xD6, 0x00 + .byte 0x2F, 0x01, 0x91, 0x01, 0xF5, 0x01, 0x63, 0x02, 0xC3, 0x02, 0x35, 0x03, 0xA0, 0x03, 0x07, 0x04 + .byte 0x61, 0x04, 0xC8, 0x04, 0xC9, 0x04 + + .global UNK05_021F7B12 +UNK05_021F7B12: ; 0x021F7B12 + .byte 0x68, 0x01 + + .global UNK05_021F7B14 +UNK05_021F7B14: ; 0x021F7B14 + .byte 0xFF, 0x00 + + .global UNK05_021F7B16 +UNK05_021F7B16: ; 0x021F7B16 + .byte 0xCA, 0x00, 0x2A, 0x01, 0xFE, 0x00 + .byte 0xB7, 0x00, 0xB7, 0x01, 0x3A, 0x01, 0x7A, 0x00, 0xB6, 0x01, 0x3B, 0x01, 0xB9, 0x00, 0xBE, 0x01 + .byte 0x3C, 0x01, 0x8F, 0x00, 0xCA, 0x01, 0x3D, 0x01, 0xE2, 0x00, 0x96, 0x01, 0x3E, 0x01, 0x3B, 0x01 + .byte 0xB8, 0x01, 0x3F, 0x01, 0x71, 0x00, 0xB1, 0x01, 0x40, 0x01, 0x66, 0x01 + + .global UNK05_021F7B48 +UNK05_021F7B48: ; 0x021F7B48 + .byte 0x21, 0x4E, 0x71, 0x00 + .byte 0x82, 0x00, 0xDB, 0x00, 0xCC, 0x00, 0x50, 0x00, 0x59, 0x01, 0x40, 0x01, 0xAE, 0x00, 0x13, 0x01 + .byte 0x0B, 0x01, 0x85, 0x00, 0xB5, 0x01, 0x24, 0x4E, 0xBB, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00 + .byte 0xC8, 0x00, 0xFB, 0x00, 0x0E, 0x00, 0x5D, 0x01, 0xF2, 0x00, 0x97, 0x01, 0xE8, 0x00, 0x8A, 0x01 + .byte 0x27, 0x4E, 0xF3, 0x00, 0x72, 0x00, 0x36, 0x00, 0xC1, 0x00, 0xAF, 0x00, 0x1F, 0x01, 0x2C, 0x01 + .byte 0x19, 0x01, 0x4A, 0x01, 0xFC, 0x00, 0x88, 0x01, 0xC5, 0x01, 0x30, 0x4E, 0xE4, 0x00, 0xB9, 0x00 + .byte 0xC1, 0x00, 0xD3, 0x00, 0x3A, 0x01, 0x93, 0x01, 0x9D, 0x01, 0xFD, 0x00, 0x33, 0x4E, 0x67, 0x00 + .byte 0xAC, 0x00, 0x9A, 0x00, 0x2C, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFD, 0x00, 0xCF, 0x00, 0x83, 0x01 + .byte 0x7E, 0x01, 0x35, 0x4E, 0xB9, 0x00, 0xCE, 0x00, 0xB8, 0x00, 0x62, 0x00, 0xA1, 0x00, 0x36, 0x01 + .byte 0x8F, 0x00, 0x12, 0x00, 0xFD, 0x00, 0x37, 0x4E, 0xE4, 0x00, 0x15, 0x00, 0xB4, 0x00, 0xFB, 0x00 + .byte 0x31, 0x01, 0xB8, 0x00, 0x56, 0x01, 0x32, 0x00, 0x3B, 0x4E, 0xAF, 0x00, 0xDB, 0x00, 0x44, 0x00 + .byte 0xE5, 0x00, 0x9D, 0x00, 0xE8, 0x00, 0x0E, 0x00, 0x32, 0x01, 0x90, 0x01, 0x3D, 0x4E, 0x30, 0x00 + .byte 0x32, 0x00, 0x24, 0x00, 0x74, 0x00, 0xCC, 0x00, 0x44, 0x00, 0xFB, 0x00, 0xE4, 0x00, 0x40, 0x4E + .byte 0x44, 0x00, 0x32, 0x00, 0x30, 0x00, 0x24, 0x00, 0x85, 0x00, 0x5D, 0x00, 0xFB, 0x00, 0x85, 0x01 + .byte 0x45, 0x4E, 0xB9, 0x00, 0x5F, 0x00, 0xAF, 0x00, 0xB4, 0x00, 0x32, 0x00, 0x50, 0x01, 0xF4, 0x00 + .byte 0x01, 0x01, 0x8A, 0x01, 0x46, 0x01, 0x9C, 0x01, 0x49, 0x4E, 0x62, 0x00, 0xE4, 0x00, 0xB9, 0x00 + .byte 0x10, 0x00, 0x12, 0x00, 0xAE, 0x00, 0xA1, 0x01, 0x5F, 0x00, 0xAC, 0x01, 0x9D, 0x01, 0x4B, 0x4E + .byte 0x0E, 0x00, 0x4B, 0x00, 0xAF, 0x00, 0xEB, 0x00, 0xCC, 0x00, 0x13, 0x01, 0x41, 0x01, 0x4E, 0x4E + .byte 0xCE, 0x00, 0x67, 0x00, 0x44, 0x00, 0x3C, 0x00, 0xAF, 0x00, 0xE6, 0x00, 0x71, 0x00, 0xE4, 0x00 + .byte 0xE8, 0x00, 0xC2, 0x01, 0xB8, 0x01, 0x50, 0x4E, 0xE2, 0x00, 0x67, 0x00, 0xCA, 0x00, 0x44, 0x01 + .byte 0x61, 0x00, 0xEA, 0x00, 0x86, 0x01, 0xC2, 0x01, 0x52, 0x4E, 0xB9, 0x00, 0x67, 0x00, 0xF6, 0x00 + .byte 0xE4, 0x00, 0xFB, 0x00, 0xFD, 0x00, 0x9D, 0x00, 0xAA, 0x01, 0x36, 0x01, 0x54, 0x4E, 0xB4, 0x00 + .byte 0xCC, 0x00, 0x5F, 0x00, 0x85, 0x00, 0xF4, 0x00, 0x12, 0x01, 0x3C, 0x01, 0xAF, 0x00, 0x83, 0x01 + .byte 0x82, 0x01, 0x56, 0x4E, 0x5F, 0x00, 0x3C, 0x00, 0xC1, 0x00, 0x71, 0x00, 0xF8, 0x00, 0x5E, 0x00 + .byte 0xEE, 0x00, 0x1F, 0x01, 0x6D, 0x00, 0x19, 0x01, 0xAA, 0x01, 0x58, 0x4E, 0x9D, 0x00, 0xC1, 0x00 + .byte 0x60, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFB, 0x00, 0x17, 0x01, 0x09, 0x01, 0x72, 0x01, 0x5A, 0x4E + .byte 0x22, 0x00, 0xDB, 0x00, 0xF2, 0x00, 0x25, 0x00, 0x53, 0x00, 0x50, 0x01, 0x01, 0x01, 0x26, 0x00 + .byte 0x8A, 0x01, 0x5C, 0x4E, 0x36, 0x00, 0x96, 0x00, 0x3D, 0x00, 0x72, 0x00, 0xAA, 0x00, 0x5A, 0x01 + .byte 0x2D, 0x01, 0x55, 0x01, 0x1F, 0x01, 0x1B, 0x01, 0x5F, 0x4E, 0xE3, 0x00, 0x70, 0x00, 0x1A, 0x01 + .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x7B, 0x01, 0x81, 0x01, 0x62, 0x4E, 0x71, 0x00, 0x60, 0x00 + .byte 0x1B, 0x00, 0xE3, 0x00, 0x09, 0x01, 0x44, 0x00, 0x9D, 0x00, 0x72, 0x01, 0x07, 0x00, 0x09, 0x00 + .byte 0x08, 0x00, 0xA2, 0x01, 0x65, 0x4E, 0x0E, 0x00, 0xE3, 0x00, 0x73, 0x00, 0xEB, 0x00, 0x8D, 0x00 + .byte 0x13, 0x01, 0x59, 0x01, 0x84, 0x01, 0x41, 0x01, 0x68, 0x4E, 0x3E, 0x00, 0xF3, 0x00, 0xE5, 0x00 + .byte 0x72, 0x00, 0xDB, 0x00, 0x6D, 0x00, 0x1A, 0x01, 0x6F, 0x01, 0x6A, 0x4E, 0x05, 0x00, 0x9D, 0x00 + .byte 0x4F, 0x01, 0x67, 0x01, 0xAF, 0x00, 0x6D, 0x4E, 0xAC, 0x00, 0x25, 0x00, 0x18, 0x00, 0x5F, 0x00 + .byte 0xCC, 0x00, 0x26, 0x00, 0x20, 0x00, 0x6F, 0x4E, 0xDB, 0x00, 0xBB, 0x00, 0xF8, 0x00, 0x17, 0x00 + .byte 0x2C, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0x7E, 0x01, 0x4F, 0x01, 0xAC, 0x01, 0x73, 0x4E, 0xD3, 0x00 + .byte 0xC1, 0x00, 0x77, 0x00, 0x10, 0x00, 0x62, 0x00, 0xAF, 0x00, 0x29, 0x01, 0xAE, 0x00, 0x57, 0x01 + .byte 0xBD, 0x00, 0x90, 0x01, 0x74, 0x4E, 0x62, 0x00, 0x30, 0x00, 0x72, 0x00, 0xB9, 0x00, 0xAF, 0x00 + .byte 0x1B, 0x01, 0x77, 0x00, 0x9D, 0x01, 0x76, 0x4E, 0x7A, 0x00, 0xC3, 0x00, 0x32, 0x00, 0x20, 0x00 + .byte 0x15, 0x00, 0xE3, 0x00, 0xFC, 0x00, 0x4D, 0x01, 0x44, 0x01, 0x78, 0x4E, 0x72, 0x00, 0xD4, 0x00 + .byte 0x7A, 0x00, 0x1E, 0x01, 0xAE, 0x00, 0x45, 0x01, 0x99, 0x00, 0xA9, 0x01, 0xFE, 0x00, 0x00, 0x01 + .byte 0xFF, 0x00, 0x7A, 0x4E, 0x3D, 0x00, 0x24, 0x00, 0x70, 0x00, 0xE5, 0x00, 0x67, 0x00, 0x4D, 0x01 + .byte 0x55, 0x01, 0x7C, 0x4E, 0x95, 0x00, 0xC3, 0x00, 0x72, 0x00, 0x36, 0x01, 0x05, 0x01, 0x20, 0x01 + .byte 0x99, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x7F, 0x4E, 0x9D, 0x00, 0xAF, 0x00, 0x99, 0x00 + .byte 0x4F, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x5E, 0x01, 0x80, 0x4E, 0x70, 0x00, 0x12, 0x01, 0x10, 0x01 + .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xA1, 0x01, 0x04, 0x01, 0xAB, 0x01, 0x82, 0x4E, 0x5B, 0x00 + .byte 0x72, 0x00, 0x85, 0x00, 0xAF, 0x00, 0x15, 0x00, 0x1A, 0x01, 0x0E, 0x00, 0x41, 0x01, 0xF6, 0x00 + .byte 0x86, 0x4E, 0xEB, 0x00, 0xEC, 0x00, 0x73, 0x00, 0xF6, 0x00, 0xF4, 0x00, 0x13, 0x01, 0xAE, 0x00 + .byte 0x0B, 0x01, 0x7D, 0x01, 0xB5, 0x01, 0x88, 0x4E, 0x9D, 0x00, 0xF6, 0x00, 0xBB, 0x00, 0x67, 0x00 + .byte 0x82, 0x00, 0xC3, 0x00, 0x0E, 0x00, 0x18, 0x00, 0xBA, 0x01, 0x8C, 0x4E, 0xBB, 0x00, 0xDE, 0x00 + .byte 0x22, 0x00, 0xAE, 0x00, 0x09, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0xA4, 0x00, 0x85, 0x00, 0x67, 0x01 + .byte 0x8D, 0x4E, 0x67, 0x00, 0x95, 0x00, 0x3C, 0x00, 0xC2, 0x00, 0xDC, 0x00, 0x05, 0x01, 0x20, 0x01 + .byte 0xB4, 0x00, 0xAE, 0x00, 0x8F, 0x4E, 0xF2, 0x00, 0xB3, 0x00, 0x9D, 0x00, 0x44, 0x00, 0xDE, 0x00 + .byte 0x0E, 0x00, 0xAE, 0x00, 0x32, 0x01, 0x97, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x91, 0x4E + .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01 + .byte 0x92, 0x4E, 0xAF, 0x00, 0x5D, 0x00, 0x48, 0x00, 0x73, 0x00, 0x85, 0x00, 0x49, 0x00, 0x0B, 0x01 + .byte 0x1B, 0x01, 0xB5, 0x01, 0x93, 0x4E, 0x17, 0x00, 0xC1, 0x00, 0x74, 0x00, 0xDB, 0x00, 0x32, 0x00 + .byte 0x44, 0x00, 0x32, 0x01, 0xA4, 0x00, 0x26, 0x00, 0x1B, 0x01, 0x67, 0x01, 0x94, 0x4E, 0xAF, 0x00 + .byte 0x3E, 0x00, 0xBE, 0x00, 0x32, 0x00, 0x96, 0x00, 0x52, 0x00, 0xE1, 0x00, 0x44, 0x01, 0x96, 0x4E + .byte 0x3C, 0x00, 0x72, 0x00, 0x38, 0x00, 0xD6, 0x00, 0x2C, 0x01, 0xBD, 0x00, 0x91, 0x01, 0x9A, 0x4E + .byte 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01 + .byte 0x2A, 0x01, 0x9B, 0x4E, 0x44, 0x00, 0xDB, 0x00, 0xE2, 0x00, 0x0D, 0x00, 0xB3, 0x00, 0x71, 0x00 + .byte 0xCB, 0x00, 0x3E, 0x01, 0x95, 0x01, 0x90, 0x01, 0x9F, 0x4E, 0x1F, 0x00, 0xAF, 0x00, 0xCE, 0x00 + .byte 0xB9, 0x00, 0x62, 0x00, 0x72, 0x01, 0x6C, 0x01, 0xA3, 0x4E, 0xC1, 0x00, 0xA4, 0x00, 0x41, 0x01 + .byte 0x1F, 0x01, 0x5D, 0x01, 0xAE, 0x00, 0xD6, 0x00, 0x20, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x5A, 0x00 + .byte 0xA5, 0x4E, 0xCC, 0x00, 0xAF, 0x00, 0xCB, 0x00, 0xAE, 0x00, 0x41, 0x01, 0x11, 0x01, 0x19, 0x01 + .byte 0x39, 0x01, 0x57, 0x01, 0xAA, 0x4E, 0x3D, 0x00, 0x3E, 0x00, 0x15, 0x00, 0x30, 0x00, 0x72, 0x00 + .byte 0x9D, 0x00, 0xBF, 0x00, 0x1A, 0x01, 0x7A, 0x01, 0x86, 0x01, 0xAC, 0x4E, 0x3D, 0x00, 0x3E, 0x00 + .byte 0xE5, 0x00, 0x5B, 0x00, 0xAF, 0x00, 0x1A, 0x01, 0x6D, 0x00, 0x55, 0x01, 0xC4, 0x00, 0x67, 0x00 + .byte 0xAE, 0x4E, 0x12, 0x00, 0xE4, 0x00, 0xC1, 0x00, 0xD3, 0x00, 0xE1, 0x00, 0xAE, 0x00, 0x74, 0x01 + .byte 0xAF, 0x4E, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xA4, 0x00, 0x12, 0x00 + .byte 0xE4, 0x00, 0xB3, 0x4E, 0x71, 0x00, 0x36, 0x00, 0x72, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x5D, 0x01 + .byte 0x97, 0x01, 0xB8, 0x4E, 0x16, 0x00, 0x49, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xAF, 0x00, 0x0B, 0x01 + .byte 0x13, 0x01, 0x40, 0x01, 0xB5, 0x01, 0x38, 0x01, 0x7A, 0x01, 0xBB, 0x4E, 0x9A, 0x00, 0x62, 0x00 + .byte 0xB3, 0x00, 0x25, 0x00, 0xC1, 0x00, 0x57, 0x01, 0x50, 0x01, 0x32, 0x01, 0x26, 0x00, 0x18, 0x00 + .byte 0x8A, 0x01, 0xBE, 0x4E, 0xF2, 0x00, 0x25, 0x00, 0x38, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x01 + .byte 0x5A, 0x01, 0x51, 0x01, 0x08, 0x00, 0xE8, 0x00, 0x5D, 0x01, 0xC1, 0x4E, 0x26, 0x00, 0xE4, 0x00 + .byte 0xA3, 0x00, 0x74, 0x00, 0xB3, 0x00, 0xA4, 0x00, 0x0F, 0x01, 0x12, 0x01, 0x83, 0x01, 0xCC, 0x00 + .byte 0x57, 0x01, 0xC3, 0x4E, 0x77, 0x00, 0x30, 0x00, 0xB9, 0x00, 0x11, 0x00, 0x12, 0x00, 0x8F, 0x00 + .byte 0x29, 0x01, 0x61, 0x00, 0x65, 0x00, 0xC5, 0x4E, 0x3C, 0x00, 0x75, 0x00, 0x3E, 0x01, 0x95, 0x01 + .byte 0x67, 0x00, 0xE3, 0x00, 0x1A, 0x01, 0xC2, 0x01, 0xC7, 0x4E, 0x3C, 0x00, 0x32, 0x00, 0x31, 0x00 + .byte 0xE2, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x86, 0x01, 0x8E, 0x01, 0xCA, 0x4E, 0xAF, 0x00, 0x67, 0x00 + .byte 0x85, 0x00, 0x3C, 0x00, 0xFA, 0x00, 0x61, 0x00, 0x36, 0x00, 0xCC, 0x4E, 0xB3, 0x00, 0x75, 0x00 + .byte 0xD9, 0x00, 0xE3, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 0x01, 0xFC, 0x00, 0x09, 0x00, 0x41, 0x01 + .byte 0xCD, 0x4E, 0xD9, 0x00, 0x76, 0x00, 0x85, 0x00, 0xBB, 0x00, 0x96, 0x00, 0x66, 0x00, 0x11, 0x01 + .byte 0xA4, 0x00, 0x39, 0x01, 0x57, 0x01, 0xCE, 0x4E, 0xC3, 0x00, 0xD9, 0x00, 0xB9, 0x00, 0x11, 0x01 + .byte 0x39, 0x01, 0x83, 0x01, 0x57, 0x01, 0x64, 0x01, 0xCF, 0x4E, 0xD9, 0x00, 0x77, 0x00, 0x40, 0x00 + .byte 0xC1, 0x00, 0xF8, 0x00, 0xA4, 0x00, 0xF4, 0x00, 0xA1, 0x01, 0x77, 0x01, 0x7D, 0x01, 0xD1, 0x4E + .byte 0x72, 0x00, 0x41, 0x00, 0x62, 0x00, 0xB9, 0x00, 0xD3, 0x00, 0xF4, 0x00, 0x29, 0x01, 0x1F, 0x01 + .byte 0xAC, 0x01, 0x85, 0x01, 0xD3, 0x4E, 0x24, 0x00, 0x22, 0x00, 0xDB, 0x00, 0x67, 0x00, 0x73, 0x00 + .byte 0x3C, 0x01, 0x0C, 0x01, 0x04, 0x01, 0x1C, 0x00, 0xD7, 0x4E, 0x71, 0x00, 0xD9, 0x00, 0x85, 0x00 + .byte 0xF8, 0x00, 0xBB, 0x00, 0xC3, 0x00, 0x30, 0x00, 0xA4, 0x00, 0xC5, 0x01, 0x14, 0x01, 0x1F, 0x01 + .byte 0xD9, 0x4E, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xDB, 0x4E + .byte 0x5D, 0x00, 0xE3, 0x00, 0x26, 0x00, 0x73, 0x00, 0x85, 0x00, 0x0E, 0x01, 0xF4, 0x00, 0x38, 0x01 + .byte 0x84, 0x01, 0xDE, 0x4E, 0x44, 0x00, 0x67, 0x00, 0xE4, 0x00, 0x61, 0x00, 0xB4, 0x00, 0x15, 0x00 + .byte 0x03, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0x57, 0x01, 0x54, 0x01, 0xDF, 0x4E, 0x40, 0x01, 0xE3, 0x00 + .byte 0x49, 0x00, 0x0B, 0x01, 0xAE, 0x00, 0x0E, 0x01, 0x13, 0x01, 0xE6, 0x00, 0xE1, 0x4E, 0x12, 0x00 + .byte 0xB3, 0x00, 0x8D, 0x00, 0x44, 0x01, 0x3E, 0x01, 0x6C, 0x01, 0xB9, 0x00, 0xE4, 0x00, 0xE2, 0x4E + .byte 0x22, 0x00, 0xF6, 0x00, 0xDB, 0x00, 0xAE, 0x00, 0x2C, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00 + .byte 0x44, 0x00, 0xE3, 0x00, 0x18, 0x00, 0xE6, 0x4E, 0x12, 0x00, 0x41, 0x00, 0x77, 0x00, 0x11, 0x00 + .byte 0x8F, 0x00, 0x6D, 0x00, 0x29, 0x01, 0xC3, 0x00, 0x77, 0x01, 0x67, 0x00, 0xB9, 0x00, 0xE8, 0x4E + .byte 0x67, 0x00, 0xC2, 0x00, 0xF4, 0x00, 0x1E, 0x01, 0x06, 0x01, 0x85, 0x01, 0xA9, 0x01, 0xAE, 0x00 + .byte 0xB4, 0x00, 0xD2, 0x01, 0xEB, 0x4E, 0x24, 0x00, 0x85, 0x00, 0xC1, 0x00, 0xF8, 0x00, 0xFB, 0x00 + .byte 0xF4, 0x00, 0x11, 0x01, 0x15, 0x01, 0x18, 0x00, 0xF3, 0x00, 0xEC, 0x4E, 0x73, 0x00, 0x2A, 0x00 + .byte 0xAF, 0x00, 0x81, 0x00, 0x44, 0x00, 0x48, 0x01, 0x17, 0x01, 0x26, 0x00, 0x86, 0x01, 0xEE, 0x4E + .byte 0x75, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x36, 0x01, 0xAE, 0x00, 0x78, 0x01 + .byte 0x15, 0x01, 0xAD, 0x00, 0xEF, 0x4E, 0xE8, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x44, 0x00, 0x48, 0x01 + .byte 0x61, 0x00, 0xE2, 0x00, 0x26, 0x00, 0x6C, 0x01, 0x90, 0x01, 0xB8, 0x01, 0xF1, 0x4E, 0x76, 0x00 + .byte 0xB9, 0x00, 0x73, 0x00, 0xD9, 0x00, 0xF2, 0x00, 0xD7, 0x00, 0xAD, 0x00, 0x09, 0x01, 0x72, 0x01 + .byte 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xF3, 0x4E, 0xAF, 0x00, 0x72, 0x00, 0x3D, 0x00, 0x30, 0x00 + .byte 0x36, 0x01, 0x44, 0x01, 0x8E, 0x01, 0xF5, 0x4E, 0xE6, 0x00, 0x1A, 0x01, 0x0E, 0x01, 0x6F, 0x01 + .byte 0x48, 0x01, 0xBD, 0x00, 0xF6, 0x4E, 0x6A, 0x00, 0x75, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0x17, 0x01 + .byte 0xE4, 0x00, 0x26, 0x00, 0xF7, 0x4E, 0x44, 0x00, 0xB4, 0x00, 0xC1, 0x00, 0x73, 0x00, 0x2C, 0x00 + .byte 0x32, 0x01, 0xFC, 0x00, 0xCA, 0x01, 0x82, 0x01, 0xE4, 0x00, 0xA4, 0x01, 0x08, 0x00, 0xF8, 0x4E + .byte 0xF2, 0x00, 0x24, 0x00, 0x45, 0x00, 0x44, 0x00, 0xE8, 0x00, 0x39, 0x01, 0x19, 0x01, 0xD6, 0x00 + .byte 0xEE, 0x00, 0x26, 0x00, 0x72, 0x01, 0x90, 0x01, 0xFA, 0x4E, 0x97, 0x00, 0x01, 0x01, 0xAE, 0x00 + .byte 0x6C, 0x00, 0x06, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x4E, 0x24, 0x00, 0x2C, 0x00 + .byte 0x22, 0x00, 0x9D, 0x00, 0xF6, 0x00, 0x55, 0x01, 0x4D, 0x01, 0x26, 0x00, 0x5A, 0x00, 0xAE, 0x00 + .byte 0xFE, 0x4E, 0x9D, 0x00, 0x67, 0x00, 0x36, 0x00, 0x85, 0x00, 0x70, 0x00, 0x13, 0x01, 0x6D, 0x00 + .byte 0x4D, 0x01, 0x0B, 0x01, 0x88, 0x01, 0xFF, 0x4E, 0x3E, 0x00, 0xBE, 0x00, 0x30, 0x00, 0x72, 0x00 + .byte 0x67, 0x00, 0x56, 0x00, 0x5E, 0x01, 0xAD, 0x00, 0xAF, 0x00, 0x01, 0x4F, 0x3E, 0x00, 0x62, 0x00 + .byte 0xF8, 0x00, 0x96, 0x00, 0xE5, 0x00, 0x2D, 0x01, 0xA4, 0x01, 0x08, 0x00, 0x02, 0x4F, 0xEF, 0x00 + .byte 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00, 0x5A, 0x01, 0x96, 0x00 + .byte 0x03, 0x4F, 0x41, 0x00, 0xE4, 0x00, 0x12, 0x00, 0x8F, 0x00, 0xAE, 0x00, 0x9D, 0x01, 0x74, 0x01 + .byte 0x04, 0x4F, 0x53, 0x00, 0x63, 0x00, 0xE4, 0x00, 0x44, 0x00, 0xB4, 0x00, 0xB3, 0x00, 0xFB, 0x00 + .byte 0x05, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xA1, 0x01, 0x82, 0x01, 0x07, 0x4F, 0x74, 0x00, 0x22, 0x00 + .byte 0xF6, 0x00, 0xAD, 0x00, 0x44, 0x00, 0x5A, 0x00, 0x1B, 0x01, 0xA4, 0x01, 0x0A, 0x4F, 0xB4, 0x00 + .byte 0x32, 0x00, 0x2C, 0x00, 0xCF, 0x00, 0xF4, 0x00, 0x46, 0x01, 0x25, 0x00, 0x18, 0x00, 0xAC, 0x01 + .byte 0x0C, 0x4F, 0xE5, 0x00, 0x88, 0x00, 0xB7, 0x00, 0xAA, 0x00, 0x0E, 0x01, 0x44, 0x00, 0x9A, 0x01 + .byte 0xA2, 0x01, 0x0E, 0x4F, 0x60, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x11, 0x01, 0x08, 0x00, 0x65, 0x01 + .byte 0x0F, 0x4F, 0x02, 0x00, 0x70, 0x00, 0x1B, 0x00, 0x60, 0x00, 0xEE, 0x00, 0x07, 0x00, 0x08, 0x00 + .byte 0xDF, 0x00, 0x10, 0x4F, 0x02, 0x00, 0x05, 0x00, 0x70, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x09, 0x00 + .byte 0xB7, 0x00, 0xDF, 0x00, 0x8A, 0x01, 0x11, 0x4F, 0xD9, 0x00, 0xB3, 0x00, 0x45, 0x00, 0xCB, 0x00 + .byte 0xF4, 0x00, 0xAE, 0x00, 0x0E, 0x01, 0xD6, 0x00, 0x92, 0x00, 0x67, 0x01, 0x26, 0x00, 0x82, 0x01 + .byte 0x16, 0x4F, 0xE4, 0x00, 0x17, 0x00, 0xC8, 0x00, 0x74, 0x00, 0xF6, 0x00, 0x5D, 0x01, 0xAE, 0x00 + .byte 0x4E, 0x01, 0x74, 0x01, 0xBA, 0x01, 0x1C, 0x4F, 0xF2, 0x00, 0x2C, 0x01, 0x1B, 0x01, 0x49, 0x00 + .byte 0xE1, 0x00, 0x32, 0x01, 0x84, 0x01, 0x18, 0x00, 0x40, 0x01, 0xEB, 0x00, 0x59, 0x01, 0xB5, 0x01 + .byte 0x1F, 0x4F, 0x44, 0x00, 0xB3, 0x00, 0xCB, 0x00, 0xCF, 0x00, 0x9D, 0x00, 0x09, 0x01, 0x32, 0x01 + .byte 0xE2, 0x00, 0x61, 0x00, 0x90, 0x01, 0x83, 0x01, 0x6C, 0x01, 0x22, 0x4F, 0x1F, 0x01, 0xFD, 0x00 + .byte 0xAE, 0x00, 0x17, 0x00, 0x2D, 0x01, 0xF3, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x2C, 0x00 + .byte 0x26, 0x00, 0xAA, 0x01, 0x25, 0x4F, 0x36, 0x01, 0x31, 0x01, 0x57, 0x01, 0x2B, 0x00, 0x19, 0x01 + .byte 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x7E, 0x01, 0x27, 0x4F, 0xCC, 0x00, 0xE4, 0x00 + .byte 0xA4, 0x00, 0x41, 0x01, 0x0F, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0x2E, 0x4F, 0xEB, 0x00, 0x4B, 0x00 + .byte 0xE6, 0x00, 0x49, 0x00, 0xAF, 0x00, 0x37, 0x00, 0x41, 0x01, 0x31, 0x4F, 0x49, 0x00, 0x85, 0x00 + .byte 0x62, 0x00, 0x0D, 0x00, 0x24, 0x00, 0xCE, 0x00, 0x84, 0x01, 0xA1, 0x01, 0x34, 0x4F, 0xE4, 0x00 + .byte 0x30, 0x00, 0x1F, 0x01, 0x77, 0x00, 0x63, 0x00, 0x8F, 0x00, 0x12, 0x00, 0x9D, 0x01, 0x36, 0x4F + .byte 0x36, 0x00, 0xEF, 0x00, 0x61, 0x00, 0x10, 0x00, 0x5A, 0x01, 0x88, 0x01, 0x1A, 0x01, 0x38, 0x4F + .byte 0x32, 0x00, 0x05, 0x01, 0xD4, 0x00, 0x06, 0x01, 0xC2, 0x00, 0x20, 0x01, 0xA9, 0x01, 0x6D, 0x00 + .byte 0x3B, 0x4F, 0xC1, 0x00, 0x55, 0x01, 0x3C, 0x00, 0x38, 0x00, 0xAA, 0x00, 0x44, 0x01, 0xC2, 0x01 + .byte 0x3D, 0x4F, 0x39, 0x01, 0xCF, 0x00, 0xCC, 0x00, 0xCE, 0x00, 0x0E, 0x01, 0x84, 0x01, 0x66, 0x01 + .byte 0x92, 0x01, 0x3F, 0x4F, 0xE4, 0x00, 0xA3, 0x00, 0x22, 0x00, 0xAD, 0x00, 0x32, 0x01, 0xAE, 0x00 + .byte 0xD6, 0x00, 0x67, 0x01, 0x90, 0x01, 0x42, 0x4F, 0xCB, 0x00, 0xB9, 0x00, 0x10, 0x00, 0x3E, 0x01 + .byte 0x95, 0x01, 0x90, 0x01, 0xC2, 0x01, 0x45, 0x4F, 0x24, 0x00, 0xAD, 0x00, 0xCF, 0x00, 0x46, 0x01 + .byte 0x09, 0x01, 0x6C, 0x00, 0x1B, 0x01, 0x48, 0x4F, 0xB9, 0x00, 0xC5, 0x00, 0xC1, 0x00, 0x0E, 0x01 + .byte 0xEE, 0x00, 0x17, 0x01, 0xDF, 0x00, 0x44, 0x00, 0x66, 0x01, 0xA2, 0x01, 0x4A, 0x4F, 0xE3, 0x00 + .byte 0x2F, 0x00, 0x1F, 0x01, 0x15, 0x00, 0x41, 0x01, 0x39, 0x01, 0x4B, 0x4F, 0xDE, 0x00, 0xCD, 0x00 + .byte 0x99, 0x00, 0x26, 0x00, 0x4F, 0x01, 0x4C, 0x4F, 0x0E, 0x01, 0xF4, 0x00, 0xFD, 0x00, 0x39, 0x01 + .byte 0x11, 0x01, 0xE2, 0x00, 0xA4, 0x00, 0x41, 0x01, 0x83, 0x01, 0xFC, 0x00, 0xAC, 0x01, 0x85, 0x01 + .byte 0x4E, 0x4F, 0xF4, 0x00, 0x69, 0x00, 0xEC, 0x00, 0xA1, 0x01, 0x04, 0x01, 0x4F, 0x4F, 0x0E, 0x00 + .byte 0xCE, 0x00, 0x31, 0x01, 0xF4, 0x00, 0xF6, 0x00, 0x41, 0x01, 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01 + .byte 0xA6, 0x01, 0x82, 0x01, 0x50, 0x4F, 0x1B, 0x01, 0x22, 0x00, 0x17, 0x00, 0x09, 0x01, 0xAE, 0x00 + .byte 0x67, 0x00, 0xBA, 0x01, 0x97, 0x01, 0x53, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xC1, 0x00 + .byte 0xFC, 0x00, 0xE2, 0x00, 0xDF, 0x00, 0x80, 0x01, 0x81, 0x01, 0xAB, 0x01, 0xA2, 0x01, 0x55, 0x4F + .byte 0xF2, 0x00, 0x1D, 0x00, 0xFD, 0x00, 0xAE, 0x00, 0x81, 0x00, 0xB3, 0x01, 0xA7, 0x01, 0xA8, 0x01 + .byte 0xA6, 0x01, 0x57, 0x4F, 0xA4, 0x00, 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x58, 0x4F, 0xA4, 0x00 + .byte 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x59, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x0F, 0x01, 0xE3, 0x00 + .byte 0x95, 0x01, 0x5A, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x4A, 0x00, 0xE3, 0x00, 0x95, 0x01, 0x5B, 0x4F + .byte 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00, 0xB5, 0x01 + .byte 0x5C, 0x4F, 0x8A, 0x00, 0x97, 0x00, 0x7B, 0x00, 0xDC, 0x00, 0xAE, 0x00, 0xC2, 0x00, 0x5E, 0x4F + .byte 0x38, 0x00, 0x26, 0x00, 0x25, 0x00, 0xF6, 0x00, 0x60, 0x4F, 0x26, 0x00, 0x25, 0x00, 0xCF, 0x00 + .byte 0xAD, 0x00, 0xD6, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x41, 0x01, 0x6F, 0x00, 0x22, 0x00, 0x62, 0x4F + .byte 0x50, 0x01, 0xB8, 0x00, 0x22, 0x00, 0xCD, 0x00, 0x6F, 0x00, 0x17, 0x00, 0x19, 0x01, 0xF6, 0x00 + .byte 0xAA, 0x01, 0x01, 0x01, 0x64, 0x4F, 0x1C, 0x01, 0xCB, 0x00, 0xD6, 0x00, 0x19, 0x01, 0x59, 0x00 + .byte 0x5A, 0x00, 0x65, 0x4F, 0xF8, 0x00, 0x46, 0x01, 0xA4, 0x00, 0x0F, 0x01, 0xAC, 0x01, 0x85, 0x00 + .byte 0xF3, 0x00, 0x67, 0x4F, 0xE3, 0x00, 0x9D, 0x00, 0x12, 0x01, 0x32, 0x00, 0xE2, 0x00, 0x11, 0x01 + .byte 0x0F, 0x01, 0x09, 0x01, 0xFC, 0x00, 0x10, 0x01, 0xAB, 0x01, 0x68, 0x4F, 0x74, 0x00, 0x62, 0x00 + .byte 0x10, 0x00, 0xAF, 0x00, 0xD2, 0x00, 0x6B, 0x4F, 0x40, 0x01, 0x33, 0x00, 0x2A, 0x01, 0xDF, 0x00 + .byte 0x44, 0x00, 0x43, 0x00, 0x09, 0x01, 0x59, 0x01, 0x92, 0x01, 0x6D, 0x4F, 0x61, 0x00, 0x72, 0x00 + .byte 0xE4, 0x00, 0x63, 0x00, 0x29, 0x01, 0x97, 0x01, 0x6F, 0x4F, 0xAF, 0x00, 0x18, 0x00, 0x0D, 0x00 + .byte 0x44, 0x00, 0x2E, 0x00, 0xAE, 0x00, 0x9A, 0x00, 0x90, 0x01, 0xE8, 0x00, 0xCA, 0x01, 0x70, 0x4F + .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x00, 0xB8, 0x00, 0x74, 0x01, 0x90, 0x01, 0x73, 0x4F + .byte 0x25, 0x00, 0xFA, 0x00, 0xD1, 0x00, 0x38, 0x00, 0xAF, 0x00, 0x24, 0x00, 0x75, 0x4F, 0x2C, 0x01 + .byte 0x1B, 0x01, 0x22, 0x00, 0xF6, 0x00, 0x1A, 0x01, 0x14, 0x01, 0xE8, 0x00, 0x79, 0x4F, 0x70, 0x00 + .byte 0x69, 0x00, 0xF3, 0x00, 0x9D, 0x00, 0x7A, 0x01, 0x41, 0x01, 0x7B, 0x4F, 0xE5, 0x00, 0x1A, 0x01 + .byte 0x0E, 0x00, 0x9D, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xB8, 0x01, 0x7D, 0x4F, 0xF3, 0x00, 0xE1, 0x00 + .byte 0x2C, 0x01, 0x5F, 0x00, 0x71, 0x00, 0x6D, 0x00, 0x36, 0x00, 0x72, 0x00, 0x41, 0x01, 0x7F, 0x4F + .byte 0xF8, 0x00, 0xF4, 0x00, 0x7D, 0x01, 0x32, 0x00, 0x85, 0x00, 0xD2, 0x01, 0x80, 0x4F, 0x32, 0x00 + .byte 0x15, 0x01, 0x0F, 0x01, 0xFC, 0x00, 0xA1, 0x01, 0x92, 0x00, 0x81, 0x4F, 0x32, 0x00, 0xC2, 0x00 + .byte 0xC1, 0x00, 0x36, 0x01, 0x1E, 0x01, 0xE4, 0x00, 0xA9, 0x01, 0x73, 0x01, 0x6D, 0x00, 0x83, 0x4F + .byte 0x1E, 0x01, 0xC2, 0x00, 0xDC, 0x00, 0x20, 0x01, 0x06, 0x01, 0xB9, 0x00, 0xD2, 0x01, 0x85, 0x4F + .byte 0x1D, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x49, 0x00, 0x0B, 0x01, 0xB5, 0x01, 0xEB, 0x00, 0xAE, 0x00 + .byte 0x5C, 0x01, 0x86, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00, 0x11, 0x01, 0xF8, 0x00 + .byte 0x87, 0x4F, 0xE2, 0x00, 0xB9, 0x00, 0x26, 0x00, 0x15, 0x01, 0xAE, 0x00, 0xA4, 0x00, 0xD4, 0x00 + .byte 0xAC, 0x01, 0x82, 0x01, 0x85, 0x01, 0x74, 0x01, 0x7E, 0x01, 0x89, 0x4F, 0x4F, 0x01, 0xBF, 0x00 + .byte 0xCD, 0x00, 0x32, 0x00, 0x75, 0x00, 0x8B, 0x4F, 0x5A, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00 + .byte 0x19, 0x01, 0x9D, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x44, 0x01, 0x8E, 0x4F, 0x1F, 0x01, 0x2C, 0x01 + .byte 0x22, 0x00, 0x30, 0x00, 0x70, 0x00, 0x6D, 0x00, 0x88, 0x01, 0x91, 0x4F, 0xDE, 0x00, 0x82, 0x00 + .byte 0x5A, 0x01, 0x85, 0x00, 0xD6, 0x00, 0x9D, 0x00, 0x91, 0x01, 0xAD, 0x00, 0xBD, 0x00, 0x92, 0x4F + .byte 0x96, 0x00, 0x30, 0x00, 0x5A, 0x01, 0x2C, 0x01, 0xBD, 0x01, 0x88, 0x01, 0x93, 0x4F, 0x38, 0x00 + .byte 0x25, 0x00, 0x52, 0x00, 0xEF, 0x00, 0x5D, 0x01, 0xA8, 0x01, 0xA5, 0x01, 0x97, 0x01, 0xA3, 0x4F + .byte 0x84, 0x01, 0x4A, 0x00, 0x41, 0x01, 0x22, 0x00, 0x26, 0x00, 0x48, 0x01, 0x92, 0x01, 0x25, 0x00 + .byte 0x85, 0x00, 0x14, 0x01, 0xA6, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x18, 0x00, 0xE3, 0x00, 0x01, 0x01 + .byte 0x74, 0x00, 0x0E, 0x01, 0xFC, 0x00, 0x2B, 0x01, 0x44, 0x00, 0xA9, 0x4F, 0xCA, 0x01, 0x30, 0x00 + .byte 0x19, 0x01, 0x2C, 0x01, 0xBD, 0x00, 0xAD, 0x00, 0xAF, 0x00, 0x61, 0x00, 0x88, 0x01, 0x38, 0x00 + .byte 0xAC, 0x4F, 0x29, 0x01, 0x1F, 0x00, 0xE4, 0x00, 0x36, 0x01, 0x1C, 0x00, 0xC1, 0x00, 0x26, 0x00 + .byte 0xAF, 0x4F, 0x62, 0x00, 0x5A, 0x01, 0x26, 0x00, 0x9A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x3C, 0x01 + .byte 0x91, 0x01, 0xB3, 0x4F, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x62, 0x00, 0x50, 0x01, 0x24, 0x00 + .byte 0xB6, 0x4F, 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00 + .byte 0xB5, 0x01, 0x46, 0x01, 0xB8, 0x4F, 0xF2, 0x00, 0x25, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x15, 0x00 + .byte 0x17, 0x00, 0x12, 0x00, 0x67, 0x01, 0xBA, 0x4F, 0x1D, 0x00, 0xB8, 0x00, 0x74, 0x00, 0x26, 0x00 + .byte 0x5E, 0x01, 0x22, 0x00, 0x67, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xC1, 0x4F, 0x57, 0x01, 0x2C, 0x00 + .byte 0x39, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x04, 0x01, 0xAF, 0x00, 0xC2, 0x4F, 0xBD, 0x00, 0x1D, 0x00 + .byte 0x9A, 0x00, 0xA3, 0x00, 0x3C, 0x01, 0x03, 0x00, 0xD2, 0x00, 0xE2, 0x00, 0xC4, 0x4F, 0x4B, 0x00 + .byte 0xE6, 0x00, 0x41, 0x01, 0x0B, 0x01, 0x40, 0x01, 0x38, 0x01, 0xC6, 0x4F, 0x44, 0x00, 0xF3, 0x00 + .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x19, 0x01, 0x06, 0x01, 0xAE, 0x00, 0x85, 0x00, 0x5A, 0x00 + .byte 0xC9, 0x4F, 0x06, 0x01, 0x22, 0x00, 0xC2, 0x00, 0x32, 0x00, 0x72, 0x00, 0x5F, 0x00, 0xCB, 0x4F + .byte 0x39, 0x01, 0xFC, 0x00, 0xE3, 0x00, 0xBA, 0x00, 0xCA, 0x01, 0xD5, 0x00, 0x43, 0x00, 0x47, 0x01 + .byte 0x9F, 0x01, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0xCF, 0x4F, 0x2C, 0x00, 0x27, 0x00, 0x62, 0x00 + .byte 0x1C, 0x00, 0x39, 0x01, 0x74, 0x01, 0xD1, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00 + .byte 0x11, 0x01, 0xF8, 0x00, 0x69, 0x00, 0xD2, 0x4F, 0xE4, 0x00, 0x2B, 0x00, 0x7B, 0x00, 0x26, 0x00 + .byte 0xF2, 0x00, 0xB8, 0x00, 0x36, 0x01, 0x82, 0x01, 0xD6, 0x4F, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00 + .byte 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xD7, 0x4F, 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00 + .byte 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01, 0x2A, 0x01, 0x69, 0x01, 0xCC, 0x00, 0xD8, 0x4F + .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01 + .byte 0x83, 0x01, 0xD9, 0x4F, 0xE3, 0x00, 0x65, 0x00, 0x61, 0x00, 0xA1, 0x01, 0x30, 0x00, 0xDA, 0x4F + .byte 0xC2, 0x00, 0xDC, 0x00, 0x6C, 0x00, 0x1E, 0x01, 0x20, 0x01, 0xA9, 0x01, 0xDB, 0x4F, 0xE1, 0x00 + .byte 0xC8, 0x00, 0xEF, 0x00, 0xB8, 0x00, 0x26, 0x00, 0x25, 0x00, 0xE8, 0x00, 0x48, 0x01, 0x22, 0x00 + .byte 0xBA, 0x01, 0xDE, 0x4F, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0xA4, 0x00, 0x12, 0x00 + .byte 0xE4, 0x00, 0xAC, 0x01, 0xDF, 0x4F, 0xEE, 0x00, 0xC5, 0x00, 0x2C, 0x00, 0xAA, 0x00, 0x47, 0x01 + .byte 0x88, 0x00, 0x61, 0x00, 0x9A, 0x01, 0xF2, 0x00, 0x43, 0x00, 0x4E, 0x01, 0x2B, 0x01, 0xA2, 0x01 + .byte 0xE1, 0x4F, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0xAE, 0x00, 0x2F, 0x01, 0x22, 0x00, 0x48, 0x01 + .byte 0xE3, 0x4F, 0xB9, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xA3, 0x00, 0x6D, 0x00, 0x12, 0x00, 0x61, 0x00 + .byte 0xE4, 0x00, 0x90, 0x01, 0xE5, 0x4F, 0x7E, 0x01, 0x6C, 0x01, 0xDF, 0x00, 0x1D, 0x00, 0x9A, 0x01 + .byte 0x60, 0x00, 0xFC, 0x00, 0x66, 0x01, 0x09, 0x01, 0xEE, 0x00, 0xA2, 0x01, 0xE7, 0x4F, 0x4F, 0x00 + .byte 0x4E, 0x00, 0x4B, 0x00, 0x15, 0x00, 0xEB, 0x00, 0x59, 0x01, 0x49, 0x00, 0x84, 0x01, 0xE8, 0x4F + .byte 0xBA, 0x00, 0xCC, 0x00, 0xAF, 0x00, 0x91, 0x01, 0x96, 0x00, 0x3C, 0x00, 0x41, 0x01, 0x61, 0x00 + .byte 0xEA, 0x4F, 0xEF, 0x00, 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00 + .byte 0x5A, 0x01, 0x96, 0x00, 0x44, 0x01, 0xEB, 0x4F, 0x49, 0x00, 0x59, 0x01, 0x92, 0x01, 0x4A, 0x00 + .byte 0x26, 0x00, 0x36, 0x00, 0x17, 0x00, 0xFF, 0xFF + + .section .bss + + .global UNK05_021FD680 +UNK05_021FD680: ; 0x021FD680 + .space 0x4 diff --git a/arm9/modules/05/asm/mod05_021ED9C0.s b/arm9/modules/05/asm/mod05_021ED9C0.s new file mode 100644 index 00000000..962a3c63 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021ED9C0.s @@ -0,0 +1,233 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + + thumb_func_start MOD05_021ED9C0 +MOD05_021ED9C0: ; 0x021ED9C0 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021ED9EC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED9DC +MOD05_021ED9DC: ; 0x021ED9DC + push {r4, lr} + add r4, r0, #0 + bl MOD05_021EDA28 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021ED9EC +MOD05_021ED9EC: ; 0x021ED9EC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #4 + mov r2, #0x57 + bl MOD05_021E5078 + ldr r0, [r4] + mov r1, #3 + mov r2, #6 + mov r3, #1 + bl MOD05_021E50D4 + mov r0, #3 + str r0, [sp] + mov r3, #0 + mov r1, #4 + ldr r0, _021EDA24 ; =UNK05_021F8A48 + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + bl MOD05_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_021EDA24: .word UNK05_021F8A48 + + thumb_func_start MOD05_021EDA28 +MOD05_021EDA28: ; 0x021EDA28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #4 + bl MOD05_021E50A0 + ldr r0, [r4] + mov r1, #3 + bl MOD05_021E5114 + ldr r0, [r4] + mov r1, #4 + bl MOD05_021E506C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDA48 +MOD05_021EDA48: ; 0x021EDA48 + push {r4, r5, lr} + sub sp, #0x24 + add r5, r0, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x18 + str r4, [sp, #0x18] + bl MOD05_021E4C08 + str r0, [sp, #0x1c] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r5, [sp, #0x20] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _021EDA94 ; =UNK05_021F8A34 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_021EDA94: .word UNK05_021F8A34 + + thumb_func_start MOD05_021EDA98 +MOD05_021EDA98: ; 0x021EDA98 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x14] + mov r1, #4 + add r2, sp, #0 + bl MOD05_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDAE8 +MOD05_021EDAE8: ; 0x021EDAE8 + ldr r3, _021EDAF0 ; =FUN_0201F744 + ldr r0, [r1, #0x20] + bx r3 + nop +_021EDAF0: .word FUN_0201F744 + + thumb_func_start MOD05_021EDAF4 +MOD05_021EDAF4: ; 0x021EDAF4 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldr r0, [r2, #0x1c] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_020582A8 + cmp r0, #0 + bne _021EDB0E + add r0, r4, #0 + bl MOD05_021E4DE4 +_021EDB0E: + pop {r4, pc} + + thumb_func_start MOD05_021EDB10 +MOD05_021EDB10: ; 0x021EDB10 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r4, [r5, #0x1c] + ldr r1, [r5, #4] + add r6, r0, #0 + ldr r2, [r5, #8] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021EDB32 + add r0, r6, #0 + bl MOD05_021E4DE4 + add sp, #0x18 + pop {r4, r5, r6, pc} +_021EDB32: + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r1, r1, r0 + mov r0, #3 + lsl r0, r0, #0xe + str r1, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x20] + add r1, sp, #0xc + bl FUN_0201F7C8 + add sp, #0x18 + pop {r4, r5, r6, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F8A34 +UNK05_021F8A34: ; 0x021F8A34 + .word 0x00000024, MOD05_021EDA98, MOD05_021EDAE8, MOD05_021EDAF4 + .word MOD05_021EDB10 + + .global UNK05_021F8A48 +UNK05_021F8A48: ; 0x021F8A48 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021EDB70.s b/arm9/modules/05/asm/mod05_021EDB70.s new file mode 100644 index 00000000..ec46fb91 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021EDB70.s @@ -0,0 +1,390 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021EDB70 +MOD05_021EDB70: ; 0x021EDB70 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021EDB9C + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDB8C +MOD05_021EDB8C: ; 0x021EDB8C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021EDBBC + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021EDB9C +MOD05_021EDB9C: ; 0x021EDB9C + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x50 + mov r2, #0 + add r3, r3, #4 + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021EDBBC +MOD05_021EDBBC: ; 0x021EDBBC + ldr r3, _021EDBC4 ; =MOD05_021E4C00 + ldr r0, [r0, #0x5c] + bx r3 + nop +_021EDBC4: .word MOD05_021E4C00 + + thumb_func_start MOD05_021EDBC8 +MOD05_021EDBC8: ; 0x021EDBC8 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r2, sp, #8 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_020553A0 + add r4, r0, #0 + bl MOD05_021E4C24 + add r6, r0, #0 + mov r1, #0x10 + str r6, [sp, #0x14] + bl MOD05_021E4C08 + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #2 + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _021EDC10 ; =UNK05_021F8A6C + add r0, r6, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_021EDC10: .word UNK05_021F8A6C + + thumb_func_start MOD05_021EDC14 +MOD05_021EDC14: ; 0x021EDC14 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_0206475C + add r4, r0, #0 + add r3, r4, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #8] + bl FUN_020553A0 + mov r1, #0 + mvn r1, r1 + add r4, r0, #0 + str r1, [r5, #4] + bl FUN_02058448 + str r0, [r5, #0x14] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EDC4C +MOD05_021EDC4C: ; 0x021EDC4C + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EDC50 +MOD05_021EDC50: ; 0x021EDC50 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + str r0, [sp, #4] + bl FUN_020553A0 + ldr r1, [r5, #0x14] + ldr r2, [r5, #0x18] + add r6, r0, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021EDC78 + ldr r0, [sp] + bl MOD05_021E4DE4 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021EDC78: + ldr r7, [r5, #4] + add r0, r6, #0 + bl FUN_02058720 + strb r0, [r5, #8] + ldrb r0, [r5, #8] + bl MOD05_021EDDF4 + str r0, [r5, #4] + mov r0, #0 + str r0, [r5] + ldr r4, [r5, #4] + sub r0, r0, #1 + cmp r4, r0 + beq _021EDCA0 + ldr r0, [sp, #4] + bl FUN_020552F8 + cmp r4, r0 + beq _021EDCAE +_021EDCA0: + mov r0, #0 + str r0, [r5, #0x1c] + str r0, [r5, #0x20] + mov r0, #1 + add sp, #0x24 + str r0, [r5] + pop {r4, r5, r6, r7, pc} +_021EDCAE: + cmp r7, r4 + beq _021EDCB8 + mov r0, #0 + str r0, [r5, #0x1c] + str r0, [r5, #0x20] +_021EDCB8: + add r0, r6, #0 + bl FUN_02058B2C + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02059BF4 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + str r0, [sp, #8] + ldr r0, [r5, #4] + bl FUN_02059C00 + add r2, r0, #0 + ldr r1, [sp, #8] + add r0, r4, r7 + add r1, r1, r2 + add r2, sp, #0xc + bl FUN_02059E60 + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058B5C + ldr r0, [sp, #0x1c] + add r1, sp, #0xc + str r0, [sp, #0x10] + ldr r0, [sp] + bl FUN_0206476C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EDCFC +MOD05_021EDCFC: ; 0x021EDCFC + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _021EDDE2 + mov r0, #0 + ldr r1, [r4, #4] + mvn r0, r0 + cmp r1, r0 + beq _021EDDE2 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0xf + ble _021EDD34 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x20] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + str r0, [r4, #0x20] +_021EDD34: + ldr r3, _021EDDE8 ; =UNK05_021F8A60 + add r2, sp, #0x24 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021EDDEC ; =UNK05_021F8A80 + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_021EDD46: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021EDD46 + ldr r0, [r5] + mov r2, #0x18 + str r0, [r3] + ldr r1, [r4, #4] + ldr r3, _021EDDF0 ; =UNK05_021F8AA4 + add r0, r1, #0 + mul r0, r2 + add r0, r3, r0 + ldr r5, [r4, #0x20] + mov r3, #0xc + mul r3, r5 + add r5, r0, r3 + cmp r1, #3 + bhi _021EDDB4 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EDD76: ; jump table + .short _021EDD7E - _021EDD76 - 2 ; case 0 + .short _021EDD8C - _021EDD76 - 2 ; case 1 + .short _021EDD9A - _021EDD76 - 2 ; case 2 + .short _021EDDA8 - _021EDD76 - 2 ; case 3 +_021EDD7E: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDD8C: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDD9A: + mov r1, #0 + add r0, sp, #0 + add r2, #0xf6 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDDA8: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_021EDDB4: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r1, [sp, #0x30] + ldr r0, [r5] + add r2, sp, #0 + add r0, r1, r0 + str r0, [sp, #0x30] + ldr r1, [sp, #0x34] + ldr r0, [r5, #4] + add r3, sp, #0x24 + add r0, r1, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x38] + ldr r0, [r5, #8] + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x28] + add r1, sp, #0x30 + add r0, r0, #4 + bl FUN_0201B26C +_021EDDE2: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_021EDDE8: .word UNK05_021F8A60 +_021EDDEC: .word UNK05_021F8A80 +_021EDDF0: .word UNK05_021F8AA4 + + thumb_func_start MOD05_021EDDF4 +MOD05_021EDDF4: ; 0x021EDDF4 + push {r4, lr} + add r4, r0, #0 + bl FUN_020547D4 + cmp r0, #0 + beq _021EDE04 + mov r0, #0 + pop {r4, pc} +_021EDE04: + add r0, r4, #0 + bl FUN_020547E0 + cmp r0, #0 + beq _021EDE12 + mov r0, #1 + pop {r4, pc} +_021EDE12: + add r0, r4, #0 + bl FUN_020547C8 + cmp r0, #0 + beq _021EDE20 + mov r0, #2 + pop {r4, pc} +_021EDE20: + add r0, r4, #0 + bl FUN_020547BC + cmp r0, #0 + beq _021EDE2E + mov r0, #3 + pop {r4, pc} +_021EDE2E: + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + + .section .rodata + + .global UNK05_021F8A60 +UNK05_021F8A60: ; 0x021F8A60 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021F8A6C +UNK05_021F8A6C: ; 0x021F8A6C + .word 0x00000030, MOD05_021EDC14, MOD05_021EDC4C, MOD05_021EDC50 + .word MOD05_021EDCFC + + .global UNK05_021F8A80 +UNK05_021F8A80: ; 0x021F8A80 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021F8AA4 +UNK05_021F8AA4: ; 0x021F8AA4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021EDE34.s b/arm9/modules/05/asm/mod05_021EDE34.s new file mode 100644 index 00000000..1c80c321 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021EDE34.s @@ -0,0 +1,3816 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021EDE34 +MOD05_021EDE34: ; 0x021EDE34 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r1, #0 + add r1, r6, #0 + bl _s32_div_f + add r4, r1, #0 + add r0, r5, #0 + add r1, r6, #0 + bl _s32_div_f + cmp r4, r1 + bne _021EDE52 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EDE52: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDE58 +MOD05_021EDE58: ; 0x021EDE58 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r1, #0 + add r1, r6, #0 + bl _s32_div_f + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl _s32_div_f + cmp r4, r0 + bne _021EDE76 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EDE76: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDE7C +MOD05_021EDE7C: ; 0x021EDE7C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x30 + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _021EDE94 + ldr r0, [r1, #0xc] + bl MOD05_021EF8F8 +_021EDE94: + add r1, r5, r4 + ldr r0, [r1, #0x18] + cmp r0, #0 + beq _021EDEA2 + ldr r0, [r1, #0x10] + bl MOD05_021F4444 +_021EDEA2: + mov r1, #1 + add r0, r5, r4 + str r1, [r0, #0x28] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDEAC +MOD05_021EDEAC: ; 0x021EDEAC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021EDEBC + ldr r0, [r4, #8] + bl MOD05_021EF8F8 +_021EDEBC: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EDEC8 + ldr r0, [r4, #0xc] + bl MOD05_021F4444 +_021EDEC8: + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD05_021EDED0 +MOD05_021EDED0: ; 0x021EDED0 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r7, r2, #5 + asr r2, r1, #4 + lsr r2, r2, #0x1b + add r2, r1, r2 + asr r6, r2, #5 + ldr r2, [sp, #0x18] + str r3, [sp] + ldr r4, [sp, #0x1c] + bl MOD05_021EEE08 + ldr r1, [sp, #0x18] + bl MOD05_021EF620 + add r1, r6, #0 + mul r1, r5 + add r1, r7, r1 + cmp r0, #3 + bhi _021EDFB6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EDF0A: ; jump table + .short _021EDF12 - _021EDF0A - 2 ; case 0 + .short _021EDF38 - _021EDF0A - 2 ; case 1 + .short _021EDF60 - _021EDF0A - 2 ; case 2 + .short _021EDF8A - _021EDF0A - 2 ; case 3 +_021EDF12: + sub r2, r1, r5 + str r1, [r4, #0xc] + sub r0, r2, #1 + str r0, [r4] + str r2, [r4, #4] + sub r0, r1, #1 + str r0, [r4, #8] + sub r0, r7, #1 + bpl _021EDF2C + mov r0, #0 + mvn r0, r0 + str r0, [r4] + str r0, [r4, #8] +_021EDF2C: + sub r0, r6, #1 + bpl _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_021EDF38: + str r1, [r4, #8] + sub r0, r1, r5 + str r0, [r4] + add r0, r0, #1 + str r0, [r4, #4] + add r0, r1, #1 + str r0, [r4, #0xc] + add r0, r7, #1 + cmp r0, r5 + blt _021EDF54 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + str r0, [r4, #0xc] +_021EDF54: + sub r0, r6, #1 + bpl _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021EDF60: + str r1, [r4, #4] + sub r0, r1, #1 + add r1, r1, r5 + str r0, [r4] + sub r0, r1, #1 + str r0, [r4, #8] + str r1, [r4, #0xc] + sub r0, r7, #1 + bpl _021EDF7A + mov r0, #0 + mvn r0, r0 + str r0, [r4] + str r0, [r4, #8] +_021EDF7A: + ldr r0, [sp] + add r1, r6, #1 + cmp r1, r0 + ble _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_021EDF8A: + str r1, [r4] + add r0, r1, #1 + str r0, [r4, #4] + add r0, r1, r5 + str r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #0xc] + add r0, r7, #1 + cmp r0, r5 + blt _021EDFA6 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + str r0, [r4, #0xc] +_021EDFA6: + ldr r0, [sp] + add r1, r6, #1 + cmp r1, r0 + ble _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021EDFB6: + bl GF_AssertFail +_021EDFBA: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EDFBC +MOD05_021EDFBC: ; 0x021EDFBC + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + sub r7, r6, #1 +_021EDFC4: + ldr r1, _021EE03C ; =0x0000086C + mov r0, #4 + bl AllocFromHeap + lsl r4, r6, #2 + add r1, r5, r4 + add r1, #0x90 + str r0, [r1] + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + ldr r0, _021EE040 ; =0x00000864 + mov r1, #0 + str r1, [r2, r0] + add r2, r5, r4 + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE044 ; =0x00000854 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C60 + add r2, r5, r4 + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE048 ; =0x00000858 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C68 + mov r0, #4 + bl MOD05_021E7C00 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EE04C ; =0x00000868 + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + str r7, [r1, r0] + add r1, r5, r4 + add r1, #0x90 + mov r2, #2 + ldr r1, [r1] + add r0, r7, #0 + lsl r2, r2, #0xa + bl MIi_CpuClearFast + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EDFC4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE03C: .word 0x0000086C +_021EE040: .word 0x00000864 +_021EE044: .word 0x00000854 +_021EE048: .word 0x00000858 +_021EE04C: .word 0x00000868 + + thumb_func_start MOD05_021EE050 +MOD05_021EE050: ; 0x021EE050 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r6, #0 +_021EE058: + ldr r1, _021EE0B0 ; =0x0000086C + mov r0, #4 + bl AllocFromHeap + lsl r4, r6, #2 + add r1, r5, r4 + add r1, #0x90 + str r0, [r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EE0B4 ; =0x00000864 + add r2, r5, r4 + str r7, [r1, r0] + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE0B8 ; =0x00000854 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C60 + mov r0, #4 + bl MOD05_021E7C00 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EE0BC ; =0x00000868 + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + mov r1, #0 + mov r0, #0x86 + mvn r1, r1 + lsl r0, r0, #4 + str r1, [r2, r0] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EE058 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE0B0: .word 0x0000086C +_021EE0B4: .word 0x00000864 +_021EE0B8: .word 0x00000854 +_021EE0BC: .word 0x00000868 + + thumb_func_start MOD05_021EE0C0 +MOD05_021EE0C0: ; 0x021EE0C0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + cmp r6, #0 + beq _021EE0E6 + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeapAtEnd + add r4, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + mov r2, #0 + mov r3, #0x10 + str r4, [sp] + bl NARC_ReadFromMember + b _021EE0FC +_021EE0E6: + bl GF_AssertFail + mov r0, #0x10 + str r0, [sp] + mov r0, #0x43 + add r1, r7, #0 + mov r2, #4 + mov r3, #0 + bl AllocAtEndAndReadFromNarcMemberByIdPair + add r4, r0, #0 +_021EE0FC: + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #0xc] + ldr r0, [r4, #8] + str r0, [r5, #4] + ldr r0, [r4, #0xc] + str r0, [r5, #8] + add r0, r4, #0 + bl FreeToHeap + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EE114 +MOD05_021EE114: ; 0x021EE114 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r4, [sp, #0x40] + lsl r7, r0, #2 + add r0, r4, r7 + ldr r0, [r0, #0x18] + str r1, [sp, #0xc] + ldr r5, [sp, #0x3c] + cmp r0, #0 + blt _021EE1D0 + ldr r1, [sp, #0x38] + mul r1, r3 + cmp r0, r1 + bge _021EE1D0 + add r1, r2, #0 + bl GetMapData + add r1, r0, #0 + ldr r0, _021EE1D4 ; =0x0000FFFF + cmp r1, r0 + beq _021EE1D0 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0x10 + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x10] + ldr r2, [r4, r7] + bl NARC_ReadFile + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE1D8 ; =0x00000868 + str r0, [sp] + add r0, r5, #0 + ldr r6, [r4, r7] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0xc] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [sp, #0xc] + ldr r6, [r4, r7] + bl MOD05_021F4C74 + ldr r3, _021EE1DC ; =0x00000864 + str r0, [sp] + add r0, r6, r3 + add r2, r3, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xf8 + sub r2, #0x64 + sub r3, #0x10 + ldr r0, [r0] + ldr r1, [sp, #0x14] + add r2, r6, r2 + add r3, r6, r3 + bl MOD05_021EFA00 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + add r3, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x14] + ldr r2, [r4, r7] + ldr r6, _021EE1E0 ; =0x00000858 + add r5, #0xf8 + add r0, r2, r6 + str r0, [sp] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + add r5, r6, #4 + ldr r1, [sp, #0x18] + ldr r2, [r2, r5] + add r3, #0x14 + bl MOD05_021F43E4 + str r0, [r4, #0xc] +_021EE1D0: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE1D4: .word 0x0000FFFF +_021EE1D8: .word 0x00000868 +_021EE1DC: .word 0x00000864 +_021EE1E0: .word 0x00000858 + + thumb_func_start MOD05_021EE1E4 +MOD05_021EE1E4: ; 0x021EE1E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x30 + str r1, [sp, #0xc] + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _021EE294 ; =0x00000828 + lsl r7, r0, #2 + add r3, sp + ldr r4, [r3, #0x18] + ldr r5, [r3, #0x14] + add r0, r4, r7 + ldr r0, [r0, #0x18] + cmp r0, #0 + blt _021EE286 + ldr r3, [r3, #0x10] + mul r3, r2 + cmp r0, r3 + bge _021EE286 + bl GetMapData + add r1, r0, #0 + ldr r0, _021EE298 ; =0x0000FFFF + cmp r1, r0 + beq _021EE286 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0x10 + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + mov r1, #2 + ldr r0, [r0] + lsl r1, r1, #0xa + add r2, sp, #0x20 + bl NARC_ReadFile + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE29C ; =0x00000868 + str r0, [sp] + add r0, r5, #0 + ldr r6, [r4, r7] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0xc] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [sp, #0xc] + ldr r6, [r4, r7] + bl MOD05_021F4C74 + ldr r3, _021EE2A0 ; =0x00000864 + str r0, [sp] + add r0, r6, r3 + add r2, r3, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #8] + add r5, #0xf8 + sub r2, #0x64 + sub r3, #0x10 + ldr r0, [r5] + ldr r1, [sp, #0x14] + add r2, r6, r2 + add r3, r6, r3 + bl MOD05_021EFA00 + str r0, [r4, #8] +_021EE286: + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EE294: .word 0x00000828 +_021EE298: .word 0x0000FFFF +_021EE29C: .word 0x00000868 +_021EE2A0: .word 0x00000864 + + thumb_func_start MOD05_021EE2A4 +MOD05_021EE2A4: ; 0x021EE2A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r7, [sp, #0x3c] + add r1, r0, #0 + bmi _021EE37A + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x34] + add r5, r2, #0 + mul r5, r1 + add r1, r0, #0 + cmp r1, r5 + bge _021EE37A + add r1, r3, #0 + bl GetMapData + add r1, r0, #0 + ldr r0, _021EE380 ; =0x0000FFFF + cmp r1, r0 + beq _021EE37A + add r0, r7, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0xc + bl MOD05_021EE0C0 + lsl r5, r4, #2 + add r4, r7, #0 + add r0, r7, #0 + add r4, #0x90 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0xc] + ldr r2, [r4, r5] + bl NARC_ReadFile + add r0, r7, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE384 ; =0x00000868 + str r0, [sp] + add r0, r7, #0 + ldr r6, [r4, r5] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #8] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r6, [r4, r5] + ldr r0, [sp, #8] + bl MOD05_021F4C74 + str r0, [sp] + add r0, r7, #0 + mov r3, #2 + add r0, #0xf8 + lsl r3, r3, #0xa + add r2, r6, r3 + add r3, #0x54 + ldr r0, [r0] + ldr r1, [sp, #0x10] + add r3, r6, r3 + bl MOD05_021EFA40 + ldr r1, [sp, #0x38] + cmp r1, #1 + bne _021EE336 + bl MOD05_021DB5EC +_021EE336: + ldr r6, _021EE388 ; =0x00000864 + ldr r0, [r4, r5] + mov r1, #1 + str r1, [r0, r6] + add r2, r6, #0 + add r0, r7, #0 + add r0, #0xf8 + ldr r3, [r4, r5] + sub r2, #8 + sub r6, #0xc + ldr r2, [r3, r2] + ldr r0, [r0] + ldr r1, [sp, #0x14] + ldr r3, [r3, r6] + bl MOD05_021F4344 + mov r2, #0x86 + ldr r1, [r4, r5] + ldr r0, [sp, #4] + lsl r2, r2, #4 + str r0, [r1, r2] + add r0, r7, #0 + add r0, #0xfc + ldr r3, [r0] + cmp r3, #0 + beq _021EE37A + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r4, r5] + add r2, #8 + ldr r0, [r7, r0] + ldr r1, [sp, #4] + ldr r2, [r4, r2] + blx r3 +_021EE37A: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021EE380: .word 0x0000FFFF +_021EE384: .word 0x00000868 +_021EE388: .word 0x00000864 + + thumb_func_start MOD05_021EE38C +MOD05_021EE38C: ; 0x021EE38C + push {r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x2c + str r2, [sp, #8] + ldr r2, _021EE44C ; =0x00000820 + add r4, r1, #0 + add r2, sp + str r0, [sp, #4] + ldr r5, [r2, #0x1c] + add r1, r0, #0 + bmi _021EE43E + ldr r6, [r2, #0x10] + ldr r1, [r2, #0x14] + add r2, r6, #0 + mul r2, r1 + add r1, r0, #0 + cmp r1, r2 + bge _021EE43E + add r1, r3, #0 + bl GetMapData + add r1, r0, #0 + ldr r0, _021EE450 ; =0x0000FFFF + cmp r1, r0 + beq _021EE43E + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0xc + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + mov r1, #2 + ldr r0, [r0] + lsl r1, r1, #0xa + add r2, sp, #0x1c + bl NARC_ReadFile + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + add r7, r5, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xf8 + lsl r4, r4, #2 + add r7, #0x90 + ldr r6, [r7, r4] + ldr r3, _021EE454 ; =0x00000868 + ldr r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #8] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [sp, #8] + ldr r6, [r7, r4] + bl MOD05_021F4C74 + mov r3, #2 + str r0, [sp] + add r5, #0xf8 + lsl r3, r3, #0xa + add r2, r6, r3 + add r3, #0x54 + ldr r0, [r5] + ldr r1, [sp, #0x10] + add r3, r6, r3 + bl MOD05_021EFA40 + ldr r1, _021EE44C ; =0x00000820 + add r1, sp + ldr r1, [r1, #0x18] + cmp r1, #1 + bne _021EE42E + bl MOD05_021DB5EC +_021EE42E: + ldr r1, [r7, r4] + ldr r0, _021EE458 ; =0x00000864 + mov r2, #1 + str r2, [r1, r0] + sub r1, r0, #4 + ldr r2, [r7, r4] + ldr r0, [sp, #4] + str r0, [r2, r1] +_021EE43E: + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021EE44C: .word 0x00000820 +_021EE450: .word 0x0000FFFF +_021EE454: .word 0x00000868 +_021EE458: .word 0x00000864 + + thumb_func_start MOD05_021EE45C +MOD05_021EE45C: ; 0x021EE45C + ldr r1, [r0] + cmp r1, #0 + bne _021EE46C + ldr r0, [r0, #4] + cmp r0, #0 + bne _021EE46C + mov r0, #1 + bx lr +_021EE46C: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021EE470 +MOD05_021EE470: ; 0x021EE470 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + str r3, [sp] + add r0, sp, #0x10 + add r7, r1, #0 + ldrb r1, [r0, #0x14] + mov r0, #0x30 + str r2, [sp, #8] + add r5, r1, #0 + mul r5, r0 + add r0, r4, #0 + str r0, [sp, #4] + add r0, #0x2c + str r0, [sp, #4] + ldr r0, [r0, r5] + cmp r0, #0 + beq _021EE498 + bl GF_AssertFail +_021EE498: + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, r5] + add r0, sp, #0x10 + add r5, r4, r5 + add r1, r5, #0 + ldrb r2, [r0, #0x18] + add r1, #0x30 + add r3, r4, #0 + strb r2, [r1] + add r2, r5, #0 + ldr r1, [sp, #8] + str r7, [r5, #0x1c] + str r1, [r5, #0x20] + ldr r1, [sp] + add r2, #0x24 + strb r1, [r2] + add r1, r5, #0 + ldrb r0, [r0, #0x10] + add r1, #0x25 + add r3, #0x90 + strb r0, [r1] + ldr r1, [sp] + mov r6, #0 + lsl r2, r1, #2 + ldr r1, [r3, r2] + str r1, [r5, #4] + lsl r1, r0, #2 + ldr r0, [r3, r1] + str r0, [r5, #8] + add r0, r5, #0 + add r0, #0x26 + strb r6, [r0] + add r0, r6, #0 + str r0, [r5, #0x28] + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EE4F0 + add r5, r4, #0 + add r5, #0xb4 + add r0, r6, #0 + str r0, [r5] +_021EE4F0: + ldr r0, [r3, r2] + mov r2, #0x86 + lsl r2, r2, #4 + str r7, [r0, r2] + ldr r1, [r3, r1] + ldr r0, [sp, #8] + str r0, [r1, r2] + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r4, #0 + add r0, #0xa1 + ldrb r0, [r0] + add r4, #0xa1 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + strb r0, [r4] + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EE52C +MOD05_021EE52C: ; 0x021EE52C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + add r0, #0xa2 + ldrb r1, [r0] + mov r0, #0x30 + add r4, r5, #0 + add r2, r5, #4 + mul r0, r1 + add r4, #0xcc + add r6, r2, r0 + ldr r0, [r4, #0x20] + cmp r0, #1 + bne _021EE572 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021EE5D0 + ldr r0, [r4, #0x14] + ldr r1, [r0] + ldr r0, [r4, #0x10] + ldr r0, [r0] + cmp r1, r0 + ble _021EE560 + bl GF_AssertFail +_021EE560: + ldr r0, [r4, #0x10] + ldr r1, [r0] + ldr r0, [r4, #0x14] + ldr r0, [r0] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0x10 + cmp r1, r0 + bge _021EE574 +_021EE572: + b _021EE6B0 +_021EE574: + ldr r1, [r4, #0xc] + add r2, sp, #0x10 + ldr r0, [r1] + ldr r1, [r1, #8] + add r3, sp, #0xc + bl MOD05_021EF4F8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r2, r5, #0 + bl MOD05_021EF2AC + ldr r3, [r4, #0xc] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE5B2 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + bne _021EE692 +_021EE5B2: + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE5C6 + bl GF_AssertFail +_021EE5C6: + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + b _021EE6B0 +_021EE5D0: + ldr r2, [r4, #0xc] + ldr r3, [r4] + ldr r7, [r2] + cmp r3, r7 + beq _021EE5E8 + ldr r1, [r4, #8] + ldr r0, [r2, #8] + cmp r1, r0 + beq _021EE5E8 + bl GF_AssertFail + b _021EE6B0 +_021EE5E8: + cmp r3, r7 + bne _021EE5F4 + ldr r1, [r4, #8] + ldr r0, [r2, #8] + cmp r1, r0 + beq _021EE6B0 +_021EE5F4: + mov r3, #1 + str r3, [r4, #0x18] + ldr r2, [r4, #0xc] + ldr r0, [r4] + ldr r1, [r2] + cmp r0, r1 + beq _021EE648 + cmp r0, r1 + ble _021EE612 + str r4, [r4, #0x10] + ldr r0, [r4, #0xc] + str r0, [r4, #0x14] + mov r0, #3 + strb r0, [r4, #0x1c] + b _021EE618 +_021EE612: + str r2, [r4, #0x10] + str r4, [r4, #0x14] + strb r3, [r4, #0x1c] +_021EE618: + ldr r0, [r4] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE632 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + bne _021EE692 +_021EE632: + ldr r0, [r4] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE6A8 + bl GF_AssertFail + b _021EE6A8 +_021EE648: + add r1, r5, #0 + add r1, #0xd8 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xd4 + ldr r0, [r0] + ldr r1, [r1, #8] + cmp r0, r1 + ble _021EE66A + add r0, r4, #0 + add r0, #8 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + add r0, #8 + str r0, [r4, #0x14] + mov r0, #4 + b _021EE676 +_021EE66A: + add r2, #8 + add r0, r4, #0 + str r2, [r4, #0x10] + add r0, #8 + str r0, [r4, #0x14] + mov r0, #2 +_021EE676: + strb r0, [r4, #0x1c] + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE694 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + beq _021EE694 +_021EE692: + b _021EE8C2 +_021EE694: + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE6A8 + bl GF_AssertFail +_021EE6A8: + ldrb r0, [r4, #0x1c] + add r1, r5, #0 + bl MOD05_021EF458 +_021EE6B0: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + cmp r0, #3 + bls _021EE6BC + b _021EE818 +_021EE6BC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE6C8: ; jump table + .short _021EE6D0 - _021EE6C8 - 2 ; case 0 + .short _021EE726 - _021EE6C8 - 2 ; case 1 + .short _021EE818 - _021EE6C8 - 2 ; case 2 + .short _021EE804 - _021EE6C8 - 2 ; case 3 +_021EE6D0: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + add r1, r6, r0 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0x80 + ldr r1, [r1] + cmp r1, #1 + beq _021EE710 + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r4, r5, #0 + str r1, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + add r4, #0xf4 + add r1, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + ldr r4, [r4] + add r1, #0xb8 + add r2, #0xbc + add r3, #0xc0 + ldr r1, [r1] + ldr r2, [r2] + ldr r3, [r3] + ldr r4, [r4, #4] + blx r4 +_021EE710: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + add r6, #0x22 + mov r1, #1 + add r0, r0, #1 + strb r0, [r6] + add r0, r5, #0 + add r0, #0xb4 + str r1, [r0] + b _021EE818 +_021EE726: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + sub r0, r0, #1 + add r0, r6, r0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021EE75E + add r0, r6, #0 + bl MOD05_021EDEAC + add r1, r6, #0 + add r1, #0x22 + ldrb r1, [r1] + mov r0, #0 + sub r1, r1, #1 + add r1, r6, r1 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0x80 + str r0, [r1] +_021EE75E: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + bhi _021EE818 + add r0, r6, #0 + add r0, #0x10 + bl MOD05_021EE45C + cmp r0, #1 + bne _021EE818 + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + blo _021EE784 + mov r0, #1 + str r0, [r6, #0x24] + b _021EE78C +_021EE784: + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] +_021EE78C: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + sub r0, r0, #1 + lsl r0, r0, #2 + ldr r2, [r6, r0] + ldr r0, _021EE8C8 ; =0x00000864 + ldr r1, [r2, r0] + cmp r1, #1 + bne _021EE7C4 + sub r0, #0x10 + ldr r0, [r2, r0] + bl NNS_G3dGetMdlSet + add r7, r0, #0 + ldrh r0, [r7, #0xe] + add r0, r7, r0 + ldr r4, [r0, #0xc] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + cmp r0, #1 + bne _021EE7C4 + add r0, r7, r4 + bl MOD05_021DB5EC +_021EE7C4: + add r0, r5, #0 + add r0, #0xfc + ldr r3, [r0] + cmp r3, #0 + beq _021EE818 + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + mov r2, #0x86 + lsl r2, r2, #4 + sub r0, r0, #1 + lsl r0, r0, #2 + ldr r4, [r6, r0] + ldr r1, [r4, r2] + cmp r1, #0 + blt _021EE818 + add r0, r5, #0 + add r6, r5, #0 + add r0, #0xc0 + add r6, #0xc4 + ldr r0, [r0] + ldr r6, [r6] + mul r6, r0 + cmp r1, r6 + bge _021EE818 + mov r0, #1 + lsl r0, r0, #8 + add r2, #8 + ldr r0, [r5, r0] + ldr r2, [r4, r2] + blx r3 + b _021EE818 +_021EE804: + add r6, #0x10 + add r0, r6, #0 + bl MOD05_021EE45C + cmp r0, #1 + bne _021EE818 + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + strb r1, [r0] +_021EE818: + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EE83A + add r0, r5, #0 + mov r1, #0 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + strb r1, [r0] + mov r0, #2 + add r5, #0xb4 + add sp, #0x14 + str r0, [r5] + pop {r4, r5, r6, r7, pc} +_021EE83A: + add r0, r5, #0 + bl MOD05_021EF0F0 + cmp r0, #1 + bne _021EE8C2 + add r0, r5, #0 + add r0, #0xa2 + ldrb r1, [r0] + mov r0, #0x30 + mov r2, #0 + mul r0, r1 + add r0, r5, r0 + str r2, [r0, #0x2c] + add r0, r5, #0 + bl MOD05_021EF100 + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r5, #0 + add r1, r2, r1 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + beq _021EE890 + mov r1, #0 + b _021EE8A0 +_021EE890: + add r0, r5, #0 + mov r1, #0 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + strb r1, [r0] + mov r1, #2 +_021EE8A0: + add r0, r5, #0 + add r0, #0xb4 + str r1, [r0] + ldr r0, [r5, #0x6c] + cmp r0, #1 + bne _021EE8C2 + mov r0, #0 + str r0, [r5, #0x6c] + add r0, r5, #0 + add r0, #0x70 + ldrb r0, [r0] + add r1, r5, #0 + bl MOD05_021EF118 + add r0, r5, #0 + bl MOD05_021EF094 +_021EE8C2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021EE8C8: .word 0x00000864 + + thumb_func_start MOD05_021EE8CC +MOD05_021EE8CC: ; 0x021EE8CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r4, [sp, #0x34] + str r2, [sp, #0x10] + add r7, r0, #0 + ldr r0, [r4, #0x6c] + add r5, r3, #0 + str r1, [sp, #0xc] + ldr r6, [sp, #0x30] + cmp r0, #1 + bne _021EE8E6 + bl GF_AssertFail +_021EE8E6: + add r0, r6, #0 + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD05_021EEF9C + cmp r0, #1 + bne _021EE964 + add r1, sp, #0x14 + ldrb r1, [r1] + add r0, r4, #0 + bl MOD05_021EDE7C + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #2 + blo _021EE948 + mov r0, #1 + str r0, [r4, #0x6c] + ldr r0, [sp, #0xc] + str r7, [r4, #0x74] + str r0, [r4, #0x78] + add r1, r4, #0 + ldr r0, [sp, #0x10] + add r1, #0x7c + strb r0, [r1] + add r0, r4, #0 + add r0, #0x7d + strb r5, [r0] + ldr r0, [sp, #0x10] + add r2, r4, #0 + add r2, #0x90 + lsl r1, r0, #2 + ldr r0, [r2, r1] + str r0, [r4, #0x64] + lsl r0, r5, #2 + ldr r3, [r2, r0] + str r3, [r4, #0x68] + add r4, #0x70 + strb r6, [r4] + ldr r3, [r2, r1] + mov r1, #0x86 + lsl r1, r1, #4 + str r7, [r3, r1] + ldr r2, [r2, r0] + ldr r0, [sp, #0xc] + add sp, #0x18 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} +_021EE948: + add r0, r4, #0 + str r5, [sp] + add r0, #0xa1 + ldrb r0, [r0] + ldr r2, [sp, #0xc] + add r1, r7, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + add r0, r4, #0 + bl MOD05_021EE470 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021EE964: + add r0, r4, #0 + str r5, [sp] + add r0, #0xa1 + ldrb r0, [r0] + ldr r2, [sp, #0xc] + add r1, r7, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + add r0, r4, #0 + bl MOD05_021EE470 + cmp r0, #1 + beq _021EE984 + bl GF_AssertFail +_021EE984: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EE988 +MOD05_021EE988: ; 0x021EE988 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r4, r6, #0 + lsl r5, r0, #2 + add r4, #0x90 + ldr r1, [r4, r5] + ldr r0, _021EE9CC ; =0x00000864 + mov r2, #0 + str r2, [r1, r0] + ldr r1, [r4, r5] + sub r0, #8 + ldr r0, [r1, r0] + bl MOD05_021F43CC + ldr r1, [r4, r5] + ldr r0, _021EE9D0 ; =0x00000868 + ldr r0, [r1, r0] + bl MOD05_021E7C1C + mov r0, #0 + mov r2, #0x86 + ldr r1, [r4, r5] + mvn r0, r0 + lsl r2, r2, #4 + str r0, [r1, r2] + ldr r1, [r4, r5] + sub r2, #0x60 + bl MIi_CpuClearFast + add r0, r6, r5 + mov r1, #1 + add r0, #0x80 + str r1, [r0] + pop {r4, r5, r6, pc} + .balign 4, 0 +_021EE9CC: .word 0x00000864 +_021EE9D0: .word 0x00000868 + + thumb_func_start MOD05_021EE9D4 +MOD05_021EE9D4: ; 0x021EE9D4 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r1, #0 + add r1, r4, #0 + add r6, r0, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD05_021EE988 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EE988 + add r4, #0x90 + lsl r1, r6, #2 + lsl r5, r5, #2 + lsl r2, r7, #2 + ldr r0, [r4, r1] + ldr r3, [r4, r5] + ldr r6, [r4, r2] + str r6, [r4, r1] + ldr r1, [sp] + lsl r6, r1, #2 + ldr r1, [r4, r6] + str r1, [r4, r5] + str r0, [r4, r2] + str r3, [r4, r6] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEA0C +MOD05_021EEA0C: ; 0x021EEA0C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #8] + add r7, r0, #0 + ldr r0, [sp, #8] + add r6, r2, #0 + cmp r0, #4 + bls _021EEA1E + b _021EED32 +_021EEA1E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEA2A: ; jump table + .short _021EED32 - _021EEA2A - 2 ; case 0 + .short _021EEBA4 - _021EEA2A - 2 ; case 1 + .short _021EEC80 - _021EEA2A - 2 ; case 2 + .short _021EEAD2 - _021EEA2A - 2 ; case 3 + .short _021EEA34 - _021EEA2A - 2 ; case 4 +_021EEA34: + mov r0, #2 + mov r1, #3 + mov r2, #0 + mov r3, #1 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #2 + bne _021EEA7E + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #1 + sub r5, r7, r2 + str r0, [sp, #0x10] + mov r0, #0 + sub r4, r5, #1 + str r0, [sp, #0xc] + cmp r5, #0 + bge _021EEA68 + sub r5, r0, #1 + add r4, r5, #0 + b _021EEAB4 +_021EEA68: + cmp r4, #0 + blt _021EEA78 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEAB4 +_021EEA78: + mov r4, #0 + mvn r4, r4 + b _021EEAB4 +_021EEA7E: + cmp r0, #3 + bne _021EEAB0 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #0 + sub r5, r7, r2 + str r0, [sp, #0x10] + mov r0, #1 + add r4, r5, #1 + str r0, [sp, #0xc] + cmp r5, #0 + bge _021EEA9E + sub r5, r0, #2 + add r4, r5, #0 + b _021EEAB4 +_021EEA9E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEAB4 + mov r4, #0 + mvn r4, r4 + b _021EEAB4 +_021EEAB0: + bl GF_AssertFail +_021EEAB4: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEAD2: + mov r0, #1 + mov r1, #3 + mov r2, #0 + mov r3, #2 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #1 + bne _021EEB30 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + sub r5, r7, #1 + sub r0, r7, r2 + sub r4, r0, #1 + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + cmp r5, #0 + blt _021EEB0E + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEB14 +_021EEB0E: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEB14: + cmp r4, #0 + blt _021EEB2A + add r2, r6, #0 + add r2, #0xc0 + ldr r2, [r2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEB86 +_021EEB2A: + mov r4, #0 + mvn r4, r4 + b _021EEB86 +_021EEB30: + cmp r0, #3 + bne _021EEB82 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + sub r5, r7, #1 + add r0, r7, r2 + sub r4, r0, #1 + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0xc] + cmp r5, #0 + blt _021EEB58 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEB5E +_021EEB58: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEB5E: + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r4 + ble _021EEB7C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEB86 +_021EEB7C: + mov r4, #0 + mvn r4, r4 + b _021EEB86 +_021EEB82: + bl GF_AssertFail +_021EEB86: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEBA4: + mov r0, #0 + mov r1, #2 + mov r2, #1 + mov r3, #3 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _021EEC12 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r5, r7, #1 + sub r0, r7, r2 + add r4, r0, #1 + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r5 + ble _021EEBE8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEBEE +_021EEBE8: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEBEE: + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r4 + ble _021EEC0C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEC62 +_021EEC0C: + mov r4, #0 + mvn r4, r4 + b _021EEC62 +_021EEC12: + cmp r0, #2 + bne _021EEC62 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r5, r7, #1 + add r0, r7, r2 + add r4, r0, #1 + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r5 + ble _021EEC42 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEC48 +_021EEC42: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEC48: + cmp r4, #0 + blt _021EEC5E + add r2, r6, #0 + add r2, #0xc0 + ldr r2, [r2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEC62 +_021EEC5E: + mov r4, #0 + mvn r4, r4 +_021EEC62: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEC80: + mov r0, #0 + mov r1, #1 + mov r2, #2 + mov r3, #3 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _021EECD0 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r5, r7, r2 + mul r0, r2 + sub r4, r5, #1 + cmp r0, r5 + bgt _021EECBE + ldr r0, [sp, #0xc] + sub r5, r0, #3 + add r4, r5, #0 + b _021EED14 +_021EECBE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EED14 + mov r4, #0 + mvn r4, r4 + b _021EED14 +_021EECD0: + cmp r0, #1 + bne _021EED10 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r5, r7, r2 + mul r0, r2 + add r4, r5, #1 + cmp r0, r5 + bgt _021EECFA + ldr r0, [sp, #0xc] + sub r5, r0, #4 + add r4, r5, #0 + b _021EED14 +_021EECFA: + cmp r0, r4 + ble _021EED0A + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EED14 +_021EED0A: + mov r4, #0 + mvn r4, r4 + b _021EED14 +_021EED10: + bl GF_AssertFail +_021EED14: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EED32: + bl GF_AssertFail + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EED3C +MOD05_021EED3C: ; 0x021EED3C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r1, #0 + add r4, r5, #0 + lsl r6, r0, #2 + mov r0, #0x86 + add r3, sp, #0x38 + mov r1, #0 + str r1, [r3] + str r1, [r3, #4] + str r2, [sp, #4] + add r2, r5, #0 + add r4, #0x90 + str r1, [r3, #8] + add r2, #0xbc + ldr r1, [r4, r6] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + ldr r2, [r2] + bl MOD05_021EF300 + ldr r1, [r4, r6] + ldr r0, _021EEDD4 ; =0x00000864 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021EEDA6 + ldr r3, _021EEDD8 ; =UNK05_021F8B14 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _021EEDDC ; =UNK05_021F8B20 + str r0, [r2] + add r2, sp, #8 + mov r7, #4 +_021EED88: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r7, r7, #1 + bne _021EED88 + ldr r0, [r3] + add r3, sp, #0x2c + str r0, [r2] + mov r0, #2 + ldr r1, [r4, r6] + lsl r0, r0, #0xa + add r0, r1, r0 + add r1, sp, #0x38 + add r2, sp, #8 + bl FUN_0201B26C +_021EEDA6: + ldr r4, [r4, r6] + ldr r0, _021EEDD4 ; =0x00000864 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021EEDCE + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r2, r0, #0 + ldr r0, _021EEDE0 ; =0x00000868 + add r5, #0xb8 + ldr r0, [r4, r0] + ldr r3, [sp, #4] + str r0, [sp] + ldr r1, [r5] + add r0, sp, #0x38 + bl MOD05_021E7DD8 +_021EEDCE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021EEDD4: .word 0x00000864 +_021EEDD8: .word UNK05_021F8B14 +_021EEDDC: .word UNK05_021F8B20 +_021EEDE0: .word 0x00000868 + + thumb_func_start MOD05_021EEDE4 +MOD05_021EEDE4: ; 0x021EEDE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r1, r7, #0 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + add r1, r7, #0 + bl _u32_div_f + lsr r0, r0, #5 + add r1, r0, #0 + lsr r2, r4, #5 + mul r1, r5 + add r0, r2, r1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEE08 +MOD05_021EEE08: ; 0x021EEE08 + mul r2, r1 + add r0, r0, r2 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EEE10 +MOD05_021EEE10: ; 0x021EEE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r1, r7, #0 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + add r1, r7, #0 + bl _u32_div_f + lsr r0, r0, #5 + add r1, r0, #0 + lsr r2, r4, #5 + mul r1, r5 + add r0, r2, r1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEE34 +MOD05_021EEE34: ; 0x021EEE34 + push {r3, lr} + cmp r0, #0 + bne _021EEE3E + mov r0, #3 + pop {r3, pc} +_021EEE3E: + cmp r0, #1 + bne _021EEE46 + mov r0, #2 + pop {r3, pc} +_021EEE46: + cmp r0, #2 + bne _021EEE4E + mov r0, #1 + pop {r3, pc} +_021EEE4E: + cmp r0, #3 + bne _021EEE56 + mov r0, #0 + pop {r3, pc} +_021EEE56: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEE60 +MOD05_021EEE60: ; 0x021EEE60 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + cmp r0, #4 + bhi _021EEEC0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEE76: ; jump table + .short _021EEEC0 - _021EEE76 - 2 ; case 0 + .short _021EEE80 - _021EEE76 - 2 ; case 1 + .short _021EEE96 - _021EEE76 - 2 ; case 2 + .short _021EEEA4 - _021EEE76 - 2 ; case 3 + .short _021EEEB8 - _021EEE76 - 2 ; case 4 +_021EEE80: + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + add r0, r1, #1 + cmp r0, r5 + blt _021EEE92 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEE92: + add r0, r4, #1 + pop {r3, r4, r5, pc} +_021EEE96: + lsl r1, r1, #5 + add r0, r4, r5 + mul r1, r5 + cmp r0, r1 + blt _021EEEC6 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEA4: + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + sub r0, r1, #1 + bpl _021EEEB4 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEB4: + sub r0, r4, #1 + pop {r3, r4, r5, pc} +_021EEEB8: + sub r0, r4, r5 + bpl _021EEEC6 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEC0: + bl GF_AssertFail + mov r0, #0 +_021EEEC6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EEEC8 +MOD05_021EEEC8: ; 0x021EEEC8 + cmp r0, #4 + bhi _021EEF00 + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021EEED8: ; jump table + .short _021EEF00 - _021EEED8 - 2 ; case 0 + .short _021EEEFA - _021EEED8 - 2 ; case 1 + .short _021EEEEA - _021EEED8 - 2 ; case 2 + .short _021EEEF2 - _021EEED8 - 2 ; case 3 + .short _021EEEE2 - _021EEED8 - 2 ; case 4 +_021EEEE2: + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEEA: + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEF2: + sub r0, r1, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEFA: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 +_021EEF00: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EEF04 +MOD05_021EEF04: ; 0x021EEF04 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl MOD05_021EEEC8 + cmp r5, r0 + bge _021EEF36 + sub r0, r0, r5 + cmp r0, #1 + bne _021EEF22 + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF22: + cmp r0, #2 + bne _021EEF30 + ldrb r0, [r4] + sub r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF30: + bl GF_AssertFail + b _021EEF62 +_021EEF36: + cmp r5, r0 + ble _021EEF5E + sub r0, r5, r0 + cmp r0, #1 + bne _021EEF4A + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF4A: + cmp r0, #2 + bne _021EEF58 + ldrb r0, [r4] + add r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF58: + bl GF_AssertFail + b _021EEF62 +_021EEF5E: + bl GF_AssertFail +_021EEF62: + strb r6, [r4] + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEF68 +MOD05_021EEF68: ; 0x021EEF68 + push {r3, lr} + cmp r0, #4 + bhi _021EEF94 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEF7A: ; jump table + .short _021EEF94 - _021EEF7A - 2 ; case 0 + .short _021EEF8C - _021EEF7A - 2 ; case 1 + .short _021EEF88 - _021EEF7A - 2 ; case 2 + .short _021EEF90 - _021EEF7A - 2 ; case 3 + .short _021EEF84 - _021EEF7A - 2 ; case 4 +_021EEF84: + mov r0, #2 + pop {r3, pc} +_021EEF88: + mov r0, #4 + pop {r3, pc} +_021EEF8C: + mov r0, #3 + pop {r3, pc} +_021EEF90: + mov r0, #1 + pop {r3, pc} +_021EEF94: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD05_021EEF9C +MOD05_021EEF9C: ; 0x021EEF9C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r4, #0 +_021EEFA6: + ldr r0, [r5, #0x2c] + cmp r0, #1 + bne _021EEFC2 + add r0, r6, #0 + bl MOD05_021EEF68 + add r1, r5, #0 + add r1, #0x30 + ldrb r1, [r1] + cmp r1, r0 + bne _021EEFC2 + strb r4, [r7] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EEFC2: + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021EEFA6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEFD0 +MOD05_021EEFD0: ; 0x021EEFD0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xa1 + ldrb r1, [r0] + mov r0, #0x30 + add r4, r5, #0 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x2c] + add r4, #0x64 + cmp r0, #0 + beq _021EEFEC + bl GF_AssertFail +_021EEFEC: + add r1, r5, #0 + add r1, #0xa1 + ldrb r2, [r1] + mov r1, #0x30 + mov r0, #1 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + add r3, r5, #0 + str r0, [r2, #0x2c] + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0xc] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x30 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4, #0x10] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #0x1c] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4, #0x14] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #0x20] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0x18] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x24 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0x19] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x25 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #4] + add r2, r5, #0 + add r2, #0xa1 + ldrb r2, [r2] + ldr r4, [r4, #4] + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + add r3, r5, #0 + str r4, [r2, #8] + add r3, #0xa1 + ldrb r3, [r3] + mov r2, #0 + add r4, r3, #0 + mul r4, r1 + add r3, r5, r4 + add r3, #0x26 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + mul r1, r3 + add r1, r5, r1 + str r2, [r1, #0x28] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EF094 +MOD05_021EF094: ; 0x021EF094 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r4, r5, #0 + add r4, #0x64 + cmp r0, #2 + blo _021EF0A8 + bl GF_AssertFail +_021EF0A8: + add r0, r5, #0 + bl MOD05_021EEFD0 + cmp r0, #1 + beq _021EF0B6 + bl GF_AssertFail +_021EF0B6: + mov r0, #0x86 + ldr r2, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r2, [r4, #0x14] + ldr r1, [r4, #4] + str r2, [r1, r0] + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + ldrb r0, [r0] + add r5, #0xa1 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + strb r0, [r5] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF0F0 +MOD05_021EF0F0: ; 0x021EF0F0 + add r1, r0, #0 + add r1, #0xa2 + ldrb r2, [r1] + mov r1, #0x30 + mul r1, r2 + add r0, r0, r1 + ldr r0, [r0, #0x28] + bx lr + + thumb_func_start MOD05_021EF100 +MOD05_021EF100: ; 0x021EF100 + mov r3, #0 + add r2, r3, #0 +_021EF104: + lsl r1, r3, #2 + add r1, r0, r1 + add r1, #0x80 + str r2, [r1] + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #4 + blo _021EF104 + bx lr + + thumb_func_start MOD05_021EF118 +MOD05_021EF118: ; 0x021EF118 + cmp r0, #4 + bhi _021EF168 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF128: ; jump table + .short _021EF168 - _021EF128 - 2 ; case 0 + .short _021EF140 - _021EF128 - 2 ; case 1 + .short _021EF14E - _021EF128 - 2 ; case 2 + .short _021EF15C - _021EF128 - 2 ; case 3 + .short _021EF132 - _021EF128 - 2 ; case 4 +_021EF132: + add r0, r1, #0 + mov r2, #1 + add r0, #0x88 + str r2, [r0] + add r1, #0x8c + str r2, [r1] + bx lr +_021EF140: + add r0, r1, #0 + mov r2, #1 + add r0, #0x80 + str r2, [r0] + add r1, #0x88 + str r2, [r1] + bx lr +_021EF14E: + add r0, r1, #0 + mov r2, #1 + add r0, #0x80 + str r2, [r0] + add r1, #0x84 + str r2, [r1] + bx lr +_021EF15C: + add r0, r1, #0 + mov r2, #1 + add r0, #0x84 + str r2, [r0] + add r1, #0x8c + str r2, [r1] +_021EF168: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF16C +MOD05_021EF16C: ; 0x021EF16C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021EDFBC + add r2, r5, #0 + add r3, r5, #0 + str r4, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r2, #0xc0 + add r3, #0xc4 + ldr r2, [r2] + ldr r3, [r3] + add r0, r6, #0 + add r1, r7, #0 + bl MOD05_021EDED0 + mov r6, #0 + add r7, sp, #0x10 +_021EF19A: + lsl r4, r6, #2 + bl MOD05_021F4328 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EF1F8 ; =0x0000085C + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF1F8 ; =0x0000085C + ldr r0, [r1, r0] + bl MOD05_021F4454 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r5, #0 + str r1, [sp] + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r3, r5, #0 + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + add r2, #0xb8 + add r3, #0xbc + ldr r0, [r7, r4] + ldr r2, [r2] + ldr r3, [r3] + add r1, r6, #0 + bl MOD05_021EE2A4 + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EF19A + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF1F8: .word 0x0000085C + + thumb_func_start MOD05_021EF1FC +MOD05_021EF1FC: ; 0x021EF1FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021EE050 + add r2, r5, #0 + add r3, r5, #0 + str r4, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r2, #0xc0 + add r3, #0xc4 + ldr r2, [r2] + ldr r3, [r3] + add r0, r6, #0 + add r1, r7, #0 + bl MOD05_021EDED0 + mov r4, #0 + add r7, r4, #0 +_021EF22A: + lsl r6, r4, #2 + add r0, r5, r6 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF278 ; =0x0000085C + str r7, [r1, r0] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r5, #0 + str r1, [sp] + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r3, r5, #0 + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + add r0, sp, #0x10 + add r2, #0xb8 + add r3, #0xbc + ldr r0, [r0, r6] + ldr r2, [r2] + ldr r3, [r3] + add r1, r4, #0 + bl MOD05_021EE38C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021EF22A + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF278: .word 0x0000085C + + thumb_func_start MOD05_021EF27C +MOD05_021EF27C: ; 0x021EF27C + push {r4, lr} + add r1, r0, #0 + mov r3, #0 + add r1, #0xa2 + strb r3, [r1] + add r1, r0, #0 + add r1, #0xa1 + strb r3, [r1] + add r1, r0, #0 + add r1, #0xa0 + strb r3, [r1] + add r4, r0, #0 + add r2, r3, #0 + mov r1, #1 +_021EF298: + str r2, [r4, #0x2c] + str r1, [r4, #0x28] + add r3, r3, #1 + add r4, #0x30 + cmp r3, #2 + blt _021EF298 + bl MOD05_021EF100 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF2AC +MOD05_021EF2AC: ; 0x021EF2AC + push {r4, lr} + add r4, r2, #0 + add r2, #0xc8 + ldr r2, [r2] + bl MOD05_021EEE08 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0xc8 + ldr r0, [r0] + ldr r1, [r1] + bl MOD05_021EF620 + add r1, r4, #0 + add r1, #0xad + strb r0, [r1] + add r0, r4, #0 + add r0, #0xad + ldrb r0, [r0] + bl MOD05_021EEE34 + add r1, r4, #0 + add r1, #0xac + strb r0, [r1] + add r0, r4, #0 + add r1, r4, #0 + add r2, r4, #0 + add r0, #0xa8 + add r1, #0xc0 + add r2, #0xc8 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r2] + bl MOD05_021EEE10 + add r4, #0xa4 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021EF300 +MOD05_021EF300: ; 0x021EF300 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + mov r2, #1 + add r5, r3, #0 + lsl r2, r2, #0x14 + str r2, [r5] + str r2, [r5, #8] + mov r2, #0 + add r4, r0, #0 + mvn r2, r2 + str r1, [sp, #4] + cmp r4, r2 + beq _021EF362 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r6, r0, #0x10 + ldr r1, [sp, #4] + add r0, r4, #0 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r7, #0 + bl MapMatrix_GetWidth + str r0, [sp, #8] + add r0, r7, #0 + bl MapMatrix_GetMatrixID + add r1, r0, #0 + ldr r0, [sp, #8] + add r2, r6, #0 + str r0, [sp] + add r0, r7, #0 + add r3, r4, #0 + bl MapMatrix_GetMapAltitude + lsl r0, r0, #0xf + str r0, [r5, #4] + ldr r1, [r5] + lsl r0, r6, #0x15 + add r0, r1, r0 + str r0, [r5] + ldr r1, [r5, #8] + lsl r0, r4, #0x15 + add r0, r1, r0 + str r0, [r5, #8] +_021EF362: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF368 +MOD05_021EF368: ; 0x021EF368 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + mov r1, #0x41 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + str r2, [sp, #4] + add r6, r3, #0 + bl AllocFromHeap + mov r2, #0x41 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + cmp r6, #0 + bne _021EF39A + add r0, r4, #0 + ldr r1, _021EF42C ; =UNK05_021F8B04 + add r0, #0xf4 + str r1, [r0] + mov r7, #1 + b _021EF3AE +_021EF39A: + cmp r6, #1 + bne _021EF3AA + add r0, r4, #0 + ldr r1, _021EF430 ; =UNK05_021F8B0C + add r0, #0xf4 + str r1, [r0] + mov r7, #0 + b _021EF3AE +_021EF3AA: + bl GF_AssertFail +_021EF3AE: + add r0, r7, #0 + bl MOD05_021F3BC0 + str r0, [r4] + add r1, r4, #0 + ldr r0, [sp] + add r1, #0xb8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xbc + str r5, [r0] + add r0, r5, #0 + bl MapMatrix_GetWidth + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r5, #0 + bl MapMatrix_GetHeight + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r1, r0, #5 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #4] + add r1, #0xf0 + str r0, [r1] + add r0, r4, #0 + mov r1, #1 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + bl MOD05_021EF27C + add r0, r4, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + mov r1, #2 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x43 + mov r1, #4 + bl NARC_ctor + add r1, r4, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r4, #0 + mov r1, #0 + add r0, #0xfc + str r1, [r0] + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF42C: .word UNK05_021F8B04 +_021EF430: .word UNK05_021F8B0C + + thumb_func_start MOD05_021EF434 +MOD05_021EF434: ; 0x021EF434 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r5, #0 + add r6, #0xf4 + add r3, r5, #0 + ldr r6, [r6] + add r3, #0xc8 + ldr r3, [r3] + ldr r6, [r6] + add r4, r1, #0 + add r7, r2, #0 + blx r6 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD05_021EF2AC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EF458 +MOD05_021EF458: ; 0x021EF458 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r2, r5, #0 + add r3, r5, #0 + add r1, #0xc4 + add r2, #0xc8 + add r3, #0xa8 + ldr r1, [r1] + ldr r2, [r2] + ldr r3, [r3] + add r6, r0, #0 + bl MOD05_021EEE60 + add r1, r5, #0 + add r2, r5, #0 + add r1, #0xc0 + add r2, #0xc8 + ldr r1, [r1] + ldr r2, [r2] + add r7, r0, #0 + bl MOD05_021EEDE4 + add r1, r5, #0 + add r1, #0xc8 + add r4, r0, #0 + ldr r1, [r1] + add r0, r7, #0 + bl MOD05_021EF620 + add r1, r5, #0 + add r1, #0xa4 + ldr r1, [r1] + cmp r1, r4 + bne _021EF4C0 + add r1, r5, #0 + add r1, #0xad + ldrb r1, [r1] + cmp r1, r0 + beq _021EF4C0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021EEA0C + add r1, r5, #0 + add r1, #0xad + add r5, #0xac + ldrb r1, [r1] + add r0, r6, #0 + add r2, r5, #0 + bl MOD05_021EEF04 +_021EF4C0: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF4C4 +MOD05_021EF4C4: ; 0x021EF4C4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r1, #0 + sub r7, r4, #1 +_021EF4CE: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, r7 + beq _021EF4EA + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021EED3C +_021EF4EA: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021EF4CE + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF4F8 +MOD05_021EF4F8: ; 0x021EF4F8 + push {r3, r4} + asr r4, r0, #0xf + lsr r4, r4, #0x10 + add r4, r0, r4 + asr r0, r4, #0x10 + str r0, [r2] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + str r0, [r3] + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF514 +MOD05_021EF514: ; 0x021EF514 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl ClearFileCache + bl NNS_GfdResetLnkTexVramState + bl NNS_GfdResetLnkPlttVramState + mov r4, #0 + add r6, r5, #4 + mov r7, #0x30 +_021EF52A: + add r0, r4, #0 + mul r0, r7 + add r0, r6, r0 + bl MOD05_021EDEAC + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + blo _021EF52A + mov r6, #0 + add r7, r6, #0 +_021EF542: + lsl r4, r6, #2 + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + ldr r0, _021EF59C ; =0x00000864 + mov r1, #0 + str r1, [r2, r0] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF5A0 ; =0x0000085C + ldr r0, [r1, r0] + bl MOD05_021F43C0 + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF5A4 ; =0x00000868 + ldr r0, [r1, r0] + bl MOD05_021E7C14 + add r0, r5, r4 + add r0, #0x90 + ldr r0, [r0] + bl FreeToHeap + add r0, r5, r4 + add r0, #0x90 + str r7, [r0] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EF542 + add r0, r5, #0 + mov r1, #3 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + mov r1, #1 + add r0, #0xb0 + str r1, [r0] + add r5, #0xec + str r7, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF59C: .word 0x00000864 +_021EF5A0: .word 0x0000085C +_021EF5A4: .word 0x00000868 + + thumb_func_start MOD05_021EF5A8 +MOD05_021EF5A8: ; 0x021EF5A8 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + bl NARC_dtor + ldr r0, [r4] + bl MOD05_021F3C30 + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF5C4 +MOD05_021EF5C4: ; 0x021EF5C4 + add r1, r0, #0 + add r1, #0xb0 + ldr r1, [r1] + cmp r1, #1 + bne _021EF5DA + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EF5DA + mov r0, #1 + bx lr +_021EF5DA: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF5E0 +MOD05_021EF5E0: ; 0x021EF5E0 + push {r4, r5} + add r5, r0, #0 + add r4, r1, #0 + add r2, r4, #0 + add r3, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0xcc + stmia r2!, {r0, r1} + ldr r0, [r3] + add r4, #0xd8 + str r0, [r2] + str r5, [r4] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021EF5FC +MOD05_021EF5FC: ; 0x021EF5FC + mov r1, #0 + add r0, #0xd8 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021EF604 +MOD05_021EF604: ; 0x021EF604 + lsl r0, r0, #2 + add r0, r1, r0 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF614 ; =0x00000868 + ldr r0, [r1, r0] + str r0, [r2] + bx lr + .balign 4, 0 +_021EF614: .word 0x00000868 + + thumb_func_start MOD05_021EF618 +MOD05_021EF618: ; 0x021EF618 + add r0, #0xac + ldrb r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF620 +MOD05_021EF620: ; 0x021EF620 + push {r4, lr} + add r4, r0, #0 + bl _u32_div_f + lsr r2, r0, #0x1f + lsl r1, r0, #0x1b + sub r1, r1, r2 + mov r0, #0x1b + ror r1, r0 + mov r0, #0x1f + and r0, r4 + add r1, r2, r1 + cmp r0, #0x10 + bge _021EF648 + cmp r1, #0x10 + bge _021EF644 + mov r0, #0 + pop {r4, pc} +_021EF644: + mov r0, #2 + pop {r4, pc} +_021EF648: + cmp r1, #0x10 + bge _021EF650 + mov r0, #1 + pop {r4, pc} +_021EF650: + mov r0, #3 + pop {r4, pc} + + thumb_func_start MOD05_021EF654 +MOD05_021EF654: ; 0x021EF654 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + cmp r0, r5 + bne _021EF66A + add r4, #0xac + ldrb r0, [r4] + pop {r3, r4, r5, pc} +_021EF66A: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021EF676 + bl GF_AssertFail +_021EF676: + add r0, r4, #0 + add r0, #0xac + ldrb r1, [r0] + cmp r1, #3 + bls _021EF682 + b _021EF820 +_021EF682: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF68E: ; jump table + .short _021EF696 - _021EF68E - 2 ; case 0 + .short _021EF6F8 - _021EF68E - 2 ; case 1 + .short _021EF75C - _021EF68E - 2 ; case 2 + .short _021EF7BE - _021EF68E - 2 ; case 3 +_021EF696: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r5, r0 + cmp r2, r3 + bne _021EF6B0 + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6B0: + cmp r3, #1 + bne _021EF6CA + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF6CA + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6CA: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa4 + add r1, #0xc0 + ldr r2, [r1] + ldr r0, [r0] + add r3, r2, #1 + sub r1, r5, r0 + cmp r3, r1 + bne _021EF6F4 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF6F4 + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6F4: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF6F8: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r5, r0 + cmp r2, r3 + bne _021EF712 + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF712: + sub r1, r0, r5 + cmp r1, #1 + bne _021EF72E + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF72E + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF72E: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa4 + add r1, #0xc0 + ldr r2, [r1] + ldr r0, [r0] + sub r3, r2, #1 + sub r1, r5, r0 + cmp r3, r1 + bne _021EF758 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF758 + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF758: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF75C: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r0, r5 + cmp r2, r3 + bne _021EF776 + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF776: + sub r1, r2, #1 + cmp r1, r3 + bne _021EF792 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF792 + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF792: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + sub r1, r5, r0 + cmp r1, #1 + bne _021EF7BA + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF7BA + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7BA: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF7BE: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r0, r5 + cmp r2, r3 + bne _021EF7D8 + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7D8: + add r1, r2, #1 + cmp r1, r3 + bne _021EF7F4 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF7F4 + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7F4: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + sub r1, r0, r5 + cmp r1, #1 + bne _021EF81C + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF81C + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF81C: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF820: + mov r0, #4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EF824 +MOD05_021EF824: ; 0x021EF824 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blo _021EF832 + bl GF_AssertFail +_021EF832: + lsl r0, r5, #2 + add r0, r4, r0 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + ldr r0, [r1, r0] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF844 +MOD05_021EF844: ; 0x021EF844 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + asr r2, r6, #4 + add r5, r0, #0 + lsr r2, r2, #0x1b + add r2, r6, r2 + add r4, r1, #0 + add r0, #0xc0 + ldr r1, [r0] + asr r0, r4, #4 + lsr r0, r0, #0x1b + add r0, r4, r0 + asr r2, r2, #5 + str r3, [sp] + add r3, r2, #0 + asr r0, r0, #5 + mul r3, r1 + add r7, r0, r3 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r1 + cmp r7, r0 + blo _021EF882 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + beq _021EF882 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EF882: + add r0, r5, #0 + add r0, #0xc0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r1 + cmp r7, r0 + blo _021EF898 + bl GF_AssertFail +_021EF898: + add r0, r5, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r6, #0 + mul r0, r1 + add r0, r4, r0 + bl MOD05_021EF620 + add r1, r0, #0 + add r0, r7, #0 + add r2, r5, #0 + bl MOD05_021EF654 + ldr r1, [sp] + cmp r1, #0 + beq _021EF8BA + strb r0, [r1] +_021EF8BA: + cmp r0, #3 + bls _021EF8C2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EF8C2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF8C8 +MOD05_021EF8C8: ; 0x021EF8C8 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF8D8 ; =0x0000085C + ldr r0, [r1, r0] + bx lr + nop +_021EF8D8: .word 0x0000085C + + thumb_func_start MOD05_021EF8DC +MOD05_021EF8DC: ; 0x021EF8DC + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0x90 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF8E8 +MOD05_021EF8E8: ; 0x021EF8E8 + add r3, r0, #0 + add r3, #0xfc + str r1, [r3] + mov r1, #1 + lsl r1, r1, #8 + str r2, [r0, r1] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF8F8 +MOD05_021EF8F8: ; 0x021EF8F8 + push {r3, lr} + bl FUN_0201B6C8 + mov r1, #1 + str r1, [r0, #0x1c] + pop {r3, pc} + + thumb_func_start MOD05_021EF904 +MOD05_021EF904: ; 0x021EF904 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _021EF914 + mov r0, #5 + strb r0, [r4, #0x14] +_021EF914: + ldrb r0, [r4, #0x14] + cmp r0, #5 + bhi _021EF9FE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF926: ; jump table + .short _021EF932 - _021EF926 - 2 ; case 0 + .short _021EF962 - _021EF926 - 2 ; case 1 + .short _021EF998 - _021EF926 - 2 ; case 2 + .short _021EF9B6 - _021EF926 - 2 ; case 3 + .short _021EF9FE - _021EF926 - 2 ; case 4 + .short _021EF9EC - _021EF926 - 2 ; case 5 +_021EF932: + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0xe + ldr r5, [r4, #4] + lsl r0, r0, #0xc + cmp r5, r0 + bgt _021EF944 + mov r0, #2 + b _021EF948 +_021EF944: + add r5, r0, #0 + mov r0, #1 +_021EF948: + strb r0, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r0, [r4] + ldr r3, [r2] + ldr r2, [r4, #0x24] + add r1, r5, #0 + add r2, r3, r2 + bl NARC_ReadFile + ldr r0, [r4, #0x24] + add r0, r0, r5 + str r0, [r4, #0x24] + pop {r4, r5, r6, pc} +_021EF962: + ldr r2, [r4, #0x24] + ldr r0, [r4, #4] + sub r5, r0, r2 + mov r0, #0xe + lsl r0, r0, #0xc + cmp r5, r0 + ble _021EF976 + add r5, r0, #0 + mov r6, #0 + b _021EF978 +_021EF976: + mov r6, #1 +_021EF978: + ldr r3, [r4, #0xc] + ldr r0, [r4] + ldr r3, [r3] + add r1, r5, #0 + add r2, r3, r2 + bl NARC_ReadFile + cmp r6, #0 + beq _021EF990 + mov r0, #2 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF990: + ldr r0, [r4, #0x24] + add r0, r0, r5 + str r0, [r4, #0x24] + pop {r4, r5, r6, pc} +_021EF998: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021EF9B0 + bl FUN_0201B254 + cmp r0, #1 + bne _021EF9B0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, [r0] + bl FUN_0201B3A8 +_021EF9B0: + mov r0, #3 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF9B6: + ldr r0, [r4, #0xc] + ldr r0, [r0] + bl NNS_G3dGetMdlSet + add r5, r0, #0 + ldrb r0, [r5, #9] + cmp r0, #1 + beq _021EF9CA + bl GF_AssertFail +_021EF9CA: + ldrh r0, [r5, #0xe] + add r0, r5, r0 + ldr r0, [r0, #0xc] + add r5, r5, r0 + bne _021EF9D8 + bl GF_AssertFail +_021EF9D8: + ldr r0, [r4, #8] + add r1, r5, #0 + bl NNS_G3dRenderObjInit + ldr r0, [r4, #0x18] + mov r1, #1 + str r1, [r0] + mov r0, #5 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF9EC: + ldr r0, [r4, #0x20] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FreeToHeap + add r0, r5, #0 + bl FUN_0200CAB4 +_021EF9FE: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EFA00 +MOD05_021EFA00: ; 0x021EFA00 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + + thumb_func_start MOD05_021EFA08 +MOD05_021EFA08: ; 0x021EFA08 + mov r1, #0x28 + add r6, r2, #0 + add r7, r3, #0 + bl AllocFromHeapAtEnd + add r1, r0, #0 + str r5, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [sp, #0x18] + str r7, [r1, #0xc] + str r0, [r1, #0x10] + mov r2, #0 + ldr r0, [sp, #0x1c] + strb r2, [r1, #0x14] + str r0, [r1, #0x18] + str r2, [r0] + ldr r0, [sp, #0x20] + str r0, [r1, #0x20] + str r2, [r1, #0x1c] + ldr r0, _021EFA3C ; =MOD05_021EF904 + mov r2, #1 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EFA3C: .word MOD05_021EF904 + + thumb_func_start MOD05_021EFA40 +MOD05_021EFA40: ; 0x021EFA40 + push {r3, r4, r5, lr} + add r4, r3, #0 + add r5, r2, #0 + ldr r2, [r4] + bl NARC_ReadFile + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021EFA6A + bl FUN_0201B254 + cmp r0, #1 + bne _021EFA6A + ldr r0, [r4] + ldr r1, [sp, #0x10] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021EFA6A + bl GF_AssertFail +_021EFA6A: + ldr r0, [r4] + bl NNS_G3dGetMdlSet + ldrb r0, [r0, #9] + cmp r0, #1 + beq _021EFA7A + bl GF_AssertFail +_021EFA7A: + ldr r0, [r4] + bl NNS_G3dGetMdlSet + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r4, r0, r1 + bne _021EFA8E + bl GF_AssertFail +_021EFA8E: + add r0, r5, #0 + add r1, r4, #0 + bl NNS_G3dRenderObjInit + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F8B04 +UNK05_021F8B04: ; 0x021F8B04 + .word MOD05_021EF16C, MOD05_021EE114 + + .global UNK05_021F8B0C +UNK05_021F8B0C: ; 0x021F8B0C + .word MOD05_021EF1FC, MOD05_021EE1E4 + + .global UNK05_021F8B14 +UNK05_021F8B14: ; 0x021F8B14 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021F8B20 +UNK05_021F8B20: ; 0x021F8B20 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021EFA9C.s b/arm9/modules/05/asm/mod05_021EFA9C.s new file mode 100644 index 00000000..b6c27091 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021EFA9C.s @@ -0,0 +1,172 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021EFA9C +MOD05_021EFA9C: ; 0x021EFA9C + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _021EFAAA + bl MOD20_022524DC +_021EFAAA: + pop {r3, pc} + + thumb_func_start MOD05_021EFAAC +MOD05_021EFAAC: ; 0x021EFAAC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl Sav2_Poketch_get + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl SavArray_Flags_get + add r6, r0, #0 + add r0, r4, #0 + bl Sav2_Poketch_IsGiven + cmp r0, #0 + beq _021EFAF8 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFAF8 + ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID + mov r1, #2 + bl HandleLoadOverlay + mov r0, #1 + bl GetOamManager + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [r5, #0xc] + ldr r3, [r5, #8] + add r0, r5, #0 + add r1, #0x14 + bl MOD20_02252448 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021EFAF8: + ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID + mov r1, #2 + bl HandleLoadOverlay + ldr r0, [r5, #8] + bl MOD19_02252440 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID +_021EFB10: .word SDK_OVERLAY_MODULE_19_ID + + thumb_func_start MOD05_021EFB14 +MOD05_021EFB14: ; 0x021EFB14 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl Sav2_Poketch_get + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl SavArray_Flags_get + add r6, r0, #0 + add r0, r4, #0 + bl Sav2_Poketch_IsGiven + cmp r0, #0 + beq _021EFB46 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFB46 + ldr r0, [r5, #4] + ldr r0, [r0, #0x14] + bl MOD20_022524BC + pop {r4, r5, r6, pc} +_021EFB46: + ldr r0, [r5, #8] + bl MOD19_022524F4 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EFB50 +MOD05_021EFB50: ; 0x021EFB50 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl Sav2_Poketch_get + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl SavArray_Flags_get + add r6, r0, #0 + add r0, r4, #0 + bl Sav2_Poketch_IsGiven + cmp r0, #0 + beq _021EFB94 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFB94 + ldr r0, [r5, #4] + ldr r0, [r0, #0x14] + bl MOD20_022524D0 + cmp r0, #0 + beq _021EFBA8 + ldr r0, [r5, #4] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r4, r5, r6, pc} +_021EFB94: + ldr r0, [r5, #8] + bl MOD19_02252504 + cmp r0, #0 + beq _021EFBA8 + ldr r0, _021EFBB0 ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r4, r5, r6, pc} +_021EFBA8: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021EFBAC: .word SDK_OVERLAY_MODULE_20_ID +_021EFBB0: .word SDK_OVERLAY_MODULE_19_ID + + thumb_func_start MOD05_021EFBB4 +MOD05_021EFBB4: ; 0x021EFBB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021EFBC8 ; =SDK_OVERLAY_MODULE_19_ID + mov r1, #2 + bl HandleLoadOverlay + ldr r0, [r4, #8] + bl MOD19_02252440 + pop {r4, pc} + .balign 4, 0 +_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID + + thumb_func_start MOD05_021EFBCC +MOD05_021EFBCC: ; 0x021EFBCC + ldr r3, _021EFBD4 ; =MOD19_022524F4 + ldr r0, [r0, #8] + bx r3 + nop +_021EFBD4: .word MOD19_022524F4 + + thumb_func_start MOD05_021EFBD8 +MOD05_021EFBD8: ; 0x021EFBD8 + push {r3, lr} + ldr r0, [r0, #8] + bl MOD19_02252504 + cmp r0, #0 + beq _021EFBEE + ldr r0, _021EFBF4 ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, pc} +_021EFBEE: + mov r0, #0 + pop {r3, pc} + nop +_021EFBF4: .word SDK_OVERLAY_MODULE_19_ID diff --git a/arm9/modules/05/asm/mod05_021EFBF8.s b/arm9/modules/05/asm/mod05_021EFBF8.s new file mode 100644 index 00000000..5f6b0a3b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021EFBF8.s @@ -0,0 +1,905 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021EFBF8 +MOD05_021EFBF8: ; 0x021EFBF8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + add r1, r4, #0 + ldr r0, [r4, #0x34] + add r1, #0x4c + mov r2, #4 + bl FUN_020339B4 + cmp r0, #0 + bne _021EFC20 + add sp, #8 + mov r0, #1 + pop {r4, pc} +_021EFC20: + add r0, r4, #0 + mov r1, #0 + add r0, #0x8c + str r1, [r0] + ldr r0, [r4, #0x34] + bl Sav2_PlayerData_GetOptionsAddr + bl Options_GetFrame + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + ldr r2, _021EFC6C ; =0x000001E2 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xa + bl FUN_0200CD68 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + ldr r2, _021EFC70 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #1 + str r0, [r4, #0x48] + mov r0, #0 + add sp, #8 + pop {r4, pc} + nop +_021EFC6C: .word 0x000001E2 +_021EFC70: .word 0x000003D9 + + thumb_func_start MOD05_021EFC74 +MOD05_021EFC74: ; 0x021EFC74 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0 + add r6, r0, #0 + mvn r1, r1 + add r0, #0x8c + str r1, [r0] + mov r4, #0 + bl FUN_02030F20 + cmp r0, #0 + ble _021EFCB0 + add r5, r6, #0 +_021EFC8E: + ldr r0, [r5, #0x4c] + cmp r0, #2 + bne _021EFCA4 + add r0, r6, #0 + add r0, #0x8c + str r4, [r0] + lsl r0, r4, #2 + mov r1, #0 + add r0, r6, r0 + str r1, [r0, #0x4c] + b _021EFCB0 +_021EFCA4: + add r5, r5, #4 + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _021EFC8E +_021EFCB0: + add r0, r6, #0 + add r0, #0x8c + ldr r1, [r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _021EFCC4 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021EFCC4: + ldr r0, [r6, #0x34] + bl Sav2_Bag_get + ldr r1, _021EFD3C ; =0x000001B5 + mov r2, #1 + mov r3, #4 + bl Bag_HasItem + cmp r0, #1 + bne _021EFCFE + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r6, #0x38] + mov r1, #0 + bl BufferPlayersName + add r0, r6, #0 + mov r1, #0x21 + bl MOD05_021F01EC + mov r0, #2 + str r0, [r6, #0x48] + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFCFE: + ldr r0, [r6, #0x34] + bl FUN_020286EC + add r4, r0, #0 + mov r5, #0 +_021EFD08: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0202842C + cmp r0, #0 + bne _021EFD2A + mov r0, #0 + add r1, r6, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r6, #0x34] + ldr r1, [r1] + add r2, r5, #0 + mov r3, #4 + bl FUN_02033A70 + b _021EFD30 +_021EFD2A: + add r5, r5, #1 + cmp r5, #0x20 + blt _021EFD08 +_021EFD30: + mov r0, #1 + str r0, [r6, #0x48] + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EFD3C: .word 0x000001B5 + + thumb_func_start MOD05_021EFD40 +MOD05_021EFD40: ; 0x021EFD40 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFD6C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFD74 ; =UNK05_021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFD78 ; =0x000003D9 + mov r3, #0xb + bl Std_CreateYesNoMenu + str r0, [r4, #0x44] + mov r0, #3 + str r0, [r4, #0x48] +_021EFD6C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFD74: .word UNK05_021F8B44 +_021EFD78: .word 0x000003D9 + + thumb_func_start MOD05_021EFD7C +MOD05_021EFD7C: ; 0x021EFD7C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFD98 + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFD98: + cmp r0, #0 + bne _021EFDE4 + ldr r0, [r6, #0x34] + bl FUN_020286EC + add r5, r0, #0 + mov r4, #0 +_021EFDA6: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + bne _021EFDC8 + mov r0, #0 + add r1, r6, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r6, #0x34] + ldr r1, [r1] + add r2, r4, #0 + mov r3, #4 + bl FUN_02033A70 + b _021EFDCE +_021EFDC8: + add r4, r4, #1 + cmp r4, #0x20 + blt _021EFDA6 +_021EFDCE: + cmp r4, #0x20 + bne _021EFDE4 + add r0, r6, #0 + mov r1, #0x22 + bl MOD05_021F01EC + mov r0, #4 + str r0, [r6, #0x48] + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFDE4: + mov r0, #1 + str r0, [r6, #0x48] + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EFDF0 +MOD05_021EFDF0: ; 0x021EFDF0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFE1C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFE24 ; =UNK05_021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFE28 ; =0x000003D9 + mov r3, #0xb + bl Std_CreateYesNoMenu + str r0, [r4, #0x44] + mov r0, #5 + str r0, [r4, #0x48] +_021EFE1C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFE24: .word UNK05_021F8B44 +_021EFE28: .word 0x000003D9 + + thumb_func_start MOD05_021EFE2C +MOD05_021EFE2C: ; 0x021EFE2C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFE44 + mov r0, #0 + pop {r4, pc} +_021EFE44: + cmp r0, #0 + bne _021EFE4C + mov r0, #8 + b _021EFE6A +_021EFE4C: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #0 + bl BufferPlayersName + add r0, r4, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 +_021EFE6A: + str r0, [r4, #0x48] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021EFE70 +MOD05_021EFE70: ; 0x021EFE70 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFE9C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFEA4 ; =UNK05_021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFEA8 ; =0x000003D9 + mov r3, #0xb + bl Std_CreateYesNoMenu + str r0, [r4, #0x44] + mov r0, #7 + str r0, [r4, #0x48] +_021EFE9C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFEA4: .word UNK05_021F8B44 +_021EFEA8: .word 0x000003D9 + + thumb_func_start MOD05_021EFEAC +MOD05_021EFEAC: ; 0x021EFEAC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFEC4 + mov r0, #0 + pop {r4, pc} +_021EFEC4: + cmp r0, #0 + bne _021EFECC + mov r0, #0xc + b _021EFED6 +_021EFECC: + add r0, r4, #0 + mov r1, #0x22 + bl MOD05_021F01EC + mov r0, #4 +_021EFED6: + str r0, [r4, #0x48] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021EFEDC +MOD05_021EFEDC: ; 0x021EFEDC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r6, r0, #0 + bl FUN_02028448 + add r7, r0, #0 + add r0, r7, #1 + mov r1, #4 + bl ListMenuItems_ctor + str r0, [r5] + mov r0, #1 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021EFFB8 ; =0x000002A1 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x30] + add r1, #0x20 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x13 + bl AddWindowParameterized + add r0, r5, #0 + ldr r2, _021EFFBC ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl DrawFrameAndWindow1 + mov r4, #0 +_021EFF2E: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + beq _021EFF54 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020283A4 + add r1, r0, #0 + ldr r0, [r5, #8] + bl CopyU16ArrayToString + ldr r0, [r5] + ldr r1, [r5, #8] + add r2, r4, #0 + bl ListMenuItems_AddItem +_021EFF54: + add r4, r4, #1 + cmp r4, #0x20 + blt _021EFF2E + mov r2, #0xb + add r3, r2, #0 + ldr r0, [r5] + ldr r1, [r5, #0x3c] + sub r3, #0xd + bl ListMenuItems_AppendFromMsgData + ldr r4, _021EFFC0 ; =UNK05_021F8B4C + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r1, r7, #1 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + mov r1, #5 + strh r1, [r0, #0x12] + ldr r0, [r5] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x20 + str r0, [sp, #0x20] + ldr r0, _021EFFC4 ; =MOD05_021F0304 + str r5, [sp, #0x30] + str r0, [sp, #0x18] + add r0, r2, #0 + add r2, r1, #0 + mov r3, #4 + bl ListMenuInit + str r0, [r5, #4] + add r0, r5, #0 + add r0, #0x20 + bl CopyWindowToVram + mov r0, #9 + str r0, [r5, #0x48] + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EFFB8: .word 0x000002A1 +_021EFFBC: .word 0x000003D9 +_021EFFC0: .word UNK05_021F8B4C +_021EFFC4: .word MOD05_021F0304 + + thumb_func_start MOD05_021EFFC8 +MOD05_021EFFC8: ; 0x021EFFC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + bl ListMenu_ProcessInput + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021EFFE6 + add r0, r0, #1 + cmp r4, r0 + bne _021F000E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EFFE6: + ldr r0, _021F007C ; =0x000005DC + bl PlaySE + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #0 + bl BufferPlayersName + add r0, r5, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 + str r0, [r5, #0x48] + b _021F0056 +_021F000E: + ldr r0, _021F007C ; =0x000005DC + bl PlaySE + add r0, r5, #0 + add r0, #0x90 + str r4, [r0] + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r7, r0, #0 + mov r0, #4 + bl PlayerProfile_new + add r6, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020283A4 + add r1, r0, #0 + add r0, r6, #0 + bl CopyPlayerName + ldr r0, [r5, #0x38] + mov r1, #0 + add r2, r6, #0 + bl BufferPlayersName + add r0, r6, #0 + bl FreeToHeap + add r0, r5, #0 + mov r1, #0x24 + bl MOD05_021F01EC + mov r0, #0xa + str r0, [r5, #0x48] +_021F0056: + add r0, r5, #0 + add r0, #0x20 + mov r1, #0 + bl ClearFrameAndWindow1 + add r0, r5, #0 + add r0, #0x20 + bl RemoveWindow + mov r1, #0 + ldr r0, [r5, #4] + add r2, r1, #0 + bl DestroyListMenu + ldr r0, [r5] + bl ListMenuItems_dtor + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F007C: .word 0x000005DC + + thumb_func_start MOD05_021F0080 +MOD05_021F0080: ; 0x021F0080 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021F00AC + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021F00B4 ; =UNK05_021F8B44 + ldr r0, [r0, #8] + ldr r2, _021F00B8 ; =0x000003D9 + mov r3, #0xb + bl Std_CreateYesNoMenu + str r0, [r4, #0x44] + mov r0, #0xb + str r0, [r4, #0x48] +_021F00AC: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021F00B4: .word UNK05_021F8B44 +_021F00B8: .word 0x000003D9 + + thumb_func_start MOD05_021F00BC +MOD05_021F00BC: ; 0x021F00BC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r4, r0, #0 + ldr r0, [r5, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021F00DC + mov r0, #0 + pop {r3, r4, r5, pc} +_021F00DC: + cmp r0, #0 + bne _021F0104 + add r1, r5, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, r4, #0 + bl FUN_02028468 + mov r0, #0 + add r1, r5, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r5, #0x34] + ldr r1, [r1] + mov r2, #0x1f + mov r3, #4 + bl FUN_02033A70 + mov r0, #1 + b _021F0122 +_021F0104: + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #0 + bl BufferPlayersName + add r0, r5, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 +_021F0122: + str r0, [r5, #0x48] + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0128 +MOD05_021F0128: ; 0x021F0128 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0204652C + + thumb_func_start MOD05_021F0130 +MOD05_021F0130: ; 0x021F0130 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02046528 + ldr r0, [r4, #0x48] + cmp r0, #0xc + bhi _021F01E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F014A: ; jump table + .short _021F0164 - _021F014A - 2 ; case 0 + .short _021F0174 - _021F014A - 2 ; case 1 + .short _021F0184 - _021F014A - 2 ; case 2 + .short _021F018C - _021F014A - 2 ; case 3 + .short _021F0194 - _021F014A - 2 ; case 4 + .short _021F019C - _021F014A - 2 ; case 5 + .short _021F01A4 - _021F014A - 2 ; case 6 + .short _021F01AC - _021F014A - 2 ; case 7 + .short _021F01B4 - _021F014A - 2 ; case 8 + .short _021F01BC - _021F014A - 2 ; case 9 + .short _021F01C4 - _021F014A - 2 ; case 10 + .short _021F01CC - _021F014A - 2 ; case 11 + .short _021F01D4 - _021F014A - 2 ; case 12 +_021F0164: + add r0, r4, #0 + bl MOD05_021EFBF8 + cmp r0, #0 + beq _021F01E8 + mov r0, #0xc + str r0, [r4, #0x48] + b _021F01E8 +_021F0174: + add r0, r4, #0 + bl MOD05_021EFC74 + cmp r0, #0 + beq _021F01E8 + mov r0, #0xc + str r0, [r4, #0x48] + b _021F01E8 +_021F0184: + add r0, r4, #0 + bl MOD05_021EFD40 + b _021F01E8 +_021F018C: + add r0, r4, #0 + bl MOD05_021EFD7C + b _021F01E8 +_021F0194: + add r0, r4, #0 + bl MOD05_021EFDF0 + b _021F01E8 +_021F019C: + add r0, r4, #0 + bl MOD05_021EFE2C + b _021F01E8 +_021F01A4: + add r0, r4, #0 + bl MOD05_021EFE70 + b _021F01E8 +_021F01AC: + add r0, r4, #0 + bl MOD05_021EFEAC + b _021F01E8 +_021F01B4: + add r0, r4, #0 + bl MOD05_021EFEDC + b _021F01E8 +_021F01BC: + add r0, r4, #0 + bl MOD05_021EFFC8 + b _021F01E8 +_021F01C4: + add r0, r4, #0 + bl MOD05_021F0080 + b _021F01E8 +_021F01CC: + add r0, r4, #0 + bl MOD05_021F00BC + b _021F01E8 +_021F01D4: + add r0, r4, #0 + bl MOD05_021F0290 + add r0, r4, #0 + bl FreeToHeap + bl FUN_02037778 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F01E8: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F01EC +MOD05_021F01EC: ; 0x021F01EC + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, #0x10 + add r5, r1, #0 + bl WindowIsInUse + cmp r0, #0 + beq _021F0204 + add r0, r4, #0 + add r0, #0x10 + bl RemoveWindow +_021F0204: + ldr r0, [r4, #0x3c] + ldr r2, [r4, #8] + add r1, r5, #0 + bl ReadMsgDataIntoString + ldr r0, [r4, #0x38] + ldr r1, [r4, #0xc] + ldr r2, [r4, #8] + bl StringExpandPlaceholders + ldr r0, [r4, #0x30] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x10 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4, #0x30] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02054608 + ldr r0, [r4, #0x30] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r2, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + mov r3, #1 + bl FUN_02054658 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0254 +MOD05_021F0254: ; 0x021F0254 + push {r4, lr} + mov r1, #0 + mov r2, #0x94 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #4 + bl ScrStrBufs_new + str r0, [r4, #0x38] + ldr r2, _021F028C ; =0x00000251 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl NewMsgDataFromNarc + str r0, [r4, #0x3c] + mov r0, #0x6e + mov r1, #4 + bl String_ctor + str r0, [r4, #0xc] + mov r0, #0x6e + mov r1, #4 + bl String_ctor + str r0, [r4, #8] + pop {r4, pc} + .balign 4, 0 +_021F028C: .word 0x00000251 + + thumb_func_start MOD05_021F0290 +MOD05_021F0290: ; 0x021F0290 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x3c] + bl DestroyMsgData + ldr r0, [r4, #0x38] + bl ScrStrBufs_delete + ldr r0, [r4, #0xc] + bl String_dtor + ldr r0, [r4, #8] + bl String_dtor + add r0, r4, #0 + add r0, #0x10 + bl WindowIsInUse + cmp r0, #0 + beq _021F02C0 + add r4, #0x10 + add r0, r4, #0 + bl RemoveWindow +_021F02C0: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F02C4 +MOD05_021F02C4: ; 0x021F02C4 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r5, [r6, #0x10] + mov r0, #0xb + mov r1, #0x94 + bl AllocFromHeapAtEnd + add r4, r0, #0 + bl MOD05_021F0254 + str r6, [r4, #0x30] + ldr r0, [r6, #0xc] + str r0, [r4, #0x34] + mov r0, #0 + str r0, [r4, #0x48] + cmp r5, #0 + bne _021F02F2 + ldr r1, _021F0300 ; =MOD05_021F0128 + add r0, r6, #0 + add r2, r4, #0 + bl FUN_020463CC + pop {r4, r5, r6, pc} +_021F02F2: + ldr r1, _021F0300 ; =MOD05_021F0128 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r4, r5, r6, pc} + nop +_021F0300: .word MOD05_021F0128 + + thumb_func_start MOD05_021F0304 +MOD05_021F0304: ; 0x021F0304 + push {r3, lr} + cmp r2, #0 + bne _021F0310 + ldr r0, _021F0314 ; =0x000005DC + bl PlaySE +_021F0310: + pop {r3, pc} + nop +_021F0314: .word 0x000005DC + + .section .rodata + + .global UNK05_021F8B44 +UNK05_021F8B44: ; 0x021F8B44 + .byte 0x03, 0x19, 0x0D, 0x06, 0x04, 0x0D, 0x15, 0x03 + + .global UNK05_021F8B4C +UNK05_021F8B4C: ; 0x021F8B4C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x20, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x10, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F0318.s b/arm9/modules/05/asm/mod05_021F0318.s new file mode 100644 index 00000000..9a597269 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F0318.s @@ -0,0 +1,258 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F0318 +MOD05_021F0318: ; 0x021F0318 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r4, r3, #0 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0 + str r0, [sp, #0x58] + ldr r1, [r4, #0x50] + add r0, sp, #0x60 + add r6, r2, #0 + bl Camera_GetLookAtCamTarget + ldr r3, _021F0434 ; =UNK05_021F8B6C + add r2, sp, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + cmp r6, #0x60 + str r0, [r2] + bhs _021F0352 + mov r1, #0x60 + sub r0, r1, r6 + lsl r0, r0, #0x18 + ldrh r2, [r4] + lsr r0, r0, #0x18 + mul r0, r2 + bl _s32_div_f + b _021F036C +_021F0352: + sub r6, #0x60 + lsl r0, r6, #0x18 + ldrh r1, [r4] + lsr r0, r0, #0x18 + mul r0, r1 + mov r1, #0x60 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #0 + mvn r0, r0 + mul r0, r1 +_021F036C: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r5, #0x80 + bhs _021F038A + mov r2, #0x80 + sub r2, r2, r5 + lsl r2, r2, #0x18 + ldrh r0, [r4, #2] + lsr r2, r2, #0x18 + mul r2, r0 + asr r0, r2, #6 + lsr r0, r0, #0x19 + add r0, r2, r0 + lsl r0, r0, #9 + b _021F03A8 +_021F038A: + ldrh r2, [r4, #2] + sub r5, #0x80 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + add r3, r2, #0 + mul r3, r0 + asr r0, r3, #6 + lsr r0, r0, #0x19 + add r0, r3, r0 + lsl r0, r0, #9 + lsr r2, r0, #0x10 + mov r0, #0 + mvn r0, r0 + mul r0, r2 + lsl r0, r0, #0x10 +_021F03A8: + lsr r5, r0, #0x10 + asr r0, r1, #4 + lsl r3, r0, #1 + lsl r1, r3, #1 + ldr r2, _021F0438 ; =FX_SinCosTable_ + add r3, r3, #1 + lsl r3, r3, #1 + ldrsh r1, [r2, r1] + ldrsh r2, [r2, r3] + add r0, sp, #0x24 + bl MTX_RotX43_ + add r0, sp, #0xc + add r1, sp, #0x24 + add r2, sp, #0x18 + bl MTX_MultVec43 + asr r0, r5, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + ldr r3, _021F0438 ; =FX_SinCosTable_ + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0x24 + bl MTX_RotY43_ + add r0, sp, #0x18 + add r1, sp, #0x24 + add r2, r0, #0 + bl MTX_MultVec43 + add r0, sp, #0x18 + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl MTX_MultVec43 + add r0, r4, #0 + add r0, #0x10 + add r1, sp, #0x18 + bl VEC_DotProduct + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FX_Div + neg r0, r0 + add r1, sp, #0x18 + add r2, r4, #4 + add r3, sp, #0 + bl VEC_MultAdd + ldr r1, [sp, #0x60] + ldr r0, [sp] + add r2, sp, #0x54 + add r0, r1, r0 + str r0, [sp, #0x54] + ldr r1, [sp, #0x68] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x5c] + ldmia r2!, {r0, r1} + stmia r7!, {r0, r1} + ldr r0, [r2] + str r0, [r7] + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + nop +_021F0434: .word UNK05_021F8B6C +_021F0438: .word FX_SinCosTable_ + + thumb_func_start MOD05_021F043C +MOD05_021F043C: ; 0x021F043C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x60 + bl AllocFromHeap + add r1, r5, #0 + add r4, r0, #0 + bl MOD05_021F0454 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0454 +MOD05_021F0454: ; 0x021F0454 + push {r4, r5, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + bl Camera_GetAngle + add r0, r4, #0 + bl Camera_GetPerspectiveAngle + strh r0, [r5] + ldrh r0, [r5] + ldr r2, _021F04F0 ; =FX_SinCosTable_ + asr r0, r0, #4 + lsl r1, r0, #1 + lsl r0, r1, #1 + add r1, r1, #1 + lsl r1, r1, #1 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + bl FX_Div + lsl r0, r0, #2 + mov r1, #3 + bl _s32_div_f + bl FX_Atan + ldr r3, _021F04F4 ; =UNK05_021F8B78 + strh r0, [r5, #2] + ldmia r3!, {r0, r1} + add r2, sp, #0x20 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r2] + add r0, sp, #0x14 + bl Camera_GetLookAtCamPos + add r0, sp, #8 + add r1, r4, #0 + bl Camera_GetLookAtCamTarget + add r0, sp, #0x14 + add r1, sp, #8 + add r2, r5, #4 + bl VEC_Subtract + add r3, sp, #0x20 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #4 + str r0, [r2] + add r0, sp, #0x20 + bl VEC_DotProduct + str r0, [r5, #0x1c] + add r0, sp, #0 + ldrh r0, [r0] + ldr r3, _021F04F0 ; =FX_SinCosTable_ + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + add r0, r5, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, #0x20 + bl MTX_RotX43_ + str r4, [r5, #0x50] + add sp, #0x2c + pop {r4, r5, pc} + nop +_021F04F0: .word FX_SinCosTable_ +_021F04F4: .word UNK05_021F8B78 + + thumb_func_start MOD05_021F04F8 +MOD05_021F04F8: ; 0x021F04F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F0512 + bne _021F0508 + bl GF_AssertFail +_021F0508: + ldr r0, [r4] + bl FreeToHeap + mov r0, #0 + str r0, [r4] +_021F0512: + pop {r4, pc} + + .section .rodata + + .global UNK05_021F8B6C +UNK05_021F8B6C: ; 0x021F8B6C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF + + .global UNK05_021F8B78 +UNK05_021F8B78: ; 0x021F8B78 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F0514.s b/arm9/modules/05/asm/mod05_021F0514.s new file mode 100644 index 00000000..e7a6454a --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F0514.s @@ -0,0 +1,4556 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F0514 +MOD05_021F0514: ; 0x021F0514 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058458 + cmp r0, #0x97 + bgt _021F053E + bge _021F05B2 + cmp r0, #0x15 + bgt _021F052E + bge _021F059E + cmp r0, #0 + beq _021F059E + b _021F05BA +_021F052E: + cmp r0, #0x62 + bgt _021F05BA + cmp r0, #0x61 + blt _021F05BA + beq _021F059E + cmp r0, #0x62 + beq _021F059E + b _021F05BA +_021F053E: + cmp r0, #0xb0 + bgt _021F0554 + bge _021F059E + cmp r0, #0x99 + bgt _021F05BA + cmp r0, #0x98 + blt _021F05BA + beq _021F05B2 + cmp r0, #0x99 + beq _021F05B2 + b _021F05BA +_021F0554: + cmp r0, #0xb1 + bgt _021F055C + beq _021F059E + b _021F05BA +_021F055C: + sub r0, #0xb2 + cmp r0, #0x17 + bhi _021F05BA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F056E: ; jump table + .short _021F059E - _021F056E - 2 ; case 0 + .short _021F059E - _021F056E - 2 ; case 1 + .short _021F059E - _021F056E - 2 ; case 2 + .short _021F059E - _021F056E - 2 ; case 3 + .short _021F05BA - _021F056E - 2 ; case 4 + .short _021F05BA - _021F056E - 2 ; case 5 + .short _021F05BA - _021F056E - 2 ; case 6 + .short _021F05BA - _021F056E - 2 ; case 7 + .short _021F059E - _021F056E - 2 ; case 8 + .short _021F059E - _021F056E - 2 ; case 9 + .short _021F059E - _021F056E - 2 ; case 10 + .short _021F059E - _021F056E - 2 ; case 11 + .short _021F05BA - _021F056E - 2 ; case 12 + .short _021F05BA - _021F056E - 2 ; case 13 + .short _021F05BA - _021F056E - 2 ; case 14 + .short _021F05BA - _021F056E - 2 ; case 15 + .short _021F05BA - _021F056E - 2 ; case 16 + .short _021F05A8 - _021F056E - 2 ; case 17 + .short _021F059E - _021F056E - 2 ; case 18 + .short _021F059E - _021F056E - 2 ; case 19 + .short _021F059E - _021F056E - 2 ; case 20 + .short _021F059E - _021F056E - 2 ; case 21 + .short _021F059E - _021F056E - 2 ; case 22 + .short _021F059E - _021F056E - 2 ; case 23 +_021F059E: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + pop {r4, pc} +_021F05A8: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + pop {r4, pc} +_021F05B2: + add r0, r4, #0 + bl MOD05_021F1C24 + pop {r4, pc} +_021F05BA: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #8] + pop {r4, pc} + + thumb_func_start MOD05_021F05C4 +MOD05_021F05C4: ; 0x021F05C4 + push {r3, r4, r5, lr} + mov r1, #0x18 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + add r1, r4, #0 + strh r0, [r4] + add r0, r5, #0 + add r1, #8 + bl MOD05_021F1FC8 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F05EC + add r0, r5, #0 + bl FUN_020586A0 +_021F05EC: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F05F0 +MOD05_021F05F0: ; 0x021F05F0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, #8 + bl MOD05_021F2060 + pop {r4, pc} + + thumb_func_start MOD05_021F0604 +MOD05_021F0604: ; 0x021F0604 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F061C + add r1, r4, #0 + add r1, #0xc + bl MOD05_021F20D8 +_021F061C: + add r4, #8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0634 +MOD05_021F0634: ; 0x021F0634 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0678 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021F0658 + add r1, r4, #0 + add r0, r5, #0 + add r1, #8 + bl MOD05_021F1FC8 +_021F0658: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F0678 + add r1, r4, #0 + add r1, #0xc + bl MOD05_021F20F8 + ldr r1, [r4, #8] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0678: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F067C +MOD05_021F067C: ; 0x021F067C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #8] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F06E6 + cmp r7, #0 + beq _021F06E6 + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #9 + blt _021F06B6 + bl GF_AssertFail +_021F06B6: + lsl r6, r5, #2 + ldr r5, _021F06EC ; UNK05_021FC4B4 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strh r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + str r0, [r1, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F06E6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F06EC: .word UNK05_021FC4B4 + + thumb_func_start MOD05_021F06F0 +MOD05_021F06F0: ; 0x021F06F0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02058628 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F071A + ldr r5, [r5, #8] + cmp r5, #0 + beq _021F071A + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F19A4 +_021F071A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F071C +MOD05_021F071C: ; 0x021F071C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02058628 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F075A + ldr r5, [r5, #8] + cmp r5, #0 + beq _021F075A + add r0, r4, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F074A + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F074A: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F19A4 +_021F075A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F075C +MOD05_021F075C: ; 0x021F075C + push {r4, lr} + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0780 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0786 +_021F0780: + add r0, r4, #0 + bl MOD05_021F194C +_021F0786: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + + thumb_func_start MOD05_021F0790 +MOD05_021F0790: ; 0x021F0790 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F07B4 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F07B4: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F07C8 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F07C8: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F07CC +MOD05_021F07CC: ; 0x021F07CC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F07F0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F07F0: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0804 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0804: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0808 +MOD05_021F0808: ; 0x021F0808 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F082C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F082C: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0840 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0840: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0844 +MOD05_021F0844: ; 0x021F0844 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0868 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0868: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F087C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_0201F854 +_021F087C: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0880 +MOD05_021F0880: ; 0x021F0880 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F08AC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F08AC: + ldr r0, [r4, #4] + cmp r0, #6 + beq _021F08B6 + mov r0, #0 + strh r0, [r4, #2] +_021F08B6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F08FC + ldr r6, _021F0900 ; =UNK05_021FC43C + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #2 + str r0, [r3] + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F08FC + mov r0, #0 + strh r0, [r4, #2] +_021F08FC: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021F0900: .word UNK05_021FC43C + + thumb_func_start MOD05_021F0904 +MOD05_021F0904: ; 0x021F0904 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0930 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F0930: + ldr r0, [r4, #4] + cmp r0, #7 + beq _021F093A + mov r0, #0 + strh r0, [r4, #2] +_021F093A: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0978 + ldr r6, _021F097C ; =UNK05_021FC42C + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #2 + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F0978 + mov r0, #0 + strh r0, [r4, #2] +_021F0978: + add sp, #0x10 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F097C: .word UNK05_021FC42C + + thumb_func_start MOD05_021F0980 +MOD05_021F0980: ; 0x021F0980 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F09AC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F09AC: + ldr r0, [r4, #4] + cmp r0, #8 + beq _021F09B6 + mov r0, #0 + strh r0, [r4, #2] +_021F09B6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F09FC + ldr r6, _021F0A00 ; =UNK05_021FC494 + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #2 + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F09FC + mov r0, #0 + strh r0, [r4, #2] +_021F09FC: + add sp, #0x20 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F0A00: .word UNK05_021FC494 + + thumb_func_start MOD05_021F0A04 +MOD05_021F0A04: ; 0x021F0A04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #8] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0A6E + cmp r7, #0 + beq _021F0A6E + add r0, r4, #0 + + thumb_func_start MOD05_021F0A28 +MOD05_021F0A28: ; 0x021F0A28 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #0xa + blt _021F0A3E + bl GF_AssertFail +_021F0A3E: + lsl r6, r5, #2 + ldr r5, _021F0A74 ; =UNK05_021FC528 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strh r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + str r0, [r1, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F0A6E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0A74: .word UNK05_021FC528 + + thumb_func_start MOD05_021F0A78 +MOD05_021F0A78: ; 0x021F0A78 + push {r4, lr} + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F0A8A + ldr r0, [r2, #4] + cmp r0, #9 + bne _021F0AA2 +_021F0A8A: + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0AA8 +_021F0AA2: + add r0, r4, #0 + bl MOD05_021F194C +_021F0AA8: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0AB4 +MOD05_021F0AB4: ; 0x021F0AB4 + push {r4, lr} + ldr r0, [r2, #4] + add r4, r1, #0 + cmp r0, #9 + beq _021F0ACE + add r0, r4, #0 + mov r1, #4 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0ACE: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0ADC +MOD05_021F0ADC: ; 0x021F0ADC + push {r3, r4, r5, lr} + mov r1, #0x14 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + strb r0, [r4] + bl LCRandom + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + strb r0, [r4, #2] + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B14 + add r0, r5, #0 + bl FUN_020586A0 +_021F0B14: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0B18 +MOD05_021F0B18: ; 0x021F0B18 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, r1, #4 + bl MOD05_021F2060 + pop {r4, pc} + + thumb_func_start MOD05_021F0B2C +MOD05_021F0B2C: ; 0x021F0B2C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B44 + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20D8 +_021F0B44: + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0B58 +MOD05_021F0B58: ; 0x021F0B58 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0B9A + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F0B7A + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 +_021F0B7A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B9A + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20F8 + ldr r1, [r4, #4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0B9A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0B9C +MOD05_021F0B9C: ; 0x021F0B9C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r6, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0C26 + cmp r6, #0 + beq _021F0C26 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + mov r1, #2 + ldrsb r0, [r4, r1] + cmp r0, #0 + beq _021F0BE0 + sub r0, r0, #1 + strb r0, [r4, #2] + add r0, r6, #0 + mov r1, #0 + bl FUN_0201F854 + b _021F0C0C +_021F0BE0: + add r0, r6, #0 + lsl r1, r1, #0xb + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + cmp r0, #0x20 + blt _021F0C0C + mov r0, #0 + strb r0, [r4, #1] + bl LCRandom + lsr r1, r0, #0x1f + lsl r2, r0, #0x1c + sub r2, r2, r1 + mov r0, #0x1c + ror r2, r0 + add r0, r1, r2 + strb r0, [r4, #2] +_021F0C0C: + strb r7, [r4] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r4, #3] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F19A4 +_021F0C26: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F0C28 +MOD05_021F0C28: ; 0x021F0C28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #8] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0CEA + cmp r4, #0 + beq _021F0CEA + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + cmp r0, #0 + bne _021F0C9E + cmp r7, #1 + bls _021F0C66 + mov r0, #1 + str r0, [sp, #4] + b _021F0C6A +_021F0C66: + mov r0, #0 + str r0, [sp, #4] +_021F0C6A: + add r0, r4, #0 + bl FUN_0201F844 + ldr r1, [sp, #4] + cmp r1, r0 + bne _021F0C7C + ldr r0, [r6, #4] + cmp r0, #0 + bne _021F0C94 +_021F0C7C: + ldr r1, [sp, #4] + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 +_021F0C94: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + b _021F0CD0 +_021F0C9E: + cmp r7, #1 + bls _021F0CA8 + mov r0, #1 + str r0, [sp] + b _021F0CAC +_021F0CA8: + mov r0, #0 + str r0, [sp] +_021F0CAC: + add r0, r4, #0 + bl FUN_0201F844 + ldr r1, [sp] + cmp r1, r0 + beq _021F0CC6 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0CC6: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0CD0: + strh r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + str r0, [r6, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F0CEA: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0CF0 +MOD05_021F0CF0: ; 0x021F0CF0 + push {r3, r4, r5, lr} + mov r1, #0x14 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + strb r0, [r4] + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0D16 + add r0, r5, #0 + bl FUN_020586A0 +_021F0D16: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0D18 +MOD05_021F0D18: ; 0x021F0D18 + push {r3, r4, lr} + sub sp, #0xc + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r4, r0, #0 + str r1, [r2, #8] + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, r1, #4 + bl MOD05_021F2060 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B94 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0D44 +MOD05_021F0D44: ; 0x021F0D44 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0D5C + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20D8 +_021F0D5C: + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0D70 +MOD05_021F0D70: ; 0x021F0D70 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0DB2 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F0D92 + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 +_021F0D92: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0DB2 + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20F8 + ldr r1, [r4, #4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0DB2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0DB4 +MOD05_021F0DB4: ; 0x021F0DB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #4] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0E1E + cmp r7, #0 + beq _021F0E1E + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #0xa + blt _021F0DEE + bl GF_AssertFail +_021F0DEE: + lsl r6, r5, #2 + ldr r5, _021F0E24 ; =UNK05_021FC500 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strb r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + strb r0, [r1, #2] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F0E1E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0E24: .word UNK05_021FC500 + + thumb_func_start MOD05_021F0E28 +MOD05_021F0E28: ; 0x021F0E28 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0E56 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E56: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F0E6C + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E6C: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F0E8E + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E8E: + add r0, r5, #0 + bl MOD05_021F194C + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0E98 +MOD05_021F0E98: ; 0x021F0E98 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0EC0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0EF6 +_021F0EC0: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F0ED6 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r4, r5, r6, pc} +_021F0ED6: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F0EF6 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] +_021F0EF6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0F0A + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F0F0A: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F0F0C +MOD05_021F0F0C: ; 0x021F0F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0F32 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0F48 +_021F0F32: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0F48 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0F48: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0F5C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0F5C: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0F60 +MOD05_021F0F60: ; 0x021F0F60 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0F86 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0F9C +_021F0F86: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0F9C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0F9C: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0FB0 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0FB0: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0FB4 +MOD05_021F0FB4: ; 0x021F0FB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0FDA + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0FF0 +_021F0FDA: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0FF0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0FF0: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1004 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_0201F854 +_021F1004: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1008 +MOD05_021F1008: ; 0x021F1008 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F1036 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F104C +_021F1036: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F104C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F104C: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #6 + beq _021F1058 + mov r0, #0 + strb r0, [r4, #1] +_021F1058: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F109E + ldr r6, _021F10A4 ; =UNK05_021FC458 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F109E + mov r0, #0 + strb r0, [r4, #1] +_021F109E: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021F10A4: .word UNK05_021FC458 + + thumb_func_start MOD05_021F10A8 +MOD05_021F10A8: ; 0x021F10A8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F10D6 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F10EC +_021F10D6: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F10EC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F10EC: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #7 + beq _021F10F8 + mov r0, #0 + strb r0, [r4, #1] +_021F10F8: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1136 + ldr r6, _021F113C ; =UNK05_021FC3EC + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #1 + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F1136 + mov r0, #0 + strb r0, [r4, #1] +_021F1136: + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021F113C: .word UNK05_021FC3EC + + thumb_func_start MOD05_021F1140 +MOD05_021F1140: ; 0x021F1140 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F116E + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F1184 +_021F116E: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F1184 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F1184: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #8 + beq _021F1190 + mov r0, #0 + strb r0, [r4, #1] +_021F1190: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F11D6 + ldr r6, _021F11DC ; =UNK05_021FC474 + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #1 + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F11D6 + mov r0, #0 + strb r0, [r4, #1] +_021F11D6: + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_021F11DC: .word UNK05_021FC474 + + thumb_func_start MOD05_021F11E0 +MOD05_021F11E0: ; 0x021F11E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F1206 + add r0, r3, #0 + bl MOD05_021F2FB8 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F121E +_021F1206: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + beq _021F121E + add r0, r3, #0 + bl MOD05_021F2FB8 + add r1, r0, #0 + add r0, r4, #0 + mov r2, #4 + bl MOD05_021F1958 +_021F121E: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1232 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F1232: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1234 +MOD05_021F1234: ; 0x021F1234 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + str r0, [sp] + add r0, r7, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r7, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F12B6 + ldr r0, [sp] + cmp r0, #0 + beq _021F12B6 + add r0, r7, #0 + bl FUN_020584C4 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_0205854C + str r0, [sp, #4] + cmp r0, #0xc + blt _021F1272 + bl GF_AssertFail +_021F1272: + mov r1, #2 + ldrsb r2, [r4, r1] + cmp r2, #0 + bne _021F128C + ldr r0, [sp, #4] + cmp r0, r2 + beq _021F128C + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _021F128C + sub r0, r1, #3 + strb r0, [r4] +_021F128C: + ldr r5, [sp, #4] + ldr r1, [sp] + lsl r6, r5, #2 + ldr r5, _021F12BC ; =UNK05_021FC4D8 + ldr r3, [sp, #8] + ldr r5, [r5, r6] + add r0, r7, #0 + add r2, r4, #0 + blx r5 + ldr r0, [sp, #8] + ldr r1, [sp] + strb r0, [r4] + ldr r0, [sp, #4] + strb r0, [r4, #2] + add r0, r7, #0 + bl MOD05_021F2F48 + ldr r1, [sp] + add r0, r7, #0 + bl MOD05_021F19A4 +_021F12B6: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021F12BC: .word UNK05_021FC4D8 + + thumb_func_start MOD05_021F12C0 +MOD05_021F12C0: ; 0x021F12C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r3, #0 + add r4, r2, #0 + add r2, sp, #0 + ldr r3, _021F1348 ; =UNK05_021FC3FC + add r5, r1, #0 + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + lsl r0, r6, #2 + ldr r1, [r7, r0] + mov r0, #0 + ldrsb r0, [r4, r0] + cmp r6, r0 + beq _021F12FE + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F12FE: + mov r2, #2 + ldrsb r0, [r4, r2] + cmp r0, #0 + beq _021F1316 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F1316: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F133A + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F133A: + add r0, r5, #0 + lsl r1, r2, #0xb + bl FUN_0201F854 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1348: .word UNK05_021FC3FC + + thumb_func_start MOD05_021F134C +MOD05_021F134C: ; 0x021F134C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r3, #0 + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD05_021F2FC4 + add r4, r0, #0 + mov r0, #0 + ldrsb r1, [r6, r0] + ldr r0, [sp] + cmp r0, r1 + bne _021F1370 + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r0, #0 + beq _021F1382 +_021F1370: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F13B2 +_021F1382: + cmp r0, #0xa + beq _021F1398 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F13B2 +_021F1398: + add r0, r5, #0 + bl FUN_0201F844 + cmp r4, r0 + beq _021F13B2 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 +_021F13B2: + add r0, r7, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F13C6 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F13C6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F13C8 +MOD05_021F13C8: ; 0x021F13C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r3, #0 + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD05_021F2FC4 + add r4, r0, #0 + mov r0, #0 + ldrsb r1, [r6, r0] + ldr r0, [sp] + cmp r0, r1 + beq _021F13F6 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F142A +_021F13F6: + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r0, #0xb + beq _021F1410 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F142A +_021F1410: + add r0, r5, #0 + bl FUN_0201F844 + cmp r4, r0 + beq _021F142A + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 +_021F142A: + add r0, r7, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F143E + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F143E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F1440 +MOD05_021F1440: ; 0x021F1440 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #4] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + cmp r7, #0 + beq _021F14B4 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F14B4 + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #4 + blt _021F147A + bl GF_AssertFail +_021F147A: + lsl r6, r5, #2 + ldr r5, _021F14B8 ; =UNK05_021FC40C + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F1658 + ldr r1, [sp, #4] + ldr r0, [sp] + strb r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + strb r0, [r1, #2] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F14B4: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F14B8: .word UNK05_021FC40C + + thumb_func_start MOD05_021F14BC +MOD05_021F14BC: ; 0x021F14BC + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F14D0 + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _021F14E6 +_021F14D0: + ldr r1, _021F1508 ; =UNK05_021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 +_021F14E6: + add r0, r4, #0 + bl FUN_0201F8C0 + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r0, r1 + bpl _021F14F6 + mov r1, #0 +_021F14F6: + add r0, r4, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + nop +_021F1508: .word UNK05_021FC41C + + thumb_func_start MOD05_021F150C +MOD05_021F150C: ; 0x021F150C + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F1520 + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #1 + beq _021F1534 +_021F1520: + ldr r1, _021F1540 ; =UNK05_021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1534: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 +_021F1540: .word UNK05_021FC41C + + thumb_func_start MOD05_021F1544 +MOD05_021F1544: ; 0x021F1544 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + bne _021F155A + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #2 + beq _021F1578 +_021F155A: + ldr r1, _021F1604 ; =UNK05_021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r5, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #0xfe + bic r1, r0 + strb r1, [r4, #3] +_021F1578: + add r0, r5, #0 + bl FUN_0201F8C0 + add r1, r0, #0 + ldrb r0, [r4, #3] + lsl r2, r0, #0x18 + lsr r2, r2, #0x19 + beq _021F1592 + cmp r2, #1 + beq _021F15B4 + cmp r2, #2 + beq _021F15DA + b _021F15F4 +_021F1592: + mov r3, #1 + lsl r3, r3, #0xc + sub r1, r1, r3 + mov r3, #0xa + lsl r3, r3, #0xc + cmp r1, r3 + bgt _021F15F4 + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0xfe + lsl r2, r2, #0x19 + bic r0, r3 + lsr r2, r2, #0x18 + orr r0, r2 + strb r0, [r4, #3] + b _021F15F4 +_021F15B4: + mov r3, #1 + lsl r3, r3, #0xc + add r1, r1, r3 + mov r3, #0xf + lsl r3, r3, #0xc + cmp r1, r3 + blt _021F15F4 + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0xfe + lsl r2, r2, #0x19 + bic r0, r3 + lsr r2, r2, #0x18 + orr r0, r2 + strb r0, [r4, #3] + mov r0, #0 + strb r0, [r4, #1] + b _021F15F4 +_021F15DA: + mov r0, #1 + ldrsb r2, [r4, r0] + add r2, r2, #1 + strb r2, [r4, #1] + ldrsb r0, [r4, r0] + cmp r0, #0x1e + blt _021F15F4 + mov r0, #0 + strb r0, [r4, #1] + ldrb r2, [r4, #3] + mov r0, #0xfe + bic r2, r0 + strb r2, [r4, #3] +_021F15F4: + add r0, r5, #0 + bl FUN_0201F890 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F1604: .word UNK05_021FC41C + + thumb_func_start MOD05_021F1608 +MOD05_021F1608: ; 0x021F1608 + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F161C + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #3 + beq _021F1632 +_021F161C: + ldr r1, _021F1654 ; =UNK05_021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 +_021F1632: + add r0, r4, #0 + bl FUN_0201F8C0 + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r0, r1 + bpl _021F1642 + mov r1, #0 +_021F1642: + add r0, r4, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + nop +_021F1654: .word UNK05_021FC41C + + thumb_func_start MOD05_021F1658 +MOD05_021F1658: ; 0x021F1658 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r2, #0 + add r2, sp, #0 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + str r0, [r2, #8] + add r0, r1, #0 + bl FUN_0201F880 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r4, #3 + bhi _021F16BE + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F1688: ; jump table + .short _021F16BE - _021F1688 - 2 ; case 0 + .short _021F1690 - _021F1688 - 2 ; case 1 + .short _021F169C - _021F1688 - 2 ; case 2 + .short _021F16AE - _021F1688 - 2 ; case 3 +_021F1690: + cmp r0, #0x18 + blt _021F16BE + mov r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #8] + b _021F16BE +_021F169C: + cmp r0, #0x28 + bge _021F16A8 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp] + b _021F16BE +_021F16A8: + ldr r0, _021F16CC ; =0xFFFFB000 + str r0, [sp] + b _021F16BE +_021F16AE: + cmp r0, #0x38 + bge _021F16B8 + ldr r0, _021F16D0 ; =0xFFFFF000 + str r0, [sp] + b _021F16BE +_021F16B8: + mov r0, #5 + lsl r0, r0, #0xc + str r0, [sp] +_021F16BE: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B94 + add sp, #0xc + pop {r4, r5, pc} + nop +_021F16CC: .word 0xFFFFB000 +_021F16D0: .word 0xFFFFF000 + + thumb_func_start MOD05_021F16D4 +MOD05_021F16D4: ; 0x021F16D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1734 + cmp r4, #0 + beq _021F1734 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + strb r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r7, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F1734: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1738 +MOD05_021F1738: ; 0x021F1738 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F179C + cmp r4, #0 + beq _021F179C + add r0, r5, #0 + bl FUN_020584C4 + strb r0, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #0 + beq _021F1782 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1782: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F179C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F17A0 +MOD05_021F17A0: ; 0x021F17A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1836 + cmp r4, #0 + beq _021F1836 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + cmp r0, #0 + bne _021F17F8 + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #1 + beq _021F17EC + add r0, r4, #0 + mov r1, #1 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F17EC: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + b _021F181C +_021F17F8: + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #0 + beq _021F1812 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1812: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F181C: + strb r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F1836: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F1838 +MOD05_021F1838: ; 0x021F1838 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F18A0 + cmp r4, #0 + beq _021F18A0 + add r0, r5, #0 + bl FUN_020584C4 + mov r1, #0 + ldrsb r1, [r6, r1] + add r7, r0, #0 + cmp r7, r1 + beq _021F187C + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F187C: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 + add r0, r5, #0 + strb r7, [r6] + bl FUN_0205854C + strb r0, [r6, #2] +_021F18A0: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F18A4 +MOD05_021F18A4: ; 0x021F18A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F191A + cmp r4, #0 + beq _021F191A + add r0, r5, #0 + bl FUN_020584C4 + str r0, [sp] + add r0, r5, #0 + bl FUN_0205854C + add r7, r0, #0 + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r7, r0 + beq _021F18FA + cmp r7, #0 + bne _021F18EA + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + b _021F18F2 +_021F18EA: + add r0, r4, #0 + mov r1, #1 + bl FUN_0201F830 +_021F18F2: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F18FA: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [sp] + add r1, r4, #0 + strb r0, [r6] + add r0, r5, #0 + strb r7, [r6, #2] + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F191A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F191C +MOD05_021F191C: ; 0x021F191C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r4, r1, #0xc + add r0, r4, #0 + add r1, r6, #0 + bl _s32_div_f + sub r1, r4, r1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F194C +MOD05_021F194C: ; 0x021F194C + ldr r3, _021F1954 ; =MOD05_021F191C + mov r1, #8 + bx r3 + nop +_021F1954: .word MOD05_021F191C + + thumb_func_start MOD05_021F1958 +MOD05_021F1958: ; 0x021F1958 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + bl MOD05_021F191C + add r0, r5, #0 + bl FUN_0201F8C0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0201F890 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1980 +MOD05_021F1980: ; 0x021F1980 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F194C + add r0, r5, #0 + bl FUN_0201F8C0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0201F890 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F19A4 +MOD05_021F19A4: ; 0x021F19A4 + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F19B8 + mov r4, #0 +_021F19B8: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F19D6 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F19D6 + mov r4, #0 +_021F19D6: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F19E4 +MOD05_021F19E4: ; 0x021F19E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl MOD06_0224A130 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F19FC +MOD05_021F19FC: ; 0x021F19FC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl MOD06_0224A6B8 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A14 +MOD05_021F1A14: ; 0x021F1A14 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl MOD06_0224A8D4 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A2C +MOD05_021F1A2C: ; 0x021F1A2C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl MOD06_0224AA40 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A44 +MOD05_021F1A44: ; 0x021F1A44 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1A48 +MOD05_021F1A48: ; 0x021F1A48 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A5E + bl MOD05_021E4DE4 + mov r0, #0 + str r0, [r4] +_021F1A5E: + pop {r4, pc} + + thumb_func_start MOD05_021F1A60 +MOD05_021F1A60: ; 0x021F1A60 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A76 + bl MOD05_021E4DE4 + mov r0, #0 + str r0, [r4] +_021F1A76: + pop {r4, pc} + + thumb_func_start MOD05_021F1A78 +MOD05_021F1A78: ; 0x021F1A78 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A8C + bl GF_AssertFail +_021F1A8C: + add r0, r5, #0 + bl MOD06_0224A130 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A98 +MOD05_021F1A98: ; 0x021F1A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1AAC + bl GF_AssertFail +_021F1AAC: + add r0, r5, #0 + bl MOD06_0224A6B8 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AB8 +MOD05_021F1AB8: ; 0x021F1AB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1ACC + bl GF_AssertFail +_021F1ACC: + add r0, r5, #0 + bl MOD06_0224A8D4 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AD8 +MOD05_021F1AD8: ; 0x021F1AD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1AEC + bl GF_AssertFail +_021F1AEC: + add r0, r5, #0 + bl MOD06_0224AA40 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AF8 +MOD05_021F1AF8: ; 0x021F1AF8 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + bl MOD06_0224A6FC + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + .section .rodata + + .global UNK05_021F8B84 +UNK05_021F8B84: ; 0x021F8B84 + .byte 0x07, 0x00, 0x00, 0x00 + + .global UNK05_021F8B88 +UNK05_021F8B88: ; 0x021F8B88 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00 + + .global UNK05_021F8B90 +UNK05_021F8B90: ; 0x021F8B90 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00 + + .global UNK05_021F8BA0 +UNK05_021F8BA0: ; 0x021F8BA0 + .word MOD05_021F0CF0, MOD05_021F18A4, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8BB4 +UNK05_021F8BB4: ; 0x021F8BB4 + .word MOD05_021F0CF0, MOD05_021F17A0, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8BC8 +UNK05_021F8BC8: ; 0x021F8BC8 + .word MOD05_021F0CF0, MOD05_021F0DB4, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8BDC +UNK05_021F8BDC: ; 0x021F8BDC + .word MOD05_021F1B0C, MOD05_021F1B2C, MOD05_021F1B58, MOD05_021F1B60 + .word MOD05_021F1B8C + + .global UNK05_021F8BF0 +UNK05_021F8BF0: ; 0x021F8BF0 + .word MOD05_021F19FC, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 + .word MOD05_021F1A98 + + .global UNK05_021F8C04 +UNK05_021F8C04: ; 0x021F8C04 + .word MOD05_021F0ADC, MOD05_021F0B9C, MOD05_021F0B18, MOD05_021F0B2C + .word MOD05_021F0B58 + + .global UNK05_021F8C18 +UNK05_021F8C18: ; 0x021F8C18 + .word MOD05_021F0CF0, MOD05_021F1234, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8C2C +UNK05_021F8C2C: ; 0x021F8C2C + .word MOD05_021F0CF0, MOD05_021F16D4, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8C40 +UNK05_021F8C40: ; 0x021F8C40 + .word MOD05_021F05C4, MOD05_021F071C, MOD05_021F05F0, MOD05_021F0604 + .word MOD05_021F0634 + + .global UNK05_021F8C54 +UNK05_021F8C54: ; 0x021F8C54 + .word FUN_0205C3B0, FUN_0205C3D0, FUN_0205C490, FUN_0205C4A8 + .word FUN_0205C4D8 + + .global UNK05_021F8C68 +UNK05_021F8C68: ; 0x021F8C68 + .word MOD05_021F05C4, MOD05_021F067C, MOD05_021F05F0, MOD05_021F0604 + .word MOD05_021F0634 + + .global UNK05_021F8C7C +UNK05_021F8C7C: ; 0x021F8C7C + .word MOD05_021F1A14, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 + .word MOD05_021F1AB8 + + .global UNK05_021F8C90 +UNK05_021F8C90: ; 0x021F8C90 + .word MOD05_021F19E4, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 + .word MOD05_021F1A78 + + .global UNK05_021F8CA4 +UNK05_021F8CA4: ; 0x021F8CA4 + .word MOD05_021F0CF0, MOD05_021F1838, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8CB8 +UNK05_021F8CB8: ; 0x021F8CB8 + .word MOD05_021F05C4, MOD05_021F0A04, MOD05_021F05F0, MOD05_021F0604 + .word MOD05_021F0634 + + .global UNK05_021F8CCC +UNK05_021F8CCC: ; 0x021F8CCC + .word MOD05_021F05C4, MOD05_021F06F0, MOD05_021F05F0, MOD05_021F0604 + .word MOD05_021F0634 + + .global UNK05_021F8CE0 +UNK05_021F8CE0: ; 0x021F8CE0 + .word MOD05_021F05C4, MOD05_021F0C28, MOD05_021F05F0, MOD05_021F0604 + .word MOD05_021F0634 + + .global UNK05_021F8CF4 +UNK05_021F8CF4: ; 0x021F8CF4 + .word MOD05_021F0CF0, MOD05_021F1440, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8D08 +UNK05_021F8D08: ; 0x021F8D08 + .word MOD05_021F1A2C, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 + .word MOD05_021F1AD8 + + .global UNK05_021F8D1C +UNK05_021F8D1C: ; 0x021F8D1C + .word MOD05_021F1BD0, MOD05_021F1BF4, MOD05_021F1C14, MOD05_021F1B60 + .word MOD05_021F1B8C + + .global UNK05_021F8D30 +UNK05_021F8D30: ; 0x021F8D30 + .word MOD05_021F0CF0, MOD05_021F1738, MOD05_021F0D18, MOD05_021F0D44 + .word MOD05_021F0D70 + + .global UNK05_021F8D44 +UNK05_021F8D44: ; 0x021F8D44 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8D5C +UNK05_021F8D5C: ; 0x021F8D5C + .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8D74 +UNK05_021F8D74: ; 0x021F8D74 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8D8C +UNK05_021F8D8C: ; 0x021F8D8C + .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8DA4 +UNK05_021F8DA4: ; 0x021F8DA4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8DBC +UNK05_021F8DBC: ; 0x021F8DBC + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8DD4 +UNK05_021F8DD4: ; 0x021F8DD4 + .byte 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8DEC +UNK05_021F8DEC: ; 0x021F8DEC + .byte 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8E10 +UNK05_021F8E10: ; 0x021F8E10 + .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8E34 +UNK05_021F8E34: ; 0x021F8E34 + .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8E58 +UNK05_021F8E58: ; 0x021F8E58 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8E94 +UNK05_021F8E94: ; 0x021F8E94 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8ED0 +UNK05_021F8ED0: ; 0x021F8ED0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 + .byte 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8F0C +UNK05_021F8F0C: ; 0x021F8F0C + .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8F48 +UNK05_021F8F48: ; 0x021F8F48 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 + .byte 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8F90 +UNK05_021F8F90: ; 0x021F8F90 + .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 + .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x50, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 + .byte 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F8FFC +UNK05_021F8FFC: ; 0x021F8FFC + .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00 + .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x58, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00 + .byte 0x5F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 + + .global UNK05_021F9080 +UNK05_021F9080: ; 0x021F9080 + .word MOD05_021F1EDC + .word MOD05_021F1EF4 + .word MOD05_021F1EF8 + .word MOD05_021F1EFC + .word MOD05_021F1F00 + + .global UNK05_021F9094 +UNK05_021F9094: ; 0x021F9094 + .word 0x00000000 + .byte 0x78, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7A, 0x01, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021F90E4 +UNK05_021F90E4: ; 0x021F90E4 + .byte 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x9B, 0x01, 0x00, 0x00 + .byte 0x13, 0x00, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021F9194 +UNK05_021F9194: ; 0x021F9194 + .word 0x00001001 + .word 0x00001002 + .word 0x00001003 + .word 0x00001004 + .word 0x00001005 + .word 0x00001006 + .word 0x00001007 + .word 0x00001008 + .word 0x00001009 + .word 0x0000100A + .word 0x0000100B + .word 0x0000100C + .word 0x0000100D + .word 0x0000100E + .word 0x0000100F + .word 0x00001010 + .word 0x00001011 + .word 0x00001012 + .word 0x00001013 + .word 0x00001014 + .word 0x00001015 + .word 0x00001016 + .word 0x00001017 + .word 0x00001018 + .word 0x00001019 + .word 0x0000101A + .word 0x0000101B + .word 0x0000101C + .word 0x0000101D + .word 0x0000101E + .word 0x0000101F + .word 0x00001020 + .word 0x00001021 + .word 0x00001022 + .word 0x00001023 + .word 0x00001024 + .word 0x00001025 + .word 0x00001026 + .word 0x00001027 + .word 0x00001028 + .word 0x00001029 + .word 0x0000102A + .word 0x0000102B + .word 0x0000102C + .word 0x0000102D + .word 0x0000102E + .word 0x0000102F + .word 0x00001030 + .word 0x00001031 + .word 0x00001032 + .word 0x00001033 + .word 0x00001034 + .word 0x00001035 + .word 0x00001036 + .word 0x00001037 + .word 0x00001038 + .word 0x00001039 + .word 0x0000103A + .word 0x0000103B + .word 0x0000103C + .word 0x0000103D + .word 0x0000103E + .word 0x0000103F + .word 0x00001040 + .word 0x00001041 + .word 0x00001042 + .word 0x00001043 + .word 0x00001044 + .word 0x00001045 + .word 0x00001046 + .word 0x00001047 + .word 0x00001048 + .word 0x00001049 + .word 0x0000104A + .word 0x0000104B + .word 0x0000104C + .word 0x0000104D + .word 0x0000104E + .word 0x0000104F + .word 0x00001050 + .word 0x00001051 + .word 0x00001052 + .word 0x00001053 + .word 0x00001054 + .word 0x00001055 + .word 0x00001056 + .word 0x00001057 + .word 0x00001058 + .word 0x00001059 + .word 0x0000105A + .word 0x0000105B + .word 0x0000105C + .word 0x0000105D + .word 0x0000105E + .word 0x0000105F + .word 0x00001060 + .word 0x00001061 + .word 0x00001062 + .word 0x00001063 + .word 0x00001064 + .word 0x00001065 + .word 0x00001066 + .word 0x00001067 + .word 0x00001068 + .word 0x00001069 + .word 0x0000106A + .word 0x0000106B + .word 0x0000106C + .word 0x0000106D + .word 0x0000106E + .word 0x0000106F + .word 0x00001070 + .word 0x00001071 + .word 0x00001072 + .word 0x00001073 + .word 0x00001074 + .word 0x00001075 + .word 0x00001076 + .word 0x00001077 + .word 0x00001078 + .word 0x00001079 + .word 0x0000107A + .word 0x0000107B + .word 0x0000107C + .word 0x0000107D + .word 0x0000107E + .word 0x0000107F + .word 0x00001080 + .word 0x00001081 + .word 0x00001082 + .word 0x00001083 + .word 0x00001084 + .word 0x00001085 + .word 0x00001086 + .word 0x00001087 + .word 0x00001088 + .word 0x00001089 + .word 0x0000108A + .word 0x0000108B + .word 0x0000108C + .word 0x0000108D + .word 0x0000108E + .word 0x0000108F + .word 0x00001090 + .word 0x00001091 + .word 0x00001092 + .word 0x00001093 + .word 0x00001094 + .word 0x00001095 + .word 0x00001096 + .word 0x00001097 + .word 0x00001098 + .word 0x00001099 + .word 0x0000109A + .word 0x0000109B + .word 0x0000109C + .word 0x0000109D + .word 0x0000109E + .word 0x0000109F + .word 0x000010A0 + .word 0x000010A1 + .word 0x000010A2 + .word 0x000010A3 + .word 0x000010A4 + .word 0x000010A5 + .word 0x000010A6 + .word 0x000010A7 + .word 0x000010A8 + .word 0x000010A9 + .word 0x000010AA + .word 0x000010AB + .word 0x000010AC + .word 0x000010AD + .word 0x000010AE + .word 0x000010AF + .word 0x000010B0 + .word 0x000010B1 + .word 0x000010B2 + .word 0x000010B3 + .word 0x000010B4 + .word 0x000010B5 + .word 0x000010B6 + .word 0x000010B7 + .word 0x000010B8 + .word 0x000010B9 + .word 0x000010BA + .word 0x000010BB + .word 0x000010BC + .word 0x000010BD + .word 0x000010BE + .word 0x000010BF + .word 0x000010C0 + + .global UNK05_021F9494 +UNK05_021F9494: ; 0x021F9494 + .word 0x00, UNK05_021F8BC8 + .word 0x01, UNK05_021F8C68 + .word 0x02, UNK05_021F8C68 + .word 0x03, UNK05_021F8C68 + .word 0x04, UNK05_021F8C68 + .word 0x05, UNK05_021F8C68 + .word 0x06, UNK05_021F8C68 + .word 0x07, UNK05_021F8C68 + .word 0x08, UNK05_021F8C68 + .word 0x09, UNK05_021F8C68 + .word 0x0A, UNK05_021F8C68 + .word 0x0B, UNK05_021F8C68 + .word 0x0C, UNK05_021F8C68 + .word 0x0D, UNK05_021F8C68 + .word 0x0E, UNK05_021F8C68 + .word 0x0F, UNK05_021F8C68 + .word 0x10, UNK05_021F8C68 + .word 0x11, UNK05_021F8C68 + .word 0x12, UNK05_021F8C68 + .word 0x13, UNK05_021F8C68 + .word 0x14, UNK05_021F8C68 + .word 0x15, UNK05_021F8C18 + .word 0x16, UNK05_021F8C68 + .word 0x17, UNK05_021F8C68 + .word 0x18, UNK05_021F8C68 + .word 0x19, UNK05_021F8C68 + .word 0x1A, UNK05_021F8CB8 + .word 0x1B, UNK05_021F8C68 + .word 0x1C, UNK05_021F8C68 + .word 0x1D, UNK05_021F8C68 + .word 0x1E, UNK05_021F8C68 + .word 0x1F, UNK05_021F8C68 + .word 0x20, UNK05_021F8C68 + .word 0x21, UNK05_021F8C68 + .word 0x22, UNK05_021F8C68 + .word 0x23, UNK05_021F8C68 + .word 0x24, UNK05_021F8C68 + .word 0x25, UNK05_021F8C68 + .word 0x26, UNK05_021F8C68 + .word 0x27, UNK05_021F8C68 + .word 0x28, UNK05_021F8C68 + .word 0x29, UNK05_021F8C68 + .word 0x2A, UNK05_021F8C68 + .word 0x2B, UNK05_021F8C68 + .word 0x2C, UNK05_021F8C68 + .word 0x2D, UNK05_021F8C68 + .word 0x2E, UNK05_021F8C68 + .word 0x2F, UNK05_021F8C68 + .word 0x30, UNK05_021F8C68 + .word 0x31, UNK05_021F8C68 + .word 0x32, UNK05_021F8C68 + .word 0x33, UNK05_021F8C68 + .word 0x34, UNK05_021F8C68 + .word 0x35, UNK05_021F8C68 + .word 0x36, UNK05_021F8C68 + .word 0x37, UNK05_021F8C68 + .word 0x38, UNK05_021F8C68 + .word 0x39, UNK05_021F8C68 + .word 0x3A, UNK05_021F8C68 + .word 0x3B, UNK05_021F8C68 + .word 0x3C, UNK05_021F8C68 + .word 0x3D, UNK05_021F8C68 + .word 0x3E, UNK05_021F8C68 + .word 0x3F, UNK05_021F8C68 + .word 0x40, UNK05_021F8C68 + .word 0x41, UNK05_021F8C68 + .word 0x42, UNK05_021F8C68 + .word 0x43, UNK05_021F8C68 + .word 0x44, UNK05_021F8C68 + .word 0x45, UNK05_021F8C68 + .word 0x46, UNK05_021F8C68 + .word 0x47, UNK05_021F8C68 + .word 0x48, UNK05_021F8C68 + .word 0x49, UNK05_021F8C68 + .word 0x4A, UNK05_021F8C68 + .word 0x4B, UNK05_021F8C68 + .word 0x4C, UNK05_021F8C68 + .word 0x4D, UNK05_021F8C68 + .word 0x4E, UNK05_021F8C68 + .word 0x4F, UNK05_021F8C68 + .word 0x50, UNK05_021F8C68 + .word 0x51, UNK05_021F8C68 + .word 0x52, UNK05_021F8C68 + .word 0x53, UNK05_021F8C68 + .word 0x54, UNK05_021F8CCC + .word 0x55, UNK05_021F8CCC + .word 0x56, UNK05_021F8CCC + .word 0x57, UNK05_021F8CCC + .word 0x58, UNK05_021F8C68 + .word 0x59, UNK05_021F8C68 + .word 0x5A, UNK05_021F8C68 + .word 0x5B, UNK05_021F8C90 + .word 0x5C, UNK05_021F8C90 + .word 0x5D, UNK05_021F8C90 + .word 0x5E, UNK05_021F8C90 + .word 0x5F, UNK05_021F8C90 + .word 0x60, UNK05_021F8C90 + .word 0x61, UNK05_021F8BC8 + .word 0x62, UNK05_021F8C18 + .word 0x63, UNK05_021F8C68 + .word 0x64, UNK05_021F8C54 + .word 0x76, UNK05_021F8BF0 + .word 0x78, UNK05_021F8C68 + .word 0x79, UNK05_021F8C68 + .word 0x7A, UNK05_021F8C68 + .word 0x7B, UNK05_021F8C68 + .word 0x7C, UNK05_021F8C68 + .word 0x7D, UNK05_021F8C68 + .word 0x7E, UNK05_021F8C68 + .word 0x7F, UNK05_021F8C68 + .word 0x80, UNK05_021F8C68 + .word 0x81, UNK05_021F8C68 + .word 0x82, UNK05_021F8C68 + .word 0x83, UNK05_021F8C68 + .word 0x84, UNK05_021F8C68 + .word 0x85, UNK05_021F8C68 + .word 0x86, UNK05_021F8C68 + .word 0x87, UNK05_021F8C68 + .word 0x88, UNK05_021F8C68 + .word 0x89, UNK05_021F8C68 + .word 0x8A, UNK05_021F8C68 + .word 0x8B, UNK05_021F8C68 + .word 0x8C, UNK05_021F8C68 + .word 0x8D, UNK05_021F8C68 + .word 0x8E, UNK05_021F8C68 + .word 0x8F, UNK05_021F8C68 + .word 0x90, UNK05_021F8C68 + .word 0x91, UNK05_021F8C68 + .word 0x92, UNK05_021F8C68 + .word 0x93, UNK05_021F8C68 + .word 0x94, UNK05_021F8C68 + .word 0x95, UNK05_021F8C68 + .word 0x96, UNK05_021F8C68 + .word 0x97, UNK05_021F8D1C + .word 0x98, UNK05_021F8D1C + .word 0x99, UNK05_021F8D1C + .word 0x9A, UNK05_021F8BDC + .word 0x9B, UNK05_021F8BDC + .word 0x9C, UNK05_021F8C40 + .word 0x9D, UNK05_021F8C40 + .word 0x9E, UNK05_021F8C68 + .word 0x9F, UNK05_021F8C40 + .word 0xA0, UNK05_021F8C40 + .word 0xA1, UNK05_021F8C40 + .word 0xA2, UNK05_021F8C68 + .word 0xA3, UNK05_021F8C68 + .word 0xA4, UNK05_021F8C68 + .word 0xA5, UNK05_021F8C68 + .word 0xA6, UNK05_021F8C68 + .word 0xA7, UNK05_021F8C68 + .word 0xA8, UNK05_021F8C68 + .word 0xA9, UNK05_021F8C68 + .word 0xAA, UNK05_021F8C68 + .word 0xAB, UNK05_021F8C68 + .word 0xAC, UNK05_021F8C68 + .word 0xAD, UNK05_021F8CE0 + .word 0xAE, UNK05_021F8C68 + .word 0xAF, UNK05_021F8C68 + .word 0xB0, UNK05_021F8D30 + .word 0xB1, UNK05_021F8D30 + .word 0xB4, UNK05_021F8BB4 + .word 0xB5, UNK05_021F8BB4 + .word 0xB2, UNK05_021F8C2C + .word 0xB3, UNK05_021F8C2C + .word 0xB6, UNK05_021F8CCC + .word 0xB7, UNK05_021F8C7C + .word 0xB8, UNK05_021F8CCC + .word 0xB9, UNK05_021F8C68 + .word 0xBA, UNK05_021F8BC8 + .word 0xBB, UNK05_021F8BC8 + .word 0xBC, UNK05_021F8CF4 + .word 0xBD, UNK05_021F8CF4 + .word 0xBE, UNK05_021F8C68 + .word 0xBF, UNK05_021F8C68 + .word 0xC0, UNK05_021F8C68 + .word 0xC1, UNK05_021F8C68 + .word 0xC2, UNK05_021F8C68 + .word 0xC3, UNK05_021F8C04 + .word 0xC4, UNK05_021F8CA4 + .word 0xC5, UNK05_021F8CA4 + .word 0xC6, UNK05_021F8D30 + .word 0xC7, UNK05_021F8D30 + .word 0xC8, UNK05_021F8BA0 + .word 0xC9, UNK05_021F8BA0 + .word 0xCA, UNK05_021F8CCC + .word 0xCB, UNK05_021F8CCC + .word 0xCC, UNK05_021F8C68 + .word 0xCD, UNK05_021F8C68 + .word 0xCE, UNK05_021F8C68 + .word 0xCF, UNK05_021F8C68 + .word 0xD0, UNK05_021F8C68 + .word 0xD1, UNK05_021F8D08 + +; 0x021F9A94 + .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global UNK05_021F9A9C +UNK05_021F9A9C: ; 0x021F9A9C + .byte 0x00, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x12, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x14, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 + .byte 0x16, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x18, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x1A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x1C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x1E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x20, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x22, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x24, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x26, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 + .byte 0x28, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x2A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x2C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x2E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x30, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x32, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x34, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x36, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x38, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x3A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x3C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x3E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x40, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x42, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x44, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x46, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x48, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x4A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x4C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x4E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x50, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x52, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x54, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x56, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x58, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x5A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x5C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x5E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x62, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x64, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x7A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x7C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x7E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x82, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x84, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x86, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x8A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x8C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x8E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x90, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x92, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x94, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x96, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x98, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x9A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x9C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x9E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xA0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xA2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xA4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xA6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xA8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xAA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xAC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xAE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xB0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xB2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xB4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xB6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 + .byte 0xB8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xBA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xBC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xBE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xC0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xC2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xC5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xC7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 + .byte 0xC9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xCB, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 + .byte 0xCD, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 + .byte 0xCF, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 + .byte 0xD1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FA0AC +UNK05_021FA0AC: ; 0x021FA0AC + .byte 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 + .byte 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00 + .byte 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 + .byte 0x18, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 + .byte 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 + .byte 0x1C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00 + .byte 0x1E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00 + .byte 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 + .byte 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00 + .byte 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + .byte 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00 + .byte 0x28, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00 + .byte 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00 + .byte 0x2C, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00 + .byte 0x2E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00 + .byte 0x30, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 + .byte 0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00 + .byte 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00 + .byte 0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00 + .byte 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00 + .byte 0x3A, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00 + .byte 0x3C, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00 + .byte 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00 + .byte 0x40, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00 + .byte 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00 + .byte 0x44, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00 + .byte 0x46, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00 + .byte 0x48, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00 + .byte 0x4A, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00 + .byte 0x4C, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00 + .byte 0x4E, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00 + .byte 0x50, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00 + .byte 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00 + .byte 0x54, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00 + .byte 0x56, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00 + .byte 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00 + .byte 0x5A, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00 + .byte 0x62, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 + .byte 0x02, 0x10, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00 + .byte 0x7A, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00 + .byte 0x7C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 + .byte 0x7E, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00 + .byte 0x82, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 + .byte 0x84, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00 + .byte 0x86, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00 + .byte 0x8A, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00 + .byte 0x8C, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00 + .byte 0x8E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00 + .byte 0x90, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00 + .byte 0x92, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00 + .byte 0x94, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + .byte 0x96, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00 + .byte 0x98, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00 + .byte 0x9A, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00 + .byte 0x9C, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00 + .byte 0x9E, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00 + .byte 0xA0, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00 + .byte 0xA2, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00 + .byte 0xA4, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00 + .byte 0xA6, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00 + .byte 0xA8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00 + .byte 0xAA, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00 + .byte 0xAC, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00 + .byte 0xAE, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00 + .byte 0xB0, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00 + .byte 0xB4, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00 + .byte 0xB2, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 + .byte 0xB6, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00 + .byte 0xB9, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00 + .byte 0xBB, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00 + .byte 0xBD, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00 + .byte 0xBF, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00 + .byte 0x04, 0x10, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00 + .byte 0x06, 0x10, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00 + .byte 0x08, 0x10, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00 + .byte 0x0A, 0x10, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x0B, 0x10, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00 + .byte 0x0C, 0x10, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x0D, 0x10, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00 + .byte 0x0E, 0x10, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00 + .byte 0x10, 0x10, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00 + .byte 0x12, 0x10, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x10, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00 + .byte 0x14, 0x10, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00 + .byte 0x16, 0x10, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00 + .byte 0x18, 0x10, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x19, 0x10, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 + .byte 0x1A, 0x10, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x1B, 0x10, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00 + .byte 0x1C, 0x10, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x1D, 0x10, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00 + .byte 0x1E, 0x10, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00 + .byte 0x20, 0x10, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x21, 0x10, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00 + .byte 0x22, 0x10, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00 + .byte 0x24, 0x10, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x25, 0x10, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00 + .byte 0x26, 0x10, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00 + .byte 0x28, 0x10, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00 + .byte 0x2A, 0x10, 0x00, 0x00, 0xD1, 0x00, 0x00, 0x00, 0x2B, 0x10, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00 + .byte 0x2C, 0x10, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00 + .byte 0x2E, 0x10, 0x00, 0x00, 0xD5, 0x00, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00 + .byte 0x30, 0x10, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00 + .byte 0x32, 0x10, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0x33, 0x10, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00 + .byte 0x34, 0x10, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x35, 0x10, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00 + .byte 0x36, 0x10, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x37, 0x10, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00 + .byte 0x38, 0x10, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x39, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00 + .byte 0x3A, 0x10, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3B, 0x10, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00 + .byte 0x3C, 0x10, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x3D, 0x10, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00 + .byte 0x3E, 0x10, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00 + .byte 0x40, 0x10, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00 + .byte 0x42, 0x10, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00 + .byte 0x46, 0x10, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0x47, 0x10, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00 + .byte 0x48, 0x10, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x49, 0x10, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .byte 0x4A, 0x10, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x4B, 0x10, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00 + .byte 0x4C, 0x10, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x4D, 0x10, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00 + .byte 0x4E, 0x10, 0x00, 0x00, 0xF5, 0x00, 0x00, 0x00, 0x4F, 0x10, 0x00, 0x00, 0xF6, 0x00, 0x00, 0x00 + .byte 0x50, 0x10, 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0x51, 0x10, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00 + .byte 0x52, 0x10, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x53, 0x10, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x55, 0x10, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00 + .byte 0x56, 0x10, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x57, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00 + .byte 0x58, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x59, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 + .byte 0x5A, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5B, 0x10, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00 + .byte 0x5C, 0x10, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x5D, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00 + .byte 0x5E, 0x10, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x5F, 0x10, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00 + .byte 0x60, 0x10, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x61, 0x10, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00 + .byte 0x62, 0x10, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x63, 0x10, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00 + .byte 0x64, 0x10, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00 + .byte 0x66, 0x10, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00, 0x67, 0x10, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00 + .byte 0x68, 0x10, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x69, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 + .byte 0x6A, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x6B, 0x10, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00 + .byte 0x6C, 0x10, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x6D, 0x10, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 + .byte 0x6E, 0x10, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x6F, 0x10, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00 + .byte 0x70, 0x10, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x71, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00 + .byte 0x72, 0x10, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x73, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00 + .byte 0x74, 0x10, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x75, 0x10, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00 + .byte 0x76, 0x10, 0x00, 0x00, 0x1D, 0x01, 0x00, 0x00, 0x77, 0x10, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x00 + .byte 0x78, 0x10, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x79, 0x10, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00 + .byte 0x7A, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x7B, 0x10, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00 + .byte 0x7C, 0x10, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x7D, 0x10, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00 + .byte 0x7E, 0x10, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00 + .byte 0x80, 0x10, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x81, 0x10, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00 + .byte 0x82, 0x10, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x83, 0x10, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00 + .byte 0x84, 0x10, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x85, 0x10, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00 + .byte 0x86, 0x10, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x87, 0x10, 0x00, 0x00, 0x2E, 0x01, 0x00, 0x00 + .byte 0x88, 0x10, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x89, 0x10, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00 + .byte 0x8A, 0x10, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x8B, 0x10, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00 + .byte 0x8C, 0x10, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x8D, 0x10, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00 + .byte 0x8E, 0x10, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x8F, 0x10, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00 + .byte 0x90, 0x10, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x91, 0x10, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00 + .byte 0x92, 0x10, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x93, 0x10, 0x00, 0x00, 0x3A, 0x01, 0x00, 0x00 + .byte 0x94, 0x10, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x95, 0x10, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00 + .byte 0x96, 0x10, 0x00, 0x00, 0x3D, 0x01, 0x00, 0x00, 0x97, 0x10, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x00 + .byte 0x98, 0x10, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x99, 0x10, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00 + .byte 0x9A, 0x10, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x9B, 0x10, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00 + .byte 0x9C, 0x10, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x9D, 0x10, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00 + .byte 0x9E, 0x10, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x9F, 0x10, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00 + .byte 0xA0, 0x10, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xA1, 0x10, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00 + .byte 0xA2, 0x10, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0xA3, 0x10, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00 + .byte 0xA4, 0x10, 0x00, 0x00, 0x4B, 0x01, 0x00, 0x00, 0xA5, 0x10, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00 + .byte 0xA6, 0x10, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0xA7, 0x10, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00 + .byte 0xA8, 0x10, 0x00, 0x00, 0x4F, 0x01, 0x00, 0x00, 0xA9, 0x10, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00 + .byte 0xAA, 0x10, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0xAB, 0x10, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00 + .byte 0xAC, 0x10, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0xAD, 0x10, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00 + .byte 0xAE, 0x10, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0xAF, 0x10, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00 + .byte 0xB0, 0x10, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0xB1, 0x10, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00 + .byte 0xB2, 0x10, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0xB3, 0x10, 0x00, 0x00, 0x5A, 0x01, 0x00, 0x00 + .byte 0xB4, 0x10, 0x00, 0x00, 0x5B, 0x01, 0x00, 0x00, 0xB5, 0x10, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00 + .byte 0xB6, 0x10, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0xB7, 0x10, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00 + .byte 0xB8, 0x10, 0x00, 0x00, 0x5F, 0x01, 0x00, 0x00, 0xB9, 0x10, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00 + .byte 0xBA, 0x10, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0xBB, 0x10, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00 + .byte 0xBC, 0x10, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0xBD, 0x10, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00 + .byte 0xBE, 0x10, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0xBF, 0x10, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00 + .byte 0xC0, 0x10, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00 + .byte 0xC2, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00 + .byte 0xC4, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00 + .byte 0xC6, 0x00, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00 + .byte 0xC8, 0x00, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00 + .byte 0xCA, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00 + .byte 0xCC, 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00 + .byte 0xCE, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00 + .byte 0xD0, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FAC6C +UNK05_021FAC6C: ; 0x021FAC6C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .word UNK05_021F8F90 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .word UNK05_021F8FFC + .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word UNK05_021F8F48 + .byte 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x55, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .word UNK05_021F8F90 + .byte 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .word UNK05_021F8FFC + .byte 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x02, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x03, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .word UNK05_021F8D74 + .byte 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .word UNK05_021F8D74 + .byte 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .word UNK05_021F8D74 + .byte 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .word UNK05_021F8D44 + .byte 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .word UNK05_021F8D44 + .byte 0x9C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .word UNK05_021F8D5C + .byte 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 + .word UNK05_021F8D5C + .byte 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 + .word UNK05_021F8D5C + .byte 0xA0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 + .word UNK05_021F8D5C + .byte 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .word UNK05_021F8D5C + .byte 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .word UNK05_021F8DEC + .byte 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .word UNK05_021F8DA4 + .byte 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .word UNK05_021F8DA4 + .byte 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .word UNK05_021F8E94 + .byte 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .word UNK05_021F8E94 + .byte 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .word UNK05_021F8E10 + .byte 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .word UNK05_021F8E10 + .byte 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xB8, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 + .word UNK05_021F8F90 + .byte 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 + .word UNK05_021F8F90 + .byte 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .word UNK05_021F8E58 + .byte 0xBD, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .word UNK05_021F8E58 + .byte 0xBE, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xBF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0x04, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x05, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x06, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x07, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x08, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x09, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x0F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x10, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x11, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x12, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x13, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x14, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x15, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x16, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x17, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x18, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x19, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x1F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x20, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x21, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x22, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x23, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x24, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x25, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x26, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x27, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x28, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x29, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x2F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x30, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x31, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x32, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x33, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x34, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x35, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x36, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x37, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x38, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x39, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x3F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x40, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x41, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x42, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x43, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x44, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x45, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x46, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x47, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x48, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x49, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x4F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x50, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x51, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x52, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x53, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x54, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x55, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x56, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x57, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x58, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x59, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x5F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x60, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x61, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x62, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x63, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x64, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x65, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x66, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x67, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x68, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x69, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x6F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x70, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x71, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x72, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x73, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x74, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x75, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x76, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x77, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x78, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x79, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x7F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x80, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x81, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x82, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x83, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x84, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x85, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x86, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x87, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x88, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x89, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x8F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x90, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x91, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x92, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x93, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x94, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x95, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x96, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x97, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x98, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x99, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0x9F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xA9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xAF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xB9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xBF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xC0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .word UNK05_021F8DD4 + .byte 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word UNK05_021F8D8C + .byte 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 + .word UNK05_021F8ED0 + .byte 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 + .word UNK05_021F8ED0 + .byte 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 + .word UNK05_021F8DBC + .byte 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 + .word UNK05_021F8DBC + .byte 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + .word UNK05_021F8E34 + .byte 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + .word UNK05_021F8E34 + .byte 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xCB, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word UNK05_021F8F0C + .byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC3EC +UNK05_021FC3EC: ; 0x021FC3EC + .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC3FC +UNK05_021FC3FC: ; 0x021FC3FC + .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 + + .global UNK05_021FC40C +UNK05_021FC40C: ; 0x021FC40C + .word MOD05_021F14BC, MOD05_021F150C, MOD05_021F1544, MOD05_021F1608 + + .global UNK05_021FC41C +UNK05_021FC41C: ; 0x021FC41C + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global UNK05_021FC42C +UNK05_021FC42C: ; 0x021FC42C + .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC43C +UNK05_021FC43C: ; 0x021FC43C + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC458 +UNK05_021FC458: ; 0x021FC458 + .byte 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC474 +UNK05_021FC474: ; 0x021FC474 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC494 +UNK05_021FC494: ; 0x021FC494 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC4B4 +UNK05_021FC4B4: ; 0x021FC4B4 + .word MOD05_021F075C, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC + .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904 + .word MOD05_021F0980 + + .global UNK05_021FC4D8 +UNK05_021FC4D8: ; 0x021FC4D8 + .word MOD05_021F12C0, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C + .word MOD05_021F0F60, MOD05_021F1008, MOD05_021F1008, MOD05_021F1008 + .word MOD05_021F134C, MOD05_021F13C8 + + .global UNK05_021FC500 +UNK05_021FC500: ; 0x021FC500 + .word MOD05_021F0E28, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C + .word MOD05_021F0F60, MOD05_021F0FB4, MOD05_021F1008, MOD05_021F10A8 + .word MOD05_021F1140, MOD05_021F11E0 + + .global UNK05_021FC528 +UNK05_021FC528: ; 0x021FC528 + .word MOD05_021F0A78, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC + .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904 + .word MOD05_021F0980, MOD05_021F0AB4 diff --git a/arm9/modules/05/asm/mod05_021F1B0C.s b/arm9/modules/05/asm/mod05_021F1B0C.s new file mode 100644 index 00000000..79bd0475 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F1B0C.s @@ -0,0 +1,236 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F1B0C +MOD05_021F1B0C: ; 0x021F1B0C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD05_021F1C34 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B2C +MOD05_021F1B2C: ; 0x021F1B2C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1B54 + cmp r4, #0 + beq _021F1B54 + add r0, r5, #0 + bl MOD05_021F1C48 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F1B54: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B58 +MOD05_021F1B58: ; 0x021F1B58 + ldr r3, _021F1B5C ; =MOD05_021F1CA4 + bx r3 + .balign 4, 0 +_021F1B5C: .word MOD05_021F1CA4 + + thumb_func_start MOD05_021F1B60 +MOD05_021F1B60: ; 0x021F1B60 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1B76 + add r1, r4, #4 + bl MOD05_021F20D8 +_021F1B76: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B8C +MOD05_021F1B8C: ; 0x021F1B8C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1BCC + ldr r0, [r4] + cmp r0, #0 + bne _021F1BAE + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1FC8 +_021F1BAE: + ldr r0, [r4] + cmp r0, #0 + beq _021F1BCC + add r1, r4, #4 + bl MOD05_021F20F8 + ldr r1, [r4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F1BCC: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1BD0 +MOD05_021F1BD0: ; 0x021F1BD0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD05_021F1C34 + mov r1, #0 + mov r0, #6 + lsl r0, r0, #0xe + str r0, [sp, #4] + str r1, [sp] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1BF4 +MOD05_021F1BF4: ; 0x021F1BF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1C12 + cmp r4, #0 + beq _021F1C12 + add r0, r5, #0 + bl MOD05_021F1C48 +_021F1C12: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1C14 +MOD05_021F1C14: ; 0x021F1C14 + ldr r3, _021F1C18 ; =MOD05_021F1CA4 + bx r3 + .balign 4, 0 +_021F1C18: .word MOD05_021F1CA4 + + thumb_func_start MOD05_021F1C1C +MOD05_021F1C1C: ; 0x021F1C1C + ldr r3, _021F1C20 ; =FUN_02058628 + bx r3 + .balign 4, 0 +_021F1C20: .word FUN_02058628 + + thumb_func_start MOD05_021F1C24 +MOD05_021F1C24: ; 0x021F1C24 + push {r3, lr} + bl FUN_02058628 + bl MOD05_021F1C30 + pop {r3, pc} + + thumb_func_start MOD05_021F1C30 +MOD05_021F1C30: ; 0x021F1C30 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021F1C34 +MOD05_021F1C34: ; 0x021F1C34 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x10 + bl FUN_02058604 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1FC8 + pop {r4, pc} + + thumb_func_start MOD05_021F1C48 +MOD05_021F1C48: ; 0x021F1C48 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1C64 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1C64 +MOD05_021F1C64: ; 0x021F1C64 + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F1C78 + mov r4, #0 +_021F1C78: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F1C96 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F1C96 + mov r4, #0 +_021F1C96: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1CA4 +MOD05_021F1CA4: ; 0x021F1CA4 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F2060 + pop {r4, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F1CB8.s b/arm9/modules/05/asm/mod05_021F1CB8.s new file mode 100644 index 00000000..11378412 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F1CB8.s @@ -0,0 +1,306 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F1CB8 +MOD05_021F1CB8: ; 0x021F1CB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02058390 + cmp r0, #0 + beq _021F1CD2 + bl GF_AssertFail +_021F1CD2: + add r0, r5, #0 + bl MOD05_021F1D68 + add r0, r5, #0 + bl FUN_02058368 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0205839C + sub r0, r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_020583A0 + str r4, [sp] + str r6, [sp, #4] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r1, r5, #0 + str r7, [sp, #8] + bl MOD05_021F1F04 + add r0, r5, #0 + mov r1, #4 + bl MOD05_021F3780 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020583A4 + ldr r1, _021F1D28 ; =UNK05_021F8B84 + add r0, r4, #0 + ldr r1, [r1] + bl MOD05_021F3810 + add r0, r5, #0 + mov r1, #1 + bl FUN_0205837C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021F1D28: .word UNK05_021F8B84 + + thumb_func_start MOD05_021F1D2C +MOD05_021F1D2C: ; 0x021F1D2C + push {r4, lr} + add r4, r0, #0 + bl FUN_020587E0 + cmp r0, #1 + beq _021F1D3C + bl GF_AssertFail +_021F1D3C: + add r0, r4, #0 + bl FUN_020583A0 + bl MOD05_021F1F58 + add r0, r4, #0 + bl FUN_020583AC + bl MOD05_021F379C + add r0, r4, #0 + mov r1, #0 + bl FUN_020583A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_02058384 + add r0, r4, #0 + bl MOD05_021F1D80 + pop {r4, pc} + + thumb_func_start MOD05_021F1D68 +MOD05_021F1D68: ; 0x021F1D68 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x51 + mov r1, #4 + bl NARC_ctor + add r1, r0, #0 + add r0, r4, #0 + bl FUN_020583F0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1D80 +MOD05_021F1D80: ; 0x021F1D80 + push {r3, lr} + bl FUN_020583F4 + bl NARC_dtor + pop {r3, pc} + + thumb_func_start MOD05_021F1D8C +MOD05_021F1D8C: ; 0x021F1D8C + push {r4, lr} + add r4, r0, #0 + bl FUN_02058578 + mov r1, #4 + bl FUN_02058390 + cmp r0, #0 + bne _021F1DC6 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0 + beq _021F1DC6 + add r0, r4, #0 + bl FUN_02058920 + cmp r0, #0 + beq _021F1DC0 + add r0, r4, #0 + bl FUN_02058AB4 + cmp r0, #0 + beq _021F1DC6 +_021F1DC0: + add r0, r4, #0 + bl FUN_020586A0 +_021F1DC6: + pop {r4, pc} + + thumb_func_start MOD05_021F1DC8 +MOD05_021F1DC8: ; 0x021F1DC8 + push {r3, lr} + bl FUN_02058458 + bl MOD05_021F1DD4 + pop {r3, pc} + + thumb_func_start MOD05_021F1DD4 +MOD05_021F1DD4: ; 0x021F1DD4 + push {r3, lr} + ldr r3, _021F1DF4 ; =UNK05_021F9A9C + ldr r1, _021F1DF8 ; =0x0000FFFF +_021F1DDA: + ldr r2, [r3] + cmp r2, r0 + bne _021F1DE4 + add r0, r3, #0 + pop {r3, pc} +_021F1DE4: + add r3, #8 + ldr r2, [r3] + cmp r2, r1 + bne _021F1DDA + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F1DF4: .word UNK05_021F9A9C +_021F1DF8: .word 0x0000FFFF + + thumb_func_start MOD05_021F1DFC +MOD05_021F1DFC: ; 0x021F1DFC + push {r4, lr} + add r4, r0, #0 + bl FUN_02058920 + cmp r0, #1 + bne _021F1E16 + add r0, r4, #0 + bl FUN_02058AB4 + cmp r0, #0 + bne _021F1E16 + mov r0, #1 + pop {r4, pc} +_021F1E16: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #8 + bl FUN_02058424 + cmp r0, #0 + beq _021F1E28 + mov r0, #1 + pop {r4, pc} +_021F1E28: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F1E2C +MOD05_021F1E2C: ; 0x021F1E2C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r2, #0 + bl FUN_020583F4 + add r1, r4, #0 + add r6, r0, #0 + bl NARC_GetMemberSize + add r1, r0, #0 + cmp r5, #1 + bne _021F1E4C + mov r0, #4 + bl AllocFromHeap + b _021F1E52 +_021F1E4C: + mov r0, #4 + bl AllocFromHeapAtEnd +_021F1E52: + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl NARC_ReadWholeMember + add r0, r5, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1E64 +MOD05_021F1E64: ; 0x021F1E64 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x24 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0x18 + bl FUN_02058B84 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058BA4 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058BC4 + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0xc] + add r0, r1, r0 + ldr r3, [sp] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4] + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x10] + add r0, r1, r0 + ldr r3, [sp, #4] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x14] + add r0, r1, r0 + ldr r3, [sp, #8] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4, #8] + add sp, #0x30 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EC0 +MOD05_021F1EC0: ; 0x021F1EC0 + push {r4, lr} + add r4, r0, #0 + bl FUN_020584AC + add r0, r4, #0 + bl FUN_02058884 + cmp r0, #1 + bne _021F1ED8 + add r0, r4, #0 + bl FUN_020586A0 +_021F1ED8: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EDC +MOD05_021F1EDC: ; 0x021F1EDC + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0205889C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EF4 +MOD05_021F1EF4: ; 0x021F1EF4 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1EF8 +MOD05_021F1EF8: ; 0x021F1EF8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1EFC +MOD05_021F1EFC: ; 0x021F1EFC + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1F00 +MOD05_021F1F00: ; 0x021F1F00 + bx lr + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F1F04.s b/arm9/modules/05/asm/mod05_021F1F04.s new file mode 100644 index 00000000..3f9086b5 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F1F04.s @@ -0,0 +1,3269 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F1F04 +MOD05_021F1F04: ; 0x021F1F04 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #0x41 + add r5, r0, #0 + lsl r2, r2, #2 + str r1, [r5, r2] + add r1, r4, #0 + bl MOD05_021F2E40 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0xa + bl MOD05_021F33B4 + mov r2, #4 + mov r1, #8 + ldr r0, [sp, #0x18] + str r2, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + bl MOD05_021F22E0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2160 + ldr r1, [sp, #0x20] + ldr r2, _021F1F50 ; =UNK05_021F8B90 + ldr r3, _021F1F54 ; =UNK05_021F8B88 + add r0, r5, #0 + bl MOD05_021F25A0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_021F1F50: .word UNK05_021F8B90 +_021F1F54: .word UNK05_021F8B88 + + thumb_func_start MOD05_021F1F58 +MOD05_021F1F58: ; 0x021F1F58 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F3458 + add r0, r4, #0 + bl MOD05_021F21AC + add r0, r4, #0 + bl MOD05_021F2D48 + bl MOD05_021F2E68 + add r0, r4, #0 + bl MOD05_021F2368 + pop {r4, pc} + + thumb_func_start MOD05_021F1F78 +MOD05_021F1F78: ; 0x021F1F78 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0 + add r6, r2, #0 + add r7, r0, #0 + str r1, [r5] + bl MOD05_021F2F3C + add r1, r6, #0 + str r0, [sp] + bl MOD05_021F28E8 + add r4, r0, #0 + bne _021F1FA2 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021F211C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F1FA2: + sub r0, r4, #3 + cmp r0, #1 + bhi _021F1FB8 + ldr r0, [sp] + add r1, r7, #0 + add r2, r5, #0 + add r3, r6, #0 + bl MOD05_021F32BC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F1FB8: + add r0, r7, #0 + add r1, r6, #0 + bl MOD05_021F1FE0 + str r0, [r5] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1FC8 +MOD05_021F1FC8: ; 0x021F1FC8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058458 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1F78 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1FE0 +MOD05_021F1FE0: ; 0x021F1FE0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl MOD05_021F2F3C + add r4, r0, #0 + bl MOD05_021F2D48 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2AC8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F21CC + add r4, r0, #0 + bne _021F200C + bl GF_AssertFail +_021F200C: + add r0, r6, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + add r0, r7, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD05_021F2E70 + add r4, r0, #0 + bne _021F2026 + bl GF_AssertFail +_021F2026: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F202C +MOD05_021F202C: ; 0x021F202C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + bl FUN_0201F744 + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl FUN_02058578 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021F2284 + cmp r0, #0 + bne _021F205C + add r0, r5, #0 + bl MOD05_021F2F3C + add r1, r6, #0 + bl MOD05_021F2240 +_021F205C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2060 +MOD05_021F2060: ; 0x021F2060 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD05_021F2150 + ldr r0, [r4] + cmp r0, #0 + beq _021F2092 + add r0, r5, #0 + bl FUN_02058458 + add r6, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2088 + add r0, r5, #0 + bl FUN_0205C340 + add r6, r0, #0 +_021F2088: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F202C +_021F2092: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2094 +MOD05_021F2094: ; 0x021F2094 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + bl MOD05_021F2150 + ldr r0, [r5] + cmp r0, #0 + beq _021F20AE + bl FUN_0201F744 + mov r0, #0 + str r0, [r5] +_021F20AE: + ldr r0, _021F20D4 ; =0x0000FFFF + cmp r4, r0 + beq _021F20D2 + add r0, r6, #0 + bl FUN_02058578 + add r1, r6, #0 + add r2, r4, #0 + bl MOD05_021F2284 + cmp r0, #0 + bne _021F20D2 + add r0, r6, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + bl MOD05_021F2240 +_021F20D2: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F20D4: .word 0x0000FFFF + + thumb_func_start MOD05_021F20D8 +MOD05_021F20D8: ; 0x021F20D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0201F820 + str r0, [r4] + add r0, r5, #0 + bl FUN_0201F844 + strh r0, [r4, #6] + add r0, r5, #0 + bl FUN_0201F880 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F20F8 +MOD05_021F20F8: ; 0x021F20F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201F80C + ldrh r1, [r4, #6] + add r0, r5, #0 + bl FUN_0201F830 + ldr r1, [r4, #8] + add r0, r5, #0 + bl FUN_0201F86C + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F211C +MOD05_021F211C: ; 0x021F211C + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r6, r0, #0 + add r5, r1, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + add r7, r0, #0 + bl MOD05_021F2460 + cmp r0, #0 + bne _021F2140 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F1FE0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021F2140: + add r0, r7, #0 + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD05_021F32BC + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2150 +MOD05_021F2150: ; 0x021F2150 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + bl MOD05_021F32F8 + pop {r4, pc} + + thumb_func_start MOD05_021F2160 +MOD05_021F2160: ; 0x021F2160 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x28 + add r7, r0, #0 + mov r0, #4 + mul r1, r6 + bl AllocFromHeap + add r4, r0, #0 + add r0, r7, #0 + add r0, #0xe4 + str r4, [r0] + cmp r4, #0 + bne _021F2180 + bl GF_AssertFail +_021F2180: + mov r0, #4 + lsl r1, r6, #3 + bl AllocFromHeap + add r5, r0, #0 + add r7, #0xf4 + str r5, [r7] + cmp r5, #0 + bne _021F2196 + bl GF_AssertFail +_021F2196: + ldr r0, _021F21A8 ; =0x0000FFFF +_021F2198: + str r0, [r5] + str r4, [r5, #4] + add r5, #8 + add r4, #0x28 + sub r6, r6, #1 + bne _021F2198 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F21A8: .word 0x0000FFFF + + thumb_func_start MOD05_021F21AC +MOD05_021F21AC: ; 0x021F21AC + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F2260 + add r1, r4, #0 + add r1, #0xe4 + ldr r1, [r1] + mov r0, #4 + bl FreeToHeapExplicit + add r4, #0xf4 + ldr r1, [r4] + mov r0, #4 + bl FreeToHeapExplicit + pop {r4, pc} + + thumb_func_start MOD05_021F21CC +MOD05_021F21CC: ; 0x021F21CC + push {r4, r5, r6, lr} + add r2, r0, #0 + add r2, #0xf4 + ldr r4, [r2] + ldr r2, [r0, #4] + add r6, r4, #0 + add r5, r2, #0 +_021F21DA: + ldr r3, [r6] + cmp r3, r1 + bne _021F21E4 + ldr r0, [r6, #4] + pop {r4, r5, r6, pc} +_021F21E4: + add r6, #8 + sub r5, r5, #1 + bne _021F21DA + ldr r3, _021F2208 ; =0x0000FFFF +_021F21EC: + ldr r5, [r4] + cmp r5, r3 + bne _021F21FE + str r1, [r4] + ldr r2, [r4, #4] + bl MOD05_021F2ED0 + ldr r0, [r4, #4] + pop {r4, r5, r6, pc} +_021F21FE: + add r4, #8 + sub r2, r2, #1 + bne _021F21EC + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2208: .word 0x0000FFFF + + thumb_func_start MOD05_021F220C +MOD05_021F220C: ; 0x021F220C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_020583A0 + add r1, r0, #0 + add r1, #0xf4 + ldr r2, [r1] + ldr r1, [r0, #4] +_021F221E: + ldr r0, [r2] + cmp r0, r5 + bne _021F2234 + ldr r3, [r2, #4] + mov r2, #5 +_021F2228: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _021F2228 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2234: + add r2, #8 + sub r1, r1, #1 + bne _021F221E + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2240 +MOD05_021F2240: ; 0x021F2240 + add r2, r0, #0 + add r2, #0xf4 + ldr r3, [r2] + ldr r2, [r0, #4] +_021F2248: + ldr r0, [r3] + cmp r0, r1 + bne _021F2254 + ldr r0, _021F225C ; =0x0000FFFF + str r0, [r3] + bx lr +_021F2254: + add r3, #8 + sub r2, r2, #1 + bne _021F2248 + bx lr + .balign 4, 0 +_021F225C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2260 +MOD05_021F2260: ; 0x021F2260 + push {r3, r4} + add r1, r0, #0 + add r1, #0xf4 + ldr r4, [r1] + ldr r1, _021F2280 ; =0x0000FFFF + ldr r3, [r0, #4] + add r0, r1, #0 +_021F226E: + ldr r2, [r4] + cmp r2, r0 + beq _021F2276 + str r1, [r4] +_021F2276: + add r4, #8 + sub r3, r3, #1 + bne _021F226E + pop {r3, r4} + bx lr + .balign 4, 0 +_021F2280: .word 0x0000FFFF + + thumb_func_start MOD05_021F2284 +MOD05_021F2284: ; 0x021F2284 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl FUN_02058368 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_020583BC + str r0, [sp] +_021F229A: + ldr r0, [sp] + cmp r0, r6 + beq _021F22CE + bl FUN_02058830 + cmp r0, #1 + bne _021F22CE + ldr r0, [sp] + bl FUN_02058458 + add r5, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F22C0 + ldr r0, [sp] + bl FUN_0205C340 + add r5, r0, #0 +_021F22C0: + ldr r0, _021F22DC ; =0x0000FFFF + cmp r5, r0 + beq _021F22CE + cmp r5, r7 + bne _021F22CE + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F22CE: + add r0, sp, #0 + bl FUN_020583D4 + sub r4, r4, #1 + bne _021F229A + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F22DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F22E0 +MOD05_021F22E0: ; 0x021F22E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r0, #4 + mov r1, #0x40 + lsl r2, r4, #0xc + add r3, r4, #0 + bl MOD05_021F5990 + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + bl MOD05_021F2614 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F2D80 + add r0, r5, #0 + sub r1, r4, r6 + bl MOD05_021F2D88 + mov r0, #4 + mov r1, #0x41 + lsl r2, r7, #7 + add r3, r7, #0 + bl MOD05_021F5990 + add r1, r5, #0 + add r1, #0xfc + str r0, [r1] + add r0, r5, #0 + bl MOD05_021F2750 + ldr r1, [sp, #0x18] + add r0, r5, #0 + bl MOD05_021F2D90 + ldr r1, [sp, #0x18] + add r0, r5, #0 + sub r1, r7, r1 + bl MOD05_021F2D98 + ldr r0, [sp, #0x1c] + mov r1, #4 + bl FUN_02020E90 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D64 + add r0, r5, #0 + bl MOD05_021F288C + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD05_021F2DA0 + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r5, #0 + sub r1, r2, r1 + bl MOD05_021F2DA8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F2368 +MOD05_021F2368: ; 0x021F2368 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + bl MOD05_021F59EC + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + bl MOD05_021F59EC + add r0, r4, #0 + bl MOD05_021F2D6C + bl FUN_02020ED4 + pop {r4, pc} + .balign 4, 0 +_021F238C: + ldr r3, [r2] + cmp r3, r0 + bne _021F2396 + add r0, r2, #0 + bx lr +_021F2396: + add r2, #8 + ldr r3, [r2] + cmp r3, r1 + bne _021F238C + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F23A4 +MOD05_021F23A4: ; 0x021F23A4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r7, r3, #0 + bl MOD05_021F5AA4 + cmp r0, #1 + bne _021F23BE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F23BE: + ldr r2, [sp, #0x18] + add r0, r4, #0 + add r1, r7, #0 + bl _021F238C + add r7, r0, #0 + bne _021F23D0 + bl GF_AssertFail +_021F23D0: + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_020583F4 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r3, [r7, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F5AE4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F23F0 +MOD05_021F23F0: ; 0x021F23F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xf0 + add r4, r2, #0 + add r6, r1, #0 + ldr r0, [r0] + add r1, r4, #0 + add r7, r3, #0 + bl FUN_02020EF8 + cmp r0, #0 + bne _021F240C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F240C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F3084 + cmp r0, #0 + beq _021F241C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F241C: + ldr r1, _021F2448 ; =0x0000FFFF + add r0, r4, #0 + add r2, r7, #0 + bl _021F238C + add r2, r0, #0 + bne _021F242E + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021F242E: + ldr r2, [r2, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F2FD0 + cmp r0, #1 + bne _021F2442 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F2442: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2448: .word 0x0000FFFF + + thumb_func_start MOD05_021F244C +MOD05_021F244C: ; 0x021F244C + push {r3, lr} + ldr r3, _021F245C ; =UNK05_021FA0AC + add r2, r1, #0 + mov r1, #0 + bl MOD05_021F23F0 + pop {r3, pc} + nop +_021F245C: .word UNK05_021FA0AC + + thumb_func_start MOD05_021F2460 +MOD05_021F2460: ; 0x021F2460 + push {r3, lr} + ldr r3, _021F2470 ; =UNK05_021FA0AC + add r2, r1, #0 + mov r1, #1 + bl MOD05_021F23F0 + pop {r3, pc} + nop +_021F2470: .word UNK05_021FA0AC + + thumb_func_start MOD05_021F2474 +MOD05_021F2474: ; 0x021F2474 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F2494 ; =0x0000FFFF + cmp r1, r0 + beq _021F2492 + add r6, r0, #0 +_021F2484: + add r0, r5, #0 + bl MOD05_021F244C + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F2484 +_021F2492: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2494: .word 0x0000FFFF + + thumb_func_start MOD05_021F2498 +MOD05_021F2498: ; 0x021F2498 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D54 + ldr r0, _021F24C0 ; =UNK05_021F9094 + add r1, r5, #0 + str r0, [sp] + add r1, #0xf8 + ldr r1, [r1] + ldr r3, _021F24C4 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2628 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F24C0: .word UNK05_021F9094 +_021F24C4: .word 0x0000FFFF + + thumb_func_start MOD05_021F24C8 +MOD05_021F24C8: ; 0x021F24C8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D54 + ldr r0, _021F24F0 ; =UNK05_021F9094 + add r1, r5, #0 + str r0, [sp] + add r1, #0xf8 + ldr r1, [r1] + ldr r3, _021F24F4 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2670 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F24F0: .word UNK05_021F9094 +_021F24F4: .word 0x0000FFFF + + thumb_func_start MOD05_021F24F8 +MOD05_021F24F8: ; 0x021F24F8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F2518 ; =0x0000FFFF + cmp r1, r0 + beq _021F2516 + add r6, r0, #0 +_021F2508: + add r0, r5, #0 + bl MOD05_021F2498 + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F2508 +_021F2516: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2518: .word 0x0000FFFF + + thumb_func_start MOD05_021F251C +MOD05_021F251C: ; 0x021F251C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D5C + ldr r0, _021F2544 ; =UNK05_021F90E4 + add r1, r5, #0 + str r0, [sp] + add r1, #0xfc + ldr r1, [r1] + ldr r3, _021F2548 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2764 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F2544: .word UNK05_021F90E4 +_021F2548: .word 0x0000FFFF + + thumb_func_start MOD05_021F254C +MOD05_021F254C: ; 0x021F254C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D5C + ldr r0, _021F2574 ; =UNK05_021F90E4 + add r1, r5, #0 + str r0, [sp] + add r1, #0xfc + ldr r1, [r1] + ldr r3, _021F2578 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F27AC + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F2574: .word UNK05_021F90E4 +_021F2578: .word 0x0000FFFF + + thumb_func_start MOD05_021F257C +MOD05_021F257C: ; 0x021F257C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F259C ; =0x0000FFFF + cmp r1, r0 + beq _021F259A + add r6, r0, #0 +_021F258C: + add r0, r5, #0 + bl MOD05_021F251C + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F258C +_021F259A: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F259C: .word 0x0000FFFF + + thumb_func_start MOD05_021F25A0 +MOD05_021F25A0: ; 0x021F25A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD05_021F2474 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F24F8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F257C + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F25C0: + stmia r0!, {r1} + sub r2, r2, #1 + bne _021F25C0 + bx lr + + thumb_func_start MOD05_021F25C8 +MOD05_021F25C8: ; 0x021F25C8 + push {r3, r4} +_021F25CA: + ldr r4, [r0] + cmp r4, r2 + bne _021F25D8 + str r1, [r0] + mov r0, #1 + pop {r3, r4} + bx lr +_021F25D8: + add r0, r0, #4 + sub r3, r3, #1 + bne _021F25CA + mov r0, #0 + pop {r3, r4} + bx lr +_021F25E4: + ldr r3, [r0] + cmp r3, r1 + bne _021F25EE + mov r0, #1 + bx lr +_021F25EE: + add r0, r0, #4 + sub r2, r2, #1 + bne _021F25E4 + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F25F8 +MOD05_021F25F8: ; 0x021F25F8 + push {r3, r4} +_021F25FA: + ldr r4, [r0] + cmp r4, r1 + bne _021F2608 + str r2, [r0] + mov r0, #1 + pop {r3, r4} + bx lr +_021F2608: + add r0, r0, #4 + sub r3, r3, #1 + bne _021F25FA + mov r0, #0 + pop {r3, r4} + bx lr + + thumb_func_start MOD05_021F2614 +MOD05_021F2614: ; 0x021F2614 + push {r3, lr} + bl MOD05_021F2D78 + ldr r1, _021F2624 ; =0x0000FFFF + mov r2, #8 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F2624: .word 0x0000FFFF + + thumb_func_start MOD05_021F2628 +MOD05_021F2628: ; 0x021F2628 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D84 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D78 + ldr r2, _021F2650 ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F264C + bl GF_AssertFail +_021F264C: + pop {r4, r5, r6, pc} + nop +_021F2650: .word 0x0000FFFF + + thumb_func_start MOD05_021F2654 +MOD05_021F2654: ; 0x021F2654 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D84 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D78 + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2670 +MOD05_021F2670: ; 0x021F2670 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r3, r0, #0 + ldr r2, _021F26A0 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F269E + bl GF_AssertFail +_021F269E: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F26A0: .word 0x0000FFFF + + thumb_func_start MOD05_021F26A4 +MOD05_021F26A4: ; 0x021F26A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F26CC +MOD05_021F26CC: ; 0x021F26CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r3, r0, #0 + ldr r2, _021F26F4 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F26F4: .word 0x0000FFFF + + thumb_func_start MOD05_021F26F8 +MOD05_021F26F8: ; 0x021F26F8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D54 + add r0, r6, #0 + bl MOD05_021F2D78 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D84 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2D8C + add r4, r0, #0 +_021F271E: + ldr r1, [r5] + ldr r0, _021F274C ; =0x0000FFFF + cmp r1, r0 + beq _021F2742 + add r0, r7, #0 + mov r2, #0 + bl MOD05_021F2B70 + cmp r0, #0 + bne _021F2742 + add r0, r6, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [r5] + bl MOD05_021F5A74 + ldr r0, _021F274C ; =0x0000FFFF + str r0, [r5] +_021F2742: + add r5, r5, #4 + sub r4, r4, #1 + bne _021F271E + pop {r3, r4, r5, r6, r7, pc} + nop +_021F274C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2750 +MOD05_021F2750: ; 0x021F2750 + push {r3, lr} + bl MOD05_021F2D7C + ldr r1, _021F2760 ; =0x0000FFFF + mov r2, #8 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F2760: .word 0x0000FFFF + + thumb_func_start MOD05_021F2764 +MOD05_021F2764: ; 0x021F2764 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D94 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D7C + ldr r2, _021F278C ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F2788 + bl GF_AssertFail +_021F2788: + pop {r4, r5, r6, pc} + nop +_021F278C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2790 +MOD05_021F2790: ; 0x021F2790 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D94 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D7C + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F27AC +MOD05_021F27AC: ; 0x021F27AC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r3, r0, #0 + ldr r2, _021F27DC ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F27DA + bl GF_AssertFail +_021F27DA: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F27DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F27E0 +MOD05_021F27E0: ; 0x021F27E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2808 +MOD05_021F2808: ; 0x021F2808 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r3, r0, #0 + ldr r2, _021F2830 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2830: .word 0x0000FFFF + + thumb_func_start MOD05_021F2834 +MOD05_021F2834: ; 0x021F2834 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D5C + add r0, r6, #0 + bl MOD05_021F2D7C + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D94 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2D9C + add r4, r0, #0 +_021F285A: + ldr r1, [r5] + ldr r0, _021F2888 ; =0x0000FFFF + cmp r1, r0 + beq _021F287E + add r0, r7, #0 + mov r2, #0 + bl MOD05_021F2BF8 + cmp r0, #0 + bne _021F287E + add r0, r6, #0 + add r0, #0xfc + ldr r0, [r0] + ldr r1, [r5] + bl MOD05_021F5A74 + ldr r0, _021F2888 ; =0x0000FFFF + str r0, [r5] +_021F287E: + add r5, r5, #4 + sub r4, r4, #1 + bne _021F285A + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2888: .word 0x0000FFFF + + thumb_func_start MOD05_021F288C +MOD05_021F288C: ; 0x021F288C + push {r3, lr} + bl MOD05_021F2D74 + ldr r1, _021F289C ; =0x0000FFFF + mov r2, #0x20 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F289C: .word 0x0000FFFF + + thumb_func_start MOD05_021F28A0 +MOD05_021F28A0: ; 0x021F28A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2DA4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D74 + ldr r2, _021F28C8 ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F28C4 + bl GF_AssertFail +_021F28C4: + pop {r4, r5, r6, pc} + nop +_021F28C8: .word 0x0000FFFF + + thumb_func_start MOD05_021F28CC +MOD05_021F28CC: ; 0x021F28CC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2DA4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D74 + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F28E8 +MOD05_021F28E8: ; 0x021F28E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28CC + cmp r0, #1 + bne _021F28FA + mov r0, #1 + pop {r3, r4, r5, pc} +_021F28FA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F29E0 + cmp r0, #1 + bne _021F290A + mov r0, #2 + pop {r3, r4, r5, pc} +_021F290A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F3084 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2914 +MOD05_021F2914: ; 0x021F2914 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r3, r0, #0 + ldr r2, _021F2944 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F2942 + bl GF_AssertFail +_021F2942: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2944: .word 0x0000FFFF + + thumb_func_start MOD05_021F2948 +MOD05_021F2948: ; 0x021F2948 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r3, r0, #0 + ldr r2, _021F2970 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2970: .word 0x0000FFFF + + thumb_func_start MOD05_021F2974 +MOD05_021F2974: ; 0x021F2974 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + bl MOD05_021F2D6C + str r0, [sp, #4] + add r0, r6, #0 + bl MOD05_021F2D74 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2DA4 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2DAC + add r7, r0, #0 +_021F299E: + ldr r4, [r5] + ldr r0, _021F29DC ; =0x0000FFFF + cmp r4, r0 + beq _021F29D0 + ldr r0, [sp] + add r1, r4, #0 + mov r2, #0 + bl MOD05_021F2B10 + cmp r0, #0 + bne _021F29D0 + ldr r0, [sp, #4] + add r1, r4, #0 + bl FUN_02020FF0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F3050 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F3204 + ldr r0, _021F29DC ; =0x0000FFFF + str r0, [r5] +_021F29D0: + add r5, r5, #4 + sub r7, r7, #1 + bne _021F299E + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F29DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F29E0 +MOD05_021F29E0: ; 0x021F29E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A08 +MOD05_021F2A08: ; 0x021F2A08 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28CC + cmp r0, #1 + bne _021F2A1A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A1A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F29E0 + cmp r0, #1 + bne _021F2A2A + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A2A: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A30 +MOD05_021F2A30: ; 0x021F2A30 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2654 + cmp r0, #1 + bne _021F2A42 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A42: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F26A4 + cmp r0, #1 + bne _021F2A52 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A52: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A58 +MOD05_021F2A58: ; 0x021F2A58 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2790 + cmp r0, #1 + bne _021F2A6A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A6A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F27E0 + cmp r0, #1 + bne _021F2A7A + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A7A: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A80 +MOD05_021F2A80: ; 0x021F2A80 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28E8 + cmp r0, #0 + bne _021F2A96 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2460 +_021F2A96: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2A98 +MOD05_021F2A98: ; 0x021F2A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2A30 + cmp r0, #2 + bne _021F2AAE + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F24C8 +_021F2AAE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AB0 +MOD05_021F2AB0: ; 0x021F2AB0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2A58 + cmp r0, #2 + bne _021F2AC6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F254C +_021F2AC6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AC8 +MOD05_021F2AC8: ; 0x021F2AC8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2DE8 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2A98 + add r0, r4, #0 + bl MOD05_021F2DF4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2AB0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2A80 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AF4 +MOD05_021F2AF4: ; 0x021F2AF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F26F8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2834 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2974 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2B10 +MOD05_021F2B10: ; 0x021F2B10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2B6A +_021F2B2E: + cmp r5, #0 + beq _021F2B38 + ldr r0, [sp] + cmp r5, r0 + beq _021F2B5A +_021F2B38: + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2B50 + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2B50: + cmp r4, r6 + bne _021F2B5A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2B5A: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2B2E +_021F2B6A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F2B70 +MOD05_021F2B70: ; 0x021F2B70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2BEE +_021F2B8E: + cmp r5, #0 + beq _021F2B98 + ldr r0, [sp] + cmp r5, r0 + beq _021F2BDE +_021F2B98: + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + ldr r0, _021F2BF4 ; =0x0000FFFF + cmp r4, r0 + beq _021F2BDE + ldr r0, [sp] + bl MOD05_021F1DC8 + ldr r0, [r0, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #1 + bne _021F2BDE + add r0, r4, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2BC8 + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2BC8: + ldr r0, _021F2BF4 ; =0x0000FFFF + cmp r4, r0 + beq _021F2BDE + add r0, r4, #0 + bl MOD05_021F2DE8 + cmp r6, r0 + bne _021F2BDE + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2BDE: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2B8E +_021F2BEE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2BF4: .word 0x0000FFFF + + thumb_func_start MOD05_021F2BF8 +MOD05_021F2BF8: ; 0x021F2BF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2C74 +_021F2C16: + cmp r5, #0 + beq _021F2C20 + ldr r0, [sp] + cmp r0, r5 + beq _021F2C64 +_021F2C20: + ldr r0, _021F2C7C ; =0x0000FFFF + cmp r4, r0 + beq _021F2C64 + ldr r0, [sp] + bl MOD05_021F1DC8 + ldr r0, [r0, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #1 + bne _021F2C64 + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2C4E + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2C4E: + ldr r0, _021F2C7C ; =0x0000FFFF + cmp r4, r0 + beq _021F2C64 + add r0, r4, #0 + bl MOD05_021F2DF4 + cmp r6, r0 + bne _021F2C64 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2C64: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2C16 +_021F2C74: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2C7C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2C80 +MOD05_021F2C80: ; 0x021F2C80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + bl FUN_020583A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DE8 + str r0, [sp] + ldr r1, [sp] + add r0, r4, #0 + bl MOD05_021F2A30 + cmp r0, #1 + bne _021F2CC6 + ldr r1, [sp] + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F2B70 + cmp r0, #0 + bne _021F2CC6 + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp] + bl MOD05_021F5A74 + ldr r1, [sp] + add r0, r4, #0 + bl MOD05_021F26CC +_021F2CC6: + add r0, r5, #0 + bl MOD05_021F2DF4 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD05_021F2A58 + cmp r0, #1 + bne _021F2CFC + ldr r1, [sp, #4] + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F2BF8 + cmp r0, #0 + bne _021F2CFC + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + ldr r1, [sp, #4] + bl MOD05_021F5A74 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD05_021F2808 +_021F2CFC: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2A08 + cmp r0, #1 + bne _021F2D3A + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD05_021F2B10 + cmp r0, #0 + bne _021F2D3A + add r0, r4, #0 + bl MOD05_021F2D6C + add r1, r5, #0 + bl FUN_02020FF0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2948 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F3050 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F3204 +_021F2D3A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2D40 +MOD05_021F2D40: ; 0x021F2D40 + add r0, #0xe0 + str r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D48 +MOD05_021F2D48: ; 0x021F2D48 + add r0, #0xe0 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D50 +MOD05_021F2D50: ; 0x021F2D50 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021F2D54 +MOD05_021F2D54: ; 0x021F2D54 + add r0, #0xe8 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D5C +MOD05_021F2D5C: ; 0x021F2D5C + add r0, #0xec + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D64 +MOD05_021F2D64: ; 0x021F2D64 + add r0, #0xf0 + str r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D6C +MOD05_021F2D6C: ; 0x021F2D6C + add r0, #0xf0 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D74 +MOD05_021F2D74: ; 0x021F2D74 + add r0, #0x60 + bx lr + + thumb_func_start MOD05_021F2D78 +MOD05_021F2D78: ; 0x021F2D78 + add r0, #0x20 + bx lr + + thumb_func_start MOD05_021F2D7C +MOD05_021F2D7C: ; 0x021F2D7C + add r0, #0x40 + bx lr + + thumb_func_start MOD05_021F2D80 +MOD05_021F2D80: ; 0x021F2D80 + str r1, [r0, #8] + bx lr + + thumb_func_start MOD05_021F2D84 +MOD05_021F2D84: ; 0x021F2D84 + ldr r0, [r0, #8] + bx lr + + thumb_func_start MOD05_021F2D88 +MOD05_021F2D88: ; 0x021F2D88 + str r1, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021F2D8C +MOD05_021F2D8C: ; 0x021F2D8C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021F2D90 +MOD05_021F2D90: ; 0x021F2D90 + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021F2D94 +MOD05_021F2D94: ; 0x021F2D94 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021F2D98 +MOD05_021F2D98: ; 0x021F2D98 + str r1, [r0, #0x14] + bx lr + + thumb_func_start MOD05_021F2D9C +MOD05_021F2D9C: ; 0x021F2D9C + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start MOD05_021F2DA0 +MOD05_021F2DA0: ; 0x021F2DA0 + str r1, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021F2DA4 +MOD05_021F2DA4: ; 0x021F2DA4 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021F2DA8 +MOD05_021F2DA8: ; 0x021F2DA8 + str r1, [r0, #0x1c] + bx lr + + thumb_func_start MOD05_021F2DAC +MOD05_021F2DAC: ; 0x021F2DAC + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start MOD05_021F2DB0 +MOD05_021F2DB0: ; 0x021F2DB0 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r0, [r0, r3] + ldr r3, _021F2DBC ; =MOD05_021F1E2C + bx r3 + nop +_021F2DBC: .word MOD05_021F1E2C + + thumb_func_start MOD05_021F2DC0 +MOD05_021F2DC0: ; 0x021F2DC0 + push {r3, lr} + ldr r3, _021F2DE0 ; =UNK05_021FAC6C + ldr r1, _021F2DE4 ; =0x0000FFFF +_021F2DC6: + ldr r2, [r3] + cmp r2, r0 + bne _021F2DD0 + add r0, r3, #0 + pop {r3, pc} +_021F2DD0: + add r3, #0x10 + ldr r2, [r3] + cmp r2, r1 + bne _021F2DC6 + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F2DE0: .word UNK05_021FAC6C +_021F2DE4: .word 0x0000FFFF + + thumb_func_start MOD05_021F2DE8 +MOD05_021F2DE8: ; 0x021F2DE8 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #4] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2DF4 +MOD05_021F2DF4: ; 0x021F2DF4 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #8] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E00 +MOD05_021F2E00: ; 0x021F2E00 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #0xc] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E0C +MOD05_021F2E0C: ; 0x021F2E0C + push {r3, lr} + cmp r1, #1 + bne _021F2E1C + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058410 + pop {r3, pc} +_021F2E1C: + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058418 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E28 +MOD05_021F2E28: ; 0x021F2E28 + push {r3, lr} + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058424 + cmp r0, #0 + beq _021F2E3A + mov r0, #1 + pop {r3, pc} +_021F2E3A: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E40 +MOD05_021F2E40: ; 0x021F2E40 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #4 + add r4, r1, #0 + str r0, [sp, #4] + add r0, sp, #0 + str r4, [sp] + bl FUN_0201F1B4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D40 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2D50 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2E68 +MOD05_021F2E68: ; 0x021F2E68 + ldr r3, _021F2E6C ; =FUN_0201F23C + bx r3 + .balign 4, 0 +_021F2E6C: .word FUN_0201F23C + + thumb_func_start MOD05_021F2E70 +MOD05_021F2E70: ; 0x021F2E70 + push {r4, lr} + sub sp, #0x20 + str r0, [sp] + str r1, [sp, #4] + ldmia r2!, {r0, r1} + add r3, sp, #8 + stmia r3!, {r0, r1} + ldr r0, [r2] + add r2, sp, #0x14 + str r0, [r3] + ldr r3, _021F2ECC ; =0UNK05_021FC550 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, sp, #0 + bl FUN_0201F6E8 + add r4, r0, #0 + beq _021F2EC4 + mov r1, #0 + bl FUN_0201F80C + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + bl FUN_0201F8E0 + mov r1, #1 + bl NNS_G3dMdlSetMdlFogEnableFlagAll + add r0, r4, #0 + bl FUN_0201F8E0 + bl MOD05_021DB5EC +_021F2EC4: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + nop +_021F2ECC: .word UNK05_021FC550 + + thumb_func_start MOD05_021F2ED0 +MOD05_021F2ED0: ; 0x021F2ED0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r4, r2, #0 + bl MOD05_021F2DE8 + add r1, r0, #0 + add r0, r6, #0 + add r0, #0xf8 + ldr r0, [r0] + bl MOD05_021F5A90 + str r0, [r4] + add r0, r5, #0 + bl MOD05_021F2DF4 + add r1, r0, #0 + add r0, r6, #0 + add r0, #0xfc + ldr r0, [r0] + bl MOD05_021F5A90 + add r1, r4, #0 + add r1, #0xc + bl FUN_0202227C + add r0, r6, #0 + bl MOD05_021F2D6C + add r1, r5, #0 + bl FUN_02021050 + add r6, r0, #0 + bl FUN_020210AC + str r0, [r4, #4] + add r0, r6, #0 + bl FUN_020211AC + str r0, [r4, #0x1c] + add r0, r6, #0 + bl FUN_020211BC + str r0, [r4, #0x20] + add r0, r6, #0 + bl FUN_020211CC + str r0, [r4, #0x24] + add r0, r5, #0 + bl MOD05_021F2E00 + str r0, [r4, #8] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2F3C +MOD05_021F2F3C: ; 0x021F2F3C + push {r3, lr} + bl FUN_02058578 + bl FUN_020583A0 + pop {r3, pc} + + thumb_func_start MOD05_021F2F48 +MOD05_021F2F48: ; 0x021F2F48 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0201F7C8 + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD05_021F2F6C +MOD05_021F2F6C: ; 0x021F2F6C + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F2F80 + mov r4, #0 +_021F2F80: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F2F9E + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F2F9E + mov r4, #0 +_021F2F9E: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2FAC +MOD05_021F2FAC: ; 0x021F2FAC + lsl r1, r0, #2 + ldr r0, _021F2FB4 ; =UNK05_021FC55C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FB4: .word UNK05_021FC55C + + thumb_func_start MOD05_021F2FB8 +MOD05_021F2FB8: ; 0x021F2FB8 + lsl r1, r0, #2 + ldr r0, _021F2FC0 ; =UNK05_021FC56C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FC0: .word UNK05_021FC56C + + thumb_func_start MOD05_021F2FC4 +MOD05_021F2FC4: ; 0x021F2FC4 + lsl r1, r0, #2 + ldr r0, _021F2FCC ; =UNK05_021FC57C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FCC: .word UNK05_021FC57C + + thumb_func_start MOD05_021F2FD0 +MOD05_021F2FD0: ; 0x021F2FD0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r5, r0] + mov r0, #4 + add r6, r1, #0 + ldrsh r1, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + add r7, r2, #0 + str r3, [sp] + cmp r1, r0 + bge _021F2FFA + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + bl FUN_0201F2C0 + cmp r0, #1 + bne _021F302C +_021F2FFA: + mov r2, #0 + ldrsh r3, [r4, r2] + ldr r0, [r4, #0xc] + cmp r3, #0 + ble _021F3024 +_021F3004: + ldr r1, [r0, #0xc] + cmp r1, #0 + bne _021F301C + add r5, #0xf0 + ldr r1, [r5] + str r1, [r0, #0xc] + ldr r1, [sp] + str r1, [r0, #8] + str r6, [r0, #4] + str r7, [r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F301C: + add r2, r2, #1 + add r0, #0x10 + cmp r2, r3 + blt _021F3004 +_021F3024: + bl GF_AssertFail + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F302C: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD05_021F2DB0 + add r2, r0, #0 + ldr r3, [sp] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F317C + mov r0, #4 + ldrsh r0, [r4, r0] + add r0, r0, #1 + strh r0, [r4, #4] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3050 +MOD05_021F3050: ; 0x021F3050 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #0xc] + cmp r4, #0 + ble _021F307E +_021F3062: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F3076 + ldr r0, [r2, #0xc] + cmp r0, #0 + beq _021F3076 + mov r0, #0 + str r0, [r2, #0xc] + pop {r3, r4} + bx lr +_021F3076: + add r3, r3, #1 + add r2, #0x10 + cmp r3, r4 + blt _021F3062 +_021F307E: + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3084 +MOD05_021F3084: ; 0x021F3084 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #0xc] + cmp r4, #0 + ble _021F30BC +_021F3096: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F30B4 + ldr r0, [r2, #0xc] + cmp r0, #0 + beq _021F30B4 + ldr r0, [r2, #8] + cmp r0, #0 + bne _021F30AE + mov r0, #3 + pop {r3, r4} + bx lr +_021F30AE: + mov r0, #4 + pop {r3, r4} + bx lr +_021F30B4: + add r3, r3, #1 + add r2, #0x10 + cmp r3, r4 + blt _021F3096 +_021F30BC: + mov r0, #0 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F30C4 +MOD05_021F30C4: ; 0x021F30C4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + mov r1, #1 + ldr r0, [sp] + lsl r1, r1, #8 + ldr r4, [r0, r1] + add r0, #0xe0 + ldr r0, [r0] + mov r6, #0 + ldr r5, [r4, #0xc] + bl FUN_0201F2C0 + cmp r0, #1 + beq _021F3178 + add r7, r4, #4 + b _021F310E +_021F30E4: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021F310A + ldr r0, [sp] + ldr r1, [r5] + mov r2, #0 + bl MOD05_021F2DB0 + add r2, r0, #0 + ldr r0, [sp] + ldr r1, [r5, #4] + ldr r3, [r5, #8] + bl MOD05_021F317C + mov r0, #0 + str r0, [r5, #0xc] + ldrsh r0, [r7, r0] + add r0, r0, #1 + strh r0, [r7] +_021F310A: + add r5, #0x10 + add r6, r6, #1 +_021F310E: + mov r0, #4 + ldrsh r1, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + cmp r1, r0 + bge _021F3122 + mov r0, #0 + ldrsh r0, [r4, r0] + cmp r6, r0 + blt _021F30E4 +_021F3122: + mov r6, #0 + ldrsh r0, [r4, r6] + ldr r7, [r4, #0xc] + sub r1, r0, #1 + cmp r1, #0 + ble _021F3174 + add r5, r7, #0 +_021F3130: + ldr r1, [r5, #0xc] + cmp r1, #0 + bne _021F3166 + add r2, r6, #1 + cmp r2, r0 + bge _021F3166 + lsl r1, r2, #4 + add r3, r7, r1 +_021F3140: + ldr r1, [r3, #0xc] + cmp r1, #0 + beq _021F315E + lsl r0, r2, #4 + add r3, r7, r0 + mov ip, r3 + add r2, r5, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r1, #0 + mov r0, ip + str r1, [r0, #0xc] + b _021F3166 +_021F315E: + add r2, r2, #1 + add r3, #0x10 + cmp r2, r0 + blt _021F3140 +_021F3166: + mov r0, #0 + ldrsh r0, [r4, r0] + add r6, r6, #1 + add r5, #0x10 + sub r1, r0, #1 + cmp r6, r1 + blt _021F3130 +_021F3174: + mov r0, #0 + strh r0, [r4, #4] +_021F3178: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F317C +MOD05_021F317C: ; 0x021F317C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + add r0, #0xf0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + ldr r0, [r0] + add r2, r4, #0 + mov r3, #1 + bl FUN_02020F54 + cmp r0, #0 + bne _021F31A2 + bl GF_AssertFail +_021F31A2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F31C8 + cmp r6, #0 + bne _021F31BA + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F28A0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021F31BA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2914 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F31C8 +MOD05_021F31C8: ; 0x021F31C8 + push {r4, r5, r6, lr} + mov r3, #1 + lsl r3, r3, #8 + ldr r3, [r0, r3] + mov r5, #1 + ldr r4, [r3, #0x10] + mov r2, #0 + strh r5, [r3, #6] + ldrsh r6, [r3, r2] + cmp r6, #0 + ble _021F31FC +_021F31DE: + ldr r5, [r4, #8] + cmp r5, #0 + bne _021F31F4 + add r0, #0xf0 + ldr r0, [r0] + str r0, [r4, #8] + str r1, [r4, #4] + mov r0, #0 + str r0, [r4] + strh r0, [r3, #6] + pop {r4, r5, r6, pc} +_021F31F4: + add r2, r2, #1 + add r4, #0xc + cmp r2, r6 + blt _021F31DE +_021F31FC: + bl GF_AssertFail + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3204 +MOD05_021F3204: ; 0x021F3204 + push {r4, r5} + mov r2, #1 + lsl r2, r2, #8 + ldr r2, [r0, r2] + mov r0, #1 + ldr r4, [r2, #0x10] + mov r3, #0 + strh r0, [r2, #6] + ldrsh r5, [r2, r3] + cmp r5, #0 + ble _021F3236 +_021F321A: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F322E + ldr r0, [r4, #4] + cmp r0, r1 + bne _021F322E + mov r0, #0 + str r0, [r4, #8] + str r0, [r4] + b _021F3236 +_021F322E: + add r3, r3, #1 + add r4, #0xc + cmp r3, r5 + blt _021F321A +_021F3236: + mov r0, #0 + strh r0, [r2, #6] + pop {r4, r5} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3240 +MOD05_021F3240: ; 0x021F3240 + push {r3, r4, r5, r6, r7, lr} + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r1, r0] + ldrh r0, [r6, #6] + cmp r0, #1 + beq _021F327A + mov r4, #0 + ldrsh r0, [r6, r4] + ldr r5, [r6, #0x10] + cmp r0, #0 + ble _021F327A + mov r7, #1 +_021F325A: + ldr r0, [r5] + cmp r0, #0 + bne _021F326E + ldr r0, [r5, #8] + cmp r0, #0 + beq _021F326E + ldr r1, [r5, #4] + bl FUN_020210F0 + str r7, [r5] +_021F326E: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F325A +_021F327A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F327C +MOD05_021F327C: ; 0x021F327C + push {r3, r4, r5, r6, r7, lr} + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r1, r0] + mov r4, #0 + ldr r5, [r6, #0x10] + mov r0, #1 + strh r0, [r6, #6] + ldrsh r0, [r6, r4] + cmp r0, #0 + ble _021F32B6 + add r7, r4, #0 +_021F3294: + ldr r0, [r5] + cmp r0, #1 + bne _021F32AA + ldr r0, [r5, #8] + cmp r0, #0 + beq _021F32AA + ldr r1, [r5, #4] + bl FUN_02021158 + str r7, [r5] + str r7, [r5, #8] +_021F32AA: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F3294 +_021F32B6: + mov r0, #0 + strh r0, [r6, #6] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F32BC +MOD05_021F32BC: ; 0x021F32BC + push {r4, r5, r6, lr} + mov r5, #1 + lsl r5, r5, #8 + ldr r5, [r0, r5] + mov r4, #0 + ldrsh r6, [r5, r4] + ldr r0, [r5, #8] + cmp r6, #0 + ble _021F32F2 +_021F32CE: + ldr r5, [r0, #4] + cmp r5, #0 + bne _021F32EA + str r1, [r0, #4] + str r2, [r0, #8] + str r3, [r0] + ldr r0, [r0, #8] + mov r2, #0 + str r2, [r0] + add r0, r1, #0 + mov r1, #1 + bl MOD05_021F2E0C + pop {r4, r5, r6, pc} +_021F32EA: + add r4, r4, #1 + add r0, #0xc + cmp r4, r6 + blt _021F32CE +_021F32F2: + bl GF_AssertFail + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F32F8 +MOD05_021F32F8: ; 0x021F32F8 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #8] + cmp r4, #0 + ble _021F3322 +_021F330A: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F331A + mov r0, #0 + str r0, [r2, #4] + str r0, [r2, #8] + pop {r3, r4} + bx lr +_021F331A: + add r3, r3, #1 + add r2, #0xc + cmp r3, r4 + blt _021F330A +_021F3322: + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3328 +MOD05_021F3328: ; 0x021F3328 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r7, r0] + mov r4, #0 + ldrsh r0, [r6, r4] + ldr r5, [r6, #8] + cmp r0, #0 + ble _021F3356 +_021F333C: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021F334A + add r0, r7, #0 + add r1, r5, #0 + bl MOD05_021F3364 +_021F334A: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F333C +_021F3356: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3358 +MOD05_021F3358: ; 0x021F3358 + ldr r3, _021F3360 ; =MOD05_021F3328 + add r0, r1, #0 + bx r3 + nop +_021F3360: .word MOD05_021F3328 + + thumb_func_start MOD05_021F3364 +MOD05_021F3364: ; 0x021F3364 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + bl MOD05_021F2A08 + cmp r0, #2 + beq _021F33B2 + ldr r0, [r4, #4] + ldr r1, [r4] + bl MOD05_021F1FE0 + ldr r1, [r4, #8] + str r0, [r1] + ldr r0, [r4, #8] + ldr r0, [r0] + cmp r0, #0 + bne _021F338A + bl GF_AssertFail +_021F338A: + ldr r0, [r4, #4] + mov r1, #0 + bl MOD05_021F2E0C + mov r1, #2 + ldr r0, [r4, #4] + lsl r1, r1, #0x14 + bl FUN_0205842C + cmp r0, #1 + ldr r0, [r4, #4] + bne _021F33A8 + bl FUN_020586DC + b _021F33AC +_021F33A8: + bl FUN_020586A0 +_021F33AC: + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #8] +_021F33B2: + pop {r4, pc} + + thumb_func_start MOD05_021F33B4 +MOD05_021F33B4: ; 0x021F33B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + add r5, r0, #0 + mov r0, #0xc + add r7, r6, #0 + mul r7, r0 + lsl r0, r6, #4 + lsl r1, r7, #1 + str r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #8] + add r0, #0x28 + str r0, [sp, #8] + ldr r1, [sp, #8] + mov r0, #4 + str r2, [sp] + bl AllocFromHeap + add r4, r0, #0 + bne _021F33E2 + bl GF_AssertFail +_021F33E2: + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #0 + bl memset + ldr r0, [sp] + strh r6, [r4] + strh r0, [r4, #2] + add r0, r4, #0 + add r0, #0x28 + str r0, [r4, #8] + add r1, r0, r7 + ldr r0, [sp, #4] + str r1, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0x10] + mov r0, #1 + lsl r0, r0, #8 + str r4, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0205839C + add r6, r0, #0 + ldr r0, _021F3448 ; =MOD05_021F30C4 + add r1, r5, #0 + add r2, r6, #1 + bl FUN_0200CA44 + str r0, [r4, #0x18] + ldr r0, _021F344C ; =MOD05_021F3358 + add r1, r5, #0 + add r2, r6, #2 + bl FUN_0200CA44 + str r0, [r4, #0x1c] + ldr r0, _021F3450 ; =MOD05_021F3240 + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA60 + str r0, [r4, #0x20] + ldr r0, _021F3454 ; =MOD05_021F327C + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA98 + str r0, [r4, #0x24] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021F3448: .word MOD05_021F30C4 +_021F344C: .word MOD05_021F3358 +_021F3450: .word MOD05_021F3240 +_021F3454: .word MOD05_021F327C + + thumb_func_start MOD05_021F3458 +MOD05_021F3458: ; 0x021F3458 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r5, r0] + mov r0, #1 + strh r0, [r4, #6] + ldr r0, [r4, #0x18] + bl FUN_0200CAB4 + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldr r0, [r4, #0x20] + bl FUN_0200CAB4 + ldr r0, [r4, #0x24] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FreeToHeap + mov r0, #1 + mov r1, #0 + lsl r0, r0, #8 + str r1, [r5, r0] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3490 +MOD05_021F3490: ; 0x021F3490 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F34A8 + add r0, r5, #0 + bl MOD05_021F0514 + cmp r0, #0 + bne _021F34D2 +_021F34A8: + add r0, r5, #0 + bl FUN_02058458 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058578 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_020576A8 + add r0, r7, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021F2C80 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02057614 + pop {r3, r4, r5, r6, r7, pc} +_021F34D2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F34DC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F34DC +MOD05_021F34DC: ; 0x021F34DC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r7, r0, #0 + str r1, [sp, #8] + bl MOD05_021F2F3C + str r0, [sp, #0x18] + bl MOD05_021F2D48 + str r0, [sp, #0x14] + add r0, r7, #0 + bl MOD05_021F0514 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0x58 + bl AllocFromHeapAtEnd + mov r1, #0 + mov r2, #0x58 + add r5, r0, #0 + bl memset + ldr r0, [sp, #8] + str r0, [r5] + add r0, r7, #0 + str r7, [r5, #0x50] + bl FUN_02058458 + add r6, r0, #0 + bl MOD05_021F2DE8 + ldr r4, _021F36C4 ; =UNK05_021F9094 + ldr r2, _021F36C8 ; =0x0000FFFF +_021F3520: + ldr r1, [r4] + cmp r1, r0 + beq _021F352E + add r4, #8 + ldr r1, [r4] + cmp r1, r2 + bne _021F3520 +_021F352E: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3538 + bl GF_AssertFail +_021F3538: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + str r0, [r5, #8] + add r0, r6, #0 + bl MOD05_021F2DF4 + ldr r4, _021F36CC ; =UNK05_021F90E4 + ldr r2, _021F36C8 ; =0x0000FFFF +_021F354E: + ldr r1, [r4] + cmp r1, r0 + beq _021F355C + add r4, #8 + ldr r1, [r4] + cmp r1, r2 + bne _021F354E +_021F355C: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3566 + bl GF_AssertFail +_021F3566: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + add r1, r5, #0 + add r1, #0x14 + str r0, [r5, #0xc] + bl FUN_0202227C + ldr r4, _021F36D0 ; =UNK05_021FA0AC + ldr r0, _021F36C8 ; =0x0000FFFF +_021F357E: + ldr r1, [r4] + cmp r1, r6 + beq _021F358C + add r4, #8 + ldr r1, [r4] + cmp r1, r0 + bne _021F357E +_021F358C: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3596 + bl GF_AssertFail +_021F3596: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + str r0, [r5, #0x10] + bl NNS_G3dGetTex + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2E00 + add r3, r0, #0 + add r0, r5, #0 + add r0, #0x14 + str r0, [sp] + add r0, r5, #0 + ldr r1, [r5, #8] + add r0, #0x28 + add r2, r4, #0 + bl FUN_0201F7A4 + ldr r0, [sp, #0x10] + bl FUN_0201F7E0 + add r3, r0, #0 + add r2, sp, #0x28 + ldmia r3!, {r0, r1} + add r4, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #0 + str r0, [r2] + ldr r0, [sp, #0x14] + add r1, #0x28 + add r2, r4, #0 + bl MOD05_021F2E70 + str r0, [r5, #0x24] + cmp r0, #0 + bne _021F35EC + bl GF_AssertFail +_021F35EC: + ldr r0, [sp, #0x10] + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F830 + ldr r0, [sp, #0x10] + bl FUN_0201F8C0 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F890 + ldr r0, [sp, #0x10] + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F86C + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0201F854 + ldr r0, [r5, #0x24] + mov r1, #1 + bl FUN_0201F80C + ldr r0, [r5, #0x24] + bl FUN_0201F8F0 + add r0, r7, #0 + bl FUN_02058A9C + cmp r0, #1 + bne _021F367A + add r0, r7, #0 + mov r1, #2 + bl FUN_0205829C + str r0, [sp, #0xc] + add r0, r7, #0 + mov r1, #1 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r4, #0 + bl FUN_02054AF0 + cmp r0, #0 + bne _021F3658 + mov r4, #1 +_021F3658: + add r0, r7, #0 + add r1, sp, #0x1c + bl FUN_02058B5C + add r0, r7, #0 + bl MOD05_021E4C24 + ldr r1, [sp, #0xc] + str r4, [sp] + str r1, [sp, #4] + add r1, r5, #0 + ldr r2, [r5, #0x24] + add r1, #0x28 + add r3, sp, #0x1c + bl MOD06_02249B7C + str r0, [r5, #0x54] +_021F367A: + add r0, r7, #0 + bl FUN_020576A8 + mov r1, #0x41 + ldr r0, [sp, #0x18] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + add r2, r7, #0 + bl MOD05_021F2C80 + ldr r1, [sp, #8] + add r0, r7, #0 + bl FUN_02057614 + mov r1, #0x41 + ldr r0, [sp, #0x18] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_0205839C + ldr r0, _021F36D4 ; =MOD05_021F36D8 + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA98 + add r4, r0, #0 + bne _021F36B6 + bl GF_AssertFail +_021F36B6: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F36D8 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021F36C4: .word UNK05_021F9094 +_021F36C8: .word 0x0000FFFF +_021F36CC: .word UNK05_021F90E4 +_021F36D0: .word UNK05_021FA0AC +_021F36D4: .word MOD05_021F36D8 + + thumb_func_start MOD05_021F36D8 +MOD05_021F36D8: ; 0x021F36D8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r4, [r5, #0x50] + cmp r0, #0 + beq _021F36EC + cmp r0, #1 + beq _021F3744 + pop {r4, r5, r6, pc} +_021F36EC: + add r0, r4, #0 + bl FUN_02058830 + cmp r0, #0 + beq _021F3700 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #0 + bne _021F3730 +_021F3700: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021F370A + bl FUN_02064520 +_021F370A: + ldr r0, [r5, #0x24] + bl FUN_0201F744 + ldr r0, [r5, #8] + bl FreeToHeap + ldr r0, [r5, #0xc] + bl FreeToHeap + ldr r0, [r5, #0x10] + bl FreeToHeap + add r0, r5, #0 + bl FreeToHeap + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} +_021F3730: + add r0, r4, #0 + bl FUN_02058458 + ldr r1, [r5] + cmp r1, r0 + beq _021F377C + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_021F3744: + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #0 + bne _021F377C + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021F3758 + bl FUN_02064520 +_021F3758: + ldr r0, [r5, #0x24] + bl FUN_0201F744 + ldr r0, [r5, #8] + bl FreeToHeap + ldr r0, [r5, #0xc] + bl FreeToHeap + ldr r0, [r5, #0x10] + bl FreeToHeap + add r0, r5, #0 + bl FreeToHeap + add r0, r6, #0 + bl FUN_0200CAB4 +_021F377C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021FC550 +UNK05_021FC550: ; 0x021FC550 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021FC55C +UNK05_021FC55C: ; 0x021FC55C + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global UNK05_021FC56C +UNK05_021FC56C: ; 0x021FC56C + .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + + .global UNK05_021FC57C +UNK05_021FC57C: ; 0x021FC57C + .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F3780.s b/arm9/modules/05/asm/mod05_021F3780.s new file mode 100644 index 00000000..1a59550b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F3780.s @@ -0,0 +1,127 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F3780 +MOD05_021F3780: ; 0x021F3780 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD05_021F37AC + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #8] + bl MOD05_021F37DC + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F379C +MOD05_021F379C: ; 0x021F379C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F37E0 + add r0, r4, #0 + bl MOD05_021F37D0 + pop {r4, pc} + + thumb_func_start MOD05_021F37AC +MOD05_021F37AC: ; 0x021F37AC + push {r4, lr} + mov r1, #0x10 + bl AllocFromHeap + add r4, r0, #0 + bne _021F37BC + bl GF_AssertFail +_021F37BC: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021F37C2: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021F37C2 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F37D0 +MOD05_021F37D0: ; 0x021F37D0 + ldr r3, _021F37D8 ; =FreeToHeapExplicit + add r1, r0, #0 + ldr r0, [r1] + bx r3 + .balign 4, 0 +_021F37D8: .word FreeToHeapExplicit + + thumb_func_start MOD05_021F37DC +MOD05_021F37DC: ; 0x021F37DC + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F37E0 +MOD05_021F37E0: ; 0x021F37E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021F380E + ldr r4, [r5, #0xc] + cmp r4, #0 + beq _021F380E +_021F37F0: + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021F37FC + add r0, r4, #0 + bl MOD05_021F383C +_021F37FC: + ldr r0, [r5, #4] + add r4, #0x60 + sub r0, r0, #1 + str r0, [r5, #4] + bne _021F37F0 + ldr r0, [r5] + ldr r1, [r5, #0xc] + bl FreeToHeapExplicit +_021F380E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F3810 +MOD05_021F3810: ; 0x021F3810 + push {r3, r4, r5, lr} + add r4, r0, #0 + str r1, [r4, #4] + mov r0, #0x60 + add r5, r1, #0 + mul r5, r0 + ldr r0, [r4] + add r1, r5, #0 + bl AllocFromHeap + str r0, [r4, #0xc] + cmp r0, #0 + bne _021F382E + bl GF_AssertFail +_021F382E: + ldr r0, [r4, #0xc] + mov r1, #0 + add r2, r5, #0 + bl memset + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F383C +MOD05_021F383C: ; 0x021F383C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + bl FreeToHeap + add r0, r4, #0 + mov r1, #0 + mov r2, #0x60 + bl memset + pop {r4, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F3854.s b/arm9/modules/05/asm/mod05_021F3854.s new file mode 100644 index 00000000..16ccc81c --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F3854.s @@ -0,0 +1,79 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F3854 +MOD05_021F3854: ; 0x021F3854 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + bx lr + + thumb_func_start MOD05_021F385C +MOD05_021F385C: ; 0x021F385C + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3860 +MOD05_021F3860: ; 0x021F3860 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0x38] + add r4, r2, #0 + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r7, r0, #0 + ldr r0, [r4] + cmp r0, r6 + bne _021F3882 + ldr r0, [r4, #4] + cmp r0, r7 + beq _021F38B4 +_021F3882: + str r6, [r4] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + str r7, [r4, #4] + bl FUN_0204A6E0 + add r4, r0, #0 + bl FUN_02054A18 + cmp r0, #0 + beq _021F389E + mov r2, #0 + b _021F38AA +_021F389E: + add r0, r4, #0 + bl FUN_02054A0C + cmp r0, #0 + beq _021F38B4 + mov r2, #1 +_021F38AA: + add r0, r6, #0 + add r1, r7, #0 + add r3, r5, #0 + bl MOD05_021DAFA8 +_021F38B4: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F38B8 +MOD05_021F38B8: ; 0x021F38B8 + ldr r0, [r0, #4] + ldr r3, _021F38C4 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F38C8 ; =UNK05_021FC58C + bx r3 + nop +_021F38C4: .word MOD05_021D8024 +_021F38C8: .word UNK05_021FC58C + + .section .rodata + + .global UNK05_021FC58C +UNK05_021FC58C: ; 0x021FC58C + .word 0x00000002, 0x00000008, MOD05_021F3854, MOD05_021F385C + .word MOD05_021F3860, 0x00000000 diff --git a/arm9/modules/05/asm/mod05_021F38CC.s b/arm9/modules/05/asm/mod05_021F38CC.s new file mode 100644 index 00000000..26cf1454 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F38CC.s @@ -0,0 +1,379 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F38CC +MOD05_021F38CC: ; 0x021F38CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #0 + add r2, r1, #0 + add r5, r0, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + mov r1, #0x46 + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #0x47 + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0x48 + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x49 + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + add r0, r5, #0 + mov r1, #0x4a + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0 + mov r1, #0x4b + mov r2, #0 + bl GetMonData + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + eor r0, r6 + asr r1, r4, #8 + mul r0, r7 + eor r0, r1 + lsl r1, r4, #0x18 + lsr r3, r1, #0x18 + lsl r0, r0, #0x10 + ldr r2, [sp, #4] + ldr r1, [sp] + lsr r0, r0, #0x10 + eor r2, r1 + ldr r1, [sp, #8] + mul r2, r1 + add r1, r3, #0 + eor r1, r2 + lsl r1, r1, #0x10 + lsr r1, r1, #8 + add r0, r0, r1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3978 +MOD05_021F3978: ; 0x021F3978 + ldr r2, _021F399C ; =UNK05_021FC5A4 + mov r3, #1 +_021F397C: + lsl r1, r3, #3 + add r1, r2, r1 + ldrh r1, [r1, #4] + cmp r0, r1 + bhs _021F398E + sub r0, r3, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021F398E: + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0xf + blo _021F397C + add r0, r3, #0 + bx lr + .balign 4, 0 +_021F399C: .word UNK05_021FC5A4 + + thumb_func_start MOD05_021F39A0 +MOD05_021F39A0: ; 0x021F39A0 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r0, #4 + add r5, r1, #0 + bl FUN_02087A6C + add r4, r0, #0 + bl FUN_02087A84 + add r0, r4, #0 + mov r1, #0 + mov r2, #4 + bl FUN_02087A98 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02087B58 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02087B0C + add r0, r5, #0 + bl MOD05_021F3978 + lsl r4, r0, #3 + ldr r0, _021F3A0C ; =UNK05_021FC5A8 + ldr r2, _021F3A10 ; =UNK05_021FC5A6 + ldrh r0, [r0, r4] + ldrh r2, [r2, r4] + asr r1, r5, #0x1f + mov r3, #0 + sub r0, r5, r0 + sbc r1, r3 + bl _ll_udiv + add r2, r0, #0 + add r0, r6, #0 + ldr r6, _021F3A14 ; =UNK05_021FC5A4 + add r3, r1, #0 + mov r5, #0 + ldrh r4, [r6, r4] + add r1, r5, #0 + add r2, r4, r2 + adc r5, r3 + add r3, r5, #0 + bl _ll_mul + mov r2, #0xa + mov r3, #0 + bl _ll_udiv + pop {r4, r5, r6, pc} + nop +_021F3A0C: .word UNK05_021FC5A8 +_021F3A10: .word UNK05_021FC5A6 +_021F3A14: .word UNK05_021FC5A4 + + thumb_func_start MOD05_021F3A18 +MOD05_021F3A18: ; 0x021F3A18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl SavArray_PlayerParty_get + add r1, r5, #0 + bl GetPartyMonByIndex + mov r1, #5 + mov r2, #0 + str r0, [sp] + bl GetMonData + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp] + bl MOD05_021F38CC + add r1, sp, #4 + strh r0, [r1, #2] + ldrh r1, [r1, #2] + add r0, r5, #0 + bl MOD05_021F39A0 + add r6, r0, #0 + ldr r0, [r4, #0xc] + bl SavArray_Flags_get + bl FUN_0205F3E8 + add r1, sp, #4 + strh r0, [r1] + ldrh r1, [r1] + add r0, r5, #0 + bl MOD05_021F39A0 + add r7, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + mul r0, r6 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + add r5, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + mul r0, r7 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + cmp r5, r0 + bne _021F3A9A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3A9A: + cmp r5, r0 + bls _021F3AAE + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_020619C0 + add sp, #8 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021F3AAE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3AB4 +MOD05_021F3AB4: ; 0x021F3AB4 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl SavArray_PlayerParty_get + add r1, r5, #0 + bl GetPartyMonByIndex + bl MOD05_021F38CC + add r1, sp, #0 + strh r0, [r1] + ldr r0, [r4, #0xc] + bl SavArray_Flags_get + add r1, sp, #0 + ldrh r1, [r1] + bl FUN_0205F3F8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3AE0 +MOD05_021F3AE0: ; 0x021F3AE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0xf + add r7, r2, #0 + add r4, r3, #0 + bl FUN_02039438 + add r1, sp, #0x10 + add r5, r0, #0 + ldrh r1, [r1, #0x10] + add r0, r4, #0 + bl MOD05_021F39A0 + mov r1, #0xfa + lsl r1, r1, #2 + mul r1, r0 + add r0, r1, #0 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + mov r1, #0xa + add r4, r0, #0 + bl _u32_div_f + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5] + add r1, r6, #0 + mov r3, #3 + bl BufferIntegerAsString + add r0, r4, #0 + mov r1, #0xa + bl _u32_div_f + mov r0, #0 + add r2, r1, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r0, [r5] + add r1, r7, #0 + bl BufferIntegerAsString + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3B4C +MOD05_021F3B4C: ; 0x021F3B4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl SavArray_Flags_get + bl FUN_0205F3E8 + add r1, sp, #4 + strh r0, [r1] + ldrh r0, [r1] + add r1, r4, #0 + add r2, r6, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r7, #0 + bl MOD05_021F3AE0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3B7C +MOD05_021F3B7C: ; 0x021F3B7C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + str r2, [sp, #4] + ldr r0, [r5, #0xc] + add r4, r3, #0 + add r7, r1, #0 + bl SavArray_PlayerParty_get + add r1, r4, #0 + bl GetPartyMonByIndex + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + bl MOD05_021F38CC + add r1, sp, #8 + strh r0, [r1] + ldrh r0, [r1] + add r1, r7, #0 + add r3, r4, #0 + str r0, [sp] + ldr r2, [sp, #4] + add r0, r5, #0 + bl MOD05_021F3AE0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + .section .rodata + + .global UNK05_021FC5A4 +UNK05_021FC5A4: ; 0x021FC5A4 + .byte 0x22, 0x01 + + .global UNK05_021FC5A6 +UNK05_021FC5A6: ; 0x021FC5A6 + .byte 0x01, 0x00 + + .global UNK05_021FC5A8 +UNK05_021FC5A8: ; 0x021FC5A8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x2C, 0x01, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x90, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x00, 0x00 + .byte 0xF4, 0x01, 0x04, 0x00, 0x36, 0x01, 0x00, 0x00, 0x58, 0x02, 0x14, 0x00, 0xC6, 0x02, 0x00, 0x00 + .byte 0xBC, 0x02, 0x32, 0x00, 0x96, 0x0A, 0x00, 0x00, 0x20, 0x03, 0x64, 0x00, 0x1E, 0x1E, 0x00, 0x00 + .byte 0x84, 0x03, 0x96, 0x00, 0x2E, 0x45, 0x00, 0x00, 0xE8, 0x03, 0x96, 0x00, 0xC6, 0x7F, 0x00, 0x00 + .byte 0x4C, 0x04, 0x64, 0x00, 0x5E, 0xBA, 0x00, 0x00, 0xB0, 0x04, 0x32, 0x00, 0x6E, 0xE1, 0x00, 0x00 + .byte 0x14, 0x05, 0x14, 0x00, 0xF6, 0xF4, 0x00, 0x00, 0x78, 0x05, 0x05, 0x00, 0xC6, 0xFC, 0x00, 0x00 + .byte 0xDC, 0x05, 0x02, 0x00, 0xBA, 0xFE, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, 0x82, 0xFF, 0x00, 0x00 + .byte 0xA4, 0x06, 0x01, 0x00, 0xE6, 0xFF, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F3BC0.s b/arm9/modules/05/asm/mod05_021F3BC0.s new file mode 100644 index 00000000..c19b51c7 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F3BC0.s @@ -0,0 +1,132 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F3BC0 +MOD05_021F3BC0: ; 0x021F3BC0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #4 + mov r1, #0x20 + bl AllocFromHeap + add r5, r0, #0 + mov r4, #0 +_021F3BD0: + mov r1, #0xf + lsl r1, r1, #0xc + add r2, r4, #0 + mul r2, r1 + ldr r1, _021F3C2C ; =UNK05_021FD684 + lsl r0, r4, #2 + add r1, r1, r2 + add r6, r5, r0 + str r1, [r5, r0] + ldr r0, [r5, r0] + cmp r0, #0 + bne _021F3BEC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3BEC: + cmp r7, #0 + beq _021F3C0A + mov r1, #9 + mov r0, #4 + lsl r1, r1, #0xc + bl AllocFromHeap + str r0, [r6, #0x10] + cmp r0, #0 + bne _021F3C04 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3C04: + mov r2, #9 + lsl r2, r2, #0xc + b _021F3C10 +_021F3C0A: + mov r0, #0 + str r0, [r6, #0x10] + add r2, r0, #0 +_021F3C10: + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + add r3, r5, #0 + bl MOD05_021F3C74 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021F3BD0 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F3C2C: .word UNK05_021FD684 + + thumb_func_start MOD05_021F3C30 +MOD05_021F3C30: ; 0x021F3C30 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_021F3C38: + lsl r0, r4, #2 + add r5, r6, r0 + str r7, [r6, r0] + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021F3C4C + bl FreeToHeap + mov r0, #0 + str r0, [r5, #0x10] +_021F3C4C: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021F3C38 + add r0, r6, #0 + bl FreeToHeap + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3C60 +MOD05_021F3C60: ; 0x021F3C60 + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [r2] + bx lr + + thumb_func_start MOD05_021F3C68 +MOD05_021F3C68: ; 0x021F3C68 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x10] + str r0, [r2] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3C74 +MOD05_021F3C74: ; 0x021F3C74 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + lsl r4, r0, #2 + add r6, r1, #0 + add r7, r2, #0 + ldr r0, [r5, r4] + mov r1, #0 + add r2, r6, #0 + bl MI_CpuFill8 + add r0, r5, r4 + ldr r0, [r0, #0x10] + mov r1, #0 + add r2, r7, #0 + bl MI_CpuFill8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + .section .bss + + .global UNK05_021FD684 +UNK05_021FD684: ; 0x021FD684 + .space 0x3C01C diff --git a/arm9/modules/05/asm/mod05_021F3C98.s b/arm9/modules/05/asm/mod05_021F3C98.s new file mode 100644 index 00000000..0a57e0d7 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F3C98.s @@ -0,0 +1,447 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F3C98 +MOD05_021F3C98: ; 0x021F3C98 + push {r4, r5, r6, r7} + add r4, r0, #0 + add r3, r2, #0 + mov r5, #0xc + add r2, r1, #0 + ldr r0, [r4, #4] + mul r2, r5 + ldrh r0, [r0, r2] + ldr r6, [r4, #0x10] + add r1, r0, #0 + mul r1, r5 + add r7, r6, r1 + ldmia r7!, {r0, r1} + add r6, r3, #0 + stmia r6!, {r0, r1} + ldr r0, [r7] + str r0, [r6] + ldr r1, [r4, #4] + ldr r0, [r4, #0x10] + add r1, r1, r2 + ldrh r1, [r1, #2] + add r6, r1, #0 + mul r6, r5 + add r7, r0, r6 + add r6, r3, #0 + ldmia r7!, {r0, r1} + add r6, #0xc + stmia r6!, {r0, r1} + ldr r0, [r7] + add r3, #0x18 + str r0, [r6] + ldr r1, [r4, #4] + ldr r0, [r4, #0x10] + add r1, r1, r2 + ldrh r1, [r1, #4] + add r2, r1, #0 + mul r2, r5 + add r2, r0, r2 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + pop {r4, r5, r6, r7} + bx lr + + thumb_func_start MOD05_021F3CF0 +MOD05_021F3CF0: ; 0x021F3CF0 + push {r4, r5} + ldr r3, [r0, #0x14] + ldr r5, [r0, #4] + mov r0, #0xc + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + ldrh r1, [r1, #6] + mul r0, r1 + add r3, r3, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021F3D10 +MOD05_021F3D10: ; 0x021F3D10 + mov r3, #0 + add r2, r3, #0 + sub r1, r3, #1 +_021F3D16: + str r2, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + add r3, r3, #1 + add r0, #0xc + cmp r3, #0xa + blt _021F3D16 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3D28 +MOD05_021F3D28: ; 0x021F3D28 + push {r4, r5, r6, r7} + add r4, r0, #0 + add r0, r2, #0 + mov ip, r3 + cmp r1, #0 + bne _021F3D3A + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_021F3D3A: + cmp r1, #1 + bne _021F3D4A + mov r1, #0 + mov r0, ip + strh r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021F3D4A: + sub r5, r1, #1 + lsr r1, r5, #0x1f + add r1, r5, r1 + mov r3, #0 + asr r6, r1, #1 + mov r7, #0xa +_021F3D56: + add r1, r6, #0 + mul r1, r7 + add r2, r4, r1 + ldrh r1, [r2, #4] + ldrh r2, [r2, #2] + lsl r1, r1, #0x10 + orr r1, r2 + cmp r1, r0 + ble _021F3D84 + sub r1, r5, #1 + cmp r1, r3 + ble _021F3D7A + add r2, r3, r6 + lsr r1, r2, #0x1f + add r1, r2, r1 + add r5, r6, #0 + asr r6, r1, #1 + b _021F3D56 +_021F3D7A: + mov r0, ip + strh r6, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021F3D84: + add r1, r3, #1 + cmp r1, r5 + bge _021F3D96 + add r2, r6, r5 + lsr r1, r2, #0x1f + add r1, r2, r1 + add r3, r6, #0 + asr r6, r1, #1 + b _021F3D56 +_021F3D96: + add r1, r6, #1 + mov r0, ip + strh r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3DA4 +MOD05_021F3DA4: ; 0x021F3DA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x110 + str r0, [sp, #0x20] + ldr r0, [sp, #0x128] + add r4, r3, #0 + str r0, [sp, #0x128] + ldr r0, [r4, #0x1c] + add r6, r1, #0 + add r7, r2, #0 + cmp r0, #0 + bne _021F3DC0 + add sp, #0x110 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3DC0: + mov r5, #0 + add r0, sp, #0x98 + str r6, [sp, #0x68] + str r5, [sp, #0x6c] + str r7, [sp, #0x70] + bl MOD05_021F3D10 + ldr r1, [r4] + ldr r0, [r1, #4] + sub r0, r6, r0 + bpl _021F3DD8 + add r0, r5, #0 +_021F3DD8: + ldr r2, [r1, #8] + sub r7, r7, r2 + bpl _021F3DE0 + mov r7, #0 +_021F3DE0: + ldr r1, [r1, #0x14] + bl FX_Div + ldr r1, [r4] + asr r6, r0, #0xc + ldrh r0, [r1] + cmp r6, r0 + blo _021F3DF2 + sub r6, r0, #1 +_021F3DF2: + ldr r1, [r1, #0x18] + add r0, r7, #0 + bl FX_Div + asr r1, r0, #0xc + ldr r0, [r4] + ldrh r0, [r0, #2] + cmp r1, r0 + blo _021F3E06 + sub r1, r0, #1 +_021F3E06: + mul r0, r1 + add r0, r6, r0 + lsl r2, r0, #2 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r3, r1, r2 + ldrh r6, [r3, #2] + ldrh r1, [r1, r2] + lsl r3, r6, #2 + add r3, r6, r3 + lsl r3, r3, #1 + add r6, r0, r3 + ldr r0, [sp, #0x70] + add r3, sp, #0x58 + str r0, [sp, #0x28] + ldr r2, [sp, #0x28] + add r0, r6, #0 + bl MOD05_021F3D28 + cmp r0, #0 + bne _021F3E36 + add sp, #0x110 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3E36: + add r0, sp, #0x58 + ldrh r1, [r0] + lsl r0, r1, #2 + add r1, r1, r0 + lsl r0, r1, #1 + ldrh r0, [r6, r0] + str r0, [sp, #0x44] + add r0, r1, #4 + lsl r0, r0, #1 + add r1, r1, #3 + ldrh r0, [r6, r0] + lsl r1, r1, #1 + ldrh r1, [r6, r1] + lsl r0, r0, #0x10 + orr r1, r0 + mov r0, #0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x44] + cmp r0, #0 + bls _021F3F50 + add r0, sp, #0x98 + str r0, [sp, #0x40] + lsl r0, r1, #1 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x28] + asr r0, r0, #0x1f + str r0, [sp, #0x38] + ldr r0, [sp, #0x68] + str r0, [sp, #0x2c] + asr r0, r0, #0x1f + str r0, [sp, #0x30] + mov r0, sp + str r0, [sp, #0x4c] + sub r0, r0, #4 + str r0, [sp, #0x4c] +_021F3E7C: + ldr r0, [sp, #0x48] + ldr r2, [r4, #0x18] + lsl r1, r0, #1 + ldr r0, [sp, #0x3c] + add r0, r0, r2 + ldrh r7, [r1, r0] + add r0, r4, #0 + add r2, sp, #0x74 + add r1, r7, #0 + bl MOD05_021F3C98 + mov r0, #0 + add r3, sp, #0x80 + str r0, [sp, #0x78] + str r0, [sp, #0x84] + str r0, [sp, #0x90] + ldmia r3!, {r0, r1} + add r2, sp, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x8c + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x74 + str r0, [r2] + ldr r2, [sp, #0x4c] + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r6, sp, #0x68 + str r0, [r2] + ldr r0, [sp, #0x4c] + ldr r3, [r0] + ldmia r6!, {r0, r1, r2} + bl FUN_0201C878 + cmp r0, #1 + bne _021F3F40 + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0x5c + bl MOD05_021F3CF0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + asr r1, r0, #0x1f + bl _ll_mul + str r0, [sp, #0x50] + ldr r0, [sp, #0x64] + add r6, r1, #0 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + asr r1, r0, #0x1f + bl _ll_mul + mov ip, r0 + mov r2, #0xc + ldr r0, [r4, #4] + mul r2, r7 + add r0, r0, r2 + mov r2, #2 + ldr r3, [sp, #0x50] + lsl r2, r2, #0xa + add r3, r3, r2 + ldr r2, _021F3FDC ; =0x00000000 + ldr r0, [r0, #8] + adc r6, r2 + lsl r2, r6, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #2 + lsl r2, r2, #0xa + mov r6, ip + add r2, r6, r2 + ldr r6, _021F3FDC ; =0x00000000 + adc r1, r6 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r3, r2 + add r0, r0, r1 + ldr r1, [sp, #0x60] + neg r0, r0 + bl FX_Div + ldr r1, [sp, #0x40] + add r5, r5, #1 + str r0, [r1] + add r0, r1, #0 + add r0, #0xc + str r0, [sp, #0x40] + cmp r5, #0xa + bge _021F3F50 +_021F3F40: + ldr r0, [sp, #0x48] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + str r1, [sp, #0x48] + ldr r0, [sp, #0x44] + cmp r1, r0 + blo _021F3E7C +_021F3F50: + cmp r5, #1 + ble _021F3FB8 + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0201C7A8 + add r4, r0, #0 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0201C7A0 + sub r6, r4, r0 + mov r4, #1 + cmp r5, #1 + ble _021F3FA4 +_021F3F72: + mov r0, #0xc + add r7, r4, #0 + mul r7, r0 + add r1, sp, #0x98 + ldr r0, [sp, #0x20] + ldr r1, [r1, r7] + bl FUN_0201C7A8 + add r1, sp, #0x98 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [r1, r7] + bl FUN_0201C7A0 + ldr r1, [sp, #0x54] + sub r0, r1, r0 + cmp r6, r0 + ble _021F3F9A + add r6, r0, #0 + str r4, [sp, #0x24] +_021F3F9A: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blt _021F3F72 +_021F3FA4: + ldr r0, [sp, #0x24] + mov r1, #0xc + mul r1, r0 + add r0, sp, #0x98 + ldr r1, [r0, r1] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FB8: + bne _021F3FC6 + ldr r1, [sp, #0x98] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FC6: + cmp r5, #0 + beq _021F3FD6 + ldr r1, [sp, #0x98] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FD6: + mov r0, #0 + add sp, #0x110 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F3FDC: .word 0x00000000 diff --git a/arm9/modules/05/asm/mod05_021F3FE0.s b/arm9/modules/05/asm/mod05_021F3FE0.s new file mode 100644 index 00000000..a32bb53b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F3FE0.s @@ -0,0 +1,595 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F3FE0 +MOD05_021F3FE0: ; 0x021F3FE0 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + mov r2, #0x1c + add r4, r1, #0 + bl MIi_CpuClear32 + add r0, r5, #0 + mov r1, #8 + add r2, sp, #0 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, r4, #0 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, r4, #4 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #8 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #0xc + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #0x18 + bl NARC_ReadFile + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl NARC_ReadFile + add r2, r4, #0 + add r0, r5, #0 + mov r1, #4 + add r2, #0x14 + bl NARC_ReadFile + add r4, #0x10 + add r0, r5, #0 + mov r1, #4 + add r2, r4, #0 + bl NARC_ReadFile + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4094 +MOD05_021F4094: ; 0x021F4094 + push {r4, r5, r6, lr} + ldr r4, [r2] + mov r3, #0 + str r4, [r1, #0x10] + ldr r5, [r0] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40B8 + add r3, r3, r4 +_021F40B8: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #0x14] + ldr r5, [r0, #4] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40DA + add r3, r3, r4 +_021F40DA: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #4] + ldr r5, [r0, #8] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40FC + add r3, r3, r4 +_021F40FC: + ldr r4, [r2] + add r4, r4, r3 + add r3, #0x1c + str r4, [r1] + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4118 + add r3, r3, r4 +_021F4118: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #8] + ldr r4, [r0, #0xc] + lsl r4, r4, #2 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4138 + add r3, r3, r4 +_021F4138: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #0xc] + ldr r4, [r0, #0x14] + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4156 + add r3, r3, r4 +_021F4156: + ldr r2, [r2] + add r2, r2, r3 + str r2, [r1, #0x18] + ldr r0, [r0, #0x10] + add r3, r3, r0 + lsr r2, r3, #0x1f + lsl r1, r3, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _021F4174 + add r3, r3, r0 +_021F4174: + mov r0, #9 + lsl r0, r0, #0xc + cmp r3, r0 + ble _021F4180 + bl GF_AssertFail +_021F4180: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4184 +MOD05_021F4184: ; 0x021F4184 + ldr r3, _021F4190 ; =NARC_ReadFile + add r2, r1, #0 + mov r1, #0x1c + ldr r2, [r2] + bx r3 + nop +_021F4190: .word NARC_ReadFile + + thumb_func_start MOD05_021F4194 +MOD05_021F4194: ; 0x021F4194 + ldr r2, [r2] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #0x10] + ldr r3, _021F41A4 ; =NARC_ReadFile + bx r3 + nop +_021F41A4: .word NARC_ReadFile + + thumb_func_start MOD05_021F41A8 +MOD05_021F41A8: ; 0x021F41A8 + ldr r2, [r2, #4] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #0x14] + ldr r3, _021F41B8 ; =NARC_ReadFile + bx r3 + nop +_021F41B8: .word NARC_ReadFile + + thumb_func_start MOD05_021F41BC +MOD05_021F41BC: ; 0x021F41BC + ldr r2, [r2, #8] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #4] + ldr r3, _021F41CC ; =NARC_ReadFile + bx r3 + nop +_021F41CC: .word NARC_ReadFile + + thumb_func_start MOD05_021F41D0 +MOD05_021F41D0: ; 0x021F41D0 + add r3, r1, #0 + ldr r1, [r2, #0xc] + ldr r2, [r3, #8] + ldr r3, _021F41DC ; =NARC_ReadFile + lsl r1, r1, #2 + bx r3 + .balign 4, 0 +_021F41DC: .word NARC_ReadFile + + thumb_func_start MOD05_021F41E0 +MOD05_021F41E0: ; 0x021F41E0 + add r3, r1, #0 + ldr r1, [r2, #0x14] + ldr r2, [r3, #0xc] + ldr r3, _021F41EC ; =NARC_ReadFile + bx r3 + nop +_021F41EC: .word NARC_ReadFile + + thumb_func_start MOD05_021F41F0 +MOD05_021F41F0: ; 0x021F41F0 + add r3, r1, #0 + ldr r1, [r2, #0x10] + ldr r2, [r3, #0x18] + ldr r3, _021F41FC ; =NARC_ReadFile + bx r3 + nop +_021F41FC: .word NARC_ReadFile + + thumb_func_start MOD05_021F4200 +MOD05_021F4200: ; 0x021F4200 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r1, #0xa0 + ldr r1, [r1] + add r5, r0, #0 + cmp r1, #1 + bne _021F4216 + add r1, r4, #0 + mov r2, #2 + add r1, #0x6c + strb r2, [r1] +_021F4216: + add r1, r4, #0 + add r1, #0x6c + ldrb r1, [r1] + cmp r1, #0 + beq _021F422A + cmp r1, #1 + beq _021F425E + cmp r1, #2 + beq _021F42EA + b _021F4302 +_021F422A: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _021F423A + mov r0, #0 + b _021F4302 +_021F423A: + add r0, r4, #0 + add r0, #0xa8 + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x4c + bl MOD05_021F3FE0 + add r1, r4, #0 + add r1, #0x9c + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r1] + add r0, #0x4c + add r2, #0x98 + bl MOD05_021F4094 + mov r0, #1 + b _021F4302 +_021F425E: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + ldr r0, [r0] + ldr r1, [r1] + bl MOD05_021F4184 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F4194 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41A8 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41BC + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41D0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41E0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41F0 + mov r0, #1 + b _021F4302 +_021F42EA: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FreeToHeap + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_021F4302: + cmp r0, #1 + bne _021F4326 + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x6c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + cmp r0, #2 + bne _021F4326 + add r4, #0x9c + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x1c] +_021F4326: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4328 +MOD05_021F4328: ; 0x021F4328 + push {r3, lr} + mov r0, #4 + mov r1, #0x20 + bl AllocFromHeap + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x18] + pop {r3, pc} + + thumb_func_start MOD05_021F4344 +MOD05_021F4344: ; 0x021F4344 + push {r0, r1, r2, r3} + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x1c + add r4, r2, #0 + bl AllocFromHeapAtEnd + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F3FE0 + add r0, r6, #0 + add r1, r4, #0 + add r2, sp, #0x1c + bl MOD05_021F4094 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F4184 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F4194 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41A8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41BC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41E0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41F0 + add r0, r6, #0 + bl FreeToHeap + mov r0, #1 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4, 0 + + thumb_func_start MOD05_021F43C0 +MOD05_021F43C0: ; 0x021F43C0 + push {r3, lr} + cmp r0, #0 + beq _021F43CA + bl FreeToHeap +_021F43CA: + pop {r3, pc} + + thumb_func_start MOD05_021F43CC +MOD05_021F43CC: ; 0x021F43CC + cmp r0, #0 + beq _021F43E2 + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x18] +_021F43E2: + bx lr + + thumb_func_start MOD05_021F43E4 +MOD05_021F43E4: ; 0x021F43E4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + mov r1, #0xb4 + add r6, r2, #0 + add r7, r3, #0 + bl AllocFromHeapAtEnd + add r1, r0, #0 + add r2, r1, #0 + mov r0, #0 + add r2, #0x6c + strb r0, [r2] + add r2, r1, #0 + add r2, #0xa8 + str r5, [r2] + add r2, r1, #0 + add r2, #0xac + str r4, [r2] + add r2, r1, #0 + add r2, #0x9c + str r6, [r2] + add r2, r1, #0 + add r2, #0xa4 + str r7, [r2] + add r2, r1, #0 + add r2, #0xa0 + str r0, [r2] + str r0, [r1, #0x68] + str r0, [r1, #0x48] + ldr r0, [sp, #0x18] + ldr r2, [r0] + add r0, r1, #0 + add r0, #0x98 + str r2, [r0] + add r0, r1, #0 + ldr r2, [sp, #0x1c] + add r0, #0xb0 + str r2, [r0] + ldr r0, _021F4440 ; =MOD05_021F4200 + mov r2, #1 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4440: .word MOD05_021F4200 + + thumb_func_start MOD05_021F4444 +MOD05_021F4444: ; 0x021F4444 + push {r3, lr} + bl FUN_0201B6C8 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4454 +MOD05_021F4454: ; 0x021F4454 + mov r1, #0 + str r1, [r0, #0x1c] + bx lr + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F445C.s b/arm9/modules/05/asm/mod05_021F445C.s new file mode 100644 index 00000000..c163fd6b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F445C.s @@ -0,0 +1,199 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F445C +MOD05_021F445C: ; 0x021F445C + push {r4, r5} + ldr r3, [r2, #0x14] + cmp r3, #0 + bne _021F446A + mov r0, #0 + pop {r4, r5} + bx lr +_021F446A: + ldr r5, [r2] + ldr r3, [r2, #8] + ldr r4, [r2, #4] + ldr r2, [r2, #0xc] + add r3, r5, r3 + add r2, r4, r2 + sub r3, r3, #1 + sub r2, r2, #1 + cmp r5, r0 + bgt _021F4490 + cmp r0, r3 + bgt _021F4490 + cmp r4, r1 + bgt _021F4490 + cmp r1, r2 + bgt _021F4490 + mov r0, #1 + pop {r4, r5} + bx lr +_021F4490: + mov r0, #0 + pop {r4, r5} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F4498 +MOD05_021F4498: ; 0x021F4498 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #8 + bl AllocFromHeap + mov r1, #0x18 + add r4, r0, #0 + add r0, r6, #0 + mul r1, r5 + bl AllocFromHeap + str r0, [r4, #4] + mov r6, #0 + str r5, [r4] + cmp r5, #0 + bls _021F44D4 + add r0, r6, #0 + mov r1, #0x18 +_021F44C0: + add r2, r6, #0 + ldr r3, [r4, #4] + mul r2, r1 + add r2, r3, r2 + str r0, [r2, #0x14] + add r2, r6, #1 + lsl r2, r2, #0x18 + lsr r6, r2, #0x18 + cmp r6, r5 + blo _021F44C0 +_021F44D4: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F44D8 +MOD05_021F44D8: ; 0x021F44D8 + push {r4, r5} + ldr r5, [sp, #0x10] + mov r4, #0x18 + mul r4, r0 + ldr r0, [r5, #4] + str r1, [r0, r4] + ldr r0, [r5, #4] + ldr r1, [sp, #8] + add r0, r0, r4 + str r2, [r0, #4] + ldr r0, [r5, #4] + add r0, r0, r4 + str r3, [r0, #8] + ldr r0, [r5, #4] + add r0, r0, r4 + str r1, [r0, #0xc] + ldr r0, [r5, #4] + ldr r1, [sp, #0xc] + add r0, r0, r4 + str r1, [r0, #0x10] + ldr r0, [r5, #4] + mov r1, #1 + add r0, r0, r4 + str r1, [r0, #0x14] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021F450C +MOD05_021F450C: ; 0x021F450C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FreeToHeap + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4520 +MOD05_021F4520: ; 0x021F4520 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + str r3, [sp] + cmp r3, #0 + bne _021F4532 + bl GF_AssertFail +_021F4532: + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + ble _021F4562 +_021F453A: + mov r3, #0x18 + ldr r2, [r5, #4] + mul r3, r4 + add r0, r6, #0 + add r1, r7, #0 + add r2, r2, r3 + bl MOD05_021F445C + cmp r0, #0 + beq _021F4556 + ldr r0, [sp] + strb r4, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4556: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [r5] + cmp r4, r0 + blt _021F453A +_021F4562: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4568 +MOD05_021F4568: ; 0x021F4568 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r5, r0 + blt _021F4578 + bl GF_AssertFail +_021F4578: + mov r0, #0x18 + add r6, r5, #0 + mul r6, r0 + ldr r0, [r4, #4] + add r0, r0, r6 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021F458C + bl GF_AssertFail +_021F458C: + ldr r0, [r4, #4] + add r0, r0, r6 + ldr r0, [r0, #0x10] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4594 +MOD05_021F4594: ; 0x021F4594 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6] + add r4, r1, #0 + cmp r5, r0 + blt _021F45A6 + bl GF_AssertFail +_021F45A6: + mov r0, #0x18 + ldr r1, [r6, #4] + mul r0, r5 + add r0, r1, r0 + str r4, [r0, #0x10] + pop {r4, r5, r6, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F45B4.s b/arm9/modules/05/asm/mod05_021F45B4.s new file mode 100644 index 00000000..a5ddfe3e --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F45B4.s @@ -0,0 +1,173 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F45B4 +MOD05_021F45B4: ; 0x021F45B4 + push {r4, lr} + mov r1, #0x1c + bl AllocFromHeap + add r4, r0, #0 + bl MOD05_021F4650 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F45C8 +MOD05_021F45C8: ; 0x021F45C8 + push {r4, lr} + add r4, r0, #0 + beq _021F45E4 + ldr r1, [r4] + cmp r1, #1 + bne _021F45D8 + bl MOD05_021F4608 +_021F45D8: + add r0, r4, #0 + bl MOD05_021F4650 + add r0, r4, #0 + bl FreeToHeap +_021F45E4: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F45E8 +MOD05_021F45E8: ; 0x021F45E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021F4604 ; =MOD05_021F4688 + add r1, r4, #0 + bl FUN_02015F34 + cmp r0, #1 + beq _021F45FC + bl GF_AssertFail +_021F45FC: + mov r0, #1 + str r0, [r4] + pop {r4, pc} + nop +_021F4604: .word MOD05_021F4688 + + thumb_func_start MOD05_021F4608 +MOD05_021F4608: ; 0x021F4608 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + cmp r0, #1 + beq _021F461C + bl GF_AssertFail +_021F461C: + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4624 +MOD05_021F4624: ; 0x021F4624 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + bl MOD05_021F46A8 + add r4, r0, #0 + bne _021F4636 + bl GF_AssertFail +_021F4636: + cmp r4, #0 + beq _021F4642 + str r6, [r4, #4] + str r5, [r4, #8] + mov r0, #1 + str r0, [r4] +_021F4642: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4648 +MOD05_021F4648: ; 0x021F4648 + ldr r3, _021F464C ; =MOD05_021F4678 + bx r3 + .balign 4, 0 +_021F464C: .word MOD05_021F4678 + + thumb_func_start MOD05_021F4650 +MOD05_021F4650: ; 0x021F4650 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r2, #0x1c + mov r1, #0 +_021F4658: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021F4658 + mov r4, #0 + str r4, [r0] + add r5, r0, #4 +_021F4666: + add r0, r5, #0 + bl MOD05_021F4678 + add r4, r4, #1 + add r5, #0xc + cmp r4, #2 + blt _021F4666 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4678 +MOD05_021F4678: ; 0x021F4678 + mov r2, #0 + ldr r1, _021F4684 ; =MOD05_021F46A4 + str r2, [r0] + str r1, [r0, #8] + str r2, [r0, #4] + bx lr + .balign 4, 0 +_021F4684: .word MOD05_021F46A4 + + thumb_func_start MOD05_021F4688 +MOD05_021F4688: ; 0x021F4688 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #4 +_021F4690: + ldr r1, [r5, #8] + ldr r2, [r5, #0xc] + add r0, r4, #0 + blx r2 + add r6, r6, #1 + add r5, #0xc + add r4, #0xc + cmp r6, #2 + blt _021F4690 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F46A4 +MOD05_021F46A4: ; 0x021F46A4 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F46A8 +MOD05_021F46A8: ; 0x021F46A8 + mov r2, #0 + add r3, r0, #0 +_021F46AC: + ldr r1, [r3, #4] + cmp r1, #0 + bne _021F46BC + add r1, r0, #4 + mov r0, #0xc + mul r0, r2 + add r0, r1, r0 + bx lr +_021F46BC: + add r2, r2, #1 + add r3, #0xc + cmp r2, #2 + blt _021F46AC + mov r0, #0 + bx lr diff --git a/arm9/modules/05/asm/mod05_021F46C8.s b/arm9/modules/05/asm/mod05_021F46C8.s new file mode 100644 index 00000000..e23f3da6 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F46C8.s @@ -0,0 +1,356 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F46C8 +MOD05_021F46C8: ; 0x021F46C8 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0xca + lsl r1, r1, #2 + add r6, r0, #0 + bl AllocFromHeap + mov r2, #0xca + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl memset + mov r2, #0x63 + mov r0, #0 + add r1, r4, #0 + lsl r2, r2, #2 + str r0, [r4] + add r0, r6, #0 + add r1, #0xc + add r2, r4, r2 + bl FUN_02012944 + mov r1, #0xc3 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #4 + str r5, [r4, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4704 +MOD05_021F4704: ; 0x021F4704 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #1 + bne _021F4712 + bl MOD05_021F491C +_021F4712: + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012974 + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021F4724 +MOD05_021F4724: ; 0x021F4724 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F4732 + bl GF_AssertFail +_021F4732: + mov r0, #0x31 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _021F47A4 ; =MOD05_021F48CC + add r2, r4, #0 + bl MOD05_021F4624 + mov r2, #0xc5 + lsl r2, r2, #2 + str r0, [r4, r2] + ldr r0, _021F47A8 ; =MOD05_021F47B4 + add r1, r4, #0 + add r2, #0xec + bl FUN_0200CA44 + mov r2, #0xc7 + lsl r2, r2, #2 + str r0, [r4, r2] + ldr r0, _021F47AC ; =MOD05_021F48BC + add r1, r4, #0 + add r2, #0xe4 + bl FUN_0200CA60 + mov r2, #0x32 + lsl r2, r2, #4 + str r0, [r4, r2] + ldr r0, _021F47B0 ; =MOD05_021F48F0 + add r1, r4, #0 + add r2, #0xe0 + bl FUN_0200CA60 + mov r1, #0xc9 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r2, #6 + add r0, #0xc + mov r1, #0 + lsl r2, r2, #6 + bl memset + mov r2, #0x63 + lsl r2, r2, #2 + add r0, r4, r2 + mov r1, #0 + sub r2, #0xc + bl memset + mov r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + mov r0, #0x61 + lsl r0, r0, #4 + bl PlaySE + pop {r4, pc} + .balign 4, 0 +_021F47A4: .word MOD05_021F48CC +_021F47A8: .word MOD05_021F47B4 +_021F47AC: .word MOD05_021F48BC +_021F47B0: .word MOD05_021F48F0 + + thumb_func_start MOD05_021F47B4 +MOD05_021F47B4: ; 0x021F47B4 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _021F483C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F47CA: ; jump table + .short _021F47D2 - _021F47CA - 2 ; case 0 + .short _021F47DE - _021F47CA - 2 ; case 1 + .short _021F480A - _021F47CA - 2 ; case 2 + .short _021F4830 - _021F47CA - 2 ; case 3 +_021F47D2: + mov r0, #3 + str r0, [r4, #4] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F47DE: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, [r4, #4] + mov r2, #3 + sub r1, r2, r1 + bl MOD05_021F4878 + ldr r0, [r4, #4] + cmp r0, #0 + bgt _021F483C + mov r0, #3 + str r0, [r4, #4] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F480A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, [r4, #4] + mov r2, #3 + bl MOD05_021F4878 + ldr r0, [r4, #4] + cmp r0, #0 + bgt _021F483C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F4830: + add r0, r4, #0 + bl MOD05_021F491C + mov r0, #0 + bl G3X_SetHOffset +_021F483C: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4840 +MOD05_021F4840: ; 0x021F4840 + push {r4, lr} + ldr r1, _021F4870 ; =0x04000006 + ldrh r4, [r1] + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_0201299C + cmp r4, #0xc0 + bge _021F486E + add r3, r4, #1 + cmp r3, #0xc0 + blt _021F485C + sub r3, #0xc0 +_021F485C: + ldr r1, _021F4874 ; =0x04000004 + ldrh r2, [r1] + mov r1, #2 + tst r1, r2 + beq _021F486E + lsl r1, r3, #1 + ldrh r0, [r0, r1] + bl G3X_SetHOffset +_021F486E: + pop {r4, pc} + .balign 4, 0 +_021F4870: .word 0x04000006 +_021F4874: .word 0x04000004 + + thumb_func_start MOD05_021F4878 +MOD05_021F4878: ; 0x021F4878 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r0, r1, #1 + add r0, r1, r0 + add r1, r2, #0 + mov r4, #1 + bl _s32_div_f + neg r1, r0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r0, r0, #0x10 + mov r6, #0 + str r1, [sp] + lsr r7, r0, #0x10 +_021F4896: + add r0, r6, #0 + mov r1, #0xa + bl _s32_div_f + cmp r1, #0 + bne _021F48A6 + mov r0, #1 + eor r4, r0 +_021F48A6: + cmp r4, #0 + beq _021F48AE + strh r7, [r5] + b _021F48B2 +_021F48AE: + ldr r0, [sp] + strh r0, [r5] +_021F48B2: + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #0xc0 + blt _021F4896 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F48BC +MOD05_021F48BC: ; 0x021F48BC + mov r2, #0xc6 + ldr r3, _021F48C8 ; =G3X_SetHOffset + mov r0, #0 + lsl r2, r2, #2 + str r0, [r1, r2] + bx r3 + .balign 4, 0 +_021F48C8: .word G3X_SetHOffset + + thumb_func_start MOD05_021F48CC +MOD05_021F48CC: ; 0x021F48CC + ldr r3, _021F48D4 ; =MOD05_021F48D8 + add r0, r1, #0 + bx r3 + nop +_021F48D4: .word MOD05_021F48D8 + + thumb_func_start MOD05_021F48D8 +MOD05_021F48D8: ; 0x021F48D8 + push {r3, lr} + ldr r1, [r0] + cmp r1, #1 + bne _021F48EE + mov r1, #0xc6 + lsl r1, r1, #2 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021F48EE + bl MOD05_021F4840 +_021F48EE: + pop {r3, pc} + + thumb_func_start MOD05_021F48F0 +MOD05_021F48F0: ; 0x021F48F0 + ldr r3, _021F48F8 ; =MOD05_021F48FC + add r0, r1, #0 + bx r3 + nop +_021F48F8: .word MOD05_021F48FC + + thumb_func_start MOD05_021F48FC +MOD05_021F48FC: ; 0x021F48FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021F4918 + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0xc6 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F4918: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F491C +MOD05_021F491C: ; 0x021F491C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021F4648 + mov r0, #0xc5 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #8 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0xc7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0xc9 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + str r1, [r4] + pop {r4, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021F4968.s b/arm9/modules/05/asm/mod05_021F4968.s new file mode 100644 index 00000000..07285ff4 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F4968.s @@ -0,0 +1,478 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F4968 +MOD05_021F4968: ; 0x021F4968 + ldr r2, [r1, #0x14] + ldr r3, _021F4974 ; =FUN_02016B44 + add r1, r1, r2 + sub r1, r1, r0 + bx r3 + nop +_021F4974: .word ReallocFromHeap + + thumb_func_start MOD05_021F4978 +MOD05_021F4978: ; 0x021F4978 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x23 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + bl AllocFromHeap + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeapAtEnd + ldr r1, _021F49A8 ; =0x000008B8 + mov r2, #0 + str r0, [r4, r1] + ldr r0, [r4, r1] + str r5, [r0] + ldr r0, [r4, r1] + str r6, [r0, #4] + ldr r0, [r4, r1] + str r2, [r0, #0xc] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F49A8: .word 0x000008B8 + + thumb_func_start MOD05_021F49AC +MOD05_021F49AC: ; 0x021F49AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x110 + add r5, r0, #0 + ldr r0, _021F4B9C ; =0x000008B8 + mov r1, #0x2a + ldr r7, [r5, r0] + sub r0, #8 + ldr r2, [r7] + add r0, r5, r0 + bl ReadWholeNarcMemberByIdPair + mov r1, #0x8b + lsl r1, r1, #4 + ldrh r1, [r5, r1] + mov r0, #0x2b + mov r2, #4 + bl AllocAndReadWholeNarcMemberByIdPair + ldr r1, _021F4BA0 ; =0x000008BC + str r0, [r5, r1] + ldr r0, [r5, r1] + ldrh r1, [r0] + ldr r0, _021F4BA4 ; =0x00000226 + strh r1, [r7, #8] + cmp r1, r0 + blo _021F49E4 + bl GF_AssertFail +_021F49E4: + ldr r1, _021F4BA8 ; =0x000008A4 + mov r0, #0 + str r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + mov r0, #0x2c + mov r2, #4 + bl AllocAndReadWholeNarcMemberByIdPair + ldr r1, _021F4BAC ; =0x0000089C + mov r2, #4 + str r0, [r5, r1] + add r1, #0x14 + ldrh r1, [r5, r1] + mov r0, #0x47 + bl AllocAndReadWholeNarcMemberByIdPair + mov r1, #0x8a + lsl r1, r1, #4 + str r0, [r5, r1] + sub r0, r1, #4 + ldr r0, [r5, r0] + bl NNS_G3dGetTex + ldr r1, _021F4BA8 ; =0x000008A4 + str r0, [r5, r1] + ldrh r0, [r7, #8] + cmp r0, #0 + beq _021F4A2C + sub r0, r1, #4 + ldr r0, [r5, r0] + bl NNS_G3dGetTex + ldr r1, _021F4BB0 ; =0x000008A8 + str r0, [r5, r1] + b _021F4A32 +_021F4A2C: + mov r2, #0 + add r0, r1, #4 + str r2, [r5, r0] +_021F4A32: + ldr r0, _021F4BA8 ; =0x000008A4 + ldr r0, [r5, r0] + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4A42 + bl GF_AssertFail +_021F4A42: + ldr r1, _021F4BAC ; =0x0000089C + ldr r0, [r5, r1] + add r1, #8 + ldr r1, [r5, r1] + bl MOD05_021F4968 + ldr r0, _021F4BB0 ; =0x000008A8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021F4A70 + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4A62 + bl GF_AssertFail +_021F4A62: + mov r1, #0x8a + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #8 + ldr r1, [r5, r1] + bl MOD05_021F4968 +_021F4A70: + mov r2, #0 + ldr r0, _021F4BA4 ; =0x00000226 + add r3, r5, #0 + add r1, r2, #0 +_021F4A78: + add r2, r2, #1 + str r1, [r3, #4] + add r3, r3, #4 + cmp r2, r0 + blt _021F4A78 + ldr r0, _021F4BB4 ; =0x000008AC + str r1, [r5, r0] + mov r0, #0x28 + mov r1, #4 + bl NARC_ctor + str r0, [sp, #0xc] + ldr r0, [r7, #4] + bl MOD05_021DA220 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldrh r0, [r7, #8] + cmp r0, #0 + ble _021F4B10 + ldr r0, [sp, #8] + str r0, [sp] +_021F4AA6: + ldr r0, _021F4BA0 ; =0x000008BC + ldr r1, [r5, r0] + ldr r0, [sp] + add r0, r1, r0 + ldrh r6, [r0, #2] + lsl r0, r6, #2 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F4ABE + bl GF_AssertFail +_021F4ABE: + ldr r0, [sp, #0xc] + add r1, r6, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + str r0, [r4, #4] + ldr r0, [sp, #4] + cmp r6, r0 + bge _021F4AEC + ldr r0, [r4, #4] + bl NNS_G3dGetMdlSet + add r1, r0, #0 + ldrh r2, [r1, #0xe] + ldr r3, [r7, #4] + add r0, r6, #0 + add r2, r1, r2 + ldr r2, [r2, #0xc] + add r1, r1, r2 + ldr r2, _021F4BB0 ; =0x000008A8 + ldr r2, [r5, r2] + bl MOD05_021D9CEC +_021F4AEC: + ldr r1, _021F4BB0 ; =0x000008A8 + ldr r0, [r4, #4] + ldr r1, [r5, r1] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021F4AFE + bl GF_AssertFail +_021F4AFE: + ldr r0, [sp] + ldrh r1, [r7, #8] + add r0, r0, #2 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r1 + blt _021F4AA6 +_021F4B10: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021F4B46 + ldr r0, [sp, #0xc] + mov r1, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + str r0, [r5, #4] + bl NNS_G3dGetTex + add r4, r0, #0 + beq _021F4B46 + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4B36 + bl GF_AssertFail +_021F4B36: + ldr r0, [r5, #4] + add r1, r4, #0 + bl FUN_0201B3A8 + cmp r0, #0 + bne _021F4B46 + bl GF_AssertFail +_021F4B46: + ldr r0, [sp, #0xc] + bl NARC_dtor + ldr r2, _021F4BB8 ; =0x04000060 + ldr r0, _021F4BBC ; =0xFFFFCFFF + ldrh r1, [r2] + and r1, r0 + mov r0, #0x20 + orr r0, r1 + strh r0, [r2] + ldr r0, _021F4BC0 ; =0x000008B6 + ldrh r0, [r5, r0] + cmp r0, #0 + bne _021F4B6A + ldr r0, _021F4BC4 ; =UNK05_021FC624 + bl G3X_SetEdgeColorTable + b _021F4B70 +_021F4B6A: + ldr r0, _021F4BC8 ; =UNK05_021FC634 + bl G3X_SetEdgeColorTable +_021F4B70: + bl MOD05_021DB900 + ldr r1, _021F4BB4 ; =0x000008AC + str r0, [r5, r1] + ldr r1, _021F4BCC ; =UNK05_021FD648 + add r0, sp, #0x10 + bl sprintf + ldr r1, _021F4BB4 ; =0x000008AC + add r0, sp, #0x10 + ldr r1, [r5, r1] + bl MOD05_021DB918 + ldr r0, _021F4B9C ; =0x000008B8 + ldr r0, [r5, r0] + bl FreeToHeap + ldr r0, _021F4B9C ; =0x000008B8 + mov r1, #0 + str r1, [r5, r0] + add sp, #0x110 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F4B9C: .word 0x000008B8 +_021F4BA0: .word 0x000008BC +_021F4BA4: .word 0x00000226 +_021F4BA8: .word 0x000008A4 +_021F4BAC: .word 0x0000089C +_021F4BB0: .word 0x000008A8 +_021F4BB4: .word 0x000008AC +_021F4BB8: .word 0x04000060 +_021F4BBC: .word 0xFFFFCFFF +_021F4BC0: .word 0x000008B6 +_021F4BC4: .word UNK05_021FC624 +_021F4BC8: .word UNK05_021FC634 +_021F4BCC: .word UNK05_021FD648 + + thumb_func_start MOD05_021F4BD0 +MOD05_021F4BD0: ; 0x021F4BD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _021F4BDC + bl GF_AssertFail +_021F4BDC: + add r2, r4, #4 + lsl r1, r5, #2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _021F4BF4 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F4BF0 + bl GF_AssertFail +_021F4BF0: + add r0, r4, #4 + pop {r3, r4, r5, pc} +_021F4BF4: + add r0, r2, r1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4BF8 +MOD05_021F4BF8: ; 0x021F4BF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5] + ldr r0, _021F4C64 ; =0x000008AC + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F4C0A + bl MOD05_021DB9BC +_021F4C0A: + mov r6, #0 + ldr r7, _021F4C68 ; =0x00000226 + add r4, r6, #0 +_021F4C10: + ldr r0, [r5] + add r0, r0, r4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4C1E + bl FreeToHeap +_021F4C1E: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r7 + blt _021F4C10 + ldr r1, [r5] + ldr r0, _021F4C6C ; =0x000008BC + ldr r0, [r1, r0] + bl FreeToHeap + ldr r1, [r5] + ldr r0, _021F4C70 ; =0x0000089C + ldr r0, [r1, r0] + bl FreeToHeap + ldr r1, [r5] + ldr r0, _021F4C70 ; =0x0000089C + mov r2, #0 + str r2, [r1, r0] + ldr r1, [r5] + add r0, r0, #4 + ldr r0, [r1, r0] + bl FreeToHeap + mov r0, #0x8a + ldr r1, [r5] + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [r5] + bl FreeToHeap + mov r0, #0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4C64: .word 0x000008AC +_021F4C68: .word 0x00000226 +_021F4C6C: .word 0x000008BC +_021F4C70: .word 0x0000089C + + thumb_func_start MOD05_021F4C74 +MOD05_021F4C74: ; 0x021F4C74 + push {r4, lr} + add r4, r0, #0 + bne _021F4C7E + bl GF_AssertFail +_021F4C7E: + ldr r0, _021F4C84 ; =0x000008A4 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4, 0 +_021F4C84: .word 0x000008A4 + + thumb_func_start MOD05_021F4C88 +MOD05_021F4C88: ; 0x021F4C88 + push {r4, lr} + add r4, r0, #0 + bne _021F4C92 + bl GF_AssertFail +_021F4C92: + ldr r0, _021F4C98 ; =0x000008A8 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4, 0 +_021F4C98: .word 0x000008A8 + + thumb_func_start MOD05_021F4C9C +MOD05_021F4C9C: ; 0x021F4C9C + ldr r1, _021F4CA4 ; =0x000008AC + ldr r0, [r0, r1] + bx lr + nop +_021F4CA4: .word 0x000008AC + + thumb_func_start MOD05_021F4CA8 +MOD05_021F4CA8: ; 0x021F4CA8 + ldr r1, _021F4CB8 ; =0x000008B6 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _021F4CB4 + mov r0, #1 + bx lr +_021F4CB4: + mov r0, #0 + bx lr + .balign 4, 0 +_021F4CB8: .word 0x000008B6 + + thumb_func_start MOD05_021F4CBC +MOD05_021F4CBC: ; 0x021F4CBC + ldr r1, _021F4CD0 ; =0x000008B6 + ldrh r0, [r0, r1] + cmp r0, #0 + bne _021F4CC8 + mov r0, #1 + b _021F4CCA +_021F4CC8: + mov r0, #0 +_021F4CCA: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4, 0 +_021F4CD0: .word 0x000008B6 + + thumb_func_start MOD05_021F4CD4 +MOD05_021F4CD4: ; 0x021F4CD4 + ldr r2, _021F4CE0 ; =0x000008BC + ldr r2, [r0, r2] + lsl r0, r1, #1 + ldrh r0, [r2, r0] + bx lr + nop +_021F4CE0: .word 0x000008BC + + thumb_func_start MOD05_021F4CE4 +MOD05_021F4CE4: ; 0x021F4CE4 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4CF2 + mov r0, #1 + bx lr +_021F4CF2: + mov r0, #0 + bx lr + .balign 4, 0 + + .section .rodata + + .global UNK05_021FC624 +UNK05_021FC624: ; 0x021FC624 + .byte 0x00, 0x00, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 + .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 + + .global UNK05_021FC634 +UNK05_021FC634: ; 0x021FC634 + .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 + .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 + + .section .data + + .balign 4 + .global UNK05_021FD648 +UNK05_021FD648: ; 0x021FD648 + .asciz "fielddata/build_model/build_model_matshp.dat" diff --git a/arm9/modules/05/asm/mod05_021F4CF8.s b/arm9/modules/05/asm/mod05_021F4CF8.s new file mode 100644 index 00000000..71401743 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F4CF8.s @@ -0,0 +1,756 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F4CF8 +MOD05_021F4CF8: ; 0x021F4CF8 + push {r4, lr} + mov r0, #4 + mov r1, #0xfc + bl AllocFromHeap + mov r4, #0 + add r2, r4, #0 +_021F4D06: + lsl r1, r4, #3 + add r3, r0, r1 + strb r2, [r0, r1] + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + str r2, [r3, #4] + cmp r4, #0x15 + blo _021F4D06 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4D1C +MOD05_021F4D1C: ; 0x021F4D1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FreeToHeap + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021F4D2C +MOD05_021F4D2C: ; 0x021F4D2C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, _021F4D7C ; =0x000007D8 + str r0, [r1] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + cmp r0, #0 + bne _021F4D76 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r6, #0 + sub r3, r2, #1 + bl FUN_0204A840 + add r0, r5, #0 + mov r1, #0x1a + add r2, sp, #0xc + mov r3, #0 + bl FUN_0204A8C4 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021F4D76: + mov r0, #0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021F4D7C: .word 0x000007D8 + + thumb_func_start MOD05_021F4D80 +MOD05_021F4D80: ; 0x021F4D80 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F4D96 + bl GF_AssertFail +_021F4D96: + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + ldr r0, [r4] + bl MOD05_021F5120 + cmp r0, #0 + beq _021F4DB8 + mov r0, #3 + pop {r3, r4, r5, pc} +_021F4DB8: + ldr r0, [r4] + cmp r0, #0 + beq _021F4DC2 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4DC2: + mov r0, #1 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4DC8 +MOD05_021F4DC8: ; 0x021F4DC8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F4DDE + bl GF_AssertFail +_021F4DDE: + ldr r0, [r6, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + str r0, [sp] + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #4 + str r0, [r4] + ldr r0, [r6, #0xc] + bl Sav2_PlayerData_GetProfileAddr + bl PlayerProfile_GetTrainerID + add r1, r5, #0 + bl MOD05_021F5138 + add r7, r0, #0 + ldr r0, [sp] + bl FUN_0202A9C0 + cmp r5, r0 + bne _021F4E42 + bl LCRandom + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _021F4E2E + bl GF_AssertFail +_021F4E2E: + cmp r6, #0x5a + bhs _021F4E42 + add r0, r4, #4 + bl MOD05_021F4F44 + ldrb r0, [r4, #6] + bl MOD05_021F4FAC + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_021F4E42: + add r0, r7, #0 + add r1, r4, #6 + bl MOD05_021F4EE4 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _021F4E60 + add r0, r4, #4 + bl MOD05_021F4F44 + ldrb r0, [r4, #6] + bl MOD05_021F4F98 + strb r0, [r4, #5] + b _021F4E68 +_021F4E60: + mov r0, #0 + strb r0, [r4, #5] + strb r0, [r4, #4] + str r0, [r4] +_021F4E68: + ldrb r0, [r4, #6] + bl MOD05_021F4FAC + strb r0, [r4, #7] + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0202A9C4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4E7C +MOD05_021F4E7C: ; 0x021F4E7C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + bne _021F4E94 + bl GF_AssertFail +_021F4E94: + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + lsl r4, r4, #3 + add r0, r0, r4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4EE0 + ldr r0, [r5, #0x24] + bl MOD05_021EF618 + ldr r1, [r5, #0x24] + add r2, sp, #0 + bl MOD05_021EF604 + ldr r0, [sp] + mov r1, #0x1a + bl MOD05_021E7ED8 + add r6, r0, #0 + bl MOD05_021E7EC8 + add r1, r0, #0 + cmp r6, #0 + beq _021F4ED6 + add r3, r5, #0 + add r3, #0xa4 + ldr r3, [r3] + ldr r0, [r5, #0x4c] + ldrb r3, [r3, r4] + mov r2, #0x1a + bl MOD05_021D9FB4 +_021F4ED6: + add r5, #0xa4 + ldr r0, [r5] + mov r1, #0 + add r0, r0, r4 + str r1, [r0, #4] +_021F4EE0: + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021F4EE4 +MOD05_021F4EE4: ; 0x021F4EE4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl LCRandom + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _021F4F02 + bl GF_AssertFail +_021F4F02: + cmp r6, #0 + beq _021F4F2A + cmp r4, #1 + bge _021F4F10 + mov r0, #3 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F10: + cmp r4, #0xa + bge _021F4F1A + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F1A: + cmp r4, #0x1e + bge _021F4F24 + mov r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F24: + mov r0, #2 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F2A: + cmp r4, #0xa + bge _021F4F34 + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F34: + cmp r4, #0x1e + bge _021F4F3E + mov r0, #2 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F3E: + mov r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4F44 +MOD05_021F4F44: ; 0x021F4F44 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl LCRandom + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021F4F60 + bl GF_AssertFail +_021F4F60: + cmp r5, #5 + bge _021F4F6A + mov r0, #5 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F6A: + cmp r5, #0xa + bge _021F4F74 + mov r0, #4 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F74: + cmp r5, #0x14 + bge _021F4F7E + mov r0, #3 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F7E: + cmp r5, #0x28 + bge _021F4F88 + mov r0, #2 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F88: + cmp r5, #0x3c + bge _021F4F92 + mov r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F92: + mov r0, #0 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4F98 +MOD05_021F4F98: ; 0x021F4F98 + cmp r0, #3 + bne _021F4FA0 + mov r0, #2 + bx lr +_021F4FA0: + cmp r0, #2 + bne _021F4FA8 + mov r0, #1 + bx lr +_021F4FA8: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F4FAC +MOD05_021F4FAC: ; 0x021F4FAC + push {r3, r4, r5, lr} + add r4, r0, #0 + bl LCRandom + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021F4FC8 + bl GF_AssertFail +_021F4FC8: + cmp r4, #3 + bne _021F4FE8 + cmp r5, #5 + bge _021F4FD4 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4FD4: + cmp r5, #6 + bge _021F4FDC + mov r0, #1 + pop {r3, r4, r5, pc} +_021F4FDC: + cmp r5, #7 + bge _021F4FE4 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F4FE4: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F4FE8: + cmp r4, #2 + bne _021F5008 + cmp r5, #0x4b + bge _021F4FF4 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4FF4: + cmp r5, #0x5f + bge _021F4FFC + mov r0, #1 + pop {r3, r4, r5, pc} +_021F4FFC: + cmp r5, #0x60 + bge _021F5004 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5004: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F5008: + cmp r4, #1 + bne _021F5028 + cmp r5, #0x13 + bge _021F5014 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F5014: + cmp r5, #0x4f + bge _021F501C + mov r0, #1 + pop {r3, r4, r5, pc} +_021F501C: + cmp r5, #0x63 + bge _021F5024 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5024: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F5028: + cmp r5, #1 + bge _021F5030 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F5030: + cmp r5, #0x13 + bge _021F5038 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5038: + cmp r5, #0x63 + bge _021F5040 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5040: + mov r0, #3 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F5044 +MOD05_021F5044: ; 0x021F5044 + mov r2, #1 + cmp r0, #3 + bne _021F5050 + mov r0, #2 + strb r0, [r1] + b _021F5064 +_021F5050: + cmp r0, #2 + bne _021F5058 + strb r2, [r1] + b _021F5064 +_021F5058: + cmp r0, #1 + bne _021F5062 + mov r0, #0 + strb r0, [r1] + b _021F5064 +_021F5062: + mov r2, #0 +_021F5064: + add r0, r2, #0 + bx lr + + thumb_func_start MOD05_021F5068 +MOD05_021F5068: ; 0x021F5068 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x28] + add r7, r1, #0 + add r1, r2, #0 + bl MapMatrix_GetMapHeaderFromID + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + beq _021F50F8 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202A9C8 + add r6, r0, #0 + ldr r0, [r6] + bl MOD05_021F5120 + cmp r0, #0 + beq _021F50F8 + ldrb r0, [r6, #7] + add r1, sp, #4 + bl MOD05_021F5044 + add r6, r0, #0 + beq _021F50F8 + add r0, r7, #0 + mov r1, #0x1a + bl MOD05_021E7ED8 + cmp r0, #0 + beq _021F50F8 + bl MOD05_021E7EC8 + add r3, r5, #0 + add r7, r0, #0 + add r3, #0xa4 + ldr r3, [r3] + lsl r4, r4, #3 + ldrb r3, [r3, r4] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + mov r2, #0x1a + bl MOD05_021D9FB4 + add r1, sp, #4 + add r2, r5, #0 + add r2, #0xa4 + ldrb r0, [r1] + ldr r2, [r2] + add r3, r7, #0 + strb r0, [r2, r4] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r2, #1 + add r0, r0, r4 + str r6, [r0, #4] + ldr r0, [r5, #0x4c] + str r0, [sp] + ldrb r1, [r1] + mov r0, #0x1a + bl MOD05_021D9DC0 +_021F50F8: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F50FC +MOD05_021F50FC: ; 0x021F50FC + ldr r2, _021F511C ; =UNK05_021FC650 + mov r3, #0 +_021F5100: + lsl r1, r3, #2 + ldr r1, [r2, r1] + cmp r0, r1 + bne _021F510C + add r0, r3, #0 + bx lr +_021F510C: + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x15 + blo _021F5100 + add r0, r3, #0 + bx lr + nop +_021F511C: .word UNK05_021FC650 + + thumb_func_start MOD05_021F5120 +MOD05_021F5120: ; 0x021F5120 + cmp r0, #0 + ble _021F512E + ldr r1, _021F5134 ; =0x00000438 + cmp r0, r1 + bgt _021F512E + mov r0, #1 + bx lr +_021F512E: + mov r0, #0 + bx lr + nop +_021F5134: .word 0x00000438 + + thumb_func_start MOD05_021F5138 +MOD05_021F5138: ; 0x021F5138 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + lsr r2, r0, #0x18 + add r1, sp, #0 + strb r2, [r1] + lsr r2, r0, #0x10 + strb r2, [r1, #1] + lsr r2, r0, #8 + strb r2, [r1, #2] + strb r0, [r1, #3] + ldrb r0, [r1] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0] + ldrb r0, [r0, #1] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #1] + ldrb r0, [r0, #2] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #2] + ldrb r0, [r0, #3] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #3] + mov r0, #0 + mov r3, #1 + add r1, sp, #0 + add r2, r0, #0 +_021F5184: + add r5, r2, #0 + cmp r3, #0 + bls _021F51A8 +_021F518A: + ldrb r7, [r1, r5] + ldrb r6, [r1, r3] + cmp r7, r6 + bne _021F519E + add r6, r6, #1 + strb r6, [r1, r3] + ldrb r6, [r1, r3] + cmp r6, #0x15 + blo _021F519E + strb r0, [r1, r3] +_021F519E: + add r5, r5, #1 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + cmp r5, r3 + blo _021F518A +_021F51A8: + add r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + cmp r3, #4 + blo _021F5184 + mov r2, #0 + add r1, sp, #0 +_021F51B6: + ldrb r0, [r1, r2] + cmp r4, r0 + bne _021F51C0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F51C0: + add r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #4 + blo _021F51B6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F51D0 +MOD05_021F51D0: ; 0x021F51D0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F51E6 + bl GF_AssertFail +_021F51E6: + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + ldrb r1, [r4, #5] + mov r0, #0x6a + lsl r2, r1, #2 + ldr r1, _021F5218 ; =UNK05_021FC644 + ldr r1, [r1, r2] + mov r2, #4 + bl AllocAtEndAndReadWholeNarcMemberByIdPair + ldrb r1, [r4, #4] + lsl r1, r1, #2 + ldr r4, [r0, r1] + bl FreeToHeap + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F5218: .word UNK05_021FC644 + + thumb_func_start MOD05_021F521C +MOD05_021F521C: ; 0x021F521C + push {r3, lr} + add r3, r1, #0 + bmi _021F522A + add r1, r2, #0 + add r2, r3, #0 + bl MOD05_021F5068 +_021F522A: + pop {r3, pc} + + thumb_func_start MOD05_021F522C +MOD05_021F522C: ; 0x021F522C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + bne _021F5242 + bl GF_AssertFail +_021F5242: + add r0, r5, #0 + add r0, #0xa4 + ldr r1, [r0] + lsl r0, r4, #3 + mov r2, #0 + add r0, r1, r0 + str r2, [r0, #4] + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202A9C8 + mov r1, #0 + str r1, [r0] + pop {r3, r4, r5, pc} + + .section .rodata + + .global UNK05_021FC644 +UNK05_021FC644: ; 0x021FC644 +.ifdef DIAMOND + .word 2, 3, 4 +.else + .word 5, 6, 7 +.endif + + .global UNK05_021FC650 +UNK05_021FC650: ; 0x021FC650 + .byte 0x5B, 0x01, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00 + .byte 0x61, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00 + .byte 0x6B, 0x01, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00 + .byte 0x75, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00 + .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F5268.s b/arm9/modules/05/asm/mod05_021F5268.s new file mode 100644 index 00000000..194cb7ee --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F5268.s @@ -0,0 +1,379 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F5268 +MOD05_021F5268: ; 0x021F5268 + push {r3, r4, r5, lr} + mov r5, #0 + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + str r5, [sp] + add r2, r5, #0 + bl GfGfxLoader_LoadFromNarc + str r0, [r4] + bl NNS_G3dGetMdlSet + str r0, [r4, #4] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #8] + ldr r0, [r4] + bl NNS_G3dGetTex + str r0, [r4, #0xc] + cmp r0, #0 + beq _021F52A4 + mov r2, #1 + ldr r0, _021F52A8 ; =MOD05_021F52AC + add r1, r4, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 +_021F52A4: + pop {r3, r4, r5, pc} + nop +_021F52A8: .word MOD05_021F52AC + + thumb_func_start MOD05_021F52AC +MOD05_021F52AC: ; 0x021F52AC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0xc] + bl FUN_0201B3A8 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F52C8 +MOD05_021F52C8: ; 0x021F52C8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021F52F8 + add r1, sp, #4 + add r2, sp, #0 + bl NNS_G3dTexReleaseTexKey + ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram + ldr r0, [sp, #4] + ldr r1, [r1] + blx r1 + ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram + ldr r0, [sp] + ldr r1, [r1] + blx r1 + ldr r0, [r4, #0xc] + bl NNS_G3dPlttReleasePlttKey + ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram + ldr r1, [r1] + blx r1 +_021F52F8: + ldr r0, [r4] + cmp r0, #0 + beq _021F5302 + bl FreeToHeap +_021F5302: + mov r1, #0x10 + mov r0, #0 +_021F5306: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021F5306 + add sp, #8 + pop {r4, pc} + nop +_021F5314: .word NNS_GfdDefaultFuncFreeTexVram +_021F5318: .word NNS_GfdDefaultFuncFreePlttVram + + thumb_func_start MOD05_021F531C +MOD05_021F531C: ; 0x021F531C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + mov r6, #0 + add r1, r3, #0 + add r5, r0, #0 + add r0, r2, #0 + ldr r3, [sp, #0x18] + add r2, r6, #0 + str r6, [sp] + bl GfGfxLoader_LoadFromNarc + add r2, r0, #0 + ldr r3, [sp, #0x1c] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F54EC + add r0, r6, #0 + str r0, [r5, #0x10] + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021F5348 +MOD05_021F5348: ; 0x021F5348 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F54EC + mov r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5358 +MOD05_021F5358: ; 0x021F5358 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F5376 + add r0, r1, #0 + ldr r1, [r4, #8] + bl NNS_G3dFreeAnmObj + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021F5376 + ldr r0, [r4] + bl FreeToHeap +_021F5376: + mov r1, #0x14 + mov r0, #0 +_021F537A: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021F537A + pop {r4, pc} + + thumb_func_start MOD05_021F5384 +MOD05_021F5384: ; 0x021F5384 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r2, r0, #0xc + cmp r1, #0 + ble _021F53A2 + ldr r0, [r4, #0xc] + add r0, r0, r1 + add r1, r2, #0 + bl _s32_div_f + str r1, [r4, #0xc] + b _021F53B4 +_021F53A2: + ldr r0, [r4, #0xc] + add r3, r4, #0 + add r3, #0xc + add r0, r0, r1 + str r0, [r4, #0xc] + bpl _021F53B4 + ldr r0, [r3] + add r0, r0, r2 + str r0, [r3] +_021F53B4: + ldr r1, [r4, #0xc] + ldr r0, [r4, #8] + str r1, [r0] + pop {r4, pc} + + thumb_func_start MOD05_021F53BC +MOD05_021F53BC: ; 0x021F53BC + push {r3, r4} + ldr r2, [r0, #8] + ldr r3, [r0, #0xc] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #0 + cmp r1, #0 + ble _021F53DE + add r1, r3, r1 + cmp r1, r4 + bge _021F53D8 + str r1, [r0, #0xc] + b _021F53EA +_021F53D8: + str r4, [r0, #0xc] + mov r2, #1 + b _021F53EA +_021F53DE: + add r1, r3, r1 + bmi _021F53E6 + str r1, [r0, #0xc] + b _021F53EA +_021F53E6: + str r2, [r0, #0xc] + mov r2, #1 +_021F53EA: + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + str r1, [r0] + add r0, r2, #0 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F53F8 +MOD05_021F53F8: ; 0x021F53F8 + str r1, [r0, #0xc] + ldr r0, [r0, #8] + str r1, [r0] + bx lr + + thumb_func_start MOD05_021F5400 +MOD05_021F5400: ; 0x021F5400 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0 + mov r2, #0x78 + add r4, r0, #0 + bl memset + ldr r1, [r5, #8] + add r0, r4, #0 + bl NNS_G3dRenderObjInit + mov r0, #1 + str r0, [r4, #0x6c] + lsl r0, r0, #0xc + str r0, [r4, #0x60] + str r0, [r4, #0x64] + str r0, [r4, #0x68] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F5424 +MOD05_021F5424: ; 0x021F5424 + ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj + ldr r1, [r1, #8] + bx r3 + nop +_021F542C: .word NNS_G3dRenderObjAddAnmObj + + thumb_func_start MOD05_021F5430 +MOD05_021F5430: ; 0x021F5430 + push {r4, lr} + sub sp, #0x48 + add r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _021F54C4 + add r0, sp, #0x24 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x70 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =FX_SinCosTable_ + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotX33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x74 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =FX_SinCosTable_ + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotZ33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x72 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =FX_SinCosTable_ + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotY33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r1, r4, #0 + add r0, r4, #0 + add r4, #0x60 + add r1, #0x54 + add r2, sp, #0x24 + add r3, r4, #0 + bl FUN_0201B26C +_021F54C4: + add sp, #0x48 + pop {r4, pc} + .balign 4, 0 +_021F54C8: .word FX_SinCosTable_ + + thumb_func_start MOD05_021F54CC +MOD05_021F54CC: ; 0x021F54CC + str r1, [r0, #0x6c] + bx lr + + thumb_func_start MOD05_021F54D0 +MOD05_021F54D0: ; 0x021F54D0 + str r1, [r0, #0x54] + str r2, [r0, #0x58] + str r3, [r0, #0x5c] + bx lr + + thumb_func_start MOD05_021F54D8 +MOD05_021F54D8: ; 0x021F54D8 + str r1, [r0, #0x60] + str r2, [r0, #0x64] + str r3, [r0, #0x68] + bx lr + + thumb_func_start MOD05_021F54E0 +MOD05_021F54E0: ; 0x021F54E0 + lsl r2, r2, #1 + add r0, r0, r2 + add r0, #0x70 + strh r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F54EC +MOD05_021F54EC: ; 0x021F54EC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + str r2, [r5] + add r0, r2, #0 + mov r1, #0 + add r6, r3, #0 + bl NNS_G3dGetAnmByIdx + str r0, [r5, #4] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + add r0, r6, #0 + bl NNS_G3dAllocAnmObj + str r0, [r5, #8] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl NNS_G3dAnmObjInit + pop {r4, r5, r6, pc} diff --git a/arm9/modules/05/asm/mod05_021F5518.s b/arm9/modules/05/asm/mod05_021F5518.s new file mode 100644 index 00000000..e5fc4289 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F5518.s @@ -0,0 +1,615 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F5518 +MOD05_021F5518: ; 0x021F5518 + push {r3, r4, lr} + sub sp, #4 + ldr r0, [r1, #8] + add r4, r2, #0 + bl MOD05_021F5608 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0x13 + bl MOD05_021F5660 + mov r3, #0 + str r3, [r4, #0x14] + mov r0, #0x10 + str r0, [sp] + ldr r0, _021F555C ; =0x04000050 + mov r1, #4 + mov r2, #0x29 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #0 + bl SetBgPriority + mov r0, #4 + mov r1, #1 + bl GX_EngineAToggleLayers + ldr r0, _021F5560 ; =0x00000648 + bl PlaySE + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 +_021F555C: .word 0x04000050 +_021F5560: .word 0x00000648 + + thumb_func_start MOD05_021F5564 +MOD05_021F5564: ; 0x021F5564 + push {r3, r4, lr} + sub sp, #4 + ldr r0, [r1, #8] + add r4, r2, #0 + bl MOD05_021F5608 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + mov r3, #0xf + bl MOD05_021F5660 + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #6 + str r0, [sp] + ldr r0, _021F5594 ; =0x04000050 + mov r1, #4 + mov r2, #0x21 + mov r3, #0xa + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 +_021F5594: .word 0x04000050 + + thumb_func_start MOD05_021F5598 +MOD05_021F5598: ; 0x021F5598 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F559C +MOD05_021F559C: ; 0x021F559C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x14] + cmp r0, #1 + beq _021F55C2 + add r0, r4, #0 + bl MOD05_021F5670 + cmp r0, #0 + beq _021F55B4 + mov r0, #1 + str r0, [r4, #0x14] +_021F55B4: + ldr r1, [r4] + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021F55C4 ; =0x04000052 + strh r1, [r0] +_021F55C2: + pop {r4, pc} + .balign 4, 0 +_021F55C4: .word 0x04000052 + + thumb_func_start MOD05_021F55C8 +MOD05_021F55C8: ; 0x021F55C8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F55CC +MOD05_021F55CC: ; 0x021F55CC + ldr r0, [r0, #4] + ldr r3, _021F55D8 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F55DC ; =UNK05_021FC6C0 + bx r3 + nop +_021F55D8: .word MOD05_021D8024 +_021F55DC: .word UNK05_021FC6C0 + + thumb_func_start MOD05_021F55E0 +MOD05_021F55E0: ; 0x021F55E0 + ldr r3, _021F55E4 ; =MOD05_021D80A4 + bx r3 + .balign 4, 0 +_021F55E4: .word MOD05_021D80A4 + + thumb_func_start MOD05_021F55E8 +MOD05_021F55E8: ; 0x021F55E8 + push {r3, lr} + bl MOD05_021D80E4 + ldr r0, [r0, #0x14] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F55F4 +MOD05_021F55F4: ; 0x021F55F4 + ldr r0, [r0, #4] + ldr r3, _021F5600 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F5604 ; =UNK05_021FC6A8 + bx r3 + nop +_021F5600: .word MOD05_021D8024 +_021F5604: .word UNK05_021FC6A8 + + thumb_func_start MOD05_021F5608 +MOD05_021F5608: ; 0x021F5608 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r1, _021F5658 ; =0x00005D5F + add r5, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #2 + add r1, sp, #4 + add r2, r0, #0 + mov r3, #0xc2 + bl BG_LoadPlttData + mov r0, #4 + mov r1, #0x20 + bl AllocFromHeap + mov r1, #0x11 + mov r2, #0x20 + add r4, r0, #0 + bl memset + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #2 + add r2, r4, #0 + mov r3, #0x20 + bl BG_LoadCharTilesData + add r0, r4, #0 + bl FreeToHeap + ldr r2, _021F565C ; =0x00006001 + add r0, r5, #0 + mov r1, #2 + bl BgFillTilemapBufferAndCommit + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021F5658: .word 0x00005D5F +_021F565C: .word 0x00006001 + + thumb_func_start MOD05_021F5660 +MOD05_021F5660: ; 0x021F5660 + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0x10] + mov r1, #0 + str r1, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021F5670 +MOD05_021F5670: ; 0x021F5670 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + mul r0, r1 + ldr r1, [r4, #0x10] + bl _s32_div_f + ldr r1, [r4, #4] + add r0, r0, r1 + str r0, [r4] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r0, r0, #1 + cmp r0, r1 + bgt _021F5696 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_021F5696: + str r1, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F569C +MOD05_021F569C: ; 0x021F569C + ldr r3, _021F56A4 ; =BG_SetMaskColor + mov r0, #2 + mov r1, #0 + bx r3 + .balign 4, 0 +_021F56A4: .word BG_SetMaskColor + + thumb_func_start MOD05_021F56A8 +MOD05_021F56A8: ; 0x021F56A8 + ldr r3, _021F56B0 ; =BG_SetMaskColor + mov r0, #2 + ldr r1, _021F56B4 ; =0x00007FFF + bx r3 + .balign 4, 0 +_021F56B0: .word BG_SetMaskColor +_021F56B4: .word 0x00007FFF + + thumb_func_start MOD05_021F56B8 +MOD05_021F56B8: ; 0x021F56B8 + push {r4, lr} + sub sp, #8 + ldr r1, _021F5710 ; =0x00007FFF + add r4, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #4 + mov r1, #0 + bl GX_EngineAToggleLayers + ldr r1, _021F5714 ; =0x0400000C + mov r0, #3 + ldrh r2, [r1] + mov r3, #0xc4 + bic r2, r0 + mov r0, #3 + orr r0, r2 + strh r0, [r1] + mov r0, #2 + add r1, sp, #4 + add r2, r0, #0 + bl BG_LoadPlttData + mov r1, #2 + str r1, [sp] + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #1 + bl BG_FillCharDataRange + ldr r0, [r4, #8] + ldr r2, _021F5718 ; =0x00006002 + mov r1, #2 + bl BgFillTilemapBufferAndCommit + mov r0, #4 + mov r1, #1 + bl GX_EngineAToggleLayers + add r0, r4, #0 + bl MOD05_021F569C + add sp, #8 + pop {r4, pc} + .balign 4, 0 +_021F5710: .word 0x00007FFF +_021F5714: .word 0x0400000C +_021F5718: .word 0x00006002 + + thumb_func_start MOD05_021F571C +MOD05_021F571C: ; 0x021F571C + push {r4, lr} + sub sp, #8 + ldr r1, _021F5774 ; =0x00007FFF + add r4, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #8 + mov r1, #0 + bl GX_EngineAToggleLayers + ldr r1, _021F5778 ; =0x0400000E + mov r0, #3 + ldrh r2, [r1] + mov r3, #0xc4 + bic r2, r0 + mov r0, #3 + orr r2, r0 + strh r2, [r1] + add r1, sp, #4 + mov r2, #2 + bl BG_LoadPlttData + mov r2, #2 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #3 + mov r3, #1 + bl BG_FillCharDataRange + ldr r0, [r4, #8] + ldr r2, _021F577C ; =0x00006002 + mov r1, #3 + bl BgFillTilemapBufferAndCommit + mov r0, #8 + mov r1, #1 + bl GX_EngineAToggleLayers + add r0, r4, #0 + bl MOD05_021F569C + add sp, #8 + pop {r4, pc} + nop +_021F5774: .word 0x00007FFF +_021F5778: .word 0x0400000E +_021F577C: .word 0x00006002 + + thumb_func_start MOD05_021F5780 +MOD05_021F5780: ; 0x021F5780 + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC1D0 + ldr r3, _021F57A4 ; =UNK05_021FC6A4 + mov r2, #0 +_021F578E: + ldr r1, [r3] + cmp r0, r1 + bne _021F5798 + mov r0, #1 + pop {r3, pc} +_021F5798: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #1 + blt _021F578E + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F57A4: .word UNK05_021FC6A4 + + thumb_func_start MOD05_021F57A8 +MOD05_021F57A8: ; 0x021F57A8 + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC1D0 + ldr r3, _021F57CC ; =UNK05_021FC6D8 + mov r2, #0 +_021F57B6: + ldr r1, [r3] + cmp r0, r1 + bne _021F57C0 + mov r0, #0 + pop {r3, pc} +_021F57C0: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #0x10 + blt _021F57B6 + mov r0, #1 + pop {r3, pc} + .balign 4, 0 +_021F57CC: .word UNK05_021FC6D8 + + thumb_func_start MOD05_021F57D0 +MOD05_021F57D0: ; 0x021F57D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F57E2 + bl MOD05_021F55E0 + mov r0, #0 + str r0, [r4] +_021F57E2: + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F57EC +MOD05_021F57EC: ; 0x021F57EC + mov r0, #0xc + bx lr + + thumb_func_start MOD05_021F57F0 +MOD05_021F57F0: ; 0x021F57F0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrh r1, [r4, #8] + cmp r1, #9 + bls _021F580A + b _021F597C +_021F580A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F5816: ; jump table + .short _021F582A - _021F5816 - 2 ; case 0 + .short _021F5856 - _021F5816 - 2 ; case 1 + .short _021F5872 - _021F5816 - 2 ; case 2 + .short _021F5888 - _021F5816 - 2 ; case 3 + .short _021F58DA - _021F5816 - 2 ; case 4 + .short _021F58EE - _021F5816 - 2 ; case 5 + .short _021F5914 - _021F5816 - 2 ; case 6 + .short _021F5936 - _021F5816 - 2 ; case 7 + .short _021F5956 - _021F5816 - 2 ; case 8 + .short _021F5968 - _021F5816 - 2 ; case 9 +_021F582A: + add r0, r5, #0 + bl MOD05_021F57A8 + cmp r0, #1 + bne _021F584C + mov r0, #1 + strh r0, [r4, #8] + add r0, r5, #0 + bl MOD05_021F5780 + str r0, [r4, #4] + cmp r0, #0 + beq _021F587C + add r0, r5, #0 + bl MOD05_021F56A8 + b _021F5980 +_021F584C: + mov r0, #7 + strh r0, [r4, #8] + mov r0, #0x14 + strh r0, [r4, #0xa] + b _021F5980 +_021F5856: + add r0, r5, #0 + bl MOD05_021F55CC + str r0, [r4] + mov r0, #2 + mov r1, #0 + strh r0, [r4, #8] + bl SetBgPriority + mov r0, #4 + mov r1, #1 + bl GX_EngineAToggleLayers + b _021F5980 +_021F5872: + ldr r0, [r4] + bl MOD05_021F55E8 + cmp r0, #0 + bne _021F587E +_021F587C: + b _021F5980 +_021F587E: + mov r0, #0x16 + strh r0, [r4, #0xa] + mov r0, #3 + strh r0, [r4, #8] + b _021F5980 +_021F5888: + mov r0, #0xa + ldrsh r0, [r4, r0] + sub r0, r0, #1 + strh r0, [r4, #0xa] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl MapHeader_HasWildEncounters + cmp r0, #0 + beq _021F58D4 + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _021F5980 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_0223CDB8 + cmp r0, #0 + beq _021F58CE + mov r0, #6 + strh r0, [r4, #8] + b _021F5980 +_021F58CE: + mov r0, #4 + strh r0, [r4, #8] + b _021F5980 +_021F58D4: + mov r0, #4 + strh r0, [r4, #8] + b _021F5980 +_021F58DA: + ldr r0, [r4] + bl MOD05_021F55E0 + add r0, r5, #0 + bl MOD05_021F55F4 + str r0, [r4] + mov r0, #5 + strh r0, [r4, #8] + b _021F5980 +_021F58EE: + ldr r0, [r4] + bl MOD05_021F55E8 + cmp r0, #0 + beq _021F5980 + mov r0, #4 + mov r1, #0 + bl GX_EngineAToggleLayers + ldr r0, _021F5984 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #2 + mov r1, #3 + bl SetBgPriority + mov r0, #8 + strh r0, [r4, #8] + b _021F5980 +_021F5914: + bl MOD05_021F57D0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F5924 + add r0, r5, #0 + bl MOD05_021F571C +_021F5924: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223BE70 + cmp r0, #0 + bne _021F5980 + bl GF_AssertFail + b _021F5980 +_021F5936: + mov r0, #0xa + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, #0xa] + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _021F5980 + mov r2, #0 + ldr r1, _021F5988 ; =0x000007ED + add r0, r6, #0 + add r3, r2, #0 + bl FUN_02038CD8 + mov r0, #9 + strh r0, [r4, #8] + b _021F5980 +_021F5956: + mov r2, #0 + ldr r1, _021F598C ; =0x000007EC + add r0, r6, #0 + add r3, r2, #0 + bl FUN_02038CD8 + mov r0, #9 + strh r0, [r4, #8] + b _021F5980 +_021F5968: + bl MOD05_021F57D0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F5978 + add r0, r5, #0 + bl MOD05_021F56B8 +_021F5978: + mov r0, #1 + pop {r4, r5, r6, pc} +_021F597C: + bl GF_AssertFail +_021F5980: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F5984: .word 0x04000050 +_021F5988: .word 0x000007ED +_021F598C: .word 0x000007EC + + .section .rodata + + .global UNK05_021FC6A4 +UNK05_021FC6A4: ; 0x021FC6A4 + .byte 0x08, 0x00, 0x00, 0x00 + + .global UNK05_021FC6A8 +UNK05_021FC6A8: ; 0x021FC6A8 + .word 0x00000400, 0x00000018, MOD05_021F5564, MOD05_021F5598 + .word MOD05_021F559C, MOD05_021F55C8 + + .global UNK05_021FC6C0 +UNK05_021FC6C0: ; 0x021FC6C0 + .word 0x00000400, 0x00000018, MOD05_021F5518, MOD05_021F5598 + .word MOD05_021F559C, MOD05_021F55C8 + + .global UNK05_021FC6D8 +UNK05_021FC6D8: ; 0x021FC6D8 + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021F5990.s b/arm9/modules/05/asm/mod05_021F5990.s new file mode 100644 index 00000000..6ec80f54 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F5990.s @@ -0,0 +1,309 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F5990 +MOD05_021F5990: ; 0x021F5990 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r2, #0 + lsl r2, r3, #3 + add r6, r5, r2 + add r6, #0x18 + str r2, [sp, #8] + add r2, r6, #0 + str r0, [sp] + add r7, r1, #0 + str r3, [sp, #4] + bl CreateHeap + cmp r0, #1 + beq _021F59B2 + bl GF_AssertFail +_021F59B2: + sub r5, r6, r5 + add r0, r7, #0 + add r1, r5, #0 + bl AllocFromHeap + add r4, r0, #0 + bne _021F59C4 + bl GF_AssertFail +_021F59C4: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + ldr r0, [sp] + str r0, [r4] + ldr r0, [sp, #4] + str r7, [r4, #4] + str r0, [r4, #8] + ldr r0, [sp, #8] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x18 + str r0, [r4, #0x14] + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F59EC +MOD05_021F59EC: ; 0x021F59EC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r4, [r6, #8] + ldr r5, [r6, #0x14] + cmp r4, #0 + beq _021F5A0E +_021F59F8: + ldr r0, [r5] + cmp r0, #0 + beq _021F5A06 + ldr r1, [r5, #4] + add r0, r6, #0 + bl MOD05_021F5A74 +_021F5A06: + sub r4, r4, #1 + add r5, #8 + cmp r4, #0 + bne _021F59F8 +_021F5A0E: + ldr r4, [r6, #4] + add r0, r6, #0 + bl FreeToHeap + add r0, r4, #0 + bl DestroyHeap + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5A20 +MOD05_021F5A20: ; 0x021F5A20 + ldr r3, _021F5A24 ; =MOD05_021F5B14 + bx r3 + .balign 4, 0 +_021F5A24: .word MOD05_021F5B14 + + thumb_func_start MOD05_021F5A28 +MOD05_021F5A28: ; 0x021F5A28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD05_021F5B5C + str r0, [sp] + cmp r0, #0 + bne _021F5A40 + bl GF_AssertFail +_021F5A40: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD05_021F5B14 + add r5, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + add r2, r5, #0 + bl MOD05_021F5B8C + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5A5C +MOD05_021F5A5C: ; 0x021F5A5C + push {r4, lr} + add r4, r1, #0 + bl MOD05_021F5B74 + cmp r0, #0 + beq _021F5A6C + bl MOD05_021F5B94 +_021F5A6C: + add r0, r4, #0 + bl MOD05_021F5B34 + pop {r4, pc} + + thumb_func_start MOD05_021F5A74 +MOD05_021F5A74: ; 0x021F5A74 + push {r4, lr} + bl MOD05_021F5B3C + add r4, r0, #0 + bne _021F5A82 + bl GF_AssertFail +_021F5A82: + ldr r0, [r4] + bl MOD05_021F5B34 + add r0, r4, #0 + bl MOD05_021F5B94 + pop {r4, pc} + + thumb_func_start MOD05_021F5A90 +MOD05_021F5A90: ; 0x021F5A90 + push {r4, lr} + bl MOD05_021F5B3C + add r4, r0, #0 + bne _021F5A9E + bl GF_AssertFail +_021F5A9E: + ldr r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5AA4 +MOD05_021F5AA4: ; 0x021F5AA4 + push {r3, lr} + bl MOD05_021F5B3C + cmp r0, #0 + beq _021F5AB2 + mov r0, #1 + pop {r3, pc} +_021F5AB2: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5AB8 +MOD05_021F5AB8: ; 0x021F5AB8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r7, r3, #0 + add r0, r5, #0 + add r1, r4, #0 + bl NARC_GetMemberSize + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F5A20 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl NARC_ReadWholeMember + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F5AE4 +MOD05_021F5AE4: ; 0x021F5AE4 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r7, r3, #0 + add r6, r1, #0 + add r0, r4, #0 + add r1, r7, #0 + bl NARC_GetMemberSize + add r2, r0, #0 + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F5A28 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl NARC_ReadWholeMember + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5B14 +MOD05_021F5B14: ; 0x021F5B14 + push {r4, lr} + cmp r2, #0 + ldr r0, [r0, #4] + bne _021F5B22 + bl AllocFromHeap + b _021F5B26 +_021F5B22: + bl AllocFromHeapAtEnd +_021F5B26: + add r4, r0, #0 + cmp r4, #0 + bne _021F5B30 + bl GF_AssertFail +_021F5B30: + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F5B34 +MOD05_021F5B34: ; 0x021F5B34 + ldr r3, _021F5B38 ; =FreeToHeap + bx r3 + .balign 4, 0 +_021F5B38: .word FreeToHeap + + thumb_func_start MOD05_021F5B3C +MOD05_021F5B3C: ; 0x021F5B3C + ldr r3, [r0, #8] + ldr r0, [r0, #0x14] + cmp r3, #0 + beq _021F5B56 +_021F5B44: + ldr r2, [r0] + cmp r2, #0 + beq _021F5B50 + ldr r2, [r0, #4] + cmp r2, r1 + beq _021F5B58 +_021F5B50: + add r0, #8 + sub r3, r3, #1 + bne _021F5B44 +_021F5B56: + mov r0, #0 +_021F5B58: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F5B5C +MOD05_021F5B5C: ; 0x021F5B5C + ldr r2, [r0, #8] + ldr r0, [r0, #0x14] + cmp r2, #0 + beq _021F5B70 +_021F5B64: + ldr r1, [r0] + cmp r1, #0 + beq _021F5B72 + add r0, #8 + sub r2, r2, #1 + bne _021F5B64 +_021F5B70: + mov r0, #0 +_021F5B72: + bx lr + + thumb_func_start MOD05_021F5B74 +MOD05_021F5B74: ; 0x021F5B74 + ldr r3, [r0, #8] + ldr r0, [r0, #0x14] + cmp r3, #0 + beq _021F5B88 +_021F5B7C: + ldr r2, [r0] + cmp r2, r1 + beq _021F5B8A + add r0, #8 + sub r3, r3, #1 + bne _021F5B7C +_021F5B88: + mov r0, #0 +_021F5B8A: + bx lr + + thumb_func_start MOD05_021F5B8C +MOD05_021F5B8C: ; 0x021F5B8C + str r2, [r0] + str r1, [r0, #4] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F5B94 +MOD05_021F5B94: ; 0x021F5B94 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + bx lr diff --git a/arm9/modules/05/asm/mod05_021F5B9C.s b/arm9/modules/05/asm/mod05_021F5B9C.s new file mode 100644 index 00000000..7c57b16b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F5B9C.s @@ -0,0 +1,84 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F5B9C +MOD05_021F5B9C: ; 0x021F5B9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02050DF0 + add r7, r0, #0 + beq _021F5C40 + bl MOD18_0223E2C4 + add r6, r0, #0 + bl MOD18_0223E2DC + lsl r1, r6, #0x15 + lsl r0, r0, #0x15 + mov r4, #0 + str r1, [sp, #0xc] + str r0, [sp, #8] +_021F5BC0: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020267C4 + add r6, r0, #0 + bl FUN_0204CA80 + str r0, [sp, #0x10] + add r0, r6, #0 + bl FUN_0204CA90 + str r0, [sp, #0x14] + cmp r6, #0 + beq _021F5C3A + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026810 + str r0, [sp, #0x18] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026840 + mov r2, #1 + ldr r1, [sp, #0x18] + lsl r2, r2, #0xc + str r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + ldr r2, [sp, #0xc] + str r1, [sp, #0x1c] + add r1, r1, r2 + ldr r2, [sp, #8] + str r0, [sp, #0x24] + add r0, r0, r2 + ldr r2, [sp, #0x10] + str r1, [sp, #0x1c] + lsl r2, r2, #0xf + add r1, r1, r2 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x14] + str r0, [sp, #0x24] + lsl r1, r1, #0xf + add r0, r0, r1 + str r0, [sp, #0x24] + ldr r0, [r5, #0x2c] + add r1, r6, #0 + bl MOD05_021F4CD4 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl MOD05_021E7FBC +_021F5C3A: + add r4, r4, #1 + cmp r4, #0x20 + blt _021F5BC0 +_021F5C40: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/05/asm/mod05_021F5C44.s b/arm9/modules/05/asm/mod05_021F5C44.s new file mode 100644 index 00000000..5bf30612 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F5C44.s @@ -0,0 +1,834 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F5C44 +MOD05_021F5C44: ; 0x021F5C44 + push {r3, r4, r5, lr} + add r0, r1, #0 + mov r1, #0x18 + add r5, r2, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021F5C58: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021F5C58 + add r0, r5, #0 + str r5, [r4, #0xc] + bl MOD05_021F61B0 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5C70 +MOD05_021F5C70: ; 0x021F5C70 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021F5C8E + cmp r0, #1 + beq _021F5CBA + b _021F5D28 +_021F5C8E: + ldr r0, [r4, #0x34] + bl FUN_02058780 + mov r0, #0 + str r0, [r5, #0x10] + add r2, r5, #0 + ldr r1, [r5, #0xc] + add r0, r4, #0 + add r2, #0x10 + bl MOD06_0223BD14 + str r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r5, #8] + add r0, r4, #0 + bl MOD05_021F5D2C + str r0, [r5, #0x14] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021F5D28 +_021F5CBA: + ldr r0, [r5, #0x14] + bl MOD05_021F5D50 + cmp r0, #1 + bne _021F5D28 + ldr r0, [r5, #0x14] + bl MOD05_021F5D5C + add r7, r0, #0 + ldr r0, [r5, #0x14] + bl MOD05_021F5D68 + cmp r7, #1 + ldr r0, [r5, #0x10] + bne _021F5D10 + ldr r0, [r0, #8] + mov r1, #0 + bl GetPartyMonByIndex + ldr r2, [r5, #4] + add r3, r0, #0 + lsl r2, r2, #0x10 + add r0, r4, #0 + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02061208 + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0xa + bl FUN_0202A0E8 + ldr r2, [r5, #0x10] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02046A20 + add r0, r5, #0 + bl FreeToHeap + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F5D10: + cmp r0, #0 + beq _021F5D18 + bl FUN_02047964 +_021F5D18: + ldr r0, [r4, #0x34] + bl FUN_020587B0 + add r0, r5, #0 + bl FreeToHeap + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F5D28: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F5D2C +MOD05_021F5D2C: ; 0x021F5D2C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4c + add r4, r1, #0 + add r6, r2, #0 + bl MOD05_021F6074 + add r1, r0, #0 + str r5, [r1, #0x20] + str r4, [r1, #0x1c] + ldr r0, _021F5D4C ; =MOD05_021F5D7C + mov r2, #0x80 + str r6, [r1] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_021F5D4C: .word MOD05_021F5D7C + + thumb_func_start MOD05_021F5D50 +MOD05_021F5D50: ; 0x021F5D50 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5D5C +MOD05_021F5D5C: ; 0x021F5D5C + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #8] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5D68 +MOD05_021F5D68: ; 0x021F5D68 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FreeToHeap + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD05_021F5D7C +MOD05_021F5D7C: ; 0x021F5D7C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0x20] + ldr r6, [r0, #0x38] + add r0, r6, #0 + bl FUN_020553A0 + ldr r7, _021F5DA4 ; =UNK05_021FC9B8 + add r4, r0, #0 +_021F5D8E: + ldr r3, [r5, #0xc] + add r0, r5, #0 + lsl r3, r3, #2 + ldr r3, [r7, r3] + add r1, r6, #0 + add r2, r4, #0 + blx r3 + cmp r0, #0 + bne _021F5D8E + pop {r3, r4, r5, r6, r7, pc} + nop +_021F5DA4: .word UNK05_021FC9B8 + + thumb_func_start MOD05_021F5DA8 +MOD05_021F5DA8: ; 0x021F5DA8 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r0, #0 + bl MOD05_021F60C4 + add r0, r4, #0 + bl FUN_02058914 + mov r0, #1 + str r0, [r5, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5DC0 +MOD05_021F5DC0: ; 0x021F5DC0 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021F5DF2 + add r0, r6, #0 + bl FUN_0205AE50 + add r0, r4, #0 + mov r1, #0x20 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + add r0, r6, #0 + mov r1, #1 + bl FUN_02058544 + mov r0, #2 + str r0, [r5, #0xc] +_021F5DF2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5DF8 +MOD05_021F5DF8: ; 0x021F5DF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0xa + bne _021F5E0E + mov r0, #0x65 + lsl r0, r0, #4 + bl PlaySE +_021F5E0E: + ldr r0, [r4, #0x10] + cmp r0, #0x22 + bge _021F5E18 + mov r0, #0 + pop {r4, pc} +_021F5E18: + ldr r0, [r4] + cmp r0, #1 + bne _021F5E22 + mov r0, #3 + b _021F5E24 +_021F5E22: + mov r0, #0xc +_021F5E24: + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5E30 +MOD05_021F5E30: ; 0x021F5E30 + push {r4, lr} + add r4, r0, #0 + bl LCRandom + lsr r1, r0, #0x1f + lsl r0, r0, #0x1e + sub r0, r0, r1 + mov r2, #0x1e + ror r0, r2 + add r0, r1, r0 + add r0, r0, #1 + add r1, r0, #0 + mul r1, r2 + str r1, [r4, #0x14] + ldr r0, [r4, #0x1c] + lsl r1, r0, #2 + ldr r0, _021F5E60 ; =UNK05_021FC9AC + ldr r0, [r0, r1] + str r0, [r4, #0x18] + mov r0, #4 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + nop +_021F5E60: .word UNK05_021FC9AC + + thumb_func_start MOD05_021F5E64 +MOD05_021F5E64: ; 0x021F5E64 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + add r4, r2, #0 + sub r0, r0, #1 + str r0, [r5, #0x14] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5E80 + mov r0, #0xa + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5E80: + ldr r0, [r5, #0x14] + cmp r0, #0 + ble _021F5E8A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5E8A: + add r0, r4, #0 + mov r1, #2 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD05_021E7AC0 + str r0, [r5, #0x24] + mov r0, #5 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5EA8 +MOD05_021F5EA8: ; 0x021F5EA8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5EC2 + mov r0, #6 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} +_021F5EC2: + ldr r0, [r4, #0x18] + cmp r0, #0 + ble _021F5ECC + mov r0, #0 + pop {r4, pc} +_021F5ECC: + mov r0, #0xb + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F5ED4 +MOD05_021F5ED4: ; 0x021F5ED4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r2, #0 + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x24] + add r0, r4, #0 + mov r1, #3 + bl FUN_02058544 + mov r0, #0 + str r0, [r5, #0x10] + mov r1, #7 + str r1, [r5, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5EF8 +MOD05_021F5EF8: ; 0x021F5EF8 + push {r3, lr} + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + cmp r1, #0xf + ble _021F5F12 + mov r1, #0 + str r1, [r0, #0x10] + mov r1, #8 + str r1, [r0, #0xc] + mov r1, #0x39 + bl MOD05_021F6140 +_021F5F12: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5F18 +MOD05_021F5F18: ; 0x021F5F18 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F617C + cmp r0, #0 + bne _021F5F28 + mov r0, #0 + pop {r4, pc} +_021F5F28: + mov r0, #9 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F30 +MOD05_021F5F30: ; 0x021F5F30 + mov r2, #1 + str r2, [r0, #8] + mov r1, #0xf + str r1, [r0, #0xc] + add r0, r2, #0 + bx lr + + thumb_func_start MOD05_021F5F3C +MOD05_021F5F3C: ; 0x021F5F3C + push {r4, lr} + add r4, r0, #0 + add r0, r2, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0x38 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r4, #0x10] + mov r0, #0xe + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F5C +MOD05_021F5F5C: ; 0x021F5F5C + push {r4, lr} + add r4, r0, #0 + add r0, r2, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0x37 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r4, #0x10] + mov r0, #0xe + str r0, [r4, #0xc] + ldr r0, [r4, #0x20] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x49 + bl FUN_0202A0E8 + ldr r0, [r4, #0x1c] + bl MOD05_021F61B0 + add r2, r0, #0 + mov r1, #0 + ldr r0, [r4, #0x20] + add r3, r1, #0 + bl FUN_02061208 + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F9C +MOD05_021F5F9C: ; 0x021F5F9C + mov r1, #0x78 + str r1, [r0, #0x10] + mov r1, #0xd + str r1, [r0, #0xc] + mov r0, #1 + bx lr + + thumb_func_start MOD05_021F5FA8 +MOD05_021F5FA8: ; 0x021F5FA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r2, #0 + sub r0, r0, #1 + str r0, [r5, #0x10] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5FC4 + mov r0, #0xa + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5FC4: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021F5FCE + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5FCE: + add r0, r4, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r5, #0 + mov r1, #0x36 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r5, #0x10] + mov r0, #0xe + str r0, [r5, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5FEC +MOD05_021F5FEC: ; 0x021F5FEC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + cmp r1, #0x10 + bge _021F5FFE + mov r0, #0 + pop {r4, pc} +_021F5FFE: + mov r1, #0x10 + str r1, [r4, #0x10] + bl MOD05_021F617C + cmp r0, #0 + bne _021F600E + mov r0, #0 + pop {r4, pc} +_021F600E: + mov r0, #0xf + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6018 +MOD05_021F6018: ; 0x021F6018 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _021F602C + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x24] +_021F602C: + add r0, r5, #0 + bl MOD05_021F60FC + add r0, r4, #0 + bl FUN_020553C4 + bl FUN_02055648 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + mov r0, #0 + str r0, [r5, #0x10] + mov r0, #0x10 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6058 +MOD05_021F6058: ; 0x021F6058 + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + cmp r1, #2 + ble _021F6066 + mov r1, #0x11 + str r1, [r0, #0xc] +_021F6066: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD05_021F606C +MOD05_021F606C: ; 0x021F606C + mov r1, #1 + str r1, [r0, #4] + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F6074 +MOD05_021F6074: ; 0x021F6074 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + bne _021F6088 + bl GF_AssertFail +_021F6088: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6098 +MOD05_021F6098: ; 0x021F6098 + ldr r0, _021F60A8 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + tst r1, r0 + bne _021F60A4 + mov r0, #0 +_021F60A4: + bx lr + nop +_021F60A8: .word gMain + + thumb_func_start MOD05_021F60AC +MOD05_021F60AC: ; 0x021F60AC + ldr r0, _021F60C0 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021F60BA + mov r0, #1 + bx lr +_021F60BA: + mov r0, #0 + bx lr + nop +_021F60C0: .word gMain + + thumb_func_start MOD05_021F60C4 +MOD05_021F60C4: ; 0x021F60C4 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xc7 + mov r3, #4 + bl NewMsgDataFromNarc + str r0, [r4, #0x48] + mov r0, #1 + lsl r0, r0, #0xa + mov r1, #4 + bl String_ctor + str r0, [r4, #0x2c] + mov r0, #1 + lsl r0, r0, #0xa + mov r1, #4 + bl String_ctor + str r0, [r4, #0x30] + mov r0, #8 + mov r1, #0x40 + mov r2, #4 + bl ScrStrBufs_new_custom + str r0, [r4, #0x34] + pop {r4, pc} + + thumb_func_start MOD05_021F60FC +MOD05_021F60FC: ; 0x021F60FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl ScrStrBufs_delete + ldr r0, [r4, #0x2c] + bl String_dtor + ldr r0, [r4, #0x30] + bl String_dtor + ldr r0, [r4, #0x48] + bl DestroyMsgData + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F611C +MOD05_021F611C: ; 0x021F611C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x20] + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x38 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r5, #0x38 + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02054608 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F6140 +MOD05_021F6140: ; 0x021F6140 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD05_021F611C + ldr r0, [r5, #0x48] + ldr r2, [r5, #0x30] + add r1, r6, #0 + ldr r4, [r5, #0x20] + bl ReadMsgDataIntoString + ldr r0, [r5, #0x34] + ldr r1, [r5, #0x2c] + ldr r2, [r5, #0x30] + bl StringExpandPlaceholders + ldr r0, [r4, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r2, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x2c] + add r0, #0x38 + mov r3, #1 + bl FUN_02054658 + add r5, #0x28 + strb r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD05_021F617C +MOD05_021F617C: ; 0x021F617C + push {r4, lr} + add r4, r0, #0 + add r0, #0x28 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #1 + bne _021F61AA + bl MOD05_021F60AC + cmp r0, #1 + bne _021F61AA + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + bl ClearFrameAndWindow2 + add r4, #0x38 + add r0, r4, #0 + bl RemoveWindow + mov r0, #1 + pop {r4, pc} +_021F61AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F61B0 +MOD05_021F61B0: ; 0x021F61B0 + push {r3, lr} + cmp r0, #0 + beq _021F61C2 + cmp r0, #1 + beq _021F61C6 + cmp r0, #2 + beq _021F61CA + bl GF_AssertFail +_021F61C2: + ldr r0, _021F61D0 ; =0x000001BD + pop {r3, pc} +_021F61C6: + ldr r0, _021F61D4 ; =0x000001BE + pop {r3, pc} +_021F61CA: + ldr r0, _021F61D8 ; =0x000001BF + pop {r3, pc} + nop +_021F61D0: .word 0x000001BD +_021F61D4: .word 0x000001BE +_021F61D8: .word 0x000001BF + + .section .rodata + + .global UNK05_021FC718 +UNK05_021FC718: ; 0x021FC718 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 + .byte 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 + .byte 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC79C +UNK05_021FC79C: ; 0x021FC79C + .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK05_021FC820 +UNK05_021FC820: ; 0x021FC820 + .word 0x00, MOD06_022492B0, MOD06_022492D4 + .word 0x01, MOD06_022497A0, MOD06_022497BC + .word 0x02, MOD05_021E52A8, MOD05_021E52C4 + .word 0x03, MOD05_021E5300, MOD05_021E531C + .word 0x04, MOD05_021E5564, MOD05_021E5580 + .word 0x05, MOD05_021E55BC, MOD05_021E55D8 + .word 0x06, MOD05_021E577C, MOD05_021E5798 + .word 0x07, MOD05_021E5918, MOD05_021E5934 + .word 0x08, MOD05_021E5AB4, MOD05_021E5AD0 + .word 0x09, MOD05_021E5C8C, MOD05_021E5CA8 + .word 0x0A, MOD05_021E5E10, MOD05_021E5E2C + .word 0x0B, MOD06_02249C98, MOD06_02249CB8 + .word 0x0C, MOD06_0224A040, MOD06_0224A05C + .word 0x0D, MOD06_0224A280, MOD06_0224A29C + .word 0x0E, MOD06_0224A63C, MOD06_0224A658 + .word 0x0F, MOD06_0224A87C, MOD06_0224A898 + .word 0x10, MOD05_021EDB70, MOD05_021EDB8C + .word 0x11, MOD06_0224AB54, MOD06_0224AB70 + .word 0x12, MOD06_0224AE10, MOD06_0224AE24 + .word 0x13, MOD06_0224B0A8, MOD06_0224B0C4 + .word 0x14, MOD06_0224B248, MOD06_0224B264 + .word 0x15, MOD06_0224B3E4, MOD06_0224B400 + .word 0x16, MOD05_021E779C, MOD05_021E77B0 + .word 0x17, MOD06_0224B948, MOD06_0224B964 + .word 0x18, MOD05_021ED9C0, MOD05_021ED9DC + .word 0x19, MOD06_0224BB50, MOD06_0224BB6C + .word 0x1A, MOD06_0224BCF4, MOD06_0224BD10 + .word 0x1B, MOD06_0224BF9C, MOD06_0224BFB8 + .word 0x1C, MOD06_0224CE30, MOD06_0224CE4C + .word 0x1D, MOD06_0224D244, MOD06_0224D260 + .word 0x1E, MOD06_0224A44C, MOD06_0224A460 + .word 0x1F, MOD06_0224A9E8, MOD06_0224AA04 + .word 0x20, 0x00000000, 0x00000000 + + .global UNK05_021FC9AC +UNK05_021FC9AC: ; 0x021FC9AC + .word 45, 30, 15 + + .global UNK05_021FC9B8 +UNK05_021FC9B8: ; 0x021FC9B8 + .word MOD05_021F5DA8, MOD05_021F5DC0, MOD05_021F5DF8, MOD05_021F5E30 + .word MOD05_021F5E64, MOD05_021F5EA8, MOD05_021F5ED4, MOD05_021F5EF8 + .word MOD05_021F5F18, MOD05_021F5F30, MOD05_021F5F3C, MOD05_021F5F5C + .word MOD05_021F5F9C, MOD05_021F5FA8, MOD05_021F5FEC, MOD05_021F6018 + .word MOD05_021F6058, MOD05_021F606C diff --git a/arm9/modules/05/asm/mod05_021F61DC.s b/arm9/modules/05/asm/mod05_021F61DC.s new file mode 100644 index 00000000..72d0f1a7 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F61DC.s @@ -0,0 +1,521 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F61DC +MOD05_021F61DC: ; 0x021F61DC + lsl r1, r0, #2 + ldr r0, _021F61E4 ; =UNK05_021FCA00 + ldrh r0, [r0, r1] + bx lr + .align 2, 0 +_021F61E4: .word UNK05_021FCA00 + + thumb_func_start MOD05_021F61E8 +MOD05_021F61E8: ; 0x021F61E8 + lsl r1, r0, #2 + ldr r0, _021F61F0 ; =UNK05_021FCA00 + 2 + ldrh r0, [r0, r1] + bx lr + .align 2, 0 +_021F61F0: .word UNK05_021FCA00 + 2 + + .section .rodata + + .global UNK05_021FCA00 +UNK05_021FCA00: ; 0x021FCA00 + .short 0x0000, 0x0000 ; SPECIES_NONE + .short 0x0001, 0x0001 ; SPECIES_BULBASAUR + .short 0x0001, 0x0001 ; SPECIES_IVYSAUR + .short 0x0002, 0x0001 ; SPECIES_VENUSAUR + .short 0x0001, 0x0001 ; SPECIES_CHARMANDER + .short 0x0002, 0x0001 ; SPECIES_CHARMELEON + .short 0x0002, 0x0001 ; SPECIES_CHARIZARD + .short 0x0001, 0x0001 ; SPECIES_SQUIRTLE + .short 0x0001, 0x0001 ; SPECIES_WARTORTLE + .short 0x0002, 0x0001 ; SPECIES_BLASTOISE + .short 0x0001, 0x0001 ; SPECIES_CATERPIE + .short 0x0005, 0x0000 ; SPECIES_METAPOD + .short 0x0001, 0x0001 ; SPECIES_BUTTERFREE + .short 0x0001, 0x0001 ; SPECIES_WEEDLE + .short 0x0005, 0x0000 ; SPECIES_KAKUNA + .short 0x0002, 0x0001 ; SPECIES_BEEDRILL + .short 0x0001, 0x0001 ; SPECIES_PIDGEY + .short 0x0001, 0x0001 ; SPECIES_PIDGEOTTO + .short 0x0002, 0x0001 ; SPECIES_PIDGEOT + .short 0x0001, 0x0001 ; SPECIES_RATTATA + .short 0x0002, 0x0001 ; SPECIES_RATICATE + .short 0x0002, 0x0001 ; SPECIES_SPEAROW + .short 0x0002, 0x0001 ; SPECIES_FEAROW + .short 0x0003, 0x0000 ; SPECIES_EKANS + .short 0x0003, 0x0000 ; SPECIES_ARBOK + .short 0x0001, 0x0001 ; SPECIES_PIKACHU + .short 0x0001, 0x0001 ; SPECIES_RAICHU + .short 0x0001, 0x0001 ; SPECIES_SANDSHREW + .short 0x0001, 0x0001 ; SPECIES_SANDSLASH + .short 0x0001, 0x0001 ; SPECIES_NIDORAN_F + .short 0x0001, 0x0001 ; SPECIES_NIDORINA + .short 0x0002, 0x0001 ; SPECIES_NIDOQUEEN + .short 0x0001, 0x0001 ; SPECIES_NIDORAN_M + .short 0x0002, 0x0001 ; SPECIES_NIDORINO + .short 0x0002, 0x0001 ; SPECIES_NIDOKING + .short 0x0001, 0x0001 ; SPECIES_CLEFAIRY + .short 0x0001, 0x0001 ; SPECIES_CLEFABLE + .short 0x0001, 0x0001 ; SPECIES_VULPIX + .short 0x0002, 0x0001 ; SPECIES_NINETALES + .short 0x0001, 0x0001 ; SPECIES_JIGGLYPUFF + .short 0x0001, 0x0001 ; SPECIES_WIGGLYTUFF + .short 0x0003, 0x0000 ; SPECIES_ZUBAT + .short 0x0003, 0x0001 ; SPECIES_GOLBAT + .short 0x0001, 0x0001 ; SPECIES_ODDISH + .short 0x0001, 0x0001 ; SPECIES_GLOOM + .short 0x0001, 0x0001 ; SPECIES_VILEPLUME + .short 0x0005, 0x0001 ; SPECIES_PARAS + .short 0x0005, 0x0001 ; SPECIES_PARASECT + .short 0x0001, 0x0001 ; SPECIES_VENONAT + .short 0x0005, 0x0001 ; SPECIES_VENOMOTH + .short 0x0001, 0x0000 ; SPECIES_DIGLETT + .short 0x0001, 0x0000 ; SPECIES_DUGTRIO + .short 0x0001, 0x0001 ; SPECIES_MEOWTH + .short 0x0002, 0x0001 ; SPECIES_PERSIAN + .short 0x0004, 0x0001 ; SPECIES_PSYDUCK + .short 0x0002, 0x0001 ; SPECIES_GOLDUCK + .short 0x0002, 0x0001 ; SPECIES_MANKEY + .short 0x0002, 0x0001 ; SPECIES_PRIMEAPE + .short 0x0001, 0x0001 ; SPECIES_GROWLITHE + .short 0x0002, 0x0001 ; SPECIES_ARCANINE + .short 0x0001, 0x0001 ; SPECIES_POLIWAG + .short 0x0001, 0x0001 ; SPECIES_POLIWHIRL + .short 0x0002, 0x0001 ; SPECIES_POLIWRATH + .short 0x0001, 0x0001 ; SPECIES_ABRA + .short 0x0002, 0x0001 ; SPECIES_KADABRA + .short 0x0002, 0x0001 ; SPECIES_ALAKAZAM + .short 0x0001, 0x0001 ; SPECIES_MACHOP + .short 0x0002, 0x0001 ; SPECIES_MACHOKE + .short 0x0002, 0x0001 ; SPECIES_MACHAMP + .short 0x0001, 0x0001 ; SPECIES_BELLSPROUT + .short 0x0004, 0x0000 ; SPECIES_WEEPINBELL + .short 0x0004, 0x0000 ; SPECIES_VICTREEBEL + .short 0x0002, 0x0000 ; SPECIES_TENTACOOL + .short 0x0002, 0x0000 ; SPECIES_TENTACRUEL + .short 0x0001, 0x0000 ; SPECIES_GEODUDE + .short 0x0002, 0x0001 ; SPECIES_GRAVELER + .short 0x0002, 0x0001 ; SPECIES_GOLEM + .short 0x0001, 0x0001 ; SPECIES_PONYTA + .short 0x0002, 0x0001 ; SPECIES_RAPIDASH + .short 0x0004, 0x0001 ; SPECIES_SLOWPOKE + .short 0x0004, 0x0001 ; SPECIES_SLOWBRO + .short 0x0005, 0x0001 ; SPECIES_MAGNEMITE + .short 0x0005, 0x0001 ; SPECIES_MAGNETON + .short 0x0002, 0x0001 ; SPECIES_FARFETCHD + .short 0x0001, 0x0001 ; SPECIES_DODUO + .short 0x0002, 0x0001 ; SPECIES_DODRIO + .short 0x0004, 0x0000 ; SPECIES_SEEL + .short 0x0004, 0x0000 ; SPECIES_DEWGONG + .short 0x0003, 0x0000 ; SPECIES_GRIMER + .short 0x0003, 0x0000 ; SPECIES_MUK + .short 0x0004, 0x0000 ; SPECIES_SHELLDER + .short 0x0002, 0x0000 ; SPECIES_CLOYSTER + .short 0x0003, 0x0000 ; SPECIES_GASTLY + .short 0x0003, 0x0000 ; SPECIES_HAUNTER + .short 0x0003, 0x0001 ; SPECIES_GENGAR + .short 0x0002, 0x0000 ; SPECIES_ONIX + .short 0x0003, 0x0001 ; SPECIES_DROWZEE + .short 0x0003, 0x0001 ; SPECIES_HYPNO + .short 0x0001, 0x0001 ; SPECIES_KRABBY + .short 0x0002, 0x0001 ; SPECIES_KINGLER + .short 0x0002, 0x0000 ; SPECIES_VOLTORB + .short 0x0002, 0x0000 ; SPECIES_ELECTRODE + .short 0x0001, 0x0000 ; SPECIES_EXEGGCUTE + .short 0x0004, 0x0001 ; SPECIES_EXEGGUTOR + .short 0x0001, 0x0001 ; SPECIES_CUBONE + .short 0x0002, 0x0001 ; SPECIES_MAROWAK + .short 0x0002, 0x0001 ; SPECIES_HITMONLEE + .short 0x0002, 0x0001 ; SPECIES_HITMONCHAN + .short 0x0004, 0x0001 ; SPECIES_LICKITUNG + .short 0x0003, 0x0000 ; SPECIES_KOFFING + .short 0x0003, 0x0000 ; SPECIES_WEEZING + .short 0x0002, 0x0001 ; SPECIES_RHYHORN + .short 0x0002, 0x0001 ; SPECIES_RHYDON + .short 0x0001, 0x0001 ; SPECIES_CHANSEY + .short 0x0001, 0x0001 ; SPECIES_TANGELA + .short 0x0002, 0x0001 ; SPECIES_KANGASKHAN + .short 0x0001, 0x0000 ; SPECIES_HORSEA + .short 0x0002, 0x0000 ; SPECIES_SEADRA + .short 0x0001, 0x0000 ; SPECIES_GOLDEEN + .short 0x0002, 0x0000 ; SPECIES_SEAKING + .short 0x0005, 0x0001 ; SPECIES_STARYU + .short 0x0005, 0x0001 ; SPECIES_STARMIE + .short 0x0001, 0x0001 ; SPECIES_MR_MIME + .short 0x0002, 0x0001 ; SPECIES_SCYTHER + .short 0x0001, 0x0000 ; SPECIES_JYNX + .short 0x0002, 0x0001 ; SPECIES_ELECTABUZZ + .short 0x0002, 0x0001 ; SPECIES_MAGMAR + .short 0x0002, 0x0001 ; SPECIES_PINSIR + .short 0x0002, 0x0001 ; SPECIES_TAUROS + .short 0x0004, 0x0000 ; SPECIES_MAGIKARP + .short 0x0003, 0x0000 ; SPECIES_GYARADOS + .short 0x0001, 0x0000 ; SPECIES_LAPRAS + .short 0x0004, 0x0000 ; SPECIES_DITTO + .short 0x0001, 0x0001 ; SPECIES_EEVEE + .short 0x0002, 0x0001 ; SPECIES_VAPOREON + .short 0x0002, 0x0001 ; SPECIES_JOLTEON + .short 0x0002, 0x0001 ; SPECIES_FLAREON + .short 0x0005, 0x0001 ; SPECIES_PORYGON + .short 0x0001, 0x0001 ; SPECIES_OMANYTE + .short 0x0002, 0x0001 ; SPECIES_OMASTAR + .short 0x0005, 0x0001 ; SPECIES_KABUTO + .short 0x0002, 0x0001 ; SPECIES_KABUTOPS + .short 0x0002, 0x0001 ; SPECIES_AERODACTYL + .short 0x0004, 0x0001 ; SPECIES_SNORLAX + .short 0x0002, 0x0001 ; SPECIES_ARTICUNO + .short 0x0002, 0x0001 ; SPECIES_ZAPDOS + .short 0x0002, 0x0001 ; SPECIES_MOLTRES + .short 0x0001, 0x0000 ; SPECIES_DRATINI + .short 0x0002, 0x0000 ; SPECIES_DRAGONAIR + .short 0x0002, 0x0001 ; SPECIES_DRAGONITE + .short 0x0002, 0x0001 ; SPECIES_MEWTWO + .short 0x0001, 0x0001 ; SPECIES_MEW + .short 0x0001, 0x0001 ; SPECIES_CHIKORITA + .short 0x0001, 0x0001 ; SPECIES_BAYLEEF + .short 0x0002, 0x0001 ; SPECIES_MEGANIUM + .short 0x0001, 0x0001 ; SPECIES_CYNDAQUIL + .short 0x0002, 0x0001 ; SPECIES_QUILAVA + .short 0x0002, 0x0001 ; SPECIES_TYPHLOSION + .short 0x0001, 0x0001 ; SPECIES_TOTODILE + .short 0x0002, 0x0001 ; SPECIES_CROCONAW + .short 0x0002, 0x0001 ; SPECIES_FERALIGATR + .short 0x0001, 0x0001 ; SPECIES_SENTRET + .short 0x0001, 0x0001 ; SPECIES_FURRET + .short 0x0001, 0x0001 ; SPECIES_HOOTHOOT + .short 0x0002, 0x0001 ; SPECIES_NOCTOWL + .short 0x0001, 0x0001 ; SPECIES_LEDYBA + .short 0x0002, 0x0001 ; SPECIES_LEDIAN + .short 0x0003, 0x0001 ; SPECIES_SPINARAK + .short 0x0003, 0x0001 ; SPECIES_ARIADOS + .short 0x0003, 0x0000 ; SPECIES_CROBAT + .short 0x0004, 0x0000 ; SPECIES_CHINCHOU + .short 0x0002, 0x0000 ; SPECIES_LANTURN + .short 0x0001, 0x0001 ; SPECIES_PICHU + .short 0x0001, 0x0001 ; SPECIES_CLEFFA + .short 0x0001, 0x0001 ; SPECIES_IGGLYBUFF + .short 0x0001, 0x0001 ; SPECIES_TOGEPI + .short 0x0001, 0x0001 ; SPECIES_TOGETIC + .short 0x0001, 0x0001 ; SPECIES_NATU + .short 0x0005, 0x0001 ; SPECIES_XATU + .short 0x0001, 0x0001 ; SPECIES_MAREEP + .short 0x0001, 0x0001 ; SPECIES_FLAAFFY + .short 0x0001, 0x0001 ; SPECIES_AMPHAROS + .short 0x0001, 0x0000 ; SPECIES_BELLOSSOM + .short 0x0001, 0x0001 ; SPECIES_MARILL + .short 0x0001, 0x0001 ; SPECIES_AZUMARILL + .short 0x0004, 0x0001 ; SPECIES_SUDOWOODO + .short 0x0001, 0x0001 ; SPECIES_POLITOED + .short 0x0001, 0x0001 ; SPECIES_HOPPIP + .short 0x0001, 0x0001 ; SPECIES_SKIPLOOM + .short 0x0001, 0x0001 ; SPECIES_JUMPLUFF + .short 0x0001, 0x0001 ; SPECIES_AIPOM + .short 0x0001, 0x0000 ; SPECIES_SUNKERN + .short 0x0001, 0x0001 ; SPECIES_SUNFLORA + .short 0x0001, 0x0001 ; SPECIES_YANMA + .short 0x0001, 0x0001 ; SPECIES_WOOPER + .short 0x0004, 0x0001 ; SPECIES_QUAGSIRE + .short 0x0002, 0x0001 ; SPECIES_ESPEON + .short 0x0002, 0x0001 ; SPECIES_UMBREON + .short 0x0003, 0x0001 ; SPECIES_MURKROW + .short 0x0004, 0x0001 ; SPECIES_SLOWKING + .short 0x0003, 0x0000 ; SPECIES_MISDREAVUS + .short 0x0005, 0x0000 ; SPECIES_UNOWN + .short 0x0004, 0x0001 ; SPECIES_WOBBUFFET + .short 0x0001, 0x0001 ; SPECIES_GIRAFARIG + .short 0x0005, 0x0000 ; SPECIES_PINECO + .short 0x0005, 0x0000 ; SPECIES_FORRETRESS + .short 0x0004, 0x0000 ; SPECIES_DUNSPARCE + .short 0x0004, 0x0001 ; SPECIES_GLIGAR + .short 0x0002, 0x0000 ; SPECIES_STEELIX + .short 0x0001, 0x0001 ; SPECIES_SNUBBULL + .short 0x0001, 0x0001 ; SPECIES_GRANBULL + .short 0x0002, 0x0000 ; SPECIES_QWILFISH + .short 0x0002, 0x0001 ; SPECIES_SCIZOR + .short 0x0001, 0x0001 ; SPECIES_SHUCKLE + .short 0x0002, 0x0001 ; SPECIES_HERACROSS + .short 0x0002, 0x0001 ; SPECIES_SNEASEL + .short 0x0001, 0x0001 ; SPECIES_TEDDIURSA + .short 0x0002, 0x0001 ; SPECIES_URSARING + .short 0x0004, 0x0000 ; SPECIES_SLUGMA + .short 0x0004, 0x0000 ; SPECIES_MAGCARGO + .short 0x0001, 0x0001 ; SPECIES_SWINUB + .short 0x0004, 0x0001 ; SPECIES_PILOSWINE + .short 0x0001, 0x0001 ; SPECIES_CORSOLA + .short 0x0005, 0x0000 ; SPECIES_REMORAID + .short 0x0004, 0x0001 ; SPECIES_OCTILLERY + .short 0x0001, 0x0001 ; SPECIES_DELIBIRD + .short 0x0002, 0x0000 ; SPECIES_MANTINE + .short 0x0002, 0x0001 ; SPECIES_SKARMORY + .short 0x0003, 0x0001 ; SPECIES_HOUNDOUR + .short 0x0003, 0x0001 ; SPECIES_HOUNDOOM + .short 0x0002, 0x0000 ; SPECIES_KINGDRA + .short 0x0001, 0x0001 ; SPECIES_PHANPY + .short 0x0002, 0x0001 ; SPECIES_DONPHAN + .short 0x0005, 0x0001 ; SPECIES_PORYGON2 + .short 0x0002, 0x0001 ; SPECIES_STANTLER + .short 0x0004, 0x0001 ; SPECIES_SMEARGLE + .short 0x0001, 0x0001 ; SPECIES_TYROGUE + .short 0x0002, 0x0001 ; SPECIES_HITMONTOP + .short 0x0001, 0x0001 ; SPECIES_SMOOCHUM + .short 0x0001, 0x0001 ; SPECIES_ELEKID + .short 0x0001, 0x0001 ; SPECIES_MAGBY + .short 0x0001, 0x0001 ; SPECIES_MILTANK + .short 0x0001, 0x0001 ; SPECIES_BLISSEY + .short 0x0002, 0x0001 ; SPECIES_RAIKOU + .short 0x0002, 0x0001 ; SPECIES_ENTEI + .short 0x0002, 0x0001 ; SPECIES_SUICUNE + .short 0x0001, 0x0001 ; SPECIES_LARVITAR + .short 0x0005, 0x0000 ; SPECIES_PUPITAR + .short 0x0003, 0x0001 ; SPECIES_TYRANITAR + .short 0x0002, 0x0001 ; SPECIES_LUGIA + .short 0x0002, 0x0001 ; SPECIES_HO_OH + .short 0x0001, 0x0001 ; SPECIES_CELEBI + .short 0x0001, 0x0001 ; SPECIES_TREECKO + .short 0x0002, 0x0001 ; SPECIES_GROVYLE + .short 0x0002, 0x0001 ; SPECIES_SCEPTILE + .short 0x0001, 0x0001 ; SPECIES_TORCHIC + .short 0x0002, 0x0001 ; SPECIES_COMBUSKEN + .short 0x0002, 0x0001 ; SPECIES_BLAZIKEN + .short 0x0001, 0x0001 ; SPECIES_MUDKIP + .short 0x0001, 0x0001 ; SPECIES_MARSHTOMP + .short 0x0002, 0x0001 ; SPECIES_SWAMPERT + .short 0x0001, 0x0001 ; SPECIES_POOCHYENA + .short 0x0002, 0x0001 ; SPECIES_MIGHTYENA + .short 0x0004, 0x0001 ; SPECIES_ZIGZAGOON + .short 0x0004, 0x0001 ; SPECIES_LINOONE + .short 0x0001, 0x0001 ; SPECIES_WURMPLE + .short 0x0005, 0x0000 ; SPECIES_SILCOON + .short 0x0001, 0x0001 ; SPECIES_BEAUTIFLY + .short 0x0005, 0x0000 ; SPECIES_CASCOON + .short 0x0002, 0x0001 ; SPECIES_DUSTOX + .short 0x0001, 0x0001 ; SPECIES_LOTAD + .short 0x0004, 0x0001 ; SPECIES_LOMBRE + .short 0x0004, 0x0001 ; SPECIES_LUDICOLO + .short 0x0005, 0x0001 ; SPECIES_SEEDOT + .short 0x0002, 0x0001 ; SPECIES_NUZLEAF + .short 0x0003, 0x0001 ; SPECIES_SHIFTRY + .short 0x0001, 0x0001 ; SPECIES_TAILLOW + .short 0x0002, 0x0001 ; SPECIES_SWELLOW + .short 0x0001, 0x0001 ; SPECIES_WINGULL + .short 0x0001, 0x0001 ; SPECIES_PELIPPER + .short 0x0001, 0x0001 ; SPECIES_RALTS + .short 0x0001, 0x0001 ; SPECIES_KIRLIA + .short 0x0001, 0x0001 ; SPECIES_GARDEVOIR + .short 0x0001, 0x0001 ; SPECIES_SURSKIT + .short 0x0002, 0x0000 ; SPECIES_MASQUERAIN + .short 0x0001, 0x0001 ; SPECIES_SHROOMISH + .short 0x0002, 0x0001 ; SPECIES_BRELOOM + .short 0x0004, 0x0001 ; SPECIES_SLAKOTH + .short 0x0002, 0x0001 ; SPECIES_VIGOROTH + .short 0x0004, 0x0001 ; SPECIES_SLAKING + .short 0x0005, 0x0001 ; SPECIES_NINCADA + .short 0x0002, 0x0001 ; SPECIES_NINJASK + .short 0x0004, 0x0001 ; SPECIES_SHEDINJA + .short 0x0004, 0x0001 ; SPECIES_WHISMUR + .short 0x0004, 0x0001 ; SPECIES_LOUDRED + .short 0x0002, 0x0001 ; SPECIES_EXPLOUD + .short 0x0001, 0x0001 ; SPECIES_MAKUHITA + .short 0x0002, 0x0001 ; SPECIES_HARIYAMA + .short 0x0001, 0x0001 ; SPECIES_AZURILL + .short 0x0005, 0x0001 ; SPECIES_NOSEPASS + .short 0x0001, 0x0001 ; SPECIES_SKITTY + .short 0x0001, 0x0001 ; SPECIES_DELCATTY + .short 0x0003, 0x0001 ; SPECIES_SABLEYE + .short 0x0001, 0x0001 ; SPECIES_MAWILE + .short 0x0001, 0x0001 ; SPECIES_ARON + .short 0x0002, 0x0001 ; SPECIES_LAIRON + .short 0x0002, 0x0001 ; SPECIES_AGGRON + .short 0x0001, 0x0001 ; SPECIES_MEDITITE + .short 0x0002, 0x0001 ; SPECIES_MEDICHAM + .short 0x0001, 0x0001 ; SPECIES_ELECTRIKE + .short 0x0002, 0x0001 ; SPECIES_MANECTRIC + .short 0x0001, 0x0001 ; SPECIES_PLUSLE + .short 0x0001, 0x0001 ; SPECIES_MINUN + .short 0x0002, 0x0001 ; SPECIES_VOLBEAT + .short 0x0001, 0x0001 ; SPECIES_ILLUMISE + .short 0x0001, 0x0001 ; SPECIES_ROSELIA + .short 0x0004, 0x0000 ; SPECIES_GULPIN + .short 0x0004, 0x0000 ; SPECIES_SWALOT + .short 0x0003, 0x0000 ; SPECIES_CARVANHA + .short 0x0003, 0x0000 ; SPECIES_SHARPEDO + .short 0x0001, 0x0000 ; SPECIES_WAILMER + .short 0x0002, 0x0000 ; SPECIES_WAILORD + .short 0x0004, 0x0001 ; SPECIES_NUMEL + .short 0x0004, 0x0001 ; SPECIES_CAMERUPT + .short 0x0004, 0x0001 ; SPECIES_TORKOAL + .short 0x0001, 0x0000 ; SPECIES_SPOINK + .short 0x0002, 0x0001 ; SPECIES_GRUMPIG + .short 0x0004, 0x0001 ; SPECIES_SPINDA + .short 0x0004, 0x0001 ; SPECIES_TRAPINCH + .short 0x0002, 0x0001 ; SPECIES_VIBRAVA + .short 0x0002, 0x0001 ; SPECIES_FLYGON + .short 0x0001, 0x0001 ; SPECIES_CACNEA + .short 0x0003, 0x0001 ; SPECIES_CACTURNE + .short 0x0001, 0x0001 ; SPECIES_SWABLU + .short 0x0001, 0x0001 ; SPECIES_ALTARIA + .short 0x0002, 0x0001 ; SPECIES_ZANGOOSE + .short 0x0003, 0x0000 ; SPECIES_SEVIPER + .short 0x0005, 0x0000 ; SPECIES_LUNATONE + .short 0x0005, 0x0000 ; SPECIES_SOLROCK + .short 0x0001, 0x0000 ; SPECIES_BARBOACH + .short 0x0004, 0x0000 ; SPECIES_WHISCASH + .short 0x0002, 0x0001 ; SPECIES_CORPHISH + .short 0x0003, 0x0001 ; SPECIES_CRAWDAUNT + .short 0x0005, 0x0001 ; SPECIES_BALTOY + .short 0x0005, 0x0001 ; SPECIES_CLAYDOL + .short 0x0005, 0x0001 ; SPECIES_LILEEP + .short 0x0005, 0x0001 ; SPECIES_CRADILY + .short 0x0005, 0x0000 ; SPECIES_ANORITH + .short 0x0002, 0x0001 ; SPECIES_ARMALDO + .short 0x0004, 0x0000 ; SPECIES_FEEBAS + .short 0x0002, 0x0000 ; SPECIES_MILOTIC + .short 0x0001, 0x0000 ; SPECIES_CASTFORM + .short 0x0001, 0x0001 ; SPECIES_KECLEON + .short 0x0003, 0x0000 ; SPECIES_SHUPPET + .short 0x0003, 0x0001 ; SPECIES_BANETTE + .short 0x0003, 0x0000 ; SPECIES_DUSKULL + .short 0x0003, 0x0001 ; SPECIES_DUSCLOPS + .short 0x0002, 0x0001 ; SPECIES_TROPIUS + .short 0x0001, 0x0000 ; SPECIES_CHIMECHO + .short 0x0003, 0x0001 ; SPECIES_ABSOL + .short 0x0004, 0x0001 ; SPECIES_WYNAUT + .short 0x0001, 0x0001 ; SPECIES_SNORUNT + .short 0x0002, 0x0000 ; SPECIES_GLALIE + .short 0x0001, 0x0000 ; SPECIES_SPHEAL + .short 0x0002, 0x0000 ; SPECIES_SEALEO + .short 0x0002, 0x0000 ; SPECIES_WALREIN + .short 0x0001, 0x0000 ; SPECIES_CLAMPERL + .short 0x0002, 0x0000 ; SPECIES_HUNTAIL + .short 0x0001, 0x0000 ; SPECIES_GOREBYSS + .short 0x0004, 0x0000 ; SPECIES_RELICANTH + .short 0x0001, 0x0000 ; SPECIES_LUVDISC + .short 0x0001, 0x0001 ; SPECIES_BAGON + .short 0x0005, 0x0001 ; SPECIES_SHELGON + .short 0x0002, 0x0001 ; SPECIES_SALAMENCE + .short 0x0005, 0x0001 ; SPECIES_BELDUM + .short 0x0005, 0x0001 ; SPECIES_METANG + .short 0x0002, 0x0001 ; SPECIES_METAGROSS + .short 0x0005, 0x0001 ; SPECIES_REGIROCK + .short 0x0005, 0x0001 ; SPECIES_REGICE + .short 0x0005, 0x0001 ; SPECIES_REGISTEEL + .short 0x0001, 0x0001 ; SPECIES_LATIAS + .short 0x0002, 0x0001 ; SPECIES_LATIOS + .short 0x0002, 0x0001 ; SPECIES_KYOGRE + .short 0x0002, 0x0001 ; SPECIES_GROUDON + .short 0x0002, 0x0000 ; SPECIES_RAYQUAZA + .short 0x0001, 0x0001 ; SPECIES_JIRACHI + .short 0x0002, 0x0001 ; SPECIES_DEOXYS + .short 0x0001, 0x0001 ; SPECIES_TURTWIG + .short 0x0001, 0x0001 ; SPECIES_GROTLE + .short 0x0002, 0x0001 ; SPECIES_TORTERRA + .short 0x0001, 0x0001 ; SPECIES_CHIMCHAR + .short 0x0002, 0x0001 ; SPECIES_MONFERNO + .short 0x0002, 0x0001 ; SPECIES_INFERNAPE + .short 0x0001, 0x0001 ; SPECIES_PIPLUP + .short 0x0002, 0x0001 ; SPECIES_PRINPLUP + .short 0x0002, 0x0001 ; SPECIES_EMPOLEON + .short 0x0001, 0x0001 ; SPECIES_STARLY + .short 0x0001, 0x0001 ; SPECIES_STARAVIA + .short 0x0002, 0x0001 ; SPECIES_STARAPTOR + .short 0x0004, 0x0001 ; SPECIES_BIDOOF + .short 0x0004, 0x0001 ; SPECIES_BIBAREL + .short 0x0001, 0x0001 ; SPECIES_KRICKETOT + .short 0x0002, 0x0001 ; SPECIES_KRICKETUNE + .short 0x0001, 0x0001 ; SPECIES_SHINX + .short 0x0001, 0x0001 ; SPECIES_LUXIO + .short 0x0002, 0x0001 ; SPECIES_LUXRAY + .short 0x0001, 0x0001 ; SPECIES_BUDEW + .short 0x0002, 0x0001 ; SPECIES_ROSERADE + .short 0x0002, 0x0001 ; SPECIES_CRANIDOS + .short 0x0002, 0x0001 ; SPECIES_RAMPARDOS + .short 0x0002, 0x0001 ; SPECIES_SHIELDON + .short 0x0002, 0x0001 ; SPECIES_BASTIODON + .short 0x0001, 0x0000 ; SPECIES_BURMY + .short 0x0001, 0x0000 ; SPECIES_WORMADAM + .short 0x0002, 0x0001 ; SPECIES_MOTHIM + .short 0x0001, 0x0000 ; SPECIES_COMBEE + .short 0x0001, 0x0000 ; SPECIES_VESPIQUEN + .short 0x0001, 0x0001 ; SPECIES_PACHIRISU + .short 0x0001, 0x0001 ; SPECIES_BUIZEL + .short 0x0002, 0x0001 ; SPECIES_FLOATZEL + .short 0x0001, 0x0001 ; SPECIES_CHERUBI + .short 0x0001, 0x0001 ; SPECIES_CHERRIM + .short 0x0001, 0x0001 ; SPECIES_SHELLOS + .short 0x0003, 0x0001 ; SPECIES_GASTRODON + .short 0x0001, 0x0001 ; SPECIES_AMBIPOM + .short 0x0003, 0x0000 ; SPECIES_DRIFLOON + .short 0x0003, 0x0000 ; SPECIES_DRIFBLIM + .short 0x0001, 0x0001 ; SPECIES_BUNEARY + .short 0x0001, 0x0001 ; SPECIES_LOPUNNY + .short 0x0003, 0x0000 ; SPECIES_MISMAGIUS + .short 0x0003, 0x0001 ; SPECIES_HONCHKROW + .short 0x0001, 0x0001 ; SPECIES_GLAMEOW + .short 0x0001, 0x0001 ; SPECIES_PURUGLY + .short 0x0001, 0x0001 ; SPECIES_CHINGLING + .short 0x0003, 0x0001 ; SPECIES_STUNKY + .short 0x0003, 0x0001 ; SPECIES_SKUNTANK + .short 0x0005, 0x0000 ; SPECIES_BRONZOR + .short 0x0005, 0x0000 ; SPECIES_BRONZONG + .short 0x0004, 0x0001 ; SPECIES_BONSLY + .short 0x0001, 0x0001 ; SPECIES_MIME_JR + .short 0x0001, 0x0001 ; SPECIES_HAPPINY + .short 0x0004, 0x0001 ; SPECIES_CHATOT + .short 0x0003, 0x0001 ; SPECIES_SPIRITOMB + .short 0x0001, 0x0001 ; SPECIES_GIBLE + .short 0x0002, 0x0001 ; SPECIES_GABITE + .short 0x0002, 0x0001 ; SPECIES_GARCHOMP + .short 0x0004, 0x0001 ; SPECIES_MUNCHLAX + .short 0x0001, 0x0001 ; SPECIES_RIOLU + .short 0x0002, 0x0001 ; SPECIES_LUCARIO + .short 0x0004, 0x0001 ; SPECIES_HIPPOPOTAS + .short 0x0002, 0x0001 ; SPECIES_HIPPOWDON + .short 0x0003, 0x0001 ; SPECIES_SKORUPI + .short 0x0003, 0x0001 ; SPECIES_DRAPION + .short 0x0003, 0x0001 ; SPECIES_CROAGUNK + .short 0x0003, 0x0001 ; SPECIES_TOXICROAK + .short 0x0004, 0x0000 ; SPECIES_CARNIVINE + .short 0x0001, 0x0000 ; SPECIES_FINNEON + .short 0x0002, 0x0000 ; SPECIES_LUMINEON + .short 0x0001, 0x0000 ; SPECIES_MANTYKE + .short 0x0001, 0x0001 ; SPECIES_SNOVER + .short 0x0002, 0x0001 ; SPECIES_ABOMASNOW + .short 0x0002, 0x0001 ; SPECIES_WEAVILE + .short 0x0005, 0x0000 ; SPECIES_MAGNEZONE + .short 0x0004, 0x0001 ; SPECIES_LICKILICKY + .short 0x0002, 0x0001 ; SPECIES_RHYPERIOR + .short 0x0004, 0x0001 ; SPECIES_TANGROWTH + .short 0x0002, 0x0001 ; SPECIES_ELECTIVIRE + .short 0x0002, 0x0001 ; SPECIES_MAGMORTAR + .short 0x0002, 0x0001 ; SPECIES_TOGEKISS + .short 0x0002, 0x0001 ; SPECIES_YANMEGA + .short 0x0002, 0x0001 ; SPECIES_LEAFEON + .short 0x0002, 0x0001 ; SPECIES_GLACEON + .short 0x0002, 0x0001 ; SPECIES_GLISCOR + .short 0x0004, 0x0001 ; SPECIES_MAMOSWINE + .short 0x0005, 0x0001 ; SPECIES_PORYGON_Z + .short 0x0002, 0x0001 ; SPECIES_GALLADE + .short 0x0005, 0x0001 ; SPECIES_PROBOPASS + .short 0x0003, 0x0000 ; SPECIES_DUSKNOIR + .short 0x0001, 0x0000 ; SPECIES_FROSLASS + .short 0x0002, 0x0000 ; SPECIES_ROTOM + .short 0x0001, 0x0001 ; SPECIES_UXIE + .short 0x0001, 0x0001 ; SPECIES_MESPRIT + .short 0x0001, 0x0001 ; SPECIES_AZELF + .short 0x0002, 0x0001 ; SPECIES_DIALGA + .short 0x0002, 0x0001 ; SPECIES_PALKIA + .short 0x0002, 0x0001 ; SPECIES_HEATRAN + .short 0x0005, 0x0001 ; SPECIES_REGIGIGAS + .short 0x0002, 0x0001 ; SPECIES_GIRATINA + .short 0x0002, 0x0000 ; SPECIES_CRESSELIA + .short 0x0001, 0x0000 ; SPECIES_PHIONE + .short 0x0001, 0x0000 ; SPECIES_MANAPHY + .short 0x0003, 0x0001 ; SPECIES_DARKRAI + .short 0x0001, 0x0001 ; SPECIES_SHAYMIN + .short 0x0002, 0x0001 ; SPECIES_ARCEUS diff --git a/arm9/modules/05/asm/mod05_021F61F4.s b/arm9/modules/05/asm/mod05_021F61F4.s new file mode 100644 index 00000000..6b6cd889 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F61F4.s @@ -0,0 +1,216 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F61F4 +MOD05_021F61F4: ; 0x021F61F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #0x34 + bl AllocFromHeapAtEnd + add r4, r0, #0 + mov r1, #0 + mov r2, #0x34 + bl memset + str r6, [r4] + mov r0, #0 + str r0, [r4, #0xc] + str r5, [r4, #0x2c] + ldr r0, [r5, #0x20] + str r0, [r4, #0x30] + bl Camera_GetDistance + str r0, [r4, #0x10] + str r0, [r4, #0x20] + ldr r0, _021F622C ; =MOD05_021F6270 + ldr r2, _021F6230 ; =0x0000FFFF + add r1, r4, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_021F622C: .word MOD05_021F6270 +_021F6230: .word 0x0000FFFF + + thumb_func_start MOD05_021F6234 +MOD05_021F6234: ; 0x021F6234 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #8] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6240 +MOD05_021F6240: ; 0x021F6240 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FreeToHeap + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD05_021F6254 +MOD05_021F6254: ; 0x021F6254 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0201B6C8 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #8] + str r5, [r0, #0xc] + str r4, [r0, #0x14] + str r6, [r0, #0x1c] + str r1, [r0, #0x24] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F6270 +MOD05_021F6270: ; 0x021F6270 + push {r3, lr} + add r0, r1, #0 + ldr r1, [r1, #0xc] + lsl r2, r1, #2 + ldr r1, _021F6280 ; =UNK05_021FD1B8 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .align 2, 0 +_021F6280: .word UNK05_021FD1B8 + + thumb_func_start MOD05_021F6284 +MOD05_021F6284: ; 0x021F6284 + mov r1, #1 + str r1, [r0, #8] + bx lr + .align 2, 0 + + thumb_func_start MOD05_021F628C +MOD05_021F628C: ; 0x021F628C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021F629C + cmp r1, #1 + beq _021F62A6 + pop {r4, pc} +_021F629C: + bl MOD05_021F630C + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021F62A6: + add r0, r4, #0 + bl MOD05_021F633C + cmp r0, #1 + bne _021F62BA + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #8] +_021F62BA: + add r0, r4, #0 + bl MOD05_021F62FC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F62C4 +MOD05_021F62C4: ; 0x021F62C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021F62D4 + cmp r1, #1 + beq _021F62DE + pop {r4, pc} +_021F62D4: + bl MOD05_021F6324 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021F62DE: + add r0, r4, #0 + bl MOD05_021F633C + cmp r0, #1 + bne _021F62F2 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #8] +_021F62F2: + add r0, r4, #0 + bl MOD05_021F62FC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F62FC +MOD05_021F62FC: ; 0x021F62FC + ldr r3, _021F6308 ; =FUN_0201EFE0 + add r1, r0, #0 + ldr r0, [r1, #0x20] + ldr r1, [r1, #0x30] + bx r3 + nop +_021F6308: .word Camera_SetDistance + + thumb_func_start MOD05_021F630C +MOD05_021F630C: ; 0x021F630C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + bl _s32_div_f + str r0, [r4, #0x28] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start MOD05_021F6324 +MOD05_021F6324: ; 0x021F6324 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + sub r0, r1, r0 + ldr r1, [r4, #0x1c] + bl _s32_div_f + str r0, [r4, #0x28] + ldr r0, [r4, #0x10] + str r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start MOD05_021F633C +MOD05_021F633C: ; 0x021F633C + ldr r2, [r0, #0x20] + ldr r1, [r0, #0x28] + add r1, r2, r1 + str r1, [r0, #0x20] + ldr r1, [r0, #0x24] + add r2, r1, #1 + str r2, [r0, #0x24] + ldr r1, [r0, #0x1c] + cmp r2, r1 + blo _021F635A + str r1, [r0, #0x24] + ldr r1, [r0, #0x18] + str r1, [r0, #0x20] + mov r0, #1 + bx lr +_021F635A: + mov r0, #0 + bx lr + .align 2, 0 + + .section .rodata + + .global UNK05_021FD1B8 +UNK05_021FD1B8: ; 0x021FD1B8 + .word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000 diff --git a/arm9/modules/05/asm/mod05_021F6360.s b/arm9/modules/05/asm/mod05_021F6360.s new file mode 100644 index 00000000..c03de5a5 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021F6360.s @@ -0,0 +1,103 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021F6360 +MOD05_021F6360: ; 0x021F6360 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02046528 + str r0, [sp] + add r0, r7, #0 + bl FUN_0204652C + add r6, r0, #0 + add r0, r7, #0 + bl FUN_02046530 + add r4, r0, #0 + ldr r0, [r4] + ldr r5, [r6, #4] + cmp r0, #5 + bhi _021F6424 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F638E: ; jump table + .short _021F639A - _021F638E - 2 ; case 0 + .short _021F63AC - _021F638E - 2 ; case 1 + .short _021F63CC - _021F638E - 2 ; case 2 + .short _021F63EA - _021F638E - 2 ; case 3 + .short _021F6402 - _021F638E - 2 ; case 4 + .short _021F6414 - _021F638E - 2 ; case 5 +_021F639A: + mov r0, #0xb + mov r1, #8 + bl AllocFromHeapAtEnd + str r0, [r6, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63AC: + bl MOD05_021F57EC + add r6, r0, #0 + mov r0, #0xb + add r1, r6, #0 + bl AllocFromHeapAtEnd + str r0, [r5, #4] + mov r1, #0 + add r2, r6, #0 + bl memset + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63CC: + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + add r3, r0, #0 + ldr r0, [sp] + ldr r2, [r6] + mov r1, #0 + bl MOD06_0224666C + str r0, [r5] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63EA: + ldr r0, [r5] + bl MOD06_022466A0 + cmp r0, #0 + beq _021F6424 + ldr r0, [r5] + bl MOD06_022466AC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F6402: + ldr r1, _021F6428 ; =MOD05_021F57F0 + ldr r2, [r5, #4] + add r0, r7, #0 + bl FUN_0204640C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F6414: + add r0, r5, #0 + bl FreeToHeap + add r0, r6, #0 + bl FreeToHeap + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F6424: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F6428: .word MOD05_021F57F0 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s deleted file mode 100644 index 3cc1b9fe..00000000 --- a/arm9/modules/05/asm/module_05.s +++ /dev/null @@ -1,31453 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD05_021E8648 -MOD05_021E8648: ; 0x021E8648 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _021E8690 ; =MOD05_021E8728 - ldr r3, [r5, #0x28] - mov r1, #0x38 - mov r2, #5 - bl FUN_020061E8 - add r6, r0, #0 - bl FUN_0201B6C8 - add r4, r0, #0 - add r2, r4, #4 - mov r3, #5 -_021E8664: - ldmia r5!, {r0, r1} - stmia r2!, {r0, r1} - sub r3, r3, #1 - bne _021E8664 - ldr r0, [r5] - str r0, [r2] - str r6, [r4, #0x34] - mov r0, #0 - str r0, [r4, #0x30] - bl GX_GetBankForLCDC - str r0, [r4] - add r0, r4, #4 - bl MOD05_021E87C8 - ldr r0, _021E8694 ; =MOD05_021E8768 - add r1, r4, #0 - mov r2, #0 - bl FUN_0200CA98 - add r0, r4, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E8690: .word MOD05_021E8728 -_021E8694: .word MOD05_021E8768 - - thumb_func_start MOD05_021E8698 -MOD05_021E8698: ; 0x021E8698 - push {r4, lr} - add r4, r0, #0 - add r0, r1, #0 - add r1, r2, #0 - add r2, r3, #0 - bl GX_SetGraphicsMode - ldr r0, [r4] - ldr r0, [r0] - bl GX_SetBankForLCDC - ldr r0, [r4] - ldr r0, [r0, #4] - cmp r0, #0xa - bgt _021E86C8 - bge _021E86EC - cmp r0, #6 - bgt _021E8708 - cmp r0, #2 - blt _021E8708 - beq _021E86CE - cmp r0, #6 - beq _021E86DE - b _021E8708 -_021E86C8: - cmp r0, #0xe - beq _021E86FA - b _021E8708 -_021E86CE: - mov r1, #0x1a - mov r2, #2 - mov r0, #0 - lsl r1, r1, #0x16 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E870E -_021E86DE: - mov r2, #2 - ldr r1, _021E871C ; =0x06820000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E870E -_021E86EC: - mov r2, #2 - ldr r1, _021E8720 ; =0x06840000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E870E -_021E86FA: - mov r2, #2 - ldr r1, _021E8724 ; =0x06860000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E870E -_021E8708: - mov r0, #0 - bl GX_SetBankForLCDC -_021E870E: - ldr r0, [r4] - ldr r0, [r0, #0x34] - bl FUN_0200621C - mov r0, #0 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 -_021E871C: .word 0x06820000 -_021E8720: .word 0x06840000 -_021E8724: .word 0x06860000 - - thumb_func_start MOD05_021E8728 -MOD05_021E8728: ; 0x021E8728 - push {r4, r5, r6, r7} - ldr r0, [r1, #0x30] - cmp r0, #0 - beq _021E8760 - ldr r6, [r1, #0x20] - ldr r5, [r1, #0x10] - ldr r4, [r1, #0x1c] - ldr r3, [r1, #0x18] - ldr r2, [r1, #0x14] - ldr r0, [r1, #0x24] - ldr r1, [r1, #0x28] - lsl r5, r5, #0x14 - lsl r7, r1, #8 - lsl r1, r3, #0x18 - lsl r3, r2, #0x1d - mov r2, #2 - lsl r2, r2, #0x1e - orr r3, r2 - lsl r2, r4, #0x19 - orr r2, r3 - orr r1, r2 - lsl r6, r6, #0x10 - orr r1, r5 - orr r1, r6 - orr r1, r7 - orr r1, r0 - ldr r0, _021E8764 ; =0x04000064 - str r1, [r0] -_021E8760: - pop {r4, r5, r6, r7} - bx lr - .balign 4, 0 -_021E8764: .word 0x04000064 - - thumb_func_start MOD05_021E8768 -MOD05_021E8768: ; 0x021E8768 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #4] - cmp r0, #0xa - bgt _021E8786 - bge _021E879C - cmp r0, #6 - bgt _021E87AC - cmp r0, #2 - blt _021E87AC - beq _021E878C - cmp r0, #6 - beq _021E8794 - b _021E87AC -_021E8786: - cmp r0, #0xe - beq _021E87A4 - b _021E87AC -_021E878C: - mov r0, #1 - bl GX_SetBankForLCDC - b _021E87B2 -_021E8794: - mov r0, #2 - bl GX_SetBankForLCDC - b _021E87B2 -_021E879C: - mov r0, #4 - bl GX_SetBankForLCDC - b _021E87B2 -_021E87A4: - mov r0, #8 - bl GX_SetBankForLCDC - b _021E87B2 -_021E87AC: - mov r0, #0 - bl GX_SetBankForLCDC -_021E87B2: - ldr r0, [r4, #4] - ldr r1, [r4, #8] - ldr r2, [r4, #0xc] - bl GX_SetGraphicsMode - mov r0, #1 - str r0, [r4, #0x30] - add r0, r5, #0 - bl FUN_0200CAB4 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021E87C8 -MOD05_021E87C8: ; 0x021E87C8 - push {r4, r5, r6, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0xa - bgt _021E87E4 - bge _021E8808 - cmp r0, #6 - bgt _021E8822 - cmp r0, #2 - blt _021E8822 - beq _021E87EA - cmp r0, #6 - beq _021E87FA - b _021E8822 -_021E87E4: - cmp r0, #0xe - beq _021E8816 - b _021E8822 -_021E87EA: - mov r1, #0x1a - mov r2, #2 - mov r0, #0 - lsl r1, r1, #0x16 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E8822 -_021E87FA: - mov r2, #2 - ldr r1, _021E8850 ; =0x06820000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E8822 -_021E8808: - mov r2, #2 - ldr r1, _021E8854 ; =0x06840000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast - b _021E8822 -_021E8816: - mov r2, #2 - ldr r1, _021E8858 ; =0x06860000 - mov r0, #0 - lsl r2, r2, #0x10 - bl MIi_CpuClearFast -_021E8822: - ldr r5, [r4, #0x10] - ldr r1, [r4, #0x1c] - ldr r3, [r4, #0x18] - ldr r6, [r4, #0x14] - ldr r0, [r4, #0xc] - mov r4, #2 - lsl r2, r1, #0x10 - lsl r1, r0, #0x14 - lsl r5, r5, #0x1d - lsl r4, r4, #0x1e - orr r4, r5 - lsl r3, r3, #0x19 - lsl r0, r6, #0x18 - orr r3, r4 - orr r0, r3 - orr r0, r1 - add r1, r2, #0 - orr r1, r0 - mov r0, #0x10 - orr r1, r0 - ldr r0, _021E885C ; =0x04000064 - str r1, [r0] - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E8850: .word 0x06820000 -_021E8854: .word 0x06840000 -_021E8858: .word 0x06860000 -_021E885C: .word 0x04000064 - - thumb_func_start MOD05_021E8860 -MOD05_021E8860: ; 0x021E8860 - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - add r5, r0, #0 - add r4, r1, #0 - mov r0, #2 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #4 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #8 - mov r1, #0 - bl GX_EngineAToggleLayers - bl GX_ResetBankForBG - mov r0, #4 - add r1, r0, #0 - bl AllocFromHeap - add r7, r0, #0 - mov r0, #0 - add r1, r7, #0 - mov r2, #4 - bl MIi_CpuClear32 - ldr r6, _021E88BC ; =UNK05_021F78E4 - add r3, sp, #0 - mov r2, #5 -_021E889E: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021E889E - ldr r0, [r6] - str r0, [r3] - add r0, sp, #0 - str r5, [sp, #0x20] - str r4, [sp, #0x24] - bl MOD05_021E8648 - str r0, [r7] - add r0, r7, #0 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E88BC: .word UNK05_021F78E4 - - thumb_func_start MOD05_021E88C0 -MOD05_021E88C0: ; 0x021E88C0 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r0, [r4] - mov r2, #0 - add r3, r1, #0 - bl MOD05_021E8698 - mov r0, #4 - bl GX_SetBankForBG - mov r0, #0xe - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r1, [r4] - mov r0, #4 - bl FreeToHeapExplicit - pop {r4, pc} - - thumb_func_start MOD05_021E88E8 -MOD05_021E88E8: ; 0x021E88E8 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #5 - bls _021E88FA - b _021E8A56 -_021E88FA: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E8906: ; jump table - .short _021E8912 - _021E8906 - 2 ; case 0 - .short _021E8936 - _021E8906 - 2 ; case 1 - .short _021E8952 - _021E8906 - 2 ; case 2 - .short _021E899C - _021E8906 - 2 ; case 3 - .short _021E89F4 - _021E8906 - 2 ; case 4 - .short _021E8A1C - _021E8906 - 2 ; case 5 -_021E8912: - mov r0, #4 - mov r1, #0x20 - bl AllocFromHeap - str r0, [r4, #0xc] - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r5, [r4, #0xc] - bl MOD05_021E3768 - str r0, [r5, #0x1c] - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8936: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8952: - ldr r0, [r4, #4] - cmp r0, #0 - beq _021E8A56 - mov r1, #0 - str r1, [r4, #4] - ldr r0, [r4] - mov r2, #2 - add r0, r0, #1 - str r0, [r4] - ldr r0, _021E8A5C ; =0xFFFFD000 - str r1, [sp] - str r0, [sp, #4] - lsl r0, r0, #2 - str r0, [sp, #8] - ldr r1, [r5, #0x1c] - add r0, r4, #0 - mov r3, #7 - bl MOD05_021E37CC - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x32 - add r1, r0, #0 - mov r0, #6 - lsl r2, r2, #0xc - mov r3, #0x1e - str r0, [sp] - add r0, r5, #4 - add r2, r1, r2 - lsl r3, r3, #0xc - bl MOD05_021E3644 - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021E899C: - add r0, r5, #4 - bl MOD05_021E36A4 - add r6, r0, #0 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - cmp r6, #1 - bne _021E8A56 - ldr r0, [r4] - mov r2, #2 - add r0, r0, #1 - str r0, [r4] - ldr r0, _021E8A5C ; =0xFFFFD000 - mov r3, #6 - str r0, [sp] - mov r0, #0xff - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #0x1e - lsl r0, r0, #0xc - str r0, [sp, #8] - ldr r1, [r5, #0x1c] - add r0, r4, #0 - bl MOD05_021E3888 - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x32 - add r1, r0, #0 - mov r0, #6 - lsl r2, r2, #0xc - str r0, [sp] - ldr r3, _021E8A60 ; =0xFFF01000 - add r0, r5, #4 - sub r2, r1, r2 - bl MOD05_021E3644 - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021E89F4: - add r0, r5, #4 - bl MOD05_021E36A4 - add r6, r0, #0 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - cmp r6, #1 - bne _021E8A56 - add r0, r4, #0 - bl MOD05_021E35AC - cmp r0, #1 - bne _021E8A56 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8A1C: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, _021E8A64 ; =0x04000010 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - str r1, [r0, #0xc] - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E8A42 - mov r0, #1 - str r0, [r1] -_021E8A42: - ldr r0, [r5, #0x1c] - bl MOD05_021E37A4 - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C -_021E8A56: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021E8A5C: .word 0xFFFFD000 -_021E8A60: .word 0xFFF01000 -_021E8A64: .word 0x04000010 - - thumb_func_start MOD05_021E8A68 -MOD05_021E8A68: ; 0x021E8A68 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #5 - bls _021E8A7A - b _021E8BD6 -_021E8A7A: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E8A86: ; jump table - .short _021E8A92 - _021E8A86 - 2 ; case 0 - .short _021E8AB6 - _021E8A86 - 2 ; case 1 - .short _021E8AD2 - _021E8A86 - 2 ; case 2 - .short _021E8B1C - _021E8A86 - 2 ; case 3 - .short _021E8B74 - _021E8A86 - 2 ; case 4 - .short _021E8B9C - _021E8A86 - 2 ; case 5 -_021E8A92: - mov r0, #4 - mov r1, #0x20 - bl AllocFromHeap - str r0, [r4, #0xc] - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r5, [r4, #0xc] - bl MOD05_021E3768 - str r0, [r5, #0x1c] - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8AB6: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8AD2: - ldr r0, [r4, #4] - cmp r0, #0 - beq _021E8BD6 - mov r1, #0 - str r1, [r4, #4] - ldr r0, [r4] - mov r2, #5 - add r0, r0, #1 - str r0, [r4] - ldr r0, _021E8BDC ; =0xFFFFE000 - str r1, [sp] - str r0, [sp, #4] - ldr r0, _021E8BE0 ; =0xFFFF4000 - mov r3, #7 - str r0, [sp, #8] - ldr r1, [r5, #0x1c] - add r0, r4, #0 - bl MOD05_021E37CC - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x32 - add r1, r0, #0 - mov r0, #6 - lsl r2, r2, #0xc - mov r3, #0x1e - str r0, [sp] - add r0, r5, #4 - add r2, r1, r2 - lsl r3, r3, #0xc - bl MOD05_021E3644 - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021E8B1C: - add r0, r5, #4 - bl MOD05_021E36A4 - add r6, r0, #0 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - cmp r6, #1 - bne _021E8BD6 - ldr r0, [r4] - mov r2, #5 - add r0, r0, #1 - str r0, [r4] - ldr r0, _021E8BDC ; =0xFFFFE000 - mov r3, #6 - str r0, [sp] - mov r0, #0xff - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #0x1e - lsl r0, r0, #0xc - str r0, [sp, #8] - ldr r1, [r5, #0x1c] - add r0, r4, #0 - bl MOD05_021E3888 - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x1e - add r1, r0, #0 - mov r0, #6 - lsl r2, r2, #0xc - str r0, [sp] - ldr r3, _021E8BE4 ; =0xFFF9C000 - add r0, r5, #4 - sub r2, r1, r2 - bl MOD05_021E3644 - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021E8B74: - add r0, r5, #4 - bl MOD05_021E36A4 - add r6, r0, #0 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - cmp r6, #1 - bne _021E8BD6 - add r0, r4, #0 - bl MOD05_021E35AC - cmp r0, #1 - bne _021E8BD6 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8B9C: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, _021E8BE8 ; =0x04000010 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - str r1, [r0, #0xc] - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E8BC2 - mov r0, #1 - str r0, [r1] -_021E8BC2: - ldr r0, [r5, #0x1c] - bl MOD05_021E37A4 - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C -_021E8BD6: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021E8BDC: .word 0xFFFFE000 -_021E8BE0: .word 0xFFFF4000 -_021E8BE4: .word 0xFFF9C000 -_021E8BE8: .word 0x04000010 - - thumb_func_start MOD05_021E8BEC -MOD05_021E8BEC: ; 0x021E8BEC - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #6 - bls _021E8BFE - b _021E8D16 -_021E8BFE: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E8C0A: ; jump table - .short _021E8C18 - _021E8C0A - 2 ; case 0 - .short _021E8C4A - _021E8C0A - 2 ; case 1 - .short _021E8C6A - _021E8C0A - 2 ; case 2 - .short _021E8CA0 - _021E8C0A - 2 ; case 3 - .short _021E8CB2 - _021E8C0A - 2 ; case 4 - .short _021E8CD4 - _021E8C0A - 2 ; case 5 - .short _021E8CE6 - _021E8C0A - 2 ; case 6 -_021E8C18: - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeap - str r0, [r4, #0xc] - mov r2, #0x10 - mov r1, #0 -_021E8C26: - strb r1, [r0] - add r0, r0, #1 - sub r2, r2, #1 - bne _021E8C26 - ldr r0, [r4, #0xc] - mov r1, #4 - bl MOD05_021E8E8C - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8C4A: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r4, #4 - bl MOD05_021E3474 - mov r0, #0xa - str r0, [r5, #0xc] - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8C6A: - ldr r0, [r5, #0xc] - sub r0, r0, #1 - str r0, [r5, #0xc] - bpl _021E8D16 - ldr r0, [r4] - mov r3, #0x32 - add r0, r0, #1 - str r0, [r4] - mov r0, #0xc - str r0, [r5, #0xc] - lsl r0, r0, #0xc - str r0, [sp] - lsl r3, r3, #4 - str r3, [sp, #4] - ldr r0, _021E8D1C ; =0x04000010 - mov r1, #0 - str r0, [sp, #8] - str r1, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - add r0, r5, #0 - mov r2, #0xbf - sub r3, #0x76 - bl MOD05_021E8EC0 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} -_021E8CA0: - ldr r0, [r5, #0xc] - sub r0, r0, #1 - str r0, [r5, #0xc] - bpl _021E8D16 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8CB2: - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x1e - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8CD4: - bl FUN_0200E308 - cmp r0, #0 - beq _021E8D16 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8CE6: - add r0, r5, #0 - bl MOD05_021E8EA8 - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E8D00 - mov r0, #1 - str r0, [r1] -_021E8D00: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021E8D16: - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_021E8D1C: .word 0x04000010 - - thumb_func_start MOD05_021E8D20 -MOD05_021E8D20: ; 0x021E8D20 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #6 - bls _021E8D32 - b _021E8E4C -_021E8D32: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E8D3E: ; jump table - .short _021E8D4C - _021E8D3E - 2 ; case 0 - .short _021E8D7E - _021E8D3E - 2 ; case 1 - .short _021E8D9E - _021E8D3E - 2 ; case 2 - .short _021E8DD6 - _021E8D3E - 2 ; case 3 - .short _021E8DE8 - _021E8D3E - 2 ; case 4 - .short _021E8E0A - _021E8D3E - 2 ; case 5 - .short _021E8E1C - _021E8D3E - 2 ; case 6 -_021E8D4C: - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeap - str r0, [r4, #0xc] - mov r2, #0x10 - mov r1, #0 -_021E8D5A: - strb r1, [r0] - add r0, r0, #1 - sub r2, r2, #1 - bne _021E8D5A - ldr r0, [r4, #0xc] - mov r1, #4 - bl MOD05_021E8E8C - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8D7E: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r4, #4 - bl MOD05_021E3474 - mov r0, #0xa - str r0, [r5, #0xc] - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8D9E: - ldr r0, [r5, #0xc] - sub r0, r0, #1 - str r0, [r5, #0xc] - bpl _021E8E4C - ldr r0, [r4] - mov r3, #0x32 - add r0, r0, #1 - str r0, [r4] - mov r0, #0xc - str r0, [r5, #0xc] - mov r0, #0xf - lsl r0, r0, #0xc - str r0, [sp] - lsl r3, r3, #4 - str r3, [sp, #4] - ldr r0, _021E8E50 ; =0x04000010 - mov r1, #0 - str r0, [sp, #8] - str r1, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - add r0, r5, #0 - mov r2, #0xbf - add r3, #0xdf - bl MOD05_021E8EC0 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} -_021E8DD6: - ldr r0, [r5, #0xc] - sub r0, r0, #1 - str r0, [r5, #0xc] - bpl _021E8E4C - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8DE8: - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x1e - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8E0A: - bl FUN_0200E308 - cmp r0, #0 - beq _021E8E4C - ldr r0, [r4] - add sp, #0x14 - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8E1C: - add r0, r5, #0 - bl MOD05_021E8EA8 - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E8E36 - mov r0, #1 - str r0, [r1] -_021E8E36: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021E8E4C: - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021E8E50: .word 0x04000010 - - thumb_func_start MOD05_021E8E54 -MOD05_021E8E54: ; 0x021E8E54 - ldr r3, _021E8E60 ; =FUN_0200CA60 - mov r2, #1 - add r1, r0, #0 - ldr r0, _021E8E64 ; =MOD05_021E8E68 - lsl r2, r2, #0xa - bx r3 - .balign 4, 0 -_021E8E60: .word FUN_0200CA60 -_021E8E64: .word MOD05_021E8E68 - - thumb_func_start MOD05_021E8E68 -MOD05_021E8E68: ; 0x021E8E68 - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #8] - cmp r0, #2 - blo _021E8E7C - ldr r0, [r4] - bl FUN_02012B30 - mov r0, #0 - str r0, [r4, #8] -_021E8E7C: - ldr r0, [r4] - bl FUN_02012B68 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8E8C -MOD05_021E8E8C: ; 0x021E8E8C - push {r4, lr} - add r4, r0, #0 - add r0, r1, #0 - bl FUN_02012A00 - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - add r0, r4, #0 - bl MOD05_021E8E54 - str r0, [r4, #4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8EA8 -MOD05_021E8EA8: ; 0x021E8EA8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - bl FUN_0200CAB4 - ldr r0, [r4] - bl FUN_02012AC4 - ldr r0, [r4] - bl FUN_02012B00 - pop {r4, pc} - - thumb_func_start MOD05_021E8EC0 -MOD05_021E8EC0: ; 0x021E8EC0 - push {r4, r5, lr} - sub sp, #0x14 - ldr r4, [sp, #0x20] - add r5, sp, #0x10 - str r4, [sp] - mov r4, #0x14 - ldrsh r4, [r5, r4] - str r4, [sp, #4] - ldr r4, [sp, #0x28] - str r4, [sp, #8] - ldr r4, [sp, #0x2c] - str r4, [sp, #0xc] - ldr r4, [sp, #0x30] - str r4, [sp, #0x10] - ldr r0, [r0] - bl FUN_02012A30 - add sp, #0x14 - pop {r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8EE8 -MOD05_021E8EE8: ; 0x021E8EE8 - push {r3, r4, r5, r6, r7, lr} - ldr r0, [r0] - add r7, r1, #0 - bl FUN_02012B20 - add r5, r0, #0 - mov r6, #0 -_021E8EF6: - ldr r0, [r5] - add r1, r7, #0 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - add r0, r6, #0 - bl _u32_div_f - mov r1, #1 - tst r0, r1 - bne _021E8F0E - lsl r0, r4, #0x10 - b _021E8F12 -_021E8F0E: - neg r0, r4 - lsl r0, r0, #0x10 -_021E8F12: - lsr r0, r0, #0x10 - str r0, [r5] - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #0xc0 - blt _021E8EF6 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E8F20 -MOD05_021E8F20: ; 0x021E8F20 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #5 - bhi _021E9026 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E8F3C: ; jump table - .short _021E8F48 - _021E8F3C - 2 ; case 0 - .short _021E8F68 - _021E8F3C - 2 ; case 1 - .short _021E8F84 - _021E8F3C - 2 ; case 2 - .short _021E8F92 - _021E8F3C - 2 ; case 3 - .short _021E8FDC - _021E8F3C - 2 ; case 4 - .short _021E8FFC - _021E8F3C - 2 ; case 5 -_021E8F48: - mov r0, #4 - mov r1, #0x1c - bl AllocFromHeap - str r0, [r4, #0xc] - mov r2, #0x1c - mov r1, #0 -_021E8F56: - strb r1, [r0] - add r0, r0, #1 - sub r2, r2, #1 - bne _021E8F56 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8F68: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8F84: - ldr r1, [r4, #4] - cmp r1, #0 - beq _021E9026 - add r0, r0, #1 - add sp, #0xc - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8F92: - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #0xc - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0x10 - str r0, [sp, #8] - mov r0, #3 - add r2, r1, #0 - mov r3, #0 - bl FUN_0200E1D0 - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x19 - add r1, r0, #0 - mov r0, #0xc - lsl r2, r2, #0x10 - str r0, [sp] - ldr r3, _021E902C ; =0xFFFFE000 - add r0, r5, #4 - sub r2, r1, r2 - bl MOD05_021E3644 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8FDC: - add r0, r5, #4 - bl MOD05_021E36A4 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - bl FUN_0200E308 - cmp r0, #0 - beq _021E9026 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E8FFC: - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E9010 - mov r0, #1 - str r0, [r1] -_021E9010: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021E9026: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021E902C: .word 0xFFFFE000 - - thumb_func_start MOD05_021E9030 -MOD05_021E9030: ; 0x021E9030 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #5 - bhi _021E9136 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E904C: ; jump table - .short _021E9058 - _021E904C - 2 ; case 0 - .short _021E9078 - _021E904C - 2 ; case 1 - .short _021E9094 - _021E904C - 2 ; case 2 - .short _021E90A2 - _021E904C - 2 ; case 3 - .short _021E90EC - _021E904C - 2 ; case 4 - .short _021E910C - _021E904C - 2 ; case 5 -_021E9058: - mov r0, #4 - mov r1, #0x1c - bl AllocFromHeap - str r0, [r4, #0xc] - mov r2, #0x1c - mov r1, #0 -_021E9066: - strb r1, [r0] - add r0, r0, #1 - sub r2, r2, #1 - bne _021E9066 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E9078: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E9094: - ldr r1, [r4, #4] - cmp r1, #0 - beq _021E9136 - add r0, r0, #1 - add sp, #0xc - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E90A2: - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #0xc - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0x10 - str r0, [sp, #8] - mov r0, #3 - add r2, r1, #0 - mov r3, #0 - bl FUN_0200E1D0 - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - str r0, [r5] - bl Camera_GetDistance - mov r2, #0x32 - add r1, r0, #0 - mov r0, #0xc - lsl r2, r2, #0x10 - str r0, [sp] - ldr r3, _021E913C ; =0xFFFFB000 - add r0, r5, #4 - sub r2, r1, r2 - bl MOD05_021E3644 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E90EC: - add r0, r5, #4 - bl MOD05_021E36A4 - ldr r0, [r5, #4] - ldr r1, [r5] - bl Camera_SetDistance - bl FUN_0200E308 - cmp r0, #0 - beq _021E9136 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021E910C: - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021E9120 - mov r0, #1 - str r0, [r1] -_021E9120: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021E9136: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021E913C: .word 0xFFFFB000 - - thumb_func_start MOD05_021E9140 -MOD05_021E9140: ; 0x021E9140 - push {r4, r5, r6, r7, lr} - sub sp, #0x5c - add r7, r1, #0 - str r0, [sp, #0x10] - ldr r0, [r7] - ldr r4, [r7, #0xc] - cmp r0, #7 - bls _021E9152 - b _021E948A -_021E9152: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E915E: ; jump table - .short _021E916E - _021E915E - 2 ; case 0 - .short _021E9228 - _021E915E - 2 ; case 1 - .short _021E9242 - _021E915E - 2 ; case 2 - .short _021E924E - _021E915E - 2 ; case 3 - .short _021E92B2 - _021E915E - 2 ; case 4 - .short _021E931A - _021E915E - 2 ; case 5 - .short _021E93A6 - _021E915E - 2 ; case 6 - .short _021E9430 - _021E915E - 2 ; case 7 -_021E916E: - mov r1, #0x1e - mov r0, #4 - lsl r1, r1, #4 - bl AllocFromHeap - mov r2, #0x1e - str r0, [r7, #0xc] - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r0, [r7, #0x10] - ldr r4, [r7, #0xc] - ldr r1, [r0, #0x20] - mov r0, #7 - lsl r0, r0, #6 - str r1, [r4, r0] - bl MOD05_021E3768 - str r0, [r4, #0x44] - add r0, r4, #0 - add r0, #0x48 - mov r1, #2 - mov r2, #1 - bl MOD05_021E3E14 - mov r0, #5 - str r0, [sp] - mov r0, #7 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - ldr r0, _021E949C ; =0x000927C0 - mov r1, #0x61 - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x48 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0 - str r0, [sp, #0x14] - add r6, r0, #0 - add r0, r4, #0 - str r0, [sp, #0x1c] - add r0, #0x48 - add r5, r4, #0 - str r0, [sp, #0x1c] -_021E91D4: - mov r0, #0 - str r0, [sp] - mov r1, #0x61 - str r0, [sp, #4] - lsl r1, r1, #2 - mov r2, #2 - mov r3, #6 - ldr r0, [sp, #0x1c] - add r1, r4, r1 - lsl r2, r2, #0x12 - lsl r3, r3, #0x10 - bl MOD05_021E3FC4 - mov r1, #0x6e - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r6, #0 - bl FUN_02020310 - ldr r0, [sp, #0x14] - add r5, r5, #4 - add r0, r0, #1 - add r6, r6, #2 - str r0, [sp, #0x14] - cmp r0, #2 - blt _021E91D4 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E9228: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r7, #4 - bl MOD05_021E3474 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E9242: - ldr r1, [r7, #4] - cmp r1, #0 - beq _021E9310 - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E924E: - mov r0, #0xa - mov r2, #1 - str r0, [sp] - add r0, r4, #0 - mov r1, #0x29 - lsl r2, r2, #0xc - mov r3, #2 - bl MOD05_021E3644 - ldr r1, [r4] - add r0, sp, #0x50 - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - mov r6, #0 - add r5, r4, #0 -_021E9270: - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, sp, #0x50 - bl FUN_02020064 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9270 - add r0, r4, #0 - ldr r2, _021E94A0 ; =0x0000FFFF - add r0, #0x18 - mov r1, #0 - mov r3, #0xa - bl MOD05_021E35B0 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E92B2: - add r0, r4, #0 - bl MOD05_021E36A4 - ldr r1, [r4] - str r0, [sp, #0x18] - add r0, sp, #0x50 - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E35C0 - mov r6, #0 - add r5, r4, #0 -_021E92D2: - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, sp, #0x50 - bl FUN_02020064 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E92D2 - mov r0, #0x6e - ldr r1, [r4, #0x18] - lsl r0, r0, #2 - lsl r1, r1, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - mov r1, #0x6f - lsl r1, r1, #2 - ldr r0, [r4, r1] - ldr r2, [r4, #0x18] - sub r1, #0xbc - sub r1, r2, r1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_02020088 - ldr r0, [sp, #0x18] - cmp r0, #1 - beq _021E9312 -_021E9310: - b _021E948A -_021E9312: - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E931A: - mov r0, #0 - str r0, [sp] - mov r0, #0xff - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #0xa - lsl r0, r0, #0xc - str r0, [sp, #8] - ldr r1, [r4, #0x44] - add r0, r7, #0 - mov r2, #0x60 - mov r3, #6 - bl MOD05_021E37CC - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_02020130 - mov r0, #0x6f - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_02020130 - mov r0, #6 - str r0, [sp] - add r0, r4, #0 - mov r2, #0xff - mov r3, #0xa - add r0, #0x2c - mov r1, #0 - lsl r2, r2, #0xc - lsl r3, r3, #0xc - bl MOD05_021E3644 - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #6 - str r0, [sp] - mov r0, #0x71 - mov r2, #0x7d - lsl r0, r0, #2 - lsl r2, r2, #0xe - ldr r3, _021E94A4 ; =0xFFFF6000 - add r0, r4, r0 - sub r2, r1, r2 - bl MOD05_021E3644 - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_02020088 - mov r0, #0x6f - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_02020088 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E93A6: - add r0, r4, #0 - add r0, #0x2c - bl MOD05_021E36A4 - mov r1, #2 - ldr r2, [r4, #0x2c] - lsl r1, r1, #0x12 - sub r1, r1, r2 - mov r2, #6 - add r0, sp, #0x2c - lsl r2, r2, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x2c - ldmia r3!, {r0, r1} - add r2, sp, #0x44 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r1, #2 - str r0, [r2] - ldr r2, [r4, #0x2c] - lsl r1, r1, #0x12 - add r1, r2, r1 - mov r2, #6 - add r0, sp, #0x20 - lsl r2, r2, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x20 - ldmia r3!, {r0, r1} - add r2, sp, #0x38 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, sp, #0x44 - str r0, [r2] - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02020044 - mov r0, #0x6f - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x71 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x71 - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - add r0, r7, #0 - bl MOD05_021E35AC - cmp r0, #0 - beq _021E948A - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E948A -_021E9430: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r1, [r7, #0x14] - cmp r1, #0 - beq _021E944A - mov r0, #1 - str r0, [r1] -_021E944A: - mov r6, #0 - add r5, r4, #0 -_021E944E: - mov r0, #0x6e - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E944E - mov r1, #0x61 - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x48 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - add r0, #0x48 - bl MOD05_021E3E44 - ldr r0, [r4, #0x44] - bl MOD05_021E37A4 - ldr r1, [r7, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - ldr r0, [sp, #0x10] - bl FUN_0200621C -_021E948A: - ldr r0, [r7] - cmp r0, #7 - beq _021E9496 - ldr r0, [r4, #0x48] - bl FUN_0201FDEC -_021E9496: - add sp, #0x5c - pop {r4, r5, r6, r7, pc} - nop -_021E949C: .word 0x000927C0 -_021E94A0: .word 0x0000FFFF -_021E94A4: .word 0xFFFF6000 - - thumb_func_start MOD05_021E94A8 -MOD05_021E94A8: ; 0x021E94A8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x78 - add r6, r1, #0 - str r0, [sp, #0x10] - ldr r0, [r6] - ldr r4, [r6, #0xc] - cmp r0, #7 - bhi _021E95A2 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E94C4: ; jump table - .short _021E94D4 - _021E94C4 - 2 ; case 0 - .short _021E9582 - _021E94C4 - 2 ; case 1 - .short _021E959C - _021E94C4 - 2 ; case 2 - .short _021E95AA - _021E94C4 - 2 ; case 3 - .short _021E9638 - _021E94C4 - 2 ; case 4 - .short _021E96C8 - _021E94C4 - 2 ; case 5 - .short _021E9702 - _021E94C4 - 2 ; case 6 - .short _021E972C - _021E94C4 - 2 ; case 7 -_021E94D4: - mov r1, #0x71 - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - mov r2, #0x71 - str r0, [r6, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r0, [r6, #0x10] - ldr r4, [r6, #0xc] - ldr r1, [r0, #0x20] - mov r0, #0x69 - lsl r0, r0, #2 - str r1, [r4, r0] - bl MOD05_021E39FC - str r0, [r4, #0x28] - add r0, r4, #0 - add r0, #0x2c - mov r1, #2 - mov r2, #1 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021E9798 ; =0x000927C0 - mov r1, #0x5a - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x2c - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - add r0, r4, #0 - str r0, [sp, #0x14] - add r0, #0x2c - mov r7, #0 - add r5, r4, #0 - str r0, [sp, #0x14] -_021E9536: - mov r0, #0 - str r0, [sp] - mov r1, #0x5a - str r0, [sp, #4] - lsl r1, r1, #2 - mov r2, #2 - ldr r0, [sp, #0x14] - add r1, r4, r1 - lsl r2, r2, #0x12 - mov r3, #0 - bl MOD05_021E3FC4 - mov r1, #0x67 - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #2 - bl FUN_020200EC - add r7, r7, #1 - add r5, r5, #4 - cmp r7, #2 - blt _021E9536 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E9582: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r6, #4 - bl MOD05_021E3474 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E959C: - ldr r1, [r6, #4] - cmp r1, #0 - bne _021E95A4 -_021E95A2: - b _021E9786 -_021E95A4: - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E95AA: - mov r2, #3 - ldr r1, _021E979C ; =0xFFF40000 - add r0, r4, #0 - lsl r2, r2, #0x12 - mov r3, #8 - bl MOD05_021E35EC - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r2, #2 - ldr r1, [r4] - lsl r2, r2, #0x12 - sub r1, r2, r1 - add r0, sp, #0x3c - lsr r2, r2, #1 - mov r3, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x3c - ldmia r3!, {r0, r1} - add r2, sp, #0x6c - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r3, #0 - str r0, [r2] - mov r2, #2 - ldr r1, [r4] - lsl r2, r2, #0x12 - add r0, sp, #0x30 - add r1, r1, r2 - bl MOD05_021E3FF8 - add r3, sp, #0x30 - ldmia r3!, {r0, r1} - add r2, sp, #0x60 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, sp, #0x6c - str r0, [r2] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02020044 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x60 - bl FUN_02020044 - add r0, r4, #0 - ldr r2, _021E97A0 ; =0x0001FFFE - add r0, #0x14 - mov r1, #0 - mov r3, #8 - bl MOD05_021E35B0 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E9638: - add r0, r4, #0 - bl MOD05_021E35FC - mov r2, #2 - add r5, r0, #0 - ldr r1, [r4] - lsl r2, r2, #0x12 - sub r1, r2, r1 - add r0, sp, #0x24 - lsr r2, r2, #1 - mov r3, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x24 - ldmia r3!, {r0, r1} - add r2, sp, #0x54 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r3, #0 - str r0, [r2] - mov r2, #2 - ldr r1, [r4] - lsl r2, r2, #0x12 - add r0, sp, #0x18 - add r1, r1, r2 - bl MOD05_021E3FF8 - add r3, sp, #0x18 - ldmia r3!, {r0, r1} - add r2, sp, #0x48 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, sp, #0x54 - str r0, [r2] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02020044 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x48 - bl FUN_02020044 - add r0, r4, #0 - add r0, #0x14 - bl MOD05_021E35C0 - mov r0, #0x67 - ldr r1, [r4, #0x14] - lsl r0, r0, #2 - lsl r1, r1, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - ldr r1, [r4, #0x14] - mov r0, #0x1a - lsl r0, r0, #4 - neg r1, r1 - lsl r1, r1, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - cmp r5, #1 - bne _021E9786 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E96C8: - mov r3, #1 - lsl r3, r3, #0xc - str r3, [sp] - ldr r1, [r4, #0x28] - add r0, r6, #0 - mov r2, #8 - bl MOD05_021E3A70 - mov r0, #0x69 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #8 - str r0, [sp] - mov r0, #0x6a - mov r2, #0x7d - lsl r0, r0, #2 - lsl r2, r2, #0xe - ldr r3, _021E97A4 ; =0xFFFF6000 - add r0, r4, r0 - sub r2, r1, r2 - bl MOD05_021E3644 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E9702: - mov r0, #0x6a - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x6a - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - add r0, r6, #0 - bl MOD05_021E35AC - cmp r0, #1 - bne _021E9786 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021E9786 -_021E972C: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r1, [r6, #0x14] - cmp r1, #0 - beq _021E9746 - mov r0, #1 - str r0, [r1] -_021E9746: - mov r7, #0 - add r5, r4, #0 -_021E974A: - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - add r7, r7, #1 - add r5, r5, #4 - cmp r7, #2 - blt _021E974A - mov r1, #0x5a - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x2c - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - add r0, #0x2c - bl MOD05_021E3E44 - ldr r0, [r4, #0x28] - bl MOD05_021E3A48 - ldr r1, [r6, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - ldr r0, [sp, #0x10] - bl FUN_0200621C -_021E9786: - ldr r0, [r6] - cmp r0, #7 - beq _021E9792 - ldr r0, [r4, #0x2c] - bl FUN_0201FDEC -_021E9792: - add sp, #0x78 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E9798: .word 0x000927C0 -_021E979C: .word 0xFFF40000 -_021E97A0: .word 0x0001FFFE -_021E97A4: .word 0xFFFF6000 - - thumb_func_start MOD05_021E97A8 -MOD05_021E97A8: ; 0x021E97A8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x58 - add r7, r1, #0 - str r0, [sp, #0x14] - ldr r0, [r7] - ldr r4, [r7, #0xc] - cmp r0, #7 - bls _021E97BA - b _021E9B2A -_021E97BA: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E97C6: ; jump table - .short _021E97D6 - _021E97C6 - 2 ; case 0 - .short _021E9892 - _021E97C6 - 2 ; case 1 - .short _021E98AC - _021E97C6 - 2 ; case 2 - .short _021E98F2 - _021E97C6 - 2 ; case 3 - .short _021E9958 - _021E97C6 - 2 ; case 4 - .short _021E99E4 - _021E97C6 - 2 ; case 5 - .short _021E9A68 - _021E97C6 - 2 ; case 6 - .short _021E9AD0 - _021E97C6 - 2 ; case 7 -_021E97D6: - mov r1, #0x7a - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - mov r2, #0x7a - str r0, [r7, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r0, [r7, #0x10] - ldr r4, [r7, #0xc] - ldr r1, [r0, #0x20] - mov r0, #0x72 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r4, #0 - add r0, #0x40 - mov r1, #4 - bl MOD05_021E8E8C - mov r0, #0x79 - mov r1, #0xc - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r4, #0 - add r0, #0x50 - mov r1, #2 - mov r2, #1 - bl MOD05_021E3E14 - mov r0, #5 - str r0, [sp] - mov r0, #7 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - ldr r0, _021E9B4C ; =0x000927C0 - mov r1, #0x63 - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x50 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - add r0, r4, #0 - str r0, [sp, #0x1c] - add r0, #0x50 - mov r6, #0 - add r5, r4, #0 - str r0, [sp, #0x1c] -_021E9844: - mov r0, #0 - str r0, [sp] - mov r1, #0x63 - str r0, [sp, #4] - lsl r1, r1, #2 - mov r2, #2 - mov r3, #6 - ldr r0, [sp, #0x1c] - add r1, r4, r1 - lsl r2, r2, #0x12 - lsl r3, r3, #0x10 - bl MOD05_021E3FC4 - mov r1, #7 - lsl r1, r1, #6 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - add r1, r6, #0 - bl FUN_02020310 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9844 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E9892: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r7, #4 - bl MOD05_021E3474 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E98AC: - mov r0, #0x79 - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _021E98E4 - mov r0, #3 - lsl r0, r0, #0xe - mov r3, #0x32 - str r0, [sp] - lsl r3, r3, #4 - str r3, [sp, #4] - ldr r0, _021E9B50 ; =0x04000010 - mov r1, #0 - str r0, [sp, #8] - str r1, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - add r0, r4, #0 - add r0, #0x40 - mov r2, #0xbf - sub r3, #0x76 - bl MOD05_021E8EC0 - mov r0, #1 - str r0, [r4, #0x4c] -_021E98E4: - ldr r0, [r7, #4] - cmp r0, #0 - beq _021E99BE - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E98F2: - add r0, r4, #0 - add r0, #0x18 - mov r1, #0 - mov r2, #0x10 - mov r3, #8 - bl MOD05_021E35B0 - ldr r3, [r4, #0x18] - mov r0, #0x10 - sub r0, r0, r3 - str r0, [sp] - ldr r0, _021E9B54 ; =0x04000050 - mov r1, #0 - mov r2, #0xf - bl G2x_SetBlendAlpha_ - mov r6, #0 - add r5, r4, #0 -_021E9916: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_02020398 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9916 - add r0, r4, #0 - ldr r2, _021E9B58 ; =0x0000FFFF - add r0, #0x2c - mov r1, #0 - mov r3, #8 - bl MOD05_021E35B0 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E9958: - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E35C0 - add r6, r0, #0 - ldr r1, [r4, #0x18] - mov r0, #0x10 - sub r0, r0, r1 - lsl r0, r0, #8 - orr r1, r0 - ldr r0, _021E9B5C ; =0x04000052 - strh r1, [r0] - ldr r0, [r4, #0x2c] - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - add r0, #0x2c - bl MOD05_021E35C0 - cmp r0, #0 - bne _021E99A2 - mov r0, #7 - ldr r1, [r4, #0x2c] - lsl r0, r0, #6 - lsl r1, r1, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - mov r0, #0x71 - lsl r0, r0, #2 - lsl r1, r5, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - b _021E99BA -_021E99A2: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_02020088 - mov r0, #0x71 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_02020088 -_021E99BA: - cmp r6, #1 - beq _021E99C0 -_021E99BE: - b _021E9B2A -_021E99C0: - ldr r0, _021E9B54 ; =0x04000050 - mov r6, #0 - strh r6, [r0] - add r5, r4, #0 -_021E99C8: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_02020398 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E99C8 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E99E4: - mov r1, #8 - str r1, [sp] - ldr r3, _021E9B60 ; =0x0000019A - add r0, r4, #0 - lsl r1, r1, #9 - mov r2, #0x29 - bl MOD05_021E3644 - ldr r1, [r4] - add r0, sp, #0x34 - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x34 - add r2, sp, #0x4c - ldmia r3!, {r0, r1} - str r2, [sp, #0x20] - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r6, #0 - str r0, [r2] - add r5, r4, #0 -_021E9A12: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - ldr r1, [sp, #0x20] - bl FUN_02020064 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9A12 - mov r0, #0x72 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #8 - str r0, [sp] - mov r0, #0x73 - mov r2, #0x7d - lsl r0, r0, #2 - lsl r2, r2, #0xe - ldr r3, _021E9B64 ; =0xFFFF6000 - add r0, r4, r0 - sub r2, r1, r2 - bl MOD05_021E3644 - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x18 - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E9A68: - add r0, r4, #0 - bl MOD05_021E36A4 - ldr r1, [r4] - str r0, [sp, #0x18] - add r0, sp, #0x28 - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x28 - add r2, sp, #0x40 - ldmia r3!, {r0, r1} - str r2, [sp, #0x24] - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r6, #0 - str r0, [r2] - add r5, r4, #0 -_021E9A8E: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - ldr r1, [sp, #0x24] - bl FUN_02020064 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9A8E - mov r0, #0x73 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x73 - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - ldr r0, [sp, #0x18] - cmp r0, #1 - bne _021E9B2A - bl FUN_0200E308 - cmp r0, #1 - bne _021E9B2A - ldr r0, [r7] - add r0, r0, #1 - str r0, [r7] - b _021E9B2A -_021E9AD0: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r1, [r7, #0x14] - cmp r1, #0 - beq _021E9AE2 - mov r0, #1 - str r0, [r1] -_021E9AE2: - add r0, r4, #0 - add r0, #0x40 - bl MOD05_021E8EA8 - mov r6, #0 - str r6, [r4, #0x4c] - add r5, r4, #0 -_021E9AF0: - mov r0, #7 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #2 - blt _021E9AF0 - mov r1, #0x63 - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x50 - add r1, r4, r1 - bl MOD05_021E3F3C - add r4, #0x50 - add r0, r4, #0 - bl MOD05_021E3E44 - ldr r1, [r7, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - ldr r0, [sp, #0x14] - bl FUN_0200621C - add sp, #0x58 - pop {r3, r4, r5, r6, r7, pc} -_021E9B2A: - ldr r0, [r4, #0x4c] - cmp r0, #1 - bne _021E9B3A - add r0, r4, #0 - add r0, #0x40 - mov r1, #2 - bl MOD05_021E8EE8 -_021E9B3A: - ldr r0, [r7] - cmp r0, #7 - beq _021E9B46 - ldr r0, [r4, #0x50] - bl FUN_0201FDEC -_021E9B46: - add sp, #0x58 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E9B4C: .word 0x000927C0 -_021E9B50: .word 0x04000010 -_021E9B54: .word 0x04000050 -_021E9B58: .word 0x0000FFFF -_021E9B5C: .word 0x04000052 -_021E9B60: .word 0x0000019A -_021E9B64: .word 0xFFFF6000 - - thumb_func_start MOD05_021E9B68 -MOD05_021E9B68: ; 0x021E9B68 - push {r4, r5, r6, r7, lr} - sub sp, #0x44 - str r0, [sp, #0x18] - add r0, r1, #0 - ldr r0, [r0] - str r1, [sp, #0x1c] - ldr r4, [r1, #0xc] - cmp r0, #7 - bls _021E9B7C - b _021EA01A -_021E9B7C: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E9B88: ; jump table - .short _021E9B98 - _021E9B88 - 2 ; case 0 - .short _021E9CAA - _021E9B88 - 2 ; case 1 - .short _021E9CCA - _021E9B88 - 2 ; case 2 - .short _021E9D24 - _021E9B88 - 2 ; case 3 - .short _021E9DE4 - _021E9B88 - 2 ; case 4 - .short _021E9E82 - _021E9B88 - 2 ; case 5 - .short _021E9F1C - _021E9B88 - 2 ; case 6 - .short _021E9F70 - _021E9B88 - 2 ; case 7 -_021E9B98: - mov r1, #9 - mov r0, #4 - lsl r1, r1, #6 - bl AllocFromHeap - ldr r1, [sp, #0x1c] - mov r2, #9 - str r0, [r1, #0xc] - mov r1, #0 - lsl r2, r2, #6 - bl memset - ldr r0, [sp, #0x1c] - ldr r4, [r0, #0xc] - ldr r0, [r0, #0x10] - ldr r1, [r0, #0x20] - mov r0, #0x22 - lsl r0, r0, #4 - str r1, [r4, r0] - sub r0, #0x10 - add r0, r4, r0 - mov r1, #4 - bl MOD05_021E8E8C - mov r0, #0x8f - mov r1, #0xe - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r4, #0 - mov r1, #3 - mov r2, #1 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021E9F5C ; =0x000927C0 - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [sp, #0xc] - add r0, r4, #0 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r7, #0x4f - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #2 -_021E9C02: - mov r0, #0 - str r0, [sp] - mov r2, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, r4, r7 - add r3, r2, #0 - bl MOD05_021E3FC4 - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #4 - bl MOD05_021E4140 - mov r1, #0x7d - lsl r1, r1, #2 - str r0, [r5, r1] - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #3 - blt _021E9C02 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - mov r0, #4 - mov r1, #1 - bl AllocWindows - mov r1, #0x83 - lsl r1, r1, #2 - str r0, [r4, r1] - mov r3, #0 - str r3, [sp] - mov r0, #0x20 - str r0, [sp, #4] - str r0, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldr r0, [sp, #0x1c] - ldr r1, [r4, r1] - ldr r0, [r0, #0x10] - mov r2, #3 - ldr r0, [r0, #8] - bl AddWindowParameterized - mov r1, #0 - add r0, sp, #0x28 - strh r1, [r0] - mov r0, #3 - add r1, sp, #0x28 - mov r2, #2 - mov r3, #0x1e - bl BG_LoadPlttData - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FillWindowPixelBuffer - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ScheduleWindowCopyToVram - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - b _021EA01A -_021E9CAA: - mov r1, #0x10 - ldr r3, [sp, #0x1c] - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r3, #4 - bl MOD05_021E3474 - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - b _021EA01A -_021E9CCA: - mov r3, #0x8f - lsl r3, r3, #2 - ldr r0, [r4, r3] - sub r0, r0, #1 - str r0, [r4, r3] - ldr r0, [r4, r3] - cmp r0, #0 - bne _021E9D08 - mov r0, #3 - lsl r0, r0, #0xe - str r0, [sp] - add r0, r3, #0 - add r0, #0xe4 - str r0, [sp, #4] - ldr r0, _021E9F60 ; =0x04000010 - mov r1, #0 - str r0, [sp, #8] - str r1, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - add r0, r3, #0 - sub r0, #0x2c - add r0, r4, r0 - mov r2, #0xbf - add r3, #0x6e - bl MOD05_021E8EC0 - mov r0, #0x87 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] -_021E9D08: - ldr r0, [sp, #0x1c] - ldr r0, [r0, #4] - cmp r0, #0 - beq _021E9D34 - mov r0, #0x8f - mov r1, #6 - lsl r0, r0, #2 - str r1, [r4, r0] - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - b _021EA01A -_021E9D24: - mov r0, #0x8f - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - blt _021E9D36 -_021E9D34: - b _021EA01A -_021E9D36: - sub r0, #0x1c - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #0x10 - str r0, [sp] - mov r0, #0x89 - mov r2, #0x7d - lsl r0, r0, #2 - lsl r2, r2, #0xe - ldr r3, _021E9F64 ; =0xFFFF6000 - add r0, r4, r0 - sub r2, r1, r2 - bl MOD05_021E3644 - mov r0, #0x6e - lsl r0, r0, #2 - ldr r2, _021E9F68 ; =0x0000FFFF - add r0, r4, r0 - mov r1, #0 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0x5f - lsl r0, r0, #2 - mov r2, #0x1f - add r0, r4, r0 - mov r1, #0xe7 - mvn r2, r2 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0 - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #0x83 - lsl r0, r0, #2 - ldr r1, [r4, r0] - mov r3, #0x40 - str r1, [sp, #8] - mov r1, #0x56 - str r1, [sp, #0xc] - str r3, [sp, #0x10] - mov r1, #0xf - str r1, [sp, #0x14] - sub r0, #0x18 - mov r1, #0x2b - ldr r0, [r4, r0] - add r2, r1, #0 - add r3, #0xf8 - bl MOD05_021E4160 - mov r1, #0x2b - mov r2, #0xe7 - add r0, sp, #0x38 - lsl r1, r1, #0xc - lsl r2, r2, #0xc - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r1, #1 - lsl r0, r1, #9 - str r1, [r4, r0] - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - mov r0, #0x8f - mov r1, #4 - lsl r0, r0, #2 - str r1, [r4, r0] - b _021EA01A -_021E9DE4: - mov r0, #0x8f - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - bge _021E9E92 - sub r0, #0xac - mov r2, #0x1f - add r0, r4, r0 - mov r1, #0xe7 - mvn r2, r2 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r2, _021E9F6C ; =0xFFFF0001 - add r0, r4, r0 - mov r1, #0 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0 - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #0x83 - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r0, #0x14 - str r1, [sp, #8] - mov r1, #0x56 - str r1, [sp, #0xc] - mov r1, #0x40 - str r1, [sp, #0x10] - mov r1, #0xf - str r1, [sp, #0x14] - mov r1, #0xd7 - add r3, r1, #0 - ldr r0, [r4, r0] - add r2, r1, #0 - add r3, #0x61 - bl MOD05_021E4160 - mov r1, #0xd7 - mov r2, #0xe7 - add r0, sp, #0x38 - lsl r1, r1, #0xc - lsl r2, r2, #0xc - mov r3, #1 - bl MOD05_021E3FF8 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r1, #0x81 - mov r0, #1 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp, #0x1c] - add r1, #0x38 - ldr r0, [r0] - add r2, r0, #1 - ldr r0, [sp, #0x1c] - str r2, [r0] - mov r0, #2 - str r0, [r4, r1] - b _021EA01A -_021E9E82: - mov r0, #0x8f - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - blt _021E9E94 -_021E9E92: - b _021EA01A -_021E9E94: - sub r0, #0x98 - mov r2, #0x1f - add r0, r4, r0 - mov r1, #0xe7 - mvn r2, r2 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0x1e - lsl r0, r0, #4 - ldr r2, _021E9F68 ; =0x0000FFFF - add r0, r4, r0 - mov r1, #0 - mov r3, #6 - bl MOD05_021E35B0 - mov r0, #0 - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #0x83 - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r0, #0x10 - str r1, [sp, #8] - mov r1, #0x56 - str r1, [sp, #0xc] - mov r1, #0x40 - str r1, [sp, #0x10] - mov r1, #0xf - str r1, [sp, #0x14] - mov r1, #0x81 - add r3, r1, #0 - ldr r0, [r4, r0] - add r2, r1, #0 - add r3, #0xb7 - bl MOD05_021E4160 - mov r1, #0x81 - mov r2, #0xe7 - add r0, sp, #0x38 - lsl r1, r1, #0xc - lsl r2, r2, #0xc - mov r3, #2 - bl MOD05_021E3FF8 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x82 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - b _021EA01A -_021E9F1C: - mov r0, #0x89 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x89 - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - mov r1, #2 - lsl r1, r1, #8 - ldr r0, [r4, r1] - cmp r0, #0 - bne _021EA01A - add r0, r1, #4 - ldr r0, [r4, r0] - cmp r0, #0 - bne _021EA01A - add r1, #8 - ldr r0, [r4, r1] - cmp r0, #0 - bne _021EA01A - ldr r0, [sp, #0x1c] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x1c] - str r1, [r0] - b _021EA01A - nop -_021E9F5C: .word 0x000927C0 -_021E9F60: .word 0x04000010 -_021E9F64: .word 0xFFFF6000 -_021E9F68: .word 0x0000FFFF -_021E9F6C: .word 0xFFFF0001 -_021E9F70: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021E9F8C - mov r0, #1 - str r0, [r1] -_021E9F8C: - mov r0, #0x21 - lsl r0, r0, #4 - add r0, r4, r0 - bl MOD05_021E8EA8 - mov r0, #0x87 - lsl r0, r0, #2 - mov r6, #0 - add r7, r0, #0 - str r6, [r4, r0] - add r5, r4, #0 - sub r7, #0x28 -_021E9FA4: - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - ldr r0, [r5, r7] - bl MOD05_021E4158 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #3 - blt _021E9FA4 - mov r1, #0x4f - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - bl MOD05_021E3E44 - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ClearWindowTilemapAndCopyToVram - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl RemoveWindow - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl WindowArray_dtor - mov r0, #3 - mov r1, #0x20 - mov r2, #0 - mov r3, #4 - bl BG_ClearCharDataRange - ldr r0, [sp, #0x1c] - mov r1, #3 - ldr r0, [r0, #0x10] - ldr r0, [r0, #8] - bl BgClearTilemapBufferAndCommit - ldr r1, [sp, #0x1c] - mov r0, #4 - ldr r1, [r1, #0xc] - bl FreeToHeapExplicit - ldr r0, [sp, #0x18] - bl FUN_0200621C - add sp, #0x44 - pop {r4, r5, r6, r7, pc} -_021EA01A: - mov r0, #0x87 - lsl r0, r0, #2 - ldr r1, [r4, r0] - cmp r1, #1 - bne _021EA02E - sub r0, #0xc - add r0, r4, r0 - mov r1, #2 - bl MOD05_021E8EE8 -_021EA02E: - mov r1, #0x5f - mov r0, #0 - lsl r1, r1, #2 - str r0, [sp, #0x20] - add r0, r4, r1 - add r1, #0x3c - add r5, r4, #0 - str r0, [sp, #0x24] - add r7, r4, r1 - add r6, r4, #0 -_021EA042: - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r5, r0] - cmp r0, #1 - bne _021EA0B0 - mov r0, #0x7d - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl MOD05_021E41B8 - cmp r0, #0 - beq _021EA062 - mov r0, #2 - mov r1, #0 - lsl r0, r0, #8 - str r1, [r5, r0] -_021EA062: - ldr r0, [sp, #0x24] - bl MOD05_021E35C0 - add r0, r7, #0 - bl MOD05_021E35C0 - mov r1, #0x6e - lsl r1, r1, #2 - mov r0, #0x17 - ldr r1, [r6, r1] - lsl r0, r0, #4 - lsl r1, r1, #0x10 - ldr r0, [r5, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_0202011C - add r3, r0, #0 - add r2, sp, #0x2c - ldmia r3!, {r0, r1} - mov ip, r2 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r1, ip - str r0, [r2] - mov r0, #0x5f - lsl r0, r0, #2 - ldr r0, [r6, r0] - lsl r0, r0, #0xc - str r0, [sp, #0x30] - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_02020044 -_021EA0B0: - ldr r0, [sp, #0x24] - add r5, r5, #4 - add r0, #0x14 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - add r7, #0x14 - add r0, r0, #1 - add r6, #0x14 - str r0, [sp, #0x20] - cmp r0, #3 - blt _021EA042 - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ScheduleWindowCopyToVram - ldr r0, [sp, #0x1c] - ldr r0, [r0] - cmp r0, #7 - beq _021EA0DE - ldr r0, [r4] - bl FUN_0201FDEC -_021EA0DE: - add sp, #0x44 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EA0E4 -MOD05_021EA0E4: ; 0x021EA0E4 - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5] - ldr r4, [r5, #0xc] - cmp r0, #7 - bhi _021EA1B8 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EA100: ; jump table - .short _021EA110 - _021EA100 - 2 ; case 0 - .short _021EA198 - _021EA100 - 2 ; case 1 - .short _021EA1B2 - _021EA100 - 2 ; case 2 - .short _021EA1C0 - _021EA100 - 2 ; case 3 - .short _021EA236 - _021EA100 - 2 ; case 4 - .short _021EA2C2 - _021EA100 - 2 ; case 5 - .short _021EA310 - _021EA100 - 2 ; case 6 - .short _021EA338 - _021EA100 - 2 ; case 7 -_021EA110: - mov r1, #0x1f - mov r0, #4 - lsl r1, r1, #4 - bl AllocFromHeap - mov r2, #0x1f - str r0, [r5, #0xc] - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r0, [r5, #0x10] - ldr r4, [r5, #0xc] - ldr r1, [r0, #0x20] - mov r0, #0x1d - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r4, #0 - mov r1, #1 - add r0, #0x5c - add r2, r1, #0 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021EA394 ; =0x000927C0 - mov r1, #0x66 - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x5c - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0 - str r0, [sp] - mov r1, #0x66 - str r0, [sp, #4] - add r0, r4, #0 - lsl r1, r1, #2 - mov r2, #2 - ldr r3, _021EA398 ; =0xFFFE0000 - add r0, #0x5c - add r1, r4, r1 - lsl r2, r2, #0x12 - bl MOD05_021E3FC4 - mov r1, #0x73 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA198: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - sub r1, #0x11 - add r2, r1, #0 - add r3, r5, #4 - bl MOD05_021E3474 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA1B2: - ldr r1, [r5, #4] - cmp r1, #0 - bne _021EA1BA -_021EA1B8: - b _021EA382 -_021EA1BA: - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA1C0: - mov r2, #1 - mov r0, #0xc - lsl r2, r2, #0x14 - str r0, [sp] - add r0, r4, #0 - mov r1, #0 - lsr r3, r2, #7 - bl MOD05_021E3644 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0xc - str r0, [sp] - add r0, r4, #0 - mov r2, #2 - ldr r1, _021EA39C ; =0x0000019A - add r0, #0x18 - lsl r2, r2, #0xc - mov r3, #0 - bl MOD05_021E3644 - mov r0, #0xc - str r0, [sp] - add r0, r4, #0 - mov r2, #2 - ldr r1, _021EA39C ; =0x0000019A - add r0, #0x30 - lsl r2, r2, #0xc - mov r3, #0 - bl MOD05_021E3644 - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x30] - add r0, sp, #0x28 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x28 - mov r2, #2 - bl FUN_02020074 - add r0, r4, #0 - ldr r2, _021EA3A0 ; =0x0000FFFF - add r0, #0x48 - mov r1, #0 - mov r3, #0xc - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA236: - add r0, r4, #0 - bl MOD05_021E36A4 - mov r1, #2 - lsl r1, r1, #0x12 - add r6, r0, #0 - ldr r3, [r4] - lsr r2, r1, #2 - sub r2, r3, r2 - add r0, sp, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x10 - add r2, sp, #0x1c - ldmia r3!, {r0, r1} - add r7, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, r7, #0 - str r0, [r2] - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02020044 - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E36A4 - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E36A4 - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x30] - add r0, sp, #0x28 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x28 - bl FUN_02020064 - add r0, r4, #0 - add r0, #0x48 - bl MOD05_021E35C0 - mov r0, #0x73 - ldr r1, [r4, #0x48] - lsl r0, r0, #2 - lsl r1, r1, #0x10 - ldr r0, [r4, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 - cmp r6, #1 - bne _021EA382 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_020200A0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA2C2: - ldr r0, [r5, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #0x1d - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #8 - str r0, [sp] - mov r0, #0x75 - mov r2, #0xfa - lsl r0, r0, #2 - lsl r2, r2, #0xe - mov r3, #0xa - add r0, r4, r0 - sub r2, r1, r2 - lsl r3, r3, #0xc - bl MOD05_021E3644 - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x12 - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA310: - mov r0, #0x75 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x75 - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - bl FUN_0200E308 - cmp r0, #0 - beq _021EA382 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EA382 -_021EA338: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [r5, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r5, #0x14] - cmp r1, #0 - beq _021EA354 - mov r0, #1 - str r0, [r1] -_021EA354: - mov r0, #0x73 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_0201FFC8 - mov r1, #0x66 - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x5c - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - add r0, #0x5c - bl MOD05_021E3E44 - ldr r1, [r5, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C -_021EA382: - ldr r0, [r5] - cmp r0, #7 - beq _021EA38E - ldr r0, [r4, #0x5c] - bl FUN_0201FDEC -_021EA38E: - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_021EA394: .word 0x000927C0 -_021EA398: .word 0xFFFE0000 -_021EA39C: .word 0x0000019A -_021EA3A0: .word 0x0000FFFF - - thumb_func_start MOD05_021EA3A4 -MOD05_021EA3A4: ; 0x021EA3A4 - push {r4, r5, r6, r7, lr} - sub sp, #0x44 - str r0, [sp, #0x14] - add r0, r1, #0 - ldr r0, [r0] - str r1, [sp, #0x18] - ldr r4, [r1, #0xc] - cmp r0, #9 - bls _021EA3B8 - b _021EA7DE -_021EA3B8: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EA3C4: ; jump table - .short _021EA3D8 - _021EA3C4 - 2 ; case 0 - .short _021EA4CE - _021EA3C4 - 2 ; case 1 - .short _021EA4EE - _021EA3C4 - 2 ; case 2 - .short _021EA506 - _021EA3C4 - 2 ; case 3 - .short _021EA582 - _021EA3C4 - 2 ; case 4 - .short _021EA5FE - _021EA3C4 - 2 ; case 5 - .short _021EA674 - _021EA3C4 - 2 ; case 6 - .short _021EA6B4 - _021EA3C4 - 2 ; case 7 - .short _021EA6FA - _021EA3C4 - 2 ; case 8 - .short _021EA748 - _021EA3C4 - 2 ; case 9 -_021EA3D8: - mov r1, #0x8a - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - ldr r1, [sp, #0x18] - mov r2, #0x8a - str r0, [r1, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r0, [sp, #0x18] - mov r2, #1 - ldr r4, [r0, #0xc] - ldr r0, [r0, #0x10] - ldr r1, [r0, #0x20] - mov r0, #0x82 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r4, #0 - mov r1, #3 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021EA738 ; =0x000927C0 - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [sp, #0xc] - add r0, r4, #0 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r7, #0x4f - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #2 -_021EA430: - mov r0, #0 - mov r2, #0 - str r0, [sp] - add r3, r2, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, r4, r7 - sub r3, #0x20 - bl MOD05_021E3FC4 - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #3 - blt _021EA430 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - mov r0, #4 - mov r1, #1 - bl AllocWindows - mov r1, #2 - lsl r1, r1, #8 - str r0, [r4, r1] - mov r3, #0 - str r3, [sp] - mov r0, #0x20 - str r0, [sp, #4] - str r0, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldr r0, [sp, #0x18] - ldr r1, [r4, r1] - ldr r0, [r0, #0x10] - mov r2, #3 - ldr r0, [r0, #8] - bl AddWindowParameterized - mov r1, #0 - add r0, sp, #0x28 - strh r1, [r0] - mov r0, #3 - add r1, sp, #0x28 - mov r2, #2 - mov r3, #0x1e - bl BG_LoadPlttData - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - mov r1, #0 - bl FillWindowPixelBuffer - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - bl ScheduleWindowCopyToVram - mov r0, #4 - bl MOD05_021E4394 - mov r1, #0x81 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE -_021EA4CE: - mov r1, #0x10 - ldr r3, [sp, #0x18] - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r3, #4 - bl MOD05_021E3474 - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE -_021EA4EE: - ldr r1, [sp, #0x18] - ldr r1, [r1, #4] - cmp r1, #0 - beq _021EA516 - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - mov r0, #0x89 - mov r1, #0 - lsl r0, r0, #2 - strh r1, [r4, r0] - b _021EA7DE -_021EA506: - mov r0, #0x89 - lsl r0, r0, #2 - ldrsh r1, [r4, r0] - sub r1, r1, #1 - strh r1, [r4, r0] - ldrsh r1, [r4, r0] - cmp r1, #0 - ble _021EA518 -_021EA516: - b _021EA7DE -_021EA518: - sub r0, #0xa8 - mov r1, #0x1f - add r0, r4, r0 - mvn r1, r1 - mov r2, #0xe0 - mov r3, #5 - bl MOD05_021E35B0 - mov r1, #2 - ldr r2, _021EA73C ; =0xFFFE0000 - add r0, sp, #0x38 - lsl r1, r1, #0x12 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x6e - lsl r0, r0, #2 - ldr r2, _021EA740 ; =0x0000FFFF - add r0, r4, r0 - mov r1, #0 - mov r3, #5 - bl MOD05_021E35B0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r1, #0x7d - mov r3, #1 - lsl r1, r1, #2 - str r3, [r4, r1] - ldr r0, [sp, #0x18] - add r1, #0x30 - ldr r0, [r0] - add r2, r0, #1 - ldr r0, [sp, #0x18] - str r2, [r0] - strh r3, [r4, r1] - b _021EA7DE -_021EA582: - mov r0, #0x89 - lsl r0, r0, #2 - ldrsh r1, [r4, r0] - sub r1, r1, #1 - strh r1, [r4, r0] - ldrsh r1, [r4, r0] - cmp r1, #0 - bgt _021EA68E - sub r0, #0x94 - mov r1, #0x1f - add r0, r4, r0 - mvn r1, r1 - mov r2, #0xe0 - mov r3, #5 - bl MOD05_021E35B0 - mov r1, #0xd - ldr r2, _021EA73C ; =0xFFFE0000 - add r0, sp, #0x38 - lsl r1, r1, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x73 - lsl r0, r0, #2 - ldr r2, _021EA744 ; =0xFFFF0001 - add r0, r4, r0 - mov r1, #0 - mov r3, #5 - bl MOD05_021E35B0 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r1, #0x7e - mov r0, #1 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp, #0x18] - add r1, #0x2c - ldr r0, [r0] - add r2, r0, #1 - ldr r0, [sp, #0x18] - str r2, [r0] - mov r0, #3 - strh r0, [r4, r1] - b _021EA7DE -_021EA5FE: - mov r0, #0x89 - lsl r0, r0, #2 - ldrsh r1, [r4, r0] - sub r1, r1, #1 - strh r1, [r4, r0] - ldrsh r1, [r4, r0] - cmp r1, #0 - bgt _021EA68E - sub r0, #0x80 - mov r1, #0x1f - add r0, r4, r0 - mvn r1, r1 - mov r2, #0xe0 - mov r3, #5 - bl MOD05_021E35B0 - mov r1, #3 - ldr r2, _021EA73C ; =0xFFFE0000 - add r0, sp, #0x38 - lsl r1, r1, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x38 - bl FUN_02020044 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x1e - lsl r0, r0, #4 - ldr r2, _021EA740 ; =0x0000FFFF - add r0, r4, r0 - mov r1, #0 - mov r3, #5 - bl MOD05_021E35B0 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #0x7f - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE -_021EA674: - mov r1, #0x7d - lsl r1, r1, #2 - ldr r0, [r4, r1] - cmp r0, #0 - bne _021EA68E - add r0, r1, #4 - ldr r0, [r4, r0] - cmp r0, #0 - bne _021EA68E - add r1, #8 - ldr r0, [r4, r1] - cmp r0, #0 - beq _021EA690 -_021EA68E: - b _021EA7DE -_021EA690: - mov r7, #0x17 - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #4 -_021EA698: - ldr r0, [r5, r7] - mov r1, #0 - bl FUN_020200A0 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #3 - blt _021EA698 - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE -_021EA6B4: - mov r0, #0xf - mov r1, #1 - str r0, [sp] - mov r0, #0x81 - lsl r0, r0, #2 - lsl r3, r1, #9 - ldr r0, [r4, r0] - ldr r3, [r4, r3] - add r2, r1, #0 - bl MOD05_021E43E4 - mov r0, #0x82 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #0x40 - str r0, [sp] - mov r0, #0x83 - mov r2, #0xfa - lsl r0, r0, #2 - lsl r2, r2, #0xe - mov r3, #0xa - add r0, r4, r0 - sub r2, r1, r2 - lsl r3, r3, #0xc - bl MOD05_021E3644 - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE -_021EA6FA: - mov r0, #0x81 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD05_021E4424 - add r5, r0, #0 - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - bl ScheduleWindowCopyToVram - mov r0, #0x83 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E36A4 - mov r1, #0x83 - lsl r1, r1, #2 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - cmp r5, #1 - bne _021EA7DE - ldr r0, [sp, #0x18] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x18] - str r1, [r0] - b _021EA7DE - .balign 4, 0 -_021EA738: .word 0x000927C0 -_021EA73C: .word 0xFFFE0000 -_021EA740: .word 0x0000FFFF -_021EA744: .word 0xFFFF0001 -_021EA748: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [sp, #0x18] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021EA764 - mov r0, #1 - str r0, [r1] -_021EA764: - mov r7, #0x17 - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #4 -_021EA76C: - ldr r0, [r5, r7] - bl FUN_0201FFC8 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #3 - blt _021EA76C - mov r1, #0x4f - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - bl MOD05_021E3E44 - mov r0, #0x81 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD05_021E43C4 - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - bl ClearWindowTilemapAndCopyToVram - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - bl RemoveWindow - mov r0, #2 - lsl r0, r0, #8 - ldr r0, [r4, r0] - mov r1, #1 - bl WindowArray_dtor - mov r0, #3 - mov r1, #0x20 - mov r2, #0 - mov r3, #4 - bl BG_ClearCharDataRange - ldr r0, [sp, #0x18] - mov r1, #3 - ldr r0, [r0, #0x10] - ldr r0, [r0, #8] - bl BgClearTilemapBufferAndCommit - ldr r1, [sp, #0x18] - mov r0, #4 - ldr r1, [r1, #0xc] - bl FreeToHeapExplicit - ldr r0, [sp, #0x14] - bl FUN_0200621C -_021EA7DE: - mov r1, #0x5f - mov r0, #0 - lsl r1, r1, #2 - str r0, [sp, #0x1c] - add r0, r4, r1 - add r1, #0x3c - add r5, r4, #0 - str r0, [sp, #0x20] - add r7, r4, r1 - add r6, r4, #0 -_021EA7F2: - mov r0, #0x7d - lsl r0, r0, #2 - ldr r0, [r5, r0] - cmp r0, #1 - bne _021EA85A - ldr r0, [sp, #0x20] - bl MOD05_021E35C0 - str r0, [sp, #0x24] - add r0, r7, #0 - bl MOD05_021E35C0 - ldr r0, [sp, #0x24] - cmp r0, #0 - beq _021EA818 - mov r0, #0x7d - mov r1, #0 - lsl r0, r0, #2 - str r1, [r5, r0] -_021EA818: - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_0202011C - add r3, r0, #0 - add r2, sp, #0x2c - ldmia r3!, {r0, r1} - mov ip, r2 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r1, ip - str r0, [r2] - mov r0, #0x5f - lsl r0, r0, #2 - ldr r0, [r6, r0] - lsl r0, r0, #0xc - str r0, [sp, #0x30] - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_02020044 - mov r1, #0x6e - lsl r1, r1, #2 - mov r0, #0x17 - ldr r1, [r6, r1] - lsl r0, r0, #4 - lsl r1, r1, #0x10 - ldr r0, [r5, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 -_021EA85A: - ldr r0, [sp, #0x20] - add r5, r5, #4 - add r0, #0x14 - str r0, [sp, #0x20] - ldr r0, [sp, #0x1c] - add r7, #0x14 - add r0, r0, #1 - add r6, #0x14 - str r0, [sp, #0x1c] - cmp r0, #3 - blt _021EA7F2 - ldr r0, [sp, #0x18] - ldr r0, [r0] - cmp r0, #9 - beq _021EA87E - ldr r0, [r4] - bl FUN_0201FDEC -_021EA87E: - add sp, #0x44 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EA884 -MOD05_021EA884: ; 0x021EA884 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #7 - bls _021EA896 - b _021EAAC6 -_021EA896: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EA8A2: ; jump table - .short _021EA8B2 - _021EA8A2 - 2 ; case 0 - .short _021EA93E - _021EA8A2 - 2 ; case 1 - .short _021EA958 - _021EA8A2 - 2 ; case 2 - .short _021EA964 - _021EA8A2 - 2 ; case 3 - .short _021EA996 - _021EA8A2 - 2 ; case 4 - .short _021EA9C8 - _021EA8A2 - 2 ; case 5 - .short _021EAA38 - _021EA8A2 - 2 ; case 6 - .short _021EAA7C - _021EA8A2 - 2 ; case 7 -_021EA8B2: - mov r1, #0x69 - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - mov r2, #0x69 - str r0, [r4, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r5, [r4, #0xc] - mov r1, #1 - add r0, r5, #0 - add r0, #0x2c - add r2, r1, #0 - bl MOD05_021E3E14 - mov r0, #5 - str r0, [sp] - mov r0, #7 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - ldr r0, _021EAAD8 ; =0x000927C0 - mov r1, #0x5a - str r0, [sp, #0xc] - add r0, r5, #0 - lsl r1, r1, #2 - add r0, #0x2c - add r1, r5, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0 - str r0, [sp] - mov r1, #0x5a - str r0, [sp, #4] - add r0, r5, #0 - lsl r1, r1, #2 - mov r2, #2 - mov r3, #6 - add r0, #0x2c - add r1, r5, r1 - lsl r2, r2, #0x12 - lsl r3, r3, #0x10 - bl MOD05_021E3FC4 - mov r1, #0x67 - lsl r1, r1, #2 - str r0, [r5, r1] - ldr r0, [r5, r1] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_02020398 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EA93E: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EA958: - ldr r1, [r4, #4] - cmp r1, #0 - beq _021EA9AE - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EA964: - add r0, r5, #0 - mov r1, #0 - mov r2, #0x10 - mov r3, #0xc - bl MOD05_021E35B0 - ldr r3, [r5] - mov r0, #0x10 - sub r0, r0, r3 - str r0, [sp] - ldr r0, _021EAADC ; =0x04000050 - mov r1, #0 - mov r2, #0xf - bl G2x_SetBlendAlpha_ - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_020200A0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EA996: - add r0, r5, #0 - bl MOD05_021E35C0 - ldr r2, [r5] - mov r1, #0x10 - sub r1, r1, r2 - lsl r1, r1, #8 - orr r1, r2 - ldr r2, _021EAAE0 ; =0x04000052 - cmp r0, #1 - strh r1, [r2] - beq _021EA9B0 -_021EA9AE: - b _021EAAC6 -_021EA9B0: - mov r1, #0 - sub r0, r2, #2 - strh r1, [r0] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02020398 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EA9C8: - mov r0, #6 - str r0, [sp] - add r0, r5, #0 - mov r1, #1 - ldr r2, _021EAAE4 ; =0x0000019A - add r0, #0x14 - lsl r1, r1, #0xc - mov r3, #1 - bl MOD05_021E3644 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #2 - bl FUN_020200EC - ldr r1, [r5, #0x14] - add r0, sp, #0x1c - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - add r6, sp, #0x1c - add r3, sp, #0x34 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r2, #0 - str r0, [r3] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02020064 - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x10 - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EAA38: - add r0, r5, #0 - add r0, #0x14 - bl MOD05_021E36A4 - ldr r1, [r5, #0x14] - add r6, r0, #0 - add r0, sp, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl MOD05_021E3FF8 - add r3, sp, #0x10 - add r2, sp, #0x28 - ldmia r3!, {r0, r1} - add r7, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, r7, #0 - str r0, [r2] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02020064 - cmp r6, #1 - bne _021EAAC6 - bl FUN_0200E308 - cmp r0, #1 - bne _021EAAC6 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021EAAC6 -_021EAA7C: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021EAA98 - mov r0, #1 - str r0, [r1] -_021EAA98: - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - mov r1, #0x5a - add r0, r5, #0 - lsl r1, r1, #2 - add r0, #0x2c - add r1, r5, r1 - bl MOD05_021E3F3C - add r0, r5, #0 - add r0, #0x2c - bl MOD05_021E3E44 - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C -_021EAAC6: - ldr r0, [r4] - cmp r0, #7 - beq _021EAAD2 - ldr r0, [r5, #0x2c] - bl FUN_0201FDEC -_021EAAD2: - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021EAAD8: .word 0x000927C0 -_021EAADC: .word 0x04000050 -_021EAAE0: .word 0x04000052 -_021EAAE4: .word 0x0000019A - - thumb_func_start MOD05_021EAAE8 -MOD05_021EAAE8: ; 0x021EAAE8 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r6, r1, #0 - str r0, [sp, #0x10] - ldr r0, [r6] - ldr r4, [r6, #0xc] - cmp r0, #7 - bhi _021EABBC - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EAB04: ; jump table - .short _021EAB14 - _021EAB04 - 2 ; case 0 - .short _021EAB9C - _021EAB04 - 2 ; case 1 - .short _021EABB6 - _021EAB04 - 2 ; case 2 - .short _021EABC4 - _021EAB04 - 2 ; case 3 - .short _021EAC0E - _021EAB04 - 2 ; case 4 - .short _021EACC0 - _021EAB04 - 2 ; case 5 - .short _021EACEA - _021EAB04 - 2 ; case 6 - .short _021EACFA - _021EAB04 - 2 ; case 7 -_021EAB14: - mov r1, #0x1b - mov r0, #4 - lsl r1, r1, #4 - bl AllocFromHeap - mov r2, #0x1b - str r0, [r6, #0xc] - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r4, [r6, #0xc] - mov r1, #4 - add r0, r4, #0 - mov r2, #1 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021EAD5C ; =0x000927C0 - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [sp, #0xc] - add r0, r4, #0 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r7, #0 - add r5, r4, #0 -_021EAB5A: - mov r0, #0 - mov r1, #0x4f - str r0, [sp] - lsl r1, r1, #2 - mov r2, #2 - mov r3, #6 - str r0, [sp, #4] - add r0, r4, #0 - add r1, r4, r1 - lsl r2, r2, #0x12 - lsl r3, r3, #0x10 - bl MOD05_021E3FC4 - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - add r7, r7, #1 - add r5, r5, #4 - cmp r7, #4 - blt _021EAB5A - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EAB9C: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r6, #4 - bl MOD05_021E3474 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EABB6: - ldr r1, [r6, #4] - cmp r1, #0 - bne _021EABBE -_021EABBC: - b _021EAD4C -_021EABBE: - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EABC4: - mov r3, #6 - mov r2, #4 - lsl r3, r3, #6 - str r2, [sp] - add r0, r4, r3 - mov r1, #0 - lsl r2, r2, #0x11 - add r3, #0x1a - bl MOD05_021E3644 - mov r3, #0x66 - mov r0, #4 - mov r2, #0xa - lsl r3, r3, #2 - str r0, [sp] - add r0, r4, r3 - mov r1, #0 - lsl r2, r2, #0x10 - add r3, r3, #2 - bl MOD05_021E3644 - mov r7, #0 - add r5, r4, #0 -_021EABF2: - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #1 - bl FUN_020200A0 - add r7, r7, #1 - add r5, r5, #4 - cmp r7, #4 - blt _021EABF2 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EAC0E: - mov r0, #6 - lsl r0, r0, #6 - mov r7, #0 - add r5, r4, r0 -_021EAC16: - add r0, r5, #0 - bl MOD05_021E36A4 - add r7, r7, #1 - add r5, #0x18 - str r0, [sp, #0x14] - cmp r7, #2 - blt _021EAC16 - mov r2, #6 - lsl r2, r2, #6 - ldr r3, [r4, r2] - mov r1, #2 - lsl r2, r2, #0xa - sub r2, r2, r3 - add r0, sp, #0x18 - lsl r1, r1, #0x12 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020044 - mov r2, #6 - lsl r2, r2, #6 - ldr r3, [r4, r2] - mov r1, #2 - lsl r2, r2, #0xa - add r2, r3, r2 - add r0, sp, #0x18 - lsl r1, r1, #0x12 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020044 - mov r1, #0x66 - lsl r1, r1, #2 - ldr r2, [r4, r1] - mov r1, #2 - lsl r1, r1, #0x12 - sub r1, r1, r2 - mov r2, #6 - add r0, sp, #0x18 - lsl r2, r2, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020044 - mov r1, #0x66 - lsl r1, r1, #2 - ldr r2, [r4, r1] - mov r1, #2 - lsl r1, r1, #0x12 - add r1, r2, r1 - mov r2, #6 - add r0, sp, #0x18 - lsl r2, r2, #0x10 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x5f - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020044 - ldr r0, [sp, #0x14] - cmp r0, #1 - bne _021EAD4C - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EACC0: - ldr r0, [r6, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x22 - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EACEA: - bl FUN_0200E308 - cmp r0, #1 - bne _021EAD4C - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _021EAD4C -_021EACFA: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [r6, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r1, [r6, #0x14] - cmp r1, #0 - beq _021EAD16 - mov r0, #1 - str r0, [r1] -_021EAD16: - mov r7, #0 - add r5, r4, #0 -_021EAD1A: - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_0201FFC8 - add r7, r7, #1 - add r5, r5, #4 - cmp r7, #4 - blt _021EAD1A - mov r1, #0x4f - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - bl MOD05_021E3E44 - ldr r1, [r6, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - ldr r0, [sp, #0x10] - bl FUN_0200621C -_021EAD4C: - ldr r0, [r6] - cmp r0, #7 - beq _021EAD58 - ldr r0, [r4] - bl FUN_0201FDEC -_021EAD58: - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021EAD5C: .word 0x000927C0 - - thumb_func_start MOD05_021EAD60 -MOD05_021EAD60: ; 0x021EAD60 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x48 - str r0, [sp, #0x10] - add r0, r1, #0 - ldr r0, [r0] - str r1, [sp, #0x14] - ldr r4, [r1, #0xc] - cmp r0, #7 - bhi _021EAE6E - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EAD7E: ; jump table - .short _021EAD8E - _021EAD7E - 2 ; case 0 - .short _021EAE1A - _021EAD7E - 2 ; case 1 - .short _021EAE3A - _021EAD7E - 2 ; case 2 - .short _021EAE5E - _021EAD7E - 2 ; case 3 - .short _021EAF9C - _021EAD7E - 2 ; case 4 - .short _021EAFAE - _021EAD7E - 2 ; case 5 - .short _021EAFDE - _021EAD7E - 2 ; case 6 - .short _021EAFF2 - _021EAD7E - 2 ; case 7 -_021EAD8E: - mov r1, #0x3d - mov r0, #4 - lsl r1, r1, #4 - bl AllocFromHeap - ldr r1, [sp, #0x14] - mov r2, #0x3d - str r0, [r1, #0xc] - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r0, [sp, #0x14] - mov r1, #6 - ldr r4, [r0, #0xc] - mov r2, #1 - add r0, r4, #0 - bl MOD05_021E3E14 - mov r0, #2 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - ldr r0, _021EB138 ; =0x000927C0 - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [sp, #0xc] - add r0, r4, #0 - add r1, r4, r1 - mov r2, #0 - mov r3, #1 - bl MOD05_021E3E64 - mov r7, #0x4f - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #2 -_021EADDC: - mov r0, #0 - str r0, [sp] - mov r2, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, r4, r7 - add r3, r2, #0 - bl MOD05_021E3FC4 - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #0 - bl FUN_020200A0 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #6 - blt _021EADDC - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [sp, #0x14] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAE1A: - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r0, #0 - ldr r3, [sp, #0x14] - sub r1, #0x11 - add r2, r1, #0 - add r3, r3, #4 - bl MOD05_021E3474 - ldr r0, [sp, #0x14] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAE3A: - ldr r1, [sp, #0x14] - ldr r1, [r1, #4] - cmp r1, #0 - beq _021EAE6E - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - mov r0, #0xf2 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] - ldr r1, [r4, r0] - add r0, r0, #4 - lsl r2, r1, #5 - ldr r1, _021EB13C ; =UNK05_021F7A50 - ldr r1, [r1, r2] - str r1, [r4, r0] - b _021EB04A -_021EAE5E: - mov r0, #0xf3 - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - blt _021EAE70 -_021EAE6E: - b _021EB04A -_021EAE70: - sub r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #8 - str r1, [sp] - mov r1, #0x86 - lsl r1, r1, #2 - add r2, r4, r1 - mov r1, #0x18 - mul r1, r0 - lsl r3, r0, #5 - add r0, r2, r1 - ldr r1, _021EB140 ; =UNK05_021F7A38 - ldr r2, _021EB144 ; =UNK05_021F7A3C - ldr r5, _021EB148 ; =UNK05_021F7A40 - ldr r1, [r1, r3] - ldr r2, [r2, r3] - ldr r3, [r5, r3] - bl MOD05_021E3644 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #8 - str r1, [sp] - mov r1, #0xaa - lsl r1, r1, #2 - add r2, r4, r1 - mov r1, #0x18 - mul r1, r0 - lsl r3, r0, #5 - add r0, r2, r1 - ldr r1, _021EB14C ; =UNK05_021F7A44 - ldr r2, _021EB150 ; =UNK05_021F7A48 - ldr r5, _021EB154 ; =UNK05_021F7A4C - ldr r1, [r1, r3] - ldr r2, [r2, r3] - ldr r3, [r5, r3] - bl MOD05_021E3644 - mov r0, #0x62 - lsl r0, r0, #2 - mov r1, #8 - add r3, r4, r0 - mov r0, #0xf2 - str r1, [sp] - lsl r0, r0, #2 - ldr r2, [r4, r0] - mov r0, #0x18 - mul r0, r2 - add r0, r3, r0 - ldr r3, _021EB158 ; =0xFFFFF99A - lsl r1, r1, #0xa - mov r2, #0x29 - bl MOD05_021E3644 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r2, [r4, r0] - sub r0, #0x90 - add r1, r4, r0 - mov r0, #0x14 - mul r0, r2 - lsl r3, r2, #5 - ldr r2, _021EB15C ; =UNK05_021F7A54 - add r0, r1, r0 - ldr r2, [r2, r3] - mov r1, #0 - mov r3, #8 - bl MOD05_021E35B0 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - lsl r0, r0, #2 - add r1, r4, r0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - ldr r1, _021EB140 ; =UNK05_021F7A38 - lsl r3, r0, #5 - ldr r2, _021EB14C ; =UNK05_021F7A44 - ldr r1, [r1, r3] - ldr r2, [r2, r3] - add r0, sp, #0x3c - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - lsl r0, r0, #2 - add r1, r4, r0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, sp, #0x3c - bl FUN_02020044 - mov r1, #2 - lsl r1, r1, #0xc - add r0, sp, #0x30 - add r2, r1, #0 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0xf2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r2, #2 - lsl r0, r0, #2 - add r1, r4, r0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, sp, #0x30 - bl FUN_02020074 - mov r1, #0xf2 - lsl r1, r1, #2 - ldr r0, [r4, r1] - mov r3, #1 - lsl r0, r0, #2 - add r2, r4, r0 - add r0, r1, #0 - sub r0, #0x18 - str r3, [r2, r0] - ldr r0, [r4, r1] - add r0, r0, #1 - str r0, [r4, r1] - ldr r0, [r4, r1] - cmp r0, #6 - blt _021EAF90 - ldr r0, [sp, #0x14] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAF90: - lsl r2, r0, #5 - ldr r0, _021EB13C ; =UNK05_021F7A50 - ldr r2, [r0, r2] - add r0, r1, #4 - str r2, [r4, r0] - b _021EB04A -_021EAF9C: - mov r1, #0xf1 - lsl r1, r1, #2 - ldr r1, [r4, r1] - cmp r1, #0 - bne _021EB04A - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAFAE: - ldr r0, [sp, #0x14] - ldr r0, [r0, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F4608 - mov r0, #0xc - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r2, #0 - str r0, [sp, #8] - mov r0, #3 - mov r1, #0x22 - add r3, r2, #0 - bl FUN_0200E1D0 - ldr r0, [sp, #0x14] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAFDE: - bl FUN_0200E308 - cmp r0, #0 - beq _021EB04A - ldr r0, [sp, #0x14] - ldr r0, [r0] - add r1, r0, #1 - ldr r0, [sp, #0x14] - str r1, [r0] - b _021EB04A -_021EAFF2: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [sp, #0x14] - ldr r0, [r0, #0x10] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl MOD05_021F45E8 - ldr r0, [sp, #0x14] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021EB012 - mov r0, #1 - str r0, [r1] -_021EB012: - mov r7, #0x17 - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #4 -_021EB01A: - ldr r0, [r5, r7] - bl FUN_0201FFC8 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #6 - blt _021EB01A - mov r1, #0x4f - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - bl MOD05_021E3E44 - ldr r1, [sp, #0x14] - mov r0, #4 - ldr r1, [r1, #0xc] - bl FreeToHeapExplicit - ldr r0, [sp, #0x10] - bl FUN_0200621C -_021EB04A: - mov r1, #0x86 - mov r0, #0 - lsl r1, r1, #2 - str r0, [sp, #0x18] - add r0, r4, r1 - str r0, [sp, #0x28] - add r0, r1, #0 - add r0, #0x90 - add r0, r4, r0 - sub r1, #0x90 - str r0, [sp, #0x24] - add r0, r4, r1 - str r0, [sp, #0x20] - mov r0, #0xce - lsl r0, r0, #2 - add r0, r4, r0 - add r5, r4, #0 - str r0, [sp, #0x1c] - add r6, r4, #0 - add r7, r4, #0 -_021EB072: - mov r0, #0x3b - lsl r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #1 - bne _021EB0FE - ldr r0, [sp, #0x28] - bl MOD05_021E36A4 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x24] - bl MOD05_021E36A4 - ldr r0, [sp, #0x20] - bl MOD05_021E36A4 - ldr r0, [sp, #0x1c] - bl MOD05_021E35C0 - ldr r0, [sp, #0x2c] - cmp r0, #0 - beq _021EB0AE - mov r0, #0x3b - mov r1, #0 - lsl r0, r0, #4 - str r1, [r5, r0] - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_020200A0 -_021EB0AE: - mov r1, #0x86 - mov r2, #0xaa - lsl r1, r1, #2 - lsl r2, r2, #2 - ldr r1, [r6, r1] - ldr r2, [r6, r2] - add r0, sp, #0x3c - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, sp, #0x3c - bl FUN_02020044 - mov r0, #0x62 - lsl r0, r0, #2 - ldr r1, [r6, r0] - add r0, sp, #0x30 - add r2, r1, #0 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, sp, #0x30 - bl FUN_02020064 - mov r1, #0xce - lsl r1, r1, #2 - mov r0, #0x17 - ldr r1, [r7, r1] - lsl r0, r0, #4 - lsl r1, r1, #0x10 - ldr r0, [r5, r0] - lsr r1, r1, #0x10 - bl FUN_02020088 -_021EB0FE: - ldr r0, [sp, #0x28] - add r5, r5, #4 - add r0, #0x18 - str r0, [sp, #0x28] - ldr r0, [sp, #0x24] - add r6, #0x18 - add r0, #0x18 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - add r7, #0x14 - add r0, #0x18 - str r0, [sp, #0x20] - ldr r0, [sp, #0x1c] - add r0, #0x14 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x18] - add r0, r0, #1 - str r0, [sp, #0x18] - cmp r0, #6 - blt _021EB072 - ldr r0, [sp, #0x14] - ldr r0, [r0] - cmp r0, #7 - beq _021EB134 - ldr r0, [r4] - bl FUN_0201FDEC -_021EB134: - add sp, #0x48 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EB138: .word 0x000927C0 -_021EB13C: .word UNK05_021F7A50 -_021EB140: .word UNK05_021F7A38 -_021EB144: .word UNK05_021F7A3C -_021EB148: .word UNK05_021F7A40 -_021EB14C: .word UNK05_021F7A44 -_021EB150: .word UNK05_021F7A48 -_021EB154: .word UNK05_021F7A4C -_021EB158: .word 0xFFFFF99A -_021EB15C: .word UNK05_021F7A54 - - thumb_func_start MOD05_021EB160 -MOD05_021EB160: ; 0x021EB160 - push {r4, r5, r6, lr} - sub sp, #0x18 - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5] - ldr r4, [r5, #0xc] - cmp r0, #7 - bls _021EB172 - b _021EB3F2 -_021EB172: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EB17E: ; jump table - .short _021EB18E - _021EB17E - 2 ; case 0 - .short _021EB272 - _021EB17E - 2 ; case 1 - .short _021EB28C - _021EB17E - 2 ; case 2 - .short _021EB29A - _021EB17E - 2 ; case 3 - .short _021EB2D4 - _021EB17E - 2 ; case 4 - .short _021EB312 - _021EB17E - 2 ; case 5 - .short _021EB344 - _021EB17E - 2 ; case 6 - .short _021EB374 - _021EB17E - 2 ; case 7 -_021EB18E: - mov r1, #0x6f - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - mov r2, #0x6f - str r0, [r5, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r4, [r5, #0xc] - mov r1, #1 - add r0, r4, #0 - add r0, #8 - add r2, r1, #0 - bl MOD05_021E3E14 - mov r0, #8 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #9 - str r0, [sp, #8] - ldr r0, _021EB404 ; =0x000927C0 - mov r1, #0x51 - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - mov r2, #1 - add r0, #8 - add r1, r4, r1 - add r3, r2, #0 - bl MOD05_021E3E64 - mov r0, #0 - str r0, [sp] - mov r1, #0x51 - str r0, [sp, #4] - add r0, r4, #0 - lsl r1, r1, #2 - mov r2, #2 - mov r3, #6 - add r0, #8 - add r1, r4, r1 - lsl r2, r2, #0x12 - lsl r3, r3, #0x10 - bl MOD05_021E3FC4 - mov r1, #0x5e - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_02020398 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_02020238 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - mov r0, #4 - bl MOD05_021E4688 - str r0, [r4, #4] - mov r0, #4 - mov r1, #1 - bl AllocWindows - str r0, [r4] - mov r3, #0 - str r3, [sp] - mov r0, #0x20 - str r0, [sp, #4] - str r0, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldr r0, [r5, #0x10] - ldr r1, [r4] - ldr r0, [r0, #8] - mov r2, #3 - bl AddWindowParameterized - mov r1, #0 - add r0, sp, #0x14 - strh r1, [r0] - mov r0, #3 - add r1, sp, #0x14 - mov r2, #2 - mov r3, #0x1e - bl BG_LoadPlttData - ldr r0, [r4] - mov r1, #0 - bl FillWindowPixelBuffer - ldr r0, [r4] - bl ScheduleWindowCopyToVram - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EB3F2 -_021EB272: - mov r1, #0x10 - mov r0, #2 - add r2, r1, #0 - str r0, [sp] - mov r0, #1 - sub r2, #0x20 - add r3, r5, #4 - bl MOD05_021E3474 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EB3F2 -_021EB28C: - ldr r1, [r5, #4] - cmp r1, #0 - bne _021EB294 - b _021EB3F2 -_021EB294: - add r0, r0, #1 - str r0, [r5] - b _021EB3F2 -_021EB29A: - mov r0, #0x19 - lsl r0, r0, #4 - add r0, r4, r0 - mov r1, #0 - mov r2, #0x10 - mov r3, #0xf - bl MOD05_021E35B0 - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x19 - lsl r0, r0, #4 - ldr r3, [r4, r0] - mov r0, #0x10 - sub r0, r0, r3 - str r0, [sp] - ldr r0, _021EB408 ; =0x04000050 - mov r1, #0 - mov r2, #0xf - bl G2x_SetBlendAlpha_ - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EB3F2 -_021EB2D4: - mov r0, #0x19 - lsl r0, r0, #4 - add r0, r4, r0 - bl MOD05_021E35C0 - mov r2, #0x19 - lsl r2, r2, #4 - ldr r1, [r4, r2] - mov r3, #0x10 - sub r3, r3, r1 - lsl r3, r3, #8 - orr r1, r3 - ldr r3, _021EB40C ; =0x04000052 - cmp r0, #1 - strh r1, [r3] - bne _021EB3F2 - mov r1, #0 - sub r0, r3, #2 - sub r2, #0x18 - strh r1, [r0] - ldr r0, [r4, r2] - bl FUN_02020398 - ldr r0, [r5] - mov r1, #0x10 - add r0, r0, #1 - str r0, [r5] - mov r0, #0x6e - lsl r0, r0, #2 - str r1, [r4, r0] - b _021EB3F2 -_021EB312: - mov r0, #0x6e - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - bgt _021EB3F2 - sub r0, #0x3c - add r0, r4, r0 - mov r1, #0 - mov r2, #0xe - mov r3, #0x10 - bl MOD05_021E35B0 - ldr r0, [r4, #4] - ldr r2, [r4] - mov r1, #0x10 - mov r3, #0xf - bl MOD05_021E46D4 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EB3F2 -_021EB344: - mov r0, #0x5f - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD05_021E35C0 - mov r0, #0x5f - lsl r0, r0, #2 - ldr r1, [r4, r0] - lsl r0, r1, #4 - orr r1, r0 - ldr r0, _021EB410 ; =0x0400004D - strb r1, [r0] - ldr r0, [r4, #4] - bl MOD05_021E4754 - cmp r0, #0 - beq _021EB36C - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] -_021EB36C: - ldr r0, [r4] - bl ScheduleWindowCopyToVram - b _021EB3F2 -_021EB374: - mov r0, #0 - add r1, r0, #0 - bl FUN_0200E3A0 - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - ldr r0, [r4, #4] - bl MOD05_021E46B4 - ldr r1, [r5, #0x14] - cmp r1, #0 - beq _021EB394 - mov r0, #1 - str r0, [r1] -_021EB394: - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_0201FFC8 - mov r1, #0x51 - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #8 - add r1, r4, r1 - bl MOD05_021E3F3C - add r0, r4, #0 - add r0, #8 - bl MOD05_021E3E44 - ldr r0, [r4] - bl ClearWindowTilemapAndCopyToVram - ldr r0, [r4] - bl RemoveWindow - ldr r0, [r4] - mov r1, #1 - bl WindowArray_dtor - mov r0, #3 - mov r1, #0x20 - mov r2, #0 - mov r3, #4 - bl BG_ClearCharDataRange - ldr r0, [r5, #0x10] - mov r1, #3 - ldr r0, [r0, #8] - bl BgClearTilemapBufferAndCommit - ldr r0, _021EB410 ; =0x0400004D - mov r1, #0 - strb r1, [r0] - ldr r1, [r5, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C -_021EB3F2: - ldr r0, [r5] - cmp r0, #7 - beq _021EB3FE - ldr r0, [r4, #8] - bl FUN_0201FDEC -_021EB3FE: - add sp, #0x18 - pop {r4, r5, r6, pc} - nop -_021EB404: .word 0x000927C0 -_021EB408: .word 0x04000050 -_021EB40C: .word 0x04000052 -_021EB410: .word 0x0400004D - - thumb_func_start MOD05_021EB414 -MOD05_021EB414: ; 0x021EB414 - push {r3, r4, r5, lr} - sub sp, #8 - add r4, r1, #0 - add r5, r0, #0 - ldrh r0, [r4, #8] - ldr r1, [r5, #0x20] - bl Camera_SetPerspectiveAngle - ldr r0, [r4] - ldr r1, [r5, #0x20] - bl Camera_SetDistance - ldrh r1, [r4, #4] - add r0, sp, #0 - strh r1, [r0] - ldrh r1, [r4, #6] - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #4] - ldr r1, [r5, #0x20] - add r0, sp, #0 - bl Camera_SetAngle - add sp, #8 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EB448 -MOD05_021EB448: ; 0x021EB448 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #7 - bls _021EB45A - b _021EB5A0 -_021EB45A: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EB466: ; jump table - .short _021EB476 - _021EB466 - 2 ; case 0 - .short _021EB4AE - _021EB466 - 2 ; case 1 - .short _021EB4C6 - _021EB466 - 2 ; case 2 - .short _021EB4D4 - _021EB466 - 2 ; case 3 - .short _021EB4F8 - _021EB466 - 2 ; case 4 - .short _021EB534 - _021EB466 - 2 ; case 5 - .short _021EB556 - _021EB466 - 2 ; case 6 - .short _021EB56C - _021EB466 - 2 ; case 7 -_021EB476: - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeap - str r0, [r4, #0xc] - mov r2, #0x10 - mov r1, #0 -_021EB484: - strb r1, [r0] - add r0, r0, #1 - sub r2, r2, #1 - bne _021EB484 - mov r0, #2 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #4 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #8 - mov r1, #0 - bl GX_EngineAToggleLayers - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB4AE: - mov r0, #1 - mov r1, #0x10 - str r0, [sp] - add r2, r1, #0 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB4C6: - ldr r1, [r4, #4] - cmp r1, #0 - beq _021EB5A0 - add r0, r0, #1 - add sp, #0xc - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB4D4: - mov r0, #3 - mov r1, #0xf - bl MOD05_021E8860 - mov r2, #0 - str r0, [r5] - mov r0, #0xc - add r1, r2, #0 - mul r1, r0 - ldr r0, _021EB5A4 ; =UNK05_021F7982 - str r2, [r5, #8] - ldrh r0, [r0, r1] - add sp, #0xc - str r0, [r5, #0xc] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB4F8: - ldr r0, [r5, #0xc] - sub r0, r0, #1 - str r0, [r5, #0xc] - bpl _021EB5A0 - ldr r2, [r5, #8] - mov r1, #0xc - ldr r3, _021EB5A8 ; =UNK05_021F7978 - mul r1, r2 - ldr r0, [r4, #0x10] - add r1, r3, r1 - bl MOD05_021EB414 - ldr r0, [r5, #8] - add r2, r0, #1 - str r2, [r5, #8] - cmp r2, #0x10 - blo _021EB524 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB524: - mov r0, #0xc - add r1, r2, #0 - mul r1, r0 - ldr r0, _021EB5A4 ; =UNK05_021F7982 - add sp, #0xc - ldrh r0, [r0, r1] - str r0, [r5, #0xc] - pop {r3, r4, r5, r6, pc} -_021EB534: - mov r0, #0xa - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0 - str r0, [sp, #8] - ldr r3, _021EB5AC ; =0x00007FFF - mov r0, #3 - add r2, r1, #0 - bl FUN_0200E1D0 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB556: - bl FUN_0200E308 - cmp r0, #0 - beq _021EB5A0 - mov r0, #0 - str r0, [r4, #4] - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB56C: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - add r0, r5, #0 - bl MOD05_021E88C0 - ldr r0, _021EB5B0 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021EB58A - mov r0, #1 - str r0, [r1] -_021EB58A: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021EB5A0: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021EB5A4: .word UNK05_021F7982 -_021EB5A8: .word UNK05_021F7978 -_021EB5AC: .word 0x00007FFF -_021EB5B0: .word 0x04000050 - - thumb_func_start MOD05_021EB5B4 -MOD05_021EB5B4: ; 0x021EB5B4 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - ldr r5, [r4, #0xc] - cmp r0, #9 - bhi _021EB636 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EB5D0: ; jump table - .short _021EB5E4 - _021EB5D0 - 2 ; case 0 - .short _021EB618 - _021EB5D0 - 2 ; case 1 - .short _021EB630 - _021EB5D0 - 2 ; case 2 - .short _021EB640 - _021EB5D0 - 2 ; case 3 - .short _021EB66E - _021EB5D0 - 2 ; case 4 - .short _021EB698 - _021EB5D0 - 2 ; case 5 - .short _021EB6C6 - _021EB5D0 - 2 ; case 6 - .short _021EB6E8 - _021EB5D0 - 2 ; case 7 - .short _021EB70A - _021EB5D0 - 2 ; case 8 - .short _021EB720 - _021EB5D0 - 2 ; case 9 -_021EB5E4: - mov r0, #4 - mov r1, #0x38 - bl AllocFromHeap - mov r1, #0 - mov r2, #0x38 - str r0, [r4, #0xc] - bl memset - mov r0, #2 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #4 - mov r1, #0 - bl GX_EngineAToggleLayers - mov r0, #8 - mov r1, #0 - bl GX_EngineAToggleLayers - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB618: - mov r0, #1 - mov r1, #0x10 - str r0, [sp] - add r2, r1, #0 - add r3, r4, #4 - bl MOD05_021E3474 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB630: - ldr r1, [r4, #4] - cmp r1, #0 - bne _021EB638 -_021EB636: - b _021EB754 -_021EB638: - add r0, r0, #1 - add sp, #0xc - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB640: - mov r0, #5 - mov r1, #0xd - bl MOD05_021E8860 - str r0, [r5] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - bl Camera_GetPerspectiveAngle - mov r2, #1 - add r1, r0, #0 - add r5, #8 - lsl r2, r2, #8 - add r0, r5, #0 - add r2, r1, r2 - mov r3, #0x28 - bl MOD05_021E35B0 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB66E: - add r0, r5, #0 - add r0, #8 - bl MOD05_021E35C0 - add r6, r0, #0 - ldr r0, [r5, #8] - ldr r1, [r4, #0x10] - lsl r0, r0, #0x10 - ldr r1, [r1, #0x20] - lsr r0, r0, #0x10 - bl Camera_SetPerspectiveAngle - cmp r6, #1 - bne _021EB754 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - mov r0, #5 - str r0, [r5, #0x34] - pop {r3, r4, r5, r6, pc} -_021EB698: - ldr r0, [r5, #0x34] - sub r0, r0, #1 - str r0, [r5, #0x34] - bpl _021EB754 - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x20] - bl Camera_GetDistance - mov r3, #8 - str r3, [sp] - ldr r2, _021EB758 ; =0x0092E000 - add r1, r0, #0 - add r5, #0x1c - add r0, r5, #0 - sub r2, r1, r2 - lsl r3, r3, #8 - bl MOD05_021E3644 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB6C6: - add r0, r5, #0 - add r0, #0x1c - bl MOD05_021E36A4 - ldr r1, [r4, #0x10] - add r6, r0, #0 - ldr r0, [r5, #0x1c] - ldr r1, [r1, #0x20] - bl Camera_SetDistance - cmp r6, #1 - bne _021EB754 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB6E8: - mov r0, #0x3c - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0 - str r0, [sp, #8] - ldr r3, _021EB75C ; =0x00007FFF - mov r0, #3 - add r2, r1, #0 - bl FUN_0200E1D0 - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB70A: - bl FUN_0200E308 - cmp r0, #0 - beq _021EB754 - mov r0, #0 - str r0, [r4, #4] - ldr r0, [r4] - add sp, #0xc - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, pc} -_021EB720: - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 - add r0, r5, #0 - bl MOD05_021E88C0 - ldr r0, _021EB760 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _021EB73E - mov r0, #1 - str r0, [r1] -_021EB73E: - ldr r1, [r4, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add r0, r6, #0 - bl FUN_0200621C - mov r0, #1 - mov r1, #0 - bl FUN_0200E3A0 -_021EB754: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021EB758: .word 0x0092E000 -_021EB75C: .word 0x00007FFF -_021EB760: .word 0x04000050 - - thumb_func_start MOD05_021EB764 -MOD05_021EB764: ; 0x021EB764 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x30 - add r5, r0, #0 - str r1, [sp, #0x14] - ldr r1, [r5] - add r6, r2, #0 - ldr r4, [r5, #0xc] - cmp r1, #0xe - bls _021EB778 - b _021EBB72 -_021EB778: - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021EB784: ; jump table - .short _021EB7A2 - _021EB784 - 2 ; case 0 - .short _021EB848 - _021EB784 - 2 ; case 1 - .short _021EB85E - _021EB784 - 2 ; case 2 - .short _021EB86A - _021EB784 - 2 ; case 3 - .short _021EB8B8 - _021EB784 - 2 ; case 4 - .short _021EB8D6 - _021EB784 - 2 ; case 5 - .short _021EB99C - _021EB784 - 2 ; case 6 - .short _021EB9EE - _021EB784 - 2 ; case 7 - .short _021EBA04 - _021EB784 - 2 ; case 8 - .short _021EBA34 - _021EB784 - 2 ; case 9 - .short _021EBA4A - _021EB784 - 2 ; case 10 - .short _021EBA72 - _021EB784 - 2 ; case 11 - .short _021EBA8A - _021EB784 - 2 ; case 12 - .short _021EBAAA - _021EB784 - 2 ; case 13 - .short _021EBB0E - _021EB784 - 2 ; case 14 -_021EB7A2: - mov r1, #0x1f - ldr r0, [sp, #0x14] - lsl r1, r1, #4 - bl AllocFromHeap - mov r2, #0x1f - str r0, [r5, #0xc] - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r4, [r5, #0xc] - mov r1, #1 - add r0, r4, #0 - add r0, #0x44 - add r2, r1, #0 - bl MOD05_021E3E14 - mov r0, #0x17 - str r0, [sp] - mov r1, #0x18 - str r1, [sp, #4] - mov r0, #0x19 - str r0, [sp, #8] - ldr r0, _021EBB4C ; =0x000927C0 - lsl r1, r1, #4 - str r0, [sp, #0xc] - add r0, r4, #0 - add r0, #0x44 - add r1, r4, r1 - mov r2, #0x16 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0 - str r0, [sp] - mov r1, #6 - str r0, [sp, #4] - add r0, r4, #0 - lsl r1, r1, #6 - mov r3, #0x11 - ldr r2, _021EBB50 ; =0xFFFE0000 - add r0, #0x44 - add r1, r4, r1 - lsl r3, r3, #0xe - bl MOD05_021E3FC4 - mov r1, #0x6d - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #0 - str r0, [sp] - ldrh r0, [r6, #6] - ldr r1, [sp, #0x14] - mov r3, #0xa - str r0, [sp, #4] - mov r0, #0x6d - lsl r0, r0, #2 - ldrh r2, [r6, #4] - ldr r0, [r4, r0] - bl MOD05_021E4014 - ldr r0, [r5, #0x10] - ldr r0, [r0, #8] - bl MOD05_021E3C00 - bl MOD05_021E4788 - str r0, [r4, #0x40] - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EB848: - mov r0, #1 - mov r1, #0x10 - str r0, [sp] - add r2, r1, #0 - add r3, r5, #4 - bl MOD05_021E3474 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EB85E: - ldr r0, [r5, #4] - cmp r0, #0 - beq _021EB8E6 - add r0, r1, #1 - str r0, [r5] - b _021EBB72 -_021EB86A: - ldr r3, [r5, #0x10] - mov r0, #0xd - ldr r3, [r3, #8] - mov r1, #0xc - mov r2, #0xb - bl MOD05_021E3D20 - mov r0, #0x79 - mov r2, #8 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] - mov r0, #0x10 - str r0, [sp] - mov r0, #0x1f - str r0, [sp, #4] - mov r0, #0x17 - str r0, [sp, #8] - ldr r1, [r4, #0x40] - add r0, r5, #0 - add r3, r2, #0 - bl MOD05_021E47BC - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - add r0, #0x2c - add r2, r1, #0 - mov r3, #0xf - bl MOD05_021E35EC - mov r0, #8 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EB8B8: - bl MOD05_021E35AC - cmp r0, #0 - beq _021EB8E6 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - ldr r0, [r4, #0x40] - bl MOD05_021E47A0 - mov r0, #0x7b - mov r1, #0xa - lsl r0, r0, #2 - str r1, [r4, r0] - b _021EBB72 -_021EB8D6: - mov r0, #0x7b - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - blt _021EB8E8 -_021EB8E6: - b _021EBB72 -_021EB8E8: - mov r1, #2 - lsl r1, r1, #0xc - add r0, sp, #0x18 - add r2, r1, #0 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020064 - mov r0, #0 - str r0, [sp] - mov r0, #0x6e - lsl r0, r0, #2 - add r0, r4, r0 - str r0, [sp, #4] - mov r0, #0x11 - mov r2, #2 - lsl r0, r0, #0xe - mov r1, #0x62 - lsl r2, r2, #0xc - mov r3, #0x40 - bl MOD05_021E49F0 - ldr r3, _021EBB54 ; =0x04000048 - mov r0, #0x3f - ldrh r2, [r3] - mov r1, #0x1f - bic r2, r0 - orr r2, r1 - mov r1, #0x20 - orr r2, r1 - strh r2, [r3] - ldrh r2, [r3, #2] - bic r2, r0 - mov r0, #0xf - orr r0, r2 - orr r0, r1 - strh r0, [r3, #2] - lsl r0, r1, #0x15 - ldr r3, [r0] - ldr r2, _021EBB58 ; =0xFFFF1FFF - lsl r1, r1, #8 - and r2, r3 - orr r1, r2 - str r1, [r0] - mov r3, #4 - str r3, [sp] - ldr r1, _021EBB50 ; =0xFFFE0000 - ldr r2, [r6] - add r0, r4, #0 - lsl r3, r3, #0x10 - bl MOD05_021E3644 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl FUN_02020238 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - mov r2, #0x11 - ldr r1, [r4] - add r0, sp, #0x24 - lsl r2, r2, #0xe - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x24 - bl FUN_02020044 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EB99C: - add r0, r4, #0 - bl MOD05_021E36A4 - mov r2, #0x11 - add r6, r0, #0 - ldr r1, [r4] - add r0, sp, #0x24 - lsl r2, r2, #0xe - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x24 - bl FUN_02020044 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_0202011C - mov r1, #0 - str r1, [sp] - mov r1, #0x6e - lsl r1, r1, #2 - add r1, r4, r1 - str r1, [sp, #4] - mov r2, #2 - ldr r0, [r0, #4] - mov r1, #0x62 - lsl r2, r2, #0xc - mov r3, #0x40 - bl MOD05_021E49F0 - cmp r6, #1 - bne _021EBA60 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EB9EE: - add r0, r4, #0 - add r0, #0x18 - mov r1, #0 - mov r2, #0x10 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBA04: - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E35C0 - add r7, r0, #0 - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E4AD0 - cmp r7, #1 - bne _021EBA60 - mov r3, #0 - str r3, [sp] - mov r0, #0x6d - lsl r0, r0, #2 - ldrh r2, [r6, #4] - ldr r0, [r4, r0] - ldr r1, [sp, #0x14] - bl MOD05_021E3F68 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBA34: - add r0, r4, #0 - add r0, #0x18 - mov r1, #0x10 - mov r2, #0 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBA4A: - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E35C0 - add r6, r0, #0 - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E4AD0 - cmp r6, #1 - beq _021EBA62 -_021EBA60: - b _021EBB72 -_021EBA62: - ldr r0, [r5] - mov r1, #0x1a - add r0, r0, #1 - str r0, [r5] - mov r0, #0x7b - lsl r0, r0, #2 - str r1, [r4, r0] - b _021EBB72 -_021EBA72: - mov r0, #0x7b - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bge _021EBB72 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBA8A: - mov r0, #0xf - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0 - str r0, [sp, #8] - ldr r3, _021EBB5C ; =0x00007FFF - mov r0, #3 - add r2, r1, #0 - bl FUN_0200E1D0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBAAA: - add r0, r4, #0 - add r0, #0x2c - bl MOD05_021E35FC - mov r2, #1 - ldr r3, [r4, #0x2c] - lsl r2, r2, #0xc - add r1, r3, r2 - add r2, r3, r2 - add r0, sp, #0x18 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x18 - bl FUN_02020064 - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_0202011C - add r6, r0, #0 - ldr r0, [r4, #0x2c] - mov r1, #0x44 - mov r2, #0x1e - bl MOD05_021E4A3C - add r1, r0, #0 - mov r0, #0 - str r0, [sp] - mov r0, #0x6e - lsl r0, r0, #2 - add r0, r4, r0 - str r0, [sp, #4] - ldr r0, [r6, #4] - ldr r2, [sp, #0x1c] - mov r3, #0x40 - bl MOD05_021E49F0 - bl FUN_0200E308 - cmp r0, #0 - beq _021EBB72 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EBB72 -_021EBB0E: - ldr r1, _021EBB5C ; =0x00007FFF - mov r0, #1 - bl FUN_0200E3A0 - ldr r1, [r5, #0x14] - cmp r1, #0 - beq _021EBB20 - mov r0, #1 - str r0, [r1] -_021EBB20: - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_0201FFC8 - mov r1, #6 - add r0, r4, #0 - lsl r1, r1, #6 - add r0, #0x44 - add r1, r4, r1 - bl MOD05_021E3F3C - add r4, #0x44 - add r0, r4, #0 - bl MOD05_021E3E44 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021EBB58 ; =0xFFFF1FFF - b _021EBB60 - nop -_021EBB4C: .word 0x000927C0 -_021EBB50: .word 0xFFFE0000 -_021EBB54: .word 0x04000048 -_021EBB58: .word 0xFFFF1FFF -_021EBB5C: .word 0x00007FFF -_021EBB60: - and r0, r1 - str r0, [r2] - ldr r1, [r5, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add sp, #0x30 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021EBB72: - mov r1, #0x79 - lsl r1, r1, #2 - ldr r0, [r4, r1] - cmp r0, #1 - bne _021EBBB6 - ldr r3, [r4, #0x2c] - mov r0, #0 - str r3, [sp] - str r0, [sp, #4] - mov r0, #0x80 - str r0, [sp, #8] - mov r0, #0x44 - str r0, [sp, #0xc] - add r0, r1, #4 - ldr r0, [r4, r0] - sub r1, #0x24 - str r0, [sp, #0x10] - add r0, r4, r1 - ldr r1, [r5, #0x10] - mov r2, #3 - ldr r1, [r1, #8] - bl MOD05_021E3DA0 - mov r3, #0x7a - lsl r3, r3, #2 - ldr r0, [r4, r3] - sub r0, #0xf - lsr r2, r0, #0x1f - lsl r1, r0, #0x17 - sub r1, r1, r2 - mov r0, #0x17 - ror r1, r0 - add r0, r2, r1 - str r0, [r4, r3] -_021EBBB6: - ldr r0, [r5] - cmp r0, #0xe - beq _021EBBC2 - ldr r0, [r4, #0x44] - bl FUN_0201FDEC -_021EBBC2: - mov r0, #0 - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EBBC8 -MOD05_021EBBC8: ; 0x021EBBC8 - push {r4, lr} - ldr r2, _021EBBE4 ; =UNK05_021F7938 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBBE0 - add r0, r4, #0 - bl FUN_0200621C -_021EBBE0: - pop {r4, pc} - nop -_021EBBE4: .word UNK05_021F7938 - - thumb_func_start MOD05_021EBBE8 -MOD05_021EBBE8: ; 0x021EBBE8 - push {r4, lr} - ldr r2, _021EBC04 ; =UNK05_021F7940 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBC00 - add r0, r4, #0 - bl FUN_0200621C -_021EBC00: - pop {r4, pc} - nop -_021EBC04: .word UNK05_021F7940 - - thumb_func_start MOD05_021EBC08 -MOD05_021EBC08: ; 0x021EBC08 - push {r4, lr} - ldr r2, _021EBC24 ; =UNK05_021F7948 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBC20 - add r0, r4, #0 - bl FUN_0200621C -_021EBC20: - pop {r4, pc} - nop -_021EBC24: .word UNK05_021F7948 - - thumb_func_start MOD05_021EBC28 -MOD05_021EBC28: ; 0x021EBC28 - push {r4, lr} - ldr r2, _021EBC44 ; =UNK05_021F7950 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBC40 - add r0, r4, #0 - bl FUN_0200621C -_021EBC40: - pop {r4, pc} - nop -_021EBC44: .word UNK05_021F7950 - - thumb_func_start MOD05_021EBC48 -MOD05_021EBC48: ; 0x021EBC48 - push {r4, lr} - ldr r2, _021EBC64 ; =UNK05_021F7958 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBC60 - add r0, r4, #0 - bl FUN_0200621C -_021EBC60: - pop {r4, pc} - nop -_021EBC64: .word UNK05_021F7958 - - thumb_func_start MOD05_021EBC68 -MOD05_021EBC68: ; 0x021EBC68 - push {r4, lr} - ldr r2, _021EBC84 ; =UNK05_021F7960 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBC80 - add r0, r4, #0 - bl FUN_0200621C -_021EBC80: - pop {r4, pc} - nop -_021EBC84: .word UNK05_021F7960 - - thumb_func_start MOD05_021EBC88 -MOD05_021EBC88: ; 0x021EBC88 - push {r4, lr} - ldr r2, _021EBCA4 ; =UNK05_021F7968 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBCA0 - add r0, r4, #0 - bl FUN_0200621C -_021EBCA0: - pop {r4, pc} - nop -_021EBCA4: .word UNK05_021F7968 - - thumb_func_start MOD05_021EBCA8 -MOD05_021EBCA8: ; 0x021EBCA8 - push {r4, lr} - ldr r2, _021EBCC4 ; =UNK05_021F7970 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EB764 - cmp r0, #1 - bne _021EBCC0 - add r0, r4, #0 - bl FUN_0200621C -_021EBCC0: - pop {r4, pc} - nop -_021EBCC4: .word UNK05_021F7970 - - thumb_func_start MOD05_021EBCC8 -MOD05_021EBCC8: ; 0x021EBCC8 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - bl PlayerProfile_GetTrainerGender - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EBCD8 -MOD05_021EBCD8: ; 0x021EBCD8 - push {r4, r5, r6, r7, lr} - sub sp, #0x4c - add r5, r0, #0 - ldr r0, [r5] - str r1, [sp, #0x10] - str r2, [sp, #0x14] - ldr r4, [r5, #0xc] - cmp r0, #0x13 - bls _021EBCEC - b _021EC3A0 -_021EBCEC: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EBCF8: ; jump table - .short _021EBD20 - _021EBCF8 - 2 ; case 0 - .short _021EBEC0 - _021EBCF8 - 2 ; case 1 - .short _021EBED6 - _021EBCF8 - 2 ; case 2 - .short _021EBEE4 - _021EBCF8 - 2 ; case 3 - .short _021EBF6C - _021EBCF8 - 2 ; case 4 - .short _021EBFBA - _021EBCF8 - 2 ; case 5 - .short _021EBFD0 - _021EBCF8 - 2 ; case 6 - .short _021EC002 - _021EBCF8 - 2 ; case 7 - .short _021EC018 - _021EBCF8 - 2 ; case 8 - .short _021EC038 - _021EBCF8 - 2 ; case 9 - .short _021EC0D4 - _021EBCF8 - 2 ; case 10 - .short _021EC122 - _021EBCF8 - 2 ; case 11 - .short _021EC138 - _021EBCF8 - 2 ; case 12 - .short _021EC16A - _021EBCF8 - 2 ; case 13 - .short _021EC180 - _021EBCF8 - 2 ; case 14 - .short _021EC19E - _021EBCF8 - 2 ; case 15 - .short _021EC1E8 - _021EBCF8 - 2 ; case 16 - .short _021EC21C - _021EBCF8 - 2 ; case 17 - .short _021EC284 - _021EBCF8 - 2 ; case 18 - .short _021EC342 - _021EBCF8 - 2 ; case 19 -_021EBD20: - mov r1, #0x9b - ldr r0, [sp, #0x10] - lsl r1, r1, #2 - bl AllocFromHeap - mov r2, #0x9b - str r0, [r5, #0xc] - mov r1, #0 - lsl r2, r2, #2 - bl memset - ldr r4, [r5, #0xc] - mov r1, #4 - add r0, r4, #0 - add r0, #0x44 - mov r2, #3 - bl MOD05_021E3E14 - mov r0, #0x17 - str r0, [sp] - mov r1, #0x18 - str r1, [sp, #4] - mov r0, #0x19 - str r0, [sp, #8] - ldr r0, _021EC0C0 ; =0x000927C0 - lsl r1, r1, #4 - str r0, [sp, #0xc] - add r0, r4, #0 - add r0, #0x44 - add r1, r4, r1 - mov r2, #0x16 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0x17 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - mov r0, #0x19 - str r0, [sp, #8] - ldr r0, _021EC0C4 ; =0x000927C1 - mov r1, #0x6d - str r0, [sp, #0xc] - add r0, r4, #0 - lsl r1, r1, #2 - add r0, #0x44 - add r1, r4, r1 - mov r2, #0x16 - mov r3, #1 - bl MOD05_021E3E64 - mov r0, #0xf - str r0, [sp] - mov r0, #0x10 - str r0, [sp, #4] - mov r0, #0x11 - str r0, [sp, #8] - ldr r0, _021EC0C8 ; =0x000927C2 - mov r1, #0x7a - str r0, [sp, #0xc] - ldr r2, [sp, #0x14] - add r0, r4, #0 - lsl r1, r1, #2 - ldrb r2, [r2, #6] - add r0, #0x44 - add r1, r4, r1 - mov r3, #0xc - bl MOD05_021E3E64 - mov r1, #2 - lsl r1, r1, #0xc - add r0, sp, #0x34 - add r2, r1, #0 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #6 - lsl r0, r0, #6 - add r0, r4, r0 - str r0, [sp, #0x18] - str r0, [sp, #0x20] - add r0, r4, #0 - str r0, [sp, #0x24] - add r0, #0x44 - mov r7, #0 - add r6, r4, #0 - str r0, [sp, #0x24] -_021EBDCE: - cmp r7, #3 - bge _021EBDDA - mov r0, #0 - ldr r1, [sp, #0x18] - str r0, [sp, #0x1c] - b _021EBDEA -_021EBDDA: - sub r1, r7, #1 - mov r0, #0x34 - add r2, r1, #0 - mul r2, r0 - ldr r0, [sp, #0x20] - add r1, r0, r2 - mov r0, #1 - str r0, [sp, #0x1c] -_021EBDEA: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r2, #0 - ldr r0, [sp, #0x24] - add r3, r2, #0 - bl MOD05_021E3FC4 - mov r1, #0x87 - lsl r1, r1, #2 - str r0, [r6, r1] - add r0, r1, #0 - ldr r0, [r6, r0] - mov r1, #0 - bl FUN_020200A0 - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r6, r0] - ldr r1, [sp, #0x1c] - bl FUN_02020130 - ldr r0, [sp, #0x18] - add r7, r7, #1 - add r0, #0x34 - add r6, r6, #4 - str r0, [sp, #0x18] - cmp r7, #4 - blt _021EBDCE - ldr r0, [r5, #0x10] - bl MOD05_021EBCC8 - cmp r0, #0 - bne _021EBE48 - mov r2, #0 - str r2, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - ldr r1, [sp, #0x10] - mov r3, #0xa - bl MOD05_021E4014 - mov r1, #0 - b _021EBE60 -_021EBE48: - mov r0, #0 - str r0, [sp] - mov r2, #1 - mov r0, #0x87 - str r2, [sp, #4] - lsl r0, r0, #2 - ldr r0, [r4, r0] - ldr r1, [sp, #0x10] - mov r3, #0xa - bl MOD05_021E4014 - mov r1, #1 -_021EBE60: - mov r0, #0x99 - lsl r0, r0, #2 - str r1, [r4, r0] - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x34 - bl FUN_02020064 - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r2, [sp, #0x14] - mov r0, #0x22 - lsl r0, r0, #4 - ldrb r2, [r2, #5] - ldr r0, [r4, r0] - ldr r1, [sp, #0x10] - mov r3, #0xa - bl MOD05_021E4014 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #2 - bl FUN_020200EC - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x34 - bl FUN_02020064 - mov r0, #0x10 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBEC0: - mov r0, #1 - mov r1, #0x10 - str r0, [sp] - add r2, r1, #0 - add r3, r5, #4 - bl MOD05_021E3474 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBED6: - ldr r1, [r5, #4] - cmp r1, #0 - bne _021EBEDE - b _021EC3A0 -_021EBEDE: - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBEE4: - mov r0, #6 - mov r2, #0x2e - mov r3, #1 - str r0, [sp] - ldr r1, _021EC0CC ; =0xFFFB0000 - add r0, r4, #0 - lsl r2, r2, #0xc - lsl r3, r3, #0x12 - bl MOD05_021E3644 - mov r2, #0x72 - ldr r1, [r4] - add r0, sp, #0x40 - lsl r2, r2, #0xc - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - add r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200BC - mov r0, #0x89 - lsl r0, r0, #2 - mov r1, #1 - ldr r0, [r4, r0] - lsl r1, r1, #0xc - bl FUN_020200D8 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBF6C: - add r0, r4, #0 - bl MOD05_021E36A4 - mov r2, #0x72 - add r6, r0, #0 - ldr r1, [r4] - add r0, sp, #0x40 - lsl r2, r2, #0xc - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - add r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - cmp r6, #1 - bne _021EC02E - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBFBA: - add r0, r4, #0 - add r0, #0x30 - mov r1, #0 - mov r2, #0x10 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EBFD0: - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E35C0 - add r6, r0, #0 - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E4AD0 - cmp r6, #1 - bne _021EC02E - mov r3, #0 - mov r2, #0x87 - str r3, [sp] - lsl r2, r2, #2 - ldr r0, [r4, r2] - add r2, #0x48 - ldr r1, [sp, #0x10] - ldr r2, [r4, r2] - bl MOD05_021E3F68 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC002: - add r0, r4, #0 - add r0, #0x30 - mov r1, #0x10 - mov r2, #0 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC018: - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E35C0 - add r6, r0, #0 - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E4AD0 - cmp r6, #1 - beq _021EC030 -_021EC02E: - b _021EC3A0 -_021EC030: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC038: - mov r0, #6 - mov r1, #0x15 - mov r2, #0xd - str r0, [sp] - ldr r3, _021EC0D0 ; =0xFFFC0000 - add r0, r4, #0 - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - bl MOD05_021E3644 - mov r2, #0x11 - ldr r1, [r4] - add r0, sp, #0x40 - lsl r2, r2, #0xe - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - sub r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x8a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x8a - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200A0 - mov r0, #0x8a - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl FUN_020200BC - mov r0, #0x8a - lsl r0, r0, #2 - mov r1, #1 - ldr r0, [r4, r0] - lsl r1, r1, #0xc - bl FUN_020200D8 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 - .balign 4, 0 -_021EC0C0: .word 0x000927C0 -_021EC0C4: .word 0x000927C1 -_021EC0C8: .word 0x000927C2 -_021EC0CC: .word 0xFFFB0000 -_021EC0D0: .word 0xFFFC0000 -_021EC0D4: - add r0, r4, #0 - bl MOD05_021E36A4 - mov r2, #0x11 - add r6, r0, #0 - ldr r1, [r4] - add r0, sp, #0x40 - lsl r2, r2, #0xe - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - sub r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x8a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - cmp r6, #1 - bne _021EC212 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC122: - add r0, r4, #0 - add r0, #0x30 - mov r1, #0 - mov r2, #0x10 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC138: - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E35C0 - add r6, r0, #0 - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E4AD0 - cmp r6, #1 - bne _021EC212 - mov r3, #0 - mov r0, #0x22 - ldr r2, [sp, #0x14] - str r3, [sp] - lsl r0, r0, #4 - ldrb r2, [r2, #5] - ldr r0, [r4, r0] - ldr r1, [sp, #0x10] - bl MOD05_021E3F68 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC16A: - add r0, r4, #0 - add r0, #0x30 - mov r1, #0x10 - mov r2, #0 - mov r3, #3 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC180: - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E35C0 - add r6, r0, #0 - add r0, r4, #0 - add r0, #0x30 - bl MOD05_021E4AD0 - cmp r6, #1 - bne _021EC212 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC19E: - ldr r0, [r5, #0x10] - mov r1, #0x8b - ldr r0, [r0, #0x20] - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r1, [r4, r1] - add r0, sp, #0x2c - bl Camera_GetAngle - add r1, sp, #0x2c - mov r2, #0x92 - ldrh r0, [r1] - lsl r2, r2, #2 - strh r0, [r4, r2] - ldrh r3, [r1, #2] - add r0, r2, #2 - strh r3, [r4, r0] - ldrh r3, [r1, #4] - add r0, r2, #4 - strh r3, [r4, r0] - ldrh r1, [r1, #6] - add r0, r2, #6 - ldr r3, [sp, #0x14] - strh r1, [r4, r0] - ldrh r1, [r4, r2] - add r2, #8 - add r0, r4, r2 - ldr r2, [sp, #0x14] - ldrb r3, [r3, #4] - ldr r2, [r2] - add r2, r1, r2 - bl MOD05_021E35B0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC1E8: - mov r0, #0x25 - lsl r0, r0, #4 - add r0, r4, r0 - bl MOD05_021E35C0 - mov r1, #0x25 - lsl r1, r1, #4 - add r6, r0, #0 - add r0, r1, #0 - ldr r2, [r4, r1] - sub r0, #8 - strh r2, [r4, r0] - add r0, r1, #0 - sub r1, #0x24 - sub r0, #8 - ldr r1, [r4, r1] - add r0, r4, r0 - bl Camera_SetAngle - cmp r6, #1 - beq _021EC214 -_021EC212: - b _021EC3A0 -_021EC214: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC21C: - mov r0, #0x8b - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Camera_GetDistance - add r1, r0, #0 - mov r0, #0x1e - str r0, [sp] - mov r0, #0x23 - mov r2, #0xfa - lsl r0, r0, #4 - lsl r2, r2, #0xc - add r0, r4, r0 - sub r2, r1, r2 - mov r3, #0 - bl MOD05_021E3644 - mov r0, #0x1e - mov r1, #0 - mov r2, #6 - str r0, [sp] - add r0, r4, #0 - lsl r2, r2, #0x10 - add r3, r1, #0 - bl MOD05_021E3644 - mov r0, #0x1e - str r0, [sp] - add r0, r4, #0 - mov r1, #0 - mov r2, #6 - add r0, #0x18 - lsl r2, r2, #0x10 - add r3, r1, #0 - bl MOD05_021E3644 - mov r0, #0x1e - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - mov r1, #0 - str r0, [sp, #8] - ldr r3, _021EC3B4 ; =0x00007FFF - mov r0, #3 - add r2, r1, #0 - bl FUN_0200E1D0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC284: - mov r0, #0x23 - lsl r0, r0, #4 - add r0, r4, r0 - bl MOD05_021E36A4 - add r0, r4, #0 - bl MOD05_021E36A4 - add r0, r4, #0 - add r0, #0x18 - bl MOD05_021E36A4 - mov r1, #0x23 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r1, [r4, r1] - bl Camera_SetDistance - mov r1, #0x2e - ldr r2, [r4] - lsl r1, r1, #0xc - sub r1, r1, r2 - mov r2, #0x72 - ldr r3, [r4, #0x18] - lsl r2, r2, #0xc - add r2, r3, r2 - add r0, sp, #0x40 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - add r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r1, #0xd - ldr r2, [r4] - lsl r1, r1, #0x10 - add r1, r2, r1 - mov r2, #0x11 - ldr r3, [r4, #0x18] - lsl r2, r2, #0xe - sub r2, r2, r3 - add r0, sp, #0x40 - mov r3, #0 - bl MOD05_021E3FF8 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - mov r0, #9 - ldr r1, [sp, #0x44] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x44] - mov r0, #1 - ldr r1, [sp, #0x40] - lsl r0, r0, #0x10 - sub r0, r1, r0 - str r0, [sp, #0x40] - mov r0, #0x8a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0x40 - bl FUN_02020044 - bl FUN_0200E308 - cmp r0, #0 - beq _021EC3A0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021EC3A0 -_021EC342: - ldr r1, _021EC3B4 ; =0x00007FFF - mov r0, #1 - bl FUN_0200E3A0 - ldr r1, [r5, #0x14] - cmp r1, #0 - beq _021EC354 - mov r0, #1 - str r0, [r1] -_021EC354: - mov r7, #0 - add r6, r4, #0 -_021EC358: - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl FUN_0201FFC8 - add r7, r7, #1 - add r6, r6, #4 - cmp r7, #4 - blt _021EC358 - mov r0, #6 - lsl r0, r0, #6 - add r6, r4, r0 - add r0, r4, #0 - str r0, [sp, #0x28] - add r0, #0x44 - mov r7, #0 - str r0, [sp, #0x28] -_021EC37A: - ldr r0, [sp, #0x28] - add r1, r6, #0 - bl MOD05_021E3F3C - add r7, r7, #1 - add r6, #0x34 - cmp r7, #3 - blt _021EC37A - add r4, #0x44 - add r0, r4, #0 - bl MOD05_021E3E44 - ldr r1, [r5, #0xc] - mov r0, #4 - bl FreeToHeapExplicit - add sp, #0x4c - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021EC3A0: - ldr r0, [r5] - cmp r0, #0x13 - beq _021EC3AC - ldr r0, [r4, #0x44] - bl FUN_0201FDEC -_021EC3AC: - mov r0, #0 - add sp, #0x4c - pop {r4, r5, r6, r7, pc} - nop -_021EC3B4: .word 0x00007FFF - - thumb_func_start MOD05_021EC3B8 -MOD05_021EC3B8: ; 0x021EC3B8 - push {r4, lr} - ldr r2, _021EC3D4 ; =UNK05_021F7910 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EBCD8 - cmp r0, #1 - bne _021EC3D0 - add r0, r4, #0 - bl FUN_0200621C -_021EC3D0: - pop {r4, pc} - nop -_021EC3D4: .word UNK05_021F7910 - - thumb_func_start MOD05_021EC3D8 -MOD05_021EC3D8: ; 0x021EC3D8 - push {r4, lr} - ldr r2, _021EC3F4 ; =UNK05_021F7918 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EBCD8 - cmp r0, #1 - bne _021EC3F0 - add r0, r4, #0 - bl FUN_0200621C -_021EC3F0: - pop {r4, pc} - nop -_021EC3F4: .word UNK05_021F7918 - - thumb_func_start MOD05_021EC3F8 -MOD05_021EC3F8: ; 0x021EC3F8 - push {r4, lr} - ldr r2, _021EC414 ; =UNK05_021F7920 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EBCD8 - cmp r0, #1 - bne _021EC410 - add r0, r4, #0 - bl FUN_0200621C -_021EC410: - pop {r4, pc} - nop -_021EC414: .word UNK05_021F7920 - - thumb_func_start MOD05_021EC418 -MOD05_021EC418: ; 0x021EC418 - push {r4, lr} - ldr r2, _021EC434 ; =UNK05_021F7928 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EBCD8 - cmp r0, #1 - bne _021EC430 - add r0, r4, #0 - bl FUN_0200621C -_021EC430: - pop {r4, pc} - nop -_021EC434: .word UNK05_021F7928 - - thumb_func_start MOD05_021EC438 -MOD05_021EC438: ; 0x021EC438 - push {r4, lr} - ldr r2, _021EC454 ; =UNK05_021F7930 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #4 - bl MOD05_021EBCD8 - cmp r0, #1 - bne _021EC450 - add r0, r4, #0 - bl FUN_0200621C -_021EC450: - pop {r4, pc} - nop -_021EC454: .word UNK05_021F7930 - - thumb_func_start MOD05_021EC458 -MOD05_021EC458: ; 0x021EC458 - push {r3, lr} - bl Sav2_DayCare_GetMonX - bl DayCareMon_GetBoxMon - pop {r3, pc} - - thumb_func_start MOD05_021EC464 -MOD05_021EC464: ; 0x021EC464 - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - add r6, r0, #0 - add r5, r4, #0 - mov r7, #5 -_021EC46E: - add r0, r6, #0 - add r1, r5, #0 - bl Sav2_DayCare_GetMonX - bl DayCareMon_GetBoxMon - add r1, r7, #0 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021EC48C - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_021EC48C: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #2 - blo _021EC46E - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC49C -MOD05_021EC49C: ; 0x021EC49C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, _021EC4D8 ; =UNK05_021FD680 - mov r4, #0 - str r5, [r0] - mov r6, #5 - add r7, r4, #0 -_021EC4AA: - add r0, r5, #0 - add r1, r4, #0 - bl Sav2_DayCare_GetMonX - bl DayCareMon_GetBoxMon - add r1, r6, #0 - add r2, r7, #0 - bl GetBoxMonData - cmp r0, #0 - bne _021EC4C6 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021EC4C6: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #2 - blo _021EC4AA - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021EC4D8: .word UNK05_021FD680 - - thumb_func_start MOD05_021EC4DC -MOD05_021EC4DC: ; 0x021EC4DC - push {r3, lr} - mov r1, #6 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl ItemIdIsMail - pop {r3, pc} - - thumb_func_start MOD05_021EC4F0 -MOD05_021EC4F0: ; 0x021EC4F0 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r2, #0 - add r6, r0, #0 - str r1, [sp] - add r7, r3, #0 - bl GetPartyMonByIndex - add r4, r0, #0 - add r0, r5, #0 - bl DayCareMon_GetExtras - str r0, [sp, #8] - add r0, r5, #0 - bl DayCareMon_GetBoxMon - str r0, [sp, #4] - add r0, r7, #0 - bl Sav2_PlayerData_GetProfileAddr - bl PlayerProfile_GetNamePtr - add r0, r4, #0 - mov r1, #0x74 - add r2, sp, #0xc - bl GetMonData - add r0, r4, #0 - bl FUN_020690E4 - bl MOD05_021EC4DC - cmp r0, #0 - beq _021EC544 - ldr r0, [sp, #8] - bl DayCareMail_GetCapsule - add r2, r0, #0 - add r0, r4, #0 - mov r1, #0xa9 - bl GetMonData -_021EC544: - ldr r1, [sp, #4] - add r0, r4, #0 - bl CopyBoxPokemonToBoxPokemon - add r0, r5, #0 - mov r1, #0 - bl DayCareMon_SetSteps - ldr r1, [sp] - add r0, r6, #0 - bl RemoveMonFromParty - ldr r1, _021EC578 ; =0x000001B9 - add r0, r6, #0 - bl PartyHasMon - cmp r0, #0 - bne _021EC572 - add r0, r7, #0 - bl Sav2_Chatot_get - bl Chatot_invalidate -_021EC572: - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - nop -_021EC578: .word 0x000001B9 - - thumb_func_start MOD05_021EC57C -MOD05_021EC57C: ; 0x021EC57C - push {r3, r4, r5, r6, r7, lr} - add r7, r3, #0 - add r5, r0, #0 - add r0, r7, #0 - add r6, r1, #0 - add r4, r2, #0 - bl FUN_02029FC8 - mov r1, #0x28 - bl FUN_0202A0E8 - add r0, r4, #0 - bl MOD05_021EC49C - add r1, r0, #0 - add r0, r4, #0 - bl Sav2_DayCare_GetMonX - add r2, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - add r3, r7, #0 - bl MOD05_021EC4F0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC5B0 -MOD05_021EC5B0: ; 0x021EC5B0 - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - mov r1, #0 - bl Sav2_DayCare_GetMonX - add r5, r0, #0 - add r0, r4, #0 - mov r1, #1 - bl Sav2_DayCare_GetMonX - add r4, r0, #0 - add r0, r5, #0 - bl DayCareMon_GetBoxMon - add r6, r0, #0 - add r0, r4, #0 - bl DayCareMon_GetBoxMon - add r7, r0, #0 - add r0, r6, #0 - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - bne _021EC600 - add r0, r7, #0 - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021EC600 - add r0, r5, #0 - add r1, r4, #0 - bl DayCareMon_Copy - add r0, r4, #0 - bl DayCareMon_Init -_021EC600: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC604 -MOD05_021EC604: ; 0x021EC604 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - mov r0, #0 - str r0, [sp] - str r0, [sp, #8] - add r4, sp, #8 - add r6, sp, #4 - add r7, sp, #4 -_021EC616: - add r0, r5, #0 - bl FUN_020690E8 - cmp r0, #0 - beq _021EC658 - mov r0, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl FUN_02069818 - cmp r0, #0 - beq _021EC64E -_021EC632: - ldr r1, _021EC664 ; =0x0000FFFF - cmp r0, r1 - bne _021EC640 - ldrh r1, [r7] - add r0, r5, #0 - bl FUN_02069708 -_021EC640: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl FUN_02069818 - cmp r0, #0 - bne _021EC632 -_021EC64E: - ldr r0, [sp] - add r0, r0, #1 - str r0, [sp] - cmp r0, #0x64 - blt _021EC616 -_021EC658: - add r0, r5, #0 - bl CalcMonLevelAndStats - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021EC664: .word 0x0000FFFF - - thumb_func_start MOD05_021EC668 -MOD05_021EC668: ; 0x021EC668 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - str r0, [sp] - add r6, r1, #0 - mov r0, #4 - add r7, r2, #0 - bl AllocMonZeroed - add r4, r0, #0 - add r0, r6, #0 - bl DayCareMon_GetBoxMon - add r5, r0, #0 - add r0, r6, #0 - bl DayCareMon_GetExtras - str r0, [sp, #4] - add r0, r7, #0 - mov r1, #0 - add r2, r5, #0 - bl BufferBoxMonNickname - add r0, r5, #0 - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - add r0, r5, #0 - add r1, r4, #0 - bl CopyBoxPokemonToPokemon - add r0, r4, #0 - mov r1, #0xa0 - mov r2, #0 - bl GetMonData - cmp r0, #0x64 - beq _021EC6E0 - add r0, r4, #0 - mov r1, #8 - mov r2, #0 - bl GetMonData - str r0, [sp, #8] - add r0, r6, #0 - bl DayCareMon_GetSteps - ldr r1, [sp, #8] - add r2, sp, #8 - add r0, r1, r0 - str r0, [sp, #8] - add r0, r4, #0 - mov r1, #8 - bl SetMonData - add r0, r4, #0 - bl MOD05_021EC604 -_021EC6E0: - add r0, r5, #0 - bl MOD05_021EC4DC - cmp r0, #0 - beq _021EC6FA - ldr r0, [sp, #4] - bl DayCareMail_GetCapsule - add r2, r0, #0 - add r0, r4, #0 - mov r1, #0xa9 - bl SetMonData -_021EC6FA: - ldr r0, [sp] - add r1, r4, #0 - bl AddMonToParty - add r0, r5, #0 - bl ZeroBoxMonData - add r0, r6, #0 - mov r1, #0 - bl DayCareMon_SetSteps - add r0, r4, #0 - bl FreeToHeap - add r0, r7, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EC71C -MOD05_021EC71C: ; 0x021EC71C - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r0, #0 - add r4, r1, #0 - add r0, r6, #0 - add r1, r3, #0 - bl Sav2_DayCare_GetMonX - add r1, r0, #0 - add r0, r5, #0 - add r2, r4, #0 - bl MOD05_021EC668 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #0 - bl MOD05_021EC5B0 - add r0, r4, #0 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021EC744 -MOD05_021EC744: ; 0x021EC744 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r0, #4 - add r5, r1, #0 - bl AllocMonZeroed - add r7, r0, #0 - bl FUN_020690E4 - add r4, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - bl CopyPokemonToBoxPokemon - add r0, r4, #0 - mov r1, #8 - mov r2, #0 - bl GetBoxMonData - str r0, [sp] - add r0, r0, r5 - str r0, [sp] - add r0, r4, #0 - mov r1, #8 - add r2, sp, #0 - bl SetBoxMonData - add r0, r4, #0 - bl CalcBoxMonLevel - add r4, r0, #0 - add r0, r7, #0 - bl FreeToHeap - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EC78C -MOD05_021EC78C: ; 0x021EC78C - push {r4, r5, r6, lr} - add r5, r0, #0 - bl DayCareMon_GetBoxMon - add r6, r0, #0 - bl CalcBoxMonLevel - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r5, #0 - bl DayCareMon_GetSteps - add r1, r0, #0 - add r0, r6, #0 - bl MOD05_021EC744 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r0, r0, r4 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021EC7B4 -MOD05_021EC7B4: ; 0x021EC7B4 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl DayCareMon_GetBoxMon - add r4, r0, #0 - add r0, r5, #0 - bl DayCareMon_GetSteps - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021EC744 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC7D4 -MOD05_021EC7D4: ; 0x021EC7D4 - push {r4, r5, r6, lr} - sub sp, #8 - add r4, r0, #0 - add r5, r1, #0 - bl DayCareMon_GetBoxMon - add r6, r0, #0 - add r0, r4, #0 - bl MOD05_021EC78C - add r4, r0, #0 - mov r0, #0 - str r0, [sp] - mov r1, #1 - add r0, r5, #0 - add r2, r4, #0 - mov r3, #3 - str r1, [sp, #4] - bl BufferIntegerAsString - add r0, r5, #0 - mov r1, #0 - add r2, r6, #0 - bl BufferBoxMonNickname - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - add sp, #8 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC810 -MOD05_021EC810: ; 0x021EC810 - push {r4, r5, r6, lr} - sub sp, #8 - add r4, r0, #0 - add r5, r1, #0 - bl DayCareMon_GetBoxMon - add r6, r0, #0 - add r0, r4, #0 - bl MOD05_021EC78C - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0 - mov r1, #0 - add r2, r6, #0 - bl BufferBoxMonNickname - add r1, r4, #1 - mov r0, #0x64 - mul r0, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - mov r0, #0 - str r0, [sp] - mov r1, #1 - add r0, r5, #0 - add r2, r4, #0 - mov r3, #5 - str r1, [sp, #4] - bl BufferIntegerAsString - add r0, r4, #0 - add sp, #8 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021EC854 -MOD05_021EC854: ; 0x021EC854 - push {r4, lr} - add r4, r2, #0 - bl Sav2_DayCare_GetMonX - add r1, r4, #0 - bl MOD05_021EC810 - pop {r4, pc} - - thumb_func_start MOD05_021EC864 -MOD05_021EC864: ; 0x021EC864 - push {r3, r4, r5, lr} - add r5, r2, #0 - bl Sav2_DayCare_GetMonX - add r4, r0, #0 - bl DayCareMon_GetBoxMon - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021EC888 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021EC7D4 - pop {r3, r4, r5, pc} -_021EC888: - mov r0, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021EC88C -MOD05_021EC88C: ; 0x021EC88C - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - mov r1, #0 - bl MOD05_021EC458 - str r0, [r4] - add r0, r5, #0 - mov r1, #1 - bl MOD05_021EC458 - str r0, [r4, #4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC8A8 -MOD05_021EC8A8: ; 0x021EC8A8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - mov r1, #0 - mvn r1, r1 - str r1, [sp] - add r1, sp, #4 - bl MOD05_021EC88C - mov r4, #0 - add r5, sp, #4 -_021EC8BC: - ldr r0, [r5] - bl GetBoxMonGender - cmp r0, #1 - bne _021EC8C8 - str r4, [sp] -_021EC8C8: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #2 - blt _021EC8BC - mov r7, #0 - add r6, r7, #0 - add r4, sp, #4 - add r5, sp, #0xc -_021EC8D8: - ldr r0, [r4] - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - str r0, [r5] - cmp r0, #0x84 - bne _021EC8EC - add r7, r7, #1 - str r6, [sp] -_021EC8EC: - add r6, r6, #1 - add r4, r4, #4 - add r5, r5, #4 - cmp r6, #2 - blt _021EC8D8 - cmp r7, #2 - bne _021EC90E - bl LCRandom - ldr r1, _021EC940 ; =0x00007FFF - cmp r0, r1 - blo _021EC90A - mov r0, #0 - str r0, [sp] - b _021EC90E -_021EC90A: - mov r0, #1 - str r0, [sp] -_021EC90E: - ldr r0, [sp] - mov r2, #0 - lsl r1, r0, #2 - add r0, sp, #4 - ldr r0, [r0, r1] - mov r1, #6 - bl GetBoxMonData - cmp r0, #0xe5 - bne _021EC938 - bl LCRandom - ldr r1, _021EC940 ; =0x00007FFF - cmp r0, r1 - blo _021EC932 - mov r0, #0 - mvn r0, r0 - str r0, [sp] -_021EC932: - ldr r0, [sp] - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021EC938: - mov r0, #0 - mvn r0, r0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021EC940: .word 0x00007FFF - - thumb_func_start MOD05_021EC944 -MOD05_021EC944: ; 0x021EC944 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - mov r5, #0 - bl MOD05_021EC8A8 - add r1, r0, #0 - bpl _021EC960 - bl MTRandom - add r1, r0, #0 - ldr r0, [sp] - bl Sav2_DayCare_SetEggPID - pop {r3, r4, r5, r6, r7, pc} -_021EC960: - ldr r0, [sp] - bl MOD05_021EC458 - add r1, r5, #0 - add r2, r1, #0 - bl GetBoxMonData - bl GetNatureFromPersonality - mov r7, #0x96 - add r6, r0, #0 - lsl r7, r7, #4 -_021EC978: - bl MTRandom - add r4, r0, #0 - bl GetNatureFromPersonality - cmp r6, r0 - bne _021EC98A - cmp r4, #0 - bne _021EC990 -_021EC98A: - add r5, r5, #1 - cmp r5, r7 - ble _021EC978 -_021EC990: - ldr r0, [sp] - add r1, r4, #0 - bl Sav2_DayCare_SetEggPID - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EC99C -MOD05_021EC99C: ; 0x021EC99C - push {r3, r4} - sub sp, #8 - mov r2, #0xff - strb r2, [r0, r1] - mov r2, #0 - add r3, sp, #0 -_021EC9A8: - ldrb r1, [r0, r2] - add r2, r2, #1 - strb r1, [r3] - add r3, r3, #1 - cmp r2, #6 - blt _021EC9A8 - mov r2, #0 - add r4, r2, #0 - add r3, sp, #0 -_021EC9BA: - ldrb r1, [r3] - cmp r1, #0xff - beq _021EC9C4 - strb r1, [r0, r2] - add r2, r2, #1 -_021EC9C4: - add r4, r4, #1 - add r3, r3, #1 - cmp r4, #6 - blt _021EC9BA - add sp, #8 - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EC9D4 -MOD05_021EC9D4: ; 0x021EC9D4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r0, #0 - str r1, [sp] - mov r0, #0 - add r1, sp, #8 -_021EC9E0: - strb r0, [r1, r0] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #6 - blo _021EC9E0 - add r7, sp, #0xc - mov r5, #0 - add r6, sp, #8 - add r7, #2 -_021EC9F4: - bl LCRandom - mov r1, #6 - sub r1, r1, r5 - bl _s32_div_f - ldrb r0, [r6, r1] - add r1, r5, #0 - strb r0, [r7, r5] - add r0, r6, #0 - bl MOD05_021EC99C - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #3 - blo _021EC9F4 - add r6, sp, #4 - mov r5, #0 - add r6, #1 - mov r7, #0x1f -_021ECA1E: - bl LCRandom - lsr r1, r0, #0x1f - lsl r0, r0, #0x1f - sub r0, r0, r1 - ror r0, r7 - add r0, r1, r0 - strb r0, [r6, r5] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #3 - blo _021ECA1E - mov r5, #0 - add r7, sp, #4 - add r6, sp, #4 -_021ECA3E: - add r1, sp, #4 - add r1, #1 - ldrb r1, [r1, r5] - ldr r0, [sp] - bl MOD05_021EC458 - add r1, sp, #0xc - add r1, #2 - ldrb r1, [r1, r5] - cmp r1, #5 - bhi _021ECAEE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021ECA60: ; jump table - .short _021ECA6C - _021ECA60 - 2 ; case 0 - .short _021ECA82 - _021ECA60 - 2 ; case 1 - .short _021ECA98 - _021ECA60 - 2 ; case 2 - .short _021ECAAE - _021ECA60 - 2 ; case 3 - .short _021ECAC4 - _021ECA60 - 2 ; case 4 - .short _021ECADA - _021ECA60 - 2 ; case 5 -_021ECA6C: - mov r1, #0x46 - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x46 - add r2, r7, #0 - bl SetMonData - b _021ECAEE -_021ECA82: - mov r1, #0x47 - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x47 - add r2, r7, #0 - bl SetMonData - b _021ECAEE -_021ECA98: - mov r1, #0x48 - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x48 - add r2, r7, #0 - bl SetMonData - b _021ECAEE -_021ECAAE: - mov r1, #0x49 - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x49 - add r2, r7, #0 - bl SetMonData - b _021ECAEE -_021ECAC4: - mov r1, #0x4a - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x4a - add r2, r7, #0 - bl SetMonData - b _021ECAEE -_021ECADA: - mov r1, #0x4b - mov r2, #0 - bl GetBoxMonData - strb r0, [r6] - add r0, r4, #0 - mov r1, #0x4b - add r2, r7, #0 - bl SetMonData -_021ECAEE: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #3 - blo _021ECA3E - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021ECAFC -MOD05_021ECAFC: ; 0x021ECAFC - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - add r5, r1, #0 - mov r1, #5 - add r2, r4, #0 - add r6, r4, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - ldr r0, _021ECB60 ; =0x00004E20 - ldr r3, _021ECB64 ; =0x00000775 - add r2, r2, r0 - ldr r0, _021ECB68 ; =UNK05_021F7B48 - add r1, r4, #0 -_021ECB1A: - lsl r7, r1, #1 - ldrh r7, [r0, r7] - cmp r2, r7 - bne _021ECB2A - add r0, r1, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - b _021ECB34 -_021ECB2A: - add r1, r1, #1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - cmp r1, r3 - blo _021ECB1A -_021ECB34: - ldr r2, _021ECB68 ; =UNK05_021F7B48 - lsl r0, r6, #1 - ldr r3, _021ECB60 ; =0x00004E20 - mov r1, #0 - add r0, r2, r0 -_021ECB3E: - lsl r6, r1, #1 - ldrh r2, [r0, r6] - cmp r2, r3 - bhi _021ECB58 - add r1, r1, #1 - strh r2, [r5, r6] - add r2, r4, #1 - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - lsr r1, r1, #0x10 - lsr r4, r2, #0x10 - cmp r1, #0x10 - blo _021ECB3E -_021ECB58: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_021ECB60: .word 0x00004E20 -_021ECB64: .word 0x00000775 -_021ECB68: .word UNK05_021F7B48 - - thumb_func_start MOD05_021ECB6C -MOD05_021ECB6C: ; 0x021ECB6C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - add r7, r0, #0 - str r1, [sp] - mov r0, #4 - mov r1, #0xb4 - str r2, [sp, #4] - bl AllocFromHeap - add r4, r0, #0 - mov r0, #0 - add r1, r4, #0 - mov r2, #0xb4 - str r0, [sp, #0x1c] - bl MIi_CpuClearFast - add r0, r7, #0 - mov r1, #5 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x18] - add r0, r7, #0 - mov r1, #0x70 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0xc] - add r2, r4, #0 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0xc] - add r2, #0x30 - bl Species_LoadLearnsetTable - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x14] - mov r5, #0 -_021ECBC0: - lsl r0, r5, #2 - add r6, r5, #0 - str r0, [sp, #0x20] - add r0, r4, r0 - add r6, #0x36 - str r0, [sp, #0x10] - ldr r0, [sp] - add r1, r6, #0 - mov r2, #0 - bl GetBoxMonData - ldr r1, [sp, #0x20] - mov r2, #0 - str r0, [r4, r1] - ldr r0, [sp, #4] - add r1, r6, #0 - bl GetBoxMonData - ldr r1, [sp, #0x10] - str r0, [r1, #0x20] - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r5, #4 - blo _021ECBC0 - add r1, r4, #0 - add r0, r7, #0 - add r1, #0x94 - bl MOD05_021ECAFC - add r5, r0, #0 - mov r6, #0 -_021ECC00: - lsl r0, r6, #2 - ldr r1, [r4, r0] - str r0, [sp, #0x24] - cmp r1, #0 - beq _021ECC50 - mov r0, #0 - cmp r5, #0 - bls _021ECC46 -_021ECC10: - lsl r2, r0, #1 - add r2, r4, r2 - add r2, #0x94 - ldrh r2, [r2] - cmp r1, r2 - bne _021ECC3C - lsl r1, r1, #0x10 - add r0, r7, #0 - lsr r1, r1, #0x10 - bl FUN_02069698 - ldr r1, _021ECD60 ; =0x0000FFFF - cmp r0, r1 - bne _021ECC46 - ldr r1, [sp, #0x24] - add r0, r7, #0 - ldr r1, [r4, r1] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_02069708 - b _021ECC46 -_021ECC3C: - add r0, r0, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, r5 - blo _021ECC10 -_021ECC46: - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - cmp r6, #4 - blo _021ECC00 -_021ECC50: - mov r0, #0 - str r0, [sp, #8] -_021ECC54: - ldr r0, [sp, #8] - lsl r6, r0, #2 - ldr r0, [r4, r6] - cmp r0, #0 - beq _021ECCAC - mov r5, #0 -_021ECC60: - mov r0, #0x52 - lsl r0, r0, #2 - add r0, r5, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl TMHMGetMove - ldr r1, [r4, r6] - cmp r1, r0 - bne _021ECCA2 - lsl r2, r5, #0x18 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0xc] - lsr r2, r2, #0x18 - bl FUN_0206A16C - cmp r0, #0 - beq _021ECCA2 - ldr r1, [r4, r6] - add r0, r7, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_02069698 - ldr r1, _021ECD60 ; =0x0000FFFF - cmp r0, r1 - bne _021ECCA2 - ldr r1, [r4, r6] - add r0, r7, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_02069708 -_021ECCA2: - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r5, #0x64 - blo _021ECC60 -_021ECCAC: - ldr r0, [sp, #8] - add r0, r0, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #8] - cmp r0, #4 - blo _021ECC54 - mov r6, #0 -_021ECCBC: - lsl r1, r6, #2 - ldr r0, [r4, r1] - cmp r0, #0 - beq _021ECCFC - mov r3, #0 -_021ECCC6: - lsl r2, r3, #2 - add r2, r4, r2 - ldr r0, [r4, r1] - ldr r2, [r2, #0x20] - cmp r0, r2 - bne _021ECCE8 - cmp r0, #0 - beq _021ECCE8 - ldr r2, [sp, #0x1c] - add r5, r2, #0 - add r5, r5, #1 - lsl r5, r5, #0x10 - lsr r5, r5, #0x10 - lsl r2, r2, #2 - str r5, [sp, #0x1c] - add r2, r4, r2 - str r0, [r2, #0x10] -_021ECCE8: - add r0, r3, #1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - cmp r3, #4 - blo _021ECCC6 - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - cmp r6, #4 - blo _021ECCBC -_021ECCFC: - mov r6, #0 -_021ECCFE: - lsl r0, r6, #2 - add r5, r4, r0 - ldr r3, [r5, #0x10] - cmp r3, #0 - beq _021ECD54 - ldr r0, [sp, #0x14] - mov r2, #0 - cmp r0, #0 - bls _021ECD4A -_021ECD10: - lsl r0, r2, #1 - add r0, r4, r0 - ldrh r1, [r0, #0x30] - cmp r1, #0 - beq _021ECD3E - ldr r0, [r5, #0x10] - cmp r0, r1 - bne _021ECD3E - lsl r1, r3, #0x10 - add r0, r7, #0 - lsr r1, r1, #0x10 - bl FUN_02069698 - ldr r1, _021ECD60 ; =0x0000FFFF - cmp r0, r1 - bne _021ECD4A - ldr r1, [r5, #0x10] - add r0, r7, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_02069708 - b _021ECD4A -_021ECD3E: - add r0, r2, #1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - ldr r0, [sp, #0x14] - cmp r2, r0 - blo _021ECD10 -_021ECD4A: - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - cmp r6, #4 - blo _021ECCFE -_021ECD54: - add r0, r4, #0 - bl FreeToHeap - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - nop -_021ECD60: .word 0x0000FFFF - - thumb_func_start MOD05_021ECD64 -MOD05_021ECD64: ; 0x021ECD64 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - bl Sav2_DayCare_SetEggPID - add r0, r4, #0 - mov r1, #0 - bl Sav2_DayCare_SetEggCycleCounter - pop {r4, pc} - - thumb_func_start MOD05_021ECD78 -MOD05_021ECD78: ; 0x021ECD78 - push {r4, r5, r6, lr} - sub sp, #8 - add r5, r0, #0 - add r0, r1, #0 - add r1, sp, #0 - bl MOD05_021EC88C - ldr r2, _021ECDE8 ; =UNK05_021F7B12 - mov r3, #0 - mov r1, #6 -_021ECD8C: - add r0, r3, #0 - mul r0, r1 - ldrh r0, [r2, r0] - cmp r5, r0 - bne _021ECD9A - add r6, r3, #0 - b _021ECDA4 -_021ECD9A: - add r0, r3, #1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - cmp r3, #9 - blo _021ECD8C -_021ECDA4: - cmp r3, #9 - bne _021ECDAE - add sp, #8 - add r0, r5, #0 - pop {r4, r5, r6, pc} -_021ECDAE: - ldr r0, [sp] - mov r1, #6 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, [sp, #4] - mov r1, #6 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r0, #6 - add r1, r6, #0 - mul r1, r0 - ldr r0, _021ECDEC ; =UNK05_021F7B14 - ldrh r0, [r0, r1] - cmp r4, r0 - beq _021ECDE0 - cmp r2, r0 - beq _021ECDE0 - ldr r0, _021ECDF0 ; =UNK05_021F7B16 - ldrh r5, [r0, r1] -_021ECDE0: - add r0, r5, #0 - add sp, #8 - pop {r4, r5, r6, pc} - nop -_021ECDE8: .word UNK05_021F7B12 -_021ECDEC: .word UNK05_021F7B14 -_021ECDF0: .word UNK05_021F7B16 - - thumb_func_start MOD05_021ECDF4 -MOD05_021ECDF4: ; 0x021ECDF4 - push {r3, r4, r5, lr} - sub sp, #8 - add r4, r0, #0 - add r0, r1, #0 - add r1, sp, #0 - bl MOD05_021EC88C - ldr r0, [sp] - mov r1, #6 - mov r2, #0 - bl GetBoxMonData - add r5, r0, #0 - ldr r0, [sp, #4] - mov r1, #6 - mov r2, #0 - bl GetBoxMonData - cmp r5, #0xec - beq _021ECE20 - cmp r0, #0xec - bne _021ECE3A -_021ECE20: - mov r1, #0x56 - add r0, r4, #0 - lsl r1, r1, #2 - bl FUN_02069698 - ldr r1, _021ECE40 ; =0x0000FFFF - cmp r0, r1 - bne _021ECE3A - mov r1, #0x56 - add r0, r4, #0 - lsl r1, r1, #2 - bl FUN_02069708 -_021ECE3A: - add sp, #8 - pop {r3, r4, r5, pc} - nop -_021ECE40: .word 0x0000FFFF - - thumb_func_start MOD05_021ECE44 -MOD05_021ECE44: ; 0x021ECE44 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - add r1, sp, #4 - str r0, [sp] - bl MOD05_021EC88C - mov r4, #0 - add r7, sp, #4 -_021ECE56: - lsl r6, r4, #2 - ldr r0, [r7, r6] - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - lsl r1, r4, #1 - add r2, sp, #0xc - strh r0, [r2, r1] - add r0, r2, #0 - ldrh r0, [r0, r1] - cmp r0, #0x84 - bne _021ECE7A - mov r0, #1 - eor r0, r4 - strb r0, [r5] - strb r4, [r5, #1] - b _021ECE8C -_021ECE7A: - ldr r0, [r7, r6] - bl GetBoxMonGender - cmp r0, #1 - bne _021ECE8C - mov r0, #1 - strb r4, [r5] - eor r0, r4 - strb r0, [r5, #1] -_021ECE8C: - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #2 - blo _021ECE56 - ldrb r0, [r5] - lsl r1, r0, #1 - add r0, sp, #0xc - ldrh r0, [r0, r1] - bl ReadFromPersonalPmsNarc - add r4, r0, #0 - cmp r4, #0x1d - bne _021ECEBC - ldr r0, [sp] - bl Sav2_DayCare_GetEggPID - mov r1, #2 - lsl r1, r1, #0xe - tst r0, r1 - beq _021ECEBA - mov r4, #0x20 - b _021ECEBC -_021ECEBA: - mov r4, #0x1d -_021ECEBC: - ldr r0, _021ECF08 ; =0x0000013A - cmp r4, r0 - bne _021ECED6 - ldr r0, [sp] - bl Sav2_DayCare_GetEggPID - mov r1, #2 - lsl r1, r1, #0xe - tst r0, r1 - beq _021ECED4 - ldr r4, _021ECF0C ; =0x00000139 - b _021ECED6 -_021ECED4: - ldr r4, _021ECF08 ; =0x0000013A -_021ECED6: - ldr r0, _021ECF10 ; =0x000001EA - cmp r4, r0 - bne _021ECEDE - sub r4, r0, #1 -_021ECEDE: - ldrb r0, [r5, #1] - lsl r1, r0, #1 - add r0, sp, #0xc - ldrh r0, [r0, r1] - cmp r0, #0x84 - bne _021ECF02 - ldrb r0, [r5] - lsl r1, r0, #2 - add r0, sp, #4 - ldr r0, [r0, r1] - bl GetBoxMonGender - cmp r0, #1 - beq _021ECF02 - ldrb r1, [r5, #1] - ldrb r0, [r5] - strb r0, [r5, #1] - strb r1, [r5] -_021ECF02: - add r0, r4, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021ECF08: .word 0x0000013A -_021ECF0C: .word 0x00000139 -_021ECF10: .word 0x000001EA - - thumb_func_start MOD05_SetEggStats -MOD05_SetEggStats: ; 0x021ECF14 - push {r0, r1, r2, r3} - push {r4, r5, r6, lr} - sub sp, #0x20 - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - mov r1, #0x13 ; BASE_EGG_CYCLES - add r4, r3, #0 - bl GetMonBaseStat - add r1, sp, #0x10 - strb r0, [r1] - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - add r0, r5, #0 - add r1, r6, #0 - mov r2, #1 - mov r3, #0x20 - bl CreateMon - mov r1, #0 - add r0, sp, #0x10 - strb r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #4] - add r0, r5, #0 - mov r1, #0x9a - add r2, sp, #0x14 - bl SetMonData - add r0, r5, #0 - mov r1, #9 - add r2, sp, #0x10 - bl SetMonData - add r2, sp, #0x10 - add r0, r5, #0 - mov r1, #0x9b - add r2, #2 - bl SetMonData - add r0, sp, #0x30 - ldrb r0, [r0, #8] - cmp r0, #0 - beq _021ECF7E - add r0, r5, #0 - mov r1, #0x97 - add r2, sp, #0x38 - bl SetMonData -_021ECF7E: - add r2, sp, #0x10 - mov r1, #1 - add r0, sp, #0x10 - strb r1, [r0, #1] - add r0, r5, #0 - mov r1, #0x4c - add r2, #1 - bl SetMonData - ldr r0, _021ED008 ; =0x000001EE - mov r1, #4 - bl GetSpeciesName - add r6, r0, #0 - add r0, r5, #0 - mov r1, #0x76 - add r2, r6, #0 - bl SetMonData - add r0, r6, #0 - bl String_dtor - ldr r0, [sp, #0x40] - cmp r0, #4 - bne _021ECFEE - add r0, r4, #0 - bl PlayerProfile_GetTrainerID - str r0, [sp, #0x1c] - add r0, r4, #0 - bl PlayerProfile_GetTrainerGender - str r0, [sp, #0x18] - add r0, r4, #0 - mov r1, #0x20 - bl PlayerProfile_GetPlayerName_NewString - add r6, r0, #0 - add r0, r5, #0 - mov r1, #0x90 - add r2, r6, #0 - bl SetMonData - add r0, r5, #0 - mov r1, #7 - add r2, sp, #0x1c - bl SetMonData - add r0, r5, #0 - mov r1, #0x9c - add r2, sp, #0x18 - bl SetMonData - add r0, r6, #0 - bl String_dtor -_021ECFEE: - mov r0, #0 - str r0, [sp] - ldr r2, [sp, #0x40] - ldr r3, [sp, #0x44] - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0208089C - add sp, #0x20 - pop {r4, r5, r6} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4, 0 -_021ED008: .word 0x000001EE - - thumb_func_start MOD05_DayCare_CreateEgg -MOD05_DayCare_CreateEgg: ; 0x021ED00C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r1, [sp, #0x10] - add r7, r0, #0 - ldr r0, [sp, #0x10] - mov r1, #0x13 ; BASE_EGG_CYCLES - add r5, r2, #0 - add r6, r3, #0 - bl GetMonBaseStat - add r1, sp, #0x14 - strb r0, [r1] - add r0, r5, #0 - bl Sav2_DayCare_GetEggPID - add r4, r0, #0 - add r0, r5, #0 - bl Sav2_DayCare_MasudaCheck - cmp r0, #0 - beq _021ED05E - add r0, r6, #0 - add r1, r4, #0 - bl CalcShininessByOtIdAndPersonality - cmp r0, #0 - bne _021ED05E - mov r5, #0 -_021ED044: - add r0, r4, #0 - bl PRandom - add r4, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - bl CalcShininessByOtIdAndPersonality - cmp r0, #0 - bne _021ED05E - add r5, r5, #1 - cmp r5, #4 - blt _021ED044 -_021ED05E: - mov r2, #1 - str r2, [sp] - str r4, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldr r1, [sp, #0x10] - add r0, r7, #0 - mov r3, #0x20 - bl CreateMon - add r2, sp, #0x14 - mov r1, #0 - add r0, sp, #0x14 - strb r1, [r0, #1] - mov r1, #4 - strh r1, [r0, #2] - add r0, r7, #0 - mov r1, #0x9a - add r2, #2 - bl SetMonData - add r0, r7, #0 - mov r1, #9 - add r2, sp, #0x14 - bl SetMonData - add r2, sp, #0x14 - add r0, r7, #0 - mov r1, #0x9b - add r2, #1 - bl SetMonData - add r0, r7, #0 - mov r1, #0x70 - add r2, sp, #0x30 - bl SetMonData - ldr r0, _021ED0C8 ; =0x000001EE - mov r1, #4 - bl GetSpeciesName - add r4, r0, #0 - add r0, r7, #0 - mov r1, #0x76 - add r2, r4, #0 - bl SetMonData - add r0, r4, #0 - bl String_dtor - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021ED0C8: .word 0x000001EE - - thumb_func_start MOD05_DayCare_GiveEggToPlayer -MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - mov r0, #4 - str r1, [sp, #4] - add r7, r2, #0 - bl AllocMonZeroed - add r1, sp, #0x10 - add r4, r0, #0 - add r0, r5, #0 - add r1, #1 - bl MOD05_021ECE44 - add r1, r5, #0 - bl MOD05_021ECD78 - add r6, r0, #0 - add r0, r7, #0 - bl PlayerProfile_GetTrainerID - add r1, sp, #0x10 - str r0, [sp, #8] - ldrb r1, [r1, #1] - add r0, r5, #0 - bl MOD05_021EC458 - mov r1, #0x70 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - ldr r3, [sp, #8] - add r0, r4, #0 - add r1, r6, #0 - add r2, r5, #0 - bl MOD05_DayCare_CreateEgg - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021EC9D4 - add r1, sp, #0x10 - ldrb r1, [r1, #2] - add r0, r5, #0 - bl MOD05_021EC458 - add r1, sp, #0x10 - str r0, [sp, #0xc] - ldrb r1, [r1, #1] - add r0, r5, #0 - bl MOD05_021EC458 - add r2, r0, #0 - ldr r1, [sp, #0xc] - add r0, r4, #0 - bl MOD05_021ECB6C - mov r0, #1 - mov r1, #0 - bl FUN_02015CF8 - add r3, r0, #0 - mov r0, #4 - str r0, [sp] - add r0, r4, #0 - add r1, r7, #0 - mov r2, #3 - bl FUN_0208089C - cmp r6, #0xac - bne _021ED168 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021ECDF4 -_021ED168: - mov r1, #1 - add r0, sp, #0x10 - strb r1, [r0] - add r0, r4, #0 - mov r1, #0x4c - add r2, sp, #0x10 - bl SetMonData - ldr r0, [sp, #4] - add r1, r4, #0 - bl AddMonToParty - add r0, r5, #0 - bl MOD05_021ECD64 - add r0, r4, #0 - bl FreeToHeap - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021ED190 -MOD05_021ED190: ; 0x021ED190 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl GetPartyCount - add r6, r0, #0 - mov r4, #0 - cmp r6, #0 - ble _021ED1E0 - mov r7, #0xac -_021ED1A2: - add r0, r5, #0 - add r1, r4, #0 - bl GetPartyMonByIndex - add r1, r7, #0 - mov r2, #0 - bl GetMonData - cmp r0, #0 - bne _021ED1D6 - add r0, r5, #0 - add r1, r4, #0 - bl GetPartyMonByIndex - mov r1, #0xa - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x28 - beq _021ED1D2 - cmp r0, #0x31 - bne _021ED1D6 -_021ED1D2: - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_021ED1D6: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, r6 - blt _021ED1A2 -_021ED1E0: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021ED1E4 -MOD05_021ED1E4: ; 0x021ED1E4 - push {r4, r5, r6, r7} - mov r4, #0 - add r3, r4, #0 -_021ED1EA: - ldrh r7, [r0] - add r5, r3, #0 - add r6, r1, #0 -_021ED1F0: - ldrh r2, [r6] - cmp r7, r2 - bne _021ED1FC - mov r0, #1 - pop {r4, r5, r6, r7} - bx lr -_021ED1FC: - add r5, r5, #1 - add r6, r6, #2 - cmp r5, #2 - blt _021ED1F0 - add r4, r4, #1 - add r0, r0, #2 - cmp r4, #2 - blt _021ED1EA - mov r0, #0 - pop {r4, r5, r6, r7} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021ED214 -MOD05_021ED214: ; 0x021ED214 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - mov r0, #0 - str r0, [sp, #4] - add r0, sp, #0x10 - add r4, sp, #0x18 - str r0, [sp] - add r7, sp, #8 - add r6, sp, #0x1c -_021ED228: - ldr r0, [r5] - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - strh r0, [r4] - ldr r0, [r5] - mov r1, #7 - mov r2, #0 - bl GetBoxMonData - ldr r1, [sp] - str r0, [r1] - mov r1, #0 - ldr r0, [r5] - add r2, r1, #0 - bl GetBoxMonData - add r1, r0, #0 - ldrh r0, [r4] - bl GetGenderBySpeciesAndPersonality - stmia r7!, {r0} - ldrh r0, [r4] - mov r1, #0x16 ; BASE_EGG_GROUP_1 - bl GetMonBaseStat - strh r0, [r6] - ldrh r0, [r4] - mov r1, #0x17 ; GASE_EGG_GROUP_2 - bl GetMonBaseStat - strh r0, [r6, #2] - ldr r0, [sp] - add r5, r5, #4 - add r0, r0, #4 - str r0, [sp] - ldr r0, [sp, #4] - add r4, r4, #2 - add r0, r0, #1 - add r6, r6, #4 - str r0, [sp, #4] - cmp r0, #2 - blo _021ED228 - add r0, sp, #8 - ldrh r1, [r0, #0x14] - cmp r1, #0xf - beq _021ED28E - ldrh r0, [r0, #0x18] - cmp r0, #0xf - bne _021ED294 -_021ED28E: - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021ED294: - cmp r1, #0xd - bne _021ED2A2 - cmp r0, #0xd - bne _021ED2A2 - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021ED2A2: - cmp r1, #0xd - beq _021ED2AA - cmp r0, #0xd - bne _021ED2BE -_021ED2AA: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - cmp r1, r0 - bne _021ED2B8 - add sp, #0x24 - mov r0, #0x14 - pop {r4, r5, r6, r7, pc} -_021ED2B8: - add sp, #0x24 - mov r0, #0x32 - pop {r4, r5, r6, r7, pc} -_021ED2BE: - ldr r1, [sp, #0xc] - ldr r0, [sp, #8] - cmp r0, r1 - bne _021ED2CC - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021ED2CC: - cmp r0, #2 - beq _021ED2D4 - cmp r1, #2 - bne _021ED2DA -_021ED2D4: - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021ED2DA: - add r0, sp, #0x1c - add r1, sp, #0x20 - bl MOD05_021ED1E4 - cmp r0, #0 - bne _021ED2EC - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021ED2EC: - add r0, sp, #8 - ldrh r1, [r0, #0x10] - ldrh r0, [r0, #0x12] - cmp r1, r0 - bne _021ED30A - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - cmp r1, r0 - beq _021ED304 - add sp, #0x24 - mov r0, #0x46 - pop {r4, r5, r6, r7, pc} -_021ED304: - add sp, #0x24 - mov r0, #0x32 - pop {r4, r5, r6, r7, pc} -_021ED30A: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - cmp r1, r0 - beq _021ED318 - add sp, #0x24 - mov r0, #0x32 - pop {r4, r5, r6, r7, pc} -_021ED318: - mov r0, #0x14 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED320 -MOD05_021ED320: ; 0x021ED320 - push {r3, lr} - sub sp, #8 - add r1, sp, #0 - bl MOD05_021EC88C - add r0, sp, #0 - bl MOD05_021ED214 - add sp, #8 - pop {r3, pc} - - thumb_func_start MOD05_021ED334 -MOD05_021ED334: ; 0x021ED334 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl Script_GetDay - add r5, r0, #0 - add r0, r4, #0 - bl Script_GetMonth - mov r1, #0x64 - mul r1, r0 - add r0, r4, #0 - add r5, r5, r1 - bl FUN_0204B33C - cmp r0, #0 - beq _021ED358 - mov r0, #0xff - pop {r3, r4, r5, pc} -_021ED358: - ldr r2, _021ED374 ; =UNK05_021F7AF8 - mov r1, #0 -_021ED35C: - ldrh r0, [r2] - cmp r5, r0 - bne _021ED366 - mov r0, #0xe6 - pop {r3, r4, r5, pc} -_021ED366: - add r1, r1, #1 - add r2, r2, #2 - cmp r1, #0xd - blo _021ED35C - mov r0, #0xff - pop {r3, r4, r5, pc} - nop -_021ED374: .word UNK05_021F7AF8 - - thumb_func_start MOD05_021ED378 -MOD05_021ED378: ; 0x021ED378 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r7, r1, #0 - add r1, sp, #8 - str r0, [sp] - str r2, [sp, #4] - bl MOD05_021EC88C - mov r6, #0 - add r4, r6, #0 - add r5, sp, #8 -_021ED38E: - ldr r0, [r5] - mov r1, #0xab - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021ED3AC - ldr r0, [sp] - add r1, r4, #0 - bl Sav2_DayCare_GetMonX - mov r1, #1 - bl DayCareMon_AddSteps - add r6, r6, #1 -_021ED3AC: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #2 - blo _021ED38E - ldr r0, [sp] - bl Sav2_DayCare_GetEggPID - cmp r0, #0 - bne _021ED3F8 - cmp r6, #2 - bne _021ED3F8 - ldr r0, [sp] - mov r1, #1 - bl Sav2_DayCare_GetMonX - bl DayCareMon_GetSteps - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0xff - bne _021ED3F8 - ldr r0, [sp] - bl MOD05_021ED320 - add r4, r0, #0 - bl LCRandom - mov r1, #0x64 - mul r1, r0 - add r0, r1, #0 - ldr r1, _021ED498 ; =0x0000FFFF - bl _u32_div_f - cmp r4, r0 - bls _021ED3F8 - ldr r0, [sp] - bl MOD05_021EC944 -_021ED3F8: - ldr r0, [sp] - bl Sav2_DayCare_GetEggCycleCounter - add r4, r0, #0 - ldr r0, [sp] - add r1, r4, #1 - bl Sav2_DayCare_SetEggCycleCounter - ldr r0, [sp, #4] - bl MOD05_021ED334 - add r1, r4, #1 - cmp r1, r0 - bne _021ED490 - ldr r0, [sp] - mov r1, #0 - bl Sav2_DayCare_SetEggCycleCounter - add r0, r7, #0 - bl MOD05_021ED190 - add r6, r0, #0 - add r0, r7, #0 - mov r5, #0 - bl GetPartyCount - cmp r0, #0 - bls _021ED490 -_021ED430: - add r0, r7, #0 - add r1, r5, #0 - bl GetPartyMonByIndex - mov r1, #0x4c - mov r2, #0 - add r4, r0, #0 - bl GetMonData - cmp r0, #0 - beq _021ED484 - add r0, r4, #0 - mov r1, #3 - mov r2, #0 - bl GetMonData - cmp r0, #0 - bne _021ED484 - add r0, r4, #0 - mov r1, #9 - mov r2, #0 - bl GetMonData - str r0, [sp, #0x10] - cmp r0, #0 - beq _021ED47E - cmp r0, r6 - blo _021ED46E - sub r0, r0, r6 - str r0, [sp, #0x10] - b _021ED472 -_021ED46E: - sub r0, r0, #1 - str r0, [sp, #0x10] -_021ED472: - add r0, r4, #0 - mov r1, #9 - add r2, sp, #0x10 - bl SetMonData - b _021ED484 -_021ED47E: - add sp, #0x14 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021ED484: - add r0, r7, #0 - add r5, r5, #1 - bl GetPartyCount - cmp r5, r0 - blo _021ED430 -_021ED490: - mov r0, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021ED498: .word 0x0000FFFF - - thumb_func_start MOD05_021ED49C -MOD05_021ED49C: ; 0x021ED49C - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl GetPartyCount - add r6, r0, #0 - mov r5, #0 - cmp r6, #0 - ble _021ED4DA -_021ED4AC: - add r0, r7, #0 - add r1, r5, #0 - bl GetPartyMonByIndex - mov r1, #0x4c - mov r2, #0 - add r4, r0, #0 - bl GetMonData - cmp r0, #0 - beq _021ED4D4 - add r0, r4, #0 - mov r1, #9 - mov r2, #0 - bl GetMonData - cmp r0, #0 - bne _021ED4D4 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021ED4D4: - add r5, r5, #1 - cmp r5, r6 - blt _021ED4AC -_021ED4DA: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED4E0 -MOD05_021ED4E0: ; 0x021ED4E0 - push {r4, lr} - sub sp, #8 - add r4, r1, #0 - add r1, sp, #0 - bl MOD05_021EC88C - ldr r0, [sp] - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021ED50E - ldr r2, [sp] - add r0, r4, #0 - mov r1, #0 - bl BufferBoxMonNickname - ldr r2, [sp] - add r0, r4, #0 - mov r1, #2 - bl BufferBoxMonOTName -_021ED50E: - ldr r0, [sp, #4] - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - beq _021ED526 - ldr r2, [sp, #4] - add r0, r4, #0 - mov r1, #1 - bl BufferBoxMonNickname -_021ED526: - add sp, #8 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED52C -MOD05_021ED52C: ; 0x021ED52C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r1, #0 - add r1, sp, #0x18 - ldrb r6, [r1, #0x10] - add r5, r0, #0 - add r7, r2, #0 - add r1, r6, #0 - str r3, [sp, #8] - bl Sav2_DayCare_GetMonX - str r0, [sp, #0xc] - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021EC458 - add r5, r0, #0 - ldr r0, [sp, #0x2c] - add r1, r4, #0 - add r2, r5, #0 - bl BufferBoxMonNickname - ldr r0, [sp, #0xc] - bl DayCareMon_GetSteps - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021EC744 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [sp, #0x2c] - add r1, r7, #0 - mov r3, #3 - bl BufferIntegerAsString - add r0, r5, #0 - mov r1, #0x6f - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #2 - beq _021ED5B4 - add r0, r5, #0 - mov r1, #5 - mov r2, #0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x1d - beq _021ED5A4 - cmp r0, #0x20 - bne _021ED5B4 -_021ED5A4: - add r0, r5, #0 - mov r1, #0x4d - mov r2, #0 - bl GetBoxMonData - cmp r0, #0 - bne _021ED5B4 - mov r4, #2 -_021ED5B4: - ldr r0, [sp, #0x2c] - ldr r1, [sp, #8] - add r2, r4, #0 - bl BufferGenderSymbol - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED5C4 -MOD05_021ED5C4: ; 0x021ED5C4 - push {r3, r4, r5, lr} - add r5, r2, #0 - bl GetPartyMonByIndex - add r4, r0, #0 - bl FUN_020690E4 - add r2, r0, #0 - add r0, r5, #0 - mov r1, #0 - bl BufferBoxMonNickname - add r0, r4, #0 - mov r1, #5 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021ED5EC -MOD05_021ED5EC: ; 0x021ED5EC - push {r4, lr} - add r4, r0, #0 - bl Sav2_DayCare_GetEggPID - cmp r0, #0 - beq _021ED5FC - mov r0, #1 - pop {r4, pc} -_021ED5FC: - add r0, r4, #0 - bl MOD05_021EC464 - cmp r0, #0 - beq _021ED60E - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, pc} -_021ED60E: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED614 -MOD05_021ED614: ; 0x021ED614 - cmp r0, #0x14 - bhi _021ED620 - bhs _021ED632 - cmp r0, #0 - beq _021ED62E - b _021ED63E -_021ED620: - cmp r0, #0x32 - bhi _021ED628 - beq _021ED636 - b _021ED63E -_021ED628: - cmp r0, #0x46 - beq _021ED63A - b _021ED63E -_021ED62E: - mov r0, #3 - bx lr -_021ED632: - mov r0, #2 - bx lr -_021ED636: - mov r0, #1 - bx lr -_021ED63A: - mov r0, #0 - bx lr -_021ED63E: - mov r0, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021ED644 -MOD05_021ED644: ; 0x021ED644 - push {r3, lr} - bl MOD05_021ED320 - bl MOD05_021ED614 - pop {r3, pc} - - thumb_func_start MOD05_021ED650 -MOD05_021ED650: ; 0x021ED650 - push {r4, r5, r6, r7, lr} - sub sp, #0x3c - add r4, r0, #0 - add r5, r1, #0 - mov r0, #8 - bl String_ctor - str r0, [sp, #0x10] - add r0, r5, #0 - bl AllocMonZeroed - add r6, r0, #0 - add r0, r4, #0 - mov r1, #5 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x14] - mov r5, #0 - add r7, sp, #0x34 -_021ED67C: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x36 - mov r2, #0 - bl GetMonData - lsl r1, r5, #1 - strh r0, [r7, r1] - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x3a - mov r2, #0 - bl GetMonData - add r1, sp, #0x30 - strb r0, [r1, r5] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #4 - blo _021ED67C - mov r1, #0 - add r0, r4, #0 - add r2, r1, #0 - bl GetMonData - add r7, r0, #0 - mov r5, #0 -_021ED6B4: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x46 - mov r2, #0 - bl GetMonData - add r1, sp, #0x24 - add r1, #2 - strb r0, [r1, r5] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #6 - blo _021ED6B4 - add r0, r4, #0 - mov r1, #0xc - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #9] - add r0, r4, #0 - mov r1, #0x79 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #8] - add r0, r4, #0 - mov r1, #0xb - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #7] - add r0, r4, #0 - mov r1, #0x99 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #0xa] - add r0, r4, #0 - mov r1, #0x6e - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #5] - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r1, #0x90 - bl GetMonData - add r0, r4, #0 - mov r1, #0x9c - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #3] - add r0, r4, #0 - mov r1, #7 - mov r2, #0 - bl GetMonData - str r0, [sp, #0x2c] - add r0, r4, #0 - mov r1, #0x70 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #4] - ldr r1, _021ED93C ; =0x000001EA - ldr r0, [sp, #0x14] - cmp r0, r1 - bne _021ED788 - add r0, r4, #0 - mov r1, #0x97 - mov r2, #0 - bl GetMonData - add r5, r0, #0 - mov r0, #2 - mov r1, #1 - bl FUN_02015CF8 - cmp r5, r0 - bne _021ED788 - ldr r0, [sp, #0x2c] - add r1, r7, #0 - bl CalcShininessByOtIdAndPersonality - cmp r0, #0 - beq _021ED788 -_021ED774: - add r0, r7, #0 - bl PRandom - add r7, r0, #0 - ldr r0, [sp, #0x2c] - add r1, r7, #0 - bl CalcShininessByOtIdAndPersonality - cmp r0, #0 - bne _021ED774 -_021ED788: - mov r2, #1 - str r2, [sp] - str r7, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldr r1, [sp, #0x14] - add r0, r6, #0 - mov r3, #0x20 - bl CreateMon - mov r5, #0 - add r7, sp, #0x34 -_021ED7A2: - add r1, r5, #0 - lsl r2, r5, #1 - add r0, r6, #0 - add r1, #0x36 - add r2, r7, r2 - bl SetMonData - add r1, r5, #0 - add r2, sp, #0x30 - add r0, r6, #0 - add r1, #0x3a - add r2, r2, r5 - bl SetMonData - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #4 - blo _021ED7A2 - add r7, sp, #0x24 - mov r5, #0 - add r7, #2 -_021ED7CE: - add r1, r5, #0 - add r0, r6, #0 - add r1, #0x46 - add r2, r7, r5 - bl SetMonData - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #6 - blo _021ED7CE - add r2, sp, #0x20 - add r0, r6, #0 - mov r1, #0xc - add r2, #1 - bl SetMonData - add r0, r6, #0 - mov r1, #0x79 - add r2, sp, #0x20 - bl SetMonData - add r2, sp, #0x1c - add r0, r6, #0 - mov r1, #0xb - add r2, #3 - bl SetMonData - add r2, sp, #0x1c - mov r1, #0x78 - add r0, sp, #0x18 - strb r1, [r0, #6] - add r0, r6, #0 - mov r1, #9 - add r2, #2 - bl SetMonData - add r2, sp, #0x20 - add r0, r6, #0 - mov r1, #0x99 - add r2, #2 - bl SetMonData - add r2, sp, #0x1c - add r0, r6, #0 - mov r1, #0x6e - add r2, #1 - bl SetMonData - ldr r2, [sp, #0x10] - add r0, r6, #0 - mov r1, #0x90 - bl SetMonData - add r2, sp, #0x18 - add r0, r6, #0 - mov r1, #0x9c - add r2, #3 - bl SetMonData - add r0, r6, #0 - mov r1, #7 - add r2, sp, #0x2c - bl SetMonData - add r0, r6, #0 - mov r1, #0x70 - add r2, sp, #0x1c - bl SetMonData - add r0, r4, #0 - mov r1, #0x97 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strh r0, [r1, #0xc] - add r0, r4, #0 - mov r1, #0x91 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #2] - add r0, r4, #0 - mov r1, #0x92 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #1] - add r0, r4, #0 - mov r1, #0x93 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1] - add r0, r6, #0 - mov r1, #0x97 - add r2, sp, #0x24 - bl SetMonData - add r2, sp, #0x18 - add r0, r6, #0 - mov r1, #0x91 - add r2, #2 - bl SetMonData - add r2, sp, #0x18 - add r0, r6, #0 - mov r1, #0x92 - add r2, #1 - bl SetMonData - add r0, r6, #0 - mov r1, #0x93 - add r2, sp, #0x18 - bl SetMonData - add r0, r4, #0 - mov r1, #0x98 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strh r0, [r1, #0xc] - add r0, r4, #0 - mov r1, #0x94 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #2] - add r0, r4, #0 - mov r1, #0x95 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #1] - add r0, r4, #0 - mov r1, #0x96 - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1] - add r0, r6, #0 - mov r1, #0x98 - add r2, sp, #0x24 - bl SetMonData - add r2, sp, #0x18 - add r0, r6, #0 - mov r1, #0x94 - add r2, #2 - bl SetMonData - add r2, sp, #0x18 - add r0, r6, #0 - mov r1, #0x95 - add r2, #1 - bl SetMonData - add r0, r6, #0 - mov r1, #0x96 - add r2, sp, #0x18 - bl SetMonData - add r0, r6, #0 - add r1, r4, #0 - bl CopyPokemonToPokemon - ldr r0, [sp, #0x10] - bl String_dtor - add r0, r6, #0 - bl FreeToHeap - add sp, #0x3c - pop {r4, r5, r6, r7, pc} - nop -_021ED93C: .word 0x000001EA - - thumb_func_start MOD05_021ED940 -MOD05_021ED940: ; 0x021ED940 - push {r4, r5, lr} - sub sp, #0x1c - mov r3, #0x46 - add r2, sp, #0 - strb r3, [r2, #3] - mov r5, #0 - strb r5, [r2, #2] - mov r3, #4 - strb r3, [r2, #1] - add r4, r0, #0 - strb r5, [r2] - bl MOD05_021ED650 - add r2, sp, #0 - add r0, r4, #0 - mov r1, #0x4c - add r2, #3 - bl SetMonData - add r0, r4, #0 - mov r1, #5 - add r2, r5, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r5, #0 - add r2, sp, #4 - bl GetSpeciesNameIntoArray - add r0, r4, #0 - mov r1, #0x74 - add r2, sp, #4 - bl SetMonData - add r2, sp, #0 - add r0, r4, #0 - mov r1, #0x4d - add r2, #2 - bl SetMonData - add r2, sp, #0 - add r0, r4, #0 - mov r1, #0x9a - add r2, #1 - bl SetMonData - add r0, r4, #0 - mov r1, #0x9b - add r2, sp, #0 - bl SetMonData - add r0, r4, #0 - bl CalcMonLevelAndStats - add sp, #0x1c - pop {r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED9B4 -MOD05_021ED9B4: ; 0x021ED9B4 - push {r3, lr} - bl MOD05_021ED214 - bl MOD05_021ED614 - pop {r3, pc} - - thumb_func_start MOD05_021ED9C0 -MOD05_021ED9C0: ; 0x021ED9C0 - push {r3, r4, r5, lr} - mov r2, #0 - mov r1, #4 - add r3, r2, #0 - add r5, r0, #0 - bl MOD05_021E4BE8 - add r4, r0, #0 - str r5, [r4] - bl MOD05_021ED9EC - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021ED9DC -MOD05_021ED9DC: ; 0x021ED9DC - push {r4, lr} - add r4, r0, #0 - bl MOD05_021EDA28 - add r0, r4, #0 - bl MOD05_021E4C00 - pop {r4, pc} - - thumb_func_start MOD05_021ED9EC -MOD05_021ED9EC: ; 0x021ED9EC - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4] - mov r1, #4 - mov r2, #0x57 - bl MOD05_021E5078 - ldr r0, [r4] - mov r1, #3 - mov r2, #6 - mov r3, #1 - bl MOD05_021E50D4 - mov r0, #3 - str r0, [sp] - mov r3, #0 - mov r1, #4 - ldr r0, _021EDA24 ; =UNK05_021F8A48 - str r3, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - add r2, r1, #0 - bl MOD05_021E4EFC - add sp, #0xc - pop {r3, r4, pc} - nop -_021EDA24: .word UNK05_021F8A48 - - thumb_func_start MOD05_021EDA28 -MOD05_021EDA28: ; 0x021EDA28 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - mov r1, #4 - bl MOD05_021E50A0 - ldr r0, [r4] - mov r1, #3 - bl MOD05_021E5114 - ldr r0, [r4] - mov r1, #4 - bl MOD05_021E506C - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDA48 -MOD05_021EDA48: ; 0x021EDA48 - push {r4, r5, lr} - sub sp, #0x24 - add r5, r0, #0 - bl MOD05_021E4C24 - add r4, r0, #0 - add r0, r5, #0 - bl FUN_02058738 - str r0, [sp, #0x14] - add r0, r4, #0 - mov r1, #0x18 - str r4, [sp, #0x18] - bl MOD05_021E4C08 - str r0, [sp, #0x1c] - add r1, sp, #8 - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - add r0, r5, #0 - mov r1, #2 - str r5, [sp, #0x20] - bl FUN_0205829C - add r1, sp, #0x14 - str r1, [sp] - str r0, [sp, #4] - ldr r1, _021EDA94 ; =UNK05_021F8A34 - add r0, r4, #0 - add r2, sp, #8 - mov r3, #0 - bl MOD05_021E4DC4 - add sp, #0x24 - pop {r4, r5, pc} - nop -_021EDA94: .word UNK05_021F8A34 - - thumb_func_start MOD05_021EDA98 -MOD05_021EDA98: ; 0x021EDA98 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r2, sp, #0 - mov r1, #0 - str r1, [r2] - str r1, [r2, #4] - add r5, r0, #0 - str r1, [r2, #8] - bl FUN_0206475C - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x10 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0x1c] - bl FUN_02058448 - str r0, [r4, #4] - ldr r0, [r4, #0x1c] - bl FUN_02058450 - str r0, [r4, #8] - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206476C - ldr r0, [r4, #0x14] - mov r1, #4 - add r2, sp, #0 - bl MOD05_021E4EE4 - str r0, [r4, #0x20] - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDAE8 -MOD05_021EDAE8: ; 0x021EDAE8 - ldr r3, _021EDAF0 ; =FUN_0201F744 - ldr r0, [r1, #0x20] - bx r3 - nop -_021EDAF0: .word FUN_0201F744 - - thumb_func_start MOD05_021EDAF4 -MOD05_021EDAF4: ; 0x021EDAF4 - push {r4, lr} - add r2, r1, #0 - add r4, r0, #0 - ldr r0, [r2, #0x1c] - ldr r1, [r2, #4] - ldr r2, [r2, #8] - bl FUN_020582A8 - cmp r0, #0 - bne _021EDB0E - add r0, r4, #0 - bl MOD05_021E4DE4 -_021EDB0E: - pop {r4, pc} - - thumb_func_start MOD05_021EDB10 -MOD05_021EDB10: ; 0x021EDB10 - push {r4, r5, r6, lr} - sub sp, #0x18 - add r5, r1, #0 - ldr r4, [r5, #0x1c] - ldr r1, [r5, #4] - add r6, r0, #0 - ldr r2, [r5, #8] - add r0, r4, #0 - bl FUN_020582A8 - cmp r0, #0 - bne _021EDB32 - add r0, r6, #0 - bl MOD05_021E4DE4 - add sp, #0x18 - pop {r4, r5, r6, pc} -_021EDB32: - add r0, r4, #0 - add r1, sp, #0xc - bl FUN_02058B5C - add r0, r4, #0 - add r1, sp, #0 - bl FUN_02058B84 - ldr r1, [sp, #0xc] - ldr r0, [sp] - add r0, r1, r0 - str r0, [sp, #0xc] - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add r0, r1, r0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x14] - ldr r0, [sp, #8] - add r1, r1, r0 - mov r0, #3 - lsl r0, r0, #0xe - str r1, [sp, #0x14] - add r0, r1, r0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x20] - add r1, sp, #0xc - bl FUN_0201F7C8 - add sp, #0x18 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDB70 -MOD05_021EDB70: ; 0x021EDB70 - push {r3, r4, r5, lr} - mov r2, #0 - mov r1, #0x60 - add r3, r2, #0 - add r5, r0, #0 - bl MOD05_021E4BE8 - add r4, r0, #0 - str r5, [r4] - bl MOD05_021EDB9C - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDB8C -MOD05_021EDB8C: ; 0x021EDB8C - push {r4, lr} - add r4, r0, #0 - bl MOD05_021EDBBC - add r0, r4, #0 - bl MOD05_021E4C00 - pop {r4, pc} - - thumb_func_start MOD05_021EDB9C -MOD05_021EDB9C: ; 0x021EDB9C - push {r3, lr} - sub sp, #8 - add r3, r0, #0 - add r0, #0x58 - str r0, [sp] - add r0, r3, #0 - add r0, #0x5c - str r0, [sp, #4] - ldr r0, [r3] - mov r1, #0x50 - mov r2, #0 - add r3, r3, #4 - bl MOD05_021E51EC - add sp, #8 - pop {r3, pc} - - thumb_func_start MOD05_021EDBBC -MOD05_021EDBBC: ; 0x021EDBBC - ldr r3, _021EDBC4 ; =MOD05_021E4C00 - ldr r0, [r0, #0x5c] - bx r3 - nop -_021EDBC4: .word MOD05_021E4C00 - - thumb_func_start MOD05_021EDBC8 -MOD05_021EDBC8: ; 0x021EDBC8 - push {r4, r5, r6, lr} - sub sp, #0x20 - add r2, sp, #8 - mov r1, #0 - str r1, [r2] - str r1, [r2, #4] - add r5, r0, #0 - str r1, [r2, #8] - bl FUN_020553A0 - add r4, r0, #0 - bl MOD05_021E4C24 - add r6, r0, #0 - mov r1, #0x10 - str r6, [sp, #0x14] - bl MOD05_021E4C08 - str r0, [sp, #0x18] - add r0, r4, #0 - mov r1, #2 - str r5, [sp, #0x1c] - bl FUN_0205829C - add r1, sp, #0x14 - str r1, [sp] - str r0, [sp, #4] - ldr r1, _021EDC10 ; =UNK05_021F8A6C - add r0, r6, #0 - add r2, sp, #8 - mov r3, #0 - bl MOD05_021E4DC4 - add sp, #0x20 - pop {r4, r5, r6, pc} - nop -_021EDC10: .word UNK05_021F8A6C - - thumb_func_start MOD05_021EDC14 -MOD05_021EDC14: ; 0x021EDC14 - push {r3, r4, r5, lr} - add r5, r1, #0 - bl FUN_0206475C - add r4, r0, #0 - add r3, r4, #0 - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x24 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r0, [r4, #8] - bl FUN_020553A0 - mov r1, #0 - mvn r1, r1 - add r4, r0, #0 - str r1, [r5, #4] - bl FUN_02058448 - str r0, [r5, #0x14] - add r0, r4, #0 - bl FUN_02058450 - str r0, [r5, #0x18] - mov r0, #1 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021EDC4C -MOD05_021EDC4C: ; 0x021EDC4C - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EDC50 -MOD05_021EDC50: ; 0x021EDC50 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r1, #0 - str r0, [sp] - ldr r0, [r5, #0x2c] - str r0, [sp, #4] - bl FUN_020553A0 - ldr r1, [r5, #0x14] - ldr r2, [r5, #0x18] - add r6, r0, #0 - bl FUN_020582A8 - cmp r0, #0 - bne _021EDC78 - ldr r0, [sp] - bl MOD05_021E4DE4 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021EDC78: - ldr r7, [r5, #4] - add r0, r6, #0 - bl FUN_02058720 - strb r0, [r5, #8] - ldrb r0, [r5, #8] - bl MOD05_021EDDF4 - str r0, [r5, #4] - mov r0, #0 - str r0, [r5] - ldr r4, [r5, #4] - sub r0, r0, #1 - cmp r4, r0 - beq _021EDCA0 - ldr r0, [sp, #4] - bl FUN_020552F8 - cmp r4, r0 - beq _021EDCAE -_021EDCA0: - mov r0, #0 - str r0, [r5, #0x1c] - str r0, [r5, #0x20] - mov r0, #1 - add sp, #0x24 - str r0, [r5] - pop {r4, r5, r6, r7, pc} -_021EDCAE: - cmp r7, r4 - beq _021EDCB8 - mov r0, #0 - str r0, [r5, #0x1c] - str r0, [r5, #0x20] -_021EDCB8: - add r0, r6, #0 - bl FUN_02058B2C - add r4, r0, #0 - ldr r0, [r5, #4] - bl FUN_02059BF4 - add r7, r0, #0 - add r0, r6, #0 - bl FUN_02058B4C - str r0, [sp, #8] - ldr r0, [r5, #4] - bl FUN_02059C00 - add r2, r0, #0 - ldr r1, [sp, #8] - add r0, r4, r7 - add r1, r1, r2 - add r2, sp, #0xc - bl FUN_02059E60 - add r0, r6, #0 - add r1, sp, #0x18 - bl FUN_02058B5C - ldr r0, [sp, #0x1c] - add r1, sp, #0xc - str r0, [sp, #0x10] - ldr r0, [sp] - bl FUN_0206476C - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EDCFC -MOD05_021EDCFC: ; 0x021EDCFC - push {r3, r4, r5, r6, lr} - sub sp, #0x3c - add r4, r1, #0 - add r6, r0, #0 - ldr r0, [r4] - cmp r0, #1 - beq _021EDDE2 - mov r0, #0 - ldr r1, [r4, #4] - mvn r0, r0 - cmp r1, r0 - beq _021EDDE2 - ldr r0, [r4, #0x1c] - add r0, r0, #1 - str r0, [r4, #0x1c] - cmp r0, #0xf - ble _021EDD34 - mov r0, #0 - str r0, [r4, #0x1c] - ldr r0, [r4, #0x20] - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - str r0, [r4, #0x20] -_021EDD34: - ldr r3, _021EDDE8 ; =UNK05_021F8A60 - add r2, sp, #0x24 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - ldr r5, _021EDDEC ; =UNK05_021F8A80 - str r0, [r2] - add r3, sp, #0 - mov r2, #4 -_021EDD46: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021EDD46 - ldr r0, [r5] - mov r2, #0x18 - str r0, [r3] - ldr r1, [r4, #4] - ldr r3, _021EDDF0 ; =UNK05_021F8AA4 - add r0, r1, #0 - mul r0, r2 - add r0, r3, r0 - ldr r5, [r4, #0x20] - mov r3, #0xc - mul r3, r5 - add r5, r0, r3 - cmp r1, #3 - bhi _021EDDB4 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EDD76: ; jump table - .short _021EDD7E - _021EDD76 - 2 ; case 0 - .short _021EDD8C - _021EDD76 - 2 ; case 1 - .short _021EDD9A - _021EDD76 - 2 ; case 2 - .short _021EDDA8 - _021EDD76 - 2 ; case 3 -_021EDD7E: - mov r1, #0 - add r0, sp, #0 - mov r2, #0xb4 - add r3, r1, #0 - bl FUN_0201CB20 - b _021EDDB4 -_021EDD8C: - mov r1, #0 - add r0, sp, #0 - add r2, r1, #0 - add r3, r1, #0 - bl FUN_0201CB20 - b _021EDDB4 -_021EDD9A: - mov r1, #0 - add r0, sp, #0 - add r2, #0xf6 - add r3, r1, #0 - bl FUN_0201CB20 - b _021EDDB4 -_021EDDA8: - mov r1, #0 - add r0, sp, #0 - mov r2, #0x5a - add r3, r1, #0 - bl FUN_0201CB20 -_021EDDB4: - add r0, r6, #0 - add r1, sp, #0x30 - bl FUN_0206477C - ldr r1, [sp, #0x30] - ldr r0, [r5] - add r2, sp, #0 - add r0, r1, r0 - str r0, [sp, #0x30] - ldr r1, [sp, #0x34] - ldr r0, [r5, #4] - add r3, sp, #0x24 - add r0, r1, r0 - str r0, [sp, #0x34] - ldr r1, [sp, #0x38] - ldr r0, [r5, #8] - add r0, r1, r0 - str r0, [sp, #0x38] - ldr r0, [r4, #0x28] - add r1, sp, #0x30 - add r0, r0, #4 - bl FUN_0201B26C -_021EDDE2: - add sp, #0x3c - pop {r3, r4, r5, r6, pc} - nop -_021EDDE8: .word UNK05_021F8A60 -_021EDDEC: .word UNK05_021F8A80 -_021EDDF0: .word UNK05_021F8AA4 - - thumb_func_start MOD05_021EDDF4 -MOD05_021EDDF4: ; 0x021EDDF4 - push {r4, lr} - add r4, r0, #0 - bl FUN_020547D4 - cmp r0, #0 - beq _021EDE04 - mov r0, #0 - pop {r4, pc} -_021EDE04: - add r0, r4, #0 - bl FUN_020547E0 - cmp r0, #0 - beq _021EDE12 - mov r0, #1 - pop {r4, pc} -_021EDE12: - add r0, r4, #0 - bl FUN_020547C8 - cmp r0, #0 - beq _021EDE20 - mov r0, #2 - pop {r4, pc} -_021EDE20: - add r0, r4, #0 - bl FUN_020547BC - cmp r0, #0 - beq _021EDE2E - mov r0, #3 - pop {r4, pc} -_021EDE2E: - mov r0, #0 - mvn r0, r0 - pop {r4, pc} - - thumb_func_start MOD05_021EDE34 -MOD05_021EDE34: ; 0x021EDE34 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r1, #0 - add r1, r6, #0 - bl _s32_div_f - add r4, r1, #0 - add r0, r5, #0 - add r1, r6, #0 - bl _s32_div_f - cmp r4, r1 - bne _021EDE52 - mov r0, #1 - pop {r4, r5, r6, pc} -_021EDE52: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDE58 -MOD05_021EDE58: ; 0x021EDE58 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r1, #0 - add r1, r6, #0 - bl _s32_div_f - add r4, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl _s32_div_f - cmp r4, r0 - bne _021EDE76 - mov r0, #1 - pop {r4, r5, r6, pc} -_021EDE76: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDE7C -MOD05_021EDE7C: ; 0x021EDE7C - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x30 - add r4, r1, #0 - mul r4, r0 - add r1, r5, r4 - ldr r0, [r1, #0x14] - cmp r0, #0 - beq _021EDE94 - ldr r0, [r1, #0xc] - bl MOD05_021EF8F8 -_021EDE94: - add r1, r5, r4 - ldr r0, [r1, #0x18] - cmp r0, #0 - beq _021EDEA2 - ldr r0, [r1, #0x10] - bl MOD05_021F4444 -_021EDEA2: - mov r1, #1 - add r0, r5, r4 - str r1, [r0, #0x28] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EDEAC -MOD05_021EDEAC: ; 0x021EDEAC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021EDEBC - ldr r0, [r4, #8] - bl MOD05_021EF8F8 -_021EDEBC: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _021EDEC8 - ldr r0, [r4, #0xc] - bl MOD05_021F4444 -_021EDEC8: - mov r0, #0 - str r0, [r4, #0x10] - str r0, [r4, #0x14] - pop {r4, pc} - - thumb_func_start MOD05_021EDED0 -MOD05_021EDED0: ; 0x021EDED0 - push {r3, r4, r5, r6, r7, lr} - add r5, r2, #0 - asr r2, r0, #4 - lsr r2, r2, #0x1b - add r2, r0, r2 - asr r7, r2, #5 - asr r2, r1, #4 - lsr r2, r2, #0x1b - add r2, r1, r2 - asr r6, r2, #5 - ldr r2, [sp, #0x18] - str r3, [sp] - ldr r4, [sp, #0x1c] - bl MOD05_021EEE08 - ldr r1, [sp, #0x18] - bl MOD05_021EF620 - add r1, r6, #0 - mul r1, r5 - add r1, r7, r1 - cmp r0, #3 - bhi _021EDFB6 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EDF0A: ; jump table - .short _021EDF12 - _021EDF0A - 2 ; case 0 - .short _021EDF38 - _021EDF0A - 2 ; case 1 - .short _021EDF60 - _021EDF0A - 2 ; case 2 - .short _021EDF8A - _021EDF0A - 2 ; case 3 -_021EDF12: - sub r2, r1, r5 - str r1, [r4, #0xc] - sub r0, r2, #1 - str r0, [r4] - str r2, [r4, #4] - sub r0, r1, #1 - str r0, [r4, #8] - sub r0, r7, #1 - bpl _021EDF2C - mov r0, #0 - mvn r0, r0 - str r0, [r4] - str r0, [r4, #8] -_021EDF2C: - sub r0, r6, #1 - bpl _021EDFBA - mov r0, #0 - mvn r0, r0 - str r0, [r4, #4] - pop {r3, r4, r5, r6, r7, pc} -_021EDF38: - str r1, [r4, #8] - sub r0, r1, r5 - str r0, [r4] - add r0, r0, #1 - str r0, [r4, #4] - add r0, r1, #1 - str r0, [r4, #0xc] - add r0, r7, #1 - cmp r0, r5 - blt _021EDF54 - mov r0, #0 - mvn r0, r0 - str r0, [r4, #4] - str r0, [r4, #0xc] -_021EDF54: - sub r0, r6, #1 - bpl _021EDFBA - mov r0, #0 - mvn r0, r0 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_021EDF60: - str r1, [r4, #4] - sub r0, r1, #1 - add r1, r1, r5 - str r0, [r4] - sub r0, r1, #1 - str r0, [r4, #8] - str r1, [r4, #0xc] - sub r0, r7, #1 - bpl _021EDF7A - mov r0, #0 - mvn r0, r0 - str r0, [r4] - str r0, [r4, #8] -_021EDF7A: - ldr r0, [sp] - add r1, r6, #1 - cmp r1, r0 - ble _021EDFBA - mov r0, #0 - mvn r0, r0 - str r0, [r4, #0xc] - pop {r3, r4, r5, r6, r7, pc} -_021EDF8A: - str r1, [r4] - add r0, r1, #1 - str r0, [r4, #4] - add r0, r1, r5 - str r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #0xc] - add r0, r7, #1 - cmp r0, r5 - blt _021EDFA6 - mov r0, #0 - mvn r0, r0 - str r0, [r4, #4] - str r0, [r4, #0xc] -_021EDFA6: - ldr r0, [sp] - add r1, r6, #1 - cmp r1, r0 - ble _021EDFBA - mov r0, #0 - mvn r0, r0 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_021EDFB6: - bl GF_AssertFail -_021EDFBA: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EDFBC -MOD05_021EDFBC: ; 0x021EDFBC - push {r3, r4, r5, r6, r7, lr} - mov r6, #0 - add r5, r0, #0 - sub r7, r6, #1 -_021EDFC4: - ldr r1, _021EE03C ; =0x0000086C - mov r0, #4 - bl AllocFromHeap - lsl r4, r6, #2 - add r1, r5, r4 - add r1, #0x90 - str r0, [r1] - add r0, r5, r4 - add r0, #0x90 - ldr r2, [r0] - ldr r0, _021EE040 ; =0x00000864 - mov r1, #0 - str r1, [r2, r0] - add r2, r5, r4 - add r2, #0x90 - ldr r3, [r2] - ldr r2, _021EE044 ; =0x00000854 - ldr r1, [r5] - add r0, r6, #0 - add r2, r3, r2 - bl MOD05_021F3C60 - add r2, r5, r4 - add r2, #0x90 - ldr r3, [r2] - ldr r2, _021EE048 ; =0x00000858 - ldr r1, [r5] - add r0, r6, #0 - add r2, r3, r2 - bl MOD05_021F3C68 - mov r0, #4 - bl MOD05_021E7C00 - add r1, r5, r4 - add r1, #0x90 - ldr r2, [r1] - ldr r1, _021EE04C ; =0x00000868 - str r0, [r2, r1] - add r0, r5, r4 - add r0, #0x90 - ldr r1, [r0] - mov r0, #0x86 - lsl r0, r0, #4 - str r7, [r1, r0] - add r1, r5, r4 - add r1, #0x90 - mov r2, #2 - ldr r1, [r1] - add r0, r7, #0 - lsl r2, r2, #0xa - bl MIi_CpuClearFast - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #4 - blo _021EDFC4 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EE03C: .word 0x0000086C -_021EE040: .word 0x00000864 -_021EE044: .word 0x00000854 -_021EE048: .word 0x00000858 -_021EE04C: .word 0x00000868 - - thumb_func_start MOD05_021EE050 -MOD05_021EE050: ; 0x021EE050 - push {r3, r4, r5, r6, r7, lr} - mov r6, #0 - add r5, r0, #0 - add r7, r6, #0 -_021EE058: - ldr r1, _021EE0B0 ; =0x0000086C - mov r0, #4 - bl AllocFromHeap - lsl r4, r6, #2 - add r1, r5, r4 - add r1, #0x90 - str r0, [r1] - add r0, r5, r4 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EE0B4 ; =0x00000864 - add r2, r5, r4 - str r7, [r1, r0] - add r2, #0x90 - ldr r3, [r2] - ldr r2, _021EE0B8 ; =0x00000854 - ldr r1, [r5] - add r0, r6, #0 - add r2, r3, r2 - bl MOD05_021F3C60 - mov r0, #4 - bl MOD05_021E7C00 - add r1, r5, r4 - add r1, #0x90 - ldr r2, [r1] - ldr r1, _021EE0BC ; =0x00000868 - str r0, [r2, r1] - add r0, r5, r4 - add r0, #0x90 - ldr r2, [r0] - mov r1, #0 - mov r0, #0x86 - mvn r1, r1 - lsl r0, r0, #4 - str r1, [r2, r0] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #4 - blo _021EE058 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EE0B0: .word 0x0000086C -_021EE0B4: .word 0x00000864 -_021EE0B8: .word 0x00000854 -_021EE0BC: .word 0x00000868 - - thumb_func_start MOD05_021EE0C0 -MOD05_021EE0C0: ; 0x021EE0C0 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - cmp r6, #0 - beq _021EE0E6 - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeapAtEnd - add r4, r0, #0 - add r0, r6, #0 - add r1, r7, #0 - mov r2, #0 - mov r3, #0x10 - str r4, [sp] - bl NARC_ReadFromMember - b _021EE0FC -_021EE0E6: - bl GF_AssertFail - mov r0, #0x10 - str r0, [sp] - mov r0, #0x43 - add r1, r7, #0 - mov r2, #4 - mov r3, #0 - bl AllocAtEndAndReadFromNarcMemberByIdPair - add r4, r0, #0 -_021EE0FC: - ldr r0, [r4] - str r0, [r5] - ldr r0, [r4, #4] - str r0, [r5, #0xc] - ldr r0, [r4, #8] - str r0, [r5, #4] - ldr r0, [r4, #0xc] - str r0, [r5, #8] - add r0, r4, #0 - bl FreeToHeap - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EE114 -MOD05_021EE114: ; 0x021EE114 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - ldr r4, [sp, #0x40] - lsl r7, r0, #2 - add r0, r4, r7 - ldr r0, [r0, #0x18] - str r1, [sp, #0xc] - ldr r5, [sp, #0x3c] - cmp r0, #0 - blt _021EE1D0 - ldr r1, [sp, #0x38] - mul r1, r3 - cmp r0, r1 - bge _021EE1D0 - add r1, r2, #0 - bl GetMapData - add r1, r0, #0 - ldr r0, _021EE1D4 ; =0x0000FFFF - cmp r1, r0 - beq _021EE1D0 - add r0, r5, #0 - add r0, #0xf8 - ldr r0, [r0] - add r2, sp, #0x10 - bl MOD05_021EE0C0 - add r0, r5, #0 - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp, #0x10] - ldr r2, [r4, r7] - bl NARC_ReadFile - add r0, r5, #0 - add r0, #0xf0 - ldr r0, [r0] - ldr r3, _021EE1D8 ; =0x00000868 - str r0, [sp] - add r0, r5, #0 - ldr r6, [r4, r7] - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0xc] - ldr r3, [r6, r3] - bl MOD05_021E7CD8 - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [sp, #0xc] - ldr r6, [r4, r7] - bl MOD05_021F4C74 - ldr r3, _021EE1DC ; =0x00000864 - str r0, [sp] - add r0, r6, r3 - add r2, r3, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x10 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0xf8 - sub r2, #0x64 - sub r3, #0x10 - ldr r0, [r0] - ldr r1, [sp, #0x14] - add r2, r6, r2 - add r3, r6, r3 - bl MOD05_021EFA00 - str r0, [r4, #8] - ldr r0, [r4, #0x14] - add r3, r4, #0 - add r0, r0, #1 - str r0, [r4, #0x14] - ldr r2, [r4, r7] - ldr r6, _021EE1E0 ; =0x00000858 - add r5, #0xf8 - add r0, r2, r6 - str r0, [sp] - add r0, r4, #0 - add r0, #0x10 - str r0, [sp, #4] - ldr r0, [r5] - add r5, r6, #4 - ldr r1, [sp, #0x18] - ldr r2, [r2, r5] - add r3, #0x14 - bl MOD05_021F43E4 - str r0, [r4, #0xc] -_021EE1D0: - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EE1D4: .word 0x0000FFFF -_021EE1D8: .word 0x00000868 -_021EE1DC: .word 0x00000864 -_021EE1E0: .word 0x00000858 - - thumb_func_start MOD05_021EE1E4 -MOD05_021EE1E4: ; 0x021EE1E4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x30 - str r1, [sp, #0xc] - add r1, r2, #0 - add r2, r3, #0 - ldr r3, _021EE294 ; =0x00000828 - lsl r7, r0, #2 - add r3, sp - ldr r4, [r3, #0x18] - ldr r5, [r3, #0x14] - add r0, r4, r7 - ldr r0, [r0, #0x18] - cmp r0, #0 - blt _021EE286 - ldr r3, [r3, #0x10] - mul r3, r2 - cmp r0, r3 - bge _021EE286 - bl GetMapData - add r1, r0, #0 - ldr r0, _021EE298 ; =0x0000FFFF - cmp r1, r0 - beq _021EE286 - add r0, r5, #0 - add r0, #0xf8 - ldr r0, [r0] - add r2, sp, #0x10 - bl MOD05_021EE0C0 - add r0, r5, #0 - add r0, #0xf8 - mov r1, #2 - ldr r0, [r0] - lsl r1, r1, #0xa - add r2, sp, #0x20 - bl NARC_ReadFile - add r0, r5, #0 - add r0, #0xf0 - ldr r0, [r0] - ldr r3, _021EE29C ; =0x00000868 - str r0, [sp] - add r0, r5, #0 - ldr r6, [r4, r7] - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0xc] - ldr r3, [r6, r3] - bl MOD05_021E7CD8 - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [sp, #0xc] - ldr r6, [r4, r7] - bl MOD05_021F4C74 - ldr r3, _021EE2A0 ; =0x00000864 - str r0, [sp] - add r0, r6, r3 - add r2, r3, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x10 - str r0, [sp, #8] - add r5, #0xf8 - sub r2, #0x64 - sub r3, #0x10 - ldr r0, [r5] - ldr r1, [sp, #0x14] - add r2, r6, r2 - add r3, r6, r3 - bl MOD05_021EFA00 - str r0, [r4, #8] -_021EE286: - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - nop -_021EE294: .word 0x00000828 -_021EE298: .word 0x0000FFFF -_021EE29C: .word 0x00000868 -_021EE2A0: .word 0x00000864 - - thumb_func_start MOD05_021EE2A4 -MOD05_021EE2A4: ; 0x021EE2A4 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r4, r1, #0 - str r0, [sp, #4] - str r2, [sp, #8] - ldr r7, [sp, #0x3c] - add r1, r0, #0 - bmi _021EE37A - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x34] - add r5, r2, #0 - mul r5, r1 - add r1, r0, #0 - cmp r1, r5 - bge _021EE37A - add r1, r3, #0 - bl GetMapData - add r1, r0, #0 - ldr r0, _021EE380 ; =0x0000FFFF - cmp r1, r0 - beq _021EE37A - add r0, r7, #0 - add r0, #0xf8 - ldr r0, [r0] - add r2, sp, #0xc - bl MOD05_021EE0C0 - lsl r5, r4, #2 - add r4, r7, #0 - add r0, r7, #0 - add r4, #0x90 - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp, #0xc] - ldr r2, [r4, r5] - bl NARC_ReadFile - add r0, r7, #0 - add r0, #0xf0 - ldr r0, [r0] - ldr r3, _021EE384 ; =0x00000868 - str r0, [sp] - add r0, r7, #0 - ldr r6, [r4, r5] - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp, #0x18] - ldr r2, [sp, #8] - ldr r3, [r6, r3] - bl MOD05_021E7CD8 - ldr r6, [r4, r5] - ldr r0, [sp, #8] - bl MOD05_021F4C74 - str r0, [sp] - add r0, r7, #0 - mov r3, #2 - add r0, #0xf8 - lsl r3, r3, #0xa - add r2, r6, r3 - add r3, #0x54 - ldr r0, [r0] - ldr r1, [sp, #0x10] - add r3, r6, r3 - bl MOD05_021EFA40 - ldr r1, [sp, #0x38] - cmp r1, #1 - bne _021EE336 - bl MOD05_021DB5EC -_021EE336: - ldr r6, _021EE388 ; =0x00000864 - ldr r0, [r4, r5] - mov r1, #1 - str r1, [r0, r6] - add r2, r6, #0 - add r0, r7, #0 - add r0, #0xf8 - ldr r3, [r4, r5] - sub r2, #8 - sub r6, #0xc - ldr r2, [r3, r2] - ldr r0, [r0] - ldr r1, [sp, #0x14] - ldr r3, [r3, r6] - bl MOD05_021F4344 - mov r2, #0x86 - ldr r1, [r4, r5] - ldr r0, [sp, #4] - lsl r2, r2, #4 - str r0, [r1, r2] - add r0, r7, #0 - add r0, #0xfc - ldr r3, [r0] - cmp r3, #0 - beq _021EE37A - mov r0, #1 - lsl r0, r0, #8 - ldr r4, [r4, r5] - add r2, #8 - ldr r0, [r7, r0] - ldr r1, [sp, #4] - ldr r2, [r4, r2] - blx r3 -_021EE37A: - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_021EE380: .word 0x0000FFFF -_021EE384: .word 0x00000868 -_021EE388: .word 0x00000864 - - thumb_func_start MOD05_021EE38C -MOD05_021EE38C: ; 0x021EE38C - push {r4, r5, r6, r7, lr} - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x1fc - sub sp, #0x2c - str r2, [sp, #8] - ldr r2, _021EE44C ; =0x00000820 - add r4, r1, #0 - add r2, sp - str r0, [sp, #4] - ldr r5, [r2, #0x1c] - add r1, r0, #0 - bmi _021EE43E - ldr r6, [r2, #0x10] - ldr r1, [r2, #0x14] - add r2, r6, #0 - mul r2, r1 - add r1, r0, #0 - cmp r1, r2 - bge _021EE43E - add r1, r3, #0 - bl GetMapData - add r1, r0, #0 - ldr r0, _021EE450 ; =0x0000FFFF - cmp r1, r0 - beq _021EE43E - add r0, r5, #0 - add r0, #0xf8 - ldr r0, [r0] - add r2, sp, #0xc - bl MOD05_021EE0C0 - add r0, r5, #0 - add r0, #0xf8 - mov r1, #2 - ldr r0, [r0] - lsl r1, r1, #0xa - add r2, sp, #0x1c - bl NARC_ReadFile - add r0, r5, #0 - add r0, #0xf0 - ldr r0, [r0] - add r7, r5, #0 - str r0, [sp] - add r0, r5, #0 - add r0, #0xf8 - lsl r4, r4, #2 - add r7, #0x90 - ldr r6, [r7, r4] - ldr r3, _021EE454 ; =0x00000868 - ldr r0, [r0] - ldr r1, [sp, #0x18] - ldr r2, [sp, #8] - ldr r3, [r6, r3] - bl MOD05_021E7CD8 - ldr r0, [sp, #8] - ldr r6, [r7, r4] - bl MOD05_021F4C74 - mov r3, #2 - str r0, [sp] - add r5, #0xf8 - lsl r3, r3, #0xa - add r2, r6, r3 - add r3, #0x54 - ldr r0, [r5] - ldr r1, [sp, #0x10] - add r3, r6, r3 - bl MOD05_021EFA40 - ldr r1, _021EE44C ; =0x00000820 - add r1, sp - ldr r1, [r1, #0x18] - cmp r1, #1 - bne _021EE42E - bl MOD05_021DB5EC -_021EE42E: - ldr r1, [r7, r4] - ldr r0, _021EE458 ; =0x00000864 - mov r2, #1 - str r2, [r1, r0] - sub r1, r0, #4 - ldr r2, [r7, r4] - ldr r0, [sp, #4] - str r0, [r2, r1] -_021EE43E: - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x1fc - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_021EE44C: .word 0x00000820 -_021EE450: .word 0x0000FFFF -_021EE454: .word 0x00000868 -_021EE458: .word 0x00000864 - - thumb_func_start MOD05_021EE45C -MOD05_021EE45C: ; 0x021EE45C - ldr r1, [r0] - cmp r1, #0 - bne _021EE46C - ldr r0, [r0, #4] - cmp r0, #0 - bne _021EE46C - mov r0, #1 - bx lr -_021EE46C: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021EE470 -MOD05_021EE470: ; 0x021EE470 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r4, r0, #0 - str r3, [sp] - add r0, sp, #0x10 - add r7, r1, #0 - ldrb r1, [r0, #0x14] - mov r0, #0x30 - str r2, [sp, #8] - add r5, r1, #0 - mul r5, r0 - add r0, r4, #0 - str r0, [sp, #4] - add r0, #0x2c - str r0, [sp, #4] - ldr r0, [r0, r5] - cmp r0, #0 - beq _021EE498 - bl GF_AssertFail -_021EE498: - ldr r0, [sp, #4] - mov r1, #1 - str r1, [r0, r5] - add r0, sp, #0x10 - add r5, r4, r5 - add r1, r5, #0 - ldrb r2, [r0, #0x18] - add r1, #0x30 - add r3, r4, #0 - strb r2, [r1] - add r2, r5, #0 - ldr r1, [sp, #8] - str r7, [r5, #0x1c] - str r1, [r5, #0x20] - ldr r1, [sp] - add r2, #0x24 - strb r1, [r2] - add r1, r5, #0 - ldrb r0, [r0, #0x10] - add r1, #0x25 - add r3, #0x90 - strb r0, [r1] - ldr r1, [sp] - mov r6, #0 - lsl r2, r1, #2 - ldr r1, [r3, r2] - str r1, [r5, #4] - lsl r1, r0, #2 - ldr r0, [r3, r1] - str r0, [r5, #8] - add r0, r5, #0 - add r0, #0x26 - strb r6, [r0] - add r0, r6, #0 - str r0, [r5, #0x28] - add r0, r4, #0 - add r0, #0xa0 - ldrb r0, [r0] - cmp r0, #0 - bne _021EE4F0 - add r5, r4, #0 - add r5, #0xb4 - add r0, r6, #0 - str r0, [r5] -_021EE4F0: - ldr r0, [r3, r2] - mov r2, #0x86 - lsl r2, r2, #4 - str r7, [r0, r2] - ldr r1, [r3, r1] - ldr r0, [sp, #8] - str r0, [r1, r2] - add r0, r4, #0 - add r0, #0xa0 - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xa0 - strb r1, [r0] - add r0, r4, #0 - add r0, #0xa1 - ldrb r0, [r0] - add r4, #0xa1 - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - strb r0, [r4] - mov r0, #1 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EE52C -MOD05_021EE52C: ; 0x021EE52C - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r1, #0 - add r0, r5, #0 - add r0, #0xa2 - ldrb r1, [r0] - mov r0, #0x30 - add r4, r5, #0 - add r2, r5, #4 - mul r0, r1 - add r4, #0xcc - add r6, r2, r0 - ldr r0, [r4, #0x20] - cmp r0, #1 - bne _021EE572 - ldr r0, [r4, #0x18] - cmp r0, #0 - beq _021EE5D0 - ldr r0, [r4, #0x14] - ldr r1, [r0] - ldr r0, [r4, #0x10] - ldr r0, [r0] - cmp r1, r0 - ble _021EE560 - bl GF_AssertFail -_021EE560: - ldr r0, [r4, #0x10] - ldr r1, [r0] - ldr r0, [r4, #0x14] - ldr r0, [r0] - sub r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0x10 - cmp r1, r0 - bge _021EE574 -_021EE572: - b _021EE6B0 -_021EE574: - ldr r1, [r4, #0xc] - add r2, sp, #0x10 - ldr r0, [r1] - ldr r1, [r1, #8] - add r3, sp, #0xc - bl MOD05_021EF4F8 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - add r2, r5, #0 - bl MOD05_021EF2AC - ldr r3, [r4, #0xc] - add r2, r4, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r0, [r4, #8] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE5B2 - mov r0, #1 - bl FUN_020336A0 - cmp r0, #0 - bne _021EE692 -_021EE5B2: - ldr r0, [r4, #8] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE5C6 - bl GF_AssertFail -_021EE5C6: - mov r0, #0 - str r0, [r4, #0x18] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - b _021EE6B0 -_021EE5D0: - ldr r2, [r4, #0xc] - ldr r3, [r4] - ldr r7, [r2] - cmp r3, r7 - beq _021EE5E8 - ldr r1, [r4, #8] - ldr r0, [r2, #8] - cmp r1, r0 - beq _021EE5E8 - bl GF_AssertFail - b _021EE6B0 -_021EE5E8: - cmp r3, r7 - bne _021EE5F4 - ldr r1, [r4, #8] - ldr r0, [r2, #8] - cmp r1, r0 - beq _021EE6B0 -_021EE5F4: - mov r3, #1 - str r3, [r4, #0x18] - ldr r2, [r4, #0xc] - ldr r0, [r4] - ldr r1, [r2] - cmp r0, r1 - beq _021EE648 - cmp r0, r1 - ble _021EE612 - str r4, [r4, #0x10] - ldr r0, [r4, #0xc] - str r0, [r4, #0x14] - mov r0, #3 - strb r0, [r4, #0x1c] - b _021EE618 -_021EE612: - str r2, [r4, #0x10] - str r4, [r4, #0x14] - strb r3, [r4, #0x1c] -_021EE618: - ldr r0, [r4] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE632 - mov r0, #1 - bl FUN_020336A0 - cmp r0, #0 - bne _021EE692 -_021EE632: - ldr r0, [r4] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE6A8 - bl GF_AssertFail - b _021EE6A8 -_021EE648: - add r1, r5, #0 - add r1, #0xd8 - add r0, r5, #0 - ldr r1, [r1] - add r0, #0xd4 - ldr r0, [r0] - ldr r1, [r1, #8] - cmp r0, r1 - ble _021EE66A - add r0, r4, #0 - add r0, #8 - str r0, [r4, #0x10] - ldr r0, [r4, #0xc] - add r0, #8 - str r0, [r4, #0x14] - mov r0, #4 - b _021EE676 -_021EE66A: - add r2, #8 - add r0, r4, #0 - str r2, [r4, #0x10] - add r0, #8 - str r0, [r4, #0x14] - mov r0, #2 -_021EE676: - strb r0, [r4, #0x1c] - ldr r0, [r4, #8] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE694 - mov r0, #1 - bl FUN_020336A0 - cmp r0, #0 - beq _021EE694 -_021EE692: - b _021EE8C2 -_021EE694: - ldr r0, [r4, #8] - lsr r2, r0, #0x1f - lsl r1, r0, #0x11 - sub r1, r1, r2 - mov r0, #0x11 - ror r1, r0 - add r0, r2, r1 - beq _021EE6A8 - bl GF_AssertFail -_021EE6A8: - ldrb r0, [r4, #0x1c] - add r1, r5, #0 - bl MOD05_021EF458 -_021EE6B0: - add r0, r5, #0 - add r0, #0xb4 - ldr r0, [r0] - cmp r0, #3 - bls _021EE6BC - b _021EE818 -_021EE6BC: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EE6C8: ; jump table - .short _021EE6D0 - _021EE6C8 - 2 ; case 0 - .short _021EE726 - _021EE6C8 - 2 ; case 1 - .short _021EE818 - _021EE6C8 - 2 ; case 2 - .short _021EE804 - _021EE6C8 - 2 ; case 3 -_021EE6D0: - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - add r1, r6, r0 - add r1, #0x20 - ldrb r1, [r1] - lsl r1, r1, #2 - add r1, r5, r1 - add r1, #0x80 - ldr r1, [r1] - cmp r1, #1 - beq _021EE710 - add r1, r5, #0 - add r1, #0xc4 - ldr r1, [r1] - add r4, r5, #0 - str r1, [sp] - str r5, [sp, #4] - str r6, [sp, #8] - add r4, #0xf4 - add r1, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - ldr r4, [r4] - add r1, #0xb8 - add r2, #0xbc - add r3, #0xc0 - ldr r1, [r1] - ldr r2, [r2] - ldr r3, [r3] - ldr r4, [r4, #4] - blx r4 -_021EE710: - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - add r6, #0x22 - mov r1, #1 - add r0, r0, #1 - strb r0, [r6] - add r0, r5, #0 - add r0, #0xb4 - str r1, [r0] - b _021EE818 -_021EE726: - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - sub r0, r0, #1 - add r0, r6, r0 - add r0, #0x20 - ldrb r0, [r0] - lsl r0, r0, #2 - add r0, r5, r0 - add r0, #0x80 - ldr r0, [r0] - cmp r0, #1 - bne _021EE75E - add r0, r6, #0 - bl MOD05_021EDEAC - add r1, r6, #0 - add r1, #0x22 - ldrb r1, [r1] - mov r0, #0 - sub r1, r1, #1 - add r1, r6, r1 - add r1, #0x20 - ldrb r1, [r1] - lsl r1, r1, #2 - add r1, r5, r1 - add r1, #0x80 - str r0, [r1] -_021EE75E: - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - cmp r0, #2 - bhi _021EE818 - add r0, r6, #0 - add r0, #0x10 - bl MOD05_021EE45C - cmp r0, #1 - bne _021EE818 - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - cmp r0, #2 - blo _021EE784 - mov r0, #1 - str r0, [r6, #0x24] - b _021EE78C -_021EE784: - add r0, r5, #0 - mov r1, #0 - add r0, #0xb4 - str r1, [r0] -_021EE78C: - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - sub r0, r0, #1 - lsl r0, r0, #2 - ldr r2, [r6, r0] - ldr r0, _021EE8C8 ; =0x00000864 - ldr r1, [r2, r0] - cmp r1, #1 - bne _021EE7C4 - sub r0, #0x10 - ldr r0, [r2, r0] - bl NNS_G3dGetMdlSet - add r7, r0, #0 - ldrh r0, [r7, #0xe] - add r0, r7, r0 - ldr r4, [r0, #0xc] - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0] - bl MOD05_021F4CA8 - cmp r0, #1 - bne _021EE7C4 - add r0, r7, r4 - bl MOD05_021DB5EC -_021EE7C4: - add r0, r5, #0 - add r0, #0xfc - ldr r3, [r0] - cmp r3, #0 - beq _021EE818 - add r0, r6, #0 - add r0, #0x22 - ldrb r0, [r0] - mov r2, #0x86 - lsl r2, r2, #4 - sub r0, r0, #1 - lsl r0, r0, #2 - ldr r4, [r6, r0] - ldr r1, [r4, r2] - cmp r1, #0 - blt _021EE818 - add r0, r5, #0 - add r6, r5, #0 - add r0, #0xc0 - add r6, #0xc4 - ldr r0, [r0] - ldr r6, [r6] - mul r6, r0 - cmp r1, r6 - bge _021EE818 - mov r0, #1 - lsl r0, r0, #8 - add r2, #8 - ldr r0, [r5, r0] - ldr r2, [r4, r2] - blx r3 - b _021EE818 -_021EE804: - add r6, #0x10 - add r0, r6, #0 - bl MOD05_021EE45C - cmp r0, #1 - bne _021EE818 - add r0, r5, #0 - mov r1, #0 - add r0, #0xa0 - strb r1, [r0] -_021EE818: - add r0, r5, #0 - add r0, #0xa0 - ldrb r0, [r0] - cmp r0, #0 - bne _021EE83A - add r0, r5, #0 - mov r1, #0 - add r0, #0xa2 - strb r1, [r0] - add r0, r5, #0 - add r0, #0xa1 - strb r1, [r0] - mov r0, #2 - add r5, #0xb4 - add sp, #0x14 - str r0, [r5] - pop {r4, r5, r6, r7, pc} -_021EE83A: - add r0, r5, #0 - bl MOD05_021EF0F0 - cmp r0, #1 - bne _021EE8C2 - add r0, r5, #0 - add r0, #0xa2 - ldrb r1, [r0] - mov r0, #0x30 - mov r2, #0 - mul r0, r1 - add r0, r5, r0 - str r2, [r0, #0x2c] - add r0, r5, #0 - bl MOD05_021EF100 - add r0, r5, #0 - add r0, #0xa0 - ldrb r0, [r0] - sub r1, r0, #1 - add r0, r5, #0 - add r0, #0xa0 - strb r1, [r0] - add r0, r5, #0 - add r0, #0xa2 - ldrb r0, [r0] - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r5, #0 - add r1, r2, r1 - add r0, #0xa2 - strb r1, [r0] - add r0, r5, #0 - add r0, #0xa0 - ldrb r0, [r0] - cmp r0, #0 - beq _021EE890 - mov r1, #0 - b _021EE8A0 -_021EE890: - add r0, r5, #0 - mov r1, #0 - add r0, #0xa2 - strb r1, [r0] - add r0, r5, #0 - add r0, #0xa1 - strb r1, [r0] - mov r1, #2 -_021EE8A0: - add r0, r5, #0 - add r0, #0xb4 - str r1, [r0] - ldr r0, [r5, #0x6c] - cmp r0, #1 - bne _021EE8C2 - mov r0, #0 - str r0, [r5, #0x6c] - add r0, r5, #0 - add r0, #0x70 - ldrb r0, [r0] - add r1, r5, #0 - bl MOD05_021EF118 - add r0, r5, #0 - bl MOD05_021EF094 -_021EE8C2: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021EE8C8: .word 0x00000864 - - thumb_func_start MOD05_021EE8CC -MOD05_021EE8CC: ; 0x021EE8CC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - ldr r4, [sp, #0x34] - str r2, [sp, #0x10] - add r7, r0, #0 - ldr r0, [r4, #0x6c] - add r5, r3, #0 - str r1, [sp, #0xc] - ldr r6, [sp, #0x30] - cmp r0, #1 - bne _021EE8E6 - bl GF_AssertFail -_021EE8E6: - add r0, r6, #0 - add r1, r4, #0 - add r2, sp, #0x14 - bl MOD05_021EEF9C - cmp r0, #1 - bne _021EE964 - add r1, sp, #0x14 - ldrb r1, [r1] - add r0, r4, #0 - bl MOD05_021EDE7C - add r0, r4, #0 - add r0, #0xa0 - ldrb r0, [r0] - cmp r0, #2 - blo _021EE948 - mov r0, #1 - str r0, [r4, #0x6c] - ldr r0, [sp, #0xc] - str r7, [r4, #0x74] - str r0, [r4, #0x78] - add r1, r4, #0 - ldr r0, [sp, #0x10] - add r1, #0x7c - strb r0, [r1] - add r0, r4, #0 - add r0, #0x7d - strb r5, [r0] - ldr r0, [sp, #0x10] - add r2, r4, #0 - add r2, #0x90 - lsl r1, r0, #2 - ldr r0, [r2, r1] - str r0, [r4, #0x64] - lsl r0, r5, #2 - ldr r3, [r2, r0] - str r3, [r4, #0x68] - add r4, #0x70 - strb r6, [r4] - ldr r3, [r2, r1] - mov r1, #0x86 - lsl r1, r1, #4 - str r7, [r3, r1] - ldr r2, [r2, r0] - ldr r0, [sp, #0xc] - add sp, #0x18 - str r0, [r2, r1] - pop {r3, r4, r5, r6, r7, pc} -_021EE948: - add r0, r4, #0 - str r5, [sp] - add r0, #0xa1 - ldrb r0, [r0] - ldr r2, [sp, #0xc] - add r1, r7, #0 - str r0, [sp, #4] - str r6, [sp, #8] - ldr r3, [sp, #0x10] - add r0, r4, #0 - bl MOD05_021EE470 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_021EE964: - add r0, r4, #0 - str r5, [sp] - add r0, #0xa1 - ldrb r0, [r0] - ldr r2, [sp, #0xc] - add r1, r7, #0 - str r0, [sp, #4] - str r6, [sp, #8] - ldr r3, [sp, #0x10] - add r0, r4, #0 - bl MOD05_021EE470 - cmp r0, #1 - beq _021EE984 - bl GF_AssertFail -_021EE984: - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EE988 -MOD05_021EE988: ; 0x021EE988 - push {r4, r5, r6, lr} - add r6, r1, #0 - add r4, r6, #0 - lsl r5, r0, #2 - add r4, #0x90 - ldr r1, [r4, r5] - ldr r0, _021EE9CC ; =0x00000864 - mov r2, #0 - str r2, [r1, r0] - ldr r1, [r4, r5] - sub r0, #8 - ldr r0, [r1, r0] - bl MOD05_021F43CC - ldr r1, [r4, r5] - ldr r0, _021EE9D0 ; =0x00000868 - ldr r0, [r1, r0] - bl MOD05_021E7C1C - mov r0, #0 - mov r2, #0x86 - ldr r1, [r4, r5] - mvn r0, r0 - lsl r2, r2, #4 - str r0, [r1, r2] - ldr r1, [r4, r5] - sub r2, #0x60 - bl MIi_CpuClearFast - add r0, r6, r5 - mov r1, #1 - add r0, #0x80 - str r1, [r0] - pop {r4, r5, r6, pc} - .balign 4, 0 -_021EE9CC: .word 0x00000864 -_021EE9D0: .word 0x00000868 - - thumb_func_start MOD05_021EE9D4 -MOD05_021EE9D4: ; 0x021EE9D4 - push {r3, r4, r5, r6, r7, lr} - ldr r4, [sp, #0x18] - add r5, r1, #0 - add r1, r4, #0 - add r6, r0, #0 - add r7, r2, #0 - str r3, [sp] - bl MOD05_021EE988 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EE988 - add r4, #0x90 - lsl r1, r6, #2 - lsl r5, r5, #2 - lsl r2, r7, #2 - ldr r0, [r4, r1] - ldr r3, [r4, r5] - ldr r6, [r4, r2] - str r6, [r4, r1] - ldr r1, [sp] - lsl r6, r1, #2 - ldr r1, [r4, r6] - str r1, [r4, r5] - str r0, [r4, r2] - str r3, [r4, r6] - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EEA0C -MOD05_021EEA0C: ; 0x021EEA0C - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - str r1, [sp, #8] - add r7, r0, #0 - ldr r0, [sp, #8] - add r6, r2, #0 - cmp r0, #4 - bls _021EEA1E - b _021EED32 -_021EEA1E: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EEA2A: ; jump table - .short _021EED32 - _021EEA2A - 2 ; case 0 - .short _021EEBA4 - _021EEA2A - 2 ; case 1 - .short _021EEC80 - _021EEA2A - 2 ; case 2 - .short _021EEAD2 - _021EEA2A - 2 ; case 3 - .short _021EEA34 - _021EEA2A - 2 ; case 4 -_021EEA34: - mov r0, #2 - mov r1, #3 - mov r2, #0 - mov r3, #1 - str r6, [sp] - bl MOD05_021EE9D4 - add r0, r6, #0 - add r0, #0xad - ldrb r0, [r0] - cmp r0, #2 - bne _021EEA7E - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - mov r0, #1 - sub r5, r7, r2 - str r0, [sp, #0x10] - mov r0, #0 - sub r4, r5, #1 - str r0, [sp, #0xc] - cmp r5, #0 - bge _021EEA68 - sub r5, r0, #1 - add r4, r5, #0 - b _021EEAB4 -_021EEA68: - cmp r4, #0 - blt _021EEA78 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEAB4 -_021EEA78: - mov r4, #0 - mvn r4, r4 - b _021EEAB4 -_021EEA7E: - cmp r0, #3 - bne _021EEAB0 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - mov r0, #0 - sub r5, r7, r2 - str r0, [sp, #0x10] - mov r0, #1 - add r4, r5, #1 - str r0, [sp, #0xc] - cmp r5, #0 - bge _021EEA9E - sub r5, r0, #2 - add r4, r5, #0 - b _021EEAB4 -_021EEA9E: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEAB4 - mov r4, #0 - mvn r4, r4 - b _021EEAB4 -_021EEAB0: - bl GF_AssertFail -_021EEAB4: - ldr r2, [sp, #0x10] - ldr r3, [sp, #0xc] - ldr r0, [sp, #8] - lsl r2, r2, #0x18 - str r0, [sp] - lsl r3, r3, #0x18 - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - str r6, [sp, #4] - bl MOD05_021EE8CC - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021EEAD2: - mov r0, #1 - mov r1, #3 - mov r2, #0 - mov r3, #2 - str r6, [sp] - bl MOD05_021EE9D4 - add r0, r6, #0 - add r0, #0xad - ldrb r0, [r0] - cmp r0, #1 - bne _021EEB30 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - sub r5, r7, #1 - sub r0, r7, r2 - sub r4, r0, #1 - mov r0, #2 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0xc] - cmp r5, #0 - blt _021EEB0E - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEB14 -_021EEB0E: - mov r5, #0 - mvn r5, r5 - add r4, r5, #0 -_021EEB14: - cmp r4, #0 - blt _021EEB2A - add r2, r6, #0 - add r2, #0xc0 - ldr r2, [r2] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE34 - cmp r0, #0 - bne _021EEB86 -_021EEB2A: - mov r4, #0 - mvn r4, r4 - b _021EEB86 -_021EEB30: - cmp r0, #3 - bne _021EEB82 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - sub r5, r7, #1 - add r0, r7, r2 - sub r4, r0, #1 - mov r0, #0 - str r0, [sp, #0x10] - mov r0, #2 - str r0, [sp, #0xc] - cmp r5, #0 - blt _021EEB58 - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEB5E -_021EEB58: - mov r5, #0 - mvn r5, r5 - add r4, r5, #0 -_021EEB5E: - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r2 - cmp r0, r4 - ble _021EEB7C - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE34 - cmp r0, #0 - bne _021EEB86 -_021EEB7C: - mov r4, #0 - mvn r4, r4 - b _021EEB86 -_021EEB82: - bl GF_AssertFail -_021EEB86: - ldr r2, [sp, #0x10] - ldr r3, [sp, #0xc] - ldr r0, [sp, #8] - lsl r2, r2, #0x18 - str r0, [sp] - lsl r3, r3, #0x18 - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - str r6, [sp, #4] - bl MOD05_021EE8CC - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021EEBA4: - mov r0, #0 - mov r1, #2 - mov r2, #1 - mov r3, #3 - str r6, [sp] - bl MOD05_021EE9D4 - add r0, r6, #0 - add r0, #0xad - ldrb r0, [r0] - cmp r0, #0 - bne _021EEC12 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - add r5, r7, #1 - sub r0, r7, r2 - add r4, r0, #1 - mov r0, #3 - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0xc] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r2 - cmp r0, r5 - ble _021EEBE8 - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEBEE -_021EEBE8: - mov r5, #0 - mvn r5, r5 - add r4, r5, #0 -_021EEBEE: - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r2 - cmp r0, r4 - ble _021EEC0C - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE34 - cmp r0, #0 - bne _021EEC62 -_021EEC0C: - mov r4, #0 - mvn r4, r4 - b _021EEC62 -_021EEC12: - cmp r0, #2 - bne _021EEC62 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - add r5, r7, #1 - add r0, r7, r2 - add r4, r0, #1 - mov r0, #1 - str r0, [sp, #0x10] - mov r0, #3 - str r0, [sp, #0xc] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r2 - cmp r0, r5 - ble _021EEC42 - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EEC48 -_021EEC42: - mov r5, #0 - mvn r5, r5 - add r4, r5, #0 -_021EEC48: - cmp r4, #0 - blt _021EEC5E - add r2, r6, #0 - add r2, #0xc0 - ldr r2, [r2] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE34 - cmp r0, #0 - bne _021EEC62 -_021EEC5E: - mov r4, #0 - mvn r4, r4 -_021EEC62: - ldr r2, [sp, #0x10] - ldr r3, [sp, #0xc] - ldr r0, [sp, #8] - lsl r2, r2, #0x18 - str r0, [sp] - lsl r3, r3, #0x18 - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - str r6, [sp, #4] - bl MOD05_021EE8CC - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021EEC80: - mov r0, #0 - mov r1, #1 - mov r2, #2 - mov r3, #3 - str r6, [sp] - bl MOD05_021EE9D4 - add r0, r6, #0 - add r0, #0xad - ldrb r0, [r0] - cmp r0, #0 - bne _021EECD0 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - mov r0, #3 - str r0, [sp, #0x10] - mov r0, #2 - str r0, [sp, #0xc] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - add r5, r7, r2 - mul r0, r2 - sub r4, r5, #1 - cmp r0, r5 - bgt _021EECBE - ldr r0, [sp, #0xc] - sub r5, r0, #3 - add r4, r5, #0 - b _021EED14 -_021EECBE: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EED14 - mov r4, #0 - mvn r4, r4 - b _021EED14 -_021EECD0: - cmp r0, #1 - bne _021EED10 - add r0, r6, #0 - add r0, #0xc0 - ldr r2, [r0] - mov r0, #2 - str r0, [sp, #0x10] - mov r0, #3 - str r0, [sp, #0xc] - add r0, r6, #0 - add r0, #0xc4 - ldr r0, [r0] - add r5, r7, r2 - mul r0, r2 - add r4, r5, #1 - cmp r0, r5 - bgt _021EECFA - ldr r0, [sp, #0xc] - sub r5, r0, #4 - add r4, r5, #0 - b _021EED14 -_021EECFA: - cmp r0, r4 - ble _021EED0A - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EED14 -_021EED0A: - mov r4, #0 - mvn r4, r4 - b _021EED14 -_021EED10: - bl GF_AssertFail -_021EED14: - ldr r2, [sp, #0x10] - ldr r3, [sp, #0xc] - ldr r0, [sp, #8] - lsl r2, r2, #0x18 - str r0, [sp] - lsl r3, r3, #0x18 - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - str r6, [sp, #4] - bl MOD05_021EE8CC - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021EED32: - bl GF_AssertFail - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EED3C -MOD05_021EED3C: ; 0x021EED3C - push {r4, r5, r6, r7, lr} - sub sp, #0x44 - add r5, r1, #0 - add r4, r5, #0 - lsl r6, r0, #2 - mov r0, #0x86 - add r3, sp, #0x38 - mov r1, #0 - str r1, [r3] - str r1, [r3, #4] - str r2, [sp, #4] - add r2, r5, #0 - add r4, #0x90 - str r1, [r3, #8] - add r2, #0xbc - ldr r1, [r4, r6] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r5, #0 - add r1, #0xc0 - ldr r1, [r1] - ldr r2, [r2] - bl MOD05_021EF300 - ldr r1, [r4, r6] - ldr r0, _021EEDD4 ; =0x00000864 - ldr r0, [r1, r0] - cmp r0, #1 - bne _021EEDA6 - ldr r3, _021EEDD8 ; =UNK05_021F8B14 - add r2, sp, #0x2c - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - ldr r3, _021EEDDC ; =UNK05_021F8B20 - str r0, [r2] - add r2, sp, #8 - mov r7, #4 -_021EED88: - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - sub r7, r7, #1 - bne _021EED88 - ldr r0, [r3] - add r3, sp, #0x2c - str r0, [r2] - mov r0, #2 - ldr r1, [r4, r6] - lsl r0, r0, #0xa - add r0, r1, r0 - add r1, sp, #0x38 - add r2, sp, #8 - bl FUN_0201B26C -_021EEDA6: - ldr r4, [r4, r6] - ldr r0, _021EEDD4 ; =0x00000864 - ldr r0, [r4, r0] - cmp r0, #1 - bne _021EEDCE - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0] - bl MOD05_021F4CA8 - add r2, r0, #0 - ldr r0, _021EEDE0 ; =0x00000868 - add r5, #0xb8 - ldr r0, [r4, r0] - ldr r3, [sp, #4] - str r0, [sp] - ldr r1, [r5] - add r0, sp, #0x38 - bl MOD05_021E7DD8 -_021EEDCE: - add sp, #0x44 - pop {r4, r5, r6, r7, pc} - nop -_021EEDD4: .word 0x00000864 -_021EEDD8: .word UNK05_021F8B14 -_021EEDDC: .word UNK05_021F8B20 -_021EEDE0: .word 0x00000868 - - thumb_func_start MOD05_021EEDE4 -MOD05_021EEDE4: ; 0x021EEDE4 - push {r3, r4, r5, r6, r7, lr} - add r7, r2, #0 - add r5, r1, #0 - add r6, r0, #0 - add r1, r7, #0 - bl _u32_div_f - add r4, r1, #0 - add r0, r6, #0 - add r1, r7, #0 - bl _u32_div_f - lsr r0, r0, #5 - add r1, r0, #0 - lsr r2, r4, #5 - mul r1, r5 - add r0, r2, r1 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EEE08 -MOD05_021EEE08: ; 0x021EEE08 - mul r2, r1 - add r0, r0, r2 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EEE10 -MOD05_021EEE10: ; 0x021EEE10 - push {r3, r4, r5, r6, r7, lr} - add r7, r2, #0 - add r5, r1, #0 - add r6, r0, #0 - add r1, r7, #0 - bl _u32_div_f - add r4, r1, #0 - add r0, r6, #0 - add r1, r7, #0 - bl _u32_div_f - lsr r0, r0, #5 - add r1, r0, #0 - lsr r2, r4, #5 - mul r1, r5 - add r0, r2, r1 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EEE34 -MOD05_021EEE34: ; 0x021EEE34 - push {r3, lr} - cmp r0, #0 - bne _021EEE3E - mov r0, #3 - pop {r3, pc} -_021EEE3E: - cmp r0, #1 - bne _021EEE46 - mov r0, #2 - pop {r3, pc} -_021EEE46: - cmp r0, #2 - bne _021EEE4E - mov r0, #1 - pop {r3, pc} -_021EEE4E: - cmp r0, #3 - bne _021EEE56 - mov r0, #0 - pop {r3, pc} -_021EEE56: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EEE60 -MOD05_021EEE60: ; 0x021EEE60 - push {r3, r4, r5, lr} - add r5, r2, #0 - add r4, r3, #0 - cmp r0, #4 - bhi _021EEEC0 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EEE76: ; jump table - .short _021EEEC0 - _021EEE76 - 2 ; case 0 - .short _021EEE80 - _021EEE76 - 2 ; case 1 - .short _021EEE96 - _021EEE76 - 2 ; case 2 - .short _021EEEA4 - _021EEE76 - 2 ; case 3 - .short _021EEEB8 - _021EEE76 - 2 ; case 4 -_021EEE80: - add r0, r4, #0 - add r1, r5, #0 - bl _s32_div_f - add r0, r1, #1 - cmp r0, r5 - blt _021EEE92 - add r0, r4, #0 - pop {r3, r4, r5, pc} -_021EEE92: - add r0, r4, #1 - pop {r3, r4, r5, pc} -_021EEE96: - lsl r1, r1, #5 - add r0, r4, r5 - mul r1, r5 - cmp r0, r1 - blt _021EEEC6 - add r0, r4, #0 - pop {r3, r4, r5, pc} -_021EEEA4: - add r0, r4, #0 - add r1, r5, #0 - bl _s32_div_f - sub r0, r1, #1 - bpl _021EEEB4 - add r0, r4, #0 - pop {r3, r4, r5, pc} -_021EEEB4: - sub r0, r4, #1 - pop {r3, r4, r5, pc} -_021EEEB8: - sub r0, r4, r5 - bpl _021EEEC6 - add r0, r4, #0 - pop {r3, r4, r5, pc} -_021EEEC0: - bl GF_AssertFail - mov r0, #0 -_021EEEC6: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021EEEC8 -MOD05_021EEEC8: ; 0x021EEEC8 - cmp r0, #4 - bhi _021EEF00 - add r2, r0, r0 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021EEED8: ; jump table - .short _021EEF00 - _021EEED8 - 2 ; case 0 - .short _021EEEFA - _021EEED8 - 2 ; case 1 - .short _021EEEEA - _021EEED8 - 2 ; case 2 - .short _021EEEF2 - _021EEED8 - 2 ; case 3 - .short _021EEEE2 - _021EEED8 - 2 ; case 4 -_021EEEE2: - sub r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_021EEEEA: - add r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_021EEEF2: - sub r0, r1, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_021EEEFA: - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 -_021EEF00: - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EEF04 -MOD05_021EEF04: ; 0x021EEF04 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r4, r2, #0 - bl MOD05_021EEEC8 - cmp r5, r0 - bge _021EEF36 - sub r0, r0, r5 - cmp r0, #1 - bne _021EEF22 - ldrb r0, [r4] - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - b _021EEF62 -_021EEF22: - cmp r0, #2 - bne _021EEF30 - ldrb r0, [r4] - sub r0, r0, #2 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - b _021EEF62 -_021EEF30: - bl GF_AssertFail - b _021EEF62 -_021EEF36: - cmp r5, r0 - ble _021EEF5E - sub r0, r5, r0 - cmp r0, #1 - bne _021EEF4A - ldrb r0, [r4] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - b _021EEF62 -_021EEF4A: - cmp r0, #2 - bne _021EEF58 - ldrb r0, [r4] - add r0, r0, #2 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - b _021EEF62 -_021EEF58: - bl GF_AssertFail - b _021EEF62 -_021EEF5E: - bl GF_AssertFail -_021EEF62: - strb r6, [r4] - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EEF68 -MOD05_021EEF68: ; 0x021EEF68 - push {r3, lr} - cmp r0, #4 - bhi _021EEF94 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EEF7A: ; jump table - .short _021EEF94 - _021EEF7A - 2 ; case 0 - .short _021EEF8C - _021EEF7A - 2 ; case 1 - .short _021EEF88 - _021EEF7A - 2 ; case 2 - .short _021EEF90 - _021EEF7A - 2 ; case 3 - .short _021EEF84 - _021EEF7A - 2 ; case 4 -_021EEF84: - mov r0, #2 - pop {r3, pc} -_021EEF88: - mov r0, #4 - pop {r3, pc} -_021EEF8C: - mov r0, #3 - pop {r3, pc} -_021EEF90: - mov r0, #1 - pop {r3, pc} -_021EEF94: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - - thumb_func_start MOD05_021EEF9C -MOD05_021EEF9C: ; 0x021EEF9C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r1, #0 - add r7, r2, #0 - mov r4, #0 -_021EEFA6: - ldr r0, [r5, #0x2c] - cmp r0, #1 - bne _021EEFC2 - add r0, r6, #0 - bl MOD05_021EEF68 - add r1, r5, #0 - add r1, #0x30 - ldrb r1, [r1] - cmp r1, r0 - bne _021EEFC2 - strb r4, [r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021EEFC2: - add r4, r4, #1 - add r5, #0x30 - cmp r4, #2 - blt _021EEFA6 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EEFD0 -MOD05_021EEFD0: ; 0x021EEFD0 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r0, #0xa1 - ldrb r1, [r0] - mov r0, #0x30 - add r4, r5, #0 - mul r0, r1 - add r0, r5, r0 - ldr r0, [r0, #0x2c] - add r4, #0x64 - cmp r0, #0 - beq _021EEFEC - bl GF_AssertFail -_021EEFEC: - add r1, r5, #0 - add r1, #0xa1 - ldrb r2, [r1] - mov r1, #0x30 - mov r0, #1 - add r3, r2, #0 - mul r3, r1 - add r2, r5, r3 - add r3, r5, #0 - str r0, [r2, #0x2c] - add r3, #0xa1 - ldrb r3, [r3] - ldrb r2, [r4, #0xc] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - add r3, #0x30 - strb r2, [r3] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - ldr r2, [r4, #0x10] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - str r2, [r3, #0x1c] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - ldr r2, [r4, #0x14] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - str r2, [r3, #0x20] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - ldrb r2, [r4, #0x18] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - add r3, #0x24 - strb r2, [r3] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - ldrb r2, [r4, #0x19] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - add r3, #0x25 - strb r2, [r3] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - ldr r2, [r4] - add r6, r3, #0 - mul r6, r1 - add r3, r5, r6 - str r2, [r3, #4] - add r2, r5, #0 - add r2, #0xa1 - ldrb r2, [r2] - ldr r4, [r4, #4] - add r3, r2, #0 - mul r3, r1 - add r2, r5, r3 - add r3, r5, #0 - str r4, [r2, #8] - add r3, #0xa1 - ldrb r3, [r3] - mov r2, #0 - add r4, r3, #0 - mul r4, r1 - add r3, r5, r4 - add r3, #0x26 - strb r2, [r3] - add r3, r5, #0 - add r3, #0xa1 - ldrb r3, [r3] - mul r1, r3 - add r1, r5, r1 - str r2, [r1, #0x28] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021EF094 -MOD05_021EF094: ; 0x021EF094 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r0, #0xa0 - ldrb r0, [r0] - add r4, r5, #0 - add r4, #0x64 - cmp r0, #2 - blo _021EF0A8 - bl GF_AssertFail -_021EF0A8: - add r0, r5, #0 - bl MOD05_021EEFD0 - cmp r0, #1 - beq _021EF0B6 - bl GF_AssertFail -_021EF0B6: - mov r0, #0x86 - ldr r2, [r4, #0x10] - ldr r1, [r4] - lsl r0, r0, #4 - str r2, [r1, r0] - ldr r2, [r4, #0x14] - ldr r1, [r4, #4] - str r2, [r1, r0] - add r0, r5, #0 - add r0, #0xa0 - ldrb r0, [r0] - add r1, r0, #1 - add r0, r5, #0 - add r0, #0xa0 - strb r1, [r0] - add r0, r5, #0 - add r0, #0xa1 - ldrb r0, [r0] - add r5, #0xa1 - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - strb r0, [r5] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF0F0 -MOD05_021EF0F0: ; 0x021EF0F0 - add r1, r0, #0 - add r1, #0xa2 - ldrb r2, [r1] - mov r1, #0x30 - mul r1, r2 - add r0, r0, r1 - ldr r0, [r0, #0x28] - bx lr - - thumb_func_start MOD05_021EF100 -MOD05_021EF100: ; 0x021EF100 - mov r3, #0 - add r2, r3, #0 -_021EF104: - lsl r1, r3, #2 - add r1, r0, r1 - add r1, #0x80 - str r2, [r1] - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - cmp r3, #4 - blo _021EF104 - bx lr - - thumb_func_start MOD05_021EF118 -MOD05_021EF118: ; 0x021EF118 - cmp r0, #4 - bhi _021EF168 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EF128: ; jump table - .short _021EF168 - _021EF128 - 2 ; case 0 - .short _021EF140 - _021EF128 - 2 ; case 1 - .short _021EF14E - _021EF128 - 2 ; case 2 - .short _021EF15C - _021EF128 - 2 ; case 3 - .short _021EF132 - _021EF128 - 2 ; case 4 -_021EF132: - add r0, r1, #0 - mov r2, #1 - add r0, #0x88 - str r2, [r0] - add r1, #0x8c - str r2, [r1] - bx lr -_021EF140: - add r0, r1, #0 - mov r2, #1 - add r0, #0x80 - str r2, [r0] - add r1, #0x88 - str r2, [r1] - bx lr -_021EF14E: - add r0, r1, #0 - mov r2, #1 - add r0, #0x80 - str r2, [r0] - add r1, #0x84 - str r2, [r1] - bx lr -_021EF15C: - add r0, r1, #0 - mov r2, #1 - add r0, #0x84 - str r2, [r0] - add r1, #0x8c - str r2, [r1] -_021EF168: - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF16C -MOD05_021EF16C: ; 0x021EF16C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r0, #0 - add r4, r3, #0 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021EDFBC - add r2, r5, #0 - add r3, r5, #0 - str r4, [sp] - add r0, sp, #0x10 - str r0, [sp, #4] - add r2, #0xc0 - add r3, #0xc4 - ldr r2, [r2] - ldr r3, [r3] - add r0, r6, #0 - add r1, r7, #0 - bl MOD05_021EDED0 - mov r6, #0 - add r7, sp, #0x10 -_021EF19A: - lsl r4, r6, #2 - bl MOD05_021F4328 - add r1, r5, r4 - add r1, #0x90 - ldr r2, [r1] - ldr r1, _021EF1F8 ; =0x0000085C - str r0, [r2, r1] - add r0, r5, r4 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF1F8 ; =0x0000085C - ldr r0, [r1, r0] - bl MOD05_021F4454 - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0] - bl MOD05_021F4CA8 - add r1, r5, #0 - add r1, #0xc0 - ldr r1, [r1] - add r2, r5, #0 - str r1, [sp] - add r1, r5, #0 - add r1, #0xc4 - ldr r1, [r1] - add r3, r5, #0 - str r1, [sp, #4] - str r0, [sp, #8] - str r5, [sp, #0xc] - add r2, #0xb8 - add r3, #0xbc - ldr r0, [r7, r4] - ldr r2, [r2] - ldr r3, [r3] - add r1, r6, #0 - bl MOD05_021EE2A4 - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #4 - blo _021EF19A - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EF1F8: .word 0x0000085C - - thumb_func_start MOD05_021EF1FC -MOD05_021EF1FC: ; 0x021EF1FC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r0, #0 - add r4, r3, #0 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021EE050 - add r2, r5, #0 - add r3, r5, #0 - str r4, [sp] - add r0, sp, #0x10 - str r0, [sp, #4] - add r2, #0xc0 - add r3, #0xc4 - ldr r2, [r2] - ldr r3, [r3] - add r0, r6, #0 - add r1, r7, #0 - bl MOD05_021EDED0 - mov r4, #0 - add r7, r4, #0 -_021EF22A: - lsl r6, r4, #2 - add r0, r5, r6 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF278 ; =0x0000085C - str r7, [r1, r0] - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0] - bl MOD05_021F4CA8 - add r1, r5, #0 - add r1, #0xc0 - ldr r1, [r1] - add r2, r5, #0 - str r1, [sp] - add r1, r5, #0 - add r1, #0xc4 - ldr r1, [r1] - add r3, r5, #0 - str r1, [sp, #4] - str r0, [sp, #8] - str r5, [sp, #0xc] - add r0, sp, #0x10 - add r2, #0xb8 - add r3, #0xbc - ldr r0, [r0, r6] - ldr r2, [r2] - ldr r3, [r3] - add r1, r4, #0 - bl MOD05_021EE38C - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _021EF22A - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EF278: .word 0x0000085C - - thumb_func_start MOD05_021EF27C -MOD05_021EF27C: ; 0x021EF27C - push {r4, lr} - add r1, r0, #0 - mov r3, #0 - add r1, #0xa2 - strb r3, [r1] - add r1, r0, #0 - add r1, #0xa1 - strb r3, [r1] - add r1, r0, #0 - add r1, #0xa0 - strb r3, [r1] - add r4, r0, #0 - add r2, r3, #0 - mov r1, #1 -_021EF298: - str r2, [r4, #0x2c] - str r1, [r4, #0x28] - add r3, r3, #1 - add r4, #0x30 - cmp r3, #2 - blt _021EF298 - bl MOD05_021EF100 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF2AC -MOD05_021EF2AC: ; 0x021EF2AC - push {r4, lr} - add r4, r2, #0 - add r2, #0xc8 - ldr r2, [r2] - bl MOD05_021EEE08 - add r1, r4, #0 - add r1, #0xa8 - str r0, [r1] - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0xc8 - ldr r0, [r0] - ldr r1, [r1] - bl MOD05_021EF620 - add r1, r4, #0 - add r1, #0xad - strb r0, [r1] - add r0, r4, #0 - add r0, #0xad - ldrb r0, [r0] - bl MOD05_021EEE34 - add r1, r4, #0 - add r1, #0xac - strb r0, [r1] - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0xa8 - add r1, #0xc0 - add r2, #0xc8 - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl MOD05_021EEE10 - add r4, #0xa4 - str r0, [r4] - pop {r4, pc} - - thumb_func_start MOD05_021EF300 -MOD05_021EF300: ; 0x021EF300 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r2, #0 - mov r2, #1 - add r5, r3, #0 - lsl r2, r2, #0x14 - str r2, [r5] - str r2, [r5, #8] - mov r2, #0 - add r4, r0, #0 - mvn r2, r2 - str r1, [sp, #4] - cmp r4, r2 - beq _021EF362 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r6, r0, #0x10 - ldr r1, [sp, #4] - add r0, r4, #0 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r7, #0 - bl MapMatrix_GetWidth - str r0, [sp, #8] - add r0, r7, #0 - bl MapMatrix_GetMatrixID - add r1, r0, #0 - ldr r0, [sp, #8] - add r2, r6, #0 - str r0, [sp] - add r0, r7, #0 - add r3, r4, #0 - bl MapMatrix_GetMapAltitude - lsl r0, r0, #0xf - str r0, [r5, #4] - ldr r1, [r5] - lsl r0, r6, #0x15 - add r0, r1, r0 - str r0, [r5] - ldr r1, [r5, #8] - lsl r0, r4, #0x15 - add r0, r1, r0 - str r0, [r5, #8] -_021EF362: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF368 -MOD05_021EF368: ; 0x021EF368 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r1, [sp] - mov r1, #0x41 - add r5, r0, #0 - mov r0, #4 - lsl r1, r1, #2 - str r2, [sp, #4] - add r6, r3, #0 - bl AllocFromHeap - mov r2, #0x41 - mov r1, #0 - lsl r2, r2, #2 - add r4, r0, #0 - bl MI_CpuFill8 - cmp r6, #0 - bne _021EF39A - add r0, r4, #0 - ldr r1, _021EF42C ; =UNK05_021F8B04 - add r0, #0xf4 - str r1, [r0] - mov r7, #1 - b _021EF3AE -_021EF39A: - cmp r6, #1 - bne _021EF3AA - add r0, r4, #0 - ldr r1, _021EF430 ; =UNK05_021F8B0C - add r0, #0xf4 - str r1, [r0] - mov r7, #0 - b _021EF3AE -_021EF3AA: - bl GF_AssertFail -_021EF3AE: - add r0, r7, #0 - bl MOD05_021F3BC0 - str r0, [r4] - add r1, r4, #0 - ldr r0, [sp] - add r1, #0xb8 - str r0, [r1] - add r0, r4, #0 - add r0, #0xbc - str r5, [r0] - add r0, r5, #0 - bl MapMatrix_GetWidth - add r1, r4, #0 - add r1, #0xc0 - str r0, [r1] - add r0, r5, #0 - bl MapMatrix_GetHeight - add r1, r4, #0 - add r1, #0xc4 - str r0, [r1] - add r0, r4, #0 - add r0, #0xc0 - ldr r0, [r0] - lsl r1, r0, #5 - add r0, r4, #0 - add r0, #0xc8 - str r1, [r0] - add r1, r4, #0 - ldr r0, [sp, #4] - add r1, #0xf0 - str r0, [r1] - add r0, r4, #0 - mov r1, #1 - add r0, #0xec - str r1, [r0] - add r0, r4, #0 - bl MOD05_021EF27C - add r0, r4, #0 - mov r1, #0 - add r0, #0xb0 - str r1, [r0] - add r0, r4, #0 - mov r1, #2 - add r0, #0xb4 - str r1, [r0] - mov r0, #0x43 - mov r1, #4 - bl NARC_ctor - add r1, r4, #0 - add r1, #0xf8 - str r0, [r1] - add r0, r4, #0 - mov r1, #0 - add r0, #0xfc - str r1, [r0] - add r0, r4, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EF42C: .word UNK05_021F8B04 -_021EF430: .word UNK05_021F8B0C - - thumb_func_start MOD05_021EF434 -MOD05_021EF434: ; 0x021EF434 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r5, #0 - add r6, #0xf4 - add r3, r5, #0 - ldr r6, [r6] - add r3, #0xc8 - ldr r3, [r3] - ldr r6, [r6] - add r4, r1, #0 - add r7, r2, #0 - blx r6 - add r0, r4, #0 - add r1, r7, #0 - add r2, r5, #0 - bl MOD05_021EF2AC - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021EF458 -MOD05_021EF458: ; 0x021EF458 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r2, r5, #0 - add r3, r5, #0 - add r1, #0xc4 - add r2, #0xc8 - add r3, #0xa8 - ldr r1, [r1] - ldr r2, [r2] - ldr r3, [r3] - add r6, r0, #0 - bl MOD05_021EEE60 - add r1, r5, #0 - add r2, r5, #0 - add r1, #0xc0 - add r2, #0xc8 - ldr r1, [r1] - ldr r2, [r2] - add r7, r0, #0 - bl MOD05_021EEDE4 - add r1, r5, #0 - add r1, #0xc8 - add r4, r0, #0 - ldr r1, [r1] - add r0, r7, #0 - bl MOD05_021EF620 - add r1, r5, #0 - add r1, #0xa4 - ldr r1, [r1] - cmp r1, r4 - bne _021EF4C0 - add r1, r5, #0 - add r1, #0xad - ldrb r1, [r1] - cmp r1, r0 - beq _021EF4C0 - add r0, r4, #0 - add r1, r6, #0 - add r2, r5, #0 - bl MOD05_021EEA0C - add r1, r5, #0 - add r1, #0xad - add r5, #0xac - ldrb r1, [r1] - add r0, r6, #0 - add r2, r5, #0 - bl MOD05_021EEF04 -_021EF4C0: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF4C4 -MOD05_021EF4C4: ; 0x021EF4C4 - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - add r5, r0, #0 - add r6, r1, #0 - sub r7, r4, #1 -_021EF4CE: - lsl r0, r4, #2 - add r0, r5, r0 - add r0, #0x90 - ldr r1, [r0] - mov r0, #0x86 - lsl r0, r0, #4 - ldr r0, [r1, r0] - cmp r0, r7 - beq _021EF4EA - add r0, r4, #0 - add r1, r5, #0 - add r2, r6, #0 - bl MOD05_021EED3C -_021EF4EA: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _021EF4CE - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF4F8 -MOD05_021EF4F8: ; 0x021EF4F8 - push {r3, r4} - asr r4, r0, #0xf - lsr r4, r4, #0x10 - add r4, r0, r4 - asr r0, r4, #0x10 - str r0, [r2] - asr r0, r1, #0xf - lsr r0, r0, #0x10 - add r0, r1, r0 - asr r0, r0, #0x10 - str r0, [r3] - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF514 -MOD05_021EF514: ; 0x021EF514 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl ClearFileCache - bl NNS_GfdResetLnkTexVramState - bl NNS_GfdResetLnkPlttVramState - mov r4, #0 - add r6, r5, #4 - mov r7, #0x30 -_021EF52A: - add r0, r4, #0 - mul r0, r7 - add r0, r6, r0 - bl MOD05_021EDEAC - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #2 - blo _021EF52A - mov r6, #0 - add r7, r6, #0 -_021EF542: - lsl r4, r6, #2 - add r0, r5, r4 - add r0, #0x90 - ldr r2, [r0] - ldr r0, _021EF59C ; =0x00000864 - mov r1, #0 - str r1, [r2, r0] - add r0, r5, r4 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF5A0 ; =0x0000085C - ldr r0, [r1, r0] - bl MOD05_021F43C0 - add r0, r5, r4 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF5A4 ; =0x00000868 - ldr r0, [r1, r0] - bl MOD05_021E7C14 - add r0, r5, r4 - add r0, #0x90 - ldr r0, [r0] - bl FreeToHeap - add r0, r5, r4 - add r0, #0x90 - str r7, [r0] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #4 - blo _021EF542 - add r0, r5, #0 - mov r1, #3 - add r0, #0xb4 - str r1, [r0] - add r0, r5, #0 - mov r1, #1 - add r0, #0xb0 - str r1, [r0] - add r5, #0xec - str r7, [r5] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EF59C: .word 0x00000864 -_021EF5A0: .word 0x0000085C -_021EF5A4: .word 0x00000868 - - thumb_func_start MOD05_021EF5A8 -MOD05_021EF5A8: ; 0x021EF5A8 - push {r4, lr} - add r4, r0, #0 - add r0, #0xf8 - ldr r0, [r0] - bl NARC_dtor - ldr r0, [r4] - bl MOD05_021F3C30 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF5C4 -MOD05_021EF5C4: ; 0x021EF5C4 - add r1, r0, #0 - add r1, #0xb0 - ldr r1, [r1] - cmp r1, #1 - bne _021EF5DA - add r0, #0xa0 - ldrb r0, [r0] - cmp r0, #0 - bne _021EF5DA - mov r0, #1 - bx lr -_021EF5DA: - mov r0, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF5E0 -MOD05_021EF5E0: ; 0x021EF5E0 - push {r4, r5} - add r5, r0, #0 - add r4, r1, #0 - add r2, r4, #0 - add r3, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0xcc - stmia r2!, {r0, r1} - ldr r0, [r3] - add r4, #0xd8 - str r0, [r2] - str r5, [r4] - pop {r4, r5} - bx lr - - thumb_func_start MOD05_021EF5FC -MOD05_021EF5FC: ; 0x021EF5FC - mov r1, #0 - add r0, #0xd8 - str r1, [r0] - bx lr - - thumb_func_start MOD05_021EF604 -MOD05_021EF604: ; 0x021EF604 - lsl r0, r0, #2 - add r0, r1, r0 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF614 ; =0x00000868 - ldr r0, [r1, r0] - str r0, [r2] - bx lr - .balign 4, 0 -_021EF614: .word 0x00000868 - - thumb_func_start MOD05_021EF618 -MOD05_021EF618: ; 0x021EF618 - add r0, #0xac - ldrb r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF620 -MOD05_021EF620: ; 0x021EF620 - push {r4, lr} - add r4, r0, #0 - bl _u32_div_f - lsr r2, r0, #0x1f - lsl r1, r0, #0x1b - sub r1, r1, r2 - mov r0, #0x1b - ror r1, r0 - mov r0, #0x1f - and r0, r4 - add r1, r2, r1 - cmp r0, #0x10 - bge _021EF648 - cmp r1, #0x10 - bge _021EF644 - mov r0, #0 - pop {r4, pc} -_021EF644: - mov r0, #2 - pop {r4, pc} -_021EF648: - cmp r1, #0x10 - bge _021EF650 - mov r0, #1 - pop {r4, pc} -_021EF650: - mov r0, #3 - pop {r4, pc} - - thumb_func_start MOD05_021EF654 -MOD05_021EF654: ; 0x021EF654 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r0, #0 - add r0, r4, #0 - add r0, #0xa4 - ldr r0, [r0] - cmp r0, r5 - bne _021EF66A - add r4, #0xac - ldrb r0, [r4] - pop {r3, r4, r5, pc} -_021EF66A: - mov r0, #0 - mvn r0, r0 - cmp r5, r0 - bne _021EF676 - bl GF_AssertFail -_021EF676: - add r0, r4, #0 - add r0, #0xac - ldrb r1, [r0] - cmp r1, #3 - bls _021EF682 - b _021EF820 -_021EF682: - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EF68E: ; jump table - .short _021EF696 - _021EF68E - 2 ; case 0 - .short _021EF6F8 - _021EF68E - 2 ; case 1 - .short _021EF75C - _021EF68E - 2 ; case 2 - .short _021EF7BE - _021EF68E - 2 ; case 3 -_021EF696: - add r0, r4, #0 - add r0, #0xa4 - add r2, r4, #0 - ldr r0, [r0] - add r2, #0xc0 - ldr r2, [r2] - sub r3, r5, r0 - cmp r2, r3 - bne _021EF6B0 - add r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF6B0: - cmp r3, #1 - bne _021EF6CA - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - beq _021EF6CA - add r4, #0xac - ldrb r0, [r4] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF6CA: - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa4 - add r1, #0xc0 - ldr r2, [r1] - ldr r0, [r0] - add r3, r2, #1 - sub r1, r5, r0 - cmp r3, r1 - bne _021EF6F4 - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EF6F4 - add r4, #0xac - ldrb r0, [r4] - add r0, r0, #3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF6F4: - mov r0, #4 - pop {r3, r4, r5, pc} -_021EF6F8: - add r0, r4, #0 - add r0, #0xa4 - add r2, r4, #0 - ldr r0, [r0] - add r2, #0xc0 - ldr r2, [r2] - sub r3, r5, r0 - cmp r2, r3 - bne _021EF712 - add r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF712: - sub r1, r0, r5 - cmp r1, #1 - bne _021EF72E - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - beq _021EF72E - add r4, #0xac - ldrb r0, [r4] - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF72E: - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa4 - add r1, #0xc0 - ldr r2, [r1] - ldr r0, [r0] - sub r3, r2, #1 - sub r1, r5, r0 - cmp r3, r1 - bne _021EF758 - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EF758 - add r4, #0xac - ldrb r0, [r4] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF758: - mov r0, #4 - pop {r3, r4, r5, pc} -_021EF75C: - add r0, r4, #0 - add r0, #0xa4 - add r2, r4, #0 - ldr r0, [r0] - add r2, #0xc0 - ldr r2, [r2] - sub r3, r0, r5 - cmp r2, r3 - bne _021EF776 - sub r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF776: - sub r1, r2, #1 - cmp r1, r3 - bne _021EF792 - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EF792 - add r4, #0xac - ldrb r0, [r4] - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF792: - add r0, r4, #0 - add r0, #0xa4 - ldr r0, [r0] - sub r1, r5, r0 - cmp r1, #1 - bne _021EF7BA - add r2, r4, #0 - add r2, #0xc0 - ldr r2, [r2] - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - beq _021EF7BA - add r4, #0xac - ldrb r0, [r4] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF7BA: - mov r0, #4 - pop {r3, r4, r5, pc} -_021EF7BE: - add r0, r4, #0 - add r0, #0xa4 - add r2, r4, #0 - ldr r0, [r0] - add r2, #0xc0 - ldr r2, [r2] - sub r3, r0, r5 - cmp r2, r3 - bne _021EF7D8 - sub r0, r1, #2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF7D8: - add r1, r2, #1 - cmp r1, r3 - bne _021EF7F4 - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - bne _021EF7F4 - add r4, #0xac - ldrb r0, [r4] - sub r0, r0, #3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF7F4: - add r0, r4, #0 - add r0, #0xa4 - ldr r0, [r0] - sub r1, r0, r5 - cmp r1, #1 - bne _021EF81C - add r2, r4, #0 - add r2, #0xc0 - ldr r2, [r2] - add r1, r5, #0 - bl MOD05_021EDE58 - cmp r0, #0 - beq _021EF81C - add r4, #0xac - ldrb r0, [r4] - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, pc} -_021EF81C: - mov r0, #4 - pop {r3, r4, r5, pc} -_021EF820: - mov r0, #4 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021EF824 -MOD05_021EF824: ; 0x021EF824 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r4, r0, #0 - cmp r5, #4 - blo _021EF832 - bl GF_AssertFail -_021EF832: - lsl r0, r5, #2 - add r0, r4, r0 - add r0, #0x90 - ldr r1, [r0] - mov r0, #0x86 - lsl r0, r0, #4 - ldr r0, [r1, r0] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF844 -MOD05_021EF844: ; 0x021EF844 - push {r3, r4, r5, r6, r7, lr} - add r6, r2, #0 - asr r2, r6, #4 - add r5, r0, #0 - lsr r2, r2, #0x1b - add r2, r6, r2 - add r4, r1, #0 - add r0, #0xc0 - ldr r1, [r0] - asr r0, r4, #4 - lsr r0, r0, #0x1b - add r0, r4, r0 - asr r2, r2, #5 - str r3, [sp] - add r3, r2, #0 - asr r0, r0, #5 - mul r3, r1 - add r7, r0, r3 - add r0, r5, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r1 - cmp r7, r0 - blo _021EF882 - mov r0, #1 - bl FUN_020336A0 - cmp r0, #0 - beq _021EF882 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021EF882: - add r0, r5, #0 - add r0, #0xc0 - ldr r1, [r0] - add r0, r5, #0 - add r0, #0xc4 - ldr r0, [r0] - mul r0, r1 - cmp r7, r0 - blo _021EF898 - bl GF_AssertFail -_021EF898: - add r0, r5, #0 - add r0, #0xc8 - ldr r1, [r0] - add r0, r6, #0 - mul r0, r1 - add r0, r4, r0 - bl MOD05_021EF620 - add r1, r0, #0 - add r0, r7, #0 - add r2, r5, #0 - bl MOD05_021EF654 - ldr r1, [sp] - cmp r1, #0 - beq _021EF8BA - strb r0, [r1] -_021EF8BA: - cmp r0, #3 - bls _021EF8C2 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021EF8C2: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EF8C8 -MOD05_021EF8C8: ; 0x021EF8C8 - lsl r1, r1, #2 - add r0, r0, r1 - add r0, #0x90 - ldr r1, [r0] - ldr r0, _021EF8D8 ; =0x0000085C - ldr r0, [r1, r0] - bx lr - nop -_021EF8D8: .word 0x0000085C - - thumb_func_start MOD05_021EF8DC -MOD05_021EF8DC: ; 0x021EF8DC - lsl r1, r1, #2 - add r0, r0, r1 - add r0, #0x90 - ldr r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF8E8 -MOD05_021EF8E8: ; 0x021EF8E8 - add r3, r0, #0 - add r3, #0xfc - str r1, [r3] - mov r1, #1 - lsl r1, r1, #8 - str r2, [r0, r1] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021EF8F8 -MOD05_021EF8F8: ; 0x021EF8F8 - push {r3, lr} - bl FUN_0201B6C8 - mov r1, #1 - str r1, [r0, #0x1c] - pop {r3, pc} - - thumb_func_start MOD05_021EF904 -MOD05_021EF904: ; 0x021EF904 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x1c] - cmp r0, #1 - bne _021EF914 - mov r0, #5 - strb r0, [r4, #0x14] -_021EF914: - ldrb r0, [r4, #0x14] - cmp r0, #5 - bhi _021EF9FE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EF926: ; jump table - .short _021EF932 - _021EF926 - 2 ; case 0 - .short _021EF962 - _021EF926 - 2 ; case 1 - .short _021EF998 - _021EF926 - 2 ; case 2 - .short _021EF9B6 - _021EF926 - 2 ; case 3 - .short _021EF9FE - _021EF926 - 2 ; case 4 - .short _021EF9EC - _021EF926 - 2 ; case 5 -_021EF932: - mov r0, #0 - str r0, [r4, #0x24] - mov r0, #0xe - ldr r5, [r4, #4] - lsl r0, r0, #0xc - cmp r5, r0 - bgt _021EF944 - mov r0, #2 - b _021EF948 -_021EF944: - add r5, r0, #0 - mov r0, #1 -_021EF948: - strb r0, [r4, #0x14] - ldr r2, [r4, #0xc] - ldr r0, [r4] - ldr r3, [r2] - ldr r2, [r4, #0x24] - add r1, r5, #0 - add r2, r3, r2 - bl NARC_ReadFile - ldr r0, [r4, #0x24] - add r0, r0, r5 - str r0, [r4, #0x24] - pop {r4, r5, r6, pc} -_021EF962: - ldr r2, [r4, #0x24] - ldr r0, [r4, #4] - sub r5, r0, r2 - mov r0, #0xe - lsl r0, r0, #0xc - cmp r5, r0 - ble _021EF976 - add r5, r0, #0 - mov r6, #0 - b _021EF978 -_021EF976: - mov r6, #1 -_021EF978: - ldr r3, [r4, #0xc] - ldr r0, [r4] - ldr r3, [r3] - add r1, r5, #0 - add r2, r3, r2 - bl NARC_ReadFile - cmp r6, #0 - beq _021EF990 - mov r0, #2 - strb r0, [r4, #0x14] - pop {r4, r5, r6, pc} -_021EF990: - ldr r0, [r4, #0x24] - add r0, r0, r5 - str r0, [r4, #0x24] - pop {r4, r5, r6, pc} -_021EF998: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021EF9B0 - bl FUN_0201B254 - cmp r0, #1 - bne _021EF9B0 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - ldr r0, [r0] - bl FUN_0201B3A8 -_021EF9B0: - mov r0, #3 - strb r0, [r4, #0x14] - pop {r4, r5, r6, pc} -_021EF9B6: - ldr r0, [r4, #0xc] - ldr r0, [r0] - bl NNS_G3dGetMdlSet - add r5, r0, #0 - ldrb r0, [r5, #9] - cmp r0, #1 - beq _021EF9CA - bl GF_AssertFail -_021EF9CA: - ldrh r0, [r5, #0xe] - add r0, r5, r0 - ldr r0, [r0, #0xc] - add r5, r5, r0 - bne _021EF9D8 - bl GF_AssertFail -_021EF9D8: - ldr r0, [r4, #8] - add r1, r5, #0 - bl NNS_G3dRenderObjInit - ldr r0, [r4, #0x18] - mov r1, #1 - str r1, [r0] - mov r0, #5 - strb r0, [r4, #0x14] - pop {r4, r5, r6, pc} -_021EF9EC: - ldr r0, [r4, #0x20] - mov r1, #0 - str r1, [r0] - add r0, r4, #0 - bl FreeToHeap - add r0, r5, #0 - bl FUN_0200CAB4 -_021EF9FE: - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021EFA00 -MOD05_021EFA00: ; 0x021EFA00 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #4 - - thumb_func_start MOD05_021EFA08 -MOD05_021EFA08: ; 0x021EFA08 - mov r1, #0x28 - add r6, r2, #0 - add r7, r3, #0 - bl AllocFromHeapAtEnd - add r1, r0, #0 - str r5, [r1] - str r4, [r1, #4] - str r6, [r1, #8] - ldr r0, [sp, #0x18] - str r7, [r1, #0xc] - str r0, [r1, #0x10] - mov r2, #0 - ldr r0, [sp, #0x1c] - strb r2, [r1, #0x14] - str r0, [r1, #0x18] - str r2, [r0] - ldr r0, [sp, #0x20] - str r0, [r1, #0x20] - str r2, [r1, #0x1c] - ldr r0, _021EFA3C ; =MOD05_021EF904 - mov r2, #1 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} - nop -_021EFA3C: .word MOD05_021EF904 - - thumb_func_start MOD05_021EFA40 -MOD05_021EFA40: ; 0x021EFA40 - push {r3, r4, r5, lr} - add r4, r3, #0 - add r5, r2, #0 - ldr r2, [r4] - bl NARC_ReadFile - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _021EFA6A - bl FUN_0201B254 - cmp r0, #1 - bne _021EFA6A - ldr r0, [r4] - ldr r1, [sp, #0x10] - bl FUN_0201B3A8 - cmp r0, #0 - bne _021EFA6A - bl GF_AssertFail -_021EFA6A: - ldr r0, [r4] - bl NNS_G3dGetMdlSet - ldrb r0, [r0, #9] - cmp r0, #1 - beq _021EFA7A - bl GF_AssertFail -_021EFA7A: - ldr r0, [r4] - bl NNS_G3dGetMdlSet - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r4, r0, r1 - bne _021EFA8E - bl GF_AssertFail -_021EFA8E: - add r0, r5, #0 - add r1, r4, #0 - bl NNS_G3dRenderObjInit - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EFA9C -MOD05_021EFA9C: ; 0x021EFA9C - push {r3, lr} - ldr r0, [r0, #4] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _021EFAAA - bl MOD20_022524DC -_021EFAAA: - pop {r3, pc} - - thumb_func_start MOD05_021EFAAC -MOD05_021EFAAC: ; 0x021EFAAC - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl Sav2_Poketch_get - add r4, r0, #0 - ldr r0, [r5, #0xc] - bl SavArray_Flags_get - add r6, r0, #0 - add r0, r4, #0 - bl Sav2_Poketch_IsGiven - cmp r0, #0 - beq _021EFAF8 - add r0, r6, #0 - bl FUN_0205F1E4 - cmp r0, #0 - bne _021EFAF8 - ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID - mov r1, #2 - bl HandleLoadOverlay - mov r0, #1 - bl FUN_0200A03C - str r0, [sp] - ldr r1, [r5, #4] - ldr r2, [r5, #0xc] - ldr r3, [r5, #8] - add r0, r5, #0 - add r1, #0x14 - bl MOD20_02252448 - add sp, #4 - pop {r3, r4, r5, r6, pc} -_021EFAF8: - ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID - mov r1, #2 - bl HandleLoadOverlay - ldr r0, [r5, #8] - bl MOD19_02252440 - add sp, #4 - pop {r3, r4, r5, r6, pc} - nop -_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID -_021EFB10: .word SDK_OVERLAY_MODULE_19_ID - - thumb_func_start MOD05_021EFB14 -MOD05_021EFB14: ; 0x021EFB14 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl Sav2_Poketch_get - add r4, r0, #0 - ldr r0, [r5, #0xc] - bl SavArray_Flags_get - add r6, r0, #0 - add r0, r4, #0 - bl Sav2_Poketch_IsGiven - cmp r0, #0 - beq _021EFB46 - add r0, r6, #0 - bl FUN_0205F1E4 - cmp r0, #0 - bne _021EFB46 - ldr r0, [r5, #4] - ldr r0, [r0, #0x14] - bl MOD20_022524BC - pop {r4, r5, r6, pc} -_021EFB46: - ldr r0, [r5, #8] - bl MOD19_022524F4 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EFB50 -MOD05_021EFB50: ; 0x021EFB50 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl Sav2_Poketch_get - add r4, r0, #0 - ldr r0, [r5, #0xc] - bl SavArray_Flags_get - add r6, r0, #0 - add r0, r4, #0 - bl Sav2_Poketch_IsGiven - cmp r0, #0 - beq _021EFB94 - add r0, r6, #0 - bl FUN_0205F1E4 - cmp r0, #0 - bne _021EFB94 - ldr r0, [r5, #4] - ldr r0, [r0, #0x14] - bl MOD20_022524D0 - cmp r0, #0 - beq _021EFBA8 - ldr r0, [r5, #4] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID - bl UnloadOverlayByID - mov r0, #1 - pop {r4, r5, r6, pc} -_021EFB94: - ldr r0, [r5, #8] - bl MOD19_02252504 - cmp r0, #0 - beq _021EFBA8 - ldr r0, _021EFBB0 ; =SDK_OVERLAY_MODULE_19_ID - bl UnloadOverlayByID - mov r0, #1 - pop {r4, r5, r6, pc} -_021EFBA8: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021EFBAC: .word SDK_OVERLAY_MODULE_20_ID -_021EFBB0: .word SDK_OVERLAY_MODULE_19_ID - - thumb_func_start MOD05_021EFBB4 -MOD05_021EFBB4: ; 0x021EFBB4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _021EFBC8 ; =SDK_OVERLAY_MODULE_19_ID - mov r1, #2 - bl HandleLoadOverlay - ldr r0, [r4, #8] - bl MOD19_02252440 - pop {r4, pc} - .balign 4, 0 -_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID - - thumb_func_start MOD05_021EFBCC -MOD05_021EFBCC: ; 0x021EFBCC - ldr r3, _021EFBD4 ; =MOD19_022524F4 - ldr r0, [r0, #8] - bx r3 - nop -_021EFBD4: .word MOD19_022524F4 - - thumb_func_start MOD05_021EFBD8 -MOD05_021EFBD8: ; 0x021EFBD8 - push {r3, lr} - ldr r0, [r0, #8] - bl MOD19_02252504 - cmp r0, #0 - beq _021EFBEE - ldr r0, _021EFBF4 ; =SDK_OVERLAY_MODULE_19_ID - bl UnloadOverlayByID - mov r0, #1 - pop {r3, pc} -_021EFBEE: - mov r0, #0 - pop {r3, pc} - nop -_021EFBF4: .word SDK_OVERLAY_MODULE_19_ID - - thumb_func_start MOD05_021EFBF8 -MOD05_021EFBF8: ; 0x021EFBF8 - push {r4, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, [r4, #0x34] - bl FUN_020286EC - mov r1, #0 - bl FUN_0202838C - add r1, r4, #0 - ldr r0, [r4, #0x34] - add r1, #0x4c - mov r2, #4 - bl FUN_020339B4 - cmp r0, #0 - bne _021EFC20 - add sp, #8 - mov r0, #1 - pop {r4, pc} -_021EFC20: - add r0, r4, #0 - mov r1, #0 - add r0, #0x8c - str r1, [r0] - ldr r0, [r4, #0x34] - bl Sav2_PlayerData_GetOptionsAddr - bl Options_GetFrame - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4, #0x30] - ldr r2, _021EFC6C ; =0x000001E2 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xa - bl FUN_0200CD68 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4, #0x30] - ldr r2, _021EFC70 ; =0x000003D9 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #1 - str r0, [r4, #0x48] - mov r0, #0 - add sp, #8 - pop {r4, pc} - nop -_021EFC6C: .word 0x000001E2 -_021EFC70: .word 0x000003D9 - - thumb_func_start MOD05_021EFC74 -MOD05_021EFC74: ; 0x021EFC74 - push {r3, r4, r5, r6, lr} - sub sp, #4 - mov r1, #0 - add r6, r0, #0 - mvn r1, r1 - add r0, #0x8c - str r1, [r0] - mov r4, #0 - bl FUN_02030F20 - cmp r0, #0 - ble _021EFCB0 - add r5, r6, #0 -_021EFC8E: - ldr r0, [r5, #0x4c] - cmp r0, #2 - bne _021EFCA4 - add r0, r6, #0 - add r0, #0x8c - str r4, [r0] - lsl r0, r4, #2 - mov r1, #0 - add r0, r6, r0 - str r1, [r0, #0x4c] - b _021EFCB0 -_021EFCA4: - add r5, r5, #4 - add r4, r4, #1 - bl FUN_02030F20 - cmp r4, r0 - blt _021EFC8E -_021EFCB0: - add r0, r6, #0 - add r0, #0x8c - ldr r1, [r0] - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - bne _021EFCC4 - add sp, #4 - mov r0, #1 - pop {r3, r4, r5, r6, pc} -_021EFCC4: - ldr r0, [r6, #0x34] - bl Sav2_Bag_get - ldr r1, _021EFD3C ; =0x000001B5 - mov r2, #1 - mov r3, #4 - bl Bag_HasItem - cmp r0, #1 - bne _021EFCFE - add r0, r6, #0 - add r0, #0x8c - ldr r0, [r0] - bl FUN_0202DFA4 - add r2, r0, #0 - ldr r0, [r6, #0x38] - mov r1, #0 - bl BufferPlayersName - add r0, r6, #0 - mov r1, #0x21 - bl MOD05_021F01EC - mov r0, #2 - str r0, [r6, #0x48] - add sp, #4 - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_021EFCFE: - ldr r0, [r6, #0x34] - bl FUN_020286EC - add r4, r0, #0 - mov r5, #0 -_021EFD08: - add r0, r4, #0 - add r1, r5, #0 - bl FUN_0202842C - cmp r0, #0 - bne _021EFD2A - mov r0, #0 - add r1, r6, #0 - str r0, [sp] - add r1, #0x8c - ldr r0, [r6, #0x34] - ldr r1, [r1] - add r2, r5, #0 - mov r3, #4 - bl FUN_02033A70 - b _021EFD30 -_021EFD2A: - add r5, r5, #1 - cmp r5, #0x20 - blt _021EFD08 -_021EFD30: - mov r0, #1 - str r0, [r6, #0x48] - mov r0, #0 - add sp, #4 - pop {r3, r4, r5, r6, pc} - nop -_021EFD3C: .word 0x000001B5 - - thumb_func_start MOD05_021EFD40 -MOD05_021EFD40: ; 0x021EFD40 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - ldr r0, [r4, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021EFD6C - mov r0, #4 - str r0, [sp] - ldr r0, [r4, #0x30] - ldr r1, _021EFD74 ; =UNK05_021F8B44 - ldr r0, [r0, #8] - ldr r2, _021EFD78 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r4, #0x44] - mov r0, #3 - str r0, [r4, #0x48] -_021EFD6C: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - nop -_021EFD74: .word UNK05_021F8B44 -_021EFD78: .word 0x000003D9 - - thumb_func_start MOD05_021EFD7C -MOD05_021EFD7C: ; 0x021EFD7C - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r6, r0, #0 - ldr r0, [r6, #0x44] - mov r1, #4 - bl FUN_020021AC - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021EFD98 - add sp, #4 - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_021EFD98: - cmp r0, #0 - bne _021EFDE4 - ldr r0, [r6, #0x34] - bl FUN_020286EC - add r5, r0, #0 - mov r4, #0 -_021EFDA6: - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0202842C - cmp r0, #0 - bne _021EFDC8 - mov r0, #0 - add r1, r6, #0 - str r0, [sp] - add r1, #0x8c - ldr r0, [r6, #0x34] - ldr r1, [r1] - add r2, r4, #0 - mov r3, #4 - bl FUN_02033A70 - b _021EFDCE -_021EFDC8: - add r4, r4, #1 - cmp r4, #0x20 - blt _021EFDA6 -_021EFDCE: - cmp r4, #0x20 - bne _021EFDE4 - add r0, r6, #0 - mov r1, #0x22 - bl MOD05_021F01EC - mov r0, #4 - str r0, [r6, #0x48] - add sp, #4 - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_021EFDE4: - mov r0, #1 - str r0, [r6, #0x48] - mov r0, #0 - add sp, #4 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021EFDF0 -MOD05_021EFDF0: ; 0x021EFDF0 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - ldr r0, [r4, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021EFE1C - mov r0, #4 - str r0, [sp] - ldr r0, [r4, #0x30] - ldr r1, _021EFE24 ; =UNK05_021F8B44 - ldr r0, [r0, #8] - ldr r2, _021EFE28 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r4, #0x44] - mov r0, #5 - str r0, [r4, #0x48] -_021EFE1C: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - nop -_021EFE24: .word UNK05_021F8B44 -_021EFE28: .word 0x000003D9 - - thumb_func_start MOD05_021EFE2C -MOD05_021EFE2C: ; 0x021EFE2C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x44] - mov r1, #4 - bl FUN_020021AC - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021EFE44 - mov r0, #0 - pop {r4, pc} -_021EFE44: - cmp r0, #0 - bne _021EFE4C - mov r0, #8 - b _021EFE6A -_021EFE4C: - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0] - bl FUN_0202DFA4 - add r2, r0, #0 - ldr r0, [r4, #0x38] - mov r1, #0 - bl BufferPlayersName - add r0, r4, #0 - mov r1, #0x23 - bl MOD05_021F01EC - mov r0, #6 -_021EFE6A: - str r0, [r4, #0x48] - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021EFE70 -MOD05_021EFE70: ; 0x021EFE70 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - ldr r0, [r4, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021EFE9C - mov r0, #4 - str r0, [sp] - ldr r0, [r4, #0x30] - ldr r1, _021EFEA4 ; =UNK05_021F8B44 - ldr r0, [r0, #8] - ldr r2, _021EFEA8 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r4, #0x44] - mov r0, #7 - str r0, [r4, #0x48] -_021EFE9C: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - nop -_021EFEA4: .word UNK05_021F8B44 -_021EFEA8: .word 0x000003D9 - - thumb_func_start MOD05_021EFEAC -MOD05_021EFEAC: ; 0x021EFEAC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x44] - mov r1, #4 - bl FUN_020021AC - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021EFEC4 - mov r0, #0 - pop {r4, pc} -_021EFEC4: - cmp r0, #0 - bne _021EFECC - mov r0, #0xc - b _021EFED6 -_021EFECC: - add r0, r4, #0 - mov r1, #0x22 - bl MOD05_021F01EC - mov r0, #4 -_021EFED6: - str r0, [r4, #0x48] - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021EFEDC -MOD05_021EFEDC: ; 0x021EFEDC - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r5, r0, #0 - ldr r0, [r5, #0x34] - bl FUN_020286EC - add r6, r0, #0 - bl FUN_02028448 - add r7, r0, #0 - add r0, r7, #1 - mov r1, #4 - bl ListMenuItems_ctor - str r0, [r5] - mov r0, #1 - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r0, #0xa - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - ldr r0, _021EFFB8 ; =0x000002A1 - add r1, r5, #0 - str r0, [sp, #0x10] - ldr r0, [r5, #0x30] - add r1, #0x20 - ldr r0, [r0, #8] - mov r2, #3 - mov r3, #0x13 - bl AddWindowParameterized - add r0, r5, #0 - ldr r2, _021EFFBC ; =0x000003D9 - add r0, #0x20 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - mov r4, #0 -_021EFF2E: - add r0, r6, #0 - add r1, r4, #0 - bl FUN_0202842C - cmp r0, #0 - beq _021EFF54 - add r0, r6, #0 - add r1, r4, #0 - bl FUN_020283A4 - add r1, r0, #0 - ldr r0, [r5, #8] - bl CopyU16ArrayToString - ldr r0, [r5] - ldr r1, [r5, #8] - add r2, r4, #0 - bl ListMenuItems_AddItem -_021EFF54: - add r4, r4, #1 - cmp r4, #0x20 - blt _021EFF2E - mov r2, #0xb - add r3, r2, #0 - ldr r0, [r5] - ldr r1, [r5, #0x3c] - sub r3, #0xd - bl ListMenuItems_AppendFromMsgData - ldr r4, _021EFFC0 ; =UNK05_021F8B4C - add r3, sp, #0x14 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - add r1, r7, #1 - add r0, sp, #0x14 - strh r1, [r0, #0x10] - mov r1, #5 - strh r1, [r0, #0x12] - ldr r0, [r5] - mov r1, #0 - str r0, [sp, #0x14] - add r0, r5, #0 - add r0, #0x20 - str r0, [sp, #0x20] - ldr r0, _021EFFC4 ; =MOD05_021F0304 - str r5, [sp, #0x30] - str r0, [sp, #0x18] - add r0, r2, #0 - add r2, r1, #0 - mov r3, #4 - bl ListMenuInit - str r0, [r5, #4] - add r0, r5, #0 - add r0, #0x20 - bl CopyWindowToVram - mov r0, #9 - str r0, [r5, #0x48] - mov r0, #0 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021EFFB8: .word 0x000002A1 -_021EFFBC: .word 0x000003D9 -_021EFFC0: .word UNK05_021F8B4C -_021EFFC4: .word MOD05_021F0304 - - thumb_func_start MOD05_021EFFC8 -MOD05_021EFFC8: ; 0x021EFFC8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #4] - bl ListMenu_ProcessInput - add r4, r0, #0 - mov r0, #1 - mvn r0, r0 - cmp r4, r0 - beq _021EFFE6 - add r0, r0, #1 - cmp r4, r0 - bne _021F000E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021EFFE6: - ldr r0, _021F007C ; =0x000005DC - bl PlaySE - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - bl FUN_0202DFA4 - add r2, r0, #0 - ldr r0, [r5, #0x38] - mov r1, #0 - bl BufferPlayersName - add r0, r5, #0 - mov r1, #0x23 - bl MOD05_021F01EC - mov r0, #6 - str r0, [r5, #0x48] - b _021F0056 -_021F000E: - ldr r0, _021F007C ; =0x000005DC - bl PlaySE - add r0, r5, #0 - add r0, #0x90 - str r4, [r0] - ldr r0, [r5, #0x34] - bl FUN_020286EC - add r7, r0, #0 - mov r0, #4 - bl PlayerProfile_new - add r6, r0, #0 - add r0, r7, #0 - add r1, r4, #0 - bl FUN_020283A4 - add r1, r0, #0 - add r0, r6, #0 - bl CopyPlayerName - ldr r0, [r5, #0x38] - mov r1, #0 - add r2, r6, #0 - bl BufferPlayersName - add r0, r6, #0 - bl FreeToHeap - add r0, r5, #0 - mov r1, #0x24 - bl MOD05_021F01EC - mov r0, #0xa - str r0, [r5, #0x48] -_021F0056: - add r0, r5, #0 - add r0, #0x20 - mov r1, #0 - bl FUN_0200CCF8 - add r0, r5, #0 - add r0, #0x20 - bl RemoveWindow - mov r1, #0 - ldr r0, [r5, #4] - add r2, r1, #0 - bl DestroyListMenu - ldr r0, [r5] - bl ListMenuItems_dtor - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F007C: .word 0x000005DC - - thumb_func_start MOD05_021F0080 -MOD05_021F0080: ; 0x021F0080 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - ldr r0, [r4, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021F00AC - mov r0, #4 - str r0, [sp] - ldr r0, [r4, #0x30] - ldr r1, _021F00B4 ; =UNK05_021F8B44 - ldr r0, [r0, #8] - ldr r2, _021F00B8 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r4, #0x44] - mov r0, #0xb - str r0, [r4, #0x48] -_021F00AC: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - nop -_021F00B4: .word UNK05_021F8B44 -_021F00B8: .word 0x000003D9 - - thumb_func_start MOD05_021F00BC -MOD05_021F00BC: ; 0x021F00BC - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x34] - bl FUN_020286EC - add r4, r0, #0 - ldr r0, [r5, #0x44] - mov r1, #4 - bl FUN_020021AC - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021F00DC - mov r0, #0 - pop {r3, r4, r5, pc} -_021F00DC: - cmp r0, #0 - bne _021F0104 - add r1, r5, #0 - add r1, #0x90 - ldr r1, [r1] - add r0, r4, #0 - bl FUN_02028468 - mov r0, #0 - add r1, r5, #0 - str r0, [sp] - add r1, #0x8c - ldr r0, [r5, #0x34] - ldr r1, [r1] - mov r2, #0x1f - mov r3, #4 - bl FUN_02033A70 - mov r0, #1 - b _021F0122 -_021F0104: - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - bl FUN_0202DFA4 - add r2, r0, #0 - ldr r0, [r5, #0x38] - mov r1, #0 - bl BufferPlayersName - add r0, r5, #0 - mov r1, #0x23 - bl MOD05_021F01EC - mov r0, #6 -_021F0122: - str r0, [r5, #0x48] - mov r0, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0128 -MOD05_021F0128: ; 0x021F0128 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_0204652C - - thumb_func_start MOD05_021F0130 -MOD05_021F0130: ; 0x021F0130 - add r4, r0, #0 - add r0, r5, #0 - bl FUN_02046528 - ldr r0, [r4, #0x48] - cmp r0, #0xc - bhi _021F01E8 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021F014A: ; jump table - .short _021F0164 - _021F014A - 2 ; case 0 - .short _021F0174 - _021F014A - 2 ; case 1 - .short _021F0184 - _021F014A - 2 ; case 2 - .short _021F018C - _021F014A - 2 ; case 3 - .short _021F0194 - _021F014A - 2 ; case 4 - .short _021F019C - _021F014A - 2 ; case 5 - .short _021F01A4 - _021F014A - 2 ; case 6 - .short _021F01AC - _021F014A - 2 ; case 7 - .short _021F01B4 - _021F014A - 2 ; case 8 - .short _021F01BC - _021F014A - 2 ; case 9 - .short _021F01C4 - _021F014A - 2 ; case 10 - .short _021F01CC - _021F014A - 2 ; case 11 - .short _021F01D4 - _021F014A - 2 ; case 12 -_021F0164: - add r0, r4, #0 - bl MOD05_021EFBF8 - cmp r0, #0 - beq _021F01E8 - mov r0, #0xc - str r0, [r4, #0x48] - b _021F01E8 -_021F0174: - add r0, r4, #0 - bl MOD05_021EFC74 - cmp r0, #0 - beq _021F01E8 - mov r0, #0xc - str r0, [r4, #0x48] - b _021F01E8 -_021F0184: - add r0, r4, #0 - bl MOD05_021EFD40 - b _021F01E8 -_021F018C: - add r0, r4, #0 - bl MOD05_021EFD7C - b _021F01E8 -_021F0194: - add r0, r4, #0 - bl MOD05_021EFDF0 - b _021F01E8 -_021F019C: - add r0, r4, #0 - bl MOD05_021EFE2C - b _021F01E8 -_021F01A4: - add r0, r4, #0 - bl MOD05_021EFE70 - b _021F01E8 -_021F01AC: - add r0, r4, #0 - bl MOD05_021EFEAC - b _021F01E8 -_021F01B4: - add r0, r4, #0 - bl MOD05_021EFEDC - b _021F01E8 -_021F01BC: - add r0, r4, #0 - bl MOD05_021EFFC8 - b _021F01E8 -_021F01C4: - add r0, r4, #0 - bl MOD05_021F0080 - b _021F01E8 -_021F01CC: - add r0, r4, #0 - bl MOD05_021F00BC - b _021F01E8 -_021F01D4: - add r0, r4, #0 - bl MOD05_021F0290 - add r0, r4, #0 - bl FreeToHeap - bl FUN_02037778 - mov r0, #1 - pop {r3, r4, r5, pc} -_021F01E8: - mov r0, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F01EC -MOD05_021F01EC: ; 0x021F01EC - push {r3, r4, r5, lr} - add r4, r0, #0 - add r0, #0x10 - add r5, r1, #0 - bl WindowIsInUse - cmp r0, #0 - beq _021F0204 - add r0, r4, #0 - add r0, #0x10 - bl RemoveWindow -_021F0204: - ldr r0, [r4, #0x3c] - ldr r2, [r4, #8] - add r1, r5, #0 - bl ReadMsgDataIntoString - ldr r0, [r4, #0x38] - ldr r1, [r4, #0xc] - ldr r2, [r4, #8] - bl StringExpandPlaceholders - ldr r0, [r4, #0x30] - add r1, r4, #0 - ldr r0, [r0, #8] - add r1, #0x10 - mov r2, #3 - bl FUN_020545B8 - ldr r0, [r4, #0x30] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r1, r0, #0 - add r0, r4, #0 - add r0, #0x10 - bl FUN_02054608 - ldr r0, [r4, #0x30] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r2, r0, #0 - add r0, r4, #0 - ldr r1, [r4, #0xc] - add r0, #0x10 - mov r3, #1 - bl FUN_02054658 - str r0, [r4, #0x40] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0254 -MOD05_021F0254: ; 0x021F0254 - push {r4, lr} - mov r1, #0 - mov r2, #0x94 - add r4, r0, #0 - bl MI_CpuFill8 - mov r0, #4 - bl ScrStrBufs_new - str r0, [r4, #0x38] - ldr r2, _021F028C ; =0x00000251 - mov r0, #0 - mov r1, #0x1a - mov r3, #4 - bl NewMsgDataFromNarc - str r0, [r4, #0x3c] - mov r0, #0x6e - mov r1, #4 - bl String_ctor - str r0, [r4, #0xc] - mov r0, #0x6e - mov r1, #4 - bl String_ctor - str r0, [r4, #8] - pop {r4, pc} - .balign 4, 0 -_021F028C: .word 0x00000251 - - thumb_func_start MOD05_021F0290 -MOD05_021F0290: ; 0x021F0290 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x3c] - bl DestroyMsgData - ldr r0, [r4, #0x38] - bl ScrStrBufs_delete - ldr r0, [r4, #0xc] - bl String_dtor - ldr r0, [r4, #8] - bl String_dtor - add r0, r4, #0 - add r0, #0x10 - bl WindowIsInUse - cmp r0, #0 - beq _021F02C0 - add r4, #0x10 - add r0, r4, #0 - bl RemoveWindow -_021F02C0: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F02C4 -MOD05_021F02C4: ; 0x021F02C4 - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, [r6, #0x10] - mov r0, #0xb - mov r1, #0x94 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bl MOD05_021F0254 - str r6, [r4, #0x30] - ldr r0, [r6, #0xc] - str r0, [r4, #0x34] - mov r0, #0 - str r0, [r4, #0x48] - cmp r5, #0 - bne _021F02F2 - ldr r1, _021F0300 ; =MOD05_021F0128 - add r0, r6, #0 - add r2, r4, #0 - bl FUN_020463CC - pop {r4, r5, r6, pc} -_021F02F2: - ldr r1, _021F0300 ; =MOD05_021F0128 - add r0, r5, #0 - add r2, r4, #0 - bl FUN_0204640C - pop {r4, r5, r6, pc} - nop -_021F0300: .word MOD05_021F0128 - - thumb_func_start MOD05_021F0304 -MOD05_021F0304: ; 0x021F0304 - push {r3, lr} - cmp r2, #0 - bne _021F0310 - ldr r0, _021F0314 ; =0x000005DC - bl PlaySE -_021F0310: - pop {r3, pc} - nop -_021F0314: .word 0x000005DC - - thumb_func_start MOD05_021F0318 -MOD05_021F0318: ; 0x021F0318 - push {r4, r5, r6, r7, lr} - sub sp, #0x6c - add r4, r3, #0 - add r7, r0, #0 - add r5, r1, #0 - mov r0, #0 - str r0, [sp, #0x58] - ldr r1, [r4, #0x50] - add r0, sp, #0x60 - add r6, r2, #0 - bl Camera_GetLookAtCamTarget - ldr r3, _021F0434 ; =UNK05_021F8B6C - add r2, sp, #0xc - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - cmp r6, #0x60 - str r0, [r2] - bhs _021F0352 - mov r1, #0x60 - sub r0, r1, r6 - lsl r0, r0, #0x18 - ldrh r2, [r4] - lsr r0, r0, #0x18 - mul r0, r2 - bl _s32_div_f - b _021F036C -_021F0352: - sub r6, #0x60 - lsl r0, r6, #0x18 - ldrh r1, [r4] - lsr r0, r0, #0x18 - mul r0, r1 - mov r1, #0x60 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - mov r0, #0 - mvn r0, r0 - mul r0, r1 -_021F036C: - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - cmp r5, #0x80 - bhs _021F038A - mov r2, #0x80 - sub r2, r2, r5 - lsl r2, r2, #0x18 - ldrh r0, [r4, #2] - lsr r2, r2, #0x18 - mul r2, r0 - asr r0, r2, #6 - lsr r0, r0, #0x19 - add r0, r2, r0 - lsl r0, r0, #9 - b _021F03A8 -_021F038A: - ldrh r2, [r4, #2] - sub r5, #0x80 - lsl r0, r5, #0x18 - lsr r0, r0, #0x18 - add r3, r2, #0 - mul r3, r0 - asr r0, r3, #6 - lsr r0, r0, #0x19 - add r0, r3, r0 - lsl r0, r0, #9 - lsr r2, r0, #0x10 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - lsl r0, r0, #0x10 -_021F03A8: - lsr r5, r0, #0x10 - asr r0, r1, #4 - lsl r3, r0, #1 - lsl r1, r3, #1 - ldr r2, _021F0438 ; =FX_SinCosTable_ - add r3, r3, #1 - lsl r3, r3, #1 - ldrsh r1, [r2, r1] - ldrsh r2, [r2, r3] - add r0, sp, #0x24 - bl MTX_RotX43_ - add r0, sp, #0xc - add r1, sp, #0x24 - add r2, sp, #0x18 - bl MTX_MultVec43 - asr r0, r5, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - ldr r3, _021F0438 ; =FX_SinCosTable_ - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #0x24 - bl MTX_RotY43_ - add r0, sp, #0x18 - add r1, sp, #0x24 - add r2, r0, #0 - bl MTX_MultVec43 - add r0, sp, #0x18 - add r1, r4, #0 - add r1, #0x20 - add r2, r0, #0 - bl MTX_MultVec43 - add r0, r4, #0 - add r0, #0x10 - add r1, sp, #0x18 - bl VEC_DotProduct - add r1, r0, #0 - ldr r0, [r4, #0x1c] - bl FX_Div - neg r0, r0 - add r1, sp, #0x18 - add r2, r4, #4 - add r3, sp, #0 - bl VEC_MultAdd - ldr r1, [sp, #0x60] - ldr r0, [sp] - add r2, sp, #0x54 - add r0, r1, r0 - str r0, [sp, #0x54] - ldr r1, [sp, #0x68] - ldr r0, [sp, #8] - add r0, r1, r0 - str r0, [sp, #0x5c] - ldmia r2!, {r0, r1} - stmia r7!, {r0, r1} - ldr r0, [r2] - str r0, [r7] - add sp, #0x6c - pop {r4, r5, r6, r7, pc} - nop -_021F0434: .word UNK05_021F8B6C -_021F0438: .word FX_SinCosTable_ - - thumb_func_start MOD05_021F043C -MOD05_021F043C: ; 0x021F043C - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - mov r1, #0x60 - bl AllocFromHeap - add r1, r5, #0 - add r4, r0, #0 - bl MOD05_021F0454 - add r0, r4, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0454 -MOD05_021F0454: ; 0x021F0454 - push {r4, r5, lr} - sub sp, #0x2c - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - bl Camera_GetAngle - add r0, r4, #0 - bl Camera_GetPerspectiveAngle - strh r0, [r5] - ldrh r0, [r5] - ldr r2, _021F04F0 ; =FX_SinCosTable_ - asr r0, r0, #4 - lsl r1, r0, #1 - lsl r0, r1, #1 - add r1, r1, #1 - lsl r1, r1, #1 - ldrsh r0, [r2, r0] - ldrsh r1, [r2, r1] - bl FX_Div - lsl r0, r0, #2 - mov r1, #3 - bl _s32_div_f - bl FX_Atan - ldr r3, _021F04F4 ; =UNK05_021F8B78 - strh r0, [r5, #2] - ldmia r3!, {r0, r1} - add r2, sp, #0x20 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, r4, #0 - str r0, [r2] - add r0, sp, #0x14 - bl Camera_GetLookAtCamPos - add r0, sp, #8 - add r1, r4, #0 - bl Camera_GetLookAtCamTarget - add r0, sp, #0x14 - add r1, sp, #8 - add r2, r5, #4 - bl VEC_Subtract - add r3, sp, #0x20 - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x10 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, r5, #4 - str r0, [r2] - add r0, sp, #0x20 - bl VEC_DotProduct - str r0, [r5, #0x1c] - add r0, sp, #0 - ldrh r0, [r0] - ldr r3, _021F04F0 ; =FX_SinCosTable_ - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - add r0, r5, #0 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, #0x20 - bl MTX_RotX43_ - str r4, [r5, #0x50] - add sp, #0x2c - pop {r4, r5, pc} - nop -_021F04F0: .word FX_SinCosTable_ -_021F04F4: .word UNK05_021F8B78 - - thumb_func_start MOD05_021F04F8 -MOD05_021F04F8: ; 0x021F04F8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F0512 - bne _021F0508 - bl GF_AssertFail -_021F0508: - ldr r0, [r4] - bl FreeToHeap - mov r0, #0 - str r0, [r4] -_021F0512: - pop {r4, pc} - - thumb_func_start MOD05_021F0514 -MOD05_021F0514: ; 0x021F0514 - push {r4, lr} - add r4, r0, #0 - bl FUN_02058458 - cmp r0, #0x97 - bgt _021F053E - bge _021F05B2 - cmp r0, #0x15 - bgt _021F052E - bge _021F059E - cmp r0, #0 - beq _021F059E - b _021F05BA -_021F052E: - cmp r0, #0x62 - bgt _021F05BA - cmp r0, #0x61 - blt _021F05BA - beq _021F059E - cmp r0, #0x62 - beq _021F059E - b _021F05BA -_021F053E: - cmp r0, #0xb0 - bgt _021F0554 - bge _021F059E - cmp r0, #0x99 - bgt _021F05BA - cmp r0, #0x98 - blt _021F05BA - beq _021F05B2 - cmp r0, #0x99 - beq _021F05B2 - b _021F05BA -_021F0554: - cmp r0, #0xb1 - bgt _021F055C - beq _021F059E - b _021F05BA -_021F055C: - sub r0, #0xb2 - cmp r0, #0x17 - bhi _021F05BA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021F056E: ; jump table - .short _021F059E - _021F056E - 2 ; case 0 - .short _021F059E - _021F056E - 2 ; case 1 - .short _021F059E - _021F056E - 2 ; case 2 - .short _021F059E - _021F056E - 2 ; case 3 - .short _021F05BA - _021F056E - 2 ; case 4 - .short _021F05BA - _021F056E - 2 ; case 5 - .short _021F05BA - _021F056E - 2 ; case 6 - .short _021F05BA - _021F056E - 2 ; case 7 - .short _021F059E - _021F056E - 2 ; case 8 - .short _021F059E - _021F056E - 2 ; case 9 - .short _021F059E - _021F056E - 2 ; case 10 - .short _021F059E - _021F056E - 2 ; case 11 - .short _021F05BA - _021F056E - 2 ; case 12 - .short _021F05BA - _021F056E - 2 ; case 13 - .short _021F05BA - _021F056E - 2 ; case 14 - .short _021F05BA - _021F056E - 2 ; case 15 - .short _021F05BA - _021F056E - 2 ; case 16 - .short _021F05A8 - _021F056E - 2 ; case 17 - .short _021F059E - _021F056E - 2 ; case 18 - .short _021F059E - _021F056E - 2 ; case 19 - .short _021F059E - _021F056E - 2 ; case 20 - .short _021F059E - _021F056E - 2 ; case 21 - .short _021F059E - _021F056E - 2 ; case 22 - .short _021F059E - _021F056E - 2 ; case 23 -_021F059E: - add r0, r4, #0 - bl FUN_02058628 - ldr r0, [r0, #4] - pop {r4, pc} -_021F05A8: - add r0, r4, #0 - bl FUN_02058628 - ldr r0, [r0, #4] - pop {r4, pc} -_021F05B2: - add r0, r4, #0 - bl MOD05_021F1C24 - pop {r4, pc} -_021F05BA: - add r0, r4, #0 - bl FUN_02058628 - ldr r0, [r0, #8] - pop {r4, pc} - - thumb_func_start MOD05_021F05C4 -MOD05_021F05C4: ; 0x021F05C4 - push {r3, r4, r5, lr} - mov r1, #0x18 - add r5, r0, #0 - bl FUN_02058604 - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - add r1, r4, #0 - strh r0, [r4] - add r0, r5, #0 - add r1, #8 - bl MOD05_021F1FC8 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021F05EC - add r0, r5, #0 - bl FUN_020586A0 -_021F05EC: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F05F0 -MOD05_021F05F0: ; 0x021F05F0 - push {r4, lr} - add r4, r0, #0 - bl FUN_02058628 - add r1, r0, #0 - add r0, r4, #0 - add r1, #8 - bl MOD05_021F2060 - pop {r4, pc} - - thumb_func_start MOD05_021F0604 -MOD05_021F0604: ; 0x021F0604 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021F061C - add r1, r4, #0 - add r1, #0xc - bl MOD05_021F20D8 -_021F061C: - add r4, #8 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2060 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058410 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0634 -MOD05_021F0634: ; 0x021F0634 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0678 - ldr r0, [r4, #8] - cmp r0, #0 - bne _021F0658 - add r1, r4, #0 - add r0, r5, #0 - add r1, #8 - bl MOD05_021F1FC8 -_021F0658: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021F0678 - add r1, r4, #0 - add r1, #0xc - bl MOD05_021F20F8 - ldr r1, [r4, #8] - add r0, r5, #0 - bl MOD05_021F2F48 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058418 -_021F0678: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F067C -MOD05_021F067C: ; 0x021F067C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - bl FUN_02058628 - ldr r7, [r0, #8] - add r0, r4, #0 - bl FUN_02058628 - str r0, [sp] - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F06E6 - cmp r7, #0 - beq _021F06E6 - add r0, r4, #0 - bl FUN_020584C4 - str r0, [sp, #4] - add r0, r4, #0 - bl FUN_0205854C - add r5, r0, #0 - cmp r5, #9 - blt _021F06B6 - bl GF_AssertFail -_021F06B6: - lsl r6, r5, #2 - ldr r5, _021F06EC ; UNK05_021FC4B4 - ldr r2, [sp] - ldr r3, [sp, #4] - ldr r5, [r5, r6] - add r0, r4, #0 - add r1, r7, #0 - blx r5 - ldr r1, [sp, #4] - ldr r0, [sp] - strh r1, [r0] - add r0, r4, #0 - bl FUN_0205854C - ldr r1, [sp] - str r0, [r1, #4] - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F19A4 -_021F06E6: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F06EC: .word UNK05_021FC4B4 - - thumb_func_start MOD05_021F06F0 -MOD05_021F06F0: ; 0x021F06F0 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl FUN_02058628 - add r5, r0, #0 - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F071A - ldr r5, [r5, #8] - cmp r5, #0 - beq _021F071A - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F19A4 -_021F071A: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F071C -MOD05_021F071C: ; 0x021F071C - push {r3, r4, r5, lr} - add r4, r0, #0 - bl FUN_02058628 - add r5, r0, #0 - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F075A - ldr r5, [r5, #8] - cmp r5, #0 - beq _021F075A - add r0, r4, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F074A - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F074A: - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F19A4 -_021F075A: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F075C -MOD05_021F075C: ; 0x021F075C - push {r4, lr} - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F0780 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0786 -_021F0780: - add r0, r4, #0 - bl MOD05_021F194C -_021F0786: - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r4, pc} - - thumb_func_start MOD05_021F0790 -MOD05_021F0790: ; 0x021F0790 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F07B4 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F07B4: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F07C8 - mov r1, #2 - add r0, r4, #0 - lsl r1, r1, #0xa - bl FUN_0201F854 -_021F07C8: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F07CC -MOD05_021F07CC: ; 0x021F07CC - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F07F0 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F07F0: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0804 - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F0804: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0808 -MOD05_021F0808: ; 0x021F0808 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F082C - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F082C: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0840 - mov r1, #2 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F0840: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0844 -MOD05_021F0844: ; 0x021F0844 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F0868 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F0868: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F087C - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xe - bl FUN_0201F854 -_021F087C: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0880 -MOD05_021F0880: ; 0x021F0880 - push {r3, r4, r5, r6, lr} - sub sp, #0x1c - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsh r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F08AC - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strh r0, [r4, #2] -_021F08AC: - ldr r0, [r4, #4] - cmp r0, #6 - beq _021F08B6 - mov r0, #0 - strh r0, [r4, #2] -_021F08B6: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F08FC - ldr r6, _021F0900 ; =UNK05_021FC43C - add r3, sp, #0 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r6] - mov r1, #2 - str r0, [r3] - ldrsh r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #2 - ldrsh r1, [r4, r0] - add r1, r1, #1 - strh r1, [r4, #2] - ldrsh r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F08FC - mov r0, #0 - strh r0, [r4, #2] -_021F08FC: - add sp, #0x1c - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021F0900: .word UNK05_021FC43C - - thumb_func_start MOD05_021F0904 -MOD05_021F0904: ; 0x021F0904 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsh r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F0930 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strh r0, [r4, #2] -_021F0930: - ldr r0, [r4, #4] - cmp r0, #7 - beq _021F093A - mov r0, #0 - strh r0, [r4, #2] -_021F093A: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0978 - ldr r6, _021F097C ; =UNK05_021FC42C - add r3, sp, #0 - add r2, r3, #0 - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - mov r1, #2 - ldrsh r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #2 - ldrsh r1, [r4, r0] - add r1, r1, #1 - strh r1, [r4, #2] - ldrsh r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F0978 - mov r0, #0 - strh r0, [r4, #2] -_021F0978: - add sp, #0x10 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F097C: .word UNK05_021FC42C - - thumb_func_start MOD05_021F0980 -MOD05_021F0980: ; 0x021F0980 - push {r4, r5, r6, lr} - sub sp, #0x20 - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsh r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F09AC - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strh r0, [r4, #2] -_021F09AC: - ldr r0, [r4, #4] - cmp r0, #8 - beq _021F09B6 - mov r0, #0 - strh r0, [r4, #2] -_021F09B6: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F09FC - ldr r6, _021F0A00 ; =UNK05_021FC494 - add r3, sp, #0 - add r2, r3, #0 - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - mov r1, #2 - ldrsh r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #2 - ldrsh r1, [r4, r0] - add r1, r1, #1 - strh r1, [r4, #2] - ldrsh r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F09FC - mov r0, #0 - strh r0, [r4, #2] -_021F09FC: - add sp, #0x20 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F0A00: .word UNK05_021FC494 - - thumb_func_start MOD05_021F0A04 -MOD05_021F0A04: ; 0x021F0A04 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - bl FUN_02058628 - ldr r7, [r0, #8] - add r0, r4, #0 - bl FUN_02058628 - str r0, [sp] - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0A6E - cmp r7, #0 - beq _021F0A6E - add r0, r4, #0 - - thumb_func_start MOD05_021F0A28 -MOD05_021F0A28: ; 0x021F0A28 - bl FUN_020584C4 - str r0, [sp, #4] - add r0, r4, #0 - bl FUN_0205854C - add r5, r0, #0 - cmp r5, #0xa - blt _021F0A3E - bl GF_AssertFail -_021F0A3E: - lsl r6, r5, #2 - ldr r5, _021F0A74 ; =UNK05_021FC528 - ldr r2, [sp] - ldr r3, [sp, #4] - ldr r5, [r5, r6] - add r0, r4, #0 - add r1, r7, #0 - blx r5 - ldr r1, [sp, #4] - ldr r0, [sp] - strh r1, [r0] - add r0, r4, #0 - bl FUN_0205854C - ldr r1, [sp] - str r0, [r1, #4] - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F19A4 -_021F0A6E: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F0A74: .word UNK05_021FC528 - - thumb_func_start MOD05_021F0A78 -MOD05_021F0A78: ; 0x021F0A78 - push {r4, lr} - mov r0, #0 - ldrsh r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - bne _021F0A8A - ldr r0, [r2, #4] - cmp r0, #9 - bne _021F0AA2 -_021F0A8A: - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0AA8 -_021F0AA2: - add r0, r4, #0 - bl MOD05_021F194C -_021F0AA8: - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0AB4 -MOD05_021F0AB4: ; 0x021F0AB4 - push {r4, lr} - ldr r0, [r2, #4] - add r4, r1, #0 - cmp r0, #9 - beq _021F0ACE - add r0, r4, #0 - mov r1, #4 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F0ACE: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0ADC -MOD05_021F0ADC: ; 0x021F0ADC - push {r3, r4, r5, lr} - mov r1, #0x14 - add r5, r0, #0 - bl FUN_02058604 - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - strb r0, [r4] - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1c - sub r1, r1, r2 - mov r0, #0x1c - ror r1, r0 - add r0, r2, r1 - strb r0, [r4, #2] - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F1FC8 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0B14 - add r0, r5, #0 - bl FUN_020586A0 -_021F0B14: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0B18 -MOD05_021F0B18: ; 0x021F0B18 - push {r4, lr} - add r4, r0, #0 - bl FUN_02058628 - add r1, r0, #0 - add r0, r4, #0 - add r1, r1, #4 - bl MOD05_021F2060 - pop {r4, pc} - - thumb_func_start MOD05_021F0B2C -MOD05_021F0B2C: ; 0x021F0B2C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0B44 - add r1, r4, #0 - add r1, #8 - bl MOD05_021F20D8 -_021F0B44: - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F2060 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058410 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0B58 -MOD05_021F0B58: ; 0x021F0B58 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0B9A - ldr r0, [r4, #4] - cmp r0, #0 - bne _021F0B7A - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F1FC8 -_021F0B7A: - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0B9A - add r1, r4, #0 - add r1, #8 - bl MOD05_021F20F8 - ldr r1, [r4, #4] - add r0, r5, #0 - bl MOD05_021F2F48 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058418 -_021F0B9A: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0B9C -MOD05_021F0B9C: ; 0x021F0B9C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r6, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0C26 - cmp r6, #0 - beq _021F0C26 - add r0, r5, #0 - bl FUN_020584C4 - add r7, r0, #0 - add r0, r5, #0 - bl FUN_0205854C - mov r1, #2 - ldrsb r0, [r4, r1] - cmp r0, #0 - beq _021F0BE0 - sub r0, r0, #1 - strb r0, [r4, #2] - add r0, r6, #0 - mov r1, #0 - bl FUN_0201F854 - b _021F0C0C -_021F0BE0: - add r0, r6, #0 - lsl r1, r1, #0xb - bl FUN_0201F854 - mov r0, #1 - ldrsb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, #1] - ldrsb r0, [r4, r0] - cmp r0, #0x20 - blt _021F0C0C - mov r0, #0 - strb r0, [r4, #1] - bl LCRandom - lsr r1, r0, #0x1f - lsl r2, r0, #0x1c - sub r2, r2, r1 - mov r0, #0x1c - ror r2, r0 - add r0, r1, r2 - strb r0, [r4, #2] -_021F0C0C: - strb r7, [r4] - add r0, r5, #0 - bl FUN_0205854C - strb r0, [r4, #3] - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F19A4 -_021F0C26: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F0C28 -MOD05_021F0C28: ; 0x021F0C28 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #8] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0CEA - cmp r4, #0 - beq _021F0CEA - add r0, r5, #0 - bl FUN_020584C4 - add r7, r0, #0 - add r0, r5, #0 - bl FUN_0205854C - cmp r0, #0 - bne _021F0C9E - cmp r7, #1 - bls _021F0C66 - mov r0, #1 - str r0, [sp, #4] - b _021F0C6A -_021F0C66: - mov r0, #0 - str r0, [sp, #4] -_021F0C6A: - add r0, r4, #0 - bl FUN_0201F844 - ldr r1, [sp, #4] - cmp r1, r0 - bne _021F0C7C - ldr r0, [r6, #4] - cmp r0, #0 - bne _021F0C94 -_021F0C7C: - ldr r1, [sp, #4] - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 -_021F0C94: - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - b _021F0CD0 -_021F0C9E: - cmp r7, #1 - bls _021F0CA8 - mov r0, #1 - str r0, [sp] - b _021F0CAC -_021F0CA8: - mov r0, #0 - str r0, [sp] -_021F0CAC: - add r0, r4, #0 - bl FUN_0201F844 - ldr r1, [sp] - cmp r1, r0 - beq _021F0CC6 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F0CC6: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F0CD0: - strh r7, [r6] - add r0, r5, #0 - bl FUN_0205854C - str r0, [r6, #4] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 -_021F0CEA: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0CF0 -MOD05_021F0CF0: ; 0x021F0CF0 - push {r3, r4, r5, lr} - mov r1, #0x14 - add r5, r0, #0 - bl FUN_02058604 - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - strb r0, [r4] - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F1FC8 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0D16 - add r0, r5, #0 - bl FUN_020586A0 -_021F0D16: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0D18 -MOD05_021F0D18: ; 0x021F0D18 - push {r3, r4, lr} - sub sp, #0xc - add r2, sp, #0 - mov r1, #0 - str r1, [r2] - str r1, [r2, #4] - add r4, r0, #0 - str r1, [r2, #8] - bl FUN_02058628 - add r1, r0, #0 - add r0, r4, #0 - add r1, r1, #4 - bl MOD05_021F2060 - add r0, r4, #0 - add r1, sp, #0 - bl FUN_02058B94 - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0D44 -MOD05_021F0D44: ; 0x021F0D44 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0D5C - add r1, r4, #0 - add r1, #8 - bl MOD05_021F20D8 -_021F0D5C: - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F2060 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058410 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0D70 -MOD05_021F0D70: ; 0x021F0D70 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0DB2 - ldr r0, [r4, #4] - cmp r0, #0 - bne _021F0D92 - add r0, r5, #0 - add r1, r4, #4 - bl MOD05_021F1FC8 -_021F0D92: - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F0DB2 - add r1, r4, #0 - add r1, #8 - bl MOD05_021F20F8 - ldr r1, [r4, #4] - add r0, r5, #0 - bl MOD05_021F2F48 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058418 -_021F0DB2: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F0DB4 -MOD05_021F0DB4: ; 0x021F0DB4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - bl FUN_02058628 - ldr r7, [r0, #4] - add r0, r4, #0 - bl FUN_02058628 - str r0, [sp] - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F0E1E - cmp r7, #0 - beq _021F0E1E - add r0, r4, #0 - bl FUN_020584C4 - str r0, [sp, #4] - add r0, r4, #0 - bl FUN_0205854C - add r5, r0, #0 - cmp r5, #0xa - blt _021F0DEE - bl GF_AssertFail -_021F0DEE: - lsl r6, r5, #2 - ldr r5, _021F0E24 ; =UNK05_021FC500 - ldr r2, [sp] - ldr r3, [sp, #4] - ldr r5, [r5, r6] - add r0, r4, #0 - add r1, r7, #0 - blx r5 - ldr r1, [sp, #4] - ldr r0, [sp] - strb r1, [r0] - add r0, r4, #0 - bl FUN_0205854C - ldr r1, [sp] - strb r0, [r1, #2] - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F19A4 -_021F0E1E: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F0E24: .word UNK05_021FC500 - - thumb_func_start MOD05_021F0E28 -MOD05_021F0E28: ; 0x021F0E28 - push {r3, r4, r5, lr} - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F0E56 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - ldrb r1, [r4, #3] - mov r0, #1 - bic r1, r0 - strb r1, [r4, #3] - pop {r3, r4, r5, pc} -_021F0E56: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #9 - bne _021F0E6C - ldrb r1, [r4, #3] - mov r0, #1 - bic r1, r0 - mov r0, #1 - orr r0, r1 - strb r0, [r4, #3] - pop {r3, r4, r5, pc} -_021F0E6C: - ldrb r0, [r4, #3] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021F0E8E - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F1980 - ldrb r1, [r4, #3] - mov r0, #1 - bic r1, r0 - strb r1, [r4, #3] - pop {r3, r4, r5, pc} -_021F0E8E: - add r0, r5, #0 - bl MOD05_021F194C - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0E98 -MOD05_021F0E98: ; 0x021F0E98 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F0EC0 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0EF6 -_021F0EC0: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #9 - bne _021F0ED6 - ldrb r1, [r4, #3] - mov r0, #1 - bic r1, r0 - mov r0, #1 - orr r0, r1 - strb r0, [r4, #3] - pop {r4, r5, r6, pc} -_021F0ED6: - ldrb r0, [r4, #3] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021F0EF6 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F1980 - ldrb r1, [r4, #3] - mov r0, #1 - bic r1, r0 - strb r1, [r4, #3] -_021F0EF6: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0F0A - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0xa - bl FUN_0201F854 -_021F0F0A: - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F0F0C -MOD05_021F0F0C: ; 0x021F0F0C - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F0F32 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0F48 -_021F0F32: - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #9 - bne _021F0F48 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021F1980 -_021F0F48: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0F5C - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F0F5C: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0F60 -MOD05_021F0F60: ; 0x021F0F60 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F0F86 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0F9C -_021F0F86: - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #9 - bne _021F0F9C - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021F1980 -_021F0F9C: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F0FB0 - mov r1, #2 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F0FB0: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F0FB4 -MOD05_021F0FB4: ; 0x021F0FB4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F0FDA - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F0FF0 -_021F0FDA: - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #9 - bne _021F0FF0 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021F1980 -_021F0FF0: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F1004 - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xe - bl FUN_0201F854 -_021F1004: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1008 -MOD05_021F1008: ; 0x021F1008 - push {r3, r4, r5, r6, lr} - sub sp, #0x1c - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F1036 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strb r0, [r4, #1] - b _021F104C -_021F1036: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #9 - bne _021F104C - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F1980 -_021F104C: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #6 - beq _021F1058 - mov r0, #0 - strb r0, [r4, #1] -_021F1058: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F109E - ldr r6, _021F10A4 ; =UNK05_021FC458 - add r3, sp, #0 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r6] - mov r1, #1 - str r0, [r3] - ldrsb r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #1 - ldrsb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, #1] - ldrsb r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F109E - mov r0, #0 - strb r0, [r4, #1] -_021F109E: - add sp, #0x1c - pop {r3, r4, r5, r6, pc} - nop -_021F10A4: .word UNK05_021FC458 - - thumb_func_start MOD05_021F10A8 -MOD05_021F10A8: ; 0x021F10A8 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F10D6 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strb r0, [r4, #1] - b _021F10EC -_021F10D6: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #9 - bne _021F10EC - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F1980 -_021F10EC: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #7 - beq _021F10F8 - mov r0, #0 - strb r0, [r4, #1] -_021F10F8: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F1136 - ldr r6, _021F113C ; =UNK05_021FC3EC - add r3, sp, #0 - add r2, r3, #0 - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - mov r1, #1 - ldrsb r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #1 - ldrsb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, #1] - ldrsb r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F1136 - mov r0, #0 - strb r0, [r4, #1] -_021F1136: - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_021F113C: .word UNK05_021FC3EC - - thumb_func_start MOD05_021F1140 -MOD05_021F1140: ; 0x021F1140 - push {r4, r5, r6, lr} - sub sp, #0x20 - add r6, r0, #0 - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - beq _021F116E - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - mov r0, #0 - strb r0, [r4, #1] - b _021F1184 -_021F116E: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #9 - bne _021F1184 - add r0, r3, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F1980 -_021F1184: - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #8 - beq _021F1190 - mov r0, #0 - strb r0, [r4, #1] -_021F1190: - add r0, r6, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F11D6 - ldr r6, _021F11DC ; =UNK05_021FC474 - add r3, sp, #0 - add r2, r3, #0 - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - mov r1, #1 - ldrsb r1, [r4, r1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r2, r1] - bl FUN_0201F854 - mov r0, #1 - ldrsb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, #1] - ldrsb r0, [r4, r0] - lsl r1, r0, #2 - add r0, sp, #0 - ldr r0, [r0, r1] - cmp r0, #0 - bne _021F11D6 - mov r0, #0 - strb r0, [r4, #1] -_021F11D6: - add sp, #0x20 - pop {r4, r5, r6, pc} - nop -_021F11DC: .word UNK05_021FC474 - - thumb_func_start MOD05_021F11E0 -MOD05_021F11E0: ; 0x021F11E0 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - beq _021F1206 - add r0, r3, #0 - bl MOD05_021F2FB8 - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F121E -_021F1206: - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #9 - beq _021F121E - add r0, r3, #0 - bl MOD05_021F2FB8 - add r1, r0, #0 - add r0, r4, #0 - mov r2, #4 - bl MOD05_021F1958 -_021F121E: - add r0, r5, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F1232 - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F1232: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F1234 -MOD05_021F1234: ; 0x021F1234 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - bl FUN_02058628 - ldr r0, [r0, #4] - str r0, [sp] - add r0, r7, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r7, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F12B6 - ldr r0, [sp] - cmp r0, #0 - beq _021F12B6 - add r0, r7, #0 - bl FUN_020584C4 - str r0, [sp, #8] - add r0, r7, #0 - bl FUN_0205854C - str r0, [sp, #4] - cmp r0, #0xc - blt _021F1272 - bl GF_AssertFail -_021F1272: - mov r1, #2 - ldrsb r2, [r4, r1] - cmp r2, #0 - bne _021F128C - ldr r0, [sp, #4] - cmp r0, r2 - beq _021F128C - ldrb r0, [r4, #3] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _021F128C - sub r0, r1, #3 - strb r0, [r4] -_021F128C: - ldr r5, [sp, #4] - ldr r1, [sp] - lsl r6, r5, #2 - ldr r5, _021F12BC ; =UNK05_021FC4D8 - ldr r3, [sp, #8] - ldr r5, [r5, r6] - add r0, r7, #0 - add r2, r4, #0 - blx r5 - ldr r0, [sp, #8] - ldr r1, [sp] - strb r0, [r4] - ldr r0, [sp, #4] - strb r0, [r4, #2] - add r0, r7, #0 - bl MOD05_021F2F48 - ldr r1, [sp] - add r0, r7, #0 - bl MOD05_021F19A4 -_021F12B6: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021F12BC: .word UNK05_021FC4D8 - - thumb_func_start MOD05_021F12C0 -MOD05_021F12C0: ; 0x021F12C0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r6, r3, #0 - add r4, r2, #0 - add r2, sp, #0 - ldr r3, _021F1348 ; =UNK05_021FC3FC - add r5, r1, #0 - add r7, r2, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - lsl r0, r6, #2 - ldr r1, [r7, r0] - mov r0, #0 - ldrsb r0, [r4, r0] - cmp r6, r0 - beq _021F12FE - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - ldrb r1, [r4, #3] - mov r0, #1 - add sp, #0x10 - bic r1, r0 - strb r1, [r4, #3] - pop {r3, r4, r5, r6, r7, pc} -_021F12FE: - mov r2, #2 - ldrsb r0, [r4, r2] - cmp r0, #0 - beq _021F1316 - ldrb r1, [r4, #3] - mov r0, #1 - add sp, #0x10 - bic r1, r0 - mov r0, #1 - orr r0, r1 - strb r0, [r4, #3] - pop {r3, r4, r5, r6, r7, pc} -_021F1316: - ldrb r0, [r4, #3] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021F133A - add r0, r5, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - ldrb r1, [r4, #3] - mov r0, #1 - add sp, #0x10 - bic r1, r0 - strb r1, [r4, #3] - pop {r3, r4, r5, r6, r7, pc} -_021F133A: - add r0, r5, #0 - lsl r1, r2, #0xb - bl FUN_0201F854 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F1348: .word UNK05_021FC3FC - - thumb_func_start MOD05_021F134C -MOD05_021F134C: ; 0x021F134C - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, r3, #0 - add r5, r1, #0 - add r6, r2, #0 - str r3, [sp] - bl MOD05_021F2FC4 - add r4, r0, #0 - mov r0, #0 - ldrsb r1, [r6, r0] - ldr r0, [sp] - cmp r0, r1 - bne _021F1370 - mov r0, #2 - ldrsb r0, [r6, r0] - cmp r0, #0 - beq _021F1382 -_021F1370: - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F13B2 -_021F1382: - cmp r0, #0xa - beq _021F1398 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F13B2 -_021F1398: - add r0, r5, #0 - bl FUN_0201F844 - cmp r4, r0 - beq _021F13B2 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 -_021F13B2: - add r0, r7, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F13C6 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0xa - bl FUN_0201F854 -_021F13C6: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F13C8 -MOD05_021F13C8: ; 0x021F13C8 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, r3, #0 - add r5, r1, #0 - add r6, r2, #0 - str r3, [sp] - bl MOD05_021F2FC4 - add r4, r0, #0 - mov r0, #0 - ldrsb r1, [r6, r0] - ldr r0, [sp] - cmp r0, r1 - beq _021F13F6 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F142A -_021F13F6: - mov r0, #2 - ldrsb r0, [r6, r0] - cmp r0, #0xb - beq _021F1410 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 - b _021F142A -_021F1410: - add r0, r5, #0 - bl FUN_0201F844 - cmp r4, r0 - beq _021F142A - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F890 -_021F142A: - add r0, r7, #0 - bl MOD05_021F1DFC - cmp r0, #0 - bne _021F143E - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F143E: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F1440 -MOD05_021F1440: ; 0x021F1440 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - bl FUN_02058628 - ldr r7, [r0, #4] - add r0, r4, #0 - bl FUN_02058628 - str r0, [sp] - cmp r7, #0 - beq _021F14B4 - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F14B4 - add r0, r4, #0 - bl FUN_020584C4 - str r0, [sp, #4] - add r0, r4, #0 - bl FUN_0205854C - add r5, r0, #0 - cmp r5, #4 - blt _021F147A - bl GF_AssertFail -_021F147A: - lsl r6, r5, #2 - ldr r5, _021F14B8 ; =UNK05_021FC40C - ldr r2, [sp] - ldr r3, [sp, #4] - ldr r5, [r5, r6] - add r0, r4, #0 - add r1, r7, #0 - blx r5 - ldr r2, [sp, #4] - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F1658 - ldr r1, [sp, #4] - ldr r0, [sp] - strb r1, [r0] - add r0, r4, #0 - bl FUN_0205854C - ldr r1, [sp] - strb r0, [r1, #2] - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F2F48 - add r0, r4, #0 - add r1, r7, #0 - bl MOD05_021F19A4 -_021F14B4: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F14B8: .word UNK05_021FC40C - - thumb_func_start MOD05_021F14BC -MOD05_021F14BC: ; 0x021F14BC - push {r4, lr} - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - bne _021F14D0 - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _021F14E6 -_021F14D0: - ldr r1, _021F1508 ; =UNK05_021FC41C - lsl r2, r3, #2 - ldr r1, [r1, r2] - add r0, r4, #0 - bl FUN_0201F830 - mov r1, #0xf - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F890 -_021F14E6: - add r0, r4, #0 - bl FUN_0201F8C0 - mov r1, #1 - lsl r1, r1, #0xc - sub r1, r0, r1 - bpl _021F14F6 - mov r1, #0 -_021F14F6: - add r0, r4, #0 - bl FUN_0201F890 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r4, pc} - nop -_021F1508: .word UNK05_021FC41C - - thumb_func_start MOD05_021F150C -MOD05_021F150C: ; 0x021F150C - push {r4, lr} - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - bne _021F1520 - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #1 - beq _021F1534 -_021F1520: - ldr r1, _021F1540 ; =UNK05_021FC41C - lsl r2, r3, #2 - ldr r1, [r1, r2] - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F1534: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - pop {r4, pc} - .balign 4, 0 -_021F1540: .word UNK05_021FC41C - - thumb_func_start MOD05_021F1544 -MOD05_021F1544: ; 0x021F1544 - push {r3, r4, r5, lr} - add r4, r2, #0 - mov r0, #0 - ldrsb r0, [r4, r0] - add r5, r1, #0 - cmp r3, r0 - bne _021F155A - mov r0, #2 - ldrsb r0, [r4, r0] - cmp r0, #2 - beq _021F1578 -_021F155A: - ldr r1, _021F1604 ; =UNK05_021FC41C - lsl r2, r3, #2 - ldr r1, [r1, r2] - add r0, r5, #0 - bl FUN_0201F830 - mov r1, #0xf - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0201F890 - ldrb r1, [r4, #3] - mov r0, #0xfe - bic r1, r0 - strb r1, [r4, #3] -_021F1578: - add r0, r5, #0 - bl FUN_0201F8C0 - add r1, r0, #0 - ldrb r0, [r4, #3] - lsl r2, r0, #0x18 - lsr r2, r2, #0x19 - beq _021F1592 - cmp r2, #1 - beq _021F15B4 - cmp r2, #2 - beq _021F15DA - b _021F15F4 -_021F1592: - mov r3, #1 - lsl r3, r3, #0xc - sub r1, r1, r3 - mov r3, #0xa - lsl r3, r3, #0xc - cmp r1, r3 - bgt _021F15F4 - add r2, r2, #1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0xfe - lsl r2, r2, #0x19 - bic r0, r3 - lsr r2, r2, #0x18 - orr r0, r2 - strb r0, [r4, #3] - b _021F15F4 -_021F15B4: - mov r3, #1 - lsl r3, r3, #0xc - add r1, r1, r3 - mov r3, #0xf - lsl r3, r3, #0xc - cmp r1, r3 - blt _021F15F4 - add r2, r2, #1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0xfe - lsl r2, r2, #0x19 - bic r0, r3 - lsr r2, r2, #0x18 - orr r0, r2 - strb r0, [r4, #3] - mov r0, #0 - strb r0, [r4, #1] - b _021F15F4 -_021F15DA: - mov r0, #1 - ldrsb r2, [r4, r0] - add r2, r2, #1 - strb r2, [r4, #1] - ldrsb r0, [r4, r0] - cmp r0, #0x1e - blt _021F15F4 - mov r0, #0 - strb r0, [r4, #1] - ldrb r2, [r4, #3] - mov r0, #0xfe - bic r2, r0 - strb r2, [r4, #3] -_021F15F4: - add r0, r5, #0 - bl FUN_0201F890 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F1604: .word UNK05_021FC41C - - thumb_func_start MOD05_021F1608 -MOD05_021F1608: ; 0x021F1608 - push {r4, lr} - mov r0, #0 - ldrsb r0, [r2, r0] - add r4, r1, #0 - cmp r3, r0 - bne _021F161C - mov r0, #2 - ldrsb r0, [r2, r0] - cmp r0, #3 - beq _021F1632 -_021F161C: - ldr r1, _021F1654 ; =UNK05_021FC41C - lsl r2, r3, #2 - ldr r1, [r1, r2] - add r0, r4, #0 - bl FUN_0201F830 - mov r1, #0xf - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F890 -_021F1632: - add r0, r4, #0 - bl FUN_0201F8C0 - mov r1, #1 - lsl r1, r1, #0xc - sub r1, r0, r1 - bpl _021F1642 - mov r1, #0 -_021F1642: - add r0, r4, #0 - bl FUN_0201F890 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r4, pc} - nop -_021F1654: .word UNK05_021FC41C - - thumb_func_start MOD05_021F1658 -MOD05_021F1658: ; 0x021F1658 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r2, #0 - add r2, sp, #0 - mov r0, #0 - str r0, [r2] - str r0, [r2, #4] - str r0, [r2, #8] - add r0, r1, #0 - bl FUN_0201F880 - asr r1, r0, #0xb - lsr r1, r1, #0x14 - add r1, r0, r1 - asr r0, r1, #0xc - cmp r4, #3 - bhi _021F16BE - add r1, r4, r4 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021F1688: ; jump table - .short _021F16BE - _021F1688 - 2 ; case 0 - .short _021F1690 - _021F1688 - 2 ; case 1 - .short _021F169C - _021F1688 - 2 ; case 2 - .short _021F16AE - _021F1688 - 2 ; case 3 -_021F1690: - cmp r0, #0x18 - blt _021F16BE - mov r0, #6 - lsl r0, r0, #0xc - str r0, [sp, #8] - b _021F16BE -_021F169C: - cmp r0, #0x28 - bge _021F16A8 - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp] - b _021F16BE -_021F16A8: - ldr r0, _021F16CC ; =0xFFFFB000 - str r0, [sp] - b _021F16BE -_021F16AE: - cmp r0, #0x38 - bge _021F16B8 - ldr r0, _021F16D0 ; =0xFFFFF000 - str r0, [sp] - b _021F16BE -_021F16B8: - mov r0, #5 - lsl r0, r0, #0xc - str r0, [sp] -_021F16BE: - add r0, r5, #0 - add r1, sp, #0 - bl FUN_02058B94 - add sp, #0xc - pop {r4, r5, pc} - nop -_021F16CC: .word 0xFFFFB000 -_021F16D0: .word 0xFFFFF000 - - thumb_func_start MOD05_021F16D4 -MOD05_021F16D4: ; 0x021F16D4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F1734 - cmp r4, #0 - beq _021F1734 - add r0, r5, #0 - bl FUN_020584C4 - add r7, r0, #0 - strb r7, [r6] - add r0, r5, #0 - bl FUN_0205854C - strb r0, [r6, #2] - add r0, r7, #0 - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F854 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 -_021F1734: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1738 -MOD05_021F1738: ; 0x021F1738 - push {r4, r5, r6, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F179C - cmp r4, #0 - beq _021F179C - add r0, r5, #0 - bl FUN_020584C4 - strb r0, [r6] - add r0, r5, #0 - bl FUN_0205854C - strb r0, [r6, #2] - add r0, r4, #0 - bl FUN_0201F844 - cmp r0, #0 - beq _021F1782 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F1782: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 -_021F179C: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F17A0 -MOD05_021F17A0: ; 0x021F17A0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F1836 - cmp r4, #0 - beq _021F1836 - add r0, r5, #0 - bl FUN_020584C4 - add r7, r0, #0 - add r0, r5, #0 - bl FUN_0205854C - cmp r0, #0 - bne _021F17F8 - add r0, r4, #0 - bl FUN_0201F844 - cmp r0, #1 - beq _021F17EC - add r0, r4, #0 - mov r1, #1 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F17EC: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - b _021F181C -_021F17F8: - add r0, r4, #0 - bl FUN_0201F844 - cmp r0, #0 - beq _021F1812 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F1812: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F181C: - strb r7, [r6] - add r0, r5, #0 - bl FUN_0205854C - strb r0, [r6, #2] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 -_021F1836: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F1838 -MOD05_021F1838: ; 0x021F1838 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F18A0 - cmp r4, #0 - beq _021F18A0 - add r0, r5, #0 - bl FUN_020584C4 - mov r1, #0 - ldrsb r1, [r6, r1] - add r7, r0, #0 - cmp r7, r1 - beq _021F187C - bl MOD05_021F2FAC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F187C: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 - add r0, r5, #0 - strb r7, [r6] - bl FUN_0205854C - strb r0, [r6, #2] -_021F18A0: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F18A4 -MOD05_021F18A4: ; 0x021F18A4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0, #4] - add r0, r5, #0 - bl FUN_02058628 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F191A - cmp r4, #0 - beq _021F191A - add r0, r5, #0 - bl FUN_020584C4 - str r0, [sp] - add r0, r5, #0 - bl FUN_0205854C - add r7, r0, #0 - mov r0, #2 - ldrsb r0, [r6, r0] - cmp r7, r0 - beq _021F18FA - cmp r7, #0 - bne _021F18EA - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F830 - b _021F18F2 -_021F18EA: - add r0, r4, #0 - mov r1, #1 - bl FUN_0201F830 -_021F18F2: - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 -_021F18FA: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 - ldr r0, [sp] - add r1, r4, #0 - strb r0, [r6] - add r0, r5, #0 - strb r7, [r6, #2] - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F19A4 -_021F191A: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F191C -MOD05_021F191C: ; 0x021F191C - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - bl FUN_0201F8C0 - asr r1, r0, #0xb - lsr r1, r1, #0x14 - add r1, r0, r1 - asr r4, r1, #0xc - add r0, r4, #0 - add r1, r6, #0 - bl _s32_div_f - sub r1, r4, r1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0201F890 - add r0, r5, #0 - mov r1, #0 - bl FUN_0201F854 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F194C -MOD05_021F194C: ; 0x021F194C - ldr r3, _021F1954 ; =MOD05_021F191C - mov r1, #8 - bx r3 - nop -_021F1954: .word MOD05_021F191C - - thumb_func_start MOD05_021F1958 -MOD05_021F1958: ; 0x021F1958 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - add r1, r2, #0 - bl MOD05_021F191C - add r0, r5, #0 - bl FUN_0201F8C0 - add r6, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - add r1, r6, #0 - bl FUN_0201F890 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1980 -MOD05_021F1980: ; 0x021F1980 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F194C - add r0, r5, #0 - bl FUN_0201F8C0 - add r6, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_0201F830 - add r0, r5, #0 - add r1, r6, #0 - bl FUN_0201F890 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F19A4 -MOD05_021F19A4: ; 0x021F19A4 - push {r4, r5, r6, lr} - mov r4, #1 - add r6, r1, #0 - lsl r1, r4, #9 - add r5, r0, #0 - bl FUN_0205842C - cmp r0, #1 - bne _021F19B8 - mov r4, #0 -_021F19B8: - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #1 - bne _021F19D6 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #0 - bne _021F19D6 - mov r4, #0 -_021F19D6: - lsl r1, r4, #0x18 - add r0, r6, #0 - lsr r1, r1, #0x18 - bl FUN_0201F80C - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F19E4 -MOD05_021F19E4: ; 0x021F19E4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r1, #4 - bl FUN_02058604 - add r4, r0, #0 - add r0, r5, #0 - bl MOD06_0224A130 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F19FC -MOD05_021F19FC: ; 0x021F19FC - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r1, #4 - bl FUN_02058604 - add r4, r0, #0 - add r0, r5, #0 - bl MOD06_0224A6B8 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1A14 -MOD05_021F1A14: ; 0x021F1A14 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r1, #4 - bl FUN_02058604 - add r4, r0, #0 - add r0, r5, #0 - bl MOD06_0224A8D4 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1A2C -MOD05_021F1A2C: ; 0x021F1A2C - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r1, #4 - bl FUN_02058604 - add r4, r0, #0 - add r0, r5, #0 - bl MOD06_0224AA40 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1A44 -MOD05_021F1A44: ; 0x021F1A44 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F1A48 -MOD05_021F1A48: ; 0x021F1A48 - push {r4, lr} - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1A5E - bl MOD05_021E4DE4 - mov r0, #0 - str r0, [r4] -_021F1A5E: - pop {r4, pc} - - thumb_func_start MOD05_021F1A60 -MOD05_021F1A60: ; 0x021F1A60 - push {r4, lr} - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1A76 - bl MOD05_021E4DE4 - mov r0, #0 - str r0, [r4] -_021F1A76: - pop {r4, pc} - - thumb_func_start MOD05_021F1A78 -MOD05_021F1A78: ; 0x021F1A78 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1A8C - bl GF_AssertFail -_021F1A8C: - add r0, r5, #0 - bl MOD06_0224A130 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1A98 -MOD05_021F1A98: ; 0x021F1A98 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1AAC - bl GF_AssertFail -_021F1AAC: - add r0, r5, #0 - bl MOD06_0224A6B8 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1AB8 -MOD05_021F1AB8: ; 0x021F1AB8 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1ACC - bl GF_AssertFail -_021F1ACC: - add r0, r5, #0 - bl MOD06_0224A8D4 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1AD8 -MOD05_021F1AD8: ; 0x021F1AD8 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1AEC - bl GF_AssertFail -_021F1AEC: - add r0, r5, #0 - bl MOD06_0224AA40 - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1AF8 -MOD05_021F1AF8: ; 0x021F1AF8 - push {r4, lr} - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - bl MOD06_0224A6FC - mov r0, #0 - str r0, [r4] - pop {r4, pc} - - thumb_func_start MOD05_021F1B0C -MOD05_021F1B0C: ; 0x021F1B0C - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - bl MOD05_021F1C34 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - add r0, r4, #0 - add r1, sp, #0 - bl FUN_02058BB4 - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1B2C -MOD05_021F1B2C: ; 0x021F1B2C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0] - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F1B54 - cmp r4, #0 - beq _021F1B54 - add r0, r5, #0 - bl MOD05_021F1C48 - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl FUN_0201F854 -_021F1B54: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1B58 -MOD05_021F1B58: ; 0x021F1B58 - ldr r3, _021F1B5C ; =MOD05_021F1CA4 - bx r3 - .balign 4, 0 -_021F1B5C: .word MOD05_021F1CA4 - - thumb_func_start MOD05_021F1B60 -MOD05_021F1B60: ; 0x021F1B60 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F1B76 - add r1, r4, #4 - bl MOD05_021F20D8 -_021F1B76: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2060 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058410 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1B8C -MOD05_021F1B8C: ; 0x021F1B8C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F1BCC - ldr r0, [r4] - cmp r0, #0 - bne _021F1BAE - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F1FC8 -_021F1BAE: - ldr r0, [r4] - cmp r0, #0 - beq _021F1BCC - add r1, r4, #4 - bl MOD05_021F20F8 - ldr r1, [r4] - add r0, r5, #0 - bl MOD05_021F2F48 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0x14 - bl FUN_02058418 -_021F1BCC: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1BD0 -MOD05_021F1BD0: ; 0x021F1BD0 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - bl MOD05_021F1C34 - mov r1, #0 - mov r0, #6 - lsl r0, r0, #0xe - str r0, [sp, #4] - str r1, [sp] - str r1, [sp, #8] - add r0, r4, #0 - add r1, sp, #0 - bl FUN_02058BB4 - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1BF4 -MOD05_021F1BF4: ; 0x021F1BF4 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0] - add r0, r5, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F1C12 - cmp r4, #0 - beq _021F1C12 - add r0, r5, #0 - bl MOD05_021F1C48 -_021F1C12: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F1C14 -MOD05_021F1C14: ; 0x021F1C14 - ldr r3, _021F1C18 ; =MOD05_021F1CA4 - bx r3 - .balign 4, 0 -_021F1C18: .word MOD05_021F1CA4 - - thumb_func_start MOD05_021F1C1C -MOD05_021F1C1C: ; 0x021F1C1C - ldr r3, _021F1C20 ; =FUN_02058628 - bx r3 - .balign 4, 0 -_021F1C20: .word FUN_02058628 - - thumb_func_start MOD05_021F1C24 -MOD05_021F1C24: ; 0x021F1C24 - push {r3, lr} - bl FUN_02058628 - bl MOD05_021F1C30 - pop {r3, pc} - - thumb_func_start MOD05_021F1C30 -MOD05_021F1C30: ; 0x021F1C30 - ldr r0, [r0] - bx lr - - thumb_func_start MOD05_021F1C34 -MOD05_021F1C34: ; 0x021F1C34 - push {r4, lr} - add r4, r0, #0 - mov r1, #0x10 - bl FUN_02058604 - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021F1FC8 - pop {r4, pc} - - thumb_func_start MOD05_021F1C48 -MOD05_021F1C48: ; 0x021F1C48 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_02058628 - ldr r4, [r0] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2F48 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F1C64 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F1C64 -MOD05_021F1C64: ; 0x021F1C64 - push {r4, r5, r6, lr} - mov r4, #1 - add r6, r1, #0 - lsl r1, r4, #9 - add r5, r0, #0 - bl FUN_0205842C - cmp r0, #1 - bne _021F1C78 - mov r4, #0 -_021F1C78: - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #1 - bne _021F1C96 - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #0 - bne _021F1C96 - mov r4, #0 -_021F1C96: - lsl r1, r4, #0x18 - add r0, r6, #0 - lsr r1, r1, #0x18 - bl FUN_0201F80C - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1CA4 -MOD05_021F1CA4: ; 0x021F1CA4 - push {r4, lr} - add r4, r0, #0 - bl FUN_02058628 - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021F2060 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1CB8 -MOD05_021F1CB8: ; 0x021F1CB8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r1, #0 - mov r1, #1 - add r5, r0, #0 - add r6, r2, #0 - add r7, r3, #0 - bl FUN_02058390 - cmp r0, #0 - beq _021F1CD2 - bl GF_AssertFail -_021F1CD2: - add r0, r5, #0 - bl MOD05_021F1D68 - add r0, r5, #0 - bl FUN_02058368 - str r0, [sp, #0x10] - add r0, r5, #0 - bl FUN_0205839C - sub r0, r0, #1 - str r0, [sp, #0xc] - add r0, r5, #0 - bl FUN_020583A0 - str r4, [sp] - str r6, [sp, #4] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0xc] - add r1, r5, #0 - str r7, [sp, #8] - bl MOD05_021F1F04 - add r0, r5, #0 - mov r1, #4 - bl MOD05_021F3780 - add r4, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_020583A4 - ldr r1, _021F1D28 ; =UNK05_021F8B84 - add r0, r4, #0 - ldr r1, [r1] - bl MOD05_021F3810 - add r0, r5, #0 - mov r1, #1 - bl FUN_0205837C - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021F1D28: .word UNK05_021F8B84 - - thumb_func_start MOD05_021F1D2C -MOD05_021F1D2C: ; 0x021F1D2C - push {r4, lr} - add r4, r0, #0 - bl FUN_020587E0 - cmp r0, #1 - beq _021F1D3C - bl GF_AssertFail -_021F1D3C: - add r0, r4, #0 - bl FUN_020583A0 - bl MOD05_021F1F58 - add r0, r4, #0 - bl FUN_020583AC - bl MOD05_021F379C - add r0, r4, #0 - mov r1, #0 - bl FUN_020583A4 - add r0, r4, #0 - mov r1, #1 - bl FUN_02058384 - add r0, r4, #0 - bl MOD05_021F1D80 - pop {r4, pc} - - thumb_func_start MOD05_021F1D68 -MOD05_021F1D68: ; 0x021F1D68 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x51 - mov r1, #4 - bl NARC_ctor - add r1, r0, #0 - add r0, r4, #0 - bl FUN_020583F0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1D80 -MOD05_021F1D80: ; 0x021F1D80 - push {r3, lr} - bl FUN_020583F4 - bl NARC_dtor - pop {r3, pc} - - thumb_func_start MOD05_021F1D8C -MOD05_021F1D8C: ; 0x021F1D8C - push {r4, lr} - add r4, r0, #0 - bl FUN_02058578 - mov r1, #4 - bl FUN_02058390 - cmp r0, #0 - bne _021F1DC6 - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xe - bl FUN_02058424 - cmp r0, #0 - beq _021F1DC6 - add r0, r4, #0 - bl FUN_02058920 - cmp r0, #0 - beq _021F1DC0 - add r0, r4, #0 - bl FUN_02058AB4 - cmp r0, #0 - beq _021F1DC6 -_021F1DC0: - add r0, r4, #0 - bl FUN_020586A0 -_021F1DC6: - pop {r4, pc} - - thumb_func_start MOD05_021F1DC8 -MOD05_021F1DC8: ; 0x021F1DC8 - push {r3, lr} - bl FUN_02058458 - bl MOD05_021F1DD4 - pop {r3, pc} - - thumb_func_start MOD05_021F1DD4 -MOD05_021F1DD4: ; 0x021F1DD4 - push {r3, lr} - ldr r3, _021F1DF4 ; =UNK05_021F9A9C - ldr r1, _021F1DF8 ; =0x0000FFFF -_021F1DDA: - ldr r2, [r3] - cmp r2, r0 - bne _021F1DE4 - add r0, r3, #0 - pop {r3, pc} -_021F1DE4: - add r3, #8 - ldr r2, [r3] - cmp r2, r1 - bne _021F1DDA - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 -_021F1DF4: .word UNK05_021F9A9C -_021F1DF8: .word 0x0000FFFF - - thumb_func_start MOD05_021F1DFC -MOD05_021F1DFC: ; 0x021F1DFC - push {r4, lr} - add r4, r0, #0 - bl FUN_02058920 - cmp r0, #1 - bne _021F1E16 - add r0, r4, #0 - bl FUN_02058AB4 - cmp r0, #0 - bne _021F1E16 - mov r0, #1 - pop {r4, pc} -_021F1E16: - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #8 - bl FUN_02058424 - cmp r0, #0 - beq _021F1E28 - mov r0, #1 - pop {r4, pc} -_021F1E28: - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021F1E2C -MOD05_021F1E2C: ; 0x021F1E2C - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r2, #0 - bl FUN_020583F4 - add r1, r4, #0 - add r6, r0, #0 - bl NARC_GetMemberSize - add r1, r0, #0 - cmp r5, #1 - bne _021F1E4C - mov r0, #4 - bl AllocFromHeap - b _021F1E52 -_021F1E4C: - mov r0, #4 - bl AllocFromHeapAtEnd -_021F1E52: - add r5, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl NARC_ReadWholeMember - add r0, r5, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1E64 -MOD05_021F1E64: ; 0x021F1E64 - push {r3, r4, r5, lr} - sub sp, #0x30 - add r4, r1, #0 - add r5, r0, #0 - add r1, sp, #0x24 - bl FUN_02058B5C - add r0, r5, #0 - add r1, sp, #0x18 - bl FUN_02058B84 - add r0, r5, #0 - add r1, sp, #0xc - bl FUN_02058BA4 - add r0, r5, #0 - add r1, sp, #0 - bl FUN_02058BC4 - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x18] - ldr r2, [sp, #0xc] - add r0, r1, r0 - ldr r3, [sp] - add r0, r2, r0 - add r0, r3, r0 - str r0, [r4] - ldr r1, [sp, #0x28] - ldr r0, [sp, #0x1c] - ldr r2, [sp, #0x10] - add r0, r1, r0 - ldr r3, [sp, #4] - add r0, r2, r0 - add r0, r3, r0 - str r0, [r4, #4] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x14] - add r0, r1, r0 - ldr r3, [sp, #8] - add r0, r2, r0 - add r0, r3, r0 - str r0, [r4, #8] - add sp, #0x30 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1EC0 -MOD05_021F1EC0: ; 0x021F1EC0 - push {r4, lr} - add r4, r0, #0 - bl FUN_020584AC - add r0, r4, #0 - bl FUN_02058884 - cmp r0, #1 - bne _021F1ED8 - add r0, r4, #0 - bl FUN_020586A0 -_021F1ED8: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1EDC -MOD05_021F1EDC: ; 0x021F1EDC - push {r4, lr} - mov r1, #1 - add r4, r0, #0 - bl FUN_0205889C - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0x14 - bl FUN_02058410 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1EF4 -MOD05_021F1EF4: ; 0x021F1EF4 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F1EF8 -MOD05_021F1EF8: ; 0x021F1EF8 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F1EFC -MOD05_021F1EFC: ; 0x021F1EFC - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F1F00 -MOD05_021F1F00: ; 0x021F1F00 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F1F04 -MOD05_021F1F04: ; 0x021F1F04 - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - mov r2, #0x41 - add r5, r0, #0 - lsl r2, r2, #2 - str r1, [r5, r2] - add r1, r4, #0 - bl MOD05_021F2E40 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0xa - bl MOD05_021F33B4 - mov r2, #4 - mov r1, #8 - ldr r0, [sp, #0x18] - str r2, [sp] - str r0, [sp, #4] - ldr r0, [sp, #0x1c] - add r3, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - bl MOD05_021F22E0 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2160 - ldr r1, [sp, #0x20] - ldr r2, _021F1F50 ; =UNK05_021F8B90 - ldr r3, _021F1F54 ; =UNK05_021F8B88 - add r0, r5, #0 - bl MOD05_021F25A0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_021F1F50: .word UNK05_021F8B90 -_021F1F54: .word UNK05_021F8B88 - - thumb_func_start MOD05_021F1F58 -MOD05_021F1F58: ; 0x021F1F58 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F3458 - add r0, r4, #0 - bl MOD05_021F21AC - add r0, r4, #0 - bl MOD05_021F2D48 - bl MOD05_021F2E68 - add r0, r4, #0 - bl MOD05_021F2368 - pop {r4, pc} - - thumb_func_start MOD05_021F1F78 -MOD05_021F1F78: ; 0x021F1F78 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - mov r1, #0 - add r6, r2, #0 - add r7, r0, #0 - str r1, [r5] - bl MOD05_021F2F3C - add r1, r6, #0 - str r0, [sp] - bl MOD05_021F28E8 - add r4, r0, #0 - bne _021F1FA2 - add r0, r7, #0 - add r1, r5, #0 - add r2, r6, #0 - bl MOD05_021F211C - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F1FA2: - sub r0, r4, #3 - cmp r0, #1 - bhi _021F1FB8 - ldr r0, [sp] - add r1, r7, #0 - add r2, r5, #0 - add r3, r6, #0 - bl MOD05_021F32BC - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F1FB8: - add r0, r7, #0 - add r1, r6, #0 - bl MOD05_021F1FE0 - str r0, [r5] - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1FC8 -MOD05_021F1FC8: ; 0x021F1FC8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl FUN_02058458 - add r2, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F1F78 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F1FE0 -MOD05_021F1FE0: ; 0x021F1FE0 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r0, #0 - add r5, r1, #0 - bl MOD05_021F2F3C - add r4, r0, #0 - bl MOD05_021F2D48 - add r7, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F2AC8 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F21CC - add r4, r0, #0 - bne _021F200C - bl GF_AssertFail -_021F200C: - add r0, r6, #0 - add r1, sp, #0 - bl MOD05_021F1E64 - add r0, r7, #0 - add r1, r4, #0 - add r2, sp, #0 - bl MOD05_021F2E70 - add r4, r0, #0 - bne _021F2026 - bl GF_AssertFail -_021F2026: - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F202C -MOD05_021F202C: ; 0x021F202C - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - add r6, r2, #0 - bl FUN_0201F744 - mov r0, #0 - str r0, [r4] - add r0, r5, #0 - bl FUN_02058578 - add r1, r5, #0 - add r2, r6, #0 - bl MOD05_021F2284 - cmp r0, #0 - bne _021F205C - add r0, r5, #0 - bl MOD05_021F2F3C - add r1, r6, #0 - bl MOD05_021F2240 -_021F205C: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2060 -MOD05_021F2060: ; 0x021F2060 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - bl MOD05_021F2150 - ldr r0, [r4] - cmp r0, #0 - beq _021F2092 - add r0, r5, #0 - bl FUN_02058458 - add r6, r0, #0 - bl FUN_0205C334 - cmp r0, #1 - bne _021F2088 - add r0, r5, #0 - bl FUN_0205C340 - add r6, r0, #0 -_021F2088: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F202C -_021F2092: - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F2094 -MOD05_021F2094: ; 0x021F2094 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - add r4, r2, #0 - bl MOD05_021F2150 - ldr r0, [r5] - cmp r0, #0 - beq _021F20AE - bl FUN_0201F744 - mov r0, #0 - str r0, [r5] -_021F20AE: - ldr r0, _021F20D4 ; =0x0000FFFF - cmp r4, r0 - beq _021F20D2 - add r0, r6, #0 - bl FUN_02058578 - add r1, r6, #0 - add r2, r4, #0 - bl MOD05_021F2284 - cmp r0, #0 - bne _021F20D2 - add r0, r6, #0 - bl MOD05_021F2F3C - add r1, r4, #0 - bl MOD05_021F2240 -_021F20D2: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F20D4: .word 0x0000FFFF - - thumb_func_start MOD05_021F20D8 -MOD05_021F20D8: ; 0x021F20D8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl FUN_0201F820 - str r0, [r4] - add r0, r5, #0 - bl FUN_0201F844 - strh r0, [r4, #6] - add r0, r5, #0 - bl FUN_0201F880 - str r0, [r4, #8] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F20F8 -MOD05_021F20F8: ; 0x021F20F8 - push {r3, r4, r5, lr} - add r4, r1, #0 - ldr r1, [r4] - add r5, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl FUN_0201F80C - ldrh r1, [r4, #6] - add r0, r5, #0 - bl FUN_0201F830 - ldr r1, [r4, #8] - add r0, r5, #0 - bl FUN_0201F86C - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F211C -MOD05_021F211C: ; 0x021F211C - push {r3, r4, r5, r6, r7, lr} - add r4, r2, #0 - add r6, r0, #0 - add r5, r1, #0 - bl MOD05_021F2F3C - add r1, r4, #0 - add r7, r0, #0 - bl MOD05_021F2460 - cmp r0, #0 - bne _021F2140 - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021F1FE0 - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} -_021F2140: - add r0, r7, #0 - add r1, r6, #0 - add r2, r5, #0 - add r3, r4, #0 - bl MOD05_021F32BC - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2150 -MOD05_021F2150: ; 0x021F2150 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F2F3C - add r1, r4, #0 - bl MOD05_021F32F8 - pop {r4, pc} - - thumb_func_start MOD05_021F2160 -MOD05_021F2160: ; 0x021F2160 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - mov r1, #0x28 - add r7, r0, #0 - mov r0, #4 - mul r1, r6 - bl AllocFromHeap - add r4, r0, #0 - add r0, r7, #0 - add r0, #0xe4 - str r4, [r0] - cmp r4, #0 - bne _021F2180 - bl GF_AssertFail -_021F2180: - mov r0, #4 - lsl r1, r6, #3 - bl AllocFromHeap - add r5, r0, #0 - add r7, #0xf4 - str r5, [r7] - cmp r5, #0 - bne _021F2196 - bl GF_AssertFail -_021F2196: - ldr r0, _021F21A8 ; =0x0000FFFF -_021F2198: - str r0, [r5] - str r4, [r5, #4] - add r5, #8 - add r4, #0x28 - sub r6, r6, #1 - bne _021F2198 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F21A8: .word 0x0000FFFF - - thumb_func_start MOD05_021F21AC -MOD05_021F21AC: ; 0x021F21AC - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F2260 - add r1, r4, #0 - add r1, #0xe4 - ldr r1, [r1] - mov r0, #4 - bl FreeToHeapExplicit - add r4, #0xf4 - ldr r1, [r4] - mov r0, #4 - bl FreeToHeapExplicit - pop {r4, pc} - - thumb_func_start MOD05_021F21CC -MOD05_021F21CC: ; 0x021F21CC - push {r4, r5, r6, lr} - add r2, r0, #0 - add r2, #0xf4 - ldr r4, [r2] - ldr r2, [r0, #4] - add r6, r4, #0 - add r5, r2, #0 -_021F21DA: - ldr r3, [r6] - cmp r3, r1 - bne _021F21E4 - ldr r0, [r6, #4] - pop {r4, r5, r6, pc} -_021F21E4: - add r6, #8 - sub r5, r5, #1 - bne _021F21DA - ldr r3, _021F2208 ; =0x0000FFFF -_021F21EC: - ldr r5, [r4] - cmp r5, r3 - bne _021F21FE - str r1, [r4] - ldr r2, [r4, #4] - bl MOD05_021F2ED0 - ldr r0, [r4, #4] - pop {r4, r5, r6, pc} -_021F21FE: - add r4, #8 - sub r2, r2, #1 - bne _021F21EC - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F2208: .word 0x0000FFFF - - thumb_func_start MOD05_021F220C -MOD05_021F220C: ; 0x021F220C - push {r3, r4, r5, lr} - add r5, r1, #0 - add r4, r2, #0 - bl FUN_020583A0 - add r1, r0, #0 - add r1, #0xf4 - ldr r2, [r1] - ldr r1, [r0, #4] -_021F221E: - ldr r0, [r2] - cmp r0, r5 - bne _021F2234 - ldr r3, [r2, #4] - mov r2, #5 -_021F2228: - ldmia r3!, {r0, r1} - stmia r4!, {r0, r1} - sub r2, r2, #1 - bne _021F2228 - mov r0, #1 - pop {r3, r4, r5, pc} -_021F2234: - add r2, #8 - sub r1, r1, #1 - bne _021F221E - mov r0, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2240 -MOD05_021F2240: ; 0x021F2240 - add r2, r0, #0 - add r2, #0xf4 - ldr r3, [r2] - ldr r2, [r0, #4] -_021F2248: - ldr r0, [r3] - cmp r0, r1 - bne _021F2254 - ldr r0, _021F225C ; =0x0000FFFF - str r0, [r3] - bx lr -_021F2254: - add r3, #8 - sub r2, r2, #1 - bne _021F2248 - bx lr - .balign 4, 0 -_021F225C: .word 0x0000FFFF - - thumb_func_start MOD05_021F2260 -MOD05_021F2260: ; 0x021F2260 - push {r3, r4} - add r1, r0, #0 - add r1, #0xf4 - ldr r4, [r1] - ldr r1, _021F2280 ; =0x0000FFFF - ldr r3, [r0, #4] - add r0, r1, #0 -_021F226E: - ldr r2, [r4] - cmp r2, r0 - beq _021F2276 - str r1, [r4] -_021F2276: - add r4, #8 - sub r3, r3, #1 - bne _021F226E - pop {r3, r4} - bx lr - .balign 4, 0 -_021F2280: .word 0x0000FFFF - - thumb_func_start MOD05_021F2284 -MOD05_021F2284: ; 0x021F2284 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - add r7, r2, #0 - bl FUN_02058368 - add r4, r0, #0 - add r0, r5, #0 - bl FUN_020583BC - str r0, [sp] -_021F229A: - ldr r0, [sp] - cmp r0, r6 - beq _021F22CE - bl FUN_02058830 - cmp r0, #1 - bne _021F22CE - ldr r0, [sp] - bl FUN_02058458 - add r5, r0, #0 - bl FUN_0205C334 - cmp r0, #1 - bne _021F22C0 - ldr r0, [sp] - bl FUN_0205C340 - add r5, r0, #0 -_021F22C0: - ldr r0, _021F22DC ; =0x0000FFFF - cmp r5, r0 - beq _021F22CE - cmp r5, r7 - bne _021F22CE - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F22CE: - add r0, sp, #0 - bl FUN_020583D4 - sub r4, r4, #1 - bne _021F229A - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F22DC: .word 0x0000FFFF - - thumb_func_start MOD05_021F22E0 -MOD05_021F22E0: ; 0x021F22E0 - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - add r5, r0, #0 - add r6, r2, #0 - add r7, r3, #0 - mov r0, #4 - mov r1, #0x40 - lsl r2, r4, #0xc - add r3, r4, #0 - bl MOD05_021F5990 - add r1, r5, #0 - add r1, #0xf8 - str r0, [r1] - add r0, r5, #0 - bl MOD05_021F2614 - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F2D80 - add r0, r5, #0 - sub r1, r4, r6 - bl MOD05_021F2D88 - mov r0, #4 - mov r1, #0x41 - lsl r2, r7, #7 - add r3, r7, #0 - bl MOD05_021F5990 - add r1, r5, #0 - add r1, #0xfc - str r0, [r1] - add r0, r5, #0 - bl MOD05_021F2750 - ldr r1, [sp, #0x18] - add r0, r5, #0 - bl MOD05_021F2D90 - ldr r1, [sp, #0x18] - add r0, r5, #0 - sub r1, r7, r1 - bl MOD05_021F2D98 - ldr r0, [sp, #0x1c] - mov r1, #4 - bl FUN_02020E90 - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D64 - add r0, r5, #0 - bl MOD05_021F288C - ldr r1, [sp, #0x20] - add r0, r5, #0 - bl MOD05_021F2DA0 - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x20] - add r0, r5, #0 - sub r1, r2, r1 - bl MOD05_021F2DA8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F2368 -MOD05_021F2368: ; 0x021F2368 - push {r4, lr} - add r4, r0, #0 - add r0, #0xf8 - ldr r0, [r0] - bl MOD05_021F59EC - add r0, r4, #0 - add r0, #0xfc - ldr r0, [r0] - bl MOD05_021F59EC - add r0, r4, #0 - bl MOD05_021F2D6C - bl FUN_02020ED4 - pop {r4, pc} - .balign 4, 0 -_021F238C: - ldr r3, [r2] - cmp r3, r0 - bne _021F2396 - add r0, r2, #0 - bx lr -_021F2396: - add r2, #8 - ldr r3, [r2] - cmp r3, r1 - bne _021F238C - mov r0, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F23A4 -MOD05_021F23A4: ; 0x021F23A4 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r4, r2, #0 - add r5, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - add r7, r3, #0 - bl MOD05_021F5AA4 - cmp r0, #1 - bne _021F23BE - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F23BE: - ldr r2, [sp, #0x18] - add r0, r4, #0 - add r1, r7, #0 - bl _021F238C - add r7, r0, #0 - bne _021F23D0 - bl GF_AssertFail -_021F23D0: - mov r0, #0x41 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_020583F4 - add r2, r0, #0 - mov r0, #0 - str r0, [sp] - ldr r3, [r7, #4] - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021F5AE4 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F23F0 -MOD05_021F23F0: ; 0x021F23F0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r0, #0xf0 - add r4, r2, #0 - add r6, r1, #0 - ldr r0, [r0] - add r1, r4, #0 - add r7, r3, #0 - bl FUN_02020EF8 - cmp r0, #0 - bne _021F240C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F240C: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F3084 - cmp r0, #0 - beq _021F241C - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F241C: - ldr r1, _021F2448 ; =0x0000FFFF - add r0, r4, #0 - add r2, r7, #0 - bl _021F238C - add r2, r0, #0 - bne _021F242E - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_021F242E: - ldr r2, [r2, #4] - add r0, r5, #0 - add r1, r4, #0 - add r3, r6, #0 - bl MOD05_021F2FD0 - cmp r0, #1 - bne _021F2442 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F2442: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F2448: .word 0x0000FFFF - - thumb_func_start MOD05_021F244C -MOD05_021F244C: ; 0x021F244C - push {r3, lr} - ldr r3, _021F245C ; =UNK05_021FA0AC - add r2, r1, #0 - mov r1, #0 - bl MOD05_021F23F0 - pop {r3, pc} - nop -_021F245C: .word UNK05_021FA0AC - - thumb_func_start MOD05_021F2460 -MOD05_021F2460: ; 0x021F2460 - push {r3, lr} - ldr r3, _021F2470 ; =UNK05_021FA0AC - add r2, r1, #0 - mov r1, #1 - bl MOD05_021F23F0 - pop {r3, pc} - nop -_021F2470: .word UNK05_021FA0AC - - thumb_func_start MOD05_021F2474 -MOD05_021F2474: ; 0x021F2474 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r1, [r4] - ldr r0, _021F2494 ; =0x0000FFFF - cmp r1, r0 - beq _021F2492 - add r6, r0, #0 -_021F2484: - add r0, r5, #0 - bl MOD05_021F244C - add r4, r4, #4 - ldr r1, [r4] - cmp r1, r6 - bne _021F2484 -_021F2492: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F2494: .word 0x0000FFFF - - thumb_func_start MOD05_021F2498 -MOD05_021F2498: ; 0x021F2498 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D54 - ldr r0, _021F24C0 ; =UNK05_021F9094 - add r1, r5, #0 - str r0, [sp] - add r1, #0xf8 - ldr r1, [r1] - ldr r3, _021F24C4 ; =0x0000FFFF - add r0, r5, #0 - add r2, r4, #0 - bl MOD05_021F23A4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2628 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F24C0: .word UNK05_021F9094 -_021F24C4: .word 0x0000FFFF - - thumb_func_start MOD05_021F24C8 -MOD05_021F24C8: ; 0x021F24C8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D54 - ldr r0, _021F24F0 ; =UNK05_021F9094 - add r1, r5, #0 - str r0, [sp] - add r1, #0xf8 - ldr r1, [r1] - ldr r3, _021F24F4 ; =0x0000FFFF - add r0, r5, #0 - add r2, r4, #0 - bl MOD05_021F23A4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2670 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F24F0: .word UNK05_021F9094 -_021F24F4: .word 0x0000FFFF - - thumb_func_start MOD05_021F24F8 -MOD05_021F24F8: ; 0x021F24F8 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r1, [r4] - ldr r0, _021F2518 ; =0x0000FFFF - cmp r1, r0 - beq _021F2516 - add r6, r0, #0 -_021F2508: - add r0, r5, #0 - bl MOD05_021F2498 - add r4, r4, #4 - ldr r1, [r4] - cmp r1, r6 - bne _021F2508 -_021F2516: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F2518: .word 0x0000FFFF - - thumb_func_start MOD05_021F251C -MOD05_021F251C: ; 0x021F251C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D5C - ldr r0, _021F2544 ; =UNK05_021F90E4 - add r1, r5, #0 - str r0, [sp] - add r1, #0xfc - ldr r1, [r1] - ldr r3, _021F2548 ; =0x0000FFFF - add r0, r5, #0 - add r2, r4, #0 - bl MOD05_021F23A4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2764 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F2544: .word UNK05_021F90E4 -_021F2548: .word 0x0000FFFF - - thumb_func_start MOD05_021F254C -MOD05_021F254C: ; 0x021F254C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D5C - ldr r0, _021F2574 ; =UNK05_021F90E4 - add r1, r5, #0 - str r0, [sp] - add r1, #0xfc - ldr r1, [r1] - ldr r3, _021F2578 ; =0x0000FFFF - add r0, r5, #0 - add r2, r4, #0 - bl MOD05_021F23A4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F27AC - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F2574: .word UNK05_021F90E4 -_021F2578: .word 0x0000FFFF - - thumb_func_start MOD05_021F257C -MOD05_021F257C: ; 0x021F257C - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r1, [r4] - ldr r0, _021F259C ; =0x0000FFFF - cmp r1, r0 - beq _021F259A - add r6, r0, #0 -_021F258C: - add r0, r5, #0 - bl MOD05_021F251C - add r4, r4, #4 - ldr r1, [r4] - cmp r1, r6 - bne _021F258C -_021F259A: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F259C: .word 0x0000FFFF - - thumb_func_start MOD05_021F25A0 -MOD05_021F25A0: ; 0x021F25A0 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r2, #0 - add r6, r3, #0 - bl MOD05_021F2474 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F24F8 - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F257C - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F25C0: - stmia r0!, {r1} - sub r2, r2, #1 - bne _021F25C0 - bx lr - - thumb_func_start MOD05_021F25C8 -MOD05_021F25C8: ; 0x021F25C8 - push {r3, r4} -_021F25CA: - ldr r4, [r0] - cmp r4, r2 - bne _021F25D8 - str r1, [r0] - mov r0, #1 - pop {r3, r4} - bx lr -_021F25D8: - add r0, r0, #4 - sub r3, r3, #1 - bne _021F25CA - mov r0, #0 - pop {r3, r4} - bx lr -_021F25E4: - ldr r3, [r0] - cmp r3, r1 - bne _021F25EE - mov r0, #1 - bx lr -_021F25EE: - add r0, r0, #4 - sub r2, r2, #1 - bne _021F25E4 - mov r0, #0 - bx lr - - thumb_func_start MOD05_021F25F8 -MOD05_021F25F8: ; 0x021F25F8 - push {r3, r4} -_021F25FA: - ldr r4, [r0] - cmp r4, r1 - bne _021F2608 - str r2, [r0] - mov r0, #1 - pop {r3, r4} - bx lr -_021F2608: - add r0, r0, #4 - sub r3, r3, #1 - bne _021F25FA - mov r0, #0 - pop {r3, r4} - bx lr - - thumb_func_start MOD05_021F2614 -MOD05_021F2614: ; 0x021F2614 - push {r3, lr} - bl MOD05_021F2D78 - ldr r1, _021F2624 ; =0x0000FFFF - mov r2, #8 - bl _021F25C0 - pop {r3, pc} - .balign 4, 0 -_021F2624: .word 0x0000FFFF - - thumb_func_start MOD05_021F2628 -MOD05_021F2628: ; 0x021F2628 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D84 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D78 - ldr r2, _021F2650 ; =0x0000FFFF - add r1, r4, #0 - add r3, r6, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F264C - bl GF_AssertFail -_021F264C: - pop {r4, r5, r6, pc} - nop -_021F2650: .word 0x0000FFFF - - thumb_func_start MOD05_021F2654 -MOD05_021F2654: ; 0x021F2654 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D84 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D78 - add r1, r4, #0 - add r2, r6, #0 - bl _021F25E4 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F2670 -MOD05_021F2670: ; 0x021F2670 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D78 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D84 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D8C - add r3, r0, #0 - ldr r2, _021F26A0 ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F269E - bl GF_AssertFail -_021F269E: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F26A0: .word 0x0000FFFF - - thumb_func_start MOD05_021F26A4 -MOD05_021F26A4: ; 0x021F26A4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D78 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D84 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D8C - add r2, r0, #0 - add r0, r6, r4 - add r1, r7, #0 - bl _021F25E4 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F26CC -MOD05_021F26CC: ; 0x021F26CC - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D78 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D84 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D8C - add r3, r0, #0 - ldr r2, _021F26F4 ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25F8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F26F4: .word 0x0000FFFF - - thumb_func_start MOD05_021F26F8 -MOD05_021F26F8: ; 0x021F26F8 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r7, r0, #0 - add r0, r6, #0 - bl MOD05_021F2D54 - add r0, r6, #0 - bl MOD05_021F2D78 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021F2D84 - lsl r0, r0, #2 - add r5, r4, r0 - add r0, r6, #0 - bl MOD05_021F2D8C - add r4, r0, #0 -_021F271E: - ldr r1, [r5] - ldr r0, _021F274C ; =0x0000FFFF - cmp r1, r0 - beq _021F2742 - add r0, r7, #0 - mov r2, #0 - bl MOD05_021F2B70 - cmp r0, #0 - bne _021F2742 - add r0, r6, #0 - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [r5] - bl MOD05_021F5A74 - ldr r0, _021F274C ; =0x0000FFFF - str r0, [r5] -_021F2742: - add r5, r5, #4 - sub r4, r4, #1 - bne _021F271E - pop {r3, r4, r5, r6, r7, pc} - nop -_021F274C: .word 0x0000FFFF - - thumb_func_start MOD05_021F2750 -MOD05_021F2750: ; 0x021F2750 - push {r3, lr} - bl MOD05_021F2D7C - ldr r1, _021F2760 ; =0x0000FFFF - mov r2, #8 - bl _021F25C0 - pop {r3, pc} - .balign 4, 0 -_021F2760: .word 0x0000FFFF - - thumb_func_start MOD05_021F2764 -MOD05_021F2764: ; 0x021F2764 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D94 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D7C - ldr r2, _021F278C ; =0x0000FFFF - add r1, r4, #0 - add r3, r6, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F2788 - bl GF_AssertFail -_021F2788: - pop {r4, r5, r6, pc} - nop -_021F278C: .word 0x0000FFFF - - thumb_func_start MOD05_021F2790 -MOD05_021F2790: ; 0x021F2790 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2D94 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D7C - add r1, r4, #0 - add r2, r6, #0 - bl _021F25E4 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F27AC -MOD05_021F27AC: ; 0x021F27AC - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D7C - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D94 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D9C - add r3, r0, #0 - ldr r2, _021F27DC ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F27DA - bl GF_AssertFail -_021F27DA: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F27DC: .word 0x0000FFFF - - thumb_func_start MOD05_021F27E0 -MOD05_021F27E0: ; 0x021F27E0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D7C - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D94 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D9C - add r2, r0, #0 - add r0, r6, r4 - add r1, r7, #0 - bl _021F25E4 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2808 -MOD05_021F2808: ; 0x021F2808 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D7C - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D94 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2D9C - add r3, r0, #0 - ldr r2, _021F2830 ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25F8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F2830: .word 0x0000FFFF - - thumb_func_start MOD05_021F2834 -MOD05_021F2834: ; 0x021F2834 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r7, r0, #0 - add r0, r6, #0 - bl MOD05_021F2D5C - add r0, r6, #0 - bl MOD05_021F2D7C - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021F2D94 - lsl r0, r0, #2 - add r5, r4, r0 - add r0, r6, #0 - bl MOD05_021F2D9C - add r4, r0, #0 -_021F285A: - ldr r1, [r5] - ldr r0, _021F2888 ; =0x0000FFFF - cmp r1, r0 - beq _021F287E - add r0, r7, #0 - mov r2, #0 - bl MOD05_021F2BF8 - cmp r0, #0 - bne _021F287E - add r0, r6, #0 - add r0, #0xfc - ldr r0, [r0] - ldr r1, [r5] - bl MOD05_021F5A74 - ldr r0, _021F2888 ; =0x0000FFFF - str r0, [r5] -_021F287E: - add r5, r5, #4 - sub r4, r4, #1 - bne _021F285A - pop {r3, r4, r5, r6, r7, pc} - nop -_021F2888: .word 0x0000FFFF - - thumb_func_start MOD05_021F288C -MOD05_021F288C: ; 0x021F288C - push {r3, lr} - bl MOD05_021F2D74 - ldr r1, _021F289C ; =0x0000FFFF - mov r2, #0x20 - bl _021F25C0 - pop {r3, pc} - .balign 4, 0 -_021F289C: .word 0x0000FFFF - - thumb_func_start MOD05_021F28A0 -MOD05_021F28A0: ; 0x021F28A0 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2DA4 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D74 - ldr r2, _021F28C8 ; =0x0000FFFF - add r1, r4, #0 - add r3, r6, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F28C4 - bl GF_AssertFail -_021F28C4: - pop {r4, r5, r6, pc} - nop -_021F28C8: .word 0x0000FFFF - - thumb_func_start MOD05_021F28CC -MOD05_021F28CC: ; 0x021F28CC - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2DA4 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D74 - add r1, r4, #0 - add r2, r6, #0 - bl _021F25E4 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F28E8 -MOD05_021F28E8: ; 0x021F28E8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F28CC - cmp r0, #1 - bne _021F28FA - mov r0, #1 - pop {r3, r4, r5, pc} -_021F28FA: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F29E0 - cmp r0, #1 - bne _021F290A - mov r0, #2 - pop {r3, r4, r5, pc} -_021F290A: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F3084 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2914 -MOD05_021F2914: ; 0x021F2914 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D74 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2DA4 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2DAC - add r3, r0, #0 - ldr r2, _021F2944 ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25C8 - cmp r0, #0 - bne _021F2942 - bl GF_AssertFail -_021F2942: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F2944: .word 0x0000FFFF - - thumb_func_start MOD05_021F2948 -MOD05_021F2948: ; 0x021F2948 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D74 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2DA4 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2DAC - add r3, r0, #0 - ldr r2, _021F2970 ; =0x0000FFFF - add r0, r6, r4 - add r1, r7, #0 - bl MOD05_021F25F8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F2970: .word 0x0000FFFF - - thumb_func_start MOD05_021F2974 -MOD05_021F2974: ; 0x021F2974 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - str r0, [sp] - add r0, r6, #0 - bl MOD05_021F2D6C - str r0, [sp, #4] - add r0, r6, #0 - bl MOD05_021F2D74 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021F2DA4 - lsl r0, r0, #2 - add r5, r4, r0 - add r0, r6, #0 - bl MOD05_021F2DAC - add r7, r0, #0 -_021F299E: - ldr r4, [r5] - ldr r0, _021F29DC ; =0x0000FFFF - cmp r4, r0 - beq _021F29D0 - ldr r0, [sp] - add r1, r4, #0 - mov r2, #0 - bl MOD05_021F2B10 - cmp r0, #0 - bne _021F29D0 - ldr r0, [sp, #4] - add r1, r4, #0 - bl FUN_02020FF0 - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021F3050 - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021F3204 - ldr r0, _021F29DC ; =0x0000FFFF - str r0, [r5] -_021F29D0: - add r5, r5, #4 - sub r7, r7, #1 - bne _021F299E - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F29DC: .word 0x0000FFFF - - thumb_func_start MOD05_021F29E0 -MOD05_021F29E0: ; 0x021F29E0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - bl MOD05_021F2D74 - add r6, r0, #0 - add r0, r5, #0 - bl MOD05_021F2DA4 - lsl r4, r0, #2 - add r0, r5, #0 - bl MOD05_021F2DAC - add r2, r0, #0 - add r0, r6, r4 - add r1, r7, #0 - bl _021F25E4 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2A08 -MOD05_021F2A08: ; 0x021F2A08 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F28CC - cmp r0, #1 - bne _021F2A1A - mov r0, #0 - pop {r3, r4, r5, pc} -_021F2A1A: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F29E0 - cmp r0, #1 - bne _021F2A2A - mov r0, #1 - pop {r3, r4, r5, pc} -_021F2A2A: - mov r0, #2 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2A30 -MOD05_021F2A30: ; 0x021F2A30 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2654 - cmp r0, #1 - bne _021F2A42 - mov r0, #0 - pop {r3, r4, r5, pc} -_021F2A42: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F26A4 - cmp r0, #1 - bne _021F2A52 - mov r0, #1 - pop {r3, r4, r5, pc} -_021F2A52: - mov r0, #2 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2A58 -MOD05_021F2A58: ; 0x021F2A58 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2790 - cmp r0, #1 - bne _021F2A6A - mov r0, #0 - pop {r3, r4, r5, pc} -_021F2A6A: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F27E0 - cmp r0, #1 - bne _021F2A7A - mov r0, #1 - pop {r3, r4, r5, pc} -_021F2A7A: - mov r0, #2 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2A80 -MOD05_021F2A80: ; 0x021F2A80 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F28E8 - cmp r0, #0 - bne _021F2A96 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2460 -_021F2A96: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2A98 -MOD05_021F2A98: ; 0x021F2A98 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2A30 - cmp r0, #2 - bne _021F2AAE - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F24C8 -_021F2AAE: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2AB0 -MOD05_021F2AB0: ; 0x021F2AB0 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2A58 - cmp r0, #2 - bne _021F2AC6 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F254C -_021F2AC6: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2AC8 -MOD05_021F2AC8: ; 0x021F2AC8 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - add r0, r4, #0 - bl MOD05_021F2DE8 - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F2A98 - add r0, r4, #0 - bl MOD05_021F2DF4 - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F2AB0 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2A80 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2AF4 -MOD05_021F2AF4: ; 0x021F2AF4 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F26F8 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2834 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2974 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2B10 -MOD05_021F2B10: ; 0x021F2B10 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #0 - add r5, r2, #0 - str r1, [sp, #4] - str r1, [sp] - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - add r7, r0, #0 - bl FUN_020580F4 - cmp r0, #1 - bne _021F2B6A -_021F2B2E: - cmp r5, #0 - beq _021F2B38 - ldr r0, [sp] - cmp r5, r0 - beq _021F2B5A -_021F2B38: - ldr r0, [sp] - bl FUN_02058458 - add r4, r0, #0 - bl FUN_0205C334 - cmp r0, #1 - bne _021F2B50 - ldr r0, [sp] - bl FUN_0205C340 - add r4, r0, #0 -_021F2B50: - cmp r4, r6 - bne _021F2B5A - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F2B5A: - add r0, r7, #0 - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - bl FUN_020580F4 - cmp r0, #1 - beq _021F2B2E -_021F2B6A: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F2B70 -MOD05_021F2B70: ; 0x021F2B70 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #0 - add r5, r2, #0 - str r1, [sp, #4] - str r1, [sp] - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - add r7, r0, #0 - bl FUN_020580F4 - cmp r0, #1 - bne _021F2BEE -_021F2B8E: - cmp r5, #0 - beq _021F2B98 - ldr r0, [sp] - cmp r5, r0 - beq _021F2BDE -_021F2B98: - ldr r0, [sp] - bl FUN_02058458 - add r4, r0, #0 - ldr r0, _021F2BF4 ; =0x0000FFFF - cmp r4, r0 - beq _021F2BDE - ldr r0, [sp] - bl MOD05_021F1DC8 - ldr r0, [r0, #4] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - cmp r0, #1 - bne _021F2BDE - add r0, r4, #0 - bl FUN_0205C334 - cmp r0, #1 - bne _021F2BC8 - ldr r0, [sp] - bl FUN_0205C340 - add r4, r0, #0 -_021F2BC8: - ldr r0, _021F2BF4 ; =0x0000FFFF - cmp r4, r0 - beq _021F2BDE - add r0, r4, #0 - bl MOD05_021F2DE8 - cmp r6, r0 - bne _021F2BDE - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F2BDE: - add r0, r7, #0 - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - bl FUN_020580F4 - cmp r0, #1 - beq _021F2B8E -_021F2BEE: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F2BF4: .word 0x0000FFFF - - thumb_func_start MOD05_021F2BF8 -MOD05_021F2BF8: ; 0x021F2BF8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #0 - add r5, r2, #0 - str r1, [sp, #4] - str r1, [sp] - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - add r7, r0, #0 - bl FUN_020580F4 - cmp r0, #1 - bne _021F2C74 -_021F2C16: - cmp r5, #0 - beq _021F2C20 - ldr r0, [sp] - cmp r0, r5 - beq _021F2C64 -_021F2C20: - ldr r0, _021F2C7C ; =0x0000FFFF - cmp r4, r0 - beq _021F2C64 - ldr r0, [sp] - bl MOD05_021F1DC8 - ldr r0, [r0, #4] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - cmp r0, #1 - bne _021F2C64 - ldr r0, [sp] - bl FUN_02058458 - add r4, r0, #0 - bl FUN_0205C334 - cmp r0, #1 - bne _021F2C4E - ldr r0, [sp] - bl FUN_0205C340 - add r4, r0, #0 -_021F2C4E: - ldr r0, _021F2C7C ; =0x0000FFFF - cmp r4, r0 - beq _021F2C64 - add r0, r4, #0 - bl MOD05_021F2DF4 - cmp r6, r0 - bne _021F2C64 - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F2C64: - add r0, r7, #0 - add r1, sp, #0 - add r2, sp, #4 - mov r3, #1 - bl FUN_020580F4 - cmp r0, #1 - beq _021F2C16 -_021F2C74: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F2C7C: .word 0x0000FFFF - - thumb_func_start MOD05_021F2C80 -MOD05_021F2C80: ; 0x021F2C80 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r1, #0 - add r6, r0, #0 - add r7, r2, #0 - bl FUN_020583A0 - add r4, r0, #0 - add r0, r5, #0 - bl MOD05_021F2DE8 - str r0, [sp] - ldr r1, [sp] - add r0, r4, #0 - bl MOD05_021F2A30 - cmp r0, #1 - bne _021F2CC6 - ldr r1, [sp] - add r0, r6, #0 - add r2, r7, #0 - bl MOD05_021F2B70 - cmp r0, #0 - bne _021F2CC6 - add r0, r4, #0 - add r0, #0xf8 - ldr r0, [r0] - ldr r1, [sp] - bl MOD05_021F5A74 - ldr r1, [sp] - add r0, r4, #0 - bl MOD05_021F26CC -_021F2CC6: - add r0, r5, #0 - bl MOD05_021F2DF4 - str r0, [sp, #4] - ldr r1, [sp, #4] - add r0, r4, #0 - bl MOD05_021F2A58 - cmp r0, #1 - bne _021F2CFC - ldr r1, [sp, #4] - add r0, r6, #0 - add r2, r7, #0 - bl MOD05_021F2BF8 - cmp r0, #0 - bne _021F2CFC - add r0, r4, #0 - add r0, #0xfc - ldr r0, [r0] - ldr r1, [sp, #4] - bl MOD05_021F5A74 - ldr r1, [sp, #4] - add r0, r4, #0 - bl MOD05_021F2808 -_021F2CFC: - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F2A08 - cmp r0, #1 - bne _021F2D3A - add r0, r6, #0 - add r1, r5, #0 - add r2, r7, #0 - bl MOD05_021F2B10 - cmp r0, #0 - bne _021F2D3A - add r0, r4, #0 - bl MOD05_021F2D6C - add r1, r5, #0 - bl FUN_02020FF0 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F2948 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F3050 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F3204 -_021F2D3A: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2D40 -MOD05_021F2D40: ; 0x021F2D40 - add r0, #0xe0 - str r1, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D48 -MOD05_021F2D48: ; 0x021F2D48 - add r0, #0xe0 - ldr r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D50 -MOD05_021F2D50: ; 0x021F2D50 - str r1, [r0, #4] - bx lr - - thumb_func_start MOD05_021F2D54 -MOD05_021F2D54: ; 0x021F2D54 - add r0, #0xe8 - ldr r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D5C -MOD05_021F2D5C: ; 0x021F2D5C - add r0, #0xec - ldr r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D64 -MOD05_021F2D64: ; 0x021F2D64 - add r0, #0xf0 - str r1, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D6C -MOD05_021F2D6C: ; 0x021F2D6C - add r0, #0xf0 - ldr r0, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F2D74 -MOD05_021F2D74: ; 0x021F2D74 - add r0, #0x60 - bx lr - - thumb_func_start MOD05_021F2D78 -MOD05_021F2D78: ; 0x021F2D78 - add r0, #0x20 - bx lr - - thumb_func_start MOD05_021F2D7C -MOD05_021F2D7C: ; 0x021F2D7C - add r0, #0x40 - bx lr - - thumb_func_start MOD05_021F2D80 -MOD05_021F2D80: ; 0x021F2D80 - str r1, [r0, #8] - bx lr - - thumb_func_start MOD05_021F2D84 -MOD05_021F2D84: ; 0x021F2D84 - ldr r0, [r0, #8] - bx lr - - thumb_func_start MOD05_021F2D88 -MOD05_021F2D88: ; 0x021F2D88 - str r1, [r0, #0xc] - bx lr - - thumb_func_start MOD05_021F2D8C -MOD05_021F2D8C: ; 0x021F2D8C - ldr r0, [r0, #0xc] - bx lr - - thumb_func_start MOD05_021F2D90 -MOD05_021F2D90: ; 0x021F2D90 - str r1, [r0, #0x10] - bx lr - - thumb_func_start MOD05_021F2D94 -MOD05_021F2D94: ; 0x021F2D94 - ldr r0, [r0, #0x10] - bx lr - - thumb_func_start MOD05_021F2D98 -MOD05_021F2D98: ; 0x021F2D98 - str r1, [r0, #0x14] - bx lr - - thumb_func_start MOD05_021F2D9C -MOD05_021F2D9C: ; 0x021F2D9C - ldr r0, [r0, #0x14] - bx lr - - thumb_func_start MOD05_021F2DA0 -MOD05_021F2DA0: ; 0x021F2DA0 - str r1, [r0, #0x18] - bx lr - - thumb_func_start MOD05_021F2DA4 -MOD05_021F2DA4: ; 0x021F2DA4 - ldr r0, [r0, #0x18] - bx lr - - thumb_func_start MOD05_021F2DA8 -MOD05_021F2DA8: ; 0x021F2DA8 - str r1, [r0, #0x1c] - bx lr - - thumb_func_start MOD05_021F2DAC -MOD05_021F2DAC: ; 0x021F2DAC - ldr r0, [r0, #0x1c] - bx lr - - thumb_func_start MOD05_021F2DB0 -MOD05_021F2DB0: ; 0x021F2DB0 - mov r3, #0x41 - lsl r3, r3, #2 - ldr r0, [r0, r3] - ldr r3, _021F2DBC ; =MOD05_021F1E2C - bx r3 - nop -_021F2DBC: .word MOD05_021F1E2C - - thumb_func_start MOD05_021F2DC0 -MOD05_021F2DC0: ; 0x021F2DC0 - push {r3, lr} - ldr r3, _021F2DE0 ; =UNK05_021FAC6C - ldr r1, _021F2DE4 ; =0x0000FFFF -_021F2DC6: - ldr r2, [r3] - cmp r2, r0 - bne _021F2DD0 - add r0, r3, #0 - pop {r3, pc} -_021F2DD0: - add r3, #0x10 - ldr r2, [r3] - cmp r2, r1 - bne _021F2DC6 - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 -_021F2DE0: .word UNK05_021FAC6C -_021F2DE4: .word 0x0000FFFF - - thumb_func_start MOD05_021F2DE8 -MOD05_021F2DE8: ; 0x021F2DE8 - push {r3, lr} - bl MOD05_021F2DC0 - ldr r0, [r0, #4] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2DF4 -MOD05_021F2DF4: ; 0x021F2DF4 - push {r3, lr} - bl MOD05_021F2DC0 - ldr r0, [r0, #8] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2E00 -MOD05_021F2E00: ; 0x021F2E00 - push {r3, lr} - bl MOD05_021F2DC0 - ldr r0, [r0, #0xc] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2E0C -MOD05_021F2E0C: ; 0x021F2E0C - push {r3, lr} - cmp r1, #1 - bne _021F2E1C - mov r1, #1 - lsl r1, r1, #0x16 - bl FUN_02058410 - pop {r3, pc} -_021F2E1C: - mov r1, #1 - lsl r1, r1, #0x16 - bl FUN_02058418 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2E28 -MOD05_021F2E28: ; 0x021F2E28 - push {r3, lr} - mov r1, #1 - lsl r1, r1, #0x16 - bl FUN_02058424 - cmp r0, #0 - beq _021F2E3A - mov r0, #1 - pop {r3, pc} -_021F2E3A: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2E40 -MOD05_021F2E40: ; 0x021F2E40 - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r0, #0 - mov r0, #4 - add r4, r1, #0 - str r0, [sp, #4] - add r0, sp, #0 - str r4, [sp] - bl FUN_0201F1B4 - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021F2D40 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2D50 - add sp, #8 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F2E68 -MOD05_021F2E68: ; 0x021F2E68 - ldr r3, _021F2E6C ; =FUN_0201F23C - bx r3 - .balign 4, 0 -_021F2E6C: .word FUN_0201F23C - - thumb_func_start MOD05_021F2E70 -MOD05_021F2E70: ; 0x021F2E70 - push {r4, lr} - sub sp, #0x20 - str r0, [sp] - str r1, [sp, #4] - ldmia r2!, {r0, r1} - add r3, sp, #8 - stmia r3!, {r0, r1} - ldr r0, [r2] - add r2, sp, #0x14 - str r0, [r3] - ldr r3, _021F2ECC ; =0UNK05_021FC550 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - add r0, sp, #0 - bl FUN_0201F6E8 - add r4, r0, #0 - beq _021F2EC4 - mov r1, #0 - bl FUN_0201F80C - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F830 - add r0, r4, #0 - mov r1, #0 - bl FUN_0201F890 - add r0, r4, #0 - bl FUN_0201F8E0 - mov r1, #1 - bl NNS_G3dMdlSetMdlFogEnableFlagAll - add r0, r4, #0 - bl FUN_0201F8E0 - bl MOD05_021DB5EC -_021F2EC4: - add r0, r4, #0 - add sp, #0x20 - pop {r4, pc} - nop -_021F2ECC: .word UNK05_021FC550 - - thumb_func_start MOD05_021F2ED0 -MOD05_021F2ED0: ; 0x021F2ED0 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - add r0, r5, #0 - add r4, r2, #0 - bl MOD05_021F2DE8 - add r1, r0, #0 - add r0, r6, #0 - add r0, #0xf8 - ldr r0, [r0] - bl MOD05_021F5A90 - str r0, [r4] - add r0, r5, #0 - bl MOD05_021F2DF4 - add r1, r0, #0 - add r0, r6, #0 - add r0, #0xfc - ldr r0, [r0] - bl MOD05_021F5A90 - add r1, r4, #0 - add r1, #0xc - bl FUN_0202227C - add r0, r6, #0 - bl MOD05_021F2D6C - add r1, r5, #0 - bl FUN_02021050 - add r6, r0, #0 - bl FUN_020210AC - str r0, [r4, #4] - add r0, r6, #0 - bl FUN_020211AC - str r0, [r4, #0x1c] - add r0, r6, #0 - bl FUN_020211BC - str r0, [r4, #0x20] - add r0, r6, #0 - bl FUN_020211CC - str r0, [r4, #0x24] - add r0, r5, #0 - bl MOD05_021F2E00 - str r0, [r4, #8] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F2F3C -MOD05_021F2F3C: ; 0x021F2F3C - push {r3, lr} - bl FUN_02058578 - bl FUN_020583A0 - pop {r3, pc} - - thumb_func_start MOD05_021F2F48 -MOD05_021F2F48: ; 0x021F2F48 - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - add r1, sp, #0 - bl MOD05_021F1E64 - mov r0, #6 - ldr r1, [sp, #8] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp, #8] - add r0, r4, #0 - add r1, sp, #0 - bl FUN_0201F7C8 - mov r0, #0 - add sp, #0xc - pop {r3, r4, pc} - - thumb_func_start MOD05_021F2F6C -MOD05_021F2F6C: ; 0x021F2F6C - push {r4, r5, r6, lr} - mov r4, #1 - add r6, r1, #0 - lsl r1, r4, #9 - add r5, r0, #0 - bl FUN_0205842C - cmp r0, #1 - bne _021F2F80 - mov r4, #0 -_021F2F80: - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #1 - bne _021F2F9E - mov r1, #2 - add r0, r5, #0 - lsl r1, r1, #0xc - bl FUN_0205842C - cmp r0, #0 - bne _021F2F9E - mov r4, #0 -_021F2F9E: - lsl r1, r4, #0x18 - add r0, r6, #0 - lsr r1, r1, #0x18 - bl FUN_0201F80C - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F2FAC -MOD05_021F2FAC: ; 0x021F2FAC - lsl r1, r0, #2 - ldr r0, _021F2FB4 ; =UNK05_021FC55C - ldr r0, [r0, r1] - bx lr - .balign 4, 0 -_021F2FB4: .word UNK05_021FC55C - - thumb_func_start MOD05_021F2FB8 -MOD05_021F2FB8: ; 0x021F2FB8 - lsl r1, r0, #2 - ldr r0, _021F2FC0 ; =UNK05_021FC56C - ldr r0, [r0, r1] - bx lr - .balign 4, 0 -_021F2FC0: .word UNK05_021FC56C - - thumb_func_start MOD05_021F2FC4 -MOD05_021F2FC4: ; 0x021F2FC4 - lsl r1, r0, #2 - ldr r0, _021F2FCC ; =UNK05_021FC57C - ldr r0, [r0, r1] - bx lr - .balign 4, 0 -_021F2FCC: .word UNK05_021FC57C - - thumb_func_start MOD05_021F2FD0 -MOD05_021F2FD0: ; 0x021F2FD0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #1 - lsl r0, r0, #8 - ldr r4, [r5, r0] - mov r0, #4 - add r6, r1, #0 - ldrsh r1, [r4, r0] - mov r0, #2 - ldrsh r0, [r4, r0] - add r7, r2, #0 - str r3, [sp] - cmp r1, r0 - bge _021F2FFA - add r0, r5, #0 - add r0, #0xe0 - ldr r0, [r0] - bl FUN_0201F2C0 - cmp r0, #1 - bne _021F302C -_021F2FFA: - mov r2, #0 - ldrsh r3, [r4, r2] - ldr r0, [r4, #0xc] - cmp r3, #0 - ble _021F3024 -_021F3004: - ldr r1, [r0, #0xc] - cmp r1, #0 - bne _021F301C - add r5, #0xf0 - ldr r1, [r5] - str r1, [r0, #0xc] - ldr r1, [sp] - str r1, [r0, #8] - str r6, [r0, #4] - str r7, [r0] - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F301C: - add r2, r2, #1 - add r0, #0x10 - cmp r2, r3 - blt _021F3004 -_021F3024: - bl GF_AssertFail - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F302C: - add r0, r5, #0 - add r1, r7, #0 - mov r2, #0 - bl MOD05_021F2DB0 - add r2, r0, #0 - ldr r3, [sp] - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F317C - mov r0, #4 - ldrsh r0, [r4, r0] - add r0, r0, #1 - strh r0, [r4, #4] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3050 -MOD05_021F3050: ; 0x021F3050 - push {r3, r4} - mov r2, #1 - lsl r2, r2, #8 - ldr r0, [r0, r2] - mov r3, #0 - ldrsh r4, [r0, r3] - ldr r2, [r0, #0xc] - cmp r4, #0 - ble _021F307E -_021F3062: - ldr r0, [r2, #4] - cmp r0, r1 - bne _021F3076 - ldr r0, [r2, #0xc] - cmp r0, #0 - beq _021F3076 - mov r0, #0 - str r0, [r2, #0xc] - pop {r3, r4} - bx lr -_021F3076: - add r3, r3, #1 - add r2, #0x10 - cmp r3, r4 - blt _021F3062 -_021F307E: - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3084 -MOD05_021F3084: ; 0x021F3084 - push {r3, r4} - mov r2, #1 - lsl r2, r2, #8 - ldr r0, [r0, r2] - mov r3, #0 - ldrsh r4, [r0, r3] - ldr r2, [r0, #0xc] - cmp r4, #0 - ble _021F30BC -_021F3096: - ldr r0, [r2, #4] - cmp r0, r1 - bne _021F30B4 - ldr r0, [r2, #0xc] - cmp r0, #0 - beq _021F30B4 - ldr r0, [r2, #8] - cmp r0, #0 - bne _021F30AE - mov r0, #3 - pop {r3, r4} - bx lr -_021F30AE: - mov r0, #4 - pop {r3, r4} - bx lr -_021F30B4: - add r3, r3, #1 - add r2, #0x10 - cmp r3, r4 - blt _021F3096 -_021F30BC: - mov r0, #0 - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F30C4 -MOD05_021F30C4: ; 0x021F30C4 - push {r3, r4, r5, r6, r7, lr} - str r1, [sp] - mov r1, #1 - ldr r0, [sp] - lsl r1, r1, #8 - ldr r4, [r0, r1] - add r0, #0xe0 - ldr r0, [r0] - mov r6, #0 - ldr r5, [r4, #0xc] - bl FUN_0201F2C0 - cmp r0, #1 - beq _021F3178 - add r7, r4, #4 - b _021F310E -_021F30E4: - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021F310A - ldr r0, [sp] - ldr r1, [r5] - mov r2, #0 - bl MOD05_021F2DB0 - add r2, r0, #0 - ldr r0, [sp] - ldr r1, [r5, #4] - ldr r3, [r5, #8] - bl MOD05_021F317C - mov r0, #0 - str r0, [r5, #0xc] - ldrsh r0, [r7, r0] - add r0, r0, #1 - strh r0, [r7] -_021F310A: - add r5, #0x10 - add r6, r6, #1 -_021F310E: - mov r0, #4 - ldrsh r1, [r4, r0] - mov r0, #2 - ldrsh r0, [r4, r0] - cmp r1, r0 - bge _021F3122 - mov r0, #0 - ldrsh r0, [r4, r0] - cmp r6, r0 - blt _021F30E4 -_021F3122: - mov r6, #0 - ldrsh r0, [r4, r6] - ldr r7, [r4, #0xc] - sub r1, r0, #1 - cmp r1, #0 - ble _021F3174 - add r5, r7, #0 -_021F3130: - ldr r1, [r5, #0xc] - cmp r1, #0 - bne _021F3166 - add r2, r6, #1 - cmp r2, r0 - bge _021F3166 - lsl r1, r2, #4 - add r3, r7, r1 -_021F3140: - ldr r1, [r3, #0xc] - cmp r1, #0 - beq _021F315E - lsl r0, r2, #4 - add r3, r7, r0 - mov ip, r3 - add r2, r5, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - mov r1, #0 - mov r0, ip - str r1, [r0, #0xc] - b _021F3166 -_021F315E: - add r2, r2, #1 - add r3, #0x10 - cmp r2, r0 - blt _021F3140 -_021F3166: - mov r0, #0 - ldrsh r0, [r4, r0] - add r6, r6, #1 - add r5, #0x10 - sub r1, r0, #1 - cmp r6, r1 - blt _021F3130 -_021F3174: - mov r0, #0 - strh r0, [r4, #4] -_021F3178: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F317C -MOD05_021F317C: ; 0x021F317C - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - mov r0, #4 - str r0, [sp] - add r0, r5, #0 - add r0, #0xf0 - add r4, r1, #0 - add r6, r3, #0 - add r1, r2, #0 - ldr r0, [r0] - add r2, r4, #0 - mov r3, #1 - bl FUN_02020F54 - cmp r0, #0 - bne _021F31A2 - bl GF_AssertFail -_021F31A2: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F31C8 - cmp r6, #0 - bne _021F31BA - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F28A0 - add sp, #4 - pop {r3, r4, r5, r6, pc} -_021F31BA: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F2914 - add sp, #4 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F31C8 -MOD05_021F31C8: ; 0x021F31C8 - push {r4, r5, r6, lr} - mov r3, #1 - lsl r3, r3, #8 - ldr r3, [r0, r3] - mov r5, #1 - ldr r4, [r3, #0x10] - mov r2, #0 - strh r5, [r3, #6] - ldrsh r6, [r3, r2] - cmp r6, #0 - ble _021F31FC -_021F31DE: - ldr r5, [r4, #8] - cmp r5, #0 - bne _021F31F4 - add r0, #0xf0 - ldr r0, [r0] - str r0, [r4, #8] - str r1, [r4, #4] - mov r0, #0 - str r0, [r4] - strh r0, [r3, #6] - pop {r4, r5, r6, pc} -_021F31F4: - add r2, r2, #1 - add r4, #0xc - cmp r2, r6 - blt _021F31DE -_021F31FC: - bl GF_AssertFail - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3204 -MOD05_021F3204: ; 0x021F3204 - push {r4, r5} - mov r2, #1 - lsl r2, r2, #8 - ldr r2, [r0, r2] - mov r0, #1 - ldr r4, [r2, #0x10] - mov r3, #0 - strh r0, [r2, #6] - ldrsh r5, [r2, r3] - cmp r5, #0 - ble _021F3236 -_021F321A: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021F322E - ldr r0, [r4, #4] - cmp r0, r1 - bne _021F322E - mov r0, #0 - str r0, [r4, #8] - str r0, [r4] - b _021F3236 -_021F322E: - add r3, r3, #1 - add r4, #0xc - cmp r3, r5 - blt _021F321A -_021F3236: - mov r0, #0 - strh r0, [r2, #6] - pop {r4, r5} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3240 -MOD05_021F3240: ; 0x021F3240 - push {r3, r4, r5, r6, r7, lr} - mov r0, #1 - lsl r0, r0, #8 - ldr r6, [r1, r0] - ldrh r0, [r6, #6] - cmp r0, #1 - beq _021F327A - mov r4, #0 - ldrsh r0, [r6, r4] - ldr r5, [r6, #0x10] - cmp r0, #0 - ble _021F327A - mov r7, #1 -_021F325A: - ldr r0, [r5] - cmp r0, #0 - bne _021F326E - ldr r0, [r5, #8] - cmp r0, #0 - beq _021F326E - ldr r1, [r5, #4] - bl FUN_020210F0 - str r7, [r5] -_021F326E: - mov r0, #0 - ldrsh r0, [r6, r0] - add r4, r4, #1 - add r5, #0xc - cmp r4, r0 - blt _021F325A -_021F327A: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F327C -MOD05_021F327C: ; 0x021F327C - push {r3, r4, r5, r6, r7, lr} - mov r0, #1 - lsl r0, r0, #8 - ldr r6, [r1, r0] - mov r4, #0 - ldr r5, [r6, #0x10] - mov r0, #1 - strh r0, [r6, #6] - ldrsh r0, [r6, r4] - cmp r0, #0 - ble _021F32B6 - add r7, r4, #0 -_021F3294: - ldr r0, [r5] - cmp r0, #1 - bne _021F32AA - ldr r0, [r5, #8] - cmp r0, #0 - beq _021F32AA - ldr r1, [r5, #4] - bl FUN_02021158 - str r7, [r5] - str r7, [r5, #8] -_021F32AA: - mov r0, #0 - ldrsh r0, [r6, r0] - add r4, r4, #1 - add r5, #0xc - cmp r4, r0 - blt _021F3294 -_021F32B6: - mov r0, #0 - strh r0, [r6, #6] - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F32BC -MOD05_021F32BC: ; 0x021F32BC - push {r4, r5, r6, lr} - mov r5, #1 - lsl r5, r5, #8 - ldr r5, [r0, r5] - mov r4, #0 - ldrsh r6, [r5, r4] - ldr r0, [r5, #8] - cmp r6, #0 - ble _021F32F2 -_021F32CE: - ldr r5, [r0, #4] - cmp r5, #0 - bne _021F32EA - str r1, [r0, #4] - str r2, [r0, #8] - str r3, [r0] - ldr r0, [r0, #8] - mov r2, #0 - str r2, [r0] - add r0, r1, #0 - mov r1, #1 - bl MOD05_021F2E0C - pop {r4, r5, r6, pc} -_021F32EA: - add r4, r4, #1 - add r0, #0xc - cmp r4, r6 - blt _021F32CE -_021F32F2: - bl GF_AssertFail - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F32F8 -MOD05_021F32F8: ; 0x021F32F8 - push {r3, r4} - mov r2, #1 - lsl r2, r2, #8 - ldr r0, [r0, r2] - mov r3, #0 - ldrsh r4, [r0, r3] - ldr r2, [r0, #8] - cmp r4, #0 - ble _021F3322 -_021F330A: - ldr r0, [r2, #4] - cmp r0, r1 - bne _021F331A - mov r0, #0 - str r0, [r2, #4] - str r0, [r2, #8] - pop {r3, r4} - bx lr -_021F331A: - add r3, r3, #1 - add r2, #0xc - cmp r3, r4 - blt _021F330A -_021F3322: - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3328 -MOD05_021F3328: ; 0x021F3328 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r0, #1 - lsl r0, r0, #8 - ldr r6, [r7, r0] - mov r4, #0 - ldrsh r0, [r6, r4] - ldr r5, [r6, #8] - cmp r0, #0 - ble _021F3356 -_021F333C: - ldr r0, [r5, #4] - cmp r0, #0 - beq _021F334A - add r0, r7, #0 - add r1, r5, #0 - bl MOD05_021F3364 -_021F334A: - mov r0, #0 - ldrsh r0, [r6, r0] - add r4, r4, #1 - add r5, #0xc - cmp r4, r0 - blt _021F333C -_021F3356: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F3358 -MOD05_021F3358: ; 0x021F3358 - ldr r3, _021F3360 ; =MOD05_021F3328 - add r0, r1, #0 - bx r3 - nop -_021F3360: .word MOD05_021F3328 - - thumb_func_start MOD05_021F3364 -MOD05_021F3364: ; 0x021F3364 - push {r4, lr} - add r4, r1, #0 - ldr r1, [r4] - bl MOD05_021F2A08 - cmp r0, #2 - beq _021F33B2 - ldr r0, [r4, #4] - ldr r1, [r4] - bl MOD05_021F1FE0 - ldr r1, [r4, #8] - str r0, [r1] - ldr r0, [r4, #8] - ldr r0, [r0] - cmp r0, #0 - bne _021F338A - bl GF_AssertFail -_021F338A: - ldr r0, [r4, #4] - mov r1, #0 - bl MOD05_021F2E0C - mov r1, #2 - ldr r0, [r4, #4] - lsl r1, r1, #0x14 - bl FUN_0205842C - cmp r0, #1 - ldr r0, [r4, #4] - bne _021F33A8 - bl FUN_020586DC - b _021F33AC -_021F33A8: - bl FUN_020586A0 -_021F33AC: - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #8] -_021F33B2: - pop {r4, pc} - - thumb_func_start MOD05_021F33B4 -MOD05_021F33B4: ; 0x021F33B4 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r1, #0 - add r5, r0, #0 - mov r0, #0xc - add r7, r6, #0 - mul r7, r0 - lsl r0, r6, #4 - lsl r1, r7, #1 - str r0, [sp, #4] - add r0, r1, r0 - str r0, [sp, #8] - add r0, #0x28 - str r0, [sp, #8] - ldr r1, [sp, #8] - mov r0, #4 - str r2, [sp] - bl AllocFromHeap - add r4, r0, #0 - bne _021F33E2 - bl GF_AssertFail -_021F33E2: - ldr r2, [sp, #8] - add r0, r4, #0 - mov r1, #0 - bl memset - ldr r0, [sp] - strh r6, [r4] - strh r0, [r4, #2] - add r0, r4, #0 - add r0, #0x28 - str r0, [r4, #8] - add r1, r0, r7 - ldr r0, [sp, #4] - str r1, [r4, #0xc] - add r0, r1, r0 - str r0, [r4, #0x10] - mov r0, #1 - lsl r0, r0, #8 - str r4, [r5, r0] - add r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_0205839C - add r6, r0, #0 - ldr r0, _021F3448 ; =MOD05_021F30C4 - add r1, r5, #0 - add r2, r6, #1 - bl FUN_0200CA44 - str r0, [r4, #0x18] - ldr r0, _021F344C ; =MOD05_021F3358 - add r1, r5, #0 - add r2, r6, #2 - bl FUN_0200CA44 - str r0, [r4, #0x1c] - ldr r0, _021F3450 ; =MOD05_021F3240 - add r1, r5, #0 - mov r2, #0xff - bl FUN_0200CA60 - str r0, [r4, #0x20] - ldr r0, _021F3454 ; =MOD05_021F327C - add r1, r5, #0 - mov r2, #0xff - bl FUN_0200CA98 - str r0, [r4, #0x24] - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021F3448: .word MOD05_021F30C4 -_021F344C: .word MOD05_021F3358 -_021F3450: .word MOD05_021F3240 -_021F3454: .word MOD05_021F327C - - thumb_func_start MOD05_021F3458 -MOD05_021F3458: ; 0x021F3458 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #1 - lsl r0, r0, #8 - ldr r4, [r5, r0] - mov r0, #1 - strh r0, [r4, #6] - ldr r0, [r4, #0x18] - bl FUN_0200CAB4 - ldr r0, [r4, #0x1c] - bl FUN_0200CAB4 - ldr r0, [r4, #0x20] - bl FUN_0200CAB4 - ldr r0, [r4, #0x24] - bl FUN_0200CAB4 - add r0, r4, #0 - bl FreeToHeap - mov r0, #1 - mov r1, #0 - lsl r0, r0, #8 - str r1, [r5, r0] - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3490 -MOD05_021F3490: ; 0x021F3490 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD05_021F2E28 - cmp r0, #1 - beq _021F34A8 - add r0, r5, #0 - bl MOD05_021F0514 - cmp r0, #0 - bne _021F34D2 -_021F34A8: - add r0, r5, #0 - bl FUN_02058458 - add r6, r0, #0 - add r0, r5, #0 - bl FUN_02058578 - add r7, r0, #0 - add r0, r5, #0 - bl FUN_020576A8 - add r0, r7, #0 - add r1, r6, #0 - add r2, r5, #0 - bl MOD05_021F2C80 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_02057614 - pop {r3, r4, r5, r6, r7, pc} -_021F34D2: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F34DC - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F34DC -MOD05_021F34DC: ; 0x021F34DC - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r7, r0, #0 - str r1, [sp, #8] - bl MOD05_021F2F3C - str r0, [sp, #0x18] - bl MOD05_021F2D48 - str r0, [sp, #0x14] - add r0, r7, #0 - bl MOD05_021F0514 - str r0, [sp, #0x10] - mov r0, #4 - mov r1, #0x58 - bl AllocFromHeapAtEnd - mov r1, #0 - mov r2, #0x58 - add r5, r0, #0 - bl memset - ldr r0, [sp, #8] - str r0, [r5] - add r0, r7, #0 - str r7, [r5, #0x50] - bl FUN_02058458 - add r6, r0, #0 - bl MOD05_021F2DE8 - ldr r4, _021F36C4 ; =UNK05_021F9094 - ldr r2, _021F36C8 ; =0x0000FFFF -_021F3520: - ldr r1, [r4] - cmp r1, r0 - beq _021F352E - add r4, #8 - ldr r1, [r4] - cmp r1, r2 - bne _021F3520 -_021F352E: - ldr r0, _021F36C8 ; =0x0000FFFF - cmp r1, r0 - bne _021F3538 - bl GF_AssertFail -_021F3538: - ldr r0, [sp, #0x18] - ldr r1, [r4, #4] - mov r2, #0 - bl MOD05_021F2DB0 - str r0, [r5, #8] - add r0, r6, #0 - bl MOD05_021F2DF4 - ldr r4, _021F36CC ; =UNK05_021F90E4 - ldr r2, _021F36C8 ; =0x0000FFFF -_021F354E: - ldr r1, [r4] - cmp r1, r0 - beq _021F355C - add r4, #8 - ldr r1, [r4] - cmp r1, r2 - bne _021F354E -_021F355C: - ldr r0, _021F36C8 ; =0x0000FFFF - cmp r1, r0 - bne _021F3566 - bl GF_AssertFail -_021F3566: - ldr r0, [sp, #0x18] - ldr r1, [r4, #4] - mov r2, #0 - bl MOD05_021F2DB0 - add r1, r5, #0 - add r1, #0x14 - str r0, [r5, #0xc] - bl FUN_0202227C - ldr r4, _021F36D0 ; =UNK05_021FA0AC - ldr r0, _021F36C8 ; =0x0000FFFF -_021F357E: - ldr r1, [r4] - cmp r1, r6 - beq _021F358C - add r4, #8 - ldr r1, [r4] - cmp r1, r0 - bne _021F357E -_021F358C: - ldr r0, _021F36C8 ; =0x0000FFFF - cmp r1, r0 - bne _021F3596 - bl GF_AssertFail -_021F3596: - ldr r0, [sp, #0x18] - ldr r1, [r4, #4] - mov r2, #0 - bl MOD05_021F2DB0 - str r0, [r5, #0x10] - bl NNS_G3dGetTex - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021F2E00 - add r3, r0, #0 - add r0, r5, #0 - add r0, #0x14 - str r0, [sp] - add r0, r5, #0 - ldr r1, [r5, #8] - add r0, #0x28 - add r2, r4, #0 - bl FUN_0201F7A4 - ldr r0, [sp, #0x10] - bl FUN_0201F7E0 - add r3, r0, #0 - add r2, sp, #0x28 - ldmia r3!, {r0, r1} - add r4, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, r5, #0 - str r0, [r2] - ldr r0, [sp, #0x14] - add r1, #0x28 - add r2, r4, #0 - bl MOD05_021F2E70 - str r0, [r5, #0x24] - cmp r0, #0 - bne _021F35EC - bl GF_AssertFail -_021F35EC: - ldr r0, [sp, #0x10] - bl FUN_0201F844 - add r1, r0, #0 - ldr r0, [r5, #0x24] - bl FUN_0201F830 - ldr r0, [sp, #0x10] - bl FUN_0201F8C0 - add r1, r0, #0 - ldr r0, [r5, #0x24] - bl FUN_0201F890 - ldr r0, [sp, #0x10] - bl FUN_0201F880 - add r1, r0, #0 - ldr r0, [r5, #0x24] - bl FUN_0201F86C - ldr r0, [r5, #0x24] - mov r1, #0 - bl FUN_0201F854 - ldr r0, [r5, #0x24] - mov r1, #1 - bl FUN_0201F80C - ldr r0, [r5, #0x24] - bl FUN_0201F8F0 - add r0, r7, #0 - bl FUN_02058A9C - cmp r0, #1 - bne _021F367A - add r0, r7, #0 - mov r1, #2 - bl FUN_0205829C - str r0, [sp, #0xc] - add r0, r7, #0 - mov r1, #1 - bl FUN_02059C90 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r4, #0 - bl FUN_02054AF0 - cmp r0, #0 - bne _021F3658 - mov r4, #1 -_021F3658: - add r0, r7, #0 - add r1, sp, #0x1c - bl FUN_02058B5C - add r0, r7, #0 - bl MOD05_021E4C24 - ldr r1, [sp, #0xc] - str r4, [sp] - str r1, [sp, #4] - add r1, r5, #0 - ldr r2, [r5, #0x24] - add r1, #0x28 - add r3, sp, #0x1c - bl MOD06_02249B7C - str r0, [r5, #0x54] -_021F367A: - add r0, r7, #0 - bl FUN_020576A8 - mov r1, #0x41 - ldr r0, [sp, #0x18] - lsl r1, r1, #2 - ldr r0, [r0, r1] - add r1, r6, #0 - add r2, r7, #0 - bl MOD05_021F2C80 - ldr r1, [sp, #8] - add r0, r7, #0 - bl FUN_02057614 - mov r1, #0x41 - ldr r0, [sp, #0x18] - lsl r1, r1, #2 - ldr r0, [r0, r1] - bl FUN_0205839C - ldr r0, _021F36D4 ; =MOD05_021F36D8 - add r1, r5, #0 - mov r2, #0xff - bl FUN_0200CA98 - add r4, r0, #0 - bne _021F36B6 - bl GF_AssertFail -_021F36B6: - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021F36D8 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_021F36C4: .word UNK05_021F9094 -_021F36C8: .word 0x0000FFFF -_021F36CC: .word UNK05_021F90E4 -_021F36D0: .word UNK05_021FA0AC -_021F36D4: .word MOD05_021F36D8 - - thumb_func_start MOD05_021F36D8 -MOD05_021F36D8: ; 0x021F36D8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5, #4] - ldr r4, [r5, #0x50] - cmp r0, #0 - beq _021F36EC - cmp r0, #1 - beq _021F3744 - pop {r4, r5, r6, pc} -_021F36EC: - add r0, r4, #0 - bl FUN_02058830 - cmp r0, #0 - beq _021F3700 - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #0 - bne _021F3730 -_021F3700: - ldr r0, [r5, #0x54] - cmp r0, #0 - beq _021F370A - bl FUN_02064520 -_021F370A: - ldr r0, [r5, #0x24] - bl FUN_0201F744 - ldr r0, [r5, #8] - bl FreeToHeap - ldr r0, [r5, #0xc] - bl FreeToHeap - ldr r0, [r5, #0x10] - bl FreeToHeap - add r0, r5, #0 - bl FreeToHeap - add r0, r6, #0 - bl FUN_0200CAB4 - pop {r4, r5, r6, pc} -_021F3730: - add r0, r4, #0 - bl FUN_02058458 - ldr r1, [r5] - cmp r1, r0 - beq _021F377C - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - pop {r4, r5, r6, pc} -_021F3744: - add r0, r4, #0 - bl MOD05_021F2E28 - cmp r0, #0 - bne _021F377C - ldr r0, [r5, #0x54] - cmp r0, #0 - beq _021F3758 - bl FUN_02064520 -_021F3758: - ldr r0, [r5, #0x24] - bl FUN_0201F744 - ldr r0, [r5, #8] - bl FreeToHeap - ldr r0, [r5, #0xc] - bl FreeToHeap - ldr r0, [r5, #0x10] - bl FreeToHeap - add r0, r5, #0 - bl FreeToHeap - add r0, r6, #0 - bl FUN_0200CAB4 -_021F377C: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3780 -MOD05_021F3780: ; 0x021F3780 - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - bl MOD05_021F37AC - add r4, r0, #0 - str r6, [r4] - str r5, [r4, #8] - bl MOD05_021F37DC - add r0, r4, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F379C -MOD05_021F379C: ; 0x021F379C - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F37E0 - add r0, r4, #0 - bl MOD05_021F37D0 - pop {r4, pc} - - thumb_func_start MOD05_021F37AC -MOD05_021F37AC: ; 0x021F37AC - push {r4, lr} - mov r1, #0x10 - bl AllocFromHeap - add r4, r0, #0 - bne _021F37BC - bl GF_AssertFail -_021F37BC: - add r2, r4, #0 - mov r1, #0x10 - mov r0, #0 -_021F37C2: - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _021F37C2 - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F37D0 -MOD05_021F37D0: ; 0x021F37D0 - ldr r3, _021F37D8 ; =FreeToHeapExplicit - add r1, r0, #0 - ldr r0, [r1] - bx r3 - .balign 4, 0 -_021F37D8: .word FreeToHeapExplicit - - thumb_func_start MOD05_021F37DC -MOD05_021F37DC: ; 0x021F37DC - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F37E0 -MOD05_021F37E0: ; 0x021F37E0 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021F380E - ldr r4, [r5, #0xc] - cmp r4, #0 - beq _021F380E -_021F37F0: - ldr r0, [r4, #0x5c] - cmp r0, #0 - beq _021F37FC - add r0, r4, #0 - bl MOD05_021F383C -_021F37FC: - ldr r0, [r5, #4] - add r4, #0x60 - sub r0, r0, #1 - str r0, [r5, #4] - bne _021F37F0 - ldr r0, [r5] - ldr r1, [r5, #0xc] - bl FreeToHeapExplicit -_021F380E: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F3810 -MOD05_021F3810: ; 0x021F3810 - push {r3, r4, r5, lr} - add r4, r0, #0 - str r1, [r4, #4] - mov r0, #0x60 - add r5, r1, #0 - mul r5, r0 - ldr r0, [r4] - add r1, r5, #0 - bl AllocFromHeap - str r0, [r4, #0xc] - cmp r0, #0 - bne _021F382E - bl GF_AssertFail -_021F382E: - ldr r0, [r4, #0xc] - mov r1, #0 - add r2, r5, #0 - bl memset - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F383C -MOD05_021F383C: ; 0x021F383C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x5c] - bl FreeToHeap - add r0, r4, #0 - mov r1, #0 - mov r2, #0x60 - bl memset - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3854 -MOD05_021F3854: ; 0x021F3854 - mov r0, #0 - str r0, [r2] - str r0, [r2, #4] - bx lr - - thumb_func_start MOD05_021F385C -MOD05_021F385C: ; 0x021F385C - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3860 -MOD05_021F3860: ; 0x021F3860 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - ldr r0, [r5, #0x38] - add r4, r2, #0 - bl FUN_02055320 - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_0205532C - add r7, r0, #0 - ldr r0, [r4] - cmp r0, r6 - bne _021F3882 - ldr r0, [r4, #4] - cmp r0, r7 - beq _021F38B4 -_021F3882: - str r6, [r4] - add r0, r5, #0 - add r1, r6, #0 - add r2, r7, #0 - str r7, [r4, #4] - bl FUN_0204A6E0 - add r4, r0, #0 - bl FUN_02054A18 - cmp r0, #0 - beq _021F389E - mov r2, #0 - b _021F38AA -_021F389E: - add r0, r4, #0 - bl FUN_02054A0C - cmp r0, #0 - beq _021F38B4 - mov r2, #1 -_021F38AA: - add r0, r6, #0 - add r1, r7, #0 - add r3, r5, #0 - bl MOD05_021DAFA8 -_021F38B4: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F38B8 -MOD05_021F38B8: ; 0x021F38B8 - ldr r0, [r0, #4] - ldr r3, _021F38C4 ; =MOD05_021D8024 - ldr r0, [r0, #4] - ldr r1, _021F38C8 ; =UNK05_021FC58C - bx r3 - nop -_021F38C4: .word MOD05_021D8024 -_021F38C8: .word UNK05_021FC58C - - thumb_func_start MOD05_021F38CC -MOD05_021F38CC: ; 0x021F38CC - push {r4, r5, r6, r7, lr} - sub sp, #0xc - mov r1, #0 - add r2, r1, #0 - add r5, r0, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0 - mov r1, #0x46 - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #8] - add r0, r5, #0 - mov r1, #0x47 - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #0x48 - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp] - add r0, r5, #0 - mov r1, #0x49 - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - add r0, r5, #0 - mov r1, #0x4a - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0 - mov r1, #0x4b - mov r2, #0 - bl GetMonData - mov r1, #0xf - and r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - eor r0, r6 - asr r1, r4, #8 - mul r0, r7 - eor r0, r1 - lsl r1, r4, #0x18 - lsr r3, r1, #0x18 - lsl r0, r0, #0x10 - ldr r2, [sp, #4] - ldr r1, [sp] - lsr r0, r0, #0x10 - eor r2, r1 - ldr r1, [sp, #8] - mul r2, r1 - add r1, r3, #0 - eor r1, r2 - lsl r1, r1, #0x10 - lsr r1, r1, #8 - add r0, r0, r1 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F3978 -MOD05_021F3978: ; 0x021F3978 - ldr r2, _021F399C ; =UNK05_021FC5A4 - mov r3, #1 -_021F397C: - lsl r1, r3, #3 - add r1, r2, r1 - ldrh r1, [r1, #4] - cmp r0, r1 - bhs _021F398E - sub r0, r3, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_021F398E: - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - cmp r3, #0xf - blo _021F397C - add r0, r3, #0 - bx lr - .balign 4, 0 -_021F399C: .word UNK05_021FC5A4 - - thumb_func_start MOD05_021F39A0 -MOD05_021F39A0: ; 0x021F39A0 - push {r4, r5, r6, lr} - add r6, r0, #0 - mov r0, #4 - add r5, r1, #0 - bl FUN_02087A6C - add r4, r0, #0 - bl FUN_02087A84 - add r0, r4, #0 - mov r1, #0 - mov r2, #4 - bl FUN_02087A98 - add r0, r4, #0 - add r1, r6, #0 - bl FUN_02087B58 - add r6, r0, #0 - add r0, r4, #0 - bl FUN_02087B0C - add r0, r5, #0 - bl MOD05_021F3978 - lsl r4, r0, #3 - ldr r0, _021F3A0C ; =UNK05_021FC5A8 - ldr r2, _021F3A10 ; =UNK05_021FC5A6 - ldrh r0, [r0, r4] - ldrh r2, [r2, r4] - asr r1, r5, #0x1f - mov r3, #0 - sub r0, r5, r0 - sbc r1, r3 - bl _ll_udiv - add r2, r0, #0 - add r0, r6, #0 - ldr r6, _021F3A14 ; =UNK05_021FC5A4 - add r3, r1, #0 - mov r5, #0 - ldrh r4, [r6, r4] - add r1, r5, #0 - add r2, r4, r2 - adc r5, r3 - add r3, r5, #0 - bl _ll_mul - mov r2, #0xa - mov r3, #0 - bl _ll_udiv - pop {r4, r5, r6, pc} - nop -_021F3A0C: .word UNK05_021FC5A8 -_021F3A10: .word UNK05_021FC5A6 -_021F3A14: .word UNK05_021FC5A4 - - thumb_func_start MOD05_021F3A18 -MOD05_021F3A18: ; 0x021F3A18 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, [r4, #0xc] - add r5, r1, #0 - bl SavArray_PlayerParty_get - add r1, r5, #0 - bl GetPartyMonByIndex - mov r1, #5 - mov r2, #0 - str r0, [sp] - bl GetMonData - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - ldr r0, [sp] - bl MOD05_021F38CC - add r1, sp, #4 - strh r0, [r1, #2] - ldrh r1, [r1, #2] - add r0, r5, #0 - bl MOD05_021F39A0 - add r6, r0, #0 - ldr r0, [r4, #0xc] - bl SavArray_Flags_get - bl FUN_0205F3E8 - add r1, sp, #4 - strh r0, [r1] - ldrh r1, [r1] - add r0, r5, #0 - bl MOD05_021F39A0 - add r7, r0, #0 - mov r0, #0xfa - lsl r0, r0, #2 - mul r0, r6 - mov r1, #0xfe - bl _u32_div_f - add r0, r0, #5 - mov r1, #0xa - bl _u32_div_f - add r5, r0, #0 - mov r0, #0xfa - lsl r0, r0, #2 - mul r0, r7 - mov r1, #0xfe - bl _u32_div_f - add r0, r0, #5 - mov r1, #0xa - bl _u32_div_f - cmp r5, r0 - bne _021F3A9A - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F3A9A: - cmp r5, r0 - bls _021F3AAE - ldr r2, [sp] - add r0, r4, #0 - add r1, r6, #0 - bl FUN_020619C0 - add sp, #8 - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_021F3AAE: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F3AB4 -MOD05_021F3AB4: ; 0x021F3AB4 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - add r5, r1, #0 - bl SavArray_PlayerParty_get - add r1, r5, #0 - bl GetPartyMonByIndex - bl MOD05_021F38CC - add r1, sp, #0 - strh r0, [r1] - ldr r0, [r4, #0xc] - bl SavArray_Flags_get - add r1, sp, #0 - ldrh r1, [r1] - bl FUN_0205F3F8 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3AE0 -MOD05_021F3AE0: ; 0x021F3AE0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #0xf - add r7, r2, #0 - add r4, r3, #0 - bl FUN_02039438 - add r1, sp, #0x10 - add r5, r0, #0 - ldrh r1, [r1, #0x10] - add r0, r4, #0 - bl MOD05_021F39A0 - mov r1, #0xfa - lsl r1, r1, #2 - mul r1, r0 - add r0, r1, #0 - mov r1, #0xfe - bl _u32_div_f - add r0, r0, #5 - mov r1, #0xa - bl _u32_div_f - mov r1, #0xa - add r4, r0, #0 - bl _u32_div_f - add r2, r0, #0 - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r5] - add r1, r6, #0 - mov r3, #3 - bl BufferIntegerAsString - add r0, r4, #0 - mov r1, #0xa - bl _u32_div_f - mov r0, #0 - add r2, r1, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - ldr r0, [r5] - add r1, r7, #0 - bl BufferIntegerAsString - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F3B4C -MOD05_021F3B4C: ; 0x021F3B4C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r4, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl SavArray_Flags_get - bl FUN_0205F3E8 - add r1, sp, #4 - strh r0, [r1] - ldrh r0, [r1] - add r1, r4, #0 - add r2, r6, #0 - str r0, [sp] - add r0, r5, #0 - add r3, r7, #0 - bl MOD05_021F3AE0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3B7C -MOD05_021F3B7C: ; 0x021F3B7C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - str r2, [sp, #4] - ldr r0, [r5, #0xc] - add r4, r3, #0 - add r7, r1, #0 - bl SavArray_PlayerParty_get - add r1, r4, #0 - bl GetPartyMonByIndex - mov r1, #5 - mov r2, #0 - add r6, r0, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #0 - bl MOD05_021F38CC - add r1, sp, #8 - strh r0, [r1] - ldrh r0, [r1] - add r1, r7, #0 - add r3, r4, #0 - str r0, [sp] - ldr r2, [sp, #4] - add r0, r5, #0 - bl MOD05_021F3AE0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F3BC0 -MOD05_021F3BC0: ; 0x021F3BC0 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r0, #4 - mov r1, #0x20 - bl AllocFromHeap - add r5, r0, #0 - mov r4, #0 -_021F3BD0: - mov r1, #0xf - lsl r1, r1, #0xc - add r2, r4, #0 - mul r2, r1 - ldr r1, _021F3C2C ; =UNK05_021FD684 - lsl r0, r4, #2 - add r1, r1, r2 - add r6, r5, r0 - str r1, [r5, r0] - ldr r0, [r5, r0] - cmp r0, #0 - bne _021F3BEC - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F3BEC: - cmp r7, #0 - beq _021F3C0A - mov r1, #9 - mov r0, #4 - lsl r1, r1, #0xc - bl AllocFromHeap - str r0, [r6, #0x10] - cmp r0, #0 - bne _021F3C04 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F3C04: - mov r2, #9 - lsl r2, r2, #0xc - b _021F3C10 -_021F3C0A: - mov r0, #0 - str r0, [r6, #0x10] - add r2, r0, #0 -_021F3C10: - mov r1, #0xf - add r0, r4, #0 - lsl r1, r1, #0xc - add r3, r5, #0 - bl MOD05_021F3C74 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _021F3BD0 - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F3C2C: .word UNK05_021FD684 - - thumb_func_start MOD05_021F3C30 -MOD05_021F3C30: ; 0x021F3C30 - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - add r6, r0, #0 - add r7, r4, #0 -_021F3C38: - lsl r0, r4, #2 - add r5, r6, r0 - str r7, [r6, r0] - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _021F3C4C - bl FreeToHeap - mov r0, #0 - str r0, [r5, #0x10] -_021F3C4C: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _021F3C38 - add r0, r6, #0 - bl FreeToHeap - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3C60 -MOD05_021F3C60: ; 0x021F3C60 - lsl r0, r0, #2 - ldr r0, [r1, r0] - str r0, [r2] - bx lr - - thumb_func_start MOD05_021F3C68 -MOD05_021F3C68: ; 0x021F3C68 - lsl r0, r0, #2 - add r0, r1, r0 - ldr r0, [r0, #0x10] - str r0, [r2] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3C74 -MOD05_021F3C74: ; 0x021F3C74 - push {r3, r4, r5, r6, r7, lr} - add r5, r3, #0 - lsl r4, r0, #2 - add r6, r1, #0 - add r7, r2, #0 - ldr r0, [r5, r4] - mov r1, #0 - add r2, r6, #0 - bl MI_CpuFill8 - add r0, r5, r4 - ldr r0, [r0, #0x10] - mov r1, #0 - add r2, r7, #0 - bl MI_CpuFill8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F3C98 -MOD05_021F3C98: ; 0x021F3C98 - push {r4, r5, r6, r7} - add r4, r0, #0 - add r3, r2, #0 - mov r5, #0xc - add r2, r1, #0 - ldr r0, [r4, #4] - mul r2, r5 - ldrh r0, [r0, r2] - ldr r6, [r4, #0x10] - add r1, r0, #0 - mul r1, r5 - add r7, r6, r1 - ldmia r7!, {r0, r1} - add r6, r3, #0 - stmia r6!, {r0, r1} - ldr r0, [r7] - str r0, [r6] - ldr r1, [r4, #4] - ldr r0, [r4, #0x10] - add r1, r1, r2 - ldrh r1, [r1, #2] - add r6, r1, #0 - mul r6, r5 - add r7, r0, r6 - add r6, r3, #0 - ldmia r7!, {r0, r1} - add r6, #0xc - stmia r6!, {r0, r1} - ldr r0, [r7] - add r3, #0x18 - str r0, [r6] - ldr r1, [r4, #4] - ldr r0, [r4, #0x10] - add r1, r1, r2 - ldrh r1, [r1, #4] - add r2, r1, #0 - mul r2, r5 - add r2, r0, r2 - ldmia r2!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r2] - str r0, [r3] - pop {r4, r5, r6, r7} - bx lr - - thumb_func_start MOD05_021F3CF0 -MOD05_021F3CF0: ; 0x021F3CF0 - push {r4, r5} - ldr r3, [r0, #0x14] - ldr r5, [r0, #4] - mov r0, #0xc - add r4, r1, #0 - mul r4, r0 - add r1, r5, r4 - ldrh r1, [r1, #6] - mul r0, r1 - add r3, r3, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - pop {r4, r5} - bx lr - - thumb_func_start MOD05_021F3D10 -MOD05_021F3D10: ; 0x021F3D10 - mov r3, #0 - add r2, r3, #0 - sub r1, r3, #1 -_021F3D16: - str r2, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - add r3, r3, #1 - add r0, #0xc - cmp r3, #0xa - blt _021F3D16 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3D28 -MOD05_021F3D28: ; 0x021F3D28 - push {r4, r5, r6, r7} - add r4, r0, #0 - add r0, r2, #0 - mov ip, r3 - cmp r1, #0 - bne _021F3D3A - mov r0, #0 - pop {r4, r5, r6, r7} - bx lr -_021F3D3A: - cmp r1, #1 - bne _021F3D4A - mov r1, #0 - mov r0, ip - strh r1, [r0] - mov r0, #1 - pop {r4, r5, r6, r7} - bx lr -_021F3D4A: - sub r5, r1, #1 - lsr r1, r5, #0x1f - add r1, r5, r1 - mov r3, #0 - asr r6, r1, #1 - mov r7, #0xa -_021F3D56: - add r1, r6, #0 - mul r1, r7 - add r2, r4, r1 - ldrh r1, [r2, #4] - ldrh r2, [r2, #2] - lsl r1, r1, #0x10 - orr r1, r2 - cmp r1, r0 - ble _021F3D84 - sub r1, r5, #1 - cmp r1, r3 - ble _021F3D7A - add r2, r3, r6 - lsr r1, r2, #0x1f - add r1, r2, r1 - add r5, r6, #0 - asr r6, r1, #1 - b _021F3D56 -_021F3D7A: - mov r0, ip - strh r6, [r0] - mov r0, #1 - pop {r4, r5, r6, r7} - bx lr -_021F3D84: - add r1, r3, #1 - cmp r1, r5 - bge _021F3D96 - add r2, r6, r5 - lsr r1, r2, #0x1f - add r1, r2, r1 - add r3, r6, #0 - asr r6, r1, #1 - b _021F3D56 -_021F3D96: - add r1, r6, #1 - mov r0, ip - strh r1, [r0] - mov r0, #1 - pop {r4, r5, r6, r7} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F3DA4 -MOD05_021F3DA4: ; 0x021F3DA4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x110 - str r0, [sp, #0x20] - ldr r0, [sp, #0x128] - add r4, r3, #0 - str r0, [sp, #0x128] - ldr r0, [r4, #0x1c] - add r6, r1, #0 - add r7, r2, #0 - cmp r0, #0 - bne _021F3DC0 - add sp, #0x110 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F3DC0: - mov r5, #0 - add r0, sp, #0x98 - str r6, [sp, #0x68] - str r5, [sp, #0x6c] - str r7, [sp, #0x70] - bl MOD05_021F3D10 - ldr r1, [r4] - ldr r0, [r1, #4] - sub r0, r6, r0 - bpl _021F3DD8 - add r0, r5, #0 -_021F3DD8: - ldr r2, [r1, #8] - sub r7, r7, r2 - bpl _021F3DE0 - mov r7, #0 -_021F3DE0: - ldr r1, [r1, #0x14] - bl FX_Div - ldr r1, [r4] - asr r6, r0, #0xc - ldrh r0, [r1] - cmp r6, r0 - blo _021F3DF2 - sub r6, r0, #1 -_021F3DF2: - ldr r1, [r1, #0x18] - add r0, r7, #0 - bl FX_Div - asr r1, r0, #0xc - ldr r0, [r4] - ldrh r0, [r0, #2] - cmp r1, r0 - blo _021F3E06 - sub r1, r0, #1 -_021F3E06: - mul r0, r1 - add r0, r6, r0 - lsl r2, r0, #2 - ldr r1, [r4, #8] - ldr r0, [r4, #0xc] - add r3, r1, r2 - ldrh r6, [r3, #2] - ldrh r1, [r1, r2] - lsl r3, r6, #2 - add r3, r6, r3 - lsl r3, r3, #1 - add r6, r0, r3 - ldr r0, [sp, #0x70] - add r3, sp, #0x58 - str r0, [sp, #0x28] - ldr r2, [sp, #0x28] - add r0, r6, #0 - bl MOD05_021F3D28 - cmp r0, #0 - bne _021F3E36 - add sp, #0x110 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F3E36: - add r0, sp, #0x58 - ldrh r1, [r0] - lsl r0, r1, #2 - add r1, r1, r0 - lsl r0, r1, #1 - ldrh r0, [r6, r0] - str r0, [sp, #0x44] - add r0, r1, #4 - lsl r0, r0, #1 - add r1, r1, #3 - ldrh r0, [r6, r0] - lsl r1, r1, #1 - ldrh r1, [r6, r1] - lsl r0, r0, #0x10 - orr r1, r0 - mov r0, #0 - str r0, [sp, #0x48] - ldr r0, [sp, #0x44] - cmp r0, #0 - bls _021F3F50 - add r0, sp, #0x98 - str r0, [sp, #0x40] - lsl r0, r1, #1 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x28] - asr r0, r0, #0x1f - str r0, [sp, #0x38] - ldr r0, [sp, #0x68] - str r0, [sp, #0x2c] - asr r0, r0, #0x1f - str r0, [sp, #0x30] - mov r0, sp - str r0, [sp, #0x4c] - sub r0, r0, #4 - str r0, [sp, #0x4c] -_021F3E7C: - ldr r0, [sp, #0x48] - ldr r2, [r4, #0x18] - lsl r1, r0, #1 - ldr r0, [sp, #0x3c] - add r0, r0, r2 - ldrh r7, [r1, r0] - add r0, r4, #0 - add r2, sp, #0x74 - add r1, r7, #0 - bl MOD05_021F3C98 - mov r0, #0 - add r3, sp, #0x80 - str r0, [sp, #0x78] - str r0, [sp, #0x84] - str r0, [sp, #0x90] - ldmia r3!, {r0, r1} - add r2, sp, #8 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #0x8c - str r0, [r2] - ldmia r3!, {r0, r1} - add r2, sp, #0x14 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #0x74 - str r0, [r2] - ldr r2, [sp, #0x4c] - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - add r6, sp, #0x68 - str r0, [r2] - ldr r0, [sp, #0x4c] - ldr r3, [r0] - ldmia r6!, {r0, r1, r2} - bl FUN_0201C878 - cmp r0, #1 - bne _021F3F40 - add r0, r4, #0 - add r1, r7, #0 - add r2, sp, #0x5c - bl MOD05_021F3CF0 - ldr r0, [sp, #0x5c] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - asr r1, r0, #0x1f - bl _ll_mul - str r0, [sp, #0x50] - ldr r0, [sp, #0x64] - add r6, r1, #0 - ldr r2, [sp, #0x28] - ldr r3, [sp, #0x38] - asr r1, r0, #0x1f - bl _ll_mul - mov ip, r0 - mov r2, #0xc - ldr r0, [r4, #4] - mul r2, r7 - add r0, r0, r2 - mov r2, #2 - ldr r3, [sp, #0x50] - lsl r2, r2, #0xa - add r3, r3, r2 - ldr r2, _021F3FDC ; =0x00000000 - ldr r0, [r0, #8] - adc r6, r2 - lsl r2, r6, #0x14 - lsr r3, r3, #0xc - orr r3, r2 - mov r2, #2 - lsl r2, r2, #0xa - mov r6, ip - add r2, r6, r2 - ldr r6, _021F3FDC ; =0x00000000 - adc r1, r6 - lsl r1, r1, #0x14 - lsr r2, r2, #0xc - orr r2, r1 - add r1, r3, r2 - add r0, r0, r1 - ldr r1, [sp, #0x60] - neg r0, r0 - bl FX_Div - ldr r1, [sp, #0x40] - add r5, r5, #1 - str r0, [r1] - add r0, r1, #0 - add r0, #0xc - str r0, [sp, #0x40] - cmp r5, #0xa - bge _021F3F50 -_021F3F40: - ldr r0, [sp, #0x48] - add r0, r0, #1 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - str r1, [sp, #0x48] - ldr r0, [sp, #0x44] - cmp r1, r0 - blo _021F3E7C -_021F3F50: - cmp r5, #1 - ble _021F3FB8 - mov r0, #0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x98] - bl FUN_0201C7A8 - add r4, r0, #0 - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x98] - bl FUN_0201C7A0 - sub r6, r4, r0 - mov r4, #1 - cmp r5, #1 - ble _021F3FA4 -_021F3F72: - mov r0, #0xc - add r7, r4, #0 - mul r7, r0 - add r1, sp, #0x98 - ldr r0, [sp, #0x20] - ldr r1, [r1, r7] - bl FUN_0201C7A8 - add r1, sp, #0x98 - str r0, [sp, #0x54] - ldr r0, [sp, #0x20] - ldr r1, [r1, r7] - bl FUN_0201C7A0 - ldr r1, [sp, #0x54] - sub r0, r1, r0 - cmp r6, r0 - ble _021F3F9A - add r6, r0, #0 - str r4, [sp, #0x24] -_021F3F9A: - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r5 - blt _021F3F72 -_021F3FA4: - ldr r0, [sp, #0x24] - mov r1, #0xc - mul r1, r0 - add r0, sp, #0x98 - ldr r1, [r0, r1] - ldr r0, [sp, #0x128] - add sp, #0x110 - str r1, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F3FB8: - bne _021F3FC6 - ldr r1, [sp, #0x98] - ldr r0, [sp, #0x128] - add sp, #0x110 - str r1, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F3FC6: - cmp r5, #0 - beq _021F3FD6 - ldr r1, [sp, #0x98] - ldr r0, [sp, #0x128] - add sp, #0x110 - str r1, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F3FD6: - mov r0, #0 - add sp, #0x110 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F3FDC: .word 0x00000000 - - thumb_func_start MOD05_021F3FE0 -MOD05_021F3FE0: ; 0x021F3FE0 - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r0, #0 - mov r0, #0 - mov r2, #0x1c - add r4, r1, #0 - bl MIi_CpuClear32 - add r0, r5, #0 - mov r1, #8 - add r2, sp, #0 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, r4, #0 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, r4, #4 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r2, r4, #0 - add r0, r5, #0 - mov r1, #2 - add r2, #8 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r2, r4, #0 - add r0, r5, #0 - mov r1, #2 - add r2, #0xc - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r2, r4, #0 - add r0, r5, #0 - mov r1, #2 - add r2, #0x18 - bl NARC_ReadFile - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0 - bl NARC_ReadFile - add r2, r4, #0 - add r0, r5, #0 - mov r1, #4 - add r2, #0x14 - bl NARC_ReadFile - add r4, #0x10 - add r0, r5, #0 - mov r1, #4 - add r2, r4, #0 - bl NARC_ReadFile - add sp, #8 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F4094 -MOD05_021F4094: ; 0x021F4094 - push {r4, r5, r6, lr} - ldr r4, [r2] - mov r3, #0 - str r4, [r1, #0x10] - ldr r5, [r0] - mov r4, #0xc - mul r4, r5 - add r3, r3, r4 - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F40B8 - add r3, r3, r4 -_021F40B8: - ldr r4, [r2] - add r4, r4, r3 - str r4, [r1, #0x14] - ldr r5, [r0, #4] - mov r4, #0xc - mul r4, r5 - add r3, r3, r4 - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F40DA - add r3, r3, r4 -_021F40DA: - ldr r4, [r2] - add r4, r4, r3 - str r4, [r1, #4] - ldr r5, [r0, #8] - mov r4, #0xc - mul r4, r5 - add r3, r3, r4 - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F40FC - add r3, r3, r4 -_021F40FC: - ldr r4, [r2] - add r4, r4, r3 - add r3, #0x1c - str r4, [r1] - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F4118 - add r3, r3, r4 -_021F4118: - ldr r4, [r2] - add r4, r4, r3 - str r4, [r1, #8] - ldr r4, [r0, #0xc] - lsl r4, r4, #2 - add r3, r3, r4 - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F4138 - add r3, r3, r4 -_021F4138: - ldr r4, [r2] - add r4, r4, r3 - str r4, [r1, #0xc] - ldr r4, [r0, #0x14] - add r3, r3, r4 - lsr r6, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r6 - mov r4, #0x1e - ror r5, r4 - add r4, r6, r5 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - beq _021F4156 - add r3, r3, r4 -_021F4156: - ldr r2, [r2] - add r2, r2, r3 - str r2, [r1, #0x18] - ldr r0, [r0, #0x10] - add r3, r3, r0 - lsr r2, r3, #0x1f - lsl r1, r3, #0x1e - sub r1, r1, r2 - mov r0, #0x1e - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - beq _021F4174 - add r3, r3, r0 -_021F4174: - mov r0, #9 - lsl r0, r0, #0xc - cmp r3, r0 - ble _021F4180 - bl GF_AssertFail -_021F4180: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4184 -MOD05_021F4184: ; 0x021F4184 - ldr r3, _021F4190 ; =NARC_ReadFile - add r2, r1, #0 - mov r1, #0x1c - ldr r2, [r2] - bx r3 - nop -_021F4190: .word NARC_ReadFile - - thumb_func_start MOD05_021F4194 -MOD05_021F4194: ; 0x021F4194 - ldr r2, [r2] - add r3, r1, #0 - mov r1, #0xc - mul r1, r2 - ldr r2, [r3, #0x10] - ldr r3, _021F41A4 ; =NARC_ReadFile - bx r3 - nop -_021F41A4: .word NARC_ReadFile - - thumb_func_start MOD05_021F41A8 -MOD05_021F41A8: ; 0x021F41A8 - ldr r2, [r2, #4] - add r3, r1, #0 - mov r1, #0xc - mul r1, r2 - ldr r2, [r3, #0x14] - ldr r3, _021F41B8 ; =NARC_ReadFile - bx r3 - nop -_021F41B8: .word NARC_ReadFile - - thumb_func_start MOD05_021F41BC -MOD05_021F41BC: ; 0x021F41BC - ldr r2, [r2, #8] - add r3, r1, #0 - mov r1, #0xc - mul r1, r2 - ldr r2, [r3, #4] - ldr r3, _021F41CC ; =NARC_ReadFile - bx r3 - nop -_021F41CC: .word NARC_ReadFile - - thumb_func_start MOD05_021F41D0 -MOD05_021F41D0: ; 0x021F41D0 - add r3, r1, #0 - ldr r1, [r2, #0xc] - ldr r2, [r3, #8] - ldr r3, _021F41DC ; =NARC_ReadFile - lsl r1, r1, #2 - bx r3 - .balign 4, 0 -_021F41DC: .word NARC_ReadFile - - thumb_func_start MOD05_021F41E0 -MOD05_021F41E0: ; 0x021F41E0 - add r3, r1, #0 - ldr r1, [r2, #0x14] - ldr r2, [r3, #0xc] - ldr r3, _021F41EC ; =NARC_ReadFile - bx r3 - nop -_021F41EC: .word NARC_ReadFile - - thumb_func_start MOD05_021F41F0 -MOD05_021F41F0: ; 0x021F41F0 - add r3, r1, #0 - ldr r1, [r2, #0x10] - ldr r2, [r3, #0x18] - ldr r3, _021F41FC ; =NARC_ReadFile - bx r3 - nop -_021F41FC: .word NARC_ReadFile - - thumb_func_start MOD05_021F4200 -MOD05_021F4200: ; 0x021F4200 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r1, #0xa0 - ldr r1, [r1] - add r5, r0, #0 - cmp r1, #1 - bne _021F4216 - add r1, r4, #0 - mov r2, #2 - add r1, #0x6c - strb r2, [r1] -_021F4216: - add r1, r4, #0 - add r1, #0x6c - ldrb r1, [r1] - cmp r1, #0 - beq _021F422A - cmp r1, #1 - beq _021F425E - cmp r1, #2 - beq _021F42EA - b _021F4302 -_021F422A: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _021F423A - mov r0, #0 - b _021F4302 -_021F423A: - add r0, r4, #0 - add r0, #0xa8 - add r1, r4, #0 - ldr r0, [r0] - add r1, #0x4c - bl MOD05_021F3FE0 - add r1, r4, #0 - add r1, #0x9c - add r0, r4, #0 - add r2, r4, #0 - ldr r1, [r1] - add r0, #0x4c - add r2, #0x98 - bl MOD05_021F4094 - mov r0, #1 - b _021F4302 -_021F425E: - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - ldr r0, [r0] - ldr r1, [r1] - bl MOD05_021F4184 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F4194 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F41A8 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F41BC - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F41D0 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F41E0 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xa8 - add r1, #0x9c - add r2, r4, #0 - ldr r0, [r0] - ldr r1, [r1] - add r2, #0x4c - bl MOD05_021F41F0 - mov r0, #1 - b _021F4302 -_021F42EA: - add r0, r4, #0 - add r0, #0xa4 - ldr r0, [r0] - mov r1, #0 - str r1, [r0] - add r0, r4, #0 - bl FreeToHeap - add r0, r5, #0 - bl FUN_0200CAB4 - pop {r3, r4, r5, pc} -_021F4302: - cmp r0, #1 - bne _021F4326 - add r0, r4, #0 - add r0, #0x6c - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x6c - strb r1, [r0] - add r0, r4, #0 - add r0, #0x6c - ldrb r0, [r0] - cmp r0, #2 - bne _021F4326 - add r4, #0x9c - ldr r0, [r4] - mov r1, #1 - str r1, [r0, #0x1c] -_021F4326: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F4328 -MOD05_021F4328: ; 0x021F4328 - push {r3, lr} - mov r0, #4 - mov r1, #0x20 - bl AllocFromHeap - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x14] - str r1, [r0, #4] - str r1, [r0] - str r1, [r0, #8] - str r1, [r0, #0xc] - str r1, [r0, #0x18] - pop {r3, pc} - - thumb_func_start MOD05_021F4344 -MOD05_021F4344: ; 0x021F4344 - push {r0, r1, r2, r3} - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #4 - mov r1, #0x1c - add r4, r2, #0 - bl AllocFromHeapAtEnd - add r6, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F3FE0 - add r0, r6, #0 - add r1, r4, #0 - add r2, sp, #0x1c - bl MOD05_021F4094 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F4184 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F4194 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F41A8 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F41BC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F41D0 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F41E0 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl MOD05_021F41F0 - add r0, r6, #0 - bl FreeToHeap - mov r0, #1 - str r0, [r4, #0x1c] - pop {r4, r5, r6} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4, 0 - - thumb_func_start MOD05_021F43C0 -MOD05_021F43C0: ; 0x021F43C0 - push {r3, lr} - cmp r0, #0 - beq _021F43CA - bl FreeToHeap -_021F43CA: - pop {r3, pc} - - thumb_func_start MOD05_021F43CC -MOD05_021F43CC: ; 0x021F43CC - cmp r0, #0 - beq _021F43E2 - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #0x10] - str r1, [r0, #0x14] - str r1, [r0, #4] - str r1, [r0] - str r1, [r0, #8] - str r1, [r0, #0xc] - str r1, [r0, #0x18] -_021F43E2: - bx lr - - thumb_func_start MOD05_021F43E4 -MOD05_021F43E4: ; 0x021F43E4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #4 - mov r1, #0xb4 - add r6, r2, #0 - add r7, r3, #0 - bl AllocFromHeapAtEnd - add r1, r0, #0 - add r2, r1, #0 - mov r0, #0 - add r2, #0x6c - strb r0, [r2] - add r2, r1, #0 - add r2, #0xa8 - str r5, [r2] - add r2, r1, #0 - add r2, #0xac - str r4, [r2] - add r2, r1, #0 - add r2, #0x9c - str r6, [r2] - add r2, r1, #0 - add r2, #0xa4 - str r7, [r2] - add r2, r1, #0 - add r2, #0xa0 - str r0, [r2] - str r0, [r1, #0x68] - str r0, [r1, #0x48] - ldr r0, [sp, #0x18] - ldr r2, [r0] - add r0, r1, #0 - add r0, #0x98 - str r2, [r0] - add r0, r1, #0 - ldr r2, [sp, #0x1c] - add r0, #0xb0 - str r2, [r0] - ldr r0, _021F4440 ; =MOD05_021F4200 - mov r2, #1 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} - nop -_021F4440: .word MOD05_021F4200 - - thumb_func_start MOD05_021F4444 -MOD05_021F4444: ; 0x021F4444 - push {r3, lr} - bl FUN_0201B6C8 - mov r1, #1 - add r0, #0xa0 - str r1, [r0] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4454 -MOD05_021F4454: ; 0x021F4454 - mov r1, #0 - str r1, [r0, #0x1c] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F445C -MOD05_021F445C: ; 0x021F445C - push {r4, r5} - ldr r3, [r2, #0x14] - cmp r3, #0 - bne _021F446A - mov r0, #0 - pop {r4, r5} - bx lr -_021F446A: - ldr r5, [r2] - ldr r3, [r2, #8] - ldr r4, [r2, #4] - ldr r2, [r2, #0xc] - add r3, r5, r3 - add r2, r4, r2 - sub r3, r3, #1 - sub r2, r2, #1 - cmp r5, r0 - bgt _021F4490 - cmp r0, r3 - bgt _021F4490 - cmp r4, r1 - bgt _021F4490 - cmp r1, r2 - bgt _021F4490 - mov r0, #1 - pop {r4, r5} - bx lr -_021F4490: - mov r0, #0 - pop {r4, r5} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F4498 -MOD05_021F4498: ; 0x021F4498 - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - mov r1, #8 - bl AllocFromHeap - mov r1, #0x18 - add r4, r0, #0 - add r0, r6, #0 - mul r1, r5 - bl AllocFromHeap - str r0, [r4, #4] - mov r6, #0 - str r5, [r4] - cmp r5, #0 - bls _021F44D4 - add r0, r6, #0 - mov r1, #0x18 -_021F44C0: - add r2, r6, #0 - ldr r3, [r4, #4] - mul r2, r1 - add r2, r3, r2 - str r0, [r2, #0x14] - add r2, r6, #1 - lsl r2, r2, #0x18 - lsr r6, r2, #0x18 - cmp r6, r5 - blo _021F44C0 -_021F44D4: - add r0, r4, #0 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F44D8 -MOD05_021F44D8: ; 0x021F44D8 - push {r4, r5} - ldr r5, [sp, #0x10] - mov r4, #0x18 - mul r4, r0 - ldr r0, [r5, #4] - str r1, [r0, r4] - ldr r0, [r5, #4] - ldr r1, [sp, #8] - add r0, r0, r4 - str r2, [r0, #4] - ldr r0, [r5, #4] - add r0, r0, r4 - str r3, [r0, #8] - ldr r0, [r5, #4] - add r0, r0, r4 - str r1, [r0, #0xc] - ldr r0, [r5, #4] - ldr r1, [sp, #0xc] - add r0, r0, r4 - str r1, [r0, #0x10] - ldr r0, [r5, #4] - mov r1, #1 - add r0, r0, r4 - str r1, [r0, #0x14] - pop {r4, r5} - bx lr - - thumb_func_start MOD05_021F450C -MOD05_021F450C: ; 0x021F450C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - bl FreeToHeap - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4520 -MOD05_021F4520: ; 0x021F4520 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - str r3, [sp] - cmp r3, #0 - bne _021F4532 - bl GF_AssertFail -_021F4532: - ldr r0, [r5] - mov r4, #0 - cmp r0, #0 - ble _021F4562 -_021F453A: - mov r3, #0x18 - ldr r2, [r5, #4] - mul r3, r4 - add r0, r6, #0 - add r1, r7, #0 - add r2, r2, r3 - bl MOD05_021F445C - cmp r0, #0 - beq _021F4556 - ldr r0, [sp] - strb r4, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F4556: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [r5] - cmp r4, r0 - blt _021F453A -_021F4562: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4568 -MOD05_021F4568: ; 0x021F4568 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - cmp r5, r0 - blt _021F4578 - bl GF_AssertFail -_021F4578: - mov r0, #0x18 - add r6, r5, #0 - mul r6, r0 - ldr r0, [r4, #4] - add r0, r0, r6 - ldr r0, [r0, #0x14] - cmp r0, #0 - bne _021F458C - bl GF_AssertFail -_021F458C: - ldr r0, [r4, #4] - add r0, r0, r6 - ldr r0, [r0, #0x10] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F4594 -MOD05_021F4594: ; 0x021F4594 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r0, #0 - ldr r0, [r6] - add r4, r1, #0 - cmp r5, r0 - blt _021F45A6 - bl GF_AssertFail -_021F45A6: - mov r0, #0x18 - ldr r1, [r6, #4] - mul r0, r5 - add r0, r1, r0 - str r4, [r0, #0x10] - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F45B4 -MOD05_021F45B4: ; 0x021F45B4 - push {r4, lr} - mov r1, #0x1c - bl AllocFromHeap - add r4, r0, #0 - bl MOD05_021F4650 - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F45C8 -MOD05_021F45C8: ; 0x021F45C8 - push {r4, lr} - add r4, r0, #0 - beq _021F45E4 - ldr r1, [r4] - cmp r1, #1 - bne _021F45D8 - bl MOD05_021F4608 -_021F45D8: - add r0, r4, #0 - bl MOD05_021F4650 - add r0, r4, #0 - bl FreeToHeap -_021F45E4: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F45E8 -MOD05_021F45E8: ; 0x021F45E8 - push {r4, lr} - add r4, r0, #0 - ldr r0, _021F4604 ; =MOD05_021F4688 - add r1, r4, #0 - bl FUN_02015F34 - cmp r0, #1 - beq _021F45FC - bl GF_AssertFail -_021F45FC: - mov r0, #1 - str r0, [r4] - pop {r4, pc} - nop -_021F4604: .word MOD05_021F4688 - - thumb_func_start MOD05_021F4608 -MOD05_021F4608: ; 0x021F4608 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl FUN_02015F34 - cmp r0, #1 - beq _021F461C - bl GF_AssertFail -_021F461C: - mov r0, #0 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4624 -MOD05_021F4624: ; 0x021F4624 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r2, #0 - bl MOD05_021F46A8 - add r4, r0, #0 - bne _021F4636 - bl GF_AssertFail -_021F4636: - cmp r4, #0 - beq _021F4642 - str r6, [r4, #4] - str r5, [r4, #8] - mov r0, #1 - str r0, [r4] -_021F4642: - add r0, r4, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4648 -MOD05_021F4648: ; 0x021F4648 - ldr r3, _021F464C ; =MOD05_021F4678 - bx r3 - .balign 4, 0 -_021F464C: .word MOD05_021F4678 - - thumb_func_start MOD05_021F4650 -MOD05_021F4650: ; 0x021F4650 - push {r3, r4, r5, lr} - add r3, r0, #0 - mov r2, #0x1c - mov r1, #0 -_021F4658: - strb r1, [r3] - add r3, r3, #1 - sub r2, r2, #1 - bne _021F4658 - mov r4, #0 - str r4, [r0] - add r5, r0, #4 -_021F4666: - add r0, r5, #0 - bl MOD05_021F4678 - add r4, r4, #1 - add r5, #0xc - cmp r4, #2 - blt _021F4666 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4678 -MOD05_021F4678: ; 0x021F4678 - mov r2, #0 - ldr r1, _021F4684 ; =MOD05_021F46A4 - str r2, [r0] - str r1, [r0, #8] - str r2, [r0, #4] - bx lr - .balign 4, 0 -_021F4684: .word MOD05_021F46A4 - - thumb_func_start MOD05_021F4688 -MOD05_021F4688: ; 0x021F4688 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r6, #0 - add r4, r5, #4 -_021F4690: - ldr r1, [r5, #8] - ldr r2, [r5, #0xc] - add r0, r4, #0 - blx r2 - add r6, r6, #1 - add r5, #0xc - add r4, #0xc - cmp r6, #2 - blt _021F4690 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F46A4 -MOD05_021F46A4: ; 0x021F46A4 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F46A8 -MOD05_021F46A8: ; 0x021F46A8 - mov r2, #0 - add r3, r0, #0 -_021F46AC: - ldr r1, [r3, #4] - cmp r1, #0 - bne _021F46BC - add r1, r0, #4 - mov r0, #0xc - mul r0, r2 - add r0, r1, r0 - bx lr -_021F46BC: - add r2, r2, #1 - add r3, #0xc - cmp r2, #2 - blt _021F46AC - mov r0, #0 - bx lr - - thumb_func_start MOD05_021F46C8 -MOD05_021F46C8: ; 0x021F46C8 - push {r4, r5, r6, lr} - add r5, r1, #0 - mov r1, #0xca - lsl r1, r1, #2 - add r6, r0, #0 - bl AllocFromHeap - mov r2, #0xca - mov r1, #0 - lsl r2, r2, #2 - add r4, r0, #0 - bl memset - mov r2, #0x63 - mov r0, #0 - add r1, r4, #0 - lsl r2, r2, #2 - str r0, [r4] - add r0, r6, #0 - add r1, #0xc - add r2, r4, r2 - bl FUN_02012944 - mov r1, #0xc3 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r1, #4 - str r5, [r4, r0] - add r0, r4, #0 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F4704 -MOD05_021F4704: ; 0x021F4704 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - cmp r1, #1 - bne _021F4712 - bl MOD05_021F491C -_021F4712: - mov r0, #0xc3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02012974 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021F4724 -MOD05_021F4724: ; 0x021F4724 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F4732 - bl GF_AssertFail -_021F4732: - mov r0, #0x31 - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r1, _021F47A4 ; =MOD05_021F48CC - add r2, r4, #0 - bl MOD05_021F4624 - mov r2, #0xc5 - lsl r2, r2, #2 - str r0, [r4, r2] - ldr r0, _021F47A8 ; =MOD05_021F47B4 - add r1, r4, #0 - add r2, #0xec - bl FUN_0200CA44 - mov r2, #0xc7 - lsl r2, r2, #2 - str r0, [r4, r2] - ldr r0, _021F47AC ; =MOD05_021F48BC - add r1, r4, #0 - add r2, #0xe4 - bl FUN_0200CA60 - mov r2, #0x32 - lsl r2, r2, #4 - str r0, [r4, r2] - ldr r0, _021F47B0 ; =MOD05_021F48F0 - add r1, r4, #0 - add r2, #0xe0 - bl FUN_0200CA60 - mov r1, #0xc9 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - mov r2, #6 - add r0, #0xc - mov r1, #0 - lsl r2, r2, #6 - bl memset - mov r2, #0x63 - lsl r2, r2, #2 - add r0, r4, r2 - mov r1, #0 - sub r2, #0xc - bl memset - mov r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - mov r0, #0x61 - lsl r0, r0, #4 - bl PlaySE - pop {r4, pc} - .balign 4, 0 -_021F47A4: .word MOD05_021F48CC -_021F47A8: .word MOD05_021F47B4 -_021F47AC: .word MOD05_021F48BC -_021F47B0: .word MOD05_021F48F0 - - thumb_func_start MOD05_021F47B4 -MOD05_021F47B4: ; 0x021F47B4 - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #8] - cmp r0, #3 - bhi _021F483C - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021F47CA: ; jump table - .short _021F47D2 - _021F47CA - 2 ; case 0 - .short _021F47DE - _021F47CA - 2 ; case 1 - .short _021F480A - _021F47CA - 2 ; case 2 - .short _021F4830 - _021F47CA - 2 ; case 3 -_021F47D2: - mov r0, #3 - str r0, [r4, #4] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r4, pc} -_021F47DE: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - mov r0, #0xc3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02012988 - ldr r1, [r4, #4] - mov r2, #3 - sub r1, r2, r1 - bl MOD05_021F4878 - ldr r0, [r4, #4] - cmp r0, #0 - bgt _021F483C - mov r0, #3 - str r0, [r4, #4] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r4, pc} -_021F480A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - mov r0, #0xc3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02012988 - ldr r1, [r4, #4] - mov r2, #3 - bl MOD05_021F4878 - ldr r0, [r4, #4] - cmp r0, #0 - bgt _021F483C - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r4, pc} -_021F4830: - add r0, r4, #0 - bl MOD05_021F491C - mov r0, #0 - bl G3X_SetHOffset -_021F483C: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4840 -MOD05_021F4840: ; 0x021F4840 - push {r4, lr} - ldr r1, _021F4870 ; =0x04000006 - ldrh r4, [r1] - mov r1, #0xc3 - lsl r1, r1, #2 - ldr r0, [r0, r1] - bl FUN_0201299C - cmp r4, #0xc0 - bge _021F486E - add r3, r4, #1 - cmp r3, #0xc0 - blt _021F485C - sub r3, #0xc0 -_021F485C: - ldr r1, _021F4874 ; =0x04000004 - ldrh r2, [r1] - mov r1, #2 - tst r1, r2 - beq _021F486E - lsl r1, r3, #1 - ldrh r0, [r0, r1] - bl G3X_SetHOffset -_021F486E: - pop {r4, pc} - .balign 4, 0 -_021F4870: .word 0x04000006 -_021F4874: .word 0x04000004 - - thumb_func_start MOD05_021F4878 -MOD05_021F4878: ; 0x021F4878 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - lsl r0, r1, #1 - add r0, r1, r0 - add r1, r2, #0 - mov r4, #1 - bl _s32_div_f - neg r1, r0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r0, r0, #0x10 - mov r6, #0 - str r1, [sp] - lsr r7, r0, #0x10 -_021F4896: - add r0, r6, #0 - mov r1, #0xa - bl _s32_div_f - cmp r1, #0 - bne _021F48A6 - mov r0, #1 - eor r4, r0 -_021F48A6: - cmp r4, #0 - beq _021F48AE - strh r7, [r5] - b _021F48B2 -_021F48AE: - ldr r0, [sp] - strh r0, [r5] -_021F48B2: - add r6, r6, #1 - add r5, r5, #2 - cmp r6, #0xc0 - blt _021F4896 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F48BC -MOD05_021F48BC: ; 0x021F48BC - mov r2, #0xc6 - ldr r3, _021F48C8 ; =G3X_SetHOffset - mov r0, #0 - lsl r2, r2, #2 - str r0, [r1, r2] - bx r3 - .balign 4, 0 -_021F48C8: .word G3X_SetHOffset - - thumb_func_start MOD05_021F48CC -MOD05_021F48CC: ; 0x021F48CC - ldr r3, _021F48D4 ; =MOD05_021F48D8 - add r0, r1, #0 - bx r3 - nop -_021F48D4: .word MOD05_021F48D8 - - thumb_func_start MOD05_021F48D8 -MOD05_021F48D8: ; 0x021F48D8 - push {r3, lr} - ldr r1, [r0] - cmp r1, #1 - bne _021F48EE - mov r1, #0xc6 - lsl r1, r1, #2 - ldr r1, [r0, r1] - cmp r1, #1 - bne _021F48EE - bl MOD05_021F4840 -_021F48EE: - pop {r3, pc} - - thumb_func_start MOD05_021F48F0 -MOD05_021F48F0: ; 0x021F48F0 - ldr r3, _021F48F8 ; =MOD05_021F48FC - add r0, r1, #0 - bx r3 - nop -_021F48F8: .word MOD05_021F48FC - - thumb_func_start MOD05_021F48FC -MOD05_021F48FC: ; 0x021F48FC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #1 - bne _021F4918 - mov r0, #0xc3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_020129B4 - mov r0, #0xc6 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] -_021F4918: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F491C -MOD05_021F491C: ; 0x021F491C - push {r4, lr} - add r4, r0, #0 - mov r0, #0xc5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD05_021F4648 - mov r0, #0xc5 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, #8 - ldr r0, [r4, r0] - bl FUN_0200CAB4 - mov r0, #0xc7 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r0, #4 - ldr r0, [r4, r0] - bl FUN_0200CAB4 - mov r0, #0x32 - mov r1, #0 - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r0, #4 - ldr r0, [r4, r0] - bl FUN_0200CAB4 - mov r0, #0xc9 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] - str r1, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4968 -MOD05_021F4968: ; 0x021F4968 - ldr r2, [r1, #0x14] - ldr r3, _021F4974 ; =FUN_02016B44 - add r1, r1, r2 - sub r1, r1, r0 - bx r3 - nop -_021F4974: .word ReallocFromHeap - - thumb_func_start MOD05_021F4978 -MOD05_021F4978: ; 0x021F4978 - push {r4, r5, r6, lr} - add r6, r1, #0 - mov r1, #0x23 - add r5, r0, #0 - mov r0, #4 - lsl r1, r1, #6 - bl AllocFromHeap - add r4, r0, #0 - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeapAtEnd - ldr r1, _021F49A8 ; =0x000008B8 - mov r2, #0 - str r0, [r4, r1] - ldr r0, [r4, r1] - str r5, [r0] - ldr r0, [r4, r1] - str r6, [r0, #4] - ldr r0, [r4, r1] - str r2, [r0, #0xc] - add r0, r4, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F49A8: .word 0x000008B8 - - thumb_func_start MOD05_021F49AC -MOD05_021F49AC: ; 0x021F49AC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x110 - add r5, r0, #0 - ldr r0, _021F4B9C ; =0x000008B8 - mov r1, #0x2a - ldr r7, [r5, r0] - sub r0, #8 - ldr r2, [r7] - add r0, r5, r0 - bl ReadWholeNarcMemberByIdPair - mov r1, #0x8b - lsl r1, r1, #4 - ldrh r1, [r5, r1] - mov r0, #0x2b - mov r2, #4 - bl AllocAndReadWholeNarcMemberByIdPair - ldr r1, _021F4BA0 ; =0x000008BC - str r0, [r5, r1] - ldr r0, [r5, r1] - ldrh r1, [r0] - ldr r0, _021F4BA4 ; =0x00000226 - strh r1, [r7, #8] - cmp r1, r0 - blo _021F49E4 - bl GF_AssertFail -_021F49E4: - ldr r1, _021F4BA8 ; =0x000008A4 - mov r0, #0 - str r0, [r5, r1] - add r1, #0xe - ldrh r1, [r5, r1] - mov r0, #0x2c - mov r2, #4 - bl AllocAndReadWholeNarcMemberByIdPair - ldr r1, _021F4BAC ; =0x0000089C - mov r2, #4 - str r0, [r5, r1] - add r1, #0x14 - ldrh r1, [r5, r1] - mov r0, #0x47 - bl AllocAndReadWholeNarcMemberByIdPair - mov r1, #0x8a - lsl r1, r1, #4 - str r0, [r5, r1] - sub r0, r1, #4 - ldr r0, [r5, r0] - bl NNS_G3dGetTex - ldr r1, _021F4BA8 ; =0x000008A4 - str r0, [r5, r1] - ldrh r0, [r7, #8] - cmp r0, #0 - beq _021F4A2C - sub r0, r1, #4 - ldr r0, [r5, r0] - bl NNS_G3dGetTex - ldr r1, _021F4BB0 ; =0x000008A8 - str r0, [r5, r1] - b _021F4A32 -_021F4A2C: - mov r2, #0 - add r0, r1, #4 - str r2, [r5, r0] -_021F4A32: - ldr r0, _021F4BA8 ; =0x000008A4 - ldr r0, [r5, r0] - bl FUN_0201B3C4 - cmp r0, #0 - bne _021F4A42 - bl GF_AssertFail -_021F4A42: - ldr r1, _021F4BAC ; =0x0000089C - ldr r0, [r5, r1] - add r1, #8 - ldr r1, [r5, r1] - bl MOD05_021F4968 - ldr r0, _021F4BB0 ; =0x000008A8 - ldr r0, [r5, r0] - cmp r0, #0 - beq _021F4A70 - bl FUN_0201B3C4 - cmp r0, #0 - bne _021F4A62 - bl GF_AssertFail -_021F4A62: - mov r1, #0x8a - lsl r1, r1, #4 - ldr r0, [r5, r1] - add r1, #8 - ldr r1, [r5, r1] - bl MOD05_021F4968 -_021F4A70: - mov r2, #0 - ldr r0, _021F4BA4 ; =0x00000226 - add r3, r5, #0 - add r1, r2, #0 -_021F4A78: - add r2, r2, #1 - str r1, [r3, #4] - add r3, r3, #4 - cmp r2, r0 - blt _021F4A78 - ldr r0, _021F4BB4 ; =0x000008AC - str r1, [r5, r0] - mov r0, #0x28 - mov r1, #4 - bl NARC_ctor - str r0, [sp, #0xc] - ldr r0, [r7, #4] - bl MOD05_021DA220 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldrh r0, [r7, #8] - cmp r0, #0 - ble _021F4B10 - ldr r0, [sp, #8] - str r0, [sp] -_021F4AA6: - ldr r0, _021F4BA0 ; =0x000008BC - ldr r1, [r5, r0] - ldr r0, [sp] - add r0, r1, r0 - ldrh r6, [r0, #2] - lsl r0, r6, #2 - add r4, r5, r0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F4ABE - bl GF_AssertFail -_021F4ABE: - ldr r0, [sp, #0xc] - add r1, r6, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - str r0, [r4, #4] - ldr r0, [sp, #4] - cmp r6, r0 - bge _021F4AEC - ldr r0, [r4, #4] - bl NNS_G3dGetMdlSet - add r1, r0, #0 - ldrh r2, [r1, #0xe] - ldr r3, [r7, #4] - add r0, r6, #0 - add r2, r1, r2 - ldr r2, [r2, #0xc] - add r1, r1, r2 - ldr r2, _021F4BB0 ; =0x000008A8 - ldr r2, [r5, r2] - bl MOD05_021D9CEC -_021F4AEC: - ldr r1, _021F4BB0 ; =0x000008A8 - ldr r0, [r4, #4] - ldr r1, [r5, r1] - bl FUN_0201B3A8 - cmp r0, #0 - bne _021F4AFE - bl GF_AssertFail -_021F4AFE: - ldr r0, [sp] - ldrh r1, [r7, #8] - add r0, r0, #2 - str r0, [sp] - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, r1 - blt _021F4AA6 -_021F4B10: - ldr r0, [r5, #4] - cmp r0, #0 - bne _021F4B46 - ldr r0, [sp, #0xc] - mov r1, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - str r0, [r5, #4] - bl NNS_G3dGetTex - add r4, r0, #0 - beq _021F4B46 - bl FUN_0201B3C4 - cmp r0, #0 - bne _021F4B36 - bl GF_AssertFail -_021F4B36: - ldr r0, [r5, #4] - add r1, r4, #0 - bl FUN_0201B3A8 - cmp r0, #0 - bne _021F4B46 - bl GF_AssertFail -_021F4B46: - ldr r0, [sp, #0xc] - bl NARC_dtor - ldr r2, _021F4BB8 ; =0x04000060 - ldr r0, _021F4BBC ; =0xFFFFCFFF - ldrh r1, [r2] - and r1, r0 - mov r0, #0x20 - orr r0, r1 - strh r0, [r2] - ldr r0, _021F4BC0 ; =0x000008B6 - ldrh r0, [r5, r0] - cmp r0, #0 - bne _021F4B6A - ldr r0, _021F4BC4 ; =UNK05_021FC624 - bl G3X_SetEdgeColorTable - b _021F4B70 -_021F4B6A: - ldr r0, _021F4BC8 ; =UNK05_021FC634 - bl G3X_SetEdgeColorTable -_021F4B70: - bl MOD05_021DB900 - ldr r1, _021F4BB4 ; =0x000008AC - str r0, [r5, r1] - ldr r1, _021F4BCC ; =UNK05_021FD648 - add r0, sp, #0x10 - bl sprintf - ldr r1, _021F4BB4 ; =0x000008AC - add r0, sp, #0x10 - ldr r1, [r5, r1] - bl MOD05_021DB918 - ldr r0, _021F4B9C ; =0x000008B8 - ldr r0, [r5, r0] - bl FreeToHeap - ldr r0, _021F4B9C ; =0x000008B8 - mov r1, #0 - str r1, [r5, r0] - add sp, #0x110 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021F4B9C: .word 0x000008B8 -_021F4BA0: .word 0x000008BC -_021F4BA4: .word 0x00000226 -_021F4BA8: .word 0x000008A4 -_021F4BAC: .word 0x0000089C -_021F4BB0: .word 0x000008A8 -_021F4BB4: .word 0x000008AC -_021F4BB8: .word 0x04000060 -_021F4BBC: .word 0xFFFFCFFF -_021F4BC0: .word 0x000008B6 -_021F4BC4: .word UNK05_021FC624 -_021F4BC8: .word UNK05_021FC634 -_021F4BCC: .word UNK05_021FD648 - - thumb_func_start MOD05_021F4BD0 -MOD05_021F4BD0: ; 0x021F4BD0 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bne _021F4BDC - bl GF_AssertFail -_021F4BDC: - add r2, r4, #4 - lsl r1, r5, #2 - ldr r0, [r2, r1] - cmp r0, #0 - bne _021F4BF4 - ldr r0, [r4, #4] - cmp r0, #0 - bne _021F4BF0 - bl GF_AssertFail -_021F4BF0: - add r0, r4, #4 - pop {r3, r4, r5, pc} -_021F4BF4: - add r0, r2, r1 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F4BF8 -MOD05_021F4BF8: ; 0x021F4BF8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r1, [r5] - ldr r0, _021F4C64 ; =0x000008AC - ldr r0, [r1, r0] - cmp r0, #0 - beq _021F4C0A - bl MOD05_021DB9BC -_021F4C0A: - mov r6, #0 - ldr r7, _021F4C68 ; =0x00000226 - add r4, r6, #0 -_021F4C10: - ldr r0, [r5] - add r0, r0, r4 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021F4C1E - bl FreeToHeap -_021F4C1E: - add r6, r6, #1 - add r4, r4, #4 - cmp r6, r7 - blt _021F4C10 - ldr r1, [r5] - ldr r0, _021F4C6C ; =0x000008BC - ldr r0, [r1, r0] - bl FreeToHeap - ldr r1, [r5] - ldr r0, _021F4C70 ; =0x0000089C - ldr r0, [r1, r0] - bl FreeToHeap - ldr r1, [r5] - ldr r0, _021F4C70 ; =0x0000089C - mov r2, #0 - str r2, [r1, r0] - ldr r1, [r5] - add r0, r0, #4 - ldr r0, [r1, r0] - bl FreeToHeap - mov r0, #0x8a - ldr r1, [r5] - mov r2, #0 - lsl r0, r0, #4 - str r2, [r1, r0] - ldr r0, [r5] - bl FreeToHeap - mov r0, #0 - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} - nop -_021F4C64: .word 0x000008AC -_021F4C68: .word 0x00000226 -_021F4C6C: .word 0x000008BC -_021F4C70: .word 0x0000089C - - thumb_func_start MOD05_021F4C74 -MOD05_021F4C74: ; 0x021F4C74 - push {r4, lr} - add r4, r0, #0 - bne _021F4C7E - bl GF_AssertFail -_021F4C7E: - ldr r0, _021F4C84 ; =0x000008A4 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4, 0 -_021F4C84: .word 0x000008A4 - - thumb_func_start MOD05_021F4C88 -MOD05_021F4C88: ; 0x021F4C88 - push {r4, lr} - add r4, r0, #0 - bne _021F4C92 - bl GF_AssertFail -_021F4C92: - ldr r0, _021F4C98 ; =0x000008A8 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4, 0 -_021F4C98: .word 0x000008A8 - - thumb_func_start MOD05_021F4C9C -MOD05_021F4C9C: ; 0x021F4C9C - ldr r1, _021F4CA4 ; =0x000008AC - ldr r0, [r0, r1] - bx lr - nop -_021F4CA4: .word 0x000008AC - - thumb_func_start MOD05_021F4CA8 -MOD05_021F4CA8: ; 0x021F4CA8 - ldr r1, _021F4CB8 ; =0x000008B6 - ldrh r0, [r0, r1] - cmp r0, #0 - beq _021F4CB4 - mov r0, #1 - bx lr -_021F4CB4: - mov r0, #0 - bx lr - .balign 4, 0 -_021F4CB8: .word 0x000008B6 - - thumb_func_start MOD05_021F4CBC -MOD05_021F4CBC: ; 0x021F4CBC - ldr r1, _021F4CD0 ; =0x000008B6 - ldrh r0, [r0, r1] - cmp r0, #0 - bne _021F4CC8 - mov r0, #1 - b _021F4CCA -_021F4CC8: - mov r0, #0 -_021F4CCA: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr - .balign 4, 0 -_021F4CD0: .word 0x000008B6 - - thumb_func_start MOD05_021F4CD4 -MOD05_021F4CD4: ; 0x021F4CD4 - ldr r2, _021F4CE0 ; =0x000008BC - ldr r2, [r0, r2] - lsl r0, r1, #1 - ldrh r0, [r2, r0] - bx lr - nop -_021F4CE0: .word 0x000008BC - - thumb_func_start MOD05_021F4CE4 -MOD05_021F4CE4: ; 0x021F4CE4 - lsl r1, r1, #2 - add r0, r0, r1 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021F4CF2 - mov r0, #1 - bx lr -_021F4CF2: - mov r0, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F4CF8 -MOD05_021F4CF8: ; 0x021F4CF8 - push {r4, lr} - mov r0, #4 - mov r1, #0xfc - bl AllocFromHeap - mov r4, #0 - add r2, r4, #0 -_021F4D06: - lsl r1, r4, #3 - add r3, r0, r1 - strb r2, [r0, r1] - add r1, r4, #1 - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - str r2, [r3, #4] - cmp r4, #0x15 - blo _021F4D06 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4D1C -MOD05_021F4D1C: ; 0x021F4D1C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - bl FreeToHeap - mov r0, #0 - str r0, [r4] - pop {r4, pc} - - thumb_func_start MOD05_021F4D2C -MOD05_021F4D2C: ; 0x021F4D2C - push {r3, r4, r5, r6, lr} - sub sp, #0x1c - add r5, r0, #0 - ldr r0, _021F4D7C ; =0x000007D8 - str r0, [r1] - ldr r0, [r5, #0x38] - bl FUN_02055320 - add r4, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_0205532C - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_020552F8 - cmp r0, #0 - bne _021F4D76 - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - add r0, sp, #0xc - mov r2, #0 - str r0, [sp, #8] - add r0, r4, #0 - add r1, r6, #0 - sub r3, r2, #1 - bl FUN_0204A840 - add r0, r5, #0 - mov r1, #0x1a - add r2, sp, #0xc - mov r3, #0 - bl FUN_0204A8C4 - add sp, #0x1c - pop {r3, r4, r5, r6, pc} -_021F4D76: - mov r0, #0 - add sp, #0x1c - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021F4D7C: .word 0x000007D8 - - thumb_func_start MOD05_021F4D80 -MOD05_021F4D80: ; 0x021F4D80 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, [r4, #0x1c] - ldr r0, [r0] - bl MOD05_021F50FC - add r5, r0, #0 - cmp r5, #0x15 - bne _021F4D96 - bl GF_AssertFail -_021F4D96: - ldr r0, [r4, #0xc] - bl FUN_0202A9B0 - bl FUN_0202A9BC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0202A9C8 - add r4, r0, #0 - ldr r0, [r4] - bl MOD05_021F5120 - cmp r0, #0 - beq _021F4DB8 - mov r0, #3 - pop {r3, r4, r5, pc} -_021F4DB8: - ldr r0, [r4] - cmp r0, #0 - beq _021F4DC2 - mov r0, #2 - pop {r3, r4, r5, pc} -_021F4DC2: - mov r0, #1 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4DC8 -MOD05_021F4DC8: ; 0x021F4DC8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r0, [r6, #0x1c] - ldr r0, [r0] - bl MOD05_021F50FC - add r5, r0, #0 - cmp r5, #0x15 - bne _021F4DDE - bl GF_AssertFail -_021F4DDE: - ldr r0, [r6, #0xc] - bl FUN_0202A9B0 - bl FUN_0202A9BC - str r0, [sp] - ldr r1, [sp] - add r0, r5, #0 - bl FUN_0202A9C8 - add r4, r0, #0 - mov r0, #0x5a - lsl r0, r0, #4 - str r0, [r4] - ldr r0, [r6, #0xc] - bl Sav2_PlayerData_GetProfileAddr - bl PlayerProfile_GetTrainerID - add r1, r5, #0 - bl MOD05_021F5138 - add r7, r0, #0 - ldr r0, [sp] - bl FUN_0202A9C0 - cmp r5, r0 - bne _021F4E42 - bl LCRandom - mov r1, #0x29 - lsl r1, r1, #4 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - cmp r6, #0x64 - blo _021F4E2E - bl GF_AssertFail -_021F4E2E: - cmp r6, #0x5a - bhs _021F4E42 - add r0, r4, #4 - bl MOD05_021F4F44 - ldrb r0, [r4, #6] - bl MOD05_021F4FAC - strb r0, [r4, #7] - pop {r3, r4, r5, r6, r7, pc} -_021F4E42: - add r0, r7, #0 - add r1, r4, #6 - bl MOD05_021F4EE4 - ldrb r0, [r4, #6] - cmp r0, #0 - beq _021F4E60 - add r0, r4, #4 - bl MOD05_021F4F44 - ldrb r0, [r4, #6] - bl MOD05_021F4F98 - strb r0, [r4, #5] - b _021F4E68 -_021F4E60: - mov r0, #0 - strb r0, [r4, #5] - strb r0, [r4, #4] - str r0, [r4] -_021F4E68: - ldrb r0, [r4, #6] - bl MOD05_021F4FAC - strb r0, [r4, #7] - ldr r1, [sp] - add r0, r5, #0 - bl FUN_0202A9C4 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F4E7C -MOD05_021F4E7C: ; 0x021F4E7C - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - ldr r0, [r5, #0x1c] - ldr r0, [r0] - bl MOD05_021F50FC - add r4, r0, #0 - cmp r4, #0x15 - bne _021F4E94 - bl GF_AssertFail -_021F4E94: - add r0, r5, #0 - add r0, #0xa4 - ldr r0, [r0] - lsl r4, r4, #3 - add r0, r0, r4 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021F4EE0 - ldr r0, [r5, #0x24] - bl MOD05_021EF618 - ldr r1, [r5, #0x24] - add r2, sp, #0 - bl MOD05_021EF604 - ldr r0, [sp] - mov r1, #0x1a - bl MOD05_021E7ED8 - add r6, r0, #0 - bl MOD05_021E7EC8 - add r1, r0, #0 - cmp r6, #0 - beq _021F4ED6 - add r3, r5, #0 - add r3, #0xa4 - ldr r3, [r3] - ldr r0, [r5, #0x4c] - ldrb r3, [r3, r4] - mov r2, #0x1a - bl MOD05_021D9FB4 -_021F4ED6: - add r5, #0xa4 - ldr r0, [r5] - mov r1, #0 - add r0, r0, r4 - str r1, [r0, #4] -_021F4EE0: - add sp, #4 - pop {r3, r4, r5, r6, pc} - - thumb_func_start MOD05_021F4EE4 -MOD05_021F4EE4: ; 0x021F4EE4 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r1, #0 - bl LCRandom - mov r1, #0x29 - lsl r1, r1, #4 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #0x64 - blo _021F4F02 - bl GF_AssertFail -_021F4F02: - cmp r6, #0 - beq _021F4F2A - cmp r4, #1 - bge _021F4F10 - mov r0, #3 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F10: - cmp r4, #0xa - bge _021F4F1A - mov r0, #0 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F1A: - cmp r4, #0x1e - bge _021F4F24 - mov r0, #1 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F24: - mov r0, #2 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F2A: - cmp r4, #0xa - bge _021F4F34 - mov r0, #0 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F34: - cmp r4, #0x1e - bge _021F4F3E - mov r0, #2 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021F4F3E: - mov r0, #1 - strb r0, [r5] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F4F44 -MOD05_021F4F44: ; 0x021F4F44 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl LCRandom - mov r1, #0x29 - lsl r1, r1, #4 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r5, #0x64 - blo _021F4F60 - bl GF_AssertFail -_021F4F60: - cmp r5, #5 - bge _021F4F6A - mov r0, #5 - strb r0, [r4] - pop {r3, r4, r5, pc} -_021F4F6A: - cmp r5, #0xa - bge _021F4F74 - mov r0, #4 - strb r0, [r4] - pop {r3, r4, r5, pc} -_021F4F74: - cmp r5, #0x14 - bge _021F4F7E - mov r0, #3 - strb r0, [r4] - pop {r3, r4, r5, pc} -_021F4F7E: - cmp r5, #0x28 - bge _021F4F88 - mov r0, #2 - strb r0, [r4] - pop {r3, r4, r5, pc} -_021F4F88: - cmp r5, #0x3c - bge _021F4F92 - mov r0, #1 - strb r0, [r4] - pop {r3, r4, r5, pc} -_021F4F92: - mov r0, #0 - strb r0, [r4] - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F4F98 -MOD05_021F4F98: ; 0x021F4F98 - cmp r0, #3 - bne _021F4FA0 - mov r0, #2 - bx lr -_021F4FA0: - cmp r0, #2 - bne _021F4FA8 - mov r0, #1 - bx lr -_021F4FA8: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021F4FAC -MOD05_021F4FAC: ; 0x021F4FAC - push {r3, r4, r5, lr} - add r4, r0, #0 - bl LCRandom - mov r1, #0x29 - lsl r1, r1, #4 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r5, #0x64 - blo _021F4FC8 - bl GF_AssertFail -_021F4FC8: - cmp r4, #3 - bne _021F4FE8 - cmp r5, #5 - bge _021F4FD4 - mov r0, #2 - pop {r3, r4, r5, pc} -_021F4FD4: - cmp r5, #6 - bge _021F4FDC - mov r0, #1 - pop {r3, r4, r5, pc} -_021F4FDC: - cmp r5, #7 - bge _021F4FE4 - mov r0, #0 - pop {r3, r4, r5, pc} -_021F4FE4: - mov r0, #3 - pop {r3, r4, r5, pc} -_021F4FE8: - cmp r4, #2 - bne _021F5008 - cmp r5, #0x4b - bge _021F4FF4 - mov r0, #2 - pop {r3, r4, r5, pc} -_021F4FF4: - cmp r5, #0x5f - bge _021F4FFC - mov r0, #1 - pop {r3, r4, r5, pc} -_021F4FFC: - cmp r5, #0x60 - bge _021F5004 - mov r0, #0 - pop {r3, r4, r5, pc} -_021F5004: - mov r0, #3 - pop {r3, r4, r5, pc} -_021F5008: - cmp r4, #1 - bne _021F5028 - cmp r5, #0x13 - bge _021F5014 - mov r0, #2 - pop {r3, r4, r5, pc} -_021F5014: - cmp r5, #0x4f - bge _021F501C - mov r0, #1 - pop {r3, r4, r5, pc} -_021F501C: - cmp r5, #0x63 - bge _021F5024 - mov r0, #0 - pop {r3, r4, r5, pc} -_021F5024: - mov r0, #3 - pop {r3, r4, r5, pc} -_021F5028: - cmp r5, #1 - bge _021F5030 - mov r0, #2 - pop {r3, r4, r5, pc} -_021F5030: - cmp r5, #0x13 - bge _021F5038 - mov r0, #1 - pop {r3, r4, r5, pc} -_021F5038: - cmp r5, #0x63 - bge _021F5040 - mov r0, #0 - pop {r3, r4, r5, pc} -_021F5040: - mov r0, #3 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F5044 -MOD05_021F5044: ; 0x021F5044 - mov r2, #1 - cmp r0, #3 - bne _021F5050 - mov r0, #2 - strb r0, [r1] - b _021F5064 -_021F5050: - cmp r0, #2 - bne _021F5058 - strb r2, [r1] - b _021F5064 -_021F5058: - cmp r0, #1 - bne _021F5062 - mov r0, #0 - strb r0, [r1] - b _021F5064 -_021F5062: - mov r2, #0 -_021F5064: - add r0, r2, #0 - bx lr - - thumb_func_start MOD05_021F5068 -MOD05_021F5068: ; 0x021F5068 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, [r5, #0x28] - add r7, r1, #0 - add r1, r2, #0 - bl MapMatrix_GetMapHeaderFromID - bl MOD05_021F50FC - add r4, r0, #0 - cmp r4, #0x15 - beq _021F50F8 - ldr r0, [r5, #0xc] - bl FUN_0202A9B0 - bl FUN_0202A9BC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0202A9C8 - add r6, r0, #0 - ldr r0, [r6] - bl MOD05_021F5120 - cmp r0, #0 - beq _021F50F8 - ldrb r0, [r6, #7] - add r1, sp, #4 - bl MOD05_021F5044 - add r6, r0, #0 - beq _021F50F8 - add r0, r7, #0 - mov r1, #0x1a - bl MOD05_021E7ED8 - cmp r0, #0 - beq _021F50F8 - bl MOD05_021E7EC8 - add r3, r5, #0 - add r7, r0, #0 - add r3, #0xa4 - ldr r3, [r3] - lsl r4, r4, #3 - ldrb r3, [r3, r4] - ldr r0, [r5, #0x4c] - add r1, r7, #0 - mov r2, #0x1a - bl MOD05_021D9FB4 - add r1, sp, #4 - add r2, r5, #0 - add r2, #0xa4 - ldrb r0, [r1] - ldr r2, [r2] - add r3, r7, #0 - strb r0, [r2, r4] - add r0, r5, #0 - add r0, #0xa4 - ldr r0, [r0] - mov r2, #1 - add r0, r0, r4 - str r6, [r0, #4] - ldr r0, [r5, #0x4c] - str r0, [sp] - ldrb r1, [r1] - mov r0, #0x1a - bl MOD05_021D9DC0 -_021F50F8: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F50FC -MOD05_021F50FC: ; 0x021F50FC - ldr r2, _021F511C ; =UNK05_021FC650 - mov r3, #0 -_021F5100: - lsl r1, r3, #2 - ldr r1, [r2, r1] - cmp r0, r1 - bne _021F510C - add r0, r3, #0 - bx lr -_021F510C: - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - cmp r3, #0x15 - blo _021F5100 - add r0, r3, #0 - bx lr - nop -_021F511C: .word UNK05_021FC650 - - thumb_func_start MOD05_021F5120 -MOD05_021F5120: ; 0x021F5120 - cmp r0, #0 - ble _021F512E - ldr r1, _021F5134 ; =0x00000438 - cmp r0, r1 - bgt _021F512E - mov r0, #1 - bx lr -_021F512E: - mov r0, #0 - bx lr - nop -_021F5134: .word 0x00000438 - - thumb_func_start MOD05_021F5138 -MOD05_021F5138: ; 0x021F5138 - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - lsr r2, r0, #0x18 - add r1, sp, #0 - strb r2, [r1] - lsr r2, r0, #0x10 - strb r2, [r1, #1] - lsr r2, r0, #8 - strb r2, [r1, #2] - strb r0, [r1, #3] - ldrb r0, [r1] - mov r1, #0x15 - bl _s32_div_f - add r0, sp, #0 - strb r1, [r0] - ldrb r0, [r0, #1] - mov r1, #0x15 - bl _s32_div_f - add r0, sp, #0 - strb r1, [r0, #1] - ldrb r0, [r0, #2] - mov r1, #0x15 - bl _s32_div_f - add r0, sp, #0 - strb r1, [r0, #2] - ldrb r0, [r0, #3] - mov r1, #0x15 - bl _s32_div_f - add r0, sp, #0 - strb r1, [r0, #3] - mov r0, #0 - mov r3, #1 - add r1, sp, #0 - add r2, r0, #0 -_021F5184: - add r5, r2, #0 - cmp r3, #0 - bls _021F51A8 -_021F518A: - ldrb r7, [r1, r5] - ldrb r6, [r1, r3] - cmp r7, r6 - bne _021F519E - add r6, r6, #1 - strb r6, [r1, r3] - ldrb r6, [r1, r3] - cmp r6, #0x15 - blo _021F519E - strb r0, [r1, r3] -_021F519E: - add r5, r5, #1 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - cmp r5, r3 - blo _021F518A -_021F51A8: - add r3, r3, #1 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - cmp r3, #4 - blo _021F5184 - mov r2, #0 - add r1, sp, #0 -_021F51B6: - ldrb r0, [r1, r2] - cmp r4, r0 - bne _021F51C0 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F51C0: - add r0, r2, #1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - cmp r2, #4 - blo _021F51B6 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F51D0 -MOD05_021F51D0: ; 0x021F51D0 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, [r4, #0x1c] - ldr r0, [r0] - bl MOD05_021F50FC - add r5, r0, #0 - cmp r5, #0x15 - bne _021F51E6 - bl GF_AssertFail -_021F51E6: - ldr r0, [r4, #0xc] - bl FUN_0202A9B0 - bl FUN_0202A9BC - add r1, r0, #0 - add r0, r5, #0 - bl FUN_0202A9C8 - add r4, r0, #0 - ldrb r1, [r4, #5] - mov r0, #0x6a - lsl r2, r1, #2 - ldr r1, _021F5218 ; =UNK05_021FC644 - ldr r1, [r1, r2] - mov r2, #4 - bl AllocAtEndAndReadWholeNarcMemberByIdPair - ldrb r1, [r4, #4] - lsl r1, r1, #2 - ldr r4, [r0, r1] - bl FreeToHeap - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021F5218: .word UNK05_021FC644 - - thumb_func_start MOD05_021F521C -MOD05_021F521C: ; 0x021F521C - push {r3, lr} - add r3, r1, #0 - bmi _021F522A - add r1, r2, #0 - add r2, r3, #0 - bl MOD05_021F5068 -_021F522A: - pop {r3, pc} - - thumb_func_start MOD05_021F522C -MOD05_021F522C: ; 0x021F522C - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x1c] - ldr r0, [r0] - bl MOD05_021F50FC - add r4, r0, #0 - cmp r4, #0x15 - bne _021F5242 - bl GF_AssertFail -_021F5242: - add r0, r5, #0 - add r0, #0xa4 - ldr r1, [r0] - lsl r0, r4, #3 - mov r2, #0 - add r0, r1, r0 - str r2, [r0, #4] - ldr r0, [r5, #0xc] - bl FUN_0202A9B0 - bl FUN_0202A9BC - add r1, r0, #0 - add r0, r4, #0 - bl FUN_0202A9C8 - mov r1, #0 - str r1, [r0] - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F5268 -MOD05_021F5268: ; 0x021F5268 - push {r3, r4, r5, lr} - mov r5, #0 - add r4, r0, #0 - add r0, r1, #0 - add r1, r2, #0 - str r5, [sp] - add r2, r5, #0 - bl GfGfxLoader_LoadFromNarc - str r0, [r4] - bl NNS_G3dGetMdlSet - str r0, [r4, #4] - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r0, r0, r1 - str r0, [r4, #8] - ldr r0, [r4] - bl NNS_G3dGetTex - str r0, [r4, #0xc] - cmp r0, #0 - beq _021F52A4 - mov r2, #1 - ldr r0, _021F52A8 ; =MOD05_021F52AC - add r1, r4, #0 - lsl r2, r2, #0xa - bl FUN_0200CA98 -_021F52A4: - pop {r3, r4, r5, pc} - nop -_021F52A8: .word MOD05_021F52AC - - thumb_func_start MOD05_021F52AC -MOD05_021F52AC: ; 0x021F52AC - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0xc] - bl FUN_0201B3C4 - ldr r0, [r4] - ldr r1, [r4, #0xc] - bl FUN_0201B3A8 - add r0, r5, #0 - bl FUN_0200CAB4 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F52C8 -MOD05_021F52C8: ; 0x021F52C8 - push {r4, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _021F52F8 - add r1, sp, #4 - add r2, sp, #0 - bl NNS_G3dTexReleaseTexKey - ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram - ldr r0, [sp, #4] - ldr r1, [r1] - blx r1 - ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram - ldr r0, [sp] - ldr r1, [r1] - blx r1 - ldr r0, [r4, #0xc] - bl NNS_G3dPlttReleasePlttKey - ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram - ldr r1, [r1] - blx r1 -_021F52F8: - ldr r0, [r4] - cmp r0, #0 - beq _021F5302 - bl FreeToHeap -_021F5302: - mov r1, #0x10 - mov r0, #0 -_021F5306: - strb r0, [r4] - add r4, r4, #1 - sub r1, r1, #1 - bne _021F5306 - add sp, #8 - pop {r4, pc} - nop -_021F5314: .word NNS_GfdDefaultFuncFreeTexVram -_021F5318: .word NNS_GfdDefaultFuncFreePlttVram - - thumb_func_start MOD05_021F531C -MOD05_021F531C: ; 0x021F531C - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r4, r1, #0 - mov r6, #0 - add r1, r3, #0 - add r5, r0, #0 - add r0, r2, #0 - ldr r3, [sp, #0x18] - add r2, r6, #0 - str r6, [sp] - bl GfGfxLoader_LoadFromNarc - add r2, r0, #0 - ldr r3, [sp, #0x1c] - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021F54EC - add r0, r6, #0 - str r0, [r5, #0x10] - add sp, #4 - pop {r3, r4, r5, r6, pc} - - thumb_func_start MOD05_021F5348 -MOD05_021F5348: ; 0x021F5348 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F54EC - mov r0, #1 - str r0, [r4, #0x10] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5358 -MOD05_021F5358: ; 0x021F5358 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F5376 - add r0, r1, #0 - ldr r1, [r4, #8] - bl NNS_G3dFreeAnmObj - ldr r0, [r4, #0x10] - cmp r0, #0 - bne _021F5376 - ldr r0, [r4] - bl FreeToHeap -_021F5376: - mov r1, #0x14 - mov r0, #0 -_021F537A: - strb r0, [r4] - add r4, r4, #1 - sub r1, r1, #1 - bne _021F537A - pop {r4, pc} - - thumb_func_start MOD05_021F5384 -MOD05_021F5384: ; 0x021F5384 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - ldr r0, [r0, #8] - ldrh r0, [r0, #4] - lsl r2, r0, #0xc - cmp r1, #0 - ble _021F53A2 - ldr r0, [r4, #0xc] - add r0, r0, r1 - add r1, r2, #0 - bl _s32_div_f - str r1, [r4, #0xc] - b _021F53B4 -_021F53A2: - ldr r0, [r4, #0xc] - add r3, r4, #0 - add r3, #0xc - add r0, r0, r1 - str r0, [r4, #0xc] - bpl _021F53B4 - ldr r0, [r3] - add r0, r0, r2 - str r0, [r3] -_021F53B4: - ldr r1, [r4, #0xc] - ldr r0, [r4, #8] - str r1, [r0] - pop {r4, pc} - - thumb_func_start MOD05_021F53BC -MOD05_021F53BC: ; 0x021F53BC - push {r3, r4} - ldr r2, [r0, #8] - ldr r3, [r0, #0xc] - ldr r2, [r2, #8] - ldrh r2, [r2, #4] - lsl r4, r2, #0xc - mov r2, #0 - cmp r1, #0 - ble _021F53DE - add r1, r3, r1 - cmp r1, r4 - bge _021F53D8 - str r1, [r0, #0xc] - b _021F53EA -_021F53D8: - str r4, [r0, #0xc] - mov r2, #1 - b _021F53EA -_021F53DE: - add r1, r3, r1 - bmi _021F53E6 - str r1, [r0, #0xc] - b _021F53EA -_021F53E6: - str r2, [r0, #0xc] - mov r2, #1 -_021F53EA: - ldr r1, [r0, #0xc] - ldr r0, [r0, #8] - str r1, [r0] - add r0, r2, #0 - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F53F8 -MOD05_021F53F8: ; 0x021F53F8 - str r1, [r0, #0xc] - ldr r0, [r0, #8] - str r1, [r0] - bx lr - - thumb_func_start MOD05_021F5400 -MOD05_021F5400: ; 0x021F5400 - push {r3, r4, r5, lr} - add r5, r1, #0 - mov r1, #0 - mov r2, #0x78 - add r4, r0, #0 - bl memset - ldr r1, [r5, #8] - add r0, r4, #0 - bl NNS_G3dRenderObjInit - mov r0, #1 - str r0, [r4, #0x6c] - lsl r0, r0, #0xc - str r0, [r4, #0x60] - str r0, [r4, #0x64] - str r0, [r4, #0x68] - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F5424 -MOD05_021F5424: ; 0x021F5424 - ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj - ldr r1, [r1, #8] - bx r3 - nop -_021F542C: .word NNS_G3dRenderObjAddAnmObj - - thumb_func_start MOD05_021F5430 -MOD05_021F5430: ; 0x021F5430 - push {r4, lr} - sub sp, #0x48 - add r4, r0, #0 - ldr r0, [r4, #0x6c] - cmp r0, #0 - beq _021F54C4 - add r0, sp, #0x24 - bl MTX_Identity33_ - add r0, r4, #0 - add r0, #0x70 - ldrh r0, [r0] - ldr r3, _021F54C8 ; =FX_SinCosTable_ - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #0 - bl MTX_RotX33_ - add r1, sp, #0x24 - add r0, sp, #0 - add r2, r1, #0 - bl MTX_Concat33 - add r0, r4, #0 - add r0, #0x74 - ldrh r0, [r0] - ldr r3, _021F54C8 ; =FX_SinCosTable_ - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #0 - bl MTX_RotZ33_ - add r1, sp, #0x24 - add r0, sp, #0 - add r2, r1, #0 - bl MTX_Concat33 - add r0, r4, #0 - add r0, #0x72 - ldrh r0, [r0] - ldr r3, _021F54C8 ; =FX_SinCosTable_ - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #0 - bl MTX_RotY33_ - add r1, sp, #0x24 - add r0, sp, #0 - add r2, r1, #0 - bl MTX_Concat33 - add r1, r4, #0 - add r0, r4, #0 - add r4, #0x60 - add r1, #0x54 - add r2, sp, #0x24 - add r3, r4, #0 - bl FUN_0201B26C -_021F54C4: - add sp, #0x48 - pop {r4, pc} - .balign 4, 0 -_021F54C8: .word FX_SinCosTable_ - - thumb_func_start MOD05_021F54CC -MOD05_021F54CC: ; 0x021F54CC - str r1, [r0, #0x6c] - bx lr - - thumb_func_start MOD05_021F54D0 -MOD05_021F54D0: ; 0x021F54D0 - str r1, [r0, #0x54] - str r2, [r0, #0x58] - str r3, [r0, #0x5c] - bx lr - - thumb_func_start MOD05_021F54D8 -MOD05_021F54D8: ; 0x021F54D8 - str r1, [r0, #0x60] - str r2, [r0, #0x64] - str r3, [r0, #0x68] - bx lr - - thumb_func_start MOD05_021F54E0 -MOD05_021F54E0: ; 0x021F54E0 - lsl r2, r2, #1 - add r0, r0, r2 - add r0, #0x70 - strh r1, [r0] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F54EC -MOD05_021F54EC: ; 0x021F54EC - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - str r2, [r5] - add r0, r2, #0 - mov r1, #0 - add r6, r3, #0 - bl NNS_G3dGetAnmByIdx - str r0, [r5, #4] - ldr r1, [r5, #4] - ldr r2, [r4, #8] - add r0, r6, #0 - bl NNS_G3dAllocAnmObj - str r0, [r5, #8] - ldr r1, [r5, #4] - ldr r2, [r4, #8] - ldr r3, [r4, #0xc] - bl NNS_G3dAnmObjInit - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F5518 -MOD05_021F5518: ; 0x021F5518 - push {r3, r4, lr} - sub sp, #4 - ldr r0, [r1, #8] - add r4, r2, #0 - bl MOD05_021F5608 - add r0, r4, #0 - mov r1, #0 - mov r2, #0xa - mov r3, #0x13 - bl MOD05_021F5660 - mov r3, #0 - str r3, [r4, #0x14] - mov r0, #0x10 - str r0, [sp] - ldr r0, _021F555C ; =0x04000050 - mov r1, #4 - mov r2, #0x29 - bl G2x_SetBlendAlpha_ - mov r0, #2 - mov r1, #0 - bl SetBgPriority - mov r0, #4 - mov r1, #1 - bl GX_EngineAToggleLayers - ldr r0, _021F5560 ; =0x00000648 - bl PlaySE - add sp, #4 - pop {r3, r4, pc} - .balign 4, 0 -_021F555C: .word 0x04000050 -_021F5560: .word 0x00000648 - - thumb_func_start MOD05_021F5564 -MOD05_021F5564: ; 0x021F5564 - push {r3, r4, lr} - sub sp, #4 - ldr r0, [r1, #8] - add r4, r2, #0 - bl MOD05_021F5608 - add r0, r4, #0 - mov r1, #0xa - mov r2, #0 - mov r3, #0xf - bl MOD05_021F5660 - mov r0, #0 - str r0, [r4, #0x14] - mov r0, #6 - str r0, [sp] - ldr r0, _021F5594 ; =0x04000050 - mov r1, #4 - mov r2, #0x21 - mov r3, #0xa - bl G2x_SetBlendAlpha_ - add sp, #4 - pop {r3, r4, pc} - .balign 4, 0 -_021F5594: .word 0x04000050 - - thumb_func_start MOD05_021F5598 -MOD05_021F5598: ; 0x021F5598 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F559C -MOD05_021F559C: ; 0x021F559C - push {r4, lr} - add r4, r2, #0 - ldr r0, [r4, #0x14] - cmp r0, #1 - beq _021F55C2 - add r0, r4, #0 - bl MOD05_021F5670 - cmp r0, #0 - beq _021F55B4 - mov r0, #1 - str r0, [r4, #0x14] -_021F55B4: - ldr r1, [r4] - mov r0, #0x10 - sub r0, r0, r1 - lsl r0, r0, #8 - orr r1, r0 - ldr r0, _021F55C4 ; =0x04000052 - strh r1, [r0] -_021F55C2: - pop {r4, pc} - .balign 4, 0 -_021F55C4: .word 0x04000052 - - thumb_func_start MOD05_021F55C8 -MOD05_021F55C8: ; 0x021F55C8 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F55CC -MOD05_021F55CC: ; 0x021F55CC - ldr r0, [r0, #4] - ldr r3, _021F55D8 ; =MOD05_021D8024 - ldr r0, [r0, #4] - ldr r1, _021F55DC ; =UNK05_021FC6C0 - bx r3 - nop -_021F55D8: .word MOD05_021D8024 -_021F55DC: .word UNK05_021FC6C0 - - thumb_func_start MOD05_021F55E0 -MOD05_021F55E0: ; 0x021F55E0 - ldr r3, _021F55E4 ; =MOD05_021D80A4 - bx r3 - .balign 4, 0 -_021F55E4: .word MOD05_021D80A4 - - thumb_func_start MOD05_021F55E8 -MOD05_021F55E8: ; 0x021F55E8 - push {r3, lr} - bl MOD05_021D80E4 - ldr r0, [r0, #0x14] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F55F4 -MOD05_021F55F4: ; 0x021F55F4 - ldr r0, [r0, #4] - ldr r3, _021F5600 ; =MOD05_021D8024 - ldr r0, [r0, #4] - ldr r1, _021F5604 ; =UNK05_021FC6A8 - bx r3 - nop -_021F5600: .word MOD05_021D8024 -_021F5604: .word UNK05_021FC6A8 - - thumb_func_start MOD05_021F5608 -MOD05_021F5608: ; 0x021F5608 - push {r3, r4, r5, lr} - sub sp, #8 - ldr r1, _021F5658 ; =0x00005D5F - add r5, r0, #0 - add r0, sp, #4 - strh r1, [r0] - mov r0, #2 - add r1, sp, #4 - add r2, r0, #0 - mov r3, #0xc2 - bl BG_LoadPlttData - mov r0, #4 - mov r1, #0x20 - bl AllocFromHeap - mov r1, #0x11 - mov r2, #0x20 - add r4, r0, #0 - bl memset - mov r0, #1 - str r0, [sp] - add r0, r5, #0 - mov r1, #2 - add r2, r4, #0 - mov r3, #0x20 - bl BG_LoadCharTilesData - add r0, r4, #0 - bl FreeToHeap - ldr r2, _021F565C ; =0x00006001 - add r0, r5, #0 - mov r1, #2 - bl BgFillTilemapBufferAndCommit - add sp, #8 - pop {r3, r4, r5, pc} - nop -_021F5658: .word 0x00005D5F -_021F565C: .word 0x00006001 - - thumb_func_start MOD05_021F5660 -MOD05_021F5660: ; 0x021F5660 - str r1, [r0] - str r1, [r0, #4] - sub r1, r2, r1 - str r1, [r0, #8] - str r3, [r0, #0x10] - mov r1, #0 - str r1, [r0, #0xc] - bx lr - - thumb_func_start MOD05_021F5670 -MOD05_021F5670: ; 0x021F5670 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #8] - ldr r0, [r4, #0xc] - mul r0, r1 - ldr r1, [r4, #0x10] - bl _s32_div_f - ldr r1, [r4, #4] - add r0, r0, r1 - str r0, [r4] - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - add r0, r0, #1 - cmp r0, r1 - bgt _021F5696 - str r0, [r4, #0xc] - mov r0, #0 - pop {r4, pc} -_021F5696: - str r1, [r4, #0xc] - mov r0, #1 - pop {r4, pc} - - thumb_func_start MOD05_021F569C -MOD05_021F569C: ; 0x021F569C - ldr r3, _021F56A4 ; =BG_SetMaskColor - mov r0, #2 - mov r1, #0 - bx r3 - .balign 4, 0 -_021F56A4: .word BG_SetMaskColor - - thumb_func_start MOD05_021F56A8 -MOD05_021F56A8: ; 0x021F56A8 - ldr r3, _021F56B0 ; =BG_SetMaskColor - mov r0, #2 - ldr r1, _021F56B4 ; =0x00007FFF - bx r3 - .balign 4, 0 -_021F56B0: .word BG_SetMaskColor -_021F56B4: .word 0x00007FFF - - thumb_func_start MOD05_021F56B8 -MOD05_021F56B8: ; 0x021F56B8 - push {r4, lr} - sub sp, #8 - ldr r1, _021F5710 ; =0x00007FFF - add r4, r0, #0 - add r0, sp, #4 - strh r1, [r0] - mov r0, #4 - mov r1, #0 - bl GX_EngineAToggleLayers - ldr r1, _021F5714 ; =0x0400000C - mov r0, #3 - ldrh r2, [r1] - mov r3, #0xc4 - bic r2, r0 - mov r0, #3 - orr r0, r2 - strh r0, [r1] - mov r0, #2 - add r1, sp, #4 - add r2, r0, #0 - bl BG_LoadPlttData - mov r1, #2 - str r1, [sp] - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #1 - bl BG_FillCharDataRange - ldr r0, [r4, #8] - ldr r2, _021F5718 ; =0x00006002 - mov r1, #2 - bl BgFillTilemapBufferAndCommit - mov r0, #4 - mov r1, #1 - bl GX_EngineAToggleLayers - add r0, r4, #0 - bl MOD05_021F569C - add sp, #8 - pop {r4, pc} - .balign 4, 0 -_021F5710: .word 0x00007FFF -_021F5714: .word 0x0400000C -_021F5718: .word 0x00006002 - - thumb_func_start MOD05_021F571C -MOD05_021F571C: ; 0x021F571C - push {r4, lr} - sub sp, #8 - ldr r1, _021F5774 ; =0x00007FFF - add r4, r0, #0 - add r0, sp, #4 - strh r1, [r0] - mov r0, #8 - mov r1, #0 - bl GX_EngineAToggleLayers - ldr r1, _021F5778 ; =0x0400000E - mov r0, #3 - ldrh r2, [r1] - mov r3, #0xc4 - bic r2, r0 - mov r0, #3 - orr r2, r0 - strh r2, [r1] - add r1, sp, #4 - mov r2, #2 - bl BG_LoadPlttData - mov r2, #2 - str r2, [sp] - ldr r0, [r4, #8] - mov r1, #3 - mov r3, #1 - bl BG_FillCharDataRange - ldr r0, [r4, #8] - ldr r2, _021F577C ; =0x00006002 - mov r1, #3 - bl BgFillTilemapBufferAndCommit - mov r0, #8 - mov r1, #1 - bl GX_EngineAToggleLayers - add r0, r4, #0 - bl MOD05_021F569C - add sp, #8 - pop {r4, pc} - nop -_021F5774: .word 0x00007FFF -_021F5778: .word 0x0400000E -_021F577C: .word 0x00006002 - - thumb_func_start MOD05_021F5780 -MOD05_021F5780: ; 0x021F5780 - push {r3, lr} - ldr r0, [r0, #4] - ldr r0, [r0, #0xc] - bl MOD05_021DC1D0 - ldr r3, _021F57A4 ; =UNK05_021FC6A4 - mov r2, #0 -_021F578E: - ldr r1, [r3] - cmp r0, r1 - bne _021F5798 - mov r0, #1 - pop {r3, pc} -_021F5798: - add r2, r2, #1 - add r3, r3, #4 - cmp r2, #1 - blt _021F578E - mov r0, #0 - pop {r3, pc} - .balign 4, 0 -_021F57A4: .word UNK05_021FC6A4 - - thumb_func_start MOD05_021F57A8 -MOD05_021F57A8: ; 0x021F57A8 - push {r3, lr} - ldr r0, [r0, #4] - ldr r0, [r0, #0xc] - bl MOD05_021DC1D0 - ldr r3, _021F57CC ; =UNK05_021FC6D8 - mov r2, #0 -_021F57B6: - ldr r1, [r3] - cmp r0, r1 - bne _021F57C0 - mov r0, #0 - pop {r3, pc} -_021F57C0: - add r2, r2, #1 - add r3, r3, #4 - cmp r2, #0x10 - blt _021F57B6 - mov r0, #1 - pop {r3, pc} - .balign 4, 0 -_021F57CC: .word UNK05_021FC6D8 - - thumb_func_start MOD05_021F57D0 -MOD05_021F57D0: ; 0x021F57D0 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021F57E2 - bl MOD05_021F55E0 - mov r0, #0 - str r0, [r4] -_021F57E2: - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F57EC -MOD05_021F57EC: ; 0x021F57EC - mov r0, #0xc - bx lr - - thumb_func_start MOD05_021F57F0 -MOD05_021F57F0: ; 0x021F57F0 - push {r4, r5, r6, lr} - add r6, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r6, #0 - bl FUN_0204652C - add r4, r0, #0 - ldrh r1, [r4, #8] - cmp r1, #9 - bls _021F580A - b _021F597C -_021F580A: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021F5816: ; jump table - .short _021F582A - _021F5816 - 2 ; case 0 - .short _021F5856 - _021F5816 - 2 ; case 1 - .short _021F5872 - _021F5816 - 2 ; case 2 - .short _021F5888 - _021F5816 - 2 ; case 3 - .short _021F58DA - _021F5816 - 2 ; case 4 - .short _021F58EE - _021F5816 - 2 ; case 5 - .short _021F5914 - _021F5816 - 2 ; case 6 - .short _021F5936 - _021F5816 - 2 ; case 7 - .short _021F5956 - _021F5816 - 2 ; case 8 - .short _021F5968 - _021F5816 - 2 ; case 9 -_021F582A: - add r0, r5, #0 - bl MOD05_021F57A8 - cmp r0, #1 - bne _021F584C - mov r0, #1 - strh r0, [r4, #8] - add r0, r5, #0 - bl MOD05_021F5780 - str r0, [r4, #4] - cmp r0, #0 - beq _021F587C - add r0, r5, #0 - bl MOD05_021F56A8 - b _021F5980 -_021F584C: - mov r0, #7 - strh r0, [r4, #8] - mov r0, #0x14 - strh r0, [r4, #0xa] - b _021F5980 -_021F5856: - add r0, r5, #0 - bl MOD05_021F55CC - str r0, [r4] - mov r0, #2 - mov r1, #0 - strh r0, [r4, #8] - bl SetBgPriority - mov r0, #4 - mov r1, #1 - bl GX_EngineAToggleLayers - b _021F5980 -_021F5872: - ldr r0, [r4] - bl MOD05_021F55E8 - cmp r0, #0 - bne _021F587E -_021F587C: - b _021F5980 -_021F587E: - mov r0, #0x16 - strh r0, [r4, #0xa] - mov r0, #3 - strh r0, [r4, #8] - b _021F5980 -_021F5888: - mov r0, #0xa - ldrsh r0, [r4, r0] - sub r0, r0, #1 - strh r0, [r4, #0xa] - ldr r0, [r5, #0x1c] - ldr r0, [r0] - bl MapHeader_HasWildEncounters - cmp r0, #0 - beq _021F58D4 - mov r0, #0xa - ldrsh r0, [r4, r0] - cmp r0, #0 - bge _021F5980 - ldr r0, [r5, #0x38] - bl FUN_02055320 - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_0205532C - add r2, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl FUN_0204A6E0 - add r1, r0, #0 - add r0, r5, #0 - bl MOD06_0223CDB8 - cmp r0, #0 - beq _021F58CE - mov r0, #6 - strh r0, [r4, #8] - b _021F5980 -_021F58CE: - mov r0, #4 - strh r0, [r4, #8] - b _021F5980 -_021F58D4: - mov r0, #4 - strh r0, [r4, #8] - b _021F5980 -_021F58DA: - ldr r0, [r4] - bl MOD05_021F55E0 - add r0, r5, #0 - bl MOD05_021F55F4 - str r0, [r4] - mov r0, #5 - strh r0, [r4, #8] - b _021F5980 -_021F58EE: - ldr r0, [r4] - bl MOD05_021F55E8 - cmp r0, #0 - beq _021F5980 - mov r0, #4 - mov r1, #0 - bl GX_EngineAToggleLayers - ldr r0, _021F5984 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - mov r0, #2 - mov r1, #3 - bl SetBgPriority - mov r0, #8 - strh r0, [r4, #8] - b _021F5980 -_021F5914: - bl MOD05_021F57D0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F5924 - add r0, r5, #0 - bl MOD05_021F571C -_021F5924: - add r0, r5, #0 - add r1, r6, #0 - bl MOD06_0223BE70 - cmp r0, #0 - bne _021F5980 - bl GF_AssertFail - b _021F5980 -_021F5936: - mov r0, #0xa - ldrsh r1, [r4, r0] - sub r1, r1, #1 - strh r1, [r4, #0xa] - ldrsh r0, [r4, r0] - cmp r0, #0 - bge _021F5980 - mov r2, #0 - ldr r1, _021F5988 ; =0x000007ED - add r0, r6, #0 - add r3, r2, #0 - bl FUN_02038CD8 - mov r0, #9 - strh r0, [r4, #8] - b _021F5980 -_021F5956: - mov r2, #0 - ldr r1, _021F598C ; =0x000007EC - add r0, r6, #0 - add r3, r2, #0 - bl FUN_02038CD8 - mov r0, #9 - strh r0, [r4, #8] - b _021F5980 -_021F5968: - bl MOD05_021F57D0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021F5978 - add r0, r5, #0 - bl MOD05_021F56B8 -_021F5978: - mov r0, #1 - pop {r4, r5, r6, pc} -_021F597C: - bl GF_AssertFail -_021F5980: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021F5984: .word 0x04000050 -_021F5988: .word 0x000007ED -_021F598C: .word 0x000007EC - - thumb_func_start MOD05_021F5990 -MOD05_021F5990: ; 0x021F5990 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r2, #0 - lsl r2, r3, #3 - add r6, r5, r2 - add r6, #0x18 - str r2, [sp, #8] - add r2, r6, #0 - str r0, [sp] - add r7, r1, #0 - str r3, [sp, #4] - bl CreateHeap - cmp r0, #1 - beq _021F59B2 - bl GF_AssertFail -_021F59B2: - sub r5, r6, r5 - add r0, r7, #0 - add r1, r5, #0 - bl AllocFromHeap - add r4, r0, #0 - bne _021F59C4 - bl GF_AssertFail -_021F59C4: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - ldr r0, [sp] - str r0, [r4] - ldr r0, [sp, #4] - str r7, [r4, #4] - str r0, [r4, #8] - ldr r0, [sp, #8] - str r6, [r4, #0xc] - str r0, [r4, #0x10] - add r0, r4, #0 - add r0, #0x18 - str r0, [r4, #0x14] - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F59EC -MOD05_021F59EC: ; 0x021F59EC - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r4, [r6, #8] - ldr r5, [r6, #0x14] - cmp r4, #0 - beq _021F5A0E -_021F59F8: - ldr r0, [r5] - cmp r0, #0 - beq _021F5A06 - ldr r1, [r5, #4] - add r0, r6, #0 - bl MOD05_021F5A74 -_021F5A06: - sub r4, r4, #1 - add r5, #8 - cmp r4, #0 - bne _021F59F8 -_021F5A0E: - ldr r4, [r6, #4] - add r0, r6, #0 - bl FreeToHeap - add r0, r4, #0 - bl DestroyHeap - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5A20 -MOD05_021F5A20: ; 0x021F5A20 - ldr r3, _021F5A24 ; =MOD05_021F5B14 - bx r3 - .balign 4, 0 -_021F5A24: .word MOD05_021F5B14 - - thumb_func_start MOD05_021F5A28 -MOD05_021F5A28: ; 0x021F5A28 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl MOD05_021F5B5C - str r0, [sp] - cmp r0, #0 - bne _021F5A40 - bl GF_AssertFail -_021F5A40: - add r0, r5, #0 - add r1, r6, #0 - add r2, r7, #0 - bl MOD05_021F5B14 - add r5, r0, #0 - ldr r0, [sp] - add r1, r4, #0 - add r2, r5, #0 - bl MOD05_021F5B8C - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5A5C -MOD05_021F5A5C: ; 0x021F5A5C - push {r4, lr} - add r4, r1, #0 - bl MOD05_021F5B74 - cmp r0, #0 - beq _021F5A6C - bl MOD05_021F5B94 -_021F5A6C: - add r0, r4, #0 - bl MOD05_021F5B34 - pop {r4, pc} - - thumb_func_start MOD05_021F5A74 -MOD05_021F5A74: ; 0x021F5A74 - push {r4, lr} - bl MOD05_021F5B3C - add r4, r0, #0 - bne _021F5A82 - bl GF_AssertFail -_021F5A82: - ldr r0, [r4] - bl MOD05_021F5B34 - add r0, r4, #0 - bl MOD05_021F5B94 - pop {r4, pc} - - thumb_func_start MOD05_021F5A90 -MOD05_021F5A90: ; 0x021F5A90 - push {r4, lr} - bl MOD05_021F5B3C - add r4, r0, #0 - bne _021F5A9E - bl GF_AssertFail -_021F5A9E: - ldr r0, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5AA4 -MOD05_021F5AA4: ; 0x021F5AA4 - push {r3, lr} - bl MOD05_021F5B3C - cmp r0, #0 - beq _021F5AB2 - mov r0, #1 - pop {r3, pc} -_021F5AB2: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5AB8 -MOD05_021F5AB8: ; 0x021F5AB8 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r4, r2, #0 - add r6, r0, #0 - add r7, r3, #0 - add r0, r5, #0 - add r1, r4, #0 - bl NARC_GetMemberSize - add r1, r0, #0 - add r0, r6, #0 - add r2, r7, #0 - bl MOD05_021F5A20 - add r6, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl NARC_ReadWholeMember - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F5AE4 -MOD05_021F5AE4: ; 0x021F5AE4 - push {r3, r4, r5, r6, r7, lr} - add r4, r2, #0 - add r5, r0, #0 - add r7, r3, #0 - add r6, r1, #0 - add r0, r4, #0 - add r1, r7, #0 - bl NARC_GetMemberSize - add r2, r0, #0 - ldr r3, [sp, #0x18] - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021F5A28 - add r5, r0, #0 - add r0, r4, #0 - add r1, r7, #0 - add r2, r5, #0 - bl NARC_ReadWholeMember - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021F5B14 -MOD05_021F5B14: ; 0x021F5B14 - push {r4, lr} - cmp r2, #0 - ldr r0, [r0, #4] - bne _021F5B22 - bl AllocFromHeap - b _021F5B26 -_021F5B22: - bl AllocFromHeapAtEnd -_021F5B26: - add r4, r0, #0 - cmp r4, #0 - bne _021F5B30 - bl GF_AssertFail -_021F5B30: - add r0, r4, #0 - pop {r4, pc} - - thumb_func_start MOD05_021F5B34 -MOD05_021F5B34: ; 0x021F5B34 - ldr r3, _021F5B38 ; =FreeToHeap - bx r3 - .balign 4, 0 -_021F5B38: .word FreeToHeap - - thumb_func_start MOD05_021F5B3C -MOD05_021F5B3C: ; 0x021F5B3C - ldr r3, [r0, #8] - ldr r0, [r0, #0x14] - cmp r3, #0 - beq _021F5B56 -_021F5B44: - ldr r2, [r0] - cmp r2, #0 - beq _021F5B50 - ldr r2, [r0, #4] - cmp r2, r1 - beq _021F5B58 -_021F5B50: - add r0, #8 - sub r3, r3, #1 - bne _021F5B44 -_021F5B56: - mov r0, #0 -_021F5B58: - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F5B5C -MOD05_021F5B5C: ; 0x021F5B5C - ldr r2, [r0, #8] - ldr r0, [r0, #0x14] - cmp r2, #0 - beq _021F5B70 -_021F5B64: - ldr r1, [r0] - cmp r1, #0 - beq _021F5B72 - add r0, #8 - sub r2, r2, #1 - bne _021F5B64 -_021F5B70: - mov r0, #0 -_021F5B72: - bx lr - - thumb_func_start MOD05_021F5B74 -MOD05_021F5B74: ; 0x021F5B74 - ldr r3, [r0, #8] - ldr r0, [r0, #0x14] - cmp r3, #0 - beq _021F5B88 -_021F5B7C: - ldr r2, [r0] - cmp r2, r1 - beq _021F5B8A - add r0, #8 - sub r3, r3, #1 - bne _021F5B7C -_021F5B88: - mov r0, #0 -_021F5B8A: - bx lr - - thumb_func_start MOD05_021F5B8C -MOD05_021F5B8C: ; 0x021F5B8C - str r2, [r0] - str r1, [r0, #4] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021F5B94 -MOD05_021F5B94: ; 0x021F5B94 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - bx lr - - thumb_func_start MOD05_021F5B9C -MOD05_021F5B9C: ; 0x021F5B9C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl FUN_02050DF0 - add r7, r0, #0 - beq _021F5C40 - bl MOD18_0223E2C4 - add r6, r0, #0 - bl MOD18_0223E2DC - lsl r1, r6, #0x15 - lsl r0, r0, #0x15 - mov r4, #0 - str r1, [sp, #0xc] - str r0, [sp, #8] -_021F5BC0: - add r0, r7, #0 - add r1, r4, #0 - bl FUN_020267C4 - add r6, r0, #0 - bl FUN_0204CA80 - str r0, [sp, #0x10] - add r0, r6, #0 - bl FUN_0204CA90 - str r0, [sp, #0x14] - cmp r6, #0 - beq _021F5C3A - add r0, r7, #0 - add r1, r4, #0 - bl FUN_02026810 - str r0, [sp, #0x18] - add r0, r7, #0 - add r1, r4, #0 - bl FUN_02026840 - mov r2, #1 - ldr r1, [sp, #0x18] - lsl r2, r2, #0xc - str r2, [sp, #0x20] - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - ldr r2, [sp, #0xc] - str r1, [sp, #0x1c] - add r1, r1, r2 - ldr r2, [sp, #8] - str r0, [sp, #0x24] - add r0, r0, r2 - ldr r2, [sp, #0x10] - str r1, [sp, #0x1c] - lsl r2, r2, #0xf - add r1, r1, r2 - str r1, [sp, #0x1c] - ldr r1, [sp, #0x14] - str r0, [sp, #0x24] - lsl r1, r1, #0xf - add r0, r0, r1 - str r0, [sp, #0x24] - ldr r0, [r5, #0x2c] - add r1, r6, #0 - bl MOD05_021F4CD4 - add r2, r0, #0 - mov r0, #0 - str r0, [sp] - ldr r0, [r5, #0x4c] - add r3, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r0, #0xa0 - ldr r0, [r0] - ldr r1, [r5, #0x2c] - bl MOD05_021E7FBC -_021F5C3A: - add r4, r4, #1 - cmp r4, #0x20 - blt _021F5BC0 -_021F5C40: - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - - - thumb_func_start MOD05_021F5C44 -MOD05_021F5C44: ; 0x021F5C44 - push {r3, r4, r5, lr} - add r0, r1, #0 - mov r1, #0x18 - add r5, r2, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - add r2, r4, #0 - mov r1, #0x18 - mov r0, #0 -_021F5C58: - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _021F5C58 - add r0, r5, #0 - str r5, [r4, #0xc] - bl MOD05_021F61B0 - str r0, [r4, #4] - add r0, r4, #0 - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5C70 -MOD05_021F5C70: ; 0x021F5C70 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - bl FUN_02046528 - add r4, r0, #0 - add r0, r6, #0 - bl FUN_0204652C - add r5, r0, #0 - ldr r0, [r5] - cmp r0, #0 - beq _021F5C8E - cmp r0, #1 - beq _021F5CBA - b _021F5D28 -_021F5C8E: - ldr r0, [r4, #0x34] - bl FUN_02058780 - mov r0, #0 - str r0, [r5, #0x10] - add r2, r5, #0 - ldr r1, [r5, #0xc] - add r0, r4, #0 - add r2, #0x10 - bl MOD06_0223BD14 - str r0, [r5, #8] - ldr r1, [r5, #0xc] - ldr r2, [r5, #8] - add r0, r4, #0 - bl MOD05_021F5D2C - str r0, [r5, #0x14] - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021F5D28 -_021F5CBA: - ldr r0, [r5, #0x14] - bl MOD05_021F5D50 - cmp r0, #1 - bne _021F5D28 - ldr r0, [r5, #0x14] - bl MOD05_021F5D5C - add r7, r0, #0 - ldr r0, [r5, #0x14] - bl MOD05_021F5D68 - cmp r7, #1 - ldr r0, [r5, #0x10] - bne _021F5D10 - ldr r0, [r0, #8] - mov r1, #0 - bl GetPartyMonByIndex - ldr r2, [r5, #4] - add r3, r0, #0 - lsl r2, r2, #0x10 - add r0, r4, #0 - mov r1, #1 - lsr r2, r2, #0x10 - bl FUN_02061208 - ldr r0, [r4, #0xc] - bl FUN_02029FC8 - mov r1, #0xa - bl FUN_0202A0E8 - ldr r2, [r5, #0x10] - add r0, r4, #0 - add r1, r6, #0 - bl FUN_02046A20 - add r0, r5, #0 - bl FreeToHeap - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021F5D10: - cmp r0, #0 - beq _021F5D18 - bl FUN_02047964 -_021F5D18: - ldr r0, [r4, #0x34] - bl FUN_020587B0 - add r0, r5, #0 - bl FreeToHeap - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F5D28: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021F5D2C -MOD05_021F5D2C: ; 0x021F5D2C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #0x4c - add r4, r1, #0 - add r6, r2, #0 - bl MOD05_021F6074 - add r1, r0, #0 - str r5, [r1, #0x20] - str r4, [r1, #0x1c] - ldr r0, _021F5D4C ; =MOD05_021F5D7C - mov r2, #0x80 - str r6, [r1] - bl FUN_0200CA44 - pop {r4, r5, r6, pc} - .align 2, 0 -_021F5D4C: .word MOD05_021F5D7C - - thumb_func_start MOD05_021F5D50 -MOD05_021F5D50: ; 0x021F5D50 - push {r3, lr} - bl FUN_0201B6C8 - ldr r0, [r0, #4] - pop {r3, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5D5C -MOD05_021F5D5C: ; 0x021F5D5C - push {r3, lr} - bl FUN_0201B6C8 - ldr r0, [r0, #8] - pop {r3, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5D68 -MOD05_021F5D68: ; 0x021F5D68 - push {r4, lr} - add r4, r0, #0 - bl FUN_0201B6C8 - bl FreeToHeap - add r0, r4, #0 - bl FUN_0200CAB4 - pop {r4, pc} - - thumb_func_start MOD05_021F5D7C -MOD05_021F5D7C: ; 0x021F5D7C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - ldr r0, [r5, #0x20] - ldr r6, [r0, #0x38] - add r0, r6, #0 - bl FUN_020553A0 - ldr r7, _021F5DA4 ; =UNK05_021FC9B8 - add r4, r0, #0 -_021F5D8E: - ldr r3, [r5, #0xc] - add r0, r5, #0 - lsl r3, r3, #2 - ldr r3, [r7, r3] - add r1, r6, #0 - add r2, r4, #0 - blx r3 - cmp r0, #0 - bne _021F5D8E - pop {r3, r4, r5, r6, r7, pc} - nop -_021F5DA4: .word UNK05_021FC9B8 - - thumb_func_start MOD05_021F5DA8 -MOD05_021F5DA8: ; 0x021F5DA8 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r0, #0 - bl MOD05_021F60C4 - add r0, r4, #0 - bl FUN_02058914 - mov r0, #1 - str r0, [r5, #0xc] - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5DC0 -MOD05_021F5DC0: ; 0x021F5DC0 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r0, #0 - add r0, r6, #0 - add r4, r1, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021F5DF2 - add r0, r6, #0 - bl FUN_0205AE50 - add r0, r4, #0 - mov r1, #0x20 - bl MOD05_021E5FD8 - add r0, r4, #0 - bl MOD05_021E5FE0 - add r0, r6, #0 - mov r1, #1 - bl FUN_02058544 - mov r0, #2 - str r0, [r5, #0xc] -_021F5DF2: - mov r0, #0 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5DF8 -MOD05_021F5DF8: ; 0x021F5DF8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - cmp r0, #0xa - bne _021F5E0E - mov r0, #0x65 - lsl r0, r0, #4 - bl PlaySE -_021F5E0E: - ldr r0, [r4, #0x10] - cmp r0, #0x22 - bge _021F5E18 - mov r0, #0 - pop {r4, pc} -_021F5E18: - ldr r0, [r4] - cmp r0, #1 - bne _021F5E22 - mov r0, #3 - b _021F5E24 -_021F5E22: - mov r0, #0xc -_021F5E24: - str r0, [r4, #0xc] - mov r0, #0 - str r0, [r4, #0x10] - mov r0, #1 - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5E30 -MOD05_021F5E30: ; 0x021F5E30 - push {r4, lr} - add r4, r0, #0 - bl LCRandom - lsr r1, r0, #0x1f - lsl r0, r0, #0x1e - sub r0, r0, r1 - mov r2, #0x1e - ror r0, r2 - add r0, r1, r0 - add r0, r0, #1 - add r1, r0, #0 - mul r1, r2 - str r1, [r4, #0x14] - ldr r0, [r4, #0x1c] - lsl r1, r0, #2 - ldr r0, _021F5E60 ; =UNK05_021FC9AC - ldr r0, [r0, r1] - str r0, [r4, #0x18] - mov r0, #4 - str r0, [r4, #0xc] - mov r0, #1 - pop {r4, pc} - nop -_021F5E60: .word UNK05_021FC9AC - - thumb_func_start MOD05_021F5E64 -MOD05_021F5E64: ; 0x021F5E64 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x14] - add r4, r2, #0 - sub r0, r0, #1 - str r0, [r5, #0x14] - bl MOD05_021F6098 - cmp r0, #1 - bne _021F5E80 - mov r0, #0xa - str r0, [r5, #0xc] - mov r0, #1 - pop {r3, r4, r5, pc} -_021F5E80: - ldr r0, [r5, #0x14] - cmp r0, #0 - ble _021F5E8A - mov r0, #0 - pop {r3, r4, r5, pc} -_021F5E8A: - add r0, r4, #0 - mov r1, #2 - bl FUN_02058544 - add r0, r4, #0 - mov r1, #0 - mov r2, #1 - bl MOD05_021E7AC0 - str r0, [r5, #0x24] - mov r0, #5 - str r0, [r5, #0xc] - mov r0, #1 - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5EA8 -MOD05_021F5EA8: ; 0x021F5EA8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - sub r0, r0, #1 - str r0, [r4, #0x18] - bl MOD05_021F6098 - cmp r0, #1 - bne _021F5EC2 - mov r0, #6 - str r0, [r4, #0xc] - mov r0, #1 - pop {r4, pc} -_021F5EC2: - ldr r0, [r4, #0x18] - cmp r0, #0 - ble _021F5ECC - mov r0, #0 - pop {r4, pc} -_021F5ECC: - mov r0, #0xb - str r0, [r4, #0xc] - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021F5ED4 -MOD05_021F5ED4: ; 0x021F5ED4 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x24] - add r4, r2, #0 - bl FUN_02064520 - mov r0, #0 - str r0, [r5, #0x24] - add r0, r4, #0 - mov r1, #3 - bl FUN_02058544 - mov r0, #0 - str r0, [r5, #0x10] - mov r1, #7 - str r1, [r5, #0xc] - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5EF8 -MOD05_021F5EF8: ; 0x021F5EF8 - push {r3, lr} - ldr r1, [r0, #0x10] - add r1, r1, #1 - str r1, [r0, #0x10] - cmp r1, #0xf - ble _021F5F12 - mov r1, #0 - str r1, [r0, #0x10] - mov r1, #8 - str r1, [r0, #0xc] - mov r1, #0x39 - bl MOD05_021F6140 -_021F5F12: - mov r0, #0 - pop {r3, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5F18 -MOD05_021F5F18: ; 0x021F5F18 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021F617C - cmp r0, #0 - bne _021F5F28 - mov r0, #0 - pop {r4, pc} -_021F5F28: - mov r0, #9 - str r0, [r4, #0xc] - mov r0, #1 - pop {r4, pc} - - thumb_func_start MOD05_021F5F30 -MOD05_021F5F30: ; 0x021F5F30 - mov r2, #1 - str r2, [r0, #8] - mov r1, #0xf - str r1, [r0, #0xc] - add r0, r2, #0 - bx lr - - thumb_func_start MOD05_021F5F3C -MOD05_021F5F3C: ; 0x021F5F3C - push {r4, lr} - add r4, r0, #0 - add r0, r2, #0 - mov r1, #0 - bl FUN_02058544 - add r0, r4, #0 - mov r1, #0x38 - bl MOD05_021F6140 - mov r0, #0x10 - str r0, [r4, #0x10] - mov r0, #0xe - str r0, [r4, #0xc] - mov r0, #1 - pop {r4, pc} - - thumb_func_start MOD05_021F5F5C -MOD05_021F5F5C: ; 0x021F5F5C - push {r4, lr} - add r4, r0, #0 - add r0, r2, #0 - mov r1, #0 - bl FUN_02058544 - add r0, r4, #0 - mov r1, #0x37 - bl MOD05_021F6140 - mov r0, #0x10 - str r0, [r4, #0x10] - mov r0, #0xe - str r0, [r4, #0xc] - ldr r0, [r4, #0x20] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - mov r1, #0x49 - bl FUN_0202A0E8 - ldr r0, [r4, #0x1c] - bl MOD05_021F61B0 - add r2, r0, #0 - mov r1, #0 - ldr r0, [r4, #0x20] - add r3, r1, #0 - bl FUN_02061208 - mov r0, #1 - pop {r4, pc} - - thumb_func_start MOD05_021F5F9C -MOD05_021F5F9C: ; 0x021F5F9C - mov r1, #0x78 - str r1, [r0, #0x10] - mov r1, #0xd - str r1, [r0, #0xc] - mov r0, #1 - bx lr - - thumb_func_start MOD05_021F5FA8 -MOD05_021F5FA8: ; 0x021F5FA8 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x10] - add r4, r2, #0 - sub r0, r0, #1 - str r0, [r5, #0x10] - bl MOD05_021F6098 - cmp r0, #1 - bne _021F5FC4 - mov r0, #0xa - str r0, [r5, #0xc] - mov r0, #1 - pop {r3, r4, r5, pc} -_021F5FC4: - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _021F5FCE - mov r0, #0 - pop {r3, r4, r5, pc} -_021F5FCE: - add r0, r4, #0 - mov r1, #0 - bl FUN_02058544 - add r0, r5, #0 - mov r1, #0x36 - bl MOD05_021F6140 - mov r0, #0x10 - str r0, [r5, #0x10] - mov r0, #0xe - str r0, [r5, #0xc] - mov r0, #0 - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F5FEC -MOD05_021F5FEC: ; 0x021F5FEC - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0x10] - add r1, r1, #1 - str r1, [r4, #0x10] - cmp r1, #0x10 - bge _021F5FFE - mov r0, #0 - pop {r4, pc} -_021F5FFE: - mov r1, #0x10 - str r1, [r4, #0x10] - bl MOD05_021F617C - cmp r0, #0 - bne _021F600E - mov r0, #0 - pop {r4, pc} -_021F600E: - mov r0, #0xf - str r0, [r4, #0xc] - mov r0, #1 - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F6018 -MOD05_021F6018: ; 0x021F6018 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x24] - add r4, r1, #0 - cmp r0, #0 - beq _021F602C - bl FUN_02064520 - mov r0, #0 - str r0, [r5, #0x24] -_021F602C: - add r0, r5, #0 - bl MOD05_021F60FC - add r0, r4, #0 - bl FUN_020553C4 - bl FUN_02055648 - add r1, r0, #0 - add r0, r4, #0 - bl MOD05_021E5FD8 - add r0, r4, #0 - bl MOD05_021E5FE0 - mov r0, #0 - str r0, [r5, #0x10] - mov r0, #0x10 - str r0, [r5, #0xc] - mov r0, #1 - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F6058 -MOD05_021F6058: ; 0x021F6058 - ldr r1, [r0, #0x10] - add r1, r1, #1 - str r1, [r0, #0x10] - cmp r1, #2 - ble _021F6066 - mov r1, #0x11 - str r1, [r0, #0xc] -_021F6066: - mov r0, #0 - bx lr - .align 2, 0 - - thumb_func_start MOD05_021F606C -MOD05_021F606C: ; 0x021F606C - mov r1, #1 - str r1, [r0, #4] - mov r0, #0 - bx lr - - thumb_func_start MOD05_021F6074 -MOD05_021F6074: ; 0x021F6074 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021F6088 - bl GF_AssertFail -_021F6088: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .align 2, 0 - - thumb_func_start MOD05_021F6098 -MOD05_021F6098: ; 0x021F6098 - ldr r0, _021F60A8 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - tst r1, r0 - bne _021F60A4 - mov r0, #0 -_021F60A4: - bx lr - nop -_021F60A8: .word gMain - - thumb_func_start MOD05_021F60AC -MOD05_021F60AC: ; 0x021F60AC - ldr r0, _021F60C0 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #3 - tst r0, r1 - beq _021F60BA - mov r0, #1 - bx lr -_021F60BA: - mov r0, #0 - bx lr - nop -_021F60C0: .word gMain - - thumb_func_start MOD05_021F60C4 -MOD05_021F60C4: ; 0x021F60C4 - push {r4, lr} - add r4, r0, #0 - mov r0, #1 - mov r1, #0x1a - mov r2, #0xc7 - mov r3, #4 - bl NewMsgDataFromNarc - str r0, [r4, #0x48] - mov r0, #1 - lsl r0, r0, #0xa - mov r1, #4 - bl String_ctor - str r0, [r4, #0x2c] - mov r0, #1 - lsl r0, r0, #0xa - mov r1, #4 - bl String_ctor - str r0, [r4, #0x30] - mov r0, #8 - mov r1, #0x40 - mov r2, #4 - bl ScrStrBufs_new_custom - str r0, [r4, #0x34] - pop {r4, pc} - - thumb_func_start MOD05_021F60FC -MOD05_021F60FC: ; 0x021F60FC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x34] - bl ScrStrBufs_delete - ldr r0, [r4, #0x2c] - bl String_dtor - ldr r0, [r4, #0x30] - bl String_dtor - ldr r0, [r4, #0x48] - bl DestroyMsgData - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F611C -MOD05_021F611C: ; 0x021F611C - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r4, [r5, #0x20] - add r1, r5, #0 - ldr r0, [r4, #8] - add r1, #0x38 - mov r2, #3 - bl FUN_020545B8 - ldr r0, [r4, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r5, #0x38 - add r1, r0, #0 - add r0, r5, #0 - bl FUN_02054608 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021F6140 -MOD05_021F6140: ; 0x021F6140 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - bl MOD05_021F611C - ldr r0, [r5, #0x48] - ldr r2, [r5, #0x30] - add r1, r6, #0 - ldr r4, [r5, #0x20] - bl ReadMsgDataIntoString - ldr r0, [r5, #0x34] - ldr r1, [r5, #0x2c] - ldr r2, [r5, #0x30] - bl StringExpandPlaceholders - ldr r0, [r4, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r2, r0, #0 - add r0, r5, #0 - ldr r1, [r5, #0x2c] - add r0, #0x38 - mov r3, #1 - bl FUN_02054658 - add r5, #0x28 - strb r0, [r5] - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start MOD05_021F617C -MOD05_021F617C: ; 0x021F617C - push {r4, lr} - add r4, r0, #0 - add r0, #0x28 - ldrb r0, [r0] - bl FUN_020546C8 - cmp r0, #1 - bne _021F61AA - bl MOD05_021F60AC - cmp r0, #1 - bne _021F61AA - add r0, r4, #0 - add r0, #0x38 - mov r1, #0 - bl FUN_0200D0E0 - add r4, #0x38 - add r0, r4, #0 - bl RemoveWindow - mov r0, #1 - pop {r4, pc} -_021F61AA: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F61B0 -MOD05_021F61B0: ; 0x021F61B0 - push {r3, lr} - cmp r0, #0 - beq _021F61C2 - cmp r0, #1 - beq _021F61C6 - cmp r0, #2 - beq _021F61CA - bl GF_AssertFail -_021F61C2: - ldr r0, _021F61D0 ; =0x000001BD - pop {r3, pc} -_021F61C6: - ldr r0, _021F61D4 ; =0x000001BE - pop {r3, pc} -_021F61CA: - ldr r0, _021F61D8 ; =0x000001BF - pop {r3, pc} - nop -_021F61D0: .word 0x000001BD -_021F61D4: .word 0x000001BE -_021F61D8: .word 0x000001BF - - thumb_func_start MOD05_021F61DC -MOD05_021F61DC: ; 0x021F61DC - lsl r1, r0, #2 - ldr r0, _021F61E4 ; =UNK05_021FCA00 - ldrh r0, [r0, r1] - bx lr - .align 2, 0 -_021F61E4: .word UNK05_021FCA00 - - thumb_func_start MOD05_021F61E8 -MOD05_021F61E8: ; 0x021F61E8 - lsl r1, r0, #2 - ldr r0, _021F61F0 ; =UNK05_021FCA00 + 2 - ldrh r0, [r0, r1] - bx lr - .align 2, 0 -_021F61F0: .word UNK05_021FCA00 + 2 - - thumb_func_start MOD05_021F61F4 -MOD05_021F61F4: ; 0x021F61F4 - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - mov r1, #0x34 - bl AllocFromHeapAtEnd - add r4, r0, #0 - mov r1, #0 - mov r2, #0x34 - bl memset - str r6, [r4] - mov r0, #0 - str r0, [r4, #0xc] - str r5, [r4, #0x2c] - ldr r0, [r5, #0x20] - str r0, [r4, #0x30] - bl Camera_GetDistance - str r0, [r4, #0x10] - str r0, [r4, #0x20] - ldr r0, _021F622C ; =MOD05_021F6270 - ldr r2, _021F6230 ; =0x0000FFFF - add r1, r4, #0 - bl FUN_0200CA44 - pop {r4, r5, r6, pc} - .align 2, 0 -_021F622C: .word MOD05_021F6270 -_021F6230: .word 0x0000FFFF - - thumb_func_start MOD05_021F6234 -MOD05_021F6234: ; 0x021F6234 - push {r3, lr} - bl FUN_0201B6C8 - ldr r0, [r0, #8] - pop {r3, pc} - .align 2, 0 - - thumb_func_start MOD05_021F6240 -MOD05_021F6240: ; 0x021F6240 - push {r4, lr} - add r4, r0, #0 - bl FUN_0201B6C8 - bl FreeToHeap - add r0, r4, #0 - bl FUN_0200CAB4 - pop {r4, pc} - - thumb_func_start MOD05_021F6254 -MOD05_021F6254: ; 0x021F6254 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r4, r2, #0 - add r6, r3, #0 - bl FUN_0201B6C8 - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #8] - str r5, [r0, #0xc] - str r4, [r0, #0x14] - str r6, [r0, #0x1c] - str r1, [r0, #0x24] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021F6270 -MOD05_021F6270: ; 0x021F6270 - push {r3, lr} - add r0, r1, #0 - ldr r1, [r1, #0xc] - lsl r2, r1, #2 - ldr r1, _021F6280 ; =UNK05_021FD1B8 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .align 2, 0 -_021F6280: .word UNK05_021FD1B8 - - thumb_func_start MOD05_021F6284 -MOD05_021F6284: ; 0x021F6284 - mov r1, #1 - str r1, [r0, #8] - bx lr - .align 2, 0 - - thumb_func_start MOD05_021F628C -MOD05_021F628C: ; 0x021F628C - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #4] - cmp r1, #0 - beq _021F629C - cmp r1, #1 - beq _021F62A6 - pop {r4, pc} -_021F629C: - bl MOD05_021F630C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021F62A6: - add r0, r4, #0 - bl MOD05_021F633C - cmp r0, #1 - bne _021F62BA - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #8] -_021F62BA: - add r0, r4, #0 - bl MOD05_021F62FC - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F62C4 -MOD05_021F62C4: ; 0x021F62C4 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #4] - cmp r1, #0 - beq _021F62D4 - cmp r1, #1 - beq _021F62DE - pop {r4, pc} -_021F62D4: - bl MOD05_021F6324 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021F62DE: - add r0, r4, #0 - bl MOD05_021F633C - cmp r0, #1 - bne _021F62F2 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #8] -_021F62F2: - add r0, r4, #0 - bl MOD05_021F62FC - pop {r4, pc} - .align 2, 0 - - thumb_func_start MOD05_021F62FC -MOD05_021F62FC: ; 0x021F62FC - ldr r3, _021F6308 ; =FUN_0201EFE0 - add r1, r0, #0 - ldr r0, [r1, #0x20] - ldr r1, [r1, #0x30] - bx r3 - nop -_021F6308: .word Camera_SetDistance - - thumb_func_start MOD05_021F630C -MOD05_021F630C: ; 0x021F630C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x1c] - bl _s32_div_f - str r0, [r4, #0x28] - ldr r1, [r4, #0x20] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [r4, #0x18] - pop {r4, pc} - - thumb_func_start MOD05_021F6324 -MOD05_021F6324: ; 0x021F6324 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0x10] - ldr r0, [r4, #0x20] - sub r0, r1, r0 - ldr r1, [r4, #0x1c] - bl _s32_div_f - str r0, [r4, #0x28] - ldr r0, [r4, #0x10] - str r0, [r4, #0x18] - pop {r4, pc} - - thumb_func_start MOD05_021F633C -MOD05_021F633C: ; 0x021F633C - ldr r2, [r0, #0x20] - ldr r1, [r0, #0x28] - add r1, r2, r1 - str r1, [r0, #0x20] - ldr r1, [r0, #0x24] - add r2, r1, #1 - str r2, [r0, #0x24] - ldr r1, [r0, #0x1c] - cmp r2, r1 - blo _021F635A - str r1, [r0, #0x24] - ldr r1, [r0, #0x18] - str r1, [r0, #0x20] - mov r0, #1 - bx lr -_021F635A: - mov r0, #0 - bx lr - .align 2, 0 - - thumb_func_start MOD05_021F6360 -MOD05_021F6360: ; 0x021F6360 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl FUN_02046528 - str r0, [sp] - add r0, r7, #0 - bl FUN_0204652C - add r6, r0, #0 - add r0, r7, #0 - bl FUN_02046530 - add r4, r0, #0 - ldr r0, [r4] - ldr r5, [r6, #4] - cmp r0, #5 - bhi _021F6424 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021F638E: ; jump table - .short _021F639A - _021F638E - 2 ; case 0 - .short _021F63AC - _021F638E - 2 ; case 1 - .short _021F63CC - _021F638E - 2 ; case 2 - .short _021F63EA - _021F638E - 2 ; case 3 - .short _021F6402 - _021F638E - 2 ; case 4 - .short _021F6414 - _021F638E - 2 ; case 5 -_021F639A: - mov r0, #0xb - mov r1, #8 - bl AllocFromHeapAtEnd - str r0, [r6, #4] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021F6424 -_021F63AC: - bl MOD05_021F57EC - add r6, r0, #0 - mov r0, #0xb - add r1, r6, #0 - bl AllocFromHeapAtEnd - str r0, [r5, #4] - mov r1, #0 - add r2, r6, #0 - bl memset - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021F6424 -_021F63CC: - ldr r0, [sp] - ldr r0, [r0, #0x38] - bl FUN_020553E8 - add r3, r0, #0 - ldr r0, [sp] - ldr r2, [r6] - mov r1, #0 - bl MOD06_0224666C - str r0, [r5] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021F6424 -_021F63EA: - ldr r0, [r5] - bl MOD06_022466A0 - cmp r0, #0 - beq _021F6424 - ldr r0, [r5] - bl MOD06_022466AC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021F6424 -_021F6402: - ldr r1, _021F6428 ; =MOD05_021F57F0 - ldr r2, [r5, #4] - add r0, r7, #0 - bl FUN_0204640C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021F6424 -_021F6414: - add r0, r5, #0 - bl FreeToHeap - add r0, r6, #0 - bl FreeToHeap - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021F6424: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021F6428: .word MOD05_021F57F0 - - .section .rodata - - .global UNK05_021F78E4 -UNK05_021F78E4: ; 0x021F78E4 - .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - - .global UNK05_021F7910 -UNK05_021F7910: ; 0x021F7910 - .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x41, 0x0E, 0x00 - - .global UNK05_021F7918 -UNK05_021F7918: ; 0x021F7918 - .byte 0xDC, 0x05, 0x00, 0x00 - .byte 0x0F, 0x42, 0x12, 0x00 - - .global UNK05_021F7920 -UNK05_021F7920: ; 0x021F7920 - .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x43, 0x13, 0x00 - - .global UNK05_021F7928 -UNK05_021F7928: ; 0x021F7928 - .byte 0xDC, 0x05, 0x00, 0x00 - .byte 0x0F, 0x44, 0x14, 0x00 - - .global UNK05_021F7930 -UNK05_021F7930: ; 0x021F7930 - .byte 0xB8, 0x0B, 0x00, 0x00, 0x1E, 0x45, 0x15, 0x00 - - .global UNK05_021F7938 -UNK05_021F7938: ; 0x021F7938 - .byte 0x00, 0x00, 0x0B, 0x00 - .byte 0x3E, 0x00, 0x01, 0x00 - - .global UNK05_021F7940 -UNK05_021F7940: ; 0x021F7940 - .byte 0x00, 0x00, 0x0B, 0x00, 0x4A, 0x00, 0x01, 0x00 - - .global UNK05_021F7948 -UNK05_021F7948: ; 0x021F7948 - .byte 0x00, 0x00, 0x0C, 0x00 - .byte 0x4B, 0x00, 0x00, 0x00 - - .global UNK05_021F7950 -UNK05_021F7950: ; 0x021F7950 - .byte 0x00, 0x00, 0x0B, 0x00, 0x4C, 0x00, 0x01, 0x00 - - .global UNK05_021F7958 -UNK05_021F7958: ; 0x021F7958 - .byte 0x00, 0x00, 0x0C, 0x00 - .byte 0x4D, 0x00, 0x01, 0x00 - - .global UNK05_021F7960 -UNK05_021F7960: ; 0x021F7960 - .byte 0x00, 0x00, 0x0B, 0x00, 0x4E, 0x00, 0x01, 0x00 - - .global UNK05_021F7968 -UNK05_021F7968: ; 0x021F7968 - .byte 0x00, 0x00, 0x0B, 0x00 - .byte 0x40, 0x00, 0x01, 0x00 - - .global UNK05_021F7970 -UNK05_021F7970: ; 0x021F7970 - .byte 0x00, 0x00, 0x0B, 0x00, 0x4F, 0x00, 0x01, 0x00 - - .global UNK05_021F7978 -UNK05_021F7978: ; 0x021F7978 - .byte 0xC1, 0xAE, 0x29, 0x00 - .byte 0x02, 0xD6, 0x00, 0x00, 0xC1, 0x05 - - .global UNK05_021F7982 -UNK05_021F7982: ; 0x021F7982 - .byte 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xCF, 0x00, 0xFF - .byte 0x01, 0x06, 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE6, 0x00, 0x10, 0x91, 0x06, 0x04, 0x00 - .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x0A, 0x11, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00 - .byte 0x02, 0xE1, 0x00, 0xF0, 0x80, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xC6, 0x00, 0x00 - .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0x00, 0x08, 0x03, 0x00 - .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x02, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00 - .byte 0x02, 0xD0, 0x00, 0x10, 0x00, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD9, 0x00, 0xF5 - .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD0, 0x00, 0x0A, 0xC1, 0x04, 0x02, 0x00 - .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0xC1, 0x03, 0x02, 0x00, 0xC1, 0xAE, 0x29, 0x00 - .byte 0x02, 0xD0, 0x00, 0xF0, 0x50, 0x06, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xA0 - .byte 0x41, 0x02, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0xA2, 0xE1, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00 - .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x41, 0x02, 0x01, 0x00 - - .global UNK05_021F7A38 -UNK05_021F7A38: ; 0x021F7A38 - .byte 0x00, 0x40, 0x10, 0x00 - - .global UNK05_021F7A3C -UNK05_021F7A3C: ; 0x021F7A3C - .byte 0x00, 0x00, 0x08, 0x00 - - .global UNK05_021F7A40 -UNK05_021F7A40: ; 0x021F7A40 - .byte 0x00, 0x20, 0xFE, 0xFF - - .global UNK05_021F7A44 -UNK05_021F7A44: ; 0x021F7A44 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F7A48 -UNK05_021F7A48: ; 0x021F7A48 - .byte 0x00, 0x40, 0x06, 0x00 - - .global UNK05_021F7A4C -UNK05_021F7A4C: ; 0x021F7A4C - .byte 0x00, 0x40, 0x01, 0x00 - - .global UNK05_021F7A50 -UNK05_021F7A50: ; 0x021F7A50 - .byte 0x04, 0x00, 0x00, 0x00 - - .global UNK05_021F7A54 -UNK05_021F7A54: ; 0x021F7A54 - .byte 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0xC0, 0x08, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0xC0, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x40, 0x10, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 - - .global UNK05_021F7AF8 -UNK05_021F7AF8: ; 0x021F7AF8 - .byte 0x70, 0x00, 0xD6, 0x00 - .byte 0x2F, 0x01, 0x91, 0x01, 0xF5, 0x01, 0x63, 0x02, 0xC3, 0x02, 0x35, 0x03, 0xA0, 0x03, 0x07, 0x04 - .byte 0x61, 0x04, 0xC8, 0x04, 0xC9, 0x04 - - .global UNK05_021F7B12 -UNK05_021F7B12: ; 0x021F7B12 - .byte 0x68, 0x01 - - .global UNK05_021F7B14 -UNK05_021F7B14: ; 0x021F7B14 - .byte 0xFF, 0x00 - - .global UNK05_021F7B16 -UNK05_021F7B16: ; 0x021F7B16 - .byte 0xCA, 0x00, 0x2A, 0x01, 0xFE, 0x00 - .byte 0xB7, 0x00, 0xB7, 0x01, 0x3A, 0x01, 0x7A, 0x00, 0xB6, 0x01, 0x3B, 0x01, 0xB9, 0x00, 0xBE, 0x01 - .byte 0x3C, 0x01, 0x8F, 0x00, 0xCA, 0x01, 0x3D, 0x01, 0xE2, 0x00, 0x96, 0x01, 0x3E, 0x01, 0x3B, 0x01 - .byte 0xB8, 0x01, 0x3F, 0x01, 0x71, 0x00, 0xB1, 0x01, 0x40, 0x01, 0x66, 0x01 - - .global UNK05_021F7B48 -UNK05_021F7B48: ; 0x021F7B48 - .byte 0x21, 0x4E, 0x71, 0x00 - .byte 0x82, 0x00, 0xDB, 0x00, 0xCC, 0x00, 0x50, 0x00, 0x59, 0x01, 0x40, 0x01, 0xAE, 0x00, 0x13, 0x01 - .byte 0x0B, 0x01, 0x85, 0x00, 0xB5, 0x01, 0x24, 0x4E, 0xBB, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00 - .byte 0xC8, 0x00, 0xFB, 0x00, 0x0E, 0x00, 0x5D, 0x01, 0xF2, 0x00, 0x97, 0x01, 0xE8, 0x00, 0x8A, 0x01 - .byte 0x27, 0x4E, 0xF3, 0x00, 0x72, 0x00, 0x36, 0x00, 0xC1, 0x00, 0xAF, 0x00, 0x1F, 0x01, 0x2C, 0x01 - .byte 0x19, 0x01, 0x4A, 0x01, 0xFC, 0x00, 0x88, 0x01, 0xC5, 0x01, 0x30, 0x4E, 0xE4, 0x00, 0xB9, 0x00 - .byte 0xC1, 0x00, 0xD3, 0x00, 0x3A, 0x01, 0x93, 0x01, 0x9D, 0x01, 0xFD, 0x00, 0x33, 0x4E, 0x67, 0x00 - .byte 0xAC, 0x00, 0x9A, 0x00, 0x2C, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFD, 0x00, 0xCF, 0x00, 0x83, 0x01 - .byte 0x7E, 0x01, 0x35, 0x4E, 0xB9, 0x00, 0xCE, 0x00, 0xB8, 0x00, 0x62, 0x00, 0xA1, 0x00, 0x36, 0x01 - .byte 0x8F, 0x00, 0x12, 0x00, 0xFD, 0x00, 0x37, 0x4E, 0xE4, 0x00, 0x15, 0x00, 0xB4, 0x00, 0xFB, 0x00 - .byte 0x31, 0x01, 0xB8, 0x00, 0x56, 0x01, 0x32, 0x00, 0x3B, 0x4E, 0xAF, 0x00, 0xDB, 0x00, 0x44, 0x00 - .byte 0xE5, 0x00, 0x9D, 0x00, 0xE8, 0x00, 0x0E, 0x00, 0x32, 0x01, 0x90, 0x01, 0x3D, 0x4E, 0x30, 0x00 - .byte 0x32, 0x00, 0x24, 0x00, 0x74, 0x00, 0xCC, 0x00, 0x44, 0x00, 0xFB, 0x00, 0xE4, 0x00, 0x40, 0x4E - .byte 0x44, 0x00, 0x32, 0x00, 0x30, 0x00, 0x24, 0x00, 0x85, 0x00, 0x5D, 0x00, 0xFB, 0x00, 0x85, 0x01 - .byte 0x45, 0x4E, 0xB9, 0x00, 0x5F, 0x00, 0xAF, 0x00, 0xB4, 0x00, 0x32, 0x00, 0x50, 0x01, 0xF4, 0x00 - .byte 0x01, 0x01, 0x8A, 0x01, 0x46, 0x01, 0x9C, 0x01, 0x49, 0x4E, 0x62, 0x00, 0xE4, 0x00, 0xB9, 0x00 - .byte 0x10, 0x00, 0x12, 0x00, 0xAE, 0x00, 0xA1, 0x01, 0x5F, 0x00, 0xAC, 0x01, 0x9D, 0x01, 0x4B, 0x4E - .byte 0x0E, 0x00, 0x4B, 0x00, 0xAF, 0x00, 0xEB, 0x00, 0xCC, 0x00, 0x13, 0x01, 0x41, 0x01, 0x4E, 0x4E - .byte 0xCE, 0x00, 0x67, 0x00, 0x44, 0x00, 0x3C, 0x00, 0xAF, 0x00, 0xE6, 0x00, 0x71, 0x00, 0xE4, 0x00 - .byte 0xE8, 0x00, 0xC2, 0x01, 0xB8, 0x01, 0x50, 0x4E, 0xE2, 0x00, 0x67, 0x00, 0xCA, 0x00, 0x44, 0x01 - .byte 0x61, 0x00, 0xEA, 0x00, 0x86, 0x01, 0xC2, 0x01, 0x52, 0x4E, 0xB9, 0x00, 0x67, 0x00, 0xF6, 0x00 - .byte 0xE4, 0x00, 0xFB, 0x00, 0xFD, 0x00, 0x9D, 0x00, 0xAA, 0x01, 0x36, 0x01, 0x54, 0x4E, 0xB4, 0x00 - .byte 0xCC, 0x00, 0x5F, 0x00, 0x85, 0x00, 0xF4, 0x00, 0x12, 0x01, 0x3C, 0x01, 0xAF, 0x00, 0x83, 0x01 - .byte 0x82, 0x01, 0x56, 0x4E, 0x5F, 0x00, 0x3C, 0x00, 0xC1, 0x00, 0x71, 0x00, 0xF8, 0x00, 0x5E, 0x00 - .byte 0xEE, 0x00, 0x1F, 0x01, 0x6D, 0x00, 0x19, 0x01, 0xAA, 0x01, 0x58, 0x4E, 0x9D, 0x00, 0xC1, 0x00 - .byte 0x60, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFB, 0x00, 0x17, 0x01, 0x09, 0x01, 0x72, 0x01, 0x5A, 0x4E - .byte 0x22, 0x00, 0xDB, 0x00, 0xF2, 0x00, 0x25, 0x00, 0x53, 0x00, 0x50, 0x01, 0x01, 0x01, 0x26, 0x00 - .byte 0x8A, 0x01, 0x5C, 0x4E, 0x36, 0x00, 0x96, 0x00, 0x3D, 0x00, 0x72, 0x00, 0xAA, 0x00, 0x5A, 0x01 - .byte 0x2D, 0x01, 0x55, 0x01, 0x1F, 0x01, 0x1B, 0x01, 0x5F, 0x4E, 0xE3, 0x00, 0x70, 0x00, 0x1A, 0x01 - .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x7B, 0x01, 0x81, 0x01, 0x62, 0x4E, 0x71, 0x00, 0x60, 0x00 - .byte 0x1B, 0x00, 0xE3, 0x00, 0x09, 0x01, 0x44, 0x00, 0x9D, 0x00, 0x72, 0x01, 0x07, 0x00, 0x09, 0x00 - .byte 0x08, 0x00, 0xA2, 0x01, 0x65, 0x4E, 0x0E, 0x00, 0xE3, 0x00, 0x73, 0x00, 0xEB, 0x00, 0x8D, 0x00 - .byte 0x13, 0x01, 0x59, 0x01, 0x84, 0x01, 0x41, 0x01, 0x68, 0x4E, 0x3E, 0x00, 0xF3, 0x00, 0xE5, 0x00 - .byte 0x72, 0x00, 0xDB, 0x00, 0x6D, 0x00, 0x1A, 0x01, 0x6F, 0x01, 0x6A, 0x4E, 0x05, 0x00, 0x9D, 0x00 - .byte 0x4F, 0x01, 0x67, 0x01, 0xAF, 0x00, 0x6D, 0x4E, 0xAC, 0x00, 0x25, 0x00, 0x18, 0x00, 0x5F, 0x00 - .byte 0xCC, 0x00, 0x26, 0x00, 0x20, 0x00, 0x6F, 0x4E, 0xDB, 0x00, 0xBB, 0x00, 0xF8, 0x00, 0x17, 0x00 - .byte 0x2C, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0x7E, 0x01, 0x4F, 0x01, 0xAC, 0x01, 0x73, 0x4E, 0xD3, 0x00 - .byte 0xC1, 0x00, 0x77, 0x00, 0x10, 0x00, 0x62, 0x00, 0xAF, 0x00, 0x29, 0x01, 0xAE, 0x00, 0x57, 0x01 - .byte 0xBD, 0x00, 0x90, 0x01, 0x74, 0x4E, 0x62, 0x00, 0x30, 0x00, 0x72, 0x00, 0xB9, 0x00, 0xAF, 0x00 - .byte 0x1B, 0x01, 0x77, 0x00, 0x9D, 0x01, 0x76, 0x4E, 0x7A, 0x00, 0xC3, 0x00, 0x32, 0x00, 0x20, 0x00 - .byte 0x15, 0x00, 0xE3, 0x00, 0xFC, 0x00, 0x4D, 0x01, 0x44, 0x01, 0x78, 0x4E, 0x72, 0x00, 0xD4, 0x00 - .byte 0x7A, 0x00, 0x1E, 0x01, 0xAE, 0x00, 0x45, 0x01, 0x99, 0x00, 0xA9, 0x01, 0xFE, 0x00, 0x00, 0x01 - .byte 0xFF, 0x00, 0x7A, 0x4E, 0x3D, 0x00, 0x24, 0x00, 0x70, 0x00, 0xE5, 0x00, 0x67, 0x00, 0x4D, 0x01 - .byte 0x55, 0x01, 0x7C, 0x4E, 0x95, 0x00, 0xC3, 0x00, 0x72, 0x00, 0x36, 0x01, 0x05, 0x01, 0x20, 0x01 - .byte 0x99, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x7F, 0x4E, 0x9D, 0x00, 0xAF, 0x00, 0x99, 0x00 - .byte 0x4F, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x5E, 0x01, 0x80, 0x4E, 0x70, 0x00, 0x12, 0x01, 0x10, 0x01 - .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xA1, 0x01, 0x04, 0x01, 0xAB, 0x01, 0x82, 0x4E, 0x5B, 0x00 - .byte 0x72, 0x00, 0x85, 0x00, 0xAF, 0x00, 0x15, 0x00, 0x1A, 0x01, 0x0E, 0x00, 0x41, 0x01, 0xF6, 0x00 - .byte 0x86, 0x4E, 0xEB, 0x00, 0xEC, 0x00, 0x73, 0x00, 0xF6, 0x00, 0xF4, 0x00, 0x13, 0x01, 0xAE, 0x00 - .byte 0x0B, 0x01, 0x7D, 0x01, 0xB5, 0x01, 0x88, 0x4E, 0x9D, 0x00, 0xF6, 0x00, 0xBB, 0x00, 0x67, 0x00 - .byte 0x82, 0x00, 0xC3, 0x00, 0x0E, 0x00, 0x18, 0x00, 0xBA, 0x01, 0x8C, 0x4E, 0xBB, 0x00, 0xDE, 0x00 - .byte 0x22, 0x00, 0xAE, 0x00, 0x09, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0xA4, 0x00, 0x85, 0x00, 0x67, 0x01 - .byte 0x8D, 0x4E, 0x67, 0x00, 0x95, 0x00, 0x3C, 0x00, 0xC2, 0x00, 0xDC, 0x00, 0x05, 0x01, 0x20, 0x01 - .byte 0xB4, 0x00, 0xAE, 0x00, 0x8F, 0x4E, 0xF2, 0x00, 0xB3, 0x00, 0x9D, 0x00, 0x44, 0x00, 0xDE, 0x00 - .byte 0x0E, 0x00, 0xAE, 0x00, 0x32, 0x01, 0x97, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x91, 0x4E - .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01 - .byte 0x92, 0x4E, 0xAF, 0x00, 0x5D, 0x00, 0x48, 0x00, 0x73, 0x00, 0x85, 0x00, 0x49, 0x00, 0x0B, 0x01 - .byte 0x1B, 0x01, 0xB5, 0x01, 0x93, 0x4E, 0x17, 0x00, 0xC1, 0x00, 0x74, 0x00, 0xDB, 0x00, 0x32, 0x00 - .byte 0x44, 0x00, 0x32, 0x01, 0xA4, 0x00, 0x26, 0x00, 0x1B, 0x01, 0x67, 0x01, 0x94, 0x4E, 0xAF, 0x00 - .byte 0x3E, 0x00, 0xBE, 0x00, 0x32, 0x00, 0x96, 0x00, 0x52, 0x00, 0xE1, 0x00, 0x44, 0x01, 0x96, 0x4E - .byte 0x3C, 0x00, 0x72, 0x00, 0x38, 0x00, 0xD6, 0x00, 0x2C, 0x01, 0xBD, 0x00, 0x91, 0x01, 0x9A, 0x4E - .byte 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01 - .byte 0x2A, 0x01, 0x9B, 0x4E, 0x44, 0x00, 0xDB, 0x00, 0xE2, 0x00, 0x0D, 0x00, 0xB3, 0x00, 0x71, 0x00 - .byte 0xCB, 0x00, 0x3E, 0x01, 0x95, 0x01, 0x90, 0x01, 0x9F, 0x4E, 0x1F, 0x00, 0xAF, 0x00, 0xCE, 0x00 - .byte 0xB9, 0x00, 0x62, 0x00, 0x72, 0x01, 0x6C, 0x01, 0xA3, 0x4E, 0xC1, 0x00, 0xA4, 0x00, 0x41, 0x01 - .byte 0x1F, 0x01, 0x5D, 0x01, 0xAE, 0x00, 0xD6, 0x00, 0x20, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x5A, 0x00 - .byte 0xA5, 0x4E, 0xCC, 0x00, 0xAF, 0x00, 0xCB, 0x00, 0xAE, 0x00, 0x41, 0x01, 0x11, 0x01, 0x19, 0x01 - .byte 0x39, 0x01, 0x57, 0x01, 0xAA, 0x4E, 0x3D, 0x00, 0x3E, 0x00, 0x15, 0x00, 0x30, 0x00, 0x72, 0x00 - .byte 0x9D, 0x00, 0xBF, 0x00, 0x1A, 0x01, 0x7A, 0x01, 0x86, 0x01, 0xAC, 0x4E, 0x3D, 0x00, 0x3E, 0x00 - .byte 0xE5, 0x00, 0x5B, 0x00, 0xAF, 0x00, 0x1A, 0x01, 0x6D, 0x00, 0x55, 0x01, 0xC4, 0x00, 0x67, 0x00 - .byte 0xAE, 0x4E, 0x12, 0x00, 0xE4, 0x00, 0xC1, 0x00, 0xD3, 0x00, 0xE1, 0x00, 0xAE, 0x00, 0x74, 0x01 - .byte 0xAF, 0x4E, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xA4, 0x00, 0x12, 0x00 - .byte 0xE4, 0x00, 0xB3, 0x4E, 0x71, 0x00, 0x36, 0x00, 0x72, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x5D, 0x01 - .byte 0x97, 0x01, 0xB8, 0x4E, 0x16, 0x00, 0x49, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xAF, 0x00, 0x0B, 0x01 - .byte 0x13, 0x01, 0x40, 0x01, 0xB5, 0x01, 0x38, 0x01, 0x7A, 0x01, 0xBB, 0x4E, 0x9A, 0x00, 0x62, 0x00 - .byte 0xB3, 0x00, 0x25, 0x00, 0xC1, 0x00, 0x57, 0x01, 0x50, 0x01, 0x32, 0x01, 0x26, 0x00, 0x18, 0x00 - .byte 0x8A, 0x01, 0xBE, 0x4E, 0xF2, 0x00, 0x25, 0x00, 0x38, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x01 - .byte 0x5A, 0x01, 0x51, 0x01, 0x08, 0x00, 0xE8, 0x00, 0x5D, 0x01, 0xC1, 0x4E, 0x26, 0x00, 0xE4, 0x00 - .byte 0xA3, 0x00, 0x74, 0x00, 0xB3, 0x00, 0xA4, 0x00, 0x0F, 0x01, 0x12, 0x01, 0x83, 0x01, 0xCC, 0x00 - .byte 0x57, 0x01, 0xC3, 0x4E, 0x77, 0x00, 0x30, 0x00, 0xB9, 0x00, 0x11, 0x00, 0x12, 0x00, 0x8F, 0x00 - .byte 0x29, 0x01, 0x61, 0x00, 0x65, 0x00, 0xC5, 0x4E, 0x3C, 0x00, 0x75, 0x00, 0x3E, 0x01, 0x95, 0x01 - .byte 0x67, 0x00, 0xE3, 0x00, 0x1A, 0x01, 0xC2, 0x01, 0xC7, 0x4E, 0x3C, 0x00, 0x32, 0x00, 0x31, 0x00 - .byte 0xE2, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x86, 0x01, 0x8E, 0x01, 0xCA, 0x4E, 0xAF, 0x00, 0x67, 0x00 - .byte 0x85, 0x00, 0x3C, 0x00, 0xFA, 0x00, 0x61, 0x00, 0x36, 0x00, 0xCC, 0x4E, 0xB3, 0x00, 0x75, 0x00 - .byte 0xD9, 0x00, 0xE3, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 0x01, 0xFC, 0x00, 0x09, 0x00, 0x41, 0x01 - .byte 0xCD, 0x4E, 0xD9, 0x00, 0x76, 0x00, 0x85, 0x00, 0xBB, 0x00, 0x96, 0x00, 0x66, 0x00, 0x11, 0x01 - .byte 0xA4, 0x00, 0x39, 0x01, 0x57, 0x01, 0xCE, 0x4E, 0xC3, 0x00, 0xD9, 0x00, 0xB9, 0x00, 0x11, 0x01 - .byte 0x39, 0x01, 0x83, 0x01, 0x57, 0x01, 0x64, 0x01, 0xCF, 0x4E, 0xD9, 0x00, 0x77, 0x00, 0x40, 0x00 - .byte 0xC1, 0x00, 0xF8, 0x00, 0xA4, 0x00, 0xF4, 0x00, 0xA1, 0x01, 0x77, 0x01, 0x7D, 0x01, 0xD1, 0x4E - .byte 0x72, 0x00, 0x41, 0x00, 0x62, 0x00, 0xB9, 0x00, 0xD3, 0x00, 0xF4, 0x00, 0x29, 0x01, 0x1F, 0x01 - .byte 0xAC, 0x01, 0x85, 0x01, 0xD3, 0x4E, 0x24, 0x00, 0x22, 0x00, 0xDB, 0x00, 0x67, 0x00, 0x73, 0x00 - .byte 0x3C, 0x01, 0x0C, 0x01, 0x04, 0x01, 0x1C, 0x00, 0xD7, 0x4E, 0x71, 0x00, 0xD9, 0x00, 0x85, 0x00 - .byte 0xF8, 0x00, 0xBB, 0x00, 0xC3, 0x00, 0x30, 0x00, 0xA4, 0x00, 0xC5, 0x01, 0x14, 0x01, 0x1F, 0x01 - .byte 0xD9, 0x4E, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xDB, 0x4E - .byte 0x5D, 0x00, 0xE3, 0x00, 0x26, 0x00, 0x73, 0x00, 0x85, 0x00, 0x0E, 0x01, 0xF4, 0x00, 0x38, 0x01 - .byte 0x84, 0x01, 0xDE, 0x4E, 0x44, 0x00, 0x67, 0x00, 0xE4, 0x00, 0x61, 0x00, 0xB4, 0x00, 0x15, 0x00 - .byte 0x03, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0x57, 0x01, 0x54, 0x01, 0xDF, 0x4E, 0x40, 0x01, 0xE3, 0x00 - .byte 0x49, 0x00, 0x0B, 0x01, 0xAE, 0x00, 0x0E, 0x01, 0x13, 0x01, 0xE6, 0x00, 0xE1, 0x4E, 0x12, 0x00 - .byte 0xB3, 0x00, 0x8D, 0x00, 0x44, 0x01, 0x3E, 0x01, 0x6C, 0x01, 0xB9, 0x00, 0xE4, 0x00, 0xE2, 0x4E - .byte 0x22, 0x00, 0xF6, 0x00, 0xDB, 0x00, 0xAE, 0x00, 0x2C, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00 - .byte 0x44, 0x00, 0xE3, 0x00, 0x18, 0x00, 0xE6, 0x4E, 0x12, 0x00, 0x41, 0x00, 0x77, 0x00, 0x11, 0x00 - .byte 0x8F, 0x00, 0x6D, 0x00, 0x29, 0x01, 0xC3, 0x00, 0x77, 0x01, 0x67, 0x00, 0xB9, 0x00, 0xE8, 0x4E - .byte 0x67, 0x00, 0xC2, 0x00, 0xF4, 0x00, 0x1E, 0x01, 0x06, 0x01, 0x85, 0x01, 0xA9, 0x01, 0xAE, 0x00 - .byte 0xB4, 0x00, 0xD2, 0x01, 0xEB, 0x4E, 0x24, 0x00, 0x85, 0x00, 0xC1, 0x00, 0xF8, 0x00, 0xFB, 0x00 - .byte 0xF4, 0x00, 0x11, 0x01, 0x15, 0x01, 0x18, 0x00, 0xF3, 0x00, 0xEC, 0x4E, 0x73, 0x00, 0x2A, 0x00 - .byte 0xAF, 0x00, 0x81, 0x00, 0x44, 0x00, 0x48, 0x01, 0x17, 0x01, 0x26, 0x00, 0x86, 0x01, 0xEE, 0x4E - .byte 0x75, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x36, 0x01, 0xAE, 0x00, 0x78, 0x01 - .byte 0x15, 0x01, 0xAD, 0x00, 0xEF, 0x4E, 0xE8, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x44, 0x00, 0x48, 0x01 - .byte 0x61, 0x00, 0xE2, 0x00, 0x26, 0x00, 0x6C, 0x01, 0x90, 0x01, 0xB8, 0x01, 0xF1, 0x4E, 0x76, 0x00 - .byte 0xB9, 0x00, 0x73, 0x00, 0xD9, 0x00, 0xF2, 0x00, 0xD7, 0x00, 0xAD, 0x00, 0x09, 0x01, 0x72, 0x01 - .byte 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xF3, 0x4E, 0xAF, 0x00, 0x72, 0x00, 0x3D, 0x00, 0x30, 0x00 - .byte 0x36, 0x01, 0x44, 0x01, 0x8E, 0x01, 0xF5, 0x4E, 0xE6, 0x00, 0x1A, 0x01, 0x0E, 0x01, 0x6F, 0x01 - .byte 0x48, 0x01, 0xBD, 0x00, 0xF6, 0x4E, 0x6A, 0x00, 0x75, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0x17, 0x01 - .byte 0xE4, 0x00, 0x26, 0x00, 0xF7, 0x4E, 0x44, 0x00, 0xB4, 0x00, 0xC1, 0x00, 0x73, 0x00, 0x2C, 0x00 - .byte 0x32, 0x01, 0xFC, 0x00, 0xCA, 0x01, 0x82, 0x01, 0xE4, 0x00, 0xA4, 0x01, 0x08, 0x00, 0xF8, 0x4E - .byte 0xF2, 0x00, 0x24, 0x00, 0x45, 0x00, 0x44, 0x00, 0xE8, 0x00, 0x39, 0x01, 0x19, 0x01, 0xD6, 0x00 - .byte 0xEE, 0x00, 0x26, 0x00, 0x72, 0x01, 0x90, 0x01, 0xFA, 0x4E, 0x97, 0x00, 0x01, 0x01, 0xAE, 0x00 - .byte 0x6C, 0x00, 0x06, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x4E, 0x24, 0x00, 0x2C, 0x00 - .byte 0x22, 0x00, 0x9D, 0x00, 0xF6, 0x00, 0x55, 0x01, 0x4D, 0x01, 0x26, 0x00, 0x5A, 0x00, 0xAE, 0x00 - .byte 0xFE, 0x4E, 0x9D, 0x00, 0x67, 0x00, 0x36, 0x00, 0x85, 0x00, 0x70, 0x00, 0x13, 0x01, 0x6D, 0x00 - .byte 0x4D, 0x01, 0x0B, 0x01, 0x88, 0x01, 0xFF, 0x4E, 0x3E, 0x00, 0xBE, 0x00, 0x30, 0x00, 0x72, 0x00 - .byte 0x67, 0x00, 0x56, 0x00, 0x5E, 0x01, 0xAD, 0x00, 0xAF, 0x00, 0x01, 0x4F, 0x3E, 0x00, 0x62, 0x00 - .byte 0xF8, 0x00, 0x96, 0x00, 0xE5, 0x00, 0x2D, 0x01, 0xA4, 0x01, 0x08, 0x00, 0x02, 0x4F, 0xEF, 0x00 - .byte 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00, 0x5A, 0x01, 0x96, 0x00 - .byte 0x03, 0x4F, 0x41, 0x00, 0xE4, 0x00, 0x12, 0x00, 0x8F, 0x00, 0xAE, 0x00, 0x9D, 0x01, 0x74, 0x01 - .byte 0x04, 0x4F, 0x53, 0x00, 0x63, 0x00, 0xE4, 0x00, 0x44, 0x00, 0xB4, 0x00, 0xB3, 0x00, 0xFB, 0x00 - .byte 0x05, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xA1, 0x01, 0x82, 0x01, 0x07, 0x4F, 0x74, 0x00, 0x22, 0x00 - .byte 0xF6, 0x00, 0xAD, 0x00, 0x44, 0x00, 0x5A, 0x00, 0x1B, 0x01, 0xA4, 0x01, 0x0A, 0x4F, 0xB4, 0x00 - .byte 0x32, 0x00, 0x2C, 0x00, 0xCF, 0x00, 0xF4, 0x00, 0x46, 0x01, 0x25, 0x00, 0x18, 0x00, 0xAC, 0x01 - .byte 0x0C, 0x4F, 0xE5, 0x00, 0x88, 0x00, 0xB7, 0x00, 0xAA, 0x00, 0x0E, 0x01, 0x44, 0x00, 0x9A, 0x01 - .byte 0xA2, 0x01, 0x0E, 0x4F, 0x60, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x11, 0x01, 0x08, 0x00, 0x65, 0x01 - .byte 0x0F, 0x4F, 0x02, 0x00, 0x70, 0x00, 0x1B, 0x00, 0x60, 0x00, 0xEE, 0x00, 0x07, 0x00, 0x08, 0x00 - .byte 0xDF, 0x00, 0x10, 0x4F, 0x02, 0x00, 0x05, 0x00, 0x70, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x09, 0x00 - .byte 0xB7, 0x00, 0xDF, 0x00, 0x8A, 0x01, 0x11, 0x4F, 0xD9, 0x00, 0xB3, 0x00, 0x45, 0x00, 0xCB, 0x00 - .byte 0xF4, 0x00, 0xAE, 0x00, 0x0E, 0x01, 0xD6, 0x00, 0x92, 0x00, 0x67, 0x01, 0x26, 0x00, 0x82, 0x01 - .byte 0x16, 0x4F, 0xE4, 0x00, 0x17, 0x00, 0xC8, 0x00, 0x74, 0x00, 0xF6, 0x00, 0x5D, 0x01, 0xAE, 0x00 - .byte 0x4E, 0x01, 0x74, 0x01, 0xBA, 0x01, 0x1C, 0x4F, 0xF2, 0x00, 0x2C, 0x01, 0x1B, 0x01, 0x49, 0x00 - .byte 0xE1, 0x00, 0x32, 0x01, 0x84, 0x01, 0x18, 0x00, 0x40, 0x01, 0xEB, 0x00, 0x59, 0x01, 0xB5, 0x01 - .byte 0x1F, 0x4F, 0x44, 0x00, 0xB3, 0x00, 0xCB, 0x00, 0xCF, 0x00, 0x9D, 0x00, 0x09, 0x01, 0x32, 0x01 - .byte 0xE2, 0x00, 0x61, 0x00, 0x90, 0x01, 0x83, 0x01, 0x6C, 0x01, 0x22, 0x4F, 0x1F, 0x01, 0xFD, 0x00 - .byte 0xAE, 0x00, 0x17, 0x00, 0x2D, 0x01, 0xF3, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x2C, 0x00 - .byte 0x26, 0x00, 0xAA, 0x01, 0x25, 0x4F, 0x36, 0x01, 0x31, 0x01, 0x57, 0x01, 0x2B, 0x00, 0x19, 0x01 - .byte 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x7E, 0x01, 0x27, 0x4F, 0xCC, 0x00, 0xE4, 0x00 - .byte 0xA4, 0x00, 0x41, 0x01, 0x0F, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0x2E, 0x4F, 0xEB, 0x00, 0x4B, 0x00 - .byte 0xE6, 0x00, 0x49, 0x00, 0xAF, 0x00, 0x37, 0x00, 0x41, 0x01, 0x31, 0x4F, 0x49, 0x00, 0x85, 0x00 - .byte 0x62, 0x00, 0x0D, 0x00, 0x24, 0x00, 0xCE, 0x00, 0x84, 0x01, 0xA1, 0x01, 0x34, 0x4F, 0xE4, 0x00 - .byte 0x30, 0x00, 0x1F, 0x01, 0x77, 0x00, 0x63, 0x00, 0x8F, 0x00, 0x12, 0x00, 0x9D, 0x01, 0x36, 0x4F - .byte 0x36, 0x00, 0xEF, 0x00, 0x61, 0x00, 0x10, 0x00, 0x5A, 0x01, 0x88, 0x01, 0x1A, 0x01, 0x38, 0x4F - .byte 0x32, 0x00, 0x05, 0x01, 0xD4, 0x00, 0x06, 0x01, 0xC2, 0x00, 0x20, 0x01, 0xA9, 0x01, 0x6D, 0x00 - .byte 0x3B, 0x4F, 0xC1, 0x00, 0x55, 0x01, 0x3C, 0x00, 0x38, 0x00, 0xAA, 0x00, 0x44, 0x01, 0xC2, 0x01 - .byte 0x3D, 0x4F, 0x39, 0x01, 0xCF, 0x00, 0xCC, 0x00, 0xCE, 0x00, 0x0E, 0x01, 0x84, 0x01, 0x66, 0x01 - .byte 0x92, 0x01, 0x3F, 0x4F, 0xE4, 0x00, 0xA3, 0x00, 0x22, 0x00, 0xAD, 0x00, 0x32, 0x01, 0xAE, 0x00 - .byte 0xD6, 0x00, 0x67, 0x01, 0x90, 0x01, 0x42, 0x4F, 0xCB, 0x00, 0xB9, 0x00, 0x10, 0x00, 0x3E, 0x01 - .byte 0x95, 0x01, 0x90, 0x01, 0xC2, 0x01, 0x45, 0x4F, 0x24, 0x00, 0xAD, 0x00, 0xCF, 0x00, 0x46, 0x01 - .byte 0x09, 0x01, 0x6C, 0x00, 0x1B, 0x01, 0x48, 0x4F, 0xB9, 0x00, 0xC5, 0x00, 0xC1, 0x00, 0x0E, 0x01 - .byte 0xEE, 0x00, 0x17, 0x01, 0xDF, 0x00, 0x44, 0x00, 0x66, 0x01, 0xA2, 0x01, 0x4A, 0x4F, 0xE3, 0x00 - .byte 0x2F, 0x00, 0x1F, 0x01, 0x15, 0x00, 0x41, 0x01, 0x39, 0x01, 0x4B, 0x4F, 0xDE, 0x00, 0xCD, 0x00 - .byte 0x99, 0x00, 0x26, 0x00, 0x4F, 0x01, 0x4C, 0x4F, 0x0E, 0x01, 0xF4, 0x00, 0xFD, 0x00, 0x39, 0x01 - .byte 0x11, 0x01, 0xE2, 0x00, 0xA4, 0x00, 0x41, 0x01, 0x83, 0x01, 0xFC, 0x00, 0xAC, 0x01, 0x85, 0x01 - .byte 0x4E, 0x4F, 0xF4, 0x00, 0x69, 0x00, 0xEC, 0x00, 0xA1, 0x01, 0x04, 0x01, 0x4F, 0x4F, 0x0E, 0x00 - .byte 0xCE, 0x00, 0x31, 0x01, 0xF4, 0x00, 0xF6, 0x00, 0x41, 0x01, 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01 - .byte 0xA6, 0x01, 0x82, 0x01, 0x50, 0x4F, 0x1B, 0x01, 0x22, 0x00, 0x17, 0x00, 0x09, 0x01, 0xAE, 0x00 - .byte 0x67, 0x00, 0xBA, 0x01, 0x97, 0x01, 0x53, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xC1, 0x00 - .byte 0xFC, 0x00, 0xE2, 0x00, 0xDF, 0x00, 0x80, 0x01, 0x81, 0x01, 0xAB, 0x01, 0xA2, 0x01, 0x55, 0x4F - .byte 0xF2, 0x00, 0x1D, 0x00, 0xFD, 0x00, 0xAE, 0x00, 0x81, 0x00, 0xB3, 0x01, 0xA7, 0x01, 0xA8, 0x01 - .byte 0xA6, 0x01, 0x57, 0x4F, 0xA4, 0x00, 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x58, 0x4F, 0xA4, 0x00 - .byte 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x59, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x0F, 0x01, 0xE3, 0x00 - .byte 0x95, 0x01, 0x5A, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x4A, 0x00, 0xE3, 0x00, 0x95, 0x01, 0x5B, 0x4F - .byte 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00, 0xB5, 0x01 - .byte 0x5C, 0x4F, 0x8A, 0x00, 0x97, 0x00, 0x7B, 0x00, 0xDC, 0x00, 0xAE, 0x00, 0xC2, 0x00, 0x5E, 0x4F - .byte 0x38, 0x00, 0x26, 0x00, 0x25, 0x00, 0xF6, 0x00, 0x60, 0x4F, 0x26, 0x00, 0x25, 0x00, 0xCF, 0x00 - .byte 0xAD, 0x00, 0xD6, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x41, 0x01, 0x6F, 0x00, 0x22, 0x00, 0x62, 0x4F - .byte 0x50, 0x01, 0xB8, 0x00, 0x22, 0x00, 0xCD, 0x00, 0x6F, 0x00, 0x17, 0x00, 0x19, 0x01, 0xF6, 0x00 - .byte 0xAA, 0x01, 0x01, 0x01, 0x64, 0x4F, 0x1C, 0x01, 0xCB, 0x00, 0xD6, 0x00, 0x19, 0x01, 0x59, 0x00 - .byte 0x5A, 0x00, 0x65, 0x4F, 0xF8, 0x00, 0x46, 0x01, 0xA4, 0x00, 0x0F, 0x01, 0xAC, 0x01, 0x85, 0x00 - .byte 0xF3, 0x00, 0x67, 0x4F, 0xE3, 0x00, 0x9D, 0x00, 0x12, 0x01, 0x32, 0x00, 0xE2, 0x00, 0x11, 0x01 - .byte 0x0F, 0x01, 0x09, 0x01, 0xFC, 0x00, 0x10, 0x01, 0xAB, 0x01, 0x68, 0x4F, 0x74, 0x00, 0x62, 0x00 - .byte 0x10, 0x00, 0xAF, 0x00, 0xD2, 0x00, 0x6B, 0x4F, 0x40, 0x01, 0x33, 0x00, 0x2A, 0x01, 0xDF, 0x00 - .byte 0x44, 0x00, 0x43, 0x00, 0x09, 0x01, 0x59, 0x01, 0x92, 0x01, 0x6D, 0x4F, 0x61, 0x00, 0x72, 0x00 - .byte 0xE4, 0x00, 0x63, 0x00, 0x29, 0x01, 0x97, 0x01, 0x6F, 0x4F, 0xAF, 0x00, 0x18, 0x00, 0x0D, 0x00 - .byte 0x44, 0x00, 0x2E, 0x00, 0xAE, 0x00, 0x9A, 0x00, 0x90, 0x01, 0xE8, 0x00, 0xCA, 0x01, 0x70, 0x4F - .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x00, 0xB8, 0x00, 0x74, 0x01, 0x90, 0x01, 0x73, 0x4F - .byte 0x25, 0x00, 0xFA, 0x00, 0xD1, 0x00, 0x38, 0x00, 0xAF, 0x00, 0x24, 0x00, 0x75, 0x4F, 0x2C, 0x01 - .byte 0x1B, 0x01, 0x22, 0x00, 0xF6, 0x00, 0x1A, 0x01, 0x14, 0x01, 0xE8, 0x00, 0x79, 0x4F, 0x70, 0x00 - .byte 0x69, 0x00, 0xF3, 0x00, 0x9D, 0x00, 0x7A, 0x01, 0x41, 0x01, 0x7B, 0x4F, 0xE5, 0x00, 0x1A, 0x01 - .byte 0x0E, 0x00, 0x9D, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xB8, 0x01, 0x7D, 0x4F, 0xF3, 0x00, 0xE1, 0x00 - .byte 0x2C, 0x01, 0x5F, 0x00, 0x71, 0x00, 0x6D, 0x00, 0x36, 0x00, 0x72, 0x00, 0x41, 0x01, 0x7F, 0x4F - .byte 0xF8, 0x00, 0xF4, 0x00, 0x7D, 0x01, 0x32, 0x00, 0x85, 0x00, 0xD2, 0x01, 0x80, 0x4F, 0x32, 0x00 - .byte 0x15, 0x01, 0x0F, 0x01, 0xFC, 0x00, 0xA1, 0x01, 0x92, 0x00, 0x81, 0x4F, 0x32, 0x00, 0xC2, 0x00 - .byte 0xC1, 0x00, 0x36, 0x01, 0x1E, 0x01, 0xE4, 0x00, 0xA9, 0x01, 0x73, 0x01, 0x6D, 0x00, 0x83, 0x4F - .byte 0x1E, 0x01, 0xC2, 0x00, 0xDC, 0x00, 0x20, 0x01, 0x06, 0x01, 0xB9, 0x00, 0xD2, 0x01, 0x85, 0x4F - .byte 0x1D, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x49, 0x00, 0x0B, 0x01, 0xB5, 0x01, 0xEB, 0x00, 0xAE, 0x00 - .byte 0x5C, 0x01, 0x86, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00, 0x11, 0x01, 0xF8, 0x00 - .byte 0x87, 0x4F, 0xE2, 0x00, 0xB9, 0x00, 0x26, 0x00, 0x15, 0x01, 0xAE, 0x00, 0xA4, 0x00, 0xD4, 0x00 - .byte 0xAC, 0x01, 0x82, 0x01, 0x85, 0x01, 0x74, 0x01, 0x7E, 0x01, 0x89, 0x4F, 0x4F, 0x01, 0xBF, 0x00 - .byte 0xCD, 0x00, 0x32, 0x00, 0x75, 0x00, 0x8B, 0x4F, 0x5A, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00 - .byte 0x19, 0x01, 0x9D, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x44, 0x01, 0x8E, 0x4F, 0x1F, 0x01, 0x2C, 0x01 - .byte 0x22, 0x00, 0x30, 0x00, 0x70, 0x00, 0x6D, 0x00, 0x88, 0x01, 0x91, 0x4F, 0xDE, 0x00, 0x82, 0x00 - .byte 0x5A, 0x01, 0x85, 0x00, 0xD6, 0x00, 0x9D, 0x00, 0x91, 0x01, 0xAD, 0x00, 0xBD, 0x00, 0x92, 0x4F - .byte 0x96, 0x00, 0x30, 0x00, 0x5A, 0x01, 0x2C, 0x01, 0xBD, 0x01, 0x88, 0x01, 0x93, 0x4F, 0x38, 0x00 - .byte 0x25, 0x00, 0x52, 0x00, 0xEF, 0x00, 0x5D, 0x01, 0xA8, 0x01, 0xA5, 0x01, 0x97, 0x01, 0xA3, 0x4F - .byte 0x84, 0x01, 0x4A, 0x00, 0x41, 0x01, 0x22, 0x00, 0x26, 0x00, 0x48, 0x01, 0x92, 0x01, 0x25, 0x00 - .byte 0x85, 0x00, 0x14, 0x01, 0xA6, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x18, 0x00, 0xE3, 0x00, 0x01, 0x01 - .byte 0x74, 0x00, 0x0E, 0x01, 0xFC, 0x00, 0x2B, 0x01, 0x44, 0x00, 0xA9, 0x4F, 0xCA, 0x01, 0x30, 0x00 - .byte 0x19, 0x01, 0x2C, 0x01, 0xBD, 0x00, 0xAD, 0x00, 0xAF, 0x00, 0x61, 0x00, 0x88, 0x01, 0x38, 0x00 - .byte 0xAC, 0x4F, 0x29, 0x01, 0x1F, 0x00, 0xE4, 0x00, 0x36, 0x01, 0x1C, 0x00, 0xC1, 0x00, 0x26, 0x00 - .byte 0xAF, 0x4F, 0x62, 0x00, 0x5A, 0x01, 0x26, 0x00, 0x9A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x3C, 0x01 - .byte 0x91, 0x01, 0xB3, 0x4F, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x62, 0x00, 0x50, 0x01, 0x24, 0x00 - .byte 0xB6, 0x4F, 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00 - .byte 0xB5, 0x01, 0x46, 0x01, 0xB8, 0x4F, 0xF2, 0x00, 0x25, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x15, 0x00 - .byte 0x17, 0x00, 0x12, 0x00, 0x67, 0x01, 0xBA, 0x4F, 0x1D, 0x00, 0xB8, 0x00, 0x74, 0x00, 0x26, 0x00 - .byte 0x5E, 0x01, 0x22, 0x00, 0x67, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xC1, 0x4F, 0x57, 0x01, 0x2C, 0x00 - .byte 0x39, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x04, 0x01, 0xAF, 0x00, 0xC2, 0x4F, 0xBD, 0x00, 0x1D, 0x00 - .byte 0x9A, 0x00, 0xA3, 0x00, 0x3C, 0x01, 0x03, 0x00, 0xD2, 0x00, 0xE2, 0x00, 0xC4, 0x4F, 0x4B, 0x00 - .byte 0xE6, 0x00, 0x41, 0x01, 0x0B, 0x01, 0x40, 0x01, 0x38, 0x01, 0xC6, 0x4F, 0x44, 0x00, 0xF3, 0x00 - .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x19, 0x01, 0x06, 0x01, 0xAE, 0x00, 0x85, 0x00, 0x5A, 0x00 - .byte 0xC9, 0x4F, 0x06, 0x01, 0x22, 0x00, 0xC2, 0x00, 0x32, 0x00, 0x72, 0x00, 0x5F, 0x00, 0xCB, 0x4F - .byte 0x39, 0x01, 0xFC, 0x00, 0xE3, 0x00, 0xBA, 0x00, 0xCA, 0x01, 0xD5, 0x00, 0x43, 0x00, 0x47, 0x01 - .byte 0x9F, 0x01, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0xCF, 0x4F, 0x2C, 0x00, 0x27, 0x00, 0x62, 0x00 - .byte 0x1C, 0x00, 0x39, 0x01, 0x74, 0x01, 0xD1, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00 - .byte 0x11, 0x01, 0xF8, 0x00, 0x69, 0x00, 0xD2, 0x4F, 0xE4, 0x00, 0x2B, 0x00, 0x7B, 0x00, 0x26, 0x00 - .byte 0xF2, 0x00, 0xB8, 0x00, 0x36, 0x01, 0x82, 0x01, 0xD6, 0x4F, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00 - .byte 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xD7, 0x4F, 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00 - .byte 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01, 0x2A, 0x01, 0x69, 0x01, 0xCC, 0x00, 0xD8, 0x4F - .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01 - .byte 0x83, 0x01, 0xD9, 0x4F, 0xE3, 0x00, 0x65, 0x00, 0x61, 0x00, 0xA1, 0x01, 0x30, 0x00, 0xDA, 0x4F - .byte 0xC2, 0x00, 0xDC, 0x00, 0x6C, 0x00, 0x1E, 0x01, 0x20, 0x01, 0xA9, 0x01, 0xDB, 0x4F, 0xE1, 0x00 - .byte 0xC8, 0x00, 0xEF, 0x00, 0xB8, 0x00, 0x26, 0x00, 0x25, 0x00, 0xE8, 0x00, 0x48, 0x01, 0x22, 0x00 - .byte 0xBA, 0x01, 0xDE, 0x4F, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0xA4, 0x00, 0x12, 0x00 - .byte 0xE4, 0x00, 0xAC, 0x01, 0xDF, 0x4F, 0xEE, 0x00, 0xC5, 0x00, 0x2C, 0x00, 0xAA, 0x00, 0x47, 0x01 - .byte 0x88, 0x00, 0x61, 0x00, 0x9A, 0x01, 0xF2, 0x00, 0x43, 0x00, 0x4E, 0x01, 0x2B, 0x01, 0xA2, 0x01 - .byte 0xE1, 0x4F, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0xAE, 0x00, 0x2F, 0x01, 0x22, 0x00, 0x48, 0x01 - .byte 0xE3, 0x4F, 0xB9, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xA3, 0x00, 0x6D, 0x00, 0x12, 0x00, 0x61, 0x00 - .byte 0xE4, 0x00, 0x90, 0x01, 0xE5, 0x4F, 0x7E, 0x01, 0x6C, 0x01, 0xDF, 0x00, 0x1D, 0x00, 0x9A, 0x01 - .byte 0x60, 0x00, 0xFC, 0x00, 0x66, 0x01, 0x09, 0x01, 0xEE, 0x00, 0xA2, 0x01, 0xE7, 0x4F, 0x4F, 0x00 - .byte 0x4E, 0x00, 0x4B, 0x00, 0x15, 0x00, 0xEB, 0x00, 0x59, 0x01, 0x49, 0x00, 0x84, 0x01, 0xE8, 0x4F - .byte 0xBA, 0x00, 0xCC, 0x00, 0xAF, 0x00, 0x91, 0x01, 0x96, 0x00, 0x3C, 0x00, 0x41, 0x01, 0x61, 0x00 - .byte 0xEA, 0x4F, 0xEF, 0x00, 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00 - .byte 0x5A, 0x01, 0x96, 0x00, 0x44, 0x01, 0xEB, 0x4F, 0x49, 0x00, 0x59, 0x01, 0x92, 0x01, 0x4A, 0x00 - .byte 0x26, 0x00, 0x36, 0x00, 0x17, 0x00, 0xFF, 0xFF - - .global UNK05_021F8A34 -UNK05_021F8A34: ; 0x021F8A34 - .word 0x00000024, MOD05_021EDA98, MOD05_021EDAE8, MOD05_021EDAF4 - .word MOD05_021EDB10 - - .global UNK05_021F8A48 -UNK05_021F8A48: ; 0x021F8A48 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8A60 -UNK05_021F8A60: ; 0x021F8A60 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F8A6C -UNK05_021F8A6C: ; 0x021F8A6C - .word 0x00000030, MOD05_021EDC14, MOD05_021EDC4C, MOD05_021EDC50 - .word MOD05_021EDCFC - - .global UNK05_021F8A80 -UNK05_021F8A80: ; 0x021F8A80 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F8AA4 -UNK05_021F8AA4: ; 0x021F8AA4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F8B04 -UNK05_021F8B04: ; 0x021F8B04 - .word MOD05_021EF16C, MOD05_021EE114 - - .global UNK05_021F8B0C -UNK05_021F8B0C: ; 0x021F8B0C - .word MOD05_021EF1FC, MOD05_021EE1E4 - - .global UNK05_021F8B14 -UNK05_021F8B14: ; 0x021F8B14 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F8B20 -UNK05_021F8B20: ; 0x021F8B20 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F8B44 -UNK05_021F8B44: ; 0x021F8B44 - .byte 0x03, 0x19, 0x0D, 0x06, 0x04, 0x0D, 0x15, 0x03 - - .global UNK05_021F8B4C -UNK05_021F8B4C: ; 0x021F8B4C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x20, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x10, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F8B6C -UNK05_021F8B6C: ; 0x021F8B6C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF - - .global UNK05_021F8B78 -UNK05_021F8B78: ; 0x021F8B78 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F8B84 -UNK05_021F8B84: ; 0x021F8B84 - .byte 0x07, 0x00, 0x00, 0x00 - - .global UNK05_021F8B88 -UNK05_021F8B88: ; 0x021F8B88 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00 - - .global UNK05_021F8B90 -UNK05_021F8B90: ; 0x021F8B90 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00 - - .global UNK05_021F8BA0 -UNK05_021F8BA0: ; 0x021F8BA0 - .word MOD05_021F0CF0, MOD05_021F18A4, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8BB4 -UNK05_021F8BB4: ; 0x021F8BB4 - .word MOD05_021F0CF0, MOD05_021F17A0, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8BC8 -UNK05_021F8BC8: ; 0x021F8BC8 - .word MOD05_021F0CF0, MOD05_021F0DB4, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8BDC -UNK05_021F8BDC: ; 0x021F8BDC - .word MOD05_021F1B0C, MOD05_021F1B2C, MOD05_021F1B58, MOD05_021F1B60 - .word MOD05_021F1B8C - - .global UNK05_021F8BF0 -UNK05_021F8BF0: ; 0x021F8BF0 - .word MOD05_021F19FC, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 - .word MOD05_021F1A98 - - .global UNK05_021F8C04 -UNK05_021F8C04: ; 0x021F8C04 - .word MOD05_021F0ADC, MOD05_021F0B9C, MOD05_021F0B18, MOD05_021F0B2C - .word MOD05_021F0B58 - - .global UNK05_021F8C18 -UNK05_021F8C18: ; 0x021F8C18 - .word MOD05_021F0CF0, MOD05_021F1234, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8C2C -UNK05_021F8C2C: ; 0x021F8C2C - .word MOD05_021F0CF0, MOD05_021F16D4, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8C40 -UNK05_021F8C40: ; 0x021F8C40 - .word MOD05_021F05C4, MOD05_021F071C, MOD05_021F05F0, MOD05_021F0604 - .word MOD05_021F0634 - - .global UNK05_021F8C54 -UNK05_021F8C54: ; 0x021F8C54 - .word FUN_0205C3B0, FUN_0205C3D0, FUN_0205C490, FUN_0205C4A8 - .word FUN_0205C4D8 - - .global UNK05_021F8C68 -UNK05_021F8C68: ; 0x021F8C68 - .word MOD05_021F05C4, MOD05_021F067C, MOD05_021F05F0, MOD05_021F0604 - .word MOD05_021F0634 - - .global UNK05_021F8C7C -UNK05_021F8C7C: ; 0x021F8C7C - .word MOD05_021F1A14, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 - .word MOD05_021F1AB8 - - .global UNK05_021F8C90 -UNK05_021F8C90: ; 0x021F8C90 - .word MOD05_021F19E4, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 - .word MOD05_021F1A78 - - .global UNK05_021F8CA4 -UNK05_021F8CA4: ; 0x021F8CA4 - .word MOD05_021F0CF0, MOD05_021F1838, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8CB8 -UNK05_021F8CB8: ; 0x021F8CB8 - .word MOD05_021F05C4, MOD05_021F0A04, MOD05_021F05F0, MOD05_021F0604 - .word MOD05_021F0634 - - .global UNK05_021F8CCC -UNK05_021F8CCC: ; 0x021F8CCC - .word MOD05_021F05C4, MOD05_021F06F0, MOD05_021F05F0, MOD05_021F0604 - .word MOD05_021F0634 - - .global UNK05_021F8CE0 -UNK05_021F8CE0: ; 0x021F8CE0 - .word MOD05_021F05C4, MOD05_021F0C28, MOD05_021F05F0, MOD05_021F0604 - .word MOD05_021F0634 - - .global UNK05_021F8CF4 -UNK05_021F8CF4: ; 0x021F8CF4 - .word MOD05_021F0CF0, MOD05_021F1440, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8D08 -UNK05_021F8D08: ; 0x021F8D08 - .word MOD05_021F1A2C, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60 - .word MOD05_021F1AD8 - - .global UNK05_021F8D1C -UNK05_021F8D1C: ; 0x021F8D1C - .word MOD05_021F1BD0, MOD05_021F1BF4, MOD05_021F1C14, MOD05_021F1B60 - .word MOD05_021F1B8C - - .global UNK05_021F8D30 -UNK05_021F8D30: ; 0x021F8D30 - .word MOD05_021F0CF0, MOD05_021F1738, MOD05_021F0D18, MOD05_021F0D44 - .word MOD05_021F0D70 - - .global UNK05_021F8D44 -UNK05_021F8D44: ; 0x021F8D44 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8D5C -UNK05_021F8D5C: ; 0x021F8D5C - .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8D74 -UNK05_021F8D74: ; 0x021F8D74 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8D8C -UNK05_021F8D8C: ; 0x021F8D8C - .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8DA4 -UNK05_021F8DA4: ; 0x021F8DA4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8DBC -UNK05_021F8DBC: ; 0x021F8DBC - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8DD4 -UNK05_021F8DD4: ; 0x021F8DD4 - .byte 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8DEC -UNK05_021F8DEC: ; 0x021F8DEC - .byte 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8E10 -UNK05_021F8E10: ; 0x021F8E10 - .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8E34 -UNK05_021F8E34: ; 0x021F8E34 - .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8E58 -UNK05_021F8E58: ; 0x021F8E58 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8E94 -UNK05_021F8E94: ; 0x021F8E94 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8ED0 -UNK05_021F8ED0: ; 0x021F8ED0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 - .byte 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8F0C -UNK05_021F8F0C: ; 0x021F8F0C - .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8F48 -UNK05_021F8F48: ; 0x021F8F48 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 - .byte 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8F90 -UNK05_021F8F90: ; 0x021F8F90 - .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 - .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 - .byte 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F8FFC -UNK05_021F8FFC: ; 0x021F8FFC - .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00 - .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x58, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00 - .byte 0x5F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global UNK05_021F9080 -UNK05_021F9080: ; 0x021F9080 - .word MOD05_021F1EDC - .word MOD05_021F1EF4 - .word MOD05_021F1EF8 - .word MOD05_021F1EFC - .word MOD05_021F1F00 - - .global UNK05_021F9094 -UNK05_021F9094: ; 0x021F9094 - .word 0x00000000 - .byte 0x78, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7A, 0x01, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F90E4 -UNK05_021F90E4: ; 0x021F90E4 - .byte 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x9B, 0x01, 0x00, 0x00 - .byte 0x13, 0x00, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F9194 -UNK05_021F9194: ; 0x021F9194 - .word 0x00001001 - .word 0x00001002 - .word 0x00001003 - .word 0x00001004 - .word 0x00001005 - .word 0x00001006 - .word 0x00001007 - .word 0x00001008 - .word 0x00001009 - .word 0x0000100A - .word 0x0000100B - .word 0x0000100C - .word 0x0000100D - .word 0x0000100E - .word 0x0000100F - .word 0x00001010 - .word 0x00001011 - .word 0x00001012 - .word 0x00001013 - .word 0x00001014 - .word 0x00001015 - .word 0x00001016 - .word 0x00001017 - .word 0x00001018 - .word 0x00001019 - .word 0x0000101A - .word 0x0000101B - .word 0x0000101C - .word 0x0000101D - .word 0x0000101E - .word 0x0000101F - .word 0x00001020 - .word 0x00001021 - .word 0x00001022 - .word 0x00001023 - .word 0x00001024 - .word 0x00001025 - .word 0x00001026 - .word 0x00001027 - .word 0x00001028 - .word 0x00001029 - .word 0x0000102A - .word 0x0000102B - .word 0x0000102C - .word 0x0000102D - .word 0x0000102E - .word 0x0000102F - .word 0x00001030 - .word 0x00001031 - .word 0x00001032 - .word 0x00001033 - .word 0x00001034 - .word 0x00001035 - .word 0x00001036 - .word 0x00001037 - .word 0x00001038 - .word 0x00001039 - .word 0x0000103A - .word 0x0000103B - .word 0x0000103C - .word 0x0000103D - .word 0x0000103E - .word 0x0000103F - .word 0x00001040 - .word 0x00001041 - .word 0x00001042 - .word 0x00001043 - .word 0x00001044 - .word 0x00001045 - .word 0x00001046 - .word 0x00001047 - .word 0x00001048 - .word 0x00001049 - .word 0x0000104A - .word 0x0000104B - .word 0x0000104C - .word 0x0000104D - .word 0x0000104E - .word 0x0000104F - .word 0x00001050 - .word 0x00001051 - .word 0x00001052 - .word 0x00001053 - .word 0x00001054 - .word 0x00001055 - .word 0x00001056 - .word 0x00001057 - .word 0x00001058 - .word 0x00001059 - .word 0x0000105A - .word 0x0000105B - .word 0x0000105C - .word 0x0000105D - .word 0x0000105E - .word 0x0000105F - .word 0x00001060 - .word 0x00001061 - .word 0x00001062 - .word 0x00001063 - .word 0x00001064 - .word 0x00001065 - .word 0x00001066 - .word 0x00001067 - .word 0x00001068 - .word 0x00001069 - .word 0x0000106A - .word 0x0000106B - .word 0x0000106C - .word 0x0000106D - .word 0x0000106E - .word 0x0000106F - .word 0x00001070 - .word 0x00001071 - .word 0x00001072 - .word 0x00001073 - .word 0x00001074 - .word 0x00001075 - .word 0x00001076 - .word 0x00001077 - .word 0x00001078 - .word 0x00001079 - .word 0x0000107A - .word 0x0000107B - .word 0x0000107C - .word 0x0000107D - .word 0x0000107E - .word 0x0000107F - .word 0x00001080 - .word 0x00001081 - .word 0x00001082 - .word 0x00001083 - .word 0x00001084 - .word 0x00001085 - .word 0x00001086 - .word 0x00001087 - .word 0x00001088 - .word 0x00001089 - .word 0x0000108A - .word 0x0000108B - .word 0x0000108C - .word 0x0000108D - .word 0x0000108E - .word 0x0000108F - .word 0x00001090 - .word 0x00001091 - .word 0x00001092 - .word 0x00001093 - .word 0x00001094 - .word 0x00001095 - .word 0x00001096 - .word 0x00001097 - .word 0x00001098 - .word 0x00001099 - .word 0x0000109A - .word 0x0000109B - .word 0x0000109C - .word 0x0000109D - .word 0x0000109E - .word 0x0000109F - .word 0x000010A0 - .word 0x000010A1 - .word 0x000010A2 - .word 0x000010A3 - .word 0x000010A4 - .word 0x000010A5 - .word 0x000010A6 - .word 0x000010A7 - .word 0x000010A8 - .word 0x000010A9 - .word 0x000010AA - .word 0x000010AB - .word 0x000010AC - .word 0x000010AD - .word 0x000010AE - .word 0x000010AF - .word 0x000010B0 - .word 0x000010B1 - .word 0x000010B2 - .word 0x000010B3 - .word 0x000010B4 - .word 0x000010B5 - .word 0x000010B6 - .word 0x000010B7 - .word 0x000010B8 - .word 0x000010B9 - .word 0x000010BA - .word 0x000010BB - .word 0x000010BC - .word 0x000010BD - .word 0x000010BE - .word 0x000010BF - .word 0x000010C0 - - .global UNK05_021F9494 -UNK05_021F9494: ; 0x021F9494 - .word 0x00, UNK05_021F8BC8 - .word 0x01, UNK05_021F8C68 - .word 0x02, UNK05_021F8C68 - .word 0x03, UNK05_021F8C68 - .word 0x04, UNK05_021F8C68 - .word 0x05, UNK05_021F8C68 - .word 0x06, UNK05_021F8C68 - .word 0x07, UNK05_021F8C68 - .word 0x08, UNK05_021F8C68 - .word 0x09, UNK05_021F8C68 - .word 0x0A, UNK05_021F8C68 - .word 0x0B, UNK05_021F8C68 - .word 0x0C, UNK05_021F8C68 - .word 0x0D, UNK05_021F8C68 - .word 0x0E, UNK05_021F8C68 - .word 0x0F, UNK05_021F8C68 - .word 0x10, UNK05_021F8C68 - .word 0x11, UNK05_021F8C68 - .word 0x12, UNK05_021F8C68 - .word 0x13, UNK05_021F8C68 - .word 0x14, UNK05_021F8C68 - .word 0x15, UNK05_021F8C18 - .word 0x16, UNK05_021F8C68 - .word 0x17, UNK05_021F8C68 - .word 0x18, UNK05_021F8C68 - .word 0x19, UNK05_021F8C68 - .word 0x1A, UNK05_021F8CB8 - .word 0x1B, UNK05_021F8C68 - .word 0x1C, UNK05_021F8C68 - .word 0x1D, UNK05_021F8C68 - .word 0x1E, UNK05_021F8C68 - .word 0x1F, UNK05_021F8C68 - .word 0x20, UNK05_021F8C68 - .word 0x21, UNK05_021F8C68 - .word 0x22, UNK05_021F8C68 - .word 0x23, UNK05_021F8C68 - .word 0x24, UNK05_021F8C68 - .word 0x25, UNK05_021F8C68 - .word 0x26, UNK05_021F8C68 - .word 0x27, UNK05_021F8C68 - .word 0x28, UNK05_021F8C68 - .word 0x29, UNK05_021F8C68 - .word 0x2A, UNK05_021F8C68 - .word 0x2B, UNK05_021F8C68 - .word 0x2C, UNK05_021F8C68 - .word 0x2D, UNK05_021F8C68 - .word 0x2E, UNK05_021F8C68 - .word 0x2F, UNK05_021F8C68 - .word 0x30, UNK05_021F8C68 - .word 0x31, UNK05_021F8C68 - .word 0x32, UNK05_021F8C68 - .word 0x33, UNK05_021F8C68 - .word 0x34, UNK05_021F8C68 - .word 0x35, UNK05_021F8C68 - .word 0x36, UNK05_021F8C68 - .word 0x37, UNK05_021F8C68 - .word 0x38, UNK05_021F8C68 - .word 0x39, UNK05_021F8C68 - .word 0x3A, UNK05_021F8C68 - .word 0x3B, UNK05_021F8C68 - .word 0x3C, UNK05_021F8C68 - .word 0x3D, UNK05_021F8C68 - .word 0x3E, UNK05_021F8C68 - .word 0x3F, UNK05_021F8C68 - .word 0x40, UNK05_021F8C68 - .word 0x41, UNK05_021F8C68 - .word 0x42, UNK05_021F8C68 - .word 0x43, UNK05_021F8C68 - .word 0x44, UNK05_021F8C68 - .word 0x45, UNK05_021F8C68 - .word 0x46, UNK05_021F8C68 - .word 0x47, UNK05_021F8C68 - .word 0x48, UNK05_021F8C68 - .word 0x49, UNK05_021F8C68 - .word 0x4A, UNK05_021F8C68 - .word 0x4B, UNK05_021F8C68 - .word 0x4C, UNK05_021F8C68 - .word 0x4D, UNK05_021F8C68 - .word 0x4E, UNK05_021F8C68 - .word 0x4F, UNK05_021F8C68 - .word 0x50, UNK05_021F8C68 - .word 0x51, UNK05_021F8C68 - .word 0x52, UNK05_021F8C68 - .word 0x53, UNK05_021F8C68 - .word 0x54, UNK05_021F8CCC - .word 0x55, UNK05_021F8CCC - .word 0x56, UNK05_021F8CCC - .word 0x57, UNK05_021F8CCC - .word 0x58, UNK05_021F8C68 - .word 0x59, UNK05_021F8C68 - .word 0x5A, UNK05_021F8C68 - .word 0x5B, UNK05_021F8C90 - .word 0x5C, UNK05_021F8C90 - .word 0x5D, UNK05_021F8C90 - .word 0x5E, UNK05_021F8C90 - .word 0x5F, UNK05_021F8C90 - .word 0x60, UNK05_021F8C90 - .word 0x61, UNK05_021F8BC8 - .word 0x62, UNK05_021F8C18 - .word 0x63, UNK05_021F8C68 - .word 0x64, UNK05_021F8C54 - .word 0x76, UNK05_021F8BF0 - .word 0x78, UNK05_021F8C68 - .word 0x79, UNK05_021F8C68 - .word 0x7A, UNK05_021F8C68 - .word 0x7B, UNK05_021F8C68 - .word 0x7C, UNK05_021F8C68 - .word 0x7D, UNK05_021F8C68 - .word 0x7E, UNK05_021F8C68 - .word 0x7F, UNK05_021F8C68 - .word 0x80, UNK05_021F8C68 - .word 0x81, UNK05_021F8C68 - .word 0x82, UNK05_021F8C68 - .word 0x83, UNK05_021F8C68 - .word 0x84, UNK05_021F8C68 - .word 0x85, UNK05_021F8C68 - .word 0x86, UNK05_021F8C68 - .word 0x87, UNK05_021F8C68 - .word 0x88, UNK05_021F8C68 - .word 0x89, UNK05_021F8C68 - .word 0x8A, UNK05_021F8C68 - .word 0x8B, UNK05_021F8C68 - .word 0x8C, UNK05_021F8C68 - .word 0x8D, UNK05_021F8C68 - .word 0x8E, UNK05_021F8C68 - .word 0x8F, UNK05_021F8C68 - .word 0x90, UNK05_021F8C68 - .word 0x91, UNK05_021F8C68 - .word 0x92, UNK05_021F8C68 - .word 0x93, UNK05_021F8C68 - .word 0x94, UNK05_021F8C68 - .word 0x95, UNK05_021F8C68 - .word 0x96, UNK05_021F8C68 - .word 0x97, UNK05_021F8D1C - .word 0x98, UNK05_021F8D1C - .word 0x99, UNK05_021F8D1C - .word 0x9A, UNK05_021F8BDC - .word 0x9B, UNK05_021F8BDC - .word 0x9C, UNK05_021F8C40 - .word 0x9D, UNK05_021F8C40 - .word 0x9E, UNK05_021F8C68 - .word 0x9F, UNK05_021F8C40 - .word 0xA0, UNK05_021F8C40 - .word 0xA1, UNK05_021F8C40 - .word 0xA2, UNK05_021F8C68 - .word 0xA3, UNK05_021F8C68 - .word 0xA4, UNK05_021F8C68 - .word 0xA5, UNK05_021F8C68 - .word 0xA6, UNK05_021F8C68 - .word 0xA7, UNK05_021F8C68 - .word 0xA8, UNK05_021F8C68 - .word 0xA9, UNK05_021F8C68 - .word 0xAA, UNK05_021F8C68 - .word 0xAB, UNK05_021F8C68 - .word 0xAC, UNK05_021F8C68 - .word 0xAD, UNK05_021F8CE0 - .word 0xAE, UNK05_021F8C68 - .word 0xAF, UNK05_021F8C68 - .word 0xB0, UNK05_021F8D30 - .word 0xB1, UNK05_021F8D30 - .word 0xB4, UNK05_021F8BB4 - .word 0xB5, UNK05_021F8BB4 - .word 0xB2, UNK05_021F8C2C - .word 0xB3, UNK05_021F8C2C - .word 0xB6, UNK05_021F8CCC - .word 0xB7, UNK05_021F8C7C - .word 0xB8, UNK05_021F8CCC - .word 0xB9, UNK05_021F8C68 - .word 0xBA, UNK05_021F8BC8 - .word 0xBB, UNK05_021F8BC8 - .word 0xBC, UNK05_021F8CF4 - .word 0xBD, UNK05_021F8CF4 - .word 0xBE, UNK05_021F8C68 - .word 0xBF, UNK05_021F8C68 - .word 0xC0, UNK05_021F8C68 - .word 0xC1, UNK05_021F8C68 - .word 0xC2, UNK05_021F8C68 - .word 0xC3, UNK05_021F8C04 - .word 0xC4, UNK05_021F8CA4 - .word 0xC5, UNK05_021F8CA4 - .word 0xC6, UNK05_021F8D30 - .word 0xC7, UNK05_021F8D30 - .word 0xC8, UNK05_021F8BA0 - .word 0xC9, UNK05_021F8BA0 - .word 0xCA, UNK05_021F8CCC - .word 0xCB, UNK05_021F8CCC - .word 0xCC, UNK05_021F8C68 - .word 0xCD, UNK05_021F8C68 - .word 0xCE, UNK05_021F8C68 - .word 0xCF, UNK05_021F8C68 - .word 0xD0, UNK05_021F8C68 - .word 0xD1, UNK05_021F8D08 - -; 0x021F9A94 - .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global UNK05_021F9A9C -UNK05_021F9A9C: ; 0x021F9A9C - .byte 0x00, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x12, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 - .byte 0x16, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x18, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x1A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x1C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x1E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x20, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x22, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x24, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x26, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 - .byte 0x28, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x2A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x2C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x2E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x30, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x34, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x36, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x38, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x3A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x3C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x3E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x40, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x42, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x44, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x46, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x48, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x4A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x4C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x4E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x52, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x54, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x56, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x58, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x5A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x5C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x5E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x62, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x64, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 - .byte 0x78, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x7A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x7C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x7E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x82, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x84, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x86, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x88, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x8A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x8C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x8E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x90, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x92, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x94, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x96, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x98, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x9A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x9C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x9E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xA2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xA4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xA6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xA8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xAA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xAC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xAE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xB0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xB2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xB4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xB6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 - .byte 0xB8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xBA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xBC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xBE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xC0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xC2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xC5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xC7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00 - .byte 0xC9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xCB, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 - .byte 0xCD, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 - .byte 0xCF, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00 - .byte 0xD1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FA0AC -UNK05_021FA0AC: ; 0x021FA0AC - .byte 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00 - .byte 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 - .byte 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 - .byte 0x1C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00 - .byte 0x1E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00 - .byte 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00 - .byte 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00 - .byte 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - .byte 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00 - .byte 0x28, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00 - .byte 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00 - .byte 0x2C, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00 - .byte 0x2E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00 - .byte 0x30, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00 - .byte 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00 - .byte 0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00 - .byte 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00 - .byte 0x3A, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00 - .byte 0x3C, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00 - .byte 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00 - .byte 0x40, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00 - .byte 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00 - .byte 0x44, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00 - .byte 0x46, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00 - .byte 0x48, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00 - .byte 0x4A, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00 - .byte 0x4C, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00 - .byte 0x4E, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00 - .byte 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00 - .byte 0x54, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00 - .byte 0x56, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00 - .byte 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00 - .byte 0x5A, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00 - .byte 0x62, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 - .byte 0x02, 0x10, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00 - .byte 0x78, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00 - .byte 0x7A, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00 - .byte 0x7C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 - .byte 0x7E, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00 - .byte 0x82, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 - .byte 0x84, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00 - .byte 0x86, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00 - .byte 0x88, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00 - .byte 0x8A, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00 - .byte 0x8C, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00 - .byte 0x8E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00 - .byte 0x90, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00 - .byte 0x92, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00 - .byte 0x94, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - .byte 0x96, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00 - .byte 0x98, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00 - .byte 0x9A, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00 - .byte 0x9C, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00 - .byte 0x9E, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00 - .byte 0xA2, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00 - .byte 0xA4, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00 - .byte 0xA6, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00 - .byte 0xA8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00 - .byte 0xAA, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00 - .byte 0xAC, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00 - .byte 0xAE, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00 - .byte 0xB0, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00 - .byte 0xB4, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00 - .byte 0xB2, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 - .byte 0xB6, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00 - .byte 0xB9, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00 - .byte 0xBB, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00 - .byte 0xBD, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00 - .byte 0xBF, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00 - .byte 0x04, 0x10, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00 - .byte 0x06, 0x10, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00 - .byte 0x08, 0x10, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00 - .byte 0x0A, 0x10, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x0B, 0x10, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00 - .byte 0x0C, 0x10, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x0D, 0x10, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00 - .byte 0x0E, 0x10, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00 - .byte 0x10, 0x10, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00 - .byte 0x12, 0x10, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x10, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00 - .byte 0x14, 0x10, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00 - .byte 0x16, 0x10, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00 - .byte 0x18, 0x10, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x19, 0x10, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - .byte 0x1A, 0x10, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x1B, 0x10, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00 - .byte 0x1C, 0x10, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x1D, 0x10, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00 - .byte 0x1E, 0x10, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00 - .byte 0x20, 0x10, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x21, 0x10, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00 - .byte 0x22, 0x10, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00 - .byte 0x24, 0x10, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x25, 0x10, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00 - .byte 0x26, 0x10, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00 - .byte 0x28, 0x10, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00 - .byte 0x2A, 0x10, 0x00, 0x00, 0xD1, 0x00, 0x00, 0x00, 0x2B, 0x10, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00 - .byte 0x2C, 0x10, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00 - .byte 0x2E, 0x10, 0x00, 0x00, 0xD5, 0x00, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00 - .byte 0x30, 0x10, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00 - .byte 0x32, 0x10, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0x33, 0x10, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00 - .byte 0x34, 0x10, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x35, 0x10, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00 - .byte 0x36, 0x10, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x37, 0x10, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00 - .byte 0x38, 0x10, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x39, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00 - .byte 0x3A, 0x10, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3B, 0x10, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00 - .byte 0x3C, 0x10, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x3D, 0x10, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00 - .byte 0x3E, 0x10, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00 - .byte 0x40, 0x10, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00 - .byte 0x42, 0x10, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00 - .byte 0x44, 0x10, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00 - .byte 0x46, 0x10, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0x47, 0x10, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00 - .byte 0x48, 0x10, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x49, 0x10, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .byte 0x4A, 0x10, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x4B, 0x10, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00 - .byte 0x4C, 0x10, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x4D, 0x10, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00 - .byte 0x4E, 0x10, 0x00, 0x00, 0xF5, 0x00, 0x00, 0x00, 0x4F, 0x10, 0x00, 0x00, 0xF6, 0x00, 0x00, 0x00 - .byte 0x50, 0x10, 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0x51, 0x10, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00 - .byte 0x52, 0x10, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x53, 0x10, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00 - .byte 0x54, 0x10, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x55, 0x10, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00 - .byte 0x56, 0x10, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x57, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00 - .byte 0x58, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x59, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 - .byte 0x5A, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5B, 0x10, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00 - .byte 0x5C, 0x10, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x5D, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00 - .byte 0x5E, 0x10, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x5F, 0x10, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00 - .byte 0x60, 0x10, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x61, 0x10, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00 - .byte 0x62, 0x10, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x63, 0x10, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00 - .byte 0x64, 0x10, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00 - .byte 0x66, 0x10, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00, 0x67, 0x10, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00 - .byte 0x68, 0x10, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x69, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 - .byte 0x6A, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x6B, 0x10, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00 - .byte 0x6C, 0x10, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x6D, 0x10, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 - .byte 0x6E, 0x10, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x6F, 0x10, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00 - .byte 0x70, 0x10, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x71, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00 - .byte 0x72, 0x10, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x73, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00 - .byte 0x74, 0x10, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x75, 0x10, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00 - .byte 0x76, 0x10, 0x00, 0x00, 0x1D, 0x01, 0x00, 0x00, 0x77, 0x10, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x00 - .byte 0x78, 0x10, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x79, 0x10, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00 - .byte 0x7A, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x7B, 0x10, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00 - .byte 0x7C, 0x10, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x7D, 0x10, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00 - .byte 0x7E, 0x10, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00 - .byte 0x80, 0x10, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x81, 0x10, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00 - .byte 0x82, 0x10, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x83, 0x10, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00 - .byte 0x84, 0x10, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x85, 0x10, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00 - .byte 0x86, 0x10, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x87, 0x10, 0x00, 0x00, 0x2E, 0x01, 0x00, 0x00 - .byte 0x88, 0x10, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x89, 0x10, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00 - .byte 0x8A, 0x10, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x8B, 0x10, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00 - .byte 0x8C, 0x10, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x8D, 0x10, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00 - .byte 0x8E, 0x10, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x8F, 0x10, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00 - .byte 0x90, 0x10, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x91, 0x10, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00 - .byte 0x92, 0x10, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x93, 0x10, 0x00, 0x00, 0x3A, 0x01, 0x00, 0x00 - .byte 0x94, 0x10, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x95, 0x10, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00 - .byte 0x96, 0x10, 0x00, 0x00, 0x3D, 0x01, 0x00, 0x00, 0x97, 0x10, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x00 - .byte 0x98, 0x10, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x99, 0x10, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00 - .byte 0x9A, 0x10, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x9B, 0x10, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00 - .byte 0x9C, 0x10, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x9D, 0x10, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00 - .byte 0x9E, 0x10, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x9F, 0x10, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00 - .byte 0xA0, 0x10, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xA1, 0x10, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00 - .byte 0xA2, 0x10, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0xA3, 0x10, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00 - .byte 0xA4, 0x10, 0x00, 0x00, 0x4B, 0x01, 0x00, 0x00, 0xA5, 0x10, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00 - .byte 0xA6, 0x10, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0xA7, 0x10, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00 - .byte 0xA8, 0x10, 0x00, 0x00, 0x4F, 0x01, 0x00, 0x00, 0xA9, 0x10, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00 - .byte 0xAA, 0x10, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0xAB, 0x10, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00 - .byte 0xAC, 0x10, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0xAD, 0x10, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00 - .byte 0xAE, 0x10, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0xAF, 0x10, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00 - .byte 0xB0, 0x10, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0xB1, 0x10, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00 - .byte 0xB2, 0x10, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0xB3, 0x10, 0x00, 0x00, 0x5A, 0x01, 0x00, 0x00 - .byte 0xB4, 0x10, 0x00, 0x00, 0x5B, 0x01, 0x00, 0x00, 0xB5, 0x10, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00 - .byte 0xB6, 0x10, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0xB7, 0x10, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00 - .byte 0xB8, 0x10, 0x00, 0x00, 0x5F, 0x01, 0x00, 0x00, 0xB9, 0x10, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00 - .byte 0xBA, 0x10, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0xBB, 0x10, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00 - .byte 0xBC, 0x10, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0xBD, 0x10, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00 - .byte 0xBE, 0x10, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0xBF, 0x10, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00 - .byte 0xC0, 0x10, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00 - .byte 0xC2, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00 - .byte 0xC4, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00 - .byte 0xC6, 0x00, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00 - .byte 0xC8, 0x00, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00 - .byte 0xCA, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00 - .byte 0xCC, 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00 - .byte 0xCE, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00 - .byte 0xD0, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FAC6C -UNK05_021FAC6C: ; 0x021FAC6C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .word UNK05_021F8F90 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .word UNK05_021F8FFC - .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word UNK05_021F8F48 - .byte 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x55, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .word UNK05_021F8F90 - .byte 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .word UNK05_021F8FFC - .byte 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x02, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x03, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .word UNK05_021F8D74 - .byte 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .word UNK05_021F8D74 - .byte 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .word UNK05_021F8D74 - .byte 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .word UNK05_021F8D44 - .byte 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .word UNK05_021F8D44 - .byte 0x9C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .word UNK05_021F8D5C - .byte 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - .word UNK05_021F8D5C - .byte 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 - .word UNK05_021F8D5C - .byte 0xA0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 - .word UNK05_021F8D5C - .byte 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .word UNK05_021F8D5C - .byte 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .word UNK05_021F8DEC - .byte 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .word UNK05_021F8DA4 - .byte 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .word UNK05_021F8DA4 - .byte 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .word UNK05_021F8E94 - .byte 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .word UNK05_021F8E94 - .byte 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .word UNK05_021F8E10 - .byte 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .word UNK05_021F8E10 - .byte 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xB8, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 - .word UNK05_021F8F90 - .byte 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 - .word UNK05_021F8F90 - .byte 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .word UNK05_021F8E58 - .byte 0xBD, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .word UNK05_021F8E58 - .byte 0xBE, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xBF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0x04, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x05, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x06, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x07, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x08, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x09, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x0F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x10, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x11, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x12, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x13, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x14, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x15, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x16, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x17, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x18, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x19, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x1F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x20, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x21, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x22, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x23, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x24, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x25, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x26, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x27, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x28, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x29, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x2F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x30, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x31, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x32, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x33, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x34, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x35, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x36, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x37, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x38, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x39, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x3F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x40, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x41, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x42, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x43, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x44, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x45, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x46, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x47, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x48, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x49, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x4F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x50, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x51, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x52, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x53, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x54, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x55, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x56, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x57, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x58, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x59, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x5F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x60, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x61, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x62, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x63, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x64, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x65, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x66, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x67, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x68, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x69, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x6F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x70, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x71, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x72, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x73, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x74, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x75, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x76, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x77, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x78, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x79, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x7F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x80, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x81, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x82, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x83, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x84, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x85, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x86, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x87, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x88, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x89, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x8F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x90, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x91, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x92, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x93, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x94, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x95, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x96, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x97, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x98, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x99, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0x9F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xA9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xAF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xB9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xBF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xC0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .word UNK05_021F8DD4 - .byte 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word UNK05_021F8D8C - .byte 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .word UNK05_021F8ED0 - .byte 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .word UNK05_021F8ED0 - .byte 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 - .word UNK05_021F8DBC - .byte 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 - .word UNK05_021F8DBC - .byte 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 - .word UNK05_021F8E34 - .byte 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 - .word UNK05_021F8E34 - .byte 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xCB, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word UNK05_021F8F0C - .byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC3EC -UNK05_021FC3EC: ; 0x021FC3EC - .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC3FC -UNK05_021FC3FC: ; 0x021FC3FC - .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 - - .global UNK05_021FC40C -UNK05_021FC40C: ; 0x021FC40C - .word MOD05_021F14BC, MOD05_021F150C, MOD05_021F1544, MOD05_021F1608 - - .global UNK05_021FC41C -UNK05_021FC41C: ; 0x021FC41C - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK05_021FC42C -UNK05_021FC42C: ; 0x021FC42C - .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC43C -UNK05_021FC43C: ; 0x021FC43C - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC458 -UNK05_021FC458: ; 0x021FC458 - .byte 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC474 -UNK05_021FC474: ; 0x021FC474 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC494 -UNK05_021FC494: ; 0x021FC494 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC4B4 -UNK05_021FC4B4: ; 0x021FC4B4 - .word MOD05_021F075C, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC - .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904 - .word MOD05_021F0980 - - .global UNK05_021FC4D8 -UNK05_021FC4D8: ; 0x021FC4D8 - .word MOD05_021F12C0, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C - .word MOD05_021F0F60, MOD05_021F1008, MOD05_021F1008, MOD05_021F1008 - .word MOD05_021F134C, MOD05_021F13C8 - - .global UNK05_021FC500 -UNK05_021FC500: ; 0x021FC500 - .word MOD05_021F0E28, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C - .word MOD05_021F0F60, MOD05_021F0FB4, MOD05_021F1008, MOD05_021F10A8 - .word MOD05_021F1140, MOD05_021F11E0 - - .global UNK05_021FC528 -UNK05_021FC528: ; 0x021FC528 - .word MOD05_021F0A78, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC - .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904 - .word MOD05_021F0980, MOD05_021F0AB4 - - .global UNK05_021FC550 -UNK05_021FC550: ; 0x021FC550 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021FC55C -UNK05_021FC55C: ; 0x021FC55C - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK05_021FC56C -UNK05_021FC56C: ; 0x021FC56C - .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - - .global UNK05_021FC57C -UNK05_021FC57C: ; 0x021FC57C - .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global UNK05_021FC58C -UNK05_021FC58C: ; 0x021FC58C - .word 0x00000002, 0x00000008, MOD05_021F3854, MOD05_021F385C - .word MOD05_021F3860, 0x00000000 - - .global UNK05_021FC5A4 -UNK05_021FC5A4: ; 0x021FC5A4 - .byte 0x22, 0x01 - - .global UNK05_021FC5A6 -UNK05_021FC5A6: ; 0x021FC5A6 - .byte 0x01, 0x00 - - .global UNK05_021FC5A8 -UNK05_021FC5A8: ; 0x021FC5A8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x2C, 0x01, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x90, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x00, 0x00 - .byte 0xF4, 0x01, 0x04, 0x00, 0x36, 0x01, 0x00, 0x00, 0x58, 0x02, 0x14, 0x00, 0xC6, 0x02, 0x00, 0x00 - .byte 0xBC, 0x02, 0x32, 0x00, 0x96, 0x0A, 0x00, 0x00, 0x20, 0x03, 0x64, 0x00, 0x1E, 0x1E, 0x00, 0x00 - .byte 0x84, 0x03, 0x96, 0x00, 0x2E, 0x45, 0x00, 0x00, 0xE8, 0x03, 0x96, 0x00, 0xC6, 0x7F, 0x00, 0x00 - .byte 0x4C, 0x04, 0x64, 0x00, 0x5E, 0xBA, 0x00, 0x00, 0xB0, 0x04, 0x32, 0x00, 0x6E, 0xE1, 0x00, 0x00 - .byte 0x14, 0x05, 0x14, 0x00, 0xF6, 0xF4, 0x00, 0x00, 0x78, 0x05, 0x05, 0x00, 0xC6, 0xFC, 0x00, 0x00 - .byte 0xDC, 0x05, 0x02, 0x00, 0xBA, 0xFE, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, 0x82, 0xFF, 0x00, 0x00 - .byte 0xA4, 0x06, 0x01, 0x00, 0xE6, 0xFF, 0x00, 0x00 - - .global UNK05_021FC624 -UNK05_021FC624: ; 0x021FC624 - .byte 0x00, 0x00, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 - .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 - - .global UNK05_021FC634 -UNK05_021FC634: ; 0x021FC634 - .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 - .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10 - - .global UNK05_021FC644 -UNK05_021FC644: ; 0x021FC644 -.ifdef DIAMOND - .word 2, 3, 4 -.else - .word 5, 6, 7 -.endif - - .global UNK05_021FC650 -UNK05_021FC650: ; 0x021FC650 - .byte 0x5B, 0x01, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00 - .byte 0x61, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00 - .byte 0x6B, 0x01, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00 - .byte 0x75, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00 - .byte 0x88, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00 - .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 - - .global UNK05_021FC6A4 -UNK05_021FC6A4: ; 0x021FC6A4 - .byte 0x08, 0x00, 0x00, 0x00 - - .global UNK05_021FC6A8 -UNK05_021FC6A8: ; 0x021FC6A8 - .word 0x00000400, 0x00000018, MOD05_021F5564, MOD05_021F5598 - .word MOD05_021F559C, MOD05_021F55C8 - - .global UNK05_021FC6C0 -UNK05_021FC6C0: ; 0x021FC6C0 - .word 0x00000400, 0x00000018, MOD05_021F5518, MOD05_021F5598 - .word MOD05_021F559C, MOD05_021F55C8 - - .global UNK05_021FC6D8 -UNK05_021FC6D8: ; 0x021FC6D8 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - - .global UNK05_021FC718 -UNK05_021FC718: ; 0x021FC718 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 - .byte 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 - .byte 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC79C -UNK05_021FC79C: ; 0x021FC79C - .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021FC820 -UNK05_021FC820: ; 0x021FC820 - .word 0x00, MOD06_022492B0, MOD06_022492D4 - .word 0x01, MOD06_022497A0, MOD06_022497BC - .word 0x02, MOD05_021E52A8, MOD05_021E52C4 - .word 0x03, MOD05_021E5300, MOD05_021E531C - .word 0x04, MOD05_021E5564, MOD05_021E5580 - .word 0x05, MOD05_021E55BC, MOD05_021E55D8 - .word 0x06, MOD05_021E577C, MOD05_021E5798 - .word 0x07, MOD05_021E5918, MOD05_021E5934 - .word 0x08, MOD05_021E5AB4, MOD05_021E5AD0 - .word 0x09, MOD05_021E5C8C, MOD05_021E5CA8 - .word 0x0A, MOD05_021E5E10, MOD05_021E5E2C - .word 0x0B, MOD06_02249C98, MOD06_02249CB8 - .word 0x0C, MOD06_0224A040, MOD06_0224A05C - .word 0x0D, MOD06_0224A280, MOD06_0224A29C - .word 0x0E, MOD06_0224A63C, MOD06_0224A658 - .word 0x0F, MOD06_0224A87C, MOD06_0224A898 - .word 0x10, MOD05_021EDB70, MOD05_021EDB8C - .word 0x11, MOD06_0224AB54, MOD06_0224AB70 - .word 0x12, MOD06_0224AE10, MOD06_0224AE24 - .word 0x13, MOD06_0224B0A8, MOD06_0224B0C4 - .word 0x14, MOD06_0224B248, MOD06_0224B264 - .word 0x15, MOD06_0224B3E4, MOD06_0224B400 - .word 0x16, MOD05_021E779C, MOD05_021E77B0 - .word 0x17, MOD06_0224B948, MOD06_0224B964 - .word 0x18, MOD05_021ED9C0, MOD05_021ED9DC - .word 0x19, MOD06_0224BB50, MOD06_0224BB6C - .word 0x1A, MOD06_0224BCF4, MOD06_0224BD10 - .word 0x1B, MOD06_0224BF9C, MOD06_0224BFB8 - .word 0x1C, MOD06_0224CE30, MOD06_0224CE4C - .word 0x1D, MOD06_0224D244, MOD06_0224D260 - .word 0x1E, MOD06_0224A44C, MOD06_0224A460 - .word 0x1F, MOD06_0224A9E8, MOD06_0224AA04 - .word 0x20, 0x00000000, 0x00000000 - - .global UNK05_021FC9AC -UNK05_021FC9AC: ; 0x021FC9AC - .word 45, 30, 15 - - .global UNK05_021FC9B8 -UNK05_021FC9B8: ; 0x021FC9B8 - .word MOD05_021F5DA8, MOD05_021F5DC0, MOD05_021F5DF8, MOD05_021F5E30 - .word MOD05_021F5E64, MOD05_021F5EA8, MOD05_021F5ED4, MOD05_021F5EF8 - .word MOD05_021F5F18, MOD05_021F5F30, MOD05_021F5F3C, MOD05_021F5F5C - .word MOD05_021F5F9C, MOD05_021F5FA8, MOD05_021F5FEC, MOD05_021F6018 - .word MOD05_021F6058, MOD05_021F606C - - .global UNK05_021FCA00 -UNK05_021FCA00: ; 0x021FCA00 - .short 0x0000, 0x0000 ; SPECIES_NONE - .short 0x0001, 0x0001 ; SPECIES_BULBASAUR - .short 0x0001, 0x0001 ; SPECIES_IVYSAUR - .short 0x0002, 0x0001 ; SPECIES_VENUSAUR - .short 0x0001, 0x0001 ; SPECIES_CHARMANDER - .short 0x0002, 0x0001 ; SPECIES_CHARMELEON - .short 0x0002, 0x0001 ; SPECIES_CHARIZARD - .short 0x0001, 0x0001 ; SPECIES_SQUIRTLE - .short 0x0001, 0x0001 ; SPECIES_WARTORTLE - .short 0x0002, 0x0001 ; SPECIES_BLASTOISE - .short 0x0001, 0x0001 ; SPECIES_CATERPIE - .short 0x0005, 0x0000 ; SPECIES_METAPOD - .short 0x0001, 0x0001 ; SPECIES_BUTTERFREE - .short 0x0001, 0x0001 ; SPECIES_WEEDLE - .short 0x0005, 0x0000 ; SPECIES_KAKUNA - .short 0x0002, 0x0001 ; SPECIES_BEEDRILL - .short 0x0001, 0x0001 ; SPECIES_PIDGEY - .short 0x0001, 0x0001 ; SPECIES_PIDGEOTTO - .short 0x0002, 0x0001 ; SPECIES_PIDGEOT - .short 0x0001, 0x0001 ; SPECIES_RATTATA - .short 0x0002, 0x0001 ; SPECIES_RATICATE - .short 0x0002, 0x0001 ; SPECIES_SPEAROW - .short 0x0002, 0x0001 ; SPECIES_FEAROW - .short 0x0003, 0x0000 ; SPECIES_EKANS - .short 0x0003, 0x0000 ; SPECIES_ARBOK - .short 0x0001, 0x0001 ; SPECIES_PIKACHU - .short 0x0001, 0x0001 ; SPECIES_RAICHU - .short 0x0001, 0x0001 ; SPECIES_SANDSHREW - .short 0x0001, 0x0001 ; SPECIES_SANDSLASH - .short 0x0001, 0x0001 ; SPECIES_NIDORAN_F - .short 0x0001, 0x0001 ; SPECIES_NIDORINA - .short 0x0002, 0x0001 ; SPECIES_NIDOQUEEN - .short 0x0001, 0x0001 ; SPECIES_NIDORAN_M - .short 0x0002, 0x0001 ; SPECIES_NIDORINO - .short 0x0002, 0x0001 ; SPECIES_NIDOKING - .short 0x0001, 0x0001 ; SPECIES_CLEFAIRY - .short 0x0001, 0x0001 ; SPECIES_CLEFABLE - .short 0x0001, 0x0001 ; SPECIES_VULPIX - .short 0x0002, 0x0001 ; SPECIES_NINETALES - .short 0x0001, 0x0001 ; SPECIES_JIGGLYPUFF - .short 0x0001, 0x0001 ; SPECIES_WIGGLYTUFF - .short 0x0003, 0x0000 ; SPECIES_ZUBAT - .short 0x0003, 0x0001 ; SPECIES_GOLBAT - .short 0x0001, 0x0001 ; SPECIES_ODDISH - .short 0x0001, 0x0001 ; SPECIES_GLOOM - .short 0x0001, 0x0001 ; SPECIES_VILEPLUME - .short 0x0005, 0x0001 ; SPECIES_PARAS - .short 0x0005, 0x0001 ; SPECIES_PARASECT - .short 0x0001, 0x0001 ; SPECIES_VENONAT - .short 0x0005, 0x0001 ; SPECIES_VENOMOTH - .short 0x0001, 0x0000 ; SPECIES_DIGLETT - .short 0x0001, 0x0000 ; SPECIES_DUGTRIO - .short 0x0001, 0x0001 ; SPECIES_MEOWTH - .short 0x0002, 0x0001 ; SPECIES_PERSIAN - .short 0x0004, 0x0001 ; SPECIES_PSYDUCK - .short 0x0002, 0x0001 ; SPECIES_GOLDUCK - .short 0x0002, 0x0001 ; SPECIES_MANKEY - .short 0x0002, 0x0001 ; SPECIES_PRIMEAPE - .short 0x0001, 0x0001 ; SPECIES_GROWLITHE - .short 0x0002, 0x0001 ; SPECIES_ARCANINE - .short 0x0001, 0x0001 ; SPECIES_POLIWAG - .short 0x0001, 0x0001 ; SPECIES_POLIWHIRL - .short 0x0002, 0x0001 ; SPECIES_POLIWRATH - .short 0x0001, 0x0001 ; SPECIES_ABRA - .short 0x0002, 0x0001 ; SPECIES_KADABRA - .short 0x0002, 0x0001 ; SPECIES_ALAKAZAM - .short 0x0001, 0x0001 ; SPECIES_MACHOP - .short 0x0002, 0x0001 ; SPECIES_MACHOKE - .short 0x0002, 0x0001 ; SPECIES_MACHAMP - .short 0x0001, 0x0001 ; SPECIES_BELLSPROUT - .short 0x0004, 0x0000 ; SPECIES_WEEPINBELL - .short 0x0004, 0x0000 ; SPECIES_VICTREEBEL - .short 0x0002, 0x0000 ; SPECIES_TENTACOOL - .short 0x0002, 0x0000 ; SPECIES_TENTACRUEL - .short 0x0001, 0x0000 ; SPECIES_GEODUDE - .short 0x0002, 0x0001 ; SPECIES_GRAVELER - .short 0x0002, 0x0001 ; SPECIES_GOLEM - .short 0x0001, 0x0001 ; SPECIES_PONYTA - .short 0x0002, 0x0001 ; SPECIES_RAPIDASH - .short 0x0004, 0x0001 ; SPECIES_SLOWPOKE - .short 0x0004, 0x0001 ; SPECIES_SLOWBRO - .short 0x0005, 0x0001 ; SPECIES_MAGNEMITE - .short 0x0005, 0x0001 ; SPECIES_MAGNETON - .short 0x0002, 0x0001 ; SPECIES_FARFETCHD - .short 0x0001, 0x0001 ; SPECIES_DODUO - .short 0x0002, 0x0001 ; SPECIES_DODRIO - .short 0x0004, 0x0000 ; SPECIES_SEEL - .short 0x0004, 0x0000 ; SPECIES_DEWGONG - .short 0x0003, 0x0000 ; SPECIES_GRIMER - .short 0x0003, 0x0000 ; SPECIES_MUK - .short 0x0004, 0x0000 ; SPECIES_SHELLDER - .short 0x0002, 0x0000 ; SPECIES_CLOYSTER - .short 0x0003, 0x0000 ; SPECIES_GASTLY - .short 0x0003, 0x0000 ; SPECIES_HAUNTER - .short 0x0003, 0x0001 ; SPECIES_GENGAR - .short 0x0002, 0x0000 ; SPECIES_ONIX - .short 0x0003, 0x0001 ; SPECIES_DROWZEE - .short 0x0003, 0x0001 ; SPECIES_HYPNO - .short 0x0001, 0x0001 ; SPECIES_KRABBY - .short 0x0002, 0x0001 ; SPECIES_KINGLER - .short 0x0002, 0x0000 ; SPECIES_VOLTORB - .short 0x0002, 0x0000 ; SPECIES_ELECTRODE - .short 0x0001, 0x0000 ; SPECIES_EXEGGCUTE - .short 0x0004, 0x0001 ; SPECIES_EXEGGUTOR - .short 0x0001, 0x0001 ; SPECIES_CUBONE - .short 0x0002, 0x0001 ; SPECIES_MAROWAK - .short 0x0002, 0x0001 ; SPECIES_HITMONLEE - .short 0x0002, 0x0001 ; SPECIES_HITMONCHAN - .short 0x0004, 0x0001 ; SPECIES_LICKITUNG - .short 0x0003, 0x0000 ; SPECIES_KOFFING - .short 0x0003, 0x0000 ; SPECIES_WEEZING - .short 0x0002, 0x0001 ; SPECIES_RHYHORN - .short 0x0002, 0x0001 ; SPECIES_RHYDON - .short 0x0001, 0x0001 ; SPECIES_CHANSEY - .short 0x0001, 0x0001 ; SPECIES_TANGELA - .short 0x0002, 0x0001 ; SPECIES_KANGASKHAN - .short 0x0001, 0x0000 ; SPECIES_HORSEA - .short 0x0002, 0x0000 ; SPECIES_SEADRA - .short 0x0001, 0x0000 ; SPECIES_GOLDEEN - .short 0x0002, 0x0000 ; SPECIES_SEAKING - .short 0x0005, 0x0001 ; SPECIES_STARYU - .short 0x0005, 0x0001 ; SPECIES_STARMIE - .short 0x0001, 0x0001 ; SPECIES_MR_MIME - .short 0x0002, 0x0001 ; SPECIES_SCYTHER - .short 0x0001, 0x0000 ; SPECIES_JYNX - .short 0x0002, 0x0001 ; SPECIES_ELECTABUZZ - .short 0x0002, 0x0001 ; SPECIES_MAGMAR - .short 0x0002, 0x0001 ; SPECIES_PINSIR - .short 0x0002, 0x0001 ; SPECIES_TAUROS - .short 0x0004, 0x0000 ; SPECIES_MAGIKARP - .short 0x0003, 0x0000 ; SPECIES_GYARADOS - .short 0x0001, 0x0000 ; SPECIES_LAPRAS - .short 0x0004, 0x0000 ; SPECIES_DITTO - .short 0x0001, 0x0001 ; SPECIES_EEVEE - .short 0x0002, 0x0001 ; SPECIES_VAPOREON - .short 0x0002, 0x0001 ; SPECIES_JOLTEON - .short 0x0002, 0x0001 ; SPECIES_FLAREON - .short 0x0005, 0x0001 ; SPECIES_PORYGON - .short 0x0001, 0x0001 ; SPECIES_OMANYTE - .short 0x0002, 0x0001 ; SPECIES_OMASTAR - .short 0x0005, 0x0001 ; SPECIES_KABUTO - .short 0x0002, 0x0001 ; SPECIES_KABUTOPS - .short 0x0002, 0x0001 ; SPECIES_AERODACTYL - .short 0x0004, 0x0001 ; SPECIES_SNORLAX - .short 0x0002, 0x0001 ; SPECIES_ARTICUNO - .short 0x0002, 0x0001 ; SPECIES_ZAPDOS - .short 0x0002, 0x0001 ; SPECIES_MOLTRES - .short 0x0001, 0x0000 ; SPECIES_DRATINI - .short 0x0002, 0x0000 ; SPECIES_DRAGONAIR - .short 0x0002, 0x0001 ; SPECIES_DRAGONITE - .short 0x0002, 0x0001 ; SPECIES_MEWTWO - .short 0x0001, 0x0001 ; SPECIES_MEW - .short 0x0001, 0x0001 ; SPECIES_CHIKORITA - .short 0x0001, 0x0001 ; SPECIES_BAYLEEF - .short 0x0002, 0x0001 ; SPECIES_MEGANIUM - .short 0x0001, 0x0001 ; SPECIES_CYNDAQUIL - .short 0x0002, 0x0001 ; SPECIES_QUILAVA - .short 0x0002, 0x0001 ; SPECIES_TYPHLOSION - .short 0x0001, 0x0001 ; SPECIES_TOTODILE - .short 0x0002, 0x0001 ; SPECIES_CROCONAW - .short 0x0002, 0x0001 ; SPECIES_FERALIGATR - .short 0x0001, 0x0001 ; SPECIES_SENTRET - .short 0x0001, 0x0001 ; SPECIES_FURRET - .short 0x0001, 0x0001 ; SPECIES_HOOTHOOT - .short 0x0002, 0x0001 ; SPECIES_NOCTOWL - .short 0x0001, 0x0001 ; SPECIES_LEDYBA - .short 0x0002, 0x0001 ; SPECIES_LEDIAN - .short 0x0003, 0x0001 ; SPECIES_SPINARAK - .short 0x0003, 0x0001 ; SPECIES_ARIADOS - .short 0x0003, 0x0000 ; SPECIES_CROBAT - .short 0x0004, 0x0000 ; SPECIES_CHINCHOU - .short 0x0002, 0x0000 ; SPECIES_LANTURN - .short 0x0001, 0x0001 ; SPECIES_PICHU - .short 0x0001, 0x0001 ; SPECIES_CLEFFA - .short 0x0001, 0x0001 ; SPECIES_IGGLYBUFF - .short 0x0001, 0x0001 ; SPECIES_TOGEPI - .short 0x0001, 0x0001 ; SPECIES_TOGETIC - .short 0x0001, 0x0001 ; SPECIES_NATU - .short 0x0005, 0x0001 ; SPECIES_XATU - .short 0x0001, 0x0001 ; SPECIES_MAREEP - .short 0x0001, 0x0001 ; SPECIES_FLAAFFY - .short 0x0001, 0x0001 ; SPECIES_AMPHAROS - .short 0x0001, 0x0000 ; SPECIES_BELLOSSOM - .short 0x0001, 0x0001 ; SPECIES_MARILL - .short 0x0001, 0x0001 ; SPECIES_AZUMARILL - .short 0x0004, 0x0001 ; SPECIES_SUDOWOODO - .short 0x0001, 0x0001 ; SPECIES_POLITOED - .short 0x0001, 0x0001 ; SPECIES_HOPPIP - .short 0x0001, 0x0001 ; SPECIES_SKIPLOOM - .short 0x0001, 0x0001 ; SPECIES_JUMPLUFF - .short 0x0001, 0x0001 ; SPECIES_AIPOM - .short 0x0001, 0x0000 ; SPECIES_SUNKERN - .short 0x0001, 0x0001 ; SPECIES_SUNFLORA - .short 0x0001, 0x0001 ; SPECIES_YANMA - .short 0x0001, 0x0001 ; SPECIES_WOOPER - .short 0x0004, 0x0001 ; SPECIES_QUAGSIRE - .short 0x0002, 0x0001 ; SPECIES_ESPEON - .short 0x0002, 0x0001 ; SPECIES_UMBREON - .short 0x0003, 0x0001 ; SPECIES_MURKROW - .short 0x0004, 0x0001 ; SPECIES_SLOWKING - .short 0x0003, 0x0000 ; SPECIES_MISDREAVUS - .short 0x0005, 0x0000 ; SPECIES_UNOWN - .short 0x0004, 0x0001 ; SPECIES_WOBBUFFET - .short 0x0001, 0x0001 ; SPECIES_GIRAFARIG - .short 0x0005, 0x0000 ; SPECIES_PINECO - .short 0x0005, 0x0000 ; SPECIES_FORRETRESS - .short 0x0004, 0x0000 ; SPECIES_DUNSPARCE - .short 0x0004, 0x0001 ; SPECIES_GLIGAR - .short 0x0002, 0x0000 ; SPECIES_STEELIX - .short 0x0001, 0x0001 ; SPECIES_SNUBBULL - .short 0x0001, 0x0001 ; SPECIES_GRANBULL - .short 0x0002, 0x0000 ; SPECIES_QWILFISH - .short 0x0002, 0x0001 ; SPECIES_SCIZOR - .short 0x0001, 0x0001 ; SPECIES_SHUCKLE - .short 0x0002, 0x0001 ; SPECIES_HERACROSS - .short 0x0002, 0x0001 ; SPECIES_SNEASEL - .short 0x0001, 0x0001 ; SPECIES_TEDDIURSA - .short 0x0002, 0x0001 ; SPECIES_URSARING - .short 0x0004, 0x0000 ; SPECIES_SLUGMA - .short 0x0004, 0x0000 ; SPECIES_MAGCARGO - .short 0x0001, 0x0001 ; SPECIES_SWINUB - .short 0x0004, 0x0001 ; SPECIES_PILOSWINE - .short 0x0001, 0x0001 ; SPECIES_CORSOLA - .short 0x0005, 0x0000 ; SPECIES_REMORAID - .short 0x0004, 0x0001 ; SPECIES_OCTILLERY - .short 0x0001, 0x0001 ; SPECIES_DELIBIRD - .short 0x0002, 0x0000 ; SPECIES_MANTINE - .short 0x0002, 0x0001 ; SPECIES_SKARMORY - .short 0x0003, 0x0001 ; SPECIES_HOUNDOUR - .short 0x0003, 0x0001 ; SPECIES_HOUNDOOM - .short 0x0002, 0x0000 ; SPECIES_KINGDRA - .short 0x0001, 0x0001 ; SPECIES_PHANPY - .short 0x0002, 0x0001 ; SPECIES_DONPHAN - .short 0x0005, 0x0001 ; SPECIES_PORYGON2 - .short 0x0002, 0x0001 ; SPECIES_STANTLER - .short 0x0004, 0x0001 ; SPECIES_SMEARGLE - .short 0x0001, 0x0001 ; SPECIES_TYROGUE - .short 0x0002, 0x0001 ; SPECIES_HITMONTOP - .short 0x0001, 0x0001 ; SPECIES_SMOOCHUM - .short 0x0001, 0x0001 ; SPECIES_ELEKID - .short 0x0001, 0x0001 ; SPECIES_MAGBY - .short 0x0001, 0x0001 ; SPECIES_MILTANK - .short 0x0001, 0x0001 ; SPECIES_BLISSEY - .short 0x0002, 0x0001 ; SPECIES_RAIKOU - .short 0x0002, 0x0001 ; SPECIES_ENTEI - .short 0x0002, 0x0001 ; SPECIES_SUICUNE - .short 0x0001, 0x0001 ; SPECIES_LARVITAR - .short 0x0005, 0x0000 ; SPECIES_PUPITAR - .short 0x0003, 0x0001 ; SPECIES_TYRANITAR - .short 0x0002, 0x0001 ; SPECIES_LUGIA - .short 0x0002, 0x0001 ; SPECIES_HO_OH - .short 0x0001, 0x0001 ; SPECIES_CELEBI - .short 0x0001, 0x0001 ; SPECIES_TREECKO - .short 0x0002, 0x0001 ; SPECIES_GROVYLE - .short 0x0002, 0x0001 ; SPECIES_SCEPTILE - .short 0x0001, 0x0001 ; SPECIES_TORCHIC - .short 0x0002, 0x0001 ; SPECIES_COMBUSKEN - .short 0x0002, 0x0001 ; SPECIES_BLAZIKEN - .short 0x0001, 0x0001 ; SPECIES_MUDKIP - .short 0x0001, 0x0001 ; SPECIES_MARSHTOMP - .short 0x0002, 0x0001 ; SPECIES_SWAMPERT - .short 0x0001, 0x0001 ; SPECIES_POOCHYENA - .short 0x0002, 0x0001 ; SPECIES_MIGHTYENA - .short 0x0004, 0x0001 ; SPECIES_ZIGZAGOON - .short 0x0004, 0x0001 ; SPECIES_LINOONE - .short 0x0001, 0x0001 ; SPECIES_WURMPLE - .short 0x0005, 0x0000 ; SPECIES_SILCOON - .short 0x0001, 0x0001 ; SPECIES_BEAUTIFLY - .short 0x0005, 0x0000 ; SPECIES_CASCOON - .short 0x0002, 0x0001 ; SPECIES_DUSTOX - .short 0x0001, 0x0001 ; SPECIES_LOTAD - .short 0x0004, 0x0001 ; SPECIES_LOMBRE - .short 0x0004, 0x0001 ; SPECIES_LUDICOLO - .short 0x0005, 0x0001 ; SPECIES_SEEDOT - .short 0x0002, 0x0001 ; SPECIES_NUZLEAF - .short 0x0003, 0x0001 ; SPECIES_SHIFTRY - .short 0x0001, 0x0001 ; SPECIES_TAILLOW - .short 0x0002, 0x0001 ; SPECIES_SWELLOW - .short 0x0001, 0x0001 ; SPECIES_WINGULL - .short 0x0001, 0x0001 ; SPECIES_PELIPPER - .short 0x0001, 0x0001 ; SPECIES_RALTS - .short 0x0001, 0x0001 ; SPECIES_KIRLIA - .short 0x0001, 0x0001 ; SPECIES_GARDEVOIR - .short 0x0001, 0x0001 ; SPECIES_SURSKIT - .short 0x0002, 0x0000 ; SPECIES_MASQUERAIN - .short 0x0001, 0x0001 ; SPECIES_SHROOMISH - .short 0x0002, 0x0001 ; SPECIES_BRELOOM - .short 0x0004, 0x0001 ; SPECIES_SLAKOTH - .short 0x0002, 0x0001 ; SPECIES_VIGOROTH - .short 0x0004, 0x0001 ; SPECIES_SLAKING - .short 0x0005, 0x0001 ; SPECIES_NINCADA - .short 0x0002, 0x0001 ; SPECIES_NINJASK - .short 0x0004, 0x0001 ; SPECIES_SHEDINJA - .short 0x0004, 0x0001 ; SPECIES_WHISMUR - .short 0x0004, 0x0001 ; SPECIES_LOUDRED - .short 0x0002, 0x0001 ; SPECIES_EXPLOUD - .short 0x0001, 0x0001 ; SPECIES_MAKUHITA - .short 0x0002, 0x0001 ; SPECIES_HARIYAMA - .short 0x0001, 0x0001 ; SPECIES_AZURILL - .short 0x0005, 0x0001 ; SPECIES_NOSEPASS - .short 0x0001, 0x0001 ; SPECIES_SKITTY - .short 0x0001, 0x0001 ; SPECIES_DELCATTY - .short 0x0003, 0x0001 ; SPECIES_SABLEYE - .short 0x0001, 0x0001 ; SPECIES_MAWILE - .short 0x0001, 0x0001 ; SPECIES_ARON - .short 0x0002, 0x0001 ; SPECIES_LAIRON - .short 0x0002, 0x0001 ; SPECIES_AGGRON - .short 0x0001, 0x0001 ; SPECIES_MEDITITE - .short 0x0002, 0x0001 ; SPECIES_MEDICHAM - .short 0x0001, 0x0001 ; SPECIES_ELECTRIKE - .short 0x0002, 0x0001 ; SPECIES_MANECTRIC - .short 0x0001, 0x0001 ; SPECIES_PLUSLE - .short 0x0001, 0x0001 ; SPECIES_MINUN - .short 0x0002, 0x0001 ; SPECIES_VOLBEAT - .short 0x0001, 0x0001 ; SPECIES_ILLUMISE - .short 0x0001, 0x0001 ; SPECIES_ROSELIA - .short 0x0004, 0x0000 ; SPECIES_GULPIN - .short 0x0004, 0x0000 ; SPECIES_SWALOT - .short 0x0003, 0x0000 ; SPECIES_CARVANHA - .short 0x0003, 0x0000 ; SPECIES_SHARPEDO - .short 0x0001, 0x0000 ; SPECIES_WAILMER - .short 0x0002, 0x0000 ; SPECIES_WAILORD - .short 0x0004, 0x0001 ; SPECIES_NUMEL - .short 0x0004, 0x0001 ; SPECIES_CAMERUPT - .short 0x0004, 0x0001 ; SPECIES_TORKOAL - .short 0x0001, 0x0000 ; SPECIES_SPOINK - .short 0x0002, 0x0001 ; SPECIES_GRUMPIG - .short 0x0004, 0x0001 ; SPECIES_SPINDA - .short 0x0004, 0x0001 ; SPECIES_TRAPINCH - .short 0x0002, 0x0001 ; SPECIES_VIBRAVA - .short 0x0002, 0x0001 ; SPECIES_FLYGON - .short 0x0001, 0x0001 ; SPECIES_CACNEA - .short 0x0003, 0x0001 ; SPECIES_CACTURNE - .short 0x0001, 0x0001 ; SPECIES_SWABLU - .short 0x0001, 0x0001 ; SPECIES_ALTARIA - .short 0x0002, 0x0001 ; SPECIES_ZANGOOSE - .short 0x0003, 0x0000 ; SPECIES_SEVIPER - .short 0x0005, 0x0000 ; SPECIES_LUNATONE - .short 0x0005, 0x0000 ; SPECIES_SOLROCK - .short 0x0001, 0x0000 ; SPECIES_BARBOACH - .short 0x0004, 0x0000 ; SPECIES_WHISCASH - .short 0x0002, 0x0001 ; SPECIES_CORPHISH - .short 0x0003, 0x0001 ; SPECIES_CRAWDAUNT - .short 0x0005, 0x0001 ; SPECIES_BALTOY - .short 0x0005, 0x0001 ; SPECIES_CLAYDOL - .short 0x0005, 0x0001 ; SPECIES_LILEEP - .short 0x0005, 0x0001 ; SPECIES_CRADILY - .short 0x0005, 0x0000 ; SPECIES_ANORITH - .short 0x0002, 0x0001 ; SPECIES_ARMALDO - .short 0x0004, 0x0000 ; SPECIES_FEEBAS - .short 0x0002, 0x0000 ; SPECIES_MILOTIC - .short 0x0001, 0x0000 ; SPECIES_CASTFORM - .short 0x0001, 0x0001 ; SPECIES_KECLEON - .short 0x0003, 0x0000 ; SPECIES_SHUPPET - .short 0x0003, 0x0001 ; SPECIES_BANETTE - .short 0x0003, 0x0000 ; SPECIES_DUSKULL - .short 0x0003, 0x0001 ; SPECIES_DUSCLOPS - .short 0x0002, 0x0001 ; SPECIES_TROPIUS - .short 0x0001, 0x0000 ; SPECIES_CHIMECHO - .short 0x0003, 0x0001 ; SPECIES_ABSOL - .short 0x0004, 0x0001 ; SPECIES_WYNAUT - .short 0x0001, 0x0001 ; SPECIES_SNORUNT - .short 0x0002, 0x0000 ; SPECIES_GLALIE - .short 0x0001, 0x0000 ; SPECIES_SPHEAL - .short 0x0002, 0x0000 ; SPECIES_SEALEO - .short 0x0002, 0x0000 ; SPECIES_WALREIN - .short 0x0001, 0x0000 ; SPECIES_CLAMPERL - .short 0x0002, 0x0000 ; SPECIES_HUNTAIL - .short 0x0001, 0x0000 ; SPECIES_GOREBYSS - .short 0x0004, 0x0000 ; SPECIES_RELICANTH - .short 0x0001, 0x0000 ; SPECIES_LUVDISC - .short 0x0001, 0x0001 ; SPECIES_BAGON - .short 0x0005, 0x0001 ; SPECIES_SHELGON - .short 0x0002, 0x0001 ; SPECIES_SALAMENCE - .short 0x0005, 0x0001 ; SPECIES_BELDUM - .short 0x0005, 0x0001 ; SPECIES_METANG - .short 0x0002, 0x0001 ; SPECIES_METAGROSS - .short 0x0005, 0x0001 ; SPECIES_REGIROCK - .short 0x0005, 0x0001 ; SPECIES_REGICE - .short 0x0005, 0x0001 ; SPECIES_REGISTEEL - .short 0x0001, 0x0001 ; SPECIES_LATIAS - .short 0x0002, 0x0001 ; SPECIES_LATIOS - .short 0x0002, 0x0001 ; SPECIES_KYOGRE - .short 0x0002, 0x0001 ; SPECIES_GROUDON - .short 0x0002, 0x0000 ; SPECIES_RAYQUAZA - .short 0x0001, 0x0001 ; SPECIES_JIRACHI - .short 0x0002, 0x0001 ; SPECIES_DEOXYS - .short 0x0001, 0x0001 ; SPECIES_TURTWIG - .short 0x0001, 0x0001 ; SPECIES_GROTLE - .short 0x0002, 0x0001 ; SPECIES_TORTERRA - .short 0x0001, 0x0001 ; SPECIES_CHIMCHAR - .short 0x0002, 0x0001 ; SPECIES_MONFERNO - .short 0x0002, 0x0001 ; SPECIES_INFERNAPE - .short 0x0001, 0x0001 ; SPECIES_PIPLUP - .short 0x0002, 0x0001 ; SPECIES_PRINPLUP - .short 0x0002, 0x0001 ; SPECIES_EMPOLEON - .short 0x0001, 0x0001 ; SPECIES_STARLY - .short 0x0001, 0x0001 ; SPECIES_STARAVIA - .short 0x0002, 0x0001 ; SPECIES_STARAPTOR - .short 0x0004, 0x0001 ; SPECIES_BIDOOF - .short 0x0004, 0x0001 ; SPECIES_BIBAREL - .short 0x0001, 0x0001 ; SPECIES_KRICKETOT - .short 0x0002, 0x0001 ; SPECIES_KRICKETUNE - .short 0x0001, 0x0001 ; SPECIES_SHINX - .short 0x0001, 0x0001 ; SPECIES_LUXIO - .short 0x0002, 0x0001 ; SPECIES_LUXRAY - .short 0x0001, 0x0001 ; SPECIES_BUDEW - .short 0x0002, 0x0001 ; SPECIES_ROSERADE - .short 0x0002, 0x0001 ; SPECIES_CRANIDOS - .short 0x0002, 0x0001 ; SPECIES_RAMPARDOS - .short 0x0002, 0x0001 ; SPECIES_SHIELDON - .short 0x0002, 0x0001 ; SPECIES_BASTIODON - .short 0x0001, 0x0000 ; SPECIES_BURMY - .short 0x0001, 0x0000 ; SPECIES_WORMADAM - .short 0x0002, 0x0001 ; SPECIES_MOTHIM - .short 0x0001, 0x0000 ; SPECIES_COMBEE - .short 0x0001, 0x0000 ; SPECIES_VESPIQUEN - .short 0x0001, 0x0001 ; SPECIES_PACHIRISU - .short 0x0001, 0x0001 ; SPECIES_BUIZEL - .short 0x0002, 0x0001 ; SPECIES_FLOATZEL - .short 0x0001, 0x0001 ; SPECIES_CHERUBI - .short 0x0001, 0x0001 ; SPECIES_CHERRIM - .short 0x0001, 0x0001 ; SPECIES_SHELLOS - .short 0x0003, 0x0001 ; SPECIES_GASTRODON - .short 0x0001, 0x0001 ; SPECIES_AMBIPOM - .short 0x0003, 0x0000 ; SPECIES_DRIFLOON - .short 0x0003, 0x0000 ; SPECIES_DRIFBLIM - .short 0x0001, 0x0001 ; SPECIES_BUNEARY - .short 0x0001, 0x0001 ; SPECIES_LOPUNNY - .short 0x0003, 0x0000 ; SPECIES_MISMAGIUS - .short 0x0003, 0x0001 ; SPECIES_HONCHKROW - .short 0x0001, 0x0001 ; SPECIES_GLAMEOW - .short 0x0001, 0x0001 ; SPECIES_PURUGLY - .short 0x0001, 0x0001 ; SPECIES_CHINGLING - .short 0x0003, 0x0001 ; SPECIES_STUNKY - .short 0x0003, 0x0001 ; SPECIES_SKUNTANK - .short 0x0005, 0x0000 ; SPECIES_BRONZOR - .short 0x0005, 0x0000 ; SPECIES_BRONZONG - .short 0x0004, 0x0001 ; SPECIES_BONSLY - .short 0x0001, 0x0001 ; SPECIES_MIME_JR - .short 0x0001, 0x0001 ; SPECIES_HAPPINY - .short 0x0004, 0x0001 ; SPECIES_CHATOT - .short 0x0003, 0x0001 ; SPECIES_SPIRITOMB - .short 0x0001, 0x0001 ; SPECIES_GIBLE - .short 0x0002, 0x0001 ; SPECIES_GABITE - .short 0x0002, 0x0001 ; SPECIES_GARCHOMP - .short 0x0004, 0x0001 ; SPECIES_MUNCHLAX - .short 0x0001, 0x0001 ; SPECIES_RIOLU - .short 0x0002, 0x0001 ; SPECIES_LUCARIO - .short 0x0004, 0x0001 ; SPECIES_HIPPOPOTAS - .short 0x0002, 0x0001 ; SPECIES_HIPPOWDON - .short 0x0003, 0x0001 ; SPECIES_SKORUPI - .short 0x0003, 0x0001 ; SPECIES_DRAPION - .short 0x0003, 0x0001 ; SPECIES_CROAGUNK - .short 0x0003, 0x0001 ; SPECIES_TOXICROAK - .short 0x0004, 0x0000 ; SPECIES_CARNIVINE - .short 0x0001, 0x0000 ; SPECIES_FINNEON - .short 0x0002, 0x0000 ; SPECIES_LUMINEON - .short 0x0001, 0x0000 ; SPECIES_MANTYKE - .short 0x0001, 0x0001 ; SPECIES_SNOVER - .short 0x0002, 0x0001 ; SPECIES_ABOMASNOW - .short 0x0002, 0x0001 ; SPECIES_WEAVILE - .short 0x0005, 0x0000 ; SPECIES_MAGNEZONE - .short 0x0004, 0x0001 ; SPECIES_LICKILICKY - .short 0x0002, 0x0001 ; SPECIES_RHYPERIOR - .short 0x0004, 0x0001 ; SPECIES_TANGROWTH - .short 0x0002, 0x0001 ; SPECIES_ELECTIVIRE - .short 0x0002, 0x0001 ; SPECIES_MAGMORTAR - .short 0x0002, 0x0001 ; SPECIES_TOGEKISS - .short 0x0002, 0x0001 ; SPECIES_YANMEGA - .short 0x0002, 0x0001 ; SPECIES_LEAFEON - .short 0x0002, 0x0001 ; SPECIES_GLACEON - .short 0x0002, 0x0001 ; SPECIES_GLISCOR - .short 0x0004, 0x0001 ; SPECIES_MAMOSWINE - .short 0x0005, 0x0001 ; SPECIES_PORYGON_Z - .short 0x0002, 0x0001 ; SPECIES_GALLADE - .short 0x0005, 0x0001 ; SPECIES_PROBOPASS - .short 0x0003, 0x0000 ; SPECIES_DUSKNOIR - .short 0x0001, 0x0000 ; SPECIES_FROSLASS - .short 0x0002, 0x0000 ; SPECIES_ROTOM - .short 0x0001, 0x0001 ; SPECIES_UXIE - .short 0x0001, 0x0001 ; SPECIES_MESPRIT - .short 0x0001, 0x0001 ; SPECIES_AZELF - .short 0x0002, 0x0001 ; SPECIES_DIALGA - .short 0x0002, 0x0001 ; SPECIES_PALKIA - .short 0x0002, 0x0001 ; SPECIES_HEATRAN - .short 0x0005, 0x0001 ; SPECIES_REGIGIGAS - .short 0x0002, 0x0001 ; SPECIES_GIRATINA - .short 0x0002, 0x0000 ; SPECIES_CRESSELIA - .short 0x0001, 0x0000 ; SPECIES_PHIONE - .short 0x0001, 0x0000 ; SPECIES_MANAPHY - .short 0x0003, 0x0001 ; SPECIES_DARKRAI - .short 0x0001, 0x0001 ; SPECIES_SHAYMIN - .short 0x0002, 0x0001 ; SPECIES_ARCEUS - - .global UNK05_021FD1B8 -UNK05_021FD1B8: ; 0x021FD1B8 - .word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000 - - .section .data - - .balign 4 - .global UNK05_021FD648 -UNK05_021FD648: ; 0x021FD648 - .asciz "fielddata/build_model/build_model_matshp.dat" - - .section .bss - - .global UNK05_021FD680 -UNK05_021FD680: ; 0x021FD680 - .space 0x4 - - .global UNK05_021FD684 -UNK05_021FD684: ; 0x021FD684 - .space 0x3C01C diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 13b58921..68ab4fbd 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -8553,7 +8553,7 @@ _0223D710: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xb str r0, [sp] mov r0, #2 @@ -8606,7 +8606,7 @@ MOD06_0223D7B8: ; 0x0223D7B8 add r4, r0, #0 add r0, #8 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #8 bl ClearWindowTilemapAndCopyToVram @@ -8646,7 +8646,7 @@ _0223D804: add r0, r4, #0 add r0, #0x18 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x18 bl RemoveWindow @@ -8850,7 +8850,7 @@ MOD06_0223D9C0: ; 0x0223D9C0 add r5, r0, #0 add r0, #0x28 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r4, #0 add r5, #8 _0223D9D0: @@ -9462,7 +9462,7 @@ MOD06_0223DED0: ; 0x0223DED0 mov r1, #1 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0x88 ldr r0, [r0] @@ -9646,7 +9646,7 @@ _0223E034: mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r1, _0223E190 ; =0x00000242 mov r2, #1 strh r4, [r5, r1] @@ -9838,7 +9838,7 @@ _0223E214: mov r1, #1 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x18 mov r1, #0xb bl String_ctor @@ -9926,11 +9926,11 @@ _0223E2C4: add r0, r4, #0 add r0, #0x48 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x38 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x58 mov r1, #0xf @@ -9946,15 +9946,15 @@ _0223E314: beq _0223E374 add r0, r4, #0 add r0, #0x48 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x38 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x58 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 mov r1, #0 bl MOD06_0223EBF8 @@ -10175,7 +10175,7 @@ MOD06_0223E4E8: ; 0x0223E4E8 mov r1, #1 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _0223E50A: mov r0, #0x18 mov r1, #0xb @@ -10450,7 +10450,7 @@ _0223E74A: add r0, r5, #0 add r0, #0x58 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 mov r1, #0 bl MOD06_0223EBF8 @@ -10663,7 +10663,7 @@ _0223E902: add r0, r5, #0 add r0, #0x58 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 mov r1, #0 bl MOD06_0223EBF8 @@ -10715,7 +10715,7 @@ _0223E966: add r0, r4, #0 add r0, #0x58 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 mov r1, #0 bl MOD06_0223EBF8 @@ -11366,7 +11366,7 @@ _0223EEB8: mov r1, #1 add r0, #0x20 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r4, sp, #0x40 add r3, sp, #0x14 add r2, r3, #0 @@ -11848,7 +11848,7 @@ _0223F2AA: mov r1, #1 add r0, #0x30 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, _0223F330 ; =0x02252420 mov r1, #0xf ldr r0, [r0] @@ -12606,7 +12606,7 @@ _0223F910: mov r1, #1 add r0, #0x30 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, _0223F950 ; =0x02252420 mov r1, #0xf ldr r0, [r0] @@ -13847,7 +13847,7 @@ MOD06_02240364: ; 0x02240364 add r0, r4, #0 add r0, #0x20 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, [r4, #0x64] bl ListMenuItems_dtor mov r1, #0 @@ -13869,7 +13869,7 @@ MOD06_02240364: ; 0x02240364 mov r1, #0 ldr r0, [r0] add r0, #0x30 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _022403DC ; =0x02252420 ldr r0, [r0] add r0, #0x30 @@ -14521,7 +14521,7 @@ MOD06_022408D4: ; 0x022408D4 beq _022408EC add r0, #0x54 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x54 bl ClearWindowTilemapAndCopyToVram @@ -14600,7 +14600,7 @@ _02240940: add r0, #0x34 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r5, #8] ldr r1, [r5, #0x68] mov r2, #0x7b @@ -14690,7 +14690,7 @@ MOD06_02240A28: ; 0x02240A28 add r0, r4, #0 add r0, #0x34 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r1, r4, #0 add r1, #0x38 ldrb r1, [r1] @@ -14816,7 +14816,7 @@ MOD06_02240B04: ; 0x02240B04 add r0, #0x44 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r6, #0 _02240B4A: ldr r0, [r5, #0xc] @@ -14925,7 +14925,7 @@ _02240C1A: add r0, r5, #0 add r0, #0x44 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r1, r5, #0 add r1, #0x48 ldrb r1, [r1] @@ -14989,7 +14989,7 @@ MOD06_02240C58: ; 0x02240C58 ldr r2, _02240F00 ; =0x000003D9 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp, #0x24] mov r1, #0xf bl FillWindowPixelBuffer @@ -15281,7 +15281,7 @@ MOD06_02240F1C: ; 0x02240F1C add r4, r0, #0 add r0, #0x24 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r1, r4, #0 add r1, #0x28 ldrb r1, [r1] @@ -19020,7 +19020,7 @@ MOD06_02242CDC: ; 0x02242CDC add r0, r4, #4 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 bl MOD06_02242DA8 add r0, r4, #0 @@ -19430,7 +19430,7 @@ MOD06_02243024: ; 0x02243024 add r0, r6, #0 add r0, #0x14 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r6, #0 add r0, #0x14 bl RemoveWindow @@ -19442,7 +19442,7 @@ MOD06_02243024: ; 0x02243024 bl DestroyListMenu ldr r0, [r6, #0x74] mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r6, #4 bl RemoveWindow mov r4, #0 @@ -40889,7 +40889,7 @@ MOD06_0224D46C: ; 0x0224D46C add r0, r4, #0 add r2, r1, #0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 mov r1, #0xf bl FillWindowPixelBuffer @@ -41091,7 +41091,7 @@ MOD06_0224D6A4: ; 0x0224D6A4 push {r4, lr} add r4, r0, #0 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 bl ClearWindowTilemapAndCopyToVram add r0, r4, #0 @@ -41818,7 +41818,7 @@ MOD06_0224DC5C: ; 0x0224DC5C mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #1 str r0, [r5] _0224DCAE: @@ -42178,7 +42178,7 @@ _0224DF64: mov r1, #0 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop @@ -42338,7 +42338,7 @@ _0224E084: mov r1, #0 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r7, #0x4e mov r4, #0 add r6, r5, #0 @@ -42526,7 +42526,7 @@ MOD06_0224E24C: ; 0x0224E24C mov r1, #0 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 bl MOD06_0224E39C pop {r4, pc} diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index acd698d5..93dd97ef 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -37368,7 +37368,7 @@ _022244E4: mov r1, #0x10 mov r2, #0 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0 mvn r0, r0 str r0, [r4, #0x10] @@ -37384,7 +37384,7 @@ _02224508: cmp r1, r0 bne _02224532 mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _02224532 mov r0, #1 @@ -37393,7 +37393,7 @@ _02224508: mov r1, #0 mov r2, #0x10 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #1 mvn r0, r0 str r0, [r4, #0x10] @@ -37408,7 +37408,7 @@ _02224532: b _022245A8 _02224544: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _022245A8 ldr r0, [r4, #0xc] diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index c5b40b5e..a84812be 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -1518,7 +1518,7 @@ MOD09_02212A74: ; 0x02212A74 ldr r1, _02212A84 ; =0x00002060 add r0, r0, r1 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #2 pop {r3, pc} .align 2, 0 @@ -4714,7 +4714,7 @@ MOD09_022143F8: ; 0x022143F8 add r0, r4, r0 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, _02214450 ; =0x00002050 mov r1, #0xf add r0, r4, r0 @@ -8271,7 +8271,7 @@ MOD09_02216314: ; 0x02216314 add r0, r4, r0 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, _02216338 ; =0x00002060 mov r1, #0xf add r0, r4, r0 @@ -13561,7 +13561,7 @@ MOD09_02218E68: ; 0x02218E68 push {r3, lr} add r0, #0x1c mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #3 pop {r3, pc} .align 2, 0 @@ -15226,7 +15226,7 @@ MOD09_02219BE0: ; 0x02219BE0 add r0, #0x1c mov r1, #1 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 add r0, #0x1c mov r1, #0xf diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 1040df95..72e5cdbb 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -638,7 +638,7 @@ _0222D99A: mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 bl MOD11_0222FE94 add sp, #0x68 @@ -800,7 +800,7 @@ _0222DC42: mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #5 bl FUN_0200BB14 add r1, r4, #0 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 1905bce4..0d0c4341 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -191,7 +191,7 @@ _0222F30E: mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r2, #0x51 mov r0, #1 mov r1, #0x1a @@ -23867,7 +23867,7 @@ _0223AC50: mov r1, #0 mov r2, #1 mov r3, #8 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xa add sp, #0xd4 str r0, [r4, #0x28] @@ -24053,7 +24053,7 @@ _0223AE5E: bl MOD11_0222FF6C add r6, r0, #0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r6, #0 bl RemoveWindow ldr r1, _0223AF50 ; =0x04000008 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index c035be6d..dd36a17b 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -8253,7 +8253,7 @@ _022318EA: MOD12_022318F8: ; 0x022318F8 push {r3, lr} mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _02231908 mov r0, #1 @@ -8268,7 +8268,7 @@ MOD12_0223190C: ; 0x0223190C sub sp, #4 mov r0, #1 add r4, r1, #0 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _02231972 ldr r0, [r4, #8] @@ -8286,7 +8286,7 @@ MOD12_0223190C: ; 0x0223190C mov r1, #0 mov r2, #4 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _02231978 ; =0x000005F8 bl PlaySE mov r0, #0 @@ -28090,7 +28090,7 @@ _0223AED6: add r0, #0x34 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x30] @@ -28136,7 +28136,7 @@ _0223AF34: ldr r0, [r4] mov r1, #1 add r0, #0x34 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x30] @@ -28281,7 +28281,7 @@ _0223B04E: ldrsb r1, [r4, r1] ldrsb r2, [r4, r2] mov r3, #0x3d - bl FUN_0200A208 + bl StartBrightnessTransition ldrb r0, [r4, #0x10] add sp, #8 add r0, r0, #1 @@ -28289,7 +28289,7 @@ _0223B04E: pop {r3, r4, r5, pc} _0223B06C: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _0223B0C0 mov r1, #0 @@ -35076,7 +35076,7 @@ _0223E49A: add r0, #0x88 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r5, #0x74] mov r1, #1 bl ScheduleBgTilemapBufferTransfer @@ -35135,7 +35135,7 @@ MOD12_0223E528: ; 0x0223E528 add r4, r0, #0 add r0, #0x88 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, [r4, #0x74] mov r1, #1 bl ScheduleBgTilemapBufferTransfer @@ -39309,7 +39309,7 @@ _02240522: add r0, #0x78 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x74] @@ -39355,7 +39355,7 @@ _02240580: ldr r0, [r4] mov r1, #1 add r0, #0x78 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x74] @@ -46795,7 +46795,7 @@ _02243F56: add r0, #0x34 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x30] @@ -46842,7 +46842,7 @@ _02243FBA: ldr r0, [r4] mov r1, #1 add r0, #0x34 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, [r4] mov r1, #1 ldr r0, [r0, #0x30] @@ -47010,7 +47010,7 @@ _022440EE: add r0, #0x34 mov r2, #1 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4] mov r1, #0xff add r0, #0x34 @@ -47725,7 +47725,7 @@ _0224467E: mov r1, #0x10 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _02244704 ; =0x0000049E mov r1, #0x5a bl FUN_02005350 @@ -47735,7 +47735,7 @@ _0224467E: pop {r3, r4, r5, pc} _0224469E: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _02244700 bl FUN_02005404 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index e1acb188..67f55456 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -10857,7 +10857,7 @@ MOD14_021DCA38: ; 0x021DCA38 bl FreeToHeap add r0, r4, #0 bl FreeToHeap - bl FUN_02009FA0 + bl DeinitOamData pop {r4, pc} .align 2, 0 _021DCB08: .word 0x0000B3AC @@ -10994,7 +10994,7 @@ MOD14_021DCBFC: ; 0x021DCBFC bl MOD14_021E0EE4 ldr r0, [r4, #0x18] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _021DCC24 ; =0x027E0000 ldr r1, _021DCC28 ; =0x00003FF8 mov r0, #1 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 173d4fd6..3b404a7b 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -2664,7 +2664,7 @@ _021D88A4: bl FUN_0200CAB4 ldr r0, [r6, #4] bl FUN_0200CAB4 - bl FUN_02009FA0 + bl DeinitOamData ldr r0, [r6, #0x24] bl FUN_0201FD58 ldr r0, [r6, #0x20] @@ -2691,7 +2691,7 @@ MOD15_021D88DC: ; 0x021D88DC push {r3, lr} ldr r0, [r1, #0x24] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _021D88F8 ; =0x027E0000 ldr r1, _021D88FC ; =0x00003FF8 mov r0, #1 @@ -4529,7 +4529,7 @@ MOD15_021D9694: ; 0x021D9694 add r0, #0x1c add r1, r4, #0 mov r2, #0xf - bl FUN_0200D06C + bl DrawWindowFrame2 add r0, r5, #0 add r0, #0xc bl PutWindowTilemap @@ -5503,7 +5503,7 @@ MOD15_021D9ECC: ; 0x021D9ECC mov r1, #0 lsr r2, r2, #0x10 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r1, r5, #0 ldr r0, [r5, #0x50] add r1, #0x2c @@ -5549,7 +5549,7 @@ MOD15_021D9F88: ; 0x021D9F88 add r4, r0, #0 add r0, #0x2c mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r4, #0x2c add r0, r4, #0 bl ClearWindowTilemapAndCopyToVram diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 16b3c00d..3365be5a 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -105,7 +105,7 @@ _021D75AC: mvn r0, r0 mov r1, #0x3f mov r2, #3 - bl FUN_0200A274 + bl SetBrightness ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -614,7 +614,7 @@ MOD16_021D79FC: ; 0x021D79FC thumb_func_start MOD16_021D7A10 MOD16_021D7A10: ; 0x021D7A10 push {r3, lr} - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C bl MOD16_021D8514 @@ -627,7 +627,7 @@ MOD16_021D7A24: ; 0x021D7A24 ldr r1, _021D7A34 ; =0x0000177C add r0, r0, r1 bl MOD16_021D86DC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer pop {r3, pc} .align 2, 0 _021D7A34: .word 0x0000177C @@ -13301,7 +13301,7 @@ MOD16_021DD724: ; 0x021DD724 mov r0, #4 sub r2, #0x10 mov r3, #0x39 - bl FUN_0200A208 + bl StartBrightnessTransition pop {r3, r4, r5, pc} _021DD74C: mov r0, #1 @@ -13311,7 +13311,7 @@ _021DD74C: sub r1, #0x14 mov r2, #0 mov r3, #0x39 - bl FUN_0200A208 + bl StartBrightnessTransition _021DD75E: pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD724 @@ -13328,7 +13328,7 @@ MOD16_021DD760: ; 0x021DD760 cmp r0, #1 beq _021DD77C mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive b _021DD77E _021DD77C: mov r0, #1 @@ -13346,7 +13346,7 @@ _021DD77E: mvn r0, r0 mov r1, #0x3f mov r2, #1 - bl FUN_0200A274 + bl SetBrightness ldr r0, [r5] mov r1, #0 add r0, r0, #4 @@ -14292,14 +14292,14 @@ _021DDE94: mov r0, #4 sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDEC8 _021DDEAE: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DDEC8 ldr r0, [r4] @@ -14415,14 +14415,14 @@ _021DDF86: sub r1, #0x14 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDFD8 _021DDFA0: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DDFD8 ldr r0, [r4] @@ -16501,14 +16501,14 @@ _021DEEF6: str r0, [sp] sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEF2E _021DEF18: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DEF2E ldr r0, [r4] @@ -16592,7 +16592,7 @@ _021DEF96: sub r1, #0x16 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -16603,7 +16603,7 @@ _021DEFB6: b _021DEFF2 _021DEFBC: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DEFF2 ldr r0, [r4] @@ -18398,7 +18398,7 @@ _021DFD50: mov r0, #1 sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 @@ -18409,7 +18409,7 @@ _021DFD50: b _021DFD96 _021DFD80: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DFD96 ldr r0, [r4] @@ -18617,14 +18617,14 @@ _021DFF02: sub r1, #0x16 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFF6E _021DFF1C: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DFF6E ldr r0, [r4] @@ -25278,7 +25278,7 @@ MOD16_021E2E74: ; 0x021E2E74 mov r0, #4 sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition add sp, #4 pop {r3, r4, pc} _021E2EA4: @@ -25293,7 +25293,7 @@ _021E2EA4: sub r1, #0x14 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition _021E2EC0: add sp, #4 pop {r3, r4, pc} @@ -28340,7 +28340,7 @@ MOD16_021E45BC: ; 0x021E45BC b _021E45E2 _021E45DC: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive _021E45E2: cmp r0, #0 beq _021E45F4 @@ -37267,7 +37267,7 @@ MOD16_021E8878: ; 0x021E8878 b _021E889E _021E8898: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive _021E889E: cmp r0, #0 beq _021E88B0 @@ -39308,7 +39308,7 @@ _021E979E: mov r0, #4 sub r2, #0x10 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 @@ -39319,7 +39319,7 @@ _021E979E: b _021E97D8 _021E97C2: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021E97D8 ldr r0, [r4] @@ -39392,14 +39392,14 @@ _021E9834: sub r1, #0x14 mov r2, #0 mov r3, #0x3f - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E9890 _021E984E: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021E9890 ldr r0, [r4] @@ -42999,7 +42999,7 @@ MOD16_021EB2E0: ; 0x021EB2E0 b _021EB306 _021EB300: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive _021EB306: cmp r0, #0 beq _021EB318 @@ -46749,7 +46749,7 @@ MOD16_021ECF04: ; 0x021ECF04 b _021ECF2A _021ECF24: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive _021ECF2A: cmp r0, #0 beq _021ECF3C @@ -50300,7 +50300,7 @@ MOD16_021EEA00: ; 0x021EEA00 b _021EEA26 _021EEA20: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive _021EEA26: cmp r0, #0 beq _021EEA38 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 7e32e1c9..485836b0 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -863,7 +863,7 @@ MOD17_021D7AE4: ; 0x021D7AE4 bl DoScheduledBgGpuUpdates ldr r0, [r4, #0x20] bl FUN_020081C4 - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer pop {r4, pc} .align 2, 0 thumb_func_end MOD17_021D7AE4 @@ -1137,7 +1137,7 @@ MOD17_021D7CF0: ; 0x021D7CF0 push {r3, lr} ldr r0, [r0, #0x38] bl DoScheduledBgGpuUpdates - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer pop {r3, pc} .align 2, 0 thumb_func_end MOD17_021D7CF0 @@ -1724,7 +1724,7 @@ _021D8178: blt _021D8178 bl FUN_0201D12C bl FUN_0201E08C - bl FUN_02009FA0 + bl DeinitOamData pop {r3, r4, r5, pc} thumb_func_end MOD17_021D816C @@ -3933,7 +3933,7 @@ _021D934E: sub r1, #0x18 mov r2, #0 mov r3, #0xa - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0xc] add sp, #4 add r0, r0, #1 @@ -3941,7 +3941,7 @@ _021D934E: pop {r3, r4, pc} _021D936A: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D9424 ldr r0, [r4, #0xc] @@ -4009,7 +4009,7 @@ _021D93EA: mov r0, #8 sub r2, #0x10 mov r3, #0xa - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0xc] add sp, #4 add r0, r0, #1 @@ -4017,7 +4017,7 @@ _021D93EA: pop {r3, r4, pc} _021D9406: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D9424 ldr r0, [r4, #0xc] @@ -4093,7 +4093,7 @@ _021D9482: sub r1, #0x18 mov r2, #0 mov r3, #0xa - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0xc] add sp, #4 add r0, r0, #1 @@ -4101,7 +4101,7 @@ _021D9482: pop {r3, r4, pc} _021D949E: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D95A4 ldr r0, [r4, #0xc] @@ -4175,7 +4175,7 @@ _021D952E: mov r0, #8 sub r2, #0x10 mov r3, #0xa - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4, #0xc] add sp, #4 add r0, r0, #1 @@ -4183,7 +4183,7 @@ _021D952E: pop {r3, r4, pc} _021D954A: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D95A4 ldr r0, [r4, #0xc] @@ -4707,7 +4707,7 @@ MOD17_021D9918: ; 0x021D9918 ldr r0, [r5, r0] mov r2, #0x74 mov r3, #8 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r2, _021D99D8 ; =0x00000151 mov r0, #0 mov r1, #0x1a @@ -11470,7 +11470,7 @@ _021DC9CC: ldr r0, [r5, r0] mov r1, #0 add r3, r2, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _021DCA42: ldr r0, [r4, #4] str r0, [r5, #0x30] @@ -11825,7 +11825,7 @@ MOD17_021DCC68: ; 0x021DCC68 ldr r0, [r5] mov r1, #0 add r3, r2, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _021DCCCC: ldr r0, [r5] bl CopyWindowToVram @@ -11879,7 +11879,7 @@ MOD17_021DCCEC: ; 0x021DCCEC add r0, r5, #0 mov r1, #0 add r3, r2, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} @@ -11917,7 +11917,7 @@ MOD17_021DCD34: ; 0x021DCD34 add r0, r5, #0 mov r1, #0 add r3, r2, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 add sp, #0x14 pop {r4, r5, r6, r7, pc} diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index f30d7e23..abced62a 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -1969,7 +1969,7 @@ _0223A5F8: ldr r0, [r0] ldr r0, [r0, #0x20] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C mov r0, #0 @@ -2628,7 +2628,7 @@ _0223AB94: add r2, r1, #0 mov r3, #7 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x1a add sp, #0xc str r0, [r4] @@ -6175,7 +6175,7 @@ MOD18_0223C6CC: ; 0x0223C6CC add r0, r4, #0 bl DoScheduledBgGpuUpdates bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer pop {r4, pc} thumb_func_end MOD18_0223C6CC @@ -13940,7 +13940,7 @@ _0224013A: mov r1, #0xa mov r2, #0 add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #8 add r0, r0, #1 @@ -13957,7 +13957,7 @@ _0224015A: mov r1, #0 mov r2, #0xa add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #8 add r0, r0, #1 @@ -13989,7 +13989,7 @@ _02240190: sub r1, r0, #5 mov r2, #0 add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D638 bl MOD18_0224DD94 ldr r0, [r4, #0xc] @@ -14011,7 +14011,7 @@ _022401D2: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness add r0, r4, #0 bl FreeToHeap add r0, r5, #0 @@ -14123,7 +14123,7 @@ MOD18_022402A0: ; 0x022402A0 mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness add r0, r4, #0 bl FreeToHeap ldr r0, _022402EC ; =0x022513A0 @@ -14372,7 +14372,7 @@ _02240480: strh r0, [r1] mov r1, #1 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _022404EC ; =0x022513A0 mov r1, #2 ldr r0, [r0, #4] @@ -14666,7 +14666,7 @@ _022406A4: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r1, #0 mov r0, #0x12 str r1, [sp] @@ -14706,7 +14706,7 @@ _022406F6: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _02240884 ; =0x022513A0 ldr r1, [r0, #4] ldr r0, _02240888 ; =0x00000B3B @@ -14790,7 +14790,7 @@ _0224079E: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #4 mov r1, #1 bl GX_EngineAToggleLayers @@ -15358,7 +15358,7 @@ MOD18_02240C14: ; 0x02240C14 mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02240C70 ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -15593,7 +15593,7 @@ MOD18_02240DC8: ; 0x02240DC8 mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02240E28 ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -15658,7 +15658,7 @@ _02240E54: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition b _02240E7A _02240E68: cmp r0, #4 @@ -15668,7 +15668,7 @@ _02240E68: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition _02240E7A: ldr r0, [r4, #0x10] cmp r0, #0x1e @@ -15692,7 +15692,7 @@ _02240EA4: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02240EE0 ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -15826,7 +15826,7 @@ _02240FB4: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02241004 ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -15944,7 +15944,7 @@ _02241096: mov r1, #0xa mov r2, #0 add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #0x14 add r0, r0, #1 @@ -15961,7 +15961,7 @@ _022410B6: mov r1, #0 mov r2, #0xa add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #0x14 add r0, r0, #1 @@ -16441,7 +16441,7 @@ _02241472: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _022416A0 ; =0x022513A0 ldr r1, _022416A4 ; =0x00000B3B ldr r0, [r0, #4] @@ -16515,7 +16515,7 @@ _02241500: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _022416A0 ; =0x022513A0 ldr r1, _022416A4 ; =0x00000B3B ldr r0, [r0, #4] @@ -16618,7 +16618,7 @@ _022415C0: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D638 mov r2, #0 mov r1, #0x4c @@ -16742,13 +16742,13 @@ _022416D6: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness mov r0, #1 mov r1, #0 sub r2, r1, #4 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x45 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -17873,7 +17873,7 @@ _02241F60: mov r1, #0xa mov r2, #0 add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #0x10 add r0, r0, #1 @@ -17911,7 +17911,7 @@ _02241FD4: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r3, #0 str r3, [sp] mov r0, #2 @@ -18683,7 +18683,7 @@ _02242604: strh r0, [r1] mov r1, #1 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02242664 ; =0x0400006C mov r1, #0 bl GXx_SetMasterBrightness_ @@ -19893,7 +19893,7 @@ _02242F98: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r3, #0 str r3, [sp] mov r0, #1 @@ -19956,7 +19956,7 @@ _02243018: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r3, #0 str r3, [sp] mov r0, #2 @@ -20251,7 +20251,7 @@ _02243268: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness mov r0, #0x10 bl FUN_0204F774 ldr r0, _022432AC ; =0x022513A0 @@ -20644,7 +20644,7 @@ _0224358C: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _02243784 ; =0x022513A0 ldr r1, _02243788 ; =0x00000B3B ldr r0, [r0, #4] @@ -20710,7 +20710,7 @@ _0224360E: mov r2, #0xa add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _02243784 ; =0x022513A0 ldr r1, _02243788 ; =0x00000B3B ldr r0, [r0, #4] @@ -20991,7 +20991,7 @@ _02243840: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02243890 ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -21069,7 +21069,7 @@ _022438DA: mov r1, #0xa mov r2, #0 add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #4 add r0, r0, #1 @@ -21086,7 +21086,7 @@ _022438FA: mov r1, #0 mov r2, #0xa add r3, r0, #0 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add sp, #4 add r0, r0, #1 @@ -21257,7 +21257,7 @@ _02243A44: mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness ldr r0, _02243A8C ; =0x04000050 mov r1, #0 strh r1, [r0] @@ -22707,7 +22707,7 @@ _02244588: lsl r0, r0, #4 add r0, r4, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x39 lsl r0, r0, #4 add r0, r4, r0 @@ -25590,7 +25590,7 @@ MOD18_02245B1C: ; 0x02245B1C ldr r2, [sp, #8] ldr r3, [sp, #0xc] mov r1, #1 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp, #0x30] mov r2, #0 lsl r0, r0, #0x18 @@ -29555,7 +29555,7 @@ MOD18_02247AA8: ; 0x02247AA8 add r0, #0xc mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _02247B58 ; =0x0000023F mov r0, #0 mov r1, #0x1a @@ -29681,7 +29681,7 @@ MOD18_02247BB8: ; 0x02247BB8 add r0, #0xc mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _02247C90 ; =0x0000023E mov r0, #0 mov r1, #0x1a @@ -29854,7 +29854,7 @@ MOD18_02247D1C: ; 0x02247D1C add r0, #0xc mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _02247DD0 ; =0x0000023D mov r0, #0 mov r1, #0x1a @@ -30155,7 +30155,7 @@ MOD18_02247FC0: ; 0x02247FC0 add r0, r4, #0 add r0, #0xc mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r1, #0 ldr r0, [r4, #0x20] add r2, r1, #0 @@ -31131,7 +31131,7 @@ MOD18_02248784: ; 0x02248784 add r0, r4, #0 add r0, #8 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r1, #0 ldr r0, [r4, #0x1c] add r2, r1, #0 @@ -31225,7 +31225,7 @@ MOD18_02248820: ; 0x02248820 add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _022488E8 ; =0x0000023D mov r0, #0 mov r1, #0x1a @@ -32967,7 +32967,7 @@ MOD18_02249564: ; 0x02249564 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D638 bl MOD18_0224DBB4 ldr r4, _0224967C ; =0x022505B8 @@ -33405,7 +33405,7 @@ _02249936: add r0, r4, #0 add r0, #0x10 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldrb r1, [r4, #0x14] ldr r0, [r4, #0x10] bl ScheduleBgTilemapBufferTransfer @@ -33486,7 +33486,7 @@ _022499A2: add r0, #0x20 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D638 bl MOD18_0224DBB4 mov r7, #0 @@ -33571,7 +33571,7 @@ _02249A8C: add r0, r4, #0 add r0, #0x20 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r4, #0x20 add r0, r4, #0 bl RemoveWindow @@ -33752,7 +33752,7 @@ MOD18_02249BA8: ; 0x02249BA8 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D678 bl MOD18_0224DBB4 mov r4, #0 @@ -34219,7 +34219,7 @@ MOD18_02249F8C: ; 0x02249F8C add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D678 bl MOD18_0224DBB4 mov r4, #0 @@ -34668,7 +34668,7 @@ MOD18_0224A360: ; 0x0224A360 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D678 bl MOD18_0224DBB4 mov r4, #0 @@ -35606,7 +35606,7 @@ MOD18_0224AB08: ; 0x0224AB08 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 bl MOD18_0223D678 bl MOD18_0224DBB4 mov r4, #0 @@ -36157,7 +36157,7 @@ MOD18_0224AFE8: ; 0x0224AFE8 mov r1, #1 mov r0, #0 add r2, r1, #0 - bl FUN_0200A274 + bl SetBrightness mov r1, #1 add r0, r4, #0 mvn r1, r1 @@ -36652,7 +36652,7 @@ _0224B374: add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r2, #0x91 mov r0, #0 mov r1, #0x1a @@ -36775,7 +36775,7 @@ MOD18_0224B464: ; 0x0224B464 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r2, #0x91 mov r0, #0 mov r1, #0x1a @@ -37566,7 +37566,7 @@ _0224BB22: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D658 mov r2, #0 mov r1, #0x30 @@ -37598,7 +37598,7 @@ _0224BB6E: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D658 mov r2, #0 mov r1, #0x31 @@ -37630,7 +37630,7 @@ _0224BBBA: mov r2, #0 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D658 mov r2, #0 mov r1, #0x32 @@ -37670,7 +37670,7 @@ _0224BC1E: sub r2, r1, #6 add r3, r0, #0 str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition bl MOD18_0223D658 bl MOD18_0224DD94 bl FUN_0202EDD8 @@ -38486,7 +38486,7 @@ _0224C288: add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0x92 lsl r1, r1, #2 ldrb r0, [r5, r1] @@ -39108,7 +39108,7 @@ MOD18_0224C7D4: ; 0x0224C7D4 add r0, #0x10 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r2, #0x92 lsl r2, r2, #2 ldrb r0, [r5, r2] @@ -39256,7 +39256,7 @@ MOD18_0224C94C: ; 0x0224C94C add r0, r4, #0 add r0, #0x20 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x20 bl RemoveWindow @@ -39485,7 +39485,7 @@ MOD18_0224CADC: ; 0x0224CADC add r0, #0x20 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _0224CB1A: add r0, r4, #0 add r0, #0x20 @@ -39527,7 +39527,7 @@ MOD18_0224CB34: ; 0x0224CB34 add r0, #0x30 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0x30 mov r1, #0xf @@ -39566,7 +39566,7 @@ MOD18_0224CBAC: ; 0x0224CBAC add r0, r4, #0 add r0, #0x30 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r4, #0x30 add r0, r4, #0 bl RemoveWindow @@ -40736,7 +40736,7 @@ MOD18_0224D56C: ; 0x0224D56C add r0, r4, #0 add r0, #8 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #8 bl ClearWindowTilemapAndCopyToVram @@ -40817,7 +40817,7 @@ MOD18_0224D5CC: ; 0x0224D5CC add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _0224D688 ; =0x00000245 mov r0, #0 mov r1, #0x1a @@ -41321,7 +41321,7 @@ MOD18_0224DA00: ; 0x0224DA00 add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r2, #0x91 mov r0, #0 mov r1, #0x1a @@ -41364,7 +41364,7 @@ MOD18_0224DAA8: ; 0x0224DAA8 add r4, r0, #0 add r0, #8 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #8 bl ClearWindowTilemapAndCopyToVram @@ -41597,7 +41597,7 @@ _0224DC4C: add r0, #8 mov r1, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 cmp r4, #0 beq _0224DC74 ldr r0, _0224DCB4 ; =MOD18_0224DBB8 @@ -41729,7 +41729,7 @@ _0224DD4C: add r0, r5, #0 add r0, #8 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r0, #8 bl ClearWindowTilemapAndCopyToVram @@ -41741,7 +41741,7 @@ _0224DD6C: add r0, r5, #0 add r0, #8 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 _0224DD76: mov r0, #8 str r0, [r5, #0x30] @@ -42324,13 +42324,13 @@ MOD18_0224E0CC: ; 0x0224E0CC add r0, r5, #4 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 ldr r2, _0224E1FC ; =0x000003D9 add r0, #0x14 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r3, _0224E200 ; =0x022507C0 add r2, sp, #0x14 ldmia r3!, {r0, r1} @@ -42480,14 +42480,14 @@ MOD18_0224E26C: ; 0x0224E26C add r0, r4, #0 add r0, #0x14 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, [r4, #0x28] ldr r1, [r4, #0x30] ldr r2, [r4, #0x34] bl DestroyListMenu add r0, r4, #4 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldrb r1, [r4, #8] ldr r0, [r4, #4] bl ScheduleBgTilemapBufferTransfer @@ -42783,13 +42783,13 @@ _0224E454: add r0, #8 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 ldr r2, _0224E688 ; =0x000003D9 add r0, #0x18 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r2, _0224E68C ; =0x00000237 mov r0, #0 mov r1, #0x1a @@ -43007,7 +43007,7 @@ MOD18_0224E6A8: ; 0x0224E6A8 add r0, r4, #0 add r0, #0x18 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, [r4, #0x2c] ldr r1, [r4, #0x38] ldr r2, [r4, #0x3c] @@ -43015,7 +43015,7 @@ MOD18_0224E6A8: ; 0x0224E6A8 add r0, r4, #0 add r0, #8 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldrb r1, [r4, #0xc] ldr r0, [r4, #8] bl ScheduleBgTilemapBufferTransfer diff --git a/arm9/modules/20/asm/mod20_02252440.s b/arm9/modules/20/asm/mod20_02252440.s new file mode 100644 index 00000000..1af1ac98 --- /dev/null +++ b/arm9/modules/20/asm/mod20_02252440.s @@ -0,0 +1,1245 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02252440 +MOD20_02252440: ; 0x02252440 + ldr r3, _02252444 ; =FUN_02037790 + bx r3 + .align 2, 0 +_02252444: .word FUN_02037790 + thumb_func_end MOD20_02252440 + + thumb_func_start MOD20_02252448 +MOD20_02252448: ; 0x02252448 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #3 + str r2, [sp] + mov r1, #7 + lsl r2, r0, #0xe + add r7, r3, #0 + bl CreateHeap + mov r0, #3 + mov r1, #8 + lsl r2, r0, #0xe + bl CreateHeap + mov r0, #7 + mov r1, #0x60 + bl AllocFromHeap + add r4, r0, #0 + beq _022524B2 + str r4, [r5] + ldr r0, [sp] + str r6, [r4, #0x5c] + str r0, [r4, #0x54] + bl Sav2_Poketch_get + str r0, [r4, #0x58] + ldr r0, [sp, #0x18] + str r7, [r4, #0x4c] + str r0, [r4, #0x50] + add r0, r4, #0 + bl MOD20_0225253C + cmp r0, #0 + beq _022524B2 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + ldr r0, _022524B4 ; =MOD20_022525F0 + str r5, [r4, #0x34] + add r1, r4, #0 + mov r2, #4 + bl FUN_0200CA44 + str r0, [r4, #0x38] + ldr r0, _022524B8 ; =MOD20_0225259C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 +_022524B2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022524B4: .word MOD20_022525F0 +_022524B8: .word MOD20_0225259C + thumb_func_end MOD20_02252448 + + thumb_func_start MOD20_022524BC +MOD20_022524BC: ; 0x022524BC + push {r3, lr} + ldrb r1, [r0] + cmp r1, #3 + beq _022524CE + cmp r1, #4 + beq _022524CE + mov r1, #3 + bl MOD20_022525F8 +_022524CE: + pop {r3, pc} + thumb_func_end MOD20_022524BC + + thumb_func_start MOD20_022524D0 +MOD20_022524D0: ; 0x022524D0 + cmp r0, #0 + bne _022524D8 + mov r0, #1 + bx lr +_022524D8: + mov r0, #0 + bx lr + thumb_func_end MOD20_022524D0 + + thumb_func_start MOD20_022524DC +MOD20_022524DC: ; 0x022524DC + push {r4, lr} + add r4, r0, #0 + cmp r1, #5 + bhi _0225252E + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022524F0: ; jump table + .short _0225252E - _022524F0 - 2 ; case 0 + .short _022524FC - _022524F0 - 2 ; case 1 + .short _0225252E - _022524F0 - 2 ; case 2 + .short _0225252E - _022524F0 - 2 ; case 3 + .short _0225251E - _022524F0 - 2 ; case 4 + .short _02252502 - _022524F0 - 2 ; case 5 +_022524FC: + mov r0, #1 + strb r0, [r4, #4] + pop {r4, pc} +_02252502: + ldr r0, [r4, #0x58] + bl Sav2_Poketch_GetStepCounter + add r1, r0, #1 + ldr r0, _02252530 ; =0x0001869F + cmp r1, r0 + bls _02252512 + mov r1, #0 +_02252512: + ldr r0, [r4, #0x58] + bl Sav2_Poketch_SetStepCounter + mov r0, #1 + strb r0, [r4, #7] + pop {r4, pc} +_0225251E: + ldrb r0, [r4, #2] + cmp r0, #2 + bne _0225252E + ldr r1, [r4, #0x44] + cmp r1, #0 + beq _0225252E + ldr r0, [r4, #0x48] + blx r1 +_0225252E: + pop {r4, pc} + .align 2, 0 +_02252530: .word 0x0001869F + thumb_func_end MOD20_022524DC + + thumb_func_start MOD20_02252534 +MOD20_02252534: ; 0x02252534 + ldrb r0, [r0, #3] + bx lr + thumb_func_end MOD20_02252534 + + thumb_func_start MOD20_02252538 +MOD20_02252538: ; 0x02252538 + ldr r0, [r0, #0x14] + bx lr + thumb_func_end MOD20_02252538 + + thumb_func_start MOD20_0225253C +MOD20_0225253C: ; 0x0225253C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r2, [r4, #0x50] + add r0, #0x1c + add r1, #0x20 + add r3, r4, #0 + bl MOD20_02252C5C + cmp r0, #0 + beq _02252578 + mov r1, #0 + strb r1, [r4] + strb r1, [r4, #1] + strb r1, [r4, #3] + strb r1, [r4, #4] + strb r1, [r4, #7] + strb r1, [r4, #5] + strb r1, [r4, #6] + sub r0, r1, #1 + str r0, [r4, #0x14] + strb r1, [r4, #2] + add r0, r4, #0 + str r1, [r4, #8] + bl MOD20_022529C4 + cmp r0, #0 + beq _02252578 + mov r0, #1 + pop {r4, pc} +_02252578: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD20_0225253C + + thumb_func_start MOD20_0225257C +MOD20_0225257C: ; 0x0225257C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0200CAB4 + add r0, r4, #0 + bl MOD20_02252A08 + add r0, r4, #0 + bl ClosePoketchApp + ldr r0, [r4, #0x1c] + bl MOD20_02252E18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_0225257C + + thumb_func_start MOD20_0225259C +MOD20_0225259C: ; 0x0225259C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #4 + bhs _022525C0 + cmp r0, #0 + beq _022525B2 + add r0, r4, #0 + bl MOD20_02252A14 +_022525B2: + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022525EC ; =MOD20_022544CC + ldr r1, [r1, r2] + blx r1 + pop {r3, r4, r5, pc} +_022525C0: + beq _022525C6 + bl GF_AssertFail +_022525C6: + ldr r0, [r4, #0x34] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl MOD20_0225257C + add r0, r4, #0 + bl FreeToHeap + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #7 + bl DestroyHeap + mov r0, #8 + bl DestroyHeap + pop {r3, r4, r5, pc} + .align 2, 0 +_022525EC: .word MOD20_022544CC + thumb_func_end MOD20_0225259C + + thumb_func_start MOD20_022525F0 +MOD20_022525F0: ; 0x022525F0 + mov r0, #0 + strb r0, [r1, #4] + strb r0, [r1, #7] + bx lr + thumb_func_end MOD20_022525F0 + + thumb_func_start MOD20_022525F8 +MOD20_022525F8: ; 0x022525F8 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + thumb_func_end MOD20_022525F8 + + thumb_func_start MOD20_02252600 +MOD20_02252600: ; 0x02252600 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _02252684 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252616: ; jump table + .short _0225261E - _02252616 - 2 ; case 0 + .short _0225262E - _02252616 - 2 ; case 1 + .short _0225265A - _02252616 - 2 ; case 2 + .short _02252670 - _02252616 - 2 ; case 3 +_0225261E: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_0225262E: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252684 + ldr r0, [r4, #0x58] + bl Sav2_Poketch_GetSelectedApp + add r5, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl LoadPoketchApp + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_02252918 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_0225265A: + bl MOD20_0225293C + cmp r0, #0 + beq _02252684 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02252670: + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252684 + add r0, r4, #0 + mov r1, #1 + bl MOD20_022525F8 +_02252684: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02252600 + + thumb_func_start MOD20_02252688 +MOD20_02252688: ; 0x02252688 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #4 + bls _02252694 + b _022527AA +_02252694: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022526A0: ; jump table + .short _022526AA - _022526A0 - 2 ; case 0 + .short _022526D4 - _022526A0 - 2 ; case 1 + .short _0225271A - _022526A0 - 2 ; case 2 + .short _02252750 - _022526A0 - 2 ; case 3 + .short _0225276C - _022526A0 - 2 ; case 4 +_022526AA: + bl MOD20_02252C08 + cmp r0, #0 + bne _022527AA + ldr r0, [r4, #8] + cmp r0, #3 + beq _022526BC + cmp r0, #5 + bne _022527AA +_022526BC: + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + strb r0, [r4, #5] + ldr r0, [r4, #0x1c] + mov r1, #4 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r4, pc} +_022526D4: + ldr r0, [r4, #8] + cmp r0, #3 + beq _022526DE + cmp r0, #5 + bne _022526E2 +_022526DE: + mov r0, #1 + str r0, [r4, #0xc] +_022526E2: + ldr r0, [r4, #0x1c] + bl MOD20_02252EB0 + cmp r0, #0 + beq _022527AA + ldr r0, [r4, #0x58] + bl Sav2_Poketch_CycleNextApp + str r0, [r4, #0x20] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02252710 + ldr r0, [r4, #0x1c] + mov r1, #9 + bl MOD20_02252E80 + mov r0, #0x1e + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #4 + strb r0, [r4, #1] + pop {r4, pc} +_02252710: + mov r0, #3 + str r0, [r4, #0x10] + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_0225271A: + ldr r1, [r4, #8] + cmp r1, #3 + beq _02252724 + cmp r1, #5 + bne _0225273A +_02252724: + ldr r0, [r4, #0x1c] + mov r1, #9 + bl MOD20_02252E80 + mov r0, #0x1e + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #4 + strb r0, [r4, #1] + pop {r4, pc} +_0225273A: + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _02252746 + sub r0, r1, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_02252746: + bl MOD20_0225294C + mov r0, #3 + strb r0, [r4, #1] + pop {r4, pc} +_02252750: + bl MOD20_02252968 + cmp r0, #0 + beq _022527AA + add r0, r4, #0 + bl ClosePoketchApp + bl FUN_020893E0 + add r0, r4, #0 + mov r1, #2 + bl MOD20_022525F8 + pop {r4, pc} +_0225276C: + ldr r0, [r4, #8] + cmp r0, #3 + beq _02252776 + cmp r0, #5 + bne _0225278C +_02252776: + ldr r0, [r4, #0x58] + bl Sav2_Poketch_CycleNextApp + str r0, [r4, #0x20] + mov r0, #0x1e + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl MOD20_02252E80 + pop {r4, pc} +_0225278C: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02252798 + sub r0, r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_02252798: + ldr r0, [r4, #0x1c] + mov r1, #0xb + bl MOD20_02252E80 + add r0, r4, #0 + bl MOD20_0225294C + mov r0, #3 + strb r0, [r4, #1] +_022527AA: + pop {r4, pc} + thumb_func_end MOD20_02252688 + + thumb_func_start MOD20_022527AC +MOD20_022527AC: ; 0x022527AC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _022527C0 + cmp r1, #1 + beq _022527E4 + cmp r1, #2 + beq _022527FC + pop {r3, r4, r5, pc} +_022527C0: + mov r0, #1 + strb r0, [r4, #6] + ldr r0, [r4, #0x58] + bl Sav2_Poketch_GetSelectedApp + add r5, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl LoadPoketchApp + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_02252918 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_022527E4: + bl MOD20_0225293C + cmp r0, #0 + beq _02252816 + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_022527FC: + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252816 + mov r0, #0 + strb r0, [r4, #5] + strb r0, [r4, #6] + add r0, r4, #0 + mov r1, #1 + bl MOD20_022525F8 +_02252816: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022527AC + + thumb_func_start MOD20_02252818 +MOD20_02252818: ; 0x02252818 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _022528AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0225282E: ; jump table + .short _02252836 - _0225282E - 2 ; case 0 + .short _02252866 - _0225282E - 2 ; case 1 + .short _0225287A - _0225282E - 2 ; case 2 + .short _02252890 - _0225282E - 2 ; case 3 +_02252836: + ldrb r1, [r4, #2] + cmp r1, #3 + bhi _022528AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252848: ; jump table + .short _02252860 - _02252848 - 2 ; case 0 + .short _02252850 - _02252848 - 2 ; case 1 + .short _02252856 - _02252848 - 2 ; case 2 + .short _02252860 - _02252848 - 2 ; case 3 +_02252850: + mov r0, #1 + strb r0, [r4, #1] + pop {r4, pc} +_02252856: + bl MOD20_0225294C + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_02252860: + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_02252866: + bl MOD20_0225293C + cmp r0, #0 + beq _022528AC + add r0, r4, #0 + bl MOD20_0225294C + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_0225287A: + bl MOD20_02252968 + cmp r0, #0 + beq _022528AC + ldr r0, [r4, #0x1c] + mov r1, #0xe + bl MOD20_02252E80 + mov r0, #3 + strb r0, [r4, #1] + pop {r4, pc} +_02252890: + ldr r0, [r4, #0x1c] + bl MOD20_02252EB0 + cmp r0, #0 + beq _022528AC + add r0, r4, #0 + bl ClosePoketchApp + bl FUN_0201CD04 + add r0, r4, #0 + mov r1, #4 + bl MOD20_022525F8 +_022528AC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252818 + + thumb_func_start LoadPoketchApp +LoadPoketchApp: ; 0x022528B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bmi _022528BC + cmp r4, #0x19 + blo _022528C0 +_022528BC: + bl GF_AssertFail +_022528C0: + mov r0, #0 + ldr r1, [r5, #0x14] + mvn r0, r0 + cmp r1, r0 + bne _022528F0 + ldr r2, _022528F4 ; =sPoketchAppOverlayMapping + mov r1, #0 +_022528CE: + ldr r0, [r2] + cmp r4, r0 + bne _022528E8 + ldr r0, _022528F8 ; =sPoketchAppOverlayMapping + 4 + lsl r1, r1, #3 + ldr r6, [r0, r1] + mov r1, #2 + add r0, r6, #0 + bl HandleLoadOverlay + str r4, [r5, #0x14] + str r6, [r5, #0x18] + pop {r4, r5, r6, pc} +_022528E8: + add r1, r1, #1 + add r2, #8 + cmp r1, #0x19 + blo _022528CE +_022528F0: + pop {r4, r5, r6, pc} + nop +_022528F4: .word sPoketchAppOverlayMapping +_022528F8: .word sPoketchAppOverlayMapping + 4 + thumb_func_end LoadPoketchApp + + thumb_func_start ClosePoketchApp +ClosePoketchApp: ; 0x022528FC + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + ldr r1, [r4, #0x14] + mvn r0, r0 + cmp r1, r0 + beq _02252916 + ldr r0, [r4, #0x18] + bl UnloadOverlayByID + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x14] +_02252916: + pop {r4, pc} + thumb_func_end ClosePoketchApp + + thumb_func_start MOD20_02252918 +MOD20_02252918: ; 0x02252918 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _02252926 + bl GF_AssertFail +_02252926: + add r0, r4, #0 + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x14] + ldr r5, [r4, #0x3c] + add r0, #0x24 + add r1, r4, #0 + blx r5 + mov r0, #1 + strb r0, [r4, #2] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02252918 + + thumb_func_start MOD20_0225293C +MOD20_0225293C: ; 0x0225293C + ldrb r0, [r0, #2] + cmp r0, #2 + bne _02252946 + mov r0, #1 + bx lr +_02252946: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_0225293C + + thumb_func_start MOD20_0225294C +MOD20_0225294C: ; 0x0225294C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _0225295A + bl GF_AssertFail +_0225295A: + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x40] + blx r1 + mov r0, #3 + strb r0, [r4, #2] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_0225294C + + thumb_func_start MOD20_02252968 +MOD20_02252968: ; 0x02252968 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _02252972 + mov r0, #1 + bx lr +_02252972: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02252968 + + thumb_func_start Poketch_InitApp +Poketch_InitApp: ; 0x02252978 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + str r5, [r0, #0x3c] + str r4, [r0, #0x40] + mov r1, #0 + str r1, [r0, #0x44] + pop {r3, r4, r5, pc} + thumb_func_end Poketch_InitApp + + thumb_func_start MOD20_0225298C +MOD20_0225298C: ; 0x0225298C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #1 + beq _0225299A + bl GF_AssertFail +_0225299A: + mov r0, #2 + strb r0, [r4, #2] + pop {r4, pc} + thumb_func_end MOD20_0225298C + + thumb_func_start MOD20_022529A0 +MOD20_022529A0: ; 0x022529A0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #3 + beq _022529AE + bl GF_AssertFail +_022529AE: + mov r0, #0 + strb r0, [r4, #2] + pop {r4, pc} + thumb_func_end MOD20_022529A0 + + thumb_func_start MOD20_022529B4 +MOD20_022529B4: ; 0x022529B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + str r5, [r0, #0x44] + str r4, [r0, #0x48] + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022529B4 + + thumb_func_start MOD20_022529C4 +MOD20_022529C4: ; 0x022529C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #7 + str r0, [sp] + ldr r0, _02252A00 ; =MOD20_022544C4 + ldr r2, _02252A04 ; =MOD20_02252A24 + mov r1, #2 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0x28] + cmp r0, #0 + beq _022529F8 + mov r1, #0 + add r2, r1, #0 + mov r3, #7 + bl MOD20_022542AC + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_022529F8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_02252A00: .word MOD20_022544C4 +_02252A04: .word MOD20_02252A24 + thumb_func_end MOD20_022529C4 + + thumb_func_start MOD20_02252A08 +MOD20_02252A08: ; 0x02252A08 + ldr r3, _02252A10 ; =MOD20_02254198 + ldr r0, [r0, #0x28] + bx r3 + nop +_02252A10: .word MOD20_02254198 + thumb_func_end MOD20_02252A08 + + thumb_func_start MOD20_02252A14 +MOD20_02252A14: ; 0x02252A14 + ldr r3, _02252A20 ; =MOD20_022541B4 + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r0, #0x28] + bx r3 + nop +_02252A20: .word MOD20_022541B4 + thumb_func_end MOD20_02252A14 + + thumb_func_start MOD20_02252A24 +MOD20_02252A24: ; 0x02252A24 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + add r4, r0, #0 + add r0, r5, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252A4C + cmp r7, #0 + beq _02252A46 + cmp r7, #1 + bne _02252A50 + mov r0, #1 + strb r0, [r5, #3] + b _02252A50 +_02252A46: + mov r0, #0 + strb r0, [r5, #3] + b _02252A50 +_02252A4C: + mov r0, #0 + strb r0, [r5, #3] +_02252A50: + cmp r4, #1 + bne _02252A6A + add r0, r5, #0 + bl MOD20_02252C08 + cmp r0, #0 + beq _02252AEA + cmp r7, #1 + bne _02252AEA + ldr r0, _02252AEC ; =0x0000066E + bl PlaySE + pop {r3, r4, r5, r6, r7, pc} +_02252A6A: + mov r4, #0 + mvn r4, r4 + cmp r7, #0 + beq _02252A78 + cmp r7, #1 + beq _02252A7C + b _02252A94 +_02252A78: + mov r4, #8 + b _02252A94 +_02252A7C: + add r0, r5, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252A8C + ldrb r0, [r5, #6] + cmp r0, #0 + beq _02252A92 +_02252A8C: + mov r4, #6 + mov r6, #0 + b _02252A94 +_02252A92: + mov r4, #7 +_02252A94: + mov r0, #0 + ldr r1, [r5, #0x2c] + mvn r0, r0 + cmp r1, r0 + beq _02252AA4 + add r0, r4, #0 + add r4, r1, #0 + str r0, [r5, #0x2c] +_02252AA4: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _02252AC0 + ldr r0, [r5, #0x1c] + add r1, r4, #0 + bl MOD20_02252AF0 + cmp r0, #0 + beq _02252AC0 + sub r0, r4, #6 + cmp r0, #1 + bhi _02252AC0 + str r4, [r5, #0x30] +_02252AC0: + cmp r6, #2 + beq _02252AE0 + cmp r6, #3 + beq _02252AD6 + cmp r6, #5 + bne _02252AE8 + ldr r0, [r5, #0x28] + mov r1, #0 + bl MOD20_022542CC + b _02252AE8 +_02252AD6: + ldr r0, [r5, #0x30] + cmp r0, #6 + bne _02252AE8 + mov r6, #0 + b _02252AE8 +_02252AE0: + ldr r0, [r5, #0x30] + cmp r0, #7 + bne _02252AE8 + mov r6, #3 +_02252AE8: + str r6, [r5, #8] +_02252AEA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02252AEC: .word 0x0000066E + thumb_func_end MOD20_02252A24 + + thumb_func_start MOD20_02252AF0 +MOD20_02252AF0: ; 0x02252AF0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_02252AF8: + add r0, r5, #0 + add r1, r6, #0 + bl MOD20_02252EA4 + cmp r0, #0 + bne _02252B08 + mov r0, #0 + pop {r4, r5, r6, pc} +_02252B08: + add r4, r4, #1 + cmp r4, #3 + blo _02252AF8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD20_02252E80 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02252AF0 + + thumb_func_start MOD20_02252B1C +MOD20_02252B1C: ; 0x02252B1C + push {r3, lr} + bl MOD20_02252440 + ldr r0, [r0, #0x1c] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252B1C + + thumb_func_start MOD20_02252B28 +MOD20_02252B28: ; 0x02252B28 + push {r4, lr} + add r4, r0, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252B46 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252B46 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl PlaySE +_02252B46: + pop {r4, pc} + thumb_func_end MOD20_02252B28 + + thumb_func_start MOD20_02252B48 +MOD20_02252B48: ; 0x02252B48 + push {r4, lr} + add r4, r0, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252B66 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252B66 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 +_02252B66: + pop {r4, pc} + thumb_func_end MOD20_02252B48 + + thumb_func_start MOD20_02252B68 +MOD20_02252B68: ; 0x02252B68 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252BB4 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252BB4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _02252BB4 + ldr r0, [r5] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02252B98 + mov r1, #1 + b _02252B9A +_02252B98: + mov r1, #0 +_02252B9A: + ldr r0, [r4] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02252BA6 + mov r0, #1 + b _02252BA8 +_02252BA6: + mov r0, #0 +_02252BA8: + tst r0, r1 + beq _02252BB0 + mov r0, #1 + pop {r3, r4, r5, pc} +_02252BB0: + mov r0, #0 + pop {r3, r4, r5, pc} +_02252BB4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252B68 + + thumb_func_start MOD20_02252BB8 +MOD20_02252BB8: ; 0x02252BB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252C04 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252C04 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02252C04 + ldr r0, [r5] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02252BE8 + mov r1, #1 + b _02252BEA +_02252BE8: + mov r1, #0 +_02252BEA: + ldr r0, [r4] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02252BF6 + mov r0, #1 + b _02252BF8 +_02252BF6: + mov r0, #0 +_02252BF8: + tst r0, r1 + beq _02252C00 + mov r0, #1 + pop {r3, r4, r5, pc} +_02252C00: + mov r0, #0 + pop {r3, r4, r5, pc} +_02252C04: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252BB8 + + thumb_func_start MOD20_02252C08 +MOD20_02252C08: ; 0x02252C08 + ldr r3, _02252C10 ; =FUN_0204646C + ldr r0, [r0, #0x5c] + bx r3 + nop +_02252C10: .word FUN_0204646C + thumb_func_end MOD20_02252C08 + + thumb_func_start MOD20_02252C14 +MOD20_02252C14: ; 0x02252C14 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252C2E + ldrb r0, [r5, #5] + cmp r0, #0 + bne _02252C2E + add r0, r4, #0 + bl MOD20_022541B4 +_02252C2E: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252C14 + + thumb_func_start MOD20_02252C30 +MOD20_02252C30: ; 0x02252C30 + ldrb r0, [r0, #4] + bx lr + thumb_func_end MOD20_02252C30 + + thumb_func_start MOD20_02252C34 +MOD20_02252C34: ; 0x02252C34 + ldrb r0, [r0, #7] + bx lr + thumb_func_end MOD20_02252C34 + + thumb_func_start MOD20_02252C38 +MOD20_02252C38: ; 0x02252C38 + ldr r0, [r0, #0x5c] + bx lr + thumb_func_end MOD20_02252C38 + + thumb_func_start MOD20_02252C3C +MOD20_02252C3C: ; 0x02252C3C + ldr r0, [r0, #0x58] + bx lr + thumb_func_end MOD20_02252C3C + + thumb_func_start MOD20_02252C40 +MOD20_02252C40: ; 0x02252C40 + ldr r0, [r0, #0x54] + bx lr + thumb_func_end MOD20_02252C40 + + thumb_func_start MOD20_02252C44 +MOD20_02252C44: ; 0x02252C44 + push {r3, lr} + ldr r0, [r0, #0x54] + bl Sav2_PlayerData_GetProfileAddr + bl PlayerProfile_GetTrainerGender + cmp r0, #1 + beq _02252C58 + mov r0, #1 + pop {r3, pc} +_02252C58: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD20_02252C44 + + .section .rodata + + .global MOD20_022544C4 +MOD20_022544C4: ; 0x022544C4 + .byte 0x60, 0xAC, 0xDC, 0xF4, 0x10, 0xAF, 0x10, 0xCF + + .global MOD20_022544CC +MOD20_022544CC: ; 0x022544CC + .word MOD20_02252600, MOD20_02252688, MOD20_022527AC, MOD20_02252818 + + .global sPoketchAppOverlayMapping +sPoketchAppOverlayMapping: ; 0x022544DC + .word 0, SDK_OVERLAY_MODULE_21_ID + .word 23, SDK_OVERLAY_MODULE_22_ID + .word 1, SDK_OVERLAY_MODULE_23_ID + .word 2, SDK_OVERLAY_MODULE_24_ID + .word 11, SDK_OVERLAY_MODULE_25_ID + .word 17, SDK_OVERLAY_MODULE_26_ID + .word 4, SDK_OVERLAY_MODULE_27_ID + .word 5, SDK_OVERLAY_MODULE_28_ID + .word 6, SDK_OVERLAY_MODULE_29_ID + .word 10, SDK_OVERLAY_MODULE_30_ID + .word 3, SDK_OVERLAY_MODULE_31_ID + .word 8, SDK_OVERLAY_MODULE_35_ID + .word 18, SDK_OVERLAY_MODULE_36_ID + .word 14, SDK_OVERLAY_MODULE_37_ID + .word 15, SDK_OVERLAY_MODULE_38_ID + .word 22, SDK_OVERLAY_MODULE_39_ID + .word 24, SDK_OVERLAY_MODULE_40_ID + .word 20, SDK_OVERLAY_MODULE_41_ID + .word 12, SDK_OVERLAY_MODULE_42_ID + .word 7, SDK_OVERLAY_MODULE_43_ID + .word 21, SDK_OVERLAY_MODULE_44_ID + .word 16, SDK_OVERLAY_MODULE_45_ID + .word 13, SDK_OVERLAY_MODULE_47_ID + .word 19, SDK_OVERLAY_MODULE_48_ID + .word 9, SDK_OVERLAY_MODULE_49_ID + diff --git a/arm9/modules/20/asm/mod20_02252C5C.s b/arm9/modules/20/asm/mod20_02252C5C.s new file mode 100644 index 00000000..6cd2ee2e --- /dev/null +++ b/arm9/modules/20/asm/mod20_02252C5C.s @@ -0,0 +1,1400 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02252C5C +MOD20_02252C5C: ; 0x02252C5C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xea + add r5, r0, #0 + mov r0, #7 + lsl r1, r1, #2 + add r7, r2, #0 + str r3, [sp] + bl AllocFromHeap + str r0, [r5] + add r4, r0, #0 + beq _02252D0A + mov r0, #0x15 + lsl r0, r0, #4 + str r7, [r4, r0] + ldr r0, [r4, r0] + bl NNS_G2dResetOamManagerBuffer + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD20_02253BA4 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _02252CA6 + ldr r0, [r5] + bl FreeToHeap + mov r0, #0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02252CA6: + mov r0, #7 + str r6, [r4] + bl BgConfig_Alloc + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r0, [sp] + add r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD20_02252D44 + mov r1, #0x57 + lsl r1, r1, #2 + add r0, r4, r1 + sub r1, #8 + ldr r1, [r4, r1] + bl MOD20_02253428 + ldr r0, [r5] + mov r1, #8 + add r0, r0, #4 + bl MOD20_022536F4 + ldr r0, [r5] + mov r1, #0x88 + add r0, #0x2c + bl MOD20_02252E5C + ldr r0, [r5] + mov r1, #0x8c + add r0, #0x84 + bl MOD20_02252E5C + ldr r0, [r5] + mov r1, #0x90 + add r0, #0xdc + bl MOD20_02252E5C + ldr r0, _02252D10 ; =MOD20_02252D14 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02252D0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02252D10: .word MOD20_02252D14 + thumb_func_end MOD20_02252C5C + + thumb_func_start MOD20_02252D14 +MOD20_02252D14: ; 0x02252D14 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r3, _02252D20 ; =MOD20_02253C78 + ldr r0, [r1, r0] + bx r3 + nop +_02252D20: .word MOD20_02253C78 + thumb_func_end MOD20_02252D14 + + thumb_func_start MOD20_02252D24 +MOD20_02252D24: ; 0x02252D24 + push {r3, lr} + bl MOD20_02252B1C + mov r1, #0x55 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252D24 + + thumb_func_start MOD20_02252D34 +MOD20_02252D34: ; 0x02252D34 + push {r3, lr} + bl MOD20_02252B1C + mov r1, #6 + lsl r1, r1, #6 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252D34 + + thumb_func_start MOD20_02252D44 +MOD20_02252D44: ; 0x02252D44 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xc + mov r1, #0 + add r2, sp, #0 + mov r3, #7 + bl GfGfxLoader_GetPlttData + add r4, r0, #0 + beq _02252D7A + ldr r0, [sp] + mov r2, #0x62 + lsl r2, r2, #2 + add r1, r5, r2 + ldr r0, [r0, #0xc] + add r2, #0x78 + bl MIi_CpuCopy32 + mov r1, #0x62 + lsl r1, r1, #2 + add r0, r5, r1 + add r1, #0x78 + bl DC_FlushRange + add r0, r4, #0 + bl FreeToHeap +_02252D7A: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252D44 + + thumb_func_start MOD20_02252D7C +MOD20_02252D7C: ; 0x02252D7C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl Sav2_Poketch_GetScreenTint + mov r1, #0x62 + lsl r1, r1, #2 + add r5, r4, r1 + lsl r4, r0, #6 + add r0, r5, r4 + lsl r1, r6, #5 + mov r2, #0x20 + bl GXS_LoadBGPltt + add r0, r5, r4 + add r1, r7, #0 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02252D7C + + thumb_func_start MOD20_02252DB4 +MOD20_02252DB4: ; 0x02252DB4 + push {r3, r4, r5, lr} + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl Sav2_Poketch_GetScreenTint + mov r1, #0x62 + lsl r0, r0, #5 + lsl r1, r1, #2 + add r0, #0x10 + add r4, r4, r1 + lsl r5, r0, #1 + add r0, r4, r5 + mov r1, #0 + mov r2, #0x20 + bl GXS_LoadBGPltt + add r0, r4, r5 + mov r1, #0 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252DB4 + + thumb_func_start MOD20_02252DEC +MOD20_02252DEC: ; 0x02252DEC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl Sav2_Poketch_GetScreenTint + mov r1, #0x62 + lsl r1, r1, #2 + add r1, r4, r1 + lsl r0, r0, #6 + add r0, r1, r0 + add r1, r5, #0 + mov r2, #0x20 + bl MIi_CpuCopy16 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252DEC + + thumb_func_start MOD20_02252E18 +MOD20_02252E18: ; 0x02252E18 + push {r4, lr} + add r4, r0, #0 + beq _02252E58 + mov r0, #0x57 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD20_022535A4 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E36 + bl MOD20_02253C4C +_02252E36: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E44 + bl FreeToHeap +_02252E44: + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E52 + bl FUN_0200CAB4 +_02252E52: + add r0, r4, #0 + bl FreeToHeap +_02252E58: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252E18 + + thumb_func_start MOD20_02252E5C +MOD20_02252E5C: ; 0x02252E5C + push {r4, r5} + mov r2, #0xf + ldr r5, _02252E7C ; =MOD20_022545EC + mov r4, #0 + lsl r2, r2, #0xc +_02252E66: + ldrh r3, [r5] + add r4, r4, #1 + add r5, r5, #2 + add r3, r1, r3 + orr r3, r2 + strh r3, [r0] + add r0, r0, #2 + cmp r4, #0x2c + blo _02252E66 + pop {r4, r5} + bx lr + .align 2, 0 +_02252E7C: .word MOD20_022545EC + thumb_func_end MOD20_02252E5C + + thumb_func_start MOD20_02252E80 +MOD20_02252E80: ; 0x02252E80 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, r2, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + ldr r0, _02252EA0 ; =MOD20_02254644 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02252EA0: .word MOD20_02254644 + thumb_func_end MOD20_02252E80 + + thumb_func_start MOD20_02252EA4 +MOD20_02252EA4: ; 0x02252EA4 + ldr r3, _02252EAC ; =MOD20_02253794 + add r0, r0, #4 + bx r3 + nop +_02252EAC: .word MOD20_02253794 + thumb_func_end MOD20_02252EA4 + + thumb_func_start MOD20_02252EB0 +MOD20_02252EB0: ; 0x02252EB0 + ldr r3, _02252EB8 ; =MOD20_022537B8 + add r0, r0, #4 + bx r3 + nop +_02252EB8: .word MOD20_022537B8 + thumb_func_end MOD20_02252EB0 + + thumb_func_start MOD20_02252EBC +MOD20_02252EBC: ; 0x02252EBC + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, r0, #4 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252EBC + + thumb_func_start MOD20_02252ED0 +MOD20_02252ED0: ; 0x02252ED0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0 + bl GXS_SetGraphicsMode + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #1 + lsl r0, r0, #8 + bl GX_SetBankForSubOBJ + ldr r2, _02252FD8 ; =0x04001000 + ldr r0, _02252FDC ; =0xFFCFFFEF + ldr r1, [r2] + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + bl GX_DisableEngineBLayers + mov r0, #0x10 + mov r1, #1 + bl GX_EngineBToggleLayers + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, _02252FE0 ; =MOD20_022545B4 + mov r1, #4 + mov r3, #0 + bl InitBgFromTemplate + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, _02252FE4 ; =MOD20_022545D0 + mov r1, #5 + mov r3, #0 + bl InitBgFromTemplate + mov r0, #0x40 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + mov r0, #0xc + lsl r2, r0, #5 + ldr r2, [r4, r2] + mov r1, #0xe + mov r3, #4 + bl GfGfxLoader_LoadCharData + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + mov r0, #0xc + lsl r2, r0, #5 + ldr r2, [r4, r2] + mov r1, #0xf + mov r3, #4 + bl GfGfxLoader_LoadScrnData + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C44 + add r3, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0xd + mov r2, #4 + lsl r3, r3, #5 + bl GfGfxLoader_GXLoadPalWithSrcOffset + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r1, #0x18 + str r1, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + mov r2, #0xd8 + bl FillBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + ldr r0, _02252FD8 ; =0x04001000 + ldr r1, _02252FE8 ; =0xFFFFE0FF + ldr r2, [r0] + and r2, r1 + mov r1, #0x13 + lsl r1, r1, #8 + orr r1, r2 + str r1, [r0] + ldr r2, [r0] + ldr r1, _02252FEC ; =0xFFFF1FFF + and r1, r2 + str r1, [r0] + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02252FD8: .word 0x04001000 +_02252FDC: .word 0xFFCFFFEF +_02252FE0: .word MOD20_022545B4 +_02252FE4: .word MOD20_022545D0 +_02252FE8: .word 0xFFFFE0FF +_02252FEC: .word 0xFFFF1FFF + thumb_func_end MOD20_02252ED0 + + thumb_func_start MOD20_02252FF0 +MOD20_02252FF0: ; 0x02252FF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r0, r1, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538AC + cmp r0, #0 + beq _0225301C + cmp r0, #1 + beq _02253028 + cmp r0, #2 + beq _022530F6 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225301C: + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + ldr r0, [sp, #0x10] + bl MOD20_022538B0 +_02253028: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0 + beq _022530FC + mov r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + add r0, #0xc + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x28 + bls _02253048 + mov r0, #0x28 + strh r0, [r4, #2] +_02253048: + ldrh r1, [r4, #2] + lsr r3, r1, #0x1f + lsl r2, r1, #0x1e + lsr r0, r1, #2 + sub r2, r2, r3 + mov r1, #0x1e + ror r2, r1 + mov r1, #0xc + sub r6, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x14] + lsl r0, r6, #0x18 + ldr r1, [sp, #0x14] + add r7, r3, r2 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + lsl r1, r1, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0x40 + mov r3, #2 + bl FillBgTilemapRect + cmp r7, #0 + beq _022530DA + sub r0, r6, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + add r2, r7, #0 + add r2, #0xd8 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FillBgTilemapRect + ldr r0, [sp, #0x14] + mov r2, #0xd8 + add r0, r6, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + sub r2, r2, r7 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FillBgTilemapRect +_022530DA: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + ldrh r0, [r4, #2] + cmp r0, #0x28 + bne _022530FC + ldr r0, [sp, #0x10] + bl MOD20_022538B0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022530F6: + ldr r0, [sp, #0x10] + bl MOD20_02252EBC +_022530FC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02252FF0 + + thumb_func_start MOD20_02253100 +MOD20_02253100: ; 0x02253100 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r0, r1, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538AC + cmp r0, #0 + beq _0225312C + cmp r0, #1 + beq _02253138 + cmp r0, #2 + beq _0225321E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225312C: + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + ldr r0, [sp, #0x10] + bl MOD20_022538B0 +_02253138: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0 + beq _02253224 + mov r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + add r0, #8 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x28 + bls _02253158 + mov r0, #0x28 + strh r0, [r4, #2] +_02253158: + ldrh r0, [r4, #2] + mov r3, #2 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + lsr r7, r0, #2 + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r6, r2, r1 + mov r0, #0x16 + sub r0, r0, r7 + str r0, [sp, #0x14] + lsl r1, r7, #0x18 + str r3, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0xd8 + bl FillBgTilemapRect + ldr r0, [sp, #0x14] + lsl r1, r7, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0xd8 + mov r3, #2 + bl FillBgTilemapRect + cmp r6, #0 + beq _02253202 + mov r0, #0 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + sub r3, r6, #1 + mov r2, #0xdb + sub r2, r2, r3 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FillBgTilemapRect + ldr r0, [sp, #0x14] + add r6, #0xd4 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + lsl r2, r6, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FillBgTilemapRect +_02253202: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + ldrh r0, [r4, #2] + cmp r0, #0x28 + bne _02253224 + ldr r0, [sp, #0x10] + bl MOD20_022538B0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225321E: + ldr r0, [sp, #0x10] + bl MOD20_02252EBC +_02253224: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02253100 + + thumb_func_start MOD20_02253228 +MOD20_02253228: ; 0x02253228 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + add r2, r0, #0 + cmp r2, #4 + bhs _02253280 + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r6, #0xd7 + sub r2, r6, r2 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FillBgTilemapRect + add r0, r6, #0 + add r0, #0xa9 + ldr r0, [r4, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + add r0, r5, #0 + bl MOD20_022538B0 + add sp, #0x10 + pop {r4, r5, r6, pc} +_02253280: + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02253228 + + thumb_func_start MOD20_0225328C +MOD20_0225328C: ; 0x0225328C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + add r2, r0, #0 + cmp r2, #4 + bhs _022532E4 + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r6, #0xdb + sub r2, r6, r2 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FillBgTilemapRect + add r0, r6, #0 + add r0, #0xa5 + ldr r0, [r4, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + add r0, r5, #0 + bl MOD20_022538B0 + add sp, #0x10 + pop {r4, r5, r6, pc} +_022532E4: + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_0225328C + + thumb_func_start MOD20_022532F0 +MOD20_022532F0: ; 0x022532F0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0x84 + mov r3, #0x1b + bl LoadRectToBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl BgCommitTilemapBufferToVram + ldr r0, _02253334 ; =0x00000671 + bl PlaySE + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02253334: .word 0x00000671 + thumb_func_end MOD20_022532F0 + + thumb_func_start MOD20_02253338 +MOD20_02253338: ; 0x02253338 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0x2c + mov r3, #0x1b + bl LoadRectToBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl BgCommitTilemapBufferToVram + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02253338 + + thumb_func_start MOD20_02253378 +MOD20_02253378: ; 0x02253378 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0xdc + mov r3, #0x1b + bl LoadRectToBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl BgCommitTilemapBufferToVram + ldr r0, _022533BC ; =0x0000066F + bl PlaySE + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022533BC: .word 0x0000066F + thumb_func_end MOD20_02253378 + + thumb_func_start MOD20_022533C0 +MOD20_022533C0: ; 0x022533C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + mov r1, #0x57 + add r4, r0, #0 + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD20_02253430 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r1, [r4] + add r0, r4, r0 + bl MOD20_0225354C + add r0, r5, #0 + bl MOD20_02252EBC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_022533C0 + + thumb_func_start MOD20_022533EC +MOD20_022533EC: ; 0x022533EC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r1, r0, #0 + mov r0, #0x57 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r1] + bl MOD20_0225354C + add r0, r4, #0 + bl MOD20_02252EBC + pop {r4, pc} + thumb_func_end MOD20_022533EC + + thumb_func_start MOD20_0225340C +MOD20_0225340C: ; 0x0225340C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + mov r1, #0x57 + lsl r1, r1, #2 + add r0, r0, r1 + bl MOD20_022535A4 + add r0, r4, #0 + bl MOD20_02252EBC + pop {r4, pc} + thumb_func_end MOD20_0225340C + + thumb_func_start MOD20_02253428 +MOD20_02253428: ; 0x02253428 + mov r2, #0 + str r2, [r0] + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_02253428 + + thumb_func_start MOD20_02253430 +MOD20_02253430: ; 0x02253430 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r0, #7 + str r0, [sp] + add r0, r4, #0 + add r0, #8 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + cmp r0, #0 + beq _022534CC + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl GfGfxLoader_LoadWholePalette + mov r0, #0x60 + str r0, [sp] + mov r0, #7 + mov r1, #0 + str r0, [sp, #4] + mov r0, #0xc + mov r2, #5 + add r3, r1, #0 + bl GfGfxLoader_GXLoadPal + add r0, r5, #0 + mov r1, #0xf + bl MOD20_022534D4 + add r2, r4, #0 + ldr r0, [r4, #4] + ldr r1, _022534D0 ; =MOD20_022545A4 + add r2, #8 + bl MOD20_02253E74 + str r0, [r4, #0x1c] + cmp r0, #0 + beq _022534CC + add r2, r4, #0 + ldr r0, [r4, #4] + ldr r1, _022534D0 ; =MOD20_022545A4 + add r2, #8 + bl MOD20_02253E74 + str r0, [r4, #0x20] + cmp r0, #0 + bne _022534AE + ldr r0, [r4, #4] + ldr r1, [r4, #0x1c] + bl MOD20_02253F14 + add sp, #0xc + pop {r4, r5, pc} +_022534AE: + mov r1, #1 + lsl r1, r1, #0x10 + mov r2, #0 + bl MOD20_02253F54 + ldr r0, [r4, #0x1c] + mov r1, #0xf + bl MOD20_02253F9C + ldr r0, [r4, #0x20] + mov r1, #0xf + bl MOD20_02253F9C + mov r0, #1 + str r0, [r4] +_022534CC: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022534D0: .word MOD20_022545A4 + thumb_func_end MOD20_02253430 + + thumb_func_start MOD20_022534D4 +MOD20_022534D4: ; 0x022534D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl MOD20_02252C3C + bl Sav2_Poketch_GetScreenTint + mov r1, #0x62 + lsl r0, r0, #5 + lsl r1, r1, #2 + add r0, r0, #1 + add r2, r5, r1 + lsl r0, r0, #1 + add r0, r2, r0 + add r1, #0x5a + mov r2, #2 + bl GXS_LoadBGPltt + mov r0, #0xe2 + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD20_02252DEC + ldr r1, _02253548 ; =0x0000038A + add r0, r1, #6 + ldrh r2, [r5, r1] + ldrh r0, [r5, r0] + strh r0, [r5, r1] + add r0, r1, #6 + strh r2, [r5, r0] + add r0, r1, #0 + add r2, r1, #0 + add r0, #0xe + add r2, #0x1c + ldrh r3, [r5, r2] + add r2, r1, #0 + ldrh r0, [r5, r0] + add r2, #0xe + strh r3, [r5, r2] + add r2, r1, #0 + add r2, #0x1c + strh r0, [r5, r2] + sub r0, r1, #2 + add r0, r5, r0 + mov r1, #0x20 + bl DC_FlushRange + mov r0, #0xe2 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r1, r4, #5 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, pc} + .align 2, 0 +_02253548: .word 0x0000038A + thumb_func_end MOD20_022534D4 + + thumb_func_start MOD20_0225354C +MOD20_0225354C: ; 0x0225354C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02253596 + ldr r0, [r1] + ldr r2, _02253598 ; =0x04000280 + mov r3, #0 + add r0, r0, #1 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_0225356E: + ldrh r1, [r2] + tst r1, r0 + bne _0225356E + ldr r0, _0225359C ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_0225357E: + ldrh r2, [r3] + tst r2, r0 + bne _0225357E + ldr r0, _022535A0 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x1c] + bl MOD20_02253F28 + ldr r0, [r4, #0x20] + add r1, r5, #0 + bl MOD20_02253F28 +_02253596: + pop {r3, r4, r5, pc} + .align 2, 0 +_02253598: .word 0x04000280 +_0225359C: .word 0x040002A0 +_022535A0: .word 0x040002A8 + thumb_func_end MOD20_0225354C + + thumb_func_start MOD20_022535A4 +MOD20_022535A4: ; 0x022535A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _022535CA + ldr r0, [r4, #4] + ldr r1, [r4, #0x1c] + bl MOD20_02253F14 + ldr r0, [r4, #4] + ldr r1, [r4, #0x20] + bl MOD20_02253F14 + add r0, r4, #0 + add r0, #8 + bl MOD20_02254014 + mov r0, #0 + str r0, [r4] +_022535CA: + pop {r4, pc} + thumb_func_end MOD20_022535A4 + + thumb_func_start MOD20_022535CC +MOD20_022535CC: ; 0x022535CC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r0, r6, #0 + bl MOD20_022538AC + add r5, r0, #0 + cmp r5, #3 + bhi _0225365E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022535F8: ; jump table + .short _02253600 - _022535F8 - 2 ; case 0 + .short _0225361C - _022535F8 - 2 ; case 1 + .short _0225361C - _022535F8 - 2 ; case 2 + .short _0225361C - _022535F8 - 2 ; case 3 +_02253600: + mov r0, #6 + str r0, [sp] + ldr r0, _02253664 ; =0x04001050 + mov r1, #2 + mov r2, #0x1c + mov r3, #0x1a + bl G2x_SetBlendAlpha_ + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl BgCommitTilemapBufferToVram +_0225361C: + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r2, #0xdb + sub r2, r2, r5 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FillBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + cmp r5, #3 + bne _02253658 + add r0, r6, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} +_02253658: + add r0, r6, #0 + bl MOD20_022538B0 +_0225365E: + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02253664: .word 0x04001050 + thumb_func_end MOD20_022535CC + + thumb_func_start MOD20_02253668 +MOD20_02253668: ; 0x02253668 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + mov r3, #2 + add r4, r0, #0 + str r3, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + mov r2, #0x40 + bl FillBgTilemapRect + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl BgCommitTilemapBufferToVram + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl BgCommitTilemapBufferToVram + mov r1, #0 + ldr r0, _022536C4 ; =0x04001050 + add r2, r1, #0 + mov r3, #0x1f + str r1, [sp] + bl G2x_SetBlendAlpha_ + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_022536C4: .word 0x04001050 + thumb_func_end MOD20_02253668 + + thumb_func_start MOD20_022536C8 +MOD20_022536C8: ; 0x022536C8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FreeBgTilemapBuffer + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl FreeBgTilemapBuffer + add r0, r5, #0 + bl MOD20_02252EBC + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022536C8 + + .section .rodata + + .global MOD20_022545A4 +MOD20_022545A4: ; 0x022545A4 + .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD20_022545B4 +MOD20_022545B4: ; 0x022545B4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD20_022545D0 +MOD20_022545D0: ; 0x022545D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x0D, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD20_022545EC +MOD20_022545EC: ; 0x022545EC + .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0015, 0x0016, 0x0017, 0x0018 + .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D + .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D + .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D + .short 0x002A, 0x002B, 0x002C, 0x002D, 0x003F, 0x0040, 0x0041, 0x0042 + .short 0x0054, 0x0055, 0x0056, 0x0057 + + .global MOD20_02254644 +MOD20_02254644: ; 0x02254644 + .word 0x00000000, MOD20_02252ED0, 0x00000000 + .word 0x00000001, MOD20_02252FF0, 0x00000004 + .word 0x00000002, MOD20_02252FF0, 0x00000004 + .word 0x00000003, MOD20_02253228, 0x00000004 + .word 0x00000004, MOD20_02253100, 0x00000004 + .word 0x00000005, MOD20_0225328C, 0x00000004 + .word 0x00000006, MOD20_022532F0, 0x00000000 + .word 0x00000008, MOD20_02253338, 0x00000000 + .word 0x00000007, MOD20_02253378, 0x00000000 + .word 0x00000009, MOD20_022533C0, 0x00000000 + .word 0x0000000A, MOD20_022533EC, 0x00000000 + .word 0x0000000B, MOD20_0225340C, 0x00000000 + .word 0x0000000C, MOD20_022535CC, 0x00000000 + .word 0x0000000D, MOD20_02253668, 0x00000000 + .word 0x0000000E, MOD20_022536C8, 0x00000000 + .word 0xFFFFFFFF, 0x00000000, 0x00000000 diff --git a/arm9/modules/20/asm/mod20_022536F4.s b/arm9/modules/20/asm/mod20_022536F4.s new file mode 100644 index 00000000..1bd58d2b --- /dev/null +++ b/arm9/modules/20/asm/mod20_022536F4.s @@ -0,0 +1,682 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_022536F4 +MOD20_022536F4: ; 0x022536F4 + ldr r2, _02253710 ; =0x12345678 + str r1, [r0] + mov r3, #0 + str r2, [r0, #4] + cmp r1, #0 + bls _0225370C + sub r2, r3, #1 +_02253702: + add r3, r3, #1 + str r2, [r0, #8] + add r0, r0, #4 + cmp r3, r1 + blo _02253702 +_0225370C: + bx lr + nop +_02253710: .word 0x12345678 + thumb_func_end MOD20_022536F4 + + thumb_func_start MOD20_02253714 +MOD20_02253714: ; 0x02253714 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldr r0, _02253750 ; =0x12345678 + cmp r1, r0 + beq _02253726 + bl GF_AssertFail +_02253726: + ldr r6, [r5] + mov r2, #0 + cmp r6, #0 + bls _0225374A + add r3, r5, #0 + sub r0, r2, #1 +_02253732: + ldr r1, [r3, #8] + cmp r1, r0 + bne _02253742 + lsl r0, r2, #2 + add r0, r5, r0 + str r4, [r0, #8] + mov r0, #1 + pop {r4, r5, r6, pc} +_02253742: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, r6 + blo _02253732 +_0225374A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02253750: .word 0x12345678 + thumb_func_end MOD20_02253714 + + thumb_func_start MOD20_02253754 +MOD20_02253754: ; 0x02253754 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldr r0, _02253790 ; =0x12345678 + cmp r1, r0 + beq _02253766 + bl GF_AssertFail +_02253766: + ldr r3, [r5] + mov r2, #0 + cmp r3, #0 + bls _0225378A + add r1, r5, #0 +_02253770: + ldr r0, [r1, #8] + cmp r4, r0 + bne _02253782 + mov r1, #0 + lsl r0, r2, #2 + mvn r1, r1 + add r0, r5, r0 + str r1, [r0, #8] + pop {r3, r4, r5, pc} +_02253782: + add r2, r2, #1 + add r1, r1, #4 + cmp r2, r3 + blo _02253770 +_0225378A: + bl GF_AssertFail + pop {r3, r4, r5, pc} + .align 2, 0 +_02253790: .word 0x12345678 + thumb_func_end MOD20_02253754 + + thumb_func_start MOD20_02253794 +MOD20_02253794: ; 0x02253794 + push {r3, r4} + ldr r4, [r0] + mov r3, #0 + cmp r4, #0 + bls _022537B2 +_0225379E: + ldr r2, [r0, #8] + cmp r1, r2 + bne _022537AA + mov r0, #0 + pop {r3, r4} + bx lr +_022537AA: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, r4 + blo _0225379E +_022537B2: + mov r0, #1 + pop {r3, r4} + bx lr + thumb_func_end MOD20_02253794 + + thumb_func_start MOD20_022537B8 +MOD20_022537B8: ; 0x022537B8 + push {r3, r4} + ldr r4, [r0] + mov r3, #0 + cmp r4, #0 + bls _022537D8 + sub r1, r3, #1 +_022537C4: + ldr r2, [r0, #8] + cmp r2, r1 + beq _022537D0 + mov r0, #0 + pop {r3, r4} + bx lr +_022537D0: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, r4 + blo _022537C4 +_022537D8: + mov r0, #1 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD20_022537B8 + + thumb_func_start MOD20_022537E0 +MOD20_022537E0: ; 0x022537E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + str r2, [sp] + mov r0, #0 + add r5, r1, #0 + ldr r2, [r7] + sub r1, r0, #1 + str r3, [sp, #4] + cmp r2, r1 + beq _02253880 + add r3, r7, #0 + sub r1, r0, #1 +_022537FA: + ldr r2, [r3] + cmp r5, r2 + bne _02253876 + add r6, r0, #0 + add r0, r7, #0 + str r0, [sp, #8] + add r0, #8 + mov r1, #0xc + str r0, [sp, #8] + mul r6, r1 + ldr r1, [sp, #8] + ldr r0, [sp, #0x28] + ldr r1, [r1, r6] + add r1, #0x18 + bl AllocFromHeap + add r4, r0, #0 + beq _02253870 + ldr r0, [sp, #8] + ldr r0, [r0, r6] + cmp r0, #0 + beq _0225382C + add r0, r4, #0 + add r0, #0x18 + b _0225382E +_0225382C: + mov r0, #0 +_0225382E: + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + add r1, r5, #0 + bl MOD20_02253714 + cmp r0, #0 + beq _02253866 + ldr r0, [sp] + ldr r2, [sp, #0x24] + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #4] + str r5, [r4] + ldr r0, [sp, #4] + add r5, r7, #4 + str r0, [r4, #0x10] + ldr r0, [r5, r6] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x14] + cmp r0, #0 + beq _02253884 + ldr r2, [r5, r6] + add r1, r4, #0 + blx r2 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02253866: + add r0, r4, #0 + bl FreeToHeap + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02253870: + bl GF_AssertFail + b _02253880 +_02253876: + add r3, #0xc + ldr r2, [r3] + add r0, r0, #1 + cmp r2, r1 + bne _022537FA +_02253880: + bl GF_AssertFail +_02253884: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD20_022537E0 + + thumb_func_start MOD20_02253888 +MOD20_02253888: ; 0x02253888 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + bl MOD20_02253754 + ldr r0, [r4, #0x14] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD20_02253888 + + thumb_func_start MOD20_022538A0 +MOD20_022538A0: ; 0x022538A0 + ldr r0, [r0, #8] + bx lr + thumb_func_end MOD20_022538A0 + + thumb_func_start MOD20_022538A4 +MOD20_022538A4: ; 0x022538A4 + ldr r0, [r0, #0x10] + bx lr + thumb_func_end MOD20_022538A4 + + thumb_func_start MOD20_022538A8 +MOD20_022538A8: ; 0x022538A8 + ldr r0, [r0, #0xc] + bx lr + thumb_func_end MOD20_022538A8 + + thumb_func_start MOD20_022538AC +MOD20_022538AC: ; 0x022538AC + ldr r0, [r0, #4] + bx lr + thumb_func_end MOD20_022538AC + + thumb_func_start MOD20_022538B0 +MOD20_022538B0: ; 0x022538B0 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_022538B0 + + thumb_func_start MOD20_022538B8 +MOD20_022538B8: ; 0x022538B8 + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_022538B8 + + thumb_func_start MOD20_022538BC +MOD20_022538BC: ; 0x022538BC + push {r3, r4, r5, r6} + mul r2, r3 + ldr r4, [sp, #0x18] + add r1, r1, r2 + lsl r6, r1, #1 + lsl r4, r4, #0xc + ldr r1, [sp, #0x10] + add r5, r4, #0 + orr r5, r1 + add r2, r0, r6 + strh r5, [r0, r6] + add r0, r1, #1 + orr r0, r4 + strh r0, [r2, #2] + ldr r0, [sp, #0x14] + lsl r3, r3, #1 + add r1, r1, r0 + add r0, r4, #0 + orr r0, r1 + strh r0, [r2, r3] + add r0, r1, #1 + add r1, r4, #0 + orr r1, r0 + add r0, r2, r3 + strh r1, [r0, #2] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD20_022538BC + + thumb_func_start MOD20_022538F4 +MOD20_022538F4: ; 0x022538F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + bl AllocFromHeap + add r7, r0, #0 + beq _02253960 + bl MOD20_02252DEC + mov r4, #0 + cmp r6, #0 + bls _0225395A +_02253910: + ldrh r3, [r5] + mov r0, #0x1f + lsl r0, r0, #0xa + and r0, r3 + asr r0, r0, #0xa + add r2, r0, #0 + mov r1, #0x72 + mov r0, #0x1f + mul r2, r1 + and r0, r3 + add r1, #0xb9 + mul r1, r0 + mov r0, #0x3e + lsl r0, r0, #4 + and r0, r3 + asr r3, r0, #5 + ldr r0, _02253964 ; =0x0000024B + mul r0, r3 + add r0, r1, r0 + mov r1, #0xfa + add r0, r2, r0 + lsl r1, r1, #2 + bl _u32_div_f + lsr r1, r0, #3 + cmp r1, #3 + bls _02253948 + mov r1, #3 +_02253948: + ldr r0, _02253968 ; =MOD20_0225470C + add r4, r4, #1 + ldrb r0, [r0, r1] + lsl r0, r0, #1 + ldrh r0, [r7, r0] + strh r0, [r5] + add r5, r5, #2 + cmp r4, r6 + blo _02253910 +_0225395A: + add r0, r7, #0 + bl FreeToHeap +_02253960: + pop {r3, r4, r5, r6, r7, pc} + nop +_02253964: .word 0x0000024B +_02253968: .word MOD20_0225470C + thumb_func_end MOD20_022538F4 + + thumb_func_start MOD20_0225396C +MOD20_0225396C: ; 0x0225396C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #8 + mov r1, #0x20 + bl AllocFromHeap + add r4, r0, #0 + beq _022539C2 + mov r0, #8 + mov r1, #0x20 + bl AllocFromHeap + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_02252DEC + cmp r5, #0 + beq _022539BC + mov r0, #0 + add r1, r5, #0 + lsl r3, r6, #1 +_02253998: + ldrh r2, [r4, r3] + add r0, r0, #1 + strh r2, [r1] + add r1, r1, #2 + cmp r0, #0x10 + blt _02253998 + add r0, r5, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r5, #0 + lsl r1, r7, #5 + mov r2, #0x20 + bl GXS_LoadOBJPltt + add r0, r5, #0 + bl FreeToHeap +_022539BC: + add r0, r4, #0 + bl FreeToHeap +_022539C2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_0225396C + + thumb_func_start MOD20_022539C4 +MOD20_022539C4: ; 0x022539C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0 + mov r3, #8 + bl GfGfxLoader_GetPlttData + add r4, r0, #0 + beq _02253A02 + ldr r0, [sp] + mov r1, #0x40 + ldr r0, [r0, #0xc] + bl MOD20_022538F4 + ldr r0, [sp] + mov r1, #0x80 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp] + lsl r1, r5, #5 + ldr r0, [r0, #0xc] + mov r2, #0x80 + bl GXS_LoadOBJPltt + add r0, r4, #0 + bl FreeToHeap +_02253A02: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022539C4 + + thumb_func_start MOD20_02253A04 +MOD20_02253A04: ; 0x02253A04 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #4] + lsl r0, r3, #1 + str r0, [sp, #0xc] + add r6, r1, #0 + str r2, [sp, #8] + ldr r2, _02253A9C ; =MOD20_02254708 + ldr r1, [sp, #0xc] + mov r0, #8 + ldrh r1, [r2, r1] + bl AllocFromHeap + add r7, r0, #0 + beq _02253A98 + mov r0, #0x13 + mov r1, #8 + bl NARC_ctor + str r0, [sp, #0x1c] + cmp r0, #0 + beq _02253A92 + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #8] + cmp r0, #0 + bls _02253A8C + ldr r1, _02253AA0 ; =MOD20_02254704 + ldr r0, [sp, #0xc] + ldr r4, [sp, #0x18] + ldrh r5, [r1, r0] + ldr r1, _02253A9C ; =MOD20_02254708 + ldrh r0, [r1, r0] + str r0, [sp, #0x14] + ldr r0, [sp, #4] + lsl r0, r0, #5 + str r0, [sp, #0x10] +_02253A4E: + str r7, [sp] + ldr r0, [sp, #0x1c] + ldr r1, [r6] + ldr r3, [sp, #0x14] + mov r2, #0 + bl NARC_ReadFromMember + add r0, r7, #0 + add r1, sp, #0x20 + bl NNS_G2dGetUnpackedCharacterData + ldr r0, [sp, #0x20] + add r1, r5, #0 + ldr r0, [r0, #0x14] + bl DC_FlushRange + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x14] + add r1, r1, r4 + add r2, r5, #0 + bl GXS_LoadOBJ + ldr r0, [sp, #0x18] + add r6, r6, #4 + add r1, r0, #1 + ldr r0, [sp, #8] + add r4, r4, r5 + str r1, [sp, #0x18] + cmp r1, r0 + blo _02253A4E +_02253A8C: + ldr r0, [sp, #0x1c] + bl NARC_dtor +_02253A92: + add r0, r7, #0 + bl FreeToHeap +_02253A98: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02253A9C: .word MOD20_02254708 +_02253AA0: .word MOD20_02254704 + thumb_func_end MOD20_02253A04 + + thumb_func_start MOD20_02253AA4 +MOD20_02253AA4: ; 0x02253AA4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + add r4, r2, #0 + mov r1, #2 + add r2, sp, #0xc + strh r1, [r2] + mov r3, #3 + strh r3, [r2, #2] + mov r3, #0xa + strh r3, [r2, #4] + mov r3, #0xb + strh r3, [r2, #6] + str r3, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #9 + add r6, r0, #0 + bl LoadRectToBgTilemapRect + mov r1, #4 + add r0, sp, #0xc + strh r1, [r0] + mov r1, #5 + strh r1, [r0, #2] + mov r1, #0xc + strh r1, [r0, #4] + mov r1, #0xd + strh r1, [r0, #6] + mov r3, #0xb + lsl r1, r4, #0x18 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + bl LoadRectToBgTilemapRect + mov r1, #6 + add r0, sp, #0xc + strh r1, [r0] + mov r1, #7 + strh r1, [r0, #2] + mov r1, #0xe + strh r1, [r0, #4] + mov r1, #0xf + strh r1, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0xd + bl LoadRectToBgTilemapRect + add r0, r5, #0 + mov r1, #0xa + bl _u32_div_f + mov r1, #0xa + mul r1, r0 + add r0, r0, #4 + sub r5, r5, r1 + lsr r1, r0, #2 + lsl r0, r0, #0x1e + lsl r1, r1, #4 + lsr r0, r0, #0x1d + add r2, r1, r0 + add r0, sp, #0xc + strh r2, [r0] + add r1, r2, #1 + strh r1, [r0, #2] + add r1, r2, #0 + add r1, #8 + strh r1, [r0, #4] + add r2, #9 + strh r2, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0xf + bl LoadRectToBgTilemapRect + add r0, r5, #4 + lsr r1, r0, #2 + lsl r0, r0, #0x1e + lsl r1, r1, #4 + lsr r0, r0, #0x1d + add r2, r1, r0 + add r0, sp, #0xc + strh r2, [r0] + add r1, r2, #1 + strh r1, [r0, #2] + add r1, r2, #0 + add r1, #8 + strh r1, [r0, #4] + add r2, #9 + strh r2, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0x11 + bl LoadRectToBgTilemapRect + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02253AA4 + + .section .rodata + + .global MOD20_02254704 +MOD20_02254704: ; 0x02254704 + .byte 0x00, 0x02, 0x00, 0x04 + + .global MOD20_02254708 +MOD20_02254708: ; 0x02254708 + .byte 0x80, 0x02, 0x80, 0x04 + + .global MOD20_0225470C +MOD20_0225470C: ; 0x0225470C + .byte 0x01, 0x08, 0x0F, 0x04 diff --git a/arm9/modules/20/asm/mod20_02253BA4.s b/arm9/modules/20/asm/mod20_02253BA4.s new file mode 100644 index 00000000..0c9468d0 --- /dev/null +++ b/arm9/modules/20/asm/mod20_02253BA4.s @@ -0,0 +1,808 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02253BA4 +MOD20_02253BA4: ; 0x02253BA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x1c + mov r6, #0 + bl AllocFromHeap + add r4, r0, #0 + beq _02253C0E + add r0, r6, #0 + str r0, [r4, #0x14] + str r0, [r4, #0xc] + str r0, [r4, #4] + str r7, [r4] + str r5, [r4, #0x18] + add r0, r7, #0 + bl NNS_G2dGetOamManagerOamCapacity + strh r0, [r4, #0x10] + ldrh r1, [r4, #0x10] + add r0, r5, #0 + lsl r1, r1, #3 + bl AllocFromHeap + str r0, [r4, #0x14] + cmp r0, #0 + beq _02253C0E + ldrh r2, [r4, #0x10] + mov r1, #0x90 + add r0, r5, #0 + mul r1, r2 + bl AllocFromHeap + str r0, [r4, #0xc] + cmp r0, #0 + beq _02253C0E + ldrh r1, [r4, #0x10] + add r0, r5, #0 + lsl r1, r1, #2 + bl AllocFromHeap + str r0, [r4, #4] + cmp r0, #0 + beq _02253C0E + ldrh r2, [r4, #0x10] + ldr r1, [r4, #0xc] + bl MOD20_0225403C + add r0, r6, #0 + strh r0, [r4, #0x12] + str r0, [r4, #8] + mov r6, #1 +_02253C0E: + cmp r6, #0 + bne _02253C46 + cmp r4, #0 + beq _02253C42 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _02253C22 + add r0, r5, #0 + bl FreeToHeapExplicit +_02253C22: + ldr r1, [r4, #0xc] + cmp r1, #0 + beq _02253C2E + add r0, r5, #0 + bl FreeToHeapExplicit +_02253C2E: + ldr r1, [r4, #4] + cmp r1, #0 + beq _02253C3A + add r0, r5, #0 + bl FreeToHeapExplicit +_02253C3A: + add r0, r5, #0 + add r1, r4, #0 + bl FreeToHeapExplicit +_02253C42: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02253C46: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD20_02253BA4 + + thumb_func_start MOD20_02253C4C +MOD20_02253C4C: ; 0x02253C4C + push {r4, lr} + add r4, r0, #0 + beq _02253C76 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02253C5C + bl FreeToHeap +_02253C5C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02253C66 + bl FreeToHeap +_02253C66: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02253C70 + bl FreeToHeap +_02253C70: + add r0, r4, #0 + bl FreeToHeap +_02253C76: + pop {r4, pc} + thumb_func_end MOD20_02253C4C + + thumb_func_start MOD20_02253C78 +MOD20_02253C78: ; 0x02253C78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0xc] + ldrh r0, [r0, #0x12] + cmp r0, #0 + bne _02253C86 + b _02253E52 +_02253C86: + ldr r0, [sp, #0xc] + ldr r4, [r0, #8] + ldr r5, [r0, #0x14] + ldrh r0, [r0, #0x10] + cmp r4, #0 + str r0, [sp, #0x10] + bne _02253C96 + b _02253E38 +_02253C96: + add r0, r4, #0 + mov r1, #2 + add r0, #8 + lsl r1, r1, #0xc + bl NNS_G2dTickCellAnimation + add r0, r4, #0 + add r0, #0x86 + ldrb r0, [r0] + cmp r0, #0 + beq _02253CAE + b _02253E30 +_02253CAE: + add r6, r4, #0 + add r6, #0x40 + mov r0, #0xc + ldrsh r0, [r6, r0] + ldr r1, [r4, #0x64] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x18] + mov r0, #0xe + ldrsh r0, [r6, r0] + ldr r1, [r4, #0x68] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + add r0, #0x87 + ldrb r0, [r0] + cmp r0, #0 + bne _02253CEE + add r0, sp, #0x18 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + ldr r1, [sp, #0x10] + str r3, [sp, #8] + lsl r1, r1, #0x10 + ldr r2, [r4, #0x34] + add r0, r5, #0 + lsr r1, r1, #0x10 + bl NNS_G2dMakeCellToOams + b _02253D86 +_02253CEE: + ldr r0, [r4, #0x6c] + bl MTX_Identity22_ + ldrh r1, [r6, #0x12] + mov r0, #4 + tst r0, r1 + beq _02253D20 + add r0, r4, #0 + add r0, #0x8c + ldrh r2, [r6, #0x10] + ldrh r0, [r0] + ldr r1, _02253E58 ; =FX_SinCosTable_ + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r3, r0, #2 + add r2, r1, r3 + ldrsh r1, [r1, r3] + mov r3, #2 + ldrsh r2, [r2, r3] + ldr r0, [r4, #0x6c] + bl MTX_Rot22_ + b _02253D3E +_02253D20: + add r0, r4, #0 + add r0, #0x8c + ldrh r0, [r0] + cmp r0, #0 + beq _02253D3E + asr r0, r0, #4 + lsl r3, r0, #2 + ldr r1, _02253E58 ; =FX_SinCosTable_ + ldr r0, [r4, #0x6c] + add r2, r1, r3 + ldrsh r1, [r1, r3] + mov r3, #2 + ldrsh r2, [r2, r3] + bl MTX_Rot22_ +_02253D3E: + ldrh r1, [r6, #0x12] + mov r0, #2 + tst r0, r1 + beq _02253D62 + ldr r0, [r6, #4] + ldr r7, [r4, #0x6c] + bl FX_Inv + str r0, [sp, #0x14] + ldr r0, [r6, #8] + bl FX_Inv + add r3, r0, #0 + ldr r2, [sp, #0x14] + add r0, r7, #0 + add r1, r7, #0 + bl MTX_ScaleApply22 +_02253D62: + ldr r0, [sp, #0xc] + ldr r1, [r4, #0x6c] + ldr r0, [r0] + bl NNS_G2dEntryOamManagerAffine + add r1, sp, #0x18 + str r1, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x34] + lsl r1, r1, #0x10 + ldr r3, [r4, #0x6c] + add r0, r5, #0 + lsr r1, r1, #0x10 + bl NNS_G2dMakeCellToOams +_02253D86: + ldr r1, [sp, #0x10] + sub r1, r1, r0 + str r1, [sp, #0x10] + add r1, r0, #0 + sub r0, r0, #1 + cmp r1, #0 + beq _02253E30 + ldr r7, _02253E5C ; =0xDFFFFFFF + asr r1, r7, #0x11 +_02253D98: + ldr r3, [r5, #4] + ldr r2, _02253E60 ; =0xFFFFF3FF + add r6, r4, #0 + and r2, r3 + add r3, r4, #0 + add r3, #0x82 + ldrh r3, [r3] + add r6, #0x84 + lsl r3, r3, #0x1e + lsr r3, r3, #0x14 + orr r2, r3 + str r2, [r5, #4] + ldr r3, _02253E64 ; =0xFFFF0FFF + ldrh r6, [r6] + and r3, r2 + lsl r2, r2, #0x10 + lsr r2, r2, #0x1c + add r2, r2, r6 + lsl r2, r2, #0x1c + lsr r2, r2, #0x10 + orr r2, r3 + add r6, r4, #0 + ldr r3, _02253E68 ; =0xFFFFFC00 + str r2, [r5, #4] + add r6, #0x88 + and r3, r2 + lsl r2, r2, #0x16 + ldrh r6, [r6] + lsr r2, r2, #0x16 + add r6, r2, r6 + ldr r2, _02253E6C ; =0x000003FF + and r2, r6 + orr r2, r3 + add r6, r4, #0 + str r2, [r5, #4] + add r6, #0x8a + ldr r2, [r5] + ldr r3, _02253E70 ; =0xEFFFFFFF + ldrb r6, [r6] + and r3, r2 + lsl r2, r2, #3 + lsr r2, r2, #0x1f + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #3 + orr r2, r3 + add r6, r4, #0 + add r3, r2, #0 + str r2, [r5] + add r6, #0x8b + lsl r2, r2, #2 + ldrb r6, [r6] + lsr r2, r2, #0x1f + and r3, r7 + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #2 + orr r2, r3 + add r6, r4, #0 + add r3, r2, #0 + str r2, [r5] + add r6, #0x8e + lsl r2, r2, #0x13 + ldrb r6, [r6] + lsr r2, r2, #0x1f + and r3, r1 + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #0x13 + orr r2, r3 + str r2, [r5] + add r2, r0, #0 + add r5, #8 + sub r0, r0, #1 + cmp r2, #0 + bne _02253D98 +_02253E30: + ldr r4, [r4, #0x5c] + cmp r4, #0 + beq _02253E38 + b _02253C96 +_02253E38: + ldr r0, [sp, #0xc] + ldr r1, [r0, #0x14] + cmp r5, r1 + bls _02253E52 + sub r3, r5, r1 + asr r2, r3, #2 + lsr r2, r2, #0x1d + add r2, r3, r2 + lsl r2, r2, #0xd + ldr r0, [r0] + lsr r2, r2, #0x10 + bl NNS_G2dEntryOamManagerOam +_02253E52: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02253E58: .word FX_SinCosTable_ +_02253E5C: .word 0xDFFFFFFF +_02253E60: .word 0xFFFFF3FF +_02253E64: .word 0xFFFF0FFF +_02253E68: .word 0xFFFFFC00 +_02253E6C: .word 0x000003FF +_02253E70: .word 0xEFFFFFFF + thumb_func_end MOD20_02253C78 + + thumb_func_start MOD20_02253E74 +MOD20_02253E74: ; 0x02253E74 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD20_02254068 + add r4, r0, #0 + beq _02253F10 + ldrb r1, [r5, #0xb] + add r0, #0x82 + strh r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #0xc] + add r0, #0x80 + strh r1, [r0] + add r0, r7, #0 + add r1, r4, #0 + bl MOD20_022540A4 + ldr r0, [r6, #8] + str r0, [r4] + ldr r0, [r6, #0xc] + str r0, [r4, #4] + ldrh r1, [r5, #8] + bl NNS_G2dGetAnimSequenceByIdx + add r1, r0, #0 + add r0, r4, #0 + ldr r2, [r4] + add r0, #8 + bl NNS_G2dInitCellAnimation + ldr r1, [r5] + ldr r0, [r5, #4] + str r1, [r4, #0x64] + add r1, r4, #0 + str r0, [r4, #0x68] + mov r0, #0 + add r1, #0x84 + strh r0, [r1] + add r1, r4, #0 + add r1, #0x88 + strh r0, [r1] + ldrb r2, [r5, #0xa] + mov r1, #1 + tst r2, r1 + beq _02253ED4 + add r0, r1, #0 +_02253ED4: + add r1, r4, #0 + add r1, #0x8a + strb r0, [r1] + ldrb r1, [r5, #0xa] + mov r0, #2 + tst r0, r1 + beq _02253EE6 + mov r1, #1 + b _02253EE8 +_02253EE6: + mov r1, #0 +_02253EE8: + add r0, r4, #0 + add r0, #0x8b + strb r1, [r0] + add r1, r4, #0 + mov r0, #0 + add r1, #0x8e + strb r0, [r1] + add r1, r4, #0 + add r1, #0x8c + strh r0, [r1] + add r1, r4, #0 + add r1, #0x70 + str r1, [r4, #0x6c] + add r1, r4, #0 + ldrb r2, [r5, #0xd] + add r1, #0x87 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x86 + strb r0, [r1] +_02253F10: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02253E74 + + thumb_func_start MOD20_02253F14 +MOD20_02253F14: ; 0x02253F14 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_022540FC + add r0, r5, #0 + add r1, r4, #0 + bl MOD20_02254080 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02253F14 + + thumb_func_start MOD20_02253F28 +MOD20_02253F28: ; 0x02253F28 + push {r4, lr} + add r4, r0, #0 + lsl r1, r1, #0x10 + ldr r0, [r4, #4] + lsr r1, r1, #0x10 + bl NNS_G2dGetAnimSequenceByIdx + add r1, r0, #0 + add r0, r4, #0 + ldr r2, [r4] + add r0, #8 + bl NNS_G2dInitCellAnimation + pop {r4, pc} + thumb_func_end MOD20_02253F28 + + thumb_func_start MOD20_02253F44 +MOD20_02253F44: ; 0x02253F44 + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _02253F4E + mov r0, #1 + bx lr +_02253F4E: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F44 + + thumb_func_start MOD20_02253F54 +MOD20_02253F54: ; 0x02253F54 + ldr r3, [r0, #0x64] + add r1, r3, r1 + str r1, [r0, #0x64] + ldr r1, [r0, #0x68] + add r1, r1, r2 + str r1, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F54 + + thumb_func_start MOD20_02253F64 +MOD20_02253F64: ; 0x02253F64 + str r1, [r0, #0x64] + str r2, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F64 + + thumb_func_start MOD20_02253F6C +MOD20_02253F6C: ; 0x02253F6C + ldr r3, [r0, #0x64] + str r3, [r1] + ldr r0, [r0, #0x68] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F6C + + thumb_func_start MOD20_02253F78 +MOD20_02253F78: ; 0x02253F78 + add r0, #0x86 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F78 + + thumb_func_start MOD20_02253F80 +MOD20_02253F80: ; 0x02253F80 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + bl MOD20_022540FC + add r0, r5, #0 + add r0, #0x80 + strh r4, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD20_022540A4 + pop {r4, r5, r6, pc} + thumb_func_end MOD20_02253F80 + + thumb_func_start MOD20_02253F9C +MOD20_02253F9C: ; 0x02253F9C + add r0, #0x84 + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F9C + + thumb_func_start MOD20_02253FA4 +MOD20_02253FA4: ; 0x02253FA4 + add r0, #0x88 + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FA4 + + thumb_func_start MOD20_02253FAC +MOD20_02253FAC: ; 0x02253FAC + add r0, #0x8e + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FAC + + thumb_func_start MOD20_02253FB4 +MOD20_02253FB4: ; 0x02253FB4 + add r0, #0x8c + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FB4 + + thumb_func_start MOD20_02253FBC +MOD20_02253FBC: ; 0x02253FBC + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r0, #0 + add r6, r1, #0 + add r1, r2, #0 + add r7, r3, #0 + str r4, [r5, #0x10] + add r0, r6, #0 + add r2, r4, #0 + bl GfGfxLoader_UncompressFromNarc + str r0, [r5] + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + bl GfGfxLoader_UncompressFromNarc + str r0, [r5, #4] + ldr r0, [r5] + cmp r0, #0 + beq _0225400E + ldr r1, [r5, #4] + cmp r1, #0 + beq _0225400E + add r1, r5, #0 + add r1, #8 + bl NNS_G2dGetUnpackedCellBank + cmp r0, #0 + bne _02253FFC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02253FFC: + ldr r0, [r5, #4] + add r5, #0xc + add r1, r5, #0 + bl NNS_G2dGetUnpackedMCAnimBank + cmp r0, #0 + bne _0225400E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225400E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD20_02253FBC + + thumb_func_start MOD20_02254014 +MOD20_02254014: ; 0x02254014 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _02254028 + ldr r0, [r4, #0x10] + bl FreeToHeapExplicit + mov r0, #0 + str r0, [r4] +_02254028: + ldr r1, [r4, #4] + cmp r1, #0 + beq _02254038 + ldr r0, [r4, #0x10] + bl FreeToHeapExplicit + mov r0, #0 + str r0, [r4, #4] +_02254038: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02254014 + + thumb_func_start MOD20_0225403C +MOD20_0225403C: ; 0x0225403C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + sub r6, r6, #1 + cmp r0, #0 + beq _0225405E +_0225404C: + add r0, r4, #0 + stmia r5!, {r4} + bl MOD20_02254060 + add r0, r6, #0 + add r4, #0x90 + sub r6, r6, #1 + cmp r0, #0 + bne _0225404C +_0225405E: + pop {r4, r5, r6, pc} + thumb_func_end MOD20_0225403C + + thumb_func_start MOD20_02254060 +MOD20_02254060: ; 0x02254060 + mov r1, #0 + str r1, [r0, #0x5c] + str r1, [r0, #0x60] + bx lr + thumb_func_end MOD20_02254060 + + thumb_func_start MOD20_02254068 +MOD20_02254068: ; 0x02254068 + ldrh r2, [r0, #0x12] + ldrh r1, [r0, #0x10] + cmp r2, r1 + bhs _0225407C + add r1, r2, #1 + strh r1, [r0, #0x12] + ldr r1, [r0, #4] + lsl r0, r2, #2 + ldr r0, [r1, r0] + bx lr +_0225407C: + mov r0, #0 + bx lr + thumb_func_end MOD20_02254068 + + thumb_func_start MOD20_02254080 +MOD20_02254080: ; 0x02254080 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #0x12] + add r4, r1, #0 + cmp r0, #0 + beq _022540A0 + add r0, r4, #0 + bl MOD20_02254060 + ldrh r0, [r5, #0x12] + sub r0, r0, #1 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + ldr r1, [r5, #4] + lsl r0, r0, #2 + str r4, [r1, r0] +_022540A0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02254080 + + thumb_func_start MOD20_022540A4 +MOD20_022540A4: ; 0x022540A4 + push {r4, r5} + ldr r3, [r0, #8] + cmp r3, #0 + bne _022540B8 + str r1, [r0, #8] + mov r0, #0 + str r0, [r1, #0x5c] + str r0, [r1, #0x60] + pop {r4, r5} + bx lr +_022540B8: + add r4, r1, #0 + add r4, #0x80 + ldr r5, [r4] + add r2, r3, #0 +_022540C0: + add r4, r2, #0 + add r4, #0x80 + ldr r4, [r4] + cmp r5, r4 + bhs _022540E2 + cmp r2, r3 + bne _022540D0 + str r1, [r0, #8] +_022540D0: + ldr r0, [r2, #0x60] + str r0, [r1, #0x60] + cmp r0, #0 + beq _022540DA + str r1, [r0, #0x5c] +_022540DA: + str r2, [r1, #0x5c] + str r1, [r2, #0x60] + pop {r4, r5} + bx lr +_022540E2: + ldr r4, [r2, #0x5c] + cmp r4, #0 + bne _022540F4 + str r1, [r2, #0x5c] + str r2, [r1, #0x60] + mov r0, #0 + str r0, [r1, #0x5c] + pop {r4, r5} + bx lr +_022540F4: + add r2, r4, #0 + b _022540C0 + thumb_func_end MOD20_022540A4 + + thumb_func_start MOD20_022540F8 +MOD20_022540F8: ; 0x022540F8 + pop {r4, r5} + bx lr + thumb_func_end MOD20_022540F8 + + thumb_func_start MOD20_022540FC +MOD20_022540FC: ; 0x022540FC + ldr r2, [r1, #0x60] + cmp r2, #0 + beq _02254118 + ldr r0, [r1, #0x5c] + cmp r0, #0 + beq _02254112 + str r0, [r2, #0x5c] + ldr r2, [r1, #0x60] + ldr r0, [r1, #0x5c] + str r2, [r0, #0x60] + bx lr +_02254112: + mov r0, #0 + str r0, [r2, #0x5c] + bx lr +_02254118: + ldr r3, [r1, #0x5c] + cmp r3, #0 + beq _02254128 + mov r2, #0 + str r2, [r3, #0x60] + ldr r1, [r1, #0x5c] + str r1, [r0, #8] + bx lr +_02254128: + mov r1, #0 + str r1, [r0, #8] + bx lr + .align 2, 0 + thumb_func_end MOD20_022540FC diff --git a/arm9/modules/20/asm/mod20_02254130.s b/arm9/modules/20/asm/mod20_02254130.s new file mode 100644 index 00000000..49c753c7 --- /dev/null +++ b/arm9/modules/20/asm/mod20_02254130.s @@ -0,0 +1,458 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02254130 +MOD20_02254130: ; 0x02254130 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + str r3, [sp, #4] + ldr r5, [sp, #0x20] + bne _02254144 + bl GF_AssertFail +_02254144: + add r0, r5, #0 + mov r1, #0x18 + bl AllocFromHeap + add r4, r0, #0 + beq _02254192 + ldr r0, [sp] + str r5, [r4, #8] + str r0, [r4, #4] + str r6, [r4] + mov r1, #0xe + ldr r0, [sp, #4] + str r7, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r5, #0 + mul r1, r7 + bl AllocFromHeap + str r0, [r4, #0x14] + cmp r0, #0 + beq _02254188 + mov r6, #0 + cmp r7, #0 + bls _02254192 + add r5, r6, #0 +_02254176: + ldr r0, [r4, #0x14] + add r0, r0, r5 + bl MOD20_022542E4 + add r6, r6, #1 + add r5, #0xe + cmp r6, r7 + blo _02254176 + b _02254192 +_02254188: + add r0, r5, #0 + add r1, r4, #0 + bl FreeToHeapExplicit + mov r4, #0 +_02254192: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02254130 + + thumb_func_start MOD20_02254198 +MOD20_02254198: ; 0x02254198 + push {r4, lr} + add r4, r0, #0 + bne _022541A2 + bl GF_AssertFail +_022541A2: + ldr r0, [r4, #8] + ldr r1, [r4, #0x14] + bl FreeToHeapExplicit + ldr r0, [r4, #8] + add r1, r4, #0 + bl FreeToHeapExplicit + pop {r4, pc} + thumb_func_end MOD20_02254198 + + thumb_func_start MOD20_022541B4 +MOD20_022541B4: ; 0x022541B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_02020A98 + str r0, [sp, #4] + cmp r0, #0 + beq _0225420C + bl FUN_02020AA4 + ldr r1, [r5, #0xc] + mov r7, #0 + str r0, [sp] + cmp r1, #0 + bls _02254232 + add r4, r7, #0 + add r6, r7, #0 +_022541D6: + ldr r0, [r5, #0x14] + add r1, r0, r4 + ldrb r0, [r1, #1] + strb r0, [r1, #2] + ldr r0, [r5, #0x14] + add r0, r0, r4 + ldrb r0, [r0, #1] + cmp r0, #0 + ldr r0, [r5] + beq _022541F2 + add r0, r0, r6 + bl FUN_02020A40 + b _022541F8 +_022541F2: + add r0, r0, r6 + bl FUN_02020A6C +_022541F8: + ldr r1, [r5, #0x14] + add r7, r7, #1 + add r1, r1, r4 + strb r0, [r1, #1] + ldr r1, [r5, #0xc] + add r4, #0xe + add r6, r6, #4 + cmp r7, r1 + blo _022541D6 + b _02254232 +_0225420C: + ldr r1, [r5, #0xc] + mov r2, #0 + str r2, [sp] + cmp r1, #0 + bls _02254232 + add r0, r2, #0 + add r3, r2, #0 +_0225421A: + ldr r1, [r5, #0x14] + add r2, r2, #1 + add r4, r1, r0 + ldrb r1, [r4, #1] + strb r1, [r4, #2] + ldr r1, [r5, #0x14] + add r1, r1, r0 + strb r3, [r1, #1] + ldr r1, [r5, #0xc] + add r0, #0xe + cmp r2, r1 + blo _0225421A +_02254232: + mov r6, #0 + cmp r1, #0 + bls _02254278 + ldr r7, _022542A8 ; =MOD20_02254710 + add r4, r6, #0 +_0225423C: + ldr r3, [r5, #0x14] + ldr r1, [sp, #4] + add r0, r3, r4 + ldrb r3, [r3, r4] + ldr r2, [sp] + lsl r3, r3, #2 + ldr r3, [r7, r3] + blx r3 + add r1, r0, #0 + ldr r0, [r5, #0x14] + add r0, r0, r4 + ldrb r2, [r0, #1] + ldrb r0, [r0, #2] + cmp r2, r0 + bne _0225425C + mov r2, #2 +_0225425C: + cmp r1, #0 + bne _02254264 + cmp r2, #2 + beq _0225426E +_02254264: + ldr r3, [r5, #0x10] + ldr r4, [r5, #4] + add r0, r6, #0 + blx r4 + b _02254278 +_0225426E: + ldr r0, [r5, #0xc] + add r6, r6, #1 + add r4, #0xe + cmp r6, r0 + blo _0225423C +_02254278: + ldr r0, [r5, #0xc] + add r6, r6, #1 + cmp r6, r0 + bhs _022542A2 + mov r0, #0xe + add r4, r6, #0 + ldr r7, _022542A8 ; =MOD20_02254710 + mul r4, r0 +_02254288: + ldr r3, [r5, #0x14] + ldr r1, [sp, #4] + add r0, r3, r4 + ldrb r3, [r3, r4] + ldr r2, [sp] + lsl r3, r3, #2 + ldr r3, [r7, r3] + blx r3 + ldr r0, [r5, #0xc] + add r6, r6, #1 + add r4, #0xe + cmp r6, r0 + blo _02254288 +_022542A2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022542A8: .word MOD20_02254710 + thumb_func_end MOD20_022541B4 + + thumb_func_start MOD20_022542AC +MOD20_022542AC: ; 0x022542AC + push {r3, r4} + ldr r4, [r0, #0x14] + mov r0, #0xe + mul r0, r1 + add r1, r4, r0 + lsl r0, r2, #1 + add r0, r1, r0 + strh r3, [r0, #8] + pop {r3, r4} + bx lr + thumb_func_end MOD20_022542AC + + thumb_func_start MOD20_022542C0 +MOD20_022542C0: ; 0x022542C0 + ldr r3, [r0, #0x14] + mov r0, #0xe + mul r0, r1 + add r0, r3, r0 + strh r2, [r0, #0xc] + bx lr + thumb_func_end MOD20_022542C0 + + thumb_func_start MOD20_022542CC +MOD20_022542CC: ; 0x022542CC + add r3, r1, #0 + mov r2, #0xe + mul r3, r2 + ldr r1, [r0, #0x14] + mov r2, #0 + add r1, r1, r3 + strh r2, [r1, #4] + ldr r0, [r0, #0x14] + mov r1, #4 + strb r1, [r0, r3] + bx lr + .align 2, 0 + thumb_func_end MOD20_022542CC + + thumb_func_start MOD20_022542E4 +MOD20_022542E4: ; 0x022542E4 + mov r2, #0 + strb r2, [r0] + strb r2, [r0, #1] + strb r2, [r0, #2] + strh r2, [r0, #4] + strh r2, [r0, #6] + add r3, r0, #0 + add r1, r2, #0 +_022542F4: + add r2, r2, #1 + strh r1, [r3, #8] + add r3, r3, #2 + cmp r2, #2 + blo _022542F4 + strh r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD20_022542E4 + + thumb_func_start MOD20_02254304 +MOD20_02254304: ; 0x02254304 + strb r1, [r0] + mov r1, #0 + strh r1, [r0, #4] + bx lr + thumb_func_end MOD20_02254304 + + thumb_func_start MOD20_0225430C +MOD20_0225430C: ; 0x0225430C + strb r1, [r0] + bx lr + thumb_func_end MOD20_0225430C + + thumb_func_start MOD20_02254310 +MOD20_02254310: ; 0x02254310 + ldrh r2, [r0, #4] + ldr r1, _02254320 ; =0x0000FFFF + cmp r2, r1 + bhs _0225431C + add r1, r2, #1 + strh r1, [r0, #4] +_0225431C: + bx lr + nop +_02254320: .word 0x0000FFFF + thumb_func_end MOD20_02254310 + + thumb_func_start MOD20_02254324 +MOD20_02254324: ; 0x02254324 + ldrh r3, [r0, #4] + mov r2, #0 +_02254328: + ldrh r1, [r0, #8] + cmp r3, r1 + bne _02254332 + add r0, r2, #5 + bx lr +_02254332: + add r2, r2, #1 + add r0, r0, #2 + cmp r2, #2 + blo _02254328 + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02254324 + + thumb_func_start MOD20_02254340 +MOD20_02254340: ; 0x02254340 + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + beq _02254356 + cmp r2, #0 + beq _02254356 + mov r1, #1 + bl MOD20_02254304 + mov r0, #1 + pop {r3, pc} +_02254356: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02254340 + + thumb_func_start MOD20_0225435C +MOD20_0225435C: ; 0x0225435C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02254310 + ldrb r0, [r5, #1] + cmp r0, #0 + beq _0225438A + add r0, r5, #0 + bl MOD20_02254324 + cmp r0, #0 + bne _022543B8 + ldrh r1, [r5, #0xc] + cmp r1, #0 + beq _022543B6 + ldrh r0, [r5, #4] + cmp r0, r1 + blo _022543B6 + mov r0, #0 + strh r0, [r5, #4] + mov r0, #7 + pop {r3, r4, r5, pc} +_0225438A: + cmp r4, #0 + beq _0225439A + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #2 + pop {r3, r4, r5, pc} +_0225439A: + ldrh r0, [r5, #6] + cmp r0, #0 + beq _022543AA + add r0, r5, #0 + mov r1, #2 + bl MOD20_0225430C + b _022543B6 +_022543AA: + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #3 + pop {r3, r4, r5, pc} +_022543B6: + mov r0, #0 +_022543B8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_0225435C + + thumb_func_start MOD20_022543BC +MOD20_022543BC: ; 0x022543BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD20_02254310 + ldrh r1, [r5, #4] + ldrh r0, [r5, #6] + cmp r1, r0 + bls _022543DA + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #3 + pop {r3, r4, r5, pc} +_022543DA: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _022543F0 + cmp r4, #0 + beq _022543F0 + add r0, r5, #0 + mov r1, #3 + bl MOD20_02254304 + mov r0, #4 + pop {r3, r4, r5, pc} +_022543F0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022543BC + + thumb_func_start MOD20_022543F4 +MOD20_022543F4: ; 0x022543F4 + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + beq _02254402 + bl MOD20_02254310 + b _02254408 +_02254402: + mov r1, #0 + bl MOD20_02254304 +_02254408: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD20_022543F4 + + thumb_func_start MOD20_0225440C +MOD20_0225440C: ; 0x0225440C + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + bne _0225441A + mov r1, #0 + bl MOD20_02254304 +_0225441A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_0225440C + + .section .rodata + + .global MOD20_02254710 +MOD20_02254710: ; 0x02254710 + .word MOD20_02254340, MOD20_0225435C, MOD20_022543BC, MOD20_022543F4 + .word MOD20_0225440C diff --git a/arm9/modules/20/asm/mod20_02254420.s b/arm9/modules/20/asm/mod20_02254420.s new file mode 100644 index 00000000..4ac3686f --- /dev/null +++ b/arm9/modules/20/asm/mod20_02254420.s @@ -0,0 +1,185 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02254420 +MOD20_02254420: ; 0x02254420 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0x1e + blo _02254432 + bl GF_AssertFail +_02254432: + cmp r4, #0x21 + blo _0225443A + bl GF_AssertFail +_0225443A: + cmp r5, #0x1e + blo _02254440 + mov r5, #0 +_02254440: + cmp r4, #0x21 + blo _02254446 + mov r4, #0 +_02254446: + ldr r0, _02254458 ; =MOD20_02254744 + lsl r1, r5, #1 + ldrh r0, [r0, r1] + lsl r1, r4, #1 + str r0, [r6] + ldr r0, _0225445C ; =MOD20_02254780 + ldrh r0, [r0, r1] + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254458: .word MOD20_02254744 +_0225445C: .word MOD20_02254780 + thumb_func_end MOD20_02254420 + + thumb_func_start MOD20_02254460 +MOD20_02254460: ; 0x02254460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #4 + blo _02254470 + bl GF_AssertFail +_02254470: + ldr r0, _02254480 ; =MOD20_02254724 + lsl r1, r5, #3 + ldr r0, [r0, r1] + str r0, [r4] + ldr r0, _02254484 ; =MOD20_02254724 + 4 + ldr r0, [r0, r1] + str r0, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 +_02254480: .word MOD20_02254724 +_02254484: .word MOD20_02254724 + 4 + thumb_func_end MOD20_02254460 + + thumb_func_start MOD20_02254488 +MOD20_02254488: ; 0x02254488 + push {r4, r5} + ldr r5, _022544B8 ; =MOD20_022547C2 + mov r4, #0 +_0225448E: + ldrh r3, [r5] + cmp r0, r3 + bne _022544A8 + ldr r0, _022544BC ; =MOD20_022547C2 + 2 + lsl r3, r4, #2 + ldrb r0, [r0, r3] + str r0, [r1] + ldr r0, _022544C0 ; =MOD20_022547C2 + 3 + ldrb r0, [r0, r3] + str r0, [r2] + mov r0, #1 + pop {r4, r5} + bx lr +_022544A8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1d + blo _0225448E + mov r0, #0 + pop {r4, r5} + bx lr + nop +_022544B8: .word MOD20_022547C2 +_022544BC: .word MOD20_022547C2 + 2 +_022544C0: .word MOD20_022547C2 + 3 + thumb_func_end MOD20_02254488 + + .section .rodata + + .global MOD20_02254724 +MOD20_02254724: ; 0x02254724 + .word 0x00000020, 0x0000002A + .word 0x00000032, 0x0000002A + .word 0x000000A8, 0x0000007A + .word 0x000000C2, 0x0000003A + + .global MOD20_02254744 +MOD20_02254744: ; 0x02254744 + .short 0x001A, 0x0020, 0x0026, 0x002C, 0x0032, 0x0038, 0x003E, 0x0044 + .short 0x004A, 0x0050, 0x0056, 0x005C, 0x0062, 0x0068, 0x006E, 0x0074 + .short 0x007A, 0x0080, 0x0086, 0x008C, 0x0092, 0x0098, 0x009E, 0x00A4 + .short 0x00AA, 0x00B0, 0x00B6, 0x00BC, 0x00C2, 0x00C8 + + .global MOD20_02254780 +MOD20_02254780: ; 0x02254780 + .short 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x001E, 0x0024 + .short 0x002A, 0x0030, 0x0036, 0x003C, 0x0042, 0x0048, 0x004E, 0x0054 + .short 0x005A, 0x0060, 0x0066, 0x006C, 0x0072, 0x0078, 0x007E, 0x0084 + .short 0x008A, 0x0090, 0x0096, 0x009C, 0x00A2, 0x00A8, 0x00AE, 0x00B4 + .short 0x00BA + + .global MOD20_022547C2 +MOD20_022547C2: ; 0x022547C2 + .short 0x0156 + .byte 0x2F, 0x96 + .short 0x0157 + .byte 0x38, 0x90 + .short 0x0158 + .byte 0x41, 0x84 + .short 0x0159 + .byte 0x32, 0x7E + .short 0x015A + .byte 0x32, 0x78 + .short 0x015B + .byte 0x3E, 0x6C + .short 0x015D + .byte 0x4A, 0x5A + .short 0x015E + .byte 0x50, 0x6F + .short 0x0161 + .byte 0x53, 0x7E + .short 0x0162 + .byte 0x65, 0x7E + .short 0x0164 + .byte 0x7D, 0x7E + .short 0x016A + .byte 0x80, 0x66 + .short 0x016B + .byte 0x7A, 0x5A + .short 0x016D + .byte 0x5C, 0x5A + .short 0x016E + .byte 0x68, 0x5A + .short 0x016F + .byte 0x6E, 0x8A + .short 0x0173 + .byte 0x77, 0x96 + .short 0x0175 + .byte 0x98, 0x93 + .short 0x017C + .byte 0x98, 0x78 + .short 0x017E + .byte 0x8C, 0x66 + .short 0x017F + .byte 0x56, 0x42 + .short 0x0181 + .byte 0x50, 0x33 + .short 0x0184 + .byte 0x29, 0x84 + .short 0x0187 + .byte 0x38, 0x9C + .short 0x01D3 + .byte 0x3B, 0xA2 + .short 0x0188 + .byte 0x4A, 0xA2 + .short 0x018B + .byte 0xAA, 0x8A + .short 0x00C8 + .byte 0x44, 0x72 + .short 0x00CC + .byte 0x38, 0x66 + + .data + .bss diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s deleted file mode 100644 index c957045f..00000000 --- a/arm9/modules/20/asm/module_20.s +++ /dev/null @@ -1,4748 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 2, 0 - - thumb_func_start MOD20_02252440 -MOD20_02252440: ; 0x02252440 - ldr r3, _02252444 ; =FUN_02037790 - bx r3 - .align 2, 0 -_02252444: .word FUN_02037790 - thumb_func_end MOD20_02252440 - - thumb_func_start MOD20_02252448 -MOD20_02252448: ; 0x02252448 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r1, #0 - mov r0, #3 - str r2, [sp] - mov r1, #7 - lsl r2, r0, #0xe - add r7, r3, #0 - bl CreateHeap - mov r0, #3 - mov r1, #8 - lsl r2, r0, #0xe - bl CreateHeap - mov r0, #7 - mov r1, #0x60 - bl AllocFromHeap - add r4, r0, #0 - beq _022524B2 - str r4, [r5] - ldr r0, [sp] - str r6, [r4, #0x5c] - str r0, [r4, #0x54] - bl Sav2_Poketch_get - str r0, [r4, #0x58] - ldr r0, [sp, #0x18] - str r7, [r4, #0x4c] - str r0, [r4, #0x50] - add r0, r4, #0 - bl MOD20_0225253C - cmp r0, #0 - beq _022524B2 - bl FUN_0201CC08 - mov r0, #4 - bl FUN_0201CC24 - ldr r0, _022524B4 ; =MOD20_022525F0 - str r5, [r4, #0x34] - add r1, r4, #0 - mov r2, #4 - bl FUN_0200CA44 - str r0, [r4, #0x38] - ldr r0, _022524B8 ; =MOD20_0225259C - add r1, r4, #0 - mov r2, #0 - bl FUN_0200CA44 -_022524B2: - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022524B4: .word MOD20_022525F0 -_022524B8: .word MOD20_0225259C - thumb_func_end MOD20_02252448 - - thumb_func_start MOD20_022524BC -MOD20_022524BC: ; 0x022524BC - push {r3, lr} - ldrb r1, [r0] - cmp r1, #3 - beq _022524CE - cmp r1, #4 - beq _022524CE - mov r1, #3 - bl MOD20_022525F8 -_022524CE: - pop {r3, pc} - thumb_func_end MOD20_022524BC - - thumb_func_start MOD20_022524D0 -MOD20_022524D0: ; 0x022524D0 - cmp r0, #0 - bne _022524D8 - mov r0, #1 - bx lr -_022524D8: - mov r0, #0 - bx lr - thumb_func_end MOD20_022524D0 - - thumb_func_start MOD20_022524DC -MOD20_022524DC: ; 0x022524DC - push {r4, lr} - add r4, r0, #0 - cmp r1, #5 - bhi _0225252E - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022524F0: ; jump table - .short _0225252E - _022524F0 - 2 ; case 0 - .short _022524FC - _022524F0 - 2 ; case 1 - .short _0225252E - _022524F0 - 2 ; case 2 - .short _0225252E - _022524F0 - 2 ; case 3 - .short _0225251E - _022524F0 - 2 ; case 4 - .short _02252502 - _022524F0 - 2 ; case 5 -_022524FC: - mov r0, #1 - strb r0, [r4, #4] - pop {r4, pc} -_02252502: - ldr r0, [r4, #0x58] - bl Sav2_Poketch_GetStepCounter - add r1, r0, #1 - ldr r0, _02252530 ; =0x0001869F - cmp r1, r0 - bls _02252512 - mov r1, #0 -_02252512: - ldr r0, [r4, #0x58] - bl Sav2_Poketch_SetStepCounter - mov r0, #1 - strb r0, [r4, #7] - pop {r4, pc} -_0225251E: - ldrb r0, [r4, #2] - cmp r0, #2 - bne _0225252E - ldr r1, [r4, #0x44] - cmp r1, #0 - beq _0225252E - ldr r0, [r4, #0x48] - blx r1 -_0225252E: - pop {r4, pc} - .align 2, 0 -_02252530: .word 0x0001869F - thumb_func_end MOD20_022524DC - - thumb_func_start MOD20_02252534 -MOD20_02252534: ; 0x02252534 - ldrb r0, [r0, #3] - bx lr - thumb_func_end MOD20_02252534 - - thumb_func_start MOD20_02252538 -MOD20_02252538: ; 0x02252538 - ldr r0, [r0, #0x14] - bx lr - thumb_func_end MOD20_02252538 - - thumb_func_start MOD20_0225253C -MOD20_0225253C: ; 0x0225253C - push {r4, lr} - add r4, r0, #0 - add r1, r4, #0 - ldr r2, [r4, #0x50] - add r0, #0x1c - add r1, #0x20 - add r3, r4, #0 - bl MOD20_02252C5C - cmp r0, #0 - beq _02252578 - mov r1, #0 - strb r1, [r4] - strb r1, [r4, #1] - strb r1, [r4, #3] - strb r1, [r4, #4] - strb r1, [r4, #7] - strb r1, [r4, #5] - strb r1, [r4, #6] - sub r0, r1, #1 - str r0, [r4, #0x14] - strb r1, [r4, #2] - add r0, r4, #0 - str r1, [r4, #8] - bl MOD20_022529C4 - cmp r0, #0 - beq _02252578 - mov r0, #1 - pop {r4, pc} -_02252578: - mov r0, #0 - pop {r4, pc} - thumb_func_end MOD20_0225253C - - thumb_func_start MOD20_0225257C -MOD20_0225257C: ; 0x0225257C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x38] - bl FUN_0200CAB4 - add r0, r4, #0 - bl MOD20_02252A08 - add r0, r4, #0 - bl ClosePoketchApp - ldr r0, [r4, #0x1c] - bl MOD20_02252E18 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_0225257C - - thumb_func_start MOD20_0225259C -MOD20_0225259C: ; 0x0225259C - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #4 - bhs _022525C0 - cmp r0, #0 - beq _022525B2 - add r0, r4, #0 - bl MOD20_02252A14 -_022525B2: - ldrb r1, [r4] - add r0, r4, #0 - lsl r2, r1, #2 - ldr r1, _022525EC ; =MOD20_022544CC - ldr r1, [r1, r2] - blx r1 - pop {r3, r4, r5, pc} -_022525C0: - beq _022525C6 - bl GF_AssertFail -_022525C6: - ldr r0, [r4, #0x34] - mov r1, #0 - str r1, [r0] - add r0, r4, #0 - bl MOD20_0225257C - add r0, r4, #0 - bl FreeToHeap - add r0, r5, #0 - bl FUN_0200CAB4 - mov r0, #7 - bl DestroyHeap - mov r0, #8 - bl DestroyHeap - pop {r3, r4, r5, pc} - .align 2, 0 -_022525EC: .word MOD20_022544CC - thumb_func_end MOD20_0225259C - - thumb_func_start MOD20_022525F0 -MOD20_022525F0: ; 0x022525F0 - mov r0, #0 - strb r0, [r1, #4] - strb r0, [r1, #7] - bx lr - thumb_func_end MOD20_022525F0 - - thumb_func_start MOD20_022525F8 -MOD20_022525F8: ; 0x022525F8 - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - bx lr - thumb_func_end MOD20_022525F8 - - thumb_func_start MOD20_02252600 -MOD20_02252600: ; 0x02252600 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldrb r1, [r4, #1] - cmp r1, #3 - bhi _02252684 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02252616: ; jump table - .short _0225261E - _02252616 - 2 ; case 0 - .short _0225262E - _02252616 - 2 ; case 1 - .short _0225265A - _02252616 - 2 ; case 2 - .short _02252670 - _02252616 - 2 ; case 3 -_0225261E: - ldr r0, [r4, #0x1c] - mov r1, #0 - bl MOD20_02252E80 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - pop {r3, r4, r5, pc} -_0225262E: - ldr r0, [r4, #0x1c] - mov r1, #0 - bl MOD20_02252EA4 - cmp r0, #0 - beq _02252684 - ldr r0, [r4, #0x58] - bl Sav2_Poketch_GetSelectedApp - add r5, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - bl LoadPoketchApp - add r0, r4, #0 - add r1, r5, #0 - bl MOD20_02252918 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - pop {r3, r4, r5, pc} -_0225265A: - bl MOD20_0225293C - cmp r0, #0 - beq _02252684 - ldr r0, [r4, #0x1c] - mov r1, #1 - bl MOD20_02252E80 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] -_02252670: - ldr r0, [r4, #0x1c] - mov r1, #1 - bl MOD20_02252EA4 - cmp r0, #0 - beq _02252684 - add r0, r4, #0 - mov r1, #1 - bl MOD20_022525F8 -_02252684: - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_02252600 - - thumb_func_start MOD20_02252688 -MOD20_02252688: ; 0x02252688 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #1] - cmp r1, #4 - bls _02252694 - b _022527AA -_02252694: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_022526A0: ; jump table - .short _022526AA - _022526A0 - 2 ; case 0 - .short _022526D4 - _022526A0 - 2 ; case 1 - .short _0225271A - _022526A0 - 2 ; case 2 - .short _02252750 - _022526A0 - 2 ; case 3 - .short _0225276C - _022526A0 - 2 ; case 4 -_022526AA: - bl MOD20_02252C08 - cmp r0, #0 - bne _022527AA - ldr r0, [r4, #8] - cmp r0, #3 - beq _022526BC - cmp r0, #5 - bne _022527AA -_022526BC: - mov r0, #0 - str r0, [r4, #0xc] - mov r0, #1 - strb r0, [r4, #5] - ldr r0, [r4, #0x1c] - mov r1, #4 - bl MOD20_02252E80 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - pop {r4, pc} -_022526D4: - ldr r0, [r4, #8] - cmp r0, #3 - beq _022526DE - cmp r0, #5 - bne _022526E2 -_022526DE: - mov r0, #1 - str r0, [r4, #0xc] -_022526E2: - ldr r0, [r4, #0x1c] - bl MOD20_02252EB0 - cmp r0, #0 - beq _022527AA - ldr r0, [r4, #0x58] - bl Sav2_Poketch_CycleNextApp - str r0, [r4, #0x20] - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02252710 - ldr r0, [r4, #0x1c] - mov r1, #9 - bl MOD20_02252E80 - mov r0, #0x1e - str r0, [r4, #0x10] - mov r0, #0 - str r0, [r4, #0xc] - mov r0, #4 - strb r0, [r4, #1] - pop {r4, pc} -_02252710: - mov r0, #3 - str r0, [r4, #0x10] - mov r0, #2 - strb r0, [r4, #1] - pop {r4, pc} -_0225271A: - ldr r1, [r4, #8] - cmp r1, #3 - beq _02252724 - cmp r1, #5 - bne _0225273A -_02252724: - ldr r0, [r4, #0x1c] - mov r1, #9 - bl MOD20_02252E80 - mov r0, #0x1e - str r0, [r4, #0x10] - mov r0, #0 - str r0, [r4, #0xc] - mov r0, #4 - strb r0, [r4, #1] - pop {r4, pc} -_0225273A: - ldr r1, [r4, #0x10] - cmp r1, #0 - beq _02252746 - sub r0, r1, #1 - str r0, [r4, #0x10] - pop {r4, pc} -_02252746: - bl MOD20_0225294C - mov r0, #3 - strb r0, [r4, #1] - pop {r4, pc} -_02252750: - bl MOD20_02252968 - cmp r0, #0 - beq _022527AA - add r0, r4, #0 - bl ClosePoketchApp - bl FUN_020893E0 - add r0, r4, #0 - mov r1, #2 - bl MOD20_022525F8 - pop {r4, pc} -_0225276C: - ldr r0, [r4, #8] - cmp r0, #3 - beq _02252776 - cmp r0, #5 - bne _0225278C -_02252776: - ldr r0, [r4, #0x58] - bl Sav2_Poketch_CycleNextApp - str r0, [r4, #0x20] - mov r0, #0x1e - str r0, [r4, #0x10] - ldr r0, [r4, #0x1c] - mov r1, #0xa - bl MOD20_02252E80 - pop {r4, pc} -_0225278C: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _02252798 - sub r0, r0, #1 - str r0, [r4, #0x10] - pop {r4, pc} -_02252798: - ldr r0, [r4, #0x1c] - mov r1, #0xb - bl MOD20_02252E80 - add r0, r4, #0 - bl MOD20_0225294C - mov r0, #3 - strb r0, [r4, #1] -_022527AA: - pop {r4, pc} - thumb_func_end MOD20_02252688 - - thumb_func_start MOD20_022527AC -MOD20_022527AC: ; 0x022527AC - push {r3, r4, r5, lr} - add r4, r0, #0 - ldrb r1, [r4, #1] - cmp r1, #0 - beq _022527C0 - cmp r1, #1 - beq _022527E4 - cmp r1, #2 - beq _022527FC - pop {r3, r4, r5, pc} -_022527C0: - mov r0, #1 - strb r0, [r4, #6] - ldr r0, [r4, #0x58] - bl Sav2_Poketch_GetSelectedApp - add r5, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - bl LoadPoketchApp - add r0, r4, #0 - add r1, r5, #0 - bl MOD20_02252918 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - pop {r3, r4, r5, pc} -_022527E4: - bl MOD20_0225293C - cmp r0, #0 - beq _02252816 - ldr r0, [r4, #0x1c] - mov r1, #2 - bl MOD20_02252E80 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - pop {r3, r4, r5, pc} -_022527FC: - ldr r0, [r4, #0x1c] - mov r1, #2 - bl MOD20_02252EA4 - cmp r0, #0 - beq _02252816 - mov r0, #0 - strb r0, [r4, #5] - strb r0, [r4, #6] - add r0, r4, #0 - mov r1, #1 - bl MOD20_022525F8 -_02252816: - pop {r3, r4, r5, pc} - thumb_func_end MOD20_022527AC - - thumb_func_start MOD20_02252818 -MOD20_02252818: ; 0x02252818 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #1] - cmp r1, #3 - bhi _022528AC - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0225282E: ; jump table - .short _02252836 - _0225282E - 2 ; case 0 - .short _02252866 - _0225282E - 2 ; case 1 - .short _0225287A - _0225282E - 2 ; case 2 - .short _02252890 - _0225282E - 2 ; case 3 -_02252836: - ldrb r1, [r4, #2] - cmp r1, #3 - bhi _022528AC - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02252848: ; jump table - .short _02252860 - _02252848 - 2 ; case 0 - .short _02252850 - _02252848 - 2 ; case 1 - .short _02252856 - _02252848 - 2 ; case 2 - .short _02252860 - _02252848 - 2 ; case 3 -_02252850: - mov r0, #1 - strb r0, [r4, #1] - pop {r4, pc} -_02252856: - bl MOD20_0225294C - mov r0, #2 - strb r0, [r4, #1] - pop {r4, pc} -_02252860: - mov r0, #2 - strb r0, [r4, #1] - pop {r4, pc} -_02252866: - bl MOD20_0225293C - cmp r0, #0 - beq _022528AC - add r0, r4, #0 - bl MOD20_0225294C - mov r0, #2 - strb r0, [r4, #1] - pop {r4, pc} -_0225287A: - bl MOD20_02252968 - cmp r0, #0 - beq _022528AC - ldr r0, [r4, #0x1c] - mov r1, #0xe - bl MOD20_02252E80 - mov r0, #3 - strb r0, [r4, #1] - pop {r4, pc} -_02252890: - ldr r0, [r4, #0x1c] - bl MOD20_02252EB0 - cmp r0, #0 - beq _022528AC - add r0, r4, #0 - bl ClosePoketchApp - bl FUN_0201CD04 - add r0, r4, #0 - mov r1, #4 - bl MOD20_022525F8 -_022528AC: - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_02252818 - - thumb_func_start LoadPoketchApp -LoadPoketchApp: ; 0x022528B0 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bmi _022528BC - cmp r4, #0x19 - blo _022528C0 -_022528BC: - bl GF_AssertFail -_022528C0: - mov r0, #0 - ldr r1, [r5, #0x14] - mvn r0, r0 - cmp r1, r0 - bne _022528F0 - ldr r2, _022528F4 ; =sPoketchAppOverlayMapping - mov r1, #0 -_022528CE: - ldr r0, [r2] - cmp r4, r0 - bne _022528E8 - ldr r0, _022528F8 ; =sPoketchAppOverlayMapping + 4 - lsl r1, r1, #3 - ldr r6, [r0, r1] - mov r1, #2 - add r0, r6, #0 - bl HandleLoadOverlay - str r4, [r5, #0x14] - str r6, [r5, #0x18] - pop {r4, r5, r6, pc} -_022528E8: - add r1, r1, #1 - add r2, #8 - cmp r1, #0x19 - blo _022528CE -_022528F0: - pop {r4, r5, r6, pc} - nop -_022528F4: .word sPoketchAppOverlayMapping -_022528F8: .word sPoketchAppOverlayMapping + 4 - thumb_func_end LoadPoketchApp - - thumb_func_start ClosePoketchApp -ClosePoketchApp: ; 0x022528FC - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - ldr r1, [r4, #0x14] - mvn r0, r0 - cmp r1, r0 - beq _02252916 - ldr r0, [r4, #0x18] - bl UnloadOverlayByID - mov r0, #0 - mvn r0, r0 - str r0, [r4, #0x14] -_02252916: - pop {r4, pc} - thumb_func_end ClosePoketchApp - - thumb_func_start MOD20_02252918 -MOD20_02252918: ; 0x02252918 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldrb r0, [r4, #2] - cmp r0, #0 - beq _02252926 - bl GF_AssertFail -_02252926: - add r0, r4, #0 - ldr r2, [r4, #0x4c] - ldr r3, [r4, #0x14] - ldr r5, [r4, #0x3c] - add r0, #0x24 - add r1, r4, #0 - blx r5 - mov r0, #1 - strb r0, [r4, #2] - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_02252918 - - thumb_func_start MOD20_0225293C -MOD20_0225293C: ; 0x0225293C - ldrb r0, [r0, #2] - cmp r0, #2 - bne _02252946 - mov r0, #1 - bx lr -_02252946: - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end MOD20_0225293C - - thumb_func_start MOD20_0225294C -MOD20_0225294C: ; 0x0225294C - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #2] - cmp r0, #2 - beq _0225295A - bl GF_AssertFail -_0225295A: - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x40] - blx r1 - mov r0, #3 - strb r0, [r4, #2] - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_0225294C - - thumb_func_start MOD20_02252968 -MOD20_02252968: ; 0x02252968 - ldrb r0, [r0, #2] - cmp r0, #0 - bne _02252972 - mov r0, #1 - bx lr -_02252972: - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end MOD20_02252968 - - thumb_func_start Poketch_InitApp -Poketch_InitApp: ; 0x02252978 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02252440 - str r5, [r0, #0x3c] - str r4, [r0, #0x40] - mov r1, #0 - str r1, [r0, #0x44] - pop {r3, r4, r5, pc} - thumb_func_end Poketch_InitApp - - thumb_func_start MOD20_0225298C -MOD20_0225298C: ; 0x0225298C - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #2] - cmp r0, #1 - beq _0225299A - bl GF_AssertFail -_0225299A: - mov r0, #2 - strb r0, [r4, #2] - pop {r4, pc} - thumb_func_end MOD20_0225298C - - thumb_func_start MOD20_022529A0 -MOD20_022529A0: ; 0x022529A0 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #2] - cmp r0, #3 - beq _022529AE - bl GF_AssertFail -_022529AE: - mov r0, #0 - strb r0, [r4, #2] - pop {r4, pc} - thumb_func_end MOD20_022529A0 - - thumb_func_start MOD20_022529B4 -MOD20_022529B4: ; 0x022529B4 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02252440 - str r5, [r0, #0x44] - str r4, [r0, #0x48] - pop {r3, r4, r5, pc} - thumb_func_end MOD20_022529B4 - - thumb_func_start MOD20_022529C4 -MOD20_022529C4: ; 0x022529C4 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r0, #7 - str r0, [sp] - ldr r0, _02252A00 ; =MOD20_022544C4 - ldr r2, _02252A04 ; =MOD20_02252A24 - mov r1, #2 - add r3, r4, #0 - bl MOD20_02254130 - str r0, [r4, #0x28] - cmp r0, #0 - beq _022529F8 - mov r1, #0 - add r2, r1, #0 - mov r3, #7 - bl MOD20_022542AC - mov r0, #0 - mvn r0, r0 - str r0, [r4, #0x2c] - str r0, [r4, #0x30] - add sp, #4 - mov r0, #1 - pop {r3, r4, pc} -_022529F8: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - nop -_02252A00: .word MOD20_022544C4 -_02252A04: .word MOD20_02252A24 - thumb_func_end MOD20_022529C4 - - thumb_func_start MOD20_02252A08 -MOD20_02252A08: ; 0x02252A08 - ldr r3, _02252A10 ; =MOD20_02254198 - ldr r0, [r0, #0x28] - bx r3 - nop -_02252A10: .word MOD20_02254198 - thumb_func_end MOD20_02252A08 - - thumb_func_start MOD20_02252A14 -MOD20_02252A14: ; 0x02252A14 - ldr r3, _02252A20 ; =MOD20_022541B4 - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r0, #0x28] - bx r3 - nop -_02252A20: .word MOD20_022541B4 - thumb_func_end MOD20_02252A14 - - thumb_func_start MOD20_02252A24 -MOD20_02252A24: ; 0x02252A24 - push {r3, r4, r5, r6, r7, lr} - add r5, r3, #0 - add r4, r0, #0 - add r0, r5, #0 - add r6, r1, #0 - add r7, r2, #0 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252A4C - cmp r7, #0 - beq _02252A46 - cmp r7, #1 - bne _02252A50 - mov r0, #1 - strb r0, [r5, #3] - b _02252A50 -_02252A46: - mov r0, #0 - strb r0, [r5, #3] - b _02252A50 -_02252A4C: - mov r0, #0 - strb r0, [r5, #3] -_02252A50: - cmp r4, #1 - bne _02252A6A - add r0, r5, #0 - bl MOD20_02252C08 - cmp r0, #0 - beq _02252AEA - cmp r7, #1 - bne _02252AEA - ldr r0, _02252AEC ; =0x0000066E - bl PlaySE - pop {r3, r4, r5, r6, r7, pc} -_02252A6A: - mov r4, #0 - mvn r4, r4 - cmp r7, #0 - beq _02252A78 - cmp r7, #1 - beq _02252A7C - b _02252A94 -_02252A78: - mov r4, #8 - b _02252A94 -_02252A7C: - add r0, r5, #0 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252A8C - ldrb r0, [r5, #6] - cmp r0, #0 - beq _02252A92 -_02252A8C: - mov r4, #6 - mov r6, #0 - b _02252A94 -_02252A92: - mov r4, #7 -_02252A94: - mov r0, #0 - ldr r1, [r5, #0x2c] - mvn r0, r0 - cmp r1, r0 - beq _02252AA4 - add r0, r4, #0 - add r4, r1, #0 - str r0, [r5, #0x2c] -_02252AA4: - mov r0, #0 - mvn r0, r0 - cmp r4, r0 - beq _02252AC0 - ldr r0, [r5, #0x1c] - add r1, r4, #0 - bl MOD20_02252AF0 - cmp r0, #0 - beq _02252AC0 - sub r0, r4, #6 - cmp r0, #1 - bhi _02252AC0 - str r4, [r5, #0x30] -_02252AC0: - cmp r6, #2 - beq _02252AE0 - cmp r6, #3 - beq _02252AD6 - cmp r6, #5 - bne _02252AE8 - ldr r0, [r5, #0x28] - mov r1, #0 - bl MOD20_022542CC - b _02252AE8 -_02252AD6: - ldr r0, [r5, #0x30] - cmp r0, #6 - bne _02252AE8 - mov r6, #0 - b _02252AE8 -_02252AE0: - ldr r0, [r5, #0x30] - cmp r0, #7 - bne _02252AE8 - mov r6, #3 -_02252AE8: - str r6, [r5, #8] -_02252AEA: - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02252AEC: .word 0x0000066E - thumb_func_end MOD20_02252A24 - - thumb_func_start MOD20_02252AF0 -MOD20_02252AF0: ; 0x02252AF0 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r4, #0 -_02252AF8: - add r0, r5, #0 - add r1, r6, #0 - bl MOD20_02252EA4 - cmp r0, #0 - bne _02252B08 - mov r0, #0 - pop {r4, r5, r6, pc} -_02252B08: - add r4, r4, #1 - cmp r4, #3 - blo _02252AF8 - add r0, r5, #0 - add r1, r6, #0 - bl MOD20_02252E80 - mov r0, #1 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD20_02252AF0 - - thumb_func_start MOD20_02252B1C -MOD20_02252B1C: ; 0x02252B1C - push {r3, lr} - bl MOD20_02252440 - ldr r0, [r0, #0x1c] - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD20_02252B1C - - thumb_func_start MOD20_02252B28 -MOD20_02252B28: ; 0x02252B28 - push {r4, lr} - add r4, r0, #0 - bl MOD20_02252440 - ldrb r1, [r0, #5] - cmp r1, #0 - bne _02252B46 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252B46 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl PlaySE -_02252B46: - pop {r4, pc} - thumb_func_end MOD20_02252B28 - - thumb_func_start MOD20_02252B48 -MOD20_02252B48: ; 0x02252B48 - push {r4, lr} - add r4, r0, #0 - bl MOD20_02252440 - ldrb r1, [r0, #5] - cmp r1, #0 - bne _02252B66 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252B66 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02005578 -_02252B66: - pop {r4, pc} - thumb_func_end MOD20_02252B48 - - thumb_func_start MOD20_02252B68 -MOD20_02252B68: ; 0x02252B68 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02252440 - ldrb r1, [r0, #5] - cmp r1, #0 - bne _02252BB4 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252BB4 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_02020AB0 - cmp r0, #0 - beq _02252BB4 - ldr r0, [r5] - sub r0, #0x10 - cmp r0, #0xbf - bhs _02252B98 - mov r1, #1 - b _02252B9A -_02252B98: - mov r1, #0 -_02252B9A: - ldr r0, [r4] - sub r0, #0x10 - cmp r0, #0x9f - bhs _02252BA6 - mov r0, #1 - b _02252BA8 -_02252BA6: - mov r0, #0 -_02252BA8: - tst r0, r1 - beq _02252BB0 - mov r0, #1 - pop {r3, r4, r5, pc} -_02252BB0: - mov r0, #0 - pop {r3, r4, r5, pc} -_02252BB4: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252B68 - - thumb_func_start MOD20_02252BB8 -MOD20_02252BB8: ; 0x02252BB8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02252440 - ldrb r1, [r0, #5] - cmp r1, #0 - bne _02252C04 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252C04 - add r0, r5, #0 - add r1, r4, #0 - bl FUN_02020ACC - cmp r0, #0 - beq _02252C04 - ldr r0, [r5] - sub r0, #0x10 - cmp r0, #0xbf - bhs _02252BE8 - mov r1, #1 - b _02252BEA -_02252BE8: - mov r1, #0 -_02252BEA: - ldr r0, [r4] - sub r0, #0x10 - cmp r0, #0x9f - bhs _02252BF6 - mov r0, #1 - b _02252BF8 -_02252BF6: - mov r0, #0 -_02252BF8: - tst r0, r1 - beq _02252C00 - mov r0, #1 - pop {r3, r4, r5, pc} -_02252C00: - mov r0, #0 - pop {r3, r4, r5, pc} -_02252C04: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252BB8 - - thumb_func_start MOD20_02252C08 -MOD20_02252C08: ; 0x02252C08 - ldr r3, _02252C10 ; =FUN_0204646C - ldr r0, [r0, #0x5c] - bx r3 - nop -_02252C10: .word FUN_0204646C - thumb_func_end MOD20_02252C08 - - thumb_func_start MOD20_02252C14 -MOD20_02252C14: ; 0x02252C14 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02252C08 - cmp r0, #0 - bne _02252C2E - ldrb r0, [r5, #5] - cmp r0, #0 - bne _02252C2E - add r0, r4, #0 - bl MOD20_022541B4 -_02252C2E: - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252C14 - - thumb_func_start MOD20_02252C30 -MOD20_02252C30: ; 0x02252C30 - ldrb r0, [r0, #4] - bx lr - thumb_func_end MOD20_02252C30 - - thumb_func_start MOD20_02252C34 -MOD20_02252C34: ; 0x02252C34 - ldrb r0, [r0, #7] - bx lr - thumb_func_end MOD20_02252C34 - - thumb_func_start MOD20_02252C38 -MOD20_02252C38: ; 0x02252C38 - ldr r0, [r0, #0x5c] - bx lr - thumb_func_end MOD20_02252C38 - - thumb_func_start MOD20_02252C3C -MOD20_02252C3C: ; 0x02252C3C - ldr r0, [r0, #0x58] - bx lr - thumb_func_end MOD20_02252C3C - - thumb_func_start MOD20_02252C40 -MOD20_02252C40: ; 0x02252C40 - ldr r0, [r0, #0x54] - bx lr - thumb_func_end MOD20_02252C40 - - thumb_func_start MOD20_02252C44 -MOD20_02252C44: ; 0x02252C44 - push {r3, lr} - ldr r0, [r0, #0x54] - bl Sav2_PlayerData_GetProfileAddr - bl PlayerProfile_GetTrainerGender - cmp r0, #1 - beq _02252C58 - mov r0, #1 - pop {r3, pc} -_02252C58: - mov r0, #0 - pop {r3, pc} - thumb_func_end MOD20_02252C44 - - thumb_func_start MOD20_02252C5C -MOD20_02252C5C: ; 0x02252C5C - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - mov r1, #0xea - add r5, r0, #0 - mov r0, #7 - lsl r1, r1, #2 - add r7, r2, #0 - str r3, [sp] - bl AllocFromHeap - str r0, [r5] - add r4, r0, #0 - beq _02252D0A - mov r0, #0x15 - lsl r0, r0, #4 - str r7, [r4, r0] - ldr r0, [r4, r0] - bl NNS_G2dResetOamManagerBuffer - mov r0, #0x15 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl MOD20_02253BA4 - mov r1, #0x55 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - cmp r0, #0 - bne _02252CA6 - ldr r0, [r5] - bl FreeToHeap - mov r0, #0 - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} -_02252CA6: - mov r0, #7 - str r6, [r4] - bl BgConfig_Alloc - mov r1, #6 - lsl r1, r1, #6 - str r0, [r4, r1] - ldr r0, [sp] - add r1, r1, #4 - str r0, [r4, r1] - add r0, r4, #0 - bl MOD20_02252D44 - mov r1, #0x57 - lsl r1, r1, #2 - add r0, r4, r1 - sub r1, #8 - ldr r1, [r4, r1] - bl MOD20_02253428 - ldr r0, [r5] - mov r1, #8 - add r0, r0, #4 - bl MOD20_022536F4 - ldr r0, [r5] - mov r1, #0x88 - add r0, #0x2c - bl MOD20_02252E5C - ldr r0, [r5] - mov r1, #0x8c - add r0, #0x84 - bl MOD20_02252E5C - ldr r0, [r5] - mov r1, #0x90 - add r0, #0xdc - bl MOD20_02252E5C - ldr r0, _02252D10 ; =MOD20_02252D14 - add r1, r4, #0 - mov r2, #0 - bl FUN_0200CA98 - mov r1, #0x56 - lsl r1, r1, #2 - str r0, [r4, r1] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02252D0A: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02252D10: .word MOD20_02252D14 - thumb_func_end MOD20_02252C5C - - thumb_func_start MOD20_02252D14 -MOD20_02252D14: ; 0x02252D14 - mov r0, #0x55 - lsl r0, r0, #2 - ldr r3, _02252D20 ; =MOD20_02253C78 - ldr r0, [r1, r0] - bx r3 - nop -_02252D20: .word MOD20_02253C78 - thumb_func_end MOD20_02252D14 - - thumb_func_start MOD20_02252D24 -MOD20_02252D24: ; 0x02252D24 - push {r3, lr} - bl MOD20_02252B1C - mov r1, #0x55 - lsl r1, r1, #2 - ldr r0, [r0, r1] - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD20_02252D24 - - thumb_func_start MOD20_02252D34 -MOD20_02252D34: ; 0x02252D34 - push {r3, lr} - bl MOD20_02252B1C - mov r1, #6 - lsl r1, r1, #6 - ldr r0, [r0, r1] - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD20_02252D34 - - thumb_func_start MOD20_02252D44 -MOD20_02252D44: ; 0x02252D44 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0xc - mov r1, #0 - add r2, sp, #0 - mov r3, #7 - bl GfGfxLoader_GetPlttData - add r4, r0, #0 - beq _02252D7A - ldr r0, [sp] - mov r2, #0x62 - lsl r2, r2, #2 - add r1, r5, r2 - ldr r0, [r0, #0xc] - add r2, #0x78 - bl MIi_CpuCopy32 - mov r1, #0x62 - lsl r1, r1, #2 - add r0, r5, r1 - add r1, #0x78 - bl DC_FlushRange - add r0, r4, #0 - bl FreeToHeap -_02252D7A: - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252D44 - - thumb_func_start MOD20_02252D7C -MOD20_02252D7C: ; 0x02252D7C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - bl MOD20_02252B1C - add r4, r0, #0 - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD20_02252C3C - bl Sav2_Poketch_GetScreenTint - mov r1, #0x62 - lsl r1, r1, #2 - add r5, r4, r1 - lsl r4, r0, #6 - add r0, r5, r4 - lsl r1, r6, #5 - mov r2, #0x20 - bl GXS_LoadBGPltt - add r0, r5, r4 - add r1, r7, #0 - mov r2, #0x20 - bl GXS_LoadOBJPltt - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_02252D7C - - thumb_func_start MOD20_02252DB4 -MOD20_02252DB4: ; 0x02252DB4 - push {r3, r4, r5, lr} - bl MOD20_02252B1C - add r4, r0, #0 - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD20_02252C3C - bl Sav2_Poketch_GetScreenTint - mov r1, #0x62 - lsl r0, r0, #5 - lsl r1, r1, #2 - add r0, #0x10 - add r4, r4, r1 - lsl r5, r0, #1 - add r0, r4, r5 - mov r1, #0 - mov r2, #0x20 - bl GXS_LoadBGPltt - add r0, r4, r5 - mov r1, #0 - mov r2, #0x20 - bl GXS_LoadOBJPltt - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252DB4 - - thumb_func_start MOD20_02252DEC -MOD20_02252DEC: ; 0x02252DEC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl MOD20_02252B1C - add r4, r0, #0 - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD20_02252C3C - bl Sav2_Poketch_GetScreenTint - mov r1, #0x62 - lsl r1, r1, #2 - add r1, r4, r1 - lsl r0, r0, #6 - add r0, r1, r0 - add r1, r5, #0 - mov r2, #0x20 - bl MIi_CpuCopy16 - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02252DEC - - thumb_func_start MOD20_02252E18 -MOD20_02252E18: ; 0x02252E18 - push {r4, lr} - add r4, r0, #0 - beq _02252E58 - mov r0, #0x57 - lsl r0, r0, #2 - add r0, r4, r0 - bl MOD20_022535A4 - mov r0, #0x55 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _02252E36 - bl MOD20_02253C4C -_02252E36: - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - cmp r0, #0 - beq _02252E44 - bl FreeToHeap -_02252E44: - mov r0, #0x56 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _02252E52 - bl FUN_0200CAB4 -_02252E52: - add r0, r4, #0 - bl FreeToHeap -_02252E58: - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_02252E18 - - thumb_func_start MOD20_02252E5C -MOD20_02252E5C: ; 0x02252E5C - push {r4, r5} - mov r2, #0xf - ldr r5, _02252E7C ; =MOD20_022545EC - mov r4, #0 - lsl r2, r2, #0xc -_02252E66: - ldrh r3, [r5] - add r4, r4, #1 - add r5, r5, #2 - add r3, r1, r3 - orr r3, r2 - strh r3, [r0] - add r0, r0, #2 - cmp r4, #0x2c - blo _02252E66 - pop {r4, r5} - bx lr - .align 2, 0 -_02252E7C: .word MOD20_022545EC - thumb_func_end MOD20_02252E5C - - thumb_func_start MOD20_02252E80 -MOD20_02252E80: ; 0x02252E80 - push {lr} - sub sp, #0xc - add r2, r0, #0 - add r0, r2, #4 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #7 - str r0, [sp, #8] - ldr r0, _02252EA0 ; =MOD20_02254644 - ldr r3, [r2] - bl MOD20_022537E0 - add sp, #0xc - pop {pc} - nop -_02252EA0: .word MOD20_02254644 - thumb_func_end MOD20_02252E80 - - thumb_func_start MOD20_02252EA4 -MOD20_02252EA4: ; 0x02252EA4 - ldr r3, _02252EAC ; =MOD20_02253794 - add r0, r0, #4 - bx r3 - nop -_02252EAC: .word MOD20_02253794 - thumb_func_end MOD20_02252EA4 - - thumb_func_start MOD20_02252EB0 -MOD20_02252EB0: ; 0x02252EB0 - ldr r3, _02252EB8 ; =MOD20_022537B8 - add r0, r0, #4 - bx r3 - nop -_02252EB8: .word MOD20_022537B8 - thumb_func_end MOD20_02252EB0 - - thumb_func_start MOD20_02252EBC -MOD20_02252EBC: ; 0x02252EBC - push {r4, lr} - add r4, r0, #0 - bl MOD20_022538A0 - add r0, r0, #4 - add r1, r4, #0 - bl MOD20_02253888 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_02252EBC - - thumb_func_start MOD20_02252ED0 -MOD20_02252ED0: ; 0x02252ED0 - push {r3, r4, r5, lr} - sub sp, #0x10 - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - mov r0, #0 - bl GXS_SetGraphicsMode - mov r0, #0x80 - bl GX_SetBankForSubBG - mov r0, #1 - lsl r0, r0, #8 - bl GX_SetBankForSubOBJ - ldr r2, _02252FD8 ; =0x04001000 - ldr r0, _02252FDC ; =0xFFCFFFEF - ldr r1, [r2] - and r1, r0 - mov r0, #0x10 - orr r0, r1 - str r0, [r2] - bl GX_DisableEngineBLayers - mov r0, #0x10 - mov r1, #1 - bl GX_EngineBToggleLayers - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - ldr r2, _02252FE0 ; =MOD20_022545B4 - mov r1, #4 - mov r3, #0 - bl InitBgFromTemplate - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - ldr r2, _02252FE4 ; =MOD20_022545D0 - mov r1, #5 - mov r3, #0 - bl InitBgFromTemplate - mov r0, #0x40 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #7 - str r0, [sp, #0xc] - mov r0, #0xc - lsl r2, r0, #5 - ldr r2, [r4, r2] - mov r1, #0xe - mov r3, #4 - bl GfGfxLoader_LoadCharData - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #7 - str r0, [sp, #0xc] - mov r0, #0xc - lsl r2, r0, #5 - ldr r2, [r4, r2] - mov r1, #0xf - mov r3, #4 - bl GfGfxLoader_LoadScrnData - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD20_02252C44 - add r3, r0, #0 - mov r0, #0x1e - lsl r0, r0, #4 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #7 - str r0, [sp, #8] - mov r0, #0xc - mov r1, #0xd - mov r2, #4 - lsl r3, r3, #5 - bl GfGfxLoader_GXLoadPalWithSrcOffset - mov r3, #0 - str r3, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r1, #0x18 - str r1, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #5 - mov r2, #0xd8 - bl FillBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - ldr r0, _02252FD8 ; =0x04001000 - ldr r1, _02252FE8 ; =0xFFFFE0FF - ldr r2, [r0] - and r2, r1 - mov r1, #0x13 - lsl r1, r1, #8 - orr r1, r2 - str r1, [r0] - ldr r2, [r0] - ldr r1, _02252FEC ; =0xFFFF1FFF - and r1, r2 - str r1, [r0] - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0x10 - pop {r3, r4, r5, pc} - nop -_02252FD8: .word 0x04001000 -_02252FDC: .word 0xFFCFFFEF -_02252FE0: .word MOD20_022545B4 -_02252FE4: .word MOD20_022545D0 -_02252FE8: .word 0xFFFFE0FF -_02252FEC: .word 0xFFFF1FFF - thumb_func_end MOD20_02252ED0 - - thumb_func_start MOD20_02252FF0 -MOD20_02252FF0: ; 0x02252FF0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r1, [sp, #0x10] - add r0, r1, #0 - bl MOD20_022538A8 - add r4, r0, #0 - ldr r0, [sp, #0x10] - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [sp, #0x10] - bl MOD20_022538AC - cmp r0, #0 - beq _0225301C - cmp r0, #1 - beq _02253028 - cmp r0, #2 - beq _022530F6 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_0225301C: - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - ldr r0, [sp, #0x10] - bl MOD20_022538B0 -_02253028: - ldrh r0, [r4] - add r0, r0, #1 - strh r0, [r4] - ldrh r0, [r4] - cmp r0, #0 - beq _022530FC - mov r0, #0 - strh r0, [r4] - ldrh r0, [r4, #2] - add r0, #0xc - strh r0, [r4, #2] - ldrh r0, [r4, #2] - cmp r0, #0x28 - bls _02253048 - mov r0, #0x28 - strh r0, [r4, #2] -_02253048: - ldrh r1, [r4, #2] - lsr r3, r1, #0x1f - lsl r2, r1, #0x1e - lsr r0, r1, #2 - sub r2, r2, r3 - mov r1, #0x1e - ror r2, r1 - mov r1, #0xc - sub r6, r1, r0 - lsl r0, r0, #1 - str r0, [sp, #0x14] - lsl r0, r6, #0x18 - ldr r1, [sp, #0x14] - add r7, r3, r2 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #0x18 - lsl r1, r1, #0x18 - str r0, [sp, #4] - lsr r1, r1, #0x18 - str r1, [sp, #8] - mov r1, #0xf - str r1, [sp, #0xc] - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #5 - mov r2, #0x40 - mov r3, #2 - bl FillBgTilemapRect - cmp r7, #0 - beq _022530DA - sub r0, r6, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r1, #0x18 - add r2, r7, #0 - add r2, #0xd8 - lsl r2, r2, #0x10 - str r1, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r5, r0] - mov r1, #5 - lsr r2, r2, #0x10 - mov r3, #2 - bl FillBgTilemapRect - ldr r0, [sp, #0x14] - mov r2, #0xd8 - add r0, r6, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r1, #0x18 - sub r2, r2, r7 - lsl r2, r2, #0x10 - str r1, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r5, r0] - mov r1, #5 - lsr r2, r2, #0x10 - mov r3, #2 - bl FillBgTilemapRect -_022530DA: - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - ldrh r0, [r4, #2] - cmp r0, #0x28 - bne _022530FC - ldr r0, [sp, #0x10] - bl MOD20_022538B0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_022530F6: - ldr r0, [sp, #0x10] - bl MOD20_02252EBC -_022530FC: - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_02252FF0 - - thumb_func_start MOD20_02253100 -MOD20_02253100: ; 0x02253100 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r1, [sp, #0x10] - add r0, r1, #0 - bl MOD20_022538A8 - add r4, r0, #0 - ldr r0, [sp, #0x10] - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [sp, #0x10] - bl MOD20_022538AC - cmp r0, #0 - beq _0225312C - cmp r0, #1 - beq _02253138 - cmp r0, #2 - beq _0225321E - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_0225312C: - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - ldr r0, [sp, #0x10] - bl MOD20_022538B0 -_02253138: - ldrh r0, [r4] - add r0, r0, #1 - strh r0, [r4] - ldrh r0, [r4] - cmp r0, #0 - beq _02253224 - mov r0, #0 - strh r0, [r4] - ldrh r0, [r4, #2] - add r0, #8 - strh r0, [r4, #2] - ldrh r0, [r4, #2] - cmp r0, #0x28 - bls _02253158 - mov r0, #0x28 - strh r0, [r4, #2] -_02253158: - ldrh r0, [r4, #2] - mov r3, #2 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1e - lsr r7, r0, #2 - sub r1, r1, r2 - mov r0, #0x1e - ror r1, r0 - add r6, r2, r1 - mov r0, #0x16 - sub r0, r0, r7 - str r0, [sp, #0x14] - lsl r1, r7, #0x18 - str r3, [sp] - mov r0, #0x18 - str r0, [sp, #4] - lsr r1, r1, #0x18 - str r1, [sp, #8] - mov r1, #0xf - str r1, [sp, #0xc] - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #5 - mov r2, #0xd8 - bl FillBgTilemapRect - ldr r0, [sp, #0x14] - lsl r1, r7, #0x18 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - lsr r1, r1, #0x18 - str r1, [sp, #8] - mov r1, #0xf - str r1, [sp, #0xc] - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #5 - mov r2, #0xd8 - mov r3, #2 - bl FillBgTilemapRect - cmp r6, #0 - beq _02253202 - mov r0, #0 - str r0, [sp] - mov r1, #0x18 - str r1, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - sub r3, r6, #1 - mov r2, #0xdb - sub r2, r2, r3 - lsl r2, r2, #0x10 - ldr r0, [r5, r0] - mov r1, #5 - lsr r2, r2, #0x10 - mov r3, #2 - bl FillBgTilemapRect - ldr r0, [sp, #0x14] - add r6, #0xd4 - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r1, #0x18 - lsl r2, r6, #0x10 - str r1, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r5, r0] - mov r1, #5 - lsr r2, r2, #0x10 - mov r3, #2 - bl FillBgTilemapRect -_02253202: - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r5, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - ldrh r0, [r4, #2] - cmp r0, #0x28 - bne _02253224 - ldr r0, [sp, #0x10] - bl MOD20_022538B0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_0225321E: - ldr r0, [sp, #0x10] - bl MOD20_02252EBC -_02253224: - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_02253100 - - thumb_func_start MOD20_02253228 -MOD20_02253228: ; 0x02253228 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A8 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - add r0, r5, #0 - bl MOD20_022538AC - add r2, r0, #0 - cmp r2, #4 - bhs _02253280 - mov r3, #2 - str r3, [sp] - mov r1, #0x18 - mov r6, #0xd7 - sub r2, r6, r2 - lsl r2, r2, #0x10 - str r1, [sp, #4] - mov r0, #0x14 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #5 - lsr r2, r2, #0x10 - bl FillBgTilemapRect - add r0, r6, #0 - add r0, #0xa9 - ldr r0, [r4, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - add r0, r5, #0 - bl MOD20_022538B0 - add sp, #0x10 - pop {r4, r5, r6, pc} -_02253280: - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0x10 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD20_02253228 - - thumb_func_start MOD20_0225328C -MOD20_0225328C: ; 0x0225328C - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A8 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - add r0, r5, #0 - bl MOD20_022538AC - add r2, r0, #0 - cmp r2, #4 - bhs _022532E4 - mov r3, #2 - str r3, [sp] - mov r1, #0x18 - mov r6, #0xdb - sub r2, r6, r2 - lsl r2, r2, #0x10 - str r1, [sp, #4] - mov r0, #0x14 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #5 - lsr r2, r2, #0x10 - bl FillBgTilemapRect - add r0, r6, #0 - add r0, #0xa5 - ldr r0, [r4, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - add r0, r5, #0 - bl MOD20_022538B0 - add sp, #0x10 - pop {r4, r5, r6, pc} -_022532E4: - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0x10 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD20_0225328C - - thumb_func_start MOD20_022532F0 -MOD20_022532F0: ; 0x022532F0 - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - mov r0, #0xb - add r2, r4, #0 - str r0, [sp] - mov r1, #4 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - add r2, #0x84 - mov r3, #0x1b - bl LoadRectToBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl BgCommitTilemapBufferToVram - ldr r0, _02253334 ; =0x00000671 - bl PlaySE - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 -_02253334: .word 0x00000671 - thumb_func_end MOD20_022532F0 - - thumb_func_start MOD20_02253338 -MOD20_02253338: ; 0x02253338 - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - mov r0, #0xb - add r2, r4, #0 - str r0, [sp] - mov r1, #4 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - add r2, #0x2c - mov r3, #0x1b - bl LoadRectToBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl BgCommitTilemapBufferToVram - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_02253338 - - thumb_func_start MOD20_02253378 -MOD20_02253378: ; 0x02253378 - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - mov r0, #0xb - add r2, r4, #0 - str r0, [sp] - mov r1, #4 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - add r2, #0xdc - mov r3, #0x1b - bl LoadRectToBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl BgCommitTilemapBufferToVram - ldr r0, _022533BC ; =0x0000066F - bl PlaySE - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 -_022533BC: .word 0x0000066F - thumb_func_end MOD20_02253378 - - thumb_func_start MOD20_022533C0 -MOD20_022533C0: ; 0x022533C0 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - mov r1, #0x57 - add r4, r0, #0 - lsl r1, r1, #2 - add r1, r4, r1 - bl MOD20_02253430 - mov r0, #0x57 - lsl r0, r0, #2 - ldr r1, [r4] - add r0, r4, r0 - bl MOD20_0225354C - add r0, r5, #0 - bl MOD20_02252EBC - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_022533C0 - - thumb_func_start MOD20_022533EC -MOD20_022533EC: ; 0x022533EC - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - add r1, r0, #0 - mov r0, #0x57 - lsl r0, r0, #2 - add r0, r1, r0 - ldr r1, [r1] - bl MOD20_0225354C - add r0, r4, #0 - bl MOD20_02252EBC - pop {r4, pc} - thumb_func_end MOD20_022533EC - - thumb_func_start MOD20_0225340C -MOD20_0225340C: ; 0x0225340C - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - mov r1, #0x57 - lsl r1, r1, #2 - add r0, r0, r1 - bl MOD20_022535A4 - add r0, r4, #0 - bl MOD20_02252EBC - pop {r4, pc} - thumb_func_end MOD20_0225340C - - thumb_func_start MOD20_02253428 -MOD20_02253428: ; 0x02253428 - mov r2, #0 - str r2, [r0] - str r1, [r0, #4] - bx lr - thumb_func_end MOD20_02253428 - - thumb_func_start MOD20_02253430 -MOD20_02253430: ; 0x02253430 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r1, #0 - mov r0, #7 - str r0, [sp] - add r0, r4, #0 - add r0, #8 - mov r1, #0xc - mov r2, #3 - mov r3, #4 - bl MOD20_02253FBC - cmp r0, #0 - beq _022534CC - mov r3, #0 - str r3, [sp] - mov r2, #1 - str r2, [sp, #4] - mov r0, #7 - str r0, [sp, #8] - mov r0, #0xc - mov r1, #2 - bl GfGfxLoader_LoadWholePalette - mov r0, #0x60 - str r0, [sp] - mov r0, #7 - mov r1, #0 - str r0, [sp, #4] - mov r0, #0xc - mov r2, #5 - add r3, r1, #0 - bl GfGfxLoader_GXLoadPal - add r0, r5, #0 - mov r1, #0xf - bl MOD20_022534D4 - add r2, r4, #0 - ldr r0, [r4, #4] - ldr r1, _022534D0 ; =MOD20_022545A4 - add r2, #8 - bl MOD20_02253E74 - str r0, [r4, #0x1c] - cmp r0, #0 - beq _022534CC - add r2, r4, #0 - ldr r0, [r4, #4] - ldr r1, _022534D0 ; =MOD20_022545A4 - add r2, #8 - bl MOD20_02253E74 - str r0, [r4, #0x20] - cmp r0, #0 - bne _022534AE - ldr r0, [r4, #4] - ldr r1, [r4, #0x1c] - bl MOD20_02253F14 - add sp, #0xc - pop {r4, r5, pc} -_022534AE: - mov r1, #1 - lsl r1, r1, #0x10 - mov r2, #0 - bl MOD20_02253F54 - ldr r0, [r4, #0x1c] - mov r1, #0xf - bl MOD20_02253F9C - ldr r0, [r4, #0x20] - mov r1, #0xf - bl MOD20_02253F9C - mov r0, #1 - str r0, [r4] -_022534CC: - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 -_022534D0: .word MOD20_022545A4 - thumb_func_end MOD20_02253430 - - thumb_func_start MOD20_022534D4 -MOD20_022534D4: ; 0x022534D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r4, r1, #0 - bl MOD20_02252C3C - bl Sav2_Poketch_GetScreenTint - mov r1, #0x62 - lsl r0, r0, #5 - lsl r1, r1, #2 - add r0, r0, #1 - add r2, r5, r1 - lsl r0, r0, #1 - add r0, r2, r0 - add r1, #0x5a - mov r2, #2 - bl GXS_LoadBGPltt - mov r0, #0xe2 - lsl r0, r0, #2 - add r0, r5, r0 - bl MOD20_02252DEC - ldr r1, _02253548 ; =0x0000038A - add r0, r1, #6 - ldrh r2, [r5, r1] - ldrh r0, [r5, r0] - strh r0, [r5, r1] - add r0, r1, #6 - strh r2, [r5, r0] - add r0, r1, #0 - add r2, r1, #0 - add r0, #0xe - add r2, #0x1c - ldrh r3, [r5, r2] - add r2, r1, #0 - ldrh r0, [r5, r0] - add r2, #0xe - strh r3, [r5, r2] - add r2, r1, #0 - add r2, #0x1c - strh r0, [r5, r2] - sub r0, r1, #2 - add r0, r5, r0 - mov r1, #0x20 - bl DC_FlushRange - mov r0, #0xe2 - lsl r0, r0, #2 - add r0, r5, r0 - lsl r1, r4, #5 - mov r2, #0x20 - bl GXS_LoadOBJPltt - pop {r3, r4, r5, pc} - .align 2, 0 -_02253548: .word 0x0000038A - thumb_func_end MOD20_022534D4 - - thumb_func_start MOD20_0225354C -MOD20_0225354C: ; 0x0225354C - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _02253596 - ldr r0, [r1] - ldr r2, _02253598 ; =0x04000280 - mov r3, #0 - add r0, r0, #1 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_0225356E: - ldrh r1, [r2] - tst r1, r0 - bne _0225356E - ldr r0, _0225359C ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_0225357E: - ldrh r2, [r3] - tst r2, r0 - bne _0225357E - ldr r0, _022535A0 ; =0x040002A8 - ldr r5, [r0] - ldr r0, [r4, #0x1c] - bl MOD20_02253F28 - ldr r0, [r4, #0x20] - add r1, r5, #0 - bl MOD20_02253F28 -_02253596: - pop {r3, r4, r5, pc} - .align 2, 0 -_02253598: .word 0x04000280 -_0225359C: .word 0x040002A0 -_022535A0: .word 0x040002A8 - thumb_func_end MOD20_0225354C - - thumb_func_start MOD20_022535A4 -MOD20_022535A4: ; 0x022535A4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _022535CA - ldr r0, [r4, #4] - ldr r1, [r4, #0x1c] - bl MOD20_02253F14 - ldr r0, [r4, #4] - ldr r1, [r4, #0x20] - bl MOD20_02253F14 - add r0, r4, #0 - add r0, #8 - bl MOD20_02254014 - mov r0, #0 - str r0, [r4] -_022535CA: - pop {r4, pc} - thumb_func_end MOD20_022535A4 - - thumb_func_start MOD20_022535CC -MOD20_022535CC: ; 0x022535CC - push {r4, r5, r6, lr} - sub sp, #0x10 - add r6, r1, #0 - add r0, r6, #0 - bl MOD20_022538A0 - add r4, r0, #0 - add r0, r6, #0 - bl MOD20_022538A8 - add r0, r6, #0 - bl MOD20_022538AC - add r5, r0, #0 - cmp r5, #3 - bhi _0225365E - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022535F8: ; jump table - .short _02253600 - _022535F8 - 2 ; case 0 - .short _0225361C - _022535F8 - 2 ; case 1 - .short _0225361C - _022535F8 - 2 ; case 2 - .short _0225361C - _022535F8 - 2 ; case 3 -_02253600: - mov r0, #6 - str r0, [sp] - ldr r0, _02253664 ; =0x04001050 - mov r1, #2 - mov r2, #0x1c - mov r3, #0x1a - bl G2x_SetBlendAlpha_ - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl BgCommitTilemapBufferToVram -_0225361C: - mov r3, #2 - str r3, [sp] - mov r1, #0x18 - mov r2, #0xdb - sub r2, r2, r5 - lsl r2, r2, #0x10 - str r1, [sp, #4] - mov r0, #0x14 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #5 - lsr r2, r2, #0x10 - bl FillBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - cmp r5, #3 - bne _02253658 - add r0, r6, #0 - bl MOD20_02252EBC - add sp, #0x10 - pop {r4, r5, r6, pc} -_02253658: - add r0, r6, #0 - bl MOD20_022538B0 -_0225365E: - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_02253664: .word 0x04001050 - thumb_func_end MOD20_022535CC - - thumb_func_start MOD20_02253668 -MOD20_02253668: ; 0x02253668 - push {r3, r4, r5, lr} - sub sp, #0x10 - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - mov r3, #2 - add r4, r0, #0 - str r3, [sp] - mov r1, #0x18 - str r1, [sp, #4] - mov r0, #0x14 - str r0, [sp, #8] - mov r0, #0xf - str r0, [sp, #0xc] - lsl r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #5 - mov r2, #0x40 - bl FillBgTilemapRect - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl BgCommitTilemapBufferToVram - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #5 - bl BgCommitTilemapBufferToVram - mov r1, #0 - ldr r0, _022536C4 ; =0x04001050 - add r2, r1, #0 - mov r3, #0x1f - str r1, [sp] - bl G2x_SetBlendAlpha_ - add r0, r5, #0 - bl MOD20_02252EBC - add sp, #0x10 - pop {r3, r4, r5, pc} - nop -_022536C4: .word 0x04001050 - thumb_func_end MOD20_02253668 - - thumb_func_start MOD20_022536C8 -MOD20_022536C8: ; 0x022536C8 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #4 - bl FreeBgTilemapBuffer - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - mov r1, #5 - bl FreeBgTilemapBuffer - add r0, r5, #0 - bl MOD20_02252EBC - pop {r3, r4, r5, pc} - thumb_func_end MOD20_022536C8 - - thumb_func_start MOD20_022536F4 -MOD20_022536F4: ; 0x022536F4 - ldr r2, _02253710 ; =0x12345678 - str r1, [r0] - mov r3, #0 - str r2, [r0, #4] - cmp r1, #0 - bls _0225370C - sub r2, r3, #1 -_02253702: - add r3, r3, #1 - str r2, [r0, #8] - add r0, r0, #4 - cmp r3, r1 - blo _02253702 -_0225370C: - bx lr - nop -_02253710: .word 0x12345678 - thumb_func_end MOD20_022536F4 - - thumb_func_start MOD20_02253714 -MOD20_02253714: ; 0x02253714 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - ldr r1, [r5, #4] - ldr r0, _02253750 ; =0x12345678 - cmp r1, r0 - beq _02253726 - bl GF_AssertFail -_02253726: - ldr r6, [r5] - mov r2, #0 - cmp r6, #0 - bls _0225374A - add r3, r5, #0 - sub r0, r2, #1 -_02253732: - ldr r1, [r3, #8] - cmp r1, r0 - bne _02253742 - lsl r0, r2, #2 - add r0, r5, r0 - str r4, [r0, #8] - mov r0, #1 - pop {r4, r5, r6, pc} -_02253742: - add r2, r2, #1 - add r3, r3, #4 - cmp r2, r6 - blo _02253732 -_0225374A: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_02253750: .word 0x12345678 - thumb_func_end MOD20_02253714 - - thumb_func_start MOD20_02253754 -MOD20_02253754: ; 0x02253754 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - ldr r1, [r5, #4] - ldr r0, _02253790 ; =0x12345678 - cmp r1, r0 - beq _02253766 - bl GF_AssertFail -_02253766: - ldr r3, [r5] - mov r2, #0 - cmp r3, #0 - bls _0225378A - add r1, r5, #0 -_02253770: - ldr r0, [r1, #8] - cmp r4, r0 - bne _02253782 - mov r1, #0 - lsl r0, r2, #2 - mvn r1, r1 - add r0, r5, r0 - str r1, [r0, #8] - pop {r3, r4, r5, pc} -_02253782: - add r2, r2, #1 - add r1, r1, #4 - cmp r2, r3 - blo _02253770 -_0225378A: - bl GF_AssertFail - pop {r3, r4, r5, pc} - .align 2, 0 -_02253790: .word 0x12345678 - thumb_func_end MOD20_02253754 - - thumb_func_start MOD20_02253794 -MOD20_02253794: ; 0x02253794 - push {r3, r4} - ldr r4, [r0] - mov r3, #0 - cmp r4, #0 - bls _022537B2 -_0225379E: - ldr r2, [r0, #8] - cmp r1, r2 - bne _022537AA - mov r0, #0 - pop {r3, r4} - bx lr -_022537AA: - add r3, r3, #1 - add r0, r0, #4 - cmp r3, r4 - blo _0225379E -_022537B2: - mov r0, #1 - pop {r3, r4} - bx lr - thumb_func_end MOD20_02253794 - - thumb_func_start MOD20_022537B8 -MOD20_022537B8: ; 0x022537B8 - push {r3, r4} - ldr r4, [r0] - mov r3, #0 - cmp r4, #0 - bls _022537D8 - sub r1, r3, #1 -_022537C4: - ldr r2, [r0, #8] - cmp r2, r1 - beq _022537D0 - mov r0, #0 - pop {r3, r4} - bx lr -_022537D0: - add r3, r3, #1 - add r0, r0, #4 - cmp r3, r4 - blo _022537C4 -_022537D8: - mov r0, #1 - pop {r3, r4} - bx lr - .align 2, 0 - thumb_func_end MOD20_022537B8 - - thumb_func_start MOD20_022537E0 -MOD20_022537E0: ; 0x022537E0 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - str r2, [sp] - mov r0, #0 - add r5, r1, #0 - ldr r2, [r7] - sub r1, r0, #1 - str r3, [sp, #4] - cmp r2, r1 - beq _02253880 - add r3, r7, #0 - sub r1, r0, #1 -_022537FA: - ldr r2, [r3] - cmp r5, r2 - bne _02253876 - add r6, r0, #0 - add r0, r7, #0 - str r0, [sp, #8] - add r0, #8 - mov r1, #0xc - str r0, [sp, #8] - mul r6, r1 - ldr r1, [sp, #8] - ldr r0, [sp, #0x28] - ldr r1, [r1, r6] - add r1, #0x18 - bl AllocFromHeap - add r4, r0, #0 - beq _02253870 - ldr r0, [sp, #8] - ldr r0, [r0, r6] - cmp r0, #0 - beq _0225382C - add r0, r4, #0 - add r0, #0x18 - b _0225382E -_0225382C: - mov r0, #0 -_0225382E: - str r0, [r4, #0xc] - ldr r0, [sp, #0x20] - add r1, r5, #0 - bl MOD20_02253714 - cmp r0, #0 - beq _02253866 - ldr r0, [sp] - ldr r2, [sp, #0x24] - str r0, [r4, #8] - mov r0, #0 - str r0, [r4, #4] - str r5, [r4] - ldr r0, [sp, #4] - add r5, r7, #4 - str r0, [r4, #0x10] - ldr r0, [r5, r6] - add r1, r4, #0 - bl FUN_0200CA44 - str r0, [r4, #0x14] - cmp r0, #0 - beq _02253884 - ldr r2, [r5, r6] - add r1, r4, #0 - blx r2 - add sp, #0xc - pop {r4, r5, r6, r7, pc} -_02253866: - add r0, r4, #0 - bl FreeToHeap - add sp, #0xc - pop {r4, r5, r6, r7, pc} -_02253870: - bl GF_AssertFail - b _02253880 -_02253876: - add r3, #0xc - ldr r2, [r3] - add r0, r0, #1 - cmp r2, r1 - bne _022537FA -_02253880: - bl GF_AssertFail -_02253884: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end MOD20_022537E0 - - thumb_func_start MOD20_02253888 -MOD20_02253888: ; 0x02253888 - push {r4, lr} - add r4, r1, #0 - ldr r1, [r4] - bl MOD20_02253754 - ldr r0, [r4, #0x14] - bl FUN_0200CAB4 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD20_02253888 - - thumb_func_start MOD20_022538A0 -MOD20_022538A0: ; 0x022538A0 - ldr r0, [r0, #8] - bx lr - thumb_func_end MOD20_022538A0 - - thumb_func_start MOD20_022538A4 -MOD20_022538A4: ; 0x022538A4 - ldr r0, [r0, #0x10] - bx lr - thumb_func_end MOD20_022538A4 - - thumb_func_start MOD20_022538A8 -MOD20_022538A8: ; 0x022538A8 - ldr r0, [r0, #0xc] - bx lr - thumb_func_end MOD20_022538A8 - - thumb_func_start MOD20_022538AC -MOD20_022538AC: ; 0x022538AC - ldr r0, [r0, #4] - bx lr - thumb_func_end MOD20_022538AC - - thumb_func_start MOD20_022538B0 -MOD20_022538B0: ; 0x022538B0 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bx lr - thumb_func_end MOD20_022538B0 - - thumb_func_start MOD20_022538B8 -MOD20_022538B8: ; 0x022538B8 - str r1, [r0, #4] - bx lr - thumb_func_end MOD20_022538B8 - - thumb_func_start MOD20_022538BC -MOD20_022538BC: ; 0x022538BC - push {r3, r4, r5, r6} - mul r2, r3 - ldr r4, [sp, #0x18] - add r1, r1, r2 - lsl r6, r1, #1 - lsl r4, r4, #0xc - ldr r1, [sp, #0x10] - add r5, r4, #0 - orr r5, r1 - add r2, r0, r6 - strh r5, [r0, r6] - add r0, r1, #1 - orr r0, r4 - strh r0, [r2, #2] - ldr r0, [sp, #0x14] - lsl r3, r3, #1 - add r1, r1, r0 - add r0, r4, #0 - orr r0, r1 - strh r0, [r2, r3] - add r0, r1, #1 - add r1, r4, #0 - orr r1, r0 - add r0, r2, r3 - strh r1, [r0, #2] - pop {r3, r4, r5, r6} - bx lr - .align 2, 0 - thumb_func_end MOD20_022538BC - - thumb_func_start MOD20_022538F4 -MOD20_022538F4: ; 0x022538F4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #8 - mov r1, #0x20 - bl AllocFromHeap - add r7, r0, #0 - beq _02253960 - bl MOD20_02252DEC - mov r4, #0 - cmp r6, #0 - bls _0225395A -_02253910: - ldrh r3, [r5] - mov r0, #0x1f - lsl r0, r0, #0xa - and r0, r3 - asr r0, r0, #0xa - add r2, r0, #0 - mov r1, #0x72 - mov r0, #0x1f - mul r2, r1 - and r0, r3 - add r1, #0xb9 - mul r1, r0 - mov r0, #0x3e - lsl r0, r0, #4 - and r0, r3 - asr r3, r0, #5 - ldr r0, _02253964 ; =0x0000024B - mul r0, r3 - add r0, r1, r0 - mov r1, #0xfa - add r0, r2, r0 - lsl r1, r1, #2 - bl _u32_div_f - lsr r1, r0, #3 - cmp r1, #3 - bls _02253948 - mov r1, #3 -_02253948: - ldr r0, _02253968 ; =MOD20_0225470C - add r4, r4, #1 - ldrb r0, [r0, r1] - lsl r0, r0, #1 - ldrh r0, [r7, r0] - strh r0, [r5] - add r5, r5, #2 - cmp r4, r6 - blo _02253910 -_0225395A: - add r0, r7, #0 - bl FreeToHeap -_02253960: - pop {r3, r4, r5, r6, r7, pc} - nop -_02253964: .word 0x0000024B -_02253968: .word MOD20_0225470C - thumb_func_end MOD20_022538F4 - - thumb_func_start MOD20_0225396C -MOD20_0225396C: ; 0x0225396C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - mov r0, #8 - mov r1, #0x20 - bl AllocFromHeap - add r4, r0, #0 - beq _022539C2 - mov r0, #8 - mov r1, #0x20 - bl AllocFromHeap - add r5, r0, #0 - add r0, r4, #0 - bl MOD20_02252DEC - cmp r5, #0 - beq _022539BC - mov r0, #0 - add r1, r5, #0 - lsl r3, r6, #1 -_02253998: - ldrh r2, [r4, r3] - add r0, r0, #1 - strh r2, [r1] - add r1, r1, #2 - cmp r0, #0x10 - blt _02253998 - add r0, r5, #0 - mov r1, #0x20 - bl DC_FlushRange - add r0, r5, #0 - lsl r1, r7, #5 - mov r2, #0x20 - bl GXS_LoadOBJPltt - add r0, r5, #0 - bl FreeToHeap -_022539BC: - add r0, r4, #0 - bl FreeToHeap -_022539C2: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_0225396C - - thumb_func_start MOD20_022539C4 -MOD20_022539C4: ; 0x022539C4 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl FUN_0206B888 - add r1, r0, #0 - mov r0, #0x13 - add r2, sp, #0 - mov r3, #8 - bl GfGfxLoader_GetPlttData - add r4, r0, #0 - beq _02253A02 - ldr r0, [sp] - mov r1, #0x40 - ldr r0, [r0, #0xc] - bl MOD20_022538F4 - ldr r0, [sp] - mov r1, #0x80 - ldr r0, [r0, #0xc] - bl DC_FlushRange - ldr r0, [sp] - lsl r1, r5, #5 - ldr r0, [r0, #0xc] - mov r2, #0x80 - bl GXS_LoadOBJPltt - add r0, r4, #0 - bl FreeToHeap -_02253A02: - pop {r3, r4, r5, pc} - thumb_func_end MOD20_022539C4 - - thumb_func_start MOD20_02253A04 -MOD20_02253A04: ; 0x02253A04 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - str r0, [sp, #4] - lsl r0, r3, #1 - str r0, [sp, #0xc] - add r6, r1, #0 - str r2, [sp, #8] - ldr r2, _02253A9C ; =MOD20_02254708 - ldr r1, [sp, #0xc] - mov r0, #8 - ldrh r1, [r2, r1] - bl AllocFromHeap - add r7, r0, #0 - beq _02253A98 - mov r0, #0x13 - mov r1, #8 - bl NARC_ctor - str r0, [sp, #0x1c] - cmp r0, #0 - beq _02253A92 - mov r0, #0 - str r0, [sp, #0x18] - ldr r0, [sp, #8] - cmp r0, #0 - bls _02253A8C - ldr r1, _02253AA0 ; =MOD20_02254704 - ldr r0, [sp, #0xc] - ldr r4, [sp, #0x18] - ldrh r5, [r1, r0] - ldr r1, _02253A9C ; =MOD20_02254708 - ldrh r0, [r1, r0] - str r0, [sp, #0x14] - ldr r0, [sp, #4] - lsl r0, r0, #5 - str r0, [sp, #0x10] -_02253A4E: - str r7, [sp] - ldr r0, [sp, #0x1c] - ldr r1, [r6] - ldr r3, [sp, #0x14] - mov r2, #0 - bl NARC_ReadFromMember - add r0, r7, #0 - add r1, sp, #0x20 - bl NNS_G2dGetUnpackedCharacterData - ldr r0, [sp, #0x20] - add r1, r5, #0 - ldr r0, [r0, #0x14] - bl DC_FlushRange - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x10] - ldr r0, [r0, #0x14] - add r1, r1, r4 - add r2, r5, #0 - bl GXS_LoadOBJ - ldr r0, [sp, #0x18] - add r6, r6, #4 - add r1, r0, #1 - ldr r0, [sp, #8] - add r4, r4, r5 - str r1, [sp, #0x18] - cmp r1, r0 - blo _02253A4E -_02253A8C: - ldr r0, [sp, #0x1c] - bl NARC_dtor -_02253A92: - add r0, r7, #0 - bl FreeToHeap -_02253A98: - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_02253A9C: .word MOD20_02254708 -_02253AA0: .word MOD20_02254704 - thumb_func_end MOD20_02253A04 - - thumb_func_start MOD20_02253AA4 -MOD20_02253AA4: ; 0x02253AA4 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r5, r1, #0 - add r4, r2, #0 - mov r1, #2 - add r2, sp, #0xc - strh r1, [r2] - mov r3, #3 - strh r3, [r2, #2] - mov r3, #0xa - strh r3, [r2, #4] - mov r3, #0xb - strh r3, [r2, #6] - str r3, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - add r2, sp, #0xc - mov r3, #9 - add r6, r0, #0 - bl LoadRectToBgTilemapRect - mov r1, #4 - add r0, sp, #0xc - strh r1, [r0] - mov r1, #5 - strh r1, [r0, #2] - mov r1, #0xc - strh r1, [r0, #4] - mov r1, #0xd - strh r1, [r0, #6] - mov r3, #0xb - lsl r1, r4, #0x18 - str r3, [sp] - mov r0, #2 - str r0, [sp, #4] - str r0, [sp, #8] - add r0, r6, #0 - lsr r1, r1, #0x18 - add r2, sp, #0xc - bl LoadRectToBgTilemapRect - mov r1, #6 - add r0, sp, #0xc - strh r1, [r0] - mov r1, #7 - strh r1, [r0, #2] - mov r1, #0xe - strh r1, [r0, #4] - mov r1, #0xf - strh r1, [r0, #6] - mov r0, #0xb - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - lsl r1, r4, #0x18 - str r0, [sp, #8] - add r0, r6, #0 - lsr r1, r1, #0x18 - add r2, sp, #0xc - mov r3, #0xd - bl LoadRectToBgTilemapRect - add r0, r5, #0 - mov r1, #0xa - bl _u32_div_f - mov r1, #0xa - mul r1, r0 - add r0, r0, #4 - sub r5, r5, r1 - lsr r1, r0, #2 - lsl r0, r0, #0x1e - lsl r1, r1, #4 - lsr r0, r0, #0x1d - add r2, r1, r0 - add r0, sp, #0xc - strh r2, [r0] - add r1, r2, #1 - strh r1, [r0, #2] - add r1, r2, #0 - add r1, #8 - strh r1, [r0, #4] - add r2, #9 - strh r2, [r0, #6] - mov r0, #0xb - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - lsl r1, r4, #0x18 - str r0, [sp, #8] - add r0, r6, #0 - lsr r1, r1, #0x18 - add r2, sp, #0xc - mov r3, #0xf - bl LoadRectToBgTilemapRect - add r0, r5, #4 - lsr r1, r0, #2 - lsl r0, r0, #0x1e - lsl r1, r1, #4 - lsr r0, r0, #0x1d - add r2, r1, r0 - add r0, sp, #0xc - strh r2, [r0] - add r1, r2, #1 - strh r1, [r0, #2] - add r1, r2, #0 - add r1, #8 - strh r1, [r0, #4] - add r2, #9 - strh r2, [r0, #6] - mov r0, #0xb - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - lsl r1, r4, #0x18 - str r0, [sp, #8] - add r0, r6, #0 - lsr r1, r1, #0x18 - add r2, sp, #0xc - mov r3, #0x11 - bl LoadRectToBgTilemapRect - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD20_02253AA4 - - thumb_func_start MOD20_02253BA4 -MOD20_02253BA4: ; 0x02253BA4 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - add r0, r5, #0 - mov r1, #0x1c - mov r6, #0 - bl AllocFromHeap - add r4, r0, #0 - beq _02253C0E - add r0, r6, #0 - str r0, [r4, #0x14] - str r0, [r4, #0xc] - str r0, [r4, #4] - str r7, [r4] - str r5, [r4, #0x18] - add r0, r7, #0 - bl NNS_G2dGetOamManagerOamCapacity - strh r0, [r4, #0x10] - ldrh r1, [r4, #0x10] - add r0, r5, #0 - lsl r1, r1, #3 - bl AllocFromHeap - str r0, [r4, #0x14] - cmp r0, #0 - beq _02253C0E - ldrh r2, [r4, #0x10] - mov r1, #0x90 - add r0, r5, #0 - mul r1, r2 - bl AllocFromHeap - str r0, [r4, #0xc] - cmp r0, #0 - beq _02253C0E - ldrh r1, [r4, #0x10] - add r0, r5, #0 - lsl r1, r1, #2 - bl AllocFromHeap - str r0, [r4, #4] - cmp r0, #0 - beq _02253C0E - ldrh r2, [r4, #0x10] - ldr r1, [r4, #0xc] - bl MOD20_0225403C - add r0, r6, #0 - strh r0, [r4, #0x12] - str r0, [r4, #8] - mov r6, #1 -_02253C0E: - cmp r6, #0 - bne _02253C46 - cmp r4, #0 - beq _02253C42 - ldr r1, [r4, #0x14] - cmp r1, #0 - beq _02253C22 - add r0, r5, #0 - bl FreeToHeapExplicit -_02253C22: - ldr r1, [r4, #0xc] - cmp r1, #0 - beq _02253C2E - add r0, r5, #0 - bl FreeToHeapExplicit -_02253C2E: - ldr r1, [r4, #4] - cmp r1, #0 - beq _02253C3A - add r0, r5, #0 - bl FreeToHeapExplicit -_02253C3A: - add r0, r5, #0 - add r1, r4, #0 - bl FreeToHeapExplicit -_02253C42: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02253C46: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 - thumb_func_end MOD20_02253BA4 - - thumb_func_start MOD20_02253C4C -MOD20_02253C4C: ; 0x02253C4C - push {r4, lr} - add r4, r0, #0 - beq _02253C76 - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _02253C5C - bl FreeToHeap -_02253C5C: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02253C66 - bl FreeToHeap -_02253C66: - ldr r0, [r4, #4] - cmp r0, #0 - beq _02253C70 - bl FreeToHeap -_02253C70: - add r0, r4, #0 - bl FreeToHeap -_02253C76: - pop {r4, pc} - thumb_func_end MOD20_02253C4C - - thumb_func_start MOD20_02253C78 -MOD20_02253C78: ; 0x02253C78 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - str r0, [sp, #0xc] - ldrh r0, [r0, #0x12] - cmp r0, #0 - bne _02253C86 - b _02253E52 -_02253C86: - ldr r0, [sp, #0xc] - ldr r4, [r0, #8] - ldr r5, [r0, #0x14] - ldrh r0, [r0, #0x10] - cmp r4, #0 - str r0, [sp, #0x10] - bne _02253C96 - b _02253E38 -_02253C96: - add r0, r4, #0 - mov r1, #2 - add r0, #8 - lsl r1, r1, #0xc - bl NNS_G2dTickCellAnimation - add r0, r4, #0 - add r0, #0x86 - ldrb r0, [r0] - cmp r0, #0 - beq _02253CAE - b _02253E30 -_02253CAE: - add r6, r4, #0 - add r6, #0x40 - mov r0, #0xc - ldrsh r0, [r6, r0] - ldr r1, [r4, #0x64] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp, #0x18] - mov r0, #0xe - ldrsh r0, [r6, r0] - ldr r1, [r4, #0x68] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp, #0x1c] - add r0, r4, #0 - add r0, #0x87 - ldrb r0, [r0] - cmp r0, #0 - bne _02253CEE - add r0, sp, #0x18 - str r0, [sp] - mov r3, #0 - str r3, [sp, #4] - ldr r1, [sp, #0x10] - str r3, [sp, #8] - lsl r1, r1, #0x10 - ldr r2, [r4, #0x34] - add r0, r5, #0 - lsr r1, r1, #0x10 - bl NNS_G2dMakeCellToOams - b _02253D86 -_02253CEE: - ldr r0, [r4, #0x6c] - bl MTX_Identity22_ - ldrh r1, [r6, #0x12] - mov r0, #4 - tst r0, r1 - beq _02253D20 - add r0, r4, #0 - add r0, #0x8c - ldrh r2, [r6, #0x10] - ldrh r0, [r0] - ldr r1, _02253E58 ; =FX_SinCosTable_ - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - asr r0, r0, #4 - lsl r3, r0, #2 - add r2, r1, r3 - ldrsh r1, [r1, r3] - mov r3, #2 - ldrsh r2, [r2, r3] - ldr r0, [r4, #0x6c] - bl MTX_Rot22_ - b _02253D3E -_02253D20: - add r0, r4, #0 - add r0, #0x8c - ldrh r0, [r0] - cmp r0, #0 - beq _02253D3E - asr r0, r0, #4 - lsl r3, r0, #2 - ldr r1, _02253E58 ; =FX_SinCosTable_ - ldr r0, [r4, #0x6c] - add r2, r1, r3 - ldrsh r1, [r1, r3] - mov r3, #2 - ldrsh r2, [r2, r3] - bl MTX_Rot22_ -_02253D3E: - ldrh r1, [r6, #0x12] - mov r0, #2 - tst r0, r1 - beq _02253D62 - ldr r0, [r6, #4] - ldr r7, [r4, #0x6c] - bl FX_Inv - str r0, [sp, #0x14] - ldr r0, [r6, #8] - bl FX_Inv - add r3, r0, #0 - ldr r2, [sp, #0x14] - add r0, r7, #0 - add r1, r7, #0 - bl MTX_ScaleApply22 -_02253D62: - ldr r0, [sp, #0xc] - ldr r1, [r4, #0x6c] - ldr r0, [r0] - bl NNS_G2dEntryOamManagerAffine - add r1, sp, #0x18 - str r1, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - ldr r1, [sp, #0x10] - ldr r2, [r4, #0x34] - lsl r1, r1, #0x10 - ldr r3, [r4, #0x6c] - add r0, r5, #0 - lsr r1, r1, #0x10 - bl NNS_G2dMakeCellToOams -_02253D86: - ldr r1, [sp, #0x10] - sub r1, r1, r0 - str r1, [sp, #0x10] - add r1, r0, #0 - sub r0, r0, #1 - cmp r1, #0 - beq _02253E30 - ldr r7, _02253E5C ; =0xDFFFFFFF - asr r1, r7, #0x11 -_02253D98: - ldr r3, [r5, #4] - ldr r2, _02253E60 ; =0xFFFFF3FF - add r6, r4, #0 - and r2, r3 - add r3, r4, #0 - add r3, #0x82 - ldrh r3, [r3] - add r6, #0x84 - lsl r3, r3, #0x1e - lsr r3, r3, #0x14 - orr r2, r3 - str r2, [r5, #4] - ldr r3, _02253E64 ; =0xFFFF0FFF - ldrh r6, [r6] - and r3, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x1c - add r2, r2, r6 - lsl r2, r2, #0x1c - lsr r2, r2, #0x10 - orr r2, r3 - add r6, r4, #0 - ldr r3, _02253E68 ; =0xFFFFFC00 - str r2, [r5, #4] - add r6, #0x88 - and r3, r2 - lsl r2, r2, #0x16 - ldrh r6, [r6] - lsr r2, r2, #0x16 - add r6, r2, r6 - ldr r2, _02253E6C ; =0x000003FF - and r2, r6 - orr r2, r3 - add r6, r4, #0 - str r2, [r5, #4] - add r6, #0x8a - ldr r2, [r5] - ldr r3, _02253E70 ; =0xEFFFFFFF - ldrb r6, [r6] - and r3, r2 - lsl r2, r2, #3 - lsr r2, r2, #0x1f - eor r2, r6 - lsl r2, r2, #0x1f - lsr r2, r2, #3 - orr r2, r3 - add r6, r4, #0 - add r3, r2, #0 - str r2, [r5] - add r6, #0x8b - lsl r2, r2, #2 - ldrb r6, [r6] - lsr r2, r2, #0x1f - and r3, r7 - eor r2, r6 - lsl r2, r2, #0x1f - lsr r2, r2, #2 - orr r2, r3 - add r6, r4, #0 - add r3, r2, #0 - str r2, [r5] - add r6, #0x8e - lsl r2, r2, #0x13 - ldrb r6, [r6] - lsr r2, r2, #0x1f - and r3, r1 - eor r2, r6 - lsl r2, r2, #0x1f - lsr r2, r2, #0x13 - orr r2, r3 - str r2, [r5] - add r2, r0, #0 - add r5, #8 - sub r0, r0, #1 - cmp r2, #0 - bne _02253D98 -_02253E30: - ldr r4, [r4, #0x5c] - cmp r4, #0 - beq _02253E38 - b _02253C96 -_02253E38: - ldr r0, [sp, #0xc] - ldr r1, [r0, #0x14] - cmp r5, r1 - bls _02253E52 - sub r3, r5, r1 - asr r2, r3, #2 - lsr r2, r2, #0x1d - add r2, r3, r2 - lsl r2, r2, #0xd - ldr r0, [r0] - lsr r2, r2, #0x10 - bl NNS_G2dEntryOamManagerOam -_02253E52: - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - nop -_02253E58: .word FX_SinCosTable_ -_02253E5C: .word 0xDFFFFFFF -_02253E60: .word 0xFFFFF3FF -_02253E64: .word 0xFFFF0FFF -_02253E68: .word 0xFFFFFC00 -_02253E6C: .word 0x000003FF -_02253E70: .word 0xEFFFFFFF - thumb_func_end MOD20_02253C78 - - thumb_func_start MOD20_02253E74 -MOD20_02253E74: ; 0x02253E74 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - add r6, r2, #0 - bl MOD20_02254068 - add r4, r0, #0 - beq _02253F10 - ldrb r1, [r5, #0xb] - add r0, #0x82 - strh r1, [r0] - add r0, r4, #0 - ldrb r1, [r5, #0xc] - add r0, #0x80 - strh r1, [r0] - add r0, r7, #0 - add r1, r4, #0 - bl MOD20_022540A4 - ldr r0, [r6, #8] - str r0, [r4] - ldr r0, [r6, #0xc] - str r0, [r4, #4] - ldrh r1, [r5, #8] - bl NNS_G2dGetAnimSequenceByIdx - add r1, r0, #0 - add r0, r4, #0 - ldr r2, [r4] - add r0, #8 - bl NNS_G2dInitCellAnimation - ldr r1, [r5] - ldr r0, [r5, #4] - str r1, [r4, #0x64] - add r1, r4, #0 - str r0, [r4, #0x68] - mov r0, #0 - add r1, #0x84 - strh r0, [r1] - add r1, r4, #0 - add r1, #0x88 - strh r0, [r1] - ldrb r2, [r5, #0xa] - mov r1, #1 - tst r2, r1 - beq _02253ED4 - add r0, r1, #0 -_02253ED4: - add r1, r4, #0 - add r1, #0x8a - strb r0, [r1] - ldrb r1, [r5, #0xa] - mov r0, #2 - tst r0, r1 - beq _02253EE6 - mov r1, #1 - b _02253EE8 -_02253EE6: - mov r1, #0 -_02253EE8: - add r0, r4, #0 - add r0, #0x8b - strb r1, [r0] - add r1, r4, #0 - mov r0, #0 - add r1, #0x8e - strb r0, [r1] - add r1, r4, #0 - add r1, #0x8c - strh r0, [r1] - add r1, r4, #0 - add r1, #0x70 - str r1, [r4, #0x6c] - add r1, r4, #0 - ldrb r2, [r5, #0xd] - add r1, #0x87 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x86 - strb r0, [r1] -_02253F10: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_02253E74 - - thumb_func_start MOD20_02253F14 -MOD20_02253F14: ; 0x02253F14 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_022540FC - add r0, r5, #0 - add r1, r4, #0 - bl MOD20_02254080 - pop {r3, r4, r5, pc} - thumb_func_end MOD20_02253F14 - - thumb_func_start MOD20_02253F28 -MOD20_02253F28: ; 0x02253F28 - push {r4, lr} - add r4, r0, #0 - lsl r1, r1, #0x10 - ldr r0, [r4, #4] - lsr r1, r1, #0x10 - bl NNS_G2dGetAnimSequenceByIdx - add r1, r0, #0 - add r0, r4, #0 - ldr r2, [r4] - add r0, #8 - bl NNS_G2dInitCellAnimation - pop {r4, pc} - thumb_func_end MOD20_02253F28 - - thumb_func_start MOD20_02253F44 -MOD20_02253F44: ; 0x02253F44 - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _02253F4E - mov r0, #1 - bx lr -_02253F4E: - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F44 - - thumb_func_start MOD20_02253F54 -MOD20_02253F54: ; 0x02253F54 - ldr r3, [r0, #0x64] - add r1, r3, r1 - str r1, [r0, #0x64] - ldr r1, [r0, #0x68] - add r1, r1, r2 - str r1, [r0, #0x68] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F54 - - thumb_func_start MOD20_02253F64 -MOD20_02253F64: ; 0x02253F64 - str r1, [r0, #0x64] - str r2, [r0, #0x68] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F64 - - thumb_func_start MOD20_02253F6C -MOD20_02253F6C: ; 0x02253F6C - ldr r3, [r0, #0x64] - str r3, [r1] - ldr r0, [r0, #0x68] - str r0, [r2] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F6C - - thumb_func_start MOD20_02253F78 -MOD20_02253F78: ; 0x02253F78 - add r0, #0x86 - strb r1, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F78 - - thumb_func_start MOD20_02253F80 -MOD20_02253F80: ; 0x02253F80 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - add r4, r2, #0 - bl MOD20_022540FC - add r0, r5, #0 - add r0, #0x80 - strh r4, [r0] - add r0, r6, #0 - add r1, r5, #0 - bl MOD20_022540A4 - pop {r4, r5, r6, pc} - thumb_func_end MOD20_02253F80 - - thumb_func_start MOD20_02253F9C -MOD20_02253F9C: ; 0x02253F9C - add r0, #0x84 - strh r1, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253F9C - - thumb_func_start MOD20_02253FA4 -MOD20_02253FA4: ; 0x02253FA4 - add r0, #0x88 - strh r1, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253FA4 - - thumb_func_start MOD20_02253FAC -MOD20_02253FAC: ; 0x02253FAC - add r0, #0x8e - strb r1, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253FAC - - thumb_func_start MOD20_02253FB4 -MOD20_02253FB4: ; 0x02253FB4 - add r0, #0x8c - strh r1, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD20_02253FB4 - - thumb_func_start MOD20_02253FBC -MOD20_02253FBC: ; 0x02253FBC - push {r3, r4, r5, r6, r7, lr} - ldr r4, [sp, #0x18] - add r5, r0, #0 - add r6, r1, #0 - add r1, r2, #0 - add r7, r3, #0 - str r4, [r5, #0x10] - add r0, r6, #0 - add r2, r4, #0 - bl GfGfxLoader_UncompressFromNarc - str r0, [r5] - add r0, r6, #0 - add r1, r7, #0 - add r2, r4, #0 - bl GfGfxLoader_UncompressFromNarc - str r0, [r5, #4] - ldr r0, [r5] - cmp r0, #0 - beq _0225400E - ldr r1, [r5, #4] - cmp r1, #0 - beq _0225400E - add r1, r5, #0 - add r1, #8 - bl NNS_G2dGetUnpackedCellBank - cmp r0, #0 - bne _02253FFC - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02253FFC: - ldr r0, [r5, #4] - add r5, #0xc - add r1, r5, #0 - bl NNS_G2dGetUnpackedMCAnimBank - cmp r0, #0 - bne _0225400E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0225400E: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 - thumb_func_end MOD20_02253FBC - - thumb_func_start MOD20_02254014 -MOD20_02254014: ; 0x02254014 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - cmp r1, #0 - beq _02254028 - ldr r0, [r4, #0x10] - bl FreeToHeapExplicit - mov r0, #0 - str r0, [r4] -_02254028: - ldr r1, [r4, #4] - cmp r1, #0 - beq _02254038 - ldr r0, [r4, #0x10] - bl FreeToHeapExplicit - mov r0, #0 - str r0, [r4, #4] -_02254038: - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD20_02254014 - - thumb_func_start MOD20_0225403C -MOD20_0225403C: ; 0x0225403C - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r0, #0 - add r0, r6, #0 - add r4, r1, #0 - sub r6, r6, #1 - cmp r0, #0 - beq _0225405E -_0225404C: - add r0, r4, #0 - stmia r5!, {r4} - bl MOD20_02254060 - add r0, r6, #0 - add r4, #0x90 - sub r6, r6, #1 - cmp r0, #0 - bne _0225404C -_0225405E: - pop {r4, r5, r6, pc} - thumb_func_end MOD20_0225403C - - thumb_func_start MOD20_02254060 -MOD20_02254060: ; 0x02254060 - mov r1, #0 - str r1, [r0, #0x5c] - str r1, [r0, #0x60] - bx lr - thumb_func_end MOD20_02254060 - - thumb_func_start MOD20_02254068 -MOD20_02254068: ; 0x02254068 - ldrh r2, [r0, #0x12] - ldrh r1, [r0, #0x10] - cmp r2, r1 - bhs _0225407C - add r1, r2, #1 - strh r1, [r0, #0x12] - ldr r1, [r0, #4] - lsl r0, r2, #2 - ldr r0, [r1, r0] - bx lr -_0225407C: - mov r0, #0 - bx lr - thumb_func_end MOD20_02254068 - - thumb_func_start MOD20_02254080 -MOD20_02254080: ; 0x02254080 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldrh r0, [r5, #0x12] - add r4, r1, #0 - cmp r0, #0 - beq _022540A0 - add r0, r4, #0 - bl MOD20_02254060 - ldrh r0, [r5, #0x12] - sub r0, r0, #1 - strh r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - ldr r1, [r5, #4] - lsl r0, r0, #2 - str r4, [r1, r0] -_022540A0: - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_02254080 - - thumb_func_start MOD20_022540A4 -MOD20_022540A4: ; 0x022540A4 - push {r4, r5} - ldr r3, [r0, #8] - cmp r3, #0 - bne _022540B8 - str r1, [r0, #8] - mov r0, #0 - str r0, [r1, #0x5c] - str r0, [r1, #0x60] - pop {r4, r5} - bx lr -_022540B8: - add r4, r1, #0 - add r4, #0x80 - ldr r5, [r4] - add r2, r3, #0 -_022540C0: - add r4, r2, #0 - add r4, #0x80 - ldr r4, [r4] - cmp r5, r4 - bhs _022540E2 - cmp r2, r3 - bne _022540D0 - str r1, [r0, #8] -_022540D0: - ldr r0, [r2, #0x60] - str r0, [r1, #0x60] - cmp r0, #0 - beq _022540DA - str r1, [r0, #0x5c] -_022540DA: - str r2, [r1, #0x5c] - str r1, [r2, #0x60] - pop {r4, r5} - bx lr -_022540E2: - ldr r4, [r2, #0x5c] - cmp r4, #0 - bne _022540F4 - str r1, [r2, #0x5c] - str r2, [r1, #0x60] - mov r0, #0 - str r0, [r1, #0x5c] - pop {r4, r5} - bx lr -_022540F4: - add r2, r4, #0 - b _022540C0 - thumb_func_end MOD20_022540A4 - - thumb_func_start MOD20_022540F8 -MOD20_022540F8: ; 0x022540F8 - pop {r4, r5} - bx lr - thumb_func_end MOD20_022540F8 - - thumb_func_start MOD20_022540FC -MOD20_022540FC: ; 0x022540FC - ldr r2, [r1, #0x60] - cmp r2, #0 - beq _02254118 - ldr r0, [r1, #0x5c] - cmp r0, #0 - beq _02254112 - str r0, [r2, #0x5c] - ldr r2, [r1, #0x60] - ldr r0, [r1, #0x5c] - str r2, [r0, #0x60] - bx lr -_02254112: - mov r0, #0 - str r0, [r2, #0x5c] - bx lr -_02254118: - ldr r3, [r1, #0x5c] - cmp r3, #0 - beq _02254128 - mov r2, #0 - str r2, [r3, #0x60] - ldr r1, [r1, #0x5c] - str r1, [r0, #8] - bx lr -_02254128: - mov r1, #0 - str r1, [r0, #8] - bx lr - .align 2, 0 - thumb_func_end MOD20_022540FC - - thumb_func_start MOD20_02254130 -MOD20_02254130: ; 0x02254130 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r0, #0 - add r7, r1, #0 - str r2, [sp] - str r3, [sp, #4] - ldr r5, [sp, #0x20] - bne _02254144 - bl GF_AssertFail -_02254144: - add r0, r5, #0 - mov r1, #0x18 - bl AllocFromHeap - add r4, r0, #0 - beq _02254192 - ldr r0, [sp] - str r5, [r4, #8] - str r0, [r4, #4] - str r6, [r4] - mov r1, #0xe - ldr r0, [sp, #4] - str r7, [r4, #0xc] - str r0, [r4, #0x10] - add r0, r5, #0 - mul r1, r7 - bl AllocFromHeap - str r0, [r4, #0x14] - cmp r0, #0 - beq _02254188 - mov r6, #0 - cmp r7, #0 - bls _02254192 - add r5, r6, #0 -_02254176: - ldr r0, [r4, #0x14] - add r0, r0, r5 - bl MOD20_022542E4 - add r6, r6, #1 - add r5, #0xe - cmp r6, r7 - blo _02254176 - b _02254192 -_02254188: - add r0, r5, #0 - add r1, r4, #0 - bl FreeToHeapExplicit - mov r4, #0 -_02254192: - add r0, r4, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD20_02254130 - - thumb_func_start MOD20_02254198 -MOD20_02254198: ; 0x02254198 - push {r4, lr} - add r4, r0, #0 - bne _022541A2 - bl GF_AssertFail -_022541A2: - ldr r0, [r4, #8] - ldr r1, [r4, #0x14] - bl FreeToHeapExplicit - ldr r0, [r4, #8] - add r1, r4, #0 - bl FreeToHeapExplicit - pop {r4, pc} - thumb_func_end MOD20_02254198 - - thumb_func_start MOD20_022541B4 -MOD20_022541B4: ; 0x022541B4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - bl FUN_02020A98 - str r0, [sp, #4] - cmp r0, #0 - beq _0225420C - bl FUN_02020AA4 - ldr r1, [r5, #0xc] - mov r7, #0 - str r0, [sp] - cmp r1, #0 - bls _02254232 - add r4, r7, #0 - add r6, r7, #0 -_022541D6: - ldr r0, [r5, #0x14] - add r1, r0, r4 - ldrb r0, [r1, #1] - strb r0, [r1, #2] - ldr r0, [r5, #0x14] - add r0, r0, r4 - ldrb r0, [r0, #1] - cmp r0, #0 - ldr r0, [r5] - beq _022541F2 - add r0, r0, r6 - bl FUN_02020A40 - b _022541F8 -_022541F2: - add r0, r0, r6 - bl FUN_02020A6C -_022541F8: - ldr r1, [r5, #0x14] - add r7, r7, #1 - add r1, r1, r4 - strb r0, [r1, #1] - ldr r1, [r5, #0xc] - add r4, #0xe - add r6, r6, #4 - cmp r7, r1 - blo _022541D6 - b _02254232 -_0225420C: - ldr r1, [r5, #0xc] - mov r2, #0 - str r2, [sp] - cmp r1, #0 - bls _02254232 - add r0, r2, #0 - add r3, r2, #0 -_0225421A: - ldr r1, [r5, #0x14] - add r2, r2, #1 - add r4, r1, r0 - ldrb r1, [r4, #1] - strb r1, [r4, #2] - ldr r1, [r5, #0x14] - add r1, r1, r0 - strb r3, [r1, #1] - ldr r1, [r5, #0xc] - add r0, #0xe - cmp r2, r1 - blo _0225421A -_02254232: - mov r6, #0 - cmp r1, #0 - bls _02254278 - ldr r7, _022542A8 ; =MOD20_02254710 - add r4, r6, #0 -_0225423C: - ldr r3, [r5, #0x14] - ldr r1, [sp, #4] - add r0, r3, r4 - ldrb r3, [r3, r4] - ldr r2, [sp] - lsl r3, r3, #2 - ldr r3, [r7, r3] - blx r3 - add r1, r0, #0 - ldr r0, [r5, #0x14] - add r0, r0, r4 - ldrb r2, [r0, #1] - ldrb r0, [r0, #2] - cmp r2, r0 - bne _0225425C - mov r2, #2 -_0225425C: - cmp r1, #0 - bne _02254264 - cmp r2, #2 - beq _0225426E -_02254264: - ldr r3, [r5, #0x10] - ldr r4, [r5, #4] - add r0, r6, #0 - blx r4 - b _02254278 -_0225426E: - ldr r0, [r5, #0xc] - add r6, r6, #1 - add r4, #0xe - cmp r6, r0 - blo _0225423C -_02254278: - ldr r0, [r5, #0xc] - add r6, r6, #1 - cmp r6, r0 - bhs _022542A2 - mov r0, #0xe - add r4, r6, #0 - ldr r7, _022542A8 ; =MOD20_02254710 - mul r4, r0 -_02254288: - ldr r3, [r5, #0x14] - ldr r1, [sp, #4] - add r0, r3, r4 - ldrb r3, [r3, r4] - ldr r2, [sp] - lsl r3, r3, #2 - ldr r3, [r7, r3] - blx r3 - ldr r0, [r5, #0xc] - add r6, r6, #1 - add r4, #0xe - cmp r6, r0 - blo _02254288 -_022542A2: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_022542A8: .word MOD20_02254710 - thumb_func_end MOD20_022541B4 - - thumb_func_start MOD20_022542AC -MOD20_022542AC: ; 0x022542AC - push {r3, r4} - ldr r4, [r0, #0x14] - mov r0, #0xe - mul r0, r1 - add r1, r4, r0 - lsl r0, r2, #1 - add r0, r1, r0 - strh r3, [r0, #8] - pop {r3, r4} - bx lr - thumb_func_end MOD20_022542AC - - thumb_func_start MOD20_022542C0 -MOD20_022542C0: ; 0x022542C0 - ldr r3, [r0, #0x14] - mov r0, #0xe - mul r0, r1 - add r0, r3, r0 - strh r2, [r0, #0xc] - bx lr - thumb_func_end MOD20_022542C0 - - thumb_func_start MOD20_022542CC -MOD20_022542CC: ; 0x022542CC - add r3, r1, #0 - mov r2, #0xe - mul r3, r2 - ldr r1, [r0, #0x14] - mov r2, #0 - add r1, r1, r3 - strh r2, [r1, #4] - ldr r0, [r0, #0x14] - mov r1, #4 - strb r1, [r0, r3] - bx lr - .align 2, 0 - thumb_func_end MOD20_022542CC - - thumb_func_start MOD20_022542E4 -MOD20_022542E4: ; 0x022542E4 - mov r2, #0 - strb r2, [r0] - strb r2, [r0, #1] - strb r2, [r0, #2] - strh r2, [r0, #4] - strh r2, [r0, #6] - add r3, r0, #0 - add r1, r2, #0 -_022542F4: - add r2, r2, #1 - strh r1, [r3, #8] - add r3, r3, #2 - cmp r2, #2 - blo _022542F4 - strh r1, [r0, #0xc] - bx lr - .align 2, 0 - thumb_func_end MOD20_022542E4 - - thumb_func_start MOD20_02254304 -MOD20_02254304: ; 0x02254304 - strb r1, [r0] - mov r1, #0 - strh r1, [r0, #4] - bx lr - thumb_func_end MOD20_02254304 - - thumb_func_start MOD20_0225430C -MOD20_0225430C: ; 0x0225430C - strb r1, [r0] - bx lr - thumb_func_end MOD20_0225430C - - thumb_func_start MOD20_02254310 -MOD20_02254310: ; 0x02254310 - ldrh r2, [r0, #4] - ldr r1, _02254320 ; =0x0000FFFF - cmp r2, r1 - bhs _0225431C - add r1, r2, #1 - strh r1, [r0, #4] -_0225431C: - bx lr - nop -_02254320: .word 0x0000FFFF - thumb_func_end MOD20_02254310 - - thumb_func_start MOD20_02254324 -MOD20_02254324: ; 0x02254324 - ldrh r3, [r0, #4] - mov r2, #0 -_02254328: - ldrh r1, [r0, #8] - cmp r3, r1 - bne _02254332 - add r0, r2, #5 - bx lr -_02254332: - add r2, r2, #1 - add r0, r0, #2 - cmp r2, #2 - blo _02254328 - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end MOD20_02254324 - - thumb_func_start MOD20_02254340 -MOD20_02254340: ; 0x02254340 - push {r3, lr} - ldrb r1, [r0, #1] - cmp r1, #0 - beq _02254356 - cmp r2, #0 - beq _02254356 - mov r1, #1 - bl MOD20_02254304 - mov r0, #1 - pop {r3, pc} -_02254356: - mov r0, #0 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD20_02254340 - - thumb_func_start MOD20_0225435C -MOD20_0225435C: ; 0x0225435C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MOD20_02254310 - ldrb r0, [r5, #1] - cmp r0, #0 - beq _0225438A - add r0, r5, #0 - bl MOD20_02254324 - cmp r0, #0 - bne _022543B8 - ldrh r1, [r5, #0xc] - cmp r1, #0 - beq _022543B6 - ldrh r0, [r5, #4] - cmp r0, r1 - blo _022543B6 - mov r0, #0 - strh r0, [r5, #4] - mov r0, #7 - pop {r3, r4, r5, pc} -_0225438A: - cmp r4, #0 - beq _0225439A - add r0, r5, #0 - mov r1, #0 - bl MOD20_02254304 - mov r0, #2 - pop {r3, r4, r5, pc} -_0225439A: - ldrh r0, [r5, #6] - cmp r0, #0 - beq _022543AA - add r0, r5, #0 - mov r1, #2 - bl MOD20_0225430C - b _022543B6 -_022543AA: - add r0, r5, #0 - mov r1, #0 - bl MOD20_02254304 - mov r0, #3 - pop {r3, r4, r5, pc} -_022543B6: - mov r0, #0 -_022543B8: - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD20_0225435C - - thumb_func_start MOD20_022543BC -MOD20_022543BC: ; 0x022543BC - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r2, #0 - bl MOD20_02254310 - ldrh r1, [r5, #4] - ldrh r0, [r5, #6] - cmp r1, r0 - bls _022543DA - add r0, r5, #0 - mov r1, #0 - bl MOD20_02254304 - mov r0, #3 - pop {r3, r4, r5, pc} -_022543DA: - ldrb r0, [r5, #1] - cmp r0, #0 - beq _022543F0 - cmp r4, #0 - beq _022543F0 - add r0, r5, #0 - mov r1, #3 - bl MOD20_02254304 - mov r0, #4 - pop {r3, r4, r5, pc} -_022543F0: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD20_022543BC - - thumb_func_start MOD20_022543F4 -MOD20_022543F4: ; 0x022543F4 - push {r3, lr} - ldrb r1, [r0, #1] - cmp r1, #0 - beq _02254402 - bl MOD20_02254310 - b _02254408 -_02254402: - mov r1, #0 - bl MOD20_02254304 -_02254408: - mov r0, #0 - pop {r3, pc} - thumb_func_end MOD20_022543F4 - - thumb_func_start MOD20_0225440C -MOD20_0225440C: ; 0x0225440C - push {r3, lr} - ldrb r1, [r0, #1] - cmp r1, #0 - bne _0225441A - mov r1, #0 - bl MOD20_02254304 -_0225441A: - mov r0, #0 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD20_0225440C - - thumb_func_start MOD20_02254420 -MOD20_02254420: ; 0x02254420 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - cmp r5, #0x1e - blo _02254432 - bl GF_AssertFail -_02254432: - cmp r4, #0x21 - blo _0225443A - bl GF_AssertFail -_0225443A: - cmp r5, #0x1e - blo _02254440 - mov r5, #0 -_02254440: - cmp r4, #0x21 - blo _02254446 - mov r4, #0 -_02254446: - ldr r0, _02254458 ; =MOD20_02254744 - lsl r1, r5, #1 - ldrh r0, [r0, r1] - lsl r1, r4, #1 - str r0, [r6] - ldr r0, _0225445C ; =MOD20_02254780 - ldrh r0, [r0, r1] - str r0, [r7] - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02254458: .word MOD20_02254744 -_0225445C: .word MOD20_02254780 - thumb_func_end MOD20_02254420 - - thumb_func_start MOD20_02254460 -MOD20_02254460: ; 0x02254460 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - cmp r5, #4 - blo _02254470 - bl GF_AssertFail -_02254470: - ldr r0, _02254480 ; =MOD20_02254724 - lsl r1, r5, #3 - ldr r0, [r0, r1] - str r0, [r4] - ldr r0, _02254484 ; =MOD20_02254724 + 4 - ldr r0, [r0, r1] - str r0, [r6] - pop {r4, r5, r6, pc} - .align 2, 0 -_02254480: .word MOD20_02254724 -_02254484: .word MOD20_02254724 + 4 - thumb_func_end MOD20_02254460 - - thumb_func_start MOD20_02254488 -MOD20_02254488: ; 0x02254488 - push {r4, r5} - ldr r5, _022544B8 ; =MOD20_022547C2 - mov r4, #0 -_0225448E: - ldrh r3, [r5] - cmp r0, r3 - bne _022544A8 - ldr r0, _022544BC ; =MOD20_022547C2 + 2 - lsl r3, r4, #2 - ldrb r0, [r0, r3] - str r0, [r1] - ldr r0, _022544C0 ; =MOD20_022547C2 + 3 - ldrb r0, [r0, r3] - str r0, [r2] - mov r0, #1 - pop {r4, r5} - bx lr -_022544A8: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0x1d - blo _0225448E - mov r0, #0 - pop {r4, r5} - bx lr - nop -_022544B8: .word MOD20_022547C2 -_022544BC: .word MOD20_022547C2 + 2 -_022544C0: .word MOD20_022547C2 + 3 - thumb_func_end MOD20_02254488 - - .rodata - .global MOD20_022544C4 -MOD20_022544C4: ; 0x022544C4 - .byte 0x60, 0xAC, 0xDC, 0xF4, 0x10, 0xAF, 0x10, 0xCF - - .global MOD20_022544CC -MOD20_022544CC: ; 0x022544CC - .word MOD20_02252600, MOD20_02252688, MOD20_022527AC, MOD20_02252818 - - .global sPoketchAppOverlayMapping -sPoketchAppOverlayMapping: ; 0x022544DC - .word 0, SDK_OVERLAY_MODULE_21_ID - .word 23, SDK_OVERLAY_MODULE_22_ID - .word 1, SDK_OVERLAY_MODULE_23_ID - .word 2, SDK_OVERLAY_MODULE_24_ID - .word 11, SDK_OVERLAY_MODULE_25_ID - .word 17, SDK_OVERLAY_MODULE_26_ID - .word 4, SDK_OVERLAY_MODULE_27_ID - .word 5, SDK_OVERLAY_MODULE_28_ID - .word 6, SDK_OVERLAY_MODULE_29_ID - .word 10, SDK_OVERLAY_MODULE_30_ID - .word 3, SDK_OVERLAY_MODULE_31_ID - .word 8, SDK_OVERLAY_MODULE_35_ID - .word 18, SDK_OVERLAY_MODULE_36_ID - .word 14, SDK_OVERLAY_MODULE_37_ID - .word 15, SDK_OVERLAY_MODULE_38_ID - .word 22, SDK_OVERLAY_MODULE_39_ID - .word 24, SDK_OVERLAY_MODULE_40_ID - .word 20, SDK_OVERLAY_MODULE_41_ID - .word 12, SDK_OVERLAY_MODULE_42_ID - .word 7, SDK_OVERLAY_MODULE_43_ID - .word 21, SDK_OVERLAY_MODULE_44_ID - .word 16, SDK_OVERLAY_MODULE_45_ID - .word 13, SDK_OVERLAY_MODULE_47_ID - .word 19, SDK_OVERLAY_MODULE_48_ID - .word 9, SDK_OVERLAY_MODULE_49_ID - - .global MOD20_022545A4 -MOD20_022545A4: ; 0x022545A4 - .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD20_022545B4 -MOD20_022545B4: ; 0x022545B4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD20_022545D0 -MOD20_022545D0: ; 0x022545D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x0D, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD20_022545EC -MOD20_022545EC: ; 0x022545EC - .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0015, 0x0016, 0x0017, 0x0018 - .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D - .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D - .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D - .short 0x002A, 0x002B, 0x002C, 0x002D, 0x003F, 0x0040, 0x0041, 0x0042 - .short 0x0054, 0x0055, 0x0056, 0x0057 - - .global MOD20_02254644 -MOD20_02254644: ; 0x02254644 - .word 0x00000000, MOD20_02252ED0, 0x00000000 - .word 0x00000001, MOD20_02252FF0, 0x00000004 - .word 0x00000002, MOD20_02252FF0, 0x00000004 - .word 0x00000003, MOD20_02253228, 0x00000004 - .word 0x00000004, MOD20_02253100, 0x00000004 - .word 0x00000005, MOD20_0225328C, 0x00000004 - .word 0x00000006, MOD20_022532F0, 0x00000000 - .word 0x00000008, MOD20_02253338, 0x00000000 - .word 0x00000007, MOD20_02253378, 0x00000000 - .word 0x00000009, MOD20_022533C0, 0x00000000 - .word 0x0000000A, MOD20_022533EC, 0x00000000 - .word 0x0000000B, MOD20_0225340C, 0x00000000 - .word 0x0000000C, MOD20_022535CC, 0x00000000 - .word 0x0000000D, MOD20_02253668, 0x00000000 - .word 0x0000000E, MOD20_022536C8, 0x00000000 - .word 0xFFFFFFFF, 0x00000000, 0x00000000 - - .global MOD20_02254704 -MOD20_02254704: ; 0x02254704 - .byte 0x00, 0x02, 0x00, 0x04 - - .global MOD20_02254708 -MOD20_02254708: ; 0x02254708 - .byte 0x80, 0x02, 0x80, 0x04 - - .global MOD20_0225470C -MOD20_0225470C: ; 0x0225470C - .byte 0x01, 0x08, 0x0F, 0x04 - - .global MOD20_02254710 -MOD20_02254710: ; 0x02254710 - .word MOD20_02254340, MOD20_0225435C, MOD20_022543BC, MOD20_022543F4 - .word MOD20_0225440C - - .global MOD20_02254724 -MOD20_02254724: ; 0x02254724 - .word 0x00000020, 0x0000002A - .word 0x00000032, 0x0000002A - .word 0x000000A8, 0x0000007A - .word 0x000000C2, 0x0000003A - - .global MOD20_02254744 -MOD20_02254744: ; 0x02254744 - .short 0x001A, 0x0020, 0x0026, 0x002C, 0x0032, 0x0038, 0x003E, 0x0044 - .short 0x004A, 0x0050, 0x0056, 0x005C, 0x0062, 0x0068, 0x006E, 0x0074 - .short 0x007A, 0x0080, 0x0086, 0x008C, 0x0092, 0x0098, 0x009E, 0x00A4 - .short 0x00AA, 0x00B0, 0x00B6, 0x00BC, 0x00C2, 0x00C8 - - .global MOD20_02254780 -MOD20_02254780: ; 0x02254780 - .short 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x001E, 0x0024 - .short 0x002A, 0x0030, 0x0036, 0x003C, 0x0042, 0x0048, 0x004E, 0x0054 - .short 0x005A, 0x0060, 0x0066, 0x006C, 0x0072, 0x0078, 0x007E, 0x0084 - .short 0x008A, 0x0090, 0x0096, 0x009C, 0x00A2, 0x00A8, 0x00AE, 0x00B4 - .short 0x00BA - - .global MOD20_022547C2 -MOD20_022547C2: ; 0x022547C2 - .short 0x0156 - .byte 0x2F, 0x96 - .short 0x0157 - .byte 0x38, 0x90 - .short 0x0158 - .byte 0x41, 0x84 - .short 0x0159 - .byte 0x32, 0x7E - .short 0x015A - .byte 0x32, 0x78 - .short 0x015B - .byte 0x3E, 0x6C - .short 0x015D - .byte 0x4A, 0x5A - .short 0x015E - .byte 0x50, 0x6F - .short 0x0161 - .byte 0x53, 0x7E - .short 0x0162 - .byte 0x65, 0x7E - .short 0x0164 - .byte 0x7D, 0x7E - .short 0x016A - .byte 0x80, 0x66 - .short 0x016B - .byte 0x7A, 0x5A - .short 0x016D - .byte 0x5C, 0x5A - .short 0x016E - .byte 0x68, 0x5A - .short 0x016F - .byte 0x6E, 0x8A - .short 0x0173 - .byte 0x77, 0x96 - .short 0x0175 - .byte 0x98, 0x93 - .short 0x017C - .byte 0x98, 0x78 - .short 0x017E - .byte 0x8C, 0x66 - .short 0x017F - .byte 0x56, 0x42 - .short 0x0181 - .byte 0x50, 0x33 - .short 0x0184 - .byte 0x29, 0x84 - .short 0x0187 - .byte 0x38, 0x9C - .short 0x01D3 - .byte 0x3B, 0xA2 - .short 0x0188 - .byte 0x4A, 0xA2 - .short 0x018B - .byte 0xAA, 0x8A - .short 0x00C8 - .byte 0x44, 0x72 - .short 0x00CC - .byte 0x38, 0x66 - - .data - .bss diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index 0bff7b6e..08da06f3 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -352,7 +352,7 @@ _021D77D8: blt _021D77D8 ldr r0, [r6, #0x34] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C add r0, r6, #0 @@ -434,7 +434,7 @@ MOD53_021D78A8: ; 0x021D78A8 push {r4, lr} add r4, r0, #0 bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer add r0, r4, #0 bl DoScheduledBgGpuUpdates ldr r3, _021D78C8 ; =0x027E0000 @@ -2097,7 +2097,7 @@ _021D861E: lsl r0, r0, #2 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 _021D8660: add r0, r5, #0 bl MOD53_021D9440 @@ -2119,7 +2119,7 @@ _021D8672: lsl r0, r0, #2 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 bl MOD53_021D9440 mov r0, #0xb2 @@ -2446,7 +2446,7 @@ _021D8916: lsl r0, r0, #2 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 bl MOD53_021D9440 bl FUN_02031190 @@ -3640,7 +3640,7 @@ MOD53_021D91C8: ; 0x021D91C8 mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 cmp r4, #0 bne _021D9218 mov r4, #0 @@ -3691,11 +3691,11 @@ MOD53_021D925C: ; 0x021D925C mov r1, #0xb6 lsl r1, r1, #2 add r0, r0, r1 - ldr r3, _021D9268 ; =FUN_0200D0E0 + ldr r3, _021D9268 ; =ClearFrameAndWindow2 mov r1, #0 bx r3 .align 2, 0 -_021D9268: .word FUN_0200D0E0 +_021D9268: .word ClearFrameAndWindow2 thumb_func_end MOD53_021D925C thumb_func_start MOD53_021D926C diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 8795cd7f..c91a960a 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -301,7 +301,7 @@ _021D776C: blt _021D776C ldr r0, [r6, #0x50] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C add r0, r6, #0 @@ -400,7 +400,7 @@ MOD54_021D784C: ; 0x021D784C push {r4, lr} add r4, r0, #0 bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer add r0, r4, #0 bl DoScheduledBgGpuUpdates ldr r3, _021D786C ; =0x027E0000 @@ -3020,7 +3020,7 @@ MOD54_021D8C90: ; 0x021D8C90 mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 cmp r6, #0 bne _021D8D00 add r0, r5, #0 @@ -3082,11 +3082,11 @@ MOD54_021D8D40: ; 0x021D8D40 mov r1, #0xba lsl r1, r1, #2 add r0, r0, r1 - ldr r3, _021D8D4C ; =FUN_0200D0E0 + ldr r3, _021D8D4C ; =ClearFrameAndWindow2 mov r1, #0 bx r3 .align 2, 0 -_021D8D4C: .word FUN_0200D0E0 +_021D8D4C: .word ClearFrameAndWindow2 thumb_func_end MOD54_021D8D40 thumb_func_start MOD54_021D8D50 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index ce354a55..9c3b42a6 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -311,7 +311,7 @@ _021D7754: mov r1, #0 add r0, #0xec str r1, [r0] - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C mov r0, #0xeb @@ -370,7 +370,7 @@ _021D77E6: ldr r0, [r4, #4] bl DoScheduledBgGpuUpdates bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _021D7804 ; =0x027E0000 ldr r1, _021D7808 ; =0x00003FF8 mov r0, #1 @@ -2203,7 +2203,7 @@ MOD55_021D868C: ; 0x021D868C lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xce lsl r0, r0, #2 add r0, r5, r0 @@ -3295,7 +3295,7 @@ _021D8F1A: add r0, r5, r0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r5, #0x14] mov r1, #0 str r0, [sp, #0x1c] @@ -3448,7 +3448,7 @@ _021D9098: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe2 lsl r0, r0, #2 add r0, r5, r0 @@ -5404,7 +5404,7 @@ _021DA0D0: add r0, r5, r0 mov r1, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -5485,7 +5485,7 @@ _021DA17C: add r0, r5, r0 mov r1, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 add r2, r5, #0 str r3, [sp] @@ -5518,11 +5518,11 @@ MOD55_021DA214: ; 0x021DA214 mov r1, #0xce lsl r1, r1, #2 add r0, r0, r1 - ldr r3, _021DA220 ; =FUN_0200D0E0 + ldr r3, _021DA220 ; =ClearFrameAndWindow2 mov r1, #0 bx r3 .align 2, 0 -_021DA220: .word FUN_0200D0E0 +_021DA220: .word ClearFrameAndWindow2 thumb_func_end MOD55_021DA214 thumb_func_start MOD55_021DA224 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 61f44b88..76c24a3f 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -509,7 +509,7 @@ _022121EC: lsl r0, r0, #2 ldr r0, [r6, r0] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C add r0, r6, #0 @@ -577,7 +577,7 @@ MOD56_0221228C: ; 0x0221228C ldr r0, [r0] bl DoScheduledBgGpuUpdates bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _022122AC ; =0x027E0000 ldr r1, _022122B0 ; =0x00003FF8 mov r0, #1 @@ -1313,7 +1313,7 @@ MOD56_022128A4: ; 0x022128A4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xd7 lsl r0, r0, #2 add r0, r4, r0 @@ -1768,7 +1768,7 @@ _02212C74: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -1828,7 +1828,7 @@ _02212CEC: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -1896,7 +1896,7 @@ _02212D74: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -2279,7 +2279,7 @@ MOD56_02213048: ; 0x02213048 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -2336,7 +2336,7 @@ MOD56_022130A4: ; 0x022130A4 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -2747,7 +2747,7 @@ _022133DA: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -3515,7 +3515,7 @@ MOD56_02213990: ; 0x02213990 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdf lsl r0, r0, #2 add r0, r5, r0 @@ -3591,7 +3591,7 @@ MOD56_02213A40: ; 0x02213A40 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xd3 lsl r0, r0, #2 add r0, r4, r0 @@ -3655,7 +3655,7 @@ MOD56_02213A94: ; 0x02213A94 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xd7 lsl r0, r0, #2 add r0, r5, r0 @@ -5089,7 +5089,7 @@ _02214602: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r5, r0 @@ -5120,7 +5120,7 @@ _02214642: add r0, r5, r0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] @@ -5245,7 +5245,7 @@ _0221476E: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r5, r0 @@ -5286,7 +5286,7 @@ _022147CE: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r5, r0 @@ -5370,7 +5370,7 @@ _02214868: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r5, r0 @@ -5406,7 +5406,7 @@ _0221488C: add r0, r5, r0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] @@ -5506,7 +5506,7 @@ _02214994: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r5, r0 @@ -5704,7 +5704,7 @@ _02214ADC: add r0, r5, r0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] @@ -6064,7 +6064,7 @@ _02214DEC: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe3 lsl r0, r0, #2 add r0, r4, r0 @@ -6990,7 +6990,7 @@ MOD56_022154BC: ; 0x022154BC lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe7 lsl r0, r0, #2 add r0, r5, r0 @@ -7536,7 +7536,7 @@ MOD56_022159B0: ; 0x022159B0 add r4, r1, #0 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0xe7 lsl r0, r0, #2 add r0, r5, r0 @@ -8176,7 +8176,7 @@ MOD56_02215EA4: ; 0x02215EA4 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -8192,7 +8192,7 @@ _02215EE0: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xcf lsl r0, r0, #2 add r0, r5, r0 @@ -8279,7 +8279,7 @@ _02215F82: add r0, r5, r0 mov r1, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #1 bl TextFlags_SetCanABSpeedUpPrint mov r0, #0 @@ -8327,7 +8327,7 @@ MOD56_02215FF4: ; 0x02215FF4 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xdb lsl r0, r0, #2 add r0, r5, r0 @@ -8343,7 +8343,7 @@ _02216024: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xcf lsl r0, r0, #2 add r0, r5, r0 @@ -8395,7 +8395,7 @@ _02216048: add r0, r5, r0 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r3, #0 mov r0, #0xdb lsl r0, r0, #2 @@ -8487,7 +8487,7 @@ _02216154: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xcf lsl r0, r0, #2 add r0, r4, r0 @@ -8670,7 +8670,7 @@ _022162B8: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0xcf lsl r0, r0, #2 add r0, r4, r0 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index bbf164b2..ec406679 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -1941,7 +1941,7 @@ _021D8470: MOD57_021D848C: ; 0x021D848C push {r3, lr} bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _021D84A4 ; =0x027E0000 ldr r1, _021D84A8 ; =0x00003FF8 mov r0, #1 @@ -3996,7 +3996,7 @@ _021D94F4: blo _021D94F4 ldr r0, [r5] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r4, r5, r6, pc} diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index 1cdd6b43..88628998 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -247,7 +247,7 @@ _021D9C40: blt _021D9C40 ldr r0, [r6, #0x3c] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C add r0, r6, #0 @@ -287,7 +287,7 @@ MOD58_021D9CB4: ; 0x021D9CB4 push {r4, lr} add r4, r0, #0 bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer add r0, r4, #0 bl DoScheduledBgGpuUpdates ldr r3, _021D9CD4 ; =0x027E0000 @@ -1567,7 +1567,7 @@ _021DA70E: lsl r0, r0, #2 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _021DA784 ; =0x00005C9C ldr r0, [r5, r0] bl FUN_020146C4 @@ -1598,7 +1598,7 @@ _021DA748: lsl r0, r0, #2 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _021DA784 ; =0x00005C9C ldr r0, [r5, r0] bl FUN_020146C4 @@ -1638,7 +1638,7 @@ _021DA7A4: str r1, [r5, r0] sub r0, #0x38 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _021DA7F0 ; =0x00005C9C ldr r0, [r5, r0] bl FUN_020146C4 @@ -1659,7 +1659,7 @@ _021DA7D4: str r1, [r5, r0] sub r0, #0x38 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _021DA7F0 ; =0x00005C9C ldr r0, [r5, r0] bl FUN_020146C4 @@ -2224,7 +2224,7 @@ MOD58_021DAB94: ; 0x021DAB94 mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r5, #0xc] bl Options_GetTextFrameDelay mov r3, #0 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 27c05dd6..7cb6272f 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -630,7 +630,7 @@ _021D7C5E: add r0, #0x1c add r1, r4, #0 mov r3, #4 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #1 bl TextFlags_SetCanABSpeedUpPrint add r0, r4, #0 @@ -843,7 +843,7 @@ _021D7DF2: ldr r2, _021D7EC4 ; =0x000003D9 mov r1, #1 mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 add r0, #0x30 bl CopyWindowToVram @@ -867,7 +867,7 @@ _021D7E66: add r0, r5, #0 add r0, #0x30 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r5, #0 add r0, #0x30 bl RemoveWindow @@ -3145,24 +3145,24 @@ _021D90E2: add r2, r5, #0 mov r3, #0xb str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #1 mov r1, #0x10 add r2, r5, #0 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x33 str r0, [r4, #0xc] b _021D985C _021D9106: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #1 @@ -3170,24 +3170,24 @@ _021D9106: mov r2, #0x10 mov r3, #0xb str r0, [sp] - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #1 add r1, r5, #0 mov r2, #0x10 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x34 str r0, [r4, #0xc] b _021D985C _021D913E: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #1 @@ -3196,24 +3196,24 @@ _021D913E: mov r1, #0x10 add r2, r5, #0 mov r3, #0xb - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #4 mov r1, #0x10 add r2, r5, #0 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x35 str r0, [r4, #0xc] b _021D985C _021D9178: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D91F6 mov r0, #0x36 @@ -3244,14 +3244,14 @@ _021D9192: add r1, r5, #0 add r2, r0, #0 mov r3, #0xb - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #0x10 add r1, r5, #0 add r2, r0, #0 mov r3, #0xd - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #0x37 str r0, [r4, #0xc] b _021D985C @@ -3260,14 +3260,14 @@ _021D91E4: add r1, #0x94 bl MOD59_021D86BC mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 beq _021D91F8 _021D91F6: b _021D985C _021D91F8: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D92FA mov r0, #0x38 diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 6d3eade4..f2a76930 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -945,13 +945,13 @@ MOD60_021D7BA4: ; 0x021D7BA4 add r0, #0x3c mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r4, #0x4c ldr r2, _021D7CD0 ; =0x0000023B add r0, r4, #0 mov r1, #1 mov r3, #0xf - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add sp, #0x14 pop {r3, r4, pc} nop @@ -966,11 +966,11 @@ MOD60_021D7CD4: ; 0x021D7CD4 add r5, r0, #0 add r0, #0x3c mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r5, #0 add r0, #0x4c mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r6, #0 add r5, #0x2c add r7, r6, #0 diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index d58310fa..4c119173 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -301,7 +301,7 @@ _021D7702: mov r1, #1 mov r2, #0xa mov r3, #6 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 add r0, #0x94 mov r1, #0xff @@ -341,7 +341,7 @@ _021D775E: add r0, r5, #0 add r0, #0x94 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r0, #0x94 bl ClearWindowTilemapAndCopyToVram @@ -428,7 +428,7 @@ _021D77F2: mov r2, #0xa mov r3, #6 strb r1, [r5, #0x13] - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 add r0, #0x94 mov r1, #0xff @@ -496,7 +496,7 @@ _021D788A: add r0, r5, #0 add r0, #0x94 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r0, #0x94 bl ClearWindowTilemapAndCopyToVram diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 35c6e17d..722bfcff 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -2030,7 +2030,7 @@ _0222E4D0: ldr r0, [sp, #0x18] mov r2, #0x1f mov r3, #0xd - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x35 str r0, [sp] mov r0, #2 @@ -3328,7 +3328,7 @@ MOD62_0222EEE0: ; 0x0222EEE0 add r0, r5, #0 add r2, r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 mov r1, #0xf bl FillWindowPixelBuffer @@ -4600,7 +4600,7 @@ MOD62_0222F904: ; 0x0222F904 add r4, r0, #0 add r0, #0xfc mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0xfc bl ClearWindowTilemapAndCopyToVram @@ -6693,7 +6693,7 @@ _022309DC: lsl r0, r0, #2 add r0, r4, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x43 lsl r0, r0, #2 add r0, r4, r0 diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index 0dded682..77ecf51d 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -1136,11 +1136,11 @@ _021D7E18: b _021D824E _021D7E24: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D7E38 mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 beq _021D7E3A _021D7E38: @@ -1157,14 +1157,14 @@ _021D7E3A: mov r1, #0x10 add r2, r6, #0 mov r3, #6 - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #0xa mov r1, #0x10 add r2, r6, #0 mov r3, #7 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _021D80F0 ; =0x00000116 mov r1, #2 strh r1, [r4, r0] @@ -1188,11 +1188,11 @@ _021D7E7E: b _021D824E _021D7E8C: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D7F94 mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #1 bne _021D7F94 mov r0, #1 @@ -1201,14 +1201,14 @@ _021D7E8C: add r1, r6, #0 mov r2, #0x10 mov r3, #6 - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #2 str r0, [sp] mov r0, #0xa add r1, r6, #0 mov r2, #0x10 mov r3, #7 - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, _021D80F0 ; =0x00000116 mov r1, #3 strh r1, [r4, r0] @@ -1759,11 +1759,11 @@ _021D8272: add r0, r4, #0 mov r1, #6 mov r2, #1 - bl FUN_0200A274 + bl SetBrightness add r0, r4, #0 mov r1, #7 mov r2, #2 - bl FUN_0200A274 + bl SetBrightness add r0, r5, #0 mov r1, #2 add r0, #0xa4 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index 0fd84316..18a7c3b2 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -502,17 +502,17 @@ _021D8CA4: .word 0x04000580 thumb_func_start MOD63_021D8CA8 MOD63_021D8CA8: ; 0x021D8CA8 - ldr r3, _021D8CAC ; =FUN_02009F80 + ldr r3, _021D8CAC ; =ApplyAndResetOamManagerBuffer bx r3 .align 2, 0 -_021D8CAC: .word FUN_02009F80 +_021D8CAC: .word ApplyAndResetOamManagerBuffer thumb_func_end MOD63_021D8CA8 thumb_func_start MOD63_021D8CB0 MOD63_021D8CB0: ; 0x021D8CB0 push {r4, lr} add r4, r0, #0 - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r0, [r4, #0x4c] bl MOD63_021DB598 pop {r4, pc} @@ -565,7 +565,7 @@ _021D8D0C: .word 0x0000209F MOD63_021D8D10: ; 0x021D8D10 push {r4, lr} add r4, r0, #0 - bl FUN_0200A2AC + bl InitAllScreenBrightnessData ldr r1, _021D8D90 ; =0x00007FFF mov r0, #0 bl FUN_0200E3A0 @@ -1599,7 +1599,7 @@ _021D950C: mov r0, #0x10 mov r1, #1 mov r2, #2 - bl FUN_0200A274 + bl SetBrightness mov r0, #1 add r5, #0x36 strb r0, [r5] @@ -2178,7 +2178,7 @@ _021D9A42: mov r1, #0 mov r2, #0x10 mov r3, #1 - bl FUN_0200A208 + bl StartBrightnessTransition ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] diff --git a/arm9/modules/63/asm/mod63_021DA640.s b/arm9/modules/63/asm/mod63_021DA640.s index 5bcdfbd2..698fc468 100644 --- a/arm9/modules/63/asm/mod63_021DA640.s +++ b/arm9/modules/63/asm/mod63_021DA640.s @@ -504,7 +504,7 @@ _021DAA32: blo _021DAA32 ldr r0, [r5] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/63/asm/mod63_021DAE5C.s b/arm9/modules/63/asm/mod63_021DAE5C.s index efa1a033..fe1e0252 100644 --- a/arm9/modules/63/asm/mod63_021DAE5C.s +++ b/arm9/modules/63/asm/mod63_021DAE5C.s @@ -377,7 +377,7 @@ _021DB126: blo _021DB126 ldr r0, [r5] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r4, r5, r6, pc} diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index ce6e5e5e..aaf61da1 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -308,7 +308,7 @@ _021D7726: MOD64_021D77A4: ; 0x021D77A4 push {r4, lr} add r4, r0, #0 - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer add r0, r4, #0 add r0, #0x94 ldr r0, [r0] @@ -384,7 +384,7 @@ MOD64_021D7810: ; 0x021D7810 thumb_func_start MOD64_021D7828 MOD64_021D7828: ; 0x021D7828 push {r3, lr} - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C bl MOD64_021D7964 @@ -711,7 +711,7 @@ MOD64_021D7A54: ; 0x021D7A54 ldr r0, [r5] lsl r2, r2, #8 add r3, r1, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 @@ -2336,7 +2336,7 @@ _021D86F8: add r0, r5, #0 lsl r2, r2, #8 add r3, r1, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r6, #0 bl String_dtor add r0, r4, #0 @@ -2393,7 +2393,7 @@ _021D8770: add r0, r5, #0 lsl r2, r2, #8 add r3, r1, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r6, #0 bl DestroyMsgData add r0, r4, #0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 0e8bbfba..932f17df 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -542,7 +542,7 @@ _021D78FC: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #1 strh r0, [r4, #0x18] mov r0, #0 @@ -577,7 +577,7 @@ _021D7940: lsl r0, r0, #2 add r0, r4, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0x42 lsl r0, r0, #2 add r0, r4, r0 @@ -1393,7 +1393,7 @@ MOD65_021D7FAC: ; 0x021D7FAC add r0, r5, r0 add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _021D7FCA: mov r0, #0xd8 str r0, [sp] @@ -2268,7 +2268,7 @@ _021D8648: mov r1, #1 mov r2, #0x1f mov r3, #0xf - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r3, [r5] add r0, r5, #0 mov r1, #0 @@ -2293,7 +2293,7 @@ MOD65_021D86BC: ; 0x021D86BC lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0x46 lsl r0, r0, #2 add r0, r4, r0 @@ -3838,7 +3838,7 @@ MOD65_021D92C4: ; 0x021D92C4 add r0, #0x6c add r2, r1, #0 mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 add r0, #0x6c mov r1, #0xff @@ -3914,7 +3914,7 @@ _021D9366: add r0, r4, #0 add r0, #0x6c mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r4, #0x6c add r0, r4, #0 bl ClearWindowTilemapAndCopyToVram diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s index ca8faeb0..ec275cac 100644 --- a/arm9/modules/66/asm/module_66.s +++ b/arm9/modules/66/asm/module_66.s @@ -1347,7 +1347,7 @@ _021D7F44: lsr r0, r0, #0x18 str r0, [sp] add r0, r7, #0 - bl FUN_0200D6F8 + bl DrawFrameAndWindow3 add r0, r7, #0 mov r1, #0xf bl FillWindowPixelBuffer @@ -2052,7 +2052,7 @@ MOD66_021D8494: ; 0x021D8494 mov r2, #0 lsl r1, r1, #0x18 lsr r1, r1, #0x1c - bl FUN_0200D7A0 + bl ClearFrameAndWindow3 ldr r0, [r6, #0x28] mov r1, #4 bl ScheduleBgTilemapBufferTransfer diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 1667a6f0..78dbeb0f 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -712,7 +712,7 @@ MOD69_0222DB2C: ; 0x0222DB2C str r1, [r0] ldr r0, [r4, #0x24] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer _0222DB8E: add sp, #8 pop {r4, pc} @@ -1451,7 +1451,7 @@ _0222E1C2: bl FreeToHeap ldr r0, [r6, #0x24] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -4231,4 +4231,3 @@ MOD69_0222F940: ; 0x0222F940 .global MOD69_0222F960 MOD69_0222F960: ; 0x0222F960 .space 0x20 - diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index 8dc21247..e2ede862 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -524,7 +524,7 @@ MOD70_021D78A0: ; 0x021D78A0 bl DestroyMsgData ldr r0, [r4, #0x34] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData ldr r0, [r4, #0x10] bl FreeToHeap add r0, r4, #0 @@ -538,7 +538,7 @@ MOD70_021D790C: ; 0x021D790C push {r3, lr} ldr r0, [r0, #0x34] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _021D7928 ; =0x027E0000 ldr r1, _021D792C ; =0x00003FF8 mov r0, #1 @@ -890,14 +890,14 @@ MOD70_021D7AF4: ; 0x021D7AF4 mov r1, #0 lsr r2, r2, #0x10 mov r3, #2 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 lsl r2, r4, #0x10 add r0, #0x24 mov r1, #0 lsr r2, r2, #0x10 mov r3, #2 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r5, #0x10] mov r1, #1 bl BgCommitTilemapBufferToVram diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 5ece5081..9499d99e 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1208,7 +1208,7 @@ _0222DFD6: mov r0, #8 sub r2, #0x10 mov r3, #0x1e - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #1 add r1, r0, #0 bl ToggleBgLayer @@ -1227,7 +1227,7 @@ _0222DFD6: b _0222E0E8 _0222E010: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _0222E0E8 ldr r0, _0222E0F8 ; =0x00002218 @@ -1264,7 +1264,7 @@ _0222E054: mov r0, #8 sub r2, #0x10 mov r3, #0x17 - bl FUN_0200A208 + bl StartBrightnessTransition mov r0, #4 mov r1, #1 bl ToggleBgLayer @@ -1285,13 +1285,13 @@ _0222E054: b _0222E0E8 _0222E094: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _0222E0E8 ldr r0, _0222E110 ; =0x000005A8 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r1, #0 str r1, [sp] mov r0, #0x20 @@ -1661,7 +1661,7 @@ _0222E3AC: lsl r0, r0, #2 ldr r0, [r6, r0] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r3, r4, r5, r6, r7, pc} @@ -1827,7 +1827,7 @@ MOD71_0222E4DC: ; 0x0222E4DC str r1, [r5, r0] _0222E52E: bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _0222E550 ; =0x027E0000 ldr r1, _0222E554 ; =0x00003FF8 mov r0, #1 @@ -4374,7 +4374,7 @@ _0222F9E4: ldr r0, _0222FA30 ; =0x00003684 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _0222FA30 ; =0x00003684 add r0, r5, r0 bl RemoveWindow @@ -6984,14 +6984,14 @@ MOD71_02230F40: ; 0x02230F40 add r0, r5, #0 mov r1, #0 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 b _02230F76 _02230F6A: ldr r2, _02230FA8 ; =0x000001F7 add r0, r5, #0 mov r1, #0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _02230F76: add r0, r5, #0 mov r1, #0xf @@ -7070,7 +7070,7 @@ MOD71_02231004: ; 0x02231004 ldr r2, _02231014 ; =0x000001F7 mov r1, #0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 pop {r3, pc} nop _02231014: .word 0x000001F7 @@ -7102,7 +7102,7 @@ MOD71_02231018: ; 0x02231018 add r0, r4, #0 mov r1, #0 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r3, _02231090 ; =0x022313D4 add r2, sp, #0x14 add r7, r2, #0 diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index 28b61540..4fe0dba7 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -2403,7 +2403,7 @@ _021D88AA: MOD73_021D88B0: ; 0x021D88B0 push {r4, lr} add r4, r0, #0 - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r0, [r4, #0x20] cmp r0, #0 beq _021D88C2 @@ -2635,7 +2635,7 @@ _021D8A70: .word 0x00200010 thumb_func_start MOD73_021D8A74 MOD73_021D8A74: ; 0x021D8A74 push {r3, lr} - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r3, pc} @@ -4816,7 +4816,7 @@ MOD73_021D9AC8: ; 0x021D9AC8 ldr r0, [r4, #8] mov r2, #1 add r3, r1, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 pop {r4, pc} thumb_func_end MOD73_021D9AC8 @@ -5006,7 +5006,7 @@ MOD73_021D9BE0: ; 0x021D9BE0 ldr r0, [r5, #8] add r2, r1, #0 mov r3, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 @@ -6189,7 +6189,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 mov r1, #0 mov r2, #0x1f mov r3, #1 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r4, #0x10] mov r1, #0xf bl FillWindowPixelBuffer @@ -6208,7 +6208,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 mov r1, #0 mov r2, #0x1f mov r3, #1 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r4, #0xc] bl ScheduleWindowCopyToVram ldr r0, [r4, #0x10] @@ -6570,7 +6570,7 @@ _021DA7EC: ldr r0, [r4, #0x14] mov r2, #1 add r3, r1, #0 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4, #0x14] bl ScheduleWindowCopyToVram add sp, #0x10 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 23d75c48..3726aeb3 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -4461,7 +4461,7 @@ MOD75_021E8E1C: ; 0x021E8E1C add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 bl MOD75_021EB660 ldr r1, _021E8EAC ; =0x00000426 @@ -4501,7 +4501,7 @@ _021E8ED2: add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -4573,7 +4573,7 @@ _021E8F3A: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 bl MOD75_021EB660 ldr r1, _021E8FBC ; =0x00000426 @@ -4692,7 +4692,7 @@ _021E9046: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 bl MOD75_021EB660 ldr r1, _021E91AC ; =0x00000426 @@ -4831,7 +4831,7 @@ _021E917A: add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -5108,7 +5108,7 @@ _021E93AA: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 bl MOD75_021EB660 ldr r1, _021E9430 ; =0x00000426 @@ -5136,7 +5136,7 @@ _021E93F0: add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _021E9428 ; =0x00000483 mov r1, #2 strb r1, [r4, r0] @@ -5504,7 +5504,7 @@ _021E96EC: add r0, r5, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -5574,7 +5574,7 @@ _021E9772: strb r1, [r4, r0] add r0, r4, #0 add r0, #0x64 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -5717,7 +5717,7 @@ _021E9872: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r2, r5, #0 add r2, #0xc4 ldr r2, [r2] @@ -5804,7 +5804,7 @@ _021E9952: add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -5870,7 +5870,7 @@ _021E99C6: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r2, r5, #0 add r2, #0xc4 ldr r2, [r2] @@ -6096,7 +6096,7 @@ _021E9BAC: add r0, r4, #0 add r0, #0x74 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x64 mov r1, #0xf @@ -6191,7 +6191,7 @@ _021E9C80: add r0, r4, #0 add r0, #0x74 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x64 mov r1, #0xf @@ -6247,15 +6247,15 @@ _021E9D00: add r0, r4, #0 add r0, #0x84 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x74 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -6439,11 +6439,11 @@ _021E9EA2: add r0, r5, #0 add r0, #0x84 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r5, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -6560,11 +6560,11 @@ _021E9F96: add r0, r4, #0 add r0, #0x84 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x64 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x14 bl ScheduleWindowCopyToVram @@ -6660,7 +6660,7 @@ _021EA016: add r0, #0x64 mov r1, #0 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 bl MOD75_021EB660 ldr r1, _021EA0C8 ; =0x00000426 @@ -8998,7 +8998,7 @@ _021EB298: ldr r2, _021EB33C ; =0x000003D9 add r0, r4, r6 mov r1, #1 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, r6 mov r1, #0xf bl FillWindowPixelBuffer @@ -9055,7 +9055,7 @@ _021EB31E: add r0, #0xb4 mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r5, #0xb4 add r0, r5, #0 bl ScheduleWindowCopyToVram @@ -9093,14 +9093,14 @@ _021EB364: add r4, r5, #4 add r0, r4, r6 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, r6 bl ClearWindowTilemapAndScheduleTransfer _021EB37A: add r0, r5, #0 add r0, #0xb4 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r5, #0 add r0, #0xb4 bl ClearWindowTilemapAndScheduleTransfer @@ -9202,7 +9202,7 @@ MOD75_021EB454: ; 0x021EB454 add r0, #0x94 mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 bl MOD75_021EB504 add r0, r5, #0 @@ -9210,7 +9210,7 @@ MOD75_021EB454: ; 0x021EB454 add r0, #0x34 mov r1, #1 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 add r0, #0x34 mov r1, #0xf @@ -9335,11 +9335,11 @@ MOD75_021EB580: ; 0x021EB580 add r4, r0, #0 add r0, #0x34 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 add r0, #0x94 mov r1, #1 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r4, #0 add r0, #0x34 bl ClearWindowTilemapAndScheduleTransfer @@ -9361,7 +9361,7 @@ MOD75_021EB5B0: ; 0x021EB5B0 add r0, #0x64 mov r1, #1 mov r3, #0xc - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r5, #0 add r0, #0x64 mov r1, #0xf @@ -9539,7 +9539,7 @@ MOD75_021EB708: ; 0x021EB708 add r0, r4, #0 mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _021EB722: add r0, r4, #0 mov r1, #0xf @@ -9659,7 +9659,7 @@ MOD75_021EB808: ; 0x021EB808 add r0, r4, #0 mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9760,7 +9760,7 @@ MOD75_021EB8E8: ; 0x021EB8E8 add r0, r4, #0 mov r1, #1 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index ae83c7a7..8c70dc91 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -484,7 +484,7 @@ _021D78A8: mov r1, #0 mov r2, #0xa mov r3, #0xd - bl FUN_0200D0BC + bl DrawFrameAndWindow2 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D78E4: .word MOD76_021D8FC4 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 4b8e4702..25e3330a 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -607,7 +607,7 @@ _021D79D0: add r0, r4, r0 mov r1, #0 mov r3, #7 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, _021D7B84 ; =0x0000C314 ldr r0, [r4, r0] cmp r0, #0 @@ -644,7 +644,7 @@ _021D7A4E: ldr r0, _021D7B7C ; =0x0000C034 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _021D7B98 ; =0x000005DD bl PlaySE mov r0, #0xd8 @@ -1438,7 +1438,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r0, r5, r0 mov r1, #0 mov r3, #6 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, _021D8228 ; =0x0000C064 mov r3, #0 str r3, [r5, r0] @@ -1819,7 +1819,7 @@ _021D83B2: ldr r0, [sp, #0x10] mov r1, #1 mov r3, #7 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp] bl CopyWindowToVram add sp, #0x24 @@ -1909,7 +1909,7 @@ _021D8462: ldr r0, [sp, #0x18] mov r1, #1 mov r3, #7 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp] bl CopyWindowToVram add sp, #0x2c @@ -1929,7 +1929,7 @@ MOD77_021D84D8: ; 0x021D84D8 ldr r0, _021D8504 ; =0x0000C024 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _021D8504 ; =0x0000C024 add r0, r4, r0 bl RemoveWindow @@ -1984,7 +1984,7 @@ MOD77_021D8510: ; 0x021D8510 add r0, r5, r0 mov r1, #0 mov r3, #7 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, _021D85D4 ; =0x0000C070 ldr r2, _021D85D8 ; =0x0000C314 ldr r0, [r5, r0] @@ -2073,7 +2073,7 @@ MOD77_021D85E0: ; 0x021D85E0 add r0, r5, r0 mov r1, #0 mov r3, #7 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [r5] add r1, r4, #0 str r0, [sp] @@ -2127,7 +2127,7 @@ MOD77_021D8698: ; 0x021D8698 ldr r0, _021D86B0 ; =0x0000C044 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _021D86B0 ; =0x0000C044 add r0, r4, r0 bl RemoveWindow diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index fae0c264..5ffe3380 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1712,7 +1712,7 @@ MOD80_0222E2E0: ; 0x0222E2E0 str r1, [r4, r0] _0222E2F4: bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _0222E310 ; =0x027E0000 ldr r1, _0222E314 ; =0x00003FF8 mov r0, #1 @@ -2389,7 +2389,7 @@ _0222E824: ldr r0, _0222E858 ; =0x00000B84 mov r1, #0 str r1, [r6, r0] - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r3, r4, r5, r6, r7, pc} @@ -3547,7 +3547,7 @@ MOD80_0222F14C: ; 0x0222F14C bne _0222F18A add r0, r4, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _0222F1B0 ; =0x00000FB8 add r0, r4, r0 bl ClearWindowTilemapAndCopyToVram @@ -3561,7 +3561,7 @@ MOD80_0222F14C: ; 0x0222F14C _0222F18A: add r0, r4, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _0222F1B0 ; =0x00000FB8 add r0, r4, r0 bl ClearWindowTilemapAndCopyToVram @@ -3684,7 +3684,7 @@ MOD80_0222F250: ; 0x0222F250 add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -3726,7 +3726,7 @@ MOD80_0222F2A8: ; 0x0222F2A8 add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -4524,7 +4524,7 @@ MOD80_0222F918: ; 0x0222F918 mov r1, #0 add r0, r4, r0 str r1, [r4, #0x2c] - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 b _0222F956 _0222F942: mov r0, #2 @@ -4598,7 +4598,7 @@ MOD80_0222F96C: ; 0x0222F96C mov r1, #0 mov r3, #0xb str r0, [sp, #0xc] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x3e str r0, [sp] mov r0, #2 @@ -4651,7 +4651,7 @@ _0222FA26: ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r4, r5, #0 add r4, #0xd4 add r0, r4, #0 @@ -4706,7 +4706,7 @@ _0222FAA4: ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #2 str r0, [r5, #0x2c] add r0, r5, #0 @@ -4811,7 +4811,7 @@ MOD80_0222FB3C: ; 0x0222FB3C add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -5989,7 +5989,7 @@ MOD80_022304F8: ; 0x022304F8 add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -7650,11 +7650,11 @@ _02231266: ldr r0, _022312C0 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _022312C4 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _022312C0 ; =0x00000ED8 add r0, r4, r0 bl RemoveWindow @@ -7754,7 +7754,7 @@ _02231342: ldr r0, _0223146C ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02231470 ; =0x000005DC bl PlaySE mov r0, #4 @@ -7787,11 +7787,11 @@ _0223138C: ldr r0, _02231474 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _0223146C ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02231474 ; =0x00000ED8 add r0, r4, r0 bl RemoveWindow @@ -7987,11 +7987,11 @@ _0223154A: ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _022315FC ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _022315F8 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -8012,7 +8012,7 @@ _0223158E: ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _022315F8 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -8160,11 +8160,11 @@ _022316D0: ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02231778 ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02231774 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -8185,7 +8185,7 @@ _0223170C: ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02231774 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -8383,7 +8383,7 @@ MOD80_0223187C: ; 0x0223187C add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -9855,7 +9855,7 @@ MOD80_02232470: ; 0x02232470 mov r1, #1 mov r3, #0xb str r0, [sp, #0xc] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x3e str r0, [sp] mov r0, #2 @@ -9916,7 +9916,7 @@ _02232546: ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #2 str r0, [r5, #0x2c] add r0, r5, #0 @@ -9936,7 +9936,7 @@ _02232574: ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r2, r5, #0 add r3, r5, #0 ldr r1, [r5] @@ -10020,11 +10020,11 @@ _0223262E: ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _0223266C ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #1 str r0, [r5, #0x2c] _0223265A: @@ -10095,7 +10095,7 @@ MOD80_02232670: ; 0x02232670 mov r1, #0 mov r3, #0xb str r0, [sp, #0xc] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x3e str r0, [sp] mov r0, #2 @@ -10156,7 +10156,7 @@ _02232746: ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #2 str r0, [r5, #0x2c] add r0, r5, #0 @@ -10176,7 +10176,7 @@ _02232774: ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r2, r5, #0 add r3, r5, #0 ldr r1, [r5] @@ -10243,11 +10243,11 @@ _0223280A: ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02232848 ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #1 str r0, [r5, #0x2c] _02232836: @@ -10420,7 +10420,7 @@ MOD80_02232950: ; 0x02232950 ldr r0, _0223298C ; =0x00000FB8 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #1 str r0, [r4, #0x2c] b _02232982 @@ -10574,7 +10574,7 @@ MOD80_02232A84: ; 0x02232A84 ldr r0, _02232AE4 ; =0x00000FB8 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #1 str r0, [r4, #0x2c] b _02232ADA @@ -10641,7 +10641,7 @@ MOD80_02232B08: ; 0x02232B08 ldr r0, _02232B30 ; =0x00000FB8 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, [r4, #0x30] str r0, [r4, #0x2c] _02232B2C: @@ -10684,7 +10684,7 @@ _02232B62: mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r6, [sp, #4] @@ -11663,7 +11663,7 @@ MOD80_022332EC: ; 0x022332EC add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -12284,11 +12284,11 @@ _02233820: ldr r0, _02233884 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233888 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02233884 ; =0x00000ED8 add r0, r4, r0 bl RemoveWindow @@ -12422,7 +12422,7 @@ _02233932: ldr r0, _02233A54 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233A58 ; =0x00000ED8 add r0, r4, r0 bl RemoveWindow @@ -12461,11 +12461,11 @@ _0223398C: ldr r0, _02233A58 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233A54 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233A58 ; =0x00000ED8 add r0, r4, r0 bl RemoveWindow @@ -12651,11 +12651,11 @@ _02233B26: ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233BD8 ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02233BD4 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -12676,7 +12676,7 @@ _02233B6A: ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233BD4 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -12823,11 +12823,11 @@ _02233CA4: ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233D78 ; =0x00000E98 mov r1, #0 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 ldr r0, _02233D74 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -12863,7 +12863,7 @@ _02233CFA: ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 ldr r0, _02233D74 ; =0x00000ED8 add r0, r5, r0 bl RemoveWindow @@ -13710,7 +13710,7 @@ _02234388: mov r2, #0x1f mov r3, #0xb str r0, [sp, #0x10] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0xfe lsl r0, r0, #4 ldr r2, [r7, r0] @@ -13903,7 +13903,7 @@ MOD80_022344DC: ; 0x022344DC mov r2, #0x1f mov r3, #0xb str r0, [sp, #0x24] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 lsl r1, r4, #1 ldr r2, _0223455C ; =0x0000101C add r3, r7, r1 @@ -13963,7 +13963,7 @@ _02234578: mov r2, #0x1f mov r3, #0xb str r0, [sp, #0x10] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0 add r0, sp, #4 add r2, r1, #0 @@ -14019,7 +14019,7 @@ _022345E8: mov r2, #0x1f mov r3, #0xb str r0, [sp, #0x10] - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0 add r0, sp, #4 add r2, r1, #0 @@ -18794,7 +18794,7 @@ _02236AC0: ldr r0, _02236AD8 ; =0x00000EC8 mov r1, #0 add r0, r4, r0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0 str r0, [r4, #0x2c] _02236ACE: @@ -19057,7 +19057,7 @@ MOD80_02236C70: ; 0x02236C70 add r0, r5, r0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -19212,7 +19212,7 @@ MOD80_02236D8C: ; 0x02236D8C add r0, r5, r0 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -19260,7 +19260,7 @@ _02236E16: ldr r0, _02236E44 ; =0x00000E98 mov r1, #1 add r0, r5, r0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r1, r4, #0 bl MOD80_02236D8C diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index df849b5e..ee333134 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -233,7 +233,7 @@ MOD81_02238004: ; 0x02238004 bl FreeToHeap ldr r0, [r4, #0x18] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData add r0, r5, #0 bl OverlayManager_FreeData mov r0, #0x39 @@ -327,7 +327,7 @@ MOD81_022380F4: ; 0x022380F4 push {r3, lr} ldr r0, [r1, #0x18] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _02238110 ; =0x027E0000 ldr r1, _02238114 ; =0x00003FF8 mov r0, #1 @@ -2482,7 +2482,7 @@ _022390F4: add r0, #0x44 mov r1, #0x6d mov r2, #2 - bl FUN_0200D06C + bl DrawWindowFrame2 add r0, r4, #0 add r0, #0x44 bl CopyWindowToVram @@ -2556,7 +2556,7 @@ _022391BE: add r0, r4, #0 add r0, #0x44 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] @@ -9606,7 +9606,7 @@ _0223C982: add r0, #0x48 mov r1, #0x6d mov r2, #2 - bl FUN_0200D06C + bl DrawWindowFrame2 add r0, r4, #0 add r0, #0x48 bl CopyWindowToVram @@ -9668,7 +9668,7 @@ _0223CA32: add r0, r4, #0 add r0, #0x48 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 01d50253..a799ebaa 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -900,7 +900,7 @@ _0222DCC0: .word 0x00000B78 MOD82_0222DCC4: ; 0x0222DCC4 push {r3, lr} bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _0222DCDC ; =0x027E0000 ldr r1, _0222DCE0 ; =0x00003FF8 mov r0, #1 @@ -1349,7 +1349,7 @@ _0222E018: mov r1, #0 lsl r0, r0, #4 str r1, [r6, r0] - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C pop {r3, r4, r5, r6, r7, pc} @@ -2533,7 +2533,7 @@ MOD82_0222E988: ; 0x0222E988 mov r1, #0 mov r2, #0x1f mov r3, #0xa - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0xb9 mov r0, #0xda lsl r1, r1, #4 @@ -3125,7 +3125,7 @@ MOD82_0222EE28: ; 0x0222EE28 mov r1, #0 mov r2, #0x1f mov r3, #0xa - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r1, _0222EE70 ; =0x00000B94 mov r0, #0xd9 lsl r0, r0, #4 @@ -3272,7 +3272,7 @@ MOD82_0222EF54: ; 0x0222EF54 mov r1, #0 mov r2, #0x1f mov r3, #0xa - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r1, #0xb9 mov r0, #0xda lsl r1, r1, #4 @@ -4044,7 +4044,7 @@ MOD82_0222F4D8: ; 0x0222F4D8 mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -4107,7 +4107,7 @@ _0222F584: lsl r0, r0, #6 add r0, r4, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #0 str r0, [r4, #0x1c] _0222F594: @@ -4139,7 +4139,7 @@ MOD82_0222F59C: ; 0x0222F59C mov r1, #0 mov r2, #1 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -4382,7 +4382,7 @@ MOD82_0222F740: ; 0x0222F740 mov r1, #1 mov r2, #0x1f mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -4432,7 +4432,7 @@ _0222F7D2: lsl r0, r0, #6 add r0, r5, r0 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, #0 add r1, r4, #0 bl MOD82_0222F740 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 06fa49b6..0c993cd6 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -82,7 +82,7 @@ _0222D63C: lsl r0, r0, #6 add r0, r5, r0 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 mov r0, #5 lsl r0, r0, #6 add r0, r5, r0 @@ -1127,7 +1127,7 @@ _0222DE76: mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x18 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r1, _0222DEC8 ; =MOD83_0223A854 ldr r0, [sp, #0x20] ldr r2, [r1, r0] @@ -1490,7 +1490,7 @@ _0222E104: mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x18 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp, #0x18] add r0, #0xe8 ldr r3, [r0] @@ -1593,7 +1593,7 @@ _0222E206: mov r1, #1 mov r2, #0xa mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 bl GetWindowX str r0, [sp, #0x10] @@ -1620,7 +1620,7 @@ _0222E256: add r0, r5, #0 add r2, r1, #0 mov r3, #2 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r5, #0 bl GetWindowX str r0, [sp, #0x18] @@ -1893,7 +1893,7 @@ MOD83_0222E464: ; 0x0222E464 push {r4, lr} add r4, r0, #0 bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer add r0, r4, #0 bl DoScheduledBgGpuUpdates ldr r3, _0222E484 ; =MOD83_027E0000 @@ -2149,7 +2149,7 @@ _0222E656: bl FUN_02032D80 _0222E692: mov r0, #0x51 - bl FUN_02089F24 + bl ShowGBACartRemovedError b _0222E6A8 _0222E69A: bl PlaySE @@ -2736,7 +2736,7 @@ _0222EB4E: add r0, r4, #0 add r0, #0x18 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r4, #0x18 add r0, r4, #0 bl RemoveWindow @@ -4731,7 +4731,7 @@ MOD83_0222FB44: ; 0x0222FB44 bne _0222FB5A add r0, r5, #0 add r1, r4, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 _0222FB5A: pop {r3, r4, r5, pc} thumb_func_end MOD83_0222FB44 @@ -5050,7 +5050,7 @@ _0222FDC6: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r1, _0222FDE4 ; =MOD83_0223ADD8 add r0, r6, #0 mov r2, #2 @@ -5138,7 +5138,7 @@ _0222FE76: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r2, #2 ldr r1, _0222FE9C ; =MOD83_0223ADC8 add r0, r6, #0 @@ -5192,7 +5192,7 @@ _0222FEE6: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x4e str r0, [sp] ldr r1, _0222FF0C ; =MOD83_0223AD98 @@ -5247,7 +5247,7 @@ _0222FF56: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x4d str r0, [sp] ldr r1, _0222FF7C ; =MOD83_0223ADA8 @@ -5294,7 +5294,7 @@ _0222FFB4: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #4 str r0, [sp] ldr r1, _0222FFD4 ; =MOD83_0223ADB8 @@ -5518,7 +5518,7 @@ _02230172: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #1 str r0, [sp] ldr r1, _02230198 ; =MOD83_0223AE20 @@ -5957,7 +5957,7 @@ _022304E6: mov r1, #1 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 ldr r0, [sp, #0x18] add r1, sp, #0x20 str r0, [sp] @@ -6026,7 +6026,7 @@ _0223057A: mov r1, #0 mov r2, #1 mov r3, #2 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 ldr r0, [r4, #0x10] bl DestroyMsgData ldr r0, [r4, #0xc] @@ -6075,7 +6075,7 @@ MOD83_022305A4: ; 0x022305A4 mov r1, #0 mov r2, #0x1f mov r3, #3 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 add r0, r4, #0 bl String_dtor add sp, #0x10 @@ -8110,7 +8110,7 @@ MOD83_022316C0: ; 0x022316C0 bne _022316D6 add r0, r5, #0 add r1, r4, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 _022316D6: pop {r3, r4, r5, pc} thumb_func_end MOD83_022316C0 @@ -8125,7 +8125,7 @@ MOD83_022316D8: ; 0x022316D8 bne _022316EE add r0, r5, #0 add r1, r4, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 _022316EE: pop {r3, r4, r5, pc} thumb_func_end MOD83_022316D8 @@ -9312,14 +9312,14 @@ _02232054: mov r1, #0 mov r2, #0x13 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 b _02232076 _0223206A: add r0, r6, #0 mov r1, #0 mov r2, #0xa mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _02232076: ldr r1, [r4, #0xc] ldr r0, [r4, #0x10] @@ -10560,14 +10560,14 @@ _02232A56: add r0, r4, r0 mov r2, #0x13 mov r3, #0xa - bl FUN_0200D0BC + bl DrawFrameAndWindow2 mov r0, #0xae lsl r0, r0, #6 add r0, r4, r0 mov r1, #0 mov r2, #0xa mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r0, #0x10 mov r1, #1 bl GX_EngineAToggleLayers @@ -15638,7 +15638,7 @@ _02235086: ldr r2, _022350B8 ; =0x000003D2 mov r1, #0 mov r3, #0xd - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add sp, #0x1c pop {r4, r5, r6, r7, pc} _022350A2: @@ -15646,7 +15646,7 @@ _022350A2: mov r1, #0 lsl r2, r2, #4 mov r3, #0xe - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 _022350AE: add sp, #0x1c pop {r4, r5, r6, r7, pc} @@ -17094,7 +17094,7 @@ _02235B7C: add r0, r4, r0 add r0, r1, r0 add r1, sp, #0 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, sp, #0 str r0, [sp, #0x4c] add r0, r5, #0 @@ -17237,7 +17237,7 @@ _02235CCA: add r0, #2 add r1, sp, #8 mov r2, #0xb - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, sp, #8 str r0, [sp, #0x64] mov r0, #0 @@ -17919,7 +17919,7 @@ MOD83_02236298: ; 0x02236298 cmp r1, #0 beq _022362B4 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r4, #0 bl ClearWindowTilemapAndCopyToVram add r0, r4, #0 @@ -18085,7 +18085,7 @@ _022363E2: bl FUN_0201FD58 mov r0, #0 str r0, [r6, #0x28] - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C ldr r0, _02236448 ; =0x0000E88C @@ -18156,7 +18156,7 @@ MOD83_02236484: ; 0x02236484 add r0, r4, #0 add r1, sp, #8 mov r2, #8 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational mov r0, #0x4e bl ScrStrBufs_new add r4, r0, #0 @@ -18217,7 +18217,7 @@ MOD83_0223650C: ; 0x0223650C str r1, [r4, r0] _02236520: bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r0, [r4, #0x20] bl DoScheduledBgGpuUpdates ldr r3, _02236540 ; =MOD83_027E0000 @@ -18582,7 +18582,7 @@ MOD83_02236804: ; 0x02236804 beq _02236828 _02236822: mov r0, #0x4e - bl FUN_02089F24 + bl ShowGBACartRemovedError _02236828: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -22504,7 +22504,7 @@ _022384FE: add r0, sp, #0x24 add r1, sp, #0xc mov r2, #0xc - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, r4, #0 mov r1, #0x75 add r2, sp, #0xc @@ -22541,7 +22541,7 @@ _0223853E: add r0, sp, #0x24 add r1, sp, #0xc mov r2, #8 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, r4, #0 mov r1, #0x8f add r2, sp, #0xc @@ -23258,7 +23258,7 @@ _02238AB8: mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x18 - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 b _02238AEC _02238ADA: ldr r2, [r4, #0x38] @@ -23268,7 +23268,7 @@ _02238ADA: mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x18 - bl FUN_0200D0BC + bl DrawFrameAndWindow2 _02238AEC: add r0, r5, #0 add sp, #0x14 @@ -23784,7 +23784,7 @@ _02238EB0: ldr r0, _02238EF0 ; =MOD83_0223BC60 mov r1, #0 str r1, [r0] - bl FUN_02009FA0 + bl DeinitOamData bl FUN_0201D12C bl FUN_0201E08C mov r0, #0 @@ -23826,7 +23826,7 @@ MOD83_02238F00: ; 0x02238F00 str r1, [r4, r0] _02238F1E: bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r3, _02238F3C ; =MOD83_027E0000 ldr r1, _02238F40 ; =0x00003FF8 mov r0, #1 diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s index c9bff482..8c7c35e8 100644 --- a/arm9/modules/84/asm/module_84_thumb1.s +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -260,7 +260,7 @@ _021D771A: add r5, #0xdc ldr r0, [r5] bl FUN_0201FD58 - bl FUN_02009FA0 + bl DeinitOamData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -552,7 +552,7 @@ MOD84_021D7958: ; 0x021D7958 add r1, #0xdc ldr r0, [r1] bl FUN_0201FDEC - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer pop {r3, pc} thumb_func_end MOD84_021D7958 diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s index d97e5a59..cb5660e4 100644 --- a/arm9/modules/84/asm/module_84_thumb2.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -1067,14 +1067,14 @@ _021D8914: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D8950 _021D893A: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D8950 ldr r0, [r5, #8] @@ -1322,14 +1322,14 @@ _021D8AF4: mov r0, #0x20 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D8B66 _021D8B16: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D8B66 ldr r0, [r4] @@ -1350,14 +1350,14 @@ _021D8B28: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D8B66 _021D8B4E: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D8B66 mov r0, #1 @@ -1622,14 +1622,14 @@ _021D8D2C: mov r0, #0x20 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021D8DE6 _021D8D56: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D8DE6 ldr r0, _021D8DEC ; =0x00000DF4 @@ -1680,14 +1680,14 @@ _021D8D9E: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021D8DE6 _021D8DC8: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D8DE6 mov r0, #1 @@ -2481,14 +2481,14 @@ _021D93FC: mov r0, #0x20 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D946E _021D941E: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D946E ldr r0, [r4] @@ -2509,14 +2509,14 @@ _021D9430: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D946E _021D9456: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D946E mov r0, #1 @@ -2790,14 +2790,14 @@ _021D9654: mov r0, #0x10 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021D97F0 _021D966E: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D96D2 mov r1, #0 @@ -2960,14 +2960,14 @@ _021D97B0: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021D97F0 _021D97D8: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D97F0 ldr r0, [r4, #0x4c] @@ -3354,14 +3354,14 @@ _021D9ABC: mov r0, #0x20 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D9B2E _021D9ADE: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D9B2E ldr r0, [r4] @@ -3382,14 +3382,14 @@ _021D9AF0: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D9B2E _021D9B16: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D9B2E mov r0, #1 @@ -3661,14 +3661,14 @@ _021D9D0E: mov r0, #0x20 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DA068 _021D9D28: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021D9E16 mov r1, #0 @@ -3977,14 +3977,14 @@ _021D9F90: sub r1, #0x30 mov r2, #0 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DA068 _021D9FBE: mov r0, #3 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DA068 mov r0, #1 @@ -4049,14 +4049,14 @@ _021DA02A: mov r0, #0x10 sub r2, #0x10 mov r3, #0x1d - bl FUN_0200A208 + bl StartBrightnessTransition ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DA068 _021DA058: mov r0, #1 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _021DA068 add sp, #0x10 diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index 042746c2..2733fd96 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -843,7 +843,7 @@ MOD85_021D7BEC: ; 0x021D7BEC mov r1, #1 mov r2, #0x1f mov r3, #0xe - bl FUN_0200D0BC + bl DrawFrameAndWindow2 add r0, r4, #0 add r0, #8 mov r1, #0xf @@ -880,7 +880,7 @@ MOD85_021D7C44: ; 0x021D7C44 add r0, r5, r4 add r0, #8 mov r1, #1 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r0, r5, r4 add r0, #8 mov r1, #0 @@ -979,7 +979,7 @@ MOD85_021D7D04: ; 0x021D7D04 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD85_021DE710 - bl FUN_02009FA0 + bl DeinitOamData pop {r4, pc} thumb_func_end MOD85_021D7D04 @@ -1459,7 +1459,7 @@ MOD85_021D80DC: ; 0x021D80DC push {r4, lr} add r4, r0, #0 bl FUN_0201C30C - bl FUN_02009F80 + bl ApplyAndResetOamManagerBuffer ldr r0, _021D80F4 ; =0x0000043C ldr r0, [r4, r0] bl DoScheduledBgGpuUpdates diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c index 28147dbd..348a398a 100644 --- a/arm9/src/GX_layers.c +++ b/arm9/src/GX_layers.c @@ -96,7 +96,7 @@ THUMB_FUNC void GX_BothDispOn() THUMB_FUNC void GX_SwapDisplay() { - if (gMain.unk65 == 0) + if (gMain.screensFlipped == 0) { GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB); } diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c index 2986645f..f1a5e525 100644 --- a/arm9/src/bg_window.c +++ b/arm9/src/bg_window.c @@ -1366,7 +1366,7 @@ THUMB_FUNC void CopyBgTilemapRectAffine(struct Bg *bg, } THUMB_FUNC void FillBgTilemapRect(struct BgConfig *bgConfig, - u32 bgId, + u8 bgId, u16 fillValue, u8 x, u8 y, diff --git a/arm9/src/brightness.c b/arm9/src/brightness.c new file mode 100644 index 00000000..59e96fd3 --- /dev/null +++ b/arm9/src/brightness.c @@ -0,0 +1,198 @@ +#include "global.h" +#include "brightness.h" +#include "GX_g2.h" +#include "MI_memory.h" + +struct BrightnessData mainScreenBrightnessData; + +struct BrightnessData subScreenBrightnessData; + +THUMB_FUNC void DoBrightnessTransitionStep(struct BrightnessData *brightness) +{ + BOOL transitionFinished = FALSE; + + if (brightness->target_brightness != + brightness->current_brightness + + brightness->transition_direction * brightness->step_size_integer && + brightness->current_brightness != brightness->target_brightness) + { + brightness->current_brightness += + brightness->transition_direction * brightness->step_size_integer; + brightness->fractional_count += brightness->step_size_fractional; + + if (brightness->fractional_count >= brightness->step_count) + { + brightness->current_brightness += brightness->transition_direction; + if (brightness->current_brightness != brightness->target_brightness) + { + brightness->fractional_count -= brightness->step_count; + } + else + { + transitionFinished = TRUE; + } + } + } + else + { + brightness->current_brightness = brightness->target_brightness; + transitionFinished = TRUE; + } + + if ((brightness->screenMask & 1) != 0) + { + G2x_SetBlendBrightness_( + ®_G2_BLDCNT, brightness->surfaceMask, brightness->current_brightness); + } + else if ((brightness->screenMask & 2) != 0) + { + G2x_SetBlendBrightness_( + ®_G2S_DB_BLDCNT, brightness->surfaceMask, brightness->current_brightness); + } + + if (transitionFinished == TRUE) + { + brightness->transitionActive = FALSE; + } +} + +THUMB_FUNC void InitBrightnessTransition(struct BrightnessData *brightnessData, + u16 step_count, + s16 target_brightness, + s16 start_brightness, + fx32 surfaceMask, + u32 screenMask) +{ + GF_ASSERT(!brightnessData->transitionActive); + + brightnessData->transitionActive = TRUE; + brightnessData->surfaceMask = (u8)surfaceMask; + brightnessData->screenMask = (u8)screenMask; + brightnessData->step_count = step_count; + brightnessData->target_brightness = target_brightness; + brightnessData->current_brightness = start_brightness; + brightnessData->brightness_diff = (s16)(start_brightness - target_brightness); + + if (brightnessData->brightness_diff > 0) + { + brightnessData->transition_direction = -1; + } + else + { + brightnessData->transition_direction = 1; + brightnessData->brightness_diff *= -1; + } + + brightnessData->step_size_integer = (s16)(brightnessData->brightness_diff / step_count); + brightnessData->step_size_fractional = (u16)(brightnessData->brightness_diff % step_count); + brightnessData->fractional_count = 0; +} + +THUMB_FUNC void StartBrightnessTransition( + u16 step_count, s16 target_brightness, s16 start_brightness, fx32 surfaceMask, u32 screenMask) +{ + if (step_count != 0) + { + if ((screenMask & 1) != 0) + { + G2x_SetBlendBrightness_(®_G2_BLDCNT, surfaceMask, start_brightness); + InitBrightnessTransition(&mainScreenBrightnessData, + step_count, + target_brightness, + start_brightness, + surfaceMask, + 1); + } + + if ((screenMask & 2) != 0) + { + G2x_SetBlendBrightness_(®_G2S_DB_BLDCNT, surfaceMask, start_brightness); + InitBrightnessTransition(&subScreenBrightnessData, + step_count, + target_brightness, + start_brightness, + surfaceMask, + 2); + } + } +} + +THUMB_FUNC void SetBrightness(fx32 brightness, fx32 surfaceMask, u32 screenMask) +{ + + if ((screenMask & 1) != 0) + { + G2x_SetBlendBrightness_(®_G2_BLDCNT, surfaceMask, brightness); + } + + if ((screenMask & 2) != 0) + { + G2x_SetBlendBrightness_(®_G2S_DB_BLDCNT, surfaceMask, brightness); + } + + InitScreenBrightnessData(screenMask); +} + +THUMB_FUNC void InitAllScreenBrightnessData(void) +{ + MI_CpuFill8(&mainScreenBrightnessData, 0, sizeof(struct BrightnessData)); + MI_CpuFill8(&subScreenBrightnessData, 0, sizeof(struct BrightnessData)); + + mainScreenBrightnessData.transitionActive = FALSE; + subScreenBrightnessData.transitionActive = FALSE; +} + +THUMB_FUNC void InitScreenBrightnessData(u32 screenMask) +{ + if (screenMask & 1) + { + MI_CpuFill8(&mainScreenBrightnessData, 0, sizeof(struct BrightnessData)); + mainScreenBrightnessData.transitionActive = FALSE; + } + + if (screenMask & 2) + { + MI_CpuFill8(&subScreenBrightnessData, 0, sizeof(struct BrightnessData)); + subScreenBrightnessData.transitionActive = FALSE; + } +} + +THUMB_FUNC void DoAllScreenBrightnessTransitionStep(void) +{ + if (mainScreenBrightnessData.transitionActive) + { + DoBrightnessTransitionStep(&mainScreenBrightnessData); + } + + if (subScreenBrightnessData.transitionActive) + { + DoBrightnessTransitionStep(&subScreenBrightnessData); + } +} + +THUMB_FUNC BOOL IsBrightnessTransitionActive(u32 screenMask) +{ + if (screenMask == 3) + { + if (!mainScreenBrightnessData.transitionActive && !subScreenBrightnessData.transitionActive) + { + return TRUE; + } + } + else if (screenMask == 1) + { + if (!mainScreenBrightnessData.transitionActive) + { + return TRUE; + } + } + else if (screenMask == 2) + { + if (!subScreenBrightnessData.transitionActive) + { + return TRUE; + } + } + + return FALSE; +} diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 0ea26458..848e3d0a 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -6,11 +6,9 @@ #include "msgdata.h" #include "msgdata/msg.naix" #include "text.h" +#include "brightness.h" +#include "render_window.h" -extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); -extern void FUN_0200A274(fx32 brightness, fx32, u32); -extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id); -extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num); extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); @@ -108,7 +106,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code) SetKeyRepeatTimers(4, 8); - gMain.unk65 = 0; + gMain.screensFlipped = 0; GX_SwapDisplay(); reg_G2_BLDCNT = 0; @@ -137,7 +135,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code) AddWindow(bg_config, &window, &sCommunicationErrorWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); BufferIntegerAsString(mgr, 0, (s32)error_code, 5, 2, 1); ReadMsgDataIntoString(error_message_data, error_message_no, tmp_str); @@ -150,7 +148,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code) GX_BothDispOn(); FUN_0200E394(PM_LCD_TOP); FUN_0200E394(PM_LCD_BOTTOM); - FUN_0200A274(0, 0x3F, 3); + SetBrightness(0, 0x3F, 3); RemoveWindow(&window); DestroyMsgData(error_message_data); diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index d49e8e51..12af3c6f 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -6,6 +6,8 @@ #include "bg_window.h" #include "PAD_pad.h" #include "font.h" +#include "brightness.h" +#include "render_window.h" const struct WindowTemplate UNK_020FF49C = { @@ -43,10 +45,7 @@ const struct GraphicsBanks UNK_020FF4D8 = { .bg = 3 }; u32 sErrorMessagePrinterLock; extern void FUN_0200E3A0(PMLCDTarget, int); -extern void FUN_0200CB00(struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3); extern void FUN_0200E394(u32 param0); -extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); THUMB_FUNC void VBlankHandler() { @@ -85,7 +84,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() SetKeyRepeatTimers(4, 8); - gMain.unk65 = 0; + gMain.screensFlipped = 0; GX_SwapDisplay(); G2_BlendNone(); @@ -114,7 +113,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() FUN_0201BD5C(); AddWindow(ptr, &buf, &UNK_020FF49C); FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90); - FUN_0200CCA4(&buf, 0, 0x1f7, 2); + DrawFrameAndWindow1(&buf, 0, 0x1f7, 2); ReadMsgDataIntoString(msg_data, 3, str); @@ -124,7 +123,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() GX_BothDispOn(); FUN_0200E394(0); FUN_0200E394(1); - FUN_0200A274(0, 0x3f, 3); + SetBrightness(0, 0x3f, 3); FUN_02032DAC(); while (1) diff --git a/arm9/src/font.c b/arm9/src/font.c index 6c838892..5e46b237 100644 --- a/arm9/src/font.c +++ b/arm9/src/font.c @@ -4,6 +4,7 @@ #include "graphic/font.naix" #include "render_text.h" #include "string16.h" +#include "unk_02021590.h" #include "text.h" #include "unk_0201B8B8.h" @@ -11,7 +12,12 @@ struct UnkStruct_02002C14 *UNK_02106FC8; struct UnkStruct_02002C14 UNK_02106FCC; -const u16 UNK_020ECB54[4][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 } }; +const u16 UNK_020ECB54[4][2] = { + { NARC_font_narc_0000_bin, FALSE }, + { NARC_font_narc_0001_bin, FALSE }, + { NARC_font_narc_0002_bin, FALSE }, + { NARC_font_narc_0003_bin, FALSE } +}; const struct FontInfo gFontInfos[5] = { { 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02 }, @@ -21,12 +27,6 @@ const struct FontInfo gFontInfos[5] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, }; -extern struct UnkStruct_0202199C *FUN_02021590(u32, u16, u32, u16, u32); -extern void FUN_020215E0(struct UnkStruct_0202199C *, u32, u32); -extern void FUN_020215C8(struct UnkStruct_0202199C *param0); -extern void FUN_02021750(struct UnkStruct_0202199C *, u32); -extern u32 FUN_020218D8(struct UnkStruct_0202199C *, u16 *str, u32); - THUMB_FUNC void FUN_02002C14() { UNK_02106FC8 = &UNK_02106FCC; @@ -40,10 +40,10 @@ THUMB_FUNC void FUN_02002C14() SetFontsPointer(&gFontInfos[0]); } -THUMB_FUNC void FUN_02002C50(u32 param0, u32 param1) +THUMB_FUNC void FUN_02002C50(u32 font_id, u32 heap_id) { - UNK_02106FC8->unk94[param0] = - FUN_02021590(14, UNK_020ECB54[param0][0], 1, UNK_020ECB54[param0][1], param1); + UNK_02106FC8->unk94[font_id] = + FontData_new(NARC_GRAPHIC_FONT, UNK_020ECB54[font_id][0], 1, UNK_020ECB54[font_id][1], heap_id); } THUMB_FUNC void FUN_02002C84(s32 param0, u32 param1) @@ -51,7 +51,7 @@ THUMB_FUNC void FUN_02002C84(s32 param0, u32 param1) GF_ASSERT(param0 < 4); GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - FUN_020215E0(UNK_02106FC8->unk94[param0], 0, param1); + FontData_ModeSwitch(UNK_02106FC8->unk94[param0], 0, param1); } THUMB_FUNC void FUN_02002CC0(s32 param0) @@ -59,7 +59,7 @@ THUMB_FUNC void FUN_02002CC0(s32 param0) GF_ASSERT(param0 < 4); GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - FUN_020215E0(UNK_02106FC8->unk94[param0], 1, 0); + FontData_ModeSwitch(UNK_02106FC8->unk94[param0], 1, 0); } THUMB_FUNC void FUN_02002CF8(int param0) @@ -89,16 +89,16 @@ THUMB_FUNC void FUN_02002CF8(int param0) if (UNK_02106FC8->unk94[param0] != NULL) { - FUN_020215C8(UNK_02106FC8->unk94[param0]); + FontData_delete(UNK_02106FC8->unk94[param0]); UNK_02106FC8->unk94[param0] = NULL; } } -THUMB_FUNC struct UnkStruct_02002C14 *FUN_02002D94(u32 param0, u32 param1) +THUMB_FUNC struct UnkStruct_02002C14_sub *FUN_02002D94(u32 param0, u32 param1) { - FUN_02021750(UNK_02106FC8->unk94[param0], param1); + TryLoadGlyph(UNK_02106FC8->unk94[param0], param1, &UNK_02106FC8->unk00); - return UNK_02106FC8; + return &UNK_02106FC8->unk00; } THUMB_FUNC u32 FontFunc(u32 fontId, struct TextPrinter *printer) @@ -119,14 +119,14 @@ THUMB_FUNC u32 FUN_02002DE0(u32 param0, u16 *str, u32 param2) { GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - FUN_020218D8(UNK_02106FC8->unk94[param0], str, param2); + return GetStringWidth(UNK_02106FC8->unk94[param0], str, param2); } THUMB_FUNC u32 FUN_02002E14(u32 param0, struct String *str, u32 param2) { GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - FUN_020218D8(UNK_02106FC8->unk94[param0], String_c_str(str), param2); + return GetStringWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2); } THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr) @@ -163,7 +163,7 @@ THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr) return ret; } -THUMB_FUNC void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id) +THUMB_FUNC void FUN_02002ED0(enum GFBgLayer layer, u32 baseAddr, u32 heap_id) { GfGfxLoader_GXLoadPal( NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id); diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index 44dcc111..705ffbc9 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -163,7 +163,7 @@ void InitSystemForTheGame(void) gMain.unk10 = 0; gMain.unk14 = 0; gMain.unk2C = 0; - gMain.unk65 = 0; + gMain.screensFlipped = 0; } void InitGraphicMemory(void) diff --git a/arm9/src/main.c b/arm9/src/main.c index fb4f8707..3b3b0dd6 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -11,6 +11,7 @@ #include "game_init.h" #include "poke_overlay.h" #include "player_data.h" +#include "save_data_read_error.h" #include "sound.h" #include "timer3.h" #include "unk_02031734.h" @@ -18,6 +19,7 @@ #include "wfc_user_info_warning.h" #include "module_52.h" #include "font.h" +#include "brightness.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -31,14 +33,11 @@ struct UnkStruct_02016FA8 UNK_02016FA8; extern void FUN_02022294(void); extern void GF_InitRTCWork(void); extern int FUN_020337E8(int); -extern void FUN_02089D90(int); -extern void FUN_0200A2AC(void); extern void FUN_02015E30(void); extern void FUN_0201B5CC(void *); extern void GF_RTC_UpdateOnFrame(void); extern void FUN_02015E60(void); extern void FUN_020222C4(void); -extern void FUN_0200A318(void); extern void FUN_0200E2D8(void); extern struct Unk21DBE18 MOD63_021DBE18; @@ -73,7 +72,7 @@ THUMB_FUNC void NitroMain(void) ShowWFCUserInfoWarning(3, 0); if (FUN_020227FC(UNK_02016FA8.unk18) == 0) { - FUN_02089D90(0); + ShowSaveDataReadError(0); } else { @@ -97,7 +96,7 @@ THUMB_FUNC void NitroMain(void) gMain.unk6C = 1; gMain.unk30 = 0; InitializeMainRNG(); - FUN_0200A2AC(); + InitAllScreenBrightnessData(); FUN_02015E30(); UNK_02016FA4 = 0; for (;;) @@ -127,7 +126,7 @@ THUMB_FUNC void NitroMain(void) OS_WaitIrq(1, 1); gMain.unk2C++; gMain.unk30 = 0; - FUN_0200A318(); + DoAllScreenBrightnessTransitionStep(); FUN_0200E2D8(); if (gMain.vBlankIntr) gMain.vBlankIntr(gMain.vBlankIntrArg); diff --git a/arm9/src/oam.c b/arm9/src/oam.c new file mode 100644 index 00000000..ff3405d4 --- /dev/null +++ b/arm9/src/oam.c @@ -0,0 +1,169 @@ +#include "global.h" +#include "oam.h" +#include "GX_g2.h" +#include "MI_memory.h" +#include "heap.h" + +extern void FUN_020213A0(void); +extern void FUN_0202135C(void *param0, + u32 *param1, + u32 (*param2)(u32, u32), + u32 (*param3)(u32), + void (*param4)(void), + u32 param5, + u32 param6); +extern void FUN_020203CC(u32 heap_id); +extern void FUN_02020404(u32 heap_id); + +struct OamData *oamData; + +THUMB_FUNC void FUN_02009EAC(s32 param0, + s32 param1, + s32 param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8) +{ + s32 r0; + if (param0 < 4) + { + r0 = 4; + if (param1 > 0x7c) + { + param1 = param1 - (4 - param0); + } + } + else + { + r0 = param0; + } + + s32 r2; + if (param2 < 1) + { + r2 = 1; + if (param3 > 0x1e) + { + param3 = param3 - (1 - param2); + } + } + else + { + r2 = param2; + } + + InitOamData(r0, param1, r2, param3, param4, param5, param6, param7, param8); +} + +THUMB_FUNC void InitOamData(s32 param0, + s32 param1, + s32 param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 heap_id) +{ + GF_ASSERT(oamData == NULL); + oamData = AllocFromHeap(heap_id, sizeof(struct OamData)); + GF_ASSERT(oamData); + + oamData->heap_id = heap_id; + + GF_ASSERT(NNS_G2dGetNewOamManagerInstance( + &oamData->oamManagers[0], (u16)param0, (u16)param1, (u16)param2, (u16)param3, 0)); + GF_ASSERT(NNS_G2dGetNewOamManagerInstance( + &oamData->oamManagers[1], (u16)param4, (u16)param5, (u16)param6, (u16)param7, 1)); +} + +THUMB_FUNC void ApplyAndResetOamManagerBuffer(void) +{ + if (oamData != NULL) + { + NNS_G2dApplyAndResetOamManagerBuffer(&oamData->oamManagers[0]); + NNS_G2dApplyAndResetOamManagerBuffer(&oamData->oamManagers[1]); + } +} + +THUMB_FUNC void DeinitOamData(void) +{ + GF_ASSERT(oamData); + + FUN_0200A064(oamData->heap_id); + FUN_0200A06C(oamData->heap_id); + + FreeToHeap(oamData); + oamData = NULL; +} + +THUMB_FUNC void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3) +{ + GF_ASSERT(oamData); + + if (param2 == 1) + { + FUN_0202135C(param0, param1, EntryOamManagerOamWithAffineIdxMainScreen, EntryOamManagerAffineMainScreen, FUN_020213A0, param2, param3); + return; + } + + FUN_0202135C(param0, param1, EntryOamManagerOamWithAffineIdxSubScreen, EntryOamManagerAffineSubScreen, FUN_020213A0, param2, param3); +} + +THUMB_FUNC NNSG2dOamManager *GetOamManager(u32 screen) +{ + GF_ASSERT(oamData); + if (screen == 0) + { + return &oamData->oamManagers[0]; + } + else + { + return &oamData->oamManagers[1]; + } +} + +THUMB_FUNC void FUN_0200A064(u32 heap_id) +{ + FUN_020203CC(heap_id); +} + +THUMB_FUNC void FUN_0200A06C(u32 heap_id) +{ + FUN_02020404(heap_id); +} + +THUMB_FUNC u32 EntryOamManagerOamWithAffineIdxMainScreen(u32 param0, u32 param1) +{ + u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&oamData->oamManagers[0], param0, param1); + GF_ASSERT(res); + + return res; +} + +THUMB_FUNC u32 EntryOamManagerOamWithAffineIdxSubScreen(u32 param0, u32 param1) +{ + u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&oamData->oamManagers[1], param0, param1); + GF_ASSERT(res); + + return res; +} + +THUMB_FUNC u32 EntryOamManagerAffineMainScreen(u32 param0) +{ + u32 res = NNS_G2dEntryOamManagerAffine(&oamData->oamManagers[0], param0); + GF_ASSERT(res != 0xFFFE); + + return res; +} + +THUMB_FUNC u32 EntryOamManagerAffineSubScreen(u32 param0) +{ + u32 res = NNS_G2dEntryOamManagerAffine(&oamData->oamManagers[1], param0); + GF_ASSERT(res != 0xFFFE); + + return res; +} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 29075833..6139a21f 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -18,6 +18,9 @@ #include "constants/moves.h" #include "constants/sinnoh_dex.h" #include "constants/trainer_classes.h" +#include "unk_020051F4.h" +#include "sound_chatot.h" + #pragma thumb on @@ -3303,25 +3306,25 @@ void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl) ReadWholeNarcMemberByIdPair(wotbl, NARC_POKETOOL_PERSONAL_WOTBL, ResolveMonForme(species, forme)); } -void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) +void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20) { if (r4 == SPECIES_CHATOT) { if (!FUN_02005F14((int)r5)) { FUN_02005E80(1); - FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); + FUN_020056AC(r5, r4, r6, sp18, sp20); } else { if (sp1C) FUN_02005E80(1); - FUN_02005E90((int)r7, 0, (int)sp18, (int)r6); + FUN_02005E90(r7, 0, sp18, r6); } } else { - FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); + FUN_020056AC(r5, r4, r6, sp18, sp20); } } diff --git a/arm9/src/render_text.c b/arm9/src/render_text.c index 34777739..aa29e82d 100644 --- a/arm9/src/render_text.c +++ b/arm9/src/render_text.c @@ -207,7 +207,7 @@ THUMB_FUNC u32 RenderText(struct TextPrinter *printer) return 3; } - struct UnkStruct_02002C14 *r5 = FUN_02002D94(subStruct->glyphId, currentChar); + struct UnkStruct_02002C14_sub *r5 = FUN_02002D94(subStruct->glyphId, currentChar); CopyGlyphToWindow(printer->printerTemplate.window, r5->buf, r5->width, diff --git a/arm9/src/render_window.c b/arm9/src/render_window.c new file mode 100644 index 00000000..7a682eb6 --- /dev/null +++ b/arm9/src/render_window.c @@ -0,0 +1,1027 @@ +#include "global.h" +#include "render_window.h" +#include "filesystem.h" +#include "gf_gfx_loader.h" +#include "graphic/field_board.naix" +#include "graphic/winframe.naix" +#include "pokemon.h" +#include "render_text.h" +#include "unk_020061E8.h" +#include "unk_0200BB14.h" +#include "unk_0200CA44.h" + +const struct UnkStruct_0200CABC_3 UNK_020ECE88 = { + 10, + 0, + 10, + 10, +}; + +const struct UnkStruct_0200CABC_3 UNK_020ECE98 = { + 0, + 0, + 10, + 10, +}; + +extern void FUN_02020130(u32 param0, u32 param1); +extern u32 FUN_0202022C(u32 param0); +extern void FUN_020201E4(u32 param0, u32 param1); +extern void FUN_0201FDEC(u32 param0); +extern void MOD05_021D99F8(struct UnkStruct_0200CABC_2 *param0); +extern void *FUN_0201B6C8(BOOL); +extern void MOD05_021D959C( + struct UnkStruct_0200CABC_2 *param0, void *param1, u32 param2, u32 param3); +extern void MOD05_021D967C(struct UnkStruct_0200CABC_2 *param0, + NarcId narcId, + s32 memberId, + u32 param3, + u32 param4, + u32 param5, + u32 param6); +extern void MOD05_021D96F4( + struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4); +extern void MOD05_021D9708( + struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4); +extern void MOD05_021D971C(struct UnkStruct_0200CABC_2 *param0, + NarcId narcId, + s32 memberId, + u32 param3, + u32 param4, + u32 param5); +extern u32 *MOD05_021D9820(struct UnkStruct_0200CABC_2 *param0, void *); +extern struct UnkStruct63_021DB450 *FUN_02006D98(u32); +extern void FUN_020072E8(struct UnkStruct63_021DB450 *param0); +extern void FUN_02012400(u16, u16, u16, void *, void *); +extern u32 NNS_G2dGetImageLocation(u32, u32); +extern void *FUN_02012470(u16, u16, u16); +extern u32 NNS_G2dGetImagePaletteLocation(u32, u32); + +THUMB_FUNC u32 FUN_0200CABC( + struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id) +{ + if (param3 == 0) + { + return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME, + NARC_winframe_narc_0000_NCGR, + bgConfig, + layer, + numTiles, + 0, + FALSE, + heap_id); + } + + return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME, + NARC_winframe_narc_0001_NCGR, + bgConfig, + layer, + numTiles, + 0, + FALSE, + heap_id); +} + +THUMB_FUNC s32 FUN_0200CAFC(void) +{ + return NARC_winframe_narc_0024_NCLR; +} + +THUMB_FUNC void FUN_0200CB00( + struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id) +{ + s32 r1; + if (param4 != 0) + { + r1 = NARC_winframe_narc_0001_NCGR; + } + else + { + r1 = NARC_winframe_narc_0000_NCGR; + } + + GfGfxLoader_LoadCharData( + NARC_GRAPHIC_WINFRAME, r1, bg_config, layer, num_tiles, 0, FALSE, heap_id); + + if (param4 == 2) + { + r1 = NARC_winframe_narc_0045_NCLR; + } + else + { + r1 = NARC_winframe_narc_0024_NCLR; + } + + if (layer < 4) + { + GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 0, param3 << 5, 32, heap_id); + return; + } + + GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 4, param3 << 5, 32, heap_id); +} + +THUMB_FUNC void DrawFrame1(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) +{ + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 1), x, (u8)(y - 1), width, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 2), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 3), (u8)(x - 1), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 7), x, (u8)(y + height), width, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 8), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum); +} + +THUMB_FUNC void DrawFrameAndWindow1( + struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) +{ + DrawFrame1(window->bgConfig, + GetWindowBgId(window), + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + palette_num, + fill_value); + + if (!copy_to_vram) + { + CopyWindowToVram(window); + } +} + +THUMB_FUNC void ClearFrameAndWindow1(struct Window *window, BOOL copy_to_vram) +{ + + FillBgTilemapRect(window->bgConfig, + GetWindowBgId(window), + 0, + (u8)(GetWindowX(window) - 1), + (u8)(GetWindowY(window) - 1), + (u8)(GetWindowWidth(window) + 2), + (u8)(GetWindowHeight(window) + 2), + 0); + + if (!copy_to_vram) + { + ClearWindowTilemapAndCopyToVram(window); + } +} + +THUMB_FUNC s32 FUN_0200CD60(s32 param0) +{ + return param0 + 2; +} + +THUMB_FUNC s32 FUN_0200CD64(s32 param0) +{ + return param0 + 25; +} + +THUMB_FUNC void FUN_0200CD68( + struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5) +{ + + GfGfxLoader_LoadCharData( + NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), param0, param1, param2, 0, FALSE, param5); + + if (param1 < 4) + { + GfGfxLoader_GXLoadPal( + NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 0, param3 << 5, 32, param5); + return; + } + + GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 4, param3 << 5, 32, param5); +} + +THUMB_FUNC void DrawFrame2(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) +{ + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 2), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 2), x, (u8)(y - 1), width, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 4), (u8)(x + width + 1), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width + 2), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 2), y, 1, height, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 1), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 2), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 14), x, (u8)(y + height), width, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 15), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 16), + (u8)(x + width + 1), + (u8)(y + height), + 1, + 1, + paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 17), + (u8)(x + width + 2), + (u8)(y + height), + 1, + 1, + paletteNum); +} + +THUMB_FUNC void DrawWindowFrame2(struct Window *window, u32 fill_value, u32 palette_num) +{ + DrawFrame2(window->bgConfig, + GetWindowBgId(window), + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + (u8)palette_num, + (u16)fill_value); +} + +THUMB_FUNC void DrawFrameAndWindow2( + struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) +{ + DrawWindowFrame2(window, fill_value, palette_num); + if (!copy_to_vram) + { + CopyWindowToVram(window); + } + + FUN_0200D18C(window, fill_value); +} + +THUMB_FUNC void ClearFrameAndWindow2(struct Window *window, BOOL param1) +{ + FillBgTilemapRect(window->bgConfig, + GetWindowBgId(window), + 0, + (u8)(GetWindowX(window) - 2), + (u8)(GetWindowY(window) - 1), + (u8)(GetWindowWidth(window) + 5), + (u8)(GetWindowHeight(window) + 2), + 0); + + if (!param1) + { + ClearWindowTilemapAndCopyToVram(window); + } +} + +THUMB_FUNC void BlitRect4Bit(u8 *srcPixels, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u8 *dstPixels, + u16 dstWidth, + u16 dstHeight, + u16 dstX, + u16 dstY, + u16 width, + u16 height) +{ + struct Bitmap src; + src.pixels = srcPixels; + src.width = srcWidth; + src.height = srcHeight; + + struct Bitmap dst; + dst.pixels = dstPixels; + dst.width = dstWidth; + dst.height = dstHeight; + + BlitBitmapRect4Bit(&src, &dst, srcX, srcY, dstX, dstY, width, height, 0); +} + +THUMB_FUNC void FUN_0200D18C(struct Window *window, u16 fill_value) +{ + u32 heap_id = BgConfig_GetHeapId(window->bgConfig); + u8 bg_id = GetWindowBgId(window); + + void *ptr = AllocFromHeap(heap_id, 0x180); + void *charptr = BgGetCharPtr(bg_id); + + NNSG2dCharacterData *pCharData; + void *st30; + void *st2c; + st2c = GfGfxLoader_GetCharData( + NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0022_NCGR, FALSE, &pCharData, heap_id); + st30 = pCharData->pRawData; + + for (u8 i = 0; i < 3; i++) + { + memcpy(ptr + (i << 7), charptr + ((fill_value + 10) << 5), 0x20); + memcpy(ptr + ((i << 7) + 0x20), charptr + ((fill_value + 11) << 5), 0x20); + memcpy(ptr + ((i << 7) + 0x40), charptr + ((fill_value + 10) << 5), 0x20); + memcpy(ptr + ((i << 7) + 0x60), charptr + ((fill_value + 11) << 5), 0x20); + } + + BlitRect4Bit(st30, 4, 0, 12, 0x30, ptr, 12, 0x30, 1, 0, 12, 0x30); + BG_LoadCharTilesData(window->bgConfig, bg_id, ptr, 0x180, (u32)(fill_value + 18)); + FUN_02002840(fill_value); + FreeToHeap(st2c); + FreeToHeap(ptr); +} + +THUMB_FUNC void FUN_0200D274( + struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id) +{ + + NNSG2dCharacterData *pCharData; + void *stc = GfGfxLoader_GetCharData( + NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), FALSE, &pCharData, heap_id); + u8 *ptr = AllocFromHeap(heap_id, 0x240); + memcpy(ptr, pCharData->pRawData, 0x240); + + for (u32 r3 = 0; r3 < 0x240; r3++) + { + u8 r6 = (u8)(ptr[r3] >> 4); + u8 r2 = (u8)(ptr[r3] & 0xf); + if (r6 == 0) + { + r6 = param3; + } + if (r2 == 0) + { + r2 = param3; + } + + ptr[r3] = (u8)(r2 | (r6 << 4)); + } + + BG_LoadCharTilesData(bg_config, bg_id, (u32 *)ptr, 0x240, param2); + FreeToHeap(stc); + FreeToHeap(ptr); +} + +THUMB_FUNC void FUN_0200D300(struct BgConfig *bg_config, + u8 bg_id, + u16 numtiles, + u8 param3, + u8 param4, + u16 param5, + u32 heap_id) +{ + GfGfxLoader_LoadCharData(NARC_GRAPHIC_FIELD_BOARD, + NARC_field_board_narc_0000_NCGR, + bg_config, + bg_id, + numtiles, + 0x3C0, + FALSE, + heap_id); + + NNSG2dPaletteData *pPltData; + void *st14; + st14 = AllocAndReadWholeNarcMemberByIdPair( + NARC_GRAPHIC_FIELD_BOARD, NARC_field_board_narc_0001_NCLR, heap_id); + NNS_G2dGetUnpackedPaletteData(st14, &pPltData); + BG_LoadPlttData(bg_id, pPltData->pRawData + param4 * 0x20, 0x20, (u16)(param3 << 5)); + FreeToHeapExplicit(heap_id, st14); + + if (param4 <= 1) + { + FUN_0200D378(bg_config, bg_id, (u16)(numtiles + 30), param4, param5, heap_id); + } +} + +THUMB_FUNC void FUN_0200D378( + struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id) +{ + if (param3 == 0) + { + param4 += 33; + } + else + { + param4 += 2; + } + + GfGfxLoader_LoadCharData( + NARC_GRAPHIC_FIELD_BOARD, param4, bg_config, bg_id, numtiles, 0x300, FALSE, heap_id); +} + +THUMB_FUNC void DrawFrame3(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) +{ + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 9), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 8), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 2), + (u8)(x - 7), + (u8)(y - 1), + (u8)(width + 7), + 1, + paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 4), (u8)(x + width + 1), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width + 2), (u8)(y - 1), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 9), y, 1, height, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 8), y, 1, height, paletteNum); + FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 8), (u8)(x - 1), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 9), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 8), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 14), + (u8)(x - 7), + (u8)(y + height), + (u8)(width + 7), + 1, + paletteNum); + FillBgTilemapRect( + bgConfig, bgId, (u16)(fillValue + 15), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 16), + (u8)(x + width + 1), + (u8)(y + height), + 1, + 1, + paletteNum); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(fillValue + 17), + (u8)(x + width + 2), + (u8)(y + height), + 1, + 1, + paletteNum); +} + +THUMB_FUNC void DrawWindowCorner(struct Window *window, u16 fillValue, u8 paletteNum) +{ + u16 i, j; + u16 x, y; + u8 bg_id; + + bg_id = GetWindowBgId(window); + x = (u16)(GetWindowX(window) - 7); + y = GetWindowY(window); + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 6; j++) + { + FillBgTilemapRect(window->bgConfig, + bg_id, + (u16)(fillValue + 6 * i + j), + (u8)(x + j), + (u8)(y + i), + 1, + 1, + paletteNum); + } + } +} + +THUMB_FUNC void DrawFrameAndWindow3( + struct Window *window, BOOL copy_to_vram, u16 fillValue, u8 paletteNum, u8 param4) +{ + u8 bg_id = GetWindowBgId(window); + if (param4 <= 1) + { + DrawFrame3(window->bgConfig, + bg_id, + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + paletteNum, + fillValue); + DrawWindowCorner(window, (u16)(fillValue + 30), paletteNum); + } + else + { + DrawFrame2(window->bgConfig, + bg_id, + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + paletteNum, + fillValue); + } + + if (!copy_to_vram) + { + CopyWindowToVram(window); + } + + FUN_0200D18C(window, fillValue); +} + +THUMB_FUNC void ClearFrameAndWindow3(struct Window *window, u8 param1, BOOL copy_to_vram) +{ + u8 bg_id = GetWindowBgId(window); + if (param1 <= 1) + { + FillBgTilemapRect(window->bgConfig, + bg_id, + 0, + (u8)(GetWindowX(window) - 9), + (u8)(GetWindowY(window) - 1), + (u8)(GetWindowWidth(window) + 11), + (u8)(GetWindowHeight(window) + 2), + 0); + } + else + { + FillBgTilemapRect(window->bgConfig, + bg_id, + 0, + (u8)(GetWindowX(window) - 2), + (u8)(GetWindowY(window) - 1), + (u8)(GetWindowWidth(window) + 4), + (u8)(GetWindowHeight(window) + 2), + 0); + } + + if (!copy_to_vram) + { + ClearWindowTilemapAndCopyToVram(window); + } +} + +THUMB_FUNC struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1) +{ + u32 heap_id = BgConfig_GetHeapId(window->bgConfig); + void *charptr = BgGetCharPtr(GetWindowBgId(window)); + + struct UnkStruct_0200CABC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200CABC_1)); + memcpy(ptr->unk004[8], charptr + (param1 + 18) * 32, 0x80); + void *ptr2 = AllocFromHeap(heap_id, 0x80); + memcpy(ptr2, charptr + (param1 + 10) * 32, 0x20); + memcpy(ptr2 + 0x20, charptr + (param1 + 11) * 32, 0x20); + memcpy(ptr2 + 0x40, charptr + (param1 + 10) * 32, 0x20); + memcpy(ptr2 + 0x60, charptr + (param1 + 11) * 32, 0x20); + + for (u8 i = 0; i < 8; i++) + { + memcpy(ptr->unk004[i], ptr2, 0x80); + } + FreeToHeap(ptr2); + + NNSG2dCharacterData *pCharData; + void *r5 = GfGfxLoader_GetCharData( + NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0023_NCGR, FALSE, &pCharData, heap_id); + BlitRect4Bit( + pCharData->pRawData, 0, 0, 0x10, 0x80, ptr->unk004[0], 0x10, 0x80, 0, 0, 0x10, 0x80); + FreeToHeap(r5); + + ptr->unk000 = window; + ptr->fillValue = (u16)param1; + ptr->unk486 = 0; + ptr->unk487 = 0; + ptr->unk488 = 0; + + FUN_0200CA60(FUN_0200DB7C, ptr, 0); + FUN_0200D980(ptr, 1); + + return ptr; +} + +THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) +{ + u8 bg_id = GetWindowBgId(param0->unk000); + u8 x = GetWindowX(param0->unk000); + u8 y = GetWindowY(param0->unk000); + u8 width = GetWindowWidth(param0->unk000); + + if (param1 == 2) + { + BG_LoadCharTilesData(param0->unk000->bgConfig, + bg_id, + (u32 *)param0->unk004[8], + 0x80, + (u32)(param0->fillValue + 18)); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 10), + (u8)(x + width + 1), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 11), + (u8)(x + width + 2), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 10), + (u8)(x + width + 1), + (u8)(y + 3), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 11), + (u8)(x + width + 2), + (u8)(y + 3), + 1, + 1, + 0x10); + BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id); + return; + } + + BG_LoadCharTilesData(param0->unk000->bgConfig, + bg_id, + (u32 *)param0->unk004[param0->unk487], + 0x80, + (u32)(param0->fillValue + 18)); + if (param1 != 0) + { + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 18), + (u8)(x + width + 1), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 19), + (u8)(x + width + 2), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 20), + (u8)(x + width + 1), + (u8)(y + 3), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->fillValue + 21), + (u8)(x + width + 2), + (u8)(y + 3), + 1, + 1, + 0x10); + BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id); + } +} + +THUMB_FUNC void FUN_0200DB7C(u32 param0, void *param1) +{ + struct UnkStruct_0200CABC_1 *r1 = (struct UnkStruct_0200CABC_1 *)param1; + + if (r1->unk488 != 0) + { + if (r1->unk488 == 1) + { + FUN_0200D980(r1, 2); + } + FUN_0200CAB4((s32)param0); + return; + } + + r1->unk486++; + if (r1->unk486 == 16) + { + r1->unk486 = 0; + r1->unk487 = (r1->unk487 + 1) & 7; + FUN_0200D980(r1, 0); + } +} + +THUMB_FUNC void FUN_0200DBE8(u32 param0, void *param1) +{ + FreeToHeap(param1); + FUN_0200CAB4((s32)param0); +} + +THUMB_FUNC void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0) +{ + FUN_0200CA98(FUN_0200DBE8, param0, 0); + param0->unk488 = 1; +} + +THUMB_FUNC void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0) +{ + FUN_0200CA98(FUN_0200DBE8, param0, 0); + param0->unk488 = 2; +} + +THUMB_FUNC u8 *FUN_0200DC4C(struct BgConfig *bg_config, + u8 bg_id, + u8 param2, + u8 param3, + u8 param4, + u16 param5, + u16 param6, + u8 param7, + s32 param8) +{ + struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param8); + FUN_0200DDAC(r4, (u32)param8); + FUN_0200DDD8(r4); + FUN_0200DE30(r4, param2, param3); + FUN_0200DE80(r4, param6, param7); + DrawFramed10x10Square(r4, param4, param5); + BgCommitTilemapBufferToVram(bg_config, bg_id); + + return &r4->unk16f; +} + +THUMB_FUNC u8 *FUN_0200DCA4(struct BgConfig *bg_config, + u8 bg_id, + u8 param2, + u8 param3, + u8 param4, + u16 param5, + struct Pokemon *param6, + s32 param7) +{ + struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param7); + FUN_0200DDAC(r4, (u32)param7); + FUN_0200DDD8(r4); + FUN_0200DE30(r4, param2, param3); + FUN_0200DEC0(r4, param6); + DrawFramed10x10Square(r4, param4, param5); + BgCommitTilemapBufferToVram(bg_config, bg_id); + + return &r4->unk16f; +} + +THUMB_FUNC void FUN_0200DCF8(u32 param0, void *param1) +{ + struct UnkStruct_0200CABC_2 *unk = (struct UnkStruct_0200CABC_2 *)param1; + switch (unk->unk16f) + { + case 1: + ClearFramed10x10Square(unk); + FUN_0200C3DC(unk->unk164); + MOD05_021D99F8(unk); + FUN_0200621C((s32)param0); + return; + case 2: + unk->unk16f = 3; + FUN_02020130(*unk->unk164, 1); + break; + case 3: + if (FUN_0202022C(*unk->unk164) == 6) + { + unk->unk16f = 0; + } + } + + FUN_020201E4(*unk->unk164, 0x1000); + FUN_0201FDEC(unk->unk000); +} + +THUMB_FUNC struct UnkStruct_0200CABC_2 *FUN_0200DD70( + struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4) +{ + struct UnkStruct_0200CABC_2 *res = FUN_0201B6C8(FUN_020061E8(FUN_0200DCF8, 0x170, 0, param4)); + + res->unk16f = 0; + res->bgConfig = bg_config; + res->bgId = bg_id; + res->x = param2; + res->y = param3; + + return res; +} + +THUMB_FUNC void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1) +{ + + const u32 UNK_020ECEA8[] = { + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, + }; + MOD05_021D959C(param0, UNK_020ECEA8, 1, param1); +} + +THUMB_FUNC void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0) +{ + MOD05_021D967C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0049_NCLR, 0, 1, 1, 0x15CD5); + MOD05_021D96F4(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0047_NCER, 0, 0x15CD5); + MOD05_021D9708(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0046_NANR, 0, 0x15CD5); + MOD05_021D971C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0048_NCGR, 0, 1, 0x15CD5); +} + +THUMB_FUNC void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2) +{ + u32 UNK_020ECEC0[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x015CD5, + 0x015CD5, + 0x015CD5, + 0x015CD5, + 0x00, + 0x00, + 0x00, + 0x00, + }; + ((u16 *)UNK_020ECEC0)[0] = (u16)((param1 + 5) * 8); + ((u16 *)UNK_020ECEC0)[1] = (u16)((param2 + 5) * 8); + param0->unk164 = MOD05_021D9820(param0, UNK_020ECEC0); + FUN_0201FDEC(param0->unk000); + GX_EngineBToggleLayers(0x10, GX_LAYER_TOGGLE_ON); +} + +THUMB_FUNC void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2) +{ + struct UnkStruct63_021DB450 *r7 = FUN_02006D98(param0->unk162); + struct SomeDrawPokemonStruct stc; + FUN_02068C00(&stc, param1, param2, 2, 0, 0, 0); + FUN_0200DEF4(param0, &stc); + FUN_020072E8(r7); +} + +THUMB_FUNC void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1) +{ + struct UnkStruct63_021DB450 *r6 = FUN_02006D98(param0->unk162); + struct SomeDrawPokemonStruct st0; + FUN_02068B68(&st0, param1, 2); + FUN_0200DEF4(param0, &st0); + FUN_020072E8(r6); +} + +THUMB_FUNC void FUN_0200DEF4( + struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1) +{ + void *r4 = AllocFromHeap(param0->unk162, 0x1900); + + struct UnkStruct_0200CABC_3 st18 = UNK_020ECE98; + FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st18, r4); + + struct UnkStruct_0200CABC_3 st8 = UNK_020ECE88; + FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st8, r4 + 0xc80); + + u32 st4 = FUN_02009C5C(FUN_020094F0(param0->unk130, 0x15CD5)); + + u32 r7 = NNS_G2dGetImageLocation(st4, 1); + DC_FlushRange(r4, 0x1900); + GX_LoadOBJ(r4, r7, 0x1900); + FreeToHeap(r4); + void *res = FUN_02012470(param1->unk0, param1->unk4, param0->unk162); + + u32 r5 = + NNS_G2dGetImagePaletteLocation(FUN_02009E54(FUN_020094F0(param0->unk134, 0x15CD5), st4), 1); + DC_FlushRange(res, 0x20); + GX_LoadOBJPltt(res, r5, 0x20); + FreeToHeap(res); +} + +THUMB_FUNC void DrawFramed10x10Square( + struct UnkStruct_0200CABC_2 *param0, u8 paletteNum, u16 fillValue) +{ + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + fillValue, + (u8)(param0->x - 1), + (u8)(param0->y - 1), + 1, + 1, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 1), + param0->x, + (u8)(param0->y - 1), + 10, + 1, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 2), + (u8)(param0->x + 10), + (u8)(param0->y - 1), + 1, + 1, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 4), + param0->x, + param0->y, + 10, + 10, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 3), + (u8)(param0->x - 1), + param0->y, + 1, + 10, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 5), + (u8)(param0->x + 10), + param0->y, + 1, + 10, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 6), + (u8)(param0->x - 1), + (u8)(param0->y + 10), + 1, + 1, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 7), + param0->x, + (u8)(param0->y + 10), + 10, + 1, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 8), + (u8)(param0->x + 10), + (u8)(param0->y + 10), + 1, + 1, + paletteNum); + + ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId); +} + +THUMB_FUNC void ClearFramed10x10Square(struct UnkStruct_0200CABC_2 *param0) +{ + FillBgTilemapRect( + param0->bgConfig, param0->bgId, 0, (u8)(param0->x - 1), (u8)(param0->y - 1), 12, 12, 0); + ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId); +} diff --git a/arm9/src/rs_migrate_string.c b/arm9/src/rs_migrate_string.c new file mode 100644 index 00000000..46752374 --- /dev/null +++ b/arm9/src/rs_migrate_string.c @@ -0,0 +1,327 @@ +#include "global.h"
+#include "string_util.h"
+#include "rs_migrate_string.h"
+
+static const u16 conversion_table[][2] = {
+ {0x0001, 0x01DE}, // <space>
+ {0x0003, 0x0003}, // あ
+ {0x0005, 0x0005}, // い
+ {0x0007, 0x0007}, // う
+ {0x0009, 0x0009}, // え
+ {0x000B, 0x000B}, // お
+ {0x000C, 0x000C}, // か
+ {0x000E, 0x000E}, // き
+ {0x0010, 0x0010}, // く
+ {0x0012, 0x0012}, // け
+ {0x0014, 0x0014}, // こ
+ {0x0016, 0x0016}, // さ
+ {0x0018, 0x0018}, // し
+ {0x001A, 0x001A}, // す
+ {0x001C, 0x001C}, // せ
+ {0x001E, 0x001E}, // そ
+ {0x0020, 0x0020}, // た
+ {0x0022, 0x0022}, // ち
+ {0x0025, 0x0025}, // つ
+ {0x0027, 0x0027}, // て
+ {0x0029, 0x0029}, // と
+ {0x002B, 0x002B}, // な
+ {0x002C, 0x002C}, // に
+ {0x002D, 0x002D}, // ぬ
+ {0x002E, 0x002E}, // ね
+ {0x002F, 0x002F}, // の
+ {0x0030, 0x0030}, // は
+ {0x0033, 0x0033}, // ひ
+ {0x0036, 0x0036}, // ふ
+ {0x0039, 0x0039}, // へ
+ {0x003C, 0x003C}, // ほ
+ {0x003F, 0x003F}, // ま
+ {0x0040, 0x0040}, // み
+ {0x0041, 0x0041}, // む
+ {0x0042, 0x0042}, // め
+ {0x0043, 0x0043}, // も
+ {0x0045, 0x0045}, // や
+ {0x0047, 0x0047}, // ゆ
+ {0x0049, 0x0049}, // よ
+ {0x004A, 0x004A}, // ら
+ {0x004B, 0x004B}, // り
+ {0x004C, 0x004C}, // る
+ {0x004D, 0x004D}, // れ
+ {0x004E, 0x004E}, // ろ
+ {0x004F, 0x004F}, // わ
+ {0x0050, 0x0050}, // を
+ {0x0051, 0x0051}, // ん
+ {0x0002, 0x0002}, // ぁ
+ {0x0004, 0x0004}, // ぃ
+ {0x0006, 0x0006}, // ぅ
+ {0x0008, 0x0008}, // ぇ
+ {0x000A, 0x000A}, // ぉ
+ {0x0044, 0x0044}, // ゃ
+ {0x0046, 0x0046}, // ゅ
+ {0x0048, 0x0048}, // ょ
+ {0x000D, 0x000D}, // が
+ {0x000F, 0x000F}, // ぎ
+ {0x0011, 0x0011}, // ぐ
+ {0x0013, 0x0013}, // げ
+ {0x0015, 0x0015}, // ご
+ {0x0017, 0x0017}, // ざ
+ {0x0019, 0x0019}, // じ
+ {0x001B, 0x001B}, // ず
+ {0x001D, 0x001D}, // ぜ
+ {0x001F, 0x001F}, // ぞ
+ {0x0021, 0x0021}, // だ
+ {0x0023, 0x0023}, // ぢ
+ {0x0026, 0x0026}, // づ
+ {0x0028, 0x0028}, // で
+ {0x002A, 0x002A}, // ど
+ {0x0031, 0x0031}, // ば
+ {0x0034, 0x0034}, // び
+ {0x0037, 0x0037}, // ぶ
+ {0x003A, 0x003A}, // べ
+ {0x003D, 0x003D}, // ぼ
+ {0x0032, 0x0032}, // ぱ
+ {0x0035, 0x0035}, // ぴ
+ {0x0038, 0x0038}, // ぷ
+ {0x003B, 0x003B}, // ぺ
+ {0x003E, 0x003E}, // ぽ
+ {0x0024, 0x0024}, // っ
+ {0x0053, 0x0053}, // ア
+ {0x0055, 0x0055}, // イ
+ {0x0057, 0x0057}, // ウ
+ {0x0059, 0x0059}, // エ
+ {0x005B, 0x005B}, // オ
+ {0x005C, 0x005C}, // カ
+ {0x005E, 0x005E}, // キ
+ {0x0060, 0x0060}, // ク
+ {0x0062, 0x0062}, // ケ
+ {0x0064, 0x0064}, // コ
+ {0x0066, 0x0066}, // サ
+ {0x0068, 0x0068}, // シ
+ {0x006A, 0x006A}, // ス
+ {0x006C, 0x006C}, // セ
+ {0x006E, 0x006E}, // ソ
+ {0x0070, 0x0070}, // タ
+ {0x0072, 0x0072}, // チ
+ {0x0075, 0x0075}, // ツ
+ {0x0077, 0x0077}, // テ
+ {0x0079, 0x0079}, // ト
+ {0x007B, 0x007B}, // ナ
+ {0x007C, 0x007C}, // ニ
+ {0x007D, 0x007D}, // ヌ
+ {0x007E, 0x007E}, // ネ
+ {0x007F, 0x007F}, // ノ
+ {0x0080, 0x0080}, // ハ
+ {0x0083, 0x0083}, // ヒ
+ {0x0086, 0x0086}, // フ
+ {0x0089, 0x0089}, // ヘ
+ {0x008C, 0x008C}, // ホ
+ {0x008F, 0x008F}, // マ
+ {0x0090, 0x0090}, // ミ
+ {0x0091, 0x0091}, // ム
+ {0x0092, 0x0092}, // メ
+ {0x0093, 0x0093}, // モ
+ {0x0095, 0x0095}, // ヤ
+ {0x0097, 0x0097}, // ユ
+ {0x0099, 0x0099}, // ヨ
+ {0x009A, 0x009A}, // ラ
+ {0x009B, 0x009B}, // リ
+ {0x009C, 0x009C}, // ル
+ {0x009D, 0x009D}, // レ
+ {0x009E, 0x009E}, // ロ
+ {0x009F, 0x009F}, // ワ
+ {0x00A0, 0x00A0}, // ヲ
+ {0x00A1, 0x00A1}, // ン
+ {0x0052, 0x0052}, // ァ
+ {0x0054, 0x0054}, // ィ
+ {0x0056, 0x0056}, // ゥ
+ {0x0058, 0x0058}, // ェ
+ {0x005A, 0x005A}, // ォ
+ {0x0094, 0x0094}, // ャ
+ {0x0096, 0x0096}, // ュ
+ {0x0098, 0x0098}, // ョ
+ {0x005D, 0x005D}, // ガ
+ {0x005F, 0x005F}, // ギ
+ {0x0061, 0x0061}, // グ
+ {0x0063, 0x0063}, // ゲ
+ {0x0065, 0x0065}, // ゴ
+ {0x0067, 0x0067}, // ザ
+ {0x0069, 0x0069}, // ジ
+ {0x006B, 0x006B}, // ズ
+ {0x006D, 0x006D}, // ゼ
+ {0x006F, 0x006F}, // ゾ
+ {0x0071, 0x0071}, // ダ
+ {0x0073, 0x0073}, // ヂ
+ {0x0076, 0x0076}, // ヅ
+ {0x0078, 0x0078}, // デ
+ {0x007A, 0x007A}, // ド
+ {0x0081, 0x0081}, // バ
+ {0x0084, 0x0084}, // ビ
+ {0x0087, 0x0087}, // ブ
+ {0x008A, 0x008A}, // ベ
+ {0x008D, 0x008D}, // ボ
+ {0x0082, 0x0082}, // パ
+ {0x0085, 0x0085}, // ピ
+ {0x0088, 0x0088}, // プ
+ {0x008B, 0x008B}, // ペ
+ {0x008E, 0x008E}, // ポ
+ {0x0074, 0x0074}, // ッ
+ {0x00A2, 0x0121}, // 0
+ {0x00A3, 0x0122}, // 1
+ {0x00A4, 0x0123}, // 2
+ {0x00A5, 0x0124}, // 3
+ {0x00A6, 0x0125}, // 4
+ {0x00A7, 0x0126}, // 5
+ {0x00A8, 0x0127}, // 6
+ {0x00A9, 0x0128}, // 7
+ {0x00AA, 0x0129}, // 8
+ {0x00AB, 0x012A}, // 9
+ {0x00E1, 0x01AB}, // !
+ {0x00E2, 0x01AC}, // ?
+ {0x00E4, 0x01AE}, // .
+ {0x00F1, 0x01BE}, // -
+ {0x00E6, 0x01B0}, // ·
+ {0x00E5, 0x01AF}, // …
+ {0x00EA, 0x00EA}, // “
+ {0x00EB, 0x00EB}, // ”
+ {0x00E8, 0x01B2}, // ‘
+ {0x00E9, 0x01B3}, // '
+ {0x00EE, 0x01BB}, // ♂
+ {0x00EF, 0x01BC}, // ♀
+ {0x0112, 0x0112}, // ¥
+ {0x00E3, 0x01AD}, // ,
+ {0x00F2, 0x0176}, // ×
+ {0x00E7, 0x01B1}, // /
+ {0x00AC, 0x012B}, // A
+ {0x00AD, 0x012C}, // B
+ {0x00AE, 0x012D}, // C
+ {0x00AF, 0x012E}, // D
+ {0x00B0, 0x012F}, // E
+ {0x00B1, 0x0130}, // F
+ {0x00B2, 0x0131}, // G
+ {0x00B3, 0x0132}, // H
+ {0x00B4, 0x0133}, // I
+ {0x00B5, 0x0134}, // J
+ {0x00B6, 0x0135}, // K
+ {0x00B7, 0x0136}, // L
+ {0x00B8, 0x0137}, // M
+ {0x00B9, 0x0138}, // N
+ {0x00BA, 0x0139}, // O
+ {0x00BB, 0x013A}, // P
+ {0x00BC, 0x013B}, // Q
+ {0x00BD, 0x013C}, // R
+ {0x00BE, 0x013D}, // S
+ {0x00BF, 0x013E}, // T
+ {0x00C0, 0x013F}, // U
+ {0x00C1, 0x0140}, // V
+ {0x00C2, 0x0141}, // W
+ {0x00C3, 0x0142}, // X
+ {0x00C4, 0x0143}, // Y
+ {0x00C5, 0x0144}, // Z
+ {0x00C6, 0x0145}, // a
+ {0x00C7, 0x0146}, // b
+ {0x00C8, 0x0147}, // c
+ {0x00C9, 0x0148}, // d
+ {0x00CA, 0x0149}, // e
+ {0x00CB, 0x014A}, // f
+ {0x00CC, 0x014B}, // g
+ {0x00CD, 0x014C}, // h
+ {0x00CE, 0x014D}, // i
+ {0x00CF, 0x014E}, // j
+ {0x00D0, 0x014F}, // k
+ {0x00D1, 0x0150}, // l
+ {0x00D2, 0x0151}, // m
+ {0x00D3, 0x0152}, // n
+ {0x00D4, 0x0153}, // o
+ {0x00D5, 0x0154}, // p
+ {0x00D6, 0x0155}, // q
+ {0x00D7, 0x0156}, // r
+ {0x00D8, 0x0157}, // s
+ {0x00D9, 0x0158}, // t
+ {0x00DA, 0x0159}, // u
+ {0x00DB, 0x015A}, // v
+ {0x00DC, 0x015B}, // w
+ {0x00DD, 0x015C}, // x
+ {0x00DE, 0x015D}, // y
+ {0x00DF, 0x015E}, // z
+ {0x011F, 0x011F}, // ▶
+ {0x00F6, 0x01C4}, // :
+ {0x0163, 0x0163}, // Ä
+ {0x0175, 0x0175}, // Ö
+ {0x017B, 0x017B}, // Ü
+ {0x0183, 0x0183}, // ä
+ {0x0195, 0x0195}, // ö
+ {0x019B, 0x019B}, // ü
+};
+
+static THUMB_FUNC u16 GetOpeningQuote(u32 language)
+{
+ switch (language)
+ {
+ default:
+ return 0xEA;
+ case LANGUAGE_ENGLISH:
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_SPANISH:
+ return 0x1B4;
+ case LANGUAGE_FRENCH:
+ return 0x1B7;
+ case LANGUAGE_GERMAN:
+ return 0x1B6;
+ }
+}
+
+static THUMB_FUNC u16 GetClosingQuote(u32 language)
+{
+ switch (language)
+ {
+ default:
+ return 0xEB;
+ case LANGUAGE_ENGLISH:
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_SPANISH:
+ return 0x1B5;
+ case LANGUAGE_FRENCH:
+ return 0x1B8;
+ case LANGUAGE_GERMAN:
+ return 0x1B4;
+ }
+}
+
+THUMB_FUNC BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language)
+{
+ BOOL notFullWidth;
+ u32 i;
+
+ notFullWidth = (language != LANGUAGE_JAPANESE);
+ for (i = 0; i < length - 1; i++)
+ {
+ if (rs_str[i] == 0xFF) // RS: EOS
+ break;
+ if (rs_str[i] >= 0xF7) // RS: DYNAMIC
+ {
+ // If we're here, the provided name is corrupt.
+ // Fill it with question marks.
+ s32 r3 = (s32)((length - 1) < 10 ? (length - 1) : 10);
+ s32 r1;
+ for (r1 = 0; r1 < r3; r1++)
+ {
+ dp_str[r1] = 0x1AC; // DP: ?
+ }
+ dp_str[r1] = EOS;
+ return FALSE;
+ }
+ switch (conversion_table[rs_str[i]][notFullWidth])
+ {
+ case 0xEA: // RS: Opening double quote
+ dp_str[i] = GetOpeningQuote(language);
+ break;
+ case 0xEB: // RS: Closing double quote
+ dp_str[i] = GetClosingQuote(language);
+ break;
+ default:
+ dp_str[i] = conversion_table[rs_str[i]][notFullWidth];
+ break;
+ }
+ }
+ dp_str[i] = EOS;
+ return TRUE;
+}
diff --git a/arm9/src/save.c b/arm9/src/save.c index 7eb523f6..524edfb7 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -4,6 +4,8 @@ #include "heap.h" #include "CARD_backup.h" #include "OS_spinLock.h" +#include "save_data_read_error.h" +#include "save_data_write_error.h" #pragma thumb on @@ -13,12 +15,6 @@ extern void FUN_02016444(u8 mask); extern void FUN_02016454(u8 mask); -// unk_02089D90.s -extern void FUN_02089D90(int); - -// unk_02089F24.s -extern void FUN_0208A0B8(int, int); - struct { struct SaveBlock2 * ptr; BOOL iswritten; @@ -861,7 +857,7 @@ BOOL FlashLoadChunk(u32 src, void * dest, u32 size) if (!r5) { FreeToHeap(UNK_021C59C8.ptr); - FUN_02089D90(1); + ShowSaveDataReadError(1); } return r5; } @@ -910,10 +906,10 @@ BOOL WaitFlashWrite(int lock, BOOL * res) return FALSE; } -void SaveErrorHandling(int lock, int errno) +void SaveErrorHandling(int lock, u32 errno) { CARD_UnlockBackup((u16)lock); OS_ReleaseLockID((u16)lock); FreeToHeap(UNK_021C59C8.ptr); - FUN_0208A0B8(1, errno); + ShowSaveDataWriteError(1, errno); } diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c new file mode 100644 index 00000000..45a0c7bd --- /dev/null +++ b/arm9/src/save_data_read_error.c @@ -0,0 +1,185 @@ +#include "global.h" +#include "bg_window.h" +#include "brightness.h" +#include "game_init.h" +#include "msgdata.h" +#include "msgdata/msg.naix" +#include "save_data_read_error.h" +#include "text.h" +#include "render_window.h" + +extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); +extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); +extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); + +static const struct WindowTemplate sSaveDataReadErrorWindowTemplate = { + .bgId = GF_BG_LYR_MAIN_0, + .tilemapLeft = 3, + .tilemapTop = 3, + .width = 26, + .height = 18, + .paletteNum = 0x01, + .baseTile = 0x23, +}; + +static const struct GraphicsModes sSaveDataReadErrorGraphicsModes = { + .dispMode = GX_DISPMODE_GRAPHICS, + .bgMode = GX_BGMODE_0, + .subMode = GX_BGMODE_0, + ._2d3dMode = GX_BG0_AS_2D, +}; + +static const struct BgTemplate sSaveDataReadErrorBgTemplate = { + .x = 0, + .y = 0, + .bufferSize = 0x800, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0000, + .charBase = GX_BG_CHARBASE_0x18000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE, +}; + +static const struct GraphicsBanks sSaveDataReadErrorGraphicsBanks = { + .bg = 3, + .bgextpltt = 0, + .subbg = 0, + .subbgextpltt = 0, + .obj = 0, + .objextpltt = 0, + .subobj = 0, + .subobjextpltt = 0, + .tex = 0, + .texpltt = 0, +}; + +THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) +{ + struct Window window; + + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + Main_SetVBlankIntrCB(NULL, NULL); + FUN_02015F34(NULL, NULL); + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); + reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + + SetKeyRepeatTimers(4, 8); + + gMain.screensFlipped = 0; + + GX_SwapDisplay(); + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK); + reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK); + GX_SetBanks(&sSaveDataReadErrorGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0); + BgClearTilemapBufferAndCommit(bg_config, 0); + FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id); + FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id); + BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id); + BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21); + BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21); + + struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0005_bin, heap_id); + struct String* str = String_ctor(384, heap_id); + + FUN_0201BD5C(); + + AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); + + ReadMsgDataIntoString(msg_data, 0, str); + AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); + String_dtor(str); + + GX_BothDispOn(); + FUN_0200E394(PM_LCD_TOP); + FUN_0200E394(PM_LCD_BOTTOM); + SetBrightness(0, 0x3F, 3); + + while (TRUE) + { + HandleDSLidAction(); + OS_WaitIrq(TRUE, OS_IE_V_BLANK); + } +} + +THUMB_FUNC void ShowGBACartRemovedError(u32 heap_id) +{ + struct Window window; + + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + Main_SetVBlankIntrCB(NULL, NULL); + FUN_02015F34(NULL, NULL); + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); + reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + + SetKeyRepeatTimers(4, 8); + + gMain.screensFlipped = 0; + + GX_SwapDisplay(); + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK); + reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK); + GX_SetBanks(&sSaveDataReadErrorGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0); + BgClearTilemapBufferAndCommit(bg_config, 0); + FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id); + FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id); + BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id); + BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21); + BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21); + + struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0005_bin, heap_id); + struct String* str = String_ctor(384, heap_id); + + FUN_0201BD5C(); + + AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); + + ReadMsgDataIntoString(msg_data, 1, str); + AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); + String_dtor(str); + + GX_BothDispOn(); + FUN_0200E394(PM_LCD_TOP); + FUN_0200E394(PM_LCD_BOTTOM); + SetBrightness(0, 0x3F, 3); + + while (TRUE) + { + HandleDSLidAction(); + OS_WaitIrq(TRUE, OS_IE_V_BLANK); + } +} diff --git a/arm9/src/save_data_write_error.c b/arm9/src/save_data_write_error.c new file mode 100644 index 00000000..3f03fb4b --- /dev/null +++ b/arm9/src/save_data_write_error.c @@ -0,0 +1,130 @@ +#include "global.h" +#include "bg_window.h" +#include "brightness.h" +#include "game_init.h" +#include "msgdata.h" +#include "msgdata/msg.naix" +#include "save_data_write_error.h" +#include "text.h" +#include "render_window.h" + +extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); +extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); +extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); + +static const struct WindowTemplate sSaveDataWriteErrorWindowTemplate = { + .bgId = GF_BG_LYR_MAIN_0, + .tilemapLeft = 3, + .tilemapTop = 3, + .width = 26, + .height = 18, + .paletteNum = 0x01, + .baseTile = 0x23, +}; + +static const struct GraphicsModes sSaveDataWriteErrorGraphicsModes = { + .dispMode = GX_DISPMODE_GRAPHICS, + .bgMode = GX_BGMODE_0, + .subMode = GX_BGMODE_0, + ._2d3dMode = GX_BG0_AS_2D, +}; + +static const struct BgTemplate sSaveDataWriteErrorBgTemplate = { + .x = 0, + .y = 0, + .bufferSize = 0x800, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0000, + .charBase = GX_BG_CHARBASE_0x18000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE, +}; + +static const struct GraphicsBanks sSaveDataWriteErrorGraphicsBanks = { + .bg = 3, + .bgextpltt = 0, + .subbg = 0, + .subbgextpltt = 0, + .obj = 0, + .objextpltt = 0, + .subobj = 0, + .subobjextpltt = 0, + .tex = 0, + .texpltt = 0, +}; + +THUMB_FUNC void ShowSaveDataWriteError(u32 heap_id, u32 err_no) +{ + struct Window window; + + u32 msg_no; + if (err_no == 0) { + msg_no = 1; + } else { + msg_no = 0; + } + + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + FUN_02015EF4(); + Main_SetVBlankIntrCB(NULL, NULL); + FUN_02015F34(NULL, NULL); + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); + reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + + SetKeyRepeatTimers(4, 8); + + gMain.screensFlipped = 0; + + GX_SwapDisplay(); + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK); + reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK); + GX_SetBanks(&sSaveDataWriteErrorGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&sSaveDataWriteErrorGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &sSaveDataWriteErrorBgTemplate, 0); + BgClearTilemapBufferAndCommit(bg_config, 0); + FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id); + FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id); + BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id); + BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21); + BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21); + + struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0006_bin, heap_id); + struct String* str = String_ctor(384, heap_id); + + FUN_0201BD5C(); + + AddWindow(bg_config, &window, &sSaveDataWriteErrorWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); + + ReadMsgDataIntoString(msg_data, msg_no, str); + AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); + String_dtor(str); + + GX_BothDispOn(); + FUN_0200E394(PM_LCD_TOP); + FUN_0200E394(PM_LCD_BOTTOM); + SetBrightness(0, 0x3F, 3); + + while (TRUE) + { + HandleDSLidAction(); + OS_WaitIrq(TRUE, OS_IE_V_BLANK); + } +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index c79684a0..2d57f0b1 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,10 +1,14 @@ #include "scrcmd.h" +#include "unk_0200CA44.h" #include "unk_0204639C.h" #include "main.h" #include "options.h" #include "player_data.h" #include "text.h" #include "bg_window.h" +#include "render_window.h" +#include "text_02054590.h" + extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); @@ -21,27 +25,19 @@ extern void MOD05_021E2C58(struct ScriptContext *ctx, u16 typ, u16 id, u16 word1 extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 sex, u8 flag, u8 *unk); extern void MOD05_021E2CBC(struct ScriptContext *ctx, struct ScrStrBufs *str, u8 param2, u32 param3); extern void MOD05_021E2BB8(void *param0, struct ScriptContext *ctx); -extern BOOL FUN_020546C8(u8 param0); extern u32 FUN_02058488(u32 param0); extern BOOL FUN_02030F40(void); extern void FUN_02055304(u32 param0, u32 param1); extern void FUN_02039460(struct UnkSavStruct80 *arg); -extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2); -extern void FUN_02054608(u8 *param0, struct Options *options); -extern void FUN_0200D0E0(struct Window *param0, u32 param1); extern u32 FUN_02058510(u32 param0, u32 param1); extern void MOD05_021E8128(u32 param0, u8 type, u16 map); extern void MOD05_021E8130(u32 param0, u32 param1); extern void MOD05_021E8158(struct UnkSavStruct80 *unk80); extern struct Window * MOD05_021E8140(u32 param0); extern BOOL MOD05_021E8148(u32 param0); -extern u8 FUN_02054658(struct Window * param0, struct String *str, struct Options *opt, u32 param3); extern void MOD05_021E8144(u32 param0); -extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4); +extern u32 Std_CreateYesNoMenu(struct BgConfig *param0, u8 **param1, u32 param2, u32 param3, u32 param4); extern u32 FUN_020021AC(u32 param0, u32 param1); -extern u32 FUN_0200D858(u32 *param0, u32 param1); -extern void FUN_0200DBFC(u32 param0); extern u32 MOD05_021E1BF8(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData); extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2); extern void MOD05_021E1C54(u32 param0); @@ -54,11 +50,11 @@ extern void MOD05_021E26CC(u32 param0, u8 param1); extern void MOD05_021E2B80(u32 param0, u8 param1); extern void MOD05_021E2B9C(u32 param0, u8 param1); extern u32 FUN_0205AEA4(u32 param0, const void *ptr); -extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2); extern u32 FUN_02058B2C(u32 param0); extern u32 FUN_02058B4C(u32 param0); extern u32 FUN_020580B4(u32 param0, u32 param1); extern u32 FUN_02058060(u32 param0, u32 param1); +extern void FUN_0203B1A8(u32 param0, void *param1); extern u8 *UNK_020F34E0; @@ -79,6 +75,7 @@ static BOOL FUN_0203AD2C(struct ScriptContext *ctx); static BOOL FUN_0203AD78(struct ScriptContext *ctx); static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1); static BOOL FUN_0203B158(struct ScriptContext *ctx); +static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2); extern u8 sScriptConditionTable[6][3]; @@ -771,8 +768,8 @@ THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u8 *unk = (u8 *)FUN_02039438(unk80, 6); - FUN_020545B8(unk80->unk08, FUN_02039438(unk80, 1), 3); - FUN_02054608(FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2)); + FUN_020545B8(unk80->unk08, (struct Window *)FUN_02039438(unk80, 1), 3); + FUN_02054608((struct Window *)FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2)); *unk = 1; return FALSE; } @@ -782,7 +779,7 @@ THUMB_FUNC BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx) struct UnkSavStruct80 *unk80 = ctx->unk80; struct Window *unk = FUN_02039438(unk80, 0x1); u8 *unk2 = FUN_02039438(unk80, 0x6); - FUN_0200D0E0(unk, 0); //clear window? + ClearFrameAndWindow2(unk, 0); //clear window? RemoveWindow(unk); *unk2 = 0; return FALSE; @@ -956,7 +953,7 @@ THUMB_FUNC BOOL ScrCmd_Unk003A(struct ScriptContext *ctx) ReadMsgDataIntoString(ctx->msgData, msg, *unk2); StringExpandPlaceholders(*unk4, *unk3, *unk2); - *unk1 = FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1); + *unk1 = (u8)FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1); ctx->data[0] = wk; SetupNativeScript(ctx, FUN_0203A94C); return TRUE; @@ -1110,15 +1107,16 @@ THUMB_FUNC static BOOL FUN_0203AB00(struct ScriptContext *ctx) THUMB_FUNC BOOL ScrCmd_ShowSaveClock(struct ScriptContext *ctx) { - u32 *unk = FUN_02039438(ctx->unk80, 1); - u32 *unk2 = FUN_02039438(ctx->unk80, 18); + struct Window *unk = (struct Window *)FUN_02039438(ctx->unk80, 1); + struct UnkStruct_0200CABC_1 **unk2 = (struct UnkStruct_0200CABC_1 **)FUN_02039438(ctx->unk80, 18); *unk2 = FUN_0200D858(unk, 994); return FALSE; } + THUMB_FUNC BOOL ScrCmd_HideSaveClock(struct ScriptContext *ctx) { - u32 *unk = FUN_02039438(ctx->unk80, 18); + struct UnkStruct_0200CABC_1 **unk = (struct UnkStruct_0200CABC_1 **)FUN_02039438(ctx->unk80, 18); FUN_0200DBFC(*unk); return FALSE; } @@ -1343,25 +1341,25 @@ THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx) { unk4[0] = 15; pos++; - unk4[1] = unk1 - unk5; + unk4[1] = (u16)(unk1 - unk5); } else if (unk5 > unk1) { unk4[0] = 14; pos++; - unk4[1] = unk5 - unk1; + unk4[1] = (u16)(unk5 - unk1); } if (unk6 < unk2) { unk4[pos * 2] = 12; - unk4[pos * 2 + 1] = unk2 - unk6; + unk4[pos * 2 + 1] = (u16)(unk2 - unk6); pos++; } else if (unk6 > unk2) { unk4[pos * 2] = 13; - unk4[pos * 2 + 1] = unk6 - unk2; + unk4[pos * 2 + 1] = (u16)(unk6 - unk2); pos++; } @@ -1405,3 +1403,17 @@ THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx) u8 *unk = FUN_02039438(ctx->unk80, 4); return *unk == 0 ? TRUE : FALSE; } + +THUMB_FUNC static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2) +{ + UnkStruct_0203B174 *unkStruct = (UnkStruct_0203B174 *)AllocFromHeap(4, sizeof(UnkStruct_0203B174)); + if (unkStruct == NULL) + { + GF_AssertFail(); + return; + } + unkStruct->Unk0C = arg; + unkStruct->Unk04 = param1; + unkStruct->Unk08 = param2; + unkStruct->Unk00 = FUN_0200CA44(FUN_0203B1A8, unkStruct, 0); +} diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c new file mode 100644 index 00000000..c957dec1 --- /dev/null +++ b/arm9/src/scrcmd_amity_square.c @@ -0,0 +1,200 @@ +#include "scrcmd.h" +#include "constants/accessories.h" +#include "constants/pokemon.h" +#include "event_data.h" + +extern void FUN_0205F54C(struct ScriptState* state); +extern u16 FUN_0205F55C(struct ScriptState* state); + +static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = { + { // Clefairy and Skitty + ACCESSORY_WHITE_FLUFF, + ACCESSORY_ORANGE_FLUFF, + ACCESSORY_WHITE_FEATHER, + ACCESSORY_MINI_PEBBLE, + ACCESSORY_SMALL_LEAF, + ACCESSORY_BLUE_SCALE, + + ACCESSORY_WHITE_BEARD, + ACCESSORY_THIN_MUSHROOM, + ACCESSORY_BIG_SCALE, + + ACCESSORY_STUMP + }, + + { // Torchic and Drifloon + ACCESSORY_PINK_FLUFF, + ACCESSORY_RED_FEATHER, + ACCESSORY_YELLOW_FEATHER, + ACCESSORY_BLACK_BEARD, + ACCESSORY_NARROW_SCALE, + ACCESSORY_WHITE_FLUFF, + + ACCESSORY_WHITE_MOUSTACHE, + ACCESSORY_SHED_CLAW, + ACCESSORY_NARROW_LEAF, + + ACCESSORY_PURPLE_SCALE + }, + + { // Psyduck and Pachirisu + ACCESSORY_SNAGGY_PEBBLE, + ACCESSORY_JAGGED_BOULDER, + ACCESSORY_BROWN_FLUFF, + ACCESSORY_MINI_PEBBLE, + ACCESSORY_BLACK_MOUSTACHE, + ACCESSORY_SHED_HORN, + + ACCESSORY_NARROW_SCALE, + ACCESSORY_ROUND_PEBBLE, + ACCESSORY_GREEN_SCALE, + + ACCESSORY_THICK_MUSHROOM + }, + + { // Jigglypuff and Shroomish + ACCESSORY_PINK_SCALE, + ACCESSORY_BLUE_FEATHER, + ACCESSORY_WHITE_FEATHER, + ACCESSORY_BLUE_SCALE, + ACCESSORY_THIN_MUSHROOM, + ACCESSORY_JAGGED_BOULDER, + + ACCESSORY_WHITE_BEARD, + ACCESSORY_BLACK_BEARD, + ACCESSORY_BIG_LEAF, + + ACCESSORY_ROUND_PEBBLE + }, + + { // Pikachu + ACCESSORY_ORANGE_FLUFF, + ACCESSORY_BROWN_FLUFF, + ACCESSORY_SMALL_LEAF, + ACCESSORY_RED_FEATHER, + ACCESSORY_YELLOW_FEATHER, + ACCESSORY_YELLOW_FLUFF, + + ACCESSORY_GLITTER_BOULDER, + ACCESSORY_BIG_SCALE, + ACCESSORY_BLACK_MOUSTACHE, + + ACCESSORY_PURPLE_SCALE + }, + + { // Buneary and Happiny + ACCESSORY_PINK_SCALE, + ACCESSORY_SHED_HORN, + ACCESSORY_PINK_FLUFF, + ACCESSORY_YELLOW_FEATHER, + ACCESSORY_SHED_CLAW, + ACCESSORY_BLACK_FLUFF, + + ACCESSORY_SNAGGY_PEBBLE, + ACCESSORY_BIG_LEAF, + ACCESSORY_GREEN_SCALE, + + ACCESSORY_BLACK_PEBBLE + }, +}; + +THUMB_FUNC BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205F54C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = FUN_0205F55C(state); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 rand = (u16)(LCRandom() % 100); + + u32 j; + if (rand < 15) + { + j = 0; + } + else if (rand < 30) + { + j = 1; + } + else if (rand < 45) + { + j = 2; + } + else if (rand < 60) + { + j = 3; + } + else if (rand < 70) + { + j = 4; + } + else if (rand < 80) + { + j = 5; + } + else if (rand < 88) + { + j = 6; + } + else if (rand < 93) + { + j = 7; + } + else if (rand < 98) + { + j = 8; + } + else + { + j = 9; + } + + u32 i; + switch (species) + { + case SPECIES_CLEFAIRY: + case SPECIES_SKITTY: + i = 0; + break; + case SPECIES_TORCHIC: + case SPECIES_DRIFLOON: + i = 1; + break; + case SPECIES_PSYDUCK: + case SPECIES_PACHIRISU: + i = 2; + break; + case SPECIES_JIGGLYPUFF: + case SPECIES_SHROOMISH: + i = 3; + break; + case SPECIES_PIKACHU: + i = 4; + break; + case SPECIES_BUNEARY: + case SPECIES_HAPPINY: + i = 5; + break; + default: + i = 0; + break; + } + + *ret_ptr = sAmitySquarePossibleAccessoriesByPokemon[i][j]; + return FALSE; +} diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index ae20b5a4..b0993387 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -1,11 +1,7 @@ #include "scrcmd.h" #include "unk_020040F4.h" +#include "sound_chatot.h" -extern void* Sav2_Chatot_get(struct SaveBlock2* sav2); -extern u32 FUN_02005D20(void *); -extern void FUN_02005E6C(void *); -extern u32 FUN_02005E28(void); -extern void FUN_02005E64(void); extern BOOL FUN_02005CBC(void); extern void PlaySound(u16); extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16); @@ -41,7 +37,8 @@ THUMB_FUNC BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx) THUMB_FUNC BOOL ScrCmd_StopBgm(struct ScriptContext *ctx) { - u32 unk0 = FUN_02004124(ScriptReadHalfword(ctx)); + ScriptReadHalfword(ctx); + u32 unk0 = FUN_02004124(); FUN_02005350(unk0, 0); return FALSE; } @@ -199,7 +196,7 @@ THUMB_FUNC BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx) u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); - if (FUN_02005D20(unk) == 1) + if (Chatot_checkCry(unk) == 1) { *ret_ptr = 1; return FALSE; @@ -215,7 +212,7 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx) { u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - if (FUN_02005E28() == 0) + if (Chatot_startRecording() == 0) { *ret_ptr = 1; return FALSE; @@ -230,14 +227,14 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx) { #pragma unused(ctx) - FUN_02005E64(); + Chatot_stopRecording(); return TRUE; } THUMB_FUNC BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx) { void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); - FUN_02005E6C(unk); + Chatot_saveRecording(unk); return TRUE; } diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index 1242d550..550dcab5 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -13,6 +13,8 @@ #include "script_buffers.h" #include "unk_02024E64.h" #include "text.h" +#include "msgdata/msg.naix" +#include "graphic/font.naix" #pragma thumb on @@ -34,9 +36,9 @@ const u16 UNK_020ECE6C[][2] = { }; const u16 UNK_020ECE64[] = { - 382, - 384, - 383, + NARC_msg_narc_0382_bin, + NARC_msg_narc_0384_bin, + NARC_msg_narc_0383_bin, 0 }; @@ -137,7 +139,7 @@ void BufferRivalsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav2 void BufferFriendsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav2) { struct PlayerData * data = Sav2_PlayerData_GetProfileAddr(sav2); - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 497, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0497_bin, mgr->heap_id); if (PlayerProfile_GetTrainerGender(data) == 0) { ReadMsgDataIntoString(msgData, 1, mgr->tmpbuf); @@ -152,7 +154,7 @@ void BufferFriendsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav void BufferBoxMonSpeciesName(struct ScrStrBufs * mgr, u32 idx, struct BoxPokemon * mon) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 362, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0362_bin, mgr->heap_id); ReadMsgDataIntoString(msgData, GetBoxMonData(mon, MON_DATA_SPECIES, NULL), mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); DestroyMsgData(msgData); @@ -165,7 +167,7 @@ void BufferBoxMonSpeciesNameWithArticle(struct ScrStrBufs * mgr, u32 idx, struct void BufferSpeciesNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 species) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 363, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0363_bin, mgr->heap_id); ReadMsgDataIntoString(msgData, species, mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); DestroyMsgData(msgData); @@ -191,7 +193,7 @@ void BufferIntegerAsString(struct ScrStrBufs * mgr, u32 idx, int num, u32 ndigit void BufferMoveName(struct ScrStrBufs * mgr, u32 idx, u32 move) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 588, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0588_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, move, mgr->tmpbuf); @@ -202,7 +204,7 @@ void BufferMoveName(struct ScrStrBufs * mgr, u32 idx, u32 move) void BufferRibbonNameOrDesc(struct ScrStrBufs * mgr, u32 idx, u32 ribbon) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 484, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0484_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, ribbon, mgr->tmpbuf); @@ -213,7 +215,7 @@ void BufferRibbonNameOrDesc(struct ScrStrBufs * mgr, u32 idx, u32 ribbon) void BufferAbilityName(struct ScrStrBufs * mgr, u32 idx, u32 ability) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 552, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0552_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, ability, mgr->tmpbuf); @@ -224,7 +226,7 @@ void BufferAbilityName(struct ScrStrBufs * mgr, u32 idx, u32 ability) void BufferNatureName(struct ScrStrBufs * mgr, u32 idx, u32 nature) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 190, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0190_bin, mgr->heap_id); ReadMsgDataIntoString(msgData, nature, mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); DestroyMsgData(msgData); @@ -232,7 +234,7 @@ void BufferNatureName(struct ScrStrBufs * mgr, u32 idx, u32 nature) void BufferItemName(struct ScrStrBufs * mgr, u32 idx, u32 item) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 344, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0344_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, item, mgr->tmpbuf); @@ -243,7 +245,7 @@ void BufferItemName(struct ScrStrBufs * mgr, u32 idx, u32 item) void BufferItemNameWithIndefArticle(struct ScrStrBufs * mgr, u32 idx, u32 item) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 346, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0346_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, item, mgr->tmpbuf); @@ -254,7 +256,7 @@ void BufferItemNameWithIndefArticle(struct ScrStrBufs * mgr, u32 idx, u32 item) void BufferItemNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 item) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 347, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0347_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, item, mgr->tmpbuf); @@ -265,7 +267,7 @@ void BufferItemNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 item) void BufferPocketName(struct ScrStrBufs * mgr, u32 idx, u32 pocket) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 349, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0349_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, pocket, mgr->tmpbuf); @@ -276,7 +278,7 @@ void BufferPocketName(struct ScrStrBufs * mgr, u32 idx, u32 pocket) void BufferTypeName(struct ScrStrBufs * mgr, u32 idx, u32 type) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 565, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0565_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, type, mgr->tmpbuf); @@ -287,7 +289,7 @@ void BufferTypeName(struct ScrStrBufs * mgr, u32 idx, u32 type) void BufferStatName(struct ScrStrBufs * mgr, u32 idx, u32 stat) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 495, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0495_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, stat, mgr->tmpbuf); @@ -298,7 +300,7 @@ void BufferStatName(struct ScrStrBufs * mgr, u32 idx, u32 stat) void BufferStatusName(struct ScrStrBufs * mgr, u32 idx, u32 status) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 205, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0205_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, status, mgr->tmpbuf); @@ -309,7 +311,7 @@ void BufferStatusName(struct ScrStrBufs * mgr, u32 idx, u32 status) void BufferFlavorDislikeText(struct ScrStrBufs * mgr, u32 idx, u32 flavor) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 548, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0548_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, flavor, mgr->tmpbuf); @@ -320,7 +322,7 @@ void BufferFlavorDislikeText(struct ScrStrBufs * mgr, u32 idx, u32 flavor) void BufferLandmarkName(struct ScrStrBufs * mgr, u32 idx, u32 landmark) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 382, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0382_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, landmark, mgr->tmpbuf); @@ -331,7 +333,7 @@ void BufferLandmarkName(struct ScrStrBufs * mgr, u32 idx, u32 landmark) void BufferPoketchAppName(struct ScrStrBufs * mgr, u32 idx, u32 app) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 406, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0406_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, app, mgr->tmpbuf); @@ -342,7 +344,7 @@ void BufferPoketchAppName(struct ScrStrBufs * mgr, u32 idx, u32 app) void BufferTrainerClassName(struct ScrStrBufs * mgr, u32 idx, u32 trclass) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 560, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0560_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, trclass, mgr->tmpbuf); @@ -353,7 +355,7 @@ void BufferTrainerClassName(struct ScrStrBufs * mgr, u32 idx, u32 trclass) void BufferTrainerClassNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trclass) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 561, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0561_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, trclass, mgr->tmpbuf); @@ -364,7 +366,7 @@ void BufferTrainerClassNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trc void BufferTrainerClassNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct TrainerDataLoaded * tr) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 560, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0560_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, tr->data.trainerClass, mgr->tmpbuf); @@ -375,7 +377,7 @@ void BufferTrainerClassNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, stru void BufferTrainerName(struct ScrStrBufs * mgr, u32 idx, u32 msgno) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0559_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, msgno, mgr->tmpbuf); @@ -392,7 +394,7 @@ void BufferTrainerNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct Tr void BufferUndergroundItemName(struct ScrStrBufs * mgr, u32 idx, u32 item) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 569, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0569_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, item, mgr->tmpbuf); @@ -403,7 +405,7 @@ void BufferUndergroundItemName(struct ScrStrBufs * mgr, u32 idx, u32 item) void BufferUndergroundItemNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 item) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 570, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0570_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, item, mgr->tmpbuf); @@ -414,7 +416,7 @@ void BufferUndergroundItemNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 void BufferUndergroundTrapName(struct ScrStrBufs * mgr, u32 idx, u32 trap) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 571, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0571_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, trap, mgr->tmpbuf); @@ -425,7 +427,7 @@ void BufferUndergroundTrapName(struct ScrStrBufs * mgr, u32 idx, u32 trap) void BufferUndergroundTrapNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trap) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 572, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0572_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, trap, mgr->tmpbuf); @@ -436,7 +438,7 @@ void BufferUndergroundTrapNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 void BufferContestJudgeName(struct ScrStrBufs * mgr, u32 idx, u32 judge) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 194, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0194_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, judge, mgr->tmpbuf); @@ -447,7 +449,7 @@ void BufferContestJudgeName(struct ScrStrBufs * mgr, u32 idx, u32 judge) void BufferContestMessage(struct ScrStrBufs * mgr, u32 idx, u32 msg) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 191, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0191_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, msg, mgr->tmpbuf); @@ -458,7 +460,7 @@ void BufferContestMessage(struct ScrStrBufs * mgr, u32 idx, u32 msg) void BufferContestMessage2(struct ScrStrBufs * mgr, u32 idx, u32 msg) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 191, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0191_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, msg, mgr->tmpbuf); @@ -469,7 +471,7 @@ void BufferContestMessage2(struct ScrStrBufs * mgr, u32 idx, u32 msg) void BufferInterviewQuestion(struct ScrStrBufs * mgr, u32 idx, u32 question) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 574, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0574_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, question, mgr->tmpbuf); @@ -480,7 +482,7 @@ void BufferInterviewQuestion(struct ScrStrBufs * mgr, u32 idx, u32 question) void BufferInterviewAnswer(struct ScrStrBufs * mgr, u32 idx, u32 answer) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 573, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0573_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, answer, mgr->tmpbuf); @@ -491,7 +493,7 @@ void BufferInterviewAnswer(struct ScrStrBufs * mgr, u32 idx, u32 answer) void BufferDecorationName(struct ScrStrBufs * mgr, u32 idx, u32 decor) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 567, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0567_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, decor, mgr->tmpbuf); @@ -502,7 +504,7 @@ void BufferDecorationName(struct ScrStrBufs * mgr, u32 idx, u32 decor) void BufferDecorationNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 decor) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 568, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0568_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, decor, mgr->tmpbuf); @@ -513,7 +515,7 @@ void BufferDecorationNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 decor void BufferGenderSymbol(struct ScrStrBufs * mgr, u32 idx, u32 gender) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 199, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0199_bin, mgr->heap_id); switch (gender) { case 0: @@ -538,7 +540,7 @@ void BufferBoxName(struct ScrStrBufs * mgr, u32 idx, struct PCStorage * pc, int void BufferGymName(struct ScrStrBufs * mgr, u32 idx, u32 gym) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 331, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0331_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, gym, mgr->tmpbuf); @@ -549,7 +551,7 @@ void BufferGymName(struct ScrStrBufs * mgr, u32 idx, u32 gym) void BufferTimeOfDayName(struct ScrStrBufs * mgr, u32 idx, u32 time) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 550, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0550_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, time, mgr->tmpbuf); @@ -560,7 +562,7 @@ void BufferTimeOfDayName(struct ScrStrBufs * mgr, u32 idx, u32 time) void BufferCountryName(struct ScrStrBufs * mgr, u32 idx, u32 country) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 612, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0612_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, country, mgr->tmpbuf); @@ -592,7 +594,7 @@ void FUN_0200B518(struct ScrStrBufs * mgr, u32 idx, u32 a2) void BufferSealName(struct ScrStrBufs * mgr, u32 idx, u32 seal) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 10, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0010_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, seal, mgr->tmpbuf); @@ -603,7 +605,7 @@ void BufferSealName(struct ScrStrBufs * mgr, u32 idx, u32 seal) void BufferSealNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 seal) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 11, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0011_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, seal, mgr->tmpbuf); @@ -629,7 +631,7 @@ void BufferLocationName(struct ScrStrBufs * mgr, u32 idx, u16 a2) // Location is invalid. // Fallback: Mystery Zone DestroyMsgData(msgData); - msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 382, mgr->heap_id); + msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0382_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, 0, mgr->tmpbuf); @@ -641,7 +643,7 @@ void BufferLocationName(struct ScrStrBufs * mgr, u32 idx, u16 a2) void BufferPoffinName(struct ScrStrBufs * mgr, u32 idx, u32 poffin) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 414, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0414_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, poffin, mgr->tmpbuf); @@ -652,7 +654,7 @@ void BufferPoffinName(struct ScrStrBufs * mgr, u32 idx, u32 poffin) void BufferFashionName(struct ScrStrBufs * mgr, u32 idx, u32 fashion) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 338, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0338_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, fashion, mgr->tmpbuf); @@ -663,7 +665,7 @@ void BufferFashionName(struct ScrStrBufs * mgr, u32 idx, u32 fashion) void BufferFashionNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 fashion) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 339, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0339_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, fashion, mgr->tmpbuf); @@ -674,7 +676,7 @@ void BufferFashionNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 fashion) void BufferContestBackgroundName(struct ScrStrBufs * mgr, u32 idx, u32 bg) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 340, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0340_bin, mgr->heap_id); if (msgData != NULL) { ReadMsgDataIntoString(msgData, bg, mgr->tmpbuf); @@ -696,7 +698,7 @@ void BufferEasyChatWord(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month) { - struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 364, mgr->heap_id); + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0364_bin, mgr->heap_id); if (msgData != NULL) { if (month < 1 || month > 12) @@ -746,12 +748,12 @@ void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr) StringSetEmpty(mgr->array[i].msg); } -struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4) +struct UnkStruct_0200B870 * MessagePrinter_new(u32 color1, u32 color2, u32 color3, u32 heap_id) { - struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870)); + struct UnkStruct_0200B870 * sp8 = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200B870)); if (sp8 != NULL) { - sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4); + sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, NARC_font_narc_0004_NCGR_lz, 1, &sp8->unk_4, heap_id); int i; u8 * ptr = sp8->unk_4->unk_14; for (i = 0; i < sp8->unk_4->unk_10; i++) @@ -759,35 +761,35 @@ struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4) switch (ptr[i]) { case 0x00: - ptr[i] = (u8)((sp4 << 4) | sp4); + ptr[i] = (u8)((color3 << 4) | color3); break; case 0x01: - ptr[i] = (u8)((sp4 << 4) | r5); + ptr[i] = (u8)((color3 << 4) | color1); break; case 0x02: - ptr[i] = (u8)((sp4 << 4) | r6); + ptr[i] = (u8)((color3 << 4) | color2); break; case 0x10: - ptr[i] = (u8)((r5 << 4) | sp4); + ptr[i] = (u8)((color1 << 4) | color3); break; case 0x11: - ptr[i] = (u8)((r5 << 4) | r5); + ptr[i] = (u8)((color1 << 4) | color1); break; case 0x12: - ptr[i] = (u8)((r5 << 4) | r6); + ptr[i] = (u8)((color1 << 4) | color2); break; case 0x20: - ptr[i] = (u8)((r6 << 4) | sp4); + ptr[i] = (u8)((color2 << 4) | color3); break; case 0x21: - ptr[i] = (u8)((r6 << 4) | r5); + ptr[i] = (u8)((color2 << 4) | color1); break; case 0x22: - ptr[i] = (u8)((r6 << 4) | r6); + ptr[i] = (u8)((color2 << 4) | color2); break; } } - sp8->unk_28 = sp4; + sp8->unk_28 = color3; } return sp8; } diff --git a/arm9/src/sound.c b/arm9/src/sound.c index ec65dd06..210aec2e 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -3,6 +3,7 @@ #include "SPI_mic.h" #include "SPI_pm.h" #include "unk_020040F4.h" +#include "sound_chatot.h" #pragma thumb on @@ -21,7 +22,6 @@ void FUN_020040DC(void); extern void FUN_0200521C(int); extern void FUN_0200538C(int, int, int); extern BOOL FUN_02005404(void); -extern void FUN_02005CFC(void); void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options) { diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c new file mode 100644 index 00000000..06b2fc64 --- /dev/null +++ b/arm9/src/sound_chatot.c @@ -0,0 +1,181 @@ +#include "global.h" +#include "sound_chatot.h" +#include "SPI_mic.h" +#include "math_util.h" +#include "proto.h" +#include "sav_chatot.h" +#include "sound.h" +#include "unk_020040F4.h" +#include "unk_020051F4.h" + +THUMB_FUNC BOOL FUN_02005CFC(void) +{ + if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) + { + FUN_02005DFC(); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0) +{ + u8 *r4 = FUN_02003D38(30); + + if (!Chatot_exists(param0)) + { + return FALSE; + } + + if (*r4 != 1) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3) +{ +#pragma unused(param1) + + s8 *st0 = FUN_02004DB4(); + u8 *st4 = FUN_02003D38(29); + + if (!Chatot_checkCry(param0)) + { + return 0; + } + + FUN_02005614(0); + FUN_02005DFC(); + FUN_02004984(14); + u16 r4 = (u16)(LCRandom() % 8192); + + Chatot_Decode(st0, Chatot_GetData(param0)); + + struct UnkStruct_020040F4_1 st8; + + st8.unk00 = FUN_02004930(14); + st8.unk04 = 0; + st8.unk08 = FUN_02004DB4(); + st8.unk0c = 0; + st8.unk10 = 0; + st8.unk14 = 2000; + st8.unk18 = 2000; + st8.unk20 = (u32)(r4 + 0x8000); + st8.unk24 = param3 / 2 + 64; + st8.unk1c = param2; + + u32 res = FUN_02004A6C(&st8, 14); + FUN_02004AF8(14, param2); + *st4 = 1; + FUN_02005E80(0); + + return res; +} + +THUMB_FUNC void FUN_02005DFC(void) +{ + u8 *r5 = FUN_02003D38(15); + u8 *r4 = FUN_02003D38(29); + + if (*r5 == 1) + { + FUN_02004C3C(14); + FUN_02004A04(14); + } + + *r4 = 0; +} + +THUMB_FUNC u32 Chatot_startRecording(void) +{ + struct MIC_SamplingData st0; + + st0.unk00 = 2; + st0.unk04 = FUN_02004DB4(); + st0.unk08 = 2000; + if ((st0.unk08 & 0x1f) != 0) + { + st0.unk08 &= ~0x1f; + } + st0.unk0c = 0x4174; + st0.unk10 = 0; + st0.unk14 = 0; + st0.unk18 = 0; + + return GF_MIC_StartAutoSampling(&st0); +} + +THUMB_FUNC void Chatot_stopRecording(void) +{ + GF_MIC_StopAutoSampling(); +} + +THUMB_FUNC void Chatot_saveRecording(struct SaveChatotSoundClip *param0) +{ + Chatot_Encode(param0, FUN_02004DB4()); +} + +THUMB_FUNC void FUN_02005E80(u8 param0) +{ + *(u8 *)FUN_02003D38(30) = param0; +} + +THUMB_FUNC void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3) +{ + struct SaveChatotSoundClip **r0 = FUN_02003D38(35); + u32 ret; + if (param0 == 0) + { + ret = FUN_02005D48(*r0, param1, param2, param3); + } + else + { + ret = FUN_02005D48(param0, param1, param2, param3); + } + + if (ret == 0) + { + FUN_02005E80(1); + FUN_020056AC(0, SPECIES_CHATOT, param3, param2, 11); + } +} + +THUMB_FUNC u32 FUN_02005EE0(struct SaveChatotSoundClip *param0) +{ + if (!Chatot_exists(param0)) + { + return 0; + } + + s8 r0 = Chatot_GetData(param0)[15]; + if (r0 < -30) + { + return 1; + } + else if (r0 >= 30 && r0 < 128) + { + return 2; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_02005F14(s32 param0) +{ + switch (param0) + { + case 0: + case 1: + case 5: + case 11: + case 12: + return TRUE; + default: + return FALSE; + } +} diff --git a/arm9/src/text.c b/arm9/src/text.c index e8c76722..f178fa9d 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -6,10 +6,11 @@ #include "script_buffers.h" #include "unk_0200CA44.h" #include "font.h" +#include "graphic/font.naix" const struct FontInfo *gFonts = NULL; -u16 UNK_021C5734[0x100]; +u16 sFontHalfRowLookupTable[0x100]; BOOL UNK_021C5714[8]; u16 UNK_021C570E; u16 UNK_021C5710; @@ -281,7 +282,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow sp20[2] = shadowColor; sp20[3] = bgColor; - // FIXME: Need these to be accessed by a pointer to UNK_021C570C + // These are accessed by a pointer to UNK_021C570C due to -ipa file UNK_021C5712 = bgColor; UNK_021C570E = fgColor; UNK_021C5710 = shadowColor; @@ -294,7 +295,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow { for (l = 0; l < 4; l++) { - UNK_021C5734[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0)); + sFontHalfRowLookupTable[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0)); } } } @@ -303,22 +304,22 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst) { - dst[0] = UNK_021C5734[(u32)src[0] >> 8]; - dst[1] = UNK_021C5734[(u8)src[0]]; - dst[2] = UNK_021C5734[(u32)src[1] >> 8]; - dst[3] = UNK_021C5734[(u8)src[1]]; - dst[4] = UNK_021C5734[(u32)src[2] >> 8]; - dst[5] = UNK_021C5734[(u8)src[2]]; - dst[6] = UNK_021C5734[(u32)src[3] >> 8]; - dst[7] = UNK_021C5734[(u8)src[3]]; - dst[8] = UNK_021C5734[(u32)src[4] >> 8]; - dst[9] = UNK_021C5734[(u8)src[4]]; - dst[10] = UNK_021C5734[(u32)src[5] >> 8]; - dst[11] = UNK_021C5734[(u8)src[5]]; - dst[12] = UNK_021C5734[(u32)src[6] >> 8]; - dst[13] = UNK_021C5734[(u8)src[6]]; - dst[14] = UNK_021C5734[(u32)src[7] >> 8]; - dst[15] = UNK_021C5734[(u8)src[7]]; + dst[0] = sFontHalfRowLookupTable[(u32)src[0] >> 8]; + dst[1] = sFontHalfRowLookupTable[(u8)src[0]]; + dst[2] = sFontHalfRowLookupTable[(u32)src[1] >> 8]; + dst[3] = sFontHalfRowLookupTable[(u8)src[1]]; + dst[4] = sFontHalfRowLookupTable[(u32)src[2] >> 8]; + dst[5] = sFontHalfRowLookupTable[(u8)src[2]]; + dst[6] = sFontHalfRowLookupTable[(u32)src[3] >> 8]; + dst[7] = sFontHalfRowLookupTable[(u8)src[3]]; + dst[8] = sFontHalfRowLookupTable[(u32)src[4] >> 8]; + dst[9] = sFontHalfRowLookupTable[(u8)src[4]]; + dst[10] = sFontHalfRowLookupTable[(u32)src[5] >> 8]; + dst[11] = sFontHalfRowLookupTable[(u8)src[5]]; + dst[12] = sFontHalfRowLookupTable[(u32)src[6] >> 8]; + dst[13] = sFontHalfRowLookupTable[(u8)src[6]]; + dst[14] = sFontHalfRowLookupTable[(u32)src[7] >> 8]; + dst[15] = sFontHalfRowLookupTable[(u8)src[7]]; } THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer) @@ -330,7 +331,7 @@ THUMB_FUNC u16 *FUN_0201C1B0(void) { void *res = AllocFromHeap(0, 32 * 24 * sizeof(u16)); struct UnkStruct_0200B870_sub * var; - void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 5, 0, &var, 0); + void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, NARC_font_narc_0005_NCGR, 0, &var, 0); MI_CpuCopy32(var->unk_14, res, 32 * 24 * sizeof(u16)); FreeToHeap(tmp); return res; diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index 3c3d0fed..03d01ae6 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -3,22 +3,10 @@ #include "bg_window.h" #include "font.h" #include "render_text.h" +#include "render_window.h" extern void FUN_0201BD5C(void); -extern void FUN_0200CD68( - struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern void FUN_0200D0BC(struct Window *param0, u32 param1, u32 param2, u32 param3); - -extern void FUN_0200D300(struct BgConfig *param0, - u32 param1, - u32 param2, - u32 param3, - u8 param4, - u32 param5, - u32 param6); -extern void FUN_0200D6F8(struct Window *param0, u32 param1, u32 param2, u32 param3, u8 param4); - THUMB_FUNC void FUN_02054590(u32 param0, u32 param1) { if (param1 == 1) @@ -45,7 +33,7 @@ THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options) { FUN_0200CD68(param0->bgConfig, GetWindowBgId(param0), 994, 10, (u8)Options_GetFrame(options), 4); FUN_0205464C(param0); - FUN_0200D0BC(param0, 0, 994, 10); + DrawFrameAndWindow2(param0, 0, 994, 10); } THUMB_FUNC void FUN_0205464C(struct Window *param0) @@ -99,9 +87,9 @@ THUMB_FUNC void FUN_020546E0( } } -THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u16 param2) { FUN_0200D300(param0->bgConfig, GetWindowBgId(param0), 0x399, 9, (u8)param1, param2, 4); FillWindowPixelBuffer(param0, 15); - FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1); + DrawFrameAndWindow3(param0, 0, 0x399, 9, (u8)param1); } diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c index 5713ddf0..fa1d968f 100644 --- a/arm9/src/unk_020040F4.c +++ b/arm9/src/unk_020040F4.c @@ -3,6 +3,7 @@ #include "OS_cache.h" #include "sound.h" #include "unk_0202F150.h" +#include "SPI_mic.h" u32 UNK_021C3DD8[2]; @@ -22,9 +23,6 @@ extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32); extern u16 NNS_SndPlayerCountPlayingSeqByPlayerNo(int); extern u32 NNS_SndPlayerGetSeqNo(u32 *); extern u32 NNS_SndArcGetBankInfo(u32); -extern u32 MIC_StartAutoSampling(u32); -extern u32 MIC_StopAutoSampling(); -extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); extern u32 NNS_SndWaveOutAllocChannel(u32); extern void NNS_SndWaveOutFreeChannel(u32); extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, s32); @@ -59,7 +57,7 @@ THUMB_FUNC void FUN_020040F4(u8 param0) *ptr = param0; } -THUMB_FUNC u8 FUN_02004104() +THUMB_FUNC u8 FUN_02004104(void) { u8 *ptr = FUN_02003D38(5); @@ -74,7 +72,7 @@ THUMB_FUNC void FUN_02004110(u16 param0) FUN_02004130(0); } -THUMB_FUNC u16 FUN_02004124() +THUMB_FUNC u16 FUN_02004124(void) { u16 *ptr = FUN_02003D38(9); @@ -87,7 +85,7 @@ THUMB_FUNC void FUN_02004130(u16 param0) *ptr = param0; } -THUMB_FUNC u16 FUN_02004140() +THUMB_FUNC u16 FUN_02004140(void) { u16 *ptr = FUN_02003D38(10); @@ -471,7 +469,7 @@ THUMB_FUNC void FUN_02004724(int param0) FUN_0200521C(param0); } -THUMB_FUNC void FUN_02004738() +THUMB_FUNC void FUN_02004738(void) { GF_Snd_RestoreState(FUN_02004748(4)); } @@ -544,7 +542,7 @@ THUMB_FUNC void FUN_020047C8(u8 param0, u8 param1) *ptr = param1; } -THUMB_FUNC void FUN_02004810() +THUMB_FUNC void FUN_02004810(void) { u8 *ptr = FUN_02003D38(11); u8 *ptr2 = FUN_02003D38(12); @@ -650,14 +648,13 @@ THUMB_FUNC u16 FUN_02004900(u32 param0) return *ptr; } -THUMB_FUNC u32 GF_MIC_StartAutoSampling(u32 param0) +THUMB_FUNC u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0) { return MIC_StartAutoSampling(param0); } -THUMB_FUNC u32 GF_MIC_StopAutoSampling(u32 param0) +THUMB_FUNC u32 GF_MIC_StopAutoSampling(void) { -#pragma unused(param0) GetSoundDataPointer(); return MIC_StopAutoSampling(); } @@ -914,7 +911,7 @@ THUMB_FUNC void FUN_02004C3C(u32 param0) } } -THUMB_FUNC BOOL GF_SndCaptureIsActive() +THUMB_FUNC BOOL GF_SndCaptureIsActive(void) { return NNS_SndCaptureIsActive(); } @@ -936,7 +933,7 @@ THUMB_FUNC void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1) NNS_SndCaptureSetReverbVolume(param0, param1); } -THUMB_FUNC void FUN_02004CB4() +THUMB_FUNC void FUN_02004CB4(void) { GetSoundDataPointer(); @@ -948,7 +945,7 @@ THUMB_FUNC void FUN_02004CB4() NNS_SndCaptureStartEffect(r4, 0x1000, 0, 0x55F0, 2, FUN_02005068, st8); } -THUMB_FUNC void GF_SndCaptureStopEffect() +THUMB_FUNC void GF_SndCaptureStopEffect(void) { NNS_SndCaptureStopEffect(); } @@ -1000,7 +997,7 @@ THUMB_FUNC void FUN_02004D84(u32 param0) *(u32 *)FUN_02003D38(7) = param0; } -THUMB_FUNC u16 FUN_02004D94() +THUMB_FUNC u16 FUN_02004D94(void) { u16 *ptr = FUN_02003D38(7); @@ -1013,7 +1010,7 @@ THUMB_FUNC u16 FUN_02004D94() return --(*ptr); } -THUMB_FUNC u8 *FUN_02004DB4() +THUMB_FUNC u8 *FUN_02004DB4(void) { return UNK_021C3DE0; } @@ -1345,7 +1342,7 @@ THUMB_FUNC void FUN_0200516C(u32 param0) GF_SndCaptureIsActive(); } -THUMB_FUNC void FUN_020051AC() +THUMB_FUNC void FUN_020051AC(void) { if (FUN_02005404() == FALSE && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 && FUN_02004124() != 0x47e) diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c index 6da250d5..53311039 100644 --- a/arm9/src/unk_020051F4.c +++ b/arm9/src/unk_020051F4.c @@ -6,6 +6,7 @@ #include "sound.h" #include "unk_020040F4.h" #include "unk_0200CA44.h" +#include "sound_chatot.h" extern u32 NNS_SndArcPlayerStartSeq(u32 *, u32); extern u32 NNS_SndArcPlayerStartSeqEx(u32 *, s32, s32, s32, u32); @@ -13,9 +14,6 @@ extern void NNS_SndPlayerStopSeqBySeqNo(u32, u32); extern void NNS_SndPlayerStopSeqAll(u32); extern void NNS_SndPlayerStopSeq(u32 *, u32); extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32); -extern u32 FUN_02005D48(u32, u32, u32, u32); -extern void FUN_02005E80(u32); -extern void FUN_02005DFC(); extern void *FUN_0201B6C8(u32 *); THUMB_FUNC u32 FUN_020051F4(u16 param0) @@ -281,7 +279,7 @@ THUMB_FUNC void FUN_0200554C(u32 param0) THUMB_FUNC u32 FUN_02005578(u16 species) { u8 *r4 = FUN_02003D38(17); - u32 *r0 = FUN_02003D38(35); + struct SaveChatotSoundClip **r0 = FUN_02003D38(35); if (species != SPECIES_CHATOT) { diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c new file mode 100644 index 00000000..300967fc --- /dev/null +++ b/arm9/src/unk_02008AA4.c @@ -0,0 +1,249 @@ +#include "global.h" +#include "unk_02008AA4.h" +#include "GX_vramcnt.h" +#include "heap.h" +#include "unk_0200BB14.h" +#include "unk_02008DEC.h" +#include "oam.h" + +extern void FUN_0202134C(void *, u32); +extern u32 FUN_0201FCB0(u32 *); +extern void FUN_02021390(u32, u32 *); +extern void FUN_0201D194(u32, u32, u32); +extern void FUN_0201E068(u32, u32); + +THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, + s32 param1, + s32 param2, + s32 param3, + s32 param4, + s32 param5, + s32 param6, + u32 param7, + u32 param8, + struct UnkStruct_02008DEC_1 *param9, + struct UnkStruct_02008DEC_1 *param10, + struct UnkStruct_02008DEC_1 *param11, + struct UnkStruct_02008DEC_1 *param12, + struct UnkStruct_02008DEC_1 *param13, + struct UnkStruct_02008DEC_1 *param14) +{ + struct UnkStruct_02008DEC_sub *r7; + struct UnkStruct_02008DEC_sub *st14; + struct UnkStruct_02008DEC_sub *st10; + + struct UnkStruct_02008DEC_sub *stc = NULL; + struct UnkStruct_02008DEC_sub *r4 = NULL; + struct UnkStruct_02008DEC_sub *st8 = NULL; + + GF_ASSERT(param9); + GF_ASSERT(param10); + GF_ASSERT(param12); + GF_ASSERT(param11); + GF_ASSERT(param0); + + r7 = FUN_020094F0(param9, param1); + GF_ASSERT(r7); + + st14 = FUN_020094F0(param10, param2); + GF_ASSERT(st14); + + st10 = FUN_020094F0(param11, param3); + GF_ASSERT(st10); + + if (param12 != 0 && param4 != -1) + { + stc = FUN_020094F0(param12, param4); + GF_ASSERT(stc); + } + + if (param13 != 0) + { + if (param5 != -1) + { + r4 = FUN_020094F0(param13, param5); + } + + if (param6 != -1) + { + st8 = FUN_020094F0(param14, param6); + } + } + + u32 r6; + if (param7 != 0) + { + r6 = FUN_02009C80(r7, st10); + GF_ASSERT(r6); + + param0->unk04 = FUN_02009544(r7); + } + else + { + r6 = FUN_02009C5C(r7); + GF_ASSERT(r6); + + param0->unk04 = 0; + } + + param0->unk08 = FUN_02009E54(st14, r6); + param0->unk00 = r6; + param0->unk0C = FUN_02009574(st10); + + if (stc != 0) + { + param0->unk10 = FUN_0200958C(stc); + } + else + { + param0->unk10 = 0; + } + + if (r4 != 0) + { + param0->unk14 = FUN_020095A4(r4); + param0->unk18 = FUN_020095BC(st8); + } + else + { + param0->unk14 = 0; + param0->unk18 = 0; + } + + param0->unk1C = param7; + param0->unk20 = (u8)param8; +} + +THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, + u32 param1, + struct UnkStruct_02008DEC_1 *param2, + struct UnkStruct_02008DEC_1 *param3, + struct UnkStruct_02008DEC_1 *param4, + struct UnkStruct_02008DEC_1 *param5, + struct UnkStruct_02008DEC_1 *param6, + struct UnkStruct_02008DEC_1 *param7) +{ + + s32 r4 = 0; + while (param0[r4].unk00 != -2) + { + r4++; + } + + struct UnkStruct_02008AA4_1 *r6 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008AA4_1)); + r6->unk00 = AllocFromHeap(param1, r4 * sizeof(struct UnkStruct_0200BB14_sub)); + r6->unk04 = r4; + + for (int r7 = 0; r7 < r6->unk04; r7++) + { + FUN_02008AA4(&r6->unk00[r7], + param0[r7].unk00, + param0[r7].unk04, + param0[r7].unk08, + param0[r7].unk0C, + param0[r7].unk10, + param0[r7].unk14, + param0[r7].unk18, + param0[r7].unk1C, + param2, + param3, + param4, + param5, + param6, + param7); + } + + return r6; +} + +THUMB_FUNC void FUN_02008C80(struct UnkStruct_02008AA4_1 *param0) +{ + GF_ASSERT(param0); + + if (param0->unk00 != NULL) + { + FreeToHeap(param0->unk00); + } + FreeToHeap(param0); +} + +THUMB_FUNC u32 FUN_02008C9C(u32 param0, void *param1, u32 param2) +{ + FUN_0202134C(param1, 0xFFFFF000); + + u32 st10[3]; + u32 st0[4]; + + st0[0] = 0; + st0[1] = 0; + st0[2] = 0xFF000; + st0[3] = 0xC0000; + FUN_02009FD8(param1 + 0x98, st0, 1, param1); + + st0[0] = 0; + st0[1] = 0xC0000; + st0[2] = 0xFF000; + st0[3] = 0xC0000; + + FUN_02009FD8(param1 + 0xe0, st0, 2, param1); + + st10[0] = param0; + st10[1] = (u32)param1; + st10[2] = param2; + + return FUN_0201FCB0(st10); +} + +THUMB_FUNC void FUN_02008D04(u32 param0, u32 param1, u32 param2) +{ + u32 st0[4]; + st0[0] = param1; + st0[2] = 0xFF000; + st0[3] = 0xC0000; + st0[1] = param2; + FUN_02021390(param0 + 0x98, st0); +} + +THUMB_FUNC void FUN_02008D24(u32 param0, u32 param1, u32 param2) +{ + u32 st0[4]; + st0[0] = param1; + st0[2] = 0xFF000; + st0[3] = 0xC0000; + st0[1] = param2; + FUN_02021390(param0 + 0xe0, st0); +} + +THUMB_FUNC void FUN_02008D44(u32 param0, u32 param1) +{ + switch (param1) + { + case 0x10: + if (GX_GetBankForOBJ() == 0x40 || GX_GetBankForOBJ() == 0x20) + { + FUN_0201D194(0x3E00, 0x200, param0); + return; + } + + FUN_0201D194(0x7E00, 0x200, param0); + return; + case 0x00100010: + FUN_0201D194(0xfe00, 0x200, param0); + return; + case 0x00200010: + if (GX_GetBankForOBJ() == 0x30 || GX_GetBankForOBJ() == 0x50) + { + FUN_0201D194(0x13E00, 0x200, param0); + return; + } + FUN_0201D194(0x1FE00, 0x200, param0); + return; + } + + GF_AssertFail(); +} + +THUMB_FUNC void FUN_02008DDC(u32 param0) +{ + FUN_0201E068(0xC000, param0); +} diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c new file mode 100644 index 00000000..2238b920 --- /dev/null +++ b/arm9/src/unk_02008DEC.c @@ -0,0 +1,1118 @@ +#include "global.h" +#include "unk_02008DEC.h" +#include "NNS_g2d.h" +#include "gf_gfx_loader.h" +#include "heap.h" + +extern u32 FUN_02020C44(u32, u32); +extern void FUN_02020C90(u32); +extern u32 FUN_02020CB0(u32 param0, s32 param1); +extern void FUN_02020E1C(u32 param0, u32 param1); +extern void FUN_02020D68(u32 param0, u32 param1); +extern s32 FUN_02020E38(u32); +extern void *FUN_02020E0C(u32); +extern BOOL NNS_G2dGetUnpackedMultiCellBank(void *, void *); +extern BOOL NNS_G2dGetUnpackedMCAnimBank(void *, void *); +extern u32 FUN_02020D10(u32, void *, s32, u32); +extern u32 FUN_02020CD4(u32, void *, s32); +extern u32 FUN_0201D1F8(u32 *param0); +extern u32 FUN_0201D250(u32 *param0); +extern void FUN_0201D2DC(s32, u32); +extern void FUN_0201D324(s32 param0); +extern u32 FUN_0201D3B0(s32); +extern u32 FUN_0201D3D4(s32, u32); +extern u32 FUN_0201D458(u32); +extern void FUN_0201D4F0(u32); +extern u32 FUN_0201E0E4(u32 *param0); +extern u32 FUN_0201E128(u32 *param0); +extern void FUN_0201E168(s32, u32); +extern void FUN_0201E1C8(s32); +extern u32 FUN_0201E258(s32, u32); +extern u32 FUN_0201E230(s32); +extern s32 NNS_G2dGetImagePaletteLocation(u32, u32); + +THUMB_FUNC struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) +{ + struct UnkStruct_02008DEC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02008DEC_1)); + ptr->unk00 = FUN_02020C44(param0, heap_id); + ptr->unk04 = AllocFromHeap(heap_id, param0 * sizeof(struct UnkStruct_02008DEC_sub)); + memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct_02008DEC_sub)); + ptr->unk08 = (s32)param0; + ptr->unk0C = 0; + ptr->unk10 = param1; + + return ptr; +} + +THUMB_FUNC void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04); + + FUN_020094C4(param0); + + FUN_02020C90(param0->unk00); + param0->unk00 = 0; + + FreeToHeap(param0->unk04); + param0->unk04 = NULL; + + FreeToHeap(param0); +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C( + struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, s32 param2, u32 param3) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 > param2); + GF_ASSERT(param0->unk10 == param1->unk08); + + struct UnkStruct_02008DEC_sub *st1c = FUN_020097D0(param0); + GF_ASSERT(st1c); + + if (param1->unk0C == 0) + { + struct UnkStruct_02008DEC_3 *r6 = ¶m1->unk00_3[param2]; + GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1); + + FUN_0200994C( + param0, st1c, r6->unk04, r6->unk00, r6->unk44, r6->unk48, param1->unk08, param3); + } + else + { + struct UnkStruct_02008DEC_4 *r6 = ¶m1->unk00_4[param2]; + GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1); + + FUN_02009978(param0, + st1c, + r6->unk00, + r6->unk04, + r6->unk08, + r6->unk0C, + r6->unk10, + r6->unk14, + param1->unk08, + param3, + FALSE); + } + + param0->unk0C++; + + return st1c; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + BOOL param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + BOOL param8) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 == 0); + + s32 r6 = FUN_02009530(param1); + u32 r7 = FUN_020095E4(param1); + FUN_02009490(param0, param1); + + FUN_02009978(param0, param1, param2, param3, param4, r6, r7, 0, 0, param5, FALSE); +} + +THUMB_FUNC void FUN_02009168(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 == 1); + + s32 r6 = FUN_02009530(param1); + u32 r7 = FUN_020095E4(param1); + u32 st24 = FUN_02009610(param1); + FUN_02009490(param0, param1); + + FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0); +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC s32 FUN_020093A8( + struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, struct UnkStruct_02008DEC_5 *param2, u32 param3) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + + FUN_020093DC(param0, param1, 0, param1->unk04, param2, param3); + + return param1->unk04; +} + +THUMB_FUNC void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + s32 param3, + struct UnkStruct_02008DEC_5 *param4, + u32 param5) +{ + for (int r5 = param2; r5 < param2 + param3; r5++) + { + struct UnkStruct_02008DEC_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); + + if (param4 != NULL && param4->unk04 > param4->unk08) + { + param4->unk00[param4->unk08] = r0; + param4->unk08++; + } + } +} + +THUMB_FUNC struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1) +{ + struct UnkStruct_02008DEC_5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008DEC_5)); + r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct_02008DEC_sub *)); + r4->unk04 = param0; + r4->unk08 = 0; + + return r4; +} + +THUMB_FUNC void FUN_02009448(struct UnkStruct_02008DEC_5 *param0) +{ + FreeToHeap(param0->unk00); + FreeToHeap(param0); +} + +THUMB_FUNC u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1) +{ + GF_ASSERT(param0); + return FUN_02020CB0(param0->unk00, param1); +} + +THUMB_FUNC void FUN_02009474(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_02009920(param0); + FUN_02020E1C(param0->unk00, 0); +} + +THUMB_FUNC void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04); + + FUN_02009920(param1); + FUN_02020D68(param0->unk00, param1->unk00); + param1->unk00 = 0; + param0->unk0C--; +} + +THUMB_FUNC void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + FUN_02009490(param0, ¶m0->unk04[i]); + } + } +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + s32 r0 = FUN_02020E38(param0->unk04[i].unk00); + if (r0 == param1) + { + return ¶m0->unk04[i]; + } + } + } + + return NULL; +} + +THUMB_FUNC s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + return FUN_02020E38(param0->unk00); +} + +THUMB_FUNC u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 0); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 1); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 2); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 3); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 4); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 5); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 0) + { + return FUN_02009934(param0)[1]; + } + if (param0->unk04 == 1) + { + return FUN_02009934(param0)[1]; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 1) + { + return FUN_02009934(param0)[2]; + } + + return 0; +} + +THUMB_FUNC void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 0) + { + FUN_02009934(param0)[1] = param1; + } + if (param0->unk04 == 1) + { + FUN_02009934(param0)[1] = param1; + } +} + +THUMB_FUNC u32 FUN_0200965C(void) +{ + return 16; +} + +THUMB_FUNC struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + return ¶m0[param1]; +} + +THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2) +{ + GF_ASSERT(param1); + + param1->unk08 = param0[0]; + param1->unk0C = 1; + + param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1)); + + if (param1->unk04 > 0) + { + param1->unk00_4 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + } + else + { + param1->unk00_4 = NULL; + } + + if (param1->unk00_4 != NULL) + { + memcpy(param1->unk00_4, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + } +} + +THUMB_FUNC void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0) +{ + if (param0->unk00_4) + { + FreeToHeap(param0->unk00_4); + } + param0->unk00_4 = NULL; + param0->unk04 = 0; +} + +THUMB_FUNC s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk00; + } + + return param0->unk00_4[param1].unk0C; +} + +THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + s32 r6; + if (param0->unk0C == 1) + { + r6 = param0->unk00_4[param1].unk04; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + BOOL r6; + if (param0->unk0C == 1) + { + r6 = param0->unk00_4[param1].unk08; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk44; + } + + return param0->unk00_4[param1].unk10; +} + +THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk48; + } + + return param0->unk00_4[param1].unk14; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 == 0) + { + return ¶m0->unk04[i]; + } + } + + return NULL; +} + +THUMB_FUNC void FUN_020097FC( + struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *r0 = FUN_02020E0C(param0->unk00); + + switch (param1) + { + case 0: + param0->unk08 = FUN_0200986C(r0, param2, param4); + break; + case 1: + param0->unk08 = FUN_0200988C(r0, param2, param3, param4); + break; + case 2: + param0->unk08 = FUN_020098B0(r0, param4); + break; + case 3: + param0->unk08 = FUN_020098CC(r0, param4); + break; + case 4: + param0->unk08 = FUN_020098E8(r0, param4); + break; + case 5: + param0->unk08 = FUN_02009904(r0, param4); + break; + } +} + +THUMB_FUNC struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2) +{ + struct CharacterData_02008DEC *ptr = + AllocFromHeap(param2, sizeof(struct CharacterData_02008DEC)); + + NNS_G2dGetUnpackedCharacterData(param0, &ptr->chData); + ptr->unk04 = param1; + + return ptr; +} + +THUMB_FUNC struct PaletteData_02008DEC *FUN_0200988C( + void *param0, u32 param1, u32 param2, u32 param3) +{ + struct PaletteData_02008DEC *ptr = AllocFromHeap(param3, sizeof(struct PaletteData_02008DEC)); + + NNS_G2dGetUnpackedPaletteData(param0, &ptr->plttData); + ptr->unk04 = param1; + ptr->unk08 = param2; + + return ptr; +} + +THUMB_FUNC struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1) +{ + struct CellDataBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct CellDataBank_02008DEC)); + + NNS_G2dGetUnpackedCellBank(param0, &ptr->cellBank); + + return ptr; +} + +THUMB_FUNC struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1) +{ + struct AnimBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct AnimBank_02008DEC)); + + NNS_G2dGetUnpackedAnimBank(param0, &ptr->bankData); + + return ptr; +} + +THUMB_FUNC void *FUN_020098E8(void *param0, u32 param1) +{ + void *ptr = AllocFromHeap(param1, 4); + + NNS_G2dGetUnpackedMultiCellBank(param0, ptr); + + return ptr; +} + +THUMB_FUNC void *FUN_02009904(void *param0, u32 param1) +{ + void *ptr = AllocFromHeap(param1, 4); + + NNS_G2dGetUnpackedMCAnimBank(param0, ptr); + + return ptr; +} + +THUMB_FUNC void FUN_02009920(struct UnkStruct_02008DEC_sub *param0) +{ + if (param0->unk08 != NULL) + { + FreeToHeap(param0->unk08); + } + + param0->unk08 = NULL; +} + +THUMB_FUNC u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk08); + + return param0->unk08; +} + +THUMB_FUNC void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + void *param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + param1->unk00 = FUN_02020D10(param0->unk00, param2, param3, param7); + param1->unk04 = param6; + FUN_020097FC(param1, param6, param4, param5, param7); +} + +THUMB_FUNC void FUN_02009978(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + BOOL param10) +{ + void *r1 = GfGfxLoader_LoadFromNarc(param2, param3, param4, param9, param10); + param1->unk00 = FUN_02020CD4(param0->unk00, r1, param5); + param1->unk04 = param8; + + FUN_020097FC(param1, param8, param6, param7, param9); +} + +THUMB_FUNC void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NARC *param2, + u32 param3, + u32 param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10) +{ + param1->unk00 = + FUN_02020CD4(param0->unk00, FUN_02009A04(param2, param3, param4, param9, param10), param5); + param1->unk04 = param8; + + FUN_020097FC(param1, param8, param6, param7, param9); +} + +THUMB_FUNC s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0) +{ + s32 r3 = 0; + while (param0[r3].unk00 != -2) + { + r3++; + } + + return r3; +} + +THUMB_FUNC void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *r4 = NARC_AllocAndReadWholeMember(param0, param1, param3); + + if (r4 != NULL && param2 != 0) + { + void *ptr; + if (param4 == 0) + { + ptr = AllocFromHeap(param3, (*(u32 *)r4) >> 8); + } + else + { + ptr = AllocFromHeapAtEnd(param3, (*(u32 *)r4) >> 8); + } + + if (ptr != NULL) + { + MI_UncompressLZ8(r4, ptr); + FreeToHeap(r4); + } + + r4 = ptr; + } + + return r4; +} + +THUMB_FUNC u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009A50(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D250(st0); +} + +THUMB_FUNC u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009B04(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D250(st0); +} + +THUMB_FUNC void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1)); +} + +THUMB_FUNC void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param0)); +} + +THUMB_FUNC void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + FUN_0201D324(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + FUN_02009C0C(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + return FUN_0201D3B0(FUN_02009530(param0)); +} + +THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + GF_ASSERT(param1); + GF_ASSERT(FUN_020095D4(param1) == 2); + + s32 r4 = FUN_02009530(param0); + + u32 r0 = FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]); + if (r0 == 0) + { + return FUN_0201D458(FUN_0201D3B0(r4)); + } + + return r0; +} + +THUMB_FUNC void FUN_02009CDC(u32 param0) +{ + GF_ASSERT(param0); + + FUN_0201D4F0(param0); +} + +THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + u32 st0[4]; + st0[0] = FUN_0200955C(param0); + st0[1] = FUN_020095E4(param0); + st0[3] = (u32)FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E0E4(st0); +} + +THUMB_FUNC void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + u32 st0[4]; + st0[0] = FUN_0200955C(param0); + st0[1] = FUN_020095E4(param0); + st0[3] = (u32)FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E128(st0); +} + +THUMB_FUNC void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201E168(FUN_02009530(param0), FUN_0200955C(param0)); +} + +THUMB_FUNC void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + FUN_0201E1C8(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + FUN_02009E04(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + s32 r0 = FUN_02009530(param0); + if (param1 != 0) + { + return FUN_0201E258(r0, param1); + } + + return FUN_0201E230(r0); +} + +THUMB_FUNC s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1); + if (ret != -1) + { + return ret / 32; + } + + return ret; +} diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index 4ed957d6..093d35c1 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -2,90 +2,28 @@ #include "unk_0200BB14.h" #include "game_init.h" #include "heap.h" +#include "unk_02008AA4.h" +#include "unk_02008DEC.h" +#include "oam.h" extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); extern void FUN_0201E00C(u32 param0, u32 param1); extern void NNS_G2dInitOamManagerModule(); -extern void FUN_02009EAC(u32 param0, - u32 param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7, - u32 param8); extern u32 FUN_0201C328(u32 param0, u32 param1); extern void FUN_0201D168(); extern void FUN_0201E0BC(); -extern u32 FUN_02008C9C(u32 param0, void *param1, u32 param2); extern void FUN_0201FFC8(u32 param0); extern void FUN_0201FDEC(u32 param0); -extern void FUN_02009F80(); extern void FUN_0201C348(); extern void FUN_0201FD58(u32 param0); -extern void FUN_02008C80(u32 param0); -extern u32 FUN_02009660(u32 *param0, s32 param1); -extern void FUN_020096B4(u32 param0); -extern void FUN_02009C30(u32 *param0); -extern void FUN_02009E28(u32 *param0); -extern void FUN_02009448(u32 *param0); -extern void FUN_02008E2C(u32 param0); extern void FUN_0201C350(u32 param0); extern void FUN_0201D12C(); extern void FUN_0201E08C(); -extern void FUN_02009FA0(); -extern u32 FUN_0200965C(s32 param0); -extern void FUN_02009668(void *param0, u32 param1, u32 param2); -extern u32 FUN_020096CC(u32 param0); -extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2); -extern u32 *FUN_02009424(u32 param0, u32 param1); -extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3); -extern void FUN_02009A90(u32 *param0); -extern void FUN_02009D34(u32 *param0); -extern u32 FUN_02008BE0(void *param0, - u32 param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7); extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0); extern void FUN_02020130(u32 param0, u32 param1); extern void FUN_02020248(u32 param0, u32 param1); -extern u32 FUN_0200945C(u32 param0, s32 param1); -extern u32 FUN_02008F34( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); -extern void FUN_02009B04(u32 param0); -extern u32 FUN_02008FEC( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7); -extern u32 FUN_02009D68(u32 param0); -extern u32 FUN_02009E88(u32 param0, u32 param1); extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3); -extern void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, - s32 param1, - s32 param2, - s32 param3, - s32 param4, - s32 param5, - s32 param6, - u32 param7, - u32 param8, - u32 param9, - u32 param10, - u32 param11, - u32 param12, - u32 param13, - u32 param14); extern u8 FUN_020202A0(u32 param0); -extern u32 FUN_020094F0(u32 param0, u32 param1); -extern u32 FUN_02009E54(u32 param0, u32 param1); -extern void FUN_02009CDC(u32 param0); -extern u32 FUN_020090AC( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); -extern u32 FUN_02009530(u32 param0); -extern void FUN_02009490(u32 param0, u32 param1); extern void FUN_0201D324(u32 param0); extern void FUN_0201E1C8(u32 param0); extern void FUN_020201E4(u32 param0, u32 param1); @@ -115,12 +53,6 @@ extern void FUN_02020100(u32 param0, u32 param1); extern void FUN_02020054(u32 param0, u32 *param1); extern void FUN_02020358(u32 param0, u32 param1); extern void FUN_02020398(u32 param0, u32 param1); -extern void FUN_02009AC4(u32 param0); -extern void FUN_02009B78(u32 param0); -extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02009BE8(u32 param0); -extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02009DE0(u32 param0); THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id) { @@ -226,7 +158,7 @@ THUMB_FUNC void FUN_0200BC1C(u32 *param0) THUMB_FUNC void FUN_0200BC30() { - FUN_02009F80(); + ApplyAndResetOamManagerBuffer(); } THUMB_FUNC void FUN_0200BC38() @@ -273,7 +205,7 @@ THUMB_FUNC void FUN_0200BCB0(u32 *param0) if (param0[2] == 1) { - FUN_02009FA0(); + DeinitOamData(); } } @@ -317,12 +249,12 @@ THUMB_FUNC BOOL FUN_0200BD20( } param1->unk54 = st14; - u32 r2 = FUN_0200965C(st14); + u32 r2 = FUN_0200965C(); param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14); for (s32 i = 0; i < st14; i++) { - u32 st18 = FUN_02009660(param1->unk08, i); + struct UnkStruct_02008DEC_2 *st18 = FUN_02009660(param1->unk08, i); void *st1c = AllocAndReadFile(param0->unk000, st10[i]); FUN_02009668(st1c, st18, param0->unk000); @@ -337,14 +269,14 @@ THUMB_FUNC BOOL FUN_0200BD20( for (s32 i = 0; i < st14; i++) { - u32 st20 = FUN_02009660(param1->unk08, i); + struct UnkStruct_02008DEC_2 *st20 = FUN_02009660(param1->unk08, i); param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000); param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000); } FUN_02009A90(param1->unk24[0]); FUN_02009D34(param1->unk24[1]); - void *r6 = AllocAndReadFile(param0->unk000, st10[6]); + struct UnkStruct_02008AA4_2 *r6 = AllocAndReadFile(param0->unk000, st10[6]); param1->unk04 = FUN_02008BE0(r6, param0->unk000, param1->unk0c[0], @@ -456,7 +388,7 @@ THUMB_FUNC u32 FUN_0200BE74(u32 *param0, } THUMB_FUNC BOOL FUN_0200BF60( - struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2) + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2) { struct UnkStruct_0200BB14_1 *st0 = param0; s32 i; @@ -486,9 +418,9 @@ THUMB_FUNC BOOL FUN_0200BF60( param1->unk24[i] = FUN_02009424(param2[i], st0->unk000); param1->unk3c[i] = 0; - for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++) + for (s32 j = 0; j < param1->unk24[i]->unk04; j++) { - ((u32 *)param1->unk24[i][0])[j] = 0; + param1->unk24[i]->unk00[j] = NULL; } } } @@ -498,9 +430,9 @@ THUMB_FUNC BOOL FUN_0200BF60( THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -509,8 +441,8 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009B04(r5); FUN_0200C474(param1->unk24[0], r5); @@ -518,14 +450,14 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, } GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC s32 FUN_0200C06C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, u32 param6, s32 param7) @@ -535,16 +467,16 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0, return -1; } - u32 r5 = + struct UnkStruct_02008DEC_sub * r5 = FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]); - if (r5 != 0) + if (r5 != NULL) { GF_ASSERT(FUN_02009D68(r5) == 1); FUN_0200C474(param1->unk24[1], r5); return (s8)FUN_02009E88(r5, param6); } - GF_ASSERT(0); + GF_ASSERT(FALSE); return -1; } @@ -552,9 +484,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0, u32 param1, u32 *param2, struct UnkStruct_0200BB14_2 *param3, - u32 param4, - u32 param5, - u32 param6, + NarcId param4, + s32 param5, + BOOL param6, u32 param7, u32 param8, s32 param9) @@ -568,21 +500,21 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0, return (u8)r4; } -THUMB_FUNC u32 FUN_0200C124(u32 *param0, +THUMB_FUNC BOOL FUN_0200C124(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5) { return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5); } -THUMB_FUNC u32 FUN_0200C13C(u32 *param0, +THUMB_FUNC BOOL FUN_0200C13C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5) { return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5); @@ -722,32 +654,32 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154( return ptr; } -THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1) +THUMB_FUNC u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1) { return FUN_02009E54(FUN_020094F0(param0[4], param1), 0); } -THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2) +THUMB_FUNC s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2) { return FUN_02009E88(FUN_020094F0(param0[4], param1), param2); } -THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1) { return FUN_0200C4F4(param0->unk0c[0], param0->unk24[0], param1); } -THUMB_FUNC u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1) { return FUN_0200C548(param0->unk0c[1], param0->unk24[1], param1); } -THUMB_FUNC u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1) { return FUN_0200C4A8(param0->unk0c[2], param0->unk24[2], param1); } -THUMB_FUNC u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1) { return FUN_0200C4A8(param0->unk0c[3], param0->unk24[3], param1); } @@ -776,15 +708,15 @@ THUMB_FUNC void FUN_0200C3DC(u32 *param0) } FUN_0201FFC8(param0[0]); - FUN_02008C80(param0[2]); + FUN_02008C80((struct UnkStruct_02008AA4_1 *)param0[2]); FreeToHeap(param0); } THUMB_FUNC BOOL FUN_0200C404(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -793,25 +725,25 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0, return FALSE; } - u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { - u32 r4 = FUN_0200C474(param1->unk24[param5], r5); - GF_ASSERT(r4 == 1); + BOOL r4 = FUN_0200C474(param1->unk24[param5], r5); + GF_ASSERT(r4 == TRUE); return r4; } GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + return r5 != NULL ? TRUE : FALSE; } -THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1) { - for (s32 i = 0; i < (s32)param0[1]; i++) + for (s32 i = 0; i < param0->unk04; i++) { - if (((u32 *)param0[0])[i] == 0) + if (param0->unk00[i] == NULL) { - ((u32 *)param0[0])[i] = param1; - param0[2]++; + param0->unk00[i] = param1; + param0->unk08++; return TRUE; } } @@ -819,19 +751,19 @@ THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != 0) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -841,20 +773,20 @@ THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2) return FALSE; } -THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != NULL) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { FUN_0201D324(param2); - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -864,20 +796,20 @@ THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2) return FALSE; } -THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != 0) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { FUN_0201E1C8(param2); - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -1085,18 +1017,18 @@ THUMB_FUNC void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2) { s32 *r4 = FUN_0202011C(param0, param1, param2); - param1[0] = r4[0] / 0x1000; + param1[0] = (u16)(r4[0] / 0x1000); if (FUN_02020380(param0) == 2) { s32 r1 = r4[1] - 0xc0000; - param2[0] = r1 / 0x1000; + param2[0] = (u16)(r1 / 0x1000); return; } - param2[0] = r4[1] / 0x1000; + param2[0] = (u16)(r4[1] / 0x1000); } THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2) @@ -1104,25 +1036,25 @@ THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2) FUN_0200C75C(*param0, param1, param2); } -THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3) +THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, s32 param3) { s32 *r4 = FUN_0202011C(param0, param1, param2); - param1[0] = r4[0] / 0x1000; + param1[0] = (u16)(r4[0] / 0x1000); if (FUN_02020380(param0) == 2) { s32 r1 = r4[1] - param3; - param2[0] = r1 / 0x1000; + param2[0] = (u16)(r1 / 0x1000); return; } - param2[0] = r4[1] / 0x1000; + param2[0] = (u16)(r4[1] / 0x1000); } -THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3) +THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, s32 param3) { FUN_0200C7AC(*param0, param1, param2, param3); } @@ -1229,9 +1161,9 @@ THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1) THUMB_FUNC BOOL FUN_0200C918(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -1240,8 +1172,8 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009AC4(r5); FUN_0200C474(param1->unk24[0], r5); @@ -1249,15 +1181,15 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0, return TRUE; } - GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + GF_ASSERT(FALSE); + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC BOOL FUN_0200C978(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -1266,8 +1198,8 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009B78(r5); FUN_0200C474(param1->unk24[0], r5); @@ -1275,23 +1207,23 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, return TRUE; } - GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + GF_ASSERT(FALSE); + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC void FUN_0200C9D8( - u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[3], param5); + struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[3], param5); FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]); FUN_02009BE8(r6); } THUMB_FUNC void FUN_0200CA0C( - u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[4], param5); + struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[4], param5); FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]); FUN_02009DE0(r6); diff --git a/arm9/src/unk_02021590.c b/arm9/src/unk_02021590.c new file mode 100644 index 00000000..e6a3d690 --- /dev/null +++ b/arm9/src/unk_02021590.c @@ -0,0 +1,212 @@ +#include "global.h"
+#include "heap.h"
+#include "filesystem.h"
+#include "unk_02021590.h"
+#include "unk_0201B8B8.h"
+#include "string_util.h"
+
+static const u8 sGlyphShapes[][2] = {
+ { 0, 1 },
+ { 2, 3 },
+};
+
+static void (*const sAllocators[])(struct FontData *, u32) = {
+ InitFontResources_FromPreloaded,
+ InitFontResources_LazyFromNarc,
+};
+
+static void (*const sDestructors[])(struct FontData *) = {
+ FreeLoadedFontResources_FromPreloaded,
+ FreeLoadedFontResources_LazyFromNarc,
+};
+
+THUMB_FUNC struct FontData *FontData_new(NarcId narcId, s32 fileId, u32 unk2, BOOL unk3, u32 heap_id)
+{
+ struct FontData * ret = (struct FontData *)AllocFromHeap(heap_id, sizeof(struct FontData));
+ if (ret != NULL)
+ {
+ FontData_Init(ret, narcId, fileId, unk3, heap_id);
+ InitFontResources(ret, unk2, heap_id);
+ }
+ return ret;
+}
+
+THUMB_FUNC void FontData_delete(struct FontData * ptr)
+{
+ FreeLoadedFontResources(ptr);
+ FontData_FreeWidthsAndNarc(ptr);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FontData_ModeSwitch(struct FontData * ptr, u32 a1, u32 heap_id)
+{
+ if (ptr->glyphAccessMode != a1)
+ {
+ FreeLoadedFontResources(ptr);
+ InitFontResources(ptr, a1, heap_id);
+ }
+}
+
+THUMB_FUNC void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id)
+{
+ ptr->narc = NARC_ctor(narcId, heap_id);
+ if (ptr->narc != NULL)
+ {
+ NARC_ReadFromMember(ptr->narc, (u32)fileId, 0, 16, &ptr->gfxHeader);
+ ptr->isFixedWidthFont = unk;
+ if (unk)
+ {
+ ptr->glyphWidths = NULL;
+ ptr->glyphWidthFunc = GetGlyphWidth_FixedWidth;
+ }
+ else
+ {
+ GF_ASSERT(ptr->gfxHeader.widthDataStart != 0);
+ ptr->glyphWidths = AllocFromHeap(heap_id, ptr->gfxHeader.numGlyphs);
+ ptr->glyphWidthFunc = GetGlyphWidth_VariableWidth;
+ NARC_ReadFromMember(ptr->narc, (u32)fileId, ptr->gfxHeader.widthDataStart, ptr->gfxHeader.numGlyphs, ptr->glyphWidths);
+ }
+ GF_ASSERT(ptr->gfxHeader.glyphWidth <= 2 && ptr->gfxHeader.glyphHeight <= 2);
+ ptr->glyphShape = sGlyphShapes[ptr->gfxHeader.glyphWidth - 1][ptr->gfxHeader.glyphHeight - 1];
+ ptr->glyphSize = (u32)(16 * ptr->gfxHeader.glyphWidth * ptr->gfxHeader.glyphHeight);
+ ptr->fileId = (u32)fileId;
+ }
+}
+
+THUMB_FUNC void FontData_FreeWidthsAndNarc(struct FontData * ptr)
+{
+ if (ptr->glyphWidths != NULL)
+ FreeToHeap(ptr->glyphWidths);
+ if (ptr->narc != NULL)
+ NARC_dtor(ptr->narc);
+}
+
+THUMB_FUNC void InitFontResources(struct FontData * ptr, u32 a1, u32 heap_id)
+{
+ ptr->glyphAccessMode = a1;
+ sAllocators[a1](ptr, heap_id);
+}
+
+THUMB_FUNC void InitFontResources_FromPreloaded(struct FontData * ptr, u32 heap_id)
+{
+ u32 r4 = ptr->glyphSize * ptr->gfxHeader.numGlyphs;
+ ptr->narcReadBuf = AllocFromHeap(heap_id, r4);
+ ptr->uncompGlyphFunc = DecompressGlyphTiles_FromPreloaded;
+ NARC_ReadFromMember(ptr->narc, ptr->fileId, ptr->gfxHeader.headerSize, r4, ptr->narcReadBuf);
+}
+
+THUMB_FUNC void InitFontResources_LazyFromNarc(struct FontData * ptr, u32 heap_id)
+{
+#pragma unused(heap_id)
+ ptr->uncompGlyphFunc = DecompressGlyphTiles_LazyFromNarc;
+}
+
+THUMB_FUNC void FreeLoadedFontResources(struct FontData * ptr)
+{
+ sDestructors[ptr->glyphAccessMode](ptr);
+}
+
+THUMB_FUNC void FreeLoadedFontResources_FromPreloaded(struct FontData * ptr)
+{
+ FreeToHeap(ptr->narcReadBuf);
+ ptr->narcReadBuf = NULL;
+}
+
+THUMB_FUNC void FreeLoadedFontResources_LazyFromNarc(struct FontData * ptr)
+{
+#pragma unused(ptr)
+}
+
+THUMB_FUNC void TryLoadGlyph(struct FontData * ptr, u32 param1, struct UnkStruct_02002C14_sub * ptr2)
+{
+ if (param1 <= ptr->gfxHeader.numGlyphs)
+ ptr->uncompGlyphFunc(ptr, (u16)(param1 - 1), ptr2);
+ else
+ {
+ ptr2->width = 0;
+ ptr2->height = 0;
+ }
+}
+
+THUMB_FUNC void DecompressGlyphTiles_FromPreloaded(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2)
+{
+ u8 *r4 = &((u8 *)ptr->narcReadBuf)[param1 * ptr->glyphSize];
+ switch (ptr->glyphShape)
+ {
+ case 0:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ break;
+ case 1:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x40));
+ break;
+ case 2:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x20));
+ break;
+ case 3:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x20));
+ DecompressGlyphTile((void *)(r4 + 0x20), (void *)(param2->buf + 0x40));
+ DecompressGlyphTile((void *)(r4 + 0x30), (void *)(param2->buf + 0x60));
+ break;
+ }
+ param2->width = (u8)ptr->glyphWidthFunc(ptr, param1);
+ param2->height = ptr->gfxHeader.fixedHeight;
+}
+
+THUMB_FUNC void DecompressGlyphTiles_LazyFromNarc(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2)
+{
+ NARC_ReadFromMember(ptr->narc, ptr->fileId, ptr->gfxHeader.headerSize + param1 * ptr->glyphSize, ptr->glyphSize, ptr->glyphReadBuf);
+ switch (ptr->glyphShape)
+ {
+ case 0:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ break;
+ case 1:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x40));
+ break;
+ case 2:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x20));
+ break;
+ case 3:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x20));
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x20), (void *)(param2->buf + 0x40));
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x30), (void *)(param2->buf + 0x60));
+ break;
+ }
+ param2->width = (u8)ptr->glyphWidthFunc(ptr, param1);
+ param2->height = ptr->gfxHeader.fixedHeight;
+}
+
+THUMB_FUNC u32 GetStringWidth(struct FontData * ptr, const u16 * str, u32 letterSpacing)
+{
+ u32 width = 0;
+
+ while (*str != EOS)
+ {
+ if (*str == 0xFFFE)
+ {
+ str = MsgArray_SkipControlCode(str);
+ if (*str == EOS)
+ break;
+ }
+ width += ptr->glyphWidthFunc(ptr, (*str) - 1) + letterSpacing;
+ str++;
+ }
+ return width - letterSpacing;
+}
+
+THUMB_FUNC int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1)
+{
+ return ptr->glyphWidths[a1];
+}
+
+THUMB_FUNC int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1)
+{
+#pragma unused(a1)
+ return ptr->gfxHeader.fixedWidth;
+}
diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c index b12e2d8f..07ddde87 100644 --- a/arm9/src/unk_02021934.c +++ b/arm9/src/unk_02021934.c @@ -3,6 +3,7 @@ #include "heap.h" #include "string_util.h" #include "unk_0201B8B8.h" +#include "unk_02021590.h" #pragma thumb on @@ -10,7 +11,7 @@ void StrAddChar(struct String * str, u16 val); -s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6) +s32 StringGetWidth(struct FontData * r7, const u16 * arr, u32 r6) { s32 ret = 0; u32 r4 = 0; @@ -29,7 +30,7 @@ s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6) } else { - r4 += (r6 + r7->unk_70(r7, *arr - 1)); + r4 += (r6 + r7->glyphWidthFunc(r7, *arr - 1)); arr++; } } @@ -38,7 +39,7 @@ s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6) return ret; } -s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C * r6, const u16 * arr) +s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct FontData * r6, const u16 * arr) { s32 ret = 0; while (*arr != 0xFFFF) @@ -53,7 +54,7 @@ s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C } else { - ret += r6->unk_70(r6, *arr - 1); + ret += r6->glyphWidthFunc(r6, *arr - 1); arr++; } } diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index d9edd94c..e48262b0 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -10,11 +10,10 @@ #include "string16.h" #include "text.h" #include "wfc_user_info_warning.h" +#include "brightness.h" +#include "render_window.h" extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); -extern void FUN_0200A274(fx32 brightness, fx32, u32); -extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id); -extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num); extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); @@ -83,7 +82,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1) SetKeyRepeatTimers(4, 8); - gMain.unk65 = 0; + gMain.screensFlipped = 0; GX_SwapDisplay(); reg_G2_BLDCNT = 0; @@ -109,7 +108,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1) FUN_0201BD5C(); AddWindow(bg_config, &window, &sWFCWarningMsgWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); ReadMsgDataIntoString(warning_messages_data, 15, warning_message); AddTextPrinterParameterized(&window, 0, warning_message, 0, 0, 0, 0); @@ -118,7 +117,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1) GX_BothDispOn(); FUN_0200E394(0); FUN_0200E394(1); - FUN_0200A274(0, 0x3F, 3); + SetBrightness(0, 0x3F, 3); while (TRUE) { diff --git a/include/bg_window.h b/include/bg_window.h index 24ed152b..9ac29965 100644 --- a/include/bg_window.h +++ b/include/bg_window.h @@ -267,7 +267,7 @@ void CopyBgTilemapRectAffine(struct Bg *bg, u8 srcHeight, u8 adjustForSrcDims); void FillBgTilemapRect(struct BgConfig *bgConfig, - u32 bgId, + u8 bgId, u16 fillValue, u8 x, u8 y, diff --git a/include/brightness.h b/include/brightness.h new file mode 100644 index 00000000..029ee0b9 --- /dev/null +++ b/include/brightness.h @@ -0,0 +1,38 @@ +#ifndef POKEDIAMOND_UNK_0200A104_H +#define POKEDIAMOND_UNK_0200A104_H + +#include "global.h" +#include "nitro/FX_types.h" + +struct BrightnessData +{ + fx32 surfaceMask; + u32 screenMask; + u16 step_count; + s16 target_brightness; + u32 unk0c; + s8 transition_direction; + s16 brightness_diff; + s16 step_size_integer; + u16 step_size_fractional; + u16 fractional_count; + s16 current_brightness; + BOOL transitionActive; +}; + +void DoBrightnessTransitionStep(struct BrightnessData *brightness); +void InitBrightnessTransition(struct BrightnessData *brightnessData, + u16 step_count, + s16 target_brightness, + s16 start_brightness, + fx32 surfaceMask, + u32 screenMask); +void StartBrightnessTransition( + u16 step_count, s16 target_brightness, s16 start_brightness, fx32 surfaceMask, u32 screenMask); +void SetBrightness(fx32 brightness, fx32 surfaceMask, u32 screenMask); +void InitAllScreenBrightnessData(void); +void InitScreenBrightnessData(u32 screenMask); +void DoAllScreenBrightnessTransitionStep(void); +BOOL IsBrightnessTransitionActive(u32 screenMask); + +#endif // POKEDIAMOND_UNK_0200A104_H diff --git a/include/constants/accessories.h b/include/constants/accessories.h new file mode 100644 index 00000000..907e12cb --- /dev/null +++ b/include/constants/accessories.h @@ -0,0 +1,105 @@ +#ifndef POKEDIAMOND_CONSTANTS_ACCESSORIES_H +#define POKEDIAMOND_CONSTANTS_ACCESSORIES_H + +#define ACCESSORY_WHITE_FLUFF 0 +#define ACCESSORY_YELLOW_FLUFF 1 +#define ACCESSORY_PINK_FLUFF 2 +#define ACCESSORY_BROWN_FLUFF 3 +#define ACCESSORY_BLACK_FLUFF 4 +#define ACCESSORY_ORANGE_FLUFF 5 +#define ACCESSORY_ROUND_PEBBLE 6 +#define ACCESSORY_GLITTER_BOULDER 7 +#define ACCESSORY_SNAGGY_PEBBLE 8 +#define ACCESSORY_JAGGED_BOULDER 9 +#define ACCESSORY_BLACK_PEBBLE 10 +#define ACCESSORY_MINI_PEBBLE 11 +#define ACCESSORY_PINK_SCALE 12 +#define ACCESSORY_BLUE_SCALE 13 +#define ACCESSORY_GREEN_SCALE 14 +#define ACCESSORY_PURPLE_SCALE 15 +#define ACCESSORY_BIG_SCALE 16 +#define ACCESSORY_NARROW_SCALE 17 +#define ACCESSORY_BLUE_FEATHER 18 +#define ACCESSORY_RED_FEATHER 19 +#define ACCESSORY_YELLOW_FEATHER 20 +#define ACCESSORY_WHITE_FEATHER 21 +#define ACCESSORY_BLACK_MOUSTACHE 22 +#define ACCESSORY_WHITE_MOUSTACHE 23 +#define ACCESSORY_BLACK_BEARD 24 +#define ACCESSORY_WHITE_BEARD 25 +#define ACCESSORY_SMALL_LEAF 26 +#define ACCESSORY_BIG_LEAF 27 +#define ACCESSORY_NARROW_LEAF 28 +#define ACCESSORY_SHED_CLAW 29 +#define ACCESSORY_SHED_HORN 30 +#define ACCESSORY_THIN_MUSHROOM 31 +#define ACCESSORY_THICK_MUSHROOM 32 +#define ACCESSORY_STUMP 33 +#define ACCESSORY_PRETTY_DEWDROP 34 +#define ACCESSORY_SNOW_CRYSTAL 35 +#define ACCESSORY_SPARKS 36 +#define ACCESSORY_SHIMMERING_FIRE 37 +#define ACCESSORY_MYSTIC_FIRE 38 +#define ACCESSORY_DETERMINATION 39 +#define ACCESSORY_PECULIAR_SPOON 40 +#define ACCESSORY_PUFFY_SMOKE 41 +#define ACCESSORY_POISON_EXTRACT 42 +#define ACCESSORY_WEALTHY_COIN 43 +#define ACCESSORY_EERIE_THING 44 +#define ACCESSORY_SPRING 45 +#define ACCESSORY_SEASHELL 46 +#define ACCESSORY_HUMMING_NOTE 47 +#define ACCESSORY_SHINY_POWDER 48 +#define ACCESSORY_GLITTER_POWDER 49 +#define ACCESSORY_RED_FLOWER 50 +#define ACCESSORY_PINK_FLOWER 51 +#define ACCESSORY_WHITE_FLOWER 52 +#define ACCESSORY_BLUE_FLOWER 53 +#define ACCESSORY_ORANGE_FLOWER 54 +#define ACCESSORY_YELLOW_FLOWER 55 +#define ACCESSORY_GOOGLY_SPECS 56 +#define ACCESSORY_BLACK_SPECS 57 +#define ACCESSORY_GORGEOUS_SPECS 58 +#define ACCESSORY_SWEET_CANDY 59 +#define ACCESSORY_CONFETTI 60 +#define ACCESSORY_COLORED_PARASOL 61 +#define ACCESSORY_OLD_UMBRELLA 62 +#define ACCESSORY_SPOTLIGHT 63 +#define ACCESSORY_CAPE 64 +#define ACCESSORY_STANDING_MIKE 65 +#define ACCESSORY_SURFBOARD 66 +#define ACCESSORY_CARPET 67 +#define ACCESSORY_RETRO_PIPE 68 +#define ACCESSORY_FLUFFY_BED 69 +#define ACCESSORY_MIRROR_BALL 70 +#define ACCESSORY_PHOTO_BOARD 71 +#define ACCESSORY_PINK_BARRETTE 72 +#define ACCESSORY_RED_BARRETTE 73 +#define ACCESSORY_BLUE_BARRETTE 74 +#define ACCESSORY_YELLOW_BARRETTE 75 +#define ACCESSORY_GREEN_BARRETTE 76 +#define ACCESSORY_PINK_BALLOON 77 +#define ACCESSORY_RED_BALLOONS 78 +#define ACCESSORY_BLUE_BALLOONS 79 +#define ACCESSORY_YELLOW_BALLOON 80 +#define ACCESSORY_GREEN_BALLOONS 81 +#define ACCESSORY_LACE_HEADDRESS 82 +#define ACCESSORY_TOP_HAT 83 +#define ACCESSORY_SILK_VEIL 84 +#define ACCESSORY_HEROIC_HEADBAND 85 +#define ACCESSORY_PROFESSOR_HAT 86 +#define ACCESSORY_FLOWER_STAGE 87 +#define ACCESSORY_GOLD_PEDESTAL 88 +#define ACCESSORY_GLASS_STAGE 89 +#define ACCESSORY_AWARD_PODIUM 90 +#define ACCESSORY_CUBE_STAGE 91 +#define ACCESSORY_TURTWIG_MASK 92 +#define ACCESSORY_CHIMCHAR_MASK 93 +#define ACCESSORY_PIPLUP_MASK 94 +#define ACCESSORY_BIG_TREE 95 +#define ACCESSORY_FLAG 96 +#define ACCESSORY_CROWN 97 +#define ACCESSORY_TIARA 98 +#define ACCESSORY_COMET 99 + +#endif diff --git a/include/font.h b/include/font.h index 963e36bc..3c0f4267 100644 --- a/include/font.h +++ b/include/font.h @@ -4,28 +4,33 @@ #include "global.h" #include "text.h" -struct UnkStruct_02002C14 +struct UnkStruct_02002C14_sub { const char buf[0x80]; u8 width; u8 height; +}; + +struct UnkStruct_02002C14 +{ + struct UnkStruct_02002C14_sub unk00; void *unk84[4]; - struct UnkStruct_0202199C *unk94[4]; + struct FontData *unk94[4]; }; extern struct UnkStruct_02002C14 *UNK_02106FC8; void FUN_02002C14(); -void FUN_02002C50(u32 param0, u32 param1); +void FUN_02002C50(u32 font_id, u32 heap_id); void FUN_02002C84(s32 param0, u32 param1); void FUN_02002CC0(s32 param0); void FUN_02002CF8(int param0); -struct UnkStruct_02002C14 *FUN_02002D94(u32 param0, u32 param1); +struct UnkStruct_02002C14_sub *FUN_02002D94(u32 param0, u32 param1); u32 FontFunc(u32 fontId, struct TextPrinter *printer); u32 FUN_02002DE0(u32 param0, u16 *str, u32 param2); u32 FUN_02002E14(u32 param0, struct String *str, u32 param2); s32 GetFontAttribute(u8 fontId, s32 attr); -void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id); +void FUN_02002ED0(enum GFBgLayer layer, u32 baseAddr, u32 heap_id); void FUN_02002EEC(u32 layer, u32 baseAddr, u32 heap_id); s32 FUN_02002F08(u32 param0, struct String *str, u32 param2); u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3); diff --git a/include/main.h b/include/main.h index ba4d7bc2..87110de5 100644 --- a/include/main.h +++ b/include/main.h @@ -94,7 +94,7 @@ struct Main u16 touchNew; u16 touchHeld; u8 touchpadReadAuto; - u8 unk65; + u8 screensFlipped; u8 unk66; u8 unk67; u8 softResetDisabled; diff --git a/include/oam.h b/include/oam.h new file mode 100644 index 00000000..773c985d --- /dev/null +++ b/include/oam.h @@ -0,0 +1,42 @@ +#ifndef POKEDIAMOND_UNK_02009EAC_H +#define POKEDIAMOND_UNK_02009EAC_H + +#include "global.h" +#include "NNS_g2d.h" + +struct OamData +{ + NNSG2dOamManager oamManagers[2]; + u32 heap_id; +}; + +void FUN_02009EAC(s32 param0, + s32 param1, + s32 param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8); +void InitOamData(s32 param0, + s32 param1, + s32 param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 heap_id); +void ApplyAndResetOamManagerBuffer(void); +void DeinitOamData(void); +void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3); +NNSG2dOamManager *GetOamManager(u32 screen); +void FUN_0200A064(u32 heap_id); +void FUN_0200A06C(u32 heap_id); +u32 EntryOamManagerOamWithAffineIdxMainScreen(u32 param0, u32 param1); +u32 EntryOamManagerOamWithAffineIdxSubScreen(u32 param0, u32 param1); +u32 EntryOamManagerAffineMainScreen(u32 param0); +u32 EntryOamManagerAffineSubScreen(u32 param0); + +#endif // POKEDIAMOND_UNK_02009EAC_H diff --git a/include/pokemon.h b/include/pokemon.h index d107bf85..60fa1838 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -10,6 +10,7 @@ #include "constants/pokemon.h" #include "string16.h" #include "player_data.h" +#include "sound_chatot.h" struct BaseStats { /* 0x00 */ u8 hp; @@ -294,7 +295,7 @@ void Party_SpreadPokerus(struct PlayerParty * party); BOOL Pokemon_HasPokerus(struct Pokemon * pokemon); BOOL Pokemon_IsImmuneToPokerus(struct Pokemon * pokemon); void Pokemon_UpdateArceusForme(struct Pokemon * pokemon); -void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20); +void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20); void FUN_0206A014(struct Pokemon * pokemon, struct PlayerData * a1, u32 pokeball, u32 a3, u32 encounterType, u32 heap_id); void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2); BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1); diff --git a/include/proto.h b/include/proto.h index 7af3f19d..43ed28ac 100644 --- a/include/proto.h +++ b/include/proto.h @@ -11,10 +11,6 @@ int TrainerClass_GetGenderOrTrainerCount(int x); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); u32 IsNighttime(void); // is day or night -int FUN_02005F14(int); -void FUN_02005E80(int); -void FUN_02005E90(int, int, int, int); -void FUN_020056AC(int, int, int, int, int); void FUN_020808AC(struct BoxPokemon *, struct PlayerData *, int, u32, u32); #endif //POKEDIAMOND_PROTO_H diff --git a/include/render_window.h b/include/render_window.h new file mode 100644 index 00000000..385c61ad --- /dev/null +++ b/include/render_window.h @@ -0,0 +1,143 @@ +#ifndef POKEDIAMOND_UNK_0200CABC_H +#define POKEDIAMOND_UNK_0200CABC_H + +#include "global.h" +#include "bg_window.h" +#include "pokemon.h" +#include "unk_02008DEC.h" + +struct UnkStruct_0200CABC_1 +{ + struct Window *unk000; + u8 unk004[9][0x80]; + u16 fillValue; + u8 unk486; + u8 unk487 : 7; + u8 unk488 : 2; +}; + +struct UnkStruct_0200CABC_2 +{ + u32 unk000; + u8 unk004[0x12c]; + struct UnkStruct_02008DEC_1 *unk130; + struct UnkStruct_02008DEC_1 *unk134; + u8 unk138[0x2a]; + u16 unk162; + u32 *unk164; + struct BgConfig *bgConfig; + u8 bgId; + u8 x; + u8 y; + u8 unk16f; +}; + +struct UnkStruct_0200CABC_3 +{ + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0c; +}; + +u32 FUN_0200CABC(struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id); +s32 FUN_0200CAFC(void); +void FUN_0200CB00( + struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id); +void DrawFrame1(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue); +void DrawFrameAndWindow1(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num); +void ClearFrameAndWindow1(struct Window *window, BOOL copy_to_vram); +s32 FUN_0200CD60(s32 param0); +s32 FUN_0200CD64(s32 param0); +void FUN_0200CD68( + struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +void DrawFrame2(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue); +void DrawWindowFrame2(struct Window *window, u32 fill_value, u32 palette_num); +void DrawFrameAndWindow2(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num); +void ClearFrameAndWindow2(struct Window *window, BOOL param1); +void BlitRect4Bit(u8 *srcPixels, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u8 *dstPixels, + u16 dstWidth, + u16 dstHeight, + u16 dstX, + u16 dstY, + u16 width, + u16 height); +void FUN_0200D18C(struct Window *window, u16 fill_value); +void FUN_0200D274( + struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id); +void FUN_0200D300(struct BgConfig *bg_config, + u8 bg_id, + u16 numtiles, + u8 param3, + u8 param4, + u16 param5, + u32 heap_id); +void FUN_0200D378( + struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id); +void DrawFrame3(struct BgConfig *bgConfig, + u8 bgId, + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue); +void DrawWindowCorner(struct Window *window, u16 fillValue, u8 paletteNum); +void DrawFrameAndWindow3( + struct Window *window, BOOL copy_to_vram, u16 fillValue, u8 paletteNum, u8 param4); +void ClearFrameAndWindow3(struct Window *window, u8 param1, BOOL copy_to_vram); +struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1); +void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1); +void FUN_0200DB7C(u32 param0, void *param1); +void FUN_0200DBE8(u32 param0, void *param1); +void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0); +void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0); +u8 *FUN_0200DC4C(struct BgConfig *bg_config, + u8 bg_id, + u8 param2, + u8 param3, + u8 param4, + u16 param5, + u16 param6, + u8 param7, + s32 param8); +u8 *FUN_0200DCA4(struct BgConfig *bg_config, + u8 bg_id, + u8 param2, + u8 param3, + u8 param4, + u16 param5, + struct Pokemon *param6, + s32 param7); +void FUN_0200DCF8(u32 param0, void *param1); +struct UnkStruct_0200CABC_2 *FUN_0200DD70( + struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4); +void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1); +void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0); +void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2); +void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2); +void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1); +void FUN_0200DEF4(struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1); +void DrawFramed10x10Square(struct UnkStruct_0200CABC_2 *param0, u8 paletteNum, u16 fillValue); +void ClearFramed10x10Square(struct UnkStruct_0200CABC_2 *param0); + +#endif // POKEDIAMOND_UNK_0200CABC_H diff --git a/include/rs_migrate_string.h b/include/rs_migrate_string.h new file mode 100644 index 00000000..b83807f5 --- /dev/null +++ b/include/rs_migrate_string.h @@ -0,0 +1,26 @@ +#ifndef POKEDIAMOND_UNK_02015D14_H
+#define POKEDIAMOND_UNK_02015D14_H
+
+// --------------------------------------------
+// ConvertRSStringToDPStringInternational
+// ============================================
+// Param rs_str: Pointer to u8 representing
+// the name of a Pokemon or
+// its OT when migrating from
+// Advanced Gameboy.
+// Param dp_str: Pointer to u16 representing
+// the destination string buffer
+// for migration to Diamond
+// or Pearl.
+// Param length: The length of the string
+// to convert, including the
+// terminator byte.
+// Param language: Game language of origin.
+// See include/config.h.
+// Return: TRUE if the conversion was completed
+// successfully. Otherwise, dp_str will
+// be filled with up to 10 question mark
+// characters.
+BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language);
+
+#endif //POKEDIAMOND_UNK_02015D14_H
diff --git a/include/save_block_2.h b/include/save_block_2.h index a4514c96..fb2bc92a 100644 --- a/include/save_block_2.h +++ b/include/save_block_2.h @@ -152,6 +152,6 @@ BOOL FlashLoadChunk(u32 src, void * dest, u32 size); void FlashWriteCommandCallback(void * arg); int FlashWriteChunkInternal(u32 dest, void * src, u32 size); BOOL WaitFlashWrite(int lock, BOOL * res); -void SaveErrorHandling(int lock, int errno); +void SaveErrorHandling(int lock, u32 errno); #endif //POKEDIAMOND_SAVE_BLOCK_2_H diff --git a/include/save_data_read_error.h b/include/save_data_read_error.h new file mode 100644 index 00000000..d3556734 --- /dev/null +++ b/include/save_data_read_error.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_SAVE_DATA_READ_ERROR_H +#define POKEDIAMOND_SAVE_DATA_READ_ERROR_H + +void ShowSaveDataReadError(u32 heap_id); +void ShowGBACartRemovedError(u32 heap_id); + +#endif diff --git a/include/save_data_write_error.h b/include/save_data_write_error.h new file mode 100644 index 00000000..e4c77453 --- /dev/null +++ b/include/save_data_write_error.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_SAVE_DATA_WRITE_ERROR_H +#define POKEDIAMOND_SAVE_DATA_WRITE_ERROR_H + +void ShowSaveDataWriteError(u32 heap_id, u32 err_no); + +#endif diff --git a/include/scrcmd.h b/include/scrcmd.h index 5e28a4d0..7a0ab21e 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -15,6 +15,14 @@ struct UnkStruct_0203A288 { u8 padding[1]; }; +typedef struct UnkStruct_0203B174 +{ + BOOL Unk00; + u32 Unk04; + void *Unk08; + struct UnkSavStruct80 *Unk0C; +} UnkStruct_0203B174; + //scrcmd.c BOOL ScrCmd_Nop(struct ScriptContext* ctx); BOOL ScrCmd_Dummy(struct ScriptContext* ctx); @@ -249,7 +257,12 @@ BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx); BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx); BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx); -//scrcmd_18.c +//scrcmd_amity_square.c +BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx); +BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx); +BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx); + +//scrcmd_party.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx); BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx); diff --git a/include/script_buffers.h b/include/script_buffers.h index b9f0e268..e5c39291 100644 --- a/include/script_buffers.h +++ b/include/script_buffers.h @@ -104,7 +104,7 @@ void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month); void ScrStrBufs_UpperFirstChar(struct ScrStrBufs * mgr, u32 idx); void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, struct String * src); void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr); -struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4); +struct UnkStruct_0200B870 * MessagePrinter_new(u32 color1, u32 color2, u32 color3, u32 heap_id); void MessagePrinter_delete(struct UnkStruct_0200B870 * a0); void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window * a2, int a3, int a4); void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y); diff --git a/include/sound_chatot.h b/include/sound_chatot.h new file mode 100644 index 00000000..fbbba0c6 --- /dev/null +++ b/include/sound_chatot.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_SOUND_CHATOT_H +#define POKEDIAMOND_SOUND_CHATOT_H + +#include "global.h" +#include "sav_chatot.h" + +BOOL FUN_02005CFC(void); +BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0); +u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3); +void FUN_02005DFC(void); +u32 Chatot_startRecording(void); +void Chatot_stopRecording(void); +void Chatot_saveRecording(struct SaveChatotSoundClip *param0); +void FUN_02005E80(u8 param0); +void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3); +u32 FUN_02005EE0(struct SaveChatotSoundClip *param0); +BOOL FUN_02005F14(s32 param0); + +#endif // POKEDIAMOND_UNK_02005CFC_H diff --git a/include/string16.h b/include/string16.h index 69ea4e30..f42ff918 100644 --- a/include/string16.h +++ b/include/string16.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_STRING16_H #include "string_util.h" +#include "unk_02021590.h" struct String { @@ -12,12 +13,6 @@ struct String u8 padding[2]; }; -struct UnkStruct_0202199C -{ - u8 filler_00[0x70]; - int (*unk_70)(struct UnkStruct_0202199C *, int); -}; - #define STR16_MAGIC 0xB6F8D2EC struct String * String_ctor(u32 count, u32 heap_id); @@ -25,8 +20,8 @@ BOOL StringCompare(struct String *, struct String *); void CopyU16ArrayToStringN(struct String *, u16 *, u32); // copy void StringSetEmpty(struct String *); // set empty struct String * StringDup(struct String *, u32 heap_id); -s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6); -s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C * r6, const u16 * arr); +s32 StringGetWidth(struct FontData * r7, const u16 * arr, u32 r6); +s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct FontData * r6, const u16 * arr); void String_dtor(struct String * str); void StringCopy(struct String * dest, struct String * src); void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset); diff --git a/include/text_02054590.h b/include/text_02054590.h index 4d05260a..d55f0b80 100644 --- a/include/text_02054590.h +++ b/include/text_02054590.h @@ -15,6 +15,6 @@ u16 FUN_02054658(struct Window * window, struct String *str, struct Options *opt u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, s32 a5); u8 FUN_020546C8(u32 param0); void FUN_020546E0(struct BgConfig *param0, struct Window *param1, u32 param2, u32 param3); -void FUN_02054744(struct Window *param0, u32 param1, u32 param2); +void FUN_02054744(struct Window *param0, u32 param1, u16 param2); #endif // POKEDIAMOND_UNK_02054590_H diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h index 413e853f..819a96fa 100644 --- a/include/unk_020040F4.h +++ b/include/unk_020040F4.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_UNK_020040F4_H #include "global.h" +#include "SPI_mic.h" struct WaveArcInfo { @@ -31,11 +32,11 @@ struct UnkStruct_020040F4_2 }; void FUN_020040F4(u8 param0); -u8 FUN_02004104(); +u8 FUN_02004104(void); void FUN_02004110(u16 param0); -u16 FUN_02004124(); +u16 FUN_02004124(void); void FUN_02004130(u16 param0); -u16 FUN_02004140(); +u16 FUN_02004140(void); void FUN_0200414C(u16 param0); void FUN_0200415C(u8 param0); BOOL FUN_02004180(s32 param0); @@ -51,10 +52,10 @@ void FUN_020046C4(int param0, u32 param1); void FUN_020046E8(s32 param0); void FUN_02004704(s32 param0, int param1, u32 param2); void FUN_02004724(int param0); -void FUN_02004738(); +void FUN_02004738(void); int FUN_02004748(s32 param0); void FUN_020047C8(u8 param0, u8 param1); -void FUN_02004810(); +void FUN_02004810(void); void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2); void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1); void FUN_02004858(u32 param0, int playerNo); @@ -65,8 +66,8 @@ u8 FUN_020048D0(u16 param0); u32 GF_SndPlayerGetSeqNo(u32 *param0); u32 FUN_020048F4(u16 param0); u16 FUN_02004900(u32 param0); -u32 GF_MIC_StartAutoSampling(u32 param0); -u32 GF_MIC_StopAutoSampling(u32 param0); +u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0); +u32 GF_MIC_StopAutoSampling(void); u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); void *FUN_02004930(u32 param0); BOOL FUN_02004984(u32 param0); @@ -80,12 +81,12 @@ void FUN_02004AF8(u32 param0, s32 param1); u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4); void FUN_02004C1C(u8 *param0, u32 param1); void FUN_02004C3C(u32 param0); -BOOL GF_SndCaptureIsActive(); +BOOL GF_SndCaptureIsActive(void); u32 GF_SndCaptureStartReverb(u32 param0); void GF_SndCaptureStopReverb(u32 param0); void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1); -void FUN_02004CB4(); -void GF_SndCaptureStopEffect(); +void FUN_02004CB4(void); +void GF_SndCaptureStopEffect(void); void FUN_02004D04(s32 param0); void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2); void FUN_02004D34(u16 param0, u32 param1, s32 param2); @@ -93,8 +94,8 @@ void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2); void GF_SndSetMonoFlag(u32 param0); void FUN_02004D74(s32 param0); void FUN_02004D84(u32 param0); -u16 FUN_02004D94(); -u8 *FUN_02004DB4(); +u16 FUN_02004D94(void); +u8 *FUN_02004DB4(void); void FUN_02004DBC(u8 param0); u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5); u32 FUN_02004E08( @@ -110,7 +111,7 @@ void FUN_02004F70(struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4); void FUN_02005160(u32 param0); void FUN_0200516C(u32 param0); -void FUN_020051AC(); +void FUN_020051AC(void); void GF_SndPlayerSetPlayerVolume(u32 param0, u8 param1); #endif // POKEDIAMOND_UNK_020040F4_H diff --git a/include/unk_02008AA4.h b/include/unk_02008AA4.h new file mode 100644 index 00000000..00343884 --- /dev/null +++ b/include/unk_02008AA4.h @@ -0,0 +1,55 @@ +#ifndef POKEDIAMOND_UNK_02008AA4_H +#define POKEDIAMOND_UNK_02008AA4_H + +#include "global.h" +#include "unk_0200BB14.h" + +struct UnkStruct_02008AA4_1 +{ + struct UnkStruct_0200BB14_sub *unk00; + s32 unk04; +}; + +struct UnkStruct_02008AA4_2 +{ + s32 unk00; + s32 unk04; + s32 unk08; + s32 unk0C; + s32 unk10; + s32 unk14; + u32 unk18; + u32 unk1C; +}; + +void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, + s32 param1, + s32 param2, + s32 param3, + s32 param4, + s32 param5, + s32 param6, + u32 param7, + u32 param8, + struct UnkStruct_02008DEC_1 *param9, + struct UnkStruct_02008DEC_1 *param10, + struct UnkStruct_02008DEC_1 *param11, + struct UnkStruct_02008DEC_1 *param12, + struct UnkStruct_02008DEC_1 *param13, + struct UnkStruct_02008DEC_1 *param14); +struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, + u32 param1, + struct UnkStruct_02008DEC_1 *param2, + struct UnkStruct_02008DEC_1 *param3, + struct UnkStruct_02008DEC_1 *param4, + struct UnkStruct_02008DEC_1 *param5, + struct UnkStruct_02008DEC_1 *param6, + struct UnkStruct_02008DEC_1 *param7); +void FUN_02008C80(struct UnkStruct_02008AA4_1 *param0); +u32 FUN_02008C9C(u32 param0, void *param1, u32 param2); +void FUN_02008D04(u32 param0, u32 param1, u32 param2); +void FUN_02008D24(u32 param0, u32 param1, u32 param2); +void FUN_02008D44(u32 param0, u32 param1); +void FUN_02008DDC(u32 param0); + +#endif // POKEDIAMOND_UNK_02008AA4_H diff --git a/include/unk_02008DEC.h b/include/unk_02008DEC.h new file mode 100644 index 00000000..6504b524 --- /dev/null +++ b/include/unk_02008DEC.h @@ -0,0 +1,285 @@ +#ifndef POKEDIAMOND_UNK_02008DEC_H +#define POKEDIAMOND_UNK_02008DEC_H + +#include "global.h" +#include "NNS_g2d.h" +#include "filesystem.h" + +struct UnkStruct_02008DEC_sub +{ + u32 unk00; + u32 unk04; + void *unk08; +}; + +struct UnkStruct_02008DEC_1 +{ + + u32 unk00; + struct UnkStruct_02008DEC_sub *unk04; + s32 unk08; + u32 unk0C; + s32 unk10; +}; + +struct UnkStruct_02008DEC_2 +{ + union + { + struct UnkStruct_02008DEC_3 *unk00_3; + struct UnkStruct_02008DEC_4 *unk00_4; + }; + s32 unk04; + u32 unk08; + u8 unk0C; +}; + +struct UnkStruct_02008DEC_3 +{ + s32 unk00; + u8 unk04[0x40]; + u32 unk44; + u32 unk48; +}; + +struct UnkStruct_02008DEC_4 +{ + NarcId unk00; + s32 unk04; + BOOL unk08; + s32 unk0C; + u32 unk10; + u32 unk14; +}; + +struct UnkStruct_02008DEC_5 +{ + struct UnkStruct_02008DEC_sub **unk00; + s32 unk04; + s32 unk08; +}; + +struct CharacterData_02008DEC +{ + NNSG2dCharacterData *chData; + u32 unk04; +}; + +struct PaletteData_02008DEC +{ + NNSG2dPaletteData *plttData; + u32 unk04; + u32 unk08; +}; + +struct CellDataBank_02008DEC +{ + NNSG2dCellDataBank *cellBank; +}; + +struct AnimBank_02008DEC +{ + NNSG2dAnimBankData *bankData; +}; + +struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 param2); +void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0); +struct UnkStruct_02008DEC_sub *FUN_02008E6C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + u32 param3); +struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6); +struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + BOOL param7); +struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + BOOL param8); +struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6); +void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5); +void FUN_02009168(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5); +struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6); +struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8); +struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6); +s32 FUN_020093A8(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + struct UnkStruct_02008DEC_5 *param2, + u32 param3); +void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + s32 param3, + struct UnkStruct_02008DEC_5 *param4, + u32 param5); +struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1); +void FUN_02009448(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1); +void FUN_02009474(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0); +struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1); +s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1); +u32 FUN_0200965C(void); +struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1); +void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2); +void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0); +s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0); +s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1); +s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1); +BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1); +u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1); +u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1); +struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0); +void FUN_020097FC( + struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4); +struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2); +struct PaletteData_02008DEC *FUN_0200988C(void *param0, u32 param1, u32 param2, u32 param3); +struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1); +struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1); +void *FUN_020098E8(void *param0, u32 param1); +void *FUN_02009904(void *param0, u32 param1); +void FUN_02009920(struct UnkStruct_02008DEC_sub *param0); +u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0); +void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + void *param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7); +void FUN_02009978(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + BOOL param10); +void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NARC *param2, + u32 param3, + u32 param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10); +s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0); +void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4); +u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_02009CDC(u32 param0); +u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0); +void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1); +s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1); + +#endif // POKEDIAMOND_UNK_02008DEC_H diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h index a252fd93..7d5a0083 100644 --- a/include/unk_0200BB14.h +++ b/include/unk_0200BB14.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_UNK_0200BB14_H #include "global.h" +#include "unk_02008DEC.h" struct UnkStruct_0200BB14_1 { @@ -15,11 +16,11 @@ struct UnkStruct_0200BB14_1 struct UnkStruct_0200BB14_2 { u32 unk00; - u32 unk04; - u32 *unk08; - u32 unk0c[6]; - u32 *unk24[6]; - u32 unk3c[6]; + struct UnkStruct_02008AA4_1 *unk04; + struct UnkStruct_02008DEC_2 *unk08; + struct UnkStruct_02008DEC_1 *unk0c[6]; + struct UnkStruct_02008DEC_5 *unk24[6]; + s32 unk3c[6]; s32 unk54; }; @@ -41,7 +42,16 @@ struct UnkStruct_0200BB14_3 struct UnkStruct_0200BB14_sub { - u8 unk00[0x24]; + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0C; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1C; + u8 unk20; + u8 unk21[0x3]; }; struct UnkStruct_0200BB14_4 @@ -108,19 +118,19 @@ u32 FUN_0200BE74(u32 *param0, u32 param12, u32 param13); BOOL FUN_0200BF60( - struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2); BOOL FUN_0200C00C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); s32 FUN_0200C06C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, u32 param6, s32 param7); @@ -128,45 +138,45 @@ u8 FUN_0200C0DC(u32 param0, u32 param1, u32 *param2, struct UnkStruct_0200BB14_2 *param3, - u32 param4, - u32 param5, - u32 param6, + NarcId param4, + s32 param5, + BOOL param6, u32 param7, u32 param8, s32 param9); -u32 FUN_0200C124(u32 *param0, +BOOL FUN_0200C124(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5); -u32 FUN_0200C13C(u32 *param0, +BOOL FUN_0200C13C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5); struct UnkStruct_0200BB14_5 *FUN_0200C154( struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); -u32 FUN_0200C334(u32 *param0, u32 param1); -u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2); -u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1); -u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1); -u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1); -u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1); +u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1); +s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2); +BOOL FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1); +BOOL FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1); +BOOL FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1); +BOOL FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1); void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1); void FUN_0200C3DC(u32 *param0); BOOL FUN_0200C404(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); -BOOL FUN_0200C474(u32 *param0, u32 param1); -BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2); -BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2); -BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2); +BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1); +BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); +BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); +BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); void FUN_0200C59C(u32 param0); void FUN_0200C5A8(u32 *param0); void FUN_0200C5B4(u32 *param0, u32 param1); @@ -204,8 +214,8 @@ void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3); void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3); void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2); void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2); -void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3); -void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3); +void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, s32 param3); +void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, s32 param3); void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2); void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2); void FUN_0200C838(u32 param0, u32 param1); @@ -224,20 +234,22 @@ void FUN_0200C904(u32 param0, u32 param1); void FUN_0200C90C(u32 *param0, u32 param1); BOOL FUN_0200C918(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); BOOL FUN_0200C978(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); -void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); -void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); +void FUN_0200C9D8( + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5); +void FUN_0200CA0C( + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5); u32 FUN_0200CA40(u32 *param0); #endif // POKEDIAMOND_UNK_0200BB14_H diff --git a/include/unk_02021590.h b/include/unk_02021590.h new file mode 100644 index 00000000..6ed73bb8 --- /dev/null +++ b/include/unk_02021590.h @@ -0,0 +1,52 @@ +#ifndef POKEDIAMOND_UNK_02021590_H
+#define POKEDIAMOND_UNK_02021590_H
+
+#include "filesystem.h"
+#include "font.h"
+
+struct FontGraphicHeader
+{
+ u32 headerSize;
+ u32 widthDataStart;
+ u32 numGlyphs;
+ u8 fixedWidth;
+ u8 fixedHeight;
+ u8 glyphWidth;
+ u8 glyphHeight;
+};
+
+struct FontData
+{
+ u32 glyphAccessMode;
+ void (*uncompGlyphFunc)(struct FontData *, u16, struct UnkStruct_02002C14_sub *);
+ u32 glyphShape;
+ u32 glyphSize;
+ void * narcReadBuf;
+ u8 glyphReadBuf[0x40];
+ NARC * narc;
+ u32 fileId;
+ struct FontGraphicHeader gfxHeader;
+ BOOL isFixedWidthFont;
+ int (*glyphWidthFunc)(struct FontData *, int);
+ u8 * glyphWidths;
+};
+
+struct FontData *FontData_new(NarcId narcId, s32 fileId, u32 unk2, BOOL unk3, u32 heap_id);
+void FontData_delete(struct FontData * ptr);
+void FontData_ModeSwitch(struct FontData * ptr, u32 a1, u32 heap_id);
+void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id);
+void FontData_FreeWidthsAndNarc(struct FontData * ptr);
+void InitFontResources(struct FontData * ptr, u32 a1, u32 heap_id);
+void InitFontResources_FromPreloaded(struct FontData * ptr, u32 heap_id);
+void InitFontResources_LazyFromNarc(struct FontData * ptr, u32 heap_id);
+void FreeLoadedFontResources(struct FontData * ptr);
+void FreeLoadedFontResources_FromPreloaded(struct FontData * ptr);
+void FreeLoadedFontResources_LazyFromNarc(struct FontData * ptr);
+void TryLoadGlyph(struct FontData * ptr, u32 param1, struct UnkStruct_02002C14_sub * ptr2);
+void DecompressGlyphTiles_FromPreloaded(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2);
+void DecompressGlyphTiles_LazyFromNarc(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2);
+u32 GetStringWidth(struct FontData * ptr, const u16 * str, u32 letterSpacing);
+int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1);
+int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1);
+
+#endif //POKEDIAMOND_UNK_02021590_H
diff --git a/tools/.gitignore b/tools/.gitignore new file mode 100644 index 00000000..5bae8ad8 --- /dev/null +++ b/tools/.gitignore @@ -0,0 +1 @@ +asmdiff
diff --git a/tools/nitrobanner/.gitignore b/tools/nitrobanner/.gitignore new file mode 100644 index 00000000..e8eff425 --- /dev/null +++ b/tools/nitrobanner/.gitignore @@ -0,0 +1 @@ +nitrobanner diff --git a/tools/nitrobanner/LICENSE b/tools/nitrobanner/LICENSE new file mode 100644 index 00000000..193cec26 --- /dev/null +++ b/tools/nitrobanner/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2021 tgsm + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/nitrobanner/Makefile b/tools/nitrobanner/Makefile new file mode 100644 index 00000000..322525bd --- /dev/null +++ b/tools/nitrobanner/Makefile @@ -0,0 +1,30 @@ +CXXFLAGS := -std=c++17 -O3 -Wall -Wextra -Wpedantic + +ifeq ($(OS),Windows_NT) +LDFLAGS += -lstdc++fs +else +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +LDFLAGS += -lstdc++ -lc++ -lc /usr/local/opt/llvm@8/lib/libc++fs.a +else +LDFLAGS += -lstdc++fs +endif +endif + +OBJS = \ + banner.o \ + crc16.o \ + main.o + +.PHONY: all clean + +all: nitrobanner + +%.o: %.cpp + $(CXX) -c -o $@ $< $(CXXFLAGS) + +clean: + $(RM) nitrobanner nitrobanner.exe *.o + +nitrobanner: $(OBJS) + $(CXX) -o $@ $^ $(LDFLAGS) diff --git a/tools/nitrobanner/banner.cpp b/tools/nitrobanner/banner.cpp new file mode 100644 index 00000000..ef73ccf9 --- /dev/null +++ b/tools/nitrobanner/banner.cpp @@ -0,0 +1,276 @@ +#include <cstdio> +#include <codecvt> +#include <exception> +#include <fstream> +#include <locale> +#include <string> +#include "banner.h" +#include "crc16.h" + +template <typename T> +void SerializeData(std::ofstream& ostream, T data) { + for (std::size_t i = 0; i < sizeof(T); i++) { + ostream.put(static_cast<u8>((data >> (i * 8)) & 0xFF)); + } +} + +std::wstring GetTitleAndDeveloperFromSpecCommandArgument(std::wifstream& stream, const std::wstring& command_argument) { + std::wstring title_and_developer = command_argument; + constexpr int max_lines = 3; + int current_line = 1; + + while (true) { + wchar_t first_char = stream.get(); + stream.unget(); + if (first_char != L' ') { + return title_and_developer; + } + + if (current_line++ == max_lines) { + throw std::runtime_error("Title and developer can not be more than " + std::to_string(max_lines) + " lines"); + } + + std::wstring line; + std::getline(stream, line); + + title_and_developer += '\n'; + title_and_developer += line.substr(line.find_first_not_of(L' '), line.size()); + } +} + +SpecFileData ParseSpecFile(const filesystem::path& specfile_path) { + std::wifstream stream(specfile_path, std::ios::binary); + if (!stream.is_open()) { + throw std::runtime_error("could not open specfile " + specfile_path.string() + " for parsing"); + } + + // convert utf-16 to utf-32 + stream.imbue(std::locale(stream.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>)); + + // first character of the file has to be U+FEFF. + if (stream.get() != 0xFEFF) { + throw std::runtime_error("specfile must be encoded as UTF-16"); + } + + SpecFileData specfile_data = {}; + + for (std::wstring line; std::getline(stream, line);) { + const std::size_t end_of_command_name = line.find(L':'); + if (end_of_command_name == std::wstring::npos) { + continue; + } + + const std::size_t beginning_of_command_name = line.find_first_not_of(' '); + const std::wstring command_name = line.substr(beginning_of_command_name, end_of_command_name - beginning_of_command_name); + + const std::size_t beginning_of_command_argument = line.find_first_of(L": ") + 2; + const std::wstring command_argument = line.substr(beginning_of_command_argument, line.size()); + + if (command_name == L"Version") { + printf("warning: Version command is currently unsupported, defaulting to version 1\n"); + specfile_data.version = 1; + } else if (command_name == L"ImageFile") { + specfile_data.icon_bitmap_filename = command_argument; + } else if (command_name == L"PlttFile") { + specfile_data.icon_palette_filename = command_argument; + } else if (CommandIsForTitleAndDeveloper(command_name)) { + const std::wstring& title_and_developer = GetTitleAndDeveloperFromSpecCommandArgument(stream, command_argument); + + if (command_name == L"JP") { + for (wchar_t c : title_and_developer) { + specfile_data.japanese_title += char16_t(c); + } + } else if (command_name == L"EN") { + for (wchar_t c : title_and_developer) { + specfile_data.english_title += char16_t(c); + } + } else if (command_name == L"FR") { + for (wchar_t c : title_and_developer) { + specfile_data.french_title += char16_t(c); + } + } else if (command_name == L"GE") { + for (wchar_t c : title_and_developer) { + specfile_data.german_title += char16_t(c); + } + } else if (command_name == L"IT") { + for (wchar_t c : title_and_developer) { + specfile_data.italian_title += char16_t(c); + } + } else if (command_name == L"SP") { + for (wchar_t c : title_and_developer) { + specfile_data.spanish_title += char16_t(c); + } + } + } else { + printf("warning: unsupported command '%ls', ignoring...\n", command_name.data()); + } + } + + if (specfile_data.version == 0) { + // no banner version provided, assuming version 1 + specfile_data.version = 1; + } + + if (specfile_data.icon_bitmap_filename.empty()) { + throw std::runtime_error("missing required ImageFile command (filename of icon bitmap)"); + } + + if (specfile_data.icon_palette_filename.empty()) { + throw std::runtime_error("missing required PlttFile command (filename of icon palette)"); + } + + if (specfile_data.japanese_title.empty()) { + throw std::runtime_error("missing required JP command (Japanese title & developer)"); + } + + if (specfile_data.english_title.empty()) { + throw std::runtime_error("missing required EN command (English title & developer)"); + } + + if (specfile_data.french_title.empty()) { + throw std::runtime_error("missing required FR command (French title & developer)"); + } + + if (specfile_data.german_title.empty()) { + throw std::runtime_error("missing required GE command (German title & developer)"); + } + + if (specfile_data.italian_title.empty()) { + throw std::runtime_error("missing required IT command (Italian title & developer)"); + } + + if (specfile_data.spanish_title.empty()) { + throw std::runtime_error("missing required SP command (Spanish title & developer)"); + } + + return specfile_data; +} + +IconBitmap GetIconBitmap(const filesystem::path& icon_bitmap_filename) { + if (!filesystem::is_regular_file(icon_bitmap_filename)) { + throw std::runtime_error("icon bitmap file '" + icon_bitmap_filename.string() + "' does not exist / is not a regular file"); + } + + if (filesystem::file_size(icon_bitmap_filename) != ICON_BITMAP_SIZE) { + throw std::runtime_error("icon bitmap is not 512 bytes"); + } + + std::ifstream stream(icon_bitmap_filename, std::ios::binary); + if (!stream.is_open()) { + throw std::runtime_error("could not open icon bitmap file '" + icon_bitmap_filename.string() + "' for reading"); + } + + IconBitmap bitmap = {}; + stream.read(reinterpret_cast<char*>(bitmap.data()), ICON_BITMAP_SIZE); + return bitmap; +} + +IconPalette GetIconPalette(const filesystem::path& icon_palette_filename) { + if (!filesystem::is_regular_file(icon_palette_filename)) { + throw std::runtime_error("icon palette file '" + icon_palette_filename.string() + "' does not exist / is not a regular file"); + } + + if (filesystem::file_size(icon_palette_filename) != ICON_PALETTE_SIZE) { + throw std::runtime_error("icon palette is not 32 bytes"); + } + + std::ifstream stream(icon_palette_filename, std::ios::binary); + if (!stream.is_open()) { + throw std::runtime_error("could not open icon palette file '" + icon_palette_filename.string() + "' for reading"); + } + + IconPalette palette = {}; + stream.read(reinterpret_cast<char*>(palette.data()), ICON_PALETTE_SIZE); + return palette; +} + +void OutputBanner(std::ofstream& ostream, const Banner& banner) { + SerializeData<u16>(ostream, banner.version); + SerializeData<u16>(ostream, banner.crc); + + for ([[maybe_unused]] u16 i : banner.crc_padding) { + SerializeData<u16>(ostream, 0); + } + + for ([[maybe_unused]] u8 i : banner.padding) { + SerializeData<u8>(ostream, 0); + } + + for (u8 i : banner.bitmap) { + SerializeData<u8>(ostream, i); + } + + for (u8 i : banner.palette) { + SerializeData<u8>(ostream, i); + } + + for (char16_t c : banner.japanese_title) { + SerializeData<u16>(ostream, c); + } + + for (char16_t c : banner.english_title) { + SerializeData<u16>(ostream, c); + } + + for (char16_t c : banner.french_title) { + SerializeData<u16>(ostream, c); + } + + for (char16_t c : banner.german_title) { + SerializeData<u16>(ostream, c); + } + + for (char16_t c : banner.italian_title) { + SerializeData<u16>(ostream, c); + } + + for (char16_t c : banner.spanish_title) { + SerializeData<u16>(ostream, c); + } +} + +bool MakeBanner(const filesystem::path& specfile_path, const filesystem::path& outfile_path) { + std::ofstream ostream(outfile_path, std::ios::binary); + if (!ostream.is_open()) { +#ifdef _MSC_VER + printf("error: could not open %ls for writing\n", outfile_path.c_str()); +#else + printf("error: could not open %s for writing\n", outfile_path.c_str()); +#endif + return false; + } + + SpecFileData specfile_data = {}; + try { + specfile_data = ParseSpecFile(specfile_path); + } catch (std::runtime_error& e) { + printf("error: %s\n", e.what()); + return false; + } + + Banner banner = {}; + + banner.version = specfile_data.version; + banner.bitmap = GetIconBitmap(specfile_data.icon_bitmap_filename); + banner.palette = GetIconPalette(specfile_data.icon_palette_filename); + + std::copy(specfile_data.japanese_title.begin(), specfile_data.japanese_title.end(), banner.japanese_title.data()); + std::copy(specfile_data.english_title.begin(), specfile_data.english_title.end(), banner.english_title.data()); + std::copy(specfile_data.french_title.begin(), specfile_data.french_title.end(), banner.french_title.data()); + std::copy(specfile_data.german_title.begin(), specfile_data.german_title.end(), banner.german_title.data()); + std::copy(specfile_data.italian_title.begin(), specfile_data.italian_title.end(), banner.italian_title.data()); + std::copy(specfile_data.spanish_title.begin(), specfile_data.spanish_title.end(), banner.spanish_title.data()); + + // checksum the banner data, starting from the icon bitmap and ending at the end of the file. + banner.crc = CalculateCRC16FromBannerData(banner.bitmap.data()); + + // check against diamond's icon crc + // if (banner.crc != 0x048B) { + // printf("CRC did not match (expected 0x048B, got 0x%04X)\n", banner.crc); + // } else { + // printf("CRC matched\n"); + // } + + OutputBanner(ostream, banner); + return true; +} diff --git a/tools/nitrobanner/banner.h b/tools/nitrobanner/banner.h new file mode 100644 index 00000000..70684172 --- /dev/null +++ b/tools/nitrobanner/banner.h @@ -0,0 +1,61 @@ +#pragma once + +#include <array> +#include <filesystem> +#include "types.h" + +constexpr int TITLE_LENGTH = 0x100 / sizeof(u16); // 128 UTF-16 characters +constexpr int ICON_BITMAP_SIZE = 0x200; // 512 bytes +constexpr int ICON_PALETTE_SIZE = 0x20; // 32 bytes + +struct SpecFileData { + u16 version; + std::wstring icon_bitmap_filename; + std::wstring icon_palette_filename; + std::u16string japanese_title; + std::u16string english_title; + std::u16string french_title; + std::u16string german_title; + std::u16string italian_title; + std::u16string spanish_title; +}; + +using IconBitmap = std::array<u8, ICON_BITMAP_SIZE>; +using IconPalette = std::array<u8, ICON_PALETTE_SIZE>; + +struct Banner { + u16 version; + u16 crc; + const std::array<u16, 3> crc_padding {}; + const std::array<u8, 0x16> padding {}; + IconBitmap bitmap {}; + IconPalette palette {}; + std::array<u16, TITLE_LENGTH> japanese_title {}; + std::array<u16, TITLE_LENGTH> english_title {}; + std::array<u16, TITLE_LENGTH> french_title {}; + std::array<u16, TITLE_LENGTH> german_title {}; + std::array<u16, TITLE_LENGTH> italian_title {}; + std::array<u16, TITLE_LENGTH> spanish_title {}; +}; +static_assert(sizeof(Banner) == 0x840, "Size of banner struct is wrong"); + +template <typename T> +void SerializeData(std::ofstream& ostream, T data); + +void ProcessSpecFileCommand(SpecFileData& specfile_data, const std::wstring_view& command_name, const std::wstring_view& command_argument); +SpecFileData ParseSpecFile(const std::filesystem::path& specfile_path); + +IconBitmap GetIconBitmap(const std::filesystem::path& icon_bitmap_filename); +IconPalette GetIconPalette(const std::filesystem::path& icon_palette_filename); + +void OutputBanner(std::ofstream& ostream, const Banner& banner); +bool MakeBanner(const std::filesystem::path& specfile_path, const std::filesystem::path& outfile_path); + +inline bool CommandIsForTitleAndDeveloper(const std::wstring& command_name) { + return command_name == L"JP" || + command_name == L"EN" || + command_name == L"FR" || + command_name == L"GE" || + command_name == L"IT" || + command_name == L"SP"; +} diff --git a/tools/nitrobanner/crc16.cpp b/tools/nitrobanner/crc16.cpp new file mode 100644 index 00000000..bac64b57 --- /dev/null +++ b/tools/nitrobanner/crc16.cpp @@ -0,0 +1,22 @@ +#include <array> +#include "banner.h" +#include "crc16.h" + +u16 CalculateCRC16FromBannerData(const u8* banner_data) { + const std::array<u16, 16> crc_table = { + 0x0000, 0xCC01, 0xD801, 0x1400, + 0xF001, 0x3C00, 0x2800, 0xE401, + 0xA001, 0x6C00, 0x7800, 0xB401, + 0x5000, 0x9C01, 0x8801, 0x4400, + }; + + u16 checksum = 0xFFFF; + + const std::size_t data_size = sizeof(Banner) - offsetof(Banner, bitmap); + for (std::size_t i = 0; i < data_size; i++) { + u16 lookup_index = crc_table[banner_data[i] & 0xF] ^ (checksum >> 4) ^ crc_table[checksum & 0xF]; + checksum = crc_table[banner_data[i] >> 4] ^ (lookup_index >> 4) ^ crc_table[lookup_index & 0xF]; + } + + return checksum; +} diff --git a/tools/nitrobanner/crc16.h b/tools/nitrobanner/crc16.h new file mode 100644 index 00000000..29811cf9 --- /dev/null +++ b/tools/nitrobanner/crc16.h @@ -0,0 +1,5 @@ +#pragma once + +#include "types.h" + +u16 CalculateCRC16FromBannerData(const u8* banner_data); diff --git a/tools/nitrobanner/main.cpp b/tools/nitrobanner/main.cpp new file mode 100644 index 00000000..031d9218 --- /dev/null +++ b/tools/nitrobanner/main.cpp @@ -0,0 +1,45 @@ +#include <cstdio> +#include <cstring> +#include "banner.h" +#include "types.h" + +#ifdef _MSC_VER +#define strcasecmp _stricmp +#endif + +int main(int argc, char* argv[]) { + if (argc != 2 && argc != 3) { + printf("usage: %s <specfile> [outfile]\n", argv[0]); + return 1; + } + + const filesystem::path specfile_path = argv[1]; + if (!filesystem::is_regular_file(specfile_path)) { + printf("error: provided specfile does not exist / is not a regular file. (did you put the right path?)\n"); + return 1; + } + + if (specfile_path.extension() == ".bnr") { + printf("error: can't use a bnr file as a specfile\n"); + return 1; + } + + // If the user doesn't provide a path to an outfile, or if the provided outfile is + // identical to the provided specfile, use the specfile's name + the .bnr extension. + filesystem::path outfile_path; + if (argc == 2 || strcasecmp(argv[1], argv[2]) == 0) { + outfile_path = specfile_path.stem().string() + ".bnr"; + } else { + outfile_path = argv[2]; + } + + // printf("debug: specfile: %s\n", specfile_path.c_str()); + // printf("debug: outfile: %s\n", outfile_path.c_str()); + + if (!MakeBanner(specfile_path, outfile_path)) { + printf("error: failed to create banner file\n"); + return 1; + } + + return 0; +} diff --git a/tools/nitrobanner/types.h b/tools/nitrobanner/types.h new file mode 100644 index 00000000..5776e62f --- /dev/null +++ b/tools/nitrobanner/types.h @@ -0,0 +1,15 @@ +#pragma once + +#include <cstdint> + +#if (__GNUC__ <= 7) && !defined _MSC_VER +#include <experimental/filesystem> +namespace filesystem = std::experimental::filesystem; +#else +#include <filesystem> +namespace filesystem = std::filesystem; +#endif + +using u8 = uint8_t; +using u16 = uint16_t; +using u32 = uint32_t; |