From a02d40d1410ad0b63f943600028348daccdebbe4 Mon Sep 17 00:00:00 2001 From: tgsm Date: Sun, 25 Jul 2021 22:35:52 -0500 Subject: Decompile scrcmd_17 -> scrcmd_amity_square Command names courtesy of DSPRE. --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_17.s | 215 ----------------------------------------- arm9/asm/unk_02038C78.s | 6 +- arm9/global.inc | 6 +- arm9/src/scrcmd_amity_square.c | 117 ++++++++++++++++++++++ 5 files changed, 124 insertions(+), 222 deletions(-) delete mode 100644 arm9/asm/scrcmd_17.s create mode 100644 arm9/src/scrcmd_amity_square.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 25689701..48254159 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -171,7 +171,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 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/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/global.inc b/arm9/global.inc index db33a314..48e8a7c7 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c new file mode 100644 index 00000000..aa38449f --- /dev/null +++ b/arm9/src/scrcmd_amity_square.c @@ -0,0 +1,117 @@ +#include "scrcmd.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] = { + // TODO: accessory constants + { 0, 5, 21, 11, 26, 13, 25, 31, 16, 33 }, // Clefairy and Skitty + { 2, 19, 20, 24, 17, 0, 23, 29, 28, 15 }, // Torchic and Drifloon + { 8, 9, 3, 11, 22, 30, 17, 6, 14, 32 }, // Psyduck and Pachirisu + { 12, 18, 21, 13, 31, 9, 25, 24, 27, 6 }, // Jigglypuff and Shroomish + { 5, 3, 26, 19, 20, 1, 7, 16, 22, 15 }, // Pikachu + { 12, 30, 2, 20, 29, 4, 8, 27, 14, 10 }, // Buneary and Happiny +}; + +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; +} -- cgit v1.2.3 From 66abfb42155c9643f5709beae069a76054660cc8 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 26 Jul 2021 19:06:44 -0500 Subject: scrcmd_amity_square: Use new accessory constants --- arm9/src/scrcmd_amity_square.c | 97 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 7 deletions(-) (limited to 'arm9') diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c index aa38449f..c957dec1 100644 --- a/arm9/src/scrcmd_amity_square.c +++ b/arm9/src/scrcmd_amity_square.c @@ -1,4 +1,5 @@ #include "scrcmd.h" +#include "constants/accessories.h" #include "constants/pokemon.h" #include "event_data.h" @@ -6,13 +7,95 @@ extern void FUN_0205F54C(struct ScriptState* state); extern u16 FUN_0205F55C(struct ScriptState* state); static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = { - // TODO: accessory constants - { 0, 5, 21, 11, 26, 13, 25, 31, 16, 33 }, // Clefairy and Skitty - { 2, 19, 20, 24, 17, 0, 23, 29, 28, 15 }, // Torchic and Drifloon - { 8, 9, 3, 11, 22, 30, 17, 6, 14, 32 }, // Psyduck and Pachirisu - { 12, 18, 21, 13, 31, 9, 25, 24, 27, 6 }, // Jigglypuff and Shroomish - { 5, 3, 26, 19, 20, 1, 7, 16, 22, 15 }, // Pikachu - { 12, 30, 2, 20, 29, 4, 8, 27, 14, 10 }, // Buneary and Happiny + { // 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) -- cgit v1.2.3 From a46463e4c6ca40cfc96dd47a7a28c11275a22ea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 27 Jul 2021 21:30:10 +0200 Subject: decompile unk_02005CFC.s --- arm9/asm/unk_02005CFC.s | 303 ------------------------------------ arm9/lib/NitroSDK/include/SPI_mic.h | 17 ++ arm9/src/pokemon.c | 12 +- arm9/src/unk_020040F4.c | 9 +- arm9/src/unk_020051F4.c | 2 +- arm9/src/unk_02005CFC.c | 181 +++++++++++++++++++++ 6 files changed, 211 insertions(+), 313 deletions(-) delete mode 100644 arm9/asm/unk_02005CFC.s create mode 100644 arm9/src/unk_02005CFC.c (limited to 'arm9') 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/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h index 79588fe9..999aeba3 100644 --- a/arm9/lib/NitroSDK/include/SPI_mic.h +++ b/arm9/lib/NitroSDK/include/SPI_mic.h @@ -1,6 +1,23 @@ #ifndef NITRO_SPI_MIC_H_ #define NITRO_SPI_MIC_H_ +#include "global.h" + + +struct MIC_SamplingData +{ + u32 unk00; + u8 *unk04; + u32 unk08; + u32 unk0c; + u32 unk10; + u32 unk14; + u32 unk18; +}; + void MIC_Init(void); +u32 MIC_StartAutoSampling(struct MIC_SamplingData *data); +u32 MIC_StopAutoSampling(); +u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); #endif //NITRO_SPI_MIC_H_ diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 29075833..bd6c702a 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -18,6 +18,12 @@ #include "constants/moves.h" #include "constants/sinnoh_dex.h" #include "constants/trainer_classes.h" +#include "unk_020051F4.h" + +extern void FUN_02005E80(u8); +extern void FUN_02005E90(u32 param0, u32 param1, u32 param2, u32 param3); +extern u32 FUN_02005F14(s32 param0); + #pragma thumb on @@ -3303,14 +3309,14 @@ 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(u32 r7, u32 r5, u16 r4, u32 r6, u32 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 { @@ -3321,7 +3327,7 @@ void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) } 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/unk_020040F4.c b/arm9/src/unk_020040F4.c index 5713ddf0..3436fe68 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); @@ -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() { -#pragma unused(param0) GetSoundDataPointer(); return MIC_StopAutoSampling(); } diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c index 6da250d5..64cab171 100644 --- a/arm9/src/unk_020051F4.c +++ b/arm9/src/unk_020051F4.c @@ -14,7 +14,7 @@ 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_02005E80(u8); extern void FUN_02005DFC(); extern void *FUN_0201B6C8(u32 *); diff --git a/arm9/src/unk_02005CFC.c b/arm9/src/unk_02005CFC.c new file mode 100644 index 00000000..bc34f2a3 --- /dev/null +++ b/arm9/src/unk_02005CFC.c @@ -0,0 +1,181 @@ +#include "global.h" +#include "unk_02005CFC.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() +{ + if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) + { + FUN_02005DFC(); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_02005D20(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 (!FUN_02005D20(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() +{ + u8 *r5 = FUN_02003D38(15); + u8 *r4 = FUN_02003D38(29); + + if (*r5 == 1) + { + FUN_02004C3C(14); + FUN_02004A04(14); + } + + *r4 = 0; +} + +THUMB_FUNC u32 FUN_02005E28() +{ + 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 FUN_02005E64() +{ + GF_MIC_StopAutoSampling(); +} + +THUMB_FUNC void FUN_02005E6C(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 u32 FUN_02005F14(s32 param0) +{ + switch (param0) + { + case 0: + case 1: + case 5: + case 11: + case 12: + return 1; + default: + return 0; + } +} -- cgit v1.2.3 From 2caca24385a10df4f0af6000d498350cbb1e92b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 27 Jul 2021 21:43:18 +0200 Subject: rename to sound_chatot.c --- arm9/arm9.lsf | 2 +- arm9/src/pokemon.c | 9 +-- arm9/src/scrcmd_sound.c | 6 +- arm9/src/sound.c | 2 +- arm9/src/sound_chatot.c | 181 ++++++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_020051F4.c | 6 +- arm9/src/unk_02005CFC.c | 181 ------------------------------------------------ 7 files changed, 189 insertions(+), 198 deletions(-) create mode 100644 arm9/src/sound_chatot.c delete mode 100644 arm9/src/unk_02005CFC.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 25689701..94bf6e35 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 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index bd6c702a..6139a21f 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -19,10 +19,7 @@ #include "constants/sinnoh_dex.h" #include "constants/trainer_classes.h" #include "unk_020051F4.h" - -extern void FUN_02005E80(u8); -extern void FUN_02005E90(u32 param0, u32 param1, u32 param2, u32 param3); -extern u32 FUN_02005F14(s32 param0); +#include "sound_chatot.h" #pragma thumb on @@ -3309,7 +3306,7 @@ 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, u16 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) { @@ -3322,7 +3319,7 @@ void FUN_02069FB0(u32 r7, u32 r5, u16 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) { if (sp1C) FUN_02005E80(1); - FUN_02005E90((int)r7, 0, (int)sp18, (int)r6); + FUN_02005E90(r7, 0, sp18, r6); } } else diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index ae20b5a4..b2bba9a6 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); 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..c2a4e913 --- /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() +{ + if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) + { + FUN_02005DFC(); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_02005D20(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 (!FUN_02005D20(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() +{ + u8 *r5 = FUN_02003D38(15); + u8 *r4 = FUN_02003D38(29); + + if (*r5 == 1) + { + FUN_02004C3C(14); + FUN_02004A04(14); + } + + *r4 = 0; +} + +THUMB_FUNC u32 FUN_02005E28() +{ + 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 FUN_02005E64() +{ + GF_MIC_StopAutoSampling(); +} + +THUMB_FUNC void FUN_02005E6C(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 u32 FUN_02005F14(s32 param0) +{ + switch (param0) + { + case 0: + case 1: + case 5: + case 11: + case 12: + return 1; + default: + return 0; + } +} diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c index 64cab171..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(u8); -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_02005CFC.c b/arm9/src/unk_02005CFC.c deleted file mode 100644 index bc34f2a3..00000000 --- a/arm9/src/unk_02005CFC.c +++ /dev/null @@ -1,181 +0,0 @@ -#include "global.h" -#include "unk_02005CFC.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() -{ - if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) - { - FUN_02005DFC(); - - return TRUE; - } - - return FALSE; -} - -THUMB_FUNC BOOL FUN_02005D20(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 (!FUN_02005D20(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() -{ - u8 *r5 = FUN_02003D38(15); - u8 *r4 = FUN_02003D38(29); - - if (*r5 == 1) - { - FUN_02004C3C(14); - FUN_02004A04(14); - } - - *r4 = 0; -} - -THUMB_FUNC u32 FUN_02005E28() -{ - 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 FUN_02005E64() -{ - GF_MIC_StopAutoSampling(); -} - -THUMB_FUNC void FUN_02005E6C(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 u32 FUN_02005F14(s32 param0) -{ - switch (param0) - { - case 0: - case 1: - case 5: - case 11: - case 12: - return 1; - default: - return 0; - } -} -- cgit v1.2.3 From 610a801e1793ae3242aee3855bceae30aff019f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 27 Jul 2021 21:49:23 +0200 Subject: document some chatot sound functions --- arm9/global.inc | 6 +++--- arm9/src/scrcmd_sound.c | 6 +++--- arm9/src/sound_chatot.c | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index d638e601..365bea86 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -366,9 +366,9 @@ .extern FUN_02005D20 .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 diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index b2bba9a6..94e7b69d 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -211,7 +211,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; @@ -226,14 +226,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/sound_chatot.c b/arm9/src/sound_chatot.c index c2a4e913..085b6104 100644 --- a/arm9/src/sound_chatot.c +++ b/arm9/src/sound_chatot.c @@ -91,7 +91,7 @@ THUMB_FUNC void FUN_02005DFC() *r4 = 0; } -THUMB_FUNC u32 FUN_02005E28() +THUMB_FUNC u32 Chatot_startRecording() { struct MIC_SamplingData st0; @@ -110,12 +110,12 @@ THUMB_FUNC u32 FUN_02005E28() return GF_MIC_StartAutoSampling(&st0); } -THUMB_FUNC void FUN_02005E64() +THUMB_FUNC void Chatot_stopRecording() { GF_MIC_StopAutoSampling(); } -THUMB_FUNC void FUN_02005E6C(struct SaveChatotSoundClip *param0) +THUMB_FUNC void Chatot_saveRecording(struct SaveChatotSoundClip *param0) { Chatot_Encode(param0, FUN_02004DB4()); } -- cgit v1.2.3 From 599ff56901be2bdee6e96d202a9210685b051daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 27 Jul 2021 21:58:07 +0200 Subject: document Chatot_checkCry --- arm9/global.inc | 2 +- arm9/src/scrcmd_sound.c | 2 +- arm9/src/sound_chatot.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 69fa82c1..b46f57ad 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -363,7 +363,7 @@ .extern PlaySound .extern FUN_02005CBC .extern FUN_02005CFC -.extern FUN_02005D20 +.extern Chatot_checkCry .extern FUN_02005D48 .extern FUN_02005DFC .extern Chatot_startRecording diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index 94e7b69d..8e59c182 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -195,7 +195,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; diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c index 085b6104..71cc1abc 100644 --- a/arm9/src/sound_chatot.c +++ b/arm9/src/sound_chatot.c @@ -20,7 +20,7 @@ THUMB_FUNC BOOL FUN_02005CFC() return FALSE; } -THUMB_FUNC BOOL FUN_02005D20(struct SaveChatotSoundClip *param0) +THUMB_FUNC BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0) { u8 *r4 = FUN_02003D38(30); @@ -44,7 +44,7 @@ THUMB_FUNC u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 s8 *st0 = FUN_02004DB4(); u8 *st4 = FUN_02003D38(29); - if (!FUN_02005D20(param0)) + if (!Chatot_checkCry(param0)) { return 0; } -- cgit v1.2.3 From ac24b510d854953ef9d6f4b412a7de77da29757e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 4 Aug 2021 21:09:49 +0200 Subject: add void in parameter list --- arm9/src/scrcmd_sound.c | 3 ++- arm9/src/sound_chatot.c | 8 ++++---- arm9/src/unk_020040F4.c | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 17 deletions(-) (limited to 'arm9') diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index 8e59c182..b0993387 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -37,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; } diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c index 71cc1abc..2efe4843 100644 --- a/arm9/src/sound_chatot.c +++ b/arm9/src/sound_chatot.c @@ -8,7 +8,7 @@ #include "unk_020040F4.h" #include "unk_020051F4.h" -THUMB_FUNC BOOL FUN_02005CFC() +THUMB_FUNC BOOL FUN_02005CFC(void) { if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) { @@ -77,7 +77,7 @@ THUMB_FUNC u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 return res; } -THUMB_FUNC void FUN_02005DFC() +THUMB_FUNC void FUN_02005DFC(void) { u8 *r5 = FUN_02003D38(15); u8 *r4 = FUN_02003D38(29); @@ -91,7 +91,7 @@ THUMB_FUNC void FUN_02005DFC() *r4 = 0; } -THUMB_FUNC u32 Chatot_startRecording() +THUMB_FUNC u32 Chatot_startRecording(void) { struct MIC_SamplingData st0; @@ -110,7 +110,7 @@ THUMB_FUNC u32 Chatot_startRecording() return GF_MIC_StartAutoSampling(&st0); } -THUMB_FUNC void Chatot_stopRecording() +THUMB_FUNC void Chatot_stopRecording(void) { GF_MIC_StopAutoSampling(); } diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c index 3436fe68..fa1d968f 100644 --- a/arm9/src/unk_020040F4.c +++ b/arm9/src/unk_020040F4.c @@ -57,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); @@ -72,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); @@ -85,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); @@ -469,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)); } @@ -542,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); @@ -653,7 +653,7 @@ THUMB_FUNC u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0) return MIC_StartAutoSampling(param0); } -THUMB_FUNC u32 GF_MIC_StopAutoSampling() +THUMB_FUNC u32 GF_MIC_StopAutoSampling(void) { GetSoundDataPointer(); return MIC_StopAutoSampling(); @@ -911,7 +911,7 @@ THUMB_FUNC void FUN_02004C3C(u32 param0) } } -THUMB_FUNC BOOL GF_SndCaptureIsActive() +THUMB_FUNC BOOL GF_SndCaptureIsActive(void) { return NNS_SndCaptureIsActive(); } @@ -933,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(); @@ -945,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(); } @@ -997,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); @@ -1010,7 +1010,7 @@ THUMB_FUNC u16 FUN_02004D94() return --(*ptr); } -THUMB_FUNC u8 *FUN_02004DB4() +THUMB_FUNC u8 *FUN_02004DB4(void) { return UNK_021C3DE0; } @@ -1342,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) -- cgit v1.2.3 From e7a61a19cda2047c8f47ed52cd5253e94f2379ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 4 Aug 2021 21:14:26 +0200 Subject: use BOOL --- arm9/src/sound_chatot.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'arm9') diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c index 2efe4843..06b2fc64 100644 --- a/arm9/src/sound_chatot.c +++ b/arm9/src/sound_chatot.c @@ -165,7 +165,7 @@ THUMB_FUNC u32 FUN_02005EE0(struct SaveChatotSoundClip *param0) return 0; } -THUMB_FUNC u32 FUN_02005F14(s32 param0) +THUMB_FUNC BOOL FUN_02005F14(s32 param0) { switch (param0) { @@ -174,8 +174,8 @@ THUMB_FUNC u32 FUN_02005F14(s32 param0) case 5: case 11: case 12: - return 1; + return TRUE; default: - return 0; + return FALSE; } } -- cgit v1.2.3 From e22b687ea452e713f5f252b4a0a5353ac2546312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 4 Aug 2021 21:14:46 +0200 Subject: no global.h in nitro sdk --- arm9/lib/NitroSDK/include/SPI_mic.h | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'arm9') diff --git a/arm9/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h index 999aeba3..25c818c4 100644 --- a/arm9/lib/NitroSDK/include/SPI_mic.h +++ b/arm9/lib/NitroSDK/include/SPI_mic.h @@ -1,23 +1,20 @@ #ifndef NITRO_SPI_MIC_H_ #define NITRO_SPI_MIC_H_ -#include "global.h" - - struct MIC_SamplingData { - u32 unk00; - u8 *unk04; - u32 unk08; - u32 unk0c; - u32 unk10; - u32 unk14; - u32 unk18; + int unk00; + void *unk04; + int unk08; + int unk0c; + int unk10; + int unk14; + int unk18; }; void MIC_Init(void); -u32 MIC_StartAutoSampling(struct MIC_SamplingData *data); -u32 MIC_StopAutoSampling(); -u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); +int MIC_StartAutoSampling(struct MIC_SamplingData *data); +int MIC_StopAutoSampling(); +int MIC_DoSamplingAsync(int param0, int param1, int param2, int param3); #endif //NITRO_SPI_MIC_H_ -- cgit v1.2.3 From 1da53f50293e9856ed7c5b8d6ae66d8ecce85ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 5 Aug 2021 20:22:20 +0200 Subject: void argument list --- arm9/lib/NitroSDK/include/SPI_mic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h index 25c818c4..b1d7b5ea 100644 --- a/arm9/lib/NitroSDK/include/SPI_mic.h +++ b/arm9/lib/NitroSDK/include/SPI_mic.h @@ -14,7 +14,7 @@ struct MIC_SamplingData void MIC_Init(void); int MIC_StartAutoSampling(struct MIC_SamplingData *data); -int MIC_StopAutoSampling(); +int MIC_StopAutoSampling(void); int MIC_DoSamplingAsync(int param0, int param1, int param2, int param3); #endif //NITRO_SPI_MIC_H_ -- cgit v1.2.3 From 8ab9628dff4d28659f18507ae8ec0f98c2bbe5c8 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 7 Aug 2021 01:21:46 +0100 Subject: finish splitting module 05 --- arm9/arm9.lsf | 34 +- arm9/global.inc | 53 + arm9/modules/05/asm/mod05_021E8648.s | 279 + arm9/modules/05/asm/mod05_021E8860.s | 77 + arm9/modules/05/asm/mod05_021E88E8.s | 7400 ++++++++ arm9/modules/05/asm/mod05_021EC458.s | 2938 +++ arm9/modules/05/asm/mod05_021ED9C0.s | 233 + arm9/modules/05/asm/mod05_021EDB70.s | 390 + arm9/modules/05/asm/mod05_021EDE34.s | 3816 ++++ arm9/modules/05/asm/mod05_021EFA9C.s | 172 + arm9/modules/05/asm/mod05_021EFBF8.s | 905 + arm9/modules/05/asm/mod05_021F0318.s | 258 + arm9/modules/05/asm/mod05_021F0514.s | 4556 +++++ arm9/modules/05/asm/mod05_021F1B0C.s | 236 + arm9/modules/05/asm/mod05_021F1CB8.s | 306 + arm9/modules/05/asm/mod05_021F1F04.s | 3269 ++++ arm9/modules/05/asm/mod05_021F3780.s | 127 + arm9/modules/05/asm/mod05_021F3854.s | 79 + arm9/modules/05/asm/mod05_021F38CC.s | 379 + arm9/modules/05/asm/mod05_021F3BC0.s | 132 + arm9/modules/05/asm/mod05_021F3C98.s | 447 + arm9/modules/05/asm/mod05_021F3FE0.s | 595 + arm9/modules/05/asm/mod05_021F445C.s | 199 + arm9/modules/05/asm/mod05_021F45B4.s | 173 + arm9/modules/05/asm/mod05_021F46C8.s | 356 + arm9/modules/05/asm/mod05_021F4968.s | 478 + arm9/modules/05/asm/mod05_021F4CF8.s | 756 + arm9/modules/05/asm/mod05_021F5268.s | 379 + arm9/modules/05/asm/mod05_021F5518.s | 615 + arm9/modules/05/asm/mod05_021F5990.s | 309 + arm9/modules/05/asm/mod05_021F5B9C.s | 84 + arm9/modules/05/asm/mod05_021F5C44.s | 834 + arm9/modules/05/asm/mod05_021F61DC.s | 521 + arm9/modules/05/asm/mod05_021F61F4.s | 216 + arm9/modules/05/asm/mod05_021F6360.s | 103 + arm9/modules/05/asm/module_05.s | 31453 --------------------------------- 36 files changed, 31703 insertions(+), 31454 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E8648.s create mode 100644 arm9/modules/05/asm/mod05_021E8860.s create mode 100644 arm9/modules/05/asm/mod05_021E88E8.s create mode 100644 arm9/modules/05/asm/mod05_021EC458.s create mode 100644 arm9/modules/05/asm/mod05_021ED9C0.s create mode 100644 arm9/modules/05/asm/mod05_021EDB70.s create mode 100644 arm9/modules/05/asm/mod05_021EDE34.s create mode 100644 arm9/modules/05/asm/mod05_021EFA9C.s create mode 100644 arm9/modules/05/asm/mod05_021EFBF8.s create mode 100644 arm9/modules/05/asm/mod05_021F0318.s create mode 100644 arm9/modules/05/asm/mod05_021F0514.s create mode 100644 arm9/modules/05/asm/mod05_021F1B0C.s create mode 100644 arm9/modules/05/asm/mod05_021F1CB8.s create mode 100644 arm9/modules/05/asm/mod05_021F1F04.s create mode 100644 arm9/modules/05/asm/mod05_021F3780.s create mode 100644 arm9/modules/05/asm/mod05_021F3854.s create mode 100644 arm9/modules/05/asm/mod05_021F38CC.s create mode 100644 arm9/modules/05/asm/mod05_021F3BC0.s create mode 100644 arm9/modules/05/asm/mod05_021F3C98.s create mode 100644 arm9/modules/05/asm/mod05_021F3FE0.s create mode 100644 arm9/modules/05/asm/mod05_021F445C.s create mode 100644 arm9/modules/05/asm/mod05_021F45B4.s create mode 100644 arm9/modules/05/asm/mod05_021F46C8.s create mode 100644 arm9/modules/05/asm/mod05_021F4968.s create mode 100644 arm9/modules/05/asm/mod05_021F4CF8.s create mode 100644 arm9/modules/05/asm/mod05_021F5268.s create mode 100644 arm9/modules/05/asm/mod05_021F5518.s create mode 100644 arm9/modules/05/asm/mod05_021F5990.s create mode 100644 arm9/modules/05/asm/mod05_021F5B9C.s create mode 100644 arm9/modules/05/asm/mod05_021F5C44.s create mode 100644 arm9/modules/05/asm/mod05_021F61DC.s create mode 100644 arm9/modules/05/asm/mod05_021F61F4.s create mode 100644 arm9/modules/05/asm/mod05_021F6360.s delete mode 100644 arm9/modules/05/asm/module_05.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index eb02cf99..e8f534d0 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -701,7 +701,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 diff --git a/arm9/global.inc b/arm9/global.inc index 9b994394..8658cca9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6547,6 +6547,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 +6598,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 +6617,7 @@ .extern MOD05_021EF5E0 .extern MOD05_021EF5FC .extern MOD05_021EF604 +.extern MOD05_021EF618 .extern MOD05_021EF620 .extern MOD05_021EF654 .extern MOD05_021EF824 @@ -6631,16 +6638,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 +6677,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 +6723,7 @@ .extern MOD05_021F4C74 .extern MOD05_021F4C88 .extern MOD05_021F4C9C +.extern MOD05_021F4CA8 .extern MOD05_021F4CBC .extern MOD05_021F4CD4 .extern MOD05_021F4CE4 @@ -6715,6 +6759,7 @@ .extern MOD05_021F5A5C .extern MOD05_021F5A74 .extern MOD05_021F5A90 +.extern MOD05_021F5AA4 .extern MOD05_021F5AB8 .extern MOD05_021F5AE4 .extern MOD05_021F5B9C @@ -8207,9 +8252,17 @@ .extern TP_WaitBusy .extern TP_WaitRawResult .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/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..f749c0e8 --- /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 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 diff --git a/arm9/modules/05/asm/mod05_021EFBF8.s b/arm9/modules/05/asm/mod05_021EFBF8.s new file mode 100644 index 00000000..3437ee91 --- /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 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 + + .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..15d94fbb --- /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 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 + + .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 -- cgit v1.2.3 From 7ab3252bf751152c746f1f395105d919ffd35600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 8 Aug 2021 19:40:13 +0200 Subject: decompile unk_02008AA4.s --- arm9/asm/unk_02008AA4.s | 428 ------------------------------------------------ arm9/src/unk_02008AA4.c | 257 +++++++++++++++++++++++++++++ arm9/src/unk_0200BB14.c | 60 ++----- 3 files changed, 275 insertions(+), 470 deletions(-) delete mode 100644 arm9/asm/unk_02008AA4.s create mode 100644 arm9/src/unk_02008AA4.c (limited to 'arm9') 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/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c new file mode 100644 index 00000000..2d7fb77d --- /dev/null +++ b/arm9/src/unk_02008AA4.c @@ -0,0 +1,257 @@ +#include "global.h" +#include "unk_02008AA4.h" +#include "GX_vramcnt.h" +#include "heap.h" +#include "unk_0200BB14.h" + +extern u32 FUN_020094F0(u32 param0, s32 param1); +extern u32 FUN_02009C80(u32, u32); +extern u32 FUN_02009544(u32); +extern u32 FUN_02009E54(u32 param0, u32 param1); +extern u32 FUN_02009C5C(u32); +extern u32 FUN_02009574(u32); +extern u32 FUN_0200958C(u32); +extern u32 FUN_020095A4(u32); +extern u32 FUN_020095BC(u32); +extern void FUN_0202134C(void *, u32); +extern void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3); +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, + u32 param9, + u32 param10, + u32 param11, + u32 param12, + u32 param13, + u32 param14) +{ + u32 r7; + u32 st14; + u32 st10; + + u32 stc = 0; + u32 r4 = 0; + u32 st8 = 0; + + 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, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 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_0200BB14.c b/arm9/src/unk_0200BB14.c index 4ed957d6..ac8d048e 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -2,6 +2,7 @@ #include "unk_0200BB14.h" #include "game_init.h" #include "heap.h" +#include "unk_02008AA4.h" extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); extern void FUN_0201E00C(u32 param0, u32 param1); @@ -18,13 +19,11 @@ extern void FUN_02009EAC(u32 param0, 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); @@ -43,14 +42,6 @@ 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); @@ -63,21 +54,6 @@ extern u32 FUN_02008FEC( 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); @@ -344,7 +320,7 @@ THUMB_FUNC BOOL FUN_0200BD20( 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], @@ -568,7 +544,7 @@ 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, @@ -578,7 +554,7 @@ THUMB_FUNC u32 FUN_0200C124(u32 *param0, 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, @@ -732,22 +708,22 @@ THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2) return FUN_02009E88(FUN_020094F0(param0[4], param1), param2); } -THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1) +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); } @@ -796,8 +772,8 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0, u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); if (r5 != 0) { - u32 r4 = FUN_0200C474(param1->unk24[param5], r5); - GF_ASSERT(r4 == 1); + BOOL r4 = FUN_0200C474(param1->unk24[param5], r5); + GF_ASSERT(r4 == TRUE); return r4; } GF_ASSERT(0); @@ -1085,18 +1061,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 +1080,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); } -- cgit v1.2.3 From 79dc30189483e739d534bb7539729d0ca9d17961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 11 Aug 2021 22:51:41 +0200 Subject: decompile unk_02008DEC.s --- arm9/asm/unk_02008DEC.s | 2280 ----------------------------------------------- arm9/src/unk_02008DEC.c | 1141 ++++++++++++++++++++++++ 2 files changed, 1141 insertions(+), 2280 deletions(-) delete mode 100644 arm9/asm/unk_02008DEC.s create mode 100644 arm9/src/unk_02008DEC.c (limited to 'arm9') 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/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c new file mode 100644 index 00000000..49a2ff0c --- /dev/null +++ b/arm9/src/unk_02008DEC.c @@ -0,0 +1,1141 @@ +#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 *, u32); +extern u32 FUN_0201D1F8(u32 *param0); +extern u32 FUN_0201D250(u32 *param0); +extern void FUN_0201D2DC(u32, u32); +extern void FUN_0201D324(u32 param0); +extern u32 FUN_0201D3B0(u32); +extern u32 FUN_0201D3D4(u32, 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(u32, u32); +extern void FUN_0201E1C8(u32); +extern u32 FUN_0201E258(u32, u32); +extern u32 FUN_0201E230(u32); +extern s32 NNS_G2dGetImagePaletteLocation(u32, u32); + +THUMB_FUNC struct UnkStruct1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) +{ + struct UnkStruct1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct1)); + ptr->unk00 = FUN_02020C44(param0, heap_id); + ptr->unk04 = AllocFromHeap(heap_id, param0 * sizeof(struct UnkStruct1_sub)); + memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct1_sub)); + ptr->unk08 = (s32)param0; + ptr->unk0C = 0; + ptr->unk10 = param1; + + return ptr; +} + +THUMB_FUNC void FUN_02008E2C(struct UnkStruct1 *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 UnkStruct1_sub *FUN_02008E6C( + struct UnkStruct1 *param0, struct UnkStruct2 *param1, s32 param2, u32 param3) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 > param2); + GF_ASSERT(param0->unk10 == param1->unk08); + + struct UnkStruct1_sub *st1c = FUN_020097D0(param0); + GF_ASSERT(st1c); + + if (param1->unk0C == 0) + { + struct UnkStruct3 *r6 = &((struct UnkStruct3 *)param1->unk00)[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 UnkStruct4 *r6 = &((struct UnkStruct4 *)param1->unk00)[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 UnkStruct1_sub *FUN_02008F34(struct UnkStruct1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct1_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 UnkStruct1_sub *FUN_02008F90(struct UnkStruct1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + BOOL param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct1_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 UnkStruct1_sub *FUN_02008FEC(struct UnkStruct1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct1_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 UnkStruct1_sub *FUN_0200904C(struct UnkStruct1 *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 UnkStruct1_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 UnkStruct1_sub *FUN_020090AC(struct UnkStruct1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + struct UnkStruct1_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 UnkStruct1 *param0, + struct UnkStruct1_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 UnkStruct1 *param0, + struct UnkStruct1_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 u32 FUN_020091E0(struct UnkStruct1 *param0, + u32 param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + u32 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 u32 FUN_0200923C(struct UnkStruct1 *param0, + u32 param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + u32 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 u32 FUN_02009298(struct UnkStruct1 *param0, + u32 param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + u32 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 u32 FUN_020092F8(struct UnkStruct1 *param0, + u32 param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + u32 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 u32 FUN_02009358(struct UnkStruct1 *param0, + u32 param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + u32 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 u32 FUN_020093A8( + struct UnkStruct1 *param0, struct UnkStruct2 *param1, u32 *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 UnkStruct1 *param0, + struct UnkStruct2 *param1, + s32 param2, + s32 param3, + s32 *param4, + u32 param5) +{ + for (int r5 = param2; r5 < param2 + param3; r5++) + { + u32 r0 = FUN_02008E6C(param0, param1, r5, param5); + + if (param4 != NULL && param4[1] > param4[2]) + { + ((u32 *)param4[0])[param4[2]] = r0; + param4[2]++; + } + } +} + +THUMB_FUNC struct UnkStruct5 *FUN_02009424(u32 param0, u32 param1) +{ + struct UnkStruct5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct5)); + r4->unk00 = AllocFromHeap(param1, param0 * sizeof(u32)); + r4->unk04 = param0; + r4->unk08 = 0; + + return r4; +} + +THUMB_FUNC void FUN_02009448(struct UnkStruct5 *param0) +{ + FreeToHeap(param0->unk00); + FreeToHeap(param0); +} + +THUMB_FUNC u32 FUN_0200945C(struct UnkStruct1 *param0, s32 param1) +{ + GF_ASSERT(param0); + return FUN_02020CB0(param0->unk00, param1); +} + +THUMB_FUNC void FUN_02009474(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + + FUN_02009920(param0); + FUN_02020E1C(param0->unk00, 0); +} + +THUMB_FUNC void FUN_02009490(struct UnkStruct1 *param0, struct UnkStruct1_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 UnkStruct1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + FUN_02009490(param0, ¶m0->unk04[i]); + } + } +} + +THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, u32 param1) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + u32 r0 = FUN_02020E38(param0->unk04[i].unk00); + if (r0 == param1) + { + return ¶m0->unk04[i]; + } + } + } + + return NULL; +} + +THUMB_FUNC s32 FUN_02009530(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + return FUN_02020E38(param0->unk00); +} + +THUMB_FUNC u32 FUN_02009544(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 0); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200955C(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 1); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_02009574(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 2); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200958C(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 3); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095A4(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 4); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095BC(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0->unk04 == 5); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095D4(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC u32 FUN_020095E4(struct UnkStruct1_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 UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 1) + { + return FUN_02009934(param0)[2]; + } + + return 0; +} + +THUMB_FUNC void FUN_02009630(struct UnkStruct1_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 u32 *FUN_02009660(u32 *param0, s32 param1) +{ + return ¶m0[param1 * 4]; +} + +THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct2 *param1, u32 param2) +{ + GF_ASSERT(param1); + + param1->unk08 = param0[0]; + param1->unk0C = 1; + + param1->unk04 = FUN_020099E8((struct UnkStruct4 *)(param0 + 1)); + + void *ptr; + if (param1->unk04 > 0) + { + ptr = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct4)); + } + else + { + ptr = NULL; + } + + param1->unk00 = ptr; + // use volatile to force a reload here + void *r0 = *((void *volatile *)param1); + if (r0 != NULL) + { + memcpy(r0, param0 + 1, param1->unk04 * sizeof(struct UnkStruct4)); + } +} + +THUMB_FUNC void FUN_020096B4(struct UnkStruct2 *param0) +{ + if (param0->unk00) + { + FreeToHeap(param0->unk00); + } + param0->unk00 = NULL; + param0->unk04 = 0; +} + +THUMB_FUNC s32 FUN_020096CC(struct UnkStruct2 *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC u32 FUN_020096DC(struct UnkStruct2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return ((struct UnkStruct3 *)param0->unk00)[param1].unk00; + } + + return ((struct UnkStruct4 *)param0->unk00)[param1].unk0C; +} + +THUMB_FUNC u32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + u32 r6; + if (param0->unk0C == 1) + { + r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk04; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC u32 FUN_0200973C(struct UnkStruct2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + u32 r6; + if (param0->unk0C == 1) + { + r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk08; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC u32 FUN_02009768(struct UnkStruct2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return ((struct UnkStruct3 *)param0->unk00)[param1].unk44; + } + + return ((struct UnkStruct4 *)param0->unk00)[param1].unk10; +} + +THUMB_FUNC u32 FUN_0200979C(struct UnkStruct2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return ((struct UnkStruct3 *)param0->unk00)[param1].unk48; + } + + return ((struct UnkStruct4 *)param0->unk00)[param1].unk14; +} + +THUMB_FUNC struct UnkStruct1_sub *FUN_020097D0(struct UnkStruct1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 == 0) + { + return ¶m0->unk04[i]; + } + } + + return NULL; +} + +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; +}; + +THUMB_FUNC void FUN_020097FC( + struct UnkStruct1_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 UnkStruct1_sub *param0) +{ + if (param0->unk08 != NULL) + { + FreeToHeap(param0->unk08); + } + + param0->unk08 = NULL; +} + +THUMB_FUNC u32 *FUN_02009934(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk08); + + return param0->unk08; +} + +THUMB_FUNC void FUN_0200994C(struct UnkStruct1 *param0, + struct UnkStruct1_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 UnkStruct1 *param0, + struct UnkStruct1_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 UnkStruct1 *param0, + struct UnkStruct1_sub *param1, + u32 param2, + u32 param3, + u32 param4, + u32 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 UnkStruct4 *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 UnkStruct1_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] = FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009A90(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == 0 || FUN_02009A50(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct1_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] = FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D250(st0); +} + +THUMB_FUNC u32 FUN_02009B04(struct UnkStruct1_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] = FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009B44(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == 0 || FUN_02009B04(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009B78(struct UnkStruct1_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] = FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D250(st0); +} + +THUMB_FUNC void FUN_02009BB8(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1)); +} + +THUMB_FUNC void FUN_02009BE8(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param0)); +} + +THUMB_FUNC void FUN_02009C0C(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + FUN_0201D324(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009C30(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != 0) + { + FUN_02009C0C(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + return FUN_0201D3B0(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + GF_ASSERT(param1); + GF_ASSERT(FUN_020095D4(param1) == 2); + + u32 r4 = FUN_02009530(param0); + if (FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]) == 0) + { + FUN_0201D458(FUN_0201D3B0(r4)); + } +} + +THUMB_FUNC void FUN_02009CDC(u32 param0) +{ + GF_ASSERT(param0); + + FUN_0201D4F0(param0); +} + +THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct1_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] = FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E0E4(st0); +} + +THUMB_FUNC void FUN_02009D34(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != 0) + { + GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC u32 FUN_02009D68(struct UnkStruct1_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] = FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E128(st0); +} + +THUMB_FUNC void FUN_02009DAC(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != 0) + { + GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC void FUN_02009DE0(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201E168(FUN_02009530(param0), FUN_0200955C(param0)); +} + +THUMB_FUNC void FUN_02009E04(struct UnkStruct1_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + FUN_0201E1C8(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009E28(struct UnkStruct5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != 0) + { + FUN_02009E04(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009E54(struct UnkStruct1_sub *param0, u32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + u32 r0 = FUN_02009530(param0); + if (param1 != 0) + { + return FUN_0201E258(r0, param1); + } + + return FUN_0201E230(r0); +} + +THUMB_FUNC s32 FUN_02009E88(struct UnkStruct1_sub *param0, u32 param1) +{ + s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1); + if (ret != -1) + { + return ret / 32; + } + + return ret; +} -- cgit v1.2.3 From 8f43e99f05cc2113398bcd40d29a6dfd952cf4ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 11 Aug 2021 23:15:40 +0200 Subject: fix compiler warnings --- arm9/src/unk_02008DEC.c | 102 ++++++++++++++++++++++++------------------------ 1 file changed, 51 insertions(+), 51 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index 49a2ff0c..ad4f9700 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -14,21 +14,21 @@ 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 *, u32); +extern u32 FUN_02020CD4(u32, void *, s32); extern u32 FUN_0201D1F8(u32 *param0); extern u32 FUN_0201D250(u32 *param0); -extern void FUN_0201D2DC(u32, u32); -extern void FUN_0201D324(u32 param0); -extern u32 FUN_0201D3B0(u32); -extern u32 FUN_0201D3D4(u32, u32); +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(u32, u32); -extern void FUN_0201E1C8(u32); -extern u32 FUN_0201E258(u32, u32); -extern u32 FUN_0201E230(u32); +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 UnkStruct1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) @@ -245,8 +245,8 @@ THUMB_FUNC void FUN_02009168(struct UnkStruct1 *param0, FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0); } -THUMB_FUNC u32 FUN_020091E0(struct UnkStruct1 *param0, - u32 param1, +THUMB_FUNC struct UnkStruct1_sub *FUN_020091E0(struct UnkStruct1 *param0, + NARC *param1, u32 param2, u32 param3, s32 param4, @@ -256,7 +256,7 @@ THUMB_FUNC u32 FUN_020091E0(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - u32 r6 = FUN_020097D0(param0); + struct UnkStruct1_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0); @@ -265,8 +265,8 @@ THUMB_FUNC u32 FUN_020091E0(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC u32 FUN_0200923C(struct UnkStruct1 *param0, - u32 param1, +THUMB_FUNC struct UnkStruct1_sub *FUN_0200923C(struct UnkStruct1 *param0, + NARC *param1, u32 param2, u32 param3, s32 param4, @@ -277,7 +277,7 @@ THUMB_FUNC u32 FUN_0200923C(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - u32 r6 = FUN_020097D0(param0); + struct UnkStruct1_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); @@ -286,8 +286,8 @@ THUMB_FUNC u32 FUN_0200923C(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC u32 FUN_02009298(struct UnkStruct1 *param0, - u32 param1, +THUMB_FUNC struct UnkStruct1_sub *FUN_02009298(struct UnkStruct1 *param0, + NARC *param1, u32 param2, u32 param3, s32 param4, @@ -298,7 +298,7 @@ THUMB_FUNC u32 FUN_02009298(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - u32 r6 = FUN_020097D0(param0); + struct UnkStruct1_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0); @@ -307,8 +307,8 @@ THUMB_FUNC u32 FUN_02009298(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC u32 FUN_020092F8(struct UnkStruct1 *param0, - u32 param1, +THUMB_FUNC struct UnkStruct1_sub *FUN_020092F8(struct UnkStruct1 *param0, + NARC *param1, u32 param2, u32 param3, s32 param4, @@ -320,7 +320,7 @@ THUMB_FUNC u32 FUN_020092F8(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - u32 r6 = FUN_020097D0(param0); + struct UnkStruct1_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); @@ -329,8 +329,8 @@ THUMB_FUNC u32 FUN_020092F8(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC u32 FUN_02009358(struct UnkStruct1 *param0, - u32 param1, +THUMB_FUNC struct UnkStruct1_sub *FUN_02009358(struct UnkStruct1 *param0, + NARC *param1, u32 param2, u32 param3, s32 param4, @@ -339,7 +339,7 @@ THUMB_FUNC u32 FUN_02009358(struct UnkStruct1 *param0, { GF_ASSERT(param0); - u32 r6 = FUN_020097D0(param0); + struct UnkStruct1_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, 0); @@ -348,7 +348,7 @@ THUMB_FUNC u32 FUN_02009358(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC u32 FUN_020093A8( +THUMB_FUNC s32 FUN_020093A8( struct UnkStruct1 *param0, struct UnkStruct2 *param1, u32 *param2, u32 param3) { GF_ASSERT(param0); @@ -368,20 +368,20 @@ THUMB_FUNC void FUN_020093DC(struct UnkStruct1 *param0, { for (int r5 = param2; r5 < param2 + param3; r5++) { - u32 r0 = FUN_02008E6C(param0, param1, r5, param5); + struct UnkStruct1_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); if (param4 != NULL && param4[1] > param4[2]) { - ((u32 *)param4[0])[param4[2]] = r0; + ((u32 *)param4[0])[param4[2]] = (u32)r0; param4[2]++; } } } -THUMB_FUNC struct UnkStruct5 *FUN_02009424(u32 param0, u32 param1) +THUMB_FUNC struct UnkStruct5 *FUN_02009424(s32 param0, u32 param1) { struct UnkStruct5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct5)); - r4->unk00 = AllocFromHeap(param1, param0 * sizeof(u32)); + r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct1_sub *)); r4->unk04 = param0; r4->unk08 = 0; @@ -438,7 +438,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, u32 pa { if (param0->unk04[i].unk00 != 0) { - u32 r0 = FUN_02020E38(param0->unk04[i].unk00); + s32 r0 = FUN_02020E38(param0->unk04[i].unk00); if (r0 == param1) { return ¶m0->unk04[i]; @@ -595,7 +595,7 @@ THUMB_FUNC s32 FUN_020096CC(struct UnkStruct2 *param0) return param0->unk04; } -THUMB_FUNC u32 FUN_020096DC(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC s32 FUN_020096DC(struct UnkStruct2 *param0, s32 param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04 > param1); @@ -608,12 +608,12 @@ THUMB_FUNC u32 FUN_020096DC(struct UnkStruct2 *param0, s32 param1) return ((struct UnkStruct4 *)param0->unk00)[param1].unk0C; } -THUMB_FUNC u32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC s32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04 > param1); - u32 r6; + s32 r6; if (param0->unk0C == 1) { r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk04; @@ -623,12 +623,12 @@ THUMB_FUNC u32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) return r6; } -THUMB_FUNC u32 FUN_0200973C(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct2 *param0, s32 param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04 > param1); - u32 r6; + BOOL r6; if (param0->unk0C == 1) { r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk08; @@ -840,10 +840,10 @@ THUMB_FUNC void FUN_02009978(struct UnkStruct1 *param0, THUMB_FUNC void FUN_020099B0(struct UnkStruct1 *param0, struct UnkStruct1_sub *param1, - u32 param2, + NARC *param2, u32 param3, u32 param4, - u32 param5, + s32 param5, u32 param6, u32 param7, u32 param8, @@ -904,7 +904,7 @@ THUMB_FUNC u32 FUN_02009A50(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_02009544(param0); st0[1] = FUN_020095E4(param0); - st0[2] = FUN_02009530(param0); + st0[2] = (u32)FUN_02009530(param0); st0[3] = 0; return FUN_0201D1F8(st0); @@ -916,7 +916,7 @@ THUMB_FUNC void FUN_02009A90(struct UnkStruct5 *param0) for (int i = 0; i < param0->unk04; i++) { - GF_ASSERT(param0->unk00[i] == 0 || FUN_02009A50(param0->unk00[i]) != 0); + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009A50(param0->unk00[i]) != 0); } } @@ -928,7 +928,7 @@ THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_02009544(param0); st0[1] = FUN_020095E4(param0); - st0[2] = FUN_02009530(param0); + st0[2] = (u32)FUN_02009530(param0); st0[3] = 0; return FUN_0201D250(st0); @@ -942,7 +942,7 @@ THUMB_FUNC u32 FUN_02009B04(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_02009544(param0); st0[1] = FUN_020095E4(param0); - st0[2] = FUN_02009530(param0); + st0[2] = (u32)FUN_02009530(param0); st0[3] = 1; return FUN_0201D1F8(st0); @@ -954,7 +954,7 @@ THUMB_FUNC void FUN_02009B44(struct UnkStruct5 *param0) for (int i = 0; i < param0->unk04; i++) { - GF_ASSERT(param0->unk00[i] == 0 || FUN_02009B04(param0->unk00[i]) != 0); + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009B04(param0->unk00[i]) != 0); } } @@ -966,7 +966,7 @@ THUMB_FUNC u32 FUN_02009B78(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_02009544(param0); st0[1] = FUN_020095E4(param0); - st0[2] = FUN_02009530(param0); + st0[2] = (u32)FUN_02009530(param0); st0[3] = 1; return FUN_0201D250(st0); @@ -1000,7 +1000,7 @@ THUMB_FUNC void FUN_02009C30(struct UnkStruct5 *param0) GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) { - if (param0->unk00[i] != 0) + if (param0->unk00[i] != NULL) { FUN_02009C0C(param0->unk00[i]); } @@ -1022,7 +1022,7 @@ THUMB_FUNC void FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_su GF_ASSERT(param1); GF_ASSERT(FUN_020095D4(param1) == 2); - u32 r4 = FUN_02009530(param0); + s32 r4 = FUN_02009530(param0); if (FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]) == 0) { FUN_0201D458(FUN_0201D3B0(r4)); @@ -1044,7 +1044,7 @@ THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_0200955C(param0); st0[1] = FUN_020095E4(param0); - st0[3] = FUN_02009530(param0); + st0[3] = (u32)FUN_02009530(param0); st0[2] = FUN_02009610(param0); return FUN_0201E0E4(st0); @@ -1055,7 +1055,7 @@ THUMB_FUNC void FUN_02009D34(struct UnkStruct5 *param0) GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) { - if (param0->unk00[i] != 0) + if (param0->unk00[i] != NULL) { GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0); } @@ -1070,7 +1070,7 @@ THUMB_FUNC u32 FUN_02009D68(struct UnkStruct1_sub *param0) u32 st0[4]; st0[0] = FUN_0200955C(param0); st0[1] = FUN_020095E4(param0); - st0[3] = FUN_02009530(param0); + st0[3] = (u32)FUN_02009530(param0); st0[2] = FUN_02009610(param0); return FUN_0201E128(st0); @@ -1081,7 +1081,7 @@ THUMB_FUNC void FUN_02009DAC(struct UnkStruct5 *param0) GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) { - if (param0->unk00[i] != 0) + if (param0->unk00[i] != NULL) { GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0); } @@ -1108,7 +1108,7 @@ THUMB_FUNC void FUN_02009E28(struct UnkStruct5 *param0) GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) { - if (param0->unk00[i] != 0) + if (param0->unk00[i] != NULL) { FUN_02009E04(param0->unk00[i]); } @@ -1120,7 +1120,7 @@ THUMB_FUNC u32 FUN_02009E54(struct UnkStruct1_sub *param0, u32 param1) GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 1); - u32 r0 = FUN_02009530(param0); + s32 r0 = FUN_02009530(param0); if (param1 != 0) { return FUN_0201E258(r0, param1); -- cgit v1.2.3 From e3766102b2132d09de4368f0be4f3898c263c9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 12 Aug 2021 00:32:06 +0200 Subject: remove externs and cleanup some dependent code --- arm9/src/unk_02008AA4.c | 46 +++++------- arm9/src/unk_02008DEC.c | 43 +++-------- arm9/src/unk_0200BB14.c | 196 ++++++++++++++++++++---------------------------- 3 files changed, 110 insertions(+), 175 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c index 2d7fb77d..4ddb6995 100644 --- a/arm9/src/unk_02008AA4.c +++ b/arm9/src/unk_02008AA4.c @@ -3,16 +3,8 @@ #include "GX_vramcnt.h" #include "heap.h" #include "unk_0200BB14.h" +#include "unk_02008DEC.h" -extern u32 FUN_020094F0(u32 param0, s32 param1); -extern u32 FUN_02009C80(u32, u32); -extern u32 FUN_02009544(u32); -extern u32 FUN_02009E54(u32 param0, u32 param1); -extern u32 FUN_02009C5C(u32); -extern u32 FUN_02009574(u32); -extern u32 FUN_0200958C(u32); -extern u32 FUN_020095A4(u32); -extern u32 FUN_020095BC(u32); extern void FUN_0202134C(void *, u32); extern void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3); extern u32 FUN_0201FCB0(u32 *); @@ -29,20 +21,20 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, s32 param6, u32 param7, u32 param8, - u32 param9, - u32 param10, - u32 param11, - u32 param12, - u32 param13, - u32 param14) + struct UnkStruct1 *param9, + struct UnkStruct1 *param10, + struct UnkStruct1 *param11, + struct UnkStruct1 *param12, + struct UnkStruct1 *param13, + struct UnkStruct1 *param14) { - u32 r7; - u32 st14; - u32 st10; + struct UnkStruct1_sub *r7; + struct UnkStruct1_sub *st14; + struct UnkStruct1_sub *st10; - u32 stc = 0; - u32 r4 = 0; - u32 st8 = 0; + struct UnkStruct1_sub *stc = NULL; + struct UnkStruct1_sub *r4 = NULL; + struct UnkStruct1_sub *st8 = NULL; GF_ASSERT(param9); GF_ASSERT(param10); @@ -124,12 +116,12 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, u32 param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7) + struct UnkStruct1 *param2, + struct UnkStruct1 *param3, + struct UnkStruct1 *param4, + struct UnkStruct1 *param5, + struct UnkStruct1 *param6, + struct UnkStruct1 *param7) { s32 r4 = 0; diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index ad4f9700..76e32b63 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -349,7 +349,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02009358(struct UnkStruct1 *param0, } THUMB_FUNC s32 FUN_020093A8( - struct UnkStruct1 *param0, struct UnkStruct2 *param1, u32 *param2, u32 param3) + struct UnkStruct1 *param0, struct UnkStruct2 *param1, struct UnkStruct5 *param2, u32 param3) { GF_ASSERT(param0); GF_ASSERT(param1); @@ -363,17 +363,17 @@ THUMB_FUNC void FUN_020093DC(struct UnkStruct1 *param0, struct UnkStruct2 *param1, s32 param2, s32 param3, - s32 *param4, + struct UnkStruct5 *param4, u32 param5) { for (int r5 = param2; r5 < param2 + param3; r5++) { struct UnkStruct1_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); - if (param4 != NULL && param4[1] > param4[2]) + if (param4 != NULL && param4->unk04 > param4->unk08) { - ((u32 *)param4[0])[param4[2]] = (u32)r0; - param4[2]++; + param4->unk00[param4->unk08] = r0; + param4->unk08++; } } } @@ -430,7 +430,7 @@ THUMB_FUNC void FUN_020094C4(struct UnkStruct1 *param0) } } -THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, u32 param1) +THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, s32 param1) { GF_ASSERT(param0); @@ -545,9 +545,9 @@ THUMB_FUNC u32 FUN_0200965C(void) return 16; } -THUMB_FUNC u32 *FUN_02009660(u32 *param0, s32 param1) +THUMB_FUNC struct UnkStruct2 *FUN_02009660(struct UnkStruct2 *param0, s32 param1) { - return ¶m0[param1 * 4]; + return ¶m0[param1]; } THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct2 *param1, u32 param2) @@ -677,29 +677,6 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020097D0(struct UnkStruct1 *param0) return NULL; } -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; -}; - THUMB_FUNC void FUN_020097FC( struct UnkStruct1_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4) { @@ -1015,7 +992,7 @@ THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct1_sub *param0) return FUN_0201D3B0(FUN_02009530(param0)); } -THUMB_FUNC void FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) +THUMB_FUNC u32 FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -1025,7 +1002,7 @@ THUMB_FUNC void FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_su s32 r4 = FUN_02009530(param0); if (FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]) == 0) { - FUN_0201D458(FUN_0201D3B0(r4)); + return FUN_0201D458(FUN_0201D3B0(r4)); } } diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index ac8d048e..e84b759b 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -3,6 +3,7 @@ #include "game_init.h" #include "heap.h" #include "unk_02008AA4.h" +#include "unk_02008DEC.h" extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); extern void FUN_0201E00C(u32 param0, u32 param1); @@ -24,44 +25,15 @@ extern void FUN_0201FDEC(u32 param0); extern void FUN_02009F80(); extern void FUN_0201C348(); extern void FUN_0201FD58(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_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 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); @@ -91,12 +63,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) { @@ -293,12 +259,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 UnkStruct2 *st18 = FUN_02009660(param1->unk08, i); void *st1c = AllocAndReadFile(param0->unk000, st10[i]); FUN_02009668(st1c, st18, param0->unk000); @@ -313,7 +279,7 @@ THUMB_FUNC BOOL FUN_0200BD20( for (s32 i = 0; i < st14; i++) { - u32 st20 = FUN_02009660(param1->unk08, i); + struct UnkStruct2 *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); } @@ -432,7 +398,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; @@ -462,9 +428,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; } } } @@ -474,9 +440,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) { @@ -485,8 +451,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 UnkStruct1_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); @@ -494,14 +460,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) @@ -511,16 +477,16 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0, return -1; } - u32 r5 = + struct UnkStruct1_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; } @@ -528,9 +494,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) @@ -546,9 +512,9 @@ THUMB_FUNC u8 FUN_0200C0DC(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); @@ -556,9 +522,9 @@ THUMB_FUNC BOOL FUN_0200C124(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); @@ -698,12 +664,12 @@ 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 UnkStruct1 **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 UnkStruct1 **param0, s32 param1, u32 param2) { return FUN_02009E88(FUN_020094F0(param0[4], param1), param2); } @@ -752,15 +718,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) { @@ -769,25 +735,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 UnkStruct1_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { 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 UnkStruct5 *param0, struct UnkStruct1_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; } } @@ -795,19 +761,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 UnkStruct1 *param0, struct UnkStruct5 *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; } @@ -817,20 +783,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 UnkStruct1 *param0, struct UnkStruct5 *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; } @@ -840,20 +806,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 UnkStruct1 *param0, struct UnkStruct5 *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; } @@ -1205,9 +1171,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) { @@ -1216,8 +1182,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 UnkStruct1_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); @@ -1225,15 +1191,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) { @@ -1242,8 +1208,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 UnkStruct1_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); @@ -1251,23 +1217,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 UnkStruct1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[3], param5); + struct UnkStruct1_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 UnkStruct1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[4], param5); + struct UnkStruct1_sub *r6 = FUN_020094F0(param1[4], param5); FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]); FUN_02009DE0(r6); -- cgit v1.2.3 From 5ded23bcd3e68fa316c46b37266047ab28d08a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 12 Aug 2021 00:34:18 +0200 Subject: global struct names --- arm9/src/unk_02008AA4.c | 36 ++++---- arm9/src/unk_02008DEC.c | 222 ++++++++++++++++++++++++------------------------ arm9/src/unk_0200BB14.c | 34 ++++---- 3 files changed, 146 insertions(+), 146 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c index 4ddb6995..1cabb887 100644 --- a/arm9/src/unk_02008AA4.c +++ b/arm9/src/unk_02008AA4.c @@ -21,20 +21,20 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, s32 param6, u32 param7, u32 param8, - struct UnkStruct1 *param9, - struct UnkStruct1 *param10, - struct UnkStruct1 *param11, - struct UnkStruct1 *param12, - struct UnkStruct1 *param13, - struct UnkStruct1 *param14) + 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 UnkStruct1_sub *r7; - struct UnkStruct1_sub *st14; - struct UnkStruct1_sub *st10; + struct UnkStruct_02008DEC_sub *r7; + struct UnkStruct_02008DEC_sub *st14; + struct UnkStruct_02008DEC_sub *st10; - struct UnkStruct1_sub *stc = NULL; - struct UnkStruct1_sub *r4 = NULL; - struct UnkStruct1_sub *st8 = NULL; + struct UnkStruct_02008DEC_sub *stc = NULL; + struct UnkStruct_02008DEC_sub *r4 = NULL; + struct UnkStruct_02008DEC_sub *st8 = NULL; GF_ASSERT(param9); GF_ASSERT(param10); @@ -116,12 +116,12 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, u32 param1, - struct UnkStruct1 *param2, - struct UnkStruct1 *param3, - struct UnkStruct1 *param4, - struct UnkStruct1 *param5, - struct UnkStruct1 *param6, - struct UnkStruct1 *param7) + 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; diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index 76e32b63..4467a03d 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -31,12 +31,12 @@ extern u32 FUN_0201E258(s32, u32); extern u32 FUN_0201E230(s32); extern s32 NNS_G2dGetImagePaletteLocation(u32, u32); -THUMB_FUNC struct UnkStruct1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) +THUMB_FUNC struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) { - struct UnkStruct1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct1)); + 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 UnkStruct1_sub)); - memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct1_sub)); + 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; @@ -44,7 +44,7 @@ THUMB_FUNC struct UnkStruct1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) return ptr; } -THUMB_FUNC void FUN_02008E2C(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0) { GF_ASSERT(param0); GF_ASSERT(param0->unk00); @@ -61,20 +61,20 @@ THUMB_FUNC void FUN_02008E2C(struct UnkStruct1 *param0) FreeToHeap(param0); } -THUMB_FUNC struct UnkStruct1_sub *FUN_02008E6C( - struct UnkStruct1 *param0, struct UnkStruct2 *param1, s32 param2, u32 param3) +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 UnkStruct1_sub *st1c = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *st1c = FUN_020097D0(param0); GF_ASSERT(st1c); if (param1->unk0C == 0) { - struct UnkStruct3 *r6 = &((struct UnkStruct3 *)param1->unk00)[param2]; + struct UnkStruct_02008DEC_3 *r6 = &((struct UnkStruct_02008DEC_3 *)param1->unk00)[param2]; GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1); FUN_0200994C( @@ -82,7 +82,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008E6C( } else { - struct UnkStruct4 *r6 = &((struct UnkStruct4 *)param1->unk00)[param2]; + struct UnkStruct_02008DEC_4 *r6 = &((struct UnkStruct_02008DEC_4 *)param1->unk00)[param2]; GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1); FUN_02009978(param0, @@ -103,7 +103,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008E6C( return st1c; } -THUMB_FUNC struct UnkStruct1_sub *FUN_02008F34(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0, NarcId param1, s32 param2, BOOL param3, @@ -114,7 +114,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008F34(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, FALSE); @@ -123,7 +123,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008F34(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_02008F90(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0, NarcId param1, s32 param2, BOOL param3, @@ -135,7 +135,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008F90(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); @@ -144,7 +144,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008F90(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_02008FEC(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0, NarcId param1, s32 param2, BOOL param3, @@ -156,7 +156,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008FEC(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, FALSE); @@ -165,7 +165,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02008FEC(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_0200904C(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0, NarcId param1, s32 param2, BOOL param3, @@ -178,7 +178,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_0200904C(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); @@ -187,7 +187,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_0200904C(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_020090AC(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0, NarcId param1, s32 param2, BOOL param3, @@ -197,7 +197,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020090AC(struct UnkStruct1 *param0, { GF_ASSERT(param0); - struct UnkStruct1_sub *r6 = FUN_020097D0(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); @@ -206,8 +206,8 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020090AC(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC void FUN_020090FC(struct UnkStruct1 *param0, - struct UnkStruct1_sub *param1, +THUMB_FUNC void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, NarcId param2, s32 param3, BOOL param4, @@ -225,8 +225,8 @@ THUMB_FUNC void FUN_020090FC(struct UnkStruct1 *param0, FUN_02009978(param0, param1, param2, param3, param4, r6, r7, 0, 0, param5, FALSE); } -THUMB_FUNC void FUN_02009168(struct UnkStruct1 *param0, - struct UnkStruct1_sub *param1, +THUMB_FUNC void FUN_02009168(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, NarcId param2, s32 param3, BOOL param4, @@ -245,7 +245,7 @@ THUMB_FUNC void FUN_02009168(struct UnkStruct1 *param0, FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0); } -THUMB_FUNC struct UnkStruct1_sub *FUN_020091E0(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0, NARC *param1, u32 param2, u32 param3, @@ -256,7 +256,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020091E0(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0); @@ -265,7 +265,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020091E0(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_0200923C(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0, NARC *param1, u32 param2, u32 param3, @@ -277,7 +277,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_0200923C(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 0); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); @@ -286,7 +286,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_0200923C(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_02009298(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0, NARC *param1, u32 param2, u32 param3, @@ -298,7 +298,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02009298(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0); @@ -307,7 +307,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02009298(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_020092F8(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0, NARC *param1, u32 param2, u32 param3, @@ -320,7 +320,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020092F8(struct UnkStruct1 *param0, GF_ASSERT(param0); GF_ASSERT(param0->unk10 == 1); - struct UnkStruct1_sub *r6 = FUN_020097D0(param0); + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); GF_ASSERT(r6); FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); @@ -329,7 +329,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020092F8(struct UnkStruct1 *param0, return r6; } -THUMB_FUNC struct UnkStruct1_sub *FUN_02009358(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0, NARC *param1, u32 param2, u32 param3, @@ -339,7 +339,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02009358(struct UnkStruct1 *param0, { GF_ASSERT(param0); - struct UnkStruct1_sub *r6 = FUN_020097D0(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); @@ -349,7 +349,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_02009358(struct UnkStruct1 *param0, } THUMB_FUNC s32 FUN_020093A8( - struct UnkStruct1 *param0, struct UnkStruct2 *param1, struct UnkStruct5 *param2, u32 param3) + struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, struct UnkStruct_02008DEC_5 *param2, u32 param3) { GF_ASSERT(param0); GF_ASSERT(param1); @@ -359,16 +359,16 @@ THUMB_FUNC s32 FUN_020093A8( return param1->unk04; } -THUMB_FUNC void FUN_020093DC(struct UnkStruct1 *param0, - struct UnkStruct2 *param1, +THUMB_FUNC void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, s32 param2, s32 param3, - struct UnkStruct5 *param4, + struct UnkStruct_02008DEC_5 *param4, u32 param5) { for (int r5 = param2; r5 < param2 + param3; r5++) { - struct UnkStruct1_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); + struct UnkStruct_02008DEC_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); if (param4 != NULL && param4->unk04 > param4->unk08) { @@ -378,29 +378,29 @@ THUMB_FUNC void FUN_020093DC(struct UnkStruct1 *param0, } } -THUMB_FUNC struct UnkStruct5 *FUN_02009424(s32 param0, u32 param1) +THUMB_FUNC struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1) { - struct UnkStruct5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct5)); - r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct1_sub *)); + 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 UnkStruct5 *param0) +THUMB_FUNC void FUN_02009448(struct UnkStruct_02008DEC_5 *param0) { FreeToHeap(param0->unk00); FreeToHeap(param0); } -THUMB_FUNC u32 FUN_0200945C(struct UnkStruct1 *param0, s32 param1) +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 UnkStruct1_sub *param0) +THUMB_FUNC void FUN_02009474(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); @@ -408,7 +408,7 @@ THUMB_FUNC void FUN_02009474(struct UnkStruct1_sub *param0) FUN_02020E1C(param0->unk00, 0); } -THUMB_FUNC void FUN_02009490(struct UnkStruct1 *param0, struct UnkStruct1_sub *param1) +THUMB_FUNC void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04); @@ -419,7 +419,7 @@ THUMB_FUNC void FUN_02009490(struct UnkStruct1 *param0, struct UnkStruct1_sub *p param0->unk0C--; } -THUMB_FUNC void FUN_020094C4(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0) { for (int i = 0; i < param0->unk08; i++) { @@ -430,7 +430,7 @@ THUMB_FUNC void FUN_020094C4(struct UnkStruct1 *param0) } } -THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, s32 param1) +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1) { GF_ASSERT(param0); @@ -449,56 +449,56 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020094F0(struct UnkStruct1 *param0, s32 pa return NULL; } -THUMB_FUNC s32 FUN_02009530(struct UnkStruct1_sub *param0) +THUMB_FUNC s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); return FUN_02020E38(param0->unk00); } -THUMB_FUNC u32 FUN_02009544(struct UnkStruct1_sub *param0) +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 UnkStruct1_sub *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 UnkStruct1_sub *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 UnkStruct1_sub *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 UnkStruct1_sub *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 UnkStruct1_sub *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 UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); return param0->unk04; } -THUMB_FUNC u32 FUN_020095E4(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); @@ -514,7 +514,7 @@ THUMB_FUNC u32 FUN_020095E4(struct UnkStruct1_sub *param0) return 0; } -THUMB_FUNC u32 FUN_02009610(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); @@ -526,7 +526,7 @@ THUMB_FUNC u32 FUN_02009610(struct UnkStruct1_sub *param0) return 0; } -THUMB_FUNC void FUN_02009630(struct UnkStruct1_sub *param0, u32 param1) +THUMB_FUNC void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1) { GF_ASSERT(param0); @@ -545,24 +545,24 @@ THUMB_FUNC u32 FUN_0200965C(void) return 16; } -THUMB_FUNC struct UnkStruct2 *FUN_02009660(struct UnkStruct2 *param0, s32 param1) +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 UnkStruct2 *param1, u32 param2) +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 UnkStruct4 *)(param0 + 1)); + param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1)); void *ptr; if (param1->unk04 > 0) { - ptr = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct4)); + ptr = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); } else { @@ -574,11 +574,11 @@ THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct2 *param1, u32 param2) void *r0 = *((void *volatile *)param1); if (r0 != NULL) { - memcpy(r0, param0 + 1, param1->unk04 * sizeof(struct UnkStruct4)); + memcpy(r0, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); } } -THUMB_FUNC void FUN_020096B4(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0) { if (param0->unk00) { @@ -588,27 +588,27 @@ THUMB_FUNC void FUN_020096B4(struct UnkStruct2 *param0) param0->unk04 = 0; } -THUMB_FUNC s32 FUN_020096CC(struct UnkStruct2 *param0) +THUMB_FUNC s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0) { GF_ASSERT(param0); return param0->unk04; } -THUMB_FUNC s32 FUN_020096DC(struct UnkStruct2 *param0, s32 param1) +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 ((struct UnkStruct3 *)param0->unk00)[param1].unk00; + return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk00; } - return ((struct UnkStruct4 *)param0->unk00)[param1].unk0C; + return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk0C; } -THUMB_FUNC s32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04 > param1); @@ -616,14 +616,14 @@ THUMB_FUNC s32 FUN_02009710(struct UnkStruct2 *param0, s32 param1) s32 r6; if (param0->unk0C == 1) { - r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk04; + r6 = ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk04; } // oops, UB here return r6; } -THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1) { GF_ASSERT(param0); GF_ASSERT(param0->unk04 > param1); @@ -631,40 +631,40 @@ THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct2 *param0, s32 param1) BOOL r6; if (param0->unk0C == 1) { - r6 = ((struct UnkStruct4 *)param0->unk00)[param1].unk08; + r6 = ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk08; } // oops, UB here return r6; } -THUMB_FUNC u32 FUN_02009768(struct UnkStruct2 *param0, s32 param1) +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 ((struct UnkStruct3 *)param0->unk00)[param1].unk44; + return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk44; } - return ((struct UnkStruct4 *)param0->unk00)[param1].unk10; + return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk10; } -THUMB_FUNC u32 FUN_0200979C(struct UnkStruct2 *param0, s32 param1) +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 ((struct UnkStruct3 *)param0->unk00)[param1].unk48; + return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk48; } - return ((struct UnkStruct4 *)param0->unk00)[param1].unk14; + return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk14; } -THUMB_FUNC struct UnkStruct1_sub *FUN_020097D0(struct UnkStruct1 *param0) +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0) { for (int i = 0; i < param0->unk08; i++) { @@ -678,7 +678,7 @@ THUMB_FUNC struct UnkStruct1_sub *FUN_020097D0(struct UnkStruct1 *param0) } THUMB_FUNC void FUN_020097FC( - struct UnkStruct1_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4) + struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4) { void *r0 = FUN_02020E0C(param0->unk00); @@ -764,7 +764,7 @@ THUMB_FUNC void *FUN_02009904(void *param0, u32 param1) return ptr; } -THUMB_FUNC void FUN_02009920(struct UnkStruct1_sub *param0) +THUMB_FUNC void FUN_02009920(struct UnkStruct_02008DEC_sub *param0) { if (param0->unk08 != NULL) { @@ -774,7 +774,7 @@ THUMB_FUNC void FUN_02009920(struct UnkStruct1_sub *param0) param0->unk08 = NULL; } -THUMB_FUNC u32 *FUN_02009934(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(param0->unk08); @@ -782,8 +782,8 @@ THUMB_FUNC u32 *FUN_02009934(struct UnkStruct1_sub *param0) return param0->unk08; } -THUMB_FUNC void FUN_0200994C(struct UnkStruct1 *param0, - struct UnkStruct1_sub *param1, +THUMB_FUNC void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, void *param2, s32 param3, u32 param4, @@ -796,8 +796,8 @@ THUMB_FUNC void FUN_0200994C(struct UnkStruct1 *param0, FUN_020097FC(param1, param6, param4, param5, param7); } -THUMB_FUNC void FUN_02009978(struct UnkStruct1 *param0, - struct UnkStruct1_sub *param1, +THUMB_FUNC void FUN_02009978(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, NarcId param2, s32 param3, BOOL param4, @@ -815,8 +815,8 @@ THUMB_FUNC void FUN_02009978(struct UnkStruct1 *param0, FUN_020097FC(param1, param8, param6, param7, param9); } -THUMB_FUNC void FUN_020099B0(struct UnkStruct1 *param0, - struct UnkStruct1_sub *param1, +THUMB_FUNC void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, NARC *param2, u32 param3, u32 param4, @@ -834,7 +834,7 @@ THUMB_FUNC void FUN_020099B0(struct UnkStruct1 *param0, FUN_020097FC(param1, param8, param6, param7, param9); } -THUMB_FUNC s32 FUN_020099E8(struct UnkStruct4 *param0) +THUMB_FUNC s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0) { s32 r3 = 0; while (param0[r3].unk00 != -2) @@ -873,7 +873,7 @@ THUMB_FUNC void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, return r4; } -THUMB_FUNC u32 FUN_02009A50(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -887,7 +887,7 @@ THUMB_FUNC u32 FUN_02009A50(struct UnkStruct1_sub *param0) return FUN_0201D1F8(st0); } -THUMB_FUNC void FUN_02009A90(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); @@ -897,7 +897,7 @@ THUMB_FUNC void FUN_02009A90(struct UnkStruct5 *param0) } } -THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -911,7 +911,7 @@ THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct1_sub *param0) return FUN_0201D250(st0); } -THUMB_FUNC u32 FUN_02009B04(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -925,7 +925,7 @@ THUMB_FUNC u32 FUN_02009B04(struct UnkStruct1_sub *param0) return FUN_0201D1F8(st0); } -THUMB_FUNC void FUN_02009B44(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); @@ -935,7 +935,7 @@ THUMB_FUNC void FUN_02009B44(struct UnkStruct5 *param0) } } -THUMB_FUNC u32 FUN_02009B78(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -949,7 +949,7 @@ THUMB_FUNC u32 FUN_02009B78(struct UnkStruct1_sub *param0) return FUN_0201D250(st0); } -THUMB_FUNC void FUN_02009BB8(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) +THUMB_FUNC void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) { GF_ASSERT(param0); GF_ASSERT(param1); @@ -957,14 +957,14 @@ THUMB_FUNC void FUN_02009BB8(struct UnkStruct1_sub *param0, struct UnkStruct1_su FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1)); } -THUMB_FUNC void FUN_02009BE8(struct UnkStruct1_sub *param0) +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 UnkStruct1_sub *param0) +THUMB_FUNC void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -972,7 +972,7 @@ THUMB_FUNC void FUN_02009C0C(struct UnkStruct1_sub *param0) FUN_0201D324(FUN_02009530(param0)); } -THUMB_FUNC void FUN_02009C30(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) @@ -984,7 +984,7 @@ THUMB_FUNC void FUN_02009C30(struct UnkStruct5 *param0) } } -THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -992,7 +992,7 @@ THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct1_sub *param0) return FUN_0201D3B0(FUN_02009530(param0)); } -THUMB_FUNC u32 FUN_02009C80(struct UnkStruct1_sub *param0, struct UnkStruct1_sub *param1) +THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 0); @@ -1013,7 +1013,7 @@ THUMB_FUNC void FUN_02009CDC(u32 param0) FUN_0201D4F0(param0); } -THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 1); @@ -1027,7 +1027,7 @@ THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct1_sub *param0) return FUN_0201E0E4(st0); } -THUMB_FUNC void FUN_02009D34(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) @@ -1039,7 +1039,7 @@ THUMB_FUNC void FUN_02009D34(struct UnkStruct5 *param0) } } -THUMB_FUNC u32 FUN_02009D68(struct UnkStruct1_sub *param0) +THUMB_FUNC u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 1); @@ -1053,7 +1053,7 @@ THUMB_FUNC u32 FUN_02009D68(struct UnkStruct1_sub *param0) return FUN_0201E128(st0); } -THUMB_FUNC void FUN_02009DAC(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) @@ -1065,14 +1065,14 @@ THUMB_FUNC void FUN_02009DAC(struct UnkStruct5 *param0) } } -THUMB_FUNC void FUN_02009DE0(struct UnkStruct1_sub *param0) +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 UnkStruct1_sub *param0) +THUMB_FUNC void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 1); @@ -1080,7 +1080,7 @@ THUMB_FUNC void FUN_02009E04(struct UnkStruct1_sub *param0) FUN_0201E1C8(FUN_02009530(param0)); } -THUMB_FUNC void FUN_02009E28(struct UnkStruct5 *param0) +THUMB_FUNC void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0) { GF_ASSERT(param0); for (int i = 0; i < param0->unk04; i++) @@ -1092,7 +1092,7 @@ THUMB_FUNC void FUN_02009E28(struct UnkStruct5 *param0) } } -THUMB_FUNC u32 FUN_02009E54(struct UnkStruct1_sub *param0, u32 param1) +THUMB_FUNC u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1) { GF_ASSERT(param0); GF_ASSERT(FUN_020095D4(param0) == 1); @@ -1106,7 +1106,7 @@ THUMB_FUNC u32 FUN_02009E54(struct UnkStruct1_sub *param0, u32 param1) return FUN_0201E230(r0); } -THUMB_FUNC s32 FUN_02009E88(struct UnkStruct1_sub *param0, u32 param1) +THUMB_FUNC s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1) { s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1); if (ret != -1) diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index e84b759b..95a854d7 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -264,7 +264,7 @@ THUMB_FUNC BOOL FUN_0200BD20( for (s32 i = 0; i < st14; i++) { - struct UnkStruct2 *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); @@ -279,7 +279,7 @@ THUMB_FUNC BOOL FUN_0200BD20( for (s32 i = 0; i < st14; i++) { - struct UnkStruct2 *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); } @@ -451,7 +451,7 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, return FALSE; } - struct UnkStruct1_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); if (r5 != NULL) { FUN_02009B04(r5); @@ -477,7 +477,7 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0, return -1; } - struct UnkStruct1_sub * r5 = + struct UnkStruct_02008DEC_sub * r5 = FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]); if (r5 != NULL) { @@ -664,12 +664,12 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154( return ptr; } -THUMB_FUNC u32 FUN_0200C334(struct UnkStruct1 **param0, s32 param1) +THUMB_FUNC u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1) { return FUN_02009E54(FUN_020094F0(param0[4], param1), 0); } -THUMB_FUNC s32 FUN_0200C344(struct UnkStruct1 **param0, s32 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); } @@ -735,7 +735,7 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0, return FALSE; } - struct UnkStruct1_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); + struct UnkStruct_02008DEC_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); if (r5 != NULL) { BOOL r4 = FUN_0200C474(param1->unk24[param5], r5); @@ -746,7 +746,7 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0, return r5 != NULL ? TRUE : FALSE; } -THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct5 *param0, struct UnkStruct1_sub *param1) +THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1) { for (s32 i = 0; i < param0->unk04; i++) { @@ -761,7 +761,7 @@ THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct5 *param0, struct UnkStruct1_sub *p return FALSE; } -THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct1 *param0, struct UnkStruct5 *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 < param1->unk04; i++) { @@ -783,7 +783,7 @@ THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct1 *param0, struct UnkStruct5 *param return FALSE; } -THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct1 *param0, struct UnkStruct5 *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 < param1->unk04; i++) { @@ -806,7 +806,7 @@ THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct1 *param0, struct UnkStruct5 *param return FALSE; } -THUMB_FUNC BOOL FUN_0200C548(struct UnkStruct1 *param0, struct UnkStruct5 *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 < param1->unk04; i++) { @@ -1182,7 +1182,7 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0, return FALSE; } - struct UnkStruct1_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); if (r5 != NULL) { FUN_02009AC4(r5); @@ -1208,7 +1208,7 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, return FALSE; } - struct UnkStruct1_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); if (r5 != NULL) { FUN_02009B78(r5); @@ -1222,18 +1222,18 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, } THUMB_FUNC void FUN_0200C9D8( - u32 *param0, struct UnkStruct1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - struct UnkStruct1_sub *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, struct UnkStruct1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - struct UnkStruct1_sub *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); -- cgit v1.2.3 From f2c5ab8f4b9a50829f0e9e18f564fb215f749085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 12 Aug 2021 00:40:37 +0200 Subject: fix missing return --- arm9/src/unk_02008DEC.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index 4467a03d..183a9c81 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -1000,10 +1000,14 @@ THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStr GF_ASSERT(FUN_020095D4(param1) == 2); s32 r4 = FUN_02009530(param0); - if (FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]) == 0) + + 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) -- cgit v1.2.3 From 5d38c1e34cf8969153ee50b81a4609fb9507d16e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Aug 2021 19:07:36 -0400 Subject: Use NAIX enums in script_buffers.c --- arm9/src/script_buffers.c | 95 ++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 47 deletions(-) (limited to 'arm9') diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index 1242d550..d7620db5 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -13,6 +13,7 @@ #include "script_buffers.h" #include "unk_02024E64.h" #include "text.h" +#include "msgdata/msg.naix" #pragma thumb on @@ -34,9 +35,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 +138,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 +153,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 +166,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 +192,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 +203,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 +214,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 +225,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 +233,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 +244,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 +255,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 +266,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 +277,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 +288,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 +299,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 +310,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 +321,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 +332,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 +343,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 +354,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 +365,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 +376,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 +393,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 +404,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 +415,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 +426,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 +437,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 +448,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 +459,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 +470,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 +481,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 +492,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 +503,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 +514,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 +539,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 +550,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 +561,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 +593,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 +604,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 +630,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 +642,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 +653,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 +664,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 +675,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 +697,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) -- cgit v1.2.3 From 57351f30edb58f09bba1cab85280e014a5d2e834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 14 Aug 2021 13:16:36 +0200 Subject: fix fakematch --- arm9/src/unk_02008DEC.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index 183a9c81..3050110b 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -559,22 +559,18 @@ THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1)); - void *ptr; if (param1->unk04 > 0) { - ptr = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + param1->unk00 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); } else { - ptr = NULL; + param1->unk00 = NULL; } - param1->unk00 = ptr; - // use volatile to force a reload here - void *r0 = *((void *volatile *)param1); - if (r0 != NULL) + if (param1->unk00 != NULL) { - memcpy(r0, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + memcpy(param1->unk00, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); } } -- cgit v1.2.3 From ee3f5159550b154ea8b5c01b518756638eb5c4a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 14 Aug 2021 13:34:58 +0200 Subject: replace ugly casts with clean union --- arm9/src/unk_02008DEC.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c index 3050110b..2238b920 100644 --- a/arm9/src/unk_02008DEC.c +++ b/arm9/src/unk_02008DEC.c @@ -74,7 +74,7 @@ THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C( if (param1->unk0C == 0) { - struct UnkStruct_02008DEC_3 *r6 = &((struct UnkStruct_02008DEC_3 *)param1->unk00)[param2]; + struct UnkStruct_02008DEC_3 *r6 = ¶m1->unk00_3[param2]; GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1); FUN_0200994C( @@ -82,7 +82,7 @@ THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C( } else { - struct UnkStruct_02008DEC_4 *r6 = &((struct UnkStruct_02008DEC_4 *)param1->unk00)[param2]; + struct UnkStruct_02008DEC_4 *r6 = ¶m1->unk00_4[param2]; GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1); FUN_02009978(param0, @@ -561,26 +561,26 @@ THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u if (param1->unk04 > 0) { - param1->unk00 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + param1->unk00_4 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); } else { - param1->unk00 = NULL; + param1->unk00_4 = NULL; } - if (param1->unk00 != NULL) + if (param1->unk00_4 != NULL) { - memcpy(param1->unk00, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + 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) + if (param0->unk00_4) { - FreeToHeap(param0->unk00); + FreeToHeap(param0->unk00_4); } - param0->unk00 = NULL; + param0->unk00_4 = NULL; param0->unk04 = 0; } @@ -598,10 +598,10 @@ THUMB_FUNC s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1) if (param0->unk0C == 0) { - return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk00; + return param0->unk00_3[param1].unk00; } - return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk0C; + return param0->unk00_4[param1].unk0C; } THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1) @@ -612,7 +612,7 @@ THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1) s32 r6; if (param0->unk0C == 1) { - r6 = ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk04; + r6 = param0->unk00_4[param1].unk04; } // oops, UB here @@ -627,7 +627,7 @@ THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1) BOOL r6; if (param0->unk0C == 1) { - r6 = ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk08; + r6 = param0->unk00_4[param1].unk08; } // oops, UB here @@ -641,10 +641,10 @@ THUMB_FUNC u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1) if (param0->unk0C == 0) { - return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk44; + return param0->unk00_3[param1].unk44; } - return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk10; + return param0->unk00_4[param1].unk10; } THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1) @@ -654,10 +654,10 @@ THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1) if (param0->unk0C == 0) { - return ((struct UnkStruct_02008DEC_3 *)param0->unk00)[param1].unk48; + return param0->unk00_3[param1].unk48; } - return ((struct UnkStruct_02008DEC_4 *)param0->unk00)[param1].unk14; + return param0->unk00_4[param1].unk14; } THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0) -- cgit v1.2.3 From ddd5f58b7ab8efcbd5ad506ec51584f922f90ca1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Aug 2021 09:04:32 -0400 Subject: Fix a bad split --- arm9/asm/unk_0200E850.s | 134 ++++++++++++++++++++++++++++++++++++++++++++++++ arm9/asm/unk_0201137C.s | 134 ------------------------------------------------ 2 files changed, 134 insertions(+), 134 deletions(-) (limited to 'arm9') 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 -- cgit v1.2.3 From 2a568ac2b0bd8b1a8ca6441e8e3af914bffe38ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Aug 2021 16:17:18 -0400 Subject: Decompile unk_02021590 --- arm9/asm/unk_02021590.s | 514 ----------------------------------------- arm9/global.inc | 10 +- arm9/src/communication_error.c | 1 - arm9/src/font.c | 38 +-- arm9/src/render_text.c | 2 +- arm9/src/script_buffers.c | 27 +-- arm9/src/text.c | 39 ++-- arm9/src/unk_02021590.c | 225 ++++++++++++++++++ arm9/src/unk_02021934.c | 9 +- 9 files changed, 289 insertions(+), 576 deletions(-) delete mode 100644 arm9/asm/unk_02021590.s create mode 100644 arm9/src/unk_02021590.c (limited to 'arm9') 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/global.inc b/arm9/global.inc index 8658cca9..2cf762ee 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 0ea26458..73345af1 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -7,7 +7,6 @@ #include "msgdata/msg.naix" #include "text.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); 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/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/script_buffers.c b/arm9/src/script_buffers.c index d7620db5..550dcab5 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -14,6 +14,7 @@ #include "unk_02024E64.h" #include "text.h" #include "msgdata/msg.naix" +#include "graphic/font.naix" #pragma thumb on @@ -747,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++) @@ -760,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/text.c b/arm9/src/text.c index e8c76722..64b3587e 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; @@ -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/unk_02021590.c b/arm9/src/unk_02021590.c new file mode 100644 index 00000000..3ab1a38e --- /dev/null +++ b/arm9/src/unk_02021590.c @@ -0,0 +1,225 @@ +#include "global.h" +#include "heap.h" +#include "filesystem.h" +#include "unk_02021590.h" +#include "unk_0201B8B8.h" +#include "string_util.h" + +void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id); +void InitFontResources(struct FontData *ptr, u32 a1, u32 heap_id); +void FontData_FreeWidthsAndNarc(struct FontData * ptr); +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 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); +int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1); +int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1); + +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++; } } -- cgit v1.2.3 From dc1072ecfc7fb55d7cb256ad1d9e9c6b39bc0b8d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Aug 2021 18:01:25 -0400 Subject: Remove duplicate function declarations --- arm9/src/unk_02021590.c | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02021590.c b/arm9/src/unk_02021590.c index 3ab1a38e..e6a3d690 100644 --- a/arm9/src/unk_02021590.c +++ b/arm9/src/unk_02021590.c @@ -5,19 +5,6 @@ #include "unk_0201B8B8.h" #include "string_util.h" -void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id); -void InitFontResources(struct FontData *ptr, u32 a1, u32 heap_id); -void FontData_FreeWidthsAndNarc(struct FontData * ptr); -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 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); -int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1); -int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1); - static const u8 sGlyphShapes[][2] = { { 0, 1 }, { 2, 3 }, -- cgit v1.2.3 From 1de157cf027c604a35537ad457bf476eb3068c7c Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 7 Aug 2021 23:39:10 +0100 Subject: start to split mod04 --- arm9/arm9.lsf | 5 +- arm9/global.inc | 21 + arm9/modules/04/asm/arm_04.s | 1727 ------------------- arm9/modules/04/asm/mod04_021D74E0.s | 2323 +++++++++++++++++++++++++ arm9/modules/04/asm/mod04_021D868C.s | 845 +++++++++ arm9/modules/04/asm/mod04_021D8D18.s | 1233 +++++++++++++ arm9/modules/04/asm/mod04_021D9C2C.s | 549 ++++++ arm9/modules/04/asm/thumb_04.s | 3157 ---------------------------------- 8 files changed, 4975 insertions(+), 4885 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021D74E0.s create mode 100644 arm9/modules/04/asm/mod04_021D868C.s create mode 100644 arm9/modules/04/asm/mod04_021D8D18.s create mode 100644 arm9/modules/04/asm/mod04_021D9C2C.s delete mode 100644 arm9/modules/04/asm/thumb_04.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e8f534d0..08253453 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -656,7 +656,10 @@ 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 arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 2cf762ee..09d6fe08 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6109,13 +6109,27 @@ .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_021DAB68 +.extern MOD04_021DAC98 +.extern MOD04_021DAE4C +.extern MOD04_021DB440 +.extern MOD04_021DB4A4 +.extern MOD04_021DB570 +.extern MOD04_021DB608 .extern MOD04_021DCA84 .extern MOD04_021DD6F0 .extern MOD04_021DD718 @@ -6178,9 +6192,11 @@ .extern MOD04_021EB59C .extern MOD04_021EB9A4 .extern MOD04_021EB9D8 +.extern MOD04_021EBAB8 .extern MOD04_021EBAE8 .extern MOD04_021EBB80 .extern MOD04_021EBC60 +.extern MOD04_021EE5F4 .extern MOD04_021EEFA8 .extern MOD04_021EEFFC .extern MOD04_021EF06C @@ -8251,6 +8267,11 @@ .extern TP_SetCalibrateParam .extern TP_WaitBusy .extern TP_WaitRawResult +.extern UNK04_0220BEB4 +.extern UNK04_02210480 +.extern UNK04_02210484 +.extern UNK04_02210488 +.extern UNK04_0221048C .extern UNK05_021F64C8 .extern UNK05_021F8B84 .extern UNK05_021F8B88 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 259f9f52..bbdafb6a 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1510 +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} @@ -60168,197 +58664,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 @@ -63822,38 +62127,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 diff --git a/arm9/modules/04/asm/mod04_021D74E0.s b/arm9/modules/04/asm/mod04_021D74E0.s new file mode 100644 index 00000000..4eba9197 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D74E0.s @@ -0,0 +1,2323 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD04_021D74E0 +MOD04_021D74E0: ; 0x021D74E0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021D7644 ; =UNK04_0220FBC0 + add r4, r1, #0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D74F2 + bl GF_AssertFail +_021D74F2: + ldr r1, _021D7648 ; =0x00001FAC + add r0, r4, #0 + bl AllocFromHeap + ldr r2, _021D7644 ; =UNK04_0220FBC0 + mov r1, #0x1f + str r0, [r2, #4] + add r0, #0x1f + bic r0, r1 + mov r1, #0x1f + lsl r1, r1, #8 + str r0, [r2] + str r5, [r0, r1] + add r3, r1, #0 + ldr r6, [r2] + mov r0, #0 + add r3, #0xc + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x10 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x14 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x44 + str r0, [r6, r3] + ldr r0, [r2] + add r1, #0x54 + str r4, [r0, r1] + ldr r1, _021D764C ; =0x0002B020 + add r0, r4, #0 + bl AllocFromHeap + ldr r2, _021D7644 ; =UNK04_0220FBC0 + ldr r1, _021D7650 ; =0x00001F04 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + mov r2, #0 + ldr r0, [r0, r1] + mov r1, #0x1f + add r0, #0x1f + bic r0, r1 + mov r1, #0x2b + lsl r1, r1, #0xc + bl NNS_FndCreateExpHeapEx + ldr r1, _021D7644 ; =UNK04_0220FBC0 + ldr r3, _021D7654 ; =0x00001F08 + ldr r2, [r1] + str r0, [r2, r3] + add r0, r3, #0 + ldr r4, [r1] + mov r2, #0 + add r0, #0x64 + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + sub r0, r2, #1 + add r4, #0x54 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x38 + str r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x48 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x58 + str r0, [r6, r4] + add r0, r3, #0 + ldr r4, [r1] + add r0, #0x5c + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + mov r0, #1 + add r4, #0x60 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x7a + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x78 + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x79 + strb r2, [r6, r4] + add r2, r3, #0 + ldr r4, [r1] + add r2, #0x70 + str r0, [r4, r2] + add r2, r3, #0 + add r2, #0x74 + ldr r4, [r1] + cmp r5, #0 + str r0, [r4, r2] + beq _021D75FA + ldr r0, [r1] + sub r3, #8 + ldr r0, [r0, r3] + bl FUN_020286EC + bl FUN_02028228 + ldr r2, _021D7644 ; =UNK04_0220FBC0 + ldr r1, _021D7658 ; =0x00001EF0 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + add r1, #0x10 + ldr r0, [r0, r1] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + ldr r1, _021D7644 ; =UNK04_0220FBC0 + ldr r2, [r1] + mov r1, #0x11 + lsl r1, r1, #8 + str r0, [r2, r1] +_021D75FA: + ldr r2, _021D7644 ; =UNK04_0220FBC0 + mov r0, #0 + ldr r3, [r2] + ldr r1, _021D765C ; =0x00001F38 + add r4, r0, #0 + str r0, [r3, r1] + sub r1, #0x20 +_021D7608: + ldr r3, [r2] + add r3, r3, r0 + add r0, r0, #1 + strb r4, [r3, r1] + cmp r0, #0x20 + blt _021D7608 + bl MOD04_021D85B4 + ldr r0, _021D7644 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckHasProfile + cmp r0, #0 + bne _021D762C + mov r0, #1 + pop {r4, r5, r6, pc} +_021D762C: + ldr r0, _021D7644 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckValidConsole + cmp r0, #0 + beq _021D7640 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7640: + mov r0, #2 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D7644: .word UNK04_0220FBC0 +_021D7648: .word 0x00001FAC +_021D764C: .word 0x0002B020 +_021D7650: .word 0x00001F04 +_021D7654: .word 0x00001F08 +_021D7658: .word 0x00001EF0 +_021D765C: .word 0x00001F38 + + thumb_func_start MOD04_021D7660 +MOD04_021D7660: ; 0x021D7660 + push {r3, lr} + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7698 + ldr r0, _021D76A4 ; =0x00001F08 + ldr r0, [r1, r0] + bl NNS_FndDestroyExpHeap + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + ldr r1, _021D76A8 ; =0x00001F54 + ldr r2, [r0] + ldr r0, [r2, r1] + sub r1, #0x50 + ldr r1, [r2, r1] + bl FreeToHeapExplicit + ldr r1, _021D76A0 ; =UNK04_0220FBC0 + ldr r0, _021D76A8 ; =0x00001F54 + ldr r2, [r1] + ldr r1, [r1, #4] + ldr r0, [r2, r0] + bl FreeToHeapExplicit + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0] +_021D7698: + bl MOD04_021DD6F0 + pop {r3, pc} + nop +_021D76A0: .word UNK04_0220FBC0 +_021D76A4: .word 0x00001F08 +_021D76A8: .word 0x00001F54 + + thumb_func_start MOD04_021D76AC +MOD04_021D76AC: ; 0x021D76AC + push {lr} + sub sp, #0x64 + ldr r0, _021D779C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + bhi _021D7794 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C8: ; jump table + .short _021D76D2 - _021D76C8 - 2 ; case 0 + .short _021D7708 - _021D76C8 - 2 ; case 1 + .short _021D7736 - _021D76C8 - 2 ; case 2 + .short _021D7784 - _021D76C8 - 2 ; case 3 + .short _021D778A - _021D76C8 - 2 ; case 4 +_021D76D2: + ldr r0, _021D77A4 ; =MOD04_021D7DA8 + ldr r1, _021D77A8 ; =MOD04_021D7DEC + bl MOD04_021DD968 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D77AC ; =0x00001EF4 + mov r3, #0x14 + add r0, r1, r0 + mov r1, #2 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + ldr r1, _021D779C ; =UNK04_0220FBC0 + ldr r0, _021D77A0 ; =0x00001F44 + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0 + add r0, #0x14 + str r2, [r1, r0] +_021D7708: + bl MOD04_021DDD7C + cmp r0, #0 + beq _021D7730 + bl MOD04_021DDC1C + cmp r0, #4 + bne _021D7724 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #2 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7724: + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7730: + bl MOD04_021DDCE8 + b _021D7794 +_021D7736: + bl MOD04_021D7E18 + cmp r0, #0 + blt _021D7798 + ldr r0, _021D779C ; =UNK04_0220FBC0 + ldr r3, _021D77B0 ; =UNK04_0220BEA0 + ldr r1, [r0] + ldr r0, _021D77B4 ; =UNK04_0220BEAC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r2, [r1, r0] + add r0, r0, #4 + str r2, [sp, #0xc] + mov r2, #0x20 + str r2, [sp, #0x10] + ldr r2, _021D77B8 ; =0x00001EF0 + add r0, r1, r0 + ldr r1, [r1, r2] + ldr r2, _021D77BC ; =0x000029E7 + bl MOD04_021E0374 + add r0, sp, #0x14 + bl OS_GetOwnerInfo + mov r1, #0 + ldr r2, _021D77C0 ; =MOD04_021D7A7C + add r0, sp, #0x18 + add r3, r1, #0 + bl MOD04_021DFE64 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #3 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] +_021D7784: + bl MOD04_021DFF74 + b _021D7794 +_021D778A: + bl MOD04_021DFF74 + add sp, #0x64 + mov r0, #1 + pop {pc} +_021D7794: + bl MOD04_021D7E18 +_021D7798: + add sp, #0x64 + pop {pc} + .align 2, 0 +_021D779C: .word UNK04_0220FBC0 +_021D77A0: .word 0x00001F44 +_021D77A4: .word MOD04_021D7DA8 +_021D77A8: .word MOD04_021D7DEC +_021D77AC: .word 0x00001EF4 +_021D77B0: .word UNK04_0220BEA0 +_021D77B4: .word UNK04_0220BEAC +_021D77B8: .word 0x00001EF0 +_021D77BC: .word 0x000029E7 +_021D77C0: .word MOD04_021D7A7C + + thumb_func_start MOD04_021D77C4 +MOD04_021D77C4: ; 0x021D77C4 + push {r3, r4} + ldr r3, _021D77D8 ; =UNK04_0220FBC0 + ldr r2, _021D77DC ; =0x00001F0C + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D77D8: .word UNK04_0220FBC0 +_021D77DC: .word 0x00001F0C + + thumb_func_start MOD04_021D77E0 +MOD04_021D77E0: ; 0x021D77E0 + ldr r0, _021D77F8 ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D77FC ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #9 + bne _021D77F2 + mov r1, #0xa + str r1, [r2, r0] + bx lr +_021D77F2: + mov r1, #8 + str r1, [r2, r0] + bx lr + .align 2, 0 +_021D77F8: .word UNK04_0220FBC0 +_021D77FC: .word 0x00001F44 + + thumb_func_start MOD04_021D7800 +MOD04_021D7800: ; 0x021D7800 + push {r3, r4, r5, lr} + ldr r2, _021D78EC ; =UNK04_0220FBC0 + ldr r1, _021D78F0 ; =0x00001F44 + ldr r4, [r2] + ldr r3, [r4, r1] + cmp r3, #0xb + bhi _021D78E4 + add r5, r3, r3 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021D781A: ; jump table + .short _021D78E4 - _021D781A - 2 ; case 0 + .short _021D78E4 - _021D781A - 2 ; case 1 + .short _021D78E4 - _021D781A - 2 ; case 2 + .short _021D78E4 - _021D781A - 2 ; case 3 + .short _021D78E4 - _021D781A - 2 ; case 4 + .short _021D7832 - _021D781A - 2 ; case 5 + .short _021D7864 - _021D781A - 2 ; case 6 + .short _021D7886 - _021D781A - 2 ; case 7 + .short _021D78AA - _021D781A - 2 ; case 8 + .short _021D7864 - _021D781A - 2 ; case 9 + .short _021D78C4 - _021D781A - 2 ; case 10 + .short _021D78DE - _021D781A - 2 ; case 11 +_021D7832: + cmp r0, #0 + beq _021D783A + mov r0, #6 + str r0, [r4, r1] +_021D783A: + ldr r0, _021D78EC ; =UNK04_0220FBC0 + ldr r2, _021D78F4 ; =0x00001F48 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #2 + bne _021D78E4 + add r1, r2, #0 + add r1, #0x14 + ldr r1, [r0, r1] + cmp r1, #0 + blt _021D78E4 + add r3, r0, r1 + add r1, r2, #0 + sub r1, #0x30 + ldrb r1, [r3, r1] + cmp r1, #6 + beq _021D78E4 + mov r3, #9 + sub r1, r2, #4 + str r3, [r0, r1] + b _021D78E4 +_021D7864: + cmp r3, #0 + bne _021D786E + bl MOD04_021EA530 + b _021D78E4 +_021D786E: + bl MOD04_021DFA40 + cmp r0, #1 + bne _021D787C + bl MOD04_021D77E0 + b _021D78E4 +_021D787C: + cmp r0, #0 + beq _021D78E4 + bl MOD04_021D77E0 + b _021D78E4 +_021D7886: + mov r0, #1 + add r1, #0x40 + strh r0, [r4, r1] + bl MOD04_021D8058 + ldr r0, _021D78EC ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D78F8 ; =0x00001F68 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D78A0 + mov r1, #1 + b _021D78A2 +_021D78A0: + mov r1, #0 +_021D78A2: + add r0, #0x10 + str r1, [r2, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D78AA: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D78C4: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #3 + pop {r3, r4, r5, pc} +_021D78DE: + bl MOD04_021D7E18 + pop {r3, r4, r5, pc} +_021D78E4: + bl MOD04_021D7F8C + pop {r3, r4, r5, pc} + nop +_021D78EC: .word UNK04_0220FBC0 +_021D78F0: .word 0x00001F44 +_021D78F4: .word 0x00001F48 +_021D78F8: .word 0x00001F68 + + thumb_func_start MOD04_021D78FC +MOD04_021D78FC: ; 0x021D78FC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D790E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D790E: + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7930 + ldr r0, _021D79A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A4 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D792C + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D792C: + mov r0, #1 + pop {r4, r5, r6, pc} +_021D7930: + ldr r0, _021D79A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A8 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7946 + mov r0, #0 + bl MOD04_021EB0FC + cmp r0, #0 + bne _021D794A +_021D7946: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D794A: + ldr r1, _021D79A0 ; =UNK04_0220FBC0 + ldr r0, _021D79AC ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D79B0 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r1, _021D79A0 ; =UNK04_0220FBC0 + ldr r0, _021D79A8 ; =0x00001F4C + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r2, [r1] + lsl r1, r3, #0xc + add r1, r2, r1 + mov r0, #0 + add r2, r4, #4 + bl MOD04_021EB044 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D79A0: .word UNK04_0220FBC0 +_021D79A4: .word 0x00001F0C +_021D79A8: .word 0x00001F4C +_021D79AC: .word 0x00001F78 +_021D79B0: .word 0x00001002 + + thumb_func_start MOD04_021D79B4 +MOD04_021D79B4: ; 0x021D79B4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D79C6 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79C6: + bl MOD04_021DF95C + cmp r0, #0 + beq _021D79D2 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79D2: + ldr r0, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A6C ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D79E8 + mov r0, #1 + bl MOD04_021EB0FC + cmp r0, #0 + bne _021D79EC +_021D79E8: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79EC: + ldr r1, _021D7A68 ; =UNK04_0220FBC0 + ldr r0, _021D7A70 ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D7A74 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r2, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, _021D7A6C ; =0x00001F4C + ldr r3, [r2] + mov r0, #1 + str r0, [r3, r1] + ldr r2, [r2] + lsl r1, r0, #0xc + add r1, r2, r1 + add r2, r4, #4 + bl MOD04_021EB044 + cmp r0, #0 + bne _021D7A4C + ldr r1, _021D7A68 ; =UNK04_0220FBC0 + mov r0, #0 + ldr r2, [r1] + ldr r1, _021D7A6C ; =0x00001F4C + str r0, [r2, r1] + pop {r4, r5, r6, pc} +_021D7A4C: + ldr r0, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A78 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7A62 + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7A62: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D7A68: .word UNK04_0220FBC0 +_021D7A6C: .word 0x00001F4C +_021D7A70: .word 0x00001F78 +_021D7A74: .word 0x00001002 +_021D7A78: .word 0x00001F10 + + thumb_func_start MOD04_021D7A7C +MOD04_021D7A7C: ; 0x021D7A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + add r4, r2, #0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckDirtyFlag + cmp r0, #0 + beq _021D7AB0 + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_ClearDirtyFlag + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020227A0 +_021D7AB0: + cmp r5, #0 + bne _021D7AE8 + ldr r0, _021D7B00 ; =MOD04_021D7B70 + str r4, [sp] + str r0, [sp, #4] + ldr r2, _021D7AF8 ; =UNK04_0220FBC0 + str r4, [sp, #8] + ldr r3, [r2] + ldr r2, _021D7AFC ; =0x00001EF0 + ldr r1, _021D7B04 ; =MOD04_021D7B48 + ldr r2, [r3, r2] + ldr r3, _021D7B08 ; =MOD04_021D7B6C + mov r0, #0 + bl MOD04_021DFDBC + cmp r0, #0 + bne _021D7ADC + mov r0, #1 + bl FUN_020336A0 + add sp, #0xc + pop {r4, r5, pc} +_021D7ADC: + ldr r0, _021D7B0C ; =MOD04_021D7BBC + mov r1, #0 + bl MOD04_021E242C + add sp, #0xc + pop {r4, r5, pc} +_021D7AE8: + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B10 ; =0x00001F44 + str r2, [r1, r0] + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7AF8: .word UNK04_0220FBC0 +_021D7AFC: .word 0x00001EF0 +_021D7B00: .word MOD04_021D7B70 +_021D7B04: .word MOD04_021D7B48 +_021D7B08: .word MOD04_021D7B6C +_021D7B0C: .word MOD04_021D7BBC +_021D7B10: .word 0x00001F44 + + thumb_func_start MOD04_021D7B14 +MOD04_021D7B14: ; 0x021D7B14 + push {r3, lr} + ldr r0, _021D7B3C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7B40 ; =0x00001F70 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7B3A + bl MOD04_021DFA40 + ldr r1, _021D7B3C ; =UNK04_0220FBC0 + mov r3, #0 + ldr r2, [r1] + ldr r0, _021D7B44 ; =0x00001F60 + mvn r3, r3 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0x11 + sub r0, #0x1c + str r2, [r1, r0] +_021D7B3A: + pop {r3, pc} + .align 2, 0 +_021D7B3C: .word UNK04_0220FBC0 +_021D7B40: .word 0x00001F70 +_021D7B44: .word 0x00001F60 + + thumb_func_start MOD04_021D7B48 +MOD04_021D7B48: ; 0x021D7B48 + cmp r0, #0 + bne _021D7B58 + ldr r0, _021D7B64 ; =UNK04_0220FBC0 + mov r2, #4 + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr +_021D7B58: + ldr r0, _021D7B64 ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D7B64: .word UNK04_0220FBC0 +_021D7B68: .word 0x00001F44 + + thumb_func_start MOD04_021D7B6C +MOD04_021D7B6C: ; 0x021D7B6C + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D7B70 +MOD04_021D7B70: ; 0x021D7B70 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + add r4, r1, #0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + add r1, r0, #0 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + ldr r2, [r0] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r0, [r2, r0] + mov r2, #6 + lsl r2, r2, #6 + bl MI_CpuCopy8 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02028664 + pop {r3, r4, r5, pc} + nop +_021D7BB8: .word UNK04_0220FBC0 + + thumb_func_start MOD04_021D7BBC +MOD04_021D7BBC: ; 0x021D7BBC + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D7BC0 +MOD04_021D7BC0: ; 0x021D7BC0 + push {r3, lr} + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #7 + ldr r1, [r0] + ldr r0, _021D7C20 ; =0x00001F44 + str r2, [r1, r0] + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7BDA + mov r2, #1 + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + b _021D7BDE +_021D7BDA: + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #0 +_021D7BDE: + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + str r2, [r1, r0] + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + lsl r2, r2, #0xc + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EAE38 + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + ldr r0, [r1, r0] + ldr r1, _021D7C28 ; =0x00002710 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EACF8 + ldr r1, _021D7C1C ; =UNK04_0220FBC0 + ldr r0, _021D7C2C ; =0x00001F70 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #4 + str r3, [r1, r0] + pop {r3, pc} + .align 2, 0 +_021D7C1C: .word UNK04_0220FBC0 +_021D7C20: .word 0x00001F44 +_021D7C24: .word 0x00001F50 +_021D7C28: .word 0x00002710 +_021D7C2C: .word 0x00001F70 + + thumb_func_start MOD04_021D7C30 +MOD04_021D7C30: ; 0x021D7C30 + ldr r1, _021D7C44 ; =UNK04_0220FBC0 + ldr r0, _021D7C48 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x28 + str r3, [r1, r0] + bx lr + nop +_021D7C44: .word UNK04_0220FBC0 +_021D7C48: .word 0x00001F4C + + thumb_func_start MOD04_021D7C4C +MOD04_021D7C4C: ; 0x021D7C4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r4, r1, #0 + ldrb r5, [r4, #1] + ldrb r3, [r4] + str r2, [sp, #4] + lsl r5, r5, #8 + mov ip, r5 + ldrb r5, [r4, #3] + add r7, r3, #0 + ldr r3, _021D7D54 ; =UNK04_0220FBC0 + lsl r6, r5, #0x18 + ldrb r5, [r4, #2] + lsl r5, r5, #0x10 + orr r5, r6 + mov r6, ip + orr r5, r6 + orr r7, r5 + ldr r6, [r3] + ldr r5, _021D7D58 ; =0x00001F70 + mov r3, #1 + str r3, [r6, r5] + lsl r3, r7, #0x18 + lsr r3, r3, #0x18 + cmp r3, #1 + bne _021D7CB4 + mov r0, #1 + add r0, #0xff + tst r0, r7 + beq _021D7C96 + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + add r5, #0xc + ldr r1, [r0] + mov r0, #1 + str r0, [r1, r5] + b _021D7CA0 +_021D7C96: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r1, #0 + ldr r0, [r0] + add r5, #0xc + str r1, [r0, r5] +_021D7CA0: + ldr r3, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, _021D7D5C ; =0x00001F84 + ldr r2, [r3] + mov r0, #0 + strh r0, [r2, r1] + ldrb r6, [r4, #2] + ldr r5, [r3] + sub r2, r1, #3 + strb r6, [r5, r2] + b _021D7CE4 +_021D7CB4: + bl MOD04_021D8A54 + cmp r0, #0 + bne _021D7D4E + mov r0, #1 + lsl r0, r0, #8 + tst r0, r7 + beq _021D7CD4 + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CD4: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CE4: + ldr r5, [r4] + ldr r2, [r3] + add r1, r1, #4 + str r5, [r2, r1] + ldr r1, [sp, #4] + mov r2, #4 + sub r6, r1, #4 + add r1, r6, #0 + bl MOD04_021D7DA8 + add r5, r0, #0 + beq _021D7D4E + add r0, r4, #4 + add r1, r5, #0 + add r2, r6, #0 + bl MI_CpuCopy8 + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7D2A + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D60 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 + b _021D7D44 +_021D7D2A: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D64 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7D44: + mov r0, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD04_021D7DEC +_021D7D4E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7D54: .word UNK04_0220FBC0 +_021D7D58: .word 0x00001F70 +_021D7D5C: .word 0x00001F84 +_021D7D60: .word 0x00001F0C +_021D7D64: .word 0x00001F10 + + thumb_func_start MOD04_021D7D68 +MOD04_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r0, #0 + bne _021D7D9A + bl MOD04_021DF978 + cmp r0, #1 + bne _021D7D9A + ldr r0, _021D7D9C ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D7DA0 ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #6 + bne _021D7D86 + mov r1, #8 + b _021D7D88 +_021D7D86: + mov r1, #0x10 +_021D7D88: + str r1, [r2, r0] + ldr r0, _021D7D9C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7DA4 ; =0x00001F58 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7D9A + bl MOD04_021D8C6C +_021D7D9A: + pop {r3, pc} + .align 2, 0 +_021D7D9C: .word UNK04_0220FBC0 +_021D7DA0: .word 0x00001F44 +_021D7DA4: .word 0x00001F58 + + thumb_func_start MOD04_021D7DA8 +MOD04_021D7DA8: ; 0x021D7DA8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7DE4 ; =UNK04_0220FBC0 + add r2, r6, #0 + ldr r1, [r0] + ldr r0, _021D7DE8 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl NNS_FndAllocFromExpHeapEx + add r5, r0, #0 + bne _021D7DD8 + mov r0, #1 + bl FUN_020336A0 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7DD8: + add r0, r4, #0 + bl OS_RestoreInterrupts + add r0, r5, #0 + pop {r4, r5, r6, pc} + nop +_021D7DE4: .word UNK04_0220FBC0 +_021D7DE8: .word 0x00001F08 + + thumb_func_start MOD04_021D7DEC +MOD04_021D7DEC: ; 0x021D7DEC + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _021D7E0C + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7E10 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7E14 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl NNS_FndFreeToExpHeap + add r0, r4, #0 + bl OS_RestoreInterrupts +_021D7E0C: + pop {r3, r4, r5, pc} + nop +_021D7E10: .word UNK04_0220FBC0 +_021D7E14: .word 0x00001F08 + + thumb_func_start MOD04_021D7E18 +MOD04_021D7E18: ; 0x021D7E18 + push {r4, lr} + sub sp, #8 + add r0, sp, #4 + add r1, sp, #0 + bl MOD04_021DD718 + add r4, r0, #0 + beq _021D7EFA + ldr r0, [sp] + cmp r0, #7 + bhi _021D7EFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E3A: ; jump table + .short _021D7EFA - _021D7E3A - 2 ; case 0 + .short _021D7E4A - _021D7E3A - 2 ; case 1 + .short _021D7EFA - _021D7E3A - 2 ; case 2 + .short _021D7E66 - _021D7E3A - 2 ; case 3 + .short _021D7EFA - _021D7E3A - 2 ; case 4 + .short _021D7EFA - _021D7E3A - 2 ; case 5 + .short _021D7E66 - _021D7E3A - 2 ; case 6 + .short _021D7ECE - _021D7E3A - 2 ; case 7 +_021D7E4A: + bl MOD04_021DD6F0 + cmp r4, #0xa + blt _021D7E58 + add sp, #8 + add r0, r4, #0 + pop {r4, pc} +_021D7E58: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7EFA + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7E66: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7EB2 + ldr r0, _021D7F18 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #0x11 + bhi _021D7EAE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E82: ; jump table + .short _021D7EAA - _021D7E82 - 2 ; case 0 + .short _021D7EAA - _021D7E82 - 2 ; case 1 + .short _021D7EAA - _021D7E82 - 2 ; case 2 + .short _021D7EA6 - _021D7E82 - 2 ; case 3 + .short _021D7EA6 - _021D7E82 - 2 ; case 4 + .short _021D7EA6 - _021D7E82 - 2 ; case 5 + .short _021D7EA6 - _021D7E82 - 2 ; case 6 + .short _021D7EA6 - _021D7E82 - 2 ; case 7 + .short _021D7EA6 - _021D7E82 - 2 ; case 8 + .short _021D7EAE - _021D7E82 - 2 ; case 9 + .short _021D7EAE - _021D7E82 - 2 ; case 10 + .short _021D7EA6 - _021D7E82 - 2 ; case 11 + .short _021D7EAE - _021D7E82 - 2 ; case 12 + .short _021D7EAE - _021D7E82 - 2 ; case 13 + .short _021D7EAE - _021D7E82 - 2 ; case 14 + .short _021D7EA6 - _021D7E82 - 2 ; case 15 + .short _021D7EA6 - _021D7E82 - 2 ; case 16 + .short _021D7EA6 - _021D7E82 - 2 ; case 17 +_021D7EA6: + bl MOD04_021E0200 +_021D7EAA: + bl MOD04_021DDBBC +_021D7EAE: + bl MOD04_021DD6F0 +_021D7EB2: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D7EC0 + ldr r0, _021D7F18 ; =0x00001F44 + mov r1, #0xd + str r1, [r2, r0] +_021D7EC0: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7ECE: + ldr r1, _021D7F14 ; =UNK04_0220FBC0 + ldr r3, [r1] + cmp r3, #0 + beq _021D7EEC + ldr r0, _021D7F18 ; =0x00001F44 + mov r2, #0xe + str r2, [r3, r0] + ldr r1, [r1] + sub r0, #0x30 + ldr r1, [r1, r0] + cmp r1, #0 + beq _021D7EEC + ldr r0, [sp, #4] + neg r0, r0 + blx r1 +_021D7EEC: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7EFA: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F1C ; =0x00001F82 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021D7F0E + mov r0, #1 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7F0E: + mov r0, #0 +_021D7F10: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D7F14: .word UNK04_0220FBC0 +_021D7F18: .word 0x00001F44 +_021D7F1C: .word 0x00001F82 + + thumb_func_start MOD04_021D7F20 +MOD04_021D7F20: ; 0x021D7F20 + push {r3, r4, r5, lr} + ldr r0, _021D7F80 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F84 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7F7E + bl MOD04_021DF95C + mov r1, #1 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EB0FC + cmp r0, #0 + beq _021D7F7E + ldr r4, _021D7F80 ; =UNK04_0220FBC0 + ldr r2, _021D7F84 ; =0x00001F4C + ldr r0, [r4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + ldr r0, [r4] + add r1, #0x2c + ldr r1, [r0, r1] + mov r3, #2 + lsl r1, r1, #8 + add r5, r1, #0 + orr r5, r3 + lsl r1, r3, #0xb + str r5, [r0, r1] + add r0, r2, #4 + ldr r1, [r4] + lsl r2, r3, #0xb + ldr r0, [r1, r0] + add r1, r1, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r2, #4 + bl MOD04_021EB044 + add r0, r4, #0 + ldr r1, [r0] + ldr r0, _021D7F88 ; =0x00001F74 + mov r2, #0 + str r2, [r1, r0] +_021D7F7E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7F80: .word UNK04_0220FBC0 +_021D7F84: .word 0x00001F4C +_021D7F88: .word 0x00001F74 + + thumb_func_start MOD04_021D7F8C +MOD04_021D7F8C: ; 0x021D7F8C + push {r3, r4, r5, lr} + bl MOD04_021DFF74 + bl MOD04_021D83F0 + ldr r0, _021D800C ; =UNK04_0220FBC0 + ldr r1, _021D8010 ; =0x00001F58 + ldr r2, [r0] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D7FC2 + add r0, r1, #0 + add r0, #0x20 + ldr r0, [r2, r0] + cmp r0, #1 + bne _021D7FBA + add r1, #0x24 + ldr r0, [r2, r1] + cmp r0, #1 + bne _021D7FBA + bl MOD04_021D8D04 + b _021D7FBE +_021D7FBA: + bl MOD04_021D8CF0 +_021D7FBE: + bl MOD04_021D8944 +_021D7FC2: + ldr r4, _021D800C ; =UNK04_0220FBC0 + ldr r3, _021D8014 ; =0x00001F44 + ldr r1, [r4] + ldr r0, [r1, r3] + cmp r0, #0x11 + bne _021D7FD2 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7FD2: + cmp r0, #0x10 + bne _021D7FDA + mov r0, #2 + pop {r3, r4, r5, pc} +_021D7FDA: + cmp r0, #7 + bne _021D8004 + add r2, r3, #0 + add r2, #0x30 + add r0, r3, #0 + ldr r2, [r1, r2] + add r0, #0x30 + add r5, r2, #1 + add r2, r3, #0 + ldr r0, [r1, r0] + add r2, #0x30 + str r5, [r1, r2] + cmp r0, #0x78 + blt _021D8004 + ldr r0, [r4] + add r3, #8 + ldr r0, [r0, r3] + cmp r0, #0 + bne _021D8004 + bl MOD04_021D7F20 +_021D8004: + bl MOD04_021D7E18 + pop {r3, r4, r5, pc} + nop +_021D800C: .word UNK04_0220FBC0 +_021D8010: .word 0x00001F58 +_021D8014: .word 0x00001F44 + + thumb_func_start MOD04_021D8018 +MOD04_021D8018: ; 0x021D8018 + push {r3, lr} + ldr r0, _021D803C ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8034 + ldr r0, _021D8040 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #7 + beq _021D802E + cmp r0, #0xf + bne _021D8034 +_021D802E: + bl MOD04_021DF95C + pop {r3, pc} +_021D8034: + mov r0, #0 + mvn r0, r0 + pop {r3, pc} + nop +_021D803C: .word UNK04_0220FBC0 +_021D8040: .word 0x00001F44 + + thumb_func_start MOD04_021D8044 +MOD04_021D8044: ; 0x021D8044 + ldr r0, _021D8050 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D8054 ; =0x00001F58 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8050: .word UNK04_0220FBC0 +_021D8054: .word 0x00001F58 + + thumb_func_start MOD04_021D8058 +MOD04_021D8058: ; 0x021D8058 + push {r3, lr} + ldr r0, _021D80CC ; =UNK04_0220FBC0 + ldr r2, _021D80D0 ; =0x00001F6C + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #5 + bhi _021D80AE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8072: ; jump table + .short _021D80AE - _021D8072 - 2 ; case 0 + .short _021D80AE - _021D8072 - 2 ; case 1 + .short _021D807E - _021D8072 - 2 ; case 2 + .short _021D808A - _021D8072 - 2 ; case 3 + .short _021D8096 - _021D8072 - 2 ; case 4 + .short _021D80A2 - _021D8072 - 2 ; case 5 +_021D807E: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #1 + bl MOD04_021D8A7C + b _021D80B8 +_021D808A: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #2 + bl MOD04_021D8A7C + b _021D80B8 +_021D8096: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #3 + bl MOD04_021D8A7C + b _021D80B8 +_021D80A2: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #4 + bl MOD04_021D8A7C + b _021D80B8 +_021D80AE: + ldr r1, _021D80D4 ; =0x00001F54 + ldr r0, [r0, r1] + mov r1, #4 + bl MOD04_021D8A7C +_021D80B8: + ldr r0, _021D80D8 ; =MOD04_021D8044 + bl MOD04_021D8C58 + ldr r0, _021D80CC ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D80DC ; =0x00001F58 + str r2, [r1, r0] + pop {r3, pc} + nop +_021D80CC: .word UNK04_0220FBC0 +_021D80D0: .word 0x00001F6C +_021D80D4: .word 0x00001F54 +_021D80D8: .word MOD04_021D8044 +_021D80DC: .word 0x00001F58 + + thumb_func_start MOD04_021D80E0 +MOD04_021D80E0: ; 0x021D80E0 + push {r3, r4, r5, lr} + mov r1, #0x64 + add r5, r0, #0 + bl _s32_div_f + mov r1, #0xfa + add r4, r0, #0 + add r0, r5, #0 + lsl r1, r1, #2 + bl _s32_div_f + ldr r2, _021D8270 ; =0x00004E84 + cmp r5, r2 + bne _021D8100 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8100: + add r1, r2, #2 + cmp r5, r1 + blt _021D8110 + add r1, r2, #7 + cmp r5, r1 + bgt _021D8110 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8110: + ldr r1, _021D8274 ; =0x00004E8D + cmp r5, r1 + bne _021D811A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D811A: + add r1, r1, #2 + cmp r5, r1 + blt _021D812A + ldr r1, _021D8278 ; =0x00005207 + cmp r5, r1 + bgt _021D812A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D812A: + ldr r1, _021D827C ; =0x0000CB24 + cmp r5, r1 + blt _021D813A + add r1, #0x5f + cmp r5, r1 + bgt _021D813A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D813A: + ldr r1, _021D8280 ; =0x0000CB88 + cmp r5, r1 + blt _021D814A + add r1, #0x5f + cmp r5, r1 + bgt _021D814A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D814A: + ldr r1, _021D8284 ; =0x0000CBEC + cmp r5, r1 + blt _021D815A + add r1, #0x5f + cmp r5, r1 + bgt _021D815A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D815A: + ldr r1, _021D8288 ; =0x0000020B + cmp r4, r1 + bne _021D8164 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8164: + add r2, r1, #7 + cmp r4, r2 + bne _021D816E + mov r0, #0 + pop {r3, r4, r5, pc} +_021D816E: + add r2, r1, #0 + add r2, #8 + cmp r4, r2 + bne _021D817A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D817A: + add r2, r1, #0 + add r2, #9 + cmp r4, r2 + bne _021D8186 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8186: + ldr r3, _021D828C ; =0x00004E85 + cmp r5, r3 + bne _021D8190 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8190: + cmp r0, #0x17 + bne _021D8198 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8198: + add r2, r3, #7 + cmp r5, r2 + bne _021D81A2 + mov r0, #2 + pop {r3, r4, r5, pc} +_021D81A2: + add r3, #9 + cmp r5, r3 + bne _021D81AC + mov r0, #3 + pop {r3, r4, r5, pc} +_021D81AC: + add r2, r1, #0 + sub r2, #0xb + cmp r4, r2 + bne _021D81B8 + mov r0, #4 + pop {r3, r4, r5, pc} +_021D81B8: + sub r1, #0x17 + cmp r4, r1 + bne _021D81C2 + mov r0, #5 + pop {r3, r4, r5, pc} +_021D81C2: + ldr r1, _021D8290 ; =0x0000C738 + cmp r5, r1 + blt _021D81D2 + add r1, #0x66 + cmp r5, r1 + bgt _021D81D2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81D2: + ldr r1, _021D8294 ; =0x0000C7A0 + cmp r5, r1 + blt _021D81E2 + add r1, #0x5f + cmp r5, r1 + bgt _021D81E2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81E2: + ldr r1, _021D8298 ; =0x00000201 + cmp r4, r1 + bne _021D81EC + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81EC: + ldr r1, _021D829C ; =0x0000C79F + cmp r5, r1 + bne _021D81F6 + mov r0, #7 + pop {r3, r4, r5, pc} +_021D81F6: + ldr r1, _021D82A0 ; =0x0000CB20 + cmp r5, r1 + blt _021D8206 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8206 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8206: + ldr r1, _021D82A4 ; =0x0000CB84 + cmp r5, r1 + blt _021D8216 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8216 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8216: + ldr r1, _021D82A8 ; =0x0000CBE8 + cmp r5, r1 + blt _021D8226 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8226 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8226: + ldr r1, _021D82AC ; =0x00013A2E + cmp r5, r1 + bne _021D8230 + mov r0, #9 + pop {r3, r4, r5, pc} +_021D8230: + cmp r0, #0x18 + bne _021D8238 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8238: + cmp r0, #0x19 + bne _021D8240 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8240: + cmp r0, #0x1f + bne _021D8248 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8248: + cmp r0, #0x36 + bne _021D8250 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8250: + ldr r0, _021D82B0 ; =0x0000EA60 + cmp r5, r0 + blt _021D8260 + ldr r0, _021D82B4 ; =0x0001869F + cmp r5, r0 + bgt _021D8260 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8260: + ldr r0, _021D82B8 ; =0x00002710 + cmp r5, r0 + bge _021D826A + mov r0, #0xb + pop {r3, r4, r5, pc} +_021D826A: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8270: .word 0x00004E84 +_021D8274: .word 0x00004E8D +_021D8278: .word 0x00005207 +_021D827C: .word 0x0000CB24 +_021D8280: .word 0x0000CB88 +_021D8284: .word 0x0000CBEC +_021D8288: .word 0x0000020B +_021D828C: .word 0x00004E85 +_021D8290: .word 0x0000C738 +_021D8294: .word 0x0000C7A0 +_021D8298: .word 0x00000201 +_021D829C: .word 0x0000C79F +_021D82A0: .word 0x0000CB20 +_021D82A4: .word 0x0000CB84 +_021D82A8: .word 0x0000CBE8 +_021D82AC: .word 0x00013A2E +_021D82B0: .word 0x0000EA60 +_021D82B4: .word 0x0001869F +_021D82B8: .word 0x00002710 + + thumb_func_start MOD04_021D82BC +MOD04_021D82BC: ; 0x021D82BC + push {r3, lr} + cmp r0, #0 + bne _021D8346 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + ldr r2, _021D8368 ; =0x00001F44 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #0x11 + bhi _021D835E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D82DA: ; jump table + .short _021D835E - _021D82DA - 2 ; case 0 + .short _021D835E - _021D82DA - 2 ; case 1 + .short _021D835E - _021D82DA - 2 ; case 2 + .short _021D835E - _021D82DA - 2 ; case 3 + .short _021D8342 - _021D82DA - 2 ; case 4 + .short _021D82FE - _021D82DA - 2 ; case 5 + .short _021D835E - _021D82DA - 2 ; case 6 + .short _021D82FE - _021D82DA - 2 ; case 7 + .short _021D835E - _021D82DA - 2 ; case 8 + .short _021D835E - _021D82DA - 2 ; case 9 + .short _021D835E - _021D82DA - 2 ; case 10 + .short _021D835E - _021D82DA - 2 ; case 11 + .short _021D835E - _021D82DA - 2 ; case 12 + .short _021D8342 - _021D82DA - 2 ; case 13 + .short _021D835E - _021D82DA - 2 ; case 14 + .short _021D8328 - _021D82DA - 2 ; case 15 + .short _021D8342 - _021D82DA - 2 ; case 16 + .short _021D8342 - _021D82DA - 2 ; case 17 +_021D82FE: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + beq _021D8316 + bl MOD04_021D8C08 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0xf + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + b _021D835E +_021D8316: + bl MOD04_021DFA40 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8328: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + bne _021D835E + bl MOD04_021DFA40 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8342: + mov r0, #1 + pop {r3, pc} +_021D8346: + ldr r0, _021D8364 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + beq _021D835A + cmp r0, #0x10 + beq _021D835A + cmp r0, #0x11 + bne _021D835E +_021D835A: + mov r0, #1 + pop {r3, pc} +_021D835E: + mov r0, #0 + pop {r3, pc} + nop +_021D8364: .word UNK04_0220FBC0 +_021D8368: .word 0x00001F44 + + thumb_func_start MOD04_021D836C +MOD04_021D836C: ; 0x021D836C + push {r3, r4} + ldr r2, _021D83A0 ; =UNK04_0220FBC0 + ldr r1, _021D83A4 ; =0x00001F44 + ldr r3, [r2] + ldr r0, [r3, r1] + sub r0, #0x10 + cmp r0, #1 + bhi _021D8398 + mov r4, #0 + add r0, r1, #0 + mvn r4, r4 + add r0, #0xc + str r4, [r3, r0] + ldr r0, [r2] + mov r3, #4 + str r3, [r0, r1] + ldr r0, [r2] + add r1, #0x1c + str r4, [r0, r1] + mov r0, #1 + pop {r3, r4} + bx lr +_021D8398: + mov r0, #0 + pop {r3, r4} + bx lr + nop +_021D83A0: .word UNK04_0220FBC0 +_021D83A4: .word 0x00001F44 + + thumb_func_start MOD04_021D83A8 +MOD04_021D83A8: ; 0x021D83A8 + ldr r1, _021D83B8 ; =UNK04_0220FBC0 + ldr r2, [r1] + cmp r2, #0 + beq _021D83B4 + ldr r1, _021D83BC ; =0x00001F14 + str r0, [r2, r1] +_021D83B4: + bx lr + nop +_021D83B8: .word UNK04_0220FBC0 +_021D83BC: .word 0x00001F14 + + thumb_func_start MOD04_021D83C0 +MOD04_021D83C0: ; 0x021D83C0 + push {r3, lr} + bl MOD04_021E0200 + bl MOD04_021DDBBC + bl MOD04_021D8C6C + bl MOD04_021D7660 + pop {r3, pc} + + thumb_func_start MOD04_021D83D4 +MOD04_021D83D4: ; 0x021D83D4 + push {r3, r4} + ldr r3, _021D83E8 ; =UNK04_0220FBC0 + ldr r2, _021D83EC ; =0x00001F38 + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D83E8: .word UNK04_0220FBC0 +_021D83EC: .word 0x00001F38 + + thumb_func_start MOD04_021D83F0 +MOD04_021D83F0: ; 0x021D83F0 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _021D8468 ; =UNK04_0220FBC0 + ldr r0, _021D846C ; =0x00001F38 + ldr r1, [r6] + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8464 + mov r7, #0 +_021D8400: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r2, [r0, r1] + mov r1, #0x1f + add r5, r2, #0 + and r5, r1 + mov r1, #0xc + add r4, r5, #0 + mul r4, r1 + mov r1, #0x11 + lsl r1, r1, #8 + ldr r0, [r0, r1] + add r0, r0, r4 + bl DWC_IsBuddyFriendData + cmp r0, #0 + beq _021D844A + mov r0, #0x11 + ldr r2, [r6] + ldr r1, _021D846C ; =0x00001F38 + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r3, _021D8470 ; =0x00001F3C + ldr r1, [r2, r1] + ldr r2, [r2, r3] + add r0, r0, r4 + add r3, r2, #0 + mul r3, r5 + add r1, r1, r3 + add r2, sp, #0 + bl MOD04_021E2578 + ldr r1, [r6] + add r2, r1, r5 + ldr r1, _021D8474 ; =0x00001F18 + strb r0, [r2, r1] +_021D844A: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r1, [r0, r1] + add r7, r7, #1 + add r2, r1, #1 + mov r1, #0x1f + and r2, r1 + mov r1, #0x7d + lsl r1, r1, #6 + str r2, [r0, r1] + cmp r7, #4 + blt _021D8400 +_021D8464: + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8468: .word UNK04_0220FBC0 +_021D846C: .word 0x00001F38 +_021D8470: .word 0x00001F3C +_021D8474: .word 0x00001F18 + + thumb_func_start MOD04_021D8478 +MOD04_021D8478: ; 0x021D8478 + ldr r3, _021D847C ; =MOD04_021E2454 + bx r3 + .align 2, 0 +_021D847C: .word MOD04_021E2454 + + thumb_func_start MOD04_021D8480 +MOD04_021D8480: ; 0x021D8480 + ldr r1, _021D848C ; =UNK04_0220FBC0 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _021D8490 ; =0x00001F18 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_021D848C: .word UNK04_0220FBC0 +_021D8490: .word 0x00001F18 + + thumb_func_start MOD04_021D8494 +MOD04_021D8494: ; 0x021D8494 + push {r3, lr} + ldr r1, _021D8510 ; =UNK04_0220FBC0 + ldr r3, [r1] + ldr r1, _021D8514 ; =0x00001F44 + ldr r2, [r3, r1] + cmp r2, #4 + beq _021D84A6 + mov r0, #0 + pop {r3, pc} +_021D84A6: + add r1, #0x18 + str r0, [r3, r1] + cmp r0, #0 + bge _021D84C2 + ldr r1, _021D8518 ; =MOD04_021D8558 + mov r2, #0 + ldr r3, _021D851C ; =MOD04_021D85A0 + mov r0, #2 + str r2, [sp] + bl MOD04_021DFD18 + mov r2, #1 + ldr r0, _021D8510 ; =UNK04_0220FBC0 + b _021D84D2 +_021D84C2: + ldr r1, _021D8520 ; =MOD04_021D8590 + mov r2, #0 + ldr r3, _021D851C ; =MOD04_021D85A0 + str r2, [sp] + bl MOD04_021DFB20 + ldr r0, _021D8510 ; =UNK04_0220FBC0 + mov r2, #2 +_021D84D2: + ldr r1, [r0] + ldr r0, _021D8524 ; =0x00001F48 + str r2, [r1, r0] + ldr r0, _021D8510 ; =UNK04_0220FBC0 + mov r2, #5 + ldr r1, [r0] + ldr r0, _021D8514 ; =0x00001F44 + str r2, [r1, r0] + ldr r0, _021D8528 ; =MOD04_021D7C30 + bl MOD04_021EAE18 + ldr r0, _021D852C ; =MOD04_021D7C4C + bl MOD04_021EADF8 + ldr r0, _021D8530 ; =MOD04_021D7D68 + mov r1, #0 + bl MOD04_021DFAF8 + ldr r0, _021D8534 ; =MOD04_021D7B14 + bl MOD04_021EADD8 + ldr r1, _021D8510 ; =UNK04_0220FBC0 + ldr r0, _021D8538 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x3c + str r3, [r1, r0] + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_021D8510: .word UNK04_0220FBC0 +_021D8514: .word 0x00001F44 +_021D8518: .word MOD04_021D8558 +_021D851C: .word MOD04_021D85A0 +_021D8520: .word MOD04_021D8590 +_021D8524: .word 0x00001F48 +_021D8528: .word MOD04_021D7C30 +_021D852C: .word MOD04_021D7C4C +_021D8530: .word MOD04_021D7D68 +_021D8534: .word MOD04_021D7B14 +_021D8538: .word 0x00001F4C + + thumb_func_start MOD04_021D853C +MOD04_021D853C: ; 0x021D853C + ldr r0, _021D8550 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D854A + ldr r0, _021D8554 ; =0x00001F5C + ldr r0, [r1, r0] + bx lr +_021D854A: + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 +_021D8550: .word UNK04_0220FBC0 +_021D8554: .word 0x00001F5C + + thumb_func_start MOD04_021D8558 +MOD04_021D8558: ; 0x021D8558 + push {r3, lr} + cmp r0, #0 + bne _021D8582 + cmp r1, #0 + bne _021D8572 + ldr r0, _021D8584 ; =UNK04_0220FBC0 + ldr r2, [sp, #8] + ldr r1, [r0] + ldr r0, _021D8588 ; =0x00001F5C + str r2, [r1, r0] + bl MOD04_021D7BC0 + pop {r3, pc} +_021D8572: + cmp r2, #0 + bne _021D8582 + ldr r0, _021D8584 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D858C ; =0x00001F60 + mvn r2, r2 + str r2, [r1, r0] +_021D8582: + pop {r3, pc} + .align 2, 0 +_021D8584: .word UNK04_0220FBC0 +_021D8588: .word 0x00001F5C +_021D858C: .word 0x00001F60 + + thumb_func_start MOD04_021D8590 +MOD04_021D8590: ; 0x021D8590 + push {r3, lr} + cmp r0, #0 + bne _021D859E + cmp r1, #0 + bne _021D859E + bl MOD04_021D7BC0 +_021D859E: + pop {r3, pc} + + thumb_func_start MOD04_021D85A0 +MOD04_021D85A0: ; 0x021D85A0 + ldr r1, _021D85AC ; =UNK04_0220FBC0 + ldr r2, [r1] + ldr r1, _021D85B0 ; =0x00001F60 + str r0, [r2, r1] + bx lr + nop +_021D85AC: .word UNK04_0220FBC0 +_021D85B0: .word 0x00001F60 + + thumb_func_start MOD04_021D85B4 +MOD04_021D85B4: ; 0x021D85B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckHasProfile + cmp r0, #0 + bne _021D85D8 + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0xc + bl DWC_CreateExchangeToken + b _021D85E6 +_021D85D8: + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0 + bl DWC_CreateExchangeToken +_021D85E6: + mov r4, #0 + mov r7, #0x11 + ldr r6, _021D8614 ; =UNK04_0220FBC0 + add r5, r4, #0 + lsl r7, r7, #8 +_021D85F0: + mov r0, #0x11 + ldr r1, [r6] + lsl r0, r0, #8 + ldr r0, [r1, r0] + add r0, r0, r5 + bl DWC_GetFriendDataType + ldr r0, [r6] + ldr r0, [r0, r7] + add r0, r0, r5 + bl DWC_IsBuddyFriendData + add r4, r4, #1 + add r5, #0xc + cmp r4, #0x20 + blt _021D85F0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8614: .word UNK04_0220FBC0 +_021D8618: .word 0x00001EF0 + + thumb_func_start MOD04_021D861C +MOD04_021D861C: ; 0x021D861C + ldr r3, _021D8620 ; =MOD04_021D8CC8 + bx r3 + .align 2, 0 +_021D8620: .word MOD04_021D8CC8 + + thumb_func_start MOD04_021D8624 +MOD04_021D8624: ; 0x021D8624 + ldr r0, _021D8638 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8632 + ldr r0, _021D863C ; =0x00001F68 + ldr r0, [r1, r0] + bx lr +_021D8632: + mov r0, #0 + bx lr + nop +_021D8638: .word UNK04_0220FBC0 +_021D863C: .word 0x00001F68 + + thumb_func_start MOD04_021D8640 +MOD04_021D8640: ; 0x021D8640 + ldr r0, _021D8654 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D864E + ldr r0, _021D8658 ; =0x00001F60 + ldr r0, [r1, r0] + bx lr +_021D864E: + mov r0, #0 + bx lr + nop +_021D8654: .word UNK04_0220FBC0 +_021D8658: .word 0x00001F60 + + thumb_func_start MOD04_021D865C +MOD04_021D865C: ; 0x021D865C + ldr r0, _021D8670 ; =UNK04_0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D866C + mov r1, #0 + ldr r0, _021D8674 ; =0x00001F60 + mvn r1, r1 + str r1, [r2, r0] +_021D866C: + bx lr + nop +_021D8670: .word UNK04_0220FBC0 +_021D8674: .word 0x00001F60 + + thumb_func_start MOD04_021D8678 +MOD04_021D8678: ; 0x021D8678 + ldr r1, _021D8684 ; =UNK04_0220FBC0 + ldr r2, [r1] + ldr r1, _021D8688 ; =0x00001F68 + str r0, [r2, r1] + bx lr + nop +_021D8684: .word UNK04_0220FBC0 +_021D8688: .word 0x00001F68 + + .section .bss + + .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" 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..206df265 --- /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 UNK_0220C0D4 +UNK04_0220C0D4: ; 0x0220C0D4 + .asciz "%02d:0000000-00" + + .balign 4, 0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s deleted file mode 100644 index 6f673fe8..00000000 --- a/arm9/modules/04/asm/thumb_04.s +++ /dev/null @@ -1,3157 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD04_021D74E0 -MOD04_021D74E0: ; 0x021D74E0 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _021D7644 ; =UNK04_0220FBC0 - add r4, r1, #0 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D74F2 - bl GF_AssertFail -_021D74F2: - ldr r1, _021D7648 ; =0x00001FAC - add r0, r4, #0 - bl AllocFromHeap - ldr r2, _021D7644 ; =UNK04_0220FBC0 - mov r1, #0x1f - str r0, [r2, #4] - add r0, #0x1f - bic r0, r1 - mov r1, #0x1f - lsl r1, r1, #8 - str r0, [r2] - str r5, [r0, r1] - add r3, r1, #0 - ldr r6, [r2] - mov r0, #0 - add r3, #0xc - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x10 - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x14 - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x44 - str r0, [r6, r3] - ldr r0, [r2] - add r1, #0x54 - str r4, [r0, r1] - ldr r1, _021D764C ; =0x0002B020 - add r0, r4, #0 - bl AllocFromHeap - ldr r2, _021D7644 ; =UNK04_0220FBC0 - ldr r1, _021D7650 ; =0x00001F04 - ldr r3, [r2] - str r0, [r3, r1] - ldr r0, [r2] - mov r2, #0 - ldr r0, [r0, r1] - mov r1, #0x1f - add r0, #0x1f - bic r0, r1 - mov r1, #0x2b - lsl r1, r1, #0xc - bl NNS_FndCreateExpHeapEx - ldr r1, _021D7644 ; =UNK04_0220FBC0 - ldr r3, _021D7654 ; =0x00001F08 - ldr r2, [r1] - str r0, [r2, r3] - add r0, r3, #0 - ldr r4, [r1] - mov r2, #0 - add r0, #0x64 - str r2, [r4, r0] - add r4, r3, #0 - ldr r6, [r1] - sub r0, r2, #1 - add r4, #0x54 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x38 - str r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x48 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x58 - str r0, [r6, r4] - add r0, r3, #0 - ldr r4, [r1] - add r0, #0x5c - str r2, [r4, r0] - add r4, r3, #0 - ldr r6, [r1] - mov r0, #1 - add r4, #0x60 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x7a - strb r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x78 - strb r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x79 - strb r2, [r6, r4] - add r2, r3, #0 - ldr r4, [r1] - add r2, #0x70 - str r0, [r4, r2] - add r2, r3, #0 - add r2, #0x74 - ldr r4, [r1] - cmp r5, #0 - str r0, [r4, r2] - beq _021D75FA - ldr r0, [r1] - sub r3, #8 - ldr r0, [r0, r3] - bl FUN_020286EC - bl FUN_02028228 - ldr r2, _021D7644 ; =UNK04_0220FBC0 - ldr r1, _021D7658 ; =0x00001EF0 - ldr r3, [r2] - str r0, [r3, r1] - ldr r0, [r2] - add r1, #0x10 - ldr r0, [r0, r1] - bl FUN_020286EC - mov r1, #0 - bl FUN_0202838C - ldr r1, _021D7644 ; =UNK04_0220FBC0 - ldr r2, [r1] - mov r1, #0x11 - lsl r1, r1, #8 - str r0, [r2, r1] -_021D75FA: - ldr r2, _021D7644 ; =UNK04_0220FBC0 - mov r0, #0 - ldr r3, [r2] - ldr r1, _021D765C ; =0x00001F38 - add r4, r0, #0 - str r0, [r3, r1] - sub r1, #0x20 -_021D7608: - ldr r3, [r2] - add r3, r3, r0 - add r0, r0, #1 - strb r4, [r3, r1] - cmp r0, #0x20 - blt _021D7608 - bl MOD04_021D85B4 - ldr r0, _021D7644 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7658 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D762C - mov r0, #1 - pop {r4, r5, r6, pc} -_021D762C: - ldr r0, _021D7644 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7658 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckValidConsole - cmp r0, #0 - beq _021D7640 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D7640: - mov r0, #2 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D7644: .word UNK04_0220FBC0 -_021D7648: .word 0x00001FAC -_021D764C: .word 0x0002B020 -_021D7650: .word 0x00001F04 -_021D7654: .word 0x00001F08 -_021D7658: .word 0x00001EF0 -_021D765C: .word 0x00001F38 - - thumb_func_start MOD04_021D7660 -MOD04_021D7660: ; 0x021D7660 - push {r3, lr} - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D7698 - ldr r0, _021D76A4 ; =0x00001F08 - ldr r0, [r1, r0] - bl NNS_FndDestroyExpHeap - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - ldr r1, _021D76A8 ; =0x00001F54 - ldr r2, [r0] - ldr r0, [r2, r1] - sub r1, #0x50 - ldr r1, [r2, r1] - bl FreeToHeapExplicit - ldr r1, _021D76A0 ; =UNK04_0220FBC0 - ldr r0, _021D76A8 ; =0x00001F54 - ldr r2, [r1] - ldr r1, [r1, #4] - ldr r0, [r2, r0] - bl FreeToHeapExplicit - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - mov r1, #0 - str r1, [r0, #4] - str r1, [r0] -_021D7698: - bl MOD04_021DD6F0 - pop {r3, pc} - nop -_021D76A0: .word UNK04_0220FBC0 -_021D76A4: .word 0x00001F08 -_021D76A8: .word 0x00001F54 - - thumb_func_start MOD04_021D76AC -MOD04_021D76AC: ; 0x021D76AC - push {lr} - sub sp, #0x64 - ldr r0, _021D779C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #4 - bhi _021D7794 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D76C8: ; jump table - .short _021D76D2 - _021D76C8 - 2 ; case 0 - .short _021D7708 - _021D76C8 - 2 ; case 1 - .short _021D7736 - _021D76C8 - 2 ; case 2 - .short _021D7784 - _021D76C8 - 2 ; case 3 - .short _021D778A - _021D76C8 - 2 ; case 4 -_021D76D2: - ldr r0, _021D77A4 ; =MOD04_021D7DA8 - ldr r1, _021D77A8 ; =MOD04_021D7DEC - bl MOD04_021DD968 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D77AC ; =0x00001EF4 - mov r3, #0x14 - add r0, r1, r0 - mov r1, #2 - bl MOD04_021DDEE0 - mov r0, #2 - bl MOD04_021DDE7C - bl MOD04_021DDDCC - ldr r1, _021D779C ; =UNK04_0220FBC0 - ldr r0, _021D77A0 ; =0x00001F44 - ldr r2, [r1] - mov r3, #1 - str r3, [r2, r0] - ldr r1, [r1] - mov r2, #0 - add r0, #0x14 - str r2, [r1, r0] -_021D7708: - bl MOD04_021DDD7C - cmp r0, #0 - beq _021D7730 - bl MOD04_021DDC1C - cmp r0, #4 - bne _021D7724 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #2 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] - b _021D7736 -_021D7724: - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] - b _021D7736 -_021D7730: - bl MOD04_021DDCE8 - b _021D7794 -_021D7736: - bl MOD04_021D7E18 - cmp r0, #0 - blt _021D7798 - ldr r0, _021D779C ; =UNK04_0220FBC0 - ldr r3, _021D77B0 ; =UNK04_0220BEA0 - ldr r1, [r0] - ldr r0, _021D77B4 ; =UNK04_0220BEAC - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x11 - lsl r0, r0, #8 - ldr r2, [r1, r0] - add r0, r0, #4 - str r2, [sp, #0xc] - mov r2, #0x20 - str r2, [sp, #0x10] - ldr r2, _021D77B8 ; =0x00001EF0 - add r0, r1, r0 - ldr r1, [r1, r2] - ldr r2, _021D77BC ; =0x000029E7 - bl MOD04_021E0374 - add r0, sp, #0x14 - bl OS_GetOwnerInfo - mov r1, #0 - ldr r2, _021D77C0 ; =MOD04_021D7A7C - add r0, sp, #0x18 - add r3, r1, #0 - bl MOD04_021DFE64 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #3 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] -_021D7784: - bl MOD04_021DFF74 - b _021D7794 -_021D778A: - bl MOD04_021DFF74 - add sp, #0x64 - mov r0, #1 - pop {pc} -_021D7794: - bl MOD04_021D7E18 -_021D7798: - add sp, #0x64 - pop {pc} - .align 2, 0 -_021D779C: .word UNK04_0220FBC0 -_021D77A0: .word 0x00001F44 -_021D77A4: .word MOD04_021D7DA8 -_021D77A8: .word MOD04_021D7DEC -_021D77AC: .word 0x00001EF4 -_021D77B0: .word UNK04_0220BEA0 -_021D77B4: .word UNK04_0220BEAC -_021D77B8: .word 0x00001EF0 -_021D77BC: .word 0x000029E7 -_021D77C0: .word MOD04_021D7A7C - - thumb_func_start MOD04_021D77C4 -MOD04_021D77C4: ; 0x021D77C4 - push {r3, r4} - ldr r3, _021D77D8 ; =UNK04_0220FBC0 - ldr r2, _021D77DC ; =0x00001F0C - ldr r4, [r3] - str r0, [r4, r2] - ldr r3, [r3] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - .align 2, 0 -_021D77D8: .word UNK04_0220FBC0 -_021D77DC: .word 0x00001F0C - - thumb_func_start MOD04_021D77E0 -MOD04_021D77E0: ; 0x021D77E0 - ldr r0, _021D77F8 ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D77FC ; =0x00001F44 - ldr r1, [r2, r0] - cmp r1, #9 - bne _021D77F2 - mov r1, #0xa - str r1, [r2, r0] - bx lr -_021D77F2: - mov r1, #8 - str r1, [r2, r0] - bx lr - .align 2, 0 -_021D77F8: .word UNK04_0220FBC0 -_021D77FC: .word 0x00001F44 - - thumb_func_start MOD04_021D7800 -MOD04_021D7800: ; 0x021D7800 - push {r3, r4, r5, lr} - ldr r2, _021D78EC ; =UNK04_0220FBC0 - ldr r1, _021D78F0 ; =0x00001F44 - ldr r4, [r2] - ldr r3, [r4, r1] - cmp r3, #0xb - bhi _021D78E4 - add r5, r3, r3 - add r5, pc - ldrh r5, [r5, #6] - lsl r5, r5, #0x10 - asr r5, r5, #0x10 - add pc, r5 -_021D781A: ; jump table - .short _021D78E4 - _021D781A - 2 ; case 0 - .short _021D78E4 - _021D781A - 2 ; case 1 - .short _021D78E4 - _021D781A - 2 ; case 2 - .short _021D78E4 - _021D781A - 2 ; case 3 - .short _021D78E4 - _021D781A - 2 ; case 4 - .short _021D7832 - _021D781A - 2 ; case 5 - .short _021D7864 - _021D781A - 2 ; case 6 - .short _021D7886 - _021D781A - 2 ; case 7 - .short _021D78AA - _021D781A - 2 ; case 8 - .short _021D7864 - _021D781A - 2 ; case 9 - .short _021D78C4 - _021D781A - 2 ; case 10 - .short _021D78DE - _021D781A - 2 ; case 11 -_021D7832: - cmp r0, #0 - beq _021D783A - mov r0, #6 - str r0, [r4, r1] -_021D783A: - ldr r0, _021D78EC ; =UNK04_0220FBC0 - ldr r2, _021D78F4 ; =0x00001F48 - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #2 - bne _021D78E4 - add r1, r2, #0 - add r1, #0x14 - ldr r1, [r0, r1] - cmp r1, #0 - blt _021D78E4 - add r3, r0, r1 - add r1, r2, #0 - sub r1, #0x30 - ldrb r1, [r3, r1] - cmp r1, #6 - beq _021D78E4 - mov r3, #9 - sub r1, r2, #4 - str r3, [r0, r1] - b _021D78E4 -_021D7864: - cmp r3, #0 - bne _021D786E - bl MOD04_021EA530 - b _021D78E4 -_021D786E: - bl MOD04_021DFA40 - cmp r0, #1 - bne _021D787C - bl MOD04_021D77E0 - b _021D78E4 -_021D787C: - cmp r0, #0 - beq _021D78E4 - bl MOD04_021D77E0 - b _021D78E4 -_021D7886: - mov r0, #1 - add r1, #0x40 - strh r0, [r4, r1] - bl MOD04_021D8058 - ldr r0, _021D78EC ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D78F8 ; =0x00001F68 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D78A0 - mov r1, #1 - b _021D78A2 -_021D78A0: - mov r1, #0 -_021D78A2: - add r0, #0x10 - str r1, [r2, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D78AA: - mov r0, #4 - str r0, [r4, r1] - add r0, r1, #0 - ldr r3, [r2] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2] - sub r3, r4, #1 - add r1, #0x1c - str r3, [r0, r1] - mov r0, #2 - pop {r3, r4, r5, pc} -_021D78C4: - mov r0, #4 - str r0, [r4, r1] - add r0, r1, #0 - ldr r3, [r2] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2] - sub r3, r4, #1 - add r1, #0x1c - str r3, [r0, r1] - mov r0, #3 - pop {r3, r4, r5, pc} -_021D78DE: - bl MOD04_021D7E18 - pop {r3, r4, r5, pc} -_021D78E4: - bl MOD04_021D7F8C - pop {r3, r4, r5, pc} - nop -_021D78EC: .word UNK04_0220FBC0 -_021D78F0: .word 0x00001F44 -_021D78F4: .word 0x00001F48 -_021D78F8: .word 0x00001F68 - - thumb_func_start MOD04_021D78FC -MOD04_021D78FC: ; 0x021D78FC - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D790E - mov r0, #0 - pop {r4, r5, r6, pc} -_021D790E: - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7930 - ldr r0, _021D79A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D79A4 ; =0x00001F0C - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D792C - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D792C: - mov r0, #1 - pop {r4, r5, r6, pc} -_021D7930: - ldr r0, _021D79A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D79A8 ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D7946 - mov r0, #0 - bl MOD04_021EB0FC - cmp r0, #0 - bne _021D794A -_021D7946: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D794A: - ldr r1, _021D79A0 ; =UNK04_0220FBC0 - ldr r0, _021D79AC ; =0x00001F78 - ldr r3, [r1] - mov r6, #1 - ldr r2, [r3, r0] - lsl r2, r2, #8 - orr r2, r6 - lsl r6, r6, #0xc - str r2, [r3, r6] - add r3, r0, #0 - ldr r2, [r1] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r3, [r1] - add r0, #8 - ldrb r0, [r3, r0] - ldr r2, _021D79B0 ; =0x00001002 - strb r0, [r3, r2] - ldr r3, [r1] - add r1, r2, #2 - add r0, r5, #0 - add r1, r3, r1 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r1, _021D79A0 ; =UNK04_0220FBC0 - ldr r0, _021D79A8 ; =0x00001F4C - ldr r2, [r1] - mov r3, #1 - str r3, [r2, r0] - ldr r2, [r1] - lsl r1, r3, #0xc - add r1, r2, r1 - mov r0, #0 - add r2, r4, #4 - bl MOD04_021EB044 - mov r0, #1 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D79A0: .word UNK04_0220FBC0 -_021D79A4: .word 0x00001F0C -_021D79A8: .word 0x00001F4C -_021D79AC: .word 0x00001F78 -_021D79B0: .word 0x00001002 - - thumb_func_start MOD04_021D79B4 -MOD04_021D79B4: ; 0x021D79B4 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D79C6 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79C6: - bl MOD04_021DF95C - cmp r0, #0 - beq _021D79D2 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79D2: - ldr r0, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7A6C ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D79E8 - mov r0, #1 - bl MOD04_021EB0FC - cmp r0, #0 - bne _021D79EC -_021D79E8: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79EC: - ldr r1, _021D7A68 ; =UNK04_0220FBC0 - ldr r0, _021D7A70 ; =0x00001F78 - ldr r3, [r1] - mov r6, #1 - ldr r2, [r3, r0] - lsl r2, r2, #8 - orr r2, r6 - lsl r6, r6, #0xc - str r2, [r3, r6] - add r3, r0, #0 - ldr r2, [r1] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r3, [r1] - add r0, #8 - ldrb r0, [r3, r0] - ldr r2, _021D7A74 ; =0x00001002 - strb r0, [r3, r2] - ldr r3, [r1] - add r1, r2, #2 - add r0, r5, #0 - add r1, r3, r1 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r2, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, _021D7A6C ; =0x00001F4C - ldr r3, [r2] - mov r0, #1 - str r0, [r3, r1] - ldr r2, [r2] - lsl r1, r0, #0xc - add r1, r2, r1 - add r2, r4, #4 - bl MOD04_021EB044 - cmp r0, #0 - bne _021D7A4C - ldr r1, _021D7A68 ; =UNK04_0220FBC0 - mov r0, #0 - ldr r2, [r1] - ldr r1, _021D7A6C ; =0x00001F4C - str r0, [r2, r1] - pop {r4, r5, r6, pc} -_021D7A4C: - ldr r0, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7A78 ; =0x00001F10 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7A62 - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D7A62: - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D7A68: .word UNK04_0220FBC0 -_021D7A6C: .word 0x00001F4C -_021D7A70: .word 0x00001F78 -_021D7A74: .word 0x00001002 -_021D7A78: .word 0x00001F10 - - thumb_func_start MOD04_021D7A7C -MOD04_021D7A7C: ; 0x021D7A7C - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - add r4, r2, #0 - ldr r1, [r0] - ldr r0, _021D7AFC ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckDirtyFlag - cmp r0, #0 - beq _021D7AB0 - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7AFC ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_ClearDirtyFlag - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - mov r1, #0 - bl FUN_020227A0 -_021D7AB0: - cmp r5, #0 - bne _021D7AE8 - ldr r0, _021D7B00 ; =MOD04_021D7B70 - str r4, [sp] - str r0, [sp, #4] - ldr r2, _021D7AF8 ; =UNK04_0220FBC0 - str r4, [sp, #8] - ldr r3, [r2] - ldr r2, _021D7AFC ; =0x00001EF0 - ldr r1, _021D7B04 ; =MOD04_021D7B48 - ldr r2, [r3, r2] - ldr r3, _021D7B08 ; =MOD04_021D7B6C - mov r0, #0 - bl MOD04_021DFDBC - cmp r0, #0 - bne _021D7ADC - mov r0, #1 - bl FUN_020336A0 - add sp, #0xc - pop {r4, r5, pc} -_021D7ADC: - ldr r0, _021D7B0C ; =MOD04_021D7BBC - mov r1, #0 - bl MOD04_021E242C - add sp, #0xc - pop {r4, r5, pc} -_021D7AE8: - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D7B10 ; =0x00001F44 - str r2, [r1, r0] - add sp, #0xc - pop {r4, r5, pc} - nop -_021D7AF8: .word UNK04_0220FBC0 -_021D7AFC: .word 0x00001EF0 -_021D7B00: .word MOD04_021D7B70 -_021D7B04: .word MOD04_021D7B48 -_021D7B08: .word MOD04_021D7B6C -_021D7B0C: .word MOD04_021D7BBC -_021D7B10: .word 0x00001F44 - - thumb_func_start MOD04_021D7B14 -MOD04_021D7B14: ; 0x021D7B14 - push {r3, lr} - ldr r0, _021D7B3C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7B40 ; =0x00001F70 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D7B3A - bl MOD04_021DFA40 - ldr r1, _021D7B3C ; =UNK04_0220FBC0 - mov r3, #0 - ldr r2, [r1] - ldr r0, _021D7B44 ; =0x00001F60 - mvn r3, r3 - str r3, [r2, r0] - ldr r1, [r1] - mov r2, #0x11 - sub r0, #0x1c - str r2, [r1, r0] -_021D7B3A: - pop {r3, pc} - .align 2, 0 -_021D7B3C: .word UNK04_0220FBC0 -_021D7B40: .word 0x00001F70 -_021D7B44: .word 0x00001F60 - - thumb_func_start MOD04_021D7B48 -MOD04_021D7B48: ; 0x021D7B48 - cmp r0, #0 - bne _021D7B58 - ldr r0, _021D7B64 ; =UNK04_0220FBC0 - mov r2, #4 - ldr r1, [r0] - ldr r0, _021D7B68 ; =0x00001F44 - str r2, [r1, r0] - bx lr -_021D7B58: - ldr r0, _021D7B64 ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D7B68 ; =0x00001F44 - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D7B64: .word UNK04_0220FBC0 -_021D7B68: .word 0x00001F44 - - thumb_func_start MOD04_021D7B6C -MOD04_021D7B6C: ; 0x021D7B6C - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D7B70 -MOD04_021D7B70: ; 0x021D7B70 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - add r4, r1, #0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - bl FUN_020286EC - mov r1, #0 - bl FUN_0202838C - add r1, r0, #0 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - ldr r2, [r0] - mov r0, #0x11 - lsl r0, r0, #8 - ldr r0, [r2, r0] - mov r2, #6 - lsl r2, r2, #6 - bl MI_CpuCopy8 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - bl FUN_020286EC - add r1, r5, #0 - add r2, r4, #0 - bl FUN_02028664 - pop {r3, r4, r5, pc} - nop -_021D7BB8: .word UNK04_0220FBC0 - - thumb_func_start MOD04_021D7BBC -MOD04_021D7BBC: ; 0x021D7BBC - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D7BC0 -MOD04_021D7BC0: ; 0x021D7BC0 - push {r3, lr} - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #7 - ldr r1, [r0] - ldr r0, _021D7C20 ; =0x00001F44 - str r2, [r1, r0] - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7BDA - mov r2, #1 - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - b _021D7BDE -_021D7BDA: - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #0 -_021D7BDE: - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - str r2, [r1, r0] - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - lsl r2, r2, #0xc - ldr r0, [r1, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EAE38 - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - ldr r0, [r1, r0] - ldr r1, _021D7C28 ; =0x00002710 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EACF8 - ldr r1, _021D7C1C ; =UNK04_0220FBC0 - ldr r0, _021D7C2C ; =0x00001F70 - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, r0, #4 - str r3, [r1, r0] - pop {r3, pc} - .align 2, 0 -_021D7C1C: .word UNK04_0220FBC0 -_021D7C20: .word 0x00001F44 -_021D7C24: .word 0x00001F50 -_021D7C28: .word 0x00002710 -_021D7C2C: .word 0x00001F70 - - thumb_func_start MOD04_021D7C30 -MOD04_021D7C30: ; 0x021D7C30 - ldr r1, _021D7C44 ; =UNK04_0220FBC0 - ldr r0, _021D7C48 ; =0x00001F4C - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, #0x28 - str r3, [r1, r0] - bx lr - nop -_021D7C44: .word UNK04_0220FBC0 -_021D7C48: .word 0x00001F4C - - thumb_func_start MOD04_021D7C4C -MOD04_021D7C4C: ; 0x021D7C4C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - add r4, r1, #0 - ldrb r5, [r4, #1] - ldrb r3, [r4] - str r2, [sp, #4] - lsl r5, r5, #8 - mov ip, r5 - ldrb r5, [r4, #3] - add r7, r3, #0 - ldr r3, _021D7D54 ; =UNK04_0220FBC0 - lsl r6, r5, #0x18 - ldrb r5, [r4, #2] - lsl r5, r5, #0x10 - orr r5, r6 - mov r6, ip - orr r5, r6 - orr r7, r5 - ldr r6, [r3] - ldr r5, _021D7D58 ; =0x00001F70 - mov r3, #1 - str r3, [r6, r5] - lsl r3, r7, #0x18 - lsr r3, r3, #0x18 - cmp r3, #1 - bne _021D7CB4 - mov r0, #1 - add r0, #0xff - tst r0, r7 - beq _021D7C96 - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - add r5, #0xc - ldr r1, [r0] - mov r0, #1 - str r0, [r1, r5] - b _021D7CA0 -_021D7C96: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r1, #0 - ldr r0, [r0] - add r5, #0xc - str r1, [r0, r5] -_021D7CA0: - ldr r3, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, _021D7D5C ; =0x00001F84 - ldr r2, [r3] - mov r0, #0 - strh r0, [r2, r1] - ldrb r6, [r4, #2] - ldr r5, [r3] - sub r2, r1, #3 - strb r6, [r5, r2] - b _021D7CE4 -_021D7CB4: - bl MOD04_021D8A54 - cmp r0, #0 - bne _021D7D4E - mov r0, #1 - lsl r0, r0, #8 - tst r0, r7 - beq _021D7CD4 - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - add r0, r5, #0 - add r0, #0xc - str r2, [r1, r0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D7CD4: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - add r0, r5, #0 - add r0, #0xc - str r2, [r1, r0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D7CE4: - ldr r5, [r4] - ldr r2, [r3] - add r1, r1, #4 - str r5, [r2, r1] - ldr r1, [sp, #4] - mov r2, #4 - sub r6, r1, #4 - add r1, r6, #0 - bl MOD04_021D7DA8 - add r5, r0, #0 - beq _021D7D4E - add r0, r4, #4 - add r1, r5, #0 - add r2, r6, #0 - bl MI_CpuCopy8 - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7D2A - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7D60 ; =0x00001F0C - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7D44 - ldr r2, [sp, #4] - ldr r0, [sp] - sub r2, r2, #4 - lsl r2, r2, #0x10 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 - b _021D7D44 -_021D7D2A: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7D64 ; =0x00001F10 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7D44 - ldr r2, [sp, #4] - ldr r0, [sp] - sub r2, r2, #4 - lsl r2, r2, #0x10 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D7D44: - mov r0, #0 - add r1, r5, #0 - add r2, r6, #0 - bl MOD04_021D7DEC -_021D7D4E: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D7D54: .word UNK04_0220FBC0 -_021D7D58: .word 0x00001F70 -_021D7D5C: .word 0x00001F84 -_021D7D60: .word 0x00001F0C -_021D7D64: .word 0x00001F10 - - thumb_func_start MOD04_021D7D68 -MOD04_021D7D68: ; 0x021D7D68 - push {r3, lr} - cmp r0, #0 - bne _021D7D9A - bl MOD04_021DF978 - cmp r0, #1 - bne _021D7D9A - ldr r0, _021D7D9C ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D7DA0 ; =0x00001F44 - ldr r1, [r2, r0] - cmp r1, #6 - bne _021D7D86 - mov r1, #8 - b _021D7D88 -_021D7D86: - mov r1, #0x10 -_021D7D88: - str r1, [r2, r0] - ldr r0, _021D7D9C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7DA4 ; =0x00001F58 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D7D9A - bl MOD04_021D8C6C -_021D7D9A: - pop {r3, pc} - .align 2, 0 -_021D7D9C: .word UNK04_0220FBC0 -_021D7DA0: .word 0x00001F44 -_021D7DA4: .word 0x00001F58 - - thumb_func_start MOD04_021D7DA8 -MOD04_021D7DA8: ; 0x021D7DA8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _021D7DE4 ; =UNK04_0220FBC0 - add r2, r6, #0 - ldr r1, [r0] - ldr r0, _021D7DE8 ; =0x00001F08 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndAllocFromExpHeapEx - add r5, r0, #0 - bne _021D7DD8 - mov r0, #1 - bl FUN_020336A0 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, r5, r6, pc} -_021D7DD8: - add r0, r4, #0 - bl OS_RestoreInterrupts - add r0, r5, #0 - pop {r4, r5, r6, pc} - nop -_021D7DE4: .word UNK04_0220FBC0 -_021D7DE8: .word 0x00001F08 - - thumb_func_start MOD04_021D7DEC -MOD04_021D7DEC: ; 0x021D7DEC - push {r3, r4, r5, lr} - add r5, r1, #0 - beq _021D7E0C - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _021D7E10 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7E14 ; =0x00001F08 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndFreeToExpHeap - add r0, r4, #0 - bl OS_RestoreInterrupts -_021D7E0C: - pop {r3, r4, r5, pc} - nop -_021D7E10: .word UNK04_0220FBC0 -_021D7E14: .word 0x00001F08 - - thumb_func_start MOD04_021D7E18 -MOD04_021D7E18: ; 0x021D7E18 - push {r4, lr} - sub sp, #8 - add r0, sp, #4 - add r1, sp, #0 - bl MOD04_021DD718 - add r4, r0, #0 - beq _021D7EFA - ldr r0, [sp] - cmp r0, #7 - bhi _021D7EFA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7E3A: ; jump table - .short _021D7EFA - _021D7E3A - 2 ; case 0 - .short _021D7E4A - _021D7E3A - 2 ; case 1 - .short _021D7EFA - _021D7E3A - 2 ; case 2 - .short _021D7E66 - _021D7E3A - 2 ; case 3 - .short _021D7EFA - _021D7E3A - 2 ; case 4 - .short _021D7EFA - _021D7E3A - 2 ; case 5 - .short _021D7E66 - _021D7E3A - 2 ; case 6 - .short _021D7ECE - _021D7E3A - 2 ; case 7 -_021D7E4A: - bl MOD04_021DD6F0 - cmp r4, #0xa - blt _021D7E58 - add sp, #8 - add r0, r4, #0 - pop {r4, pc} -_021D7E58: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7EFA - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7E66: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D7EB2 - ldr r0, _021D7F18 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #0x11 - bhi _021D7EAE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7E82: ; jump table - .short _021D7EAA - _021D7E82 - 2 ; case 0 - .short _021D7EAA - _021D7E82 - 2 ; case 1 - .short _021D7EAA - _021D7E82 - 2 ; case 2 - .short _021D7EA6 - _021D7E82 - 2 ; case 3 - .short _021D7EA6 - _021D7E82 - 2 ; case 4 - .short _021D7EA6 - _021D7E82 - 2 ; case 5 - .short _021D7EA6 - _021D7E82 - 2 ; case 6 - .short _021D7EA6 - _021D7E82 - 2 ; case 7 - .short _021D7EA6 - _021D7E82 - 2 ; case 8 - .short _021D7EAE - _021D7E82 - 2 ; case 9 - .short _021D7EAE - _021D7E82 - 2 ; case 10 - .short _021D7EA6 - _021D7E82 - 2 ; case 11 - .short _021D7EAE - _021D7E82 - 2 ; case 12 - .short _021D7EAE - _021D7E82 - 2 ; case 13 - .short _021D7EAE - _021D7E82 - 2 ; case 14 - .short _021D7EA6 - _021D7E82 - 2 ; case 15 - .short _021D7EA6 - _021D7E82 - 2 ; case 16 - .short _021D7EA6 - _021D7E82 - 2 ; case 17 -_021D7EA6: - bl MOD04_021E0200 -_021D7EAA: - bl MOD04_021DDBBC -_021D7EAE: - bl MOD04_021DD6F0 -_021D7EB2: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r2, [r0] - cmp r2, #0 - beq _021D7EC0 - ldr r0, _021D7F18 ; =0x00001F44 - mov r1, #0xd - str r1, [r2, r0] -_021D7EC0: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7F10 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7ECE: - ldr r1, _021D7F14 ; =UNK04_0220FBC0 - ldr r3, [r1] - cmp r3, #0 - beq _021D7EEC - ldr r0, _021D7F18 ; =0x00001F44 - mov r2, #0xe - str r2, [r3, r0] - ldr r1, [r1] - sub r0, #0x30 - ldr r1, [r1, r0] - cmp r1, #0 - beq _021D7EEC - ldr r0, [sp, #4] - neg r0, r0 - blx r1 -_021D7EEC: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7F10 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7EFA: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7F1C ; =0x00001F82 - ldrb r0, [r1, r0] - cmp r0, #0 - beq _021D7F0E - mov r0, #1 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7F0E: - mov r0, #0 -_021D7F10: - add sp, #8 - pop {r4, pc} - .align 2, 0 -_021D7F14: .word UNK04_0220FBC0 -_021D7F18: .word 0x00001F44 -_021D7F1C: .word 0x00001F82 - - thumb_func_start MOD04_021D7F20 -MOD04_021D7F20: ; 0x021D7F20 - push {r3, r4, r5, lr} - ldr r0, _021D7F80 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7F84 ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D7F7E - bl MOD04_021DF95C - mov r1, #1 - sub r0, r1, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EB0FC - cmp r0, #0 - beq _021D7F7E - ldr r4, _021D7F80 ; =UNK04_0220FBC0 - ldr r2, _021D7F84 ; =0x00001F4C - ldr r0, [r4] - mov r1, #1 - str r1, [r0, r2] - add r1, r2, #0 - ldr r0, [r4] - add r1, #0x2c - ldr r1, [r0, r1] - mov r3, #2 - lsl r1, r1, #8 - add r5, r1, #0 - orr r5, r3 - lsl r1, r3, #0xb - str r5, [r0, r1] - add r0, r2, #4 - ldr r1, [r4] - lsl r2, r3, #0xb - ldr r0, [r1, r0] - add r1, r1, r2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r2, #4 - bl MOD04_021EB044 - add r0, r4, #0 - ldr r1, [r0] - ldr r0, _021D7F88 ; =0x00001F74 - mov r2, #0 - str r2, [r1, r0] -_021D7F7E: - pop {r3, r4, r5, pc} - .align 2, 0 -_021D7F80: .word UNK04_0220FBC0 -_021D7F84: .word 0x00001F4C -_021D7F88: .word 0x00001F74 - - thumb_func_start MOD04_021D7F8C -MOD04_021D7F8C: ; 0x021D7F8C - push {r3, r4, r5, lr} - bl MOD04_021DFF74 - bl MOD04_021D83F0 - ldr r0, _021D800C ; =UNK04_0220FBC0 - ldr r1, _021D8010 ; =0x00001F58 - ldr r2, [r0] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D7FC2 - add r0, r1, #0 - add r0, #0x20 - ldr r0, [r2, r0] - cmp r0, #1 - bne _021D7FBA - add r1, #0x24 - ldr r0, [r2, r1] - cmp r0, #1 - bne _021D7FBA - bl MOD04_021D8D04 - b _021D7FBE -_021D7FBA: - bl MOD04_021D8CF0 -_021D7FBE: - bl MOD04_021D8944 -_021D7FC2: - ldr r4, _021D800C ; =UNK04_0220FBC0 - ldr r3, _021D8014 ; =0x00001F44 - ldr r1, [r4] - ldr r0, [r1, r3] - cmp r0, #0x11 - bne _021D7FD2 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D7FD2: - cmp r0, #0x10 - bne _021D7FDA - mov r0, #2 - pop {r3, r4, r5, pc} -_021D7FDA: - cmp r0, #7 - bne _021D8004 - add r2, r3, #0 - add r2, #0x30 - add r0, r3, #0 - ldr r2, [r1, r2] - add r0, #0x30 - add r5, r2, #1 - add r2, r3, #0 - ldr r0, [r1, r0] - add r2, #0x30 - str r5, [r1, r2] - cmp r0, #0x78 - blt _021D8004 - ldr r0, [r4] - add r3, #8 - ldr r0, [r0, r3] - cmp r0, #0 - bne _021D8004 - bl MOD04_021D7F20 -_021D8004: - bl MOD04_021D7E18 - pop {r3, r4, r5, pc} - nop -_021D800C: .word UNK04_0220FBC0 -_021D8010: .word 0x00001F58 -_021D8014: .word 0x00001F44 - - thumb_func_start MOD04_021D8018 -MOD04_021D8018: ; 0x021D8018 - push {r3, lr} - ldr r0, _021D803C ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D8034 - ldr r0, _021D8040 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #7 - beq _021D802E - cmp r0, #0xf - bne _021D8034 -_021D802E: - bl MOD04_021DF95C - pop {r3, pc} -_021D8034: - mov r0, #0 - mvn r0, r0 - pop {r3, pc} - nop -_021D803C: .word UNK04_0220FBC0 -_021D8040: .word 0x00001F44 - - thumb_func_start MOD04_021D8044 -MOD04_021D8044: ; 0x021D8044 - ldr r0, _021D8050 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D8054 ; =0x00001F58 - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8050: .word UNK04_0220FBC0 -_021D8054: .word 0x00001F58 - - thumb_func_start MOD04_021D8058 -MOD04_021D8058: ; 0x021D8058 - push {r3, lr} - ldr r0, _021D80CC ; =UNK04_0220FBC0 - ldr r2, _021D80D0 ; =0x00001F6C - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #5 - bhi _021D80AE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D8072: ; jump table - .short _021D80AE - _021D8072 - 2 ; case 0 - .short _021D80AE - _021D8072 - 2 ; case 1 - .short _021D807E - _021D8072 - 2 ; case 2 - .short _021D808A - _021D8072 - 2 ; case 3 - .short _021D8096 - _021D8072 - 2 ; case 4 - .short _021D80A2 - _021D8072 - 2 ; case 5 -_021D807E: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #1 - bl MOD04_021D8A7C - b _021D80B8 -_021D808A: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #2 - bl MOD04_021D8A7C - b _021D80B8 -_021D8096: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #3 - bl MOD04_021D8A7C - b _021D80B8 -_021D80A2: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #4 - bl MOD04_021D8A7C - b _021D80B8 -_021D80AE: - ldr r1, _021D80D4 ; =0x00001F54 - ldr r0, [r0, r1] - mov r1, #4 - bl MOD04_021D8A7C -_021D80B8: - ldr r0, _021D80D8 ; =MOD04_021D8044 - bl MOD04_021D8C58 - ldr r0, _021D80CC ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D80DC ; =0x00001F58 - str r2, [r1, r0] - pop {r3, pc} - nop -_021D80CC: .word UNK04_0220FBC0 -_021D80D0: .word 0x00001F6C -_021D80D4: .word 0x00001F54 -_021D80D8: .word MOD04_021D8044 -_021D80DC: .word 0x00001F58 - - thumb_func_start MOD04_021D80E0 -MOD04_021D80E0: ; 0x021D80E0 - push {r3, r4, r5, lr} - mov r1, #0x64 - add r5, r0, #0 - bl _s32_div_f - mov r1, #0xfa - add r4, r0, #0 - add r0, r5, #0 - lsl r1, r1, #2 - bl _s32_div_f - ldr r2, _021D8270 ; =0x00004E84 - cmp r5, r2 - bne _021D8100 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8100: - add r1, r2, #2 - cmp r5, r1 - blt _021D8110 - add r1, r2, #7 - cmp r5, r1 - bgt _021D8110 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8110: - ldr r1, _021D8274 ; =0x00004E8D - cmp r5, r1 - bne _021D811A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D811A: - add r1, r1, #2 - cmp r5, r1 - blt _021D812A - ldr r1, _021D8278 ; =0x00005207 - cmp r5, r1 - bgt _021D812A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D812A: - ldr r1, _021D827C ; =0x0000CB24 - cmp r5, r1 - blt _021D813A - add r1, #0x5f - cmp r5, r1 - bgt _021D813A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D813A: - ldr r1, _021D8280 ; =0x0000CB88 - cmp r5, r1 - blt _021D814A - add r1, #0x5f - cmp r5, r1 - bgt _021D814A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D814A: - ldr r1, _021D8284 ; =0x0000CBEC - cmp r5, r1 - blt _021D815A - add r1, #0x5f - cmp r5, r1 - bgt _021D815A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D815A: - ldr r1, _021D8288 ; =0x0000020B - cmp r4, r1 - bne _021D8164 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8164: - add r2, r1, #7 - cmp r4, r2 - bne _021D816E - mov r0, #0 - pop {r3, r4, r5, pc} -_021D816E: - add r2, r1, #0 - add r2, #8 - cmp r4, r2 - bne _021D817A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D817A: - add r2, r1, #0 - add r2, #9 - cmp r4, r2 - bne _021D8186 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8186: - ldr r3, _021D828C ; =0x00004E85 - cmp r5, r3 - bne _021D8190 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D8190: - cmp r0, #0x17 - bne _021D8198 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D8198: - add r2, r3, #7 - cmp r5, r2 - bne _021D81A2 - mov r0, #2 - pop {r3, r4, r5, pc} -_021D81A2: - add r3, #9 - cmp r5, r3 - bne _021D81AC - mov r0, #3 - pop {r3, r4, r5, pc} -_021D81AC: - add r2, r1, #0 - sub r2, #0xb - cmp r4, r2 - bne _021D81B8 - mov r0, #4 - pop {r3, r4, r5, pc} -_021D81B8: - sub r1, #0x17 - cmp r4, r1 - bne _021D81C2 - mov r0, #5 - pop {r3, r4, r5, pc} -_021D81C2: - ldr r1, _021D8290 ; =0x0000C738 - cmp r5, r1 - blt _021D81D2 - add r1, #0x66 - cmp r5, r1 - bgt _021D81D2 - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81D2: - ldr r1, _021D8294 ; =0x0000C7A0 - cmp r5, r1 - blt _021D81E2 - add r1, #0x5f - cmp r5, r1 - bgt _021D81E2 - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81E2: - ldr r1, _021D8298 ; =0x00000201 - cmp r4, r1 - bne _021D81EC - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81EC: - ldr r1, _021D829C ; =0x0000C79F - cmp r5, r1 - bne _021D81F6 - mov r0, #7 - pop {r3, r4, r5, pc} -_021D81F6: - ldr r1, _021D82A0 ; =0x0000CB20 - cmp r5, r1 - blt _021D8206 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8206 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8206: - ldr r1, _021D82A4 ; =0x0000CB84 - cmp r5, r1 - blt _021D8216 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8216 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8216: - ldr r1, _021D82A8 ; =0x0000CBE8 - cmp r5, r1 - blt _021D8226 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8226 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8226: - ldr r1, _021D82AC ; =0x00013A2E - cmp r5, r1 - bne _021D8230 - mov r0, #9 - pop {r3, r4, r5, pc} -_021D8230: - cmp r0, #0x18 - bne _021D8238 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8238: - cmp r0, #0x19 - bne _021D8240 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8240: - cmp r0, #0x1f - bne _021D8248 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8248: - cmp r0, #0x36 - bne _021D8250 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8250: - ldr r0, _021D82B0 ; =0x0000EA60 - cmp r5, r0 - blt _021D8260 - ldr r0, _021D82B4 ; =0x0001869F - cmp r5, r0 - bgt _021D8260 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8260: - ldr r0, _021D82B8 ; =0x00002710 - cmp r5, r0 - bge _021D826A - mov r0, #0xb - pop {r3, r4, r5, pc} -_021D826A: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} - .align 2, 0 -_021D8270: .word 0x00004E84 -_021D8274: .word 0x00004E8D -_021D8278: .word 0x00005207 -_021D827C: .word 0x0000CB24 -_021D8280: .word 0x0000CB88 -_021D8284: .word 0x0000CBEC -_021D8288: .word 0x0000020B -_021D828C: .word 0x00004E85 -_021D8290: .word 0x0000C738 -_021D8294: .word 0x0000C7A0 -_021D8298: .word 0x00000201 -_021D829C: .word 0x0000C79F -_021D82A0: .word 0x0000CB20 -_021D82A4: .word 0x0000CB84 -_021D82A8: .word 0x0000CBE8 -_021D82AC: .word 0x00013A2E -_021D82B0: .word 0x0000EA60 -_021D82B4: .word 0x0001869F -_021D82B8: .word 0x00002710 - - thumb_func_start MOD04_021D82BC -MOD04_021D82BC: ; 0x021D82BC - push {r3, lr} - cmp r0, #0 - bne _021D8346 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - ldr r2, _021D8368 ; =0x00001F44 - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #0x11 - bhi _021D835E - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D82DA: ; jump table - .short _021D835E - _021D82DA - 2 ; case 0 - .short _021D835E - _021D82DA - 2 ; case 1 - .short _021D835E - _021D82DA - 2 ; case 2 - .short _021D835E - _021D82DA - 2 ; case 3 - .short _021D8342 - _021D82DA - 2 ; case 4 - .short _021D82FE - _021D82DA - 2 ; case 5 - .short _021D835E - _021D82DA - 2 ; case 6 - .short _021D82FE - _021D82DA - 2 ; case 7 - .short _021D835E - _021D82DA - 2 ; case 8 - .short _021D835E - _021D82DA - 2 ; case 9 - .short _021D835E - _021D82DA - 2 ; case 10 - .short _021D835E - _021D82DA - 2 ; case 11 - .short _021D835E - _021D82DA - 2 ; case 12 - .short _021D8342 - _021D82DA - 2 ; case 13 - .short _021D835E - _021D82DA - 2 ; case 14 - .short _021D8328 - _021D82DA - 2 ; case 15 - .short _021D8342 - _021D82DA - 2 ; case 16 - .short _021D8342 - _021D82DA - 2 ; case 17 -_021D82FE: - add r2, #0x14 - ldr r0, [r0, r2] - cmp r0, #0 - beq _021D8316 - bl MOD04_021D8C08 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0xf - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - b _021D835E -_021D8316: - bl MOD04_021DFA40 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0x10 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - mov r0, #1 - pop {r3, pc} -_021D8328: - add r2, #0x14 - ldr r0, [r0, r2] - cmp r0, #0 - bne _021D835E - bl MOD04_021DFA40 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0x10 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - mov r0, #1 - pop {r3, pc} -_021D8342: - mov r0, #1 - pop {r3, pc} -_021D8346: - ldr r0, _021D8364 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #4 - beq _021D835A - cmp r0, #0x10 - beq _021D835A - cmp r0, #0x11 - bne _021D835E -_021D835A: - mov r0, #1 - pop {r3, pc} -_021D835E: - mov r0, #0 - pop {r3, pc} - nop -_021D8364: .word UNK04_0220FBC0 -_021D8368: .word 0x00001F44 - - thumb_func_start MOD04_021D836C -MOD04_021D836C: ; 0x021D836C - push {r3, r4} - ldr r2, _021D83A0 ; =UNK04_0220FBC0 - ldr r1, _021D83A4 ; =0x00001F44 - ldr r3, [r2] - ldr r0, [r3, r1] - sub r0, #0x10 - cmp r0, #1 - bhi _021D8398 - mov r4, #0 - add r0, r1, #0 - mvn r4, r4 - add r0, #0xc - str r4, [r3, r0] - ldr r0, [r2] - mov r3, #4 - str r3, [r0, r1] - ldr r0, [r2] - add r1, #0x1c - str r4, [r0, r1] - mov r0, #1 - pop {r3, r4} - bx lr -_021D8398: - mov r0, #0 - pop {r3, r4} - bx lr - nop -_021D83A0: .word UNK04_0220FBC0 -_021D83A4: .word 0x00001F44 - - thumb_func_start MOD04_021D83A8 -MOD04_021D83A8: ; 0x021D83A8 - ldr r1, _021D83B8 ; =UNK04_0220FBC0 - ldr r2, [r1] - cmp r2, #0 - beq _021D83B4 - ldr r1, _021D83BC ; =0x00001F14 - str r0, [r2, r1] -_021D83B4: - bx lr - nop -_021D83B8: .word UNK04_0220FBC0 -_021D83BC: .word 0x00001F14 - - thumb_func_start MOD04_021D83C0 -MOD04_021D83C0: ; 0x021D83C0 - push {r3, lr} - bl MOD04_021E0200 - bl MOD04_021DDBBC - bl MOD04_021D8C6C - bl MOD04_021D7660 - pop {r3, pc} - - thumb_func_start MOD04_021D83D4 -MOD04_021D83D4: ; 0x021D83D4 - push {r3, r4} - ldr r3, _021D83E8 ; =UNK04_0220FBC0 - ldr r2, _021D83EC ; =0x00001F38 - ldr r4, [r3] - str r0, [r4, r2] - ldr r3, [r3] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - .align 2, 0 -_021D83E8: .word UNK04_0220FBC0 -_021D83EC: .word 0x00001F38 - - thumb_func_start MOD04_021D83F0 -MOD04_021D83F0: ; 0x021D83F0 - push {r3, r4, r5, r6, r7, lr} - ldr r6, _021D8468 ; =UNK04_0220FBC0 - ldr r0, _021D846C ; =0x00001F38 - ldr r1, [r6] - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8464 - mov r7, #0 -_021D8400: - mov r1, #0x7d - ldr r0, [r6] - lsl r1, r1, #6 - ldr r2, [r0, r1] - mov r1, #0x1f - add r5, r2, #0 - and r5, r1 - mov r1, #0xc - add r4, r5, #0 - mul r4, r1 - mov r1, #0x11 - lsl r1, r1, #8 - ldr r0, [r0, r1] - add r0, r0, r4 - bl DWC_IsBuddyFriendData - cmp r0, #0 - beq _021D844A - mov r0, #0x11 - ldr r2, [r6] - ldr r1, _021D846C ; =0x00001F38 - lsl r0, r0, #8 - ldr r0, [r2, r0] - ldr r3, _021D8470 ; =0x00001F3C - ldr r1, [r2, r1] - ldr r2, [r2, r3] - add r0, r0, r4 - add r3, r2, #0 - mul r3, r5 - add r1, r1, r3 - add r2, sp, #0 - bl MOD04_021E2578 - ldr r1, [r6] - add r2, r1, r5 - ldr r1, _021D8474 ; =0x00001F18 - strb r0, [r2, r1] -_021D844A: - mov r1, #0x7d - ldr r0, [r6] - lsl r1, r1, #6 - ldr r1, [r0, r1] - add r7, r7, #1 - add r2, r1, #1 - mov r1, #0x1f - and r2, r1 - mov r1, #0x7d - lsl r1, r1, #6 - str r2, [r0, r1] - cmp r7, #4 - blt _021D8400 -_021D8464: - pop {r3, r4, r5, r6, r7, pc} - nop -_021D8468: .word UNK04_0220FBC0 -_021D846C: .word 0x00001F38 -_021D8470: .word 0x00001F3C -_021D8474: .word 0x00001F18 - - thumb_func_start MOD04_021D8478 -MOD04_021D8478: ; 0x021D8478 - ldr r3, _021D847C ; =MOD04_021E2454 - bx r3 - .align 2, 0 -_021D847C: .word MOD04_021E2454 - - thumb_func_start MOD04_021D8480 -MOD04_021D8480: ; 0x021D8480 - ldr r1, _021D848C ; =UNK04_0220FBC0 - ldr r1, [r1] - add r1, r1, r0 - ldr r0, _021D8490 ; =0x00001F18 - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_021D848C: .word UNK04_0220FBC0 -_021D8490: .word 0x00001F18 - - thumb_func_start MOD04_021D8494 -MOD04_021D8494: ; 0x021D8494 - push {r3, lr} - ldr r1, _021D8510 ; =UNK04_0220FBC0 - ldr r3, [r1] - ldr r1, _021D8514 ; =0x00001F44 - ldr r2, [r3, r1] - cmp r2, #4 - beq _021D84A6 - mov r0, #0 - pop {r3, pc} -_021D84A6: - add r1, #0x18 - str r0, [r3, r1] - cmp r0, #0 - bge _021D84C2 - ldr r1, _021D8518 ; =MOD04_021D8558 - mov r2, #0 - ldr r3, _021D851C ; =MOD04_021D85A0 - mov r0, #2 - str r2, [sp] - bl MOD04_021DFD18 - mov r2, #1 - ldr r0, _021D8510 ; =UNK04_0220FBC0 - b _021D84D2 -_021D84C2: - ldr r1, _021D8520 ; =MOD04_021D8590 - mov r2, #0 - ldr r3, _021D851C ; =MOD04_021D85A0 - str r2, [sp] - bl MOD04_021DFB20 - ldr r0, _021D8510 ; =UNK04_0220FBC0 - mov r2, #2 -_021D84D2: - ldr r1, [r0] - ldr r0, _021D8524 ; =0x00001F48 - str r2, [r1, r0] - ldr r0, _021D8510 ; =UNK04_0220FBC0 - mov r2, #5 - ldr r1, [r0] - ldr r0, _021D8514 ; =0x00001F44 - str r2, [r1, r0] - ldr r0, _021D8528 ; =MOD04_021D7C30 - bl MOD04_021EAE18 - ldr r0, _021D852C ; =MOD04_021D7C4C - bl MOD04_021EADF8 - ldr r0, _021D8530 ; =MOD04_021D7D68 - mov r1, #0 - bl MOD04_021DFAF8 - ldr r0, _021D8534 ; =MOD04_021D7B14 - bl MOD04_021EADD8 - ldr r1, _021D8510 ; =UNK04_0220FBC0 - ldr r0, _021D8538 ; =0x00001F4C - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, #0x3c - str r3, [r1, r0] - mov r0, #1 - pop {r3, pc} - .align 2, 0 -_021D8510: .word UNK04_0220FBC0 -_021D8514: .word 0x00001F44 -_021D8518: .word MOD04_021D8558 -_021D851C: .word MOD04_021D85A0 -_021D8520: .word MOD04_021D8590 -_021D8524: .word 0x00001F48 -_021D8528: .word MOD04_021D7C30 -_021D852C: .word MOD04_021D7C4C -_021D8530: .word MOD04_021D7D68 -_021D8534: .word MOD04_021D7B14 -_021D8538: .word 0x00001F4C - - thumb_func_start MOD04_021D853C -MOD04_021D853C: ; 0x021D853C - ldr r0, _021D8550 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D854A - ldr r0, _021D8554 ; =0x00001F5C - ldr r0, [r1, r0] - bx lr -_021D854A: - mov r0, #0 - mvn r0, r0 - bx lr - .align 2, 0 -_021D8550: .word UNK04_0220FBC0 -_021D8554: .word 0x00001F5C - - thumb_func_start MOD04_021D8558 -MOD04_021D8558: ; 0x021D8558 - push {r3, lr} - cmp r0, #0 - bne _021D8582 - cmp r1, #0 - bne _021D8572 - ldr r0, _021D8584 ; =UNK04_0220FBC0 - ldr r2, [sp, #8] - ldr r1, [r0] - ldr r0, _021D8588 ; =0x00001F5C - str r2, [r1, r0] - bl MOD04_021D7BC0 - pop {r3, pc} -_021D8572: - cmp r2, #0 - bne _021D8582 - ldr r0, _021D8584 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D858C ; =0x00001F60 - mvn r2, r2 - str r2, [r1, r0] -_021D8582: - pop {r3, pc} - .align 2, 0 -_021D8584: .word UNK04_0220FBC0 -_021D8588: .word 0x00001F5C -_021D858C: .word 0x00001F60 - - thumb_func_start MOD04_021D8590 -MOD04_021D8590: ; 0x021D8590 - push {r3, lr} - cmp r0, #0 - bne _021D859E - cmp r1, #0 - bne _021D859E - bl MOD04_021D7BC0 -_021D859E: - pop {r3, pc} - - thumb_func_start MOD04_021D85A0 -MOD04_021D85A0: ; 0x021D85A0 - ldr r1, _021D85AC ; =UNK04_0220FBC0 - ldr r2, [r1] - ldr r1, _021D85B0 ; =0x00001F60 - str r0, [r2, r1] - bx lr - nop -_021D85AC: .word UNK04_0220FBC0 -_021D85B0: .word 0x00001F60 - - thumb_func_start MOD04_021D85B4 -MOD04_021D85B4: ; 0x021D85B4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D85D8 - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - add r1, sp, #0xc - bl DWC_CreateExchangeToken - b _021D85E6 -_021D85D8: - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - add r1, sp, #0 - bl DWC_CreateExchangeToken -_021D85E6: - mov r4, #0 - mov r7, #0x11 - ldr r6, _021D8614 ; =UNK04_0220FBC0 - add r5, r4, #0 - lsl r7, r7, #8 -_021D85F0: - mov r0, #0x11 - ldr r1, [r6] - lsl r0, r0, #8 - ldr r0, [r1, r0] - add r0, r0, r5 - bl DWC_GetFriendDataType - ldr r0, [r6] - ldr r0, [r0, r7] - add r0, r0, r5 - bl DWC_IsBuddyFriendData - add r4, r4, #1 - add r5, #0xc - cmp r4, #0x20 - blt _021D85F0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D8614: .word UNK04_0220FBC0 -_021D8618: .word 0x00001EF0 - - thumb_func_start MOD04_021D861C -MOD04_021D861C: ; 0x021D861C - ldr r3, _021D8620 ; =MOD04_021D8CC8 - bx r3 - .align 2, 0 -_021D8620: .word MOD04_021D8CC8 - - thumb_func_start MOD04_021D8624 -MOD04_021D8624: ; 0x021D8624 - ldr r0, _021D8638 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D8632 - ldr r0, _021D863C ; =0x00001F68 - ldr r0, [r1, r0] - bx lr -_021D8632: - mov r0, #0 - bx lr - nop -_021D8638: .word UNK04_0220FBC0 -_021D863C: .word 0x00001F68 - - thumb_func_start MOD04_021D8640 -MOD04_021D8640: ; 0x021D8640 - ldr r0, _021D8654 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D864E - ldr r0, _021D8658 ; =0x00001F60 - ldr r0, [r1, r0] - bx lr -_021D864E: - mov r0, #0 - bx lr - nop -_021D8654: .word UNK04_0220FBC0 -_021D8658: .word 0x00001F60 - - thumb_func_start MOD04_021D865C -MOD04_021D865C: ; 0x021D865C - ldr r0, _021D8670 ; =UNK04_0220FBC0 - ldr r2, [r0] - cmp r2, #0 - beq _021D866C - mov r1, #0 - ldr r0, _021D8674 ; =0x00001F60 - mvn r1, r1 - str r1, [r2, r0] -_021D866C: - bx lr - nop -_021D8670: .word UNK04_0220FBC0 -_021D8674: .word 0x00001F60 - - thumb_func_start MOD04_021D8678 -MOD04_021D8678: ; 0x021D8678 - ldr r1, _021D8684 ; =UNK04_0220FBC0 - ldr r2, [r1] - ldr r1, _021D8688 ; =0x00001F68 - str r0, [r2, r1] - bx lr - nop -_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 - - .global UNK04_0220BAC0 -UNK04_0220BAC0: ; 0x0220BAC0 - .byte 0x0D, 0x0D, 0x0D - - .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 -- cgit v1.2.3 From 2d33b678c305e8daaf3ebac503ea1a50eaf0ae8a Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 8 Aug 2021 11:58:03 +0100 Subject: split out another file --- arm9/arm9.lsf | 1 + arm9/global.inc | 14 + arm9/modules/04/asm/arm_04.s | 1684 +-------------------------------- arm9/modules/04/asm/mod04_021D9C2C.s | 2 +- arm9/modules/04/asm/mod04_021DA260.s | 1689 ++++++++++++++++++++++++++++++++++ 5 files changed, 1716 insertions(+), 1674 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DA260.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 08253453..b0cf06f4 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -660,6 +660,7 @@ Overlay MODULE_04 Object mod04_021D868C.o Object mod04_021D8D18.o Object mod04_021D9C2C.o + Object mod04_021DA260.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 09d6fe08..81856abb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6123,6 +6123,7 @@ .extern MOD04_021DA334 .extern MOD04_021DA388 .extern MOD04_021DA3DC +.extern MOD04_021DAACC .extern MOD04_021DAB68 .extern MOD04_021DAC98 .extern MOD04_021DAE4C @@ -6131,6 +6132,8 @@ .extern MOD04_021DB570 .extern MOD04_021DB608 .extern MOD04_021DCA84 +.extern MOD04_021DD36C +.extern MOD04_021DD4FC .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 @@ -8268,6 +8271,17 @@ .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_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index bbdafb6a..7d791941 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1499 +3,6 @@ .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 - arm_func_start MOD04_021DB730 MOD04_021DB730: ; 0x021DB730 stmdb sp!, {r4, lr} @@ -58665,175 +57172,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 @@ -59075,7 +57413,7 @@ UNK04_0220C63C: ; 0x0220C63C UNK04_0220C680: ; 0x0220C680 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C684 + .global UNK04_0220C684 UNK04_0220C684: ; 0x0220C684 .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 .word UNK04_0220C680 @@ -59111,7 +57449,7 @@ UNK04_0220C6CC: ; 0x0220C6CC UNK04_0220C7CC: ; 0x0220C7CC .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C7D0 + .global UNK04_0220C7D0 UNK04_0220C7D0: ; 0x0220C7D0 .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 .word UNK04_0220C7CC @@ -59148,7 +57486,7 @@ UNK04_0220C81C: ; 0x0220C81C UNK04_0220C91C: ; 0x0220C91C .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C920 + .global UNK04_0220C920 UNK04_0220C920: ; 0x0220C920 .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 .word UNK04_0220C91C @@ -59178,7 +57516,7 @@ UNK04_0220C984: ; 0x0220C984 UNK04_0220CA04: ; 0x0220CA04 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CA08 + .global UNK04_0220CA08 UNK04_0220CA08: ; 0x0220CA08 .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 .word UNK04_0220CA04 @@ -59204,7 +57542,7 @@ UNK04_0220CA48: ; 0x0220CA48 UNK04_0220CAC8: ; 0x0220CAC8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CACC + .global UNK04_0220CACC UNK04_0220CACC: ; 0x0220CACC .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 .word UNK04_0220CAC8 @@ -59234,7 +57572,7 @@ UNK04_0220CB30: ; 0x0220CB30 UNK04_0220CBB0: ; 0x0220CBB0 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CBB4 + .global UNK04_0220CBB4 UNK04_0220CBB4: ; 0x0220CBB4 .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 .word UNK04_0220CBB0 @@ -59266,7 +57604,7 @@ UNK04_0220CC48: ; 0x0220CC48 UNK04_0220CCD0: ; 0x0220CCD0 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CCD4 + .global UNK04_0220CCD4 UNK04_0220CCD4: ; 0x0220CCD4 .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 .word UNK04_0220CCD0 @@ -59297,7 +57635,7 @@ UNK04_0220CD68: ; 0x0220CD68 UNK04_0220CDE8: ; 0x0220CDE8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CDEC + .global UNK04_0220CDEC UNK04_0220CDEC: ; 0x0220CDEC .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 .word UNK04_0220CDE8 @@ -59331,7 +57669,7 @@ UNK04_0220CE80: ; 0x0220CE80 UNK04_0220CF14: ; 0x0220CF14 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CF18 + .global UNK04_0220CF18 UNK04_0220CF18: ; 0x0220CF18 .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 .word UNK04_0220CF14 @@ -59372,7 +57710,7 @@ UNK04_0220CFC8: ; 0x0220CFC8 UNK04_0220D0C8: ; 0x0220D0C8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220D0CC + .global UNK04_0220D0CC UNK04_0220D0CC: ; 0x0220D0CC .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 .word UNK04_0220D0C8 @@ -59401,7 +57739,7 @@ UNK04_0220D124: ; 0x0220D124 UNK04_0220D1A4: ; 0x0220D1A4 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220D1A8 + .global UNK04_0220D1A8 UNK04_0220D1A8: ; 0x0220D1A8 .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 .word UNK04_0220D1A4 diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s index 206df265..fdff3193 100644 --- a/arm9/modules/04/asm/mod04_021D9C2C.s +++ b/arm9/modules/04/asm/mod04_021D9C2C.s @@ -542,7 +542,7 @@ UNK04_0220C0B8: ; 0x0220C0B8 .asciz "%02d%02d%02d%02d%02d%02d" .balign 4, 0 - .global UNK_0220C0D4 + .global UNK04_0220C0D4 UNK04_0220C0D4: ; 0x0220C0D4 .asciz "%02d:0000000-00" 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 -- cgit v1.2.3 From 3e824244c8d3a0f43a687d8412651a244b50a65d Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 9 Aug 2021 02:58:29 +0100 Subject: another mod04 file --- arm9/arm9.lsf | 1 + arm9/global.inc | 5 + arm9/modules/04/asm/arm_04.s | 1494 +-------------------------------- arm9/modules/04/asm/mod04_021DB730.s | 1512 ++++++++++++++++++++++++++++++++++ 4 files changed, 1522 insertions(+), 1490 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DB730.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b0cf06f4..834780fa 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -661,6 +661,7 @@ Overlay MODULE_04 Object mod04_021D8D18.o Object mod04_021D9C2C.o Object mod04_021DA260.o + Object mod04_021DB730.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 81856abb..18dca976 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6131,6 +6131,11 @@ .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_021DD36C .extern MOD04_021DD4FC diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 7d791941..26b8d60b 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1364 +3,6 @@ .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 - arm_func_start MOD04_021DCA84 MOD04_021DCA84: ; 0x021DCA84 stmdb sp!, {r4, r5, r6, r7, r8, lr} @@ -57015,12 +55657,13 @@ _0220BAB8: arm_func_end MOD04_url_strlen .section .rodata - .global UNK_0220BAC4 + + .global UNK04_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 @@ -57172,124 +55815,7 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 + .global UNK04_0220C520 UNK04_0220C520: ; 0x0220C520 .byte 0x44, 0x65, 0x63, 0x00 @@ -60465,18 +58991,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .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 - .global UNK04_022104F8 UNK04_022104F8: ; 0x022104F8 .space 0x4 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 -- cgit v1.2.3 From d3a9506d773546cf353440448cee7fd9d447bc1d Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 13 Aug 2021 15:45:20 +0100 Subject: two more mod04 files --- arm9/arm9.lsf | 2 + arm9/global.inc | 7 + arm9/modules/04/asm/arm_04.s | 746 ----------------------------------- arm9/modules/04/asm/mod04_021DC8A4.s | 240 +++++++++++ arm9/modules/04/asm/mod04_021DCCC8.s | 545 +++++++++++++++++++++++++ 5 files changed, 794 insertions(+), 746 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DC8A4.s create mode 100644 arm9/modules/04/asm/mod04_021DCCC8.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 834780fa..e8652298 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -662,6 +662,8 @@ Overlay MODULE_04 Object mod04_021D9C2C.o Object mod04_021DA260.o Object mod04_021DB730.o + Object mod04_021DC8A4.o + Object mod04_021DCCC8.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 18dca976..9a3575cb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6137,8 +6137,13 @@ .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_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 @@ -8291,6 +8296,8 @@ .extern UNK04_02210484 .extern UNK04_02210488 .extern UNK04_0221048C +.extern UNK04_022104F8 +.extern UNK04_022104FC .extern UNK05_021F64C8 .extern UNK05_021F8B84 .extern UNK05_021F8B88 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 26b8d60b..43c06600 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,632 +3,6 @@ .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 - - 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} @@ -55815,114 +55189,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK04_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 @@ -58991,18 +58257,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .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 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 -- cgit v1.2.3 From 496ab2d25dd76329ef5bb95090291e237a56f474 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 14:51:17 +0100 Subject: literally one single random scrcmd func in a mod04 PR --- arm9/asm/scrcmd_asm.s | 26 -------------------------- arm9/src/scrcmd.c | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 29 deletions(-) (limited to 'arm9') 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/src/scrcmd.c b/arm9/src/scrcmd.c index c79684a0..ceb1a1cf 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,4 +1,5 @@ #include "scrcmd.h" +#include "unk_0200CA44.h" #include "unk_0204639C.h" #include "main.h" #include "options.h" @@ -54,11 +55,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 +80,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]; @@ -1355,13 +1357,13 @@ THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx) 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 +1407,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); +} -- cgit v1.2.3 From bdd8885a810c5027e729c6bba3b8a1e61ef9c6ca Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 17:59:53 +0100 Subject: m --- arm9/arm9.lsf | 1 + arm9/modules/04/asm/arm_04.s | 244 ---------------------------------- arm9/modules/04/asm/mod04_021DD36C.s | 248 +++++++++++++++++++++++++++++++++++ 3 files changed, 249 insertions(+), 244 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD36C.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e8652298..fe408d4a 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,6 +664,7 @@ Overlay MODULE_04 Object mod04_021DB730.o Object mod04_021DC8A4.o Object mod04_021DCCC8.o + Object mod04_021DD36C.o Object arm_04.o } diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 43c06600..9aa15f74 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,238 +3,6 @@ .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 - arm_func_start MOD04_021DD6B0 MOD04_021DD6B0: ; 0x021DD6B0 ldr r3, _021DD6CC ; =UNK04_02210508 @@ -55189,18 +54957,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 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 -- cgit v1.2.3 From ffb7a81a6ed6cfc4239285157938dbc2e4446ebc Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:07:07 +0100 Subject: o --- arm9/arm9.lsf | 1 + arm9/global.inc | 1 + arm9/modules/04/asm/arm_04.s | 139 --------------------------------- arm9/modules/04/asm/mod04_021DD6B0.s | 145 +++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 139 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD6B0.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index fe408d4a..2eaaeb89 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -665,6 +665,7 @@ Overlay MODULE_04 Object mod04_021DC8A4.o Object mod04_021DCCC8.o Object mod04_021DD36C.o + Object mod04_021DD6B0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 9a3575cb..f3916409 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6144,6 +6144,7 @@ .extern MOD04_021DD36C .extern MOD04_021DD4FC .extern MOD04_021DD6B0 +.extern MOD04_021DD6D4 .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 9aa15f74..23fd3766 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,137 +3,6 @@ .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 - arm_func_start MOD04_021DD82C MOD04_021DD82C: ; 0x021DD82C ldr ip, _021DD840 ; =MOD04_021DD904 @@ -58013,14 +57882,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210508 -UNK04_02210508: ; 0x02210508 - .space 0x4 - - .global UNK04_0221050C -UNK04_0221050C: ; 0x0221050C - .space 0x4 - .global UNK04_02210510 UNK04_02210510: ; 0x02210510 .space 0x4 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 -- cgit v1.2.3 From 5eb6b79b7f664af76802e5765dfe1a301e3f85f7 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:11:59 +0100 Subject: d --- arm9/arm9.lsf | 1 + arm9/global.inc | 1 + arm9/modules/04/asm/arm_04.s | 139 --------------------------------- arm9/modules/04/asm/mod04_021DD82C.s | 145 +++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 139 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD82C.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 2eaaeb89..c7dbe13c 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -666,6 +666,7 @@ Overlay MODULE_04 Object mod04_021DCCC8.o Object mod04_021DD36C.o Object mod04_021DD6B0.o + Object mod04_021DD82C.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f3916409..450e43b9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6152,6 +6152,7 @@ .extern MOD04_021DD844 .extern MOD04_021DD860 .extern MOD04_021DD904 +.extern MOD04_021DD924 .extern MOD04_021DD944 .extern MOD04_021DD968 .extern MOD04_021DD984 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 23fd3766..714a88a0 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,137 +3,6 @@ .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 - arm_func_start MOD04_021DD984 MOD04_021DD984: ; 0x021DD984 stmdb sp!, {lr} @@ -57882,14 +57751,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210510 -UNK04_02210510: ; 0x02210510 - .space 0x4 - - .global UNK04_02210514 -UNK04_02210514: ; 0x02210514 - .space 0x4 - .global UNK04_02210518 UNK04_02210518: ; 0x02210518 .space 0x4 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 -- cgit v1.2.3 From 49db60f9daaaed66e77f57ba5a5e5570ba70ffc4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:24:26 +0100 Subject: u --- arm9/arm9.lsf | 1 + arm9/global.inc | 4 + arm9/modules/04/asm/arm_04.s | 452 +---------------------------------- arm9/modules/04/asm/mod04_021DD984.s | 452 +++++++++++++++++++++++++++++++++++ 4 files changed, 460 insertions(+), 449 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD984.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c7dbe13c..63021023 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -667,6 +667,7 @@ Overlay MODULE_04 Object mod04_021DD36C.o Object mod04_021DD6B0.o Object mod04_021DD82C.o + Object mod04_021DD984.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 450e43b9..9eae5042 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6207,6 +6207,7 @@ .extern MOD04_021EB59C .extern MOD04_021EB9A4 .extern MOD04_021EB9D8 +.extern MOD04_021EBA28 .extern MOD04_021EBAB8 .extern MOD04_021EBAE8 .extern MOD04_021EBB80 @@ -8294,6 +8295,9 @@ .extern UNK04_0220CF18 .extern UNK04_0220D0CC .extern UNK04_0220D1A8 +.extern UNK04_0220D280 +.extern UNK04_0220D2A8 +.extern UNK04_0220D2CC .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 714a88a0..32f47cef 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,448 +3,6 @@ .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 - arm_func_start MOD04_021DDF40 MOD04_021DDF40: ; 0x021DDF40 ldr ip, _021DDF48 ; =MOD04_021D9974 @@ -55050,19 +54608,19 @@ UNK04_0220D200: ; 0x0220D200 .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 + .global UNK04_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 + .global UNK04_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 + .global UNK04_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 @@ -57751,10 +57309,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210518 -UNK04_02210518: ; 0x02210518 - .space 0x4 - .global UNK04_0221051C UNK04_0221051C: ; 0x0221051C .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..c66ab3dd --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD984.s @@ -0,0 +1,452 @@ + .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 .bss + + .global UNK04_02210518 +UNK04_02210518: ; 0x02210518 + .space 0x4 -- cgit v1.2.3 From 2958ecc0fc0aea7c3e12138b2c7caf6fcd770295 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 19:28:41 +0100 Subject: l --- arm9/arm9.lsf | 1 + arm9/global.inc | 3 - arm9/modules/04/asm/arm_04.s | 372 ----------------------------- arm9/modules/04/asm/mod04_021DD984.s | 17 ++ arm9/modules/04/asm/mod04_0220C680_certs.s | 325 +++++++++++++++++++++++++ 5 files changed, 343 insertions(+), 375 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_0220C680_certs.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 63021023..7a71025b 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -665,6 +665,7 @@ Overlay MODULE_04 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 diff --git a/arm9/global.inc b/arm9/global.inc index 9eae5042..f2607bf6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8295,9 +8295,6 @@ .extern UNK04_0220CF18 .extern UNK04_0220D0CC .extern UNK04_0220D1A8 -.extern UNK04_0220D280 -.extern UNK04_0220D2A8 -.extern UNK04_0220D2CC .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 32f47cef..645fa1b7 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -54253,378 +54253,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220C680 -UNK04_0220C680: ; 0x0220C680 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 UNK04_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 diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s index c66ab3dd..fa1292f3 100644 --- a/arm9/modules/04/asm/mod04_021DD984.s +++ b/arm9/modules/04/asm/mod04_021DD984.s @@ -445,6 +445,23 @@ MOD04_021DDEE0: ; 0x021DDEE0 _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 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 -- cgit v1.2.3 From 79375b4aa98c8e2980bde41be6fc8e9e0781b9fd Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 19:38:27 +0100 Subject: e --- arm9/arm9.lsf | 1 + arm9/global.inc | 2 + arm9/modules/04/asm/arm_04.s | 282 --------------------------------- arm9/modules/04/asm/mod04_021DDF40.s | 291 +++++++++++++++++++++++++++++++++++ 4 files changed, 294 insertions(+), 282 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DDF40.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7a71025b..c7d05c12 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -669,6 +669,7 @@ Overlay MODULE_04 Object mod04_021DD6B0.o Object mod04_021DD82C.o Object mod04_021DD984.o + Object mod04_021DDF40.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f2607bf6..7332b638 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6169,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 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 645fa1b7..e5ec274a 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,276 +3,6 @@ .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 - arm_func_start MOD04_021DE2D0 MOD04_021DE2D0: ; 0x021DE2D0 stmdb sp!, {r4, r5, lr} @@ -54253,14 +53983,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 @@ -56937,10 +56659,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_0221051C -UNK04_0221051C: ; 0x0221051C - .space 0x4 - .global UNK04_02210520 UNK04_02210520: ; 0x02210520 .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..92320fd3 --- /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 UNK_0220D2EC +UNK04_0220D2EC: ; 0x0220D2EC + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_0220D2F0 +UNK04_0220D2F0: ; 0x0220D2F0 + .asciz "0000" + + .balign 4, 0 + .section .bss + + .global UNK04_0221051C +UNK04_0221051C: ; 0x0221051C + .space 0x4 -- cgit v1.2.3 From 52da4a5a72a753d99ec0fdcd44429dcdbfeed1d4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 20:04:33 +0100 Subject: 0 --- arm9/arm9.lsf | 1 + arm9/global.inc | 8 + arm9/modules/04/asm/arm_04.s | 473 ---------------------------------- arm9/modules/04/asm/mod04_021DDF40.s | 4 +- arm9/modules/04/asm/mod04_021DE2D0.s | 482 +++++++++++++++++++++++++++++++++++ 5 files changed, 493 insertions(+), 475 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DE2D0.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c7d05c12..ba722fd1 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -670,6 +670,7 @@ Overlay MODULE_04 Object mod04_021DD82C.o Object mod04_021DD984.o Object mod04_021DDF40.o + Object mod04_021DE2D0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 7332b638..c7772ac0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6236,6 +6236,14 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.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 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index e5ec274a..28b7edca 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,461 +3,6 @@ .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 - arm_func_start MOD04_021DE89C MOD04_021DE89C: ; 0x021DE89C ldrh r1, [r0] @@ -53983,20 +53528,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 @@ -56659,10 +56190,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210520 -UNK04_02210520: ; 0x02210520 - .space 0x4 - .global UNK04_02210524 UNK04_02210524: ; 0x02210524 .space 0x18 diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s index 92320fd3..6be2d80a 100644 --- a/arm9/modules/04/asm/mod04_021DDF40.s +++ b/arm9/modules/04/asm/mod04_021DDF40.s @@ -275,11 +275,11 @@ _021DE2CC: .word 0xBC19137F .section .data - .global UNK_0220D2EC + .global UNK04_0220D2EC UNK04_0220D2EC: ; 0x0220D2EC .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D2F0 + .global UNK04_0220D2F0 UNK04_0220D2F0: ; 0x0220D2F0 .asciz "0000" 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 -- cgit v1.2.3 From 93e1e9884e1b857bf32b4db0a718510790840f88 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 20:10:04 +0100 Subject: 4 --- arm9/arm9.lsf | 1 + arm9/global.inc | 5 + arm9/modules/04/asm/arm_04.s | 226 --------------------------------- arm9/modules/04/asm/mod04_021DE89C.s | 236 +++++++++++++++++++++++++++++++++++ 4 files changed, 242 insertions(+), 226 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DE89C.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ba722fd1..ed1a7956 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -671,6 +671,7 @@ Overlay MODULE_04 Object mod04_021DD984.o Object mod04_021DDF40.o Object mod04_021DE2D0.o + Object mod04_021DE89C.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index c7772ac0..e4276c87 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6180,6 +6180,11 @@ .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_021DF95C .extern MOD04_021DF978 .extern MOD04_021DFA40 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 28b7edca..ec23a828 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,224 +3,6 @@ .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 - arm_func_start MOD04_021DEB90 MOD04_021DEB90: ; 0x021DEB90 stmdb sp!, {lr} @@ -53528,10 +53310,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 @@ -56190,10 +55968,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210524 -UNK04_02210524: ; 0x02210524 - .space 0x18 - .global UNK04_0221053C UNK04_0221053C: ; 0x0221053C .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 -- cgit v1.2.3 From 6d864e78e737cec5387da17e5062b9e64bcec5eb Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 21:43:23 +0100 Subject: another file --- arm9/arm9.lsf | 1 + arm9/global.inc | 81 ++ arm9/modules/04/asm/arm_04.s | 2032 --------------------------------- arm9/modules/04/asm/mod04_021DEB90.s | 2044 ++++++++++++++++++++++++++++++++++ 4 files changed, 2126 insertions(+), 2032 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DEB90.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ed1a7956..5b9fee47 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -672,6 +672,7 @@ Overlay MODULE_04 Object mod04_021DDF40.o Object mod04_021DE2D0.o Object mod04_021DE89C.o + Object mod04_021DEB90.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index e4276c87..f08623d5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6185,8 +6185,20 @@ .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 @@ -6196,10 +6208,54 @@ .extern MOD04_021DFF74 .extern MOD04_021E0200 .extern MOD04_021E0374 +.extern MOD04_021E0E48 +.extern MOD04_021E0EAC +.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_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_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 @@ -6220,6 +6276,8 @@ .extern MOD04_021EBB80 .extern MOD04_021EBC60 .extern MOD04_021EE5F4 +.extern MOD04_021EE6A0 +.extern MOD04_021EE898 .extern MOD04_021EEFA8 .extern MOD04_021EEFFC .extern MOD04_021EF06C @@ -6241,6 +6299,27 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.extern MOD04_021F05F4 +.extern MOD04_021F0664 +.extern MOD04_021F06E4 +.extern MOD04_021F0EB0 +.extern MOD04_021F0F18 +.extern MOD04_021F0F64 +.extern MOD04_021F0F94 +.extern MOD04_021FBE7C +.extern MOD04_021FD3C4 +.extern MOD04_021FD434 +.extern MOD04_021FD43C +.extern MOD04_021FD45C +.extern MOD04_021FD488 +.extern MOD04_021FD6C8 +.extern MOD04_021FD704 +.extern MOD04_021FD71C +.extern MOD04_021FFEB0 +.extern MOD04_02200D6C +.extern MOD04_02202280 +.extern MOD04_02202308 +.extern MOD04_02203E80 .extern MOD04_022069DC .extern MOD04_02206E6C .extern MOD04_02206EFC @@ -8316,6 +8395,8 @@ .extern UNK04_0221048C .extern UNK04_022104F8 .extern UNK04_022104FC +.extern UNK04_02210F94 +.extern UNK04_02211094 .extern UNK05_021F64C8 .extern UNK05_021F8B84 .extern UNK05_021F8B88 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index ec23a828..5d87ee03 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,2002 +3,6 @@ .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 - arm_func_start MOD04_021E05FC MOD04_021E05FC: ; 0x021E05FC ldr r0, _021E0624 ; =UNK04_022106C8 @@ -53310,26 +51314,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 @@ -55968,22 +53952,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .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 - .global UNK04_022106C4 UNK04_022106C4: ; 0x022106C4 .space 0x4 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 -- cgit v1.2.3 From 5b5d2638dc1ffe73295ce239185c3c652f9ab3d3 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 17 Aug 2021 13:41:32 +0100 Subject: mod04_021E05FC --- arm9/arm9.lsf | 1 + arm9/global.inc | 7 + arm9/modules/04/asm/arm_04.s | 822 ---------------------------------- arm9/modules/04/asm/mod04_021E05FC.s | 830 +++++++++++++++++++++++++++++++++++ 4 files changed, 838 insertions(+), 822 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021E05FC.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 5b9fee47..31f43a15 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -673,6 +673,7 @@ Overlay MODULE_04 Object mod04_021DE2D0.o Object mod04_021DE89C.o Object mod04_021DEB90.o + Object mod04_021E05FC.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f08623d5..59162090 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6208,8 +6208,10 @@ .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 @@ -6248,6 +6250,7 @@ .extern MOD04_021E9568 .extern MOD04_021E9FD0 .extern MOD04_021EA138 +.extern MOD04_021EA1E0 .extern MOD04_021EA368 .extern MOD04_021EA530 .extern MOD04_021EA9C4 @@ -6302,6 +6305,10 @@ .extern MOD04_021F05F4 .extern MOD04_021F0664 .extern MOD04_021F06E4 +.extern MOD04_021F0B30 +.extern MOD04_021F0B9C +.extern MOD04_021F0D54 +.extern MOD04_021F0D8C .extern MOD04_021F0EB0 .extern MOD04_021F0F18 .extern MOD04_021F0F64 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 5d87ee03..696e0b3b 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,812 +3,6 @@ .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 - arm_func_start MOD04_021E10F8 MOD04_021E10F8: ; 0x021E10F8 ldr r0, _021E1108 ; =UNK04_022106D0 @@ -51314,10 +50508,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D34C -UNK04_0220D34C: ; 0x0220D34C - .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D350 UNK04_0220D350: ; 0x0220D350 .byte 0x00, 0x00, 0x00, 0x00 @@ -53952,18 +53142,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .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 - .global UNK04_022106D0 UNK04_022106D0: ; 0x022106D0 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s new file mode 100644 index 00000000..21395d39 --- /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 UNK_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 -- cgit v1.2.3 From ced29f6660dbe5b77d4b18bbedaa36fd25701535 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 17 Aug 2021 17:41:33 +0100 Subject: some more mod04 files --- arm9/arm9.lsf | 2 + arm9/global.inc | 51 + arm9/modules/04/asm/arm_04.s | 10874 +-------------------------------- arm9/modules/04/asm/mod04_021E05FC.s | 2 +- arm9/modules/04/asm/mod04_021E10F8.s | 1670 +++++ arm9/modules/04/asm/mod04_021E26D0.s | 9238 ++++++++++++++++++++++++++++ 6 files changed, 10963 insertions(+), 10874 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021E10F8.s create mode 100644 arm9/modules/04/asm/mod04_021E26D0.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 31f43a15..ea5e81ad 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -674,6 +674,8 @@ Overlay MODULE_04 Object mod04_021DE89C.o Object mod04_021DEB90.o Object mod04_021E05FC.o + Object mod04_021E10F8.o + Object mod04_021E26D0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 59162090..bb075cdf 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6241,6 +6241,7 @@ .extern MOD04_021E8830 .extern MOD04_021E8A50 .extern MOD04_021E8A74 +.extern MOD04_021E8C08 .extern MOD04_021E8DC0 .extern MOD04_021E8E08 .extern MOD04_021E8EF4 @@ -6265,6 +6266,7 @@ .extern MOD04_021EAE18 .extern MOD04_021EAE38 .extern MOD04_021EAE90 +.extern MOD04_021EAF20 .extern MOD04_021EB044 .extern MOD04_021EB0FC .extern MOD04_021EB3B8 @@ -6302,31 +6304,79 @@ .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 @@ -8396,6 +8446,7 @@ .extern UNK04_0220CF18 .extern UNK04_0220D0CC .extern UNK04_0220D1A8 +.extern UNK04_0220F018 .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 696e0b3b..71bf3cb8 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,10712 +3,6 @@ .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 - - 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} @@ -50351,11 +39645,6 @@ _0220BAB8: .section .rodata - .global UNK04_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 UNK04_0220BADC UNK04_0220BADC: ; 0x0220BADC .byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32 @@ -50508,131 +39797,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .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 .byte 0x44, 0x54, 0x00, 0x00 @@ -52498,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 @@ -53142,42 +42306,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .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/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s index 21395d39..0ce6279d 100644 --- a/arm9/modules/04/asm/mod04_021E05FC.s +++ b/arm9/modules/04/asm/mod04_021E05FC.s @@ -811,7 +811,7 @@ _021E10F4: .word UNK04_022106C8 .section .data - .global UNK_0220D34C + .global UNK04_0220D34C UNK04_0220D34C: ; 0x0220D34C .byte 0x00, 0x00, 0x00, 0x00 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 -- cgit v1.2.3 From 964dca06569f520af325d98b093f50196abb9da3 Mon Sep 17 00:00:00 2001 From: tgsm Date: Tue, 17 Aug 2021 17:33:44 -0400 Subject: Split module 20 --- arm9/arm9.lsf | 7 +- arm9/global.inc | 13 + arm9/modules/20/asm/mod20_02252440.s | 1245 +++++++++ arm9/modules/20/asm/mod20_02252C5C.s | 1400 ++++++++++ arm9/modules/20/asm/mod20_022536F4.s | 682 +++++ arm9/modules/20/asm/mod20_02253BA4.s | 808 ++++++ arm9/modules/20/asm/mod20_02254130.s | 458 ++++ arm9/modules/20/asm/mod20_02254420.s | 185 ++ arm9/modules/20/asm/module_20.s | 4748 ---------------------------------- 9 files changed, 4797 insertions(+), 4749 deletions(-) create mode 100644 arm9/modules/20/asm/mod20_02252440.s create mode 100644 arm9/modules/20/asm/mod20_02252C5C.s create mode 100644 arm9/modules/20/asm/mod20_022536F4.s create mode 100644 arm9/modules/20/asm/mod20_02253BA4.s create mode 100644 arm9/modules/20/asm/mod20_02254130.s create mode 100644 arm9/modules/20/asm/mod20_02254420.s delete mode 100644 arm9/modules/20/asm/module_20.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ea5e81ad..64944997 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -852,7 +852,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/global.inc b/arm9/global.inc index bb075cdf..f7cf43c0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7614,6 +7614,7 @@ .extern MOD20_0225298C .extern MOD20_022529A0 .extern MOD20_022529B4 +.extern MOD20_02252B1C .extern MOD20_02252B28 .extern MOD20_02252B48 .extern MOD20_02252B68 @@ -7625,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 @@ -7646,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 @@ -7662,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 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 -- cgit v1.2.3 From 20b8fa77bcd1875640cb2bb61375bcf0a0bdd45f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Aug 2021 08:18:54 -0400 Subject: unk_02015D14 --- arm9/asm/unk_02015D14.s | 238 ----------------------------------- arm9/src/text.c | 2 +- arm9/src/unk_02015D14.c | 325 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 326 insertions(+), 239 deletions(-) delete mode 100644 arm9/asm/unk_02015D14.s create mode 100644 arm9/src/unk_02015D14.c (limited to 'arm9') 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/src/text.c b/arm9/src/text.c index 64b3587e..f178fa9d 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -282,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; diff --git a/arm9/src/unk_02015D14.c b/arm9/src/unk_02015D14.c new file mode 100644 index 00000000..7a6598a2 --- /dev/null +++ b/arm9/src/unk_02015D14.c @@ -0,0 +1,325 @@ +#include "global.h" +#include "unk_02015D14.h" + +static const u16 UNK_020ED734[][2] = { + {0x0001, 0x01DE}, + {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}, + {0x00A3, 0x0122}, + {0x00A4, 0x0123}, + {0x00A5, 0x0124}, + {0x00A6, 0x0125}, + {0x00A7, 0x0126}, + {0x00A8, 0x0127}, + {0x00A9, 0x0128}, + {0x00AA, 0x0129}, + {0x00AB, 0x012A}, + {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}, + {0x00AD, 0x012C}, + {0x00AE, 0x012D}, + {0x00AF, 0x012E}, + {0x00B0, 0x012F}, + {0x00B1, 0x0130}, + {0x00B2, 0x0131}, + {0x00B3, 0x0132}, + {0x00B4, 0x0133}, + {0x00B5, 0x0134}, + {0x00B6, 0x0135}, + {0x00B7, 0x0136}, + {0x00B8, 0x0137}, + {0x00B9, 0x0138}, + {0x00BA, 0x0139}, + {0x00BB, 0x013A}, + {0x00BC, 0x013B}, + {0x00BD, 0x013C}, + {0x00BE, 0x013D}, + {0x00BF, 0x013E}, + {0x00C0, 0x013F}, + {0x00C1, 0x0140}, + {0x00C2, 0x0141}, + {0x00C3, 0x0142}, + {0x00C4, 0x0143}, + {0x00C5, 0x0144}, + {0x00C6, 0x0145}, + {0x00C7, 0x0146}, + {0x00C8, 0x0147}, + {0x00C9, 0x0148}, + {0x00CA, 0x0149}, + {0x00CB, 0x014A}, + {0x00CC, 0x014B}, + {0x00CD, 0x014C}, + {0x00CE, 0x014D}, + {0x00CF, 0x014E}, + {0x00D0, 0x014F}, + {0x00D1, 0x0150}, + {0x00D2, 0x0151}, + {0x00D3, 0x0152}, + {0x00D4, 0x0153}, + {0x00D5, 0x0154}, + {0x00D6, 0x0155}, + {0x00D7, 0x0156}, + {0x00D8, 0x0157}, + {0x00D9, 0x0158}, + {0x00DA, 0x0159}, + {0x00DB, 0x015A}, + {0x00DC, 0x015B}, + {0x00DD, 0x015C}, + {0x00DE, 0x015D}, + {0x00DF, 0x015E}, + {0x011F, 0x011F}, + {0x00F6, 0x01C4}, + {0x0163, 0x0163}, + {0x0175, 0x0175}, + {0x017B, 0x017B}, + {0x0183, 0x0183}, + {0x0195, 0x0195}, + {0x019B, 0x019B}, +}; + +static THUMB_FUNC u16 FUN_02015D14(u32 a0) +{ + switch (a0) + { + default: + return 0xEA; + case 2: + case 4: + case 7: + return 0x1B4; + case 3: + return 0x1B7; + case 5: + return 0x1B6; + } +} + +static THUMB_FUNC u16 FUN_02015D50(u32 a0) +{ + switch (a0) + { + default: + return 0xEB; + case 2: + case 4: + case 7: + return 0x1B5; + case 3: + return 0x1B8; + case 5: + return 0x1B4; + } +} + +THUMB_FUNC BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d) +{ + s32 r2; + u32 r4; + s32 r3; + s32 r1; + + r2 = (d != 1) ? 1 : 0; + for (r4 = 0; r4 < c - 1; r4++) + { + if (a[r4] == 0xFF) + break; + if (a[r4] >= 0xF7) + { + r3 = (s32)((c - 1) < 10 ? (c - 1) : 10); + for (r1 = 0; r1 < r3; r1++) + { + b[r1] = 0x1AC; + } + b[r1] = 0xFFFF; + return FALSE; + } + switch (UNK_020ED734[a[r4]][r2]) + { + case 0xEA: + b[r4] = FUN_02015D14(d); + break; + case 0xEB: + b[r4] = FUN_02015D50(d); + break; + default: + b[r4] = UNK_020ED734[a[r4]][r2]; + break; + } + } + b[r4] = 0xFFFF; + return TRUE; +} -- cgit v1.2.3 From ed84d6a9a3bfc2c092e22b8e941cac775dc14127 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Aug 2021 08:44:22 -0400 Subject: Rename unk_0201D514 --> rs_migrate_string; document --- arm9/arm9.lsf | 2 +- arm9/global.inc | 2 +- arm9/modules/83/asm/module_83.s | 10 +- arm9/src/rs_migrate_string.c | 327 ++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_02015D14.c | 325 --------------------------------------- 5 files changed, 334 insertions(+), 332 deletions(-) create mode 100644 arm9/src/rs_migrate_string.c delete mode 100644 arm9/src/unk_02015D14.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 64944997..51b0b5c2 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -48,7 +48,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 diff --git a/arm9/global.inc b/arm9/global.inc index f7cf43c0..98ee4d76 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 06fa49b6..0cdcae12 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -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 @@ -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 @@ -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 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}, // + {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/unk_02015D14.c b/arm9/src/unk_02015D14.c deleted file mode 100644 index 7a6598a2..00000000 --- a/arm9/src/unk_02015D14.c +++ /dev/null @@ -1,325 +0,0 @@ -#include "global.h" -#include "unk_02015D14.h" - -static const u16 UNK_020ED734[][2] = { - {0x0001, 0x01DE}, - {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}, - {0x00A3, 0x0122}, - {0x00A4, 0x0123}, - {0x00A5, 0x0124}, - {0x00A6, 0x0125}, - {0x00A7, 0x0126}, - {0x00A8, 0x0127}, - {0x00A9, 0x0128}, - {0x00AA, 0x0129}, - {0x00AB, 0x012A}, - {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}, - {0x00AD, 0x012C}, - {0x00AE, 0x012D}, - {0x00AF, 0x012E}, - {0x00B0, 0x012F}, - {0x00B1, 0x0130}, - {0x00B2, 0x0131}, - {0x00B3, 0x0132}, - {0x00B4, 0x0133}, - {0x00B5, 0x0134}, - {0x00B6, 0x0135}, - {0x00B7, 0x0136}, - {0x00B8, 0x0137}, - {0x00B9, 0x0138}, - {0x00BA, 0x0139}, - {0x00BB, 0x013A}, - {0x00BC, 0x013B}, - {0x00BD, 0x013C}, - {0x00BE, 0x013D}, - {0x00BF, 0x013E}, - {0x00C0, 0x013F}, - {0x00C1, 0x0140}, - {0x00C2, 0x0141}, - {0x00C3, 0x0142}, - {0x00C4, 0x0143}, - {0x00C5, 0x0144}, - {0x00C6, 0x0145}, - {0x00C7, 0x0146}, - {0x00C8, 0x0147}, - {0x00C9, 0x0148}, - {0x00CA, 0x0149}, - {0x00CB, 0x014A}, - {0x00CC, 0x014B}, - {0x00CD, 0x014C}, - {0x00CE, 0x014D}, - {0x00CF, 0x014E}, - {0x00D0, 0x014F}, - {0x00D1, 0x0150}, - {0x00D2, 0x0151}, - {0x00D3, 0x0152}, - {0x00D4, 0x0153}, - {0x00D5, 0x0154}, - {0x00D6, 0x0155}, - {0x00D7, 0x0156}, - {0x00D8, 0x0157}, - {0x00D9, 0x0158}, - {0x00DA, 0x0159}, - {0x00DB, 0x015A}, - {0x00DC, 0x015B}, - {0x00DD, 0x015C}, - {0x00DE, 0x015D}, - {0x00DF, 0x015E}, - {0x011F, 0x011F}, - {0x00F6, 0x01C4}, - {0x0163, 0x0163}, - {0x0175, 0x0175}, - {0x017B, 0x017B}, - {0x0183, 0x0183}, - {0x0195, 0x0195}, - {0x019B, 0x019B}, -}; - -static THUMB_FUNC u16 FUN_02015D14(u32 a0) -{ - switch (a0) - { - default: - return 0xEA; - case 2: - case 4: - case 7: - return 0x1B4; - case 3: - return 0x1B7; - case 5: - return 0x1B6; - } -} - -static THUMB_FUNC u16 FUN_02015D50(u32 a0) -{ - switch (a0) - { - default: - return 0xEB; - case 2: - case 4: - case 7: - return 0x1B5; - case 3: - return 0x1B8; - case 5: - return 0x1B4; - } -} - -THUMB_FUNC BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d) -{ - s32 r2; - u32 r4; - s32 r3; - s32 r1; - - r2 = (d != 1) ? 1 : 0; - for (r4 = 0; r4 < c - 1; r4++) - { - if (a[r4] == 0xFF) - break; - if (a[r4] >= 0xF7) - { - r3 = (s32)((c - 1) < 10 ? (c - 1) : 10); - for (r1 = 0; r1 < r3; r1++) - { - b[r1] = 0x1AC; - } - b[r1] = 0xFFFF; - return FALSE; - } - switch (UNK_020ED734[a[r4]][r2]) - { - case 0xEA: - b[r4] = FUN_02015D14(d); - break; - case 0xEB: - b[r4] = FUN_02015D50(d); - break; - default: - b[r4] = UNK_020ED734[a[r4]][r2]; - break; - } - } - b[r4] = 0xFFFF; - return TRUE; -} -- cgit v1.2.3 From 06b3faa2ef3e9a0ad297f4dfa48573bbed7249d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 18 Aug 2021 17:50:40 +0200 Subject: decompile and split unk_02009EAC.s --- arm9/arm9.lsf | 1 + arm9/asm/unk_02009EAC.s | 664 -------------------------------------- arm9/lib/libnns/include/NNS_g2d.h | 12 + arm9/src/unk_02009EAC.c | 170 ++++++++++ arm9/src/unk_0200A104.c | 178 ++++++++++ 5 files changed, 361 insertions(+), 664 deletions(-) delete mode 100644 arm9/asm/unk_02009EAC.s create mode 100644 arm9/src/unk_02009EAC.c create mode 100644 arm9/src/unk_0200A104.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 64944997..68f2037d 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -25,6 +25,7 @@ Static arm9 Object unk_02008AA4.o Object unk_02008DEC.o Object unk_02009EAC.o + Object unk_0200A104.o Object msgdata.o Object script_buffers.o Object unk_0200BA78.o 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/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/src/unk_02009EAC.c b/arm9/src/unk_02009EAC.c new file mode 100644 index 00000000..df21ed80 --- /dev/null +++ b/arm9/src/unk_02009EAC.c @@ -0,0 +1,170 @@ +#include "global.h" +#include "unk_02009EAC.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 UnkStruct_02009EAC *UNK_021C4670; + +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; + } + + FUN_02009EF0(r0, param1, r2, param3, param4, param5, param6, param7, param8); +} + +THUMB_FUNC void FUN_02009EF0(u32 param0, + u32 param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8) +{ + GF_ASSERT(UNK_021C4670 == NULL); + UNK_021C4670 = AllocFromHeap(param8, sizeof(struct UnkStruct_02009EAC)); + GF_ASSERT(UNK_021C4670); + + UNK_021C4670->heap_id = param8; + + GF_ASSERT(NNS_G2dGetNewOamManagerInstance( + &UNK_021C4670->oamManagers[0], param0, param1, param2, param3, 0)); + GF_ASSERT(NNS_G2dGetNewOamManagerInstance( + &UNK_021C4670->oamManagers[1], param4, param5, param6, param7, 1)); +} + +THUMB_FUNC void FUN_02009F80(void) +{ + if (UNK_021C4670 != NULL) + { + NNS_G2dApplyAndResetOamManagerBuffer(&UNK_021C4670->oamManagers[0]); + NNS_G2dApplyAndResetOamManagerBuffer(&UNK_021C4670->oamManagers[1]); + } +} + +THUMB_FUNC void FUN_02009FA0(void) +{ + GF_ASSERT(UNK_021C4670); + + FUN_0200A064(UNK_021C4670->heap_id); + FUN_0200A06C(UNK_021C4670->heap_id); + + FreeToHeap(UNK_021C4670); + UNK_021C4670 = NULL; +} + +THUMB_FUNC void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3) +{ + GF_ASSERT(UNK_021C4670); + + if (param2 == 1) + { + FUN_0202135C(param0, param1, FUN_0200A074, FUN_0200A0B8, FUN_020213A0, param2, param3); + return; + } + + FUN_0202135C(param0, param1, FUN_0200A094, FUN_0200A0DC, FUN_020213A0, param2, param3); +} + +THUMB_FUNC NNSG2dOamManager *FUN_0200A03C(u32 param0) +{ + GF_ASSERT(UNK_021C4670); + if (param0 == 0) + { + return &UNK_021C4670->oamManagers[0]; + } + else + { + return &UNK_021C4670->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 FUN_0200A074(u32 param0, u32 param1) +{ + u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&UNK_021C4670->oamManagers[0], param0, param1); + GF_ASSERT(res); + + return res; +} + +THUMB_FUNC u32 FUN_0200A094(u32 param0, u32 param1) +{ + u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&UNK_021C4670->oamManagers[1], param0, param1); + GF_ASSERT(res); + + return res; +} + +THUMB_FUNC u32 FUN_0200A0B8(u32 param0) +{ + u32 res = NNS_G2dEntryOamManagerAffine(&UNK_021C4670->oamManagers[0], param0); + GF_ASSERT(res != 0xFFFE); + + return res; +} + +THUMB_FUNC u32 FUN_0200A0DC(u32 param0) +{ + u32 res = NNS_G2dEntryOamManagerAffine(&UNK_021C4670->oamManagers[1], param0); + GF_ASSERT(res != 0xFFFE); + + return res; +} diff --git a/arm9/src/unk_0200A104.c b/arm9/src/unk_0200A104.c new file mode 100644 index 00000000..a0190301 --- /dev/null +++ b/arm9/src/unk_0200A104.c @@ -0,0 +1,178 @@ +#include "global.h" +#include "unk_0200A104.h" +#include "GX_g2.h" +#include "MI_memory.h" + +struct UnkStruct_0200A104 UNK_021C4694; + +struct UnkStruct_0200A104 UNK_021C4674; + +THUMB_FUNC void FUN_0200A104(struct UnkStruct_0200A104 *param0) +{ + u32 r4 = 0; + + if (param0->unk0a != param0->unk1a + param0->unk10 * param0->unk14 && + param0->unk1a != param0->unk0a) + { + param0->unk1a += param0->unk10 * param0->unk14; + param0->unk18 += param0->unk16; + + if (param0->unk18 >= param0->unk08) + { + param0->unk1a += param0->unk10; + if (param0->unk1a != param0->unk0a) + { + param0->unk18 -= param0->unk08; + } + else + { + r4 = 1; + } + } + } + else + { + param0->unk1a = param0->unk0a; + r4 = 1; + } + + if ((param0->unk04 & 1) != 0) + { + G2x_SetBlendBrightness_(0x04000050, param0->unk00, param0->unk1a); + } + else if ((param0->unk04 & 2) != 0) + { + G2x_SetBlendBrightness_(0x04001050, param0->unk00, param0->unk1a); + } + + if (r4 == 1) + { + param0->unk1c = 0; + } +} + +THUMB_FUNC void FUN_0200A1A0( + struct UnkStruct_0200A104 *param0, u16 param1, s16 param2, s16 param3, u32 param4, u32 param5) +{ + GF_ASSERT(param0->unk1c == 0); + + param0->unk1c = 1; + param0->unk00 = (u8)param4; + param0->unk04 = (u8)param5; + param0->unk08 = param1; + param0->unk0a = param2; + param0->unk1a = param3; + param0->unk12 = param3 - param2; + + if (param0->unk12 > 0) + { + param0->unk10 = -1; + } + else + { + param0->unk10 = 1; + param0->unk12 *= -1; + } + + param0->unk14 = param0->unk12 / param1; + param0->unk16 = param0->unk12 % param1; + param0->unk18 = 0; +} + +THUMB_FUNC void FUN_0200A208(u16 param0, s16 param1, s16 param2, u32 param3, u32 param4) +{ + if (param0 != 0) + { + if ((param4 & 1) != 0) + { + G2x_SetBlendBrightness_(0x04000050, param3, param2); + FUN_0200A1A0(&UNK_021C4694, param0, param1, param2, param3, 1); + } + + if ((param4 & 2) != 0) + { + G2x_SetBlendBrightness_(0x04001050, param3, param2); + FUN_0200A1A0(&UNK_021C4674, param0, param1, param2, param3, 2); + } + } +} + +THUMB_FUNC void FUN_0200A274(fx32 brightness, fx32 param1, u32 param2) +{ + + if ((param2 & 1) != 0) + { + G2x_SetBlendBrightness_(0x04000050, param1, brightness); + } + + if ((param2 & 2) != 0) + { + G2x_SetBlendBrightness_(0x04001050, param1, brightness); + } + + FUN_0200A2D8(param2); +} + +THUMB_FUNC void FUN_0200A2AC(void) +{ + MI_CpuFill8(&UNK_021C4694, 0, sizeof(struct UnkStruct_0200A104)); + MI_CpuFill8(&UNK_021C4674, 0, sizeof(struct UnkStruct_0200A104)); + + UNK_021C4694.unk1c = 0; + UNK_021C4674.unk1c = 0; +} + +THUMB_FUNC void FUN_0200A2D8(u32 param0) +{ + if (param0 & 1) + { + MI_CpuFill8(&UNK_021C4694, 0, sizeof(struct UnkStruct_0200A104)); + UNK_021C4694.unk1c = 0; + } + + if (param0 & 2) + { + MI_CpuFill8(&UNK_021C4674, 0, sizeof(struct UnkStruct_0200A104)); + UNK_021C4674.unk1c = 0; + } +} + +THUMB_FUNC void FUN_0200A318(void) +{ + if (UNK_021C4694.unk1c) + { + FUN_0200A104(&UNK_021C4694); + } + + if (UNK_021C4674.unk1c) + { + FUN_0200A104(&UNK_021C4674); + } +} + +THUMB_FUNC u32 FUN_0200A344(u32 param0) +{ + if (param0 == 3) + { + if (UNK_021C4694.unk1c == 0 && UNK_021C4674.unk1c == 0) + { + return 1; + } + } + else if (param0 == 1) + { + if (UNK_021C4694.unk1c == 0) + { + return 1; + } + } + else if (param0 == 2) + { + if (UNK_021C4674.unk1c == 0) + { + return 1; + } + } + + return 0; +} -- cgit v1.2.3 From 4c6555ebcf6ad432ded5d9699d1d3b404907ce6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 18 Aug 2021 18:15:18 +0200 Subject: fix warnings --- arm9/src/communication_error.c | 2 +- arm9/src/error_message_reset.c | 2 +- arm9/src/main.c | 3 +-- arm9/src/unk_02008AA4.c | 2 +- arm9/src/unk_02009EAC.c | 19 +++++++++---------- arm9/src/unk_0200A104.c | 22 +++++++++++----------- arm9/src/unk_0200BB14.c | 12 +----------- arm9/src/wfc_user_info_warning.c | 2 +- 8 files changed, 26 insertions(+), 38 deletions(-) (limited to 'arm9') diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 73345af1..9a34fc75 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -6,8 +6,8 @@ #include "msgdata.h" #include "msgdata/msg.naix" #include "text.h" +#include "unk_0200A104.h" -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); diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index d49e8e51..bf8ad0f1 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -6,6 +6,7 @@ #include "bg_window.h" #include "PAD_pad.h" #include "font.h" +#include "unk_0200A104.h" const struct WindowTemplate UNK_020FF49C = { @@ -46,7 +47,6 @@ 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() { diff --git a/arm9/src/main.c b/arm9/src/main.c index fb4f8707..aa4da4bb 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -18,6 +18,7 @@ #include "wfc_user_info_warning.h" #include "module_52.h" #include "font.h" +#include "unk_0200A104.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -32,13 +33,11 @@ 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; diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c index 1cabb887..9a7dfc75 100644 --- a/arm9/src/unk_02008AA4.c +++ b/arm9/src/unk_02008AA4.c @@ -4,9 +4,9 @@ #include "heap.h" #include "unk_0200BB14.h" #include "unk_02008DEC.h" +#include "unk_02009EAC.h" extern void FUN_0202134C(void *, u32); -extern void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3); extern u32 FUN_0201FCB0(u32 *); extern void FUN_02021390(u32, u32 *); extern void FUN_0201D194(u32, u32, u32); diff --git a/arm9/src/unk_02009EAC.c b/arm9/src/unk_02009EAC.c index df21ed80..b673eb1b 100644 --- a/arm9/src/unk_02009EAC.c +++ b/arm9/src/unk_02009EAC.c @@ -4,7 +4,6 @@ #include "MI_memory.h" #include "heap.h" - extern void FUN_020213A0(void); extern void FUN_0202135C(void *param0, u32 *param1, @@ -59,26 +58,26 @@ THUMB_FUNC void FUN_02009EAC(s32 param0, FUN_02009EF0(r0, param1, r2, param3, param4, param5, param6, param7, param8); } -THUMB_FUNC void FUN_02009EF0(u32 param0, - u32 param1, - u32 param2, - u32 param3, +THUMB_FUNC void FUN_02009EF0(s32 param0, + s32 param1, + s32 param2, + s32 param3, u32 param4, u32 param5, u32 param6, u32 param7, - u32 param8) + u32 heap_id) { GF_ASSERT(UNK_021C4670 == NULL); - UNK_021C4670 = AllocFromHeap(param8, sizeof(struct UnkStruct_02009EAC)); + UNK_021C4670 = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02009EAC)); GF_ASSERT(UNK_021C4670); - UNK_021C4670->heap_id = param8; + UNK_021C4670->heap_id = heap_id; GF_ASSERT(NNS_G2dGetNewOamManagerInstance( - &UNK_021C4670->oamManagers[0], param0, param1, param2, param3, 0)); + &UNK_021C4670->oamManagers[0], (u16)param0, (u16)param1, (u16)param2, (u16)param3, 0)); GF_ASSERT(NNS_G2dGetNewOamManagerInstance( - &UNK_021C4670->oamManagers[1], param4, param5, param6, param7, 1)); + &UNK_021C4670->oamManagers[1], (u16)param4, (u16)param5, (u16)param6, (u16)param7, 1)); } THUMB_FUNC void FUN_02009F80(void) diff --git a/arm9/src/unk_0200A104.c b/arm9/src/unk_0200A104.c index a0190301..407ac34d 100644 --- a/arm9/src/unk_0200A104.c +++ b/arm9/src/unk_0200A104.c @@ -38,11 +38,11 @@ THUMB_FUNC void FUN_0200A104(struct UnkStruct_0200A104 *param0) if ((param0->unk04 & 1) != 0) { - G2x_SetBlendBrightness_(0x04000050, param0->unk00, param0->unk1a); + G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param0->unk00, param0->unk1a); } else if ((param0->unk04 & 2) != 0) { - G2x_SetBlendBrightness_(0x04001050, param0->unk00, param0->unk1a); + G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param0->unk00, param0->unk1a); } if (r4 == 1) @@ -52,7 +52,7 @@ THUMB_FUNC void FUN_0200A104(struct UnkStruct_0200A104 *param0) } THUMB_FUNC void FUN_0200A1A0( - struct UnkStruct_0200A104 *param0, u16 param1, s16 param2, s16 param3, u32 param4, u32 param5) + struct UnkStruct_0200A104 *param0, u16 param1, s16 param2, s16 param3, fx32 param4, u32 param5) { GF_ASSERT(param0->unk1c == 0); @@ -62,7 +62,7 @@ THUMB_FUNC void FUN_0200A1A0( param0->unk08 = param1; param0->unk0a = param2; param0->unk1a = param3; - param0->unk12 = param3 - param2; + param0->unk12 = (s16)(param3 - param2); if (param0->unk12 > 0) { @@ -74,24 +74,24 @@ THUMB_FUNC void FUN_0200A1A0( param0->unk12 *= -1; } - param0->unk14 = param0->unk12 / param1; - param0->unk16 = param0->unk12 % param1; + param0->unk14 = (s16)(param0->unk12 / param1); + param0->unk16 = (u16)(param0->unk12 % param1); param0->unk18 = 0; } -THUMB_FUNC void FUN_0200A208(u16 param0, s16 param1, s16 param2, u32 param3, u32 param4) +THUMB_FUNC void FUN_0200A208(u16 param0, s16 param1, s16 param2, fx32 param3, u32 param4) { if (param0 != 0) { if ((param4 & 1) != 0) { - G2x_SetBlendBrightness_(0x04000050, param3, param2); + G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param3, param2); FUN_0200A1A0(&UNK_021C4694, param0, param1, param2, param3, 1); } if ((param4 & 2) != 0) { - G2x_SetBlendBrightness_(0x04001050, param3, param2); + G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param3, param2); FUN_0200A1A0(&UNK_021C4674, param0, param1, param2, param3, 2); } } @@ -102,12 +102,12 @@ THUMB_FUNC void FUN_0200A274(fx32 brightness, fx32 param1, u32 param2) if ((param2 & 1) != 0) { - G2x_SetBlendBrightness_(0x04000050, param1, brightness); + G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param1, brightness); } if ((param2 & 2) != 0) { - G2x_SetBlendBrightness_(0x04001050, param1, brightness); + G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param1, brightness); } FUN_0200A2D8(param2); diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index 95a854d7..d862ad2d 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -4,31 +4,21 @@ #include "heap.h" #include "unk_02008AA4.h" #include "unk_02008DEC.h" +#include "unk_02009EAC.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 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_0201C350(u32 param0); extern void FUN_0201D12C(); extern void FUN_0201E08C(); -extern void FUN_02009FA0(); 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); diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index d9edd94c..4ba4166c 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -10,9 +10,9 @@ #include "string16.h" #include "text.h" #include "wfc_user_info_warning.h" +#include "unk_0200A104.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); -- cgit v1.2.3 From bb8d0b174dfafd4d268a874ef55f2d09f510b82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 18 Aug 2021 19:57:28 +0200 Subject: partially document oam.c and brightness.c --- arm9/arm9.lsf | 4 +- arm9/asm/unk_02048120.s | 6 +- arm9/asm/unk_02048904.s | 8 +- arm9/asm/unk_020772F0.s | 4 +- arm9/asm/unk_02080C38.s | 4 +- arm9/asm/unk_02089D90.s | 2 +- arm9/asm/unk_02089F24.s | 4 +- arm9/global.inc | 16 +-- arm9/modules/05/asm/mod05_021D74E0.s | 6 +- arm9/modules/05/asm/mod05_021E3340.s | 10 +- arm9/modules/05/asm/mod05_021EFA9C.s | 2 +- arm9/modules/08/asm/module_08.s | 8 +- arm9/modules/12/asm/module_12.s | 14 +-- arm9/modules/14/asm/module_14.s | 4 +- arm9/modules/15/asm/module_15.s | 4 +- arm9/modules/16/asm/module_16.s | 60 +++++----- arm9/modules/17/asm/module_17.s | 22 ++-- arm9/modules/18/asm/module_18.s | 84 ++++++------- arm9/modules/53/asm/module_53.s | 4 +- arm9/modules/54/asm/module_54.s | 4 +- arm9/modules/55/asm/module_55.s | 4 +- arm9/modules/56/asm/module_56.s | 4 +- arm9/modules/57/asm/module_57.s | 4 +- arm9/modules/58/asm/module_58.s | 4 +- arm9/modules/59/asm/mod59_021D74E0_asm.s | 32 ++--- arm9/modules/63/asm/mod63_021D74E0.s | 20 ++-- arm9/modules/63/asm/mod63_021D8890.s | 12 +- arm9/modules/63/asm/mod63_021DA640.s | 2 +- arm9/modules/63/asm/mod63_021DAE5C.s | 2 +- arm9/modules/64/asm/module_64.s | 4 +- arm9/modules/69/asm/module_69.s | 5 +- arm9/modules/70/asm/module_70.s | 4 +- arm9/modules/71/asm/module_71.s | 12 +- arm9/modules/73/asm/module_73.s | 4 +- arm9/modules/80/asm/module_80.s | 4 +- arm9/modules/81/asm/module_81.s | 4 +- arm9/modules/82/asm/module_82.s | 4 +- arm9/modules/83/asm/module_83.s | 10 +- arm9/modules/84/asm/module_84_thumb1.s | 4 +- arm9/modules/84/asm/module_84_thumb2.s | 56 ++++----- arm9/modules/85/asm/module_85.s | 4 +- arm9/src/brightness.c | 198 +++++++++++++++++++++++++++++++ arm9/src/communication_error.c | 4 +- arm9/src/error_message_reset.c | 4 +- arm9/src/main.c | 6 +- arm9/src/oam.c | 169 ++++++++++++++++++++++++++ arm9/src/unk_02008AA4.c | 2 +- arm9/src/unk_02009EAC.c | 169 -------------------------- arm9/src/unk_0200A104.c | 178 --------------------------- arm9/src/unk_0200BB14.c | 6 +- arm9/src/wfc_user_info_warning.c | 4 +- 51 files changed, 614 insertions(+), 595 deletions(-) create mode 100644 arm9/src/brightness.c create mode 100644 arm9/src/oam.c delete mode 100644 arm9/src/unk_02009EAC.c delete mode 100644 arm9/src/unk_0200A104.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e5c7a052..8287f133 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -24,8 +24,8 @@ Static arm9 Object unk_02006D98.o Object unk_02008AA4.o Object unk_02008DEC.o - Object unk_02009EAC.o - Object unk_0200A104.o + Object oam.o + Object brightness.o Object msgdata.o Object script_buffers.o Object unk_0200BA78.o diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s index 68018241..74cfef32 100644 --- a/arm9/asm/unk_02048120.s +++ b/arm9/asm/unk_02048120.s @@ -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..54d87433 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -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_020772F0.s b/arm9/asm/unk_020772F0.s index cdf9258d..90334793 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -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 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_02089D90.s b/arm9/asm/unk_02089D90.s index 4ef386dd..077b7bf5 100644 --- a/arm9/asm/unk_02089D90.s +++ b/arm9/asm/unk_02089D90.s @@ -165,7 +165,7 @@ FUN_02089D90: ; 0x02089D90 mov r0, #0x0 mov r1, #0x3f mov r2, #0x3 - bl FUN_0200A274 + bl SetBrightness mov r4, #0x1 _02089EE4: bl HandleDSLidAction diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s index 63f6e77a..3fbde6cb 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -169,7 +169,7 @@ FUN_02089F24: ; 0x02089F24 mov r0, #0x0 mov r1, #0x3f mov r2, #0x3 - bl FUN_0200A274 + bl SetBrightness mov r4, #0x1 _0208A078: bl HandleDSLidAction @@ -338,7 +338,7 @@ _0208A0C8: mov r0, #0x0 mov r1, #0x3f mov r2, #0x3 - bl FUN_0200A274 + bl SetBrightness mov r4, #0x1 ; Battery-saver trap _0208A21A: diff --git a/arm9/global.inc b/arm9/global.inc index 98ee4d76..2f9f2d11 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 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_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_021EFA9C.s b/arm9/modules/05/asm/mod05_021EFA9C.s index f749c0e8..b6c27091 100644 --- a/arm9/modules/05/asm/mod05_021EFA9C.s +++ b/arm9/modules/05/asm/mod05_021EFA9C.s @@ -37,7 +37,7 @@ MOD05_021EFAAC: ; 0x021EFAAC mov r1, #2 bl HandleLoadOverlay mov r0, #1 - bl FUN_0200A03C + bl GetOamManager str r0, [sp] ldr r1, [r5, #4] ldr r2, [r5, #0xc] 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/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index c035be6d..88cebb83 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 @@ -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 @@ -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..ba4f57ae 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 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..9111403a 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] diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index f30d7e23..ac5296d1 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] @@ -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 @@ -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 diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index 0bff7b6e..388e4ef0 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 diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 8795cd7f..83feae5d 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 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index ce354a55..f23c5281 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 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 61f44b88..5b49451e 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 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..f9301441 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 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 27c05dd6..6e1c1392 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -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/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..e3f91882 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 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..66e1a85e 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 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 5ece5081..acd8756a 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,7 +1285,7 @@ _0222E054: b _0222E0E8 _0222E094: mov r0, #2 - bl FUN_0200A344 + bl IsBrightnessTransitionActive cmp r0, #0 beq _0222E0E8 ldr r0, _0222E110 ; =0x000005A8 @@ -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 diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index 28b61540..c61aa026 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} diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index fae0c264..3b68da11 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} diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index df849b5e..f3c96168 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 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 01d50253..c04d7d65 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} diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 0cdcae12..c84d1e83 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -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 @@ -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 @@ -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 @@ -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..8d6b495f 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -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/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 9a34fc75..4401d9b8 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -6,7 +6,7 @@ #include "msgdata.h" #include "msgdata/msg.naix" #include "text.h" -#include "unk_0200A104.h" +#include "brightness.h" 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); @@ -149,7 +149,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 bf8ad0f1..93bc898d 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -6,7 +6,7 @@ #include "bg_window.h" #include "PAD_pad.h" #include "font.h" -#include "unk_0200A104.h" +#include "brightness.h" const struct WindowTemplate UNK_020FF49C = { @@ -124,7 +124,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/main.c b/arm9/src/main.c index aa4da4bb..312d222c 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -18,7 +18,7 @@ #include "wfc_user_info_warning.h" #include "module_52.h" #include "font.h" -#include "unk_0200A104.h" +#include "brightness.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -96,7 +96,7 @@ THUMB_FUNC void NitroMain(void) gMain.unk6C = 1; gMain.unk30 = 0; InitializeMainRNG(); - FUN_0200A2AC(); + InitAllScreenBrightnessData(); FUN_02015E30(); UNK_02016FA4 = 0; for (;;) @@ -126,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/unk_02008AA4.c b/arm9/src/unk_02008AA4.c index 9a7dfc75..300967fc 100644 --- a/arm9/src/unk_02008AA4.c +++ b/arm9/src/unk_02008AA4.c @@ -4,7 +4,7 @@ #include "heap.h" #include "unk_0200BB14.h" #include "unk_02008DEC.h" -#include "unk_02009EAC.h" +#include "oam.h" extern void FUN_0202134C(void *, u32); extern u32 FUN_0201FCB0(u32 *); diff --git a/arm9/src/unk_02009EAC.c b/arm9/src/unk_02009EAC.c deleted file mode 100644 index b673eb1b..00000000 --- a/arm9/src/unk_02009EAC.c +++ /dev/null @@ -1,169 +0,0 @@ -#include "global.h" -#include "unk_02009EAC.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 UnkStruct_02009EAC *UNK_021C4670; - -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; - } - - FUN_02009EF0(r0, param1, r2, param3, param4, param5, param6, param7, param8); -} - -THUMB_FUNC void FUN_02009EF0(s32 param0, - s32 param1, - s32 param2, - s32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7, - u32 heap_id) -{ - GF_ASSERT(UNK_021C4670 == NULL); - UNK_021C4670 = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02009EAC)); - GF_ASSERT(UNK_021C4670); - - UNK_021C4670->heap_id = heap_id; - - GF_ASSERT(NNS_G2dGetNewOamManagerInstance( - &UNK_021C4670->oamManagers[0], (u16)param0, (u16)param1, (u16)param2, (u16)param3, 0)); - GF_ASSERT(NNS_G2dGetNewOamManagerInstance( - &UNK_021C4670->oamManagers[1], (u16)param4, (u16)param5, (u16)param6, (u16)param7, 1)); -} - -THUMB_FUNC void FUN_02009F80(void) -{ - if (UNK_021C4670 != NULL) - { - NNS_G2dApplyAndResetOamManagerBuffer(&UNK_021C4670->oamManagers[0]); - NNS_G2dApplyAndResetOamManagerBuffer(&UNK_021C4670->oamManagers[1]); - } -} - -THUMB_FUNC void FUN_02009FA0(void) -{ - GF_ASSERT(UNK_021C4670); - - FUN_0200A064(UNK_021C4670->heap_id); - FUN_0200A06C(UNK_021C4670->heap_id); - - FreeToHeap(UNK_021C4670); - UNK_021C4670 = NULL; -} - -THUMB_FUNC void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3) -{ - GF_ASSERT(UNK_021C4670); - - if (param2 == 1) - { - FUN_0202135C(param0, param1, FUN_0200A074, FUN_0200A0B8, FUN_020213A0, param2, param3); - return; - } - - FUN_0202135C(param0, param1, FUN_0200A094, FUN_0200A0DC, FUN_020213A0, param2, param3); -} - -THUMB_FUNC NNSG2dOamManager *FUN_0200A03C(u32 param0) -{ - GF_ASSERT(UNK_021C4670); - if (param0 == 0) - { - return &UNK_021C4670->oamManagers[0]; - } - else - { - return &UNK_021C4670->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 FUN_0200A074(u32 param0, u32 param1) -{ - u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&UNK_021C4670->oamManagers[0], param0, param1); - GF_ASSERT(res); - - return res; -} - -THUMB_FUNC u32 FUN_0200A094(u32 param0, u32 param1) -{ - u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&UNK_021C4670->oamManagers[1], param0, param1); - GF_ASSERT(res); - - return res; -} - -THUMB_FUNC u32 FUN_0200A0B8(u32 param0) -{ - u32 res = NNS_G2dEntryOamManagerAffine(&UNK_021C4670->oamManagers[0], param0); - GF_ASSERT(res != 0xFFFE); - - return res; -} - -THUMB_FUNC u32 FUN_0200A0DC(u32 param0) -{ - u32 res = NNS_G2dEntryOamManagerAffine(&UNK_021C4670->oamManagers[1], param0); - GF_ASSERT(res != 0xFFFE); - - return res; -} diff --git a/arm9/src/unk_0200A104.c b/arm9/src/unk_0200A104.c deleted file mode 100644 index 407ac34d..00000000 --- a/arm9/src/unk_0200A104.c +++ /dev/null @@ -1,178 +0,0 @@ -#include "global.h" -#include "unk_0200A104.h" -#include "GX_g2.h" -#include "MI_memory.h" - -struct UnkStruct_0200A104 UNK_021C4694; - -struct UnkStruct_0200A104 UNK_021C4674; - -THUMB_FUNC void FUN_0200A104(struct UnkStruct_0200A104 *param0) -{ - u32 r4 = 0; - - if (param0->unk0a != param0->unk1a + param0->unk10 * param0->unk14 && - param0->unk1a != param0->unk0a) - { - param0->unk1a += param0->unk10 * param0->unk14; - param0->unk18 += param0->unk16; - - if (param0->unk18 >= param0->unk08) - { - param0->unk1a += param0->unk10; - if (param0->unk1a != param0->unk0a) - { - param0->unk18 -= param0->unk08; - } - else - { - r4 = 1; - } - } - } - else - { - param0->unk1a = param0->unk0a; - r4 = 1; - } - - if ((param0->unk04 & 1) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param0->unk00, param0->unk1a); - } - else if ((param0->unk04 & 2) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param0->unk00, param0->unk1a); - } - - if (r4 == 1) - { - param0->unk1c = 0; - } -} - -THUMB_FUNC void FUN_0200A1A0( - struct UnkStruct_0200A104 *param0, u16 param1, s16 param2, s16 param3, fx32 param4, u32 param5) -{ - GF_ASSERT(param0->unk1c == 0); - - param0->unk1c = 1; - param0->unk00 = (u8)param4; - param0->unk04 = (u8)param5; - param0->unk08 = param1; - param0->unk0a = param2; - param0->unk1a = param3; - param0->unk12 = (s16)(param3 - param2); - - if (param0->unk12 > 0) - { - param0->unk10 = -1; - } - else - { - param0->unk10 = 1; - param0->unk12 *= -1; - } - - param0->unk14 = (s16)(param0->unk12 / param1); - param0->unk16 = (u16)(param0->unk12 % param1); - param0->unk18 = 0; -} - -THUMB_FUNC void FUN_0200A208(u16 param0, s16 param1, s16 param2, fx32 param3, u32 param4) -{ - if (param0 != 0) - { - if ((param4 & 1) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param3, param2); - FUN_0200A1A0(&UNK_021C4694, param0, param1, param2, param3, 1); - } - - if ((param4 & 2) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param3, param2); - FUN_0200A1A0(&UNK_021C4674, param0, param1, param2, param3, 2); - } - } -} - -THUMB_FUNC void FUN_0200A274(fx32 brightness, fx32 param1, u32 param2) -{ - - if ((param2 & 1) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2_BLDCNT, param1, brightness); - } - - if ((param2 & 2) != 0) - { - G2x_SetBlendBrightness_(reg_addr_G2S_DB_BLDCNT, param1, brightness); - } - - FUN_0200A2D8(param2); -} - -THUMB_FUNC void FUN_0200A2AC(void) -{ - MI_CpuFill8(&UNK_021C4694, 0, sizeof(struct UnkStruct_0200A104)); - MI_CpuFill8(&UNK_021C4674, 0, sizeof(struct UnkStruct_0200A104)); - - UNK_021C4694.unk1c = 0; - UNK_021C4674.unk1c = 0; -} - -THUMB_FUNC void FUN_0200A2D8(u32 param0) -{ - if (param0 & 1) - { - MI_CpuFill8(&UNK_021C4694, 0, sizeof(struct UnkStruct_0200A104)); - UNK_021C4694.unk1c = 0; - } - - if (param0 & 2) - { - MI_CpuFill8(&UNK_021C4674, 0, sizeof(struct UnkStruct_0200A104)); - UNK_021C4674.unk1c = 0; - } -} - -THUMB_FUNC void FUN_0200A318(void) -{ - if (UNK_021C4694.unk1c) - { - FUN_0200A104(&UNK_021C4694); - } - - if (UNK_021C4674.unk1c) - { - FUN_0200A104(&UNK_021C4674); - } -} - -THUMB_FUNC u32 FUN_0200A344(u32 param0) -{ - if (param0 == 3) - { - if (UNK_021C4694.unk1c == 0 && UNK_021C4674.unk1c == 0) - { - return 1; - } - } - else if (param0 == 1) - { - if (UNK_021C4694.unk1c == 0) - { - return 1; - } - } - else if (param0 == 2) - { - if (UNK_021C4674.unk1c == 0) - { - return 1; - } - } - - return 0; -} diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index d862ad2d..093d35c1 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -4,7 +4,7 @@ #include "heap.h" #include "unk_02008AA4.h" #include "unk_02008DEC.h" -#include "unk_02009EAC.h" +#include "oam.h" extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); extern void FUN_0201E00C(u32 param0, u32 param1); @@ -158,7 +158,7 @@ THUMB_FUNC void FUN_0200BC1C(u32 *param0) THUMB_FUNC void FUN_0200BC30() { - FUN_02009F80(); + ApplyAndResetOamManagerBuffer(); } THUMB_FUNC void FUN_0200BC38() @@ -205,7 +205,7 @@ THUMB_FUNC void FUN_0200BCB0(u32 *param0) if (param0[2] == 1) { - FUN_02009FA0(); + DeinitOamData(); } } diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index 4ba4166c..370cf314 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -10,7 +10,7 @@ #include "string16.h" #include "text.h" #include "wfc_user_info_warning.h" -#include "unk_0200A104.h" +#include "brightness.h" extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id); @@ -118,7 +118,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) { -- cgit v1.2.3 From f31aa875f127653e7e1fc81a3093b2d8f09aea8f Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 20 Aug 2021 16:49:35 -0400 Subject: Decompile unk_02089D90 -> save_data_read_error --- arm9/arm9.lsf | 2 +- arm9/asm/unk_02089D90.s | 188 ---------------------------------------- arm9/asm/unk_02089F24.s | 24 ++--- arm9/global.inc | 2 +- arm9/src/main.c | 4 +- arm9/src/save.c | 6 +- arm9/src/save_data_read_error.c | 123 ++++++++++++++++++++++++++ 7 files changed, 141 insertions(+), 208 deletions(-) delete mode 100644 arm9/asm/unk_02089D90.s create mode 100644 arm9/src/save_data_read_error.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 8287f133..5e9e5ba9 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -315,7 +315,7 @@ Static arm9 Object unk_020893E0.o Object unk_02089498.o Object unk_02089960.o - Object unk_02089D90.o + Object save_data_read_error.o Object unk_02089F24.o Object unk_0208A258.o Object unk_0208A300.o diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s deleted file mode 100644 index 077b7bf5..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 SetBrightness - 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 index 3fbde6cb..dd936ec8 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -2,10 +2,10 @@ .include "global.inc" .extern gMain - .extern UNK_020FF3E4 - .extern UNK_020FF3EC - .extern UNK_020FF3FC - .extern UNK_020FF418 + .extern gSaveDataReadErrorWindowTemplate + .extern gSaveDataReadErrorGraphicsModes + .extern gSaveDataReadErrorBgTemplate + .extern gSaveDataReadErrorGraphicsBanks .section .rodata @@ -80,15 +80,15 @@ FUN_02089F24: ; 0x02089F24 ldr r1, [r2, #0x0] and r0, r1 str r0, [r2, #0x0] - ldr r0, _0208A0A0 ; =UNK_020FF418 + ldr r0, _0208A0A0 ; =gSaveDataReadErrorGraphicsBanks bl GX_SetBanks add r0, r4, #0x0 bl BgConfig_Alloc add r5, r0, #0x0 - ldr r0, _0208A0A4 ; =UNK_020FF3EC + ldr r0, _0208A0A4 ; =gSaveDataReadErrorGraphicsModes bl SetBothScreensModesAndDisable mov r1, #0x0 - ldr r2, _0208A0A8 ; =UNK_020FF3FC + ldr r2, _0208A0A8 ; =gSaveDataReadErrorBgTemplate add r0, r5, #0x0 add r3, r1, #0x0 bl InitBgFromTemplate @@ -129,7 +129,7 @@ FUN_02089F24: ; 0x02089F24 bl String_ctor add r4, r0, #0x0 bl FUN_0201BD5C - ldr r2, _0208A0B4 ; =UNK_020FF3E4 + ldr r2, _0208A0B4 ; =gSaveDataReadErrorWindowTemplate add r0, r5, #0x0 add r1, sp, #0xc bl AddWindow @@ -184,12 +184,12 @@ _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 +_0208A0A0: .word gSaveDataReadErrorGraphicsBanks +_0208A0A4: .word gSaveDataReadErrorGraphicsModes +_0208A0A8: .word gSaveDataReadErrorBgTemplate _0208A0AC: .word 0x000001F7 _0208A0B0: .word 0x00006C21 -_0208A0B4: .word UNK_020FF3E4 +_0208A0B4: .word gSaveDataReadErrorWindowTemplate thumb_func_start FUN_0208A0B8 FUN_0208A0B8: ; 0x0208A0B8 diff --git a/arm9/global.inc b/arm9/global.inc index 2f9f2d11..04d457a0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5467,7 +5467,7 @@ .extern FUN_02089418 .extern FUN_02089444 .extern FUN_0208946C -.extern FUN_02089D90 +.extern ShowSaveDataReadError .extern FUN_02089F24 .extern FUN_0208A0B8 .extern FUN_0208A258 diff --git a/arm9/src/main.c b/arm9/src/main.c index 312d222c..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" @@ -32,7 +33,6 @@ 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_02015E30(void); extern void FUN_0201B5CC(void *); extern void GF_RTC_UpdateOnFrame(void); @@ -72,7 +72,7 @@ THUMB_FUNC void NitroMain(void) ShowWFCUserInfoWarning(3, 0); if (FUN_020227FC(UNK_02016FA8.unk18) == 0) { - FUN_02089D90(0); + ShowSaveDataReadError(0); } else { diff --git a/arm9/src/save.c b/arm9/src/save.c index 7eb523f6..9ddb7336 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -4,6 +4,7 @@ #include "heap.h" #include "CARD_backup.h" #include "OS_spinLock.h" +#include "save_data_read_error.h" #pragma thumb on @@ -13,9 +14,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); @@ -861,7 +859,7 @@ BOOL FlashLoadChunk(u32 src, void * dest, u32 size) if (!r5) { FreeToHeap(UNK_021C59C8.ptr); - FUN_02089D90(1); + ShowSaveDataReadError(1); } return r5; } diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c new file mode 100644 index 00000000..708b3a3c --- /dev/null +++ b/arm9/src/save_data_read_error.c @@ -0,0 +1,123 @@ +#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" + +extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); +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); + +const struct WindowTemplate gSaveDataReadErrorWindowTemplate = { + .bgId = GF_BG_LYR_MAIN_0, + .tilemapLeft = 3, + .tilemapTop = 3, + .width = 26, + .height = 18, + .paletteNum = 0x01, + .baseTile = 0x23, +}; + +const struct GraphicsModes gSaveDataReadErrorGraphicsModes = { + .dispMode = GX_DISPMODE_GRAPHICS, + .bgMode = GX_BGMODE_0, + .subMode = GX_BGMODE_0, + ._2d3dMode = GX_BG0_AS_2D, +}; + +const struct BgTemplate gSaveDataReadErrorBgTemplate = { + .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, +}; + +const struct GraphicsBanks gSaveDataReadErrorGraphicsBanks = { + .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.unk65 = 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(&gSaveDataReadErrorGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&gSaveDataReadErrorGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &gSaveDataReadErrorBgTemplate, 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, &gSaveDataReadErrorWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + FUN_0200CCA4(&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); + } +} -- cgit v1.2.3 From 614fcf2c7cc60e71d0c4707df67a822c19cdc1b4 Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 20 Aug 2021 17:27:56 -0400 Subject: Document gMain.unk65 -> gMain.screensFlipped --- arm9/src/GX_layers.c | 2 +- arm9/src/communication_error.c | 2 +- arm9/src/error_message_reset.c | 2 +- arm9/src/game_init.c | 2 +- arm9/src/save_data_read_error.c | 2 +- arm9/src/wfc_user_info_warning.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) (limited to 'arm9') 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/communication_error.c b/arm9/src/communication_error.c index 4401d9b8..04058b83 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -107,7 +107,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; diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 93bc898d..97bc7c70 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -85,7 +85,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() SetKeyRepeatTimers(4, 8); - gMain.unk65 = 0; + gMain.screensFlipped = 0; GX_SwapDisplay(); G2_BlendNone(); 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/save_data_read_error.c b/arm9/src/save_data_read_error.c index 708b3a3c..f3778435 100644 --- a/arm9/src/save_data_read_error.c +++ b/arm9/src/save_data_read_error.c @@ -76,7 +76,7 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) SetKeyRepeatTimers(4, 8); - gMain.unk65 = 0; + gMain.screensFlipped = 0; GX_SwapDisplay(); reg_G2_BLDCNT = 0; diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index 370cf314..da547f3d 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -83,7 +83,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; -- cgit v1.2.3 From a09a13e2b35e6ca07ab623464189b8bf602a66a8 Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 20 Aug 2021 21:31:50 -0400 Subject: Decompile unk_02089F24 -> save_data_write_error --- arm9/arm9.lsf | 2 +- arm9/asm/unk_02089F24.s | 362 --------------------------------------- arm9/global.inc | 4 +- arm9/modules/83/asm/module_83.s | 4 +- arm9/src/save.c | 8 +- arm9/src/save_data_write_error.c | 199 +++++++++++++++++++++ 6 files changed, 207 insertions(+), 372 deletions(-) delete mode 100644 arm9/asm/unk_02089F24.s create mode 100644 arm9/src/save_data_write_error.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 5e9e5ba9..179bf053 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -316,7 +316,7 @@ Static arm9 Object unk_02089498.o Object unk_02089960.o Object save_data_read_error.o - Object unk_02089F24.o + Object save_data_write_error.o Object unk_0208A258.o Object unk_0208A300.o Object unk_0208A338.o diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s deleted file mode 100644 index dd936ec8..00000000 --- a/arm9/asm/unk_02089F24.s +++ /dev/null @@ -1,362 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - .extern gSaveDataReadErrorWindowTemplate - .extern gSaveDataReadErrorGraphicsModes - .extern gSaveDataReadErrorBgTemplate - .extern gSaveDataReadErrorGraphicsBanks - - .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 ; =gSaveDataReadErrorGraphicsBanks - bl GX_SetBanks - add r0, r4, #0x0 - bl BgConfig_Alloc - add r5, r0, #0x0 - ldr r0, _0208A0A4 ; =gSaveDataReadErrorGraphicsModes - bl SetBothScreensModesAndDisable - mov r1, #0x0 - ldr r2, _0208A0A8 ; =gSaveDataReadErrorBgTemplate - 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 ; =gSaveDataReadErrorWindowTemplate - 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 SetBrightness - 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 gSaveDataReadErrorGraphicsBanks -_0208A0A4: .word gSaveDataReadErrorGraphicsModes -_0208A0A8: .word gSaveDataReadErrorBgTemplate -_0208A0AC: .word 0x000001F7 -_0208A0B0: .word 0x00006C21 -_0208A0B4: .word gSaveDataReadErrorWindowTemplate - - 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 SetBrightness - 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/global.inc b/arm9/global.inc index 04d457a0..9831337f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5468,8 +5468,8 @@ .extern FUN_02089444 .extern FUN_0208946C .extern ShowSaveDataReadError -.extern FUN_02089F24 -.extern FUN_0208A0B8 +.extern ShowGBACartRemovedError +.extern ShowSaveDataWriteError .extern FUN_0208A258 .extern FUN_0208A300 .extern FUN_0208A320 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index c84d1e83..7c18c8e8 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -2149,7 +2149,7 @@ _0222E656: bl FUN_02032D80 _0222E692: mov r0, #0x51 - bl FUN_02089F24 + bl ShowGBACartRemovedError b _0222E6A8 _0222E69A: bl PlaySE @@ -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 diff --git a/arm9/src/save.c b/arm9/src/save.c index 9ddb7336..524edfb7 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -5,6 +5,7 @@ #include "CARD_backup.h" #include "OS_spinLock.h" #include "save_data_read_error.h" +#include "save_data_write_error.h" #pragma thumb on @@ -14,9 +15,6 @@ extern void FUN_02016444(u8 mask); extern void FUN_02016454(u8 mask); -// unk_02089F24.s -extern void FUN_0208A0B8(int, int); - struct { struct SaveBlock2 * ptr; BOOL iswritten; @@ -908,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_write_error.c b/arm9/src/save_data_write_error.c new file mode 100644 index 00000000..f2270b52 --- /dev/null +++ b/arm9/src/save_data_write_error.c @@ -0,0 +1,199 @@ +#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" + +extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); +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); + +extern const struct WindowTemplate gSaveDataReadErrorWindowTemplate; +extern const struct GraphicsModes gSaveDataReadErrorGraphicsModes; +extern const struct BgTemplate gSaveDataReadErrorBgTemplate; +extern const struct GraphicsBanks gSaveDataReadErrorGraphicsBanks; + +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 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(&gSaveDataReadErrorGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&gSaveDataReadErrorGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &gSaveDataReadErrorBgTemplate, 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, &gSaveDataReadErrorWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + FUN_0200CCA4(&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); + } +} + +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); + FUN_0200CCA4(&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); + } +} -- cgit v1.2.3 From 0d600f46805de96895678bb76d7c3e87466f459f Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 20 Aug 2021 21:41:10 -0400 Subject: Move ShowGBACartRemovedError to save_data_read_error --- arm9/src/save_data_read_error.c | 79 ++++++++++++++++++++++++++++++++++++---- arm9/src/save_data_write_error.c | 68 ---------------------------------- 2 files changed, 71 insertions(+), 76 deletions(-) (limited to 'arm9') diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c index f3778435..9524475c 100644 --- a/arm9/src/save_data_read_error.c +++ b/arm9/src/save_data_read_error.c @@ -13,7 +13,7 @@ extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_valu extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); -const struct WindowTemplate gSaveDataReadErrorWindowTemplate = { +static const struct WindowTemplate sSaveDataReadErrorWindowTemplate = { .bgId = GF_BG_LYR_MAIN_0, .tilemapLeft = 3, .tilemapTop = 3, @@ -23,14 +23,14 @@ const struct WindowTemplate gSaveDataReadErrorWindowTemplate = { .baseTile = 0x23, }; -const struct GraphicsModes gSaveDataReadErrorGraphicsModes = { +static const struct GraphicsModes sSaveDataReadErrorGraphicsModes = { .dispMode = GX_DISPMODE_GRAPHICS, .bgMode = GX_BGMODE_0, .subMode = GX_BGMODE_0, ._2d3dMode = GX_BG0_AS_2D, }; -const struct BgTemplate gSaveDataReadErrorBgTemplate = { +static const struct BgTemplate sSaveDataReadErrorBgTemplate = { .x = 0, .y = 0, .bufferSize = 0x800, @@ -46,7 +46,7 @@ const struct BgTemplate gSaveDataReadErrorBgTemplate = { .mosaic = FALSE, }; -const struct GraphicsBanks gSaveDataReadErrorGraphicsBanks = { +static const struct GraphicsBanks sSaveDataReadErrorGraphicsBanks = { .bg = 3, .bgextpltt = 0, .subbg = 0, @@ -83,13 +83,13 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) 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(&gSaveDataReadErrorGraphicsBanks); + GX_SetBanks(&sSaveDataReadErrorGraphicsBanks); struct BgConfig* bg_config = BgConfig_Alloc(heap_id); - SetBothScreensModesAndDisable(&gSaveDataReadErrorGraphicsModes); + SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes); - InitBgFromTemplate(bg_config, 0, &gSaveDataReadErrorBgTemplate, 0); + 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); @@ -102,7 +102,7 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) FUN_0201BD5C(); - AddWindow(bg_config, &window, &gSaveDataReadErrorWindowTemplate); + AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); FUN_0200CCA4(&window, FALSE, 0x01F7, 2); @@ -121,3 +121,66 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) 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); + FUN_0200CCA4(&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 index f2270b52..71edb91d 100644 --- a/arm9/src/save_data_write_error.c +++ b/arm9/src/save_data_write_error.c @@ -13,11 +13,6 @@ extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_valu extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); -extern const struct WindowTemplate gSaveDataReadErrorWindowTemplate; -extern const struct GraphicsModes gSaveDataReadErrorGraphicsModes; -extern const struct BgTemplate gSaveDataReadErrorBgTemplate; -extern const struct GraphicsBanks gSaveDataReadErrorGraphicsBanks; - static const struct WindowTemplate sSaveDataWriteErrorWindowTemplate = { .bgId = GF_BG_LYR_MAIN_0, .tilemapLeft = 3, @@ -64,69 +59,6 @@ static const struct GraphicsBanks sSaveDataWriteErrorGraphicsBanks = { .texpltt = 0, }; -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(&gSaveDataReadErrorGraphicsBanks); - - struct BgConfig* bg_config = BgConfig_Alloc(heap_id); - - SetBothScreensModesAndDisable(&gSaveDataReadErrorGraphicsModes); - - InitBgFromTemplate(bg_config, 0, &gSaveDataReadErrorBgTemplate, 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, &gSaveDataReadErrorWindowTemplate); - FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&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); - } -} - THUMB_FUNC void ShowSaveDataWriteError(u32 heap_id, u32 err_no) { struct Window window; -- cgit v1.2.3 From d7426e1f1c75846151eea1828bc2ab069c5a072e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 22 Aug 2021 01:21:52 +0200 Subject: decompile unk_0200CABC.s --- arm9/asm/unk_0200CABC.s | 2866 ----------------------------------------------- arm9/src/bg_window.c | 2 +- arm9/src/unk_0200CABC.c | 1082 ++++++++++++++++++ 3 files changed, 1083 insertions(+), 2867 deletions(-) delete mode 100644 arm9/asm/unk_0200CABC.s create mode 100644 arm9/src/unk_0200CABC.c (limited to 'arm9') 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/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/unk_0200CABC.c b/arm9/src/unk_0200CABC.c new file mode 100644 index 00000000..17f646f9 --- /dev/null +++ b/arm9/src/unk_0200CABC.c @@ -0,0 +1,1082 @@ +#include "global.h" +#include "unk_0200CABC.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_0200E188(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 u32 FUN_0200CAFC(void) +{ + return 24; +} + +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 FUN_0200CB6C(struct BgConfig *bgConfig, + u8 bgId, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u16 param7) +{ + FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 1), param2, (u8)(param3 - 1), param4, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 2), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 - 1), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 5), (u8)(param2 + param4), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 7), param2, (u8)(param3 + param5), param4, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 8), + (u8)(param2 + param4), + (u8)(param3 + param5), + 1, + 1, + param6); +} + +THUMB_FUNC void FUN_0200CCA4( + struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) +{ + FUN_0200CB6C(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 FUN_0200CCF8(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 FUN_0200CDD8(struct BgConfig *bgConfig, + u8 bgId, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u16 param7) +{ + FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 2), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 2), param2, (u8)(param3 - 1), param4, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 4), + (u8)(param2 + param4 + 1), + (u8)(param3 - 1), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 5), + (u8)(param2 + param4 + 2), + (u8)(param3 - 1), + 1, + 1, + param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 2), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 1), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 2), (u8)(param3 + param5), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 14), param2, (u8)(param3 + param5), param4, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 15), + (u8)(param2 + param4), + (u8)(param3 + param5), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 16), + (u8)(param2 + param4 + 1), + (u8)(param3 + param5), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 17), + (u8)(param2 + param4 + 2), + (u8)(param3 + param5), + 1, + 1, + param6); +} + +THUMB_FUNC void FUN_0200D06C(struct Window *window, u32 fill_value, u32 palette_num) +{ + FUN_0200CDD8(window->bgConfig, + GetWindowBgId(window), + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + (u8)palette_num, + (u16)fill_value); +} + +THUMB_FUNC void FUN_0200D0BC( + struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) +{ + FUN_0200D06C(window, fill_value, palette_num); + if (!copy_to_vram) + { + CopyWindowToVram(window); + } + + FUN_0200D18C(window, fill_value); +} + +THUMB_FUNC void FUN_0200D0E0(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 FUN_0200D148(u8 *param0, + u16 param1, + u16 param2, + u16 param3, + u16 param4, + u8 *param5, + u16 param6, + u16 param7, + u16 param8, + u16 param9, + u16 param10, + u16 param11) +{ + struct Bitmap src; + src.pixels = param0; + src.width = param3; + src.height = param4; + + struct Bitmap dst; + dst.pixels = param5; + dst.width = param6; + dst.height = param7; + + BlitBitmapRect4Bit(&src, &dst, param1, param2, param8, param9, param10, param11, 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); + } + + FUN_0200D148(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 FUN_0200D3B0(struct BgConfig *bgConfig, + u8 bgId, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u16 param7) +{ + FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 9), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 8), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 2), + (u8)(param2 - 7), + (u8)(param3 - 1), + (u8)(param4 + 7), + 1, + param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 4), + (u8)(param2 + param4 + 1), + (u8)(param3 - 1), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 5), + (u8)(param2 + param4 + 2), + (u8)(param3 - 1), + 1, + 1, + param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 9), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 8), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 8), (u8)(param2 - 1), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 9), (u8)(param3 + param5), 1, 1, param6); + FillBgTilemapRect( + bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 8), (u8)(param3 + param5), 1, 1, param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 14), + (u8)(param2 - 7), + (u8)(param3 + param5), + (u8)(param4 + 7), + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 15), + (u8)(param2 + param4), + (u8)(param3 + param5), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 16), + (u8)(param2 + param4 + 1), + (u8)(param3 + param5), + 1, + 1, + param6); + FillBgTilemapRect(bgConfig, + bgId, + (u16)(param7 + 17), + (u8)(param2 + param4 + 2), + (u8)(param3 + param5), + 1, + 1, + param6); +} + +THUMB_FUNC void FUN_0200D678(struct Window *window, u16 param1, u8 param2) +{ + 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)(param1 + 6 * i + j), + (u8)(x + j), + (u8)(y + i), + 1, + 1, + param2); + } + } +} + +THUMB_FUNC void FUN_0200D6F8(struct Window *window, BOOL param1, u16 param2, u8 param3, u8 param4) +{ + u8 bg_id = GetWindowBgId(window); + if (param4 <= 1) + { + FUN_0200D3B0(window->bgConfig, + bg_id, + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + param3, + param2); + FUN_0200D678(window, (u16)(param2 + 30), param3); + } + else + { + FUN_0200CDD8(window->bgConfig, + bg_id, + GetWindowX(window), + GetWindowY(window), + GetWindowWidth(window), + GetWindowHeight(window), + param3, + param2); + } + + if (!param1) + { + CopyWindowToVram(window); + } + + FUN_0200D18C(window, param2); +} + +THUMB_FUNC void FUN_0200D7A0(struct Window *window, u32 param1, BOOL param2) +{ + 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 (!param2) + { + 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); + FUN_0200D148( + pCharData->pRawData, 0, 0, 0x10, 0x80, ptr->unk004[0], 0x10, 0x80, 0, 0, 0x10, 0x80); + FreeToHeap(r5); + + ptr->unk000 = window; + ptr->unk484 = (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->unk484 + 18)); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 10), + (u8)(x + width + 1), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 11), + (u8)(x + width + 2), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 10), + (u8)(x + width + 1), + (u8)(y + 3), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 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->unk484 + 18)); + if (param1 != 0) + { + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 18), + (u8)(x + width + 1), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 19), + (u8)(x + width + 2), + (u8)(y + 2), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 20), + (u8)(x + width + 1), + (u8)(y + 3), + 1, + 1, + 0x10); + FillBgTilemapRect(param0->unk000->bgConfig, + bg_id, + (u16)(param0->unk484 + 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); + FUN_0200DFD8(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); + FUN_0200DFD8(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: + FUN_0200E188(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->unk168 = bg_config; + res->unk16c = bg_id; + res->unk16d = param2; + res->unk16e = 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 FUN_0200DFD8(struct UnkStruct_0200CABC_2 *param0, u8 param1, u16 param2) +{ + FillBgTilemapRect(param0->unk168, + param0->unk16c, + param2, + (u8)(param0->unk16d - 1), + (u8)(param0->unk16e - 1), + 1, + 1, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 1), + param0->unk16d, + (u8)(param0->unk16e - 1), + 10, + 1, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 2), + (u8)(param0->unk16d + 10), + (u8)(param0->unk16e - 1), + 1, + 1, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 4), + param0->unk16d, + param0->unk16e, + 10, + 10, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 3), + (u8)(param0->unk16d - 1), + param0->unk16e, + 1, + 10, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 5), + (u8)(param0->unk16d + 10), + param0->unk16e, + 1, + 10, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 6), + (u8)(param0->unk16d - 1), + (u8)(param0->unk16e + 10), + 1, + 1, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 7), + param0->unk16d, + (u8)(param0->unk16e + 10), + 10, + 1, + param1); + FillBgTilemapRect(param0->unk168, + param0->unk16c, + (u16)(param2 + 8), + (u8)(param0->unk16d + 10), + (u8)(param0->unk16e + 10), + 1, + 1, + param1); + + ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c); +} + +THUMB_FUNC void FUN_0200E188(struct UnkStruct_0200CABC_2 *param0) +{ + FillBgTilemapRect(param0->unk168, + param0->unk16c, + 0, + (u8)(param0->unk16d - 1), + (u8)(param0->unk16e - 1), + 12, + 12, + 0); + ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c); +} -- cgit v1.2.3 From 59f143d03b359f07c08da66c294fb048a33993ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 22 Aug 2021 10:02:23 +0200 Subject: remove old externs --- arm9/src/communication_error.c | 3 +-- arm9/src/error_message_reset.c | 3 +-- arm9/src/save_data_read_error.c | 3 +-- arm9/src/save_data_write_error.c | 3 +-- arm9/src/scrcmd.c | 30 +++++++++++++----------------- arm9/src/text_02054590.c | 16 ++-------------- arm9/src/unk_0200CABC.c | 1 - arm9/src/wfc_user_info_warning.c | 3 +-- 8 files changed, 20 insertions(+), 42 deletions(-) (limited to 'arm9') diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 04058b83..2c6752a5 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -7,9 +7,8 @@ #include "msgdata/msg.naix" #include "text.h" #include "brightness.h" +#include "unk_0200CABC.h" -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); diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 97bc7c70..66a71a75 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -7,6 +7,7 @@ #include "PAD_pad.h" #include "font.h" #include "brightness.h" +#include "unk_0200CABC.h" const struct WindowTemplate UNK_020FF49C = { @@ -44,8 +45,6 @@ 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); THUMB_FUNC void VBlankHandler() diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c index 9524475c..7e378304 100644 --- a/arm9/src/save_data_read_error.c +++ b/arm9/src/save_data_read_error.c @@ -6,10 +6,9 @@ #include "msgdata/msg.naix" #include "save_data_read_error.h" #include "text.h" +#include "unk_0200CABC.h" extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); -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); diff --git a/arm9/src/save_data_write_error.c b/arm9/src/save_data_write_error.c index 71edb91d..04f2d686 100644 --- a/arm9/src/save_data_write_error.c +++ b/arm9/src/save_data_write_error.c @@ -6,10 +6,9 @@ #include "msgdata/msg.naix" #include "save_data_write_error.h" #include "text.h" +#include "unk_0200CABC.h" extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); -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); diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index ceb1a1cf..007b1bcf 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -6,6 +6,9 @@ #include "player_data.h" #include "text.h" #include "bg_window.h" +#include "unk_0200CABC.h" +#include "text_02054590.h" + extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); @@ -22,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); @@ -773,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; } @@ -958,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; @@ -1112,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; } @@ -1345,13 +1341,13 @@ 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) diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index 3c3d0fed..7b6ddeb7 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 "unk_0200CABC.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) @@ -99,7 +87,7 @@ 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); diff --git a/arm9/src/unk_0200CABC.c b/arm9/src/unk_0200CABC.c index 17f646f9..2004ff29 100644 --- a/arm9/src/unk_0200CABC.c +++ b/arm9/src/unk_0200CABC.c @@ -29,7 +29,6 @@ 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_0200E188(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); diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index da547f3d..ced5d707 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -11,10 +11,9 @@ #include "text.h" #include "wfc_user_info_warning.h" #include "brightness.h" +#include "unk_0200CABC.h" extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); -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); -- cgit v1.2.3 From 99d4cb2b2addcd12e7775c7817c5ed7783cbe971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 22 Aug 2021 10:58:33 +0200 Subject: partially document unk_0200CABC --- arm9/asm/unk_02001B80.s | 4 +- arm9/asm/unk_02035068.s | 12 +- arm9/asm/unk_02048120.s | 2 +- arm9/asm/unk_02048904.s | 4 +- arm9/asm/unk_02050E48.s | 14 +- arm9/asm/unk_0205CE48.s | 2 +- arm9/asm/unk_020625EC.s | 12 +- arm9/asm/unk_020653EC.s | 16 +- arm9/asm/unk_0206C700.s | 4 +- arm9/asm/unk_0206F3FC.s | 18 +- arm9/asm/unk_02072548.s | 10 +- arm9/asm/unk_02073DA8.s | 36 +-- arm9/asm/unk_0207550C.s | 14 +- arm9/asm/unk_020772F0.s | 4 +- arm9/asm/unk_0207D5BC.s | 2 +- arm9/asm/unk_02086414.s | 6 +- arm9/asm/unk_02089498.s | 2 +- arm9/asm/unk_02089960.s | 2 +- arm9/asm/unk_0208A338.s | 16 +- arm9/global.inc | 14 +- arm9/modules/05/asm/mod05_021E1AD8.s | 24 +- arm9/modules/05/asm/mod05_021E8310.s | 4 +- arm9/modules/05/asm/mod05_021EFBF8.s | 4 +- arm9/modules/05/asm/mod05_021F5C44.s | 2 +- arm9/modules/06/asm/module_06.s | 74 ++--- arm9/modules/09/asm/module_09.s | 10 +- arm9/modules/11/asm/module_11_thumb1.s | 4 +- arm9/modules/11/asm/module_11_thumb2.s | 6 +- arm9/modules/12/asm/module_12.s | 18 +- arm9/modules/15/asm/module_15.s | 6 +- arm9/modules/17/asm/module_17.s | 10 +- arm9/modules/18/asm/module_18.s | 78 +++--- arm9/modules/53/asm/module_53.s | 12 +- arm9/modules/54/asm/module_54.s | 6 +- arm9/modules/55/asm/module_55.s | 14 +- arm9/modules/56/asm/module_56.s | 58 ++-- arm9/modules/58/asm/module_58.s | 10 +- arm9/modules/59/asm/mod59_021D74E0_asm.s | 6 +- arm9/modules/60/asm/module_60.s | 8 +- arm9/modules/61/asm/module_61.s | 8 +- arm9/modules/62/asm/module_62.s | 8 +- arm9/modules/64/asm/module_64.s | 6 +- arm9/modules/65/asm/module_65.s | 14 +- arm9/modules/66/asm/module_66.s | 4 +- arm9/modules/70/asm/module_70.s | 4 +- arm9/modules/71/asm/module_71.s | 12 +- arm9/modules/73/asm/module_73.s | 10 +- arm9/modules/75/asm/module_75.s | 68 ++--- arm9/modules/76/asm/module_76.s | 2 +- arm9/modules/77/asm/module_77.s | 18 +- arm9/modules/80/asm/module_80.s | 112 ++++---- arm9/modules/81/asm/module_81.s | 8 +- arm9/modules/82/asm/module_82.s | 16 +- arm9/modules/83/asm/module_83.s | 54 ++-- arm9/modules/85/asm/module_85.s | 4 +- arm9/src/communication_error.c | 2 +- arm9/src/error_message_reset.c | 2 +- arm9/src/save_data_read_error.c | 4 +- arm9/src/save_data_write_error.c | 2 +- arm9/src/scrcmd.c | 2 +- arm9/src/text_02054590.c | 4 +- arm9/src/unk_0200CABC.c | 462 +++++++++++++++---------------- arm9/src/wfc_user_info_warning.c | 2 +- 63 files changed, 688 insertions(+), 688 deletions(-) (limited to 'arm9') 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_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_02048120.s b/arm9/asm/unk_02048120.s index 74cfef32..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 diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index 54d87433..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 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 90334793..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 @@ -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_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_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 9831337f..b7a3a6a6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 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_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_021EFBF8.s b/arm9/modules/05/asm/mod05_021EFBF8.s index 3437ee91..5f6b0a3b 100644 --- a/arm9/modules/05/asm/mod05_021EFBF8.s +++ b/arm9/modules/05/asm/mod05_021EFBF8.s @@ -413,7 +413,7 @@ MOD05_021EFEDC: ; 0x021EFEDC add r0, #0x20 mov r1, #1 mov r3, #0xb - bl FUN_0200CCA4 + bl DrawFrameAndWindow1 mov r4, #0 _021EFF2E: add r0, r6, #0 @@ -551,7 +551,7 @@ _021F0056: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_0200CCF8 + bl ClearFrameAndWindow1 add r0, r5, #0 add r0, #0x20 bl RemoveWindow diff --git a/arm9/modules/05/asm/mod05_021F5C44.s b/arm9/modules/05/asm/mod05_021F5C44.s index 15d94fbb..5bf30612 100644 --- a/arm9/modules/05/asm/mod05_021F5C44.s +++ b/arm9/modules/05/asm/mod05_021F5C44.s @@ -724,7 +724,7 @@ MOD05_021F617C: ; 0x021F617C add r0, r4, #0 add r0, #0x38 mov r1, #0 - bl FUN_0200D0E0 + bl ClearFrameAndWindow2 add r4, #0x38 add r0, r4, #0 bl RemoveWindow 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/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 88cebb83..dd36a17b 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -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] @@ -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 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index ba4f57ae..3b404a7b 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -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/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 9111403a..485836b0 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -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 ac5296d1..abced62a 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -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 @@ -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 @@ -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/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index 388e4ef0..08da06f3 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -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 83feae5d..c91a960a 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -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 f23c5281..9c3b42a6 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -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 5b49451e..76c24a3f 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -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/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index f9301441..88628998 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -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 6e1c1392..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 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/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index e3f91882..aaf61da1 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -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/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index 66e1a85e..e2ede862 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -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 acd8756a..9499d99e 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1291,7 +1291,7 @@ _0222E094: 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 @@ -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 c61aa026..4fe0dba7 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -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 3b68da11..5ffe3380 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -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 f3c96168..ee333134 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -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 c04d7d65..a799ebaa 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -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 7c18c8e8..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] @@ -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} @@ -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 @@ -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 diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index 8d6b495f..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 diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 2c6752a5..3c1f5a06 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -135,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); diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 66a71a75..55a816e8 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -113,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); diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c index 7e378304..616578f4 100644 --- a/arm9/src/save_data_read_error.c +++ b/arm9/src/save_data_read_error.c @@ -103,7 +103,7 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id) AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); ReadMsgDataIntoString(msg_data, 0, str); AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); @@ -166,7 +166,7 @@ THUMB_FUNC void ShowGBACartRemovedError(u32 heap_id) AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); ReadMsgDataIntoString(msg_data, 1, str); AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); diff --git a/arm9/src/save_data_write_error.c b/arm9/src/save_data_write_error.c index 04f2d686..2a8848c6 100644 --- a/arm9/src/save_data_write_error.c +++ b/arm9/src/save_data_write_error.c @@ -111,7 +111,7 @@ THUMB_FUNC void ShowSaveDataWriteError(u32 heap_id, u32 err_no) AddWindow(bg_config, &window, &sSaveDataWriteErrorWindowTemplate); FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); - FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2); ReadMsgDataIntoString(msg_data, msg_no, str); AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL); diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 007b1bcf..68769c88 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -779,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; diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index 7b6ddeb7..e3276f25 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -33,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) @@ -91,5 +91,5 @@ 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_0200CABC.c b/arm9/src/unk_0200CABC.c index 2004ff29..f57469e1 100644 --- a/arm9/src/unk_0200CABC.c +++ b/arm9/src/unk_0200CABC.c @@ -82,9 +82,9 @@ THUMB_FUNC u32 FUN_0200CABC( heap_id); } -THUMB_FUNC u32 FUN_0200CAFC(void) +THUMB_FUNC s32 FUN_0200CAFC(void) { - return 24; + return NARC_winframe_narc_0024_NCLR; } THUMB_FUNC void FUN_0200CB00( @@ -121,42 +121,42 @@ THUMB_FUNC void FUN_0200CB00( GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 4, param3 << 5, 32, heap_id); } -THUMB_FUNC void FUN_0200CB6C(struct BgConfig *bgConfig, +THUMB_FUNC void DrawFrame1(struct BgConfig *bgConfig, u8 bgId, - u8 param2, - u8 param3, - u8 param4, - u8 param5, - u8 param6, - u16 param7) + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) { - FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 1), param2, (u8)(param3 - 1), param4, 1, param6); + bgConfig, bgId, (u16)(fillValue + 1), x, (u8)(y - 1), width, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 2), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 2), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 - 1), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 3), (u8)(x - 1), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 5), (u8)(param2 + param4), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 7), param2, (u8)(param3 + param5), param4, 1, param6); + bgConfig, bgId, (u16)(fillValue + 7), x, (u8)(y + height), width, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 8), - (u8)(param2 + param4), - (u8)(param3 + param5), + (u16)(fillValue + 8), + (u8)(x + width), + (u8)(y + height), 1, 1, - param6); + paletteNum); } -THUMB_FUNC void FUN_0200CCA4( +THUMB_FUNC void DrawFrameAndWindow1( struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) { - FUN_0200CB6C(window->bgConfig, + DrawFrame1(window->bgConfig, GetWindowBgId(window), GetWindowX(window), GetWindowY(window), @@ -171,7 +171,7 @@ THUMB_FUNC void FUN_0200CCA4( } } -THUMB_FUNC void FUN_0200CCF8(struct Window *window, BOOL copy_to_vram) +THUMB_FUNC void ClearFrameAndWindow1(struct Window *window, BOOL copy_to_vram) { FillBgTilemapRect(window->bgConfig, @@ -216,83 +216,83 @@ THUMB_FUNC void FUN_0200CD68( GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 4, param3 << 5, 32, param5); } -THUMB_FUNC void FUN_0200CDD8(struct BgConfig *bgConfig, +THUMB_FUNC void DrawFrame2(struct BgConfig *bgConfig, u8 bgId, - u8 param2, - u8 param3, - u8 param4, - u8 param5, - u8 param6, - u16 param7) + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) { - FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 2), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 2), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 2), param2, (u8)(param3 - 1), param4, 1, param6); + bgConfig, bgId, (u16)(fillValue + 2), x, (u8)(y - 1), width, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 4), - (u8)(param2 + param4 + 1), - (u8)(param3 - 1), + (u16)(fillValue + 4), + (u8)(x + width + 1), + (u8)(y - 1), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 5), - (u8)(param2 + param4 + 2), - (u8)(param3 - 1), + (u16)(fillValue + 5), + (u8)(x + width + 2), + (u8)(y - 1), 1, 1, - param6); + paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 2), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 2), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 1), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 1), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 2), (u8)(param3 + param5), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 2), (u8)(y + height), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 14), param2, (u8)(param3 + param5), param4, 1, param6); + bgConfig, bgId, (u16)(fillValue + 14), x, (u8)(y + height), width, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 15), - (u8)(param2 + param4), - (u8)(param3 + param5), + (u16)(fillValue + 15), + (u8)(x + width), + (u8)(y + height), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 16), - (u8)(param2 + param4 + 1), - (u8)(param3 + param5), + (u16)(fillValue + 16), + (u8)(x + width + 1), + (u8)(y + height), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 17), - (u8)(param2 + param4 + 2), - (u8)(param3 + param5), + (u16)(fillValue + 17), + (u8)(x + width + 2), + (u8)(y + height), 1, 1, - param6); + paletteNum); } -THUMB_FUNC void FUN_0200D06C(struct Window *window, u32 fill_value, u32 palette_num) +THUMB_FUNC void DrawWindowFrame2(struct Window *window, u32 fill_value, u32 palette_num) { - FUN_0200CDD8(window->bgConfig, + DrawFrame2(window->bgConfig, GetWindowBgId(window), GetWindowX(window), GetWindowY(window), @@ -302,10 +302,10 @@ THUMB_FUNC void FUN_0200D06C(struct Window *window, u32 fill_value, u32 palette_ (u16)fill_value); } -THUMB_FUNC void FUN_0200D0BC( +THUMB_FUNC void DrawFrameAndWindow2( struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num) { - FUN_0200D06C(window, fill_value, palette_num); + DrawWindowFrame2(window, fill_value, palette_num); if (!copy_to_vram) { CopyWindowToVram(window); @@ -314,7 +314,7 @@ THUMB_FUNC void FUN_0200D0BC( FUN_0200D18C(window, fill_value); } -THUMB_FUNC void FUN_0200D0E0(struct Window *window, BOOL param1) +THUMB_FUNC void ClearFrameAndWindow2(struct Window *window, BOOL param1) { FillBgTilemapRect(window->bgConfig, GetWindowBgId(window), @@ -331,30 +331,30 @@ THUMB_FUNC void FUN_0200D0E0(struct Window *window, BOOL param1) } } -THUMB_FUNC void FUN_0200D148(u8 *param0, - u16 param1, - u16 param2, - u16 param3, - u16 param4, - u8 *param5, - u16 param6, - u16 param7, - u16 param8, - u16 param9, - u16 param10, - u16 param11) +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 = param0; - src.width = param3; - src.height = param4; + src.pixels = srcPixels; + src.width = srcWidth; + src.height = srcHeight; struct Bitmap dst; - dst.pixels = param5; - dst.width = param6; - dst.height = param7; + dst.pixels = dstPixels; + dst.width = dstWidth; + dst.height = dstHeight; - BlitBitmapRect4Bit(&src, &dst, param1, param2, param8, param9, param10, param11, 0); + BlitBitmapRect4Bit(&src, &dst, srcX, srcY, dstX, dstY, width, height, 0); } THUMB_FUNC void FUN_0200D18C(struct Window *window, u16 fill_value) @@ -380,7 +380,7 @@ THUMB_FUNC void FUN_0200D18C(struct Window *window, u16 fill_value) memcpy(ptr + ((i << 7) + 0x60), charptr + ((fill_value + 11) << 5), 0x20); } - FUN_0200D148(st30, 4, 0, 12, 0x30, ptr, 12, 0x30, 1, 0, 12, 0x30); + 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); @@ -465,95 +465,95 @@ THUMB_FUNC void FUN_0200D378( NARC_GRAPHIC_FIELD_BOARD, param4, bg_config, bg_id, numtiles, 0x300, FALSE, heap_id); } -THUMB_FUNC void FUN_0200D3B0(struct BgConfig *bgConfig, +THUMB_FUNC void DrawFrame3(struct BgConfig *bgConfig, u8 bgId, - u8 param2, - u8 param3, - u8 param4, - u8 param5, - u8 param6, - u16 param7) + u8 x, + u8 y, + u8 width, + u8 height, + u8 paletteNum, + u16 fillValue) { - FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 9), (u8)(param3 - 1), 1, 1, param6); + FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 9), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 8), (u8)(param3 - 1), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 8), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 2), - (u8)(param2 - 7), - (u8)(param3 - 1), - (u8)(param4 + 7), + (u16)(fillValue + 2), + (u8)(x - 7), + (u8)(y - 1), + (u8)(width + 7), 1, - param6); + paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 4), - (u8)(param2 + param4 + 1), - (u8)(param3 - 1), + (u16)(fillValue + 4), + (u8)(x + width + 1), + (u8)(y - 1), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 5), - (u8)(param2 + param4 + 2), - (u8)(param3 - 1), + (u16)(fillValue + 5), + (u8)(x + width + 2), + (u8)(y - 1), 1, 1, - param6); + paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 9), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 9), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 8), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 8), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 8), (u8)(param2 - 1), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 8), (u8)(x - 1), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6); + bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 9), (u8)(param3 + param5), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 9), (u8)(y + height), 1, 1, paletteNum); FillBgTilemapRect( - bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 8), (u8)(param3 + param5), 1, 1, param6); + bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 8), (u8)(y + height), 1, 1, paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 14), - (u8)(param2 - 7), - (u8)(param3 + param5), - (u8)(param4 + 7), + (u16)(fillValue + 14), + (u8)(x - 7), + (u8)(y + height), + (u8)(width + 7), 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 15), - (u8)(param2 + param4), - (u8)(param3 + param5), + (u16)(fillValue + 15), + (u8)(x + width), + (u8)(y + height), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 16), - (u8)(param2 + param4 + 1), - (u8)(param3 + param5), + (u16)(fillValue + 16), + (u8)(x + width + 1), + (u8)(y + height), 1, 1, - param6); + paletteNum); FillBgTilemapRect(bgConfig, bgId, - (u16)(param7 + 17), - (u8)(param2 + param4 + 2), - (u8)(param3 + param5), + (u16)(fillValue + 17), + (u8)(x + width + 2), + (u8)(y + height), 1, 1, - param6); + paletteNum); } -THUMB_FUNC void FUN_0200D678(struct Window *window, u16 param1, u8 param2) +THUMB_FUNC void DrawWindowCorner(struct Window *window, u16 fillValue, u8 paletteNum) { u16 i, j; u16 x, y; @@ -569,52 +569,52 @@ THUMB_FUNC void FUN_0200D678(struct Window *window, u16 param1, u8 param2) { FillBgTilemapRect(window->bgConfig, bg_id, - (u16)(param1 + 6 * i + j), + (u16)(fillValue + 6 * i + j), (u8)(x + j), (u8)(y + i), 1, 1, - param2); + paletteNum); } } } -THUMB_FUNC void FUN_0200D6F8(struct Window *window, BOOL param1, u16 param2, u8 param3, u8 param4) +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) { - FUN_0200D3B0(window->bgConfig, + DrawFrame3(window->bgConfig, bg_id, GetWindowX(window), GetWindowY(window), GetWindowWidth(window), GetWindowHeight(window), - param3, - param2); - FUN_0200D678(window, (u16)(param2 + 30), param3); + paletteNum, + fillValue); + DrawWindowCorner(window, (u16)(fillValue + 30), paletteNum); } else { - FUN_0200CDD8(window->bgConfig, + DrawFrame2(window->bgConfig, bg_id, GetWindowX(window), GetWindowY(window), GetWindowWidth(window), GetWindowHeight(window), - param3, - param2); + paletteNum, + fillValue); } - if (!param1) + if (!copy_to_vram) { CopyWindowToVram(window); } - FUN_0200D18C(window, param2); + FUN_0200D18C(window, fillValue); } -THUMB_FUNC void FUN_0200D7A0(struct Window *window, u32 param1, BOOL param2) +THUMB_FUNC void ClearFrameAndWindow3(struct Window *window, u8 param1, BOOL copy_to_vram) { u8 bg_id = GetWindowBgId(window); if (param1 <= 1) @@ -640,7 +640,7 @@ THUMB_FUNC void FUN_0200D7A0(struct Window *window, u32 param1, BOOL param2) 0); } - if (!param2) + if (!copy_to_vram) { ClearWindowTilemapAndCopyToVram(window); } @@ -668,12 +668,12 @@ THUMB_FUNC struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 NNSG2dCharacterData *pCharData; void *r5 = GfGfxLoader_GetCharData( NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0023_NCGR, FALSE, &pCharData, heap_id); - FUN_0200D148( + BlitRect4Bit( pCharData->pRawData, 0, 0, 0x10, 0x80, ptr->unk004[0], 0x10, 0x80, 0, 0, 0x10, 0x80); FreeToHeap(r5); ptr->unk000 = window; - ptr->unk484 = (u16)param1; + ptr->fillValue = (u16)param1; ptr->unk486 = 0; ptr->unk487 = 0; ptr->unk488 = 0; @@ -697,10 +697,10 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) bg_id, (u32 *)param0->unk004[8], 0x80, - (u32)(param0->unk484 + 18)); + (u32)(param0->fillValue + 18)); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 10), + (u16)(param0->fillValue + 10), (u8)(x + width + 1), (u8)(y + 2), 1, @@ -708,7 +708,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 11), + (u16)(param0->fillValue + 11), (u8)(x + width + 2), (u8)(y + 2), 1, @@ -716,7 +716,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 10), + (u16)(param0->fillValue + 10), (u8)(x + width + 1), (u8)(y + 3), 1, @@ -724,7 +724,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 11), + (u16)(param0->fillValue + 11), (u8)(x + width + 2), (u8)(y + 3), 1, @@ -738,12 +738,12 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) bg_id, (u32 *)param0->unk004[param0->unk487], 0x80, - (u32)(param0->unk484 + 18)); + (u32)(param0->fillValue + 18)); if (param1 != 0) { FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 18), + (u16)(param0->fillValue + 18), (u8)(x + width + 1), (u8)(y + 2), 1, @@ -751,7 +751,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 19), + (u16)(param0->fillValue + 19), (u8)(x + width + 2), (u8)(y + 2), 1, @@ -759,7 +759,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 20), + (u16)(param0->fillValue + 20), (u8)(x + width + 1), (u8)(y + 3), 1, @@ -767,7 +767,7 @@ THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1) 0x10); FillBgTilemapRect(param0->unk000->bgConfig, bg_id, - (u16)(param0->unk484 + 21), + (u16)(param0->fillValue + 21), (u8)(x + width + 2), (u8)(y + 3), 1, @@ -833,7 +833,7 @@ THUMB_FUNC u8 *FUN_0200DC4C(struct BgConfig *bg_config, FUN_0200DDD8(r4); FUN_0200DE30(r4, param2, param3); FUN_0200DE80(r4, param6, param7); - FUN_0200DFD8(r4, param4, param5); + DrawFramed10x10Square(r4, param4, param5); BgCommitTilemapBufferToVram(bg_config, bg_id); return &r4->unk16f; @@ -853,7 +853,7 @@ THUMB_FUNC u8 *FUN_0200DCA4(struct BgConfig *bg_config, FUN_0200DDD8(r4); FUN_0200DE30(r4, param2, param3); FUN_0200DEC0(r4, param6); - FUN_0200DFD8(r4, param4, param5); + DrawFramed10x10Square(r4, param4, param5); BgCommitTilemapBufferToVram(bg_config, bg_id); return &r4->unk16f; @@ -865,7 +865,7 @@ THUMB_FUNC void FUN_0200DCF8(u32 param0, void *param1) switch (unk->unk16f) { case 1: - FUN_0200E188(unk); + ClearFramed10x10Square(unk); FUN_0200C3DC(unk->unk164); MOD05_021D99F8(unk); FUN_0200621C((s32)param0); @@ -891,10 +891,10 @@ THUMB_FUNC struct UnkStruct_0200CABC_2 *FUN_0200DD70( struct UnkStruct_0200CABC_2 *res = FUN_0201B6C8(FUN_020061E8(FUN_0200DCF8, 0x170, 0, param4)); res->unk16f = 0; - res->unk168 = bg_config; - res->unk16c = bg_id; - res->unk16d = param2; - res->unk16e = param3; + res->bgConfig = bg_config; + res->bgId = bg_id; + res->x = param2; + res->y = param3; return res; } @@ -989,93 +989,93 @@ THUMB_FUNC void FUN_0200DEF4( FreeToHeap(res); } -THUMB_FUNC void FUN_0200DFD8(struct UnkStruct_0200CABC_2 *param0, u8 param1, u16 param2) +THUMB_FUNC void DrawFramed10x10Square(struct UnkStruct_0200CABC_2 *param0, u8 paletteNum, u16 fillValue) { - FillBgTilemapRect(param0->unk168, - param0->unk16c, - param2, - (u8)(param0->unk16d - 1), - (u8)(param0->unk16e - 1), + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + fillValue, + (u8)(param0->x - 1), + (u8)(param0->y - 1), 1, 1, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 1), - param0->unk16d, - (u8)(param0->unk16e - 1), + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 1), + param0->x, + (u8)(param0->y - 1), 10, 1, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 2), - (u8)(param0->unk16d + 10), - (u8)(param0->unk16e - 1), + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 2), + (u8)(param0->x + 10), + (u8)(param0->y - 1), 1, 1, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 4), - param0->unk16d, - param0->unk16e, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 4), + param0->x, + param0->y, 10, 10, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 3), - (u8)(param0->unk16d - 1), - param0->unk16e, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 3), + (u8)(param0->x - 1), + param0->y, 1, 10, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 5), - (u8)(param0->unk16d + 10), - param0->unk16e, + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 5), + (u8)(param0->x + 10), + param0->y, 1, 10, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 6), - (u8)(param0->unk16d - 1), - (u8)(param0->unk16e + 10), + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 6), + (u8)(param0->x - 1), + (u8)(param0->y + 10), 1, 1, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 7), - param0->unk16d, - (u8)(param0->unk16e + 10), + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 7), + param0->x, + (u8)(param0->y + 10), 10, 1, - param1); - FillBgTilemapRect(param0->unk168, - param0->unk16c, - (u16)(param2 + 8), - (u8)(param0->unk16d + 10), - (u8)(param0->unk16e + 10), + paletteNum); + FillBgTilemapRect(param0->bgConfig, + param0->bgId, + (u16)(fillValue + 8), + (u8)(param0->x + 10), + (u8)(param0->y + 10), 1, 1, - param1); + paletteNum); - ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c); + ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId); } -THUMB_FUNC void FUN_0200E188(struct UnkStruct_0200CABC_2 *param0) +THUMB_FUNC void ClearFramed10x10Square(struct UnkStruct_0200CABC_2 *param0) { - FillBgTilemapRect(param0->unk168, - param0->unk16c, + FillBgTilemapRect(param0->bgConfig, + param0->bgId, 0, - (u8)(param0->unk16d - 1), - (u8)(param0->unk16e - 1), + (u8)(param0->x - 1), + (u8)(param0->y - 1), 12, 12, 0); - ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c); + ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId); } diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index ced5d707..f16b4faa 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -108,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); -- cgit v1.2.3 From 08c88720e7d4a5520262468f70e62b99429c10cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 22 Aug 2021 11:02:04 +0200 Subject: rename unk_0200CABC to render_window --- arm9/arm9.lsf | 2 +- arm9/src/communication_error.c | 2 +- arm9/src/error_message_reset.c | 2 +- arm9/src/render_window.c | 1027 ++++++++++++++++++++++++++++++++++++ arm9/src/save_data_read_error.c | 2 +- arm9/src/save_data_write_error.c | 2 +- arm9/src/scrcmd.c | 2 +- arm9/src/text_02054590.c | 2 +- arm9/src/unk_0200CABC.c | 1081 -------------------------------------- arm9/src/wfc_user_info_warning.c | 2 +- 10 files changed, 1035 insertions(+), 1089 deletions(-) create mode 100644 arm9/src/render_window.c delete mode 100644 arm9/src/unk_0200CABC.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 179bf053..04756a55 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -31,7 +31,7 @@ Static arm9 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 diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c index 3c1f5a06..848e3d0a 100644 --- a/arm9/src/communication_error.c +++ b/arm9/src/communication_error.c @@ -7,7 +7,7 @@ #include "msgdata/msg.naix" #include "text.h" #include "brightness.h" -#include "unk_0200CABC.h" +#include "render_window.h" extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 55a816e8..12af3c6f 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -7,7 +7,7 @@ #include "PAD_pad.h" #include "font.h" #include "brightness.h" -#include "unk_0200CABC.h" +#include "render_window.h" const struct WindowTemplate UNK_020FF49C = { 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/save_data_read_error.c b/arm9/src/save_data_read_error.c index 616578f4..45a0c7bd 100644 --- a/arm9/src/save_data_read_error.c +++ b/arm9/src/save_data_read_error.c @@ -6,7 +6,7 @@ #include "msgdata/msg.naix" #include "save_data_read_error.h" #include "text.h" -#include "unk_0200CABC.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); diff --git a/arm9/src/save_data_write_error.c b/arm9/src/save_data_write_error.c index 2a8848c6..3f03fb4b 100644 --- a/arm9/src/save_data_write_error.c +++ b/arm9/src/save_data_write_error.c @@ -6,7 +6,7 @@ #include "msgdata/msg.naix" #include "save_data_write_error.h" #include "text.h" -#include "unk_0200CABC.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); diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 68769c88..2d57f0b1 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -6,7 +6,7 @@ #include "player_data.h" #include "text.h" #include "bg_window.h" -#include "unk_0200CABC.h" +#include "render_window.h" #include "text_02054590.h" diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index e3276f25..03d01ae6 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -3,7 +3,7 @@ #include "bg_window.h" #include "font.h" #include "render_text.h" -#include "unk_0200CABC.h" +#include "render_window.h" extern void FUN_0201BD5C(void); diff --git a/arm9/src/unk_0200CABC.c b/arm9/src/unk_0200CABC.c deleted file mode 100644 index f57469e1..00000000 --- a/arm9/src/unk_0200CABC.c +++ /dev/null @@ -1,1081 +0,0 @@ -#include "global.h" -#include "unk_0200CABC.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/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c index f16b4faa..e48262b0 100644 --- a/arm9/src/wfc_user_info_warning.c +++ b/arm9/src/wfc_user_info_warning.c @@ -11,7 +11,7 @@ #include "text.h" #include "wfc_user_info_warning.h" #include "brightness.h" -#include "unk_0200CABC.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); -- cgit v1.2.3