summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_2.c7964
-rw-r--r--src/battle/battle_ai.c209
-rw-r--r--src/battle/battle_interface.c669
-rw-r--r--src/battle/battle_records.c29
-rw-r--r--src/debug/kagaya_debug_menu.c420
-rw-r--r--src/debug/nakamura_debug_menu.c5031
-rw-r--r--src/debug/nohara_debug_menu.c2316
-rw-r--r--src/debug/taya_debug_window.c2122
-rw-r--r--src/debug/tomomichi_debug_menu.c8643
-rw-r--r--src/debug/watanabe_debug_menu.c9846
-rw-r--r--src/engine/cable_club.c4
-rw-r--r--src/engine/clock.c3
-rw-r--r--src/engine/link.c141
-rw-r--r--src/engine/rtc.c29
-rw-r--r--src/engine/save.c77
-rw-r--r--src/engine/sprite.c14
-rw-r--r--src/engine/task.c10
-rw-r--r--src/engine/trainer_card.c97
-rw-r--r--src/field/berry.c521
-rw-r--r--src/field/bike.c21
-rw-r--r--src/field/choose_party.c101
-rw-r--r--src/field/decoration_inventory.c11
-rw-r--r--src/field/field_control_avatar.c472
-rw-r--r--src/field/field_map_obj.c515
-rw-r--r--src/field/field_player_avatar.c100
-rw-r--r--src/field/mauville_man.c81
-rw-r--r--src/field/overworld.c95
-rw-r--r--src/field/party_menu.c14
-rw-r--r--src/field/pokeblock.c46
-rw-r--r--src/field/roamer.c19
-rw-r--r--src/field/slot_machine.c1237
-rw-r--r--src/field/start_menu.c303
-rw-r--r--src/field/wild_encounter.c31
-rw-r--r--src/pokemon/mail.c1866
-rw-r--r--src/pokemon/pokemon_1.c322
-rw-r--r--src/rom3.c14
-rw-r--r--src/rom6.c18
-rw-r--r--src/roulette.c5
-rw-r--r--src/scene/cable_car.c218
-rw-r--r--src/scene/new_game.c77
-rw-r--r--src/scene/title_screen.c17
41 files changed, 43665 insertions, 63 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 990535b4e..5212f5bdc 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -203,6 +203,231 @@ void sub_800E7C4(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void InitBattle(void)
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x0\n"
+ " bl SetHBlankCallback\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x13\n"
+ " ldr r2, ._10\n"
+ " mov r0, sp\n"
+ " bl gScriptFuncs_End+0x3cb4\n"
+ " ldr r0, ._10 + 4\n"
+ " strh r4, [r0]\n"
+ " sub r0, r0, #0xc\n"
+ " mov r2, #0xf0\n"
+ " strh r2, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " ldr r3, ._10 + 8\n"
+ " add r1, r3, #0\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r4, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r4, [r0]\n"
+ " ldr r0, ._10 + 12\n"
+ " strh r2, [r0]\n"
+ " ldr r0, ._10 + 16\n"
+ " strh r1, [r0]\n"
+ " bl dp12_8087EA4\n"
+ " ldr r0, ._10 + 20\n"
+ " mov r3, #0xf0\n"
+ " mov r5, #0xf0\n"
+ " lsl r5, r5, #0x3\n"
+ " add r2, r0, r5\n"
+ " mov r1, #0x4f\n"
+ "._5:\n"
+ " strh r3, [r0]\n"
+ " strh r3, [r2]\n"
+ " add r2, r2, #0x2\n"
+ " add r0, r0, #0x2\n"
+ " sub r1, r1, #0x1\n"
+ " cmp r1, #0\n"
+ " bge ._5 @cond_branch\n"
+ " mov r1, #0x50\n"
+ " ldr r4, ._10 + 24\n"
+ " ldr r0, ._10 + 20\n"
+ " ldr r3, ._10 + 28\n"
+ " mov r5, #0x82\n"
+ " lsl r5, r5, #0x4\n"
+ " add r2, r0, r5\n"
+ " add r0, r0, #0xa0\n"
+ "._6:\n"
+ " strh r3, [r0]\n"
+ " strh r3, [r2]\n"
+ " add r2, r2, #0x2\n"
+ " add r0, r0, #0x2\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x9f\n"
+ " ble ._6 @cond_branch\n"
+ " ldr r0, [r4]\n"
+ " ldr r1, [r4, #0x4]\n"
+ " ldr r2, [r4, #0x8]\n"
+ " bl sub_80895F8\n"
+ " ldr r4, ._10 + 32\n"
+ " add r0, r4, #0\n"
+ " bl SetUpWindowConfig\n"
+ " bl ResetPaletteFade\n"
+ " ldr r0, ._10 + 36\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 40\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 44\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 48\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 52\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 56\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 60\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 64\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._10 + 68\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._7 @cond_branch\n"
+ " bl GetBattleTerrain\n"
+ " ldr r1, ._10 + 72\n"
+ " strb r0, [r1]\n"
+ "._7:\n"
+ " ldr r0, ._10 + 76\n"
+ " add r1, r4, #0\n"
+ " bl InitWindowFromConfig\n"
+ " ldr r0, ._10 + 80\n"
+ " ldr r1, ._10 + 84\n"
+ " bl InitWindowFromConfig\n"
+ " ldr r0, ._10 + 88\n"
+ " ldr r1, ._10 + 92\n"
+ " bl InitWindowFromConfig\n"
+ " bl sub_800D6D4\n"
+ " bl sub_800DAB8\n"
+ " bl ResetSpriteData\n"
+ " bl ResetTasks\n"
+ " bl sub_800E23C\n"
+ " bl FreeAllSpritePalettes\n"
+ " ldr r1, ._10 + 96\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._10 + 100\n"
+ " bl SetVBlankCallback\n"
+ " bl setup_poochyena_battle\n"
+ " ldr r0, ._10 + 104\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._8 @cond_branch\n"
+ " ldr r0, ._10 + 108\n"
+ " bl SetMainCallback2\n"
+ " b ._9\n"
+ "._11:\n"
+ " .align 2, 0\n"
+ "._10:\n"
+ " .word 0x5006000\n"
+ " .word 0x400004c\n"
+ " .word 0x5051\n"
+ " .word gUnknown_030042C4\n"
+ " .word gUnknown_03004240\n"
+ " .word gUnknown_03004DE0\n"
+ " .word gUnknown_081F9674\n"
+ " .word 0xff10\n"
+ " .word gWindowConfig_81E6C58\n"
+ " .word gUnknown_030042A4\n"
+ " .word gUnknown_030042A0\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_030041B4\n"
+ " .word gUnknown_03004288\n"
+ " .word gUnknown_03004280\n"
+ " .word gUnknown_030041B0\n"
+ " .word gUnknown_030041B8\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gBattleTerrain\n"
+ " .word gUnknown_03004210\n"
+ " .word gUnknown_030041D0\n"
+ " .word gWindowConfig_81E71D0\n"
+ " .word gUnknown_03004250\n"
+ " .word gWindowConfig_81E71EC\n"
+ " .word gReservedSpritePaletteCount\n"
+ " .word sub_800FCFC+1\n"
+ " .word gBattleTypeFlags\n"
+ " .word sub_800F298+1\n"
+ "._8:\n"
+ " ldr r0, ._15\n"
+ " bl SetMainCallback2\n"
+ "._9:\n"
+ " ldr r0, ._15 + 4\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._13 @cond_branch\n"
+ " ldr r0, ._15 + 8\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._13 @cond_branch\n"
+ " ldr r0, ._15 + 12\n"
+ " ldr r1, ._15 + 16\n"
+ " ldrh r1, [r1]\n"
+ " bl CreateNPCTrainerParty\n"
+ " bl SetWildMonHeldItem\n"
+ "._13:\n"
+ " ldr r0, ._15 + 20\n"
+ " ldr r1, ._15 + 24\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x2\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " ldr r4, ._15 + 28\n"
+ " mov r3, #0xfa\n"
+ " lsl r3, r3, #0x1\n"
+ " add r5, r4, r3\n"
+ "._14:\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl AdjustFriendship\n"
+ " add r4, r4, #0x64\n"
+ " cmp r4, r5\n"
+ " ble ._14 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldr r0, ._15 + 32\n"
+ " strb r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word sub_800EC9C+1\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gEnemyParty\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word gMain\n"
+ " .word 0x43d\n"
+ " .word gPlayerParty\n"
+ " .word gBattleCommunication\n"
+ "\n"
+ );
+}
+#else
void InitBattle(void)
{
s32 i;
@@ -271,6 +496,7 @@ void InitBattle(void)
AdjustFriendship(&gPlayerParty[i], 3);
gBattleCommunication[0] = 0;
}
+#endif
void sub_800E9EC(void)
{
@@ -379,6 +605,476 @@ void shedinja_something(struct Pokemon *pkmn)
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_800EC9C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " bl GetMultiplayerId\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._55\n"
+ " ldr r1, ._55 + 4\n"
+ " add r0, r0, r1\n"
+ " strb r4, [r0]\n"
+ " mov r0, #0x1\n"
+ " add r5, r4, #0\n"
+ " eor r5, r5, r0\n"
+ " ldr r0, ._55 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x9\n"
+ " bls ._53 @cond_branch\n"
+ " b ._140\n"
+ "._53:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._55 + 12\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._56:\n"
+ " .align 2, 0\n"
+ "._55:\n"
+ " .word +0x2000000\n"
+ " .word 0x160cb\n"
+ " .word gBattleCommunication\n"
+ " .word ._57\n"
+ "._57:\n"
+ " .word ._58\n"
+ " .word ._59\n"
+ " .word ._60\n"
+ " .word ._61\n"
+ " .word ._62\n"
+ " .word ._63\n"
+ " .word ._64\n"
+ " .word ._65\n"
+ " .word ._66\n"
+ " .word ._67\n"
+ "._58:\n"
+ " ldr r2, ._76\n"
+ " ldrh r1, [r2]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._68 @cond_branch\n"
+ " ldr r0, ._76 + 4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._69 @cond_branch\n"
+ " b ._140\n"
+ "._69:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._71 @cond_branch\n"
+ " b ._140\n"
+ "._71:\n"
+ " ldr r1, ._76 + 8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " strb r0, [r1, #0x1]\n"
+ " bl sub_800E9EC\n"
+ " bl sub_800EAAC\n"
+ " ldr r0, ._76 + 12\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._73 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " ldr r1, ._76 + 16\n"
+ " ldr r0, ._76 + 20\n"
+ "._74:\n"
+ " strh r3, [r0, #0x18]\n"
+ " str r1, [r0, #0x14]\n"
+ " add r0, r0, #0x1c\n"
+ " add r3, r3, #0x1\n"
+ " cmp r3, #0x1\n"
+ " ble ._74 @cond_branch\n"
+ "._73:\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._76 + 8\n"
+ " mov r2, #0x20\n"
+ " bl SendBlock\n"
+ " ldr r1, ._76 + 24\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._140\n"
+ "._77:\n"
+ " .align 2, 0\n"
+ "._76:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word +0x2000000\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word 0x2211\n"
+ " .word gLinkPlayers\n"
+ " .word gBattleCommunication\n"
+ "._68:\n"
+ " mov r0, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " ldr r1, ._79\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " bl sub_800EB08\n"
+ " b ._140\n"
+ "._80:\n"
+ " .align 2, 0\n"
+ "._79:\n"
+ " .word gBattleCommunication\n"
+ "._59:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0x3\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0x3\n"
+ " beq ._81 @cond_branch\n"
+ " b ._140\n"
+ "._81:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " mov r3, #0x0\n"
+ " ldr r0, ._86\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._83 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne ._84 @cond_branch\n"
+ " ldr r0, ._86 + 4\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0xc\n"
+ " b ._85\n"
+ "._87:\n"
+ " .align 2, 0\n"
+ "._86:\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gBattleTypeFlags\n"
+ "._84:\n"
+ " ldr r0, ._92\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x8\n"
+ "._85:\n"
+ " orr r1, r1, r2\n"
+ " strh r1, [r0]\n"
+ " add r3, r3, #0x1\n"
+ "._83:\n"
+ " lsl r7, r5, #0x8\n"
+ " cmp r3, #0\n"
+ " bne ._94 @cond_branch\n"
+ " ldr r0, ._92 + 4\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x1\n"
+ " add r2, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " add r6, r0, #0\n"
+ " ldrh r2, [r2]\n"
+ " cmp r1, r2\n"
+ " bne ._89 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne ._90 @cond_branch\n"
+ " ldr r0, ._92\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0xc\n"
+ " b ._91\n"
+ "._93:\n"
+ " .align 2, 0\n"
+ "._92:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gBlockRecvBuffer\n"
+ "._90:\n"
+ " ldr r0, ._96\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x8\n"
+ "._91:\n"
+ " orr r1, r1, r2\n"
+ " strh r1, [r0]\n"
+ " add r3, r3, #0x1\n"
+ "._89:\n"
+ " lsl r7, r5, #0x8\n"
+ " cmp r3, #0\n"
+ " bne ._94 @cond_branch\n"
+ " ldrh r1, [r6]\n"
+ " ldr r0, ._96 + 4\n"
+ " ldr r2, ._96\n"
+ " b ._95\n"
+ "._97:\n"
+ " .align 2, 0\n"
+ "._96:\n"
+ " .word gBattleTypeFlags\n"
+ " .word 0x101\n"
+ "._100:\n"
+ " add r3, r3, #0x1\n"
+ " cmp r3, #0x1\n"
+ " bgt ._98 @cond_branch\n"
+ " lsl r0, r3, #0x8\n"
+ " add r0, r0, r6\n"
+ " ldrh r1, [r0]\n"
+ " ldr r0, ._103\n"
+ "._95:\n"
+ " cmp r1, r0\n"
+ " bls ._100 @cond_branch\n"
+ " cmp r3, r4\n"
+ " beq ._100 @cond_branch\n"
+ "._98:\n"
+ " cmp r3, #0x2\n"
+ " bne ._101 @cond_branch\n"
+ " ldrh r0, [r2]\n"
+ " mov r1, #0xc\n"
+ " b ._102\n"
+ "._104:\n"
+ " .align 2, 0\n"
+ "._103:\n"
+ " .word 0x101\n"
+ "._101:\n"
+ " ldrh r0, [r2]\n"
+ " mov r1, #0x8\n"
+ "._102:\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ "._94:\n"
+ " bl sub_800EB08\n"
+ " ldr r0, ._106\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._106 + 4\n"
+ " lsl r2, r0, #0x2\n"
+ " add r2, r2, r0\n"
+ " lsl r2, r2, #0x3\n"
+ " add r2, r2, r1\n"
+ " mov r1, #0x0\n"
+ " mov r0, #0x87\n"
+ " lsl r0, r0, #0x1\n"
+ " strh r0, [r2, #0xa]\n"
+ " mov r0, #0x5a\n"
+ " strh r0, [r2, #0xc]\n"
+ " strh r1, [r2, #0x12]\n"
+ " ldr r0, ._106 + 8\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " ldrb r0, [r0, #0x3]\n"
+ " lsl r0, r0, #0x8\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r2, #0xe]\n"
+ " ldr r0, ._106 + 12\n"
+ " add r0, r0, #0x2\n"
+ " add r0, r7, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r2, #0x10]\n"
+ " b ._129\n"
+ "._107:\n"
+ " .align 2, 0\n"
+ "._106:\n"
+ " .word sub_800DE30+1\n"
+ " .word gTasks\n"
+ " .word +0x2000000\n"
+ " .word gBlockRecvBuffer\n"
+ "._60:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._108 @cond_branch\n"
+ " b ._140\n"
+ "._108:\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._111\n"
+ " mov r2, #0xc8\n"
+ " bl SendBlock\n"
+ " b ._129\n"
+ "._112:\n"
+ " .align 2, 0\n"
+ "._111:\n"
+ " .word gPlayerParty\n"
+ "._61:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0x3\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0x3\n"
+ " beq ._113 @cond_branch\n"
+ " b ._140\n"
+ "._113:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " ldr r0, ._116\n"
+ " lsl r1, r5, #0x8\n"
+ " ldr r2, ._116 + 4\n"
+ " add r1, r1, r2\n"
+ " mov r2, #0xc8\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " b ._129\n"
+ "._117:\n"
+ " .align 2, 0\n"
+ "._116:\n"
+ " .word gEnemyParty\n"
+ " .word gBlockRecvBuffer\n"
+ "._62:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._118 @cond_branch\n"
+ " b ._140\n"
+ "._118:\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._121\n"
+ " mov r2, #0xc8\n"
+ " bl SendBlock\n"
+ " b ._129\n"
+ "._122:\n"
+ " .align 2, 0\n"
+ "._121:\n"
+ " .word gPlayerParty+0xc8\n"
+ "._63:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0x3\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0x3\n"
+ " beq ._123 @cond_branch\n"
+ " b ._140\n"
+ "._123:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " ldr r0, ._126\n"
+ " lsl r1, r5, #0x8\n"
+ " ldr r2, ._126 + 4\n"
+ " add r1, r1, r2\n"
+ " mov r2, #0xc8\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " b ._129\n"
+ "._127:\n"
+ " .align 2, 0\n"
+ "._126:\n"
+ " .word gEnemyParty+0xc8\n"
+ " .word gBlockRecvBuffer\n"
+ "._64:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._140 @cond_branch\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._130\n"
+ " mov r2, #0xc8\n"
+ " bl SendBlock\n"
+ " b ._129\n"
+ "._131:\n"
+ " .align 2, 0\n"
+ "._130:\n"
+ " .word gPlayerParty+0x190\n"
+ "._65:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0x3\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0x3\n"
+ " bne ._140 @cond_branch\n"
+ " bl ResetBlockReceivedFlags\n"
+ " ldr r4, ._134\n"
+ " lsl r1, r5, #0x8\n"
+ " ldr r0, ._134 + 4\n"
+ " add r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0xc8\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " ldr r1, ._134 + 8\n"
+ " add r0, r4, r1\n"
+ " bl shedinja_something\n"
+ " ldr r1, ._134 + 12\n"
+ " add r0, r4, r1\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " sub r0, r0, #0xc8\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " sub r0, r0, #0x64\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x64\n"
+ " bl shedinja_something\n"
+ "._129:\n"
+ " ldr r1, ._134 + 16\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._140\n"
+ "._135:\n"
+ " .align 2, 0\n"
+ "._134:\n"
+ " .word gEnemyParty+0x190\n"
+ " .word gBlockRecvBuffer\n"
+ " .word 0xfffffe70\n"
+ " .word 0xfffffed4\n"
+ " .word gBattleCommunication\n"
+ "._66:\n"
+ " bl sub_800B950\n"
+ " ldr r0, ._137\n"
+ " ldrb r1, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " mov r2, #0x0\n"
+ " strb r1, [r0]\n"
+ " strb r2, [r0, #0x1]\n"
+ " strb r2, [r0, #0x2]\n"
+ " b ._140\n"
+ "._138:\n"
+ " .align 2, 0\n"
+ "._137:\n"
+ " .word gBattleCommunication\n"
+ "._67:\n"
+ " ldr r0, ._141\n"
+ " add r1, r0, #1\n"
+ " bl battle_load_something\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._140 @cond_branch\n"
+ " ldr r2, ._141 + 4\n"
+ " ldr r1, ._141 + 8\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " ldr r0, ._141 + 12\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._141 + 16\n"
+ " bl SetMainCallback2\n"
+ " ldr r3, ._141 + 20\n"
+ " ldrh r2, [r3]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._140 @cond_branch\n"
+ " ldr r1, ._141 + 24\n"
+ " mov r4, #0x80\n"
+ " lsl r4, r4, #0x4\n"
+ " add r0, r4, #0\n"
+ " strh r0, [r1]\n"
+ " mov r0, #0x20\n"
+ " orr r0, r0, r2\n"
+ " strh r0, [r3]\n"
+ "._140:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word gUnknown_02024D1F\n"
+ " .word gPreBattleCallback1\n"
+ " .word gMain\n"
+ " .word debug_sub_80139E4+1\n"
+ " .word sub_800F808+1\n"
+ " .word gBattleTypeFlags\n"
+ " .word gTrainerBattleOpponent\n"
+ "\n"
+ );
+}
+#else
void sub_800EC9C(void)
{
u8 playerId;
@@ -535,6 +1231,7 @@ void sub_800EC9C(void)
break;
}
}
+#endif
void sub_800F02C(void)
{
@@ -561,6 +1258,236 @@ void sub_800F02C(void)
memcpy(gSharedMem, gUnknown_02023A00, 0x60);
}
+#ifdef DEBUG
+__attribute__((naked))
+void sub_800F104()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " bl GetMultiplayerId\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r0, ._151\n"
+ " ldr r2, ._151 + 4\n"
+ " add r1, r0, r2\n"
+ " strb r6, [r1]\n"
+ " ldr r1, ._151 + 8\n"
+ " add r1, r1, r0\n"
+ " mov r9, r1\n"
+ " sub r2, r2, #0x9\n"
+ " add r2, r2, r0\n"
+ " mov r8, r2\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r2, ._151 + 12\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._147 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._148 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._149 @cond_branch\n"
+ " b ._183\n"
+ "._152:\n"
+ " .align 2, 0\n"
+ "._151:\n"
+ " .word +0x2000000\n"
+ " .word 0x160cb\n"
+ " .word 0x160c4\n"
+ " .word gBattleCommunication\n"
+ "._148:\n"
+ " cmp r0, #0x2\n"
+ " bne ._153 @cond_branch\n"
+ " b ._154\n"
+ "._153:\n"
+ " cmp r0, #0x3\n"
+ " bne ._155 @cond_branch\n"
+ " b ._156\n"
+ "._155:\n"
+ " b ._183\n"
+ "._149:\n"
+ " ldr r0, ._165\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._158 @cond_branch\n"
+ " b ._183\n"
+ "._158:\n"
+ " ldr r0, ._165 + 4\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._160 @cond_branch\n"
+ " mov r4, #0x0\n"
+ " ldr r1, ._165 + 8\n"
+ " ldr r0, ._165 + 12\n"
+ "._161:\n"
+ " strh r4, [r0, #0x18]\n"
+ " str r1, [r0, #0x14]\n"
+ " add r0, r0, #0x1c\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._161 @cond_branch\n"
+ "._160:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._162 @cond_branch\n"
+ " b ._183\n"
+ "._162:\n"
+ " bl sub_800F02C\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._165 + 16\n"
+ " mov r2, #0x60\n"
+ " bl SendBlock\n"
+ " ldr r1, ._165 + 20\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._183\n"
+ "._166:\n"
+ " .align 2, 0\n"
+ "._165:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word 0x2211\n"
+ " .word gLinkPlayers\n"
+ " .word +0x2000000\n"
+ " .word gBattleCommunication\n"
+ "._147:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0xf\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0xf\n"
+ " bne ._183 @cond_branch\n"
+ " bl ResetBlockReceivedFlags\n"
+ " mov r4, #0x0\n"
+ " lsl r0, r6, #0x3\n"
+ " sub r0, r0, r6\n"
+ " lsl r5, r0, #0x2\n"
+ " mov r7, #0x0\n"
+ "._175:\n"
+ " cmp r4, r6\n"
+ " beq ._174 @cond_branch\n"
+ " ldr r2, ._172\n"
+ " add r0, r7, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " mov r3, #0x1\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._169 @cond_branch\n"
+ " add r0, r5, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._170 @cond_branch\n"
+ " b ._174\n"
+ "._173:\n"
+ " .align 2, 0\n"
+ "._172:\n"
+ " .word gLinkPlayers\n"
+ "._169:\n"
+ " add r0, r5, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._174 @cond_branch\n"
+ "._170:\n"
+ " lsl r1, r4, #0x8\n"
+ " ldr r0, ._177\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._177 + 4\n"
+ " mov r2, #0x60\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ "._174:\n"
+ " add r7, r7, #0x1c\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._175 @cond_branch\n"
+ " ldr r1, ._177 + 8\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._177 + 12\n"
+ " ldr r0, [r1, #0x8]\n"
+ " mov r2, r9\n"
+ " str r0, [r2]\n"
+ " ldr r0, ._177 + 16\n"
+ " ldrh r0, [r0]\n"
+ " mov r2, r8\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._177 + 20\n"
+ " str r0, [r1, #0x8]\n"
+ " mov r0, #0x5\n"
+ " mov r1, #0x0\n"
+ " bl OpenPartyMenu\n"
+ " b ._183\n"
+ "._178:\n"
+ " .align 2, 0\n"
+ "._177:\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gUnknown_02023A00\n"
+ " .word gBattleCommunication\n"
+ " .word gMain\n"
+ " .word gBattleTypeFlags\n"
+ " .word sub_800F104+1\n"
+ "._154:\n"
+ " ldr r0, ._181\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._183 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r2]\n"
+ " bl sub_800832C\n"
+ " b ._183\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gPaletteFade\n"
+ "._156:\n"
+ " ldr r0, ._184\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._183 @cond_branch\n"
+ " ldr r1, ._184 + 4\n"
+ " mov r2, r8\n"
+ " ldrh r0, [r2]\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._184 + 8\n"
+ " mov r2, r9\n"
+ " ldr r0, [r2]\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, ._184 + 12\n"
+ " bl SetMainCallback2\n"
+ "._183:\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._185:\n"
+ " .align 2, 0\n"
+ "._184:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word gBattleTypeFlags\n"
+ " .word gMain\n"
+ " .word InitBattle+1\n"
+ "\n"
+ );
+}
+#else
void sub_800F104(void)
{
u8 playerId;
@@ -625,7 +1552,774 @@ void sub_800F104(void)
break;
}
}
+#endif
+#ifdef DEBUG
+__attribute__((naked))
+void sub_800F298()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " bl GetMultiplayerId\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r0, ._188\n"
+ " ldr r1, ._188 + 4\n"
+ " add r0, r0, r1\n"
+ " strb r6, [r0]\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r0, ._188 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x7\n"
+ " bls ._186 @cond_branch\n"
+ " b ._352\n"
+ "._186:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._188 + 12\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._189:\n"
+ " .align 2, 0\n"
+ "._188:\n"
+ " .word +0x2000000\n"
+ " .word 0x160cb\n"
+ " .word gBattleCommunication\n"
+ " .word ._190\n"
+ "._190:\n"
+ " .word ._191\n"
+ " .word ._192\n"
+ " .word ._193\n"
+ " .word ._194\n"
+ " .word ._195\n"
+ " .word ._196\n"
+ " .word ._197\n"
+ " .word ._198\n"
+ "._191:\n"
+ " ldr r0, ._206\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._199 @cond_branch\n"
+ " b ._352\n"
+ "._199:\n"
+ " ldr r0, ._206 + 4\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._201 @cond_branch\n"
+ " mov r4, #0x0\n"
+ " ldr r1, ._206 + 8\n"
+ " ldr r0, ._206 + 12\n"
+ "._202:\n"
+ " strh r4, [r0, #0x18]\n"
+ " str r1, [r0, #0x14]\n"
+ " add r0, r0, #0x1c\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._202 @cond_branch\n"
+ "._201:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._203 @cond_branch\n"
+ " b ._352\n"
+ "._203:\n"
+ " ldr r4, ._206 + 16\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " strb r0, [r4, #0x1]\n"
+ " bl sub_800E9EC\n"
+ " bl sub_800EAAC\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x20\n"
+ " bl SendBlock\n"
+ " b ._300\n"
+ "._207:\n"
+ " .align 2, 0\n"
+ "._206:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word 0x2211\n"
+ " .word gLinkPlayers\n"
+ " .word +0x2000000\n"
+ "._192:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0xf\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0xf\n"
+ " beq ._208 @cond_branch\n"
+ " b ._352\n"
+ "._208:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._213\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._210 @cond_branch\n"
+ " cmp r6, #0\n"
+ " bne ._211 @cond_branch\n"
+ " ldr r0, ._213 + 4\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0xc\n"
+ " b ._212\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gBattleTypeFlags\n"
+ "._211:\n"
+ " ldr r0, ._221\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x8\n"
+ "._212:\n"
+ " orr r1, r1, r2\n"
+ " strh r1, [r0]\n"
+ " add r4, r4, #0x1\n"
+ "._210:\n"
+ " cmp r4, #0\n"
+ " bne ._223 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r1, ._221 + 4\n"
+ " add r5, r1, #0\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x1\n"
+ "._217:\n"
+ " add r1, r1, r3\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x3\n"
+ " bgt ._216 @cond_branch\n"
+ " ldrh r0, [r5]\n"
+ " ldrh r7, [r1]\n"
+ " cmp r0, r7\n"
+ " beq ._217 @cond_branch\n"
+ "._216:\n"
+ " cmp r2, #0x4\n"
+ " bne ._218 @cond_branch\n"
+ " cmp r6, #0\n"
+ " bne ._219 @cond_branch\n"
+ " ldr r0, ._221\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0xc\n"
+ " b ._220\n"
+ "._222:\n"
+ " .align 2, 0\n"
+ "._221:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gBlockRecvBuffer\n"
+ "._219:\n"
+ " ldr r0, ._233\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x8\n"
+ "._220:\n"
+ " orr r1, r1, r2\n"
+ " strh r1, [r0]\n"
+ " add r4, r4, #0x1\n"
+ "._218:\n"
+ " cmp r4, #0\n"
+ " bne ._223 @cond_branch\n"
+ " ldr r0, ._233 + 4\n"
+ " ldrh r2, [r0]\n"
+ " ldr r1, ._233 + 8\n"
+ " add r3, r0, #0\n"
+ " ldr r5, ._233\n"
+ " cmp r2, r1\n"
+ " beq ._224 @cond_branch\n"
+ "._230:\n"
+ " lsl r0, r4, #0x8\n"
+ " add r0, r0, r3\n"
+ " ldrh r0, [r0]\n"
+ " ldr r1, ._233 + 8\n"
+ " cmp r0, r1\n"
+ " bls ._225 @cond_branch\n"
+ " cmp r4, r6\n"
+ " bne ._227 @cond_branch\n"
+ "._225:\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " bgt ._227 @cond_branch\n"
+ " lsl r0, r4, #0x8\n"
+ " add r0, r0, r3\n"
+ " ldrh r0, [r0]\n"
+ " cmp r0, r1\n"
+ " bne ._230 @cond_branch\n"
+ "._224:\n"
+ " cmp r4, r6\n"
+ " beq ._230 @cond_branch\n"
+ " cmp r4, r6\n"
+ " bge ._230 @cond_branch\n"
+ "._227:\n"
+ " cmp r4, #0x4\n"
+ " bne ._231 @cond_branch\n"
+ " ldrh r0, [r5]\n"
+ " mov r1, #0xc\n"
+ " b ._232\n"
+ "._234:\n"
+ " .align 2, 0\n"
+ "._233:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gBlockRecvBuffer\n"
+ " .word 0x101\n"
+ "._231:\n"
+ " ldrh r0, [r5]\n"
+ " mov r1, #0x8\n"
+ "._232:\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r5]\n"
+ "._223:\n"
+ " bl sub_800EB08\n"
+ " ldr r0, ._239\n"
+ " ldr r1, ._239 + 4\n"
+ " mov r2, #0x96\n"
+ " lsl r2, r2, #0x1\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " ldr r0, ._239 + 8\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._239 + 12\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " mov r2, #0x0\n"
+ " mov r0, #0x87\n"
+ " lsl r0, r0, #0x1\n"
+ " strh r0, [r1, #0xa]\n"
+ " mov r0, #0x5a\n"
+ " strh r0, [r1, #0xc]\n"
+ " strh r2, [r1, #0x12]\n"
+ " strh r2, [r1, #0xe]\n"
+ " strh r2, [r1, #0x10]\n"
+ " add r2, r1, #0\n"
+ " ldr r0, ._239 + 16\n"
+ " add r3, r0, #2\n"
+ " ldr r6, ._239 + 20\n"
+ " mov r5, #0x3f\n"
+ " mov r7, #0x80\n"
+ " lsl r7, r7, #0x1\n"
+ " mov r4, #0x3\n"
+ "._247:\n"
+ " ldrh r0, [r6, #0x18]\n"
+ " cmp r0, #0x1\n"
+ " beq ._235 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._236 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._237 @cond_branch\n"
+ " b ._246\n"
+ "._240:\n"
+ " .align 2, 0\n"
+ "._239:\n"
+ " .word +0x201d000\n"
+ " .word gPlayerParty\n"
+ " .word sub_800DE30+1\n"
+ " .word gTasks\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gLinkPlayers\n"
+ "._236:\n"
+ " cmp r0, #0x2\n"
+ " beq ._241 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._242 @cond_branch\n"
+ " b ._246\n"
+ "._237:\n"
+ " ldrh r0, [r3]\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " b ._244\n"
+ "._235:\n"
+ " ldrh r0, [r3]\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " b ._245\n"
+ "._241:\n"
+ " ldrh r0, [r3]\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " lsl r1, r1, #0x6\n"
+ "._244:\n"
+ " ldrh r0, [r2, #0xe]\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r2, #0xe]\n"
+ " b ._246\n"
+ "._242:\n"
+ " ldrh r0, [r3]\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " lsl r1, r1, #0x6\n"
+ "._245:\n"
+ " ldrh r0, [r2, #0x10]\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r2, #0x10]\n"
+ "._246:\n"
+ " add r3, r3, r7\n"
+ " add r6, r6, #0x1c\n"
+ " sub r4, r4, #0x1\n"
+ " cmp r4, #0\n"
+ " bge ._247 @cond_branch\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " ldr r1, ._251\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._193:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._248 @cond_branch\n"
+ " b ._352\n"
+ "._248:\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._251 + 4\n"
+ " mov r2, #0xc8\n"
+ " bl SendBlock\n"
+ " b ._300\n"
+ "._252:\n"
+ " .align 2, 0\n"
+ "._251:\n"
+ " .word gBattleCommunication\n"
+ " .word +0x201d000\n"
+ "._194:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0xf\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0xf\n"
+ " beq ._253 @cond_branch\n"
+ " b ._352\n"
+ "._253:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " mov r4, #0x0\n"
+ " lsl r0, r6, #0x3\n"
+ " sub r0, r0, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r8, r0\n"
+ " ldr r5, ._260\n"
+ " mov r7, #0x0\n"
+ "._294:\n"
+ " cmp r4, r6\n"
+ " bne ._255 @cond_branch\n"
+ " ldr r0, ._260 + 4\n"
+ " add r0, r7, r0\n"
+ " ldrh r0, [r0, #0x18]\n"
+ " cmp r0, #0x2\n"
+ " bgt ._256 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bge ._257 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._258 @cond_branch\n"
+ " b ._291\n"
+ "._261:\n"
+ " .align 2, 0\n"
+ "._260:\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gLinkPlayers\n"
+ "._256:\n"
+ " cmp r0, #0x3\n"
+ " bne ._291 @cond_branch\n"
+ "._258:\n"
+ " ldr r0, ._264\n"
+ " b ._283\n"
+ "._265:\n"
+ " .align 2, 0\n"
+ "._264:\n"
+ " .word gPlayerParty\n"
+ "._257:\n"
+ " ldr r0, ._267\n"
+ " b ._283\n"
+ "._268:\n"
+ " .align 2, 0\n"
+ "._267:\n"
+ " .word gPlayerParty+0x12c\n"
+ "._255:\n"
+ " ldr r2, ._272\n"
+ " add r0, r7, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " mov r3, #0x1\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._269 @cond_branch\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._270 @cond_branch\n"
+ " b ._274\n"
+ "._273:\n"
+ " .align 2, 0\n"
+ "._272:\n"
+ " .word gLinkPlayers\n"
+ "._269:\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._274 @cond_branch\n"
+ "._270:\n"
+ " add r0, r7, r2\n"
+ " ldrh r2, [r0, #0x18]\n"
+ " cmp r2, #0x2\n"
+ " bgt ._275 @cond_branch\n"
+ " cmp r2, #0x1\n"
+ " bge ._276 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._277 @cond_branch\n"
+ " b ._291\n"
+ "._275:\n"
+ " cmp r2, #0x3\n"
+ " bne ._291 @cond_branch\n"
+ "._277:\n"
+ " ldr r0, ._281\n"
+ " b ._283\n"
+ "._282:\n"
+ " .align 2, 0\n"
+ "._281:\n"
+ " .word gPlayerParty\n"
+ "._276:\n"
+ " ldr r0, ._284\n"
+ " b ._283\n"
+ "._285:\n"
+ " .align 2, 0\n"
+ "._284:\n"
+ " .word gPlayerParty+0x12c\n"
+ "._274:\n"
+ " add r0, r7, r2\n"
+ " ldrh r2, [r0, #0x18]\n"
+ " cmp r2, #0x2\n"
+ " bgt ._286 @cond_branch\n"
+ " cmp r2, #0x1\n"
+ " bge ._287 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._288 @cond_branch\n"
+ " b ._291\n"
+ "._286:\n"
+ " cmp r2, #0x3\n"
+ " bne ._291 @cond_branch\n"
+ "._288:\n"
+ " ldr r0, ._292\n"
+ "._283:\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0xc8\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " b ._291\n"
+ "._293:\n"
+ " .align 2, 0\n"
+ "._292:\n"
+ " .word gEnemyParty\n"
+ "._287:\n"
+ " ldr r0, ._296\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0xc8\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ "._291:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " add r5, r5, r0\n"
+ " add r7, r7, #0x1c\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._294 @cond_branch\n"
+ " b ._300\n"
+ "._297:\n"
+ " .align 2, 0\n"
+ "._296:\n"
+ " .word gEnemyParty+0x12c\n"
+ "._195:\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._298 @cond_branch\n"
+ " b ._352\n"
+ "._298:\n"
+ " bl bitmask_all_link_players_but_self\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._301\n"
+ " mov r2, #0x64\n"
+ " bl SendBlock\n"
+ " b ._300\n"
+ "._302:\n"
+ " .align 2, 0\n"
+ "._301:\n"
+ " .word +0x201d0c8\n"
+ "._196:\n"
+ " bl GetBlockReceivedStatus\n"
+ " mov r1, #0xf\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0xf\n"
+ " beq ._303 @cond_branch\n"
+ " b ._352\n"
+ "._303:\n"
+ " bl ResetBlockReceivedFlags\n"
+ " mov r4, #0x0\n"
+ " lsl r0, r6, #0x3\n"
+ " sub r0, r0, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r8, r0\n"
+ " ldr r5, ._310\n"
+ " mov r7, #0x0\n"
+ "._344:\n"
+ " cmp r4, r6\n"
+ " bne ._305 @cond_branch\n"
+ " ldr r0, ._310 + 4\n"
+ " add r0, r7, r0\n"
+ " ldrh r0, [r0, #0x18]\n"
+ " cmp r0, #0x2\n"
+ " bgt ._306 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bge ._307 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._308 @cond_branch\n"
+ " b ._341\n"
+ "._311:\n"
+ " .align 2, 0\n"
+ "._310:\n"
+ " .word gBlockRecvBuffer\n"
+ " .word gLinkPlayers\n"
+ "._306:\n"
+ " cmp r0, #0x3\n"
+ " bne ._341 @cond_branch\n"
+ "._308:\n"
+ " ldr r0, ._314\n"
+ " b ._333\n"
+ "._315:\n"
+ " .align 2, 0\n"
+ "._314:\n"
+ " .word gPlayerParty+0xc8\n"
+ "._307:\n"
+ " ldr r0, ._317\n"
+ " b ._333\n"
+ "._318:\n"
+ " .align 2, 0\n"
+ "._317:\n"
+ " .word gPlayerParty+0x1f4\n"
+ "._305:\n"
+ " ldr r2, ._322\n"
+ " add r0, r7, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " mov r3, #0x1\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._319 @cond_branch\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._320 @cond_branch\n"
+ " b ._324\n"
+ "._323:\n"
+ " .align 2, 0\n"
+ "._322:\n"
+ " .word gLinkPlayers\n"
+ "._319:\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " add r0, r3, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._324 @cond_branch\n"
+ "._320:\n"
+ " add r0, r7, r2\n"
+ " ldrh r2, [r0, #0x18]\n"
+ " cmp r2, #0x2\n"
+ " bgt ._325 @cond_branch\n"
+ " cmp r2, #0x1\n"
+ " bge ._326 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._327 @cond_branch\n"
+ " b ._341\n"
+ "._325:\n"
+ " cmp r2, #0x3\n"
+ " bne ._341 @cond_branch\n"
+ "._327:\n"
+ " ldr r0, ._331\n"
+ " b ._333\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gPlayerParty+0xc8\n"
+ "._326:\n"
+ " ldr r0, ._334\n"
+ " b ._333\n"
+ "._335:\n"
+ " .align 2, 0\n"
+ "._334:\n"
+ " .word gPlayerParty+0x1f4\n"
+ "._324:\n"
+ " add r0, r7, r2\n"
+ " ldrh r2, [r0, #0x18]\n"
+ " cmp r2, #0x2\n"
+ " bgt ._336 @cond_branch\n"
+ " cmp r2, #0x1\n"
+ " bge ._337 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._338 @cond_branch\n"
+ " b ._341\n"
+ "._336:\n"
+ " cmp r2, #0x3\n"
+ " bne ._341 @cond_branch\n"
+ "._338:\n"
+ " ldr r0, ._342\n"
+ "._333:\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x64\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ " b ._341\n"
+ "._343:\n"
+ " .align 2, 0\n"
+ "._342:\n"
+ " .word gEnemyParty+0xc8\n"
+ "._337:\n"
+ " ldr r0, ._346\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x64\n"
+ " bl gScriptFuncs_End+0x5bc4\n"
+ "._341:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " add r5, r5, r0\n"
+ " add r7, r7, #0x1c\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._344 @cond_branch\n"
+ " ldr r4, ._346 + 4\n"
+ " add r0, r4, #0\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x64\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc8\n"
+ " bl shedinja_something\n"
+ " mov r1, #0x96\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r4, r1\n"
+ " bl shedinja_something\n"
+ " mov r7, #0xc8\n"
+ " lsl r7, r7, #0x1\n"
+ " add r0, r4, r7\n"
+ " bl shedinja_something\n"
+ " mov r1, #0xfa\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r4, r1\n"
+ " bl shedinja_something\n"
+ " ldr r4, ._346 + 8\n"
+ " add r0, r4, #0\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x64\n"
+ " bl shedinja_something\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc8\n"
+ " bl shedinja_something\n"
+ " sub r7, r7, #0x64\n"
+ " add r0, r4, r7\n"
+ " bl shedinja_something\n"
+ " mov r1, #0xc8\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r4, r1\n"
+ " bl shedinja_something\n"
+ " add r7, r7, #0xc8\n"
+ " add r0, r4, r7\n"
+ " bl shedinja_something\n"
+ "._300:\n"
+ " ldr r1, ._346 + 12\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._352\n"
+ "._347:\n"
+ " .align 2, 0\n"
+ "._346:\n"
+ " .word gEnemyParty+0x1f4\n"
+ " .word gPlayerParty\n"
+ " .word gEnemyParty\n"
+ " .word gBattleCommunication\n"
+ "._197:\n"
+ " bl sub_800B950\n"
+ " ldr r0, ._349\n"
+ " ldrb r1, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " mov r2, #0x0\n"
+ " strb r1, [r0]\n"
+ " strb r2, [r0, #0x1]\n"
+ " strb r2, [r0, #0x2]\n"
+ " b ._352\n"
+ "._350:\n"
+ " .align 2, 0\n"
+ "._349:\n"
+ " .word gBattleCommunication\n"
+ "._198:\n"
+ " ldr r0, ._353\n"
+ " add r1, r0, #1\n"
+ " bl battle_load_something\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._352 @cond_branch\n"
+ " ldr r2, ._353 + 4\n"
+ " ldr r1, ._353 + 8\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " ldr r0, ._353 + 12\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._353 + 16\n"
+ " bl SetMainCallback2\n"
+ " ldr r3, ._353 + 20\n"
+ " ldrh r2, [r3]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._352 @cond_branch\n"
+ " ldr r1, ._353 + 24\n"
+ " mov r4, #0x80\n"
+ " lsl r4, r4, #0x4\n"
+ " add r0, r4, #0\n"
+ " strh r0, [r1]\n"
+ " mov r0, #0x20\n"
+ " orr r0, r0, r2\n"
+ " strh r0, [r3]\n"
+ "._352:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._354:\n"
+ " .align 2, 0\n"
+ "._353:\n"
+ " .word gUnknown_02024D1F\n"
+ " .word gPreBattleCallback1\n"
+ " .word gMain\n"
+ " .word debug_sub_80139E4+1\n"
+ " .word sub_800F808+1\n"
+ " .word gBattleTypeFlags\n"
+ " .word gTrainerBattleOpponent\n"
+ "\n"
+ );
+}
+#else
void sub_800F298(void)
{
u8 playerId;
@@ -893,7 +2587,119 @@ void sub_800F298(void)
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void BattleMainCB2(void)
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r4, ._358\n"
+ " ldrh r2, [r4, #0x2c]\n"
+ " mov r1, #0x82\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, #0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, r1\n"
+ " bne ._357 @cond_branch\n"
+ " ldr r2, ._358 + 4\n"
+ " ldr r1, ._358 + 8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._358 + 12\n"
+ " add r2, r4, r0\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x3\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldr r1, ._358 + 16\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1, #0x15]\n"
+ " ldr r0, ._358 + 20\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r4]\n"
+ " bl ZeroEnemyPartyMons\n"
+ " mov r0, #0x5a\n"
+ " bl gScriptFuncs_End+0x148c\n"
+ " ldr r0, ._358 + 24\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._356 @cond_branch\n"
+ " ldr r0, ._358 + 28\n"
+ " bl SetMainCallback2\n"
+ " b ._357\n"
+ "._359:\n"
+ " .align 2, 0\n"
+ "._358:\n"
+ " .word gMain\n"
+ " .word gScriptResult\n"
+ " .word gBattleOutcome\n"
+ " .word 0x43d\n"
+ " .word gUnknown_03004DC0\n"
+ " .word gPreBattleCallback1\n"
+ " .word gBattleTypeFlags\n"
+ " .word sub_805465C+1\n"
+ "._356:\n"
+ " ldr r0, [r4, #0x8]\n"
+ " bl SetMainCallback2\n"
+ "._357:\n"
+ " ldr r5, ._361\n"
+ " ldrh r1, [r5]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._360 @cond_branch\n"
+ " lsr r0, r1, #0x2\n"
+ " mov r4, #0x1\n"
+ " and r0, r0, r4\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl debug_sub_8008264\n"
+ " ldrh r0, [r5]\n"
+ " lsr r0, r0, #0x2\n"
+ " and r0, r0, r4\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x15\n"
+ " mov r3, #0x1\n"
+ " bl debug_sub_8008264\n"
+ " ldrh r0, [r5]\n"
+ " lsr r0, r0, #0x2\n"
+ " and r0, r0, r4\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x29\n"
+ " mov r3, #0x1\n"
+ " bl debug_sub_8008264\n"
+ "._360:\n"
+ " ldr r0, ._361 + 4\n"
+ " bl sub_800374C\n"
+ " bl UpdatePaletteFade\n"
+ " bl RunTasks\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._362:\n"
+ " .align 2, 0\n"
+ "._361:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_03004210\n"
+ "\n"
+ );
+}
+#else
void BattleMainCB2(void)
{
AnimateSprites();
@@ -902,6 +2708,7 @@ void BattleMainCB2(void)
UpdatePaletteFade();
RunTasks();
}
+#endif
void sub_800F828(struct Sprite *sprite)
{
@@ -1275,6 +3082,5525 @@ void c2_081284E0(void)
}
}
+// A LOT of debug code!
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8010800()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8010818\n"
+ " bl debug_sub_80108B8\n"
+ " ldr r1, ._496\n"
+ " mov r0, #0x0\n"
+ " str r0, [r1]\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._497:\n"
+ " .align 2, 0\n"
+ "._496:\n"
+ " .word gBattleBuffersTransferData+0x100\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010818()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " ldr r1, ._501\n"
+ " ldr r0, ._501 + 4\n"
+ " strh r0, [r1]\n"
+ " add r2, r1, #0\n"
+ " add r2, r2, #0x46\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._501 + 8\n"
+ " add r4, r1, #0\n"
+ " add r4, r4, #0x48\n"
+ " add r3, r0, #0\n"
+ " add r3, r3, #0x12\n"
+ " add r2, r1, #2\n"
+ " mov r1, #0x1d\n"
+ "._498:\n"
+ " ldrh r0, [r3]\n"
+ " strh r0, [r2]\n"
+ " strh r0, [r4]\n"
+ " add r4, r4, #0x2\n"
+ " add r3, r3, #0xa\n"
+ " add r2, r2, #0x2\n"
+ " sub r1, r1, #0x1\n"
+ " cmp r1, #0\n"
+ " bge ._498 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldr r4, ._501 + 12\n"
+ " ldr r7, ._501 + 16\n"
+ " ldr r6, ._501 + 20\n"
+ " mov r0, #0x30\n"
+ " add r0, r0, r7\n"
+ " mov ip, r0\n"
+ "._500:\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r4]\n"
+ " add r5, r1, #1\n"
+ " lsl r3, r1, #0x3\n"
+ "._499:\n"
+ " ldrb r2, [r4]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r3\n"
+ " add r1, r1, r7\n"
+ " lsl r0, r2, #0x2\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r6\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " ldrb r2, [r4]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r3\n"
+ " add r1, r1, ip\n"
+ " lsl r0, r2, #0x2\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r6\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x3\n"
+ " bls ._499 @cond_branch\n"
+ " add r1, r5, #0\n"
+ " cmp r1, #0x5\n"
+ " ble ._500 @cond_branch\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._502:\n"
+ " .align 2, 0\n"
+ "._501:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word 0x115\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word UnkDebug0+0x1b4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80108B8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl gScriptFuncs_End+0x19f4\n"
+ " mov r0, #0x0\n"
+ " bl SetHBlankCallback\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp]\n"
+ " ldr r2, ._507\n"
+ " mov r0, sp\n"
+ " str r0, [r2]\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x13\n"
+ " str r1, [r2, #0x4]\n"
+ " ldr r0, ._507 + 4\n"
+ " str r0, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " ldr r2, ._507 + 8\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r2]\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x13\n"
+ " mov r4, #0x9a\n"
+ " lsl r4, r4, #0x5\n"
+ " add r0, r4, #0\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._507 + 12\n"
+ " mov r5, #0x0\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 16\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 20\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 24\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 28\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 32\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 36\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 40\n"
+ " strh r3, [r0]\n"
+ " add r2, r2, #0x8\n"
+ " ldr r4, ._507 + 44\n"
+ " add r0, r4, #0\n"
+ " strh r0, [r2]\n"
+ " add r2, r2, #0x2\n"
+ " ldr r4, ._507 + 48\n"
+ " add r0, r4, #0\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._507 + 52\n"
+ " strh r3, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r3, [r0]\n"
+ " ldr r0, ._507 + 56\n"
+ " bl LZDecompressVram\n"
+ " ldr r0, ._507 + 60\n"
+ " ldr r1, ._507 + 64\n"
+ " bl sub_800D238\n"
+ " ldr r4, ._507 + 68\n"
+ " mov r1, #0xa0\n"
+ " lsl r1, r1, #0x13\n"
+ " add r0, r4, #0\n"
+ " bl LZDecompressVram\n"
+ " ldr r1, ._507 + 72\n"
+ " add r0, r4, #0\n"
+ " bl LZDecompressVram\n"
+ " bl gScriptFuncs_End+0x1a70\n"
+ " ldr r0, ._507 + 76\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._507 + 80\n"
+ " bl SetMainCallback2\n"
+ " bl ResetTasks\n"
+ " bl ResetSpriteData\n"
+ " bl remove_some_task\n"
+ " ldr r4, ._507 + 84\n"
+ " add r0, r4, #0\n"
+ " bl SetUpWindowConfig\n"
+ " ldr r0, ._507 + 88\n"
+ " add r1, r4, #0\n"
+ " bl InitWindowFromConfig\n"
+ " ldr r0, ._507 + 92\n"
+ " strb r5, [r0]\n"
+ " ldr r0, ._507 + 96\n"
+ " strb r5, [r0]\n"
+ " ldr r0, ._507 + 100\n"
+ " strb r5, [r0]\n"
+ " mov r4, #0x0\n"
+ "._503:\n"
+ " lsl r0, r4, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x1e\n"
+ " ble ._503 @cond_branch\n"
+ " ldr r1, ._507 + 104\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " add r4, r1, #0\n"
+ "._504:\n"
+ " bl debug_sub_8012294\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x3\n"
+ " bls ._504 @cond_branch\n"
+ " ldr r0, ._507 + 100\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " bl debug_sub_8012540\n"
+ " bl debug_nullsub_3\n"
+ " ldr r1, ._507 + 104\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_80125A0\n"
+ " ldr r0, ._507 + 108\n"
+ " add r0, r0, #0x44\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x8\n"
+ " bne ._505 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ " b ._506\n"
+ "._508:\n"
+ " .align 2, 0\n"
+ "._507:\n"
+ " .word 0x40000d4\n"
+ " .word 0x85006000\n"
+ " .word 0x4000200\n"
+ " .word gUnknown_030042A4\n"
+ " .word gUnknown_030042A0\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_030041B4\n"
+ " .word gUnknown_03004288\n"
+ " .word gUnknown_03004280\n"
+ " .word gUnknown_030041B0\n"
+ " .word gUnknown_030041B8\n"
+ " .word 0x1f09\n"
+ " .word 0x4801\n"
+ " .word 0x4000050\n"
+ " .word gMonShinyPalette_CircledQuestionMark+0x18\n"
+ " .word gMonShinyPalette_CircledQuestionMark+0x834\n"
+ " .word +0x2000000\n"
+ " .word gMonShinyPalette_CircledQuestionMark+0xa8c\n"
+ " .word 0x50001e0\n"
+ " .word debug_sub_8011D40+1\n"
+ " .word debug_sub_8010CAC+1\n"
+ " .word gWindowConfig_81E6C3C\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._505:\n"
+ " ldr r0, ._510\n"
+ " mov r1, #0x0\n"
+ " mov r4, #0x7\n"
+ " ldr r2, ._510 + 4\n"
+ " add r0, r0, r2\n"
+ "._509:\n"
+ " strb r1, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " sub r4, r4, #0x1\n"
+ " cmp r4, #0\n"
+ " bge ._509 @cond_branch\n"
+ "._506:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._511:\n"
+ " .align 2, 0\n"
+ "._510:\n"
+ " .word +0x2000000\n"
+ " .word 0x160bb\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010A7C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r2, r1, #0x18\n"
+ " mov r1, #0x0\n"
+ " ldr r5, ._514\n"
+ " cmp r1, r2\n"
+ " bge ._512 @cond_branch\n"
+ " add r3, r5, #0\n"
+ "._513:\n"
+ " add r0, r1, r3\n"
+ " strb r4, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r2\n"
+ " blt ._513 @cond_branch\n"
+ "._512:\n"
+ " add r1, r1, r5\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._515:\n"
+ " .align 2, 0\n"
+ "._514:\n"
+ " .word gBattleTextBuff1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010AAC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " ldr r6, ._520\n"
+ " ldr r4, ._520 + 4\n"
+ " ldr r5, ._520 + 8\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r7, r0, r1\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r3, ._520 + 12\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r2, r2, r0\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r1, r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x10]\n"
+ " add r6, r3, #0\n"
+ " cmp r0, #0xfe\n"
+ " beq ._516 @cond_branch\n"
+ " cmp r0, #0xfe\n"
+ " bgt ._517 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._518 @cond_branch\n"
+ " b ._523\n"
+ "._521:\n"
+ " .align 2, 0\n"
+ "._520:\n"
+ " .word gBaseStats\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._517:\n"
+ " cmp r0, #0xff\n"
+ " beq ._522 @cond_branch\n"
+ " b ._523\n"
+ "._518:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x2\n"
+ " b ._528\n"
+ "._516:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x3\n"
+ " b ._528\n"
+ "._522:\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x4\n"
+ " b ._528\n"
+ "._523:\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, #0x4\n"
+ " lsl r1, r1, #0x1\n"
+ " ldrb r0, [r6]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r2, [r1]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " strh r0, [r1]\n"
+ " mov r1, ip\n"
+ " cmp r1, #0\n"
+ " beq ._527 @cond_branch\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x1\n"
+ " ldrb r1, [r6]\n"
+ " mul r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " ldrh r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " b ._528\n"
+ "._527:\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x1\n"
+ " ldrb r1, [r6]\n"
+ " mul r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " mov r1, ip\n"
+ "._528:\n"
+ " strh r1, [r0]\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010B80()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov ip, r0\n"
+ " ldr r4, ._534\n"
+ " ldr r1, ._534 + 4\n"
+ " mov r8, r1\n"
+ " ldr r5, ._534 + 8\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r2, r8\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r3, ._534 + 12\n"
+ " ldrb r2, [r3]\n"
+ " mov r1, #0x46\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r4\n"
+ " ldrb r7, [r0]\n"
+ " lsl r1, r7, #0x18\n"
+ " asr r0, r1, #0x18\n"
+ " mov r9, r4\n"
+ " add r2, r5, #0\n"
+ " add r4, r3, #0\n"
+ " cmp r0, #0x9\n"
+ " ble ._529 @cond_branch\n"
+ "._530:\n"
+ " mov r3, #0xf6\n"
+ " lsl r3, r3, #0x18\n"
+ " add r0, r1, r3\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x11\n"
+ " add r0, r0, r3\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " lsl r1, r7, #0x18\n"
+ " asr r0, r1, #0x18\n"
+ " cmp r0, #0x9\n"
+ " bgt ._530 @cond_branch\n"
+ "._529:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._531 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._532 @cond_branch\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x11\n"
+ " b ._533\n"
+ "._535:\n"
+ " .align 2, 0\n"
+ "._534:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._532:\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " mov r3, #0xff\n"
+ " lsl r3, r3, #0x18\n"
+ "._533:\n"
+ " add r0, r0, r3\n"
+ " lsr r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " cmp r0, #0\n"
+ " bge ._536 @cond_branch\n"
+ " mov r3, #0x9\n"
+ " mov ip, r3\n"
+ "._536:\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x9\n"
+ " ble ._542 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " mov ip, r3\n"
+ " b ._542\n"
+ "._531:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r6\n"
+ " cmp r0, #0\n"
+ " beq ._539 @cond_branch\n"
+ " lsl r0, r7, #0x18\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x11\n"
+ " add r0, r0, r1\n"
+ " b ._540\n"
+ "._539:\n"
+ " lsl r0, r7, #0x18\n"
+ " mov r3, #0xff\n"
+ " lsl r3, r3, #0x18\n"
+ " add r0, r0, r3\n"
+ "._540:\n"
+ " lsr r7, r0, #0x18\n"
+ " lsl r0, r7, #0x18\n"
+ " cmp r0, #0\n"
+ " bgt ._541 @cond_branch\n"
+ " mov r7, #0x9\n"
+ "._541:\n"
+ " lsl r0, r7, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x9\n"
+ " ble ._542 @cond_branch\n"
+ " mov r7, #0x1\n"
+ "._542:\n"
+ " ldrb r0, [r2]\n"
+ " lsl r2, r0, #0x2\n"
+ " add r2, r2, r0\n"
+ " mov r0, r8\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r2, r0\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r1, [r4]\n"
+ " mov r0, #0x1\n"
+ " eor r0, r0, r1\n"
+ " mov r1, #0x46\n"
+ " add r3, r0, #0\n"
+ " mul r3, r3, r1\n"
+ " add r3, r2, r3\n"
+ " add r3, r3, r9\n"
+ " ldrb r0, [r4]\n"
+ " mul r0, r0, r1\n"
+ " add r2, r2, r0\n"
+ " add r2, r2, r9\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " lsl r0, r7, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " strh r0, [r3]\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8010CAC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " ldr r4, ._553\n"
+ " ldrh r1, [r4, #0x28]\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x2\n"
+ " cmp r1, r0\n"
+ " bne ._543 @cond_branch\n"
+ " bl DoSoftReset\n"
+ "._543:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x4\n"
+ " beq ._544 @cond_branch\n"
+ " b ._559\n"
+ "._544:\n"
+ " ldr r0, ._553 + 4\n"
+ " ldrb r1, [r0]\n"
+ " mov r8, r0\n"
+ " cmp r1, #0x5\n"
+ " bhi ._546 @cond_branch\n"
+ " ldr r0, ._553 + 8\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ " ldr r0, ._553 + 12\n"
+ " bl SetMainCallback2\n"
+ "._546:\n"
+ " ldr r0, ._553 + 16\n"
+ " ldrb r3, [r0]\n"
+ " cmp r3, #0\n"
+ " bne ._555 @cond_branch\n"
+ " mov r1, r8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x6\n"
+ " bne ._555 @cond_branch\n"
+ " ldr r0, ._553 + 20\n"
+ " str r0, [r4, #0x8]\n"
+ " ldr r4, ._553 + 24\n"
+ " ldr r0, ._553 + 28\n"
+ " ldrh r1, [r0]\n"
+ " ldrb r2, [r0, #0x2]\n"
+ " str r3, [sp]\n"
+ " str r3, [sp, #0x4]\n"
+ " str r3, [sp, #0x8]\n"
+ " str r3, [sp, #0xc]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " mov r5, #0x0\n"
+ " add r6, r4, #0\n"
+ "._549:\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0xd\n"
+ " lsl r4, r5, #0x1\n"
+ " ldr r0, ._553 + 32\n"
+ " add r4, r4, r0\n"
+ " add r0, r6, #0\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x11\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r2, r0, #0x1\n"
+ " add r2, r2, r0\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r0, ._553 + 36\n"
+ " add r2, r2, r0\n"
+ " add r0, r6, #0\n"
+ " bl SetMonData\n"
+ " add r5, r5, #0x1\n"
+ " cmp r5, #0x3\n"
+ " ble ._549 @cond_branch\n"
+ " ldr r2, ._553 + 28\n"
+ " mov r4, #0x3c\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0x1\n"
+ " beq ._550 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._551 @cond_branch\n"
+ " b ._555\n"
+ "._554:\n"
+ " .align 2, 0\n"
+ "._553:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word debug_sub_8011498+1\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word gBattleMoves+0x4\n"
+ "._550:\n"
+ " ldr r1, ._556\n"
+ " ldr r0, ._556 + 4\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._556 + 8\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x0\n"
+ " bl EvolutionScene\n"
+ " b ._555\n"
+ "._557:\n"
+ " .align 2, 0\n"
+ "._556:\n"
+ " .word gUnknown_03005E94\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word gPlayerParty\n"
+ "._551:\n"
+ " bl debug_sub_8012688\n"
+ "._555:\n"
+ " ldr r0, ._565\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x1\n"
+ " bne ._559 @cond_branch\n"
+ " ldr r0, ._565 + 4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x6\n"
+ " bne ._559 @cond_branch\n"
+ " ldr r3, ._565 + 8\n"
+ " ldrb r2, [r3, #0x15]\n"
+ " lsl r0, r2, #0x1d\n"
+ " lsr r5, r0, #0x1f\n"
+ " lsl r0, r2, #0x1f\n"
+ " lsr r0, r0, #0x1f\n"
+ " lsl r0, r0, #0x1\n"
+ " orr r5, r5, r0\n"
+ " add r5, r5, #0x1\n"
+ " cmp r5, #0x4\n"
+ " bne ._560 @cond_branch\n"
+ " mov r5, #0x0\n"
+ "._560:\n"
+ " mov r0, #0x1\n"
+ " add r1, r5, #0\n"
+ " and r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " mov r0, #0x5\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " mov r1, #0x2\n"
+ " and r5, r5, r1\n"
+ " lsr r2, r5, #0x1\n"
+ " sub r1, r1, #0x4\n"
+ " and r0, r0, r1\n"
+ " orr r0, r0, r2\n"
+ " strb r0, [r3, #0x15]\n"
+ " lsl r0, r0, #0x1f\n"
+ " lsr r0, r0, #0x1f\n"
+ " bl gScriptFuncs_End+0x2aa0\n"
+ " bl debug_nullsub_3\n"
+ "._559:\n"
+ " ldr r4, ._565 + 12\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x8\n"
+ " bne ._561 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ "._561:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x40\n"
+ " bne ._562 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r1, ._565 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._563 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._564\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gSaveBlock2\n"
+ " .word gMain\n"
+ "._563:\n"
+ " mov r0, #0x6\n"
+ "._564:\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._570\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " bl debug_sub_80125A0\n"
+ "._562:\n"
+ " ldr r0, ._570 + 4\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x80\n"
+ " bne ._567 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r1, ._570\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x6\n"
+ " bne ._568 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._569\n"
+ "._571:\n"
+ " .align 2, 0\n"
+ "._570:\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ "._568:\n"
+ " add r0, r0, #0x1\n"
+ "._569:\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._575\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " bl debug_sub_80125A0\n"
+ "._567:\n"
+ " ldr r0, ._575 + 4\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x20\n"
+ " bne ._572 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r2, ._575 + 8\n"
+ " ldrb r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._573 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r2]\n"
+ " b ._577\n"
+ "._576:\n"
+ " .align 2, 0\n"
+ "._575:\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ "._573:\n"
+ " ldr r3, ._581\n"
+ " ldrb r0, [r3]\n"
+ " cmp r0, #0\n"
+ " beq ._577 @cond_branch\n"
+ " strb r1, [r3]\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r2]\n"
+ " ldr r0, ._581 + 4\n"
+ " strh r1, [r0]\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._581 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._577:\n"
+ " bl debug_sub_80125A0\n"
+ "._572:\n"
+ " ldr r0, ._581 + 12\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x10\n"
+ " bne ._578 @cond_branch\n"
+ " bl debug_sub_80125E4\n"
+ " ldr r2, ._581 + 16\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x4\n"
+ " beq ._579 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r2]\n"
+ " b ._583\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ "._579:\n"
+ " ldr r3, ._587\n"
+ " ldrb r1, [r3]\n"
+ " cmp r1, #0\n"
+ " bne ._583 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r3]\n"
+ " strb r1, [r2]\n"
+ " ldr r1, ._587 + 4\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " ldr r0, ._587 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._583:\n"
+ " bl debug_sub_80125A0\n"
+ "._578:\n"
+ " ldr r0, ._587 + 12\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._584 @cond_branch\n"
+ " b ._607\n"
+ "._584:\n"
+ " ldr r0, ._587 + 16\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._587 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r2, r0\n"
+ " sub r0, r0, #0x1e\n"
+ " cmp r0, #0x4\n"
+ " bhi ._586 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._587 + 20\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._588:\n"
+ " .align 2, 0\n"
+ "._587:\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word ._589\n"
+ "._589:\n"
+ " .word ._590\n"
+ " .word ._591\n"
+ " .word ._592\n"
+ " .word ._593\n"
+ " .word ._594\n"
+ "._591:\n"
+ " bl debug_sub_8010818\n"
+ " b ._595\n"
+ "._592:\n"
+ " ldr r1, ._597\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_80132C8\n"
+ "._595:\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " bl debug_sub_8012540\n"
+ " bl debug_nullsub_3\n"
+ " ldr r0, ._597 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " b ._607\n"
+ "._598:\n"
+ " .align 2, 0\n"
+ "._597:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._593:\n"
+ " ldr r1, ._600\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_8013294\n"
+ " b ._607\n"
+ "._601:\n"
+ " .align 2, 0\n"
+ "._600:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._594:\n"
+ " ldr r3, ._604\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x44\n"
+ " ldrh r1, [r2]\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0\n"
+ " beq ._602 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " strh r0, [r2]\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x8a\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " b ._603\n"
+ "._605:\n"
+ " .align 2, 0\n"
+ "._604:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._602:\n"
+ " mov r1, #0x8\n"
+ " strh r1, [r2]\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x8a\n"
+ " strh r1, [r0]\n"
+ "._603:\n"
+ " bl debug_sub_8012540\n"
+ " b ._607\n"
+ "._590:\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010B80\n"
+ " ldr r2, ._608\n"
+ " ldr r0, ._608 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " b ._607\n"
+ "._609:\n"
+ " .align 2, 0\n"
+ "._608:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._586:\n"
+ " cmp r2, #0x4\n"
+ " bne ._611 @cond_branch\n"
+ " cmp r1, #0x5\n"
+ " bhi ._611 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._613\n"
+ "._611:\n"
+ " ldr r6, ._618\n"
+ " ldr r5, ._618 + 4\n"
+ " ldr r4, ._618 + 8\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._618 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r6\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r5, [r5]\n"
+ " add r1, r1, r5\n"
+ " lsl r0, r1, #0x1\n"
+ " ldrb r2, [r2]\n"
+ " mul r2, r2, r3\n"
+ " add r0, r0, r2\n"
+ " add r3, r0, r6\n"
+ " mov r4, #0x0\n"
+ " ldsh r2, [r3, r4]\n"
+ " ldr r4, ._618 + 16\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " bge ._613 @cond_branch\n"
+ " add r0, r4, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r3]\n"
+ "._613:\n"
+ " ldr r5, ._618 + 4\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._614 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._618 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._614:\n"
+ " ldr r4, ._618 + 8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._607:\n"
+ " ldr r0, ._618 + 20\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._615 @cond_branch\n"
+ " b ._638\n"
+ "._615:\n"
+ " ldr r0, ._618 + 4\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._618 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r2, r0\n"
+ " sub r0, r0, #0x1e\n"
+ " cmp r0, #0x4\n"
+ " bhi ._617 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._618 + 24\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._619:\n"
+ " .align 2, 0\n"
+ "._618:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gMain\n"
+ " .word ._620\n"
+ "._620:\n"
+ " .word ._621\n"
+ " .word ._622\n"
+ " .word ._623\n"
+ " .word ._624\n"
+ " .word ._625\n"
+ "._622:\n"
+ " bl debug_sub_8010818\n"
+ " b ._626\n"
+ "._623:\n"
+ " ldr r1, ._628\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_80132C8\n"
+ "._626:\n"
+ " bl debug_sub_8011E5C\n"
+ " bl debug_sub_8011E74\n"
+ " bl debug_sub_8012540\n"
+ " bl debug_nullsub_3\n"
+ " ldr r0, ._628 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ " b ._638\n"
+ "._629:\n"
+ " .align 2, 0\n"
+ "._628:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._624:\n"
+ " ldr r1, ._631\n"
+ " mov r0, #0x1f\n"
+ " mov r2, #0xec\n"
+ " bl debug_sub_8013294\n"
+ " b ._638\n"
+ "._632:\n"
+ " .align 2, 0\n"
+ "._631:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._625:\n"
+ " ldr r3, ._635\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x44\n"
+ " ldrh r1, [r2]\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0x7\n"
+ " bgt ._633 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r2]\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x8a\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " b ._634\n"
+ "._636:\n"
+ " .align 2, 0\n"
+ "._635:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._633:\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r2]\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x8a\n"
+ " strh r1, [r0]\n"
+ "._634:\n"
+ " bl debug_sub_8012540\n"
+ " b ._638\n"
+ "._621:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010B80\n"
+ " ldr r2, ._639\n"
+ " ldr r0, ._639 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " b ._638\n"
+ "._640:\n"
+ " .align 2, 0\n"
+ "._639:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "._617:\n"
+ " cmp r2, #0x4\n"
+ " bne ._642 @cond_branch\n"
+ " cmp r1, #0x5\n"
+ " bhi ._642 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._644\n"
+ "._642:\n"
+ " ldr r6, ._650\n"
+ " ldr r5, ._650 + 4\n"
+ " ldr r4, ._650 + 8\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._650 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r3, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r6\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r5, [r5]\n"
+ " add r1, r1, r5\n"
+ " lsl r0, r1, #0x1\n"
+ " ldrb r2, [r2]\n"
+ " mul r2, r2, r3\n"
+ " add r0, r0, r2\n"
+ " add r3, r0, r6\n"
+ " mov r4, #0x0\n"
+ " ldsh r2, [r3, r4]\n"
+ " ldr r4, ._650 + 16\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r4, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " ble ._644 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r3]\n"
+ "._644:\n"
+ " ldr r5, ._650 + 4\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._645 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._650 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._645:\n"
+ " ldr r4, ._650 + 8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._638:\n"
+ " ldr r0, ._650 + 20\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._646 @cond_branch\n"
+ " ldr r0, ._650 + 4\n"
+ " ldrb r1, [r0]\n"
+ " ldr r2, ._650 + 8\n"
+ " mov r8, r2\n"
+ " add r7, r0, #0\n"
+ " cmp r1, #0x4\n"
+ " bne ._648 @cond_branch\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._648 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._653\n"
+ "._651:\n"
+ " .align 2, 0\n"
+ "._650:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gMain\n"
+ "._648:\n"
+ " mov r4, r8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r0, r1\n"
+ " cmp r0, #0x1e\n"
+ " bne ._652 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_8010B80\n"
+ " b ._653\n"
+ "._652:\n"
+ " ldr r4, ._655\n"
+ " lsl r1, r0, #0x1\n"
+ " ldr r3, ._655 + 4\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r1]\n"
+ " sub r0, r0, #0xa\n"
+ " strh r0, [r1]\n"
+ " add r6, r3, #0\n"
+ " ldr r5, ._655 + 8\n"
+ " b ._654\n"
+ "._656:\n"
+ " .align 2, 0\n"
+ "._655:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x6c\n"
+ "._657:\n"
+ " add r0, r5, #6\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " ldrh r2, [r3]\n"
+ " add r0, r0, r2\n"
+ " strh r0, [r3]\n"
+ "._654:\n"
+ " mov r1, r8\n"
+ " ldrb r0, [r1]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r7]\n"
+ " add r1, r1, r2\n"
+ " lsl r2, r1, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r2, r2, r0\n"
+ " add r3, r2, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r3, r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r1, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r2, r0\n"
+ " blt ._657 @cond_branch\n"
+ "._653:\n"
+ " ldr r5, ._663\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._658 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._663 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._658:\n"
+ " ldr r4, ._663 + 4\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._646:\n"
+ " ldr r0, ._663 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._659 @cond_branch\n"
+ " ldr r0, ._663\n"
+ " ldrb r1, [r0]\n"
+ " ldr r2, ._663 + 4\n"
+ " mov r8, r2\n"
+ " add r7, r0, #0\n"
+ " cmp r1, #0x4\n"
+ " bne ._661 @cond_branch\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._661 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8010AAC\n"
+ " b ._666\n"
+ "._664:\n"
+ " .align 2, 0\n"
+ "._663:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ "._661:\n"
+ " mov r4, r8\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r0, r1\n"
+ " cmp r0, #0x1e\n"
+ " bne ._665 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " bl debug_sub_8010B80\n"
+ " b ._666\n"
+ "._665:\n"
+ " ldr r4, ._668\n"
+ " lsl r1, r0, #0x1\n"
+ " ldr r3, ._668 + 4\n"
+ " ldrb r2, [r3]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r0, #0xa\n"
+ " strh r0, [r1]\n"
+ " add r6, r3, #0\n"
+ " ldr r5, ._668 + 8\n"
+ " b ._667\n"
+ "._669:\n"
+ " .align 2, 0\n"
+ "._668:\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x6c\n"
+ "._670:\n"
+ " ldrh r0, [r3]\n"
+ " sub r0, r0, r1\n"
+ " strh r0, [r3]\n"
+ "._667:\n"
+ " mov r2, r8\n"
+ " ldrb r0, [r2]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r7]\n"
+ " add r1, r1, r0\n"
+ " lsl r2, r1, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r3\n"
+ " add r2, r2, r0\n"
+ " add r3, r2, r4\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r3, r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r5, #6\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " cmp r2, r1\n"
+ " bgt ._670 @cond_branch\n"
+ "._666:\n"
+ " ldr r5, ._672\n"
+ " ldrb r0, [r5]\n"
+ " cmp r0, #0\n"
+ " bne ._671 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8010AAC\n"
+ " ldr r0, ._672 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ "._671:\n"
+ " ldr r4, ._672 + 4\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r5]\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " ldrb r1, [r4]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_80123D8\n"
+ "._659:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " add sp, sp, #0x10\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._673:\n"
+ " .align 2, 0\n"
+ "._672:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011498()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " ldr r2, ._687\n"
+ " ldr r0, ._687 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " ldr r4, ._687 + 8\n"
+ " ldrh r1, [r4, #0x28]\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x2\n"
+ " cmp r1, r0\n"
+ " bne ._674 @cond_branch\n"
+ " bl DoSoftReset\n"
+ "._674:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x4\n"
+ " bne ._675 @cond_branch\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 12\n"
+ " bl SetMainCallback2\n"
+ "._675:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x8\n"
+ " bne ._676 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ "._676:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x40\n"
+ " beq ._677 @cond_branch\n"
+ " cmp r0, #0x80\n"
+ " bne ._678 @cond_branch\n"
+ "._677:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x2\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._678:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x20\n"
+ " beq ._679 @cond_branch\n"
+ " cmp r0, #0x10\n"
+ " bne ._680 @cond_branch\n"
+ "._679:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._680:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._681 @cond_branch\n"
+ " ldr r0, ._687 + 20\n"
+ " mov r8, r0\n"
+ " ldr r6, ._687 + 16\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " sub r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " bge ._682 @cond_branch\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._682:\n"
+ " bl debug_sub_8012294\n"
+ "._681:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._683 @cond_branch\n"
+ " ldr r1, ._687 + 20\n"
+ " mov r8, r1\n"
+ " ldr r6, ._687 + 16\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " ble ._684 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._684:\n"
+ " bl debug_sub_8012294\n"
+ "._683:\n"
+ " ldr r0, ._687 + 8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._685 @cond_branch\n"
+ " ldr r6, ._687 + 20\n"
+ " ldr r5, ._687 + 16\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._687 + 24\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._687 + 28\n"
+ " b ._686\n"
+ "._688:\n"
+ " .align 2, 0\n"
+ "._687:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word debug_sub_8010CAC+1\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x1ac\n"
+ "._689:\n"
+ " add r0, r6, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._686:\n"
+ " mov r0, sl\n"
+ " ldrb r5, [r0]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " blt ._689 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._685:\n"
+ " ldr r0, ._692\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._690 @cond_branch\n"
+ " ldr r6, ._692 + 4\n"
+ " ldr r5, ._692 + 8\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._692 + 12\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._692 + 16\n"
+ " b ._691\n"
+ "._693:\n"
+ " .align 2, 0\n"
+ "._692:\n"
+ " .word gMain\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word UnkDebug0+0x1ac\n"
+ "._694:\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._691:\n"
+ " mov r1, sl\n"
+ " ldrb r5, [r1]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r6, #6\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " cmp r2, r1\n"
+ " bgt ._694 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._690:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_801174C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe8\n"
+ " mov r0, #0x0\n"
+ " mov r9, r0\n"
+ " ldr r1, ._704\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl Random\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " mov r0, #0x3\n"
+ " and r4, r4, r0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r6, r4, #0x18\n"
+ " ldr r5, ._704 + 4\n"
+ " lsl r1, r6, #0x1\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r0, ._704 + 8\n"
+ " add r1, r1, r0\n"
+ " add r0, r5, #0\n"
+ " bl StringCopy\n"
+ " lsr r4, r4, #0x19\n"
+ " strb r4, [r5, #0x8]\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " ldr r0, ._704 + 12\n"
+ " mov r1, #0x3c\n"
+ " ldsh r7, [r0, r1]\n"
+ " mov r2, r9\n"
+ " str r2, [sp, #0xc]\n"
+ " cmp r7, #0x9\n"
+ " ble ._695 @cond_branch\n"
+ " mov r0, #0x0\n"
+ "._696:\n"
+ " sub r7, r7, #0xa\n"
+ " add r0, r0, #0x1\n"
+ " cmp r7, #0x9\n"
+ " bgt ._696 @cond_branch\n"
+ " str r0, [sp, #0xc]\n"
+ "._695:\n"
+ " ldr r2, ._704 + 16\n"
+ " ldr r1, ._704 + 20\n"
+ " sub r0, r7, #1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r3, [r0]\n"
+ " strh r3, [r2]\n"
+ " ldr r1, ._704 + 24\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._704 + 28\n"
+ " add r0, sp, #0xc\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._697 @cond_branch\n"
+ " bl EnterSafariMode\n"
+ "._697:\n"
+ " ldr r5, ._704 + 12\n"
+ " ldrh r0, [r5, #0x3c]\n"
+ " sub r0, r0, #0x2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x2\n"
+ " bhi ._698 @cond_branch\n"
+ " ldr r4, ._704 + 32\n"
+ " bl Random\n"
+ " mov r1, #0x7\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ "._698:\n"
+ " ldr r1, ._704 + 36\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " mov r7, #0x0\n"
+ "._745:\n"
+ " lsl r0, r7, #0x1\n"
+ " ldr r3, ._704 + 12\n"
+ " add r1, r0, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r2, r3, #0\n"
+ " mov r8, r0\n"
+ " add r3, r7, #5\n"
+ " mov sl, r3\n"
+ " cmp r1, #0\n"
+ " beq ._699 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, #0\n"
+ " add r0, r0, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0x1\n"
+ " beq ._707 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._701 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._706 @cond_branch\n"
+ " b ._708\n"
+ "._705:\n"
+ " .align 2, 0\n"
+ "._704:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gSaveBlock2\n"
+ " .word UnkDebug0+0x279\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gBattleTypeFlags\n"
+ " .word UnkDebug0+0x1e0\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gBattleTerrain\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word gPlayerPartyCount\n"
+ "._701:\n"
+ " cmp r0, #0x2\n"
+ " beq ._706 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._707 @cond_branch\n"
+ " b ._708\n"
+ "._706:\n"
+ " mov r6, #0x0\n"
+ " b ._710\n"
+ "._707:\n"
+ " mov r6, #0xfe\n"
+ " b ._710\n"
+ "._708:\n"
+ " mov r6, #0xff\n"
+ "._710:\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " add r1, r7, #5\n"
+ " mov sl, r1\n"
+ " cmp r0, #0xc9\n"
+ " bne ._712 @cond_branch\n"
+ " cmp r1, #0x1d\n"
+ " bgt ._712 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._713\n"
+ "._712:\n"
+ " mov r2, #0x0\n"
+ " mov r9, r2\n"
+ "._713:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._719\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._719 + 4\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._719 + 4\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ "._699:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._719\n"
+ " add r5, r1, r0\n"
+ " ldr r4, ._719 + 8\n"
+ " mov r3, r8\n"
+ " add r6, r3, r4\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ " sub r4, r4, #0x4\n"
+ " add r1, r7, #2\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r1, [sp, #0x10]\n"
+ " cmp r0, #0xb\n"
+ " bhi ._714 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ "._714:\n"
+ " add r1, r7, #3\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " mov r3, #0x0\n"
+ " ldsh r2, [r0, r3]\n"
+ " str r1, [sp, #0x14]\n"
+ " cmp r2, #0\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x3\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x2\n"
+ " bgt ._717 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._718\n"
+ "._720:\n"
+ " .align 2, 0\n"
+ "._719:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_02023A14+0x56\n"
+ "._717:\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " sub r0, r0, #0x4\n"
+ "._718:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._726\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._716:\n"
+ " ldr r1, ._726 + 4\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " ldr r2, ._726 + 4\n"
+ " cmp r0, #0\n"
+ " beq ._721 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._729 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._723 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._728 @cond_branch\n"
+ " b ._730\n"
+ "._727:\n"
+ " .align 2, 0\n"
+ "._726:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._723:\n"
+ " cmp r0, #0x2\n"
+ " beq ._728 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._729 @cond_branch\n"
+ " b ._730\n"
+ "._728:\n"
+ " mov r6, #0x0\n"
+ " b ._732\n"
+ "._729:\n"
+ " mov r6, #0xfe\n"
+ " b ._732\n"
+ "._730:\n"
+ " mov r6, #0xff\n"
+ "._732:\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0xc9\n"
+ " bne ._734 @cond_branch\n"
+ " mov r0, sl\n"
+ " cmp r0, #0x1d\n"
+ " bgt ._734 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._735\n"
+ "._734:\n"
+ " mov r1, #0x0\n"
+ " mov r9, r1\n"
+ "._735:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._741\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._741 + 4\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._741 + 4\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ " ldr r1, ._741 + 8\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._721:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._741\n"
+ " add r4, r1, r0\n"
+ " ldr r0, ._741 + 12\n"
+ " mov r3, r8\n"
+ " add r5, r3, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0x10]\n"
+ " lsl r0, r1, #0x1\n"
+ " ldr r2, ._741 + 16\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._736 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ "._736:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._741 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " cmp r1, #0\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x3\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x2\n"
+ " bgt ._739 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " sub r0, r0, #0x1\n"
+ " b ._740\n"
+ "._742:\n"
+ " .align 2, 0\n"
+ "._741:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_02023A14+0x98\n"
+ " .word gPlayerPartyCount\n"
+ " .word gUnknown_02023A14+0x9c\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._739:\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x4\n"
+ "._740:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._750\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._738:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._750 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " cmp r0, #0x2\n"
+ " ble ._743 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._750\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x7\n"
+ " ldr r2, ._750 + 8\n"
+ " bl SetMonData\n"
+ " ldr r2, ._750 + 12\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x40\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ "._743:\n"
+ " mov r7, sl\n"
+ " cmp r7, #0x1d\n"
+ " bgt ._744 @cond_branch\n"
+ " b ._745\n"
+ "._744:\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp, #0xc]\n"
+ " mov r0, #0x64\n"
+ " mov r8, r0\n"
+ " ldr r1, ._750 + 16\n"
+ " mov r9, r1\n"
+ " ldr r2, ._750\n"
+ " mov sl, r2\n"
+ "._747:\n"
+ " mov r7, #0x0\n"
+ "._746:\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " ldr r3, ._750 + 20\n"
+ " add r0, r0, r3\n"
+ " add r5, r7, #0\n"
+ " add r5, r5, #0xd\n"
+ " lsl r2, r2, #0x3\n"
+ " lsl r4, r7, #0x1\n"
+ " mov r3, r9\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " ldr r2, ._750 + 20\n"
+ " add r0, r0, r2\n"
+ " add r6, r7, #0\n"
+ " add r6, r6, #0x11\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r4, r1\n"
+ " add r1, r1, r9\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r1, ._750 + 24\n"
+ " add r2, r2, r1\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " add r0, r0, sl\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r3, ._750 + 28\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " add r0, r0, sl\n"
+ " lsl r1, r1, #0x3\n"
+ " add r4, r4, r1\n"
+ " ldr r1, ._750 + 28\n"
+ " add r4, r4, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r3, ._750 + 24\n"
+ " add r2, r2, r3\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " add r7, r7, #0x1\n"
+ " cmp r7, #0x3\n"
+ " ble ._746 @cond_branch\n"
+ " ldr r0, [sp, #0xc]\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [sp, #0xc]\n"
+ " cmp r0, #0x5\n"
+ " ble ._747 @cond_branch\n"
+ " ldr r3, ._750 + 32\n"
+ " add r4, r3, #0\n"
+ " add r4, r4, #0x44\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0x8\n"
+ " bne ._748 @cond_branch\n"
+ " ldr r0, ._750 + 12\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x80\n"
+ " b ._753\n"
+ "._751:\n"
+ " .align 2, 0\n"
+ "._750:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_02023A14+0x98\n"
+ " .word UnkDebug0+0x291\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word gEnemyParty\n"
+ " .word gBattleMoves+0x4\n"
+ " .word gUnknown_02023A14+0x10e\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._748:\n"
+ " cmp r0, #0x7\n"
+ " bne ._752 @cond_branch\n"
+ " ldr r0, ._754\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x20\n"
+ " b ._753\n"
+ "._755:\n"
+ " .align 2, 0\n"
+ "._754:\n"
+ " .word gUnknown_02023A14+0x50\n"
+ "._752:\n"
+ " cmp r0, #0x6\n"
+ " bne ._756 @cond_branch\n"
+ " ldr r2, ._759\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x10\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrh r1, [r3, #0x4]\n"
+ " mov r2, #0x4\n"
+ " ldsh r0, [r3, r2]\n"
+ " cmp r0, #0x5\n"
+ " ble ._757 @cond_branch\n"
+ " ldr r0, ._759 + 4\n"
+ " sub r1, r1, #0x2\n"
+ " ldr r3, ._759 + 8\n"
+ " add r0, r0, r3\n"
+ " b ._761\n"
+ "._760:\n"
+ " .align 2, 0\n"
+ "._759:\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word +0x2000000\n"
+ " .word 0x160a3\n"
+ "._757:\n"
+ " ldr r0, ._762\n"
+ " ldr r2, ._762 + 4\n"
+ " add r0, r0, r2\n"
+ " b ._761\n"
+ "._763:\n"
+ " .align 2, 0\n"
+ "._762:\n"
+ " .word +0x2000000\n"
+ " .word 0x160a3\n"
+ "._756:\n"
+ " cmp r0, #0x5\n"
+ " bne ._764 @cond_branch\n"
+ " ldr r0, ._766\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x21\n"
+ "._753:\n"
+ " orr r1, r1, r2\n"
+ "._761:\n"
+ " strb r1, [r0]\n"
+ " bl sub_80408BC\n"
+ " b ._770\n"
+ "._767:\n"
+ " .align 2, 0\n"
+ "._766:\n"
+ " .word gUnknown_02023A14+0x50\n"
+ "._764:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._768 @cond_branch\n"
+ " bl sub_80408BC\n"
+ "._768:\n"
+ " ldrh r3, [r4]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._769 @cond_branch\n"
+ " ldr r0, ._772\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x4\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._769:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._770 @cond_branch\n"
+ " ldr r0, ._772\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x6\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._770:\n"
+ " ldr r0, ._772 + 4\n"
+ " ldr r1, ._772 + 8\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, ._772 + 12\n"
+ " bl SetMainCallback2\n"
+ " bl ClearBag\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x5\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x6\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x7\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x8\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x9\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x22\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x23\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x25\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x49\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4a\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4b\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4c\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4d\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4e\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x50\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " ldr r4, ._772 + 16\n"
+ " mov r7, #0xe\n"
+ "._771:\n"
+ " add r0, r4, #0\n"
+ " bl sub_810CA34\n"
+ " add r4, r4, #0x8\n"
+ " sub r7, r7, #0x1\n"
+ " cmp r7, #0\n"
+ " bge ._771 @cond_branch\n"
+ " add sp, sp, #0x18\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._773:\n"
+ " .align 2, 0\n"
+ "._772:\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gMain\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word unref_sub_800D684+1\n"
+ " .word UnkDebug0+0x1f4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011D40()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._774\n"
+ " ldr r0, ._774 + 4\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._774 + 8\n"
+ " str r0, [r1, #0x4]\n"
+ " ldr r0, ._774 + 12\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " sub r1, r1, #0xc4\n"
+ " ldr r0, ._774 + 16\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 20\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 24\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 28\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 32\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 36\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 40\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._774 + 44\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " bl LoadOam\n"
+ " bl ProcessSpriteCopyRequests\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._775:\n"
+ " .align 2, 0\n"
+ "._774:\n"
+ " .word 0x40000d4\n"
+ " .word +0x2000000\n"
+ " .word 0x6004000\n"
+ " .word 0x80000800\n"
+ " .word gUnknown_030042A4\n"
+ " .word gUnknown_030042A0\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_030041B4\n"
+ " .word gUnknown_03004288\n"
+ " .word gUnknown_03004280\n"
+ " .word gUnknown_030041B0\n"
+ " .word gUnknown_030041B8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_nullsub_45()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011DD4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._776\n"
+ " ldr r2, ._776 + 4\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x8\n"
+ " ldr r0, ._776 + 8\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 12\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 16\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 20\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 24\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 28\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 32\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r0, ._776 + 36\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ " bl LoadOam\n"
+ " bl ProcessSpriteCopyRequests\n"
+ " bl TransferPlttBuffer\n"
+ " bl sub_8089668\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._777:\n"
+ " .align 2, 0\n"
+ "._776:\n"
+ " .word 0x4000008\n"
+ " .word 0x9803\n"
+ " .word gUnknown_030042A4\n"
+ " .word gUnknown_030042A0\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_030041B4\n"
+ " .word gUnknown_03004288\n"
+ " .word gUnknown_03004280\n"
+ " .word gUnknown_030041B0\n"
+ " .word gUnknown_030041B8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011E5C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r4, #0x0\n"
+ "._778:\n"
+ " lsl r0, r4, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8011EA0\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x1e\n"
+ " ble ._778 @cond_branch\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011E74()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r0, ._780\n"
+ " ldrb r5, [r0]\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " add r4, r0, #0\n"
+ "._779:\n"
+ " bl debug_sub_8012294\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x3\n"
+ " bls ._779 @cond_branch\n"
+ " ldr r0, ._780\n"
+ " strb r5, [r0]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._781:\n"
+ " .align 2, 0\n"
+ "._780:\n"
+ " .word gUnknown_Debug_030043A8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8011EA0()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x22\n"
+ " bls ._782 @cond_branch\n"
+ " b ._815\n"
+ "._782:\n"
+ " lsl r0, r7, #0x2\n"
+ " ldr r1, ._785\n"
+ " add r1, r0, r1\n"
+ " ldr r1, [r1]\n"
+ " str r0, [sp, #0x8]\n"
+ " mov pc, r1\n"
+ "._786:\n"
+ " .align 2, 0\n"
+ "._785:\n"
+ " .word ._784\n"
+ "._784:\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._817\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ "._812:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._823\n"
+ " ldr r2, ._823 + 4\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r2\n"
+ " ldrh r0, [r0]\n"
+ " str r0, [sp, #0x4]\n"
+ " add r0, r2, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r0, [r0]\n"
+ " mov r8, r0\n"
+ " add r2, r2, #0x4\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1]\n"
+ " mov r9, r1\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._823 + 12\n"
+ " mov sl, r1\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._823 + 16\n"
+ " ldrb r0, [r5]\n"
+ " mov r7, #0x46\n"
+ " mul r0, r0, r7\n"
+ " add r0, r4, r0\n"
+ " add r0, r0, sl\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r6]\n"
+ " ldrb r0, [r5]\n"
+ " mul r0, r0, r7\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, sl\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._823 + 20\n"
+ " add r1, r1, r0\n"
+ " add r0, r6, #0\n"
+ " bl StringAppend\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl sub_8002F44\n"
+ " b ._848\n"
+ "._824:\n"
+ " .align 2, 0\n"
+ "._823:\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gSpeciesNames\n"
+ "._817:\n"
+ " ldr r6, ._826\n"
+ " ldr r3, ._826 + 4\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._826 + 8\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._825\n"
+ "._827:\n"
+ " .align 2, 0\n"
+ "._826:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._814:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._830\n"
+ " ldr r1, ._830 + 4\n"
+ " mov sl, r1\n"
+ " ldr r4, ._830 + 8\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r1, r2, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl sub_8002F44\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._830 + 12\n"
+ " ldrb r0, [r5]\n"
+ " mov r1, #0x46\n"
+ " mul r0, r0, r1\n"
+ " add r0, r4, r0\n"
+ " ldr r2, ._830 + 16\n"
+ " add r0, r0, r2\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " mov r0, sl\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, sl\n"
+ " strb r0, [r1]\n"
+ " ldrb r0, [r5]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r4, r4, r0\n"
+ " ldr r0, ._830 + 16\n"
+ " add r4, r4, r0\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._828 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " bl ItemId_GetItem\n"
+ " add r1, r0, #0\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ " b ._829\n"
+ "._831:\n"
+ " .align 2, 0\n"
+ "._830:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_02023A14+0x52\n"
+ "._828:\n"
+ " ldr r1, ._833\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ "._829:\n"
+ " ldr r6, ._833 + 4\n"
+ " ldr r1, ._833 + 8\n"
+ " ldr r5, ._833 + 12\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r4, r2, r7\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r4, r5\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r5, #2\n"
+ " add r0, r4, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r5, r5, #0x4\n"
+ " add r4, r4, r5\n"
+ " ldrb r0, [r4]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl sub_8002F44\n"
+ " b ._848\n"
+ "._834:\n"
+ " .align 2, 0\n"
+ "._833:\n"
+ " .word UnkDebug0+0x26c\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x6c\n"
+ "._816:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r5, ._839\n"
+ " ldr r6, ._839 + 4\n"
+ " ldr r4, ._839 + 8\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " mov r4, #0x0\n"
+ " ldr r3, ._839 + 12\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._839 + 16\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._835 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._836 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._837 @cond_branch\n"
+ " b ._843\n"
+ "._840:\n"
+ " .align 2, 0\n"
+ "._839:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x6c\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._836:\n"
+ " cmp r0, #0x2\n"
+ " beq ._841 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._842 @cond_branch\n"
+ " b ._843\n"
+ "._837:\n"
+ " mov r0, #0xb5\n"
+ " b ._844\n"
+ "._835:\n"
+ " mov r0, #0xb6\n"
+ "._844:\n"
+ " strb r0, [r6]\n"
+ " mov r4, #0x1\n"
+ " b ._847\n"
+ "._841:\n"
+ " mov r0, #0xb5\n"
+ " b ._846\n"
+ "._842:\n"
+ " mov r0, #0xb6\n"
+ "._846:\n"
+ " strb r0, [r6]\n"
+ " strb r0, [r6, #0x1]\n"
+ " mov r4, #0x2\n"
+ " b ._847\n"
+ "._843:\n"
+ " ldr r2, ._849\n"
+ " add r1, r4, r2\n"
+ " mov r0, #0xac\n"
+ " strb r0, [r1]\n"
+ " add r4, r4, #0x1\n"
+ " add r6, r2, #0\n"
+ "._847:\n"
+ " add r1, r4, r6\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ "._825:\n"
+ " ldr r5, ._849 + 4\n"
+ " ldr r4, ._849 + 8\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " b ._848\n"
+ "._850:\n"
+ " .align 2, 0\n"
+ "._849:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word UnkDebug0+0x6c\n"
+ "._815:\n"
+ " ldr r6, ._851\n"
+ " ldr r3, ._851 + 4\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._851 + 8\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r5, ._851 + 12\n"
+ " ldr r4, ._851 + 16\n"
+ " lsl r1, r7, #0x2\n"
+ " add r1, r1, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ "._848:\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._852:\n"
+ " .align 2, 0\n"
+ "._851:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word UnkDebug0+0x6c\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012294()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r2, ._854\n"
+ " ldr r0, ._854 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._853 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r0, ._854 + 8\n"
+ " mov sl, r0\n"
+ " ldr r1, ._854 + 12\n"
+ " mov r9, r1\n"
+ " ldr r2, ._854 + 16\n"
+ " mov r8, r2\n"
+ " ldr r7, ._854 + 20\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r0, r2\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl InitWindow\n"
+ " mov r0, sl\n"
+ " bl sub_8002F44\n"
+ " ldrb r4, [r7]\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x5\n"
+ " bl gScriptFuncs_End+0x4358\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x15\n"
+ " add r4, r4, r5\n"
+ " ldr r6, ._854 + 32\n"
+ " ldrb r1, [r6]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._854 + 36\n"
+ " add r4, r4, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r4, r3]\n"
+ " mov r0, r9\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl InitWindow\n"
+ " mov r0, sl\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, r9\n"
+ " strb r0, [r1]\n"
+ " ldrb r1, [r7]\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r5\n"
+ " ldrb r2, [r6]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r2, ._854 + 36\n"
+ " add r1, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " mov r0, #0xd\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._854 + 40\n"
+ " add r1, r1, r0\n"
+ " mov r0, r9\n"
+ " bl StringAppend\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r8, r8, r0\n"
+ " mov r1, r8\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl InitWindow\n"
+ " mov r0, sl\n"
+ " bl sub_8002F44\n"
+ "._853:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._855:\n"
+ " .align 2, 0\n"
+ "._854:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x1ac\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word UnkDebug0+0x1ae\n"
+ " .word UnkDebug0+0x1b0\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_02023A14+0xde\n"
+ " .word gMoveNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80123D8()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._856 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r4, ._858\n"
+ " ldr r0, ._858 + 4\n"
+ " mov r8, r0\n"
+ " ldr r6, ._858 + 8\n"
+ " ldrh r1, [r6]\n"
+ " mov sl, r1\n"
+ " ldrb r7, [r6, #0x2]\n"
+ " ldrb r2, [r6, #0x4]\n"
+ " mov r9, r2\n"
+ " str r2, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " lsl r5, r5, #0x1\n"
+ " ldr r1, ._858 + 12\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._858 + 16\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x16]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldrh r2, [r6, #0x6]\n"
+ " mov r9, r2\n"
+ " ldrb r0, [r6, #0x8]\n"
+ " mov sl, r0\n"
+ " ldrb r6, [r6, #0xa]\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r3, sl\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._858 + 12\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " ldr r0, ._858 + 16\n"
+ " add r5, r5, r0\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x17]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, r9\n"
+ " mov r3, sl\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " b ._857\n"
+ "._859:\n"
+ " .align 2, 0\n"
+ "._858:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x1d4\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gBaseStats\n"
+ " .word gAbilityNames\n"
+ "._856:\n"
+ " ldr r6, ._860\n"
+ " ldr r1, ._860 + 4\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " ldr r5, ._860 + 8\n"
+ " ldr r4, ._860 + 12\n"
+ " ldrh r2, [r4]\n"
+ " ldrb r3, [r4, #0x2]\n"
+ " ldrb r0, [r4, #0x4]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " ldrh r2, [r4, #0x6]\n"
+ " ldrb r3, [r4, #0x8]\n"
+ " ldrb r0, [r4, #0xa]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ "._857:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._861:\n"
+ " .align 2, 0\n"
+ "._860:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gAbilityNames\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word UnkDebug0+0x1d4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012540()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r5, ._862\n"
+ " ldr r0, ._862 + 4\n"
+ " add r0, r0, #0x44\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r4, ._862 + 8\n"
+ " ldr r1, ._862 + 12\n"
+ " mov r3, #0x9b\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r1, r3\n"
+ " ldrh r2, [r0]\n"
+ " mov r6, #0x9c\n"
+ " lsl r6, r6, #0x1\n"
+ " add r0, r1, r6\n"
+ " ldrb r3, [r0]\n"
+ " add r6, r6, #0x2\n"
+ " add r0, r1, r6\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._863:\n"
+ " .align 2, 0\n"
+ "._862:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_02023A14+0x52\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word UnkDebug0+0x6c\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_nullsub_3()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125A0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._864\n"
+ " ldr r3, ._864 + 4\n"
+ " ldr r2, ._864 + 8\n"
+ " ldr r0, ._864 + 12\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._864 + 16\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x6d\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._865:\n"
+ " .align 2, 0\n"
+ "._864:\n"
+ " .word +0x2000000\n"
+ " .word UnkDebug0+0x2c8\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125E4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._866\n"
+ " ldr r3, ._866 + 4\n"
+ " ldr r2, ._866 + 8\n"
+ " ldr r0, ._866 + 12\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._866 + 16\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x81\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._867:\n"
+ " .align 2, 0\n"
+ "._866:\n"
+ " .word +0x2000000\n"
+ " .word UnkDebug0+0x2c8\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012628()
+{
+ asm(
+ " ldr r3, ._868\n"
+ " ldr r2, ._868 + 4\n"
+ " ldr r0, ._868 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r1, r1, #0x2\n"
+ " ldr r0, ._868 + 12\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r2\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " mov r1, #0x6d\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ "._869:\n"
+ " .align 2, 0\n"
+ "._868:\n"
+ " .word +0x2000000\n"
+ " .word UnkDebug0+0x3e0\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012658()
+{
+ asm(
+ " ldr r3, ._870\n"
+ " ldr r2, ._870 + 4\n"
+ " ldr r0, ._870 + 8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r1, r1, #0x2\n"
+ " ldr r0, ._870 + 12\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r2\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " mov r1, #0x81\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ "._871:\n"
+ " .align 2, 0\n"
+ "._870:\n"
+ " .word +0x2000000\n"
+ " .word UnkDebug0+0x3e0\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012688()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " mov r1, #0x0\n"
+ " mov r4, #0xcd\n"
+ " lsl r4, r4, #0x1\n"
+ " ldr r3, ._873\n"
+ " mov r2, #0x0\n"
+ "._872:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r4\n"
+ " ble ._872 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl SetHBlankCallback\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " mov r5, #0x0\n"
+ " str r5, [sp, #0x8]\n"
+ " ldr r1, ._873 + 4\n"
+ " add r0, sp, #0x8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x13\n"
+ " str r0, [r1, #0x4]\n"
+ " ldr r0, ._873 + 8\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " ldr r0, ._873 + 12\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0xc\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " ldr r4, ._873 + 16\n"
+ " add r0, r4, #0\n"
+ " bl SetUpWindowConfig\n"
+ " bl ResetPaletteFade\n"
+ " ldr r0, ._873 + 20\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._873 + 24\n"
+ " mov r0, #0xa0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._873 + 28\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 32\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 36\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 40\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 44\n"
+ " strh r5, [r0]\n"
+ " ldr r0, ._873 + 48\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._873 + 52\n"
+ " mov r0, #0x9\n"
+ " strb r0, [r1]\n"
+ " bl sub_800D6D4\n"
+ " bl sub_800DAB8\n"
+ " bl ResetSpriteData\n"
+ " bl ResetTasks\n"
+ " bl FreeAllSpritePalettes\n"
+ " ldr r1, ._873 + 56\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r6, ._873 + 60\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r6]\n"
+ " ldr r0, ._873 + 64\n"
+ " add r1, r4, #0\n"
+ " bl InitWindowFromConfig\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._873 + 68\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._873 + 72\n"
+ " mov r8, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r8\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x12\n"
+ " ldr r4, ._873 + 76\n"
+ " ldr r4, [r4, #0x4]\n"
+ " str r4, [sp]\n"
+ " ldrh r4, [r6]\n"
+ " str r4, [sp, #0x4]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r1, ._873 + 80\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x88\n"
+ " lsl r1, r1, #0x1\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " ldrh r0, [r6]\n"
+ " mov r1, #0x1\n"
+ " bl GetMonSpriteTemplate_803C56C\n"
+ " ldr r0, ._873 + 84\n"
+ " ldrh r1, [r6]\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r8\n"
+ " ldrb r2, [r1, #0x1]\n"
+ " add r2, r2, #0x28\n"
+ " mov r1, #0xb0\n"
+ " mov r3, #0x28\n"
+ " bl CreateSprite\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r3, ._873 + 88\n"
+ " lsl r1, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x1c\n"
+ " add r0, r1, r0\n"
+ " ldr r2, ._873 + 92\n"
+ " str r2, [r0]\n"
+ " add r1, r1, r3\n"
+ " ldrb r2, [r1, #0x5]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r2\n"
+ " mov r2, #0x10\n"
+ " orr r0, r0, r2\n"
+ " strb r0, [r1, #0x5]\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x5\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._873 + 96\n"
+ " bl SetHBlankCallback\n"
+ " ldr r0, ._873 + 100\n"
+ " bl SetVBlankCallback\n"
+ " bl gScriptFuncs_End+0x14f4\n"
+ " ldr r0, ._873 + 104\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._873 + 108\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " strh r5, [r1, #0x8]\n"
+ " strh r4, [r1, #0xa]\n"
+ " ldr r0, ._873 + 112\n"
+ " bl SetMainCallback2\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._874:\n"
+ " .align 2, 0\n"
+ "._873:\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word 0x40000d4\n"
+ " .word 0x85006000\n"
+ " .word 0x400004c\n"
+ " .word gWindowConfig_81E6C58\n"
+ " .word gUnknown_030042A4\n"
+ " .word gUnknown_030042A0\n"
+ " .word gUnknown_030042C0\n"
+ " .word gUnknown_030041B4\n"
+ " .word gUnknown_03004288\n"
+ " .word gUnknown_03004280\n"
+ " .word gUnknown_030041B0\n"
+ " .word gUnknown_030041B8\n"
+ " .word gBattleTerrain\n"
+ " .word gReservedSpritePaletteCount\n"
+ " .word gCurrentMove\n"
+ " .word gUnknown_03004210\n"
+ " .word gMonFrontPicTable\n"
+ " .word gMonFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gMonPaletteTable\n"
+ " .word gUnknown_02024E8C\n"
+ " .word gSprites\n"
+ " .word nullsub_37+1\n"
+ " .word debug_nullsub_45+1\n"
+ " .word debug_sub_8011DD4+1\n"
+ " .word debug_sub_8012D10+1\n"
+ " .word gTasks\n"
+ " .word debug_sub_8012878+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012878()
+{
+ asm(
+ " push {lr}\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r0, ._876\n"
+ " bl sub_800374C\n"
+ " bl UpdatePaletteFade\n"
+ " bl RunTasks\n"
+ " ldr r0, ._876 + 4\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x82\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._875 @cond_branch\n"
+ " ldr r0, ._876 + 8\n"
+ " bl SetMainCallback2\n"
+ "._875:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._877:\n"
+ " .align 2, 0\n"
+ "._876:\n"
+ " .word gUnknown_03004210\n"
+ " .word gMain\n"
+ " .word debug_sub_80108B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80128B4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x9\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r5, ._878\n"
+ " ldr r4, ._878 + 4\n"
+ " mov r0, #0x23\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r6, ._878 + 8\n"
+ " ldrh r1, [r6]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r4, #0x3]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4, #0x4]\n"
+ " ldrh r1, [r6]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._878 + 12\n"
+ " add r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " bl StringAppend\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._879:\n"
+ " .align 2, 0\n"
+ "._878:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word gCurrentMove\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012938()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, sl\n"
+ " mov r5, r9\n"
+ " mov r4, r8\n"
+ " push {r4, r5, r6}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x7\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._880\n"
+ " ldr r4, ._880 + 4\n"
+ " mov r0, #0x25\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._880 + 8\n"
+ " add r0, r4, #0\n"
+ " bl StringCopy\n"
+ " add r0, r4, #4\n"
+ " ldr r1, ._880 + 12\n"
+ " mov sl, r1\n"
+ " ldr r2, ._880 + 16\n"
+ " mov r9, r2\n"
+ " ldrh r1, [r2]\n"
+ " sub r1, r1, #0x1\n"
+ " add r1, r1, sl\n"
+ " ldrb r1, [r1]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r2, ._880 + 20\n"
+ " ldr r1, ._880 + 24\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r0, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r2\n"
+ " mov r2, r9\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r0, r0, sl\n"
+ " ldrb r0, [r0]\n"
+ " neg r0, r0\n"
+ " strh r0, [r1, #0x26]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._881:\n"
+ " .align 2, 0\n"
+ "._880:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word UnkDebug0+0x400\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word gCurrentMove\n"
+ " .word gSprites\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80129F8()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r6, ._882\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._882 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._882 + 8\n"
+ " mov r8, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r8\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x12\n"
+ " ldr r4, ._882 + 12\n"
+ " ldr r4, [r4, #0x4]\n"
+ " str r4, [sp]\n"
+ " ldrh r4, [r6]\n"
+ " str r4, [sp, #0x4]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r1, ._882 + 16\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x88\n"
+ " lsl r1, r1, #0x1\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " ldr r4, ._882 + 20\n"
+ " ldr r0, ._882 + 24\n"
+ " lsl r2, r5, #0x2\n"
+ " add r2, r2, r5\n"
+ " lsl r2, r2, #0x3\n"
+ " add r2, r2, r0\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r2, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldrh r0, [r6]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " ldrb r0, [r0, #0x1]\n"
+ " add r0, r0, #0x28\n"
+ " strh r0, [r1, #0x22]\n"
+ " mov r1, #0xa\n"
+ " ldsh r0, [r2, r1]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldr r3, ._882 + 28\n"
+ " ldrh r0, [r6]\n"
+ " sub r0, r0, #0x1\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " neg r0, r0\n"
+ " strh r0, [r1, #0x26]\n"
+ " mov r0, #0xa\n"
+ " ldsh r1, [r2, r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x0\n"
+ " bl StartSpriteAnim\n"
+ " add sp, sp, #0x8\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._883:\n"
+ " .align 2, 0\n"
+ "._882:\n"
+ " .word gCurrentMove\n"
+ " .word gMonFrontPicTable\n"
+ " .word gMonFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gMonPaletteTable\n"
+ " .word gSprites\n"
+ " .word gTasks\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012AC0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " ldr r3, ._885\n"
+ " ldr r4, ._885 + 4\n"
+ " b ._884\n"
+ "._886:\n"
+ " .align 2, 0\n"
+ "._885:\n"
+ " .word gCurrentMove\n"
+ " .word gBaseStats\n"
+ "._890:\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " cmp r0, #0x2\n"
+ " beq ._887 @cond_branch\n"
+ "._884:\n"
+ " add r2, r3, #0\n"
+ " lsl r0, r5, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " ldrh r1, [r2]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._888 @cond_branch\n"
+ " ldr r1, ._891\n"
+ " add r0, r1, #0\n"
+ " strh r0, [r2]\n"
+ "._888:\n"
+ " ldrh r1, [r2]\n"
+ " ldr r0, ._891\n"
+ " cmp r1, r0\n"
+ " bne ._889 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r2]\n"
+ "._889:\n"
+ " ldrh r0, [r3]\n"
+ " lsl r1, r0, #0x3\n"
+ " sub r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1, #0x6]\n"
+ " cmp r0, #0x2\n"
+ " bne ._890 @cond_branch\n"
+ "._887:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r6, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r6, #0\n"
+ " bl debug_sub_80129F8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._892:\n"
+ " .align 2, 0\n"
+ "._891:\n"
+ " .word 0x19b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B2C()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x11\n"
+ " ldr r1, ._893\n"
+ " add r2, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r2]\n"
+ " ldr r1, ._893 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2\n"
+ " strh r1, [r0]\n"
+ " bx lr\n"
+ "._894:\n"
+ " .align 2, 0\n"
+ "._893:\n"
+ " .word 0x600c772\n"
+ " .word 0x600c7b2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B4C()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x11\n"
+ " ldr r2, ._895\n"
+ " add r1, r0, r2\n"
+ " ldr r3, ._895 + 4\n"
+ " add r2, r3, #0\n"
+ " strh r2, [r1]\n"
+ " ldr r1, ._895 + 8\n"
+ " add r0, r0, r1\n"
+ " strh r2, [r0]\n"
+ " bx lr\n"
+ "._896:\n"
+ " .align 2, 0\n"
+ "._895:\n"
+ " .word 0x600c772\n"
+ " .word 0x1016\n"
+ " .word 0x600c7b2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012B70()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " cmp r6, #0\n"
+ " beq ._897 @cond_branch\n"
+ " mov r4, #0x1\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_80129F8\n"
+ " ldr r1, ._899\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " strh r4, [r0, #0x8]\n"
+ " b ._898\n"
+ "._900:\n"
+ " .align 2, 0\n"
+ "._899:\n"
+ " .word gTasks\n"
+ "._897:\n"
+ " str r6, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " ldr r0, ._901\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " mov r0, #0x2\n"
+ " strh r0, [r4, #0x8]\n"
+ " ldr r5, ._901 + 4\n"
+ " ldr r1, ._901 + 8\n"
+ " mov r2, #0xa4\n"
+ " lsl r2, r2, #0x2\n"
+ " mov r0, #0x1d\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " mov r3, #0x1a\n"
+ " bl InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl sub_8002F44\n"
+ " strh r6, [r4, #0xe]\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8012B2C\n"
+ "._898:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._902:\n"
+ " .align 2, 0\n"
+ "._901:\n"
+ " .word gTasks\n"
+ " .word gUnknown_03004210\n"
+ " .word UnkDebug0+0x422\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012C08()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r1, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x9\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r7, ._905\n"
+ " ldr r5, ._905 + 4\n"
+ " mov r0, #0x23\n"
+ " mov r8, r0\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x7\n"
+ " bl debug_sub_8010A7C\n"
+ " mov r0, #0x25\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0xa2\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl sub_8002F44\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x21\n"
+ " bl sub_802BBD4\n"
+ " cmp r4, #0\n"
+ " beq ._903 @cond_branch\n"
+ " ldr r1, ._905 + 8\n"
+ " lsl r4, r6, #0x2\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x4\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldr r1, ._905 + 12\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ " b ._904\n"
+ "._906:\n"
+ " .align 2, 0\n"
+ "._905:\n"
+ " .word gUnknown_03004210\n"
+ " .word gBattleTextBuff1\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_821F7F3\n"
+ "._903:\n"
+ " ldr r1, ._907\n"
+ " lsl r4, r6, #0x2\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x3\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldr r1, ._907 + 4\n"
+ " mov r0, r8\n"
+ " str r0, [sp]\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x90\n"
+ " mov r3, #0x2\n"
+ " bl InitWindow\n"
+ "._904:\n"
+ " add r5, r4, #0\n"
+ " ldr r4, ._907 + 8\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._907 + 12\n"
+ " mov r2, #0xa4\n"
+ " lsl r2, r2, #0x2\n"
+ " mov r0, #0x1d\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x1a\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._907\n"
+ " add r0, r5, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xe]\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8012B2C\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._908:\n"
+ " .align 2, 0\n"
+ "._907:\n"
+ " .word gTasks\n"
+ " .word UnkDebug0+0x432\n"
+ " .word gUnknown_03004210\n"
+ " .word gUnknown_08400D7A\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012D10()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._911\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x4\n"
+ " bls ._909 @cond_branch\n"
+ " b ._1067\n"
+ "._909:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._911 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._912:\n"
+ " .align 2, 0\n"
+ "._911:\n"
+ " .word gTasks\n"
+ " .word ._913\n"
+ "._913:\n"
+ " .word ._914\n"
+ " .word ._915\n"
+ " .word ._916\n"
+ " .word ._917\n"
+ " .word ._918\n"
+ "._914:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " ldr r4, ._920\n"
+ " ldr r1, ._920 + 4\n"
+ " mov r2, #0xc8\n"
+ " lsl r2, r2, #0x1\n"
+ " mov r0, #0x23\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x13\n"
+ " bl InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl sub_8002F44\n"
+ " ldr r1, ._920 + 8\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r0, #0x8]\n"
+ " ldrb r0, [r0, #0xc]\n"
+ " b ._919\n"
+ "._921:\n"
+ " .align 2, 0\n"
+ "._920:\n"
+ " .word gUnknown_03004210\n"
+ " .word UnkDebug0+0x405\n"
+ " .word gTasks\n"
+ "._915:\n"
+ " ldr r2, ._924\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._922 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._924 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x3\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " b ._931\n"
+ "._925:\n"
+ " .align 2, 0\n"
+ "._924:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._922:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._926 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._928\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x2\n"
+ " b ._927\n"
+ "._929:\n"
+ " .align 2, 0\n"
+ "._928:\n"
+ " .word gTasks\n"
+ "._926:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._930 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._932\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " b ._931\n"
+ "._933:\n"
+ " .align 2, 0\n"
+ "._932:\n"
+ " .word gTasks\n"
+ "._930:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._934 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._936\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " bl nullsub_8\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " mov r0, #0x1\n"
+ "._927:\n"
+ " orr r0, r0, r1\n"
+ "._931:\n"
+ " strh r0, [r4, #0xc]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._919:\n"
+ " mov r1, #0x0\n"
+ " bl sub_802E3E4\n"
+ " b ._1067\n"
+ "._937:\n"
+ " .align 2, 0\n"
+ "._936:\n"
+ " .word gTasks\n"
+ "._934:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r4, #0x1\n"
+ " add r0, r4, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._938 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._943\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xc\n"
+ " ldsh r0, [r0, r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._939 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._940 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._941 @cond_branch\n"
+ " b ._1067\n"
+ "._944:\n"
+ " .align 2, 0\n"
+ "._943:\n"
+ " .word gTasks\n"
+ "._940:\n"
+ " cmp r0, #0x2\n"
+ " beq ._945 @cond_branch\n"
+ "._990:\n"
+ " cmp r0, #0x3\n"
+ " bne ._946 @cond_branch\n"
+ " b ._1014\n"
+ "._946:\n"
+ " b ._1067\n"
+ "._941:\n"
+ " ldr r1, ._952\n"
+ " ldr r0, ._952 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3f\n"
+ " bls ._949 @cond_branch\n"
+ " b ._1067\n"
+ "._949:\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._953:\n"
+ " .align 2, 0\n"
+ "._952:\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word gCurrentMove\n"
+ "._939:\n"
+ " mov r0, #0x1\n"
+ " b ._997\n"
+ "._945:\n"
+ " ldr r1, ._957\n"
+ " ldrh r2, [r1]\n"
+ " mov r0, #0xcd\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " bhi ._955 @cond_branch\n"
+ " add r0, r2, #1\n"
+ "._979:\n"
+ " strh r0, [r1]\n"
+ " b ._1025\n"
+ "._958:\n"
+ " .align 2, 0\n"
+ "._957:\n"
+ " .word gCurrentMove\n"
+ "._955:\n"
+ " strh r4, [r1]\n"
+ " b ._1025\n"
+ "._938:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._960 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._966\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xc\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " bne ._961 @cond_branch\n"
+ " b ._1007\n"
+ "._961:\n"
+ " cmp r0, #0x1\n"
+ " bgt ._963 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._964 @cond_branch\n"
+ " b ._1067\n"
+ "._967:\n"
+ " .align 2, 0\n"
+ "._966:\n"
+ " .word gTasks\n"
+ "._963:\n"
+ " cmp r0, #0x2\n"
+ " beq ._968 @cond_branch\n"
+ " b ._990\n"
+ "._964:\n"
+ " ldr r1, ._973\n"
+ " ldr r0, ._973 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._970 @cond_branch\n"
+ " b ._1067\n"
+ "._970:\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._974:\n"
+ " .align 2, 0\n"
+ "._973:\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word gCurrentMove\n"
+ "._968:\n"
+ " ldr r1, ._977\n"
+ " ldrh r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " bls ._975 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._979\n"
+ "._978:\n"
+ " .align 2, 0\n"
+ "._977:\n"
+ " .word gCurrentMove\n"
+ "._975:\n"
+ " ldr r2, ._980\n"
+ " add r0, r2, #0\n"
+ " b ._979\n"
+ "._981:\n"
+ " .align 2, 0\n"
+ "._980:\n"
+ " .word 0x19b\n"
+ "._960:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._982 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._987\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xc\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._983 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._984 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._985 @cond_branch\n"
+ " b ._1067\n"
+ "._988:\n"
+ " .align 2, 0\n"
+ "._987:\n"
+ " .word gTasks\n"
+ "._984:\n"
+ " cmp r0, #0x2\n"
+ " beq ._989 @cond_branch\n"
+ " b ._990\n"
+ "._985:\n"
+ " ldr r3, ._995\n"
+ " ldr r2, ._995 + 4\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r3\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3f\n"
+ " bls ._991 @cond_branch\n"
+ " b ._1067\n"
+ "._991:\n"
+ " add r0, r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x1\n"
+ " add r1, r0, r3\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x40\n"
+ " bls ._1019 @cond_branch\n"
+ " mov r0, #0x40\n"
+ " strb r0, [r1]\n"
+ " b ._1019\n"
+ "._996:\n"
+ " .align 2, 0\n"
+ "._995:\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word gCurrentMove\n"
+ "._983:\n"
+ " mov r0, #0x1\n"
+ " b ._997\n"
+ "._989:\n"
+ " ldr r3, ._1000\n"
+ " ldrh r2, [r3]\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0xa\n"
+ " ldr r0, ._1000 + 4\n"
+ " cmp r1, r0\n"
+ " bgt ._998 @cond_branch\n"
+ " strh r1, [r3]\n"
+ " b ._1025\n"
+ "._1001:\n"
+ " .align 2, 0\n"
+ "._1000:\n"
+ " .word gCurrentMove\n"
+ " .word 0x19b\n"
+ "._998:\n"
+ " ldr r1, ._1003\n"
+ " add r0, r2, r1\n"
+ " strh r0, [r3]\n"
+ " b ._1025\n"
+ "._1004:\n"
+ " .align 2, 0\n"
+ "._1003:\n"
+ " .word 0xfffffe70\n"
+ "._982:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1005 @cond_branch\n"
+ " b ._1067\n"
+ "._1005:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._1011\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xc\n"
+ " ldsh r3, [r0, r2]\n"
+ " cmp r3, #0x1\n"
+ " beq ._1007 @cond_branch\n"
+ " cmp r3, #0x1\n"
+ " bgt ._1008 @cond_branch\n"
+ " cmp r3, #0\n"
+ " beq ._1009 @cond_branch\n"
+ " b ._1067\n"
+ "._1012:\n"
+ " .align 2, 0\n"
+ "._1011:\n"
+ " .word gTasks\n"
+ "._1008:\n"
+ " cmp r3, #0x2\n"
+ " beq ._1013 @cond_branch\n"
+ " cmp r3, #0x3\n"
+ " beq ._1014 @cond_branch\n"
+ " b ._1067\n"
+ "._1009:\n"
+ " ldr r1, ._1020\n"
+ " ldr r0, ._1020 + 4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " add r2, r0, r1\n"
+ " ldrb r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " bne ._1016 @cond_branch\n"
+ " b ._1067\n"
+ "._1016:\n"
+ " cmp r1, #0x8\n"
+ " bls ._1018 @cond_branch\n"
+ " sub r0, r0, #0x8\n"
+ " strb r0, [r2]\n"
+ " b ._1019\n"
+ "._1021:\n"
+ " .align 2, 0\n"
+ "._1020:\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word gCurrentMove\n"
+ "._1018:\n"
+ " strb r3, [r2]\n"
+ "._1019:\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " b ._1067\n"
+ "._1007:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ "._997:\n"
+ " add r1, r5, #0\n"
+ " bl debug_sub_8012AC0\n"
+ " b ._1067\n"
+ "._1013:\n"
+ " ldr r2, ._1026\n"
+ " ldrh r0, [r2]\n"
+ " add r1, r0, #0\n"
+ " sub r1, r1, #0xa\n"
+ " cmp r1, #0x1\n"
+ " ble ._1024 @cond_branch\n"
+ " strh r1, [r2]\n"
+ " b ._1025\n"
+ "._1027:\n"
+ " .align 2, 0\n"
+ "._1026:\n"
+ " .word gCurrentMove\n"
+ "._1024:\n"
+ " mov r1, #0xc8\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ "._1025:\n"
+ " bl debug_sub_80128B4\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012938\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_80129F8\n"
+ " b ._1067\n"
+ "._1014:\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x0\n"
+ " bl debug_sub_8012B70\n"
+ " b ._1067\n"
+ "._916:\n"
+ " ldr r0, ._1032\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1030 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1032 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1033:\n"
+ " .align 2, 0\n"
+ "._1032:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1030:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1046 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1035 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1037\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldrb r1, [r1, #0xe]\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8012C08\n"
+ " b ._1067\n"
+ "._1038:\n"
+ " .align 2, 0\n"
+ "._1037:\n"
+ " .word gTasks\n"
+ "._1035:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1039 @cond_branch\n"
+ " b ._1067\n"
+ "._1039:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._1063\n"
+ "._917:\n"
+ " ldr r0, ._1044\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1042 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1044 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1045:\n"
+ " .align 2, 0\n"
+ "._1044:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1042:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1046 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1047 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1050\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r2, #0xe\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._1063 @cond_branch\n"
+ " ldr r1, ._1050 + 4\n"
+ " ldr r2, ._1050 + 8\n"
+ " mov r0, #0x1f\n"
+ " bl debug_sub_80132C8\n"
+ " b ._1063\n"
+ "._1051:\n"
+ " .align 2, 0\n"
+ "._1050:\n"
+ " .word gTasks\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word 0x19b\n"
+ "._1047:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1067 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._1063\n"
+ "._918:\n"
+ " ldr r0, ._1056\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1054 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1056 + 4\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x0\n"
+ " b ._1055\n"
+ "._1057:\n"
+ " .align 2, 0\n"
+ "._1056:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ "._1054:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1058 @cond_branch\n"
+ "._1046:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1060\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " ldrb r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B4C\n"
+ " mov r0, #0x1\n"
+ "._1055:\n"
+ " strh r0, [r4, #0xe]\n"
+ " bl debug_sub_8012B2C\n"
+ " b ._1067\n"
+ "._1061:\n"
+ " .align 2, 0\n"
+ "._1060:\n"
+ " .word gTasks\n"
+ "._1058:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1062 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._1065\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r2, #0xe\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._1063 @cond_branch\n"
+ " ldr r1, ._1065 + 4\n"
+ " ldr r2, ._1065 + 8\n"
+ " mov r0, #0x1f\n"
+ " bl debug_sub_8013294\n"
+ "._1063:\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_8012B70\n"
+ " b ._1067\n"
+ "._1066:\n"
+ " .align 2, 0\n"
+ "._1065:\n"
+ " .word gTasks\n"
+ " .word gUnknown_02023A14+0x13e\n"
+ " .word 0x19b\n"
+ "._1062:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1067 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_8012B70\n"
+ "._1067:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8013240()
+{
+ asm(
+ " push {lr}\n"
+ " bl gScriptFuncs_End+0x2fec\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " beq ._1068 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._1069\n"
+ "._1068:\n"
+ " mov r0, #0x0\n"
+ "._1069:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8013258()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r1, #0\n"
+ " add r5, r2, #0\n"
+ " b ._1070\n"
+ "._1072:\n"
+ " ldr r0, ._1074\n"
+ " add r5, r5, r0\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " add r6, r6, r0\n"
+ " add r0, r4, #1\n"
+ "._1070:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl gScriptFuncs_End+0x2f60\n"
+ " cmp r0, #0\n"
+ " bne ._1071 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " cmp r5, r0\n"
+ " bhi ._1072 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._1073\n"
+ "._1075:\n"
+ " .align 2, 0\n"
+ "._1074:\n"
+ " .word 0xfffff000\n"
+ "._1071:\n"
+ " mov r0, #0x0\n"
+ "._1073:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8013294()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r5, r1, #0\n"
+ " add r6, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl debug_sub_8013240\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1076 @cond_branch\n"
+ " bl gScriptFuncs_End+0x19f4\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl debug_sub_8013258\n"
+ " add r4, r0, #0\n"
+ " bl gScriptFuncs_End+0x1a70\n"
+ " add r0, r4, #0\n"
+ " b ._1077\n"
+ "._1076:\n"
+ " mov r0, #0x0\n"
+ "._1077:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80132C8()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r5, r1, #0\n"
+ " add r6, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl debug_sub_8013240\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1078 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " add r2, r5, #0\n"
+ " add r3, r6, #0\n"
+ " bl gScriptFuncs_End+0x2d64\n"
+ "._1078:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_8010278;
@@ -1554,6 +8880,269 @@ void sub_8010800(void)
gBattleMainFunc = bc_8012FAC;
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80138CC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._1167\n"
+ " ldrb r0, [r0]\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._1163 @cond_branch\n"
+ " b ._1186\n"
+ "._1163:\n"
+ " ldr r1, ._1167 + 4\n"
+ " ldr r2, ._1167 + 8\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r1, #0\n"
+ " cmp r0, #0x4\n"
+ " bls ._1165 @cond_branch\n"
+ " b ._1186\n"
+ "._1165:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._1167 + 12\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._1168:\n"
+ " .align 2, 0\n"
+ "._1167:\n"
+ " .word gActiveBank\n"
+ " .word +0x2000000\n"
+ " .word 0x160fd\n"
+ " .word ._1169\n"
+ "._1169:\n"
+ " .word ._1170\n"
+ " .word ._1171\n"
+ " .word ._1172\n"
+ " .word ._1173\n"
+ " .word ._1174\n"
+ "._1170:\n"
+ " ldr r1, ._1177\n"
+ " ldr r0, ._1177 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, ._1177 + 8\n"
+ " cmp r1, r0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r0, ._1177 + 12\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " b ._1187\n"
+ "._1178:\n"
+ " .align 2, 0\n"
+ "._1177:\n"
+ " .word gBattleBankFunc\n"
+ " .word gActiveBank\n"
+ " .word sub_802C098+1\n"
+ " .word 0x160fd\n"
+ "._1171:\n"
+ " ldr r1, ._1180\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1180 + 4\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._1180 + 8\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0x80\n"
+ " b ._1187\n"
+ "._1181:\n"
+ " .align 2, 0\n"
+ "._1180:\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ " .word 0x160fe\n"
+ "._1172:\n"
+ " ldr r0, ._1184\n"
+ " add r3, r2, r0\n"
+ " ldrb r0, [r3]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r3]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r1, ._1184 + 4\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1184 + 8\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x80\n"
+ " strb r0, [r3]\n"
+ " b ._1186\n"
+ "._1185:\n"
+ " .align 2, 0\n"
+ "._1184:\n"
+ " .word 0x160fe\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ "._1173:\n"
+ " ldr r0, ._1188\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._1186 @cond_branch\n"
+ " ldr r1, ._1188 + 4\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2c]\n"
+ " strh r0, [r1, #0x2e]\n"
+ " ldr r0, ._1188 + 8\n"
+ " add r1, r2, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " b ._1187\n"
+ "._1189:\n"
+ " .align 2, 0\n"
+ "._1188:\n"
+ " .word 0x160fe\n"
+ " .word gMain\n"
+ " .word 0x160fd\n"
+ "._1174:\n"
+ " ldr r0, ._1190\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0x0\n"
+ "._1187:\n"
+ " strb r0, [r1]\n"
+ "._1186:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1191:\n"
+ " .align 2, 0\n"
+ "._1190:\n"
+ " .word 0x160fd\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80139E4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r0, ._1198\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " beq ._1192 @cond_branch\n"
+ " ldr r2, ._1198 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r1, ._1198 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._1193 @cond_branch\n"
+ " add r4, r2, #0\n"
+ " add r5, r1, #0\n"
+ "._1194:\n"
+ " bl debug_sub_80138CC\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r5]\n"
+ " cmp r0, r1\n"
+ " bcc ._1194 @cond_branch\n"
+ "._1193:\n"
+ " ldr r0, ._1198 + 12\n"
+ " ldr r0, [r0]\n"
+ " bl gScriptFuncs_End+0x3cf4\n"
+ " ldr r1, ._1198 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._1198 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._1200 @cond_branch\n"
+ " ldr r5, ._1198 + 16\n"
+ " add r4, r1, #0\n"
+ "._1196:\n"
+ " ldrb r0, [r4]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " ldr r0, [r0]\n"
+ " bl gScriptFuncs_End+0x3cf4\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " ldr r1, ._1198 + 8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bcc ._1196 @cond_branch\n"
+ " b ._1200\n"
+ "._1199:\n"
+ " .align 2, 0\n"
+ "._1198:\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gActiveBank\n"
+ " .word gNoOfAllBanks\n"
+ " .word gBattleMainFunc\n"
+ " .word gBattleBankFunc\n"
+ "._1192:\n"
+ " ldr r0, ._1202\n"
+ " ldr r0, [r0]\n"
+ " bl gScriptFuncs_End+0x3cf4\n"
+ " ldr r1, ._1202 + 4\n"
+ " strb r4, [r1]\n"
+ " ldr r0, ._1202 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r4, r0\n"
+ " bcs ._1200 @cond_branch\n"
+ " ldr r5, ._1202 + 12\n"
+ " add r4, r1, #0\n"
+ "._1201:\n"
+ " ldrb r0, [r4]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " ldr r0, [r0]\n"
+ " bl gScriptFuncs_End+0x3cf4\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " ldr r1, ._1202 + 8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldrb r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bcc ._1201 @cond_branch\n"
+ "._1200:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1203:\n"
+ " .align 2, 0\n"
+ "._1202:\n"
+ " .word gBattleMainFunc\n"
+ " .word gActiveBank\n"
+ " .word gNoOfAllBanks\n"
+ " .word gBattleBankFunc\n"
+ "\n"
+ );
+}
+#endif
+
void sub_8010824(void)
{
gBattleMainFunc();
@@ -1562,6 +9151,380 @@ void sub_8010824(void)
gBattleBankFunc[gActiveBank]();
}
+#if DEBUG
+__attribute__((naked))
+void sub_8010874()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " mov r0, #0x0\n"
+ " bl TurnValuesCleanUp\n"
+ " bl SpecialStatusesClear\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " ldr r0, ._1215\n"
+ " mov sl, r0\n"
+ " ldr r1, ._1215 + 4\n"
+ " mov r9, r1\n"
+ " ldr r4, ._1215 + 8\n"
+ " mov r8, r4\n"
+ " ldr r0, ._1215 + 12\n"
+ " mov ip, r0\n"
+ " ldr r4, ._1215 + 16\n"
+ " mov r5, #0x0\n"
+ " ldr r7, ._1215 + 20\n"
+ " ldr r6, ._1215 + 24\n"
+ "._1205:\n"
+ " ldr r0, ._1215 + 28\n"
+ " add r0, r5, r0\n"
+ " str r3, [r0]\n"
+ " mov r1, #0x0\n"
+ "._1204:\n"
+ " add r0, r4, r1\n"
+ " strb r3, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x1b\n"
+ " bls ._1204 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r4, #0x16]\n"
+ " ldr r1, ._1215 + 32\n"
+ " add r0, r2, r1\n"
+ " strb r3, [r0]\n"
+ " mov r0, ip\n"
+ " strh r3, [r0]\n"
+ " mov r1, r8\n"
+ " strh r3, [r1]\n"
+ " mov r0, r9\n"
+ " strh r3, [r0]\n"
+ " mov r1, sl\n"
+ " strh r3, [r1]\n"
+ " ldr r0, ._1215 + 36\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " strh r3, [r6]\n"
+ " strh r3, [r7]\n"
+ " ldr r1, ._1215 + 40\n"
+ " add r0, r5, r1\n"
+ " str r3, [r0]\n"
+ " mov r0, #0x2\n"
+ " add sl, sl, r0\n"
+ " add r9, r9, r0\n"
+ " add r8, r8, r0\n"
+ " add ip, ip, r0\n"
+ " add r4, r4, #0x1c\n"
+ " add r5, r5, #0x4\n"
+ " add r7, r7, #0x2\n"
+ " add r6, r6, #0x2\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x3\n"
+ " ble ._1205 @cond_branch\n"
+ " mov r5, #0x0\n"
+ " ldr r3, ._1215 + 44\n"
+ " ldr r4, ._1215 + 48\n"
+ " mov r2, #0x1\n"
+ "._1207:\n"
+ " strh r5, [r4]\n"
+ " mov r1, #0x0\n"
+ "._1206:\n"
+ " add r0, r3, r1\n"
+ " strb r5, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0xb\n"
+ " bls ._1206 @cond_branch\n"
+ " add r3, r3, #0xc\n"
+ " add r4, r4, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._1207 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldr r2, ._1215 + 52\n"
+ " strb r1, [r2]\n"
+ " ldr r3, ._1215 + 56\n"
+ " strb r1, [r3]\n"
+ " ldr r4, ._1215 + 60\n"
+ " strh r1, [r4]\n"
+ " ldr r1, ._1215 + 64\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ "._1208:\n"
+ " add r0, r1, r2\n"
+ " strb r3, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x2b\n"
+ " bls ._1208 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._1215 + 68\n"
+ " str r0, [r1]\n"
+ " ldr r2, ._1215 + 72\n"
+ " ldrh r1, [r2]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._1210 @cond_branch\n"
+ " ldr r3, ._1215 + 76\n"
+ " ldrb r1, [r3, #0x15]\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._1210 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " ldr r4, ._1215 + 68\n"
+ " str r0, [r4]\n"
+ "._1210:\n"
+ " ldr r1, ._1215 + 76\n"
+ " ldrb r0, [r1, #0x15]\n"
+ " lsl r0, r0, #0x1e\n"
+ " lsr r0, r0, #0x1f\n"
+ " ldr r3, ._1215 + 80\n"
+ " ldr r4, ._1215 + 84\n"
+ " add r2, r3, r4\n"
+ " mov r1, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r0, ._1215 + 88\n"
+ " strb r1, [r0]\n"
+ " ldr r2, ._1215 + 92\n"
+ " strb r1, [r2]\n"
+ " ldr r3, ._1215 + 96\n"
+ " str r1, [r3]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._1215 + 100\n"
+ " strh r1, [r4]\n"
+ " ldr r1, ._1215 + 80\n"
+ " ldr r3, ._1215 + 104\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " ldr r4, ._1215 + 108\n"
+ " add r0, r1, r4\n"
+ " strb r2, [r0]\n"
+ " ldr r1, ._1215 + 112\n"
+ " mov r2, #0x0\n"
+ " add r0, r1, #7\n"
+ "._1211:\n"
+ " strb r2, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r0, r1\n"
+ " bge ._1211 @cond_branch\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._1215 + 116\n"
+ " strh r5, [r0]\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._1215 + 120\n"
+ " str r0, [r1]\n"
+ " ldr r2, ._1215 + 124\n"
+ " strh r0, [r2]\n"
+ " ldr r4, ._1215 + 80\n"
+ " ldr r3, ._1215 + 128\n"
+ " add r0, r4, r3\n"
+ " strb r5, [r0]\n"
+ " ldr r1, ._1215 + 132\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " ldr r2, ._1215 + 136\n"
+ " strb r5, [r2]\n"
+ " ldr r3, ._1215 + 140\n"
+ " strb r5, [r3]\n"
+ " sub r1, r1, #0x29\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " ldr r2, ._1215 + 144\n"
+ " add r0, r4, r2\n"
+ " strb r5, [r0]\n"
+ " ldr r3, ._1215 + 148\n"
+ " add r0, r4, r3\n"
+ " strb r5, [r0]\n"
+ " ldr r0, ._1215 + 152\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " ldr r2, ._1215 + 156\n"
+ " lsl r1, r0, #0x3\n"
+ " sub r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1, #0x8]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._1215 + 160\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " ldr r2, ._1215 + 164\n"
+ " add r1, r4, r2\n"
+ " strb r0, [r1]\n"
+ " ldr r3, ._1215 + 168\n"
+ " add r1, r4, r3\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._1215 + 172\n"
+ " add r0, r4, r1\n"
+ " strb r5, [r0]\n"
+ " sub r2, r2, #0x33\n"
+ " add r1, r4, r2\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x0\n"
+ "._1212:\n"
+ " ldr r3, ._1215 + 176\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x20\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x1c\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x8\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x10\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r3, r3, #0x8\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r4\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x7\n"
+ " ble ._1212 @cond_branch\n"
+ " ldr r4, ._1215 + 80\n"
+ " ldr r1, ._1215 + 180\n"
+ " add r0, r4, r1\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x6\n"
+ " strb r1, [r0]\n"
+ " sub r3, r3, #0x3f\n"
+ " add r0, r4, r3\n"
+ " strb r1, [r0]\n"
+ " ldr r1, ._1215 + 184\n"
+ " add r0, r4, r1\n"
+ " strb r2, [r0]\n"
+ " ldr r3, ._1215 + 188\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x40\n"
+ "._1213:\n"
+ " strb r1, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._1213 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r3, #0x13]\n"
+ " strb r1, [r3]\n"
+ " strb r1, [r3, #0x1]\n"
+ " strb r1, [r3, #0x2]\n"
+ " strb r1, [r3, #0x3]\n"
+ " strb r1, [r3, #0x4]\n"
+ " ldrb r2, [r3, #0x5]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " mov r2, #0x3\n"
+ " neg r2, r2\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r3, #0x5]\n"
+ " strh r1, [r3, #0x20]\n"
+ " strh r1, [r3, #0x22]\n"
+ " strh r1, [r3, #0x24]\n"
+ " strh r1, [r3, #0x6]\n"
+ " strh r1, [r3, #0x26]\n"
+ " strh r1, [r3, #0x28]\n"
+ " mov r2, #0x0\n"
+ " add r5, r3, #0\n"
+ " add r5, r5, #0x8\n"
+ " mov r4, #0x0\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x14\n"
+ "._1214:\n"
+ " add r0, r2, r5\n"
+ " strb r4, [r0]\n"
+ " strb r4, [r1]\n"
+ " strb r4, [r1, #0x16]\n"
+ " add r1, r1, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x9\n"
+ " ble ._1214 @cond_branch\n"
+ " ldr r2, ._1215 + 80\n"
+ " ldr r3, ._1215 + 192\n"
+ " add r0, r2, r3\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r4, ._1215 + 196\n"
+ " add r0, r2, r4\n"
+ " strb r1, [r0]\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._1216:\n"
+ " .align 2, 0\n"
+ "._1215:\n"
+ " .word gUnknown_02024C4C\n"
+ " .word gUnknown_02024C44\n"
+ " .word gMoveHitWith\n"
+ " .word gLastUsedMove\n"
+ " .word gDisableStructs\n"
+ " .word gUnknown_02024C2C\n"
+ " .word gLockedMove\n"
+ " .word gStatuses3\n"
+ " .word gUnknown_02024C70\n"
+ " .word gUnknown_02024C5C\n"
+ " .word +0x2017100\n"
+ " .word gSideTimer\n"
+ " .word gSideAffecting\n"
+ " .word gBankAttacker\n"
+ " .word gBankTarget\n"
+ " .word gBattleWeather\n"
+ " .word gWishFutureKnock\n"
+ " .word gHitMarker\n"
+ " .word gBattleTypeFlags\n"
+ " .word gSaveBlock2\n"
+ " .word +0x2000000\n"
+ " .word 0x16084\n"
+ " .word gMultiHitCounter\n"
+ " .word gBattleOutcome\n"
+ " .word gBattleExecBuffer\n"
+ " .word gPaydayMoney\n"
+ " .word 0x17130\n"
+ " .word 0x17160\n"
+ " .word gBattleCommunication\n"
+ " .word gPauseCounterBattle\n"
+ " .word gBattleMoveDamage\n"
+ " .word gUnknown_02024DE8\n"
+ " .word 0x16002\n"
+ " .word 0x160a1\n"
+ " .word gLeveledUpInBattle\n"
+ " .word gAbsentBankFlags\n"
+ " .word 0x16086\n"
+ " .word 0x16087\n"
+ " .word gEnemyParty\n"
+ " .word gBaseStats\n"
+ " .word 0x4fb\n"
+ " .word 0x16089\n"
+ " .word 0x16088\n"
+ " .word 0x1601b\n"
+ " .word 0x160ac\n"
+ " .word 0x160c8\n"
+ " .word 0x16113\n"
+ " .word gBattleResults\n"
+ " .word 0x1609e\n"
+ " .word 0x1609f\n"
+ "\n"
+ );
+}
+#else
void sub_8010874(void)
{
s32 i;
@@ -1663,6 +9626,7 @@ void sub_8010874(void)
gBattleResults.caughtNick[i] = 0;
}
}
+#endif
void SwitchInClearStructs(void)
{
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 977e91f5c..613f2ebe0 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -289,6 +289,214 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
BattleAI_SetupAIData();
}
+#if DEBUG
+__attribute__((naked))
+void BattleAI_SetupAIData()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " ldr r2, ._16\n"
+ " mov r4, #0x0\n"
+ " ldr r3, ._16 + 4\n"
+ " mov r1, #0x0\n"
+ "._9:\n"
+ " add r0, r2, r4\n"
+ " strb r1, [r0]\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x1b\n"
+ " bls ._9 @cond_branch\n"
+ " ldr r0, ._16\n"
+ " mov r1, #0x64\n"
+ " mov r4, #0x3\n"
+ " add r0, r0, #0x7\n"
+ "._10:\n"
+ " strb r1, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " sub r4, r4, #0x1\n"
+ " cmp r4, #0\n"
+ " bge ._10 @cond_branch\n"
+ " ldrb r0, [r3]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xff\n"
+ " bl sub_8015A98\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._16\n"
+ " add r5, r0, #4\n"
+ " ldr r6, ._16 + 8\n"
+ "._12:\n"
+ " ldr r0, [r6]\n"
+ " and r0, r0, r7\n"
+ " cmp r0, #0\n"
+ " beq ._11 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r5]\n"
+ "._11:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xf\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " sub r1, r1, r0\n"
+ " strb r1, [r5, #0x14]\n"
+ " add r5, r5, #0x1\n"
+ " add r6, r6, #0x4\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x3\n"
+ " ble ._12 @cond_branch\n"
+ " ldr r0, ._16 + 12\n"
+ " add r0, r0, #0x20\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r1, ._16 + 16\n"
+ " ldr r0, ._16 + 4\n"
+ " ldrb r2, [r0]\n"
+ " strb r2, [r1]\n"
+ " ldr r0, ._16 + 20\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._13 @cond_branch\n"
+ " ldr r4, ._16 + 24\n"
+ " bl Random\n"
+ " mov r5, #0x2\n"
+ " and r0, r0, r5\n"
+ " strb r0, [r4]\n"
+ " ldr r0, ._16 + 28\n"
+ " ldrb r1, [r0]\n"
+ " ldr r2, ._16 + 8\n"
+ " ldrb r3, [r4]\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldr r0, [r0]\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0\n"
+ " beq ._15 @cond_branch\n"
+ " eor r3, r3, r5\n"
+ " strb r3, [r4]\n"
+ " b ._15\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word +0x2016800\n"
+ " .word gActiveBank\n"
+ " .word gBitTable\n"
+ " .word +0x2016c00\n"
+ " .word gBankAttacker\n"
+ " .word gBattleTypeFlags\n"
+ " .word gBankTarget\n"
+ " .word gAbsentBankFlags\n"
+ "._13:\n"
+ " ldr r0, ._20\n"
+ " mov r1, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._15:\n"
+ " ldr r0, ._20 + 4\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._18 @cond_branch\n"
+ " ldr r1, ._20 + 8\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x17\n"
+ " b ._27\n"
+ "._21:\n"
+ " .align 2, 0\n"
+ "._20:\n"
+ " .word gBankTarget\n"
+ " .word gBattleTypeFlags\n"
+ " .word +0x2016800\n"
+ "._18:\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x3\n"
+ " add r0, r2, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._22 @cond_branch\n"
+ " ldr r1, ._24\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x16\n"
+ " b ._27\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word +0x2016800\n"
+ "._22:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._26 @cond_branch\n"
+ " ldr r1, ._28\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x18\n"
+ " b ._27\n"
+ "._29:\n"
+ " .align 2, 0\n"
+ "._28:\n"
+ " .word +0x2016800\n"
+ "._26:\n"
+ " mov r0, #0x90\n"
+ " lsl r0, r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._30 @cond_branch\n"
+ " ldr r1, ._33\n"
+ " ldrh r0, [r1]\n"
+ " cmp r0, r2\n"
+ " bne ._31 @cond_branch\n"
+ "._30:\n"
+ " ldr r1, ._33 + 4\n"
+ " mov r0, #0x7\n"
+ "._27:\n"
+ " str r0, [r1, #0xc]\n"
+ " add r3, r1, #0\n"
+ " b ._32\n"
+ "._34:\n"
+ " .align 2, 0\n"
+ "._33:\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word +0x2016800\n"
+ "._31:\n"
+ " ldr r3, ._36\n"
+ " ldr r2, ._36 + 4\n"
+ " ldrh r1, [r1]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x3\n"
+ " add r2, r2, #0x1c\n"
+ " add r0, r0, r2\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r3, #0xc]\n"
+ "._32:\n"
+ " ldr r0, ._36 + 8\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._35 @cond_branch\n"
+ " ldr r0, ._36 + 12\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r3, #0xc]\n"
+ "._35:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._37:\n"
+ " .align 2, 0\n"
+ "._36:\n"
+ " .word +0x2016800\n"
+ " .word gTrainers\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gUnknown_02023A14+0x4c\n"
+ "\n"
+ );
+}
+#else
void BattleAI_SetupAIData(void)
{
s32 i;
@@ -342,6 +550,7 @@ void BattleAI_SetupAIData(void)
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
}
+#endif
u8 BattleAI_GetAIActionToUse(void)
{
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 97568d254..f7734301c 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[];
static void sub_8043D5C(struct Sprite *);
static const void *sub_8043CDC(u8);
-static void sub_8044210(u8, s16, u8);
-static void draw_status_ailment_maybe(u8);
+/*static*/ void sub_8044210(u8, s16, u8);
+/*static*/ void draw_status_ailment_maybe(u8);
extern void sub_8045180(struct Sprite *);
static void sub_8045110(struct Sprite *);
static void sub_8045048(struct Sprite *);
@@ -651,7 +651,7 @@ void sub_8043F44(u8 a)
#define CHAR_LV_SEPARATOR CHAR_PERIOD
#endif
-static void sub_8043FC0(u8 a, u8 b)
+/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
void *const *r7;
@@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\
}
#endif
-static void sub_8044210(u8 a, s16 b, u8 c)
+/*static*/ void sub_8044210(u8 a, s16 b, u8 c)
{
u8 str[0x14];
u8 *ptr;
@@ -1277,6 +1277,353 @@ _08044548: .4byte 0x04000008\n\
}
#endif
+#if DEBUG
+__attribute__((naked))
+void sub_804454C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ " ldr r0, ._150\n"
+ " ldrb r0, [r0]\n"
+ " cmp r8, r0\n"
+ " blt ._133 @cond_branch\n"
+ " b ._164\n"
+ "._133:\n"
+ " ldr r1, ._150 + 4\n"
+ " mov r9, r1\n"
+ " mov r2, #0x64\n"
+ " mov sl, r2\n"
+ " ldr r7, ._150 + 8\n"
+ "._165:\n"
+ " ldr r0, ._150 + 12\n"
+ " mov r6, r8\n"
+ " add r5, r6, r0\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, r9\n"
+ " add r1, r1, #0x1c\n"
+ " add r0, r0, r1\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, ._150 + 16\n"
+ " cmp r1, r0\n"
+ " beq ._135 @cond_branch\n"
+ " b ._147\n"
+ "._135:\n"
+ " ldr r0, ._150 + 20\n"
+ " ldrb r0, [r0]\n"
+ " lsl r4, r6, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._138 @cond_branch\n"
+ " lsr r0, r4, #0x18\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._138 @cond_branch\n"
+ " b ._147\n"
+ "._138:\n"
+ " bl IsDoubleBattle\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._141 @cond_branch\n"
+ " lsr r0, r4, #0x18\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._141 @cond_branch\n"
+ " b ._147\n"
+ "._141:\n"
+ " mov r0, r8\n"
+ " lsl r3, r0, #0x2\n"
+ " ldr r0, ._150 + 24\n"
+ " add r3, r3, r0\n"
+ " ldr r0, [r3]\n"
+ " lsl r0, r0, #0x1b\n"
+ " lsr r0, r0, #0x1f\n"
+ " mov r2, #0x1\n"
+ " eor r2, r2, r0\n"
+ " lsl r2, r2, #0x4\n"
+ " ldrb r0, [r3]\n"
+ " mov r6, #0x11\n"
+ " neg r6, r6\n"
+ " add r1, r6, #0\n"
+ " and r0, r0, r1\n"
+ " orr r0, r0, r2\n"
+ " strb r0, [r3]\n"
+ " ldr r0, [r3]\n"
+ " lsl r0, r0, #0x1b\n"
+ " lsr r6, r0, #0x1f\n"
+ " lsr r0, r4, #0x18\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._143 @cond_branch\n"
+ " bl IsDoubleBattle\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._144 @cond_branch\n"
+ " b ._147\n"
+ "._144:\n"
+ " ldr r0, ._150 + 28\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " beq ._146 @cond_branch\n"
+ " b ._147\n"
+ "._146:\n"
+ " cmp r6, #0x1\n"
+ " bne ._148 @cond_branch\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldrh r0, [r0, #0x38]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " str r2, [sp]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldrh r1, [r0, #0x4]\n"
+ " lsl r1, r1, #0x16\n"
+ " lsr r1, r1, #0x11\n"
+ " ldr r0, ._150 + 32\n"
+ " add r1, r1, r0\n"
+ " mov r0, sp\n"
+ " ldr r2, ._150 + 36\n"
+ " bl gScriptFuncs_End+0x3cb4\n"
+ " ldrb r4, [r5]\n"
+ " ldrh r0, [r7]\n"
+ " mov r1, sl\n"
+ " mul r1, r1, r0\n"
+ " add r0, r1, #0\n"
+ " ldr r2, ._150 + 40\n"
+ " add r0, r0, r2\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " bl sub_8044210\n"
+ " ldrb r4, [r5]\n"
+ " ldrh r0, [r7]\n"
+ " mov r6, sl\n"
+ " mul r6, r6, r0\n"
+ " add r0, r6, #0\n"
+ " ldr r1, ._150 + 40\n"
+ " b ._149\n"
+ "._151:\n"
+ " .align 2, 0\n"
+ "._150:\n"
+ " .word gNoOfAllBanks\n"
+ " .word gSprites\n"
+ " .word gBattlePartyID\n"
+ " .word gHealthboxIDs\n"
+ " .word SpriteCallbackDummy+1\n"
+ " .word gUnknown_020297ED\n"
+ " .word +0x2017800\n"
+ " .word gBattleTypeFlags\n"
+ " .word 0x6010000\n"
+ " .word 0x5000040\n"
+ " .word gPlayerParty\n"
+ "._148:\n"
+ " ldrb r0, [r5]\n"
+ " bl draw_status_ailment_maybe\n"
+ " ldrb r0, [r5]\n"
+ " ldrh r1, [r7]\n"
+ " mov r2, sl\n"
+ " mul r2, r2, r1\n"
+ " add r1, r2, #0\n"
+ " ldr r6, ._153\n"
+ " add r1, r1, r6\n"
+ " mov r2, #0x5\n"
+ " bl sub_8045A5C\n"
+ " mov r0, #0x75\n"
+ " bl sub_8043CDC\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x4\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r9\n"
+ " ldrh r1, [r1, #0x4]\n"
+ " lsl r1, r1, #0x16\n"
+ " lsr r1, r1, #0x11\n"
+ " ldr r2, ._153 + 4\n"
+ " add r1, r1, r2\n"
+ " ldr r2, ._153 + 8\n"
+ " bl gScriptFuncs_End+0x3cb4\n"
+ " b ._163\n"
+ "._154:\n"
+ " .align 2, 0\n"
+ "._153:\n"
+ " .word gPlayerParty\n"
+ " .word 0x6010680\n"
+ " .word 0x4000008\n"
+ "._143:\n"
+ " cmp r6, #0x1\n"
+ " bne ._155 @cond_branch\n"
+ " ldr r0, ._158\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " beq ._156 @cond_branch\n"
+ " ldrb r0, [r5]\n"
+ " ldrh r1, [r7]\n"
+ " mov r6, sl\n"
+ " mul r6, r6, r1\n"
+ " add r1, r6, #0\n"
+ " ldr r2, ._158 + 4\n"
+ " add r1, r1, r2\n"
+ " bl sub_8044338\n"
+ " b ._163\n"
+ "._159:\n"
+ " .align 2, 0\n"
+ "._158:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gEnemyParty\n"
+ "._156:\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldrh r0, [r0, #0x38]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " str r2, [sp]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldrh r1, [r0, #0x4]\n"
+ " lsl r1, r1, #0x16\n"
+ " lsr r1, r1, #0x11\n"
+ " ldr r6, ._161\n"
+ " add r1, r1, r6\n"
+ " mov r0, sp\n"
+ " ldr r2, ._161 + 4\n"
+ " bl gScriptFuncs_End+0x3cb4\n"
+ " ldrb r4, [r5]\n"
+ " ldrh r0, [r7]\n"
+ " mov r1, sl\n"
+ " mul r1, r1, r0\n"
+ " add r0, r1, #0\n"
+ " ldr r2, ._161 + 8\n"
+ " add r0, r0, r2\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " bl sub_8044210\n"
+ " ldrb r4, [r5]\n"
+ " ldrh r0, [r7]\n"
+ " mov r6, sl\n"
+ " mul r6, r6, r0\n"
+ " add r0, r6, #0\n"
+ " ldr r1, ._161 + 8\n"
+ "._149:\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl sub_8044210\n"
+ " b ._163\n"
+ "._162:\n"
+ " .align 2, 0\n"
+ "._161:\n"
+ " .word 0x6010000\n"
+ " .word 0x5000040\n"
+ " .word gEnemyParty\n"
+ "._155:\n"
+ " ldrb r0, [r5]\n"
+ " bl draw_status_ailment_maybe\n"
+ " ldrb r0, [r5]\n"
+ " ldrh r1, [r7]\n"
+ " mov r6, #0x64\n"
+ " mul r1, r1, r6\n"
+ " ldr r4, ._166\n"
+ " add r1, r1, r4\n"
+ " mov r2, #0x5\n"
+ " bl sub_8045A5C\n"
+ " ldr r0, ._166 + 4\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._163 @cond_branch\n"
+ " ldrb r0, [r5]\n"
+ " ldrh r1, [r7]\n"
+ " mul r1, r1, r6\n"
+ " add r1, r1, r4\n"
+ " mov r2, #0x4\n"
+ " bl sub_8045A5C\n"
+ "._163:\n"
+ " ldr r0, ._166 + 8\n"
+ " add r0, r0, r8\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldrh r1, [r0, #0x3c]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strh r1, [r0, #0x3c]\n"
+ "._147:\n"
+ " add r7, r7, #0x2\n"
+ " mov r2, #0x1\n"
+ " add r8, r8, r2\n"
+ " ldr r0, ._166 + 12\n"
+ " ldrb r0, [r0]\n"
+ " cmp r8, r0\n"
+ " bge ._164 @cond_branch\n"
+ " b ._165\n"
+ "._164:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word gEnemyParty\n"
+ " .word gBattleTypeFlags\n"
+ " .word gHealthboxIDs\n"
+ " .word gNoOfAllBanks\n"
+ "\n"
+ );
+}
+#else
void sub_804454C(void)
{
s32 i;
@@ -1344,6 +1691,7 @@ void sub_804454C(void)
}
}
}
+#endif
// This function almost matches except for just two instructions around 0x08044B52 that are swapped.
#ifdef NONMATCHING
@@ -2359,7 +2707,7 @@ void sub_8045180(struct Sprite *sprite)
sprite->pos2.y = gSprites[spriteId].pos2.y;
}
-static void sub_80451A0(u8 a, struct Pokemon *pkmn)
+/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn)
{
u8 nickname[POKEMON_NAME_LENGTH];
u8 gender;
@@ -2507,7 +2855,7 @@ static void sub_8045458(u8 a, u8 b)
}
}
-static void draw_status_ailment_maybe(u8 a)
+/*static*/ void draw_status_ailment_maybe(u8 a)
{
s32 r4;
s32 r4_2;
@@ -2649,7 +2997,7 @@ static u8 sub_80457E8(u8 a, u8 b)
return ret;
}
-static void sub_80458B0(u8 a)
+/*static*/ void sub_80458B0(u8 a)
{
u8 *r6;
u8 r8;
@@ -2675,7 +3023,7 @@ static void sub_80458B0(u8 a)
}
-static void sub_8045998(u8 a)
+/*static*/ void sub_8045998(u8 a)
{
u8 *r7;
u8 status;
@@ -2697,6 +3045,310 @@ static void sub_8045998(u8 a)
}
}
+#ifdef DEBUG
+__attribute__((naked))
+void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r9, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r7, r2, #0x18\n"
+ " ldr r1, ._429\n"
+ " lsl r0, r0, #0x4\n"
+ " add r0, r0, r8\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0, #0x3a]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " bl GetBankSide\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._410 @cond_branch\n"
+ " b ._411\n"
+ "._410:\n"
+ " cmp r7, #0x3\n"
+ " beq ._412 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._413 @cond_branch\n"
+ "._412:\n"
+ " mov r0, r9\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r0, r8\n"
+ " bl sub_8043FC0\n"
+ "._413:\n"
+ " cmp r7, #0x1\n"
+ " bhi ._414 @cond_branch\n"
+ " mov r0, r9\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " mov r0, r8\n"
+ " mov r2, #0x0\n"
+ " bl sub_80440EC\n"
+ "._414:\n"
+ " cmp r7, #0x2\n"
+ " beq ._415 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._416 @cond_branch\n"
+ "._415:\n"
+ " mov r0, r9\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " mov r0, r8\n"
+ " mov r2, #0x1\n"
+ " bl sub_80440EC\n"
+ "._416:\n"
+ " cmp r7, #0x5\n"
+ " beq ._417 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._418 @cond_branch\n"
+ "._417:\n"
+ " mov r0, #0x0\n"
+ " bl load_gfxc_health_bar\n"
+ " mov r0, r9\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " mov r0, r9\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r3, r0, #0\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " add r2, r4, #0\n"
+ " bl sub_8043D84\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl sub_8045C78\n"
+ "._418:\n"
+ " bl IsDoubleBattle\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp, #0x4]\n"
+ " cmp r0, #0\n"
+ " bne ._421 @cond_branch\n"
+ " cmp r7, #0x6\n"
+ " beq ._420 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._421 @cond_branch\n"
+ "._420:\n"
+ " mov r0, #0x3\n"
+ " bl load_gfxc_health_bar\n"
+ " mov r0, r9\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " mov r0, r9\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r0, r9\n"
+ " mov r1, #0x19\n"
+ " bl GetMonData\n"
+ " add r3, r0, #0\n"
+ " ldr r6, ._429 + 4\n"
+ " lsl r1, r4, #0x2\n"
+ " ldr r2, ._429 + 8\n"
+ " lsl r0, r5, #0x3\n"
+ " sub r0, r0, r5\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r2, [r0, #0x13]\n"
+ " mov r0, #0xca\n"
+ " lsl r0, r0, #0x1\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r6\n"
+ " ldr r1, [r1]\n"
+ " sub r3, r3, r1\n"
+ " add r4, r4, #0x1\n"
+ " lsl r4, r4, #0x2\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldr r2, [r4]\n"
+ " sub r2, r2, r1\n"
+ " ldr r0, [sp, #0x4]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " bl sub_8043D84\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x0\n"
+ " bl sub_8045C78\n"
+ "._421:\n"
+ " cmp r7, #0x4\n"
+ " beq ._422 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._423 @cond_branch\n"
+ "._422:\n"
+ " mov r0, r8\n"
+ " mov r1, r9\n"
+ " bl sub_80451A0\n"
+ "._423:\n"
+ " cmp r7, #0x9\n"
+ " beq ._424 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._425 @cond_branch\n"
+ "._424:\n"
+ " mov r0, r8\n"
+ " bl draw_status_ailment_maybe\n"
+ "._425:\n"
+ " cmp r7, #0xa\n"
+ " bne ._426 @cond_branch\n"
+ " mov r0, r8\n"
+ " bl sub_80458B0\n"
+ "._426:\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0xa\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bhi ._442 @cond_branch\n"
+ " mov r0, r8\n"
+ " bl sub_8045998\n"
+ " b ._442\n"
+ "._430:\n"
+ " .align 2, 0\n"
+ "._429:\n"
+ " .word gSprites\n"
+ " .word gExperienceTables\n"
+ " .word gBaseStats\n"
+ "._411:\n"
+ " cmp r7, #0x3\n"
+ " beq ._431 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._432 @cond_branch\n"
+ "._431:\n"
+ " mov r0, r9\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r0, r8\n"
+ " bl sub_8043FC0\n"
+ "._432:\n"
+ " ldr r0, ._443\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x1\n"
+ " bne ._436 @cond_branch\n"
+ " cmp r7, #0x1\n"
+ " bhi ._434 @cond_branch\n"
+ " mov r0, r9\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " mov r0, r8\n"
+ " mov r2, #0x0\n"
+ " bl sub_80440EC\n"
+ "._434:\n"
+ " cmp r7, #0x2\n"
+ " beq ._435 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._436 @cond_branch\n"
+ "._435:\n"
+ " mov r0, r9\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " mov r0, r8\n"
+ " mov r2, #0x1\n"
+ " bl sub_80440EC\n"
+ "._436:\n"
+ " cmp r7, #0x5\n"
+ " beq ._437 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._438 @cond_branch\n"
+ "._437:\n"
+ " mov r0, #0x0\n"
+ " bl load_gfxc_health_bar\n"
+ " mov r0, r9\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " mov r0, r9\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " add r3, r0, #0\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " add r2, r4, #0\n"
+ " bl sub_8043D84\n"
+ " mov r0, sl\n"
+ " mov r1, r8\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl sub_8045C78\n"
+ "._438:\n"
+ " cmp r7, #0x4\n"
+ " beq ._439 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._440 @cond_branch\n"
+ "._439:\n"
+ " mov r0, r8\n"
+ " mov r1, r9\n"
+ " bl sub_80451A0\n"
+ "._440:\n"
+ " cmp r7, #0x9\n"
+ " beq ._441 @cond_branch\n"
+ " cmp r7, #0\n"
+ " bne ._442 @cond_branch\n"
+ "._441:\n"
+ " mov r0, r8\n"
+ " bl draw_status_ailment_maybe\n"
+ "._442:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._444:\n"
+ " .align 2, 0\n"
+ "._443:\n"
+ " .word gUnknown_020297ED\n"
+ "\n"
+ );
+}
+#else
void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
{
u8 r10;
@@ -2766,6 +3418,7 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
draw_status_ailment_maybe(a);
}
}
+#endif
s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2)
{
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 4979760d7..a03a215fd 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -8,9 +8,35 @@
#include "strings2.h"
#include "trainer_card.h"
+struct DebugStruct1
+{
+ u16 var0;
+ u8 var1[10];
+};
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern u8 gBattleOutcome;
+#ifdef DEBUG
+const struct DebugStruct1 gUnknown_Debug_4245CC[] =
+{
+ { 1, _("NUMBER1") },
+ { 2, _("ナンバー2") },
+ { 3, _("ナンバー3") },
+ { 4, _("ナンバー4") },
+ { 5, _("ナンバー5") },
+ { 6, _("ナンバー6") },
+ { 7, _("ナンバー7") },
+};
+
+const u8 gUnknown_Debug_8424620[][4] =
+{
+ { 1, 1, 0, 0 },
+ { 2, 1, 0, 0 },
+ { 3, 1, 0, 0 },
+};
+#endif
+
static void InitLinkBattleRecord(struct LinkBattleRecord *record)
{
CpuFill16(0, record, sizeof(struct LinkBattleRecord));
@@ -240,7 +266,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
}
}
-void ShowLinkBattleRecords(void) {
+void ShowLinkBattleRecords(void)
+{
s32 i;
Menu_DrawStdWindowFrame(1, 0, 28, 18);
sub_8072BD8(gOtherText_BattleResults, 0, 1, 240);
diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c
new file mode 100644
index 000000000..6f2734b08
--- /dev/null
+++ b/src/debug/kagaya_debug_menu.c
@@ -0,0 +1,420 @@
+#ifdef DEBUG
+#include "global.h"
+#include "menu.h"
+
+u8 KagayaDebugMenu_TrainerCard();
+u8 KagayaDebugMenu_CardToExchange();
+u8 KagayaDebugMenu_SlotMachine();
+
+const u8 Str_83EBB34[] = _("Trainer’s card");
+const u8 Str_83EBB43[] = _("Card to exchange");
+const u8 Str_83EBB54[] = _("Slot machine");
+
+const struct MenuAction _83EBB64[] = {
+ { Str_83EBB34, KagayaDebugMenu_TrainerCard },
+ { Str_83EBB43, KagayaDebugMenu_CardToExchange },
+ { Str_83EBB54, KagayaDebugMenu_SlotMachine },
+};
+
+__attribute__((naked))
+void InitKagayaDebugMenu_A()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitKagayaDebugMenu_B\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitKagayaDebugMenu_B()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xd\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " ldr r1, ._1 + 4\n"
+ " ldr r0, ._1 + 8\n"
+ " str r0, [r1]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word _83EBB64\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80B061C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B061C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._3 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._6\n"
+ "._3:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._5 @cond_branch\n"
+ " ldr r2, ._7\n"
+ " ldr r0, ._7 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._6\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word gCallback_03004AE8\n"
+ " .word _83EBB64\n"
+ "._5:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._6:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 KagayaDebugMenu_TrainerCard()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._9\n"
+ " ldr r0, ._9 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80B068C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B068C()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._11 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._12\n"
+ "._11:\n"
+ " ldr r0, ._13\n"
+ " bl debug_sub_80A0710\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ "._12:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word sub_805469C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 KagayaDebugMenu_CardToExchange()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._15\n"
+ " ldr r0, ._15 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80B06E0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B06E0()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._17 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._18\n"
+ "._17:\n"
+ " ldr r0, ._19\n"
+ " bl debug_sub_80A073C\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ "._18:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word sub_805469C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 KagayaDebugMenu_SlotMachine()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._21\n"
+ " ldr r0, ._21 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word gCallback_03004AE8\n"
+ " .word Kagaya_80B0734+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void Kagaya_80B0734()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._23 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._24\n"
+ "._23:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._25\n"
+ " bl debug_sub_811609C\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ "._24:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word sub_805469C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B0770()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._30\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._27 @cond_branch\n"
+ " bl CloseMenu\n"
+ " bl IsPlayerFacingSurfableFishableWater\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._29 @cond_branch\n"
+ " ldr r0, ._30 + 4\n"
+ " str r4, [r0]\n"
+ " mov r0, #0x9\n"
+ " bl FieldEffectStart\n"
+ " b ._29\n"
+ "._31:\n"
+ " .align 2, 0\n"
+ "._30:\n"
+ " .word gPlayerAvatar\n"
+ " .word gUnknown_0202FF84\n"
+ "._27:\n"
+ " bl CloseMenu\n"
+ "._29:\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B07B0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._32\n"
+ " ldr r0, ._32 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._33:\n"
+ " .align 2, 0\n"
+ "._32:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80B07DC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B07DC()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._34 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._35\n"
+ "._34:\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._36\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x1\n"
+ "._35:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._37:\n"
+ " .align 2, 0\n"
+ "._36:\n"
+ " .word sub_80FC074+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B0800()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl sub_8068F18\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0\n"
+ " beq ._38 @cond_branch\n"
+ " ldr r0, ._39\n"
+ " mov r1, #0x0\n"
+ " str r1, [r0]\n"
+ " sub r1, r2, #1\n"
+ " str r1, [r0, #0x4]\n"
+ " mov r0, #0x2c\n"
+ " bl FieldEffectStart\n"
+ "._38:\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._40:\n"
+ " .align 2, 0\n"
+ "._39:\n"
+ " .word gUnknown_0202FF84\n"
+ "\n"
+ );
+}
+
+#endif // DEBUG
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
new file mode 100644
index 000000000..48b6d91b8
--- /dev/null
+++ b/src/debug/nakamura_debug_menu.c
@@ -0,0 +1,5031 @@
+#ifdef DEBUG
+#include "global.h"
+#include "menu.h"
+
+EWRAM_DATA u8 _nakamuraData[0x10] = {0};
+
+static u8 _nakamuraStatic[32] __attribute__((unused));
+
+u8 debug_sub_815FC54();
+u8 debug_sub_815F2B4();
+u8 debug_sub_815FC94();
+u8 debug_sub_815FB1C();
+u8 debug_sub_815F2F4();
+u8 debug_sub_815F62C();
+u8 debug_sub_815FBE8();
+u8 debug_sub_815FE1C();
+u8 debug_sub_8160D98();
+
+const u8 Str_843E36C[] = _("Berries");
+const u8 Str_843E374[] = _("Goods");
+const u8 Str_843E37A[] = _("{PKMN} list");
+const u8 Str_843E382[] = _("トラップ");
+const u8 Str_843E387[] = _("Move your base");
+const u8 Str_843E396[] = _("Moving {PKMN}");
+const u8 Str_843E3A0[] = _("Fishing points");
+const u8 Str_843E3AF[] = _("Set {POKEBLOCK}");
+const u8 Str_843E3B9[] = _("Make bases(to max)");
+const u8 Str_843E3CC[] = _("Base location");
+
+const struct MenuAction _843E3DC[] = {
+ { Str_843E36C, debug_sub_815FC54 },
+ { Str_843E37A, debug_sub_815F2B4 },
+ { Str_843E374, debug_sub_815FC94 },
+ { Str_843E387, debug_sub_815FB1C },
+ { Str_843E3B9, debug_sub_815F2F4 },
+ { Str_843E3CC, debug_sub_815F62C },
+ { Str_843E396, debug_sub_815FBE8 },
+ { Str_843E3A0, debug_sub_815FE1C },
+ { Str_843E3AF, debug_sub_8160D98 },
+};
+
+const u8 _843E424[][4] = {
+ { 1, 118, 47, 14 },
+ { 2, 125, 53, 10 },
+ { 3, 113, 49, 8 },
+ { 0xB, 118, 67, 6 },
+ { 0xC, 121, 40, 11 },
+ { 0xD, 111, 35, 1 },
+ { 0x15, 115, 20, 53 },
+ { 0x16, 121, 18, 13 },
+ { 0x17, 119, 26, 81 },
+ { 0x1F, 127, 59, 67 },
+ { 0x20, 125, 55, 11 },
+ { 0x21, 111, 27, 27 },
+ { 0x29, 114, 9, 47 },
+ { 0x2A, 115, 32, 39 },
+ { 0x2B, 115, 23, 8 },
+ { 0x33, 114, 30, 51 },
+ { 0x34, 115, 26, 15 },
+ { 0x35, 115, 32, 46 },
+ { 0x3D, 114, 11, 62 },
+ { 0x3E, 115, 21, 18 },
+ { 0x3F, 115, 25, 24 },
+ { 0x47, 114, 19, 70 },
+ { 0x48, 115, 32, 6 },
+ { 0x49, 114, 32, 57 },
+ { 0x51, 116, 71, 4 },
+ { 0x52, 123, 47, 3 },
+ { 0x53, 123, 57, 5 },
+ { 0x5B, 116, 79, 11 },
+ { 0x5C, 123, 49, 3 },
+ { 0x5D, 120, 18, 12 },
+ { 0x65, 120, 28, 62 },
+ { 0x66, 116, 56, 6 },
+ { 0x67, 119, 16, 81 },
+ { 0x6F, 120, 30, 62 },
+ { 0x70, 116, 55, 15 },
+ { 0x71, 119, 16, 28 },
+ { 0x79, 111, 33, 34 },
+ { 0x7A, 118, 29, 5 },
+ { 0x7B, 127, 45, 24 },
+ { 0x83, 111, 24, 36 },
+ { 0x84, 125, 7, 25 },
+ { 0x85, 115, 8, 30 },
+ { 0x8D, 111, 34, 50 },
+ { 0x8E, 127, 59, 72 },
+ { 0x8F, 127, 61, 21 },
+ { 0x97, 127, 67, 63 },
+ { 0x98, 125, 24, 32 },
+ { 0x99, 111, 35, 31 },
+ { 0xA1, 111, 13, 19 },
+ { 0xA2, 121, 43, 7 },
+ { 0xA3, 118, 47, 5 },
+ { 0xA4, 111, 14, 19 },
+ { 0xAB, 118, 46, 5 },
+ { 0xAC, 121, 42, 7 },
+ { 0xAD, 119, 19, 76 },
+ { 0xAE, 115, 7, 20 },
+ { 0xB5, 110, 16, 25 },
+ { 0xB6, 114, 11, 27 },
+ { 0xB7, 115, 8, 20 },
+ { 0xBF, 110, 17, 25 },
+ { 0xC0, 114, 12, 27 },
+ { 0xC1, 119, 18, 76 },
+ { 0xC9, 119, 5, 2 },
+ { 0xCA, 119, 4, 89 },
+ { 0xCB, 120, 38, 54 },
+ { 0xCC, 120, 5, 76 },
+ { 0xD3, 119, 5, 15 },
+ { 0xD4, 119, 7, 101 },
+ { 0xD5, 120, 31, 23 },
+ { 0xDD, 119, 34, 24 },
+ { 0xDE, 120, 26, 10 },
+ { 0xDF, 119, 4, 15 },
+ { 0xE7, 119, 31, 73 },
+ { 0xE8, 120, 29, 85 },
+ { 0xE9, 119, 6, 2 },
+};
+
+const u8 Str_843E550[] = _("R");
+const u8 Str_843E552[] = _("X");
+const u8 Str_843E554[] = _("Y");
+const u8 Str_843E556[] = _(
+ "♂1\n"
+ "♂2\n"
+ "♂3\n"
+ "♂4\n"
+ "♂5\n"
+ "♀1\n"
+ "♀2\n"
+ "♀3\n"
+ "♀4\n"
+ "♀5");
+const u8 Str_843E574[] = _("ー");
+const u8 Str_843E576[] = _("あ");
+const u8 Str_843E578[] = _("ア");
+const u8 Str_843E57A[] = _("A");
+const u8 Str_843E57C[] = _("a");
+const u8 Str_843E57E[] = _("0");
+const u8 Str_843E580[] = _(
+ "ADD\n"
+ "DEL\n"
+ "EXIT");
+const u8 Str_843E58D[] = _(
+ "Fishing location R119\n"
+ " Y1\n"
+ " Y2\n"
+ " Y3\n"
+ "Encounter location\n"
+ "\n"
+ "\n"
+ "front of you");
+const u8 _843E5D1[] = {0x0F, 0x16, 0x19};
+const u8 Str_843E5D4[] = _(
+ "Aボタン {ESCAPE}\p"
+ "  Bボタン ー\n"
+ "START けってい");
+const u8 Str_843E5F0[] = _("?");
+const u8 Str_843E5F2[] = _("HP どりょくち");
+const u8 Str_843E5FB[] = _("こうげき どりょくち");
+const u8 Str_843E606[] = _("ぼうぎょ どりょくち");
+const u8 Str_843E611[] = _("すばやさ どりょくち");
+const u8 Str_843E61C[] = _("とくこう どりょくち");
+const u8 Str_843E627[] = _("とくぼう どりょくち");
+const u8 Str_843E632[] = _("なつきど");
+const u8 Str_843E637[] = _("どりょくち ごうけい");
+const u8 Str_843E642[] = _("ここから");
+const u8 Str_843E647[] = _("ここまで");
+const u8 Str_843E64C[] = _("かいすう");
+const u8 Str_843E651[] = _("けっか");
+const u8 Str_843E655[] = _("かい");
+const u8 Str_843E658[] = _("0");
+const u8 Str_843E65A[] = _("はんい");
+
+__attribute__((naked))
+void debug_sub_815F1B8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0xe\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xe\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word _843E3DC\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitNakamuraDebugMenu()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_815F1B8\n"
+ " ldr r1, ._3\n"
+ " ldr r0, ._3 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815F214+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F214()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._9\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._5 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ "._5:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._6 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ "._6:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._7 @cond_branch\n"
+ " ldr r4, ._9 + 4\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, #0x4\n"
+ " add r0, r0, r4\n"
+ " ldr r4, [r0]\n"
+ " bl HandleDestroyMenuCursors\n"
+ " bl _call_via_r4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._12\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word gMain\n"
+ " .word _843E3DC\n"
+ "._7:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._11 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._12\n"
+ "._11:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._12:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F284()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._14\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._13 @cond_branch\n"
+ " bl debug_sub_81381B4\n"
+ " mov r0, #0x5\n"
+ " mov r1, #0x0\n"
+ " bl OpenPartyMenu\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._13:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._15:\n"
+ " .align 2, 0\n"
+ "._14:\n"
+ " .word gPaletteFade\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815F2B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl CloseMenu\n"
+ " bl MenuZeroFillScreen\n"
+ " ldr r1, ._16\n"
+ " ldr r0, ._16 + 4\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, ._16 + 8\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gMain\n"
+ " .word sub_805469C+1\n"
+ " .word debug_sub_815F284+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815F2F4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl CloseMenu\n"
+ " mov r7, #0x1\n"
+ "._34:\n"
+ " lsl r1, r7, #0x2\n"
+ " add r0, r1, r7\n"
+ " lsl r2, r0, #0x5\n"
+ " ldr r3, ._24\n"
+ " add r0, r2, r3\n"
+ " ldr r5, ._24 + 4\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r1\n"
+ " add r1, r7, #1\n"
+ " str r1, [sp]\n"
+ " cmp r0, #0\n"
+ " beq ._18 @cond_branch\n"
+ " b ._19\n"
+ "._18:\n"
+ " mov r5, #0x0\n"
+ " ldr r6, ._24 + 8\n"
+ " add r4, r7, #0\n"
+ " sub r4, r4, #0x46\n"
+ " ldr r3, ._24 + 12\n"
+ "._21:\n"
+ " add r1, r5, r2\n"
+ " add r1, r1, r3\n"
+ " add r0, r5, r6\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xff\n"
+ " beq ._20 @cond_branch\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x6\n"
+ " bls ._21 @cond_branch\n"
+ "._20:\n"
+ " cmp r5, #0x7\n"
+ " bne ._22 @cond_branch\n"
+ " add r0, r2, #6\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x1a08\n"
+ " .word gSaveBlock2\n"
+ " .word gSaveBlock1+0x1a0a\n"
+ "._22:\n"
+ " add r0, r5, r2\n"
+ "._23:\n"
+ " add r0, r0, r3\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._35\n"
+ " ldr r2, ._35 + 4\n"
+ " add r2, r2, r1\n"
+ " mov sl, r2\n"
+ " mov r3, r9\n"
+ " add r0, r3, r7\n"
+ " lsl r6, r0, #0x5\n"
+ " add r1, r6, r1\n"
+ " ldr r5, ._35 + 4\n"
+ " add r5, r5, r1\n"
+ " mov r8, r5\n"
+ "._30:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x4b\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0xe\n"
+ " ldr r1, ._35 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " mov r2, r8\n"
+ " strb r0, [r2]\n"
+ " mov r5, #0x0\n"
+ " cmp r5, r7\n"
+ " bcs ._28 @cond_branch\n"
+ " mov r3, sl\n"
+ " ldrb r3, [r3]\n"
+ " cmp r0, r3\n"
+ " beq ._28 @cond_branch\n"
+ " ldr r4, ._35\n"
+ " add r0, r6, r4\n"
+ " ldr r2, ._35 + 4\n"
+ " add r3, r0, r2\n"
+ "._29:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r7\n"
+ " bcs ._28 @cond_branch\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, r2\n"
+ " ldrb r1, [r3]\n"
+ " ldrb r0, [r0]\n"
+ " cmp r1, r0\n"
+ " bne ._29 @cond_branch\n"
+ "._28:\n"
+ " cmp r5, r7\n"
+ " bne ._30 @cond_branch\n"
+ " bl Random\n"
+ " mov r5, r9\n"
+ " add r4, r5, r7\n"
+ " lsl r4, r4, #0x5\n"
+ " ldr r1, ._35\n"
+ " add r3, r4, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x1\n"
+ " ldr r2, ._35 + 12\n"
+ " add r3, r3, r2\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " ldrb r1, [r3]\n"
+ " mov r5, #0x11\n"
+ " neg r5, r5\n"
+ " add r2, r5, #0\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r3]\n"
+ " mov r5, #0x0\n"
+ " ldr r6, ._35 + 16\n"
+ "._31:\n"
+ " bl Random\n"
+ " add r1, r5, r4\n"
+ " add r1, r1, r6\n"
+ " strb r0, [r1]\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x3\n"
+ " bls ._31 @cond_branch\n"
+ " mov r5, #0x0\n"
+ " mov r1, r9\n"
+ " add r0, r1, r7\n"
+ " lsl r4, r0, #0x5\n"
+ " ldr r3, ._35 + 20\n"
+ " mov r2, #0x0\n"
+ " add r6, r3, #0\n"
+ " add r6, r6, #0x10\n"
+ "._32:\n"
+ " add r1, r5, r4\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, r6\n"
+ " strb r2, [r1]\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0xf\n"
+ " bls ._32 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " bl unref_sub_80BCD7C\n"
+ "._19:\n"
+ " ldr r2, [sp]\n"
+ " lsl r0, r2, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x13\n"
+ " bhi ._33 @cond_branch\n"
+ " b ._34\n"
+ "._33:\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._36:\n"
+ " .align 2, 0\n"
+ "._35:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x1a08\n"
+ " .word _843E424\n"
+ " .word 0x1a09\n"
+ " .word gSaveBlock1+0x1a11\n"
+ " .word gSaveBlock1+0x1a1a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F470()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add r6, r0, #0\n"
+ " add r7, r1, #0\n"
+ " mov ip, r2\n"
+ " ldr r2, ._39\n"
+ " ldr r0, ._39 + 4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r2\n"
+ " ldr r1, ._39 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r4, [r0]\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._39 + 12\n"
+ " add r5, r3, #0\n"
+ "._41:\n"
+ " lsl r1, r2, #0x2\n"
+ " add r0, r1, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, r4\n"
+ " bne ._37 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r6]\n"
+ " add r0, r1, #2\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r7]\n"
+ " add r0, r1, #3\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " mov r1, ip\n"
+ " strb r0, [r1]\n"
+ " b ._38\n"
+ "._40:\n"
+ " .align 2, 0\n"
+ "._39:\n"
+ " .word gSaveBlock1\n"
+ " .word _nakamuraData\n"
+ " .word 0x1a08\n"
+ " .word _843E424\n"
+ "._37:\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x4a\n"
+ " bls ._41 @cond_branch\n"
+ "._38:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F4D8()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0xa\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r6, ._43\n"
+ " ldr r7, ._43 + 4\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r2, ._43 + 8\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r2\n"
+ " ldr r1, ._43 + 12\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._42 @cond_branch\n"
+ " mov r4, sp\n"
+ " add r4, r4, #0x1\n"
+ " mov r5, sp\n"
+ " add r5, r5, #0x2\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl debug_sub_815F470\n"
+ " ldrb r1, [r7]\n"
+ " add r0, r6, #0\n"
+ " bl sub_80BC190\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._43 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, sp\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._43 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldrb r1, [r4]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._43 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldrb r1, [r5]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ "._42:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._44:\n"
+ " .align 2, 0\n"
+ "._43:\n"
+ " .word gStringVar1\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1\n"
+ " .word 0x1a08\n"
+ " .word Str_843E550\n"
+ " .word Str_843E552\n"
+ " .word Str_843E554\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F5C4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._48\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " beq ._45 @cond_branch\n"
+ " ldr r1, ._48 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._46 @cond_branch\n"
+ " mov r0, #0x13\n"
+ " b ._50\n"
+ "._49:\n"
+ " .align 2, 0\n"
+ "._48:\n"
+ " .word gMain\n"
+ " .word _nakamuraData\n"
+ "._46:\n"
+ " sub r0, r0, #0x1\n"
+ " b ._50\n"
+ "._45:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._51 @cond_branch\n"
+ " ldr r1, ._54\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x13\n"
+ " bne ._52 @cond_branch\n"
+ " strb r2, [r1]\n"
+ " b ._53\n"
+ "._55:\n"
+ " .align 2, 0\n"
+ "._54:\n"
+ " .word _nakamuraData\n"
+ "._52:\n"
+ " add r0, r0, #0x1\n"
+ "._50:\n"
+ " strb r0, [r1]\n"
+ "._53:\n"
+ " bl debug_sub_815F4D8\n"
+ " mov r0, #0x0\n"
+ " b ._58\n"
+ "._51:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._57 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._58\n"
+ "._57:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._58:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815F62C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._59\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._59 + 4\n"
+ " ldr r0, ._59 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " bl debug_sub_815F4D8\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._60:\n"
+ " .align 2, 0\n"
+ "._59:\n"
+ " .word _nakamuraData\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815F5C4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F668()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " ldr r0, ._61\n"
+ " ldrb r0, [r0]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x5\n"
+ " ldr r0, ._61 + 4\n"
+ " add r1, r1, r0\n"
+ " ldrb r4, [r1, #0x3]\n"
+ " lsl r4, r4, #0x18\n"
+ " ldrb r0, [r1, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " orr r4, r4, r0\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " lsl r0, r0, #0x8\n"
+ " orr r4, r4, r0\n"
+ " ldrb r0, [r1]\n"
+ " orr r4, r4, r0\n"
+ " ldr r5, ._61 + 8\n"
+ " ldr r6, ._61 + 12\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl __umodsi3\n"
+ " add r1, r0, #0\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x7\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._62:\n"
+ " .align 2, 0\n"
+ "._61:\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1+0x1a11\n"
+ " .word gStringVar1\n"
+ " .word 0x186a0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F6E4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x4\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._63\n"
+ " ldr r0, ._63 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x5\n"
+ " ldr r0, ._63 + 8\n"
+ " add r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x7\n"
+ " bl StringCopyN\n"
+ " mov r1, #0xff\n"
+ " strb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._64:\n"
+ " .align 2, 0\n"
+ "._63:\n"
+ " .word gStringVar1\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1+0x1a0a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F72C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0xa\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._66\n"
+ " ldr r5, ._66 + 4\n"
+ " ldrb r1, [r5]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r2, ._66 + 8\n"
+ " ldrb r1, [r5]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r2\n"
+ " ldr r1, ._66 + 12\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._65 @cond_branch\n"
+ " bl debug_sub_815F6E4\n"
+ " bl debug_sub_815F668\n"
+ "._65:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._67:\n"
+ " .align 2, 0\n"
+ "._66:\n"
+ " .word gStringVar1\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1\n"
+ " .word 0x1a08\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F788()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x6\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r0, ._68\n"
+ " ldr r1, ._68 + 4\n"
+ " ldrb r1, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._69:\n"
+ " .align 2, 0\n"
+ "._68:\n"
+ " .word Str_843E574\n"
+ " .word _nakamuraData+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F7B4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._72\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._70 @cond_branch\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " b ._71\n"
+ "._73:\n"
+ " .align 2, 0\n"
+ "._72:\n"
+ " .word _nakamuraData+0x1\n"
+ "._70:\n"
+ " ldr r0, ._74\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r1, ._74 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ "._71:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._75:\n"
+ " .align 2, 0\n"
+ "._74:\n"
+ " .word _nakamuraData+0x3\n"
+ " .word Str_843E576\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F7F0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r1, ._78\n"
+ " ldrb r2, [r1]\n"
+ " lsl r1, r2, #0x2\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x5\n"
+ " ldr r2, ._78 + 4\n"
+ " add r3, r1, r2\n"
+ " ldrb r1, [r3, #0x3]\n"
+ " lsl r2, r1, #0x18\n"
+ " ldrb r1, [r3, #0x2]\n"
+ " lsl r1, r1, #0x10\n"
+ " orr r2, r2, r1\n"
+ " ldrb r1, [r3, #0x1]\n"
+ " lsl r1, r1, #0x8\n"
+ " orr r2, r2, r1\n"
+ " ldrb r1, [r3]\n"
+ " orr r2, r2, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r4, #0x9\n"
+ " ldr r0, ._78 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r4, r0\n"
+ " ble ._76 @cond_branch\n"
+ " add r5, r0, #0\n"
+ "._77:\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x1\n"
+ " lsl r0, r4, #0x18\n"
+ " mov r4, #0xff\n"
+ " lsl r4, r4, #0x18\n"
+ " add r0, r0, r4\n"
+ " lsr r4, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, r5\n"
+ " bgt ._77 @cond_branch\n"
+ "._76:\n"
+ " add r2, r2, r1\n"
+ " lsr r0, r2, #0x18\n"
+ " strb r0, [r3, #0x3]\n"
+ " mov r0, #0xff\n"
+ " lsl r0, r0, #0x10\n"
+ " and r0, r0, r2\n"
+ " lsr r0, r0, #0x10\n"
+ " strb r0, [r3, #0x2]\n"
+ " mov r0, #0xff\n"
+ " lsl r0, r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " lsr r0, r0, #0x8\n"
+ " strb r0, [r3, #0x1]\n"
+ " strb r2, [r3]\n"
+ " bl debug_sub_815F668\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._79:\n"
+ " .align 2, 0\n"
+ "._78:\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1+0x1a11\n"
+ " .word _nakamuraData+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F86C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " ldr r1, ._84\n"
+ " ldrb r2, [r1]\n"
+ " lsl r1, r2, #0x2\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x5\n"
+ " ldr r2, ._84 + 4\n"
+ " add r5, r1, r2\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " lsr r6, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x64\n"
+ " bne ._80 @cond_branch\n"
+ " ldr r0, ._84 + 8\n"
+ " ldrb r1, [r0]\n"
+ " cmp r1, #0x6\n"
+ " bhi ._100 @cond_branch\n"
+ " mov r2, #0xff\n"
+ "._82:\n"
+ " add r0, r5, r1\n"
+ " strb r2, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " cmp r1, #0x6\n"
+ " bls ._82 @cond_branch\n"
+ " b ._100\n"
+ "._85:\n"
+ " .align 2, 0\n"
+ "._84:\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1+0x1a0a\n"
+ " .word _nakamuraData+0x2\n"
+ "._80:\n"
+ " ldr r0, ._87\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x4\n"
+ " bhi ._98 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._87 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word _nakamuraData+0x3\n"
+ " .word ._89\n"
+ "._89:\n"
+ " .word ._90\n"
+ " .word ._91\n"
+ " .word ._92\n"
+ " .word ._93\n"
+ " .word ._94\n"
+ "._90:\n"
+ " mov r3, #0x1\n"
+ " mov r2, #0x50\n"
+ " b ._98\n"
+ "._91:\n"
+ " mov r3, #0x51\n"
+ " mov r2, #0xa0\n"
+ " b ._98\n"
+ "._92:\n"
+ " mov r3, #0xbb\n"
+ " mov r2, #0xd4\n"
+ " b ._98\n"
+ "._93:\n"
+ " mov r3, #0xd5\n"
+ " mov r2, #0xee\n"
+ " b ._98\n"
+ "._94:\n"
+ " mov r3, #0xa1\n"
+ " mov r2, #0xaa\n"
+ "._98:\n"
+ " ldr r4, ._101\n"
+ " ldrb r1, [r4]\n"
+ " add r1, r5, r1\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, r6\n"
+ " strb r0, [r1]\n"
+ " ldrb r0, [r4]\n"
+ " add r1, r5, r0\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, r3\n"
+ " bcs ._99 @cond_branch\n"
+ " strb r2, [r1]\n"
+ "._99:\n"
+ " ldrb r0, [r4]\n"
+ " add r1, r5, r0\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, r2\n"
+ " bls ._100 @cond_branch\n"
+ " strb r3, [r1]\n"
+ "._100:\n"
+ " bl debug_sub_815F6E4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._102:\n"
+ " .align 2, 0\n"
+ "._101:\n"
+ " .word _nakamuraData+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815F930()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r0, ._107\n"
+ " ldrb r2, [r0]\n"
+ " mov r4, #0xa\n"
+ " cmp r2, #0\n"
+ " bne ._103 @cond_branch\n"
+ " mov r4, #0x7\n"
+ "._103:\n"
+ " ldr r5, ._107 + 4\n"
+ " ldrh r1, [r5, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._104 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._105 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_815F7F0\n"
+ " b ._136\n"
+ "._108:\n"
+ " .align 2, 0\n"
+ "._107:\n"
+ " .word _nakamuraData+0x1\n"
+ " .word gMain\n"
+ "._105:\n"
+ " mov r0, #0x1\n"
+ " b ._113\n"
+ "._104:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._110 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._111 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl debug_sub_815F7F0\n"
+ " b ._136\n"
+ "._111:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._113\n"
+ "._110:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0\n"
+ " beq ._114 @cond_branch\n"
+ " ldr r1, ._117\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._115 @cond_branch\n"
+ " sub r0, r4, #1\n"
+ " b ._116\n"
+ "._118:\n"
+ " .align 2, 0\n"
+ "._117:\n"
+ " .word _nakamuraData+0x2\n"
+ "._115:\n"
+ " sub r0, r0, #0x1\n"
+ "._116:\n"
+ " strb r0, [r1]\n"
+ "._125:\n"
+ " bl debug_sub_815F788\n"
+ " b ._136\n"
+ "._114:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._120 @cond_branch\n"
+ " ldr r2, ._123\n"
+ " ldrb r1, [r2]\n"
+ " sub r0, r4, #1\n"
+ " cmp r1, r0\n"
+ " bne ._121 @cond_branch\n"
+ " strb r3, [r2]\n"
+ " b ._125\n"
+ "._124:\n"
+ " .align 2, 0\n"
+ "._123:\n"
+ " .word _nakamuraData+0x2\n"
+ "._121:\n"
+ " add r0, r1, #1\n"
+ " strb r0, [r2]\n"
+ " b ._125\n"
+ "._120:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._126 @cond_branch\n"
+ " cmp r2, #0\n"
+ " bne ._127 @cond_branch\n"
+ " ldr r4, ._129\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x5\n"
+ " bl __modsi3\n"
+ " strb r0, [r4]\n"
+ "._127:\n"
+ " bl debug_sub_815F7B4\n"
+ " b ._136\n"
+ "._130:\n"
+ " .align 2, 0\n"
+ "._129:\n"
+ " .word _nakamuraData+0x3\n"
+ "._126:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._131 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x6\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r1, ._133\n"
+ " ldr r0, ._133 + 4\n"
+ " str r0, [r1]\n"
+ " b ._136\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815FA38+1\n"
+ "._131:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._136 @cond_branch\n"
+ " cmp r2, #0\n"
+ " bne ._136 @cond_branch\n"
+ " mov r0, #0x64\n"
+ "._113:\n"
+ " bl debug_sub_815F86C\n"
+ "._136:\n"
+ " mov r0, #0x0\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FA38()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._139\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._137 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " b ._138\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word gMain\n"
+ "._137:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._141 @cond_branch\n"
+ " mov r0, #0x2\n"
+ "._138:\n"
+ " bl MoveMenuCursor\n"
+ "._161:\n"
+ " mov r0, #0x0\n"
+ " b ._142\n"
+ "._141:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " beq ._143 @cond_branch\n"
+ " ldr r1, ._146\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._144 @cond_branch\n"
+ " mov r0, #0x13\n"
+ " b ._148\n"
+ "._147:\n"
+ " .align 2, 0\n"
+ "._146:\n"
+ " .word _nakamuraData\n"
+ "._144:\n"
+ " sub r0, r0, #0x1\n"
+ " b ._148\n"
+ "._143:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0\n"
+ " beq ._149 @cond_branch\n"
+ " ldr r1, ._152\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x13\n"
+ " bne ._150 @cond_branch\n"
+ " strb r2, [r1]\n"
+ " b ._151\n"
+ "._153:\n"
+ " .align 2, 0\n"
+ "._152:\n"
+ " .word _nakamuraData\n"
+ "._150:\n"
+ " add r0, r0, #0x1\n"
+ "._148:\n"
+ " strb r0, [r1]\n"
+ "._151:\n"
+ " bl debug_sub_815F72C\n"
+ " b ._161\n"
+ "._149:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._155 @cond_branch\n"
+ " ldr r1, ._159\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._161 @cond_branch\n"
+ " ldr r2, ._159 + 4\n"
+ " add r1, r0, #0\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r2\n"
+ " ldr r1, ._159 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._161 @cond_branch\n"
+ " bl GetMenuCursorPos\n"
+ " ldr r1, ._159 + 12\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._159 + 16\n"
+ " strb r4, [r0]\n"
+ " bl debug_sub_815F788\n"
+ " bl debug_sub_815F7B4\n"
+ " ldr r1, ._159 + 20\n"
+ " ldr r0, ._159 + 24\n"
+ " str r0, [r1]\n"
+ " b ._161\n"
+ "._160:\n"
+ " .align 2, 0\n"
+ "._159:\n"
+ " .word _nakamuraData\n"
+ " .word gSaveBlock1\n"
+ " .word 0x1a08\n"
+ " .word _nakamuraData+0x1\n"
+ " .word _nakamuraData+0x2\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815F930+1\n"
+ "._155:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._161 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._142:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815FB1C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r0, ._162\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._162 + 4\n"
+ " strb r1, [r0]\n"
+ " ldr r1, ._162 + 8\n"
+ " ldr r0, ._162 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " bl debug_sub_815F72C\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xb\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._163:\n"
+ " .align 2, 0\n"
+ "._162:\n"
+ " .word _nakamuraData\n"
+ " .word _nakamuraData+0x3\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815FA38+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FB78()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._166\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._164 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._165\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word gMain\n"
+ "._164:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._168 @cond_branch\n"
+ " mov r0, #0x1\n"
+ "._165:\n"
+ " bl MoveMenuCursor\n"
+ " mov r0, #0x0\n"
+ " b ._177\n"
+ "._168:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._170 @cond_branch\n"
+ " bl CloseMenu\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._171 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._172 @cond_branch\n"
+ " b ._175\n"
+ "._171:\n"
+ " bl debug_sub_814A714\n"
+ " b ._175\n"
+ "._172:\n"
+ " bl ClearRoamerData\n"
+ " bl ClearRoamerLocationData\n"
+ " b ._175\n"
+ "._170:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._176 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._177\n"
+ "._176:\n"
+ " bl CloseMenu\n"
+ "._175:\n"
+ " mov r0, #0x1\n"
+ "._177:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815FBE8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r1, ._178\n"
+ " ldr r0, ._178 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " ldr r4, ._178 + 8\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_814A73C\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._178 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xa\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._179:\n"
+ " .align 2, 0\n"
+ "._178:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815FB78+1\n"
+ " .word gStringVar1\n"
+ " .word Str_843E580\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815FC54()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r3, #0x0\n"
+ " ldr r7, ._181\n"
+ " mov r6, #0xe8\n"
+ " lsl r6, r6, #0x3\n"
+ " ldr r5, ._181 + 4\n"
+ " ldr r4, ._181 + 8\n"
+ "._180:\n"
+ " lsl r1, r3, #0x2\n"
+ " add r1, r1, r7\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x85\n"
+ " add r0, r1, r6\n"
+ " strh r2, [r0]\n"
+ " add r1, r1, r4\n"
+ " strh r5, [r1]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0x2a\n"
+ " bls ._180 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3e7\n"
+ " .word 0x742\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815FC94()
+{
+ asm(
+ " push {lr}\n"
+ " bl ClearDecorationInventories\n"
+ " bl debug_sub_814A3A8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FCB4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r7, #0x0\n"
+ " ldr r5, ._188\n"
+ " ldr r0, [r5]\n"
+ " ldr r0, [r0, #0x4]\n"
+ " mov r1, #0x3\n"
+ " bl __divsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r4\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r6, r1, #0x10\n"
+ " add r0, r6, r0\n"
+ " mov r9, r5\n"
+ " cmp r6, r0\n"
+ " bge ._183 @cond_branch\n"
+ " mov r8, r0\n"
+ "._187:\n"
+ " mov r4, #0x0\n"
+ " mov r1, r9\n"
+ " ldr r0, [r1]\n"
+ " ldr r0, [r0]\n"
+ " add r5, r6, #1\n"
+ " cmp r4, r0\n"
+ " bge ._184 @cond_branch\n"
+ " ldr r0, ._188\n"
+ " mov r9, r0\n"
+ "._186:\n"
+ " add r0, r4, #7\n"
+ " add r1, r6, #7\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl sub_805759C\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._185 @cond_branch\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r7, r0, #0x10\n"
+ "._185:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " ldr r0, ._188\n"
+ " ldr r0, [r0]\n"
+ " ldr r0, [r0]\n"
+ " cmp r4, r0\n"
+ " blt ._186 @cond_branch\n"
+ "._184:\n"
+ " lsl r0, r5, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " cmp r6, r8\n"
+ " blt ._187 @cond_branch\n"
+ "._183:\n"
+ " add r0, r7, #0\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._189:\n"
+ " .align 2, 0\n"
+ "._188:\n"
+ " .word gMapHeader\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FD40()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r6, #0x0\n"
+ " mov r4, sp\n"
+ " add r4, r4, #0x2\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " bl GetXYCoordsOneStepInFrontOfPlayer\n"
+ " mov r1, sp\n"
+ " mov r0, sp\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r1]\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r4]\n"
+ " mov r5, #0x0\n"
+ " ldr r1, ._192\n"
+ " ldr r0, [r1]\n"
+ " ldr r0, [r0, #0x4]\n"
+ " add r7, r4, #0\n"
+ " cmp r6, r0\n"
+ " bge ._190 @cond_branch\n"
+ "._199:\n"
+ " mov r4, #0x0\n"
+ " ldr r0, [r1]\n"
+ " b ._191\n"
+ "._193:\n"
+ " .align 2, 0\n"
+ "._192:\n"
+ " .word gMapHeader\n"
+ "._198:\n"
+ " add r0, r4, #7\n"
+ " add r1, r5, #7\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl sub_805759C\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._196 @cond_branch\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, r4\n"
+ " bne ._196 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r7, r1]\n"
+ " cmp r0, r5\n"
+ " bne ._196 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " b ._197\n"
+ "._196:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " ldr r0, ._200\n"
+ " ldr r0, [r0]\n"
+ "._191:\n"
+ " ldr r0, [r0]\n"
+ " cmp r4, r0\n"
+ " blt ._198 @cond_branch\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " ldr r1, ._200\n"
+ " ldr r0, [r1]\n"
+ " ldr r0, [r0, #0x4]\n"
+ " cmp r5, r0\n"
+ " blt ._199 @cond_branch\n"
+ "._190:\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ "._197:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._201:\n"
+ " .align 2, 0\n"
+ "._200:\n"
+ " .word gMapHeader\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FDE4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._205\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._202 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._203 @cond_branch\n"
+ "._202:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._204\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word gMain\n"
+ "._203:\n"
+ " mov r0, #0x0\n"
+ "._204:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_815FE1C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._210\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r6, ._210 + 4\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_815FCB4\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_815FCB4\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_815FCB4\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8092344\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8092344\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_8092344\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._210 + 8\n"
+ " ldr r1, ._210 + 12\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " bl FeebasSeedRng\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_815FCB4\n"
+ " add r4, r0, #0\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_815FCB4\n"
+ " add r5, r0, #0\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_815FCB4\n"
+ " add r4, r4, r5\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r7, r0, #0x10\n"
+ " mov r5, #0x0\n"
+ "._209:\n"
+ " bl FeebasRandom\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " add r1, r7, #0\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " cmp r1, #0\n"
+ " bne ._207 @cond_branch\n"
+ " add r1, r7, #0\n"
+ "._207:\n"
+ " sub r0, r1, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x2\n"
+ " bls ._208 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, #0x2\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl __udivsi3\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x19\n"
+ " mov r0, #0xb0\n"
+ " lsl r0, r0, #0x14\n"
+ " add r2, r2, r0\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl MenuPrint\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ "._208:\n"
+ " cmp r5, #0x6\n"
+ " bne ._209 @cond_branch\n"
+ " ldr r4, ._210 + 4\n"
+ " bl debug_sub_815FD40\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._210 + 16\n"
+ " ldr r0, ._210 + 20\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._211:\n"
+ " .align 2, 0\n"
+ "._210:\n"
+ " .word Str_843E58D\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2dd6\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_815FDE4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_815FFDC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r0, #0xe\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._214\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._214 + 4\n"
+ " mov r8, r0\n"
+ "._216:\n"
+ " mov r0, #0x64\n"
+ " add r1, r5, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._214 + 8\n"
+ " add r6, r1, r0\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " lsl r1, r5, #0x2\n"
+ " mov r2, r8\n"
+ " add r4, r1, r2\n"
+ " strh r0, [r4]\n"
+ " lsl r0, r0, #0x10\n"
+ " add r7, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._212 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " strb r0, [r4, #0x2]\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_816009C\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_81600D0\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_816013C\n"
+ " b ._213\n"
+ "._215:\n"
+ " .align 2, 0\n"
+ "._214:\n"
+ " .word Str_843E5D4\n"
+ " .word _nakamuraStatic\n"
+ " .word gPlayerParty\n"
+ "._212:\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4, #0x2]\n"
+ "._213:\n"
+ " mov r0, r8\n"
+ " add r1, r7, r0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0x3]\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x5\n"
+ " bls ._216 @cond_branch\n"
+ " ldr r1, ._217\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xff\n"
+ " bl unref_sub_80F924C\n"
+ " ldr r1, ._217 + 4\n"
+ " ldr r0, ._217 + 8\n"
+ " str r0, [r1]\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._218:\n"
+ " .align 2, 0\n"
+ "._217:\n"
+ " .word _nakamuraData+0x4\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8160498+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816009C()
+{
+ asm(
+ " push {lr}\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " ldr r1, ._219\n"
+ " lsl r0, r2, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r0, r3]\n"
+ " mov r0, #0xb\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._219 + 4\n"
+ " add r0, r0, r1\n"
+ " lsl r2, r2, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x10\n"
+ " bl MenuPrint\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._220:\n"
+ " .align 2, 0\n"
+ "._219:\n"
+ " .word _nakamuraStatic\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81600D0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r5, r4, #0\n"
+ " ldr r1, ._223\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._223 + 4\n"
+ " add r0, r0, r1\n"
+ " bl GetMonGender\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._221 @cond_branch\n"
+ " ldr r0, ._223 + 8\n"
+ " b ._222\n"
+ "._224:\n"
+ " .align 2, 0\n"
+ "._223:\n"
+ " .word Str_843E5F0\n"
+ " .word gPlayerParty\n"
+ " .word gOtherText_MaleSymbol2\n"
+ "._221:\n"
+ " cmp r0, #0xfe\n"
+ " bne ._225 @cond_branch\n"
+ " ldr r0, ._227\n"
+ "._222:\n"
+ " lsl r2, r4, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x17\n"
+ " bl MenuPrint\n"
+ " b ._226\n"
+ "._228:\n"
+ " .align 2, 0\n"
+ "._227:\n"
+ " .word gOtherText_FemaleSymbolAndLv\n"
+ "._225:\n"
+ " lsl r2, r5, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, sp\n"
+ " mov r1, #0x17\n"
+ " bl MenuPrint\n"
+ "._226:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816013C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r5, ._229\n"
+ " ldr r1, ._229 + 4\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2\n"
+ " ldrsb r1, [r0, r1]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r4, r4, #0x1\n"
+ " add r4, r4, #0x1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1a\n"
+ " add r2, r4, #0\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._230:\n"
+ " .align 2, 0\n"
+ "._229:\n"
+ " .word gStringVar1\n"
+ " .word _nakamuraStatic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816017C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r3, r4, #0x1\n"
+ " add r1, r3, #1\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r3, r3, #0x2\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x10\n"
+ " mov r2, #0x1c\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r1, ._232\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._231 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816009C\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_81600D0\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816013C\n"
+ "._231:\n"
+ " mov r0, #0x5\n"
+ " bl debug_sub_81603B8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._233:\n"
+ " .align 2, 0\n"
+ "._232:\n"
+ " .word _nakamuraStatic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81601C8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r1, ._239\n"
+ " lsl r0, r5, #0x2\n"
+ " add r2, r0, r1\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r2, r4]\n"
+ " cmp r0, #0\n"
+ " bne ._236 @cond_branch\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " cmp r0, #0\n"
+ " bne ._236 @cond_branch\n"
+ " cmp r3, #0x1\n"
+ " bne ._236 @cond_branch\n"
+ " mov r0, #0x8a\n"
+ " lsl r0, r0, #0x1\n"
+ " strh r0, [r2]\n"
+ "._236:\n"
+ " lsl r0, r5, #0x2\n"
+ " add r4, r0, r1\n"
+ " lsl r0, r3, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " ldrh r1, [r4]\n"
+ " add r2, r0, r1\n"
+ " mov r3, #0x0\n"
+ " strh r2, [r4]\n"
+ " lsl r1, r2, #0x10\n"
+ " mov r0, #0xcd\n"
+ " lsl r0, r0, #0x11\n"
+ " cmp r1, r0\n"
+ " ble ._237 @cond_branch\n"
+ " ldr r1, ._239 + 4\n"
+ " add r0, r2, r1\n"
+ " strh r0, [r4]\n"
+ "._237:\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " bge ._238 @cond_branch\n"
+ " ldr r2, ._239 + 8\n"
+ " add r0, r1, r2\n"
+ " strh r0, [r4]\n"
+ "._238:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r5\n"
+ " ldr r1, ._239 + 12\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r4]\n"
+ " ldrb r2, [r4, #0x2]\n"
+ " str r3, [sp]\n"
+ " str r3, [sp, #0x4]\n"
+ " str r3, [sp, #0x8]\n"
+ " str r3, [sp, #0xc]\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4, #0x3]\n"
+ " add sp, sp, #0x10\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._240:\n"
+ " .align 2, 0\n"
+ "._239:\n"
+ " .word _nakamuraStatic\n"
+ " .word 0xfffffe65\n"
+ " .word 0x19b\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160258()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " ldr r1, ._242\n"
+ " lsl r0, r2, #0x2\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._241 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " bl debug_sub_816062C\n"
+ "._241:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._243:\n"
+ " .align 2, 0\n"
+ "._242:\n"
+ " .word _nakamuraStatic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816027C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r2, r1, #0x18\n"
+ " ldr r1, ._247\n"
+ " lsl r0, r4, #0x2\n"
+ " add r3, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r3, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._244 @cond_branch\n"
+ " lsl r0, r2, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " ldrb r1, [r3, #0x2]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r3, #0x2]\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x64\n"
+ " ble ._245 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r3, #0x2]\n"
+ "._245:\n"
+ " mov r0, #0x2\n"
+ " ldrsb r0, [r3, r0]\n"
+ " cmp r0, #0\n"
+ " bgt ._246 @cond_branch\n"
+ " mov r0, #0x64\n"
+ " strb r0, [r3, #0x2]\n"
+ "._246:\n"
+ " mov r0, #0x64\n"
+ " mul r4, r4, r0\n"
+ " ldr r0, ._247 + 4\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._247 + 8\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r3, r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r1, [r0, #0x13]\n"
+ " mov r0, #0xca\n"
+ " lsl r0, r0, #0x1\n"
+ " add r2, r1, #0\n"
+ " mul r2, r2, r0\n"
+ " mov r0, #0x2\n"
+ " ldrsb r0, [r3, r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._247 + 12\n"
+ " add r0, r0, r1\n"
+ " add r2, r2, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x19\n"
+ " bl SetMonData\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_803F55C\n"
+ "._244:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._248:\n"
+ " .align 2, 0\n"
+ "._247:\n"
+ " .word _nakamuraStatic\n"
+ " .word gPlayerParty\n"
+ " .word gBaseStats\n"
+ " .word gExperienceTables\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160308()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xffffff8c\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " mov r2, #0x0\n"
+ "._252:\n"
+ " add r1, r2, #1\n"
+ " lsl r0, r1, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " mov r8, r1\n"
+ " cmp r5, #0x5\n"
+ " bhi ._249 @cond_branch\n"
+ " mov r0, #0x64\n"
+ " mov r9, r0\n"
+ " mov r0, r9\n"
+ " mul r0, r0, r2\n"
+ " ldr r7, ._254\n"
+ " add r6, r0, r7\n"
+ "._251:\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " bne ._250 @cond_branch\n"
+ " add r0, sp, #0x10\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x64\n"
+ " bl memcpy\n"
+ " mov r4, r9\n"
+ " mul r4, r4, r5\n"
+ " add r4, r4, r7\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x64\n"
+ " bl memcpy\n"
+ " add r0, r4, #0\n"
+ " add r1, sp, #0x10\n"
+ " mov r2, #0x64\n"
+ " bl memcpy\n"
+ "._250:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x5\n"
+ " bls ._251 @cond_branch\n"
+ "._249:\n"
+ " mov r1, r8\n"
+ " lsl r0, r1, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x4\n"
+ " bls ._252 @cond_branch\n"
+ " bl CalculatePlayerPartyCount\n"
+ " ldr r4, ._254 + 4\n"
+ " ldrb r1, [r4]\n"
+ " cmp r1, #0\n"
+ " bne ._253 @cond_branch\n"
+ " ldr r0, ._254\n"
+ " str r1, [sp]\n"
+ " str r1, [sp, #0x4]\n"
+ " str r1, [sp, #0x8]\n"
+ " str r1, [sp, #0xc]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4]\n"
+ "._253:\n"
+ " add sp, sp, #0x74\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._255:\n"
+ " .align 2, 0\n"
+ "._254:\n"
+ " .word gPlayerParty\n"
+ " .word gPlayerPartyCount\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81603B8()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r7, ._259\n"
+ " ldrb r4, [r7]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._259 + 4\n"
+ " add r0, r5, r0\n"
+ " ldrb r2, [r0]\n"
+ " lsl r3, r4, #0x1\n"
+ " add r1, r3, #1\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r3, r3, #0x2\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " add r0, r2, #0\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " cmp r6, #0\n"
+ " bne ._256 @cond_branch\n"
+ " cmp r4, #0\n"
+ " beq ._257 @cond_branch\n"
+ " ldrb r0, [r7]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._258\n"
+ "._260:\n"
+ " .align 2, 0\n"
+ "._259:\n"
+ " .word _nakamuraData+0x4\n"
+ " .word _843E5D1\n"
+ "._257:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, #0x5\n"
+ "._258:\n"
+ " strb r0, [r7]\n"
+ "._256:\n"
+ " ldr r1, ._264\n"
+ " cmp r6, #0x1\n"
+ " bne ._261 @cond_branch\n"
+ " cmp r4, #0x5\n"
+ " beq ._262 @cond_branch\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " b ._263\n"
+ "._265:\n"
+ " .align 2, 0\n"
+ "._264:\n"
+ " .word _nakamuraData+0x4\n"
+ "._262:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x1\n"
+ "._263:\n"
+ " strb r0, [r1]\n"
+ "._261:\n"
+ " cmp r6, #0x2\n"
+ " bne ._266 @cond_branch\n"
+ " cmp r5, #0\n"
+ " beq ._267 @cond_branch\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x6\n"
+ " b ._268\n"
+ "._267:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc\n"
+ "._268:\n"
+ " strb r0, [r1]\n"
+ "._266:\n"
+ " cmp r6, #0x3\n"
+ " bne ._271 @cond_branch\n"
+ " cmp r5, #0x2\n"
+ " beq ._270 @cond_branch\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x6\n"
+ " strb r0, [r1]\n"
+ " b ._271\n"
+ "._270:\n"
+ " strb r4, [r1]\n"
+ "._271:\n"
+ " ldrb r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " ldr r0, ._272\n"
+ " add r0, r5, r0\n"
+ " ldrb r0, [r0]\n"
+ " lsr r1, r1, #0x17\n"
+ " add r1, r1, #0x1\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, #0xff\n"
+ " bl unref_sub_80F924C\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._273:\n"
+ " .align 2, 0\n"
+ "._272:\n"
+ " .word _843E5D1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160498()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r1, ._276\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._274 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._281\n"
+ "._277:\n"
+ " .align 2, 0\n"
+ "._276:\n"
+ " .word gMain\n"
+ "._274:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._278 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._281\n"
+ "._278:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._280 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " b ._281\n"
+ "._280:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._282 @cond_branch\n"
+ " mov r0, #0x3\n"
+ "._281:\n"
+ " bl debug_sub_81603B8\n"
+ " mov r0, #0x0\n"
+ " b ._311\n"
+ "._282:\n"
+ " ldrh r1, [r1, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._284 @cond_branch\n"
+ " ldr r4, ._289\n"
+ " ldrb r0, [r4]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._285 @cond_branch\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_81601C8\n"
+ "._285:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0x6\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._286 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8160258\n"
+ "._286:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0xc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._306 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " b ._300\n"
+ "._290:\n"
+ " .align 2, 0\n"
+ "._289:\n"
+ " .word _nakamuraData+0x4\n"
+ "._284:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._291 @cond_branch\n"
+ " ldr r4, ._294\n"
+ " ldrb r0, [r4]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._304 @cond_branch\n"
+ " mov r1, #0x1\n"
+ " neg r1, r1\n"
+ " b ._293\n"
+ "._295:\n"
+ " .align 2, 0\n"
+ "._294:\n"
+ " .word _nakamuraData+0x4\n"
+ "._291:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._296 @cond_branch\n"
+ " ldr r4, ._301\n"
+ " ldrb r0, [r4]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._297 @cond_branch\n"
+ " mov r1, #0xa\n"
+ " bl debug_sub_81601C8\n"
+ "._297:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0x6\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._298 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8160258\n"
+ "._298:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0xc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._306 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " b ._300\n"
+ "._302:\n"
+ " .align 2, 0\n"
+ "._301:\n"
+ " .word _nakamuraData+0x4\n"
+ "._296:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._303 @cond_branch\n"
+ " ldr r4, ._308\n"
+ " ldrb r0, [r4]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._304 @cond_branch\n"
+ " mov r1, #0xa\n"
+ " neg r1, r1\n"
+ "._293:\n"
+ " bl debug_sub_81601C8\n"
+ "._304:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0x6\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._305 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8160258\n"
+ "._305:\n"
+ " ldrb r0, [r4]\n"
+ " sub r0, r0, #0xc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bhi ._306 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " neg r1, r1\n"
+ "._300:\n"
+ " bl debug_sub_816027C\n"
+ "._306:\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x6\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_816017C\n"
+ " mov r0, #0x0\n"
+ " b ._311\n"
+ "._309:\n"
+ " .align 2, 0\n"
+ "._308:\n"
+ " .word _nakamuraData+0x4\n"
+ "._303:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._310 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._311\n"
+ "._310:\n"
+ " bl debug_sub_8160308\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._311:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816062C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " mov r0, #0x64\n"
+ " mov r4, r8\n"
+ " mul r4, r4, r0\n"
+ " ldr r0, ._316\n"
+ " add r4, r4, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r7, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl GetMonGender\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " ldr r1, ._316 + 4\n"
+ " lsl r0, r7, #0x3\n"
+ " sub r0, r0, r7\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r6, [r0, #0x10]\n"
+ " cmp r6, #0\n"
+ " beq ._313 @cond_branch\n"
+ " cmp r6, #0xfe\n"
+ " beq ._313 @cond_branch\n"
+ " cmp r6, #0xff\n"
+ " bne ._314 @cond_branch\n"
+ "._313:\n"
+ " mov r0, #0x64\n"
+ " mov r1, r8\n"
+ " mul r1, r1, r0\n"
+ " add r0, r1, #0\n"
+ " ldr r1, ._316\n"
+ " add r0, r0, r1\n"
+ " bl GetMonGender\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._320\n"
+ "._317:\n"
+ " .align 2, 0\n"
+ "._316:\n"
+ " .word gPlayerParty\n"
+ " .word gBaseStats\n"
+ "._314:\n"
+ " cmp r2, #0\n"
+ " beq ._318 @cond_branch\n"
+ " cmp r2, #0xfe\n"
+ " beq ._319 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._320\n"
+ "._318:\n"
+ " mov r6, #0xfe\n"
+ " b ._321\n"
+ "._319:\n"
+ " mov r6, #0x0\n"
+ "._321:\n"
+ " mov r0, r8\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r9, r0\n"
+ "._322:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " orr r5, r5, r0\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl GetGenderFromSpeciesAndPersonality\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, r6\n"
+ " bne ._322 @cond_branch\n"
+ " mov r0, #0x64\n"
+ " mov r4, r8\n"
+ " mul r4, r4, r0\n"
+ " ldr r0, ._323\n"
+ " add r4, r4, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x42\n"
+ " bl GetMonData\n"
+ " ldr r0, ._323 + 4\n"
+ " add r0, r0, r9\n"
+ " ldrh r1, [r0]\n"
+ " ldrb r2, [r0, #0x2]\n"
+ " mov r0, #0x1\n"
+ " str r0, [sp]\n"
+ " str r5, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp, #0x8]\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r4, #0\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " add r0, r6, #0\n"
+ "._320:\n"
+ " add sp, sp, #0x10\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._324:\n"
+ " .align 2, 0\n"
+ "._323:\n"
+ " .word gPlayerParty\n"
+ " .word _nakamuraStatic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160714()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " add r6, r0, #0\n"
+ " mov r9, r1\n"
+ " mov r7, #0x0\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ " mov r2, #0x0\n"
+ " mov r5, #0x0\n"
+ "._329:\n"
+ " add r4, r5, #1\n"
+ " lsl r1, r4, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r0, r9\n"
+ " str r2, [sp, #0xc]\n"
+ " bl sub_810CA9C\n"
+ " add r1, r0, #0\n"
+ " lsl r0, r5, #0x1\n"
+ " add r0, r0, sp\n"
+ " strh r1, [r0]\n"
+ " ldr r2, [sp, #0xc]\n"
+ " cmp r5, #0x5\n"
+ " beq ._328 @cond_branch\n"
+ " lsl r0, r1, #0x10\n"
+ " asr r1, r0, #0x10\n"
+ " cmp r1, #0\n"
+ " ble ._326 @cond_branch\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._326:\n"
+ " cmp r1, #0\n"
+ " bge ._327 @cond_branch\n"
+ " mov r0, r8\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ "._327:\n"
+ " cmp r1, #0\n"
+ " bne ._328 @cond_branch\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ "._328:\n"
+ " lsl r0, r4, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x5\n"
+ " bls ._329 @cond_branch\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x31\n"
+ " bgt ._333 @cond_branch\n"
+ " mov r0, sp\n"
+ " ldrh r0, [r0, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0x31\n"
+ " bgt ._333 @cond_branch\n"
+ " mov r0, sp\n"
+ " mov r4, #0x4\n"
+ " ldsh r0, [r0, r4]\n"
+ " cmp r0, #0x31\n"
+ " bgt ._333 @cond_branch\n"
+ " mov r0, sp\n"
+ " mov r1, #0x6\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x31\n"
+ " bgt ._333 @cond_branch\n"
+ " mov r0, sp\n"
+ " mov r4, #0x8\n"
+ " ldsh r0, [r0, r4]\n"
+ " cmp r0, #0x31\n"
+ " ble ._334 @cond_branch\n"
+ "._333:\n"
+ " ldr r1, ._336\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xe\n"
+ " b ._400\n"
+ "._337:\n"
+ " .align 2, 0\n"
+ "._336:\n"
+ " .word ContestStatsText_GoldPokeBlock\n"
+ "._334:\n"
+ " cmp r7, #0x4\n"
+ " bne ._338 @cond_branch\n"
+ " ldr r1, ._340\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xd\n"
+ " b ._400\n"
+ "._341:\n"
+ " .align 2, 0\n"
+ "._340:\n"
+ " .word ContestStatsText_WhitePokeBlock\n"
+ "._338:\n"
+ " mov r3, #0x0\n"
+ " mov r5, #0x0\n"
+ "._343:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x2\n"
+ " bne ._342 @cond_branch\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ "._342:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x4\n"
+ " bls ._343 @cond_branch\n"
+ " cmp r3, #0x3\n"
+ " beq ._345 @cond_branch\n"
+ " cmp r2, #0x5\n"
+ " beq ._345 @cond_branch\n"
+ " mov r4, r8\n"
+ " cmp r4, #0x4\n"
+ " bne ._346 @cond_branch\n"
+ "._345:\n"
+ " ldr r1, ._348\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xc\n"
+ " b ._400\n"
+ "._349:\n"
+ " .align 2, 0\n"
+ "._348:\n"
+ " .word ContestStatsText_BlackPokeBlock\n"
+ "._346:\n"
+ " cmp r7, #0x3\n"
+ " bne ._350 @cond_branch\n"
+ " ldr r1, ._352\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xb\n"
+ " b ._400\n"
+ "._353:\n"
+ " .align 2, 0\n"
+ "._352:\n"
+ " .word ContestStatsText_GrayPokeBlock\n"
+ "._350:\n"
+ " cmp r7, #0x2\n"
+ " beq ._354 @cond_branch\n"
+ " mov r0, r8\n"
+ " cmp r0, #0x2\n"
+ " bne ._377 @cond_branch\n"
+ "._354:\n"
+ " mov r3, #0x6\n"
+ " mov r2, #0x0\n"
+ " mov r5, #0x0\n"
+ "._359:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._358 @cond_branch\n"
+ " cmp r3, #0x6\n"
+ " bne ._357 @cond_branch\n"
+ " add r3, r5, #0\n"
+ " b ._358\n"
+ "._357:\n"
+ " add r2, r5, #0\n"
+ "._358:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x4\n"
+ " bls ._359 @cond_branch\n"
+ " lsl r0, r3, #0x1\n"
+ " mov r4, sp\n"
+ " add r1, r4, r0\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, sp\n"
+ " mov r4, #0x0\n"
+ " ldsh r1, [r1, r4]\n"
+ " mov r4, #0x0\n"
+ " ldsh r0, [r0, r4]\n"
+ " cmp r1, r0\n"
+ " blt ._360 @cond_branch\n"
+ " add r2, r3, #0\n"
+ "._360:\n"
+ " cmp r2, #0\n"
+ " bne ._361 @cond_branch\n"
+ " ldr r1, ._363\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x6\n"
+ " b ._400\n"
+ "._364:\n"
+ " .align 2, 0\n"
+ "._363:\n"
+ " .word ContestStatsText_PurplePokeBlock\n"
+ "._361:\n"
+ " cmp r2, #0x1\n"
+ " bne ._365 @cond_branch\n"
+ " ldr r1, ._367\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x7\n"
+ " b ._400\n"
+ "._368:\n"
+ " .align 2, 0\n"
+ "._367:\n"
+ " .word ContestStatsText_IndigoPokeBlock\n"
+ "._365:\n"
+ " cmp r2, #0x2\n"
+ " bne ._369 @cond_branch\n"
+ " ldr r1, ._371\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x8\n"
+ " b ._400\n"
+ "._372:\n"
+ " .align 2, 0\n"
+ "._371:\n"
+ " .word ContestStatsText_BrownPokeBlock\n"
+ "._369:\n"
+ " cmp r2, #0x3\n"
+ " bne ._373 @cond_branch\n"
+ " ldr r1, ._375\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x9\n"
+ " b ._400\n"
+ "._376:\n"
+ " .align 2, 0\n"
+ "._375:\n"
+ " .word ContestStatsText_LiteBluePokeBlock\n"
+ "._373:\n"
+ " cmp r2, #0x4\n"
+ " bne ._377 @cond_branch\n"
+ " ldr r1, ._379\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xa\n"
+ " b ._400\n"
+ "._380:\n"
+ " .align 2, 0\n"
+ "._379:\n"
+ " .word ContestStatsText_OlivePokeBlock\n"
+ "._377:\n"
+ " cmp r7, #0x1\n"
+ " beq ._381 @cond_branch\n"
+ " mov r0, r8\n"
+ " cmp r0, #0x1\n"
+ " bne ._399 @cond_branch\n"
+ "._381:\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._383 @cond_branch\n"
+ " ldr r1, ._385\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x1\n"
+ " b ._400\n"
+ "._386:\n"
+ " .align 2, 0\n"
+ "._385:\n"
+ " .word ContestStatsText_RedPokeBlock\n"
+ "._383:\n"
+ " mov r0, sp\n"
+ " ldrh r0, [r0, #0x2]\n"
+ " cmp r0, #0\n"
+ " beq ._387 @cond_branch\n"
+ " ldr r1, ._389\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x2\n"
+ " b ._400\n"
+ "._390:\n"
+ " .align 2, 0\n"
+ "._389:\n"
+ " .word ContestStatsText_BluePokeBlock\n"
+ "._387:\n"
+ " mov r0, sp\n"
+ " mov r4, #0x4\n"
+ " ldsh r0, [r0, r4]\n"
+ " cmp r0, #0\n"
+ " beq ._391 @cond_branch\n"
+ " ldr r1, ._393\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x3\n"
+ " b ._400\n"
+ "._394:\n"
+ " .align 2, 0\n"
+ "._393:\n"
+ " .word ContestStatsText_PinkPokeBlock\n"
+ "._391:\n"
+ " mov r0, sp\n"
+ " mov r1, #0x6\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._395 @cond_branch\n"
+ " ldr r1, ._397\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x4\n"
+ " b ._400\n"
+ "._398:\n"
+ " .align 2, 0\n"
+ "._397:\n"
+ " .word ContestStatsText_GreenPokeBlock\n"
+ "._395:\n"
+ " mov r0, sp\n"
+ " mov r4, #0x8\n"
+ " ldsh r0, [r0, r4]\n"
+ " cmp r0, #0\n"
+ " beq ._399 @cond_branch\n"
+ " ldr r1, ._401\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " b ._400\n"
+ "._402:\n"
+ " .align 2, 0\n"
+ "._401:\n"
+ " .word ContestStatsText_YellowPokeBlock\n"
+ "._399:\n"
+ " ldr r1, ._403\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x0\n"
+ "._400:\n"
+ " add sp, sp, #0x10\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._404:\n"
+ " .align 2, 0\n"
+ "._403:\n"
+ " .word gOtherText_FiveQuestions\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_816097C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add r7, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r5, r1, #0x10\n"
+ " mov r6, #0x0\n"
+ " mov r1, #0x0\n"
+ "._405:\n"
+ " add r0, r7, r6\n"
+ " strb r1, [r0]\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x3\n"
+ " bls ._405 @cond_branch\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r7, #0x4]\n"
+ " lsl r0, r5, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._406 @cond_branch\n"
+ " mov r0, #0xa1\n"
+ " strb r0, [r7, #0x3]\n"
+ " b ._414\n"
+ "._406:\n"
+ " cmp r0, #0\n"
+ " ble ._408 @cond_branch\n"
+ " mov r4, #0x64\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ " mov r6, #0x0\n"
+ "._412:\n"
+ " lsl r5, r5, #0x10\n"
+ " asr r0, r5, #0x10\n"
+ " lsl r4, r4, #0x10\n"
+ " asr r1, r4, #0x10\n"
+ " bl __divsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " mov r1, r8\n"
+ " cmp r1, #0\n"
+ " bne ._410 @cond_branch\n"
+ " cmp r6, #0x2\n"
+ " beq ._410 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._411 @cond_branch\n"
+ "._410:\n"
+ " add r1, r6, r7\n"
+ " add r0, r2, #0\n"
+ " sub r0, r0, #0x5f\n"
+ " strb r0, [r1, #0x1]\n"
+ " mov r0, #0x1\n"
+ " mov r8, r0\n"
+ "._411:\n"
+ " asr r0, r5, #0x10\n"
+ " asr r4, r4, #0x10\n"
+ " add r1, r4, #0\n"
+ " bl __modsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xa\n"
+ " bl __divsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bls ._412 @cond_branch\n"
+ " b ._414\n"
+ "._408:\n"
+ " cmp r0, #0\n"
+ " bge ._414 @cond_branch\n"
+ " neg r0, r0\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " mov r4, #0x64\n"
+ " mov r1, #0x0\n"
+ " mov r8, r1\n"
+ " mov r6, #0x0\n"
+ "._419:\n"
+ " lsl r5, r5, #0x10\n"
+ " asr r0, r5, #0x10\n"
+ " lsl r4, r4, #0x10\n"
+ " asr r1, r4, #0x10\n"
+ " bl __divsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " mov r1, r8\n"
+ " lsl r0, r1, #0x10\n"
+ " add r3, r0, #0\n"
+ " cmp r3, #0\n"
+ " bne ._416 @cond_branch\n"
+ " cmp r6, #0x2\n"
+ " beq ._416 @cond_branch\n"
+ " cmp r2, #0\n"
+ " beq ._417 @cond_branch\n"
+ "._416:\n"
+ " add r1, r6, r7\n"
+ " add r0, r2, #0\n"
+ " sub r0, r0, #0x5f\n"
+ " strb r0, [r1, #0x1]\n"
+ " cmp r3, #0\n"
+ " bne ._418 @cond_branch\n"
+ " mov r0, #0xae\n"
+ " strb r0, [r1]\n"
+ "._418:\n"
+ " mov r0, #0x1\n"
+ " mov r8, r0\n"
+ "._417:\n"
+ " asr r0, r5, #0x10\n"
+ " asr r4, r4, #0x10\n"
+ " add r1, r4, #0\n"
+ " bl __modsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xa\n"
+ " bl __divsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bls ._419 @cond_branch\n"
+ "._414:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160A80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r2, r0, #0\n"
+ " ldr r1, ._422\n"
+ " cmp r0, #0\n"
+ " bne ._420 @cond_branch\n"
+ " ldr r4, ._422 + 4\n"
+ " ldrb r1, [r1, #0x1]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " b ._440\n"
+ "._423:\n"
+ " .align 2, 0\n"
+ "._422:\n"
+ " .word _nakamuraStatic+0x18\n"
+ " .word gStringVar1\n"
+ "._420:\n"
+ " cmp r0, #0x1\n"
+ " bne ._424 @cond_branch\n"
+ " ldr r4, ._426\n"
+ " ldrb r1, [r1, #0x2]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " b ._440\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gStringVar1\n"
+ "._424:\n"
+ " cmp r0, #0x2\n"
+ " bne ._428 @cond_branch\n"
+ " ldr r4, ._430\n"
+ " ldrb r1, [r1, #0x3]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " b ._440\n"
+ "._431:\n"
+ " .align 2, 0\n"
+ "._430:\n"
+ " .word gStringVar1\n"
+ "._428:\n"
+ " cmp r0, #0x3\n"
+ " bne ._432 @cond_branch\n"
+ " ldr r4, ._434\n"
+ " ldrb r1, [r1, #0x4]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " b ._440\n"
+ "._435:\n"
+ " .align 2, 0\n"
+ "._434:\n"
+ " .word gStringVar1\n"
+ "._432:\n"
+ " cmp r0, #0x4\n"
+ " bne ._436 @cond_branch\n"
+ " ldr r4, ._438\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " b ._440\n"
+ "._439:\n"
+ " .align 2, 0\n"
+ "._438:\n"
+ " .word gStringVar1\n"
+ "._436:\n"
+ " cmp r2, #0x5\n"
+ " bne ._440 @cond_branch\n"
+ " ldr r4, ._441\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_816097C\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ "._440:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._442:\n"
+ " .align 2, 0\n"
+ "._441:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160B50()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r3, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r4, r1, #0\n"
+ " ldr r2, ._445\n"
+ " cmp r0, #0\n"
+ " bne ._443 @cond_branch\n"
+ " ldrb r0, [r2, #0x1]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r2, #0x1]\n"
+ " b ._455\n"
+ "._446:\n"
+ " .align 2, 0\n"
+ "._445:\n"
+ " .word _nakamuraStatic+0x18\n"
+ "._443:\n"
+ " cmp r0, #0x1\n"
+ " bne ._447 @cond_branch\n"
+ " ldrb r0, [r2, #0x2]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r2, #0x2]\n"
+ " b ._455\n"
+ "._447:\n"
+ " cmp r0, #0x2\n"
+ " bne ._449 @cond_branch\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r2, #0x3]\n"
+ " b ._455\n"
+ "._449:\n"
+ " cmp r0, #0x3\n"
+ " bne ._451 @cond_branch\n"
+ " ldrb r0, [r2, #0x4]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r2, #0x4]\n"
+ " b ._455\n"
+ "._451:\n"
+ " cmp r0, #0x4\n"
+ " bne ._453 @cond_branch\n"
+ " ldrb r0, [r2, #0x5]\n"
+ " add r0, r0, r1\n"
+ " strb r0, [r2, #0x5]\n"
+ " b ._455\n"
+ "._453:\n"
+ " cmp r3, #0x5\n"
+ " bne ._455 @cond_branch\n"
+ " ldrb r0, [r2, #0x6]\n"
+ " add r0, r0, r4\n"
+ " strb r0, [r2, #0x6]\n"
+ "._455:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160BB0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r5, ._456\n"
+ " ldr r4, ._456 + 4\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_8160714\n"
+ " strb r0, [r4]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._457:\n"
+ " .align 2, 0\n"
+ "._456:\n"
+ " .word gStringVar1\n"
+ " .word _nakamuraStatic+0x18\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160BE4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " bl debug_sub_8160BB0\n"
+ " ldr r0, ._459\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._459 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._459 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._459 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._459 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._459 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " mov r4, #0x0\n"
+ "._458:\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_8160A80\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x5\n"
+ " bls ._458 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xb\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._460:\n"
+ " .align 2, 0\n"
+ "._459:\n"
+ " .word gContestStatsText_Spicy\n"
+ " .word gContestStatsText_Dry\n"
+ " .word gContestStatsText_Sweet\n"
+ " .word gContestStatsText_Bitter\n"
+ " .word gContestStatsText_Sour\n"
+ " .word gContestStatsText_Tasty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160C7C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r2, ._469\n"
+ " mov r1, #0x0\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0xc\n"
+ " bne ._467 @cond_branch\n"
+ " ldrb r0, [r2, #0x1]\n"
+ " cmp r0, #0x2\n"
+ " bne ._462 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._462:\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " cmp r0, #0x2\n"
+ " bne ._463 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ "._463:\n"
+ " ldrb r0, [r2, #0x4]\n"
+ " cmp r0, #0x2\n"
+ " bne ._464 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ "._464:\n"
+ " ldrb r0, [r2, #0x2]\n"
+ " cmp r0, #0x2\n"
+ " bne ._465 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ "._465:\n"
+ " ldrb r0, [r2, #0x5]\n"
+ " cmp r0, #0x2\n"
+ " bne ._466 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ "._466:\n"
+ " cmp r1, #0x3\n"
+ " beq ._467 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r2, #0x1]\n"
+ " strb r0, [r2, #0x3]\n"
+ " strb r0, [r2, #0x4]\n"
+ "._467:\n"
+ " add r0, r2, #0\n"
+ " bl sub_810CA34\n"
+ " bl debug_sub_8160BB0\n"
+ " mov r4, #0x0\n"
+ "._468:\n"
+ " add r0, r4, #0\n"
+ " bl debug_sub_8160A80\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x5\n"
+ " bls ._468 @cond_branch\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._470:\n"
+ " .align 2, 0\n"
+ "._469:\n"
+ " .word _nakamuraStatic+0x18\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160CF4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._473\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._471 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._472\n"
+ "._474:\n"
+ " .align 2, 0\n"
+ "._473:\n"
+ " .word gMain\n"
+ "._471:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._475 @cond_branch\n"
+ " mov r0, #0x1\n"
+ "._472:\n"
+ " bl MoveMenuCursor\n"
+ " mov r0, #0x0\n"
+ " b ._484\n"
+ "._475:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._477 @cond_branch\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " neg r1, r1\n"
+ " b ._478\n"
+ "._477:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._479 @cond_branch\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ "._478:\n"
+ " bl debug_sub_8160B50\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl debug_sub_8160A80\n"
+ " bl debug_sub_8160BB0\n"
+ " mov r0, #0x0\n"
+ " b ._484\n"
+ "._479:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._481 @cond_branch\n"
+ " bl debug_sub_8160C7C\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x0\n"
+ " b ._484\n"
+ "._481:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._483 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._484\n"
+ "._483:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._484:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 debug_sub_8160D98()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl debug_sub_8160BE4\n"
+ " ldr r1, ._485\n"
+ " ldr r0, ._485 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._486:\n"
+ " .align 2, 0\n"
+ "._485:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8160CF4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160DC0()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._487\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 24\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 28\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._487 + 32\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._488:\n"
+ " .align 2, 0\n"
+ "._487:\n"
+ " .word gOtherText_Slash\n"
+ " .word Str_843E5F2\n"
+ " .word Str_843E5FB\n"
+ " .word Str_843E606\n"
+ " .word Str_843E611\n"
+ " .word Str_843E61C\n"
+ " .word Str_843E627\n"
+ " .word Str_843E637\n"
+ " .word Str_843E632\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8160E50()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r5, ._489\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r5, #0\n"
+ " bl GetMonData\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x15\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " mov r1, #0xb\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._489 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1a\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0x4\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1b\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0x6\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1c\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x7\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0x8\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1d\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0xa\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1e\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0xc\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1f\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0xe\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0x10\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x20\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x11\n"
+ " mov r3, #0x12\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word gStringVar1\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8161028()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._491 @cond_branch\n"
+ " ldr r0, ._496\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._492 @cond_branch\n"
+ " mov r5, #0x5\n"
+ "._494:\n"
+ " lsl r0, r5, #0x10\n"
+ " asr r4, r0, #0x10\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._496 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " bne ._493 @cond_branch\n"
+ " sub r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bge ._494 @cond_branch\n"
+ "._492:\n"
+ " ldr r1, ._496\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, r6\n"
+ " strb r0, [r1]\n"
+ " b ._506\n"
+ "._497:\n"
+ " .align 2, 0\n"
+ "._496:\n"
+ " .word _nakamuraData+0x5\n"
+ " .word gPlayerParty\n"
+ "._491:\n"
+ " cmp r1, #0x1\n"
+ " bne ._506 @cond_branch\n"
+ " ldr r4, ._501\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, r6\n"
+ " strb r0, [r4]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x6\n"
+ " bne ._499 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._500\n"
+ "._502:\n"
+ " .align 2, 0\n"
+ "._501:\n"
+ " .word _nakamuraData+0x5\n"
+ "._493:\n"
+ " ldr r0, ._504\n"
+ " strb r5, [r0]\n"
+ " b ._506\n"
+ "._505:\n"
+ " .align 2, 0\n"
+ "._504:\n"
+ " .word _nakamuraData+0x5\n"
+ "._499:\n"
+ " ldrb r1, [r4]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._507\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " bne ._506 @cond_branch\n"
+ "._500:\n"
+ " strb r0, [r4]\n"
+ "._506:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._508:\n"
+ " .align 2, 0\n"
+ "._507:\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81610BC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._511\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._509 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._510\n"
+ "._512:\n"
+ " .align 2, 0\n"
+ "._511:\n"
+ " .word gMain\n"
+ "._509:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._513 @cond_branch\n"
+ " mov r0, #0x1\n"
+ "._510:\n"
+ " bl debug_sub_8161028\n"
+ " ldr r0, ._515\n"
+ " ldrb r1, [r0]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._515 + 4\n"
+ " add r0, r0, r1\n"
+ " bl debug_sub_8160E50\n"
+ " mov r0, #0x0\n"
+ " b ._518\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word _nakamuraData+0x5\n"
+ " .word gPlayerParty\n"
+ "._513:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._517 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._518\n"
+ "._517:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._518:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_EffortValues()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " ldr r1, ._519\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_8160DC0\n"
+ " ldr r0, ._519 + 4\n"
+ " bl debug_sub_8160E50\n"
+ " ldr r1, ._519 + 8\n"
+ " ldr r0, ._519 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._520:\n"
+ " .align 2, 0\n"
+ "._519:\n"
+ " .word _nakamuraData+0x5\n"
+ " .word gPlayerParty\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_81610BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8161160()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r7, #0x0\n"
+ " ldr r2, ._523\n"
+ " ldr r1, ._523 + 4\n"
+ " ldrh r0, [r2]\n"
+ " ldrh r3, [r1]\n"
+ " cmp r0, r3\n"
+ " bhi ._521 @cond_branch\n"
+ " add r6, r0, #0\n"
+ " ldrh r5, [r1]\n"
+ " b ._522\n"
+ "._524:\n"
+ " .align 2, 0\n"
+ "._523:\n"
+ " .word _nakamuraData+0x6\n"
+ " .word _nakamuraData+0x8\n"
+ "._521:\n"
+ " ldrh r6, [r1]\n"
+ " ldrh r5, [r2]\n"
+ "._522:\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._529\n"
+ " ldrh r0, [r0]\n"
+ " cmp r4, r0\n"
+ " bcs ._525 @cond_branch\n"
+ " ldr r0, ._529 + 4\n"
+ " mov r8, r0\n"
+ "._528:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r2, r8\n"
+ " ldrh r1, [r2]\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, r6\n"
+ " bcc ._527 @cond_branch\n"
+ " cmp r0, r5\n"
+ " bhi ._527 @cond_branch\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r7, r0, #0x10\n"
+ "._527:\n"
+ " add r4, r4, #0x1\n"
+ " ldr r0, ._529\n"
+ " ldrh r0, [r0]\n"
+ " cmp r4, r0\n"
+ " bcc ._528 @cond_branch\n"
+ "._525:\n"
+ " add r0, r7, #0\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._530:\n"
+ " .align 2, 0\n"
+ "._529:\n"
+ " .word _nakamuraData+0xa\n"
+ " .word _nakamuraData+0xc\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81611D8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xf\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._531\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._531 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._531 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._531 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._531 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._531 + 20\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r4, ._531 + 24\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xe\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._532:\n"
+ " .align 2, 0\n"
+ "._531:\n"
+ " .word Str_843E642\n"
+ " .word Str_843E647\n"
+ " .word Str_843E65A\n"
+ " .word Str_843E64C\n"
+ " .word Str_843E651\n"
+ " .word Str_843E655\n"
+ " .word Str_843E658\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8161290()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r4, ._533\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._534:\n"
+ " .align 2, 0\n"
+ "._533:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81612B8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " ldrh r2, [r0]\n"
+ " add r1, r1, r2\n"
+ " strh r1, [r0]\n"
+ " ldr r5, ._535\n"
+ " ldrh r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x8\n"
+ " add r2, r4, #0\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._536:\n"
+ " .align 2, 0\n"
+ "._535:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_81612EC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r2, ._540\n"
+ " ldrh r1, [r2, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " mov r5, #0x1\n"
+ " cmp r0, #0\n"
+ " beq ._537 @cond_branch\n"
+ " mov r5, #0x64\n"
+ "._537:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._538 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._539\n"
+ "._541:\n"
+ " .align 2, 0\n"
+ "._540:\n"
+ " .word gMain\n"
+ "._538:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._542 @cond_branch\n"
+ " mov r0, #0x1\n"
+ "._539:\n"
+ " bl MoveMenuCursor\n"
+ "._565:\n"
+ " mov r0, #0x0\n"
+ " b ._543\n"
+ "._542:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._544 @cond_branch\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._545 @cond_branch\n"
+ " ldr r0, ._550\n"
+ " neg r1, r5\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_81612B8\n"
+ "._545:\n"
+ " cmp r4, #0x1\n"
+ " bne ._546 @cond_branch\n"
+ " ldr r0, ._550 + 4\n"
+ " neg r1, r5\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_81612B8\n"
+ "._546:\n"
+ " cmp r4, #0x2\n"
+ " bne ._547 @cond_branch\n"
+ " ldr r0, ._550 + 8\n"
+ " neg r1, r5\n"
+ " mov r2, #0x5\n"
+ " bl debug_sub_81612B8\n"
+ "._547:\n"
+ " cmp r4, #0x3\n"
+ " bne ._565 @cond_branch\n"
+ " ldr r0, ._550 + 12\n"
+ " neg r1, r5\n"
+ " mov r2, #0x7\n"
+ " bl debug_sub_81612B8\n"
+ " b ._565\n"
+ "._551:\n"
+ " .align 2, 0\n"
+ "._550:\n"
+ " .word _nakamuraData+0x6\n"
+ " .word _nakamuraData+0x8\n"
+ " .word _nakamuraData+0xc\n"
+ " .word _nakamuraData+0xa\n"
+ "._544:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._552 @cond_branch\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._553 @cond_branch\n"
+ " ldr r0, ._558\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_81612B8\n"
+ "._553:\n"
+ " cmp r4, #0x1\n"
+ " bne ._554 @cond_branch\n"
+ " ldr r0, ._558 + 4\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_81612B8\n"
+ "._554:\n"
+ " cmp r4, #0x2\n"
+ " bne ._555 @cond_branch\n"
+ " ldr r0, ._558 + 8\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x5\n"
+ " bl debug_sub_81612B8\n"
+ "._555:\n"
+ " cmp r4, #0x3\n"
+ " bne ._565 @cond_branch\n"
+ " ldr r0, ._558 + 12\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x7\n"
+ " bl debug_sub_81612B8\n"
+ " b ._565\n"
+ "._559:\n"
+ " .align 2, 0\n"
+ "._558:\n"
+ " .word _nakamuraData+0x6\n"
+ " .word _nakamuraData+0x8\n"
+ " .word _nakamuraData+0xc\n"
+ " .word _nakamuraData+0xa\n"
+ "._552:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._560 @cond_branch\n"
+ " ldr r0, ._563\n"
+ " ldrh r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._565 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " bl debug_sub_8161160\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl debug_sub_8161290\n"
+ " b ._565\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word _nakamuraData+0xc\n"
+ "._560:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._565 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._543:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_RandomNumberTest()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._566\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._566 + 4\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._566 + 8\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._566 + 12\n"
+ " strh r1, [r0]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuZeroFillWindowRect\n"
+ " bl debug_sub_81611D8\n"
+ " ldr r1, ._566 + 16\n"
+ " ldr r0, ._566 + 20\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._567:\n"
+ " .align 2, 0\n"
+ "._566:\n"
+ " .word _nakamuraData+0x6\n"
+ " .word _nakamuraData+0x8\n"
+ " .word _nakamuraData+0xc\n"
+ " .word _nakamuraData+0xa\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_81612EC+1\n"
+ "\n"
+ );
+}
+
+#endif // DEBUG
diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c
new file mode 100644
index 000000000..b7e62481b
--- /dev/null
+++ b/src/debug/nohara_debug_menu.c
@@ -0,0 +1,2316 @@
+#ifdef DEBUG
+#include "global.h"
+
+#define BSS_DATA __attribute__((section(".bss")))
+
+BSS_DATA u8 gDebug_03000724[4] = { 0 };
+
+__attribute__((naked))
+void InitNoharaDebugMenu()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x12\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._1 + 4\n"
+ " ldr r0, ._1 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word gUnknown_Debug_083C4938\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808F414+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F414()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._3 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " beq ._4 @cond_branch\n"
+ " ldr r2, ._6\n"
+ " ldr r0, ._6 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ "._3:\n"
+ " mov r0, #0x0\n"
+ " b ._5\n"
+ "._7:\n"
+ " .align 2, 0\n"
+ "._6:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C4938\n"
+ "._4:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._5:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_TV()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r1, ._8\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._8 + 4\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._8 + 8\n"
+ " ldr r0, ._8 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._9:\n"
+ " .align 2, 0\n"
+ "._8:\n"
+ " .word gDebug_03000724+0x2\n"
+ " .word gUnknown_Debug_083C4B8C\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808F4AC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F4AC()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._10 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " beq ._11 @cond_branch\n"
+ " ldr r2, ._13\n"
+ " ldr r0, ._13 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ "._10:\n"
+ " mov r0, #0x0\n"
+ " b ._12\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C4B8C\n"
+ "._11:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._12:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F4EC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_808F6BC\n"
+ " ldr r0, ._15\n"
+ " bl sub_8071F40\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x1\n"
+ " bl DisplayYesNoMenu\n"
+ " ldr r1, ._15 + 4\n"
+ " ldr r0, ._15 + 8\n"
+ " str r0, [r1]\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word gUnknown_Debug_083C4980\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808F648+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F518()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._20\n"
+ " ldr r3, ._20 + 4\n"
+ "._19:\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " add r1, r0, r4\n"
+ " add r0, r1, r3\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x15\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x13\n"
+ " bhi ._18 @cond_branch\n"
+ " ldr r0, ._20 + 8\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._18 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._18:\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x17\n"
+ " bls ._19 @cond_branch\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._21:\n"
+ " .align 2, 0\n"
+ "._20:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2738\n"
+ " .word 0x2739\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F560()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r4, ._23\n"
+ " ldr r3, ._23 + 4\n"
+ " mov r2, #0x0\n"
+ "._22:\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, r3\n"
+ " strb r2, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " cmp r1, #0x17\n"
+ " bls ._22 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._24:\n"
+ " .align 2, 0\n"
+ "._23:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2739\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F594()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r2, #0x0\n"
+ " ldr r6, ._27\n"
+ " ldr r5, ._27 + 4\n"
+ " ldr r4, ._27 + 8\n"
+ " mov r3, #0x1\n"
+ "._26:\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " add r1, r0, r6\n"
+ " add r0, r1, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " add r0, r1, r4\n"
+ " strb r3, [r0]\n"
+ "._25:\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x17\n"
+ " bls ._26 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2738\n"
+ " .word 0x2739\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F5D8()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r4, #0x0\n"
+ " ldr r6, ._30\n"
+ " ldr r7, ._30 + 4\n"
+ " add r0, r7, #1\n"
+ " mov r8, r0\n"
+ "._29:\n"
+ " ldr r5, ._30 + 8\n"
+ " strh r4, [r5]\n"
+ " bl sub_810F424\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r0, r4, #0x1\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r1, r0, r7\n"
+ " ldrb r1, [r1]\n"
+ " add r0, r0, r8\n"
+ " ldrb r2, [r0]\n"
+ " add r0, r6, #0\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0xb\n"
+ " bls ._29 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r1, ._30 + 12\n"
+ " ldr r0, ._30 + 16\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._31:\n"
+ " .align 2, 0\n"
+ "._30:\n"
+ " .word gStringVar1\n"
+ " .word gUnknown_Debug_083C4BD4\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090278+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F648()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._35\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._32 @cond_branch\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuZeroFillWindowRect\n"
+ " ldr r0, ._35 + 4\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " cmp r1, #0\n"
+ " beq ._33 @cond_branch\n"
+ " bl debug_sub_808F7B4\n"
+ " b ._40\n"
+ "._36:\n"
+ " .align 2, 0\n"
+ "._35:\n"
+ " .word gMain\n"
+ " .word gDebug_03000724+0x2\n"
+ "._33:\n"
+ " bl debug_sub_808F6BC\n"
+ " b ._40\n"
+ "._32:\n"
+ " bl ProcessMenuInputNoWrap_\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._43 @cond_branch\n"
+ " cmp r1, r0\n"
+ " bgt ._39 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " beq ._40 @cond_branch\n"
+ " b ._43\n"
+ "._39:\n"
+ " cmp r1, #0\n"
+ " beq ._42 @cond_branch\n"
+ " b ._43\n"
+ "._40:\n"
+ " mov r0, #0x0\n"
+ " b ._44\n"
+ "._42:\n"
+ " bl debug_sub_808F518\n"
+ "._43:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._44:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F6BC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._48\n"
+ " ldr r6, ._48 + 4\n"
+ "._45:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r1, ._48 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xa0\n"
+ " lsl r0, r0, #0x14\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x4\n"
+ " bls ._45 @cond_branch\n"
+ " mov r4, #0x5\n"
+ " ldr r5, ._48\n"
+ " ldr r6, ._48 + 4\n"
+ "._50:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r1, ._48 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " cmp r4, #0xe\n"
+ " bhi ._46 @cond_branch\n"
+ " lsl r1, r4, #0x19\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " b ._47\n"
+ "._49:\n"
+ " .align 2, 0\n"
+ "._48:\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2738\n"
+ "._46:\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xec\n"
+ " lsl r0, r0, #0x18\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x6\n"
+ " bl MenuPrint\n"
+ "._47:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x17\n"
+ " bls ._50 @cond_branch\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._53\n"
+ "._55:\n"
+ " ldr r0, ._53 + 4\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._53 + 8\n"
+ " add r1, r1, r0\n"
+ " ldrb r1, [r1]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " cmp r4, #0x7\n"
+ " bhi ._51 @cond_branch\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xa0\n"
+ " lsl r0, r0, #0x14\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " b ._52\n"
+ "._54:\n"
+ " .align 2, 0\n"
+ "._53:\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2abc\n"
+ "._51:\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xfa\n"
+ " lsl r0, r0, #0x18\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0xc\n"
+ " bl MenuPrint\n"
+ "._52:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0xf\n"
+ " bls ._55 @cond_branch\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F7B4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._59\n"
+ " ldr r6, ._59 + 4\n"
+ "._56:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r1, ._59 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xa0\n"
+ " lsl r0, r0, #0x14\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x4\n"
+ " bls ._56 @cond_branch\n"
+ " mov r4, #0x5\n"
+ " ldr r5, ._59\n"
+ " ldr r6, ._59 + 4\n"
+ "._61:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r1, ._59 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " cmp r4, #0xe\n"
+ " bhi ._57 @cond_branch\n"
+ " lsl r1, r4, #0x19\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " b ._58\n"
+ "._60:\n"
+ " .align 2, 0\n"
+ "._59:\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2739\n"
+ "._57:\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xec\n"
+ " lsl r0, r0, #0x18\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x6\n"
+ " bl MenuPrint\n"
+ "._58:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x17\n"
+ " bls ._61 @cond_branch\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._64\n"
+ "._66:\n"
+ " ldr r0, ._64 + 4\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._64 + 8\n"
+ " add r1, r1, r0\n"
+ " ldrb r1, [r1]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " cmp r4, #0x7\n"
+ " bhi ._62 @cond_branch\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xa0\n"
+ " lsl r0, r0, #0x14\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " b ._63\n"
+ "._65:\n"
+ " .align 2, 0\n"
+ "._64:\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2abd\n"
+ "._62:\n"
+ " lsl r1, r4, #0x19\n"
+ " mov r0, #0xfa\n"
+ " lsl r0, r0, #0x18\n"
+ " add r1, r1, r0\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0xc\n"
+ " bl MenuPrint\n"
+ "._63:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0xf\n"
+ " bls ._66 @cond_branch\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F8AC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._67\n"
+ " bl FlagSet\n"
+ " ldr r0, ._67 + 4\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._68:\n"
+ " .align 2, 0\n"
+ "._67:\n"
+ " .word 0x832\n"
+ " .word 0x818\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F8CC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r1, ._69\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._69 + 4\n"
+ " bl sub_8071F40\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x1a\n"
+ " mov r3, #0x8\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r0, ._69 + 8\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._69 + 12\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x17\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._69 + 16\n"
+ " ldr r0, ._69 + 20\n"
+ " str r0, [r1]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._70:\n"
+ " .align 2, 0\n"
+ "._69:\n"
+ " .word gDebug_03000724\n"
+ " .word gUnknown_Debug_083C49CA\n"
+ " .word gUnknown_Debug_083C4ABD+0xf\n"
+ " .word gStringVar1\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808F93C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F93C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r2, #0x0\n"
+ " ldr r0, ._83\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._71 @cond_branch\n"
+ " ldr r1, ._83 + 4\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x18\n"
+ " bne ._72 @cond_branch\n"
+ " strb r2, [r1]\n"
+ "._72:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._71:\n"
+ " ldr r0, ._83\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._73 @cond_branch\n"
+ " ldr r1, ._83 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._74 @cond_branch\n"
+ " mov r0, #0x18\n"
+ " strb r0, [r1]\n"
+ "._74:\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._73:\n"
+ " ldr r0, ._83\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._75 @cond_branch\n"
+ " ldr r1, ._83 + 8\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xc\n"
+ " bne ._76 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ "._76:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._75:\n"
+ " ldr r0, ._83\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._77 @cond_branch\n"
+ " ldr r1, ._83 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._78 @cond_branch\n"
+ " mov r0, #0xc\n"
+ " strb r0, [r1]\n"
+ "._78:\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._77:\n"
+ " cmp r2, #0\n"
+ " beq ._79 @cond_branch\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x1a\n"
+ " mov r3, #0x8\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r1, ._83 + 12\n"
+ " ldr r0, ._83 + 8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._83 + 16\n"
+ " ldr r0, ._83 + 4\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x17\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ "._79:\n"
+ " ldr r4, ._83\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._80 @cond_branch\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ " ldr r0, ._83 + 4\n"
+ " ldrb r0, [r0]\n"
+ " ldr r2, ._83 + 20\n"
+ " ldr r1, ._83 + 8\n"
+ " ldrb r1, [r1]\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1]\n"
+ " bl debug_sub_808FA88\n"
+ "._80:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._81 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._82\n"
+ "._84:\n"
+ " .align 2, 0\n"
+ "._83:\n"
+ " .word gMain\n"
+ " .word gDebug_03000724+0x1\n"
+ " .word gDebug_03000724\n"
+ " .word gUnknown_Debug_083C4ABD+0xf\n"
+ " .word gStringVar1\n"
+ " .word gUnknown_Debug_083C4ABD\n"
+ "._81:\n"
+ " ldr r0, ._85\n"
+ " bl sub_80BF588\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._82:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._86:\n"
+ " .align 2, 0\n"
+ "._85:\n"
+ " .word gSaveBlock1+0x2738\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808FA88()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xffffffcc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r7, r1, #0x18\n"
+ " bl GetLeadMonIndex\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " ldr r3, ._92\n"
+ " lsl r4, r6, #0x3\n"
+ " add r2, r4, r6\n"
+ " lsl r2, r2, #0x2\n"
+ " add r0, r2, r3\n"
+ " ldr r5, ._92 + 4\n"
+ " add r1, r0, r5\n"
+ " strb r7, [r1]\n"
+ " ldr r1, ._92 + 8\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strb r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " ldr r0, ._92 + 12\n"
+ " add r5, r3, r0\n"
+ " mov r3, #0x1\n"
+ "._87:\n"
+ " add r0, r1, r2\n"
+ " add r0, r0, r5\n"
+ " strb r3, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " cmp r1, #0x21\n"
+ " bls ._87 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " bl sub_80BFB54\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r1, r0, #0\n"
+ " cmp r0, #0x3\n"
+ " beq ._88 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " bgt ._89 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._90 @cond_branch\n"
+ " b ._95\n"
+ "._93:\n"
+ " .align 2, 0\n"
+ "._92:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2738\n"
+ " .word 0x2739\n"
+ " .word 0x273a\n"
+ "._89:\n"
+ " cmp r1, #0x4\n"
+ " bne ._95 @cond_branch\n"
+ "._90:\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._96\n"
+ " add r0, r0, r1\n"
+ " bl sub_80BE160\n"
+ " b ._95\n"
+ "._97:\n"
+ " .align 2, 0\n"
+ "._96:\n"
+ " .word gSaveBlock1+0x2738\n"
+ "._88:\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._100\n"
+ " add r0, r0, r1\n"
+ " bl sub_80BE138\n"
+ "._95:\n"
+ " sub r0, r7, #1\n"
+ " cmp r0, #0x28\n"
+ " bls ._98 @cond_branch\n"
+ " b ._173\n"
+ "._98:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._100 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._101:\n"
+ " .align 2, 0\n"
+ "._100:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word ._102\n"
+ "._102:\n"
+ " .word ._104\n"
+ " .word ._104\n"
+ " .word ._105\n"
+ " .word ._173\n"
+ " .word ._107\n"
+ " .word ._108\n"
+ " .word ._109\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._123\n"
+ " .word ._124\n"
+ " .word ._125\n"
+ " .word ._126\n"
+ " .word ._127\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._173\n"
+ " .word ._143\n"
+ "._104:\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._145\n"
+ " add r4, r0, r1\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r4, #0x2]\n"
+ " add r1, r1, #0x10\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._145 + 4\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r4, #0x18]\n"
+ " b ._173\n"
+ "._146:\n"
+ " .align 2, 0\n"
+ "._145:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gSaveBlock2\n"
+ "._105:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r6, ._148\n"
+ " add r1, r4, r6\n"
+ " mov r8, r1\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x2]\n"
+ " add r0, r6, #5\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._148 + 4\n"
+ " bl StringCopy\n"
+ " mov r0, #0x64\n"
+ " mov r5, r9\n"
+ " mul r5, r5, r0\n"
+ " ldr r0, ._148 + 8\n"
+ " add r5, r5, r0\n"
+ " add r6, r6, #0x10\n"
+ " add r4, r4, r6\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl GetMonData\n"
+ " mov r0, #0x5\n"
+ " mov r1, r8\n"
+ " strb r0, [r1, #0xd]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetMonData\n"
+ " mov r5, r8\n"
+ " strb r0, [r5, #0xe]\n"
+ " b ._173\n"
+ "._149:\n"
+ " .align 2, 0\n"
+ "._148:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gSaveBlock2\n"
+ " .word gPlayerParty\n"
+ "._107:\n"
+ " mov r0, #0x64\n"
+ " mov r1, r9\n"
+ " mul r1, r1, r0\n"
+ " mov r8, r1\n"
+ " ldr r0, ._151\n"
+ " add r8, r8, r0\n"
+ " mov r0, r8\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r5, ._151 + 4\n"
+ " add r6, r4, r5\n"
+ " strh r0, [r6, #0x2]\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r6, #0x1c]\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0xf\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._151 + 8\n"
+ " bl StringCopy\n"
+ " add r5, r5, #0x4\n"
+ " add r4, r4, r5\n"
+ " mov r0, r8\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl GetMonData\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r6, #0x1e]\n"
+ " mov r0, r8\n"
+ " mov r1, #0x3\n"
+ " bl GetMonData\n"
+ " strb r0, [r6, #0x1f]\n"
+ " b ._173\n"
+ "._152:\n"
+ " .align 2, 0\n"
+ "._151:\n"
+ " .word gPlayerParty\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gSaveBlock2\n"
+ "._108:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r6, ._154\n"
+ " add r5, r4, r6\n"
+ " mov r8, r5\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r5, #0x2]\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x16\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._154 + 4\n"
+ " bl StringCopy\n"
+ " mov r0, #0x64\n"
+ " mov r5, r9\n"
+ " mul r5, r5, r0\n"
+ " ldr r0, ._154 + 8\n"
+ " add r5, r5, r0\n"
+ " add r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl GetMonData\n"
+ " mov r0, #0x5\n"
+ " mov r1, r8\n"
+ " strb r0, [r1, #0x1e]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetMonData\n"
+ " mov r5, r8\n"
+ " strb r0, [r5, #0x1f]\n"
+ " b ._173\n"
+ "._155:\n"
+ " .align 2, 0\n"
+ "._154:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gSaveBlock2\n"
+ " .word gPlayerParty\n"
+ "._109:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r5, ._157\n"
+ " add r6, r4, r5\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r6, #0xa]\n"
+ " strh r0, [r6, #0x14]\n"
+ " add r0, r5, #2\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._157 + 4\n"
+ " mov r8, r1\n"
+ " bl StringCopy\n"
+ " add r5, r5, #0xc\n"
+ " add r4, r4, r5\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r6, #0x1d]\n"
+ " b ._173\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gSaveBlock2\n"
+ "._143:\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._160\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xc]\n"
+ " strh r1, [r0, #0x16]\n"
+ " b ._173\n"
+ "._161:\n"
+ " .align 2, 0\n"
+ "._160:\n"
+ " .word gSaveBlock1+0x2738\n"
+ "._123:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r0, ._163\n"
+ " add r4, r4, r0\n"
+ " ldr r1, ._163 + 4\n"
+ " mov r0, sp\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x8\n"
+ " ldr r1, ._163 + 8\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0xb\n"
+ " bl memcpy\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4, #0x12]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x13\n"
+ " mov r1, sp\n"
+ " bl StringCopy\n"
+ " add r0, r4, #4\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0xc\n"
+ " strb r0, [r4, #0xf]\n"
+ " mov r0, #0x28\n"
+ " strh r0, [r4, #0x10]\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r4, #0x2]\n"
+ " strb r0, [r4, #0x3]\n"
+ " b ._173\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gUnknown_Debug_083C4C64\n"
+ " .word gUnknown_Debug_083C4C6C\n"
+ "._124:\n"
+ " add r0, r4, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._168\n"
+ " add r5, r0, r1\n"
+ " add r4, sp, #0x14\n"
+ " ldr r1, ._168 + 4\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " add r1, r4, #0\n"
+ " mov r3, #0xfe\n"
+ " mov r2, #0x2\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x10\n"
+ "._165:\n"
+ " strh r3, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._165 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r5, #0x2]\n"
+ " mov r0, #0x28\n"
+ " strb r0, [r5, #0x12]\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x13\n"
+ " add r3, r5, #6\n"
+ " mov r6, #0x1e\n"
+ " add r2, r5, #0\n"
+ " add r2, r2, #0xa\n"
+ "._166:\n"
+ " strh r6, [r2]\n"
+ " sub r2, r2, #0x2\n"
+ " cmp r2, r3\n"
+ " bge ._166 @cond_branch\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r5, #0x3]\n"
+ " b ._173\n"
+ "._169:\n"
+ " .align 2, 0\n"
+ "._168:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gUnknown_Debug_083C4C64\n"
+ "._125:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r0, ._171\n"
+ " add r4, r4, r0\n"
+ " add r5, sp, #0x1c\n"
+ " ldr r1, ._171 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " mov r0, #0x28\n"
+ " strh r0, [r4, #0xc]\n"
+ " strh r0, [r4, #0xe]\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r4, #0x12]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4, #0x10]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4, #0x11]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x13\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r4, #0x2]\n"
+ " b ._173\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gUnknown_Debug_083C4C64\n"
+ "._126:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r0, ._174\n"
+ " add r4, r4, r0\n"
+ " add r5, sp, #0x24\n"
+ " ldr r1, ._174 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4, #0x2]\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r4, #0x3]\n"
+ " mov r0, #0x28\n"
+ " strh r0, [r4, #0x4]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x13\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r4, #0x6]\n"
+ " b ._173\n"
+ "._175:\n"
+ " .align 2, 0\n"
+ "._174:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gUnknown_Debug_083C4C64\n"
+ "._127:\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r0, ._176\n"
+ " add r4, r4, r0\n"
+ " add r5, sp, #0x2c\n"
+ " ldr r1, ._176 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " ldr r0, ._176 + 8\n"
+ " strh r0, [r4, #0x2]\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " strh r0, [r4, #0x6]\n"
+ " mov r0, #0x28\n"
+ " strh r0, [r4, #0x4]\n"
+ " strh r0, [r4, #0x8]\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r4, #0xa]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x13\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r4, #0xb]\n"
+ "._173:\n"
+ " add sp, sp, #0x34\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._177:\n"
+ " .align 2, 0\n"
+ "._176:\n"
+ " .word gSaveBlock1+0x2738\n"
+ " .word gUnknown_Debug_083C4C64\n"
+ " .word 0xffff\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808FEBC()
+{
+ asm(
+ " push {lr}\n"
+ " bl ClearTVShowData\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808FECC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r1, ._178\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._178 + 4\n"
+ " bl sub_8071F40\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x17\n"
+ " mov r3, #0x8\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r0, ._178 + 8\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._178 + 12\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x17\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._178 + 16\n"
+ " ldr r0, ._178 + 20\n"
+ " str r0, [r1]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._179:\n"
+ " .align 2, 0\n"
+ "._178:\n"
+ " .word gDebug_03000724\n"
+ " .word gUnknown_Debug_083C49CA\n"
+ " .word gUnknown_Debug_083C4B20+0x4\n"
+ " .word gStringVar1\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808FF3C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808FF3C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " mov r2, #0x0\n"
+ " ldr r0, ._192\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._180 @cond_branch\n"
+ " ldr r1, ._192 + 4\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x10\n"
+ " bne ._181 @cond_branch\n"
+ " strb r2, [r1]\n"
+ "._181:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._180:\n"
+ " ldr r0, ._192\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._182 @cond_branch\n"
+ " ldr r1, ._192 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._183 @cond_branch\n"
+ " mov r0, #0x10\n"
+ " strb r0, [r1]\n"
+ "._183:\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._182:\n"
+ " ldr r0, ._192\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._184 @cond_branch\n"
+ " ldr r1, ._192 + 8\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x3\n"
+ " bne ._185 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ "._185:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._184:\n"
+ " ldr r0, ._192\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._186 @cond_branch\n"
+ " ldr r1, ._192 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._187 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ "._187:\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r2, #0x1\n"
+ "._186:\n"
+ " cmp r2, #0\n"
+ " beq ._188 @cond_branch\n"
+ " mov r0, #0xd\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x17\n"
+ " mov r3, #0x8\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r1, ._192 + 12\n"
+ " ldr r0, ._192 + 8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " ldr r4, ._192 + 16\n"
+ " ldr r0, ._192 + 4\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x17\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ "._188:\n"
+ " ldr r4, ._192\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._189 @cond_branch\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ " ldr r0, ._192 + 4\n"
+ " ldrb r0, [r0]\n"
+ " ldr r2, ._192 + 20\n"
+ " ldr r1, ._192 + 8\n"
+ " ldrb r1, [r1]\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1]\n"
+ " bl debug_sub_8090080\n"
+ "._189:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._190 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._191\n"
+ "._193:\n"
+ " .align 2, 0\n"
+ "._192:\n"
+ " .word gMain\n"
+ " .word gDebug_03000724+0x1\n"
+ " .word gDebug_03000724\n"
+ " .word gUnknown_Debug_083C4B20+0x4\n"
+ " .word gStringVar1\n"
+ " .word gUnknown_Debug_083C4B20\n"
+ "._190:\n"
+ " bl sub_80BEC40\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._191:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090080()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " ldr r2, ._194\n"
+ " lsr r0, r0, #0x16\n"
+ " add r0, r0, r2\n"
+ " ldr r3, ._194 + 4\n"
+ " add r2, r0, r3\n"
+ " strb r1, [r2]\n"
+ " ldr r1, ._194 + 8\n"
+ " add r2, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strb r1, [r2]\n"
+ " add r3, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " mov r1, #0x4\n"
+ " strh r1, [r0]\n"
+ " bx lr\n"
+ "._195:\n"
+ " .align 2, 0\n"
+ "._194:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2abc\n"
+ " .word 0x2abd\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80900AC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r7, #0x0\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._202\n"
+ " mov r8, r0\n"
+ "._198:\n"
+ " lsl r0, r5, #0x3\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, r8\n"
+ " add r6, r0, r1\n"
+ " ldr r1, ._202 + 4\n"
+ " add r0, r6, r1\n"
+ " ldrb r4, [r0]\n"
+ " cmp r4, #0\n"
+ " bne ._196 @cond_branch\n"
+ " cmp r7, #0xc\n"
+ " bne ._197 @cond_branch\n"
+ " mov r7, #0x0\n"
+ "._197:\n"
+ " ldr r0, ._202 + 8\n"
+ " add r0, r7, r0\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_808FA88\n"
+ " ldr r1, ._202 + 12\n"
+ " add r0, r6, r1\n"
+ " strb r4, [r0]\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._196:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x17\n"
+ " bls ._198 @cond_branch\n"
+ " mov r7, #0x0\n"
+ " mov r5, #0x0\n"
+ "._201:\n"
+ " ldr r0, ._202\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._202 + 16\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._199 @cond_branch\n"
+ " cmp r7, #0x3\n"
+ " bne ._200 @cond_branch\n"
+ " mov r7, #0x0\n"
+ "._200:\n"
+ " ldr r0, ._202 + 20\n"
+ " add r0, r7, r0\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r5, #0\n"
+ " bl debug_sub_8090080\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._199:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0xf\n"
+ " bls ._201 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._203:\n"
+ " .align 2, 0\n"
+ "._202:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2738\n"
+ " .word gUnknown_Debug_083C4ABD\n"
+ " .word 0x2739\n"
+ " .word 0x2abc\n"
+ " .word gUnknown_Debug_083C4B20\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_Fan()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._204\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xa\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._204 + 4\n"
+ " ldr r0, ._204 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._205:\n"
+ " .align 2, 0\n"
+ "._204:\n"
+ " .word gUnknown_Debug_083C4D28\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80901A4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80901A4()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._206 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " beq ._207 @cond_branch\n"
+ " ldr r2, ._209\n"
+ " ldr r0, ._209 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ "._206:\n"
+ " mov r0, #0x0\n"
+ " b ._208\n"
+ "._210:\n"
+ " .align 2, 0\n"
+ "._209:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C4D28\n"
+ "._207:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._208:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80901E4()
+{
+ asm(
+ " push {lr}\n"
+ " bl ResetFanClub\n"
+ " bl sub_810FAA0\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80901F8()
+{
+ asm(
+ " push {lr}\n"
+ " bl sub_810FB9C\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._211\n"
+ " ldr r1, ._211 + 4\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x8\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._211 + 8\n"
+ " ldr r0, ._211 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._212:\n"
+ " .align 2, 0\n"
+ "._211:\n"
+ " .word gUnknown_Debug_083C4CA8\n"
+ " .word gUnknown_083F8408\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090278+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090238()
+{
+ asm(
+ " push {lr}\n"
+ " bl sub_810FC18\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._213\n"
+ " ldr r1, ._213 + 4\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x8\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._213 + 8\n"
+ " ldr r0, ._213 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word gUnknown_Debug_083C4CA8\n"
+ " .word gUnknown_083F8410\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090278+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090278()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._217\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._215 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._216\n"
+ "._218:\n"
+ " .align 2, 0\n"
+ "._217:\n"
+ " .word gMain\n"
+ "._215:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._216:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_809029C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._219\n"
+ " ldr r0, ._219 + 4\n"
+ " ldr r1, ._219 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x7f\n"
+ " and r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._219 + 12\n"
+ " ldr r0, ._219 + 16\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._220:\n"
+ " .align 2, 0\n"
+ "._219:\n"
+ " .word gStringVar1\n"
+ " .word gSaveBlock1\n"
+ " .word 0x13c2\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090278+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80902E4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._221\n"
+ " ldrh r0, [r1, #0xe]\n"
+ " add r0, r0, #0x6\n"
+ " strh r0, [r1, #0xe]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._222:\n"
+ " .align 2, 0\n"
+ "._221:\n"
+ " .word gSaveBlock2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80902FC()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " bl sub_810FB10\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090310()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " bl sub_810FB10\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090324()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x2\n"
+ " bl sub_810FB10\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090338()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x3\n"
+ " bl sub_810FB10\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_BattleVSDad()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._223\n"
+ " mov r1, #0x6\n"
+ " bl VarSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._224:\n"
+ " .align 2, 0\n"
+ "._223:\n"
+ " .word 0x4085\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_DadAfterBattle()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._225\n"
+ " mov r1, #0x7\n"
+ " bl VarSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._226:\n"
+ " .align 2, 0\n"
+ "._225:\n"
+ " .word 0x4085\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_SootopolisCity()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x81\n"
+ " bl FlagSet\n"
+ " mov r0, #0x71\n"
+ " bl FlagSet\n"
+ " ldr r0, ._227\n"
+ " bl FlagReset\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._228:\n"
+ " .align 2, 0\n"
+ "._227:\n"
+ " .word 0x32f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_Embark()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._229\n"
+ " bl FlagReset\n"
+ " ldr r0, ._229 + 4\n"
+ " mov r1, #0x1\n"
+ " bl VarSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._230:\n"
+ " .align 2, 0\n"
+ "._229:\n"
+ " .word 0x2e3\n"
+ " .word 0x4090\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_Yes9999()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._231\n"
+ " ldr r1, ._231 + 4\n"
+ " bl VarSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._232:\n"
+ " .align 2, 0\n"
+ "._231:\n"
+ " .word 0x4048\n"
+ " .word 0x270f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_LegendsFlagOn()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0xe4\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void NoharaDebugMenu_AddNumWinningStreaks()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._235\n"
+ " ldr r1, ._235 + 4\n"
+ " add r2, r0, r1\n"
+ " ldrh r1, [r2]\n"
+ " cmp r1, #0x31\n"
+ " bhi ._233 @cond_branch\n"
+ " mov r0, #0x32\n"
+ " b ._244\n"
+ "._236:\n"
+ " .align 2, 0\n"
+ "._235:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x572\n"
+ "._233:\n"
+ " cmp r1, #0x63\n"
+ " bhi ._237 @cond_branch\n"
+ " mov r0, #0x64\n"
+ " b ._244\n"
+ "._237:\n"
+ " ldr r0, ._241\n"
+ " cmp r1, r0\n"
+ " bhi ._239 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " b ._244\n"
+ "._242:\n"
+ " .align 2, 0\n"
+ "._241:\n"
+ " .word 0x3e7\n"
+ "._239:\n"
+ " ldr r0, ._245\n"
+ " cmp r1, r0\n"
+ " bhi ._243 @cond_branch\n"
+ " ldr r0, ._245 + 4\n"
+ " b ._244\n"
+ "._246:\n"
+ " .align 2, 0\n"
+ "._245:\n"
+ " .word 0x1387\n"
+ " .word 0x2706\n"
+ "._243:\n"
+ " ldr r0, ._248\n"
+ " cmp r1, r0\n"
+ " bhi ._247 @cond_branch\n"
+ " add r0, r0, #0xa\n"
+ "._244:\n"
+ " strh r0, [r2]\n"
+ "._247:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._249:\n"
+ " .align 2, 0\n"
+ "._248:\n"
+ " .word 0x2705\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
new file mode 100644
index 000000000..4f9b588d8
--- /dev/null
+++ b/src/debug/taya_debug_window.c
@@ -0,0 +1,2122 @@
+#ifdef DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 unk_2030224[4] = { 0 };
+
+__attribute__((naked))
+void TayaDebugMenu_Trend()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffd8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1e\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r5, ._3\n"
+ " mov r7, #0x0\n"
+ " mov r0, #0x1\n"
+ " add r0, r0, sp\n"
+ " mov sl, r0\n"
+ " mov r9, sp\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ " add r6, sp, #0x20\n"
+ "._2:\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0xa1\n"
+ " cmp r0, #0\n"
+ " beq ._1 @cond_branch\n"
+ " mov r1, #0xa2\n"
+ "._1:\n"
+ " mov r0, r9\n"
+ " strb r1, [r0]\n"
+ " ldrh r1, [r5, #0x4]\n"
+ " add r0, r6, #0\n"
+ " bl sub_80EB3FC\n"
+ " mov r0, sl\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x7\n"
+ " bl StringCopyPadded\n"
+ " add r4, r0, #0\n"
+ " ldrh r1, [r5, #0x6]\n"
+ " add r0, r6, #0\n"
+ " bl sub_80EB3FC\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x8\n"
+ " bl StringCopyPadded\n"
+ " add r4, r0, #0\n"
+ " ldrb r1, [r5]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x19\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r4, r0, #0\n"
+ " mov r0, r8\n"
+ " strb r0, [r4]\n"
+ " add r4, r4, #0x1\n"
+ " ldrh r1, [r5]\n"
+ " lsl r1, r1, #0x12\n"
+ " lsr r1, r1, #0x19\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r4, r0, #0\n"
+ " mov r0, r8\n"
+ " strb r0, [r4]\n"
+ " add r4, r4, #0x1\n"
+ " ldrh r1, [r5, #0x2]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r2, r7, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ " add r5, r5, #0x8\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r7, r0, #0x10\n"
+ " cmp r7, #0x4\n"
+ " bls ._2 @cond_branch\n"
+ " ldr r1, ._3 + 4\n"
+ " ldr r0, ._3 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x28\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gSaveBlock1+0x2dd4\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090808+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090808()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._7\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x3\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._5 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._6\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word gMain\n"
+ "._5:\n"
+ " bl MenuZeroFillScreen\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._6:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_TrendR()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r0, #0x0\n"
+ " ldr r7, ._11\n"
+ "._10:\n"
+ " mov r4, #0x0\n"
+ " lsl r5, r0, #0x3\n"
+ " add r6, r0, #1\n"
+ "._9:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x16\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl sub_80EB72C\n"
+ " lsl r1, r4, #0x1\n"
+ " add r1, r1, r5\n"
+ " add r1, r1, r7\n"
+ " strh r0, [r1]\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0x1\n"
+ " bls ._9 @cond_branch\n"
+ " lsl r0, r6, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x4\n"
+ " bls ._10 @cond_branch\n"
+ " bl MenuZeroFillScreen\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word gSaveBlock1+0x2dd8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090880()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._13 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._14\n"
+ "._13:\n"
+ " bl sub_80E60D8\n"
+ " mov r0, #0x1\n"
+ "._14:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_809089C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._15 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._16 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._17\n"
+ "._16:\n"
+ " ldr r2, ._19\n"
+ " ldr r0, ._19 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " strh r0, [r2]\n"
+ " ldrh r0, [r2]\n"
+ " sub r0, r0, #0x5\n"
+ " cmp r0, #0x7\n"
+ " bhi ._27 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._19 + 8\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word gUnknown_Debug_083C4EC0\n"
+ " .word ._21\n"
+ "._21:\n"
+ " .word ._29\n"
+ " .word ._27\n"
+ " .word ._29\n"
+ " .word ._29\n"
+ " .word ._27\n"
+ " .word ._27\n"
+ " .word ._29\n"
+ " .word ._29\n"
+ "._29:\n"
+ " ldr r0, ._30\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " ldr r0, ._30 + 4\n"
+ " strh r1, [r0]\n"
+ "._27:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x0\n"
+ " bl fade_screen\n"
+ " ldr r1, ._30 + 8\n"
+ " ldr r0, ._30 + 12\n"
+ " str r0, [r1]\n"
+ "._15:\n"
+ " mov r0, #0x0\n"
+ "._17:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._31:\n"
+ " .align 2, 0\n"
+ "._30:\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSpecialVar_0x8006\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090880+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_SimpleText()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._32\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xb\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._32 + 4\n"
+ " ldr r0, ._32 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._33:\n"
+ " .align 2, 0\n"
+ "._32:\n"
+ " .word gUnknown_Debug_083C4EC0\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_809089C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090984()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r2, r0, #0x18\n"
+ " asr r1, r2, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._34 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " beq ._46 @cond_branch\n"
+ " cmp r1, #0x4\n"
+ " bgt ._36 @cond_branch\n"
+ " lsr r0, r2, #0x18\n"
+ " bl debug_sub_810B32C\n"
+ " b ._46\n"
+ "._34:\n"
+ " mov r0, #0x0\n"
+ " b ._38\n"
+ "._36:\n"
+ " cmp r1, #0x5\n"
+ " bne ._39 @cond_branch\n"
+ " bl sub_80F7F30\n"
+ " b ._46\n"
+ "._39:\n"
+ " cmp r1, #0x6\n"
+ " bne ._41 @cond_branch\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._44\n"
+ " add r1, r0, #2\n"
+ " mov ip, r1\n"
+ " ldr r7, ._44 + 4\n"
+ " ldr r1, ._44 + 8\n"
+ " add r6, r0, r1\n"
+ " add r5, r0, #0\n"
+ " add r5, r5, #0xe\n"
+ "._42:\n"
+ " lsl r1, r4, #0x1\n"
+ " mov r0, ip\n"
+ " add r3, r1, r0\n"
+ " add r0, r1, r7\n"
+ " ldrh r2, [r0]\n"
+ " strh r2, [r3]\n"
+ " add r0, r1, r5\n"
+ " strh r2, [r0]\n"
+ " add r1, r6, r1\n"
+ " strh r2, [r1]\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0x2\n"
+ " bls ._42 @cond_branch\n"
+ " b ._46\n"
+ "._45:\n"
+ " .align 2, 0\n"
+ "._44:\n"
+ " .word gSaveBlock1+0x2d94\n"
+ " .word gUnknown_Debug_083C4F08\n"
+ " .word 0xfffffd94\n"
+ "._41:\n"
+ " cmp r1, #0x7\n"
+ " bne ._46 @cond_branch\n"
+ " mov r4, #0x0\n"
+ "._47:\n"
+ " lsl r0, r4, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl sub_80EB890\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0x20\n"
+ " bls ._47 @cond_branch\n"
+ "._46:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._38:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_OldMan()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x11\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._48\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " bl GetCurrentMauvilleOldMan\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldr r1, ._48 + 4\n"
+ " ldr r0, ._48 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._49:\n"
+ " .align 2, 0\n"
+ "._48:\n"
+ " .word gUnknown_Debug_083C4F54\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090984+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_LanettesPC()
+{
+ asm(
+ " push {lr}\n"
+ " bl MenuZeroFillScreen\n"
+ " bl ShowPokemonStorageSystem\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_TownFlags()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._50\n"
+ " bl FlagSet\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 8\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 12\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 16\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 20\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 24\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 28\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 32\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 36\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 40\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 44\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 48\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 52\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 56\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 60\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 64\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 68\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 72\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 76\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 80\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 84\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 88\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 92\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 96\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 100\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 104\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 108\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 112\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 116\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 120\n"
+ " bl FlagSet\n"
+ " mov r0, #0x84\n"
+ " lsl r0, r0, #0x4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 124\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 128\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 132\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 136\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 140\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 144\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 148\n"
+ " bl FlagSet\n"
+ " ldr r0, ._50 + 152\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._51:\n"
+ " .align 2, 0\n"
+ "._50:\n"
+ " .word 0x80f\n"
+ " .word 0x811\n"
+ " .word 0x812\n"
+ " .word 0x813\n"
+ " .word 0x814\n"
+ " .word 0x815\n"
+ " .word 0x816\n"
+ " .word 0x817\n"
+ " .word 0x818\n"
+ " .word 0x819\n"
+ " .word 0x81a\n"
+ " .word 0x81b\n"
+ " .word 0x81c\n"
+ " .word 0x81d\n"
+ " .word 0x81e\n"
+ " .word 0x848\n"
+ " .word 0x849\n"
+ " .word 0x84a\n"
+ " .word 0x854\n"
+ " .word 0x855\n"
+ " .word 0x856\n"
+ " .word 0x857\n"
+ " .word 0x858\n"
+ " .word 0x859\n"
+ " .word 0x85a\n"
+ " .word 0x85b\n"
+ " .word 0x85c\n"
+ " .word 0x83c\n"
+ " .word 0x83d\n"
+ " .word 0x83e\n"
+ " .word 0x83f\n"
+ " .word 0x841\n"
+ " .word 0x842\n"
+ " .word 0x843\n"
+ " .word 0x844\n"
+ " .word 0x845\n"
+ " .word 0x846\n"
+ " .word 0x847\n"
+ " .word 0x83b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_AwardARibbon()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x0\n"
+ " bl BlendPalettes\n"
+ " ldr r0, ._52\n"
+ " bl SetMainCallback2\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._53:\n"
+ " .align 2, 0\n"
+ "._52:\n"
+ " .word debug_sub_80915BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090C44()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r4, ._54\n"
+ " sub r5, r4, #1\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x5\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x5\n"
+ " bl StringFill\n"
+ " ldrb r0, [r5]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x79\n"
+ " strb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._55:\n"
+ " .align 2, 0\n"
+ "._54:\n"
+ " .word +0x2000001\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090C88()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " mov r8, r0\n"
+ " ldr r2, ._59\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " add r3, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._57 @cond_branch\n"
+ " ldr r1, ._59 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._57 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._62\n"
+ "._60:\n"
+ " .align 2, 0\n"
+ "._59:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ "._67:\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._62\n"
+ "._77:\n"
+ " strh r1, [r7, #0x8]\n"
+ " b ._62\n"
+ "._79:\n"
+ " ldr r0, ._64\n"
+ " ldrh r0, [r0, #0x8]\n"
+ " bl SetLotteryNumber16_Unused\n"
+ "._78:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._63\n"
+ "._65:\n"
+ " .align 2, 0\n"
+ "._64:\n"
+ " .word +0x2000000\n"
+ "._57:\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._66 @cond_branch\n"
+ " ldr r1, ._81\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3\n"
+ " bls ._67 @cond_branch\n"
+ "._66:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._68 @cond_branch\n"
+ " ldr r0, ._81\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " str r1, [r0, #0xc]\n"
+ " ldr r1, ._81 + 4\n"
+ " strh r1, [r0, #0x10]\n"
+ " mov r4, #0x0\n"
+ " ldrb r1, [r0]\n"
+ " add r7, r0, #0\n"
+ " cmp r4, r1\n"
+ " bcs ._69 @cond_branch\n"
+ " add r5, r7, #0\n"
+ " add r6, r1, #0\n"
+ "._70:\n"
+ " ldrh r0, [r5, #0x10]\n"
+ " mov r1, #0xa\n"
+ " str r3, [sp]\n"
+ " bl __udivsi3\n"
+ " strh r0, [r5, #0x10]\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r3, [sp]\n"
+ " cmp r4, r6\n"
+ " bcc ._70 @cond_branch\n"
+ "._69:\n"
+ " ldrh r1, [r7, #0x10]\n"
+ " ldr r0, [r7, #0xc]\n"
+ " add r0, r0, r1\n"
+ " str r0, [r7, #0xc]\n"
+ " ldr r1, ._81 + 8\n"
+ " cmp r0, r1\n"
+ " ble ._71 @cond_branch\n"
+ " str r1, [r7, #0xc]\n"
+ "._71:\n"
+ " ldrh r0, [r7, #0x8]\n"
+ " ldr r1, [r7, #0xc]\n"
+ " cmp r0, r1\n"
+ " bne ._77 @cond_branch\n"
+ "._68:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._73 @cond_branch\n"
+ " ldr r0, ._81\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " str r1, [r0, #0xc]\n"
+ " ldr r1, ._81 + 4\n"
+ " strh r1, [r0, #0x10]\n"
+ " mov r4, #0x0\n"
+ " ldrb r1, [r0]\n"
+ " add r7, r0, #0\n"
+ " cmp r4, r1\n"
+ " bcs ._74 @cond_branch\n"
+ " add r5, r7, #0\n"
+ " add r6, r1, #0\n"
+ "._75:\n"
+ " ldrh r0, [r5, #0x10]\n"
+ " mov r1, #0xa\n"
+ " str r3, [sp]\n"
+ " bl __udivsi3\n"
+ " strh r0, [r5, #0x10]\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r3, [sp]\n"
+ " cmp r4, r6\n"
+ " bcc ._75 @cond_branch\n"
+ "._74:\n"
+ " add r2, r7, #0\n"
+ " ldrh r1, [r2, #0x10]\n"
+ " ldr r0, [r2, #0xc]\n"
+ " sub r0, r0, r1\n"
+ " str r0, [r2, #0xc]\n"
+ " cmp r0, #0\n"
+ " bge ._76 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " str r0, [r2, #0xc]\n"
+ "._76:\n"
+ " ldrh r0, [r2, #0x8]\n"
+ " ldr r1, [r2, #0xc]\n"
+ " cmp r0, r1\n"
+ " bne ._77 @cond_branch\n"
+ "._73:\n"
+ " ldrh r2, [r3, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._78 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._79 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ "._62:\n"
+ " mov r0, r8\n"
+ " cmp r0, #0\n"
+ " beq ._80 @cond_branch\n"
+ " bl debug_sub_8090C44\n"
+ "._80:\n"
+ " mov r0, #0x0\n"
+ "._63:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._82:\n"
+ " .align 2, 0\n"
+ "._81:\n"
+ " .word +0x2000000\n"
+ " .word 0x2710\n"
+ " .word 0xffff\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_PKMNLottery()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x6\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " bl RetrieveLotteryNumber\n"
+ " ldr r2, ._83\n"
+ " ldr r0, ._83 + 4\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x0\n"
+ " strh r0, [r2, #0x8]\n"
+ " strb r1, [r2]\n"
+ " bl debug_sub_8090C44\n"
+ " ldr r1, ._83 + 8\n"
+ " ldr r0, ._83 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._84:\n"
+ " .align 2, 0\n"
+ "._83:\n"
+ " .word +0x2000000\n"
+ " .word gScriptResult\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_8090C88+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_Trainer()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._86\n"
+ "._85:\n"
+ " lsl r0, r4, #0x4\n"
+ " add r0, r0, r5\n"
+ " ldrh r0, [r0]\n"
+ " bl trainer_flag_set\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0x37\n"
+ " bls ._85 @cond_branch\n"
+ " ldr r0, ._86 + 4\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x85\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 8\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x86\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 12\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x87\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 16\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x88\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 20\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x83\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 24\n"
+ " bl trainer_flag_set\n"
+ " mov r0, #0x84\n"
+ " lsl r0, r0, #0x1\n"
+ " bl trainer_flag_set\n"
+ " ldr r0, ._86 + 28\n"
+ " bl trainer_flag_set\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._87:\n"
+ " .align 2, 0\n"
+ "._86:\n"
+ " .word gTrainerEyeTrainers\n"
+ " .word 0x109\n"
+ " .word 0x10b\n"
+ " .word 0x10d\n"
+ " .word 0x10f\n"
+ " .word 0x105\n"
+ " .word 0x107\n"
+ " .word 0x14f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_PokenavD()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe4\n"
+ " bl MenuDisplayMessageBox\n"
+ " mov r0, #0x0\n"
+ " mov sl, r0\n"
+ " mov r6, #0x1\n"
+ " mov r7, #0xff\n"
+ " mov r1, #0x3\n"
+ " mov r9, r1\n"
+ "._93:\n"
+ " ldr r4, ._94\n"
+ " add r0, r4, #0\n"
+ " ldr r1, ._94 + 4\n"
+ " bl StringCopy\n"
+ " mov r5, sl\n"
+ " add r5, r5, #0x1\n"
+ " add r1, r5, r4\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r8, r0\n"
+ " str r5, [sp, #0x14]\n"
+ " mov r1, sl\n"
+ " lsl r1, r1, #0x2\n"
+ " str r1, [sp, #0x18]\n"
+ "._91:\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [sp, #0x10]\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " bl Random\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xc1\n"
+ " lsl r1, r1, #0x1\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0xfb\n"
+ " bls ._89 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x19\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " ldr r0, ._94 + 8\n"
+ " cmp r3, r0\n"
+ " bls ._89 @cond_branch\n"
+ " mov r3, #0x1\n"
+ "._89:\n"
+ " ldr r0, [sp, #0x18]\n"
+ " add r0, r0, sl\n"
+ " lsl r4, r0, #0x4\n"
+ " sub r4, r4, r0\n"
+ " lsl r4, r4, #0x5\n"
+ " mov r1, r8\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r8\n"
+ " lsl r0, r0, #0x4\n"
+ " ldr r1, ._94 + 12\n"
+ " add r0, r0, r1\n"
+ " add r4, r4, r0\n"
+ " lsl r2, r5, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " str r6, [sp, #0x8]\n"
+ " ldr r0, [sp, #0x10]\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r4, #0\n"
+ " add r1, r3, #0\n"
+ " mov r3, #0x20\n"
+ " bl CreateBoxMon\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x16\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x17\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x18\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x21\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2f\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x30\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x32\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x33\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x34\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x36\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x35\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x43\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x44\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x45\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x46\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x47\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x48\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x49\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4a\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4b\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4c\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4d\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " bl Random\n"
+ " add r1, r6, #0\n"
+ " and r1, r1, r0\n"
+ " str r1, [sp, #0x10]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4e\n"
+ " add r2, sp, #0x10\n"
+ " bl SetBoxMonData\n"
+ " mov r0, r8\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r8, r0\n"
+ " cmp r0, #0x1d\n"
+ " bhi ._90 @cond_branch\n"
+ " b ._91\n"
+ "._90:\n"
+ " ldr r1, [sp, #0x14]\n"
+ " lsl r0, r1, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov sl, r0\n"
+ " cmp r0, #0xd\n"
+ " bhi ._92 @cond_branch\n"
+ " b ._93\n"
+ "._92:\n"
+ " bl TayaDebugMenu_TownFlags\n"
+ " bl TayaDebugMenu_Trainer\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x1c\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._95:\n"
+ " .align 2, 0\n"
+ "._94:\n"
+ " .word +0x2000000\n"
+ " .word gUnknown_Debug_083C4F94\n"
+ " .word 0x19b\n"
+ " .word gPokemonStorage+0x4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_8091190()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r3, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r3, r0\n"
+ " beq ._96 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r3, r0\n"
+ " beq ._97 @cond_branch\n"
+ " ldr r2, ._99\n"
+ " ldr r1, ._99 + 4\n"
+ " ldr r0, ._99 + 8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, [r0]\n"
+ " lsl r0, r3, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0, #0x4]\n"
+ " str r0, [r2]\n"
+ "._106:\n"
+ " mov r0, #0x0\n"
+ " b ._98\n"
+ "._100:\n"
+ " .align 2, 0\n"
+ "._99:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_83C5068\n"
+ " .word unk_2030224\n"
+ "._96:\n"
+ " ldr r3, ._107\n"
+ " ldrb r4, [r3]\n"
+ " ldr r2, ._107 + 4\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " add r5, r3, #0\n"
+ " cmp r0, #0\n"
+ " beq ._102 @cond_branch\n"
+ " sub r0, r4, #1\n"
+ " strb r0, [r5]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bge ._102 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r5]\n"
+ "._102:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._104 @cond_branch\n"
+ " ldrb r0, [r5]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r5]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bls ._104 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r5]\n"
+ "._104:\n"
+ " lsl r0, r4, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " ldrsb r1, [r5, r1]\n"
+ " cmp r0, r1\n"
+ " beq ._106 @cond_branch\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r4, ._107 + 8\n"
+ " mov r0, #0x0\n"
+ " ldrsb r0, [r5, r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldrb r2, [r0, #0x4]\n"
+ " ldr r3, [r0]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " ldrsb r0, [r5, r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldrb r3, [r0, #0x4]\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xa\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl InitMenu\n"
+ " b ._106\n"
+ "._108:\n"
+ " .align 2, 0\n"
+ "._107:\n"
+ " .word unk_2030224\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_83C5068\n"
+ "._97:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._98:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitTayaDebugWindow()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r1, ._109\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._109 + 4\n"
+ " ldr r3, [r0]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xa\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._109 + 8\n"
+ " ldr r0, ._109 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word unk_2030224\n"
+ " .word gUnknown_Debug_83C5068\n"
+ " .word gCallback_03004AE8\n"
+ " .word TayaDebugMenu_8091190+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80912D8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._113\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._111 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._112\n"
+ "._114:\n"
+ " .align 2, 0\n"
+ "._113:\n"
+ " .word gPaletteFade\n"
+ "._111:\n"
+ " ldr r0, ._115\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x1\n"
+ "._112:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._116:\n"
+ " .align 2, 0\n"
+ "._115:\n"
+ " .word debug_sub_8110F28+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8091300()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x0\n"
+ " bl fade_screen\n"
+ " ldr r1, ._117\n"
+ " ldr r0, ._117 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._118:\n"
+ " .align 2, 0\n"
+ "._117:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_80912D8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8091320()
+{
+ asm(
+ " push {lr}\n"
+ " bl LoadOam\n"
+ " bl ProcessSpriteCopyRequests\n"
+ " bl TransferPlttBuffer\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8091334()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " ldr r3, ._123\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x52\n"
+ " ldrb r4, [r0]\n"
+ " cmp r4, #0\n"
+ " beq ._119 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne ._120 @cond_branch\n"
+ " b ._121\n"
+ "._120:\n"
+ " b ._162\n"
+ "._124:\n"
+ " .align 2, 0\n"
+ "._123:\n"
+ " .word +0x2000000\n"
+ "._119:\n"
+ " add r5, r3, #0\n"
+ " add r5, r5, #0x55\n"
+ " strb r4, [r5]\n"
+ " ldr r2, ._131\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " mov r9, r2\n"
+ " cmp r0, #0\n"
+ " beq ._126 @cond_branch\n"
+ " add r1, r3, #0\n"
+ " add r1, r1, #0x54\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._126 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r5]\n"
+ "._126:\n"
+ " mov r0, r9\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " ldr r5, ._131 + 4\n"
+ " cmp r0, #0\n"
+ " beq ._133 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x53\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x2\n"
+ " beq ._128 @cond_branch\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x54\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x4\n"
+ " bhi ._133 @cond_branch\n"
+ " b ._130\n"
+ "._132:\n"
+ " .align 2, 0\n"
+ "._131:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ "._128:\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x54\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3\n"
+ " bhi ._133 @cond_branch\n"
+ "._130:\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r1, r1, #0x1\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._133:\n"
+ " mov r2, r9\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._135 @cond_branch\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x53\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._135 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._135:\n"
+ " mov r3, r9\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._140 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x54\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x5\n"
+ " beq ._137 @cond_branch\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x53\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._140 @cond_branch\n"
+ " b ._139\n"
+ "._137:\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x53\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._140 @cond_branch\n"
+ "._139:\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._140:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x55\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._141 @cond_branch\n"
+ " mov r0, r9\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._142 @cond_branch\n"
+ " ldr r2, ._145\n"
+ " add r3, r5, #0\n"
+ " add r3, r3, #0x53\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x54\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r3, [r3]\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0, #0x4]\n"
+ " sub r0, r0, #0x32\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x4\n"
+ " bhi ._143 @cond_branch\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x56\n"
+ " mov r0, #0x4\n"
+ " b ._144\n"
+ "._146:\n"
+ " .align 2, 0\n"
+ "._145:\n"
+ " .word gUnknown_Debug_083C50EC\n"
+ "._143:\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x56\n"
+ " mov r0, #0x1\n"
+ "._144:\n"
+ " strb r0, [r1]\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x52\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._162\n"
+ "._142:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._148 @cond_branch\n"
+ " b ._162\n"
+ "._148:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x0\n"
+ " bl BlendPalettes\n"
+ " ldr r0, ._151\n"
+ " bl SetMainCallback2\n"
+ " b ._162\n"
+ "._152:\n"
+ " .align 2, 0\n"
+ "._151:\n"
+ " .word sub_80546F0+1\n"
+ "._121:\n"
+ " add r5, r3, #0\n"
+ " add r5, r5, #0x55\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r5]\n"
+ " ldr r2, ._159\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " mov r9, r2\n"
+ " cmp r0, #0\n"
+ " beq ._154 @cond_branch\n"
+ " add r2, r3, #0\n"
+ " add r2, r2, #0x53\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x54\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " add r2, r0, r3\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x56\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r0, [r0]\n"
+ " cmp r1, r0\n"
+ " bcs ._154 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strb r0, [r2]\n"
+ " strb r4, [r5]\n"
+ "._154:\n"
+ " mov r2, r9\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " ldr r5, ._159 + 4\n"
+ " cmp r0, #0\n"
+ " beq ._156 @cond_branch\n"
+ " add r2, r5, #0\n"
+ " add r2, r2, #0x53\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x54\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " add r1, r0, r5\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._156 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r1, r5, #0\n"
+ " add r1, r1, #0x55\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._156:\n"
+ " add r6, r5, #0\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x55\n"
+ " ldrb r7, [r0]\n"
+ " cmp r7, #0\n"
+ " beq ._157 @cond_branch\n"
+ "._141:\n"
+ " bl debug_sub_80916AC\n"
+ " b ._162\n"
+ "._160:\n"
+ " .align 2, 0\n"
+ "._159:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ "._157:\n"
+ " mov r3, r9\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._161 @cond_branch\n"
+ " ldr r0, ._164\n"
+ " ldr r1, ._164 + 4\n"
+ " mov ip, r1\n"
+ " mov r2, #0x53\n"
+ " add r2, r2, r6\n"
+ " mov r8, r2\n"
+ " add r4, r6, #0\n"
+ " add r4, r4, #0x54\n"
+ " ldrb r2, [r4]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " mov r3, r8\n"
+ " ldrb r3, [r3]\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, ip\n"
+ " ldrh r1, [r1, #0x4]\n"
+ " bl GetMonData\n"
+ " ldrb r2, [r4]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " mov r2, r8\n"
+ " ldrb r2, [r2]\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r6\n"
+ " strb r0, [r1]\n"
+ " bl debug_sub_80916AC\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x52\n"
+ " strb r7, [r0]\n"
+ "._161:\n"
+ " mov r3, r9\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._162 @cond_branch\n"
+ " ldr r2, ._164 + 4\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x53\n"
+ " ldrb r4, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r3, r0, r1\n"
+ " add r0, r3, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r0, r2\n"
+ " ldrh r0, [r1, #0x4]\n"
+ " cmp r0, #0\n"
+ " beq ._163 @cond_branch\n"
+ " ldr r0, ._164\n"
+ " ldrh r1, [r1, #0x4]\n"
+ " add r2, r4, r6\n"
+ " add r2, r3, r2\n"
+ " bl SetMonData\n"
+ "._163:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x52\n"
+ " strb r7, [r0]\n"
+ "._162:\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._165:\n"
+ " .align 2, 0\n"
+ "._164:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_083C50EC\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80915BC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " ldr r0, ._168\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " ldr r0, ._168 + 4\n"
+ " mov r8, r0\n"
+ " ldr r7, ._168 + 8\n"
+ "._171:\n"
+ " mov r4, #0x0\n"
+ " lsl r0, r1, #0x1\n"
+ " add r6, r1, #1\n"
+ " add r5, r0, r1\n"
+ "._170:\n"
+ " add r0, r5, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r8\n"
+ " ldrh r1, [r0, #0x4]\n"
+ " cmp r1, #0\n"
+ " beq ._166 @cond_branch\n"
+ " ldr r0, ._168 + 12\n"
+ " bl GetMonData\n"
+ " add r1, r4, r5\n"
+ " add r1, r1, r7\n"
+ " strb r0, [r1]\n"
+ " b ._167\n"
+ "._169:\n"
+ " .align 2, 0\n"
+ "._168:\n"
+ " .word 0x4000010\n"
+ " .word gUnknown_Debug_083C50EC\n"
+ " .word +0x2000000\n"
+ " .word gPlayerParty\n"
+ "._166:\n"
+ " add r0, r4, r5\n"
+ " add r0, r0, r7\n"
+ " strb r1, [r0]\n"
+ "._167:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x2\n"
+ " bls ._170 @cond_branch\n"
+ " lsl r0, r6, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " cmp r1, #0x5\n"
+ " bls ._171 @cond_branch\n"
+ " ldr r4, ._172\n"
+ " add r0, r4, #0\n"
+ " bl SetUpWindowConfig\n"
+ " add r0, r4, #0\n"
+ " bl InitMenuWindow\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._172 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x15\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r2, #0x8a\n"
+ " lsl r2, r2, #0x5\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r2, ._172 + 8\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x53\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " strb r1, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_80916AC\n"
+ " ldr r0, ._172 + 12\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._172 + 16\n"
+ " bl SetMainCallback2\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._173:\n"
+ " .align 2, 0\n"
+ "._172:\n"
+ " .word gWindowConfig_81E7224\n"
+ " .word gUnknown_Debug_083C517C\n"
+ " .word +0x2000000\n"
+ " .word debug_sub_8091320+1\n"
+ " .word debug_sub_8091334+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80916AC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r6, #0x0\n"
+ " ldr r0, ._177\n"
+ " mov sl, r0\n"
+ " mov r1, #0x0\n"
+ " mov r8, r1\n"
+ "._182:\n"
+ " ldr r2, ._177 + 4\n"
+ " mov r5, #0x0\n"
+ " lsl r0, r6, #0x1\n"
+ " mov r9, r0\n"
+ " add r1, r6, #1\n"
+ " str r1, [sp]\n"
+ "._181:\n"
+ " mov r0, sl\n"
+ " add r0, r0, #0x53\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, r5\n"
+ " bne ._175 @cond_branch\n"
+ " ldr r1, ._177 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, r6\n"
+ " bne ._175 @cond_branch\n"
+ " mov r0, #0xef\n"
+ " b ._176\n"
+ "._178:\n"
+ " .align 2, 0\n"
+ "._177:\n"
+ " .word +0x2000000\n"
+ " .word +0x2000012\n"
+ " .word +0x2000054\n"
+ "._175:\n"
+ " mov r0, r8\n"
+ " strb r0, [r2]\n"
+ " add r2, r2, #0x1\n"
+ "._176:\n"
+ " strb r0, [r2]\n"
+ " add r2, r2, #0x1\n"
+ " mov r1, r9\n"
+ " add r4, r1, r6\n"
+ " add r0, r4, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._183\n"
+ " add r0, r0, r1\n"
+ " ldr r1, [r0]\n"
+ " add r0, r2, #0\n"
+ " bl StringCopy\n"
+ " add r2, r0, #0\n"
+ " mov r0, r8\n"
+ " strb r0, [r2]\n"
+ " add r2, r2, #0x1\n"
+ " ldr r7, ._183 + 4\n"
+ " add r4, r5, r4\n"
+ " add r4, r4, r7\n"
+ " ldrb r1, [r4]\n"
+ " add r0, r2, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r2, r0, #0\n"
+ " mov r1, r8\n"
+ " strb r1, [r2]\n"
+ " add r2, r2, #0x1\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x2\n"
+ " bhi ._179 @cond_branch\n"
+ " cmp r6, #0x5\n"
+ " bne ._181 @cond_branch\n"
+ " cmp r5, #0x2\n"
+ " bne ._181 @cond_branch\n"
+ "._179:\n"
+ " sub r1, r2, #1\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " mov r2, r9\n"
+ " add r2, r2, #0x5\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r7, #0\n"
+ " add r0, r0, #0x12\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r1, [sp]\n"
+ " lsl r0, r1, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x5\n"
+ " bls ._182 @cond_branch\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word gUnknown_Debug_083C50EC\n"
+ " .word +0x2000000\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
new file mode 100644
index 000000000..f745f2993
--- /dev/null
+++ b/src/debug/tomomichi_debug_menu.c
@@ -0,0 +1,8643 @@
+#ifdef DEBUG
+#include "global.h"
+
+#define BSS_DATA __attribute__((section(".bss")))
+
+BSS_DATA u8 gDebug_03000700[0x24] = { 0 };
+
+__attribute__((naked))
+void InitTomomichiDebugWindow()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_808B874\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808B868()
+{
+ asm(
+ " push {lr}\n"
+ " bl c2_exit_to_overworld_1_continue_scripts_restart_music\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808B874()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " ldr r0, ._1 + 4\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xc\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._1 + 8\n"
+ " ldr r0, ._1 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word gUnknown_Debug_083C0CBA\n"
+ " .word gDebug_03000700+0x1d\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808B8C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808B8C8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._7\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._3 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._7 + 4\n"
+ " strb r0, [r1]\n"
+ "._3:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._4 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._7 + 4\n"
+ " strb r0, [r1]\n"
+ "._4:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._5 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._7 + 8\n"
+ " ldr r0, ._7 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._10\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x1d\n"
+ " .word gUnknown_Debug_083C0CBA\n"
+ "._5:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._9 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._10\n"
+ "._9:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._10:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ContestGraphics()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._11\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._11 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x13\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._11 + 8\n"
+ " ldr r0, ._11 + 12\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._11 + 16\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._11 + 20\n"
+ " ldr r0, ._11 + 24\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._11 + 28\n"
+ " str r4, [r0]\n"
+ " ldr r0, ._11 + 32\n"
+ " strb r2, [r0]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word gUnknown_Debug_083C0CF4\n"
+ " .word gUnknown_Debug_083C0D2C\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BC48+1\n"
+ " .word gDebug_03000700\n"
+ " .word gDebug_03000700+0x4\n"
+ " .word 0x6f33\n"
+ " .word gDebug_03000700+0x8\n"
+ " .word gDebug_03000700+0xc\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ArtMusGraphics()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._13\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._13 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x13\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._13 + 8\n"
+ " ldr r0, ._13 + 12\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._13 + 16\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._13 + 20\n"
+ " ldr r0, ._13 + 24\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._13 + 28\n"
+ " str r4, [r0]\n"
+ " ldr r0, ._13 + 32\n"
+ " strb r2, [r0]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word gUnknown_Debug_083C0D4C\n"
+ " .word gUnknown_Debug_083C0D83\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BCBC+1\n"
+ " .word gDebug_03000700\n"
+ " .word gDebug_03000700+0x4\n"
+ " .word 0x6f33\n"
+ " .word gDebug_03000700+0x8\n"
+ " .word gDebug_03000700+0xd\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_PreviewData()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._15\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._15 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x13\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._15 + 8\n"
+ " ldr r0, ._15 + 12\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._15 + 16\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._15 + 20\n"
+ " ldr r0, ._15 + 24\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._15 + 28\n"
+ " str r4, [r0]\n"
+ " ldr r0, ._15 + 32\n"
+ " strb r2, [r0]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word gUnknown_Debug_083C0DA4\n"
+ " .word gUnknown_Debug_083C0DD4\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BD30+1\n"
+ " .word gDebug_03000700\n"
+ " .word gDebug_03000700+0x4\n"
+ " .word 0x6f33\n"
+ " .word gDebug_03000700+0x8\n"
+ " .word gDebug_03000700+0xe\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_TrickHouse()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._17\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._17 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " ldr r0, ._17 + 8\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._17 + 12\n"
+ " ldr r0, ._17 + 16\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._18:\n"
+ " .align 2, 0\n"
+ "._17:\n"
+ " .word gUnknown_Debug_083C0DF4\n"
+ " .word gUnknown_Debug_083C0E15\n"
+ " .word gDebug_03000700+0x1e\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BDA4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlEvents()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._19\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " ldr r0, ._19 + 4\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._19 + 8\n"
+ " ldr r0, ._19 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word gUnknown_Debug_083C0E32\n"
+ " .word gDebug_03000700+0x1f\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BE2C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlFlags()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._21\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " ldr r0, ._21 + 4\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._21 + 8\n"
+ " ldr r0, ._21 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word gUnknown_Debug_083C0E7F\n"
+ " .word gDebug_03000700+0x20\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BEB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlWorks()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._23\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " ldr r0, ._23 + 4\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._23 + 8\n"
+ " ldr r0, ._23 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._24:\n"
+ " .align 2, 0\n"
+ "._23:\n"
+ " .word gUnknown_Debug_083C0EF1\n"
+ " .word gDebug_03000700+0x21\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808BF3C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BC48()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._25 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._26 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._27 @cond_branch\n"
+ " b ._32\n"
+ "._26:\n"
+ " cmp r0, #0x2\n"
+ " beq ._29 @cond_branch\n"
+ " b ._32\n"
+ "._27:\n"
+ " bl debug_sub_808ED0C\n"
+ " b ._32\n"
+ "._25:\n"
+ " bl debug_sub_808ED9C\n"
+ " b ._32\n"
+ "._29:\n"
+ " bl debug_sub_808EE3C\n"
+ "._32:\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_808EF8C\n"
+ " lsl r0, r4, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._36 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._34 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._35\n"
+ "._34:\n"
+ " cmp r1, #0x3\n"
+ " bne ._36 @cond_branch\n"
+ " ldr r0, ._37\n"
+ " ldr r1, ._37 + 4\n"
+ " ldr r1, [r1, #0x1c]\n"
+ " str r1, [r0]\n"
+ "._36:\n"
+ " mov r0, #0x0\n"
+ "._35:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._38:\n"
+ " .align 2, 0\n"
+ "._37:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C0D2C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BCBC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._39 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._40 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._41 @cond_branch\n"
+ " b ._46\n"
+ "._40:\n"
+ " cmp r0, #0x2\n"
+ " beq ._43 @cond_branch\n"
+ " b ._46\n"
+ "._41:\n"
+ " bl debug_sub_808ED0C\n"
+ " b ._46\n"
+ "._39:\n"
+ " bl debug_sub_808ED9C\n"
+ " b ._46\n"
+ "._43:\n"
+ " bl debug_sub_808EE9C\n"
+ "._46:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_808EF8C\n"
+ " lsl r0, r4, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._50 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._48 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._49\n"
+ "._48:\n"
+ " cmp r1, #0x3\n"
+ " bne ._50 @cond_branch\n"
+ " ldr r0, ._51\n"
+ " ldr r1, ._51 + 4\n"
+ " ldr r1, [r1, #0x1c]\n"
+ " str r1, [r0]\n"
+ "._50:\n"
+ " mov r0, #0x0\n"
+ "._49:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._52:\n"
+ " .align 2, 0\n"
+ "._51:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C0D83\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BD30()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._53 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._54 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._55 @cond_branch\n"
+ " b ._60\n"
+ "._54:\n"
+ " cmp r0, #0x2\n"
+ " beq ._57 @cond_branch\n"
+ " b ._60\n"
+ "._55:\n"
+ " bl debug_sub_808ED0C\n"
+ " b ._60\n"
+ "._53:\n"
+ " bl debug_sub_808ED9C\n"
+ " b ._60\n"
+ "._57:\n"
+ " bl debug_sub_808EF14\n"
+ "._60:\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_808EF8C\n"
+ " lsl r0, r4, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._64 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._62 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._63\n"
+ "._62:\n"
+ " cmp r1, #0x3\n"
+ " bne ._64 @cond_branch\n"
+ " ldr r0, ._65\n"
+ " ldr r1, ._65 + 4\n"
+ " ldr r1, [r1, #0x1c]\n"
+ " str r1, [r0]\n"
+ "._64:\n"
+ " mov r0, #0x0\n"
+ "._63:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._66:\n"
+ " .align 2, 0\n"
+ "._65:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C0DD4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BDA4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._71\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._67 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._71 + 4\n"
+ " strb r0, [r1]\n"
+ "._67:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._68 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._71 + 4\n"
+ " strb r0, [r1]\n"
+ "._68:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._69 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._71 + 8\n"
+ " ldr r0, ._71 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._74\n"
+ "._72:\n"
+ " .align 2, 0\n"
+ "._71:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x1e\n"
+ " .word gUnknown_Debug_083C0E15\n"
+ "._69:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._73 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._74\n"
+ "._73:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._74:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BE2C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._79\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._75 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._79 + 4\n"
+ " strb r0, [r1]\n"
+ "._75:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._76 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._79 + 4\n"
+ " strb r0, [r1]\n"
+ "._76:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._77 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._79 + 8\n"
+ " ldr r0, ._79 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._82\n"
+ "._80:\n"
+ " .align 2, 0\n"
+ "._79:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x1f\n"
+ " .word gUnknown_Debug_083C0E32\n"
+ "._77:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._81 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._82\n"
+ "._81:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._82:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BEB4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._87\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._83 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._87 + 4\n"
+ " strb r0, [r1]\n"
+ "._83:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._84 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._87 + 4\n"
+ " strb r0, [r1]\n"
+ "._84:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._85 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._87 + 8\n"
+ " ldr r0, ._87 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._90\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x20\n"
+ " .word gUnknown_Debug_083C0E7F\n"
+ "._85:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._89 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._90\n"
+ "._89:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._90:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BF3C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._95\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._91 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._95 + 4\n"
+ " strb r0, [r1]\n"
+ "._91:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._92 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl MoveMenuCursor\n"
+ " ldr r1, ._95 + 4\n"
+ " strb r0, [r1]\n"
+ "._92:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._93 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._95 + 8\n"
+ " ldr r0, ._95 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._98\n"
+ "._96:\n"
+ " .align 2, 0\n"
+ "._95:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x21\n"
+ " .word gUnknown_Debug_083C0EF1\n"
+ "._93:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._97 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._98\n"
+ "._97:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._98:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BFC4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._99\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._99 + 4\n"
+ " ldr r0, ._99 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._100:\n"
+ " .align 2, 0\n"
+ "._99:\n"
+ " .word gUnknown_Debug_083C0F79\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C064+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C014()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._101\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._101 + 4\n"
+ " ldr r0, ._101 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._102:\n"
+ " .align 2, 0\n"
+ "._101:\n"
+ " .word gUnknown_Debug_083C0FFC\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C0A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C064()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._103 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._106\n"
+ "._103:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._105 @cond_branch\n"
+ " ldr r2, ._107\n"
+ " ldr r0, ._107 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._106\n"
+ "._108:\n"
+ " .align 2, 0\n"
+ "._107:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C0F79\n"
+ "._105:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._106:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C0A8()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._109 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._112\n"
+ "._109:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._111 @cond_branch\n"
+ " ldr r2, ._113\n"
+ " ldr r0, ._113 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._112\n"
+ "._114:\n"
+ " .align 2, 0\n"
+ "._113:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C0FFC\n"
+ "._111:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._112:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C0EC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._115\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._116:\n"
+ " .align 2, 0\n"
+ "._115:\n"
+ " .word DebugScript_081C1CFE\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C104()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._117\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._118:\n"
+ " .align 2, 0\n"
+ "._117:\n"
+ " .word DebugScript_081C1D07\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C11C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._119\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._120:\n"
+ " .align 2, 0\n"
+ "._119:\n"
+ " .word DebugScript_081C1D1E\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C134()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._121\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._122:\n"
+ " .align 2, 0\n"
+ "._121:\n"
+ " .word DebugScript_081C1D24\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C14C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._123\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._124:\n"
+ " .align 2, 0\n"
+ "._123:\n"
+ " .word DebugScript_081C1D2A\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C164()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._125\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word DebugScript_081C1D35\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C17C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._127\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._128:\n"
+ " .align 2, 0\n"
+ "._127:\n"
+ " .word DebugScript_081C1D46\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C194()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._129\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._130:\n"
+ " .align 2, 0\n"
+ "._129:\n"
+ " .word DebugScript_081C221F\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C1AC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._131\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._132:\n"
+ " .align 2, 0\n"
+ "._131:\n"
+ " .word DebugScript_081C23E2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C1C4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._133\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word DebugScript_081C23E6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C1DC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._135\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._136:\n"
+ " .align 2, 0\n"
+ "._135:\n"
+ " .word DebugScript_081C23F6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C1F4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._137\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._138:\n"
+ " .align 2, 0\n"
+ "._137:\n"
+ " .word DebugScript_081C2482\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C20C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._139\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word DebugScript_081C23FD\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C224()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._141\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word DebugScript_081C2518\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C23C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._143\n"
+ " bl ScriptContext1_SetupScript\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._144:\n"
+ " .align 2, 0\n"
+ "._143:\n"
+ " .word DebugScript_081C2507\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ContestGraphics_Show()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._145\n"
+ " ldr r0, ._145 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._146:\n"
+ " .align 2, 0\n"
+ "._145:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C280+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C280()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._147 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._148\n"
+ "._147:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_808F168\n"
+ " ldr r0, ._149\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._149 + 4\n"
+ " ldr r0, ._149 + 8\n"
+ " str r0, [r1, #0x8]\n"
+ " mov r0, #0x1\n"
+ "._148:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._150:\n"
+ " .align 2, 0\n"
+ "._149:\n"
+ " .word CB2_ContestPainting+1\n"
+ " .word gMain\n"
+ " .word debug_sub_808B868+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_MuseumGraphics_Show()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._151\n"
+ " ldr r0, ._151 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._152:\n"
+ " .align 2, 0\n"
+ "._151:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C2E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C2E4()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._153 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._154\n"
+ "._153:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_808F168\n"
+ " ldr r0, ._155\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._155 + 4\n"
+ " ldr r0, ._155 + 8\n"
+ " str r0, [r1, #0x8]\n"
+ " mov r0, #0x1\n"
+ "._154:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._156:\n"
+ " .align 2, 0\n"
+ "._155:\n"
+ " .word CB2_ContestPainting+1\n"
+ " .word gMain\n"
+ " .word debug_sub_808B868+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C31C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._157\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._157 + 4\n"
+ " ldr r0, ._157 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word gUnknown_Debug_083C2828\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C36C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C36C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._159 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._162\n"
+ "._159:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._161 @cond_branch\n"
+ " ldr r2, ._163\n"
+ " ldr r0, ._163 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._162\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C2828\n"
+ "._161:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._162:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C3B0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._165\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._165 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._165 + 8\n"
+ " ldr r0, ._165 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._166:\n"
+ " .align 2, 0\n"
+ "._165:\n"
+ " .word gUnknown_Debug_083C2938\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C408()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._167\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._167 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._167 + 8\n"
+ " ldr r0, ._167 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._168:\n"
+ " .align 2, 0\n"
+ "._167:\n"
+ " .word gUnknown_Debug_083C2A48\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C460()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._169\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._169 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._169 + 8\n"
+ " ldr r0, ._169 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._170:\n"
+ " .align 2, 0\n"
+ "._169:\n"
+ " .word gUnknown_Debug_083C2B4C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C4B8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._171\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._171 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._171 + 8\n"
+ " ldr r0, ._171 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word gUnknown_Debug_083C2C80\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C510()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._173\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._173 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._173 + 8\n"
+ " ldr r0, ._173 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._174:\n"
+ " .align 2, 0\n"
+ "._173:\n"
+ " .word gUnknown_Debug_083C2D8C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C568()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._175\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._175 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._175 + 8\n"
+ " ldr r0, ._175 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._176:\n"
+ " .align 2, 0\n"
+ "._175:\n"
+ " .word gUnknown_Debug_083C2EB0\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C5C0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._177\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._177 + 4\n"
+ " mov r0, #0x6\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._177 + 8\n"
+ " ldr r0, ._177 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._178:\n"
+ " .align 2, 0\n"
+ "._177:\n"
+ " .word gUnknown_Debug_083C2FE0\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C618()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._179\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._179 + 4\n"
+ " mov r0, #0x7\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._179 + 8\n"
+ " ldr r0, ._179 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._180:\n"
+ " .align 2, 0\n"
+ "._179:\n"
+ " .word gUnknown_Debug_083C3100\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C670()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._181\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " ldr r1, ._181 + 4\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._181 + 8\n"
+ " ldr r0, ._181 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gUnknown_Debug_083C3194\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C6C8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._186\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808C714\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808C764\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._183 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._184 @cond_branch\n"
+ "._183:\n"
+ " mov r0, #0x0\n"
+ " b ._185\n"
+ "._187:\n"
+ " .align 2, 0\n"
+ "._186:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._184:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._185:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C714()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._191\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._190 @cond_branch\n"
+ " ldr r0, ._191 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._189 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._190\n"
+ "._192:\n"
+ " .align 2, 0\n"
+ "._191:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C31DC+0xa\n"
+ "._189:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._190:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C764()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._195\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._193 @cond_branch\n"
+ " ldr r0, ._195 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._194:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._194 @cond_branch\n"
+ "._193:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._196:\n"
+ " .align 2, 0\n"
+ "._195:\n"
+ " .word gUnknown_Debug_083C31DC\n"
+ " .word gUnknown_Debug_083C31DC+0xa\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C7C8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._197\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._197 + 4\n"
+ " ldr r0, ._197 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._198:\n"
+ " .align 2, 0\n"
+ "._197:\n"
+ " .word gUnknown_Debug_083C1CE8\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808C818+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C818()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._199 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._202\n"
+ "._199:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._201 @cond_branch\n"
+ " ldr r2, ._203\n"
+ " ldr r0, ._203 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._202\n"
+ "._204:\n"
+ " .align 2, 0\n"
+ "._203:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C1CE8\n"
+ "._201:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._202:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C85C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._205\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._205 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._205 + 8\n"
+ " ldr r0, ._205 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word gUnknown_Debug_083C1E0C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C8B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._207\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._207 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._207 + 8\n"
+ " ldr r0, ._207 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._208:\n"
+ " .align 2, 0\n"
+ "._207:\n"
+ " .word gUnknown_Debug_083C1F38\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C90C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._209\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._209 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._209 + 8\n"
+ " ldr r0, ._209 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._210:\n"
+ " .align 2, 0\n"
+ "._209:\n"
+ " .word gUnknown_Debug_083C206C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C964()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._211\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._211 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._211 + 8\n"
+ " ldr r0, ._211 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._212:\n"
+ " .align 2, 0\n"
+ "._211:\n"
+ " .word gUnknown_Debug_083C2190\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C9BC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._213\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._213 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._213 + 8\n"
+ " ldr r0, ._213 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word gUnknown_Debug_083C2264\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CA14()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._215\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._215 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._215 + 8\n"
+ " ldr r0, ._215 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._216:\n"
+ " .align 2, 0\n"
+ "._215:\n"
+ " .word gUnknown_Debug_083C2370\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CA6C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._217\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._217 + 4\n"
+ " mov r0, #0x6\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._217 + 8\n"
+ " ldr r0, ._217 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._218:\n"
+ " .align 2, 0\n"
+ "._217:\n"
+ " .word gUnknown_Debug_083C248C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CAC4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._219\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._219 + 4\n"
+ " mov r0, #0x7\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._219 + 8\n"
+ " ldr r0, ._219 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._220:\n"
+ " .align 2, 0\n"
+ "._219:\n"
+ " .word gUnknown_Debug_083C259C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CB1C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._221\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._221 + 4\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._221 + 8\n"
+ " ldr r0, ._221 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._222:\n"
+ " .align 2, 0\n"
+ "._221:\n"
+ " .word gUnknown_Debug_083C26C8\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CB74()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._226\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808CBC0\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808CC10\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._223 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._224 @cond_branch\n"
+ "._223:\n"
+ " mov r0, #0x0\n"
+ " b ._225\n"
+ "._227:\n"
+ " .align 2, 0\n"
+ "._226:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._224:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._225:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CBC0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._231\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._230 @cond_branch\n"
+ " ldr r0, ._231 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._229 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._230\n"
+ "._232:\n"
+ " .align 2, 0\n"
+ "._231:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C2710+0xa\n"
+ "._229:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._230:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CC10()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._235\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._233 @cond_branch\n"
+ " ldr r0, ._235 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._234:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._234 @cond_branch\n"
+ "._233:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._236:\n"
+ " .align 2, 0\n"
+ "._235:\n"
+ " .word gUnknown_Debug_083C2710\n"
+ " .word gUnknown_Debug_083C2710+0xa\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CC74()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._237\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " ldr r1, ._237 + 4\n"
+ " ldr r0, ._237 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._238:\n"
+ " .align 2, 0\n"
+ "._237:\n"
+ " .word gUnknown_Debug_083C1ADC\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CCC4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CCC4()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._239 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._242\n"
+ "._239:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._241 @cond_branch\n"
+ " ldr r2, ._243\n"
+ " ldr r0, ._243 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._242\n"
+ "._244:\n"
+ " .align 2, 0\n"
+ "._243:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C1ADC\n"
+ "._241:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._242:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CD08()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._245\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldr r0, ._245 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._245 + 8\n"
+ " ldr r0, ._245 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._246:\n"
+ " .align 2, 0\n"
+ "._245:\n"
+ " .word gUnknown_Debug_083C1B7C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CD60()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._247\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._247 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._247 + 8\n"
+ " ldr r0, ._247 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._248:\n"
+ " .align 2, 0\n"
+ "._247:\n"
+ " .word gUnknown_Debug_083C1BF0\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CDB8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._249\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl InitMenu\n"
+ " ldr r1, ._249 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._249 + 8\n"
+ " ldr r0, ._249 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._250:\n"
+ " .align 2, 0\n"
+ "._249:\n"
+ " .word gUnknown_Debug_083C1C2C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CE10()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._254\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808CE5C\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808CEAC\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._251 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._252 @cond_branch\n"
+ "._251:\n"
+ " mov r0, #0x0\n"
+ " b ._253\n"
+ "._255:\n"
+ " .align 2, 0\n"
+ "._254:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._252:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._253:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CE5C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._259\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._258 @cond_branch\n"
+ " ldr r0, ._259 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._257 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._258\n"
+ "._260:\n"
+ " .align 2, 0\n"
+ "._259:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C1C34+0x4\n"
+ "._257:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._258:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CEAC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._263\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._261 @cond_branch\n"
+ " ldr r0, ._263 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._262:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._262 @cond_branch\n"
+ "._261:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._264:\n"
+ " .align 2, 0\n"
+ "._263:\n"
+ " .word gUnknown_Debug_083C1C34\n"
+ " .word gUnknown_Debug_083C1C34+0x4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CF10()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._265\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._265 + 4\n"
+ " ldr r0, ._265 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._266:\n"
+ " .align 2, 0\n"
+ "._265:\n"
+ " .word gUnknown_Debug_083C1330\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808CF60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CF60()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._267 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._270\n"
+ "._267:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._269 @cond_branch\n"
+ " ldr r2, ._271\n"
+ " ldr r0, ._271 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._270\n"
+ "._272:\n"
+ " .align 2, 0\n"
+ "._271:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C1330\n"
+ "._269:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._270:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CFA4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._273\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldr r0, ._273 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._273 + 8\n"
+ " ldr r0, ._273 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._274:\n"
+ " .align 2, 0\n"
+ "._273:\n"
+ " .word gUnknown_Debug_083C13D8\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CFFC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._275\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._275 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._275 + 8\n"
+ " ldr r0, ._275 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._276:\n"
+ " .align 2, 0\n"
+ "._275:\n"
+ " .word gUnknown_Debug_083C1465\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D054()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._277\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._277 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._277 + 8\n"
+ " ldr r0, ._277 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._278:\n"
+ " .align 2, 0\n"
+ "._277:\n"
+ " .word gUnknown_Debug_083C1503\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D0AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._279\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._279 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._279 + 8\n"
+ " ldr r0, ._279 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._280:\n"
+ " .align 2, 0\n"
+ "._279:\n"
+ " .word gUnknown_Debug_083C158A\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D104()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._281\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._281 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._281 + 8\n"
+ " ldr r0, ._281 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._282:\n"
+ " .align 2, 0\n"
+ "._281:\n"
+ " .word gUnknown_Debug_083C1647\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D15C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._283\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._283 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._283 + 8\n"
+ " ldr r0, ._283 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._284:\n"
+ " .align 2, 0\n"
+ "._283:\n"
+ " .word gUnknown_Debug_083C1712\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D1B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._285\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._285 + 4\n"
+ " mov r0, #0x6\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._285 + 8\n"
+ " ldr r0, ._285 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._286:\n"
+ " .align 2, 0\n"
+ "._285:\n"
+ " .word gUnknown_Debug_083C17F8\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D20C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._287\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._287 + 4\n"
+ " mov r0, #0x7\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._287 + 8\n"
+ " ldr r0, ._287 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._288:\n"
+ " .align 2, 0\n"
+ "._287:\n"
+ " .word gUnknown_Debug_083C18B8\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D264()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._289\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl InitMenu\n"
+ " ldr r1, ._289 + 4\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._289 + 8\n"
+ " ldr r0, ._289 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._290:\n"
+ " .align 2, 0\n"
+ "._289:\n"
+ " .word gDebug_0x83C1974\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D2BC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._294\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808D308\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808D358\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._291 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._292 @cond_branch\n"
+ "._291:\n"
+ " mov r0, #0x0\n"
+ " b ._293\n"
+ "._295:\n"
+ " .align 2, 0\n"
+ "._294:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._292:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._293:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D308()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._299\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._298 @cond_branch\n"
+ " ldr r0, ._299 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._297 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._298\n"
+ "._300:\n"
+ " .align 2, 0\n"
+ "._299:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C19C6\n"
+ "._297:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._298:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D358()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._303\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._301 @cond_branch\n"
+ " ldr r0, ._303 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._302:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._302 @cond_branch\n"
+ "._301:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._304:\n"
+ " .align 2, 0\n"
+ "._303:\n"
+ " .word gUnknown_Debug_083C19BC\n"
+ " .word gUnknown_Debug_083C19C6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D3BC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._305\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._305 + 4\n"
+ " ldr r0, ._305 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._306:\n"
+ " .align 2, 0\n"
+ "._305:\n"
+ " .word gUnknown_Debug_083C105C\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D40C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D40C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._307 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._310\n"
+ "._307:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._309 @cond_branch\n"
+ " ldr r2, ._311\n"
+ " ldr r0, ._311 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._310\n"
+ "._312:\n"
+ " .align 2, 0\n"
+ "._311:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C105C\n"
+ "._309:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._310:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D450()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._313\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._313 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._313 + 8\n"
+ " ldr r0, ._313 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._314:\n"
+ " .align 2, 0\n"
+ "._313:\n"
+ " .word gUnknown_Debug_083C10BD\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D500+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D4A8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._315\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._315 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._315 + 8\n"
+ " ldr r0, ._315 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._316:\n"
+ " .align 2, 0\n"
+ "._315:\n"
+ " .word gUnknown_Debug_083C1149\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D500+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D500()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._320\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808D54C\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808D59C\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._317 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._318 @cond_branch\n"
+ "._317:\n"
+ " mov r0, #0x0\n"
+ " b ._319\n"
+ "._321:\n"
+ " .align 2, 0\n"
+ "._320:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._318:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._319:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D54C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._325\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._324 @cond_branch\n"
+ " ldr r0, ._325 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._323 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._324\n"
+ "._326:\n"
+ " .align 2, 0\n"
+ "._325:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C1194+0x2\n"
+ "._323:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._324:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D59C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._329\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._327 @cond_branch\n"
+ " ldr r0, ._329 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._328:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._328 @cond_branch\n"
+ "._327:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._330:\n"
+ " .align 2, 0\n"
+ "._329:\n"
+ " .word gUnknown_Debug_083C1194\n"
+ " .word gUnknown_Debug_083C1194+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D600()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._331\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._331 + 4\n"
+ " ldr r0, ._331 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gUnknown_Debug_083C11CC\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D650+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D650()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._333 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._336\n"
+ "._333:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._335 @cond_branch\n"
+ " ldr r2, ._337\n"
+ " ldr r0, ._337 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._336\n"
+ "._338:\n"
+ " .align 2, 0\n"
+ "._337:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C11CC\n"
+ "._335:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._336:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D694()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._339\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._339 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._339 + 8\n"
+ " ldr r0, ._339 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._340:\n"
+ " .align 2, 0\n"
+ "._339:\n"
+ " .word gUnknown_Debug_083C1212\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D744+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D6EC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._341\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._341 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._341 + 8\n"
+ " ldr r0, ._341 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._342:\n"
+ " .align 2, 0\n"
+ "._341:\n"
+ " .word gUnknown_Debug_083C1288\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D744+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D744()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._346\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808D790\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808D7E0\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._343 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._344 @cond_branch\n"
+ "._343:\n"
+ " mov r0, #0x0\n"
+ " b ._345\n"
+ "._347:\n"
+ " .align 2, 0\n"
+ "._346:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._344:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._345:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D790()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._351\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._350 @cond_branch\n"
+ " ldr r0, ._351 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._349 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._350\n"
+ "._352:\n"
+ " .align 2, 0\n"
+ "._351:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C12D0+0x2\n"
+ "._349:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._350:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D7E0()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._355\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._353 @cond_branch\n"
+ " ldr r0, ._355 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._354:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._354 @cond_branch\n"
+ "._353:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._356:\n"
+ " .align 2, 0\n"
+ "._355:\n"
+ " .word gUnknown_Debug_083C12D0\n"
+ " .word gUnknown_Debug_083C12D0+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D844()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x3\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._357\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1b\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl InitMenu\n"
+ " ldr r1, ._357 + 4\n"
+ " ldr r0, ._357 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._358:\n"
+ " .align 2, 0\n"
+ "._357:\n"
+ " .word gUnknown_Debug_083C1A78\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D894+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D894()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r3, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r3, r0\n"
+ " bne ._359 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._362\n"
+ "._359:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r3, r0\n"
+ " beq ._361 @cond_branch\n"
+ " ldr r2, ._363\n"
+ " ldr r1, ._363 + 4\n"
+ " lsl r0, r3, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0, #0x4]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._362\n"
+ "._364:\n"
+ " .align 2, 0\n"
+ "._363:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C1A78\n"
+ "._361:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._362:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D8D8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._365\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r0, ._365 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._365 + 8\n"
+ " ldr r0, ._365 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._366:\n"
+ " .align 2, 0\n"
+ "._365:\n"
+ " .word gUnknown_Debug_083C1A9C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808D930+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D930()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._370\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808D97C\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808D9CC\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._367 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._368 @cond_branch\n"
+ "._367:\n"
+ " mov r0, #0x0\n"
+ " b ._369\n"
+ "._371:\n"
+ " .align 2, 0\n"
+ "._370:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._368:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._369:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D97C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._375\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._374 @cond_branch\n"
+ " ldr r0, ._375 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r1, r1, r2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrh r4, [r1]\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._373 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._374\n"
+ "._376:\n"
+ " .align 2, 0\n"
+ "._375:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083C1AAC+0x2\n"
+ "._373:\n"
+ " add r0, r4, #0\n"
+ " bl FlagReset\n"
+ "._374:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D9CC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._379\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._377 @cond_branch\n"
+ " ldr r0, ._379 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._378:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " neg r2, r0\n"
+ " orr r2, r2, r0\n"
+ " lsr r2, r2, #0x1f\n"
+ " mov r0, #0x1c\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F2E0\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._378 @cond_branch\n"
+ "._377:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._380:\n"
+ " .align 2, 0\n"
+ "._379:\n"
+ " .word gUnknown_Debug_083C1AAC\n"
+ " .word gUnknown_Debug_083C1AAC+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DA30()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._381\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl InitMenu\n"
+ " ldr r1, ._381 + 4\n"
+ " ldr r0, ._381 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._382:\n"
+ " .align 2, 0\n"
+ "._381:\n"
+ " .word gUnknown_Debug_083C103A\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DA80+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DA80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " bl debug_sub_808DAD4\n"
+ " bl debug_sub_808DABC\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._383 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._384 @cond_branch\n"
+ "._383:\n"
+ " mov r0, #0x0\n"
+ " b ._385\n"
+ "._384:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._385:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DABC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._386\n"
+ " ldrh r2, [r0]\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " bl debug_sub_808F31C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._387:\n"
+ " .align 2, 0\n"
+ "._386:\n"
+ " .word gScriptResult\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DAD4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._390\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._388 @cond_branch\n"
+ " mov r2, #0x1\n"
+ " b ._389\n"
+ "._391:\n"
+ " .align 2, 0\n"
+ "._390:\n"
+ " .word gMain\n"
+ "._388:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._392 @cond_branch\n"
+ " ldr r2, ._393\n"
+ "._389:\n"
+ " ldr r1, ._393 + 4\n"
+ " ldrh r0, [r1]\n"
+ " add r0, r2, r0\n"
+ " strh r0, [r1]\n"
+ "._392:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._394:\n"
+ " .align 2, 0\n"
+ "._393:\n"
+ " .word 0xffff\n"
+ " .word gScriptResult\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DB0C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._395\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._395 + 4\n"
+ " ldr r0, ._395 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._396:\n"
+ " .align 2, 0\n"
+ "._395:\n"
+ " .word gUnknown_Debug_083C3D08\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DB5C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DB5C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._397 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._400\n"
+ "._397:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._399 @cond_branch\n"
+ " ldr r2, ._401\n"
+ " ldr r0, ._401 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._400\n"
+ "._402:\n"
+ " .align 2, 0\n"
+ "._401:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C3D08\n"
+ "._399:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._400:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DBA0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._403\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldr r0, ._403 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._403 + 8\n"
+ " ldr r0, ._403 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._404:\n"
+ " .align 2, 0\n"
+ "._403:\n"
+ " .word gUnknown_Debug_083C432C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DBF8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._405\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._405 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._405 + 8\n"
+ " ldr r0, ._405 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._406:\n"
+ " .align 2, 0\n"
+ "._405:\n"
+ " .word gUnknown_Debug_083C436C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DC50()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._407\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._407 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._407 + 8\n"
+ " ldr r0, ._407 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._408:\n"
+ " .align 2, 0\n"
+ "._407:\n"
+ " .word gUnknown_Debug_083C43B4\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DCA8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._409\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._409 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._409 + 8\n"
+ " ldr r0, ._409 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._410:\n"
+ " .align 2, 0\n"
+ "._409:\n"
+ " .word gUnknown_Debug_083C43FC\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DD00()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._411\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._411 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._411 + 8\n"
+ " ldr r0, ._411 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._412:\n"
+ " .align 2, 0\n"
+ "._411:\n"
+ " .word gUnknown_Debug_083C4444\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DD58()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._413\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._413 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._413 + 8\n"
+ " ldr r0, ._413 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._414:\n"
+ " .align 2, 0\n"
+ "._413:\n"
+ " .word gUnknown_Debug_083C448C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DDB0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._415\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._415 + 4\n"
+ " mov r0, #0x6\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._415 + 8\n"
+ " ldr r0, ._415 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._416:\n"
+ " .align 2, 0\n"
+ "._415:\n"
+ " .word gUnknown_Debug_83C44C4\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DE08()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._417\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._417 + 4\n"
+ " mov r0, #0x7\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._417 + 8\n"
+ " ldr r0, ._417 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._418:\n"
+ " .align 2, 0\n"
+ "._417:\n"
+ " .word gUnknown_Debug_83C44EC\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DE60()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._419\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._419 + 4\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._419 + 8\n"
+ " ldr r0, ._419 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._420:\n"
+ " .align 2, 0\n"
+ "._419:\n"
+ " .word gUnknown_Debug_083C4534\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DEB8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._424\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808DF64\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808DF04\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._421 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._422 @cond_branch\n"
+ "._421:\n"
+ " mov r0, #0x0\n"
+ " b ._423\n"
+ "._425:\n"
+ " .align 2, 0\n"
+ "._424:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._422:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._423:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DF04()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._428\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._426 @cond_branch\n"
+ " ldr r0, ._428 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._427:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl VarGet\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F31C\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._427 @cond_branch\n"
+ "._426:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._429:\n"
+ " .align 2, 0\n"
+ "._428:\n"
+ " .word gUnknown_Debug_083C457C\n"
+ " .word gUnknown_Debug_083C457C+0xa\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DF64()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._432\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._430 @cond_branch\n"
+ " mov r5, #0x1\n"
+ " b ._431\n"
+ "._433:\n"
+ " .align 2, 0\n"
+ "._432:\n"
+ " .word gMain\n"
+ "._430:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._434 @cond_branch\n"
+ " ldr r5, ._435\n"
+ "._431:\n"
+ " ldr r1, ._435 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r4, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl VarGet\n"
+ " add r1, r0, #0\n"
+ " add r1, r5, r1\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl VarSet\n"
+ "._434:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._436:\n"
+ " .align 2, 0\n"
+ "._435:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_083C457C+0xa\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DFC0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._437\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._437 + 4\n"
+ " ldr r0, ._437 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._438:\n"
+ " .align 2, 0\n"
+ "._437:\n"
+ " .word gUnknown_Debug_083C377C\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E010+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E010()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._439 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._442\n"
+ "._439:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._441 @cond_branch\n"
+ " ldr r2, ._443\n"
+ " ldr r0, ._443 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._442\n"
+ "._444:\n"
+ " .align 2, 0\n"
+ "._443:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C377C\n"
+ "._441:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._442:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E054()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._445\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r0, ._445 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._445 + 8\n"
+ " ldr r0, ._445 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._446:\n"
+ " .align 2, 0\n"
+ "._445:\n"
+ " .word gUnknown_Debug_083C3AA0\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E0AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._447\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl InitMenu\n"
+ " ldr r1, ._447 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._447 + 8\n"
+ " ldr r0, ._447 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._448:\n"
+ " .align 2, 0\n"
+ "._447:\n"
+ " .word gUnknown_Debug_83C3AE0\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E104()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._449\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._449 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._449 + 8\n"
+ " ldr r0, ._449 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._450:\n"
+ " .align 2, 0\n"
+ "._449:\n"
+ " .word gUnknown_Debug_83C3B28\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E15C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._451\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._451 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._451 + 8\n"
+ " ldr r0, ._451 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._452:\n"
+ " .align 2, 0\n"
+ "._451:\n"
+ " .word gUnknown_Debug_83C3B70\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E1B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._453\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._453 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._453 + 8\n"
+ " ldr r0, ._453 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._454:\n"
+ " .align 2, 0\n"
+ "._453:\n"
+ " .word gUnknown_Debug_83C3BB8\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E20C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._455\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._455 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._455 + 8\n"
+ " ldr r0, ._455 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._456:\n"
+ " .align 2, 0\n"
+ "._455:\n"
+ " .word gUnknown_Debug_83C3C00\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E264()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._460\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808E310\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808E2B0\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._457 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._458 @cond_branch\n"
+ "._457:\n"
+ " mov r0, #0x0\n"
+ " b ._459\n"
+ "._461:\n"
+ " .align 2, 0\n"
+ "._460:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._458:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._459:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E2B0()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._464\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._462 @cond_branch\n"
+ " ldr r0, ._464 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._463:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl VarGet\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F31C\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._463 @cond_branch\n"
+ "._462:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._465:\n"
+ " .align 2, 0\n"
+ "._464:\n"
+ " .word gUnknown_Debug_083C3C48\n"
+ " .word gUnknown_Debug_083C3C48+0x6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E310()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._468\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._466 @cond_branch\n"
+ " mov r5, #0x1\n"
+ " b ._467\n"
+ "._469:\n"
+ " .align 2, 0\n"
+ "._468:\n"
+ " .word gMain\n"
+ "._466:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._470 @cond_branch\n"
+ " ldr r5, ._471\n"
+ "._467:\n"
+ " ldr r1, ._471 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r4, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl VarGet\n"
+ " add r1, r0, #0\n"
+ " add r1, r5, r1\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl VarSet\n"
+ "._470:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._472:\n"
+ " .align 2, 0\n"
+ "._471:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_083C3C48+0x6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E36C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._473\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl InitMenu\n"
+ " ldr r1, ._473 + 4\n"
+ " ldr r0, ._473 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._474:\n"
+ " .align 2, 0\n"
+ "._473:\n"
+ " .word gUnknown_Debug_083C32AC\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E3BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E3BC()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._475 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._478\n"
+ "._475:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._477 @cond_branch\n"
+ " ldr r2, ._479\n"
+ " ldr r0, ._479 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._478\n"
+ "._480:\n"
+ " .align 2, 0\n"
+ "._479:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C32AC\n"
+ "._477:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._478:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E400()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._481\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl InitMenu\n"
+ " ldr r0, ._481 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._481 + 8\n"
+ " ldr r0, ._481 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._482:\n"
+ " .align 2, 0\n"
+ "._481:\n"
+ " .word gUnknown_Debug_083C347C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E458()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._483\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._483 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._483 + 8\n"
+ " ldr r0, ._483 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._484:\n"
+ " .align 2, 0\n"
+ "._483:\n"
+ " .word gUnknown_Debug_083C3494\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E4B0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._485\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x6\n"
+ " bl InitMenu\n"
+ " ldr r1, ._485 + 4\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._485 + 8\n"
+ " ldr r0, ._485 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._486:\n"
+ " .align 2, 0\n"
+ "._485:\n"
+ " .word gUnknown_Debug_083C34A4\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E508()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._487\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r1, ._487 + 4\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._487 + 8\n"
+ " ldr r0, ._487 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._488:\n"
+ " .align 2, 0\n"
+ "._487:\n"
+ " .word gUnknown_Debug_083C34D4\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E560()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._489\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x5\n"
+ " bl InitMenu\n"
+ " ldr r1, ._489 + 4\n"
+ " mov r0, #0x4\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._489 + 8\n"
+ " ldr r0, ._489 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word gUnknown_Debug_083C351C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E5B8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._494\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808E604\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808E660\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._491 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._492 @cond_branch\n"
+ "._491:\n"
+ " mov r0, #0x0\n"
+ " b ._493\n"
+ "._495:\n"
+ " .align 2, 0\n"
+ "._494:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._492:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._493:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E604()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._498\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._496 @cond_branch\n"
+ " mov r5, #0x1\n"
+ " b ._497\n"
+ "._499:\n"
+ " .align 2, 0\n"
+ "._498:\n"
+ " .word gMain\n"
+ "._496:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._500 @cond_branch\n"
+ " ldr r5, ._501\n"
+ "._497:\n"
+ " ldr r1, ._501 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r4, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl VarGet\n"
+ " add r1, r0, #0\n"
+ " add r1, r5, r1\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl VarSet\n"
+ "._500:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._502:\n"
+ " .align 2, 0\n"
+ "._501:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_083C3544+0x6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E660()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._505\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._503 @cond_branch\n"
+ " ldr r0, ._505 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._504:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl VarGet\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F31C\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._504 @cond_branch\n"
+ "._503:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._506:\n"
+ " .align 2, 0\n"
+ "._505:\n"
+ " .word gUnknown_Debug_083C3544\n"
+ " .word gUnknown_Debug_083C3544+0x6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E6C0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._507\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._507 + 4\n"
+ " ldr r0, ._507 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._508:\n"
+ " .align 2, 0\n"
+ "._507:\n"
+ " .word gUnknown_Debug_083C4644\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E710+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E710()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._509 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._512\n"
+ "._509:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._511 @cond_branch\n"
+ " ldr r2, ._513\n"
+ " ldr r0, ._513 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._512\n"
+ "._514:\n"
+ " .align 2, 0\n"
+ "._513:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C4644\n"
+ "._511:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._512:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E754()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._515\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._515 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._515 + 8\n"
+ " ldr r0, ._515 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word gUnknown_Debug_083C470C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E804+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E7AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._517\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._517 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._517 + 8\n"
+ " ldr r0, ._517 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._518:\n"
+ " .align 2, 0\n"
+ "._517:\n"
+ " .word gUnknown_Debug_083C4754C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E804+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E804()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._522\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808E850\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808E8AC\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._519 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._520 @cond_branch\n"
+ "._519:\n"
+ " mov r0, #0x0\n"
+ " b ._521\n"
+ "._523:\n"
+ " .align 2, 0\n"
+ "._522:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._520:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._521:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E850()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._526\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._524 @cond_branch\n"
+ " mov r5, #0x1\n"
+ " b ._525\n"
+ "._527:\n"
+ " .align 2, 0\n"
+ "._526:\n"
+ " .word gMain\n"
+ "._524:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._528 @cond_branch\n"
+ " ldr r5, ._529\n"
+ "._525:\n"
+ " ldr r1, ._529 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r4, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl VarGet\n"
+ " add r1, r0, #0\n"
+ " add r1, r5, r1\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl VarSet\n"
+ "._528:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._530:\n"
+ " .align 2, 0\n"
+ "._529:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_083C478C+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E8AC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._533\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._531 @cond_branch\n"
+ " ldr r0, ._533 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._532:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl VarGet\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F31C\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._532 @cond_branch\n"
+ "._531:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._534:\n"
+ " .align 2, 0\n"
+ "._533:\n"
+ " .word gUnknown_Debug_083C478C\n"
+ " .word gUnknown_Debug_083C478C+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E90C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._535\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x17\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x2\n"
+ " bl InitMenu\n"
+ " ldr r1, ._535 + 4\n"
+ " ldr r0, ._535 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._536:\n"
+ " .align 2, 0\n"
+ "._535:\n"
+ " .word gUnknown_Debug_083C35C4\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808E95C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E95C()
+{
+ asm(
+ " push {lr}\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bne ._537 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._540\n"
+ "._537:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._539 @cond_branch\n"
+ " ldr r2, ._541\n"
+ " ldr r0, ._541 + 4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " b ._540\n"
+ "._542:\n"
+ " .align 2, 0\n"
+ "._541:\n"
+ " .word gCallback_03004AE8\n"
+ " .word gUnknown_Debug_083C35C4\n"
+ "._539:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._540:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E9A0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._543\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl PrintMenuItems\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " ldr r0, ._543 + 4\n"
+ " strb r4, [r0]\n"
+ " ldr r1, ._543 + 8\n"
+ " ldr r0, ._543 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._544:\n"
+ " .align 2, 0\n"
+ "._543:\n"
+ " .word gUnknown_Debug_083C369C\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808EA50+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E9F8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r3, ._545\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1c\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x7\n"
+ " bl InitMenu\n"
+ " ldr r1, ._545 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._545 + 8\n"
+ " ldr r0, ._545 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._546:\n"
+ " .align 2, 0\n"
+ "._545:\n"
+ " .word gUnknown_Debug_083C36E4\n"
+ " .word gDebug_03000700+0xf\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808EA50+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EA50()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " add r1, r0, #0\n"
+ " ldr r5, ._550\n"
+ " ldrb r0, [r5]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " bl debug_sub_808EAFC\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_808EA9C\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._547 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._548 @cond_branch\n"
+ "._547:\n"
+ " mov r0, #0x0\n"
+ " b ._549\n"
+ "._551:\n"
+ " .align 2, 0\n"
+ "._550:\n"
+ " .word gDebug_03000700+0xf\n"
+ "._548:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._549:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EA9C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " ldr r0, ._554\n"
+ " add r0, r1, r0\n"
+ " ldrb r2, [r0]\n"
+ " cmp r5, r2\n"
+ " bcs ._552 @cond_branch\n"
+ " ldr r0, ._554 + 4\n"
+ " mov r8, r0\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r7, r0, #0x1\n"
+ " add r6, r2, #0\n"
+ "._553:\n"
+ " lsl r0, r5, #0x1\n"
+ " add r4, r0, #1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " add r0, r0, r7\n"
+ " add r0, r0, r8\n"
+ " ldrh r0, [r0]\n"
+ " bl VarGet\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl debug_sub_808F31C\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, r6\n"
+ " bcc ._553 @cond_branch\n"
+ "._552:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._555:\n"
+ " .align 2, 0\n"
+ "._554:\n"
+ " .word gUnknown_Debug_083C371C\n"
+ " .word gUnknown_Debug_083C371C+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EAFC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " ldr r0, ._558\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._556 @cond_branch\n"
+ " mov r5, #0x1\n"
+ " b ._557\n"
+ "._559:\n"
+ " .align 2, 0\n"
+ "._558:\n"
+ " .word gMain\n"
+ "._556:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._560 @cond_branch\n"
+ " ldr r5, ._561\n"
+ "._557:\n"
+ " ldr r1, ._561 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r4, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl VarGet\n"
+ " add r1, r0, #0\n"
+ " add r1, r5, r1\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " bl VarSet\n"
+ "._560:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._562:\n"
+ " .align 2, 0\n"
+ "._561:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_083C371C+0x2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EB58()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._563\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._563 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xb\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldr r1, ._563 + 8\n"
+ " ldr r0, ._563 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word gUnknown_Debug_083C47B2\n"
+ " .word gUnknown_Debug_083C47F0\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808EC10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EBB4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xd\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._565\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._565 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x5\n"
+ " bl PrintMenuItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xc\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x5\n"
+ " bl InitMenu\n"
+ " ldr r1, ._565 + 8\n"
+ " ldr r0, ._565 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gUnknown_Debug_083C4830\n"
+ " .word gUnknown_Debug_083C4888\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808EC5C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EC10()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._568 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._568 @cond_branch\n"
+ " ldr r1, ._570\n"
+ " lsl r0, r2, #0x18\n"
+ " asr r0, r0, #0x18\n"
+ " ldr r2, ._570 + 4\n"
+ " add r1, r1, r2\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._569\n"
+ "._571:\n"
+ " .align 2, 0\n"
+ "._570:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x13c8\n"
+ "._568:\n"
+ " mov r0, #0x0\n"
+ "._569:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EC5C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl ProcessMenuInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl GetMenuCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._573 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._573 @cond_branch\n"
+ " ldr r0, ._575\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x8\n"
+ " lsr r1, r1, #0x10\n"
+ " bl VarSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._574\n"
+ "._576:\n"
+ " .align 2, 0\n"
+ "._575:\n"
+ " .word 0x40a7\n"
+ "._573:\n"
+ " mov r0, #0x0\n"
+ "._574:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808ECA4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._577\n"
+ " ldr r0, ._577 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x4\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._578:\n"
+ " .align 2, 0\n"
+ "._577:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_808ECD0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808ECD0()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._579 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._580\n"
+ "._579:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x2\n"
+ " bl debug_sub_808F168\n"
+ " ldr r0, ._581\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._581 + 4\n"
+ " ldr r0, ._581 + 8\n"
+ " str r0, [r1, #0x8]\n"
+ " mov r0, #0x1\n"
+ "._580:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word CB2_ContestPainting+1\n"
+ " .word gMain\n"
+ " .word debug_sub_808B868+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_Config()
+{
+ asm(
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808ED0C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._590\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._584 @cond_branch\n"
+ " ldr r1, ._590 + 4\n"
+ " ldrh r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._584 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1]\n"
+ "._584:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._586 @cond_branch\n"
+ " ldr r3, ._590 + 4\n"
+ " ldrh r1, [r3]\n"
+ " ldr r0, ._590 + 8\n"
+ " cmp r1, r0\n"
+ " beq ._586 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r3]\n"
+ "._586:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._587 @cond_branch\n"
+ " ldr r1, ._590 + 4\n"
+ " ldrh r0, [r1]\n"
+ " cmp r0, #0xa\n"
+ " bls ._588 @cond_branch\n"
+ " sub r0, r0, #0xa\n"
+ " b ._589\n"
+ "._591:\n"
+ " .align 2, 0\n"
+ "._590:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700\n"
+ " .word 0x19b\n"
+ "._588:\n"
+ " mov r0, #0x1\n"
+ "._589:\n"
+ " strh r0, [r1]\n"
+ "._587:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._592 @cond_branch\n"
+ " ldr r2, ._595\n"
+ " ldrh r1, [r2]\n"
+ " ldr r0, ._595 + 4\n"
+ " cmp r1, r0\n"
+ " bhi ._593 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xa\n"
+ " b ._594\n"
+ "._596:\n"
+ " .align 2, 0\n"
+ "._595:\n"
+ " .word gDebug_03000700\n"
+ " .word 0x191\n"
+ "._593:\n"
+ " ldr r1, ._597\n"
+ " add r0, r1, #0\n"
+ "._594:\n"
+ " strh r0, [r2]\n"
+ "._592:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._598:\n"
+ " .align 2, 0\n"
+ "._597:\n"
+ " .word 0x19b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808ED9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._606\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._600 @cond_branch\n"
+ " ldr r1, ._606 + 4\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._600 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " str r0, [r1]\n"
+ "._600:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._602 @cond_branch\n"
+ " ldr r3, ._606 + 4\n"
+ " ldr r1, [r3]\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._602 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " str r0, [r3]\n"
+ "._602:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._603 @cond_branch\n"
+ " ldr r1, ._606 + 4\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, #0xf\n"
+ " bls ._604 @cond_branch\n"
+ " sub r0, r0, #0x10\n"
+ " b ._605\n"
+ "._607:\n"
+ " .align 2, 0\n"
+ "._606:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0x8\n"
+ "._604:\n"
+ " mov r0, #0x0\n"
+ "._605:\n"
+ " str r0, [r1]\n"
+ "._603:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._608 @cond_branch\n"
+ " ldr r3, ._611\n"
+ " ldr r1, [r3]\n"
+ " mov r0, #0x11\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " bhi ._609 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x10\n"
+ " b ._610\n"
+ "._612:\n"
+ " .align 2, 0\n"
+ "._611:\n"
+ " .word gDebug_03000700+0x8\n"
+ "._609:\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ "._610:\n"
+ " str r0, [r3]\n"
+ "._608:\n"
+ " ldrh r2, [r2, #0x2e]\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r1, #0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, r1\n"
+ " bne ._613 @cond_branch\n"
+ " ldr r1, ._614\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " str r0, [r1]\n"
+ "._613:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._615:\n"
+ " .align 2, 0\n"
+ "._614:\n"
+ " .word gDebug_03000700+0x8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EE3C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._622\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._617 @cond_branch\n"
+ " ldr r1, ._622 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._617 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._617:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._619 @cond_branch\n"
+ " ldr r1, ._622 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x5\n"
+ " beq ._619 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._619:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._620 @cond_branch\n"
+ " ldr r1, ._622 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._620:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._621 @cond_branch\n"
+ " ldr r1, ._622 + 4\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ "._621:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._623:\n"
+ " .align 2, 0\n"
+ "._622:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0xc\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EE9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._631\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._625 @cond_branch\n"
+ " ldr r1, ._631 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._625 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._625:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._627 @cond_branch\n"
+ " ldr r1, ._631 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0xf\n"
+ " beq ._627 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._627:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._628 @cond_branch\n"
+ " ldr r1, ._631 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0xa\n"
+ " bls ._629 @cond_branch\n"
+ " sub r0, r0, #0xa\n"
+ " b ._630\n"
+ "._632:\n"
+ " .align 2, 0\n"
+ "._631:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0xd\n"
+ "._629:\n"
+ " mov r0, #0x0\n"
+ "._630:\n"
+ " strb r0, [r1]\n"
+ "._628:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._633 @cond_branch\n"
+ " ldr r1, ._636\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._634 @cond_branch\n"
+ " add r0, r0, #0xa\n"
+ " b ._635\n"
+ "._637:\n"
+ " .align 2, 0\n"
+ "._636:\n"
+ " .word gDebug_03000700+0xd\n"
+ "._634:\n"
+ " mov r0, #0xf\n"
+ "._635:\n"
+ " strb r0, [r1]\n"
+ "._633:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EF14()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._645\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._639 @cond_branch\n"
+ " ldr r1, ._645 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._639 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._639:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._641 @cond_branch\n"
+ " ldr r1, ._645 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0xf\n"
+ " beq ._641 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._641:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " ldr r1, ._645 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0xa\n"
+ " bls ._643 @cond_branch\n"
+ " sub r0, r0, #0xa\n"
+ " b ._644\n"
+ "._646:\n"
+ " .align 2, 0\n"
+ "._645:\n"
+ " .word gMain\n"
+ " .word gDebug_03000700+0xe\n"
+ "._643:\n"
+ " mov r0, #0x0\n"
+ "._644:\n"
+ " strb r0, [r1]\n"
+ "._642:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._647 @cond_branch\n"
+ " ldr r1, ._650\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x5\n"
+ " bhi ._648 @cond_branch\n"
+ " add r0, r0, #0xa\n"
+ " b ._649\n"
+ "._651:\n"
+ " .align 2, 0\n"
+ "._650:\n"
+ " .word gDebug_03000700+0xe\n"
+ "._648:\n"
+ " mov r0, #0xf\n"
+ "._649:\n"
+ " strb r0, [r1]\n"
+ "._647:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EF8C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bgt ._653 @cond_branch\n"
+ " cmp r6, #0\n"
+ " blt ._653 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " ldr r0, ._656\n"
+ " mov r8, r0\n"
+ " ldr r4, ._656 + 4\n"
+ " mov r7, #0x7\n"
+ " mov r5, #0xf\n"
+ "._658:\n"
+ " sub r0, r7, r3\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, r8\n"
+ " ldr r2, [r1]\n"
+ " LSR r2, r0\n"
+ " and r2, r2, r5\n"
+ " cmp r2, #0x9\n"
+ " bhi ._654 @cond_branch\n"
+ " add r1, r3, r4\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xa1\n"
+ " b ._655\n"
+ "._657:\n"
+ " .align 2, 0\n"
+ "._656:\n"
+ " .word gDebug_03000700+0x8\n"
+ " .word gDebug_03000700+0x10\n"
+ "._654:\n"
+ " add r1, r3, r4\n"
+ " add r0, r2, #0\n"
+ " sub r0, r0, #0x4f\n"
+ "._655:\n"
+ " strb r0, [r1]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0x7\n"
+ " bls ._658 @cond_branch\n"
+ " ldr r0, ._666\n"
+ " mov r1, #0xff\n"
+ " strb r1, [r0, #0x8]\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ "._653:\n"
+ " mov r3, #0x0\n"
+ " ldr r7, ._666\n"
+ " ldr r5, ._666 + 4\n"
+ " ldr r2, ._666 + 8\n"
+ " mov r8, r2\n"
+ " add r4, r7, #0\n"
+ " mov r2, #0x0\n"
+ "._659:\n"
+ " add r1, r3, #1\n"
+ " add r0, r1, r4\n"
+ " strb r2, [r0]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " cmp r3, #0x9\n"
+ " bls ._659 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " ldrh r2, [r5]\n"
+ " mov r0, #0xb\n"
+ " add r1, r2, #0\n"
+ " mul r1, r1, r0\n"
+ " mov r2, r8\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._661 @cond_branch\n"
+ " ldr r0, ._666\n"
+ " mov ip, r0\n"
+ " mov r5, r8\n"
+ " add r4, r1, #0\n"
+ "._662:\n"
+ " add r1, r3, #1\n"
+ " mov r0, ip\n"
+ " add r2, r1, r0\n"
+ " add r0, r3, r4\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r2]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " add r0, r3, r4\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._661 @cond_branch\n"
+ " cmp r3, #0x9\n"
+ " bls ._662 @cond_branch\n"
+ "._661:\n"
+ " mov r0, #0xb1\n"
+ " strb r0, [r7]\n"
+ " mov r0, #0xb2\n"
+ " strb r0, [r7, #0xb]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r7, #0xc]\n"
+ " cmp r6, #0x2\n"
+ " bgt ._664 @cond_branch\n"
+ " cmp r6, #0\n"
+ " blt ._664 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " b ._665\n"
+ "._667:\n"
+ " .align 2, 0\n"
+ "._666:\n"
+ " .word gDebug_03000700+0x10\n"
+ " .word gDebug_03000700\n"
+ " .word gSpeciesNames\n"
+ "._664:\n"
+ " ldr r0, ._672\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ "._665:\n"
+ " ldr r5, ._672\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r5, #0x3]\n"
+ " ldr r4, ._672 + 4\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5]\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x1]\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x2]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " cmp r6, #0x1\n"
+ " beq ._668 @cond_branch\n"
+ " cmp r6, #0x1\n"
+ " bgt ._669 @cond_branch\n"
+ " cmp r6, #0\n"
+ " beq ._670 @cond_branch\n"
+ " b ._679\n"
+ "._673:\n"
+ " .align 2, 0\n"
+ "._672:\n"
+ " .word gDebug_03000700+0x10\n"
+ " .word gDebug_03000700\n"
+ "._669:\n"
+ " cmp r6, #0x2\n"
+ " beq ._674 @cond_branch\n"
+ " b ._679\n"
+ "._670:\n"
+ " ldr r4, ._677\n"
+ " b ._676\n"
+ "._678:\n"
+ " .align 2, 0\n"
+ "._677:\n"
+ " .word gDebug_03000700+0xc\n"
+ "._668:\n"
+ " ldr r4, ._680\n"
+ "._676:\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5]\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x1]\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x2]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " b ._679\n"
+ "._681:\n"
+ " .align 2, 0\n"
+ "._680:\n"
+ " .word gDebug_03000700+0xd\n"
+ "._674:\n"
+ " ldr r4, ._682\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5]\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x1]\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x2]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ "._679:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._683:\n"
+ " .align 2, 0\n"
+ "._682:\n"
+ " .word gDebug_03000700+0xe\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F168()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " ldr r4, ._686\n"
+ " ldr r0, ._686 + 4\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4, #0x8]\n"
+ " ldr r0, ._686 + 8\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r4, #0x4]\n"
+ " ldr r0, ._686 + 12\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r4]\n"
+ " cmp r1, #0x5\n"
+ " bls ._684 @cond_branch\n"
+ " b ._707\n"
+ "._684:\n"
+ " lsl r0, r1, #0x2\n"
+ " ldr r1, ._686 + 16\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._687:\n"
+ " .align 2, 0\n"
+ "._686:\n"
+ " .word +0x2015de0\n"
+ " .word gDebug_03000700\n"
+ " .word gDebug_03000700+0x4\n"
+ " .word gDebug_03000700+0x8\n"
+ " .word ._688\n"
+ "._688:\n"
+ " .word ._689\n"
+ " .word ._690\n"
+ " .word ._691\n"
+ " .word ._692\n"
+ " .word ._693\n"
+ " .word ._694\n"
+ "._689:\n"
+ " ldr r0, ._696\n"
+ " ldr r2, ._696 + 4\n"
+ " add r1, r0, r2\n"
+ " mov r2, #0x0\n"
+ " strb r2, [r1]\n"
+ " ldr r1, ._696 + 8\n"
+ " add r0, r0, r1\n"
+ " strb r2, [r0]\n"
+ " ldr r0, ._696 + 12\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r4, #0xa]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x16\n"
+ " ldr r1, ._696 + 16\n"
+ " bl StringCopy\n"
+ " b ._704\n"
+ "._697:\n"
+ " .align 2, 0\n"
+ "._696:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ " .word gDebug_03000700+0xc\n"
+ " .word gUnknown_Debug_083C48BB\n"
+ "._690:\n"
+ " ldr r1, ._699\n"
+ " ldr r0, ._699 + 4\n"
+ " add r2, r1, r0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r2, ._699 + 8\n"
+ " add r1, r1, r2\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._699 + 12\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._698\n"
+ "._700:\n"
+ " .align 2, 0\n"
+ "._699:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ " .word gDebug_03000700+0xd\n"
+ "._691:\n"
+ " ldr r1, ._702\n"
+ " ldr r0, ._702 + 4\n"
+ " add r2, r1, r0\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r2]\n"
+ " ldr r2, ._702 + 8\n"
+ " add r1, r1, r2\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._702 + 12\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r4, #0xa]\n"
+ " b ._707\n"
+ "._703:\n"
+ " .align 2, 0\n"
+ "._702:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ " .word gDebug_03000700+0xe\n"
+ "._692:\n"
+ " ldr r1, ._705\n"
+ " ldr r2, ._705 + 4\n"
+ " add r0, r1, r2\n"
+ " mov r2, #0x0\n"
+ " strb r2, [r0]\n"
+ " ldr r0, ._705 + 8\n"
+ " add r1, r1, r0\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " strb r2, [r4, #0xa]\n"
+ " b ._704\n"
+ "._706:\n"
+ " .align 2, 0\n"
+ "._705:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ "._693:\n"
+ " ldr r1, ._708\n"
+ " ldr r0, ._708 + 4\n"
+ " add r2, r1, r0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r2, ._708 + 8\n"
+ " add r1, r1, r2\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x3\n"
+ "._698:\n"
+ " strb r0, [r4, #0xa]\n"
+ "._704:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xb\n"
+ " ldr r1, ._708 + 12\n"
+ " bl StringCopy\n"
+ " b ._707\n"
+ "._709:\n"
+ " .align 2, 0\n"
+ "._708:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ " .word gUnknown_Debug_083C48B0\n"
+ "._694:\n"
+ " ldr r1, ._710\n"
+ " ldr r0, ._710 + 4\n"
+ " add r2, r1, r0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r2, ._710 + 8\n"
+ " add r1, r1, r2\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x9\n"
+ " strb r0, [r4, #0xa]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xb\n"
+ " ldr r1, ._710 + 12\n"
+ " bl StringCopy\n"
+ "._707:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._711:\n"
+ " .align 2, 0\n"
+ "._710:\n"
+ " .word +0x2000000\n"
+ " .word 0x15ddf\n"
+ " .word 0x15dde\n"
+ " .word gUnknown_Debug_083C48B0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F2E0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r3, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " cmp r2, #0\n"
+ " bne ._712 @cond_branch\n"
+ " ldr r1, ._714\n"
+ " mov r0, #0xa1\n"
+ " b ._713\n"
+ "._715:\n"
+ " .align 2, 0\n"
+ "._714:\n"
+ " .word gDebug_03000700+0x10\n"
+ "._712:\n"
+ " ldr r1, ._716\n"
+ " mov r0, #0xa2\n"
+ "._713:\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1, #0x1]\n"
+ " add r0, r1, #0\n"
+ " add r1, r4, #0\n"
+ " add r2, r3, #0\n"
+ " bl MenuPrint\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._717:\n"
+ " .align 2, 0\n"
+ "._716:\n"
+ " .word gDebug_03000700+0x10\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F31C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6}\n"
+ " mov r8, r0\n"
+ " mov r9, r1\n"
+ " add r4, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " mov r0, r9\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " ldr r5, ._718\n"
+ " ldr r6, ._718 + 4\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5]\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r6, #0xfa\n"
+ " lsl r6, r6, #0x2\n"
+ " add r1, r6, #0\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x1]\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x2]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x3]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r5, #0x4]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r5, #0x5]\n"
+ " add r0, r5, #0\n"
+ " mov r1, r8\n"
+ " mov r2, r9\n"
+ " bl MenuPrint\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._719:\n"
+ " .align 2, 0\n"
+ "._718:\n"
+ " .word gDebug_03000700+0x10\n"
+ " .word 0x2710\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_nullsub_66()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
new file mode 100644
index 000000000..fed5b4e52
--- /dev/null
+++ b/src/debug/watanabe_debug_menu.c
@@ -0,0 +1,9846 @@
+#ifdef DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 unk_debug_ewram_0[56] = { 0 };
+
+u8 byte_3005E30[0x20];
+
+__attribute__((naked))
+void debug_69()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C35DC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x13\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0xe\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x14\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x6\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x6\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x6\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " mov r3, #0xc0\n"
+ " lsl r3, r3, #0x13\n"
+ " mov r4, #0xc0\n"
+ " lsl r4, r4, #0x9\n"
+ " add r0, sp, #0x4\n"
+ " mov r8, r0\n"
+ " mov r2, sp\n"
+ " mov r6, #0x0\n"
+ " ldr r1, ._2\n"
+ " mov r5, #0x80\n"
+ " lsl r5, r5, #0x5\n"
+ " ldr r7, ._2 + 4\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x18\n"
+ " mov ip, r0\n"
+ "._1:\n"
+ " strh r6, [r2]\n"
+ " mov r0, sp\n"
+ " str r0, [r1]\n"
+ " str r3, [r1, #0x4]\n"
+ " str r7, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " add r3, r3, r5\n"
+ " sub r4, r4, r5\n"
+ " cmp r4, r5\n"
+ " bhi ._1 @cond_branch\n"
+ " strh r6, [r2]\n"
+ " mov r2, sp\n"
+ " str r2, [r1]\n"
+ " str r3, [r1, #0x4]\n"
+ " lsr r0, r4, #0x1\n"
+ " mov r2, ip\n"
+ " orr r0, r0, r2\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " mov r0, #0xe0\n"
+ " lsl r0, r0, #0x13\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x3\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp, #0x4]\n"
+ " ldr r2, ._2\n"
+ " mov r1, r8\n"
+ " str r1, [r2]\n"
+ " str r0, [r2, #0x4]\n"
+ " lsr r0, r3, #0x2\n"
+ " mov r1, #0x85\n"
+ " lsl r1, r1, #0x18\n"
+ " orr r0, r0, r1\n"
+ " str r0, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " mov r1, #0xa0\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r0, sp\n"
+ " strh r4, [r0]\n"
+ " str r0, [r2]\n"
+ " str r1, [r2, #0x4]\n"
+ " lsr r3, r3, #0x1\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x18\n"
+ " orr r3, r3, r0\n"
+ " str r3, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " bl ResetPaletteFade\n"
+ " bl remove_some_task\n"
+ " bl ResetTasks\n"
+ " bl ResetSpriteData\n"
+ " bl ResetPaletteFade\n"
+ " bl FreeAllSpritePalettes\n"
+ " ldr r0, ._2 + 8\n"
+ " bl LoadSpriteSheet\n"
+ " ldr r0, ._2 + 12\n"
+ " bl LoadSpritePalette\n"
+ " ldr r0, ._2 + 16\n"
+ " bl SetUpWindowConfig\n"
+ " ldr r0, ._2 + 20\n"
+ " bl InitMenuWindow\n"
+ " add sp, sp, #0x8\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._3:\n"
+ " .align 2, 0\n"
+ "._2:\n"
+ " .word 0x40000d4\n"
+ " .word 0x81000800\n"
+ " .word stru_83F8828\n"
+ " .word stru_83F8838\n"
+ " .word gWindowConfig_81E6C3C\n"
+ " .word gWindowConfig_81E6CE4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C36F4()
+{
+ asm(
+ " push {lr}\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " bl UpdatePaletteFade\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C370C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._6\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._4 @cond_branch\n"
+ " ldr r0, ._6 + 4\n"
+ " bl SetMainCallback2\n"
+ " b ._5\n"
+ "._7:\n"
+ " .align 2, 0\n"
+ "._6:\n"
+ " .word gPaletteFade\n"
+ " .word debug_80C36F4+1\n"
+ "._4:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " bl UpdatePaletteFade\n"
+ "._5:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C373C()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " ldr r0, ._8\n"
+ " bl SetMainCallback2\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._9:\n"
+ " .align 2, 0\n"
+ "._8:\n"
+ " .word sub_80546F0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C3758()
+{
+ asm(
+ " push {lr}\n"
+ " bl LoadOam\n"
+ " bl ProcessSpriteCopyRequests\n"
+ " bl TransferPlttBuffer\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C376C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r7, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r6, r2, #0x18\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ "._10:\n"
+ " mov r3, sp\n"
+ " add r0, r3, r1\n"
+ " strb r2, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " cmp r1, #0x2\n"
+ " bls ._10 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1, #0x3]\n"
+ " mov r4, #0x0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._11 @cond_branch\n"
+ " mov r1, sp\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r1]\n"
+ " mov r4, #0x1\n"
+ "._11:\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._12 @cond_branch\n"
+ " cmp r4, #0\n"
+ " beq ._13 @cond_branch\n"
+ "._12:\n"
+ " mov r1, sp\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r1, #0x1]\n"
+ "._13:\n"
+ " mov r4, sp\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r4, #0x2]\n"
+ " mov r0, sp\n"
+ " add r1, r7, #0\n"
+ " add r2, r6, #0\n"
+ " bl MenuPrint\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C3800()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r5, r2, #0x18\n"
+ " mov r3, #0x0\n"
+ " ldr r2, ._18\n"
+ " mov r1, #0x0\n"
+ "._14:\n"
+ " mov r7, sp\n"
+ " add r0, r7, r3\n"
+ " strb r1, [r0]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0x9\n"
+ " bls ._14 @cond_branch\n"
+ " add r1, r7, r3\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ " mov r3, #0x0\n"
+ " mov r0, #0xb\n"
+ " add r1, r4, #0\n"
+ " mul r1, r1, r0\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._16 @cond_branch\n"
+ " add r4, r2, #0\n"
+ " add r2, r1, #0\n"
+ "._17:\n"
+ " mov r0, sp\n"
+ " add r1, r0, r3\n"
+ " add r0, r3, r2\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " add r0, r3, r2\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._16 @cond_branch\n"
+ " cmp r3, #0x9\n"
+ " bls ._17 @cond_branch\n"
+ "._16:\n"
+ " mov r0, sp\n"
+ " add r1, r6, #0\n"
+ " add r2, r5, #0\n"
+ " bl MenuPrint\n"
+ " add sp, sp, #0xc\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._19:\n"
+ " .align 2, 0\n"
+ "._18:\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C3878()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " cmp r0, #0\n"
+ " beq ._20 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._21 @cond_branch\n"
+ "._20:\n"
+ " cmp r1, #0x1\n"
+ " bls ._22 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " b ._23\n"
+ "._22:\n"
+ " ldr r1, ._25\n"
+ " b ._28\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word 0x19b\n"
+ "._21:\n"
+ " mov r0, #0xcd\n"
+ " lsl r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bhi ._27 @cond_branch\n"
+ " add r0, r1, #1\n"
+ "._23:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " b ._28\n"
+ "._27:\n"
+ " mov r1, #0x1\n"
+ "._28:\n"
+ " add r0, r1, #0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C38B4()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r0, r1, #0x10\n"
+ " cmp r2, #0\n"
+ " beq ._29 @cond_branch\n"
+ " cmp r2, #0x1\n"
+ " beq ._30 @cond_branch\n"
+ "._29:\n"
+ " cmp r0, #0\n"
+ " beq ._31 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._32\n"
+ "._31:\n"
+ " mov r0, #0x52\n"
+ " b ._35\n"
+ "._30:\n"
+ " cmp r0, #0x51\n"
+ " bhi ._34 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._32:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " b ._35\n"
+ "._34:\n"
+ " mov r0, #0x0\n"
+ "._35:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C38E4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r2, #0\n"
+ " add r5, r3, #0\n"
+ " ldr r6, [sp, #0x1c]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r7, r1, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " lsl r6, r6, #0x18\n"
+ " lsr r6, r6, #0x18\n"
+ " ldr r1, ._37\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " add r0, r7, #0\n"
+ " add r1, r4, #0\n"
+ " add r2, r7, #0\n"
+ " add r3, r5, #0\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " cmp r6, #0\n"
+ " beq ._36 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r7, #0\n"
+ " mov r2, r8\n"
+ " bl MenuPrint\n"
+ "._36:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._38:\n"
+ " .align 2, 0\n"
+ "._37:\n"
+ " .word gUnknown_Debug_083F7FD4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C393C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._39\n"
+ " mov r0, #0x1e\n"
+ " bl ProgramFlashSectorAndVerify\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._40:\n"
+ " .align 2, 0\n"
+ "._39:\n"
+ " .word gUnknown_Debug_083F7FD6\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitWatanabeDebugMenu()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._46\n"
+ " ldr r1, ._46 + 4\n"
+ " add r4, r0, r1\n"
+ " ldrb r0, [r4]\n"
+ " cmp r0, #0x1\n"
+ " beq ._41 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " ble ._42 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._43 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._44 @cond_branch\n"
+ "._42:\n"
+ " bl save_serialize_map\n"
+ " bl sub_8125E2C\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " b ._51\n"
+ "._47:\n"
+ " .align 2, 0\n"
+ "._46:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._41:\n"
+ " bl sub_8125E6C\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._51 @cond_branch\n"
+ " b ._49\n"
+ "._43:\n"
+ " mov r0, #0x37\n"
+ " bl PlaySE\n"
+ "._49:\n"
+ " ldrb r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " b ._51\n"
+ "._44:\n"
+ " bl IsSEPlaying\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._51 @cond_branch\n"
+ " bl ScriptContext2_Disable\n"
+ " ldr r0, ._52\n"
+ " bl SetMainCallback2\n"
+ "._51:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._53:\n"
+ " .align 2, 0\n"
+ "._52:\n"
+ " .word sub_80546F0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitSizeComparison()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl debug_80C35DC\n"
+ " ldr r1, ._54\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._54 + 4\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x1\n"
+ " mov r2, #0x20\n"
+ " bl LoadPalette\n"
+ " ldr r3, ._54 + 8\n"
+ " ldrh r2, [r3]\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r3]\n"
+ " ldr r4, ._54 + 12\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ " strh r2, [r3]\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._54 + 16\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._54 + 20\n"
+ " bl SetMainCallback2\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r2, #0x8a\n"
+ " lsl r2, r2, #0x5\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._54 + 24\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._54 + 28\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " mov r0, #0xfc\n"
+ " strh r0, [r1, #0x8]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._55:\n"
+ " .align 2, 0\n"
+ "._54:\n"
+ " .word gReservedSpritePaletteCount\n"
+ " .word unk_debug_ewram_0\n"
+ " .word 0x4000208\n"
+ " .word 0x4000200\n"
+ " .word debug_80C3758+1\n"
+ " .word debug_80C370C+1\n"
+ " .word debug_80C3A50+1\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C3A50()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffd8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r1, ._56\n"
+ " lsl r2, r0, #0x2\n"
+ " add r0, r2, r0\n"
+ " lsl r0, r0, #0x3\n"
+ " add r7, r0, r1\n"
+ " ldrh r0, [r7, #0x8]\n"
+ " str r0, [sp, #0x4]\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " mov r1, sp\n"
+ " strh r0, [r1, #0x8]\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x10\n"
+ " str r2, [sp, #0xc]\n"
+ " lsr r2, r2, #0x10\n"
+ " mov r9, r2\n"
+ " ldr r3, ._56 + 4\n"
+ " mov r8, r3\n"
+ " mov r0, #0x6\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x17\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x5\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r5, ._56 + 8\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r4, ._56 + 12\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._56 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._56 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._56 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._56 + 28\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._56 + 32\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._56 + 36\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._56 + 40\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._56 + 44\n"
+ " mov r1, #0x18\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " mov r0, r9\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x11\n"
+ " bl debug_80C3800\n"
+ " mov r1, r8\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " mov r1, #0x98\n"
+ " mov r2, #0x28\n"
+ " mov r3, #0x0\n"
+ " bl sub_8091A4C\n"
+ " mov r2, sp\n"
+ " strh r0, [r2, #0x10]\n"
+ " add r3, r0, #0\n"
+ " lsl r3, r3, #0x10\n"
+ " str r3, [sp, #0x18]\n"
+ " lsr r0, r3, #0x10\n"
+ " str r0, [sp, #0x14]\n"
+ " lsl r4, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r1, ._56 + 48\n"
+ " add r4, r4, r1\n"
+ " ldrb r1, [r4, #0x1]\n"
+ " mov r2, #0x4\n"
+ " neg r2, r2\n"
+ " mov sl, r2\n"
+ " mov r0, sl\n"
+ " and r0, r0, r1\n"
+ " mov r3, #0x1\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r4, #0x1]\n"
+ " ldrb r1, [r4, #0x3]\n"
+ " mov r0, #0x3f\n"
+ " neg r0, r0\n"
+ " mov r9, r0\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x3]\n"
+ " ldrb r1, [r4, #0x5]\n"
+ " sub r2, r2, #0x9\n"
+ " mov r8, r2\n"
+ " mov r0, r8\n"
+ " and r0, r0, r1\n"
+ " mov r3, #0xf\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r4, #0x5]\n"
+ " mov r0, #0x0\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldr r0, ._56 + 52\n"
+ " ldr r1, [sp, #0x4]\n"
+ " lsl r5, r1, #0x3\n"
+ " add r5, r5, r1\n"
+ " lsl r5, r5, #0x2\n"
+ " add r5, r5, r0\n"
+ " ldrh r6, [r5, #0x20]\n"
+ " strh r6, [r4, #0x26]\n"
+ " ldrh r4, [r5, #0x1e]\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x2\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl SetOamMatrix\n"
+ " mov r2, sp\n"
+ " ldrh r2, [r2, #0x14]\n"
+ " strh r2, [r7, #0xe]\n"
+ " strh r6, [r7, #0x10]\n"
+ " strh r4, [r7, #0x14]\n"
+ " ldr r0, [sp, #0x4]\n"
+ " mov r1, #0x58\n"
+ " mov r2, #0x28\n"
+ " mov r3, #0x1\n"
+ " bl sub_80918EC\n"
+ " mov r3, sp\n"
+ " strh r0, [r3, #0x1c]\n"
+ " lsl r0, r0, #0x10\n"
+ " str r0, [sp, #0x24]\n"
+ " lsr r1, r0, #0x10\n"
+ " str r1, [sp, #0x20]\n"
+ " lsl r4, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r2, ._56 + 48\n"
+ " add r4, r4, r2\n"
+ " ldrb r0, [r4, #0x1]\n"
+ " mov r3, sl\n"
+ " and r3, r3, r0\n"
+ " mov r0, #0x1\n"
+ " orr r3, r3, r0\n"
+ " strb r3, [r4, #0x1]\n"
+ " ldrb r0, [r4, #0x3]\n"
+ " mov r1, r9\n"
+ " and r1, r1, r0\n"
+ " mov r0, #0x2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r4, #0x3]\n"
+ " ldrb r0, [r4, #0x5]\n"
+ " mov r2, r8\n"
+ " and r2, r2, r0\n"
+ " mov r3, #0xf\n"
+ " and r2, r2, r3\n"
+ " strb r2, [r4, #0x5]\n"
+ " mov r0, #0x0\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldrh r0, [r5, #0x1c]\n"
+ " mov r8, r0\n"
+ " strh r0, [r4, #0x26]\n"
+ " ldrh r4, [r5, #0x1a]\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl SetOamMatrix\n"
+ " mov r1, sp\n"
+ " ldrh r1, [r1, #0x20]\n"
+ " strh r1, [r7, #0xc]\n"
+ " mov r2, r8\n"
+ " strh r2, [r7, #0x12]\n"
+ " strh r4, [r7, #0x16]\n"
+ " mov r3, #0x0\n"
+ " strh r3, [r7, #0x18]\n"
+ " strh r3, [r7, #0x1a]\n"
+ " ldr r1, ._56 + 56\n"
+ " ldr r2, ._56 + 60\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x1f\n"
+ " strh r0, [r1]\n"
+ " ldr r2, ._56 + 64\n"
+ " mov r3, #0x18\n"
+ " ldsh r1, [r7, r3]\n"
+ " lsl r1, r1, #0x6\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x38\n"
+ " lsl r0, r0, #0x8\n"
+ " add r1, r1, #0x78\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " ldr r1, ._56 + 68\n"
+ " ldr r2, ._56 + 72\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " sub r1, r1, #0x2\n"
+ " ldr r3, ._56 + 76\n"
+ " add r0, r3, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._56 + 80\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0xa\n"
+ " mov r0, #0xe1\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._56 + 84\n"
+ " mov r3, #0x0\n"
+ " strh r3, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " mov r0, #0x7\n"
+ " strh r0, [r1]\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x13\n"
+ " ldrh r0, [r2]\n"
+ " mov r3, #0xc0\n"
+ " lsl r3, r3, #0x7\n"
+ " add r1, r3, #0\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._56 + 88\n"
+ " str r0, [r7]\n"
+ " add sp, sp, #0x28\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._57:\n"
+ " .align 2, 0\n"
+ "._56:\n"
+ " .word gTasks\n"
+ " .word gSaveBlock2\n"
+ " .word gUnknown_Debug_083F7FD6+0x4\n"
+ " .word gUnknown_Debug_083F7FDE\n"
+ " .word gUnknown_Debug_083F7FE2\n"
+ " .word gUnknown_Debug_083F7FED\n"
+ " .word gUnknown_Debug_083F7FF6\n"
+ " .word gUnknown_Debug_083F8001\n"
+ " .word gUnknown_Debug_083F800C\n"
+ " .word gUnknown_Debug_083F8019\n"
+ " .word gUnknown_Debug_083F8022\n"
+ " .word gUnknown_Debug_083F8028\n"
+ " .word gSprites\n"
+ " .word gPokedexEntries\n"
+ " .word 0x4000048\n"
+ " .word 0x3f1f\n"
+ " .word 0x4000040\n"
+ " .word 0x4000044\n"
+ " .word 0x848\n"
+ " .word 0x31bf\n"
+ " .word 0x14f\n"
+ " .word 0x4000052\n"
+ " .word debug_80C3D2C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C3D2C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " add r7, r6, #0\n"
+ " ldr r4, ._60\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._58 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._60 + 4\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._60 + 8\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._60 + 12\n"
+ " str r1, [r0]\n"
+ " b ._117\n"
+ "._61:\n"
+ " .align 2, 0\n"
+ "._60:\n"
+ " .word gMain\n"
+ " .word debug_80C370C+1\n"
+ " .word gTasks\n"
+ " .word debug_80C373C+1\n"
+ "._58:\n"
+ " mov r5, #0x1\n"
+ " add r0, r5, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._62 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._64\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0, #0x18]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strh r1, [r0, #0x18]\n"
+ " b ._117\n"
+ "._65:\n"
+ " .align 2, 0\n"
+ "._64:\n"
+ " .word gTasks\n"
+ "._62:\n"
+ " ldrh r1, [r4, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._66 @cond_branch\n"
+ " ldr r1, ._70\n"
+ " lsl r2, r6, #0x2\n"
+ " add r0, r2, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r3, r0, r1\n"
+ " mov r5, #0x18\n"
+ " ldsh r0, [r3, r5]\n"
+ " mov r8, r1\n"
+ " cmp r0, #0\n"
+ " beq ._67 @cond_branch\n"
+ " ldrh r1, [r4, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._68 @cond_branch\n"
+ " ldrh r0, [r3, #0x14]\n"
+ " add r0, r0, #0x10\n"
+ " b ._69\n"
+ "._71:\n"
+ " .align 2, 0\n"
+ "._70:\n"
+ " .word gTasks\n"
+ "._68:\n"
+ " ldrh r0, [r3, #0x14]\n"
+ " add r0, r0, #0x1\n"
+ "._69:\n"
+ " strh r0, [r3, #0x14]\n"
+ " add r0, r2, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " mov r2, r8\n"
+ " add r1, r0, r2\n"
+ " ldrh r0, [r1, #0x14]\n"
+ " mov r6, #0x80\n"
+ " lsl r6, r6, #0x8\n"
+ " cmp r0, r6\n"
+ " bhi ._72 @cond_branch\n"
+ " b ._117\n"
+ "._72:\n"
+ " strh r6, [r1, #0x14]\n"
+ " b ._117\n"
+ "._67:\n"
+ " ldrh r1, [r4, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._75 @cond_branch\n"
+ " ldrh r0, [r3, #0x16]\n"
+ " add r0, r0, #0x10\n"
+ " b ._76\n"
+ "._75:\n"
+ " ldrh r0, [r3, #0x16]\n"
+ " add r0, r0, #0x1\n"
+ "._76:\n"
+ " strh r0, [r3, #0x16]\n"
+ " add r0, r2, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " mov r4, r8\n"
+ " add r1, r0, r4\n"
+ " ldrh r0, [r1, #0x16]\n"
+ " mov r6, #0x80\n"
+ " lsl r6, r6, #0x8\n"
+ " cmp r0, r6\n"
+ " bhi ._77 @cond_branch\n"
+ " b ._117\n"
+ "._77:\n"
+ " strh r6, [r1, #0x16]\n"
+ " b ._117\n"
+ "._66:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._80 @cond_branch\n"
+ " ldr r1, ._84\n"
+ " lsl r2, r6, #0x2\n"
+ " add r0, r2, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r3, r0, r1\n"
+ " mov r5, #0x18\n"
+ " ldsh r0, [r3, r5]\n"
+ " mov r8, r1\n"
+ " cmp r0, #0\n"
+ " beq ._81 @cond_branch\n"
+ " ldrh r1, [r4, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._82 @cond_branch\n"
+ " ldrh r0, [r3, #0x14]\n"
+ " sub r0, r0, #0x10\n"
+ " b ._83\n"
+ "._85:\n"
+ " .align 2, 0\n"
+ "._84:\n"
+ " .word gTasks\n"
+ "._82:\n"
+ " ldrh r0, [r3, #0x14]\n"
+ " sub r0, r0, #0x1\n"
+ "._83:\n"
+ " strh r0, [r3, #0x14]\n"
+ " add r0, r2, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " mov r2, r8\n"
+ " add r1, r0, r2\n"
+ " mov r4, #0x14\n"
+ " ldsh r0, [r1, r4]\n"
+ " cmp r0, #0xff\n"
+ " ble ._86 @cond_branch\n"
+ " b ._117\n"
+ "._86:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " strh r0, [r1, #0x14]\n"
+ " b ._117\n"
+ "._81:\n"
+ " ldrh r1, [r4, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._89 @cond_branch\n"
+ " ldrh r0, [r3, #0x16]\n"
+ " sub r0, r0, #0x10\n"
+ " b ._90\n"
+ "._89:\n"
+ " ldrh r0, [r3, #0x16]\n"
+ " sub r0, r0, #0x1\n"
+ "._90:\n"
+ " strh r0, [r3, #0x16]\n"
+ " add r0, r2, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " mov r5, r8\n"
+ " add r1, r0, r5\n"
+ " mov r2, #0x16\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0xff\n"
+ " ble ._91 @cond_branch\n"
+ " b ._117\n"
+ "._91:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " strh r0, [r1, #0x16]\n"
+ " b ._117\n"
+ "._80:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._94 @cond_branch\n"
+ " ldr r0, ._97\n"
+ " lsl r1, r6, #0x2\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r4, #0x18\n"
+ " ldsh r0, [r1, r4]\n"
+ " cmp r0, #0\n"
+ " beq ._95 @cond_branch\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " b ._117\n"
+ "._98:\n"
+ " .align 2, 0\n"
+ "._97:\n"
+ " .word gTasks\n"
+ "._95:\n"
+ " ldrh r0, [r1, #0x12]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x12]\n"
+ " b ._117\n"
+ "._94:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._100 @cond_branch\n"
+ " ldr r0, ._103\n"
+ " lsl r1, r6, #0x2\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r5, #0x18\n"
+ " ldsh r0, [r1, r5]\n"
+ " cmp r0, #0\n"
+ " beq ._101 @cond_branch\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " b ._117\n"
+ "._104:\n"
+ " .align 2, 0\n"
+ "._103:\n"
+ " .word gTasks\n"
+ "._101:\n"
+ " ldrh r0, [r1, #0x12]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r1, #0x12]\n"
+ " b ._117\n"
+ "._100:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._106 @cond_branch\n"
+ " ldr r2, ._109\n"
+ " lsl r3, r6, #0x2\n"
+ " add r0, r3, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r6, r0, r2\n"
+ " ldrh r4, [r6, #0x8]\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r6, r0]\n"
+ " ldr r0, ._109 + 4\n"
+ " mov r8, r2\n"
+ " add r2, r3, #0\n"
+ " cmp r1, r0\n"
+ " bgt ._107 @cond_branch\n"
+ " add r0, r4, #1\n"
+ " strh r0, [r6, #0x8]\n"
+ " b ._108\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word gTasks\n"
+ " .word 0x181\n"
+ "._107:\n"
+ " strh r5, [r6, #0x8]\n"
+ "._108:\n"
+ " add r4, r2, r7\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r8\n"
+ " mov r2, #0xc\n"
+ " ldsh r1, [r4, r2]\n"
+ " b ._111\n"
+ "._106:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._112 @cond_branch\n"
+ " ldr r1, ._115\n"
+ " lsl r2, r6, #0x2\n"
+ " add r0, r2, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r3, r0, r1\n"
+ " ldrh r6, [r3, #0x8]\n"
+ " mov r4, #0x8\n"
+ " ldsh r0, [r3, r4]\n"
+ " mov r8, r1\n"
+ " cmp r0, #0x1\n"
+ " ble ._113 @cond_branch\n"
+ " sub r0, r6, #1\n"
+ " b ._114\n"
+ "._116:\n"
+ " .align 2, 0\n"
+ "._115:\n"
+ " .word gTasks\n"
+ "._113:\n"
+ " mov r0, #0xc1\n"
+ " lsl r0, r0, #0x1\n"
+ "._114:\n"
+ " strh r0, [r3, #0x8]\n"
+ " add r4, r2, r7\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r8\n"
+ " mov r5, #0xc\n"
+ " ldsh r1, [r4, r5]\n"
+ "._111:\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r5, ._118\n"
+ " add r0, r0, r5\n"
+ " bl DestroySprite\n"
+ " mov r0, #0xe\n"
+ " ldsh r1, [r4, r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " bl DestroySprite\n"
+ " ldr r0, ._118 + 4\n"
+ " str r0, [r4]\n"
+ " b ._117\n"
+ "._119:\n"
+ " .align 2, 0\n"
+ "._118:\n"
+ " .word gSprites\n"
+ " .word debug_80C3A50+1\n"
+ "._112:\n"
+ " ldr r0, ._120\n"
+ " lsl r5, r7, #0x2\n"
+ " add r5, r5, r7\n"
+ " lsl r5, r5, #0x3\n"
+ " add r5, r5, r0\n"
+ " ldrh r4, [r5, #0x16]\n"
+ " ldrh r6, [r5, #0x12]\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x1\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl SetOamMatrix\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " ldr r2, ._120 + 4\n"
+ " mov r8, r2\n"
+ " mov r4, #0xc\n"
+ " ldsh r1, [r5, r4]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " strh r6, [r0, #0x26]\n"
+ " ldrh r4, [r5, #0x14]\n"
+ " ldrh r6, [r5, #0x10]\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x2\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl SetOamMatrix\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x7\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " mov r0, #0xe\n"
+ " ldsh r1, [r5, r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " strh r6, [r0, #0x26]\n"
+ " ldr r2, ._120 + 8\n"
+ " mov r4, #0x18\n"
+ " ldsh r1, [r5, r4]\n"
+ " lsl r1, r1, #0x6\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x38\n"
+ " lsl r0, r0, #0x8\n"
+ " add r1, r1, #0x78\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ "._117:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._121:\n"
+ " .align 2, 0\n"
+ "._120:\n"
+ " .word gTasks\n"
+ " .word gSprites\n"
+ " .word 0x4000040\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C405C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r5, r1, #0x10\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x0\n"
+ "._122:\n"
+ " add r0, r4, r2\n"
+ " strb r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x9\n"
+ " bls ._122 @cond_branch\n"
+ " add r0, r4, r2\n"
+ " mov r1, #0xff\n"
+ " strb r1, [r0]\n"
+ " mov r0, #0xae\n"
+ " strb r0, [r4]\n"
+ " cmp r5, #0\n"
+ " beq ._125 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._127\n"
+ " mov r0, #0xb\n"
+ " add r1, r5, #0\n"
+ " mul r1, r1, r0\n"
+ " add r0, r1, r3\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._125 @cond_branch\n"
+ " add r5, r3, #0\n"
+ " add r3, r1, #0\n"
+ "._126:\n"
+ " add r1, r4, r2\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " add r0, r2, r3\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._125 @cond_branch\n"
+ " cmp r2, #0x9\n"
+ " bls ._126 @cond_branch\n"
+ "._125:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._128:\n"
+ " .align 2, 0\n"
+ "._127:\n"
+ " .word gSpeciesNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C40C4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r5, #0x0\n"
+ " mov r6, sp\n"
+ "._135:\n"
+ " cmp r7, #0\n"
+ " beq ._129 @cond_branch\n"
+ " mov r0, #0x64\n"
+ " add r1, r5, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._132\n"
+ " add r4, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._134 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl CalculateMonStats\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " strh r0, [r6]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x39\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " b ._134\n"
+ "._133:\n"
+ " .align 2, 0\n"
+ "._132:\n"
+ " .word gEnemyParty\n"
+ "._129:\n"
+ " mov r0, #0x64\n"
+ " add r1, r5, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._136\n"
+ " add r4, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._134 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl CalculateMonStats\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " strh r0, [r6]\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x39\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ "._134:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x5\n"
+ " bls ._135 @cond_branch\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._137:\n"
+ " .align 2, 0\n"
+ "._136:\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitBattleForDebug()
+{
+ asm(
+ " push {lr}\n"
+ " bl SavePlayerParty\n"
+ " ldr r1, ._138\n"
+ " ldr r0, ._138 + 4\n"
+ " ldrb r2, [r0, #0x8]\n"
+ " mov r0, #0x0\n"
+ " strb r2, [r1, #0xd]\n"
+ " strb r0, [r1]\n"
+ " strb r0, [r1, #0x1]\n"
+ " strb r0, [r1, #0x2]\n"
+ " strb r0, [r1, #0x3]\n"
+ " strb r0, [r1, #0x4]\n"
+ " strb r0, [r1, #0x5]\n"
+ " strb r0, [r1, #0x6]\n"
+ " strb r0, [r1, #0x7]\n"
+ " strb r0, [r1, #0x8]\n"
+ " strb r0, [r1, #0xc]\n"
+ " ldr r1, ._138 + 8\n"
+ " str r0, [r1]\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " mov r0, #0x0\n"
+ " bl debug_80C4214\n"
+ " ldr r0, ._138 + 12\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._139:\n"
+ " .align 2, 0\n"
+ "._138:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gSaveBlock2\n"
+ " .word byte_3005E30\n"
+ " .word debug_80C47BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C41A8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._140\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0x1]\n"
+ " strb r0, [r1, #0x2]\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " mov r0, #0x0\n"
+ " bl debug_80C4214\n"
+ " ldr r0, ._140 + 4\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._141:\n"
+ " .align 2, 0\n"
+ "._140:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word debug_80C47BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C41D4()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " bl debug_80C40C4\n"
+ " mov r0, #0x0\n"
+ " bl debug_80C4214\n"
+ " ldr r0, ._142\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._143:\n"
+ " .align 2, 0\n"
+ "._142:\n"
+ " .word debug_80C42B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C41F4()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " bl debug_80C40C4\n"
+ " mov r0, #0x1\n"
+ " bl debug_80C4214\n"
+ " ldr r0, ._144\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._145:\n"
+ " .align 2, 0\n"
+ "._144:\n"
+ " .word debug_80C42B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4214()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " bl debug_80C35DC\n"
+ " ldr r6, ._146\n"
+ " mov r4, #0x0\n"
+ " strh r4, [r6]\n"
+ " ldr r5, ._146 + 4\n"
+ " strh r4, [r5]\n"
+ " ldr r0, ._146 + 8\n"
+ " strh r4, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r4, [r0]\n"
+ " ldr r1, ._146 + 12\n"
+ " ldr r2, ._146 + 16\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x31\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x6\n"
+ " mov r0, #0xe1\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._146 + 20\n"
+ " strh r4, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " mov r0, #0x7\n"
+ " strh r0, [r1]\n"
+ " ldr r3, ._146 + 24\n"
+ " ldrh r2, [r3]\n"
+ " strh r4, [r3]\n"
+ " ldr r4, ._146 + 28\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ " strh r2, [r3]\n"
+ " ldr r0, ._146 + 32\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._146 + 36\n"
+ " bl SetMainCallback2\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " ldr r2, ._146 + 40\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._146 + 44\n"
+ " add r0, r1, #0\n"
+ " strh r0, [r6]\n"
+ " ldr r2, ._146 + 48\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r5]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._147:\n"
+ " .align 2, 0\n"
+ "._146:\n"
+ " .word 0x4000040\n"
+ " .word 0x4000044\n"
+ " .word 0x4000042\n"
+ " .word 0x4000048\n"
+ " .word 0x1111\n"
+ " .word 0x4000052\n"
+ " .word 0x4000208\n"
+ " .word 0x4000200\n"
+ " .word debug_80C3758+1\n"
+ " .word debug_80C370C+1\n"
+ " .word 0x7140\n"
+ " .word 0x1ef\n"
+ " .word 0x819f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C42B8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xffffffe4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._150\n"
+ " mov r0, sp\n"
+ " mov r2, #0xc\n"
+ " bl memcpy\n"
+ " add r4, sp, #0xc\n"
+ " ldr r1, ._150 + 4\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " bl debug_80C4694\n"
+ " bl debug_80C4704\n"
+ " ldr r0, ._150 + 8\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._148 @cond_branch\n"
+ " ldr r0, ._150 + 12\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._150 + 16\n"
+ " b ._149\n"
+ "._151:\n"
+ " .align 2, 0\n"
+ "._150:\n"
+ " .word gUnknown_Debug_083F8194\n"
+ " .word gUnknown_Debug_083F81A0\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C44EC+1\n"
+ "._148:\n"
+ " ldr r0, ._152\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._152 + 4\n"
+ "._149:\n"
+ " str r0, [r1]\n"
+ " add sp, sp, #0x1c\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._153:\n"
+ " .align 2, 0\n"
+ "._152:\n"
+ " .word gTasks\n"
+ " .word debug_80C4348+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4348()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._154\n"
+ " ldrb r0, [r0, #0x1]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._154 + 4\n"
+ " ldr r2, ._154 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r2, #0x8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._154 + 12\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._154 + 16\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._155:\n"
+ " .align 2, 0\n"
+ "._154:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x177\n"
+ " .word gTasks\n"
+ " .word debug_80C43A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C43A8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r1, ._158\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " add r3, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._156 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._158 + 4\n"
+ " ldrb r1, [r0, #0x1]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._158 + 8\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._158 + 12\n"
+ " bl debug_sub_80A433C\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " b ._180\n"
+ "._159:\n"
+ " .align 2, 0\n"
+ "._158:\n"
+ " .word gMain\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gPlayerParty\n"
+ " .word debug_80C41D4+1\n"
+ "._156:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._160 @cond_branch\n"
+ " ldr r0, ._162\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._162 + 4\n"
+ " str r0, [r1]\n"
+ " b ._180\n"
+ "._163:\n"
+ " .align 2, 0\n"
+ "._162:\n"
+ " .word gTasks\n"
+ " .word debug_80C4F48+1\n"
+ "._160:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " cmp r1, #0\n"
+ " beq ._164 @cond_branch\n"
+ " bl debug_80C4774\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._180 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " bl CalculatePlayerPartyCount\n"
+ " bl CalculateEnemyPartyCount\n"
+ " ldr r0, ._167\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._167 + 4\n"
+ " str r0, [r1]\n"
+ " b ._180\n"
+ "._168:\n"
+ " .align 2, 0\n"
+ "._167:\n"
+ " .word gTasks\n"
+ " .word debug_80C4D14+1\n"
+ "._164:\n"
+ " mov r0, #0x88\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._169 @cond_branch\n"
+ " str r1, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r0, ._171\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._171 + 4\n"
+ " str r0, [r1]\n"
+ " b ._180\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word gTasks\n"
+ " .word debug_80C44EC+1\n"
+ "._169:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._174 @cond_branch\n"
+ " ldr r1, ._176\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " cmp r0, #0\n"
+ " beq ._174 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x1]\n"
+ " b ._175\n"
+ "._177:\n"
+ " .align 2, 0\n"
+ "._176:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ "._174:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._180 @cond_branch\n"
+ " ldr r5, ._181\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " cmp r0, #0x4\n"
+ " bhi ._180 @cond_branch\n"
+ " add r1, r0, #0\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._181 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._180 @cond_branch\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r5, #0x1]\n"
+ "._175:\n"
+ " ldr r1, ._181 + 8\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._181 + 12\n"
+ " str r1, [r0]\n"
+ "._180:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gPlayerParty\n"
+ " .word gTasks\n"
+ " .word debug_80C4348+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C44EC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._183\n"
+ " ldrb r0, [r0, #0x2]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._183 + 4\n"
+ " ldr r2, ._183 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._183 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._183 + 16\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._183 + 20\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x79ef\n"
+ " .word 0x17f\n"
+ " .word gTasks\n"
+ " .word debug_80C4550+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4550()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r1, ._187\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " add r3, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._185 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r0, ._187 + 4\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._187 + 8\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._187 + 12\n"
+ " bl debug_sub_80A433C\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " b ._209\n"
+ "._188:\n"
+ " .align 2, 0\n"
+ "._187:\n"
+ " .word gMain\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gEnemyParty\n"
+ " .word debug_80C41F4+1\n"
+ "._185:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._189 @cond_branch\n"
+ " ldr r0, ._191\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._191 + 4\n"
+ " str r0, [r1]\n"
+ " b ._209\n"
+ "._192:\n"
+ " .align 2, 0\n"
+ "._191:\n"
+ " .word gTasks\n"
+ " .word debug_80C4F48+1\n"
+ "._189:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " cmp r1, #0\n"
+ " beq ._193 @cond_branch\n"
+ " bl debug_80C4774\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " bl CalculatePlayerPartyCount\n"
+ " bl CalculateEnemyPartyCount\n"
+ " ldr r0, ._196\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._196 + 4\n"
+ " str r0, [r1]\n"
+ " b ._209\n"
+ "._197:\n"
+ " .align 2, 0\n"
+ "._196:\n"
+ " .word gTasks\n"
+ " .word debug_80C4D14+1\n"
+ "._193:\n"
+ " mov r0, #0x88\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._198 @cond_branch\n"
+ " str r1, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r0, ._200\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._200 + 4\n"
+ " str r0, [r1]\n"
+ " b ._209\n"
+ "._201:\n"
+ " .align 2, 0\n"
+ "._200:\n"
+ " .word gTasks\n"
+ " .word debug_80C4348+1\n"
+ "._198:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._203 @cond_branch\n"
+ " ldr r1, ._205\n"
+ " ldrb r0, [r1, #0x2]\n"
+ " cmp r0, #0\n"
+ " beq ._203 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x2]\n"
+ " b ._204\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ "._203:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ " ldr r5, ._210\n"
+ " ldrb r0, [r5, #0x2]\n"
+ " cmp r0, #0x4\n"
+ " bhi ._209 @cond_branch\n"
+ " add r1, r0, #0\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r1\n"
+ " ldr r1, ._210 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ " ldrb r0, [r5, #0x2]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r5, #0x2]\n"
+ "._204:\n"
+ " ldr r1, ._210 + 8\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._210 + 12\n"
+ " str r1, [r0]\n"
+ "._209:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._211:\n"
+ " .align 2, 0\n"
+ "._210:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gEnemyParty\n"
+ " .word gTasks\n"
+ " .word debug_80C44EC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4694()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xffffffe4\n"
+ " ldr r1, ._213\n"
+ " mov r0, sp\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r4, #0x0\n"
+ " add r5, sp, #0x10\n"
+ "._212:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._213 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl debug_80C405C\n"
+ " lsl r2, r4, #0x19\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x12\n"
+ " add r2, r2, r0\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x5\n"
+ " bls ._212 @cond_branch\n"
+ " add sp, sp, #0x1c\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word gUnknown_Debug_083F81AD\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4704()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xffffffe4\n"
+ " ldr r1, ._216\n"
+ " mov r0, sp\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r4, #0x0\n"
+ " add r5, sp, #0x10\n"
+ "._215:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._216 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl debug_80C405C\n"
+ " lsl r2, r4, #0x19\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x12\n"
+ " add r2, r2, r0\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x11\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x5\n"
+ " bls ._215 @cond_branch\n"
+ " add sp, sp, #0x1c\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._217:\n"
+ " .align 2, 0\n"
+ "._216:\n"
+ " .word gUnknown_Debug_083F81BA\n"
+ " .word gEnemyParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4774()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._221\n"
+ " ldrb r0, [r0, #0xc]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x64\n"
+ " add r4, r0, #0\n"
+ " mul r4, r4, r1\n"
+ " ldr r0, ._221 + 4\n"
+ " add r0, r4, r0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._219 @cond_branch\n"
+ " ldr r0, ._221 + 8\n"
+ " add r0, r4, r0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " beq ._219 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._220\n"
+ "._222:\n"
+ " .align 2, 0\n"
+ "._221:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gPlayerParty\n"
+ " .word gEnemyParty\n"
+ "._219:\n"
+ " mov r0, #0x0\n"
+ "._220:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C47BC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xffffffc0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r1, ._224\n"
+ " mov r0, sp\n"
+ " mov r2, #0xf\n"
+ " bl memcpy\n"
+ " add r4, sp, #0x10\n"
+ " ldr r1, ._224 + 4\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " add r6, sp, #0x20\n"
+ " ldr r1, ._224 + 8\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0xf\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x30\n"
+ " ldr r1, ._224 + 12\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x10\n"
+ " bl memcpy\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r4, #0x0\n"
+ " ldr r6, ._224 + 16\n"
+ "._223:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r6\n"
+ " ldr r0, [r0]\n"
+ " lsl r2, r4, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r2, r2, r1\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x2\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x4\n"
+ " bls ._223 @cond_branch\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._224 + 20\n"
+ " ldrb r0, [r0, #0x4]\n"
+ " bl debug_80C4C44\n"
+ " ldr r1, ._224 + 24\n"
+ " lsl r0, r7, #0x2\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._224 + 28\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x40\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._225:\n"
+ " .align 2, 0\n"
+ "._224:\n"
+ " .word gUnknown_Debug_083F81C7\n"
+ " .word gUnknown_Debug_083F81A0\n"
+ " .word gUnknown_Debug_083F81D6\n"
+ " .word gUnknown_Debug_083F81E5\n"
+ " .word gUnknown_Debug_083F8068\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C48A0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C48A0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._226\n"
+ " ldrb r0, [r0, #0x3]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._226 + 4\n"
+ " ldr r2, ._226 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r2, #0x8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._226 + 12\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._226 + 16\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._227:\n"
+ " .align 2, 0\n"
+ "._226:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x177\n"
+ " .word gTasks\n"
+ " .word debug_80C4900+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4900()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._230\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r3, r1, #0\n"
+ " cmp r4, #0\n"
+ " beq ._228 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._230 + 4\n"
+ " bl SetMainCallback2\n"
+ " bl LoadPlayerParty\n"
+ " ldr r1, ._230 + 8\n"
+ " ldr r0, ._230 + 12\n"
+ " ldrb r0, [r0, #0xd]\n"
+ " strb r0, [r1, #0x8]\n"
+ " ldr r0, ._230 + 16\n"
+ " mov r1, #0x0\n"
+ " strh r4, [r0]\n"
+ " ldr r0, ._230 + 20\n"
+ " strb r1, [r0]\n"
+ " ldr r1, ._230 + 24\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._230 + 28\n"
+ " b ._229\n"
+ "._231:\n"
+ " .align 2, 0\n"
+ "._230:\n"
+ " .word gMain\n"
+ " .word debug_80C370C+1\n"
+ " .word gSaveBlock2\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gTasks\n"
+ " .word debug_80C373C+1\n"
+ "._228:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._232 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._233 @cond_branch\n"
+ "._232:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._236\n"
+ " ldr r3, ._236 + 4\n"
+ " ldr r2, ._236 + 8\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0, #0x4]\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._236 + 12\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " strb r0, [r2, #0xc]\n"
+ " ldrb r0, [r2, #0x3]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bhi ._234 @cond_branch\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r0, ._236 + 16\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._236 + 20\n"
+ " str r0, [r1]\n"
+ " b ._247\n"
+ "._237:\n"
+ " .align 2, 0\n"
+ "._236:\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_Debug_083F8068\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gTasks\n"
+ " .word debug_80C4A60+1\n"
+ "._234:\n"
+ " ldr r0, ._239\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._239 + 4\n"
+ " str r0, [r1]\n"
+ " b ._247\n"
+ "._240:\n"
+ " .align 2, 0\n"
+ "._239:\n"
+ " .word gTasks\n"
+ " .word debug_80C4F48+1\n"
+ "._233:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._242 @cond_branch\n"
+ " ldr r1, ._244\n"
+ " ldrb r0, [r1, #0x3]\n"
+ " cmp r0, #0\n"
+ " beq ._242 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._243\n"
+ "._245:\n"
+ " .align 2, 0\n"
+ "._244:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ "._242:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._247 @cond_branch\n"
+ " ldr r1, ._248\n"
+ " ldrb r0, [r1, #0x3]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._247 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._243:\n"
+ " strb r0, [r1, #0x3]\n"
+ " ldr r1, ._248 + 4\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._248 + 8\n"
+ "._229:\n"
+ " str r1, [r0]\n"
+ "._247:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._249:\n"
+ " .align 2, 0\n"
+ "._248:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C48A0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4A60()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._250\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._250 + 4\n"
+ " ldr r2, ._250 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._250 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._250 + 16\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._250 + 20\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._251:\n"
+ " .align 2, 0\n"
+ "._250:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x79ef\n"
+ " .word 0x17f\n"
+ " .word gTasks\n"
+ " .word debug_80C4AC4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4AC4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r7, ._255\n"
+ " ldrb r0, [r7, #0x4]\n"
+ " mov ip, r0\n"
+ " ldrb r5, [r7, #0x5]\n"
+ " mov r1, ip\n"
+ " add r0, r1, r5\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r1, r0, #0x18\n"
+ " ldr r2, ._255 + 4\n"
+ " mov r8, r2\n"
+ " ldrh r2, [r2, #0x2e]\n"
+ " mov r3, #0x1\n"
+ " and r3, r3, r2\n"
+ " add r4, r7, #0\n"
+ " cmp r3, #0\n"
+ " beq ._252 @cond_branch\n"
+ " ldr r0, ._255 + 8\n"
+ " lsl r1, r1, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r1, [r1]\n"
+ " ldr r3, ._255 + 12\n"
+ " ldr r2, [r3]\n"
+ " add r0, r2, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._253 @cond_branch\n"
+ " ldr r0, ._255 + 16\n"
+ " eor r1, r1, r0\n"
+ " and r2, r2, r1\n"
+ " b ._254\n"
+ "._256:\n"
+ " .align 2, 0\n"
+ "._255:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_083F80D8\n"
+ " .word byte_3005E30\n"
+ " .word 0xffff\n"
+ "._253:\n"
+ " orr r2, r2, r1\n"
+ "._254:\n"
+ " str r2, [r3]\n"
+ " ldrb r0, [r4, #0x4]\n"
+ " bl debug_80C4C44\n"
+ " ldr r1, ._258\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._258 + 4\n"
+ " str r1, [r0]\n"
+ " b ._274\n"
+ "._259:\n"
+ " .align 2, 0\n"
+ "._258:\n"
+ " .word gTasks\n"
+ " .word debug_80C4A60+1\n"
+ "._252:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0\n"
+ " beq ._260 @cond_branch\n"
+ " str r3, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r0, ._262\n"
+ " lsl r1, r6, #0x2\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._262 + 4\n"
+ " b ._261\n"
+ "._263:\n"
+ " .align 2, 0\n"
+ "._262:\n"
+ " .word gTasks\n"
+ " .word debug_80C48A0+1\n"
+ "._260:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._264 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._266\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x3\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._266 + 4\n"
+ " ldrb r2, [r1, #0x1]\n"
+ " mov r0, #0x11\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r1, #0x1]\n"
+ " mov r0, #0xac\n"
+ " strb r0, [r1, #0x2]\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1, #0x3]\n"
+ " strb r4, [r1, #0x9]\n"
+ " strb r4, [r1, #0xa]\n"
+ " strb r4, [r1, #0xb]\n"
+ " strb r4, [r1, #0xc]\n"
+ " ldr r1, ._266 + 8\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._266 + 12\n"
+ " str r1, [r0]\n"
+ " b ._274\n"
+ "._267:\n"
+ " .align 2, 0\n"
+ "._266:\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word +0x2017000\n"
+ " .word gTasks\n"
+ " .word debug_80C4F48+1\n"
+ "._264:\n"
+ " mov r0, r8\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._268 @cond_branch\n"
+ " lsl r0, r5, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._269 @cond_branch\n"
+ " sub r0, r5, #1\n"
+ " strb r0, [r7, #0x5]\n"
+ " b ._277\n"
+ "._269:\n"
+ " mov r1, ip\n"
+ " lsl r0, r1, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._277 @cond_branch\n"
+ " mov r0, ip\n"
+ " sub r0, r0, #0x1\n"
+ " b ._272\n"
+ "._268:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._274 @cond_branch\n"
+ " lsl r0, r5, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x8\n"
+ " bhi ._274 @cond_branch\n"
+ " cmp r0, #0x4\n"
+ " bhi ._275 @cond_branch\n"
+ " add r0, r5, #1\n"
+ " strb r0, [r7, #0x5]\n"
+ " b ._277\n"
+ "._275:\n"
+ " mov r2, ip\n"
+ " lsl r0, r2, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x3\n"
+ " bhi ._277 @cond_branch\n"
+ " mov r0, ip\n"
+ " add r0, r0, #0x1\n"
+ "._272:\n"
+ " strb r0, [r7, #0x4]\n"
+ " ldrb r0, [r7, #0x4]\n"
+ " bl debug_80C4C44\n"
+ "._277:\n"
+ " ldr r0, ._278\n"
+ " lsl r1, r6, #0x2\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._278 + 4\n"
+ "._261:\n"
+ " str r0, [r1]\n"
+ "._274:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._279:\n"
+ " .align 2, 0\n"
+ "._278:\n"
+ " .word gTasks\n"
+ " .word debug_80C4A60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4C44()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " mov r2, #0x0\n"
+ " mov r5, sp\n"
+ "._290:\n"
+ " mov r0, sl\n"
+ " add r6, r2, r0\n"
+ " add r4, r6, #0\n"
+ " add r1, r2, #1\n"
+ " mov r8, r1\n"
+ " cmp r4, #0x9\n"
+ " bgt ._280 @cond_branch\n"
+ " mov r3, #0x0\n"
+ " ldr r1, ._288\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " ldrb r0, [r0]\n"
+ " ldr r7, ._288 + 4\n"
+ " mov r9, r7\n"
+ " lsl r2, r2, #0x1\n"
+ " mov ip, r2\n"
+ " cmp r0, #0xff\n"
+ " beq ._282 @cond_branch\n"
+ " add r7, r1, #0\n"
+ "._283:\n"
+ " add r0, r3, #3\n"
+ " mov r1, sp\n"
+ " add r2, r1, r0\n"
+ " lsl r1, r6, #0x3\n"
+ " add r1, r1, r7\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r2]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._282 @cond_branch\n"
+ " cmp r3, #0xb\n"
+ " bls ._283 @cond_branch\n"
+ "._282:\n"
+ " cmp r3, #0xb\n"
+ " bhi ._284 @cond_branch\n"
+ " mov r1, #0x0\n"
+ "._285:\n"
+ " add r0, r3, #3\n"
+ " add r0, r0, sp\n"
+ " strb r1, [r0]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0xb\n"
+ " bls ._285 @cond_branch\n"
+ "._284:\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r5, #0xe]\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r5]\n"
+ " mov r2, #0x1\n"
+ " strb r2, [r5, #0x1]\n"
+ " add r1, r2, #0\n"
+ " LSL r1, r4\n"
+ " mov r3, r9\n"
+ " ldr r0, [r3]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._286 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r5, #0x2]\n"
+ " b ._287\n"
+ "._289:\n"
+ " .align 2, 0\n"
+ "._288:\n"
+ " .word gUnknown_Debug_083F80D8\n"
+ " .word byte_3005E30\n"
+ "._286:\n"
+ " strb r2, [r5, #0x2]\n"
+ "._287:\n"
+ " mov r2, ip\n"
+ " add r2, r2, #0x3\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, sp\n"
+ " mov r1, #0x11\n"
+ " bl MenuPrint\n"
+ "._280:\n"
+ " mov r7, r8\n"
+ " lsl r0, r7, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x5\n"
+ " bls ._290 @cond_branch\n"
+ " add sp, sp, #0x10\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4D14()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xffffffd0\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._291\n"
+ " mov r0, sp\n"
+ " mov r2, #0xf\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x10\n"
+ " ldr r1, ._291 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " add r6, sp, #0x20\n"
+ " ldr r1, ._291 + 8\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0xf\n"
+ " bl memcpy\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._291 + 12\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " bl debug_80C4F00\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r1, ._291 + 16\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._291 + 20\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x30\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._292:\n"
+ " .align 2, 0\n"
+ "._291:\n"
+ " .word gUnknown_Debug_083F81C7\n"
+ " .word gUnknown_Debug_083F81F5\n"
+ " .word gUnknown_Debug_083F8202\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C4DB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4DB8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._293\n"
+ " ldrb r0, [r0, #0x7]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._293 + 4\n"
+ " ldr r2, ._293 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r2, #0x8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._293 + 12\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._293 + 16\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._294:\n"
+ " .align 2, 0\n"
+ "._293:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x177\n"
+ " .word gTasks\n"
+ " .word debug_80C4E18+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4E18()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r5, ._297\n"
+ " ldrb r3, [r5, #0x6]\n"
+ " ldrb r2, [r5, #0x7]\n"
+ " add r0, r3, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r7, ._297 + 4\n"
+ " ldrh r1, [r7, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._295 @cond_branch\n"
+ " ldr r0, ._297 + 8\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._297 + 12\n"
+ " b ._296\n"
+ "._298:\n"
+ " .align 2, 0\n"
+ "._297:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ " .word debug_80C42B8+1\n"
+ "._295:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._299 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._300 @cond_branch\n"
+ "._299:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r2, ._302\n"
+ " ldr r1, ._302 + 4\n"
+ " lsl r0, r6, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x4]\n"
+ " strb r0, [r2]\n"
+ " ldr r1, ._302 + 8\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._302 + 12\n"
+ " str r1, [r0]\n"
+ " b ._310\n"
+ "._303:\n"
+ " .align 2, 0\n"
+ "._302:\n"
+ " .word gBattleTerrain\n"
+ " .word gUnknown_Debug_083F814C\n"
+ " .word gTasks\n"
+ " .word debug_80C5158+1\n"
+ "._300:\n"
+ " ldrh r1, [r7, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._304 @cond_branch\n"
+ " lsl r0, r2, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._305 @cond_branch\n"
+ " sub r0, r2, #1\n"
+ " strb r0, [r5, #0x7]\n"
+ " b ._313\n"
+ "._305:\n"
+ " lsl r0, r3, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._313 @cond_branch\n"
+ " sub r0, r3, #1\n"
+ " b ._308\n"
+ "._304:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._310 @cond_branch\n"
+ " lsl r0, r2, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x7\n"
+ " bhi ._310 @cond_branch\n"
+ " cmp r0, #0x4\n"
+ " bhi ._311 @cond_branch\n"
+ " add r0, r2, #1\n"
+ " strb r0, [r5, #0x7]\n"
+ " b ._313\n"
+ "._311:\n"
+ " lsl r0, r3, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x2\n"
+ " bhi ._313 @cond_branch\n"
+ " add r0, r3, #1\n"
+ "._308:\n"
+ " strb r0, [r5, #0x6]\n"
+ " ldrb r0, [r5, #0x6]\n"
+ " bl debug_80C4F00\n"
+ "._313:\n"
+ " ldr r0, ._314\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._314 + 4\n"
+ "._296:\n"
+ " str r0, [r1]\n"
+ "._310:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._315:\n"
+ " .align 2, 0\n"
+ "._314:\n"
+ " .word gTasks\n"
+ " .word debug_80C4DB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4F00()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xe\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " mov r4, #0x0\n"
+ " ldr r6, ._318\n"
+ "._317:\n"
+ " cmp r4, #0x8\n"
+ " bhi ._316 @cond_branch\n"
+ " add r0, r4, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r6\n"
+ " ldr r0, [r0]\n"
+ " lsl r2, r4, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r2, r2, r1\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x2\n"
+ " bl MenuPrint\n"
+ "._316:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x5\n"
+ " bls ._317 @cond_branch\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._319:\n"
+ " .align 2, 0\n"
+ "._318:\n"
+ " .word gUnknown_Debug_083F814C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C4F48()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6}\n"
+ " add sp, sp, #0xffffffc4\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._320\n"
+ " mov r0, sp\n"
+ " mov r2, #0x11\n"
+ " bl memcpy\n"
+ " add r6, sp, #0x14\n"
+ " ldr r1, ._320 + 4\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x24\n"
+ " ldr r1, ._320 + 8\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0xd\n"
+ " bl memcpy\n"
+ " add r0, sp, #0x34\n"
+ " mov r9, r0\n"
+ " ldr r1, ._320 + 12\n"
+ " mov r2, #0x4\n"
+ " bl memcpy\n"
+ " add r0, sp, #0x38\n"
+ " mov r8, r0\n"
+ " ldr r1, ._320 + 16\n"
+ " mov r2, #0x4\n"
+ " bl memcpy\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xe\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r0, r9\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " mov r0, r8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r1, ._320 + 20\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._320 + 24\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x3c\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._321:\n"
+ " .align 2, 0\n"
+ "._320:\n"
+ " .word gUnknown_Debug_083F8211\n"
+ " .word gUnknown_Debug_083F81A0\n"
+ " .word gUnknown_Debug_083F8222\n"
+ " .word gUnknown_Debug_083F822F\n"
+ " .word gUnknown_Debug_083F8233\n"
+ " .word gTasks\n"
+ " .word debug_80C5038+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5038()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r0, ._322\n"
+ " ldrb r0, [r0, #0x8]\n"
+ " lsl r0, r0, #0x19\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x12\n"
+ " add r0, r0, r1\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xe\n"
+ " bl debug_80C38E4\n"
+ " ldr r1, ._322 + 4\n"
+ " ldr r2, ._322 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r2, #0x8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._322 + 12\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._322 + 16\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._323:\n"
+ " .align 2, 0\n"
+ "._322:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word 0x4000042\n"
+ " .word 0x177\n"
+ " .word gTasks\n"
+ " .word debug_80C5098+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5098()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r1, ._326\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " add r3, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._324 @cond_branch\n"
+ " ldr r0, ._326 + 4\n"
+ " lsl r1, r4, #0x2\n"
+ " add r1, r1, r4\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._326 + 8\n"
+ " str r0, [r1]\n"
+ " b ._339\n"
+ "._327:\n"
+ " .align 2, 0\n"
+ "._326:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ " .word debug_80C47BC+1\n"
+ "._324:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._328 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._329 @cond_branch\n"
+ "._328:\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._331\n"
+ " ldr r0, ._331 + 4\n"
+ " ldrb r0, [r0, #0x8]\n"
+ " strb r0, [r1, #0x8]\n"
+ " ldr r1, ._331 + 8\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._331 + 12\n"
+ " b ._330\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gSaveBlock2\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C42B8+1\n"
+ "._329:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._334 @cond_branch\n"
+ " ldr r1, ._336\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " cmp r0, #0\n"
+ " beq ._334 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._335\n"
+ "._337:\n"
+ " .align 2, 0\n"
+ "._336:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ "._334:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._339 @cond_branch\n"
+ " ldr r1, ._340\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " cmp r0, #0\n"
+ " bne ._339 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._335:\n"
+ " strb r0, [r1, #0x8]\n"
+ " ldr r1, ._340 + 4\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._340 + 8\n"
+ "._330:\n"
+ " str r1, [r0]\n"
+ "._339:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._341:\n"
+ " .align 2, 0\n"
+ "._340:\n"
+ " .word unk_debug_ewram_0+0x20\n"
+ " .word gTasks\n"
+ " .word debug_80C5038+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5158()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._342\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._342 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._343:\n"
+ " .align 2, 0\n"
+ "._342:\n"
+ " .word gTasks\n"
+ " .word debug_80C5174+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5174()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._344\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._344 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._345:\n"
+ " .align 2, 0\n"
+ "._344:\n"
+ " .word gTasks\n"
+ " .word debug_80C5190+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5190()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._346\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._346 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._347:\n"
+ " .align 2, 0\n"
+ "._346:\n"
+ " .word gTasks\n"
+ " .word debug_80C51AC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C51AC()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._348\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._348 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._349:\n"
+ " .align 2, 0\n"
+ "._348:\n"
+ " .word gTasks\n"
+ " .word debug_80C51C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C51C8()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._350\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._350 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._351:\n"
+ " .align 2, 0\n"
+ "._350:\n"
+ " .word gTasks\n"
+ " .word debug_80C51E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C51E4()
+{
+ asm(
+ " push {lr}\n"
+ " bl sub_80408BC\n"
+ " ldr r0, ._352\n"
+ " ldr r1, ._352 + 4\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, ._352 + 8\n"
+ " bl SetMainCallback2\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._353:\n"
+ " .align 2, 0\n"
+ "._352:\n"
+ " .word gMain\n"
+ " .word debug_80C41A8+1\n"
+ " .word unref_sub_800D684+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5208()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " ldr r1, ._355\n"
+ " ldr r0, ._355 + 4\n"
+ " str r0, [r1]\n"
+ " mov r3, #0x0\n"
+ " add r6, r1, #0\n"
+ " ldr r4, ._355 + 8\n"
+ " add r5, r6, #0\n"
+ " mov r2, #0x0\n"
+ "._354:\n"
+ " ldr r0, [r5]\n"
+ " lsl r1, r3, #0x2\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r1\n"
+ " str r2, [r0]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0x3f\n"
+ " bls ._354 @cond_branch\n"
+ " ldr r2, [r6]\n"
+ " mov r0, #0xfc\n"
+ " str r0, [r2, #0x64]\n"
+ " ldrb r1, [r4, #0xa]\n"
+ " ldrb r0, [r4, #0xb]\n"
+ " lsl r0, r0, #0x8\n"
+ " orr r1, r1, r0\n"
+ " ldrb r0, [r4, #0xc]\n"
+ " lsl r0, r0, #0x10\n"
+ " orr r1, r1, r0\n"
+ " ldrb r0, [r4, #0xd]\n"
+ " lsl r0, r0, #0x18\n"
+ " orr r1, r1, r0\n"
+ " str r1, [r2, #0x70]\n"
+ " bl Random\n"
+ " add r4, r0, #0\n"
+ " bl Random\n"
+ " ldr r1, [r6]\n"
+ " lsl r4, r4, #0x10\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " orr r4, r4, r0\n"
+ " str r4, [r1, #0x74]\n"
+ " mov r0, #0x1\n"
+ " str r0, [r1, #0x68]\n"
+ " str r0, [r1, #0x6c]\n"
+ " bl debug_80C5C94\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._356:\n"
+ " .align 2, 0\n"
+ "._355:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word +0x2018000\n"
+ " .word gSaveBlock2\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C527C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add r6, r0, #0\n"
+ " mov r5, #0x0\n"
+ " ldr r7, ._359\n"
+ "._361:\n"
+ " mov r0, #0x64\n"
+ " add r1, r5, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._359 + 4\n"
+ " add r4, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " cmp r0, #0\n"
+ " bne ._357 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x64\n"
+ " bl memcpy\n"
+ " add r0, r5, #1\n"
+ " strb r0, [r7]\n"
+ " mov r0, #0x0\n"
+ " b ._358\n"
+ "._360:\n"
+ " .align 2, 0\n"
+ "._359:\n"
+ " .word gPlayerPartyCount\n"
+ " .word gPlayerParty\n"
+ "._357:\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x5\n"
+ " bls ._361 @cond_branch\n"
+ " ldr r0, ._362\n"
+ " ldr r0, [r0]\n"
+ " bl SendMonToPC\n"
+ " mov r0, #0x1\n"
+ "._358:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._363:\n"
+ " .align 2, 0\n"
+ "._362:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitCreatePokemon()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xffffffd4\n"
+ " ldr r1, ._364\n"
+ " add r0, sp, #0x4\n"
+ " mov r2, #0x25\n"
+ " bl memcpy\n"
+ " bl debug_80C35DC\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r4, #0x0\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._364 + 4\n"
+ " mov r5, #0x0\n"
+ " strh r4, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r4, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r4, [r0]\n"
+ " ldr r3, ._364 + 8\n"
+ " ldrh r2, [r3]\n"
+ " strh r4, [r3]\n"
+ " ldr r4, ._364 + 12\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ " strh r2, [r3]\n"
+ " ldr r2, ._364 + 16\n"
+ " ldrh r0, [r2]\n"
+ " mov r1, #0x8\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " ldr r0, ._364 + 20\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._364 + 24\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl MenuDrawTextWindow\n"
+ " add r0, sp, #0x4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " mov r1, #0x80\n"
+ " lsl r1, r1, #0x13\n"
+ " mov r2, #0x8a\n"
+ " lsl r2, r2, #0x5\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._364 + 28\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " bl debug_80C5208\n"
+ " ldr r1, ._364 + 32\n"
+ " ldr r0, [r1]\n"
+ " mov r2, #0xb4\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " strb r5, [r0]\n"
+ " ldr r0, [r1]\n"
+ " ldr r1, ._364 + 36\n"
+ " add r0, r0, r1\n"
+ " strb r5, [r0]\n"
+ " add sp, sp, #0x2c\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._365:\n"
+ " .align 2, 0\n"
+ "._364:\n"
+ " .word gUnknown_Debug_083F8733\n"
+ " .word 0x4000050\n"
+ " .word 0x4000208\n"
+ " .word 0x4000200\n"
+ " .word 0x4000004\n"
+ " .word debug_80C3758+1\n"
+ " .word debug_80C370C+1\n"
+ " .word debug_80C53A4+1\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C53A4()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._366\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r0, ._366 + 4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._367:\n"
+ " .align 2, 0\n"
+ "._366:\n"
+ " .word gTasks\n"
+ " .word debug_80C53C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C53C0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl debug_80C6384\n"
+ " mov r0, #0x0\n"
+ " bl debug_80C627C\n"
+ " ldr r1, ._368\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._368 + 4\n"
+ " str r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._369:\n"
+ " .align 2, 0\n"
+ "._368:\n"
+ " .word gTasks\n"
+ " .word debug_80C53F0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C53F0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r0, ._372\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r2, #0x1\n"
+ " and r2, r2, r1\n"
+ " add r4, r0, #0\n"
+ " cmp r2, #0\n"
+ " beq ._370 @cond_branch\n"
+ " ldr r0, ._372 + 4\n"
+ " ldr r3, [r0]\n"
+ " mov r0, #0xb2\n"
+ " lsl r0, r0, #0x1\n"
+ " add r2, r3, r0\n"
+ " ldr r1, ._372 + 8\n"
+ " mov r4, #0xb4\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r3, r4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r6, ._372 + 12\n"
+ " add r1, r3, r6\n"
+ " ldrb r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r3, #0\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r2]\n"
+ " mov r0, #0xb5\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r3, r0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl debug_80C643C\n"
+ " ldr r1, ._372 + 16\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._372 + 20\n"
+ " b ._375\n"
+ "._373:\n"
+ " .align 2, 0\n"
+ "._372:\n"
+ " .word gMain\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word 0x169\n"
+ " .word gTasks\n"
+ " .word debug_80C55E4+1\n"
+ "._370:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._374 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " str r2, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._376\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._376 + 4\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._376 + 8\n"
+ " b ._375\n"
+ "._377:\n"
+ " .align 2, 0\n"
+ "._376:\n"
+ " .word debug_80C370C+1\n"
+ " .word gTasks\n"
+ " .word debug_80C373C+1\n"
+ "._374:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._378 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " bl debug_80C5FFC\n"
+ " ldr r0, ._381\n"
+ " ldr r0, [r0]\n"
+ " bl debug_80C527C\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1a\n"
+ " mov r3, #0xb\n"
+ " bl MenuDrawTextWindow\n"
+ " cmp r4, #0\n"
+ " beq ._379 @cond_branch\n"
+ " ldr r0, ._381 + 4\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " b ._380\n"
+ "._382:\n"
+ " .align 2, 0\n"
+ "._381:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F872A\n"
+ "._379:\n"
+ " ldr r0, ._384\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ "._380:\n"
+ " ldr r0, ._384 + 4\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._384 + 8\n"
+ " str r0, [r1]\n"
+ " b ._400\n"
+ "._385:\n"
+ " .align 2, 0\n"
+ "._384:\n"
+ " .word gUnknown_Debug_083F8720\n"
+ " .word gTasks\n"
+ " .word debug_80C5708+1\n"
+ "._378:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._386 @cond_branch\n"
+ " ldr r0, ._388\n"
+ " ldr r0, [r0]\n"
+ " ldr r4, [r0, #0x64]\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetNationalPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetNationalPokedexFlag\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._400\n"
+ "._389:\n"
+ " .align 2, 0\n"
+ "._388:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._386:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._390 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " bl debug_80C627C\n"
+ " b ._400\n"
+ "._390:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0\n"
+ " beq ._392 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl debug_80C627C\n"
+ " b ._400\n"
+ "._392:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._395 @cond_branch\n"
+ " ldr r2, ._397\n"
+ " ldr r0, [r2]\n"
+ " mov r6, #0xb4\n"
+ " lsl r6, r6, #0x1\n"
+ " add r1, r0, r6\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._395 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, [r2]\n"
+ " ldr r1, ._397 + 4\n"
+ " add r0, r0, r1\n"
+ " strb r3, [r0]\n"
+ " b ._396\n"
+ "._398:\n"
+ " .align 2, 0\n"
+ "._397:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ "._395:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._400 @cond_branch\n"
+ " ldr r3, ._401\n"
+ " ldr r0, [r3]\n"
+ " mov r4, #0xb4\n"
+ " lsl r4, r4, #0x1\n"
+ " add r2, r0, r4\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0x4\n"
+ " bhi ._400 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x0\n"
+ " strb r0, [r2]\n"
+ " ldr r0, [r3]\n"
+ " ldr r6, ._401 + 4\n"
+ " add r0, r0, r6\n"
+ " strb r1, [r0]\n"
+ "._396:\n"
+ " ldr r1, ._401 + 8\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._401 + 12\n"
+ "._375:\n"
+ " str r1, [r0]\n"
+ "._400:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._402:\n"
+ " .align 2, 0\n"
+ "._401:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ " .word gTasks\n"
+ " .word debug_80C53C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C55E4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " add r6, r3, #0\n"
+ " ldr r1, ._405\n"
+ " ldr r2, ._405 + 4\n"
+ " ldr r0, [r2]\n"
+ " mov ip, r0\n"
+ " mov r0, #0xb4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, ip\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._405 + 8\n"
+ " add r1, r1, ip\n"
+ " ldrb r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r1\n"
+ " ldrb r5, [r0]\n"
+ " add r7, r5, #0\n"
+ " ldr r1, ._405 + 12\n"
+ " ldrh r4, [r1, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r4\n"
+ " mov r8, r2\n"
+ " add r2, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._403 @cond_branch\n"
+ " ldr r0, ._405 + 16\n"
+ " lsl r1, r3, #0x2\n"
+ " add r1, r1, r3\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._405 + 20\n"
+ " str r0, [r1]\n"
+ " b ._422\n"
+ "._406:\n"
+ " .align 2, 0\n"
+ "._405:\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ " .word debug_80C53C0+1\n"
+ "._403:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r4\n"
+ " cmp r0, #0\n"
+ " beq ._407 @cond_branch\n"
+ " lsl r1, r5, #0x2\n"
+ " mov r0, ip\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xb2\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, ip\n"
+ " ldr r1, [r1]\n"
+ " str r1, [r0]\n"
+ " ldr r1, ._409\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._409 + 4\n"
+ " str r1, [r0]\n"
+ " b ._422\n"
+ "._410:\n"
+ " .align 2, 0\n"
+ "._409:\n"
+ " .word gTasks\n"
+ " .word debug_80C53C0+1\n"
+ "._407:\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._411 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._412\n"
+ "._411:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._413 @cond_branch\n"
+ " mov r0, #0x2\n"
+ "._412:\n"
+ " bl debug_80C6544\n"
+ " bl debug_80C643C\n"
+ " b ._422\n"
+ "._413:\n"
+ " ldr r0, ._419\n"
+ " lsl r1, r7, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r1, [r1]\n"
+ " ldrb r0, [r1, #0x9]\n"
+ " cmp r0, #0xff\n"
+ " beq ._422 @cond_branch\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r4\n"
+ " cmp r0, #0\n"
+ " beq ._417 @cond_branch\n"
+ " mov r0, #0xb5\n"
+ " lsl r0, r0, #0x1\n"
+ " add ip, ip, r0\n"
+ " mov r0, ip\n"
+ " ldrb r3, [r0]\n"
+ " ldrb r0, [r1, #0x9]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r3, r0\n"
+ " bge ._417 @cond_branch\n"
+ " add r0, r3, #1\n"
+ " mov r1, ip\n"
+ " strb r0, [r1]\n"
+ " bl debug_80C643C\n"
+ " b ._422\n"
+ "._420:\n"
+ " .align 2, 0\n"
+ "._419:\n"
+ " .word gUnknown_Debug_083F8554\n"
+ "._417:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._422 @cond_branch\n"
+ " mov r2, r8\n"
+ " ldr r0, [r2]\n"
+ " mov r2, #0xb5\n"
+ " lsl r2, r2, #0x1\n"
+ " add r1, r0, r2\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._422 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl debug_80C643C\n"
+ "._422:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5708()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " ldr r0, ._424\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._423 @cond_branch\n"
+ " ldr r0, ._424 + 4\n"
+ " lsl r1, r2, #0x2\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._424 + 8\n"
+ " str r0, [r1]\n"
+ "._423:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._425:\n"
+ " .align 2, 0\n"
+ "._424:\n"
+ " .word gMain\n"
+ " .word gTasks\n"
+ " .word debug_80C53C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5738()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add r6, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r4, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r8, r2\n"
+ " cmp r4, #0xfe\n"
+ " bne ._426 @cond_branch\n"
+ " ldr r1, ._428\n"
+ " mov r2, #0x7\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #7\n"
+ " ldr r7, ._428 + 4\n"
+ " ldr r1, [r7]\n"
+ " add r1, r1, #0xf0\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6678\n"
+ " mov r4, #0x0\n"
+ " strb r4, [r6, #0x13]\n"
+ " strb r4, [r6, #0x14]\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x15\n"
+ " ldr r1, ._428 + 8\n"
+ " mov r2, #0x7\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x1c\n"
+ " ldr r1, [r7]\n"
+ " add r1, r1, #0xf4\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6678\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x28\n"
+ " strb r4, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " strb r4, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " ldr r1, ._428 + 12\n"
+ " mov r2, #0x9\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x31\n"
+ " ldr r1, [r7]\n"
+ " add r1, r1, #0xf8\n"
+ "._431:\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6678\n"
+ " b ._517\n"
+ "._429:\n"
+ " .align 2, 0\n"
+ "._428:\n"
+ " .word gUnknown_Debug_083F850A\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F8514\n"
+ " .word gUnknown_Debug_083F851C\n"
+ "._426:\n"
+ " cmp r4, #0xfd\n"
+ " bne ._430 @cond_branch\n"
+ " ldr r1, ._432\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x9\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x9\n"
+ " ldr r7, ._432 + 4\n"
+ " ldr r1, [r7]\n"
+ " add r1, r1, #0xfc\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6678\n"
+ " mov r4, #0x0\n"
+ " strb r4, [r6, #0x15]\n"
+ " strb r4, [r6, #0x16]\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x17\n"
+ " ldr r1, ._432 + 8\n"
+ " mov r2, #0x9\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x20\n"
+ " ldr r1, [r7]\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6678\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x2c\n"
+ " strb r4, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " strb r4, [r0]\n"
+ " add r0, r0, #0x1\n"
+ " ldr r1, ._432 + 12\n"
+ " mov r2, #0x9\n"
+ " bl debug_80C689C\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x37\n"
+ " ldr r1, [r7]\n"
+ " mov r3, #0x82\n"
+ " lsl r3, r3, #0x1\n"
+ " add r1, r1, r3\n"
+ " b ._431\n"
+ "._433:\n"
+ " .align 2, 0\n"
+ "._432:\n"
+ " .word gUnknown_Debug_083F8524\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F852D\n"
+ " .word gUnknown_Debug_083F8537\n"
+ "._430:\n"
+ " mov r1, #0x0\n"
+ " lsl r5, r4, #0x3\n"
+ " mov r2, #0x0\n"
+ "._434:\n"
+ " add r0, r6, r1\n"
+ " strb r2, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " cmp r1, #0xb\n"
+ " bls ._434 @cond_branch\n"
+ " ldr r0, ._437\n"
+ " add r0, r5, r0\n"
+ " ldr r1, [r0]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0xb\n"
+ " bl debug_80C689C\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0xff\n"
+ "._435:\n"
+ " add r0, r6, r1\n"
+ " strb r2, [r0]\n"
+ " add r0, r1, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r1, r0, #0x10\n"
+ " cmp r1, #0xff\n"
+ " bls ._435 @cond_branch\n"
+ " ldr r0, ._437\n"
+ " add r0, r0, #0x4\n"
+ " add r0, r5, r0\n"
+ " ldr r0, [r0]\n"
+ " ldrb r2, [r0, #0x9]\n"
+ " lsl r0, r2, #0x1a\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r4, #0x22\n"
+ " bhi ._436 @cond_branch\n"
+ " lsl r0, r4, #0x2\n"
+ " ldr r1, ._437 + 4\n"
+ " add r1, r0, r1\n"
+ " ldr r1, [r1]\n"
+ " add r7, r0, #0\n"
+ " mov pc, r1\n"
+ "._438:\n"
+ " .align 2, 0\n"
+ "._437:\n"
+ " .word gUnknown_Debug_083F8554\n"
+ " .word ._439\n"
+ "._439:\n"
+ " .word ._440\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._445\n"
+ " .word ._446\n"
+ " .word ._450\n"
+ " .word ._450\n"
+ " .word ._450\n"
+ " .word ._450\n"
+ " .word ._451\n"
+ " .word ._452\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._472\n"
+ " .word ._473\n"
+ " .word ._474\n"
+ "._436:\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r6]\n"
+ " b ._517\n"
+ "._440:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._477\n"
+ " mov r9, r1\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " mov r3, r8\n"
+ " bl debug_80C6678\n"
+ " add r1, r5, r6\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0xa]\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r1, #0xb]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1, #0xc]\n"
+ " mov r2, r8\n"
+ " strb r2, [r1, #0xd]\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0xe\n"
+ " add r4, r6, r4\n"
+ " mov r3, r9\n"
+ " ldr r0, [r3]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r7\n"
+ " ldrh r0, [r0]\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r1, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._477 + 4\n"
+ " add r1, r1, r0\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0xa\n"
+ " bl debug_80C689C\n"
+ " b ._517\n"
+ "._478:\n"
+ " .align 2, 0\n"
+ "._477:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gSpeciesNames\n"
+ "._445:\n"
+ " ldr r0, ._483\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r7\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0x1\n"
+ " beq ._479 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bcc ._480 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._481 @cond_branch\n"
+ " b ._517\n"
+ "._484:\n"
+ " .align 2, 0\n"
+ "._483:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._480:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._486\n"
+ " b ._488\n"
+ "._487:\n"
+ " .align 2, 0\n"
+ "._486:\n"
+ " .word gUnknown_Debug_083F8546\n"
+ "._479:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._489\n"
+ " b ._488\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word gUnknown_Debug_083F8541\n"
+ "._481:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._492\n"
+ "._488:\n"
+ " mov r2, #0x2\n"
+ " bl debug_80C689C\n"
+ " b ._517\n"
+ "._493:\n"
+ " .align 2, 0\n"
+ "._492:\n"
+ " .word gUnknown_Debug_083F8544\n"
+ "._450:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r4, ._495\n"
+ " ldr r1, [r4]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " mov r3, r8\n"
+ " bl debug_80C6678\n"
+ " add r1, r5, r6\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0xa]\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r1, #0xb]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1, #0xc]\n"
+ " mov r0, r8\n"
+ " strb r0, [r1, #0xd]\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0xe\n"
+ " add r0, r6, r0\n"
+ " ldr r1, [r4]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r2, [r1]\n"
+ " mov r1, #0xd\n"
+ " mul r1, r1, r2\n"
+ " ldr r2, ._495 + 4\n"
+ " add r1, r1, r2\n"
+ " b ._494\n"
+ "._496:\n"
+ " .align 2, 0\n"
+ "._495:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gMoveNames\n"
+ "._451:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r4, ._499\n"
+ " ldr r1, [r4]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " mov r3, r8\n"
+ " bl debug_80C6678\n"
+ " add r1, r5, r6\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0xa]\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r1, #0xb]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1, #0xc]\n"
+ " mov r2, r8\n"
+ " strb r2, [r1, #0xd]\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r7\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._497 @cond_branch\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0xe\n"
+ " add r4, r6, r4\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl ItemId_GetItem\n"
+ " add r1, r0, #0\n"
+ " add r0, r4, #0\n"
+ " b ._498\n"
+ "._500:\n"
+ " .align 2, 0\n"
+ "._499:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._497:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0xe\n"
+ " add r0, r6, r0\n"
+ " ldr r1, ._502\n"
+ "._498:\n"
+ " mov r2, #0x9\n"
+ " bl debug_80C689C\n"
+ " b ._517\n"
+ "._503:\n"
+ " .align 2, 0\n"
+ "._502:\n"
+ " .word gUnknown_Debug_083F8541\n"
+ "._452:\n"
+ " add r6, r6, #0xc\n"
+ " ldr r4, ._505\n"
+ " ldr r0, [r4]\n"
+ " ldr r0, [r0, #0x64]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldr r1, [r4]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldrb r1, [r1]\n"
+ " bl GetAbilityBySpecies\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0xd\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._505 + 4\n"
+ " add r1, r1, r0\n"
+ " add r0, r6, #0\n"
+ "._494:\n"
+ " mov r2, #0xc\n"
+ " bl debug_80C689C\n"
+ " b ._517\n"
+ "._506:\n"
+ " .align 2, 0\n"
+ "._505:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gAbilityNames\n"
+ "._474:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r2, ._508\n"
+ " ldr r1, ._508 + 4\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r1, [r1]\n"
+ " b ._514\n"
+ "._509:\n"
+ " .align 2, 0\n"
+ "._508:\n"
+ " .word gUnknown_Debug_083F86E8\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._472:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xc\n"
+ " ldr r1, ._511\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " mov r3, r8\n"
+ " bl debug_80C6678\n"
+ " b ._517\n"
+ "._512:\n"
+ " .align 2, 0\n"
+ "._511:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._473:\n"
+ " ldr r0, ._515\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r7\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._513 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._515 + 4\n"
+ " b ._514\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F854A\n"
+ "._513:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r1, ._518\n"
+ "._514:\n"
+ " mov r2, #0x4\n"
+ " bl debug_80C689C\n"
+ " b ._517\n"
+ "._519:\n"
+ " .align 2, 0\n"
+ "._518:\n"
+ " .word gUnknown_Debug_083F854D\n"
+ "._446:\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0xa\n"
+ " ldr r2, ._520\n"
+ " ldr r1, ._520 + 4\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r7\n"
+ " ldr r1, [r1]\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r2\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x5\n"
+ " bl debug_80C689C\n"
+ "._517:\n"
+ " mov r0, #0x0\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._521:\n"
+ " .align 2, 0\n"
+ "._520:\n"
+ " .word gNatureNames\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5B60()
+{
+ asm(
+ " lsl r0, r0, #0x18\n"
+ " ldr r1, ._522\n"
+ " ldr r1, [r1]\n"
+ " lsr r0, r0, #0x16\n"
+ " add r1, r1, #0x64\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " bx lr\n"
+ "._523:\n"
+ " .align 2, 0\n"
+ "._522:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5B74()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r2, r1, #0x18\n"
+ " cmp r2, #0x18\n"
+ " bhi ._540 @cond_branch\n"
+ " lsl r0, r2, #0x2\n"
+ " ldr r1, ._526\n"
+ " add r1, r0, r1\n"
+ " ldr r1, [r1]\n"
+ " add r3, r0, #0\n"
+ " mov pc, r1\n"
+ "._527:\n"
+ " .align 2, 0\n"
+ "._526:\n"
+ " .word ._525\n"
+ "._525:\n"
+ " .word ._532\n"
+ " .word ._529\n"
+ " .word ._530\n"
+ " .word ._532\n"
+ " .word ._532\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._540\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ " .word ._552\n"
+ "._540:\n"
+ " ldr r0, ._554\n"
+ " ldr r0, [r0]\n"
+ " lsl r1, r2, #0x2\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r1\n"
+ " str r6, [r0]\n"
+ " b ._562\n"
+ "._555:\n"
+ " .align 2, 0\n"
+ "._554:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._532:\n"
+ " ldr r0, ._557\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r3\n"
+ " str r6, [r0]\n"
+ " bl debug_80C5C94\n"
+ " b ._562\n"
+ "._558:\n"
+ " .align 2, 0\n"
+ "._557:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._529:\n"
+ " ldr r4, ._560\n"
+ " ldr r1, [r4]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r3\n"
+ " str r6, [r0]\n"
+ " ldr r0, [r1, #0x64]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " ldr r5, [r4]\n"
+ " ldr r4, ._560 + 4\n"
+ " lsl r2, r6, #0x2\n"
+ " ldr r3, ._560 + 8\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " lsl r1, r0, #0x3\n"
+ " sub r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r3\n"
+ " ldrb r1, [r1, #0x13]\n"
+ " mov r0, #0xca\n"
+ " lsl r0, r0, #0x1\n"
+ " mul r0, r0, r1\n"
+ " add r2, r2, r0\n"
+ " add r2, r2, r4\n"
+ " ldr r0, [r2]\n"
+ " str r0, [r5, #0x6c]\n"
+ " bl debug_80C5C94\n"
+ " b ._562\n"
+ "._561:\n"
+ " .align 2, 0\n"
+ "._560:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gExperienceTables\n"
+ " .word gBaseStats\n"
+ "._530:\n"
+ " ldr r0, ._563\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r3\n"
+ " str r6, [r0]\n"
+ " bl debug_80C5DEC\n"
+ " b ._562\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._552:\n"
+ " ldr r0, ._565\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, #0x64\n"
+ " add r0, r0, r3\n"
+ " str r6, [r0]\n"
+ " bl debug_80C5EF4\n"
+ "._562:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5C94()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff0\n"
+ " ldr r6, ._567\n"
+ " ldr r2, [r6]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x98\n"
+ " ldr r4, [r0]\n"
+ " mov r1, #0x1f\n"
+ " and r4, r4, r1\n"
+ " add r0, r0, #0x8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xa8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0xa\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xb0\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0xf\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xb8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x14\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xc0\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x19\n"
+ " orr r4, r4, r0\n"
+ " ldr r0, [r2, #0x64]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, [r6]\n"
+ " ldr r2, [r0, #0x68]\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r5, #0x1\n"
+ " str r5, [sp]\n"
+ " ldr r3, [r0, #0x74]\n"
+ " str r3, [sp, #0x4]\n"
+ " str r5, [sp, #0x8]\n"
+ " ldr r3, [r0, #0x70]\n"
+ " str r3, [sp, #0xc]\n"
+ " add r3, r4, #0\n"
+ " bl CreateMon\n"
+ " ldr r0, [r6]\n"
+ " bl GetMonGender\n"
+ " ldr r1, [r6]\n"
+ " add r0, r0, #0x2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [r1, #0x78]\n"
+ " add r0, r1, #0\n"
+ " bl GetNature\n"
+ " ldr r1, [r6]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [r1, #0x7c]\n"
+ " add r0, r1, #0\n"
+ " mov r1, #0xd\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x80\n"
+ " str r2, [r1]\n"
+ " mov r1, #0xe\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x84\n"
+ " str r2, [r1]\n"
+ " mov r1, #0xf\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x88\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x10\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x8c\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x19\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " str r1, [r0, #0x6c]\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf0\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3b\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf4\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3c\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf8\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3d\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xfc\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3e\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r6]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x1\n"
+ " add r1, r0, r3\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3f\n"
+ " bl GetMonData\n"
+ " ldr r1, [r6]\n"
+ " mov r2, #0x82\n"
+ " lsl r2, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " str r0, [r1]\n"
+ " add sp, sp, #0x10\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._568:\n"
+ " .align 2, 0\n"
+ "._567:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5DEC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " ldr r4, ._569\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x6c\n"
+ " mov r1, #0x19\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0xd\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0xe\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0xf\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0x10\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " bl CalculateMonStats\n"
+ " ldr r0, [r4]\n"
+ " bl GiveMonInitialMoveset\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " str r1, [r0, #0x68]\n"
+ " mov r1, #0xd\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x80\n"
+ " str r2, [r1]\n"
+ " mov r1, #0xe\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x84\n"
+ " str r2, [r1]\n"
+ " mov r1, #0xf\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x88\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x10\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0x8c\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf0\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3b\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf4\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3c\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf8\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3d\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xfc\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3e\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x1\n"
+ " add r1, r0, r3\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3f\n"
+ " bl GetMonData\n"
+ " ldr r1, [r4]\n"
+ " mov r2, #0x82\n"
+ " lsl r2, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " str r0, [r1]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._570:\n"
+ " .align 2, 0\n"
+ "._569:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5EF4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._571\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x98\n"
+ " mov r1, #0x27\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x9c\n"
+ " mov r1, #0x1a\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa0\n"
+ " mov r1, #0x28\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa4\n"
+ " mov r1, #0x1b\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa8\n"
+ " mov r1, #0x29\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xac\n"
+ " mov r1, #0x1c\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb0\n"
+ " mov r1, #0x2a\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb4\n"
+ " mov r1, #0x1d\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb8\n"
+ " mov r1, #0x2b\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xbc\n"
+ " mov r1, #0x1e\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xc0\n"
+ " mov r1, #0x2c\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xc4\n"
+ " mov r1, #0x1f\n"
+ " bl SetMonData\n"
+ " ldr r0, [r4]\n"
+ " bl CalculateMonStats\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf0\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3b\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf4\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3c\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xf8\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3d\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xfc\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3e\n"
+ " bl GetMonData\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r4]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x1\n"
+ " add r1, r0, r3\n"
+ " str r2, [r1]\n"
+ " mov r1, #0x3f\n"
+ " bl GetMonData\n"
+ " ldr r1, [r4]\n"
+ " mov r2, #0x82\n"
+ " lsl r2, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " str r0, [r1]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._572:\n"
+ " .align 2, 0\n"
+ "._571:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C5FFC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xffffffe0\n"
+ " ldr r1, ._578\n"
+ " add r0, sp, #0x10\n"
+ " mov r2, #0x4\n"
+ " bl memcpy\n"
+ " add r7, sp, #0x14\n"
+ " ldr r1, ._578 + 4\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x8\n"
+ " bl memcpy\n"
+ " ldr r5, ._578 + 8\n"
+ " ldr r2, [r5]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x98\n"
+ " ldr r4, [r0]\n"
+ " mov r1, #0x1f\n"
+ " and r4, r4, r1\n"
+ " add r0, r0, #0x8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xa8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0xa\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xb0\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0xf\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xb8\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x14\n"
+ " orr r4, r4, r0\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xc0\n"
+ " ldr r0, [r0]\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x19\n"
+ " orr r4, r4, r0\n"
+ " ldr r0, [r2, #0x64]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl NationalPokedexNumToSpecies\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, [r5]\n"
+ " ldr r2, [r0, #0x68]\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " mov r6, #0x1\n"
+ " str r6, [sp]\n"
+ " ldr r3, [r0, #0x74]\n"
+ " str r3, [sp, #0x4]\n"
+ " str r6, [sp, #0x8]\n"
+ " ldr r3, [r0, #0x70]\n"
+ " str r3, [sp, #0xc]\n"
+ " add r3, r4, #0\n"
+ " bl CreateMon\n"
+ " ldr r2, [r5]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x80\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._573 @cond_branch\n"
+ " lsl r1, r0, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r2, #0\n"
+ " mov r2, #0x0\n"
+ " bl SetMonMoveSlot\n"
+ "._573:\n"
+ " ldr r2, [r5]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x84\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._574 @cond_branch\n"
+ " lsl r1, r0, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r2, #0\n"
+ " mov r2, #0x1\n"
+ " bl SetMonMoveSlot\n"
+ "._574:\n"
+ " ldr r2, [r5]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x88\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._575 @cond_branch\n"
+ " lsl r1, r0, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r2, #0\n"
+ " mov r2, #0x2\n"
+ " bl SetMonMoveSlot\n"
+ "._575:\n"
+ " ldr r2, [r5]\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x8c\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._576 @cond_branch\n"
+ " lsl r1, r0, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " add r0, r2, #0\n"
+ " mov r2, #0x3\n"
+ " bl SetMonMoveSlot\n"
+ "._576:\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x6c\n"
+ " mov r1, #0x19\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x98\n"
+ " mov r1, #0x27\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x9c\n"
+ " mov r1, #0x1a\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa0\n"
+ " mov r1, #0x28\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa4\n"
+ " mov r1, #0x1b\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xa8\n"
+ " mov r1, #0x29\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xac\n"
+ " mov r1, #0x1c\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb0\n"
+ " mov r1, #0x2a\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb4\n"
+ " mov r1, #0x1d\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xb8\n"
+ " mov r1, #0x2b\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xbc\n"
+ " mov r1, #0x1e\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xc0\n"
+ " mov r1, #0x2c\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xc4\n"
+ " mov r1, #0x1f\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xc8\n"
+ " mov r1, #0x16\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xcc\n"
+ " mov r1, #0x17\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xd0\n"
+ " mov r1, #0x18\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xd4\n"
+ " mov r1, #0x21\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xd8\n"
+ " mov r1, #0x2f\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xdc\n"
+ " mov r1, #0x30\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xe0\n"
+ " mov r1, #0x20\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xe4\n"
+ " mov r1, #0x22\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x90\n"
+ " mov r1, #0xc\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0x94\n"
+ " mov r1, #0x2e\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xec\n"
+ " ldr r2, [r1]\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r1, ._578 + 12\n"
+ " add r2, r2, r1\n"
+ " mov r1, #0x37\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " add r2, r0, #0\n"
+ " add r2, r2, #0xe8\n"
+ " mov r1, #0x2d\n"
+ " bl SetMonData\n"
+ " ldr r1, [r5]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xe8\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._577 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, sp, #0x10\n"
+ " bl SetMonData\n"
+ " add r2, sp, #0x1c\n"
+ " strb r6, [r2]\n"
+ " ldr r0, [r5]\n"
+ " mov r1, #0x3\n"
+ " bl SetMonData\n"
+ "._577:\n"
+ " ldr r0, [r5]\n"
+ " mov r1, #0x7\n"
+ " add r2, r7, #0\n"
+ " bl SetMonData\n"
+ " mov r2, sp\n"
+ " add r2, r2, #0x1e\n"
+ " mov r0, #0xff\n"
+ " strh r0, [r2]\n"
+ " ldr r0, [r5]\n"
+ " mov r1, #0x23\n"
+ " bl SetMonData\n"
+ " ldr r0, [r5]\n"
+ " bl CalculateMonStats\n"
+ " add sp, sp, #0x20\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._579:\n"
+ " .align 2, 0\n"
+ "._578:\n"
+ " .word gUnknown_Debug_083F8758\n"
+ " .word gUnknown_Debug_083F875C\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word gUnknown_Debug_083F86E8+0x4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C627C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r6, r4, #0\n"
+ " ldr r1, ._584\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x4\n"
+ " ldr r1, ._584 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " cmp r4, #0x1\n"
+ " beq ._580 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bgt ._581 @cond_branch\n"
+ " cmp r4, #0\n"
+ " beq ._582 @cond_branch\n"
+ " b ._595\n"
+ "._585:\n"
+ " .align 2, 0\n"
+ "._584:\n"
+ " .word gUnknown_Debug_083F7FD4\n"
+ " .word gUnknown_Debug_083F8764\n"
+ "._581:\n"
+ " cmp r6, #0x2\n"
+ " beq ._586 @cond_branch\n"
+ " b ._595\n"
+ "._582:\n"
+ " ldr r0, ._589\n"
+ " ldr r0, [r0]\n"
+ " ldr r1, ._589 + 4\n"
+ " add r0, r0, r1\n"
+ " b ._588\n"
+ "._590:\n"
+ " .align 2, 0\n"
+ "._589:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ "._580:\n"
+ " ldr r4, ._593\n"
+ " ldr r3, [r4]\n"
+ " ldr r1, ._593 + 4\n"
+ " add r0, r3, r1\n"
+ " ldrb r2, [r0]\n"
+ " ldr r1, ._593 + 8\n"
+ " mov r6, #0xb4\n"
+ " lsl r6, r6, #0x1\n"
+ " add r0, r3, r6\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x4]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " bge ._595 @cond_branch\n"
+ " lsl r2, r2, #0x19\n"
+ " mov r0, #0xa0\n"
+ " lsl r0, r0, #0x13\n"
+ " add r2, r2, r0\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, [r4]\n"
+ " ldr r2, ._593 + 4\n"
+ " add r1, r0, r2\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, r2\n"
+ "._588:\n"
+ " ldrb r2, [r0]\n"
+ " lsl r2, r2, #0x19\n"
+ " mov r6, #0xa0\n"
+ " lsl r6, r6, #0x13\n"
+ " add r2, r2, r6\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ " b ._595\n"
+ "._594:\n"
+ " .align 2, 0\n"
+ "._593:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ " .word gUnknown_Debug_083F8698\n"
+ "._586:\n"
+ " ldr r4, ._596\n"
+ " ldr r0, [r4]\n"
+ " ldr r2, ._596 + 4\n"
+ " add r1, r0, r2\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._595 @cond_branch\n"
+ " add r2, r0, #0\n"
+ " lsl r2, r2, #0x19\n"
+ " mov r6, #0xa0\n"
+ " lsl r6, r6, #0x13\n"
+ " add r2, r2, r6\n"
+ " lsr r2, r2, #0x18\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, [r4]\n"
+ " ldr r2, ._596 + 4\n"
+ " add r1, r0, r2\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, r2\n"
+ " ldrb r2, [r0]\n"
+ " lsl r2, r2, #0x19\n"
+ " add r2, r2, r6\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " bl MenuPrint\n"
+ "._595:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._597:\n"
+ " .align 2, 0\n"
+ "._596:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6384()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r5, #0x0\n"
+ " ldr r3, ._600\n"
+ " ldr r1, ._600 + 4\n"
+ " ldr r0, [r1]\n"
+ " mov r2, #0xb4\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._598 @cond_branch\n"
+ " add r4, r1, #0\n"
+ " ldr r0, ._600 + 8\n"
+ " mov r9, r0\n"
+ " mov r8, r3\n"
+ " add r7, r2, #0\n"
+ " mov r6, #0x1\n"
+ "._599:\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, r9\n"
+ " mov r1, #0xfc\n"
+ " strb r1, [r0]\n"
+ " ldr r0, [r4]\n"
+ " add r1, r1, #0x70\n"
+ " add r0, r0, r1\n"
+ " strb r6, [r0]\n"
+ " ldr r0, [r4]\n"
+ " ldr r2, ._600 + 12\n"
+ " add r0, r0, r2\n"
+ " strb r6, [r0]\n"
+ " ldr r1, [r4]\n"
+ " add r2, r2, #0x1\n"
+ " add r0, r1, r2\n"
+ " add r1, r1, r7\n"
+ " ldrb r1, [r1]\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r8\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, r5\n"
+ " ldrb r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " bl debug_80C5738\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, r9\n"
+ " lsl r2, r5, #0x19\n"
+ " mov r1, #0xa0\n"
+ " lsl r1, r1, #0x13\n"
+ " add r2, r2, r1\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x2\n"
+ " bl MenuPrint\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " ldr r0, [r4]\n"
+ " add r0, r0, r7\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r8\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._599 @cond_branch\n"
+ "._598:\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._601:\n"
+ " .align 2, 0\n"
+ "._600:\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x16b\n"
+ " .word 0x16d\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C643C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x12\n"
+ " bl MenuFillWindowRectWithBlankTile\n"
+ " mov r5, #0x0\n"
+ " ldr r6, ._605\n"
+ " ldr r1, ._605 + 4\n"
+ " ldr r0, [r1]\n"
+ " mov r3, #0xb4\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r6\n"
+ " ldr r0, [r0]\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " beq ._602 @cond_branch\n"
+ " add r4, r1, #0\n"
+ " mov r0, #0x1\n"
+ " mov r8, r0\n"
+ "._607:\n"
+ " ldr r0, [r4]\n"
+ " ldr r7, ._605 + 8\n"
+ " add r2, r0, r7\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r2]\n"
+ " ldr r0, [r4]\n"
+ " mov r2, #0xb6\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " mov r7, r8\n"
+ " strb r7, [r0]\n"
+ " ldr r2, [r4]\n"
+ " ldr r7, ._605 + 12\n"
+ " add r0, r2, r7\n"
+ " ldrb r0, [r0]\n"
+ " cmp r5, r0\n"
+ " bne ._603 @cond_branch\n"
+ " ldr r0, ._605 + 16\n"
+ " add r2, r2, r0\n"
+ " mov r0, #0x2\n"
+ " strb r0, [r2]\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0xb7\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r1, r2\n"
+ " add r1, r1, r3\n"
+ " ldrb r1, [r1]\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r6\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, r5\n"
+ " ldrb r1, [r1]\n"
+ " mov r2, #0x2\n"
+ " bl debug_80C5738\n"
+ " b ._604\n"
+ "._606:\n"
+ " .align 2, 0\n"
+ "._605:\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x16b\n"
+ " .word 0x169\n"
+ " .word 0x16d\n"
+ "._603:\n"
+ " ldr r3, ._608\n"
+ " add r0, r2, r3\n"
+ " mov r7, r8\n"
+ " strb r7, [r0]\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0xb7\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r1, r2\n"
+ " ldr r2, ._608 + 4\n"
+ " sub r3, r3, #0x5\n"
+ " add r1, r1, r3\n"
+ " ldrb r1, [r1]\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldr r1, [r1]\n"
+ " add r1, r1, r5\n"
+ " ldrb r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " bl debug_80C5738\n"
+ "._604:\n"
+ " ldr r0, [r4]\n"
+ " ldr r7, ._608 + 8\n"
+ " add r0, r0, r7\n"
+ " lsl r2, r5, #0x19\n"
+ " mov r1, #0xa0\n"
+ " lsl r1, r1, #0x13\n"
+ " add r2, r2, r1\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0x2\n"
+ " bl MenuPrint\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " ldr r6, ._608 + 4\n"
+ " add r1, r4, #0\n"
+ " ldr r0, [r4]\n"
+ " mov r3, #0xb4\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r6\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._607 @cond_branch\n"
+ "._602:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._609:\n"
+ " .align 2, 0\n"
+ "._608:\n"
+ " .word 0x16d\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word 0x16b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6544()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " ldr r0, ._614\n"
+ " mov r8, r0\n"
+ " ldr r6, ._614 + 4\n"
+ " ldr r1, [r6]\n"
+ " mov r5, #0xb4\n"
+ " lsl r5, r5, #0x1\n"
+ " add r0, r1, r5\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r8\n"
+ " ldr r4, ._614 + 8\n"
+ " add r1, r1, r4\n"
+ " ldrb r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " bl debug_80C5B60\n"
+ " add r7, r0, #0\n"
+ " ldr r2, ._614 + 12\n"
+ " ldr r3, [r6]\n"
+ " add r5, r3, r5\n"
+ " ldrb r0, [r5]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r8\n"
+ " add r4, r3, r4\n"
+ " ldrb r1, [r4]\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r2, r2, #0x4\n"
+ " add r0, r0, r2\n"
+ " ldr r1, [r0]\n"
+ " ldr r5, [r1]\n"
+ " ldr r4, [r1, #0x4]\n"
+ " ldr r2, ._614 + 16\n"
+ " mov r6, #0xb5\n"
+ " lsl r6, r6, #0x1\n"
+ " add r0, r3, r6\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldr r3, [r0]\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " cmp r0, #0\n"
+ " bne ._623 @cond_branch\n"
+ " mov r0, r9\n"
+ " cmp r0, #0x1\n"
+ " beq ._611 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._612 @cond_branch\n"
+ " b ._623\n"
+ "._615:\n"
+ " .align 2, 0\n"
+ "._614:\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ " .word gUnknown_Debug_083F8554\n"
+ " .word gUnknown_Debug_083F8768\n"
+ "._611:\n"
+ " sub r0, r4, r3\n"
+ " cmp r7, r0\n"
+ " bcs ._616 @cond_branch\n"
+ " add r7, r7, r3\n"
+ " b ._623\n"
+ "._616:\n"
+ " cmp r7, r4\n"
+ " bcc ._622 @cond_branch\n"
+ " b ._619\n"
+ "._612:\n"
+ " add r0, r5, r3\n"
+ " cmp r7, r0\n"
+ " bls ._620 @cond_branch\n"
+ " sub r7, r7, r3\n"
+ " b ._623\n"
+ "._620:\n"
+ " cmp r7, r5\n"
+ " bls ._622 @cond_branch\n"
+ "._619:\n"
+ " add r7, r5, #0\n"
+ " b ._623\n"
+ "._622:\n"
+ " add r7, r4, #0\n"
+ "._623:\n"
+ " ldr r1, ._624\n"
+ " ldr r0, ._624 + 4\n"
+ " ldr r2, [r0]\n"
+ " mov r3, #0xb4\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r2, r3\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r6, ._624 + 8\n"
+ " add r1, r2, r6\n"
+ " ldrb r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r7, #0\n"
+ " bl debug_80C5B74\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._625:\n"
+ " .align 2, 0\n"
+ "._624:\n"
+ " .word gUnknown_Debug_083F8698\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ " .word 0x169\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6630()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0xfc\n"
+ " strb r0, [r4]\n"
+ " add r4, r4, #0x1\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r4]\n"
+ " add r4, r4, #0x1\n"
+ " cmp r2, #0x2\n"
+ " bne ._626 @cond_branch\n"
+ " ldr r0, ._629\n"
+ " ldr r0, [r0]\n"
+ " mov r5, #0xb5\n"
+ " lsl r5, r5, #0x1\n"
+ " add r0, r0, r5\n"
+ " ldrb r0, [r0]\n"
+ " cmp r3, r0\n"
+ " beq ._627 @cond_branch\n"
+ " strb r2, [r4]\n"
+ " b ._628\n"
+ "._630:\n"
+ " .align 2, 0\n"
+ "._629:\n"
+ " .word unk_debug_ewram_0+0x30\n"
+ "._627:\n"
+ " mov r0, #0x4\n"
+ "._626:\n"
+ " strb r0, [r4]\n"
+ "._628:\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xa1\n"
+ " strb r0, [r4, #0x1]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6678()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " mov r9, r0\n"
+ " add r6, r1, #0\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r8, r3\n"
+ " mov r7, #0x0\n"
+ " sub r0, r2, #1\n"
+ " cmp r0, #0x9\n"
+ " bhi ._644 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._633\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._634:\n"
+ " .align 2, 0\n"
+ "._633:\n"
+ " .word ._632\n"
+ "._632:\n"
+ " .word ._635\n"
+ " .word ._636\n"
+ " .word ._637\n"
+ " .word ._638\n"
+ " .word ._639\n"
+ " .word ._640\n"
+ " .word ._641\n"
+ " .word ._642\n"
+ " .word ._643\n"
+ " .word ._644\n"
+ "._644:\n"
+ " mov r0, r9\n"
+ " add r4, r0, r7\n"
+ " ldr r5, ._645\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x9\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._643:\n"
+ " mov r1, r9\n"
+ " add r4, r1, r7\n"
+ " ldr r5, ._645 + 4\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x8\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._642:\n"
+ " mov r0, r9\n"
+ " add r4, r0, r7\n"
+ " ldr r5, ._645 + 8\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x7\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._641:\n"
+ " mov r1, r9\n"
+ " add r4, r1, r7\n"
+ " ldr r5, ._645 + 12\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x6\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._640:\n"
+ " mov r0, r9\n"
+ " add r4, r0, r7\n"
+ " ldr r5, ._645 + 16\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x5\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._639:\n"
+ " mov r1, r9\n"
+ " add r4, r1, r7\n"
+ " ldr r5, ._645 + 20\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._638:\n"
+ " mov r0, r9\n"
+ " add r4, r0, r7\n"
+ " mov r5, #0xfa\n"
+ " lsl r5, r5, #0x2\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x3\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._637:\n"
+ " mov r1, r9\n"
+ " add r4, r1, r7\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x64\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x2\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x64\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._636:\n"
+ " mov r0, r9\n"
+ " add r4, r0, r7\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xa\n"
+ " bl __udivsi3\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " mov r2, r8\n"
+ " mov r3, #0x1\n"
+ " bl debug_80C6630\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xa\n"
+ " bl __umodsi3\n"
+ " add r6, r0, #0\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ "._635:\n"
+ " mov r1, r9\n"
+ " add r0, r1, r7\n"
+ " lsl r1, r6, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, r8\n"
+ " mov r3, #0x0\n"
+ " bl debug_80C6630\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._646:\n"
+ " .align 2, 0\n"
+ "._645:\n"
+ " .word 0x3b9aca00\n"
+ " .word 0x5f5e100\n"
+ " .word 0x989680\n"
+ " .word 0xf4240\n"
+ " .word 0x186a0\n"
+ " .word 0x2710\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C689C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " add r4, r1, #0\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r3, #0x0\n"
+ " ldrb r0, [r4]\n"
+ " b ._647\n"
+ "._649:\n"
+ " add r1, r5, r3\n"
+ " add r0, r4, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " add r0, r4, r3\n"
+ " ldrb r0, [r0]\n"
+ "._647:\n"
+ " cmp r0, #0xff\n"
+ " beq ._648 @cond_branch\n"
+ " cmp r3, r2\n"
+ " bcc ._649 @cond_branch\n"
+ "._648:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C68CC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r5, r2, #0x18\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x0\n"
+ "._650:\n"
+ " mov r7, sp\n"
+ " add r0, r7, r2\n"
+ " strb r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x3\n"
+ " bls ._650 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1, #0x4]\n"
+ " cmp r3, #0x2\n"
+ " beq ._651 @cond_branch\n"
+ " cmp r3, #0x2\n"
+ " bgt ._652 @cond_branch\n"
+ " cmp r3, #0x1\n"
+ " beq ._653 @cond_branch\n"
+ " b ._654\n"
+ "._652:\n"
+ " cmp r3, #0x3\n"
+ " beq ._655 @cond_branch\n"
+ "._654:\n"
+ " mov r1, sp\n"
+ " lsr r0, r4, #0xc\n"
+ " strb r0, [r1]\n"
+ "._655:\n"
+ " mov r1, sp\n"
+ " mov r0, #0xf0\n"
+ " lsl r0, r0, #0x4\n"
+ " and r0, r0, r4\n"
+ " lsr r0, r0, #0x8\n"
+ " strb r0, [r1, #0x1]\n"
+ "._651:\n"
+ " mov r1, sp\n"
+ " mov r0, #0xf0\n"
+ " and r0, r0, r4\n"
+ " lsr r0, r0, #0x4\n"
+ " strb r0, [r1, #0x2]\n"
+ "._653:\n"
+ " mov r2, sp\n"
+ " mov r1, #0xf\n"
+ " add r0, r4, #0\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2, #0x3]\n"
+ " mov r2, #0x0\n"
+ "._658:\n"
+ " mov r0, sp\n"
+ " add r1, r0, r2\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x9\n"
+ " bhi ._656 @cond_branch\n"
+ " add r0, r0, #0xa1\n"
+ " b ._657\n"
+ "._656:\n"
+ " add r0, r0, #0xb1\n"
+ "._657:\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x3\n"
+ " bls ._658 @cond_branch\n"
+ " mov r0, #0x4\n"
+ " sub r0, r0, r3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r0, r0, sp\n"
+ " add r1, r6, #0\n"
+ " add r2, r5, #0\n"
+ " bl MenuPrint\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitSeePokemonGraphics()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl debug_80C35DC\n"
+ " ldr r1, ._659\n"
+ " ldr r2, ._659 + 4\n"
+ " ldr r0, ._659 + 8\n"
+ " str r1, [r0]\n"
+ " str r2, [r0, #0x4]\n"
+ " ldr r1, ._659 + 12\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, [r0, #0x8]\n"
+ " ldr r0, ._659 + 16\n"
+ " mov r1, #0x80\n"
+ " mov r2, #0x60\n"
+ " bl LoadPalette\n"
+ " ldr r1, ._659 + 20\n"
+ " add r0, sp, #0x4\n"
+ " strh r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x2\n"
+ " bl LoadPalette\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r5, #0x0\n"
+ " str r5, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._659 + 24\n"
+ " mov r6, #0x0\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._659 + 28\n"
+ " mov r0, #0x3f\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x1f\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x6\n"
+ " mov r0, #0xf1\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._659 + 32\n"
+ " strh r5, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " mov r0, #0x7\n"
+ " strh r0, [r1]\n"
+ " ldr r3, ._659 + 36\n"
+ " ldrh r2, [r3]\n"
+ " strh r5, [r3]\n"
+ " ldr r4, ._659 + 40\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ " strh r2, [r3]\n"
+ " ldr r0, ._659 + 44\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._659 + 48\n"
+ " bl SetMainCallback2\n"
+ " bl sub_809D51C\n"
+ " ldr r1, ._659 + 52\n"
+ " ldr r2, ._659 + 56\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r2, ._659 + 60\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " sub r1, r1, #0xa\n"
+ " mov r2, #0xcd\n"
+ " lsl r2, r2, #0x6\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._659 + 64\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " ldr r1, ._659 + 68\n"
+ " ldr r0, ._659 + 72\n"
+ " str r0, [r1]\n"
+ " ldr r1, ._659 + 76\n"
+ " strh r1, [r0]\n"
+ " strb r6, [r0, #0x2]\n"
+ " strb r6, [r0, #0x3]\n"
+ " strb r6, [r0, #0x5]\n"
+ " strb r6, [r0, #0x7]\n"
+ " strb r6, [r0, #0xa]\n"
+ " strb r6, [r0, #0x8]\n"
+ " ldr r4, ._659 + 80\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " ldr r6, ._659 + 84\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " strh r5, [r0, #0x2e]\n"
+ " mov r1, #0x0\n"
+ " bl StartSpriteAnim\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0x2e]\n"
+ " bl StartSpriteAnim\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " mov r1, #0x2\n"
+ " strh r1, [r0, #0x2e]\n"
+ " bl StartSpriteAnim\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._660:\n"
+ " .align 2, 0\n"
+ "._659:\n"
+ " .word byte_83F88EC\n"
+ " .word 0x600e000\n"
+ " .word 0x40000d4\n"
+ " .word 0x80000400\n"
+ " .word word_83F888C\n"
+ " .word 0x7fff\n"
+ " .word 0x4000040\n"
+ " .word 0x4000048\n"
+ " .word 0x4000052\n"
+ " .word 0x4000208\n"
+ " .word 0x4000200\n"
+ " .word debug_80C3758+1\n"
+ " .word debug_80C370C+1\n"
+ " .word 0x4000008\n"
+ " .word 0x1f0b\n"
+ " .word 0x1e0a\n"
+ " .word debug_80C6B00+1\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word +0x2018000\n"
+ " .word 0x115\n"
+ " .word unk_83F8868+0xc\n"
+ " .word gSprites\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6B00()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xffffffec\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r1, ._666\n"
+ " mov r0, sp\n"
+ " mov r2, #0x12\n"
+ " bl memcpy\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xf\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._666 + 4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._666 + 8\n"
+ " mov r1, #0x1b\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._666 + 12\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xc\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._666 + 16\n"
+ " ldr r0, ._666 + 20\n"
+ " add r3, r0, #0\n"
+ "._661:\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r1, r2, r3\n"
+ " strh r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0xe\n"
+ " bls ._661 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._666 + 24\n"
+ " lsl r6, r7, #0x2\n"
+ " mov r8, r6\n"
+ " ldr r4, ._666 + 28\n"
+ " ldr r0, ._666 + 32\n"
+ " add r3, r0, #0\n"
+ "._662:\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r1, r2, r3\n"
+ " strh r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0xe\n"
+ " bls ._662 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xa\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r1, sp\n"
+ " mov r0, #0x23\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._666 + 36\n"
+ " mov r5, #0x93\n"
+ " lsl r5, r5, #0x8\n"
+ " add r3, r5, #0\n"
+ "._663:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._663 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0x24\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._666 + 40\n"
+ " ldr r4, ._666 + 44\n"
+ " mov r0, #0x93\n"
+ " lsl r0, r0, #0x8\n"
+ " add r3, r0, #0\n"
+ "._664:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._664 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0x25\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._666 + 48\n"
+ " mov r0, #0x93\n"
+ " lsl r0, r0, #0x8\n"
+ " add r3, r0, #0\n"
+ "._665:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._665 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._666 + 52\n"
+ " ldr r2, ._666 + 56\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r5, ._666 + 60\n"
+ " add r0, r5, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._666 + 64\n"
+ " mov r6, r8\n"
+ " add r0, r6, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._666 + 68\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x14\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._667:\n"
+ " .align 2, 0\n"
+ "._666:\n"
+ " .word gUnknown_Debug_083F8815\n"
+ " .word gUnknown_Debug_083F87D0\n"
+ " .word gUnknown_Debug_083F87D8\n"
+ " .word gUnknown_Debug_083F87E0\n"
+ " .word 0x600fa56\n"
+ " .word 0xa311\n"
+ " .word gUnknown_Debug_083F87F4\n"
+ " .word 0x600f256\n"
+ " .word 0x8301\n"
+ " .word 0x600f396\n"
+ " .word gUnknown_Debug_083F8801\n"
+ " .word 0x600f3d6\n"
+ " .word 0x600f416\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ " .word gTasks\n"
+ " .word debug_80C6CB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6CB8()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " mov sl, r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " ldr r5, ._668\n"
+ " ldr r4, [r5]\n"
+ " ldrh r2, [r4]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._668 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._668 + 8\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r1\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " ldr r3, ._668 + 12\n"
+ " mov r8, r3\n"
+ " ldr r6, [r3]\n"
+ " str r6, [sp, #0x8]\n"
+ " ldr r3, [r3, #0x4]\n"
+ " str r3, [sp]\n"
+ " ldrh r3, [r4]\n"
+ " str r3, [sp, #0x4]\n"
+ " add r3, r6, #0\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r7, ._668 + 16\n"
+ " add r0, r0, r7\n"
+ " bl LoadCompressedObjectPalette\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x1\n"
+ " bl GetMonSpriteTemplate_803C56C\n"
+ " ldr r0, ._668 + 20\n"
+ " mov r1, #0x28\n"
+ " mov r2, #0x28\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " ldr r1, [r5]\n"
+ " strb r0, [r1, #0x2]\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._668 + 24\n"
+ " add r0, r0, r1\n"
+ " ldr r3, ._668 + 28\n"
+ " mov r9, r3\n"
+ " str r3, [r0]\n"
+ " ldrb r0, [r2, #0x2]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " ldr r6, ._668 + 32\n"
+ " add r1, r1, r6\n"
+ " ldrb r2, [r1, #0x5]\n"
+ " mov r6, #0xd\n"
+ " neg r6, r6\n"
+ " add r0, r6, #0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r4, [r5]\n"
+ " ldrh r2, [r4]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._668 + 36\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._668 + 40\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r1\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " mov r7, r8\n"
+ " ldr r3, [r7, #0x8]\n"
+ " str r3, [sp]\n"
+ " ldrh r3, [r4]\n"
+ " str r3, [sp, #0x4]\n"
+ " ldr r3, [sp, #0x8]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._668 + 16\n"
+ " add r0, r0, r1\n"
+ " bl LoadCompressedObjectPalette\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x2\n"
+ " bl GetMonSpriteTemplate_803C56C\n"
+ " ldr r0, ._668 + 20\n"
+ " mov r1, #0x28\n"
+ " mov r2, #0x78\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " ldr r1, [r5]\n"
+ " strb r0, [r1, #0x3]\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r3, ._668 + 24\n"
+ " add r0, r0, r3\n"
+ " mov r7, r9\n"
+ " str r7, [r0]\n"
+ " ldrb r1, [r2, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._668 + 32\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0, #0x5]\n"
+ " and r6, r6, r1\n"
+ " strb r6, [r0, #0x5]\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " ldr r1, ._668 + 44\n"
+ " mov r2, #0x0\n"
+ " str r2, [sp]\n"
+ " str r2, [sp, #0x4]\n"
+ " mov r2, #0x68\n"
+ " mov r3, #0x2c\n"
+ " bl CreateMonIcon\n"
+ " ldr r1, [r5]\n"
+ " strb r0, [r1, #0x4]\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " bl SpeciesToNationalPokedexNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r2, #0xff\n"
+ " lsl r2, r2, #0x2\n"
+ " mov r1, #0x2\n"
+ " bl sub_8091738\n"
+ " ldr r1, ._668 + 48\n"
+ " ldr r3, ._668 + 52\n"
+ " add r0, r3, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r6, ._668 + 56\n"
+ " add r0, r6, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x3e\n"
+ " ldr r7, ._668 + 60\n"
+ " add r0, r7, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r2, ._668 + 64\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x3\n"
+ " bl debug_80C3800\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x5\n"
+ " bl debug_80C376C\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r3, ._668 + 32\n"
+ " add r0, r0, r3\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " strb r0, [r2, #0x6]\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r4, ._668 + 68\n"
+ " add r0, r0, r4\n"
+ " ldr r6, ._668 + 72\n"
+ " add r1, r4, r6\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, ._668 + 76\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, ._668 + 80\n"
+ " mov r7, sl\n"
+ " lsl r0, r7, #0x2\n"
+ " add r0, r0, sl\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._668 + 84\n"
+ " str r1, [r0]\n"
+ " ldr r0, [r5]\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0, #0x9]\n"
+ " bl StopCryAndClearCrySongs\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x0\n"
+ " bl PlayCry1\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._669:\n"
+ " .align 2, 0\n"
+ "._668:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gMonFrontPicTable\n"
+ " .word gMonFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gMonPaletteTable\n"
+ " .word gUnknown_02024E8C\n"
+ " .word gSprites+0x1c\n"
+ " .word debug_69+1\n"
+ " .word gSprites\n"
+ " .word gMonBackPicTable\n"
+ " .word gMonBackPicCoords\n"
+ " .word sub_809D62C+1\n"
+ " .word 0x600f858\n"
+ " .word 0xf3fc\n"
+ " .word 0xf3fd\n"
+ " .word 0xf3fe\n"
+ " .word 0xf3ff\n"
+ " .word gPlttBufferUnfaded+0x200\n"
+ " .word 0xffffff00\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C6EE8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6EE8()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " lsl r6, r6, #0x18\n"
+ " lsr r6, r6, #0x18\n"
+ " ldr r4, ._670\n"
+ " ldr r5, ._670 + 4\n"
+ " ldr r1, [r5]\n"
+ " add r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, ._670 + 8\n"
+ " add r4, r4, r0\n"
+ " ldr r3, [r5]\n"
+ " ldrb r0, [r3, #0x7]\n"
+ " add r0, r0, #0x81\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r4\n"
+ " ldrh r4, [r0]\n"
+ " mov r1, #0x1f\n"
+ " and r1, r1, r4\n"
+ " ldrb r2, [r3, #0xc]\n"
+ " mov r0, #0x20\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r3, #0xc]\n"
+ " ldr r3, [r5]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x2\n"
+ " and r1, r1, r4\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " ldr r0, ._670 + 12\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r3, #0xc]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x7\n"
+ " and r1, r1, r4\n"
+ " lsr r1, r1, #0x8\n"
+ " ldrb r2, [r3, #0xd]\n"
+ " mov r0, #0x7d\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r3, #0xd]\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0xd]\n"
+ " mov r0, #0x7f\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2, #0xd]\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x7]\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x2\n"
+ " bl debug_80C68CC\n"
+ " ldr r0, ._670 + 16\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xa\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " ldr r1, ._670 + 20\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._670 + 24\n"
+ " str r1, [r0]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._671:\n"
+ " .align 2, 0\n"
+ "._670:\n"
+ " .word gPlttBufferUnfaded+0x100\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0xffffff00\n"
+ " .word 0xfffffc1f\n"
+ " .word gUnknown_Debug_083F8813\n"
+ " .word gTasks\n"
+ " .word debug_80C6FA8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C6FA8()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r1, ._674\n"
+ " ldrh r2, [r1, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._672 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._674 + 4\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._674 + 8\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._674 + 12\n"
+ " str r1, [r0]\n"
+ " b ._703\n"
+ "._675:\n"
+ " .align 2, 0\n"
+ "._674:\n"
+ " .word gMain\n"
+ " .word debug_80C370C+1\n"
+ " .word gTasks\n"
+ " .word debug_80C373C+1\n"
+ "._672:\n"
+ " ldrh r1, [r4, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._676 @cond_branch\n"
+ " ldr r4, ._678\n"
+ " ldr r0, [r4]\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x0\n"
+ " b ._677\n"
+ "._679:\n"
+ " .align 2, 0\n"
+ "._678:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._676:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._680 @cond_branch\n"
+ " ldr r4, ._682\n"
+ " ldr r0, [r4]\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x1\n"
+ "._677:\n"
+ " bl debug_80C3878\n"
+ " ldr r1, [r4]\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._682 + 4\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._682 + 8\n"
+ " str r1, [r0]\n"
+ " b ._703\n"
+ "._683:\n"
+ " .align 2, 0\n"
+ "._682:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gTasks\n"
+ " .word debug_80C71FC+1\n"
+ "._680:\n"
+ " mov r3, #0x1\n"
+ " and r3, r3, r2\n"
+ " cmp r3, #0\n"
+ " beq ._684 @cond_branch\n"
+ " ldr r0, ._686\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r1, ._686 + 4\n"
+ " ldr r2, ._686 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._686 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._686 + 16\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._686 + 20\n"
+ " str r1, [r0]\n"
+ " b ._703\n"
+ "._687:\n"
+ " .align 2, 0\n"
+ "._686:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x4167\n"
+ " .word gTasks\n"
+ " .word debug_80C7294+1\n"
+ "._684:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._689 @cond_branch\n"
+ " ldr r1, ._691\n"
+ " ldr r2, [r1]\n"
+ " ldrb r0, [r2, #0x7]\n"
+ " cmp r0, #0xd\n"
+ " bhi ._689 @cond_branch\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, ._691 + 4\n"
+ " add r0, r0, r2\n"
+ " strh r3, [r0]\n"
+ " ldr r1, [r1]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0x7]\n"
+ " b ._695\n"
+ "._692:\n"
+ " .align 2, 0\n"
+ "._691:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x5000102\n"
+ "._689:\n"
+ " ldrh r1, [r4, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._694 @cond_branch\n"
+ " ldr r2, ._696\n"
+ " ldr r1, [r2]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " cmp r0, #0\n"
+ " beq ._694 @cond_branch\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r1, ._696 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " ldr r1, [r2]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x7]\n"
+ " b ._695\n"
+ "._697:\n"
+ " .align 2, 0\n"
+ "._696:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x5000102\n"
+ "._694:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._698 @cond_branch\n"
+ " ldr r4, ._701\n"
+ " ldr r2, [r4]\n"
+ " ldrb r0, [r2, #0x9]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strb r0, [r2, #0x9]\n"
+ " ldr r1, [r4]\n"
+ " ldrb r0, [r1, #0x9]\n"
+ " cmp r0, #0\n"
+ " beq ._699 @cond_branch\n"
+ " ldrh r0, [r1]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " bl species_and_otid_get_pal\n"
+ " ldr r1, [r4]\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x14\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x11\n"
+ " add r1, r1, r2\n"
+ " lsr r1, r1, #0x10\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " b ._700\n"
+ "._702:\n"
+ " .align 2, 0\n"
+ "._701:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._699:\n"
+ " ldrh r0, [r1]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " bl species_and_otid_get_pal\n"
+ " ldr r1, [r4]\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x14\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x11\n"
+ " add r1, r1, r2\n"
+ " lsr r1, r1, #0x10\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ "._700:\n"
+ " ldr r5, ._704\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r4, ._704 + 4\n"
+ " add r0, r0, r4\n"
+ " ldr r2, ._704 + 8\n"
+ " add r1, r4, r2\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, ._704 + 12\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ "._695:\n"
+ " ldr r1, ._704 + 16\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._704 + 20\n"
+ " str r1, [r0]\n"
+ " b ._703\n"
+ "._705:\n"
+ " .align 2, 0\n"
+ "._704:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gPlttBufferUnfaded+0x200\n"
+ " .word 0xffffff00\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C6EE8+1\n"
+ "._698:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._706 @cond_branch\n"
+ " bl StopCryAndClearCrySongs\n"
+ " ldr r0, ._707\n"
+ " ldr r0, [r0]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x0\n"
+ " bl PlayCry1\n"
+ "._706:\n"
+ " ldr r2, ._707\n"
+ " ldr r1, [r2]\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " add r0, r0, #0x4\n"
+ " strb r0, [r1, #0x8]\n"
+ " ldr r3, [r2]\n"
+ " ldrb r1, [r3, #0x8]\n"
+ " mov r0, #0x1f\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r3, #0x8]\n"
+ " ldr r0, [r2]\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._707 + 4\n"
+ " add r1, r1, r2\n"
+ " ldr r2, ._707 + 8\n"
+ " ldrb r0, [r0, #0x8]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ "._703:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._708:\n"
+ " .align 2, 0\n"
+ "._707:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x5000142\n"
+ " .word gUnknown_Debug_083F8790\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C71FC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r6, ._709\n"
+ " ldr r4, ._709 + 4\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl DestroySprite\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl DestroySprite\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x4]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl sub_809D510\n"
+ " ldr r1, ._709 + 8\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._709 + 12\n"
+ " str r1, [r0]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._710:\n"
+ " .align 2, 0\n"
+ "._709:\n"
+ " .word gSprites\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gTasks\n"
+ " .word debug_80C6CB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7294()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r0, ._713\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " mov r1, #0x1\n"
+ " and r1, r1, r2\n"
+ " add r3, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._711 @cond_branch\n"
+ " ldr r0, ._713 + 4\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r1, ._713 + 8\n"
+ " ldr r2, ._713 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._713 + 16\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " b ._712\n"
+ "._714:\n"
+ " .align 2, 0\n"
+ "._713:\n"
+ " .word gMain\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ "._711:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._715 @cond_branch\n"
+ " ldr r6, ._717\n"
+ " ldr r0, [r6]\n"
+ " strb r1, [r0, #0x5]\n"
+ " ldr r1, ._717 + 4\n"
+ " ldr r2, ._717 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._717 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, [r6]\n"
+ " add r0, r0, #0x10\n"
+ " ldr r4, ._717 + 16\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r6]\n"
+ " add r0, r0, #0x10\n"
+ " ldr r5, ._717 + 20\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, [r6]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x5\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r4, r4, r2\n"
+ " add r1, r1, r4\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, [r6]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x5\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r5, r5, r2\n"
+ " add r1, r1, r5\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ "._712:\n"
+ " ldr r1, ._717 + 24\n"
+ " lsl r0, r7, #0x2\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._717 + 28\n"
+ " str r1, [r0]\n"
+ " b ._754\n"
+ "._718:\n"
+ " .align 2, 0\n"
+ "._717:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ " .word gPlttBufferUnfaded+0x100\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C6EE8+1\n"
+ "._715:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._720 @cond_branch\n"
+ " ldr r0, ._722\n"
+ " ldr r1, [r0]\n"
+ " ldrb r0, [r1, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._720 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0xa]\n"
+ " b ._754\n"
+ "._723:\n"
+ " .align 2, 0\n"
+ "._722:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._720:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._725 @cond_branch\n"
+ " ldr r0, ._727\n"
+ " ldr r1, [r0]\n"
+ " ldrb r0, [r1, #0xa]\n"
+ " cmp r0, #0\n"
+ " beq ._725 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0xa]\n"
+ " b ._754\n"
+ "._728:\n"
+ " .align 2, 0\n"
+ "._727:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._725:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._729 @cond_branch\n"
+ " ldr r0, ._734\n"
+ " ldr r2, [r0]\n"
+ " ldrb r0, [r2, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " beq ._730 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._731 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._732 @cond_branch\n"
+ " b ._754\n"
+ "._735:\n"
+ " .align 2, 0\n"
+ "._734:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._731:\n"
+ " cmp r0, #0x2\n"
+ " beq ._736 @cond_branch\n"
+ " b ._754\n"
+ "._732:\n"
+ " ldrb r3, [r2, #0xc]\n"
+ " lsl r1, r3, #0x1b\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._761 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x20\n"
+ " neg r1, r1\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r2, #0xc]\n"
+ " b ._761\n"
+ "._730:\n"
+ " ldrh r3, [r2, #0xc]\n"
+ " lsl r1, r3, #0x16\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._761 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r1, ._742\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r2, #0xc]\n"
+ " b ._761\n"
+ "._743:\n"
+ " .align 2, 0\n"
+ "._742:\n"
+ " .word 0xfffffc1f\n"
+ "._736:\n"
+ " ldrb r3, [r2, #0xd]\n"
+ " lsl r1, r3, #0x19\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._761 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, #0x7d\n"
+ " neg r1, r1\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r2, #0xd]\n"
+ " b ._761\n"
+ "._729:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._754 @cond_branch\n"
+ " ldr r0, ._751\n"
+ " ldr r3, [r0]\n"
+ " ldrb r0, [r3, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " beq ._747 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._748 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._749 @cond_branch\n"
+ " b ._754\n"
+ "._752:\n"
+ " .align 2, 0\n"
+ "._751:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._748:\n"
+ " cmp r0, #0x2\n"
+ " beq ._753 @cond_branch\n"
+ " b ._754\n"
+ "._749:\n"
+ " ldrb r2, [r3, #0xc]\n"
+ " mov r0, #0x1f\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._761 @cond_branch\n"
+ " lsl r0, r2, #0x1b\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x20\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r3, #0xc]\n"
+ " b ._761\n"
+ "._747:\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " mov r0, #0xf8\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._761 @cond_branch\n"
+ " lsl r0, r2, #0x16\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r1, ._759\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r3, #0xc]\n"
+ " b ._761\n"
+ "._760:\n"
+ " .align 2, 0\n"
+ "._759:\n"
+ " .word 0xfffffc1f\n"
+ "._753:\n"
+ " ldrb r2, [r3, #0xd]\n"
+ " mov r0, #0x7c\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._761 @cond_branch\n"
+ " lsl r0, r2, #0x19\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, #0x7d\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r3, #0xd]\n"
+ "._761:\n"
+ " ldr r0, ._762\n"
+ " lsl r1, r7, #0x2\n"
+ " add r1, r1, r7\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._762 + 4\n"
+ " str r0, [r1]\n"
+ "._754:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._763:\n"
+ " .align 2, 0\n"
+ "._762:\n"
+ " .word gTasks\n"
+ " .word debug_80C74E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C74E4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r0, ._764\n"
+ " ldr r3, [r0]\n"
+ " ldrb r0, [r3, #0xc]\n"
+ " lsl r0, r0, #0x1b\n"
+ " lsr r0, r0, #0x1b\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x2\n"
+ " and r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r3, #0xd]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1b\n"
+ " lsl r1, r1, #0xa\n"
+ " add r0, r0, r1\n"
+ " ldr r6, ._764 + 4\n"
+ " ldrb r1, [r3, #0x7]\n"
+ " add r1, r1, #0x81\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r6\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._764 + 8\n"
+ " mov r8, r1\n"
+ " ldrb r1, [r3, #0x7]\n"
+ " add r1, r1, #0x81\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r8\n"
+ " strh r0, [r1]\n"
+ " ldrb r1, [r3, #0x6]\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r3, #0x7]\n"
+ " ldr r4, ._764 + 12\n"
+ " add r2, r2, r4\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r6\n"
+ " strh r0, [r1]\n"
+ " ldrb r1, [r3, #0x6]\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r3, #0x7]\n"
+ " add r2, r2, r4\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r8\n"
+ " strh r0, [r1]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " ldr r1, ._764 + 16\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._764 + 20\n"
+ " str r1, [r0]\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._765:\n"
+ " .align 2, 0\n"
+ "._764:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gPlttBufferUnfaded\n"
+ " .word gPlttBufferFaded\n"
+ " .word 0x101\n"
+ " .word gTasks\n"
+ " .word debug_80C7294+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7584()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r2, r0, #0\n"
+ " ldr r0, ._771\n"
+ " ldr r3, [r0]\n"
+ " ldrb r1, [r3, #0x5]\n"
+ " add r4, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._766 @cond_branch\n"
+ " mov r1, #0x2e\n"
+ " ldsh r0, [r2, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._767 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " ble ._768 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._769 @cond_branch\n"
+ "._768:\n"
+ " ldrb r0, [r3, #0xc]\n"
+ " lsl r0, r0, #0x1b\n"
+ " b ._773\n"
+ "._772:\n"
+ " .align 2, 0\n"
+ "._771:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._767:\n"
+ " ldrh r0, [r3, #0xc]\n"
+ " lsl r0, r0, #0x16\n"
+ " b ._773\n"
+ "._769:\n"
+ " ldrb r0, [r3, #0xd]\n"
+ " lsl r0, r0, #0x19\n"
+ "._773:\n"
+ " lsr r0, r0, #0x1b\n"
+ " lsl r0, r0, #0x2\n"
+ " strh r0, [r2, #0x24]\n"
+ " mov r1, #0x2e\n"
+ " ldsh r0, [r2, r1]\n"
+ " lsl r0, r0, #0x3\n"
+ " strh r0, [r2, #0x26]\n"
+ " ldrh r0, [r2, #0x30]\n"
+ " add r3, r0, #1\n"
+ " strh r3, [r2, #0x30]\n"
+ " mov r0, #0x2e\n"
+ " ldsh r1, [r2, r0]\n"
+ " ldr r0, [r4]\n"
+ " ldrb r0, [r0, #0xa]\n"
+ " cmp r1, r0\n"
+ " bne ._775 @cond_branch\n"
+ " mov r0, #0x8\n"
+ " and r3, r3, r0\n"
+ " cmp r3, #0\n"
+ " bne ._775 @cond_branch\n"
+ "._766:\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0x3e\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x4\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " b ._776\n"
+ "._775:\n"
+ " add r2, r2, #0x3e\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x5\n"
+ " neg r0, r0\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ "._776:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void InitSeeTrainers()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " bl debug_80C35DC\n"
+ " ldr r1, ._777\n"
+ " ldr r2, ._777 + 4\n"
+ " ldr r0, ._777 + 8\n"
+ " str r1, [r0]\n"
+ " str r2, [r0, #0x4]\n"
+ " ldr r1, ._777 + 12\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, [r0, #0x8]\n"
+ " ldr r0, ._777 + 16\n"
+ " mov r1, #0x80\n"
+ " mov r2, #0x60\n"
+ " bl LoadPalette\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r5, #0x0\n"
+ " str r5, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._777 + 20\n"
+ " mov r6, #0x0\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r5, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r5, [r0]\n"
+ " ldr r1, ._777 + 24\n"
+ " mov r0, #0x3f\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " mov r0, #0x1f\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x6\n"
+ " mov r0, #0xf1\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._777 + 28\n"
+ " strh r5, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " mov r0, #0x7\n"
+ " strh r0, [r1]\n"
+ " ldr r3, ._777 + 32\n"
+ " ldrh r2, [r3]\n"
+ " strh r5, [r3]\n"
+ " ldr r4, ._777 + 36\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ " strh r2, [r3]\n"
+ " ldr r0, ._777 + 40\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._777 + 44\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._777 + 48\n"
+ " ldr r2, ._777 + 52\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r2, ._777 + 56\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " sub r1, r1, #0xa\n"
+ " mov r2, #0xcd\n"
+ " lsl r2, r2, #0x6\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, ._777 + 60\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " ldr r1, ._777 + 64\n"
+ " ldr r0, ._777 + 68\n"
+ " str r0, [r1]\n"
+ " strh r5, [r0]\n"
+ " strb r6, [r0, #0x2]\n"
+ " strb r6, [r0, #0x3]\n"
+ " strb r6, [r0, #0x5]\n"
+ " strb r6, [r0, #0x7]\n"
+ " strb r6, [r0, #0xa]\n"
+ " strb r6, [r0, #0x8]\n"
+ " ldr r4, ._777 + 72\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " ldr r6, ._777 + 76\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " strh r5, [r0, #0x2e]\n"
+ " mov r1, #0x0\n"
+ " bl StartSpriteAnim\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0x2e]\n"
+ " bl StartSpriteAnim\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6c\n"
+ " mov r2, #0x74\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " mov r1, #0x2\n"
+ " strh r1, [r0, #0x2e]\n"
+ " bl StartSpriteAnim\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._778:\n"
+ " .align 2, 0\n"
+ "._777:\n"
+ " .word byte_83F88EC\n"
+ " .word 0x600e000\n"
+ " .word 0x40000d4\n"
+ " .word 0x80000400\n"
+ " .word word_83F888C\n"
+ " .word 0x4000040\n"
+ " .word 0x4000048\n"
+ " .word 0x4000052\n"
+ " .word 0x4000208\n"
+ " .word 0x4000200\n"
+ " .word debug_80C3758+1\n"
+ " .word debug_80C370C+1\n"
+ " .word 0x4000008\n"
+ " .word 0x1f0b\n"
+ " .word 0x1e0a\n"
+ " .word debug_80C777C+1\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word +0x2018000\n"
+ " .word unk_83F8868+0xc\n"
+ " .word gSprites\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C777C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xffffffec\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r1, ._784\n"
+ " mov r0, sp\n"
+ " mov r2, #0x12\n"
+ " bl memcpy\n"
+ " mov r0, #0x9\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x9\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r0, #0xe\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._784 + 4\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._784 + 8\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._784 + 12\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xc\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._784 + 16\n"
+ " ldr r0, ._784 + 20\n"
+ " add r3, r0, #0\n"
+ "._779:\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r1, r2, r3\n"
+ " strh r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0xe\n"
+ " bls ._779 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._784 + 24\n"
+ " lsl r6, r7, #0x2\n"
+ " mov r8, r6\n"
+ " ldr r4, ._784 + 28\n"
+ " ldr r0, ._784 + 32\n"
+ " add r3, r0, #0\n"
+ "._780:\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r1, r2, r3\n"
+ " strh r1, [r0]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0xe\n"
+ " bls ._780 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xa\n"
+ " bl MenuPrint\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " mov r1, sp\n"
+ " mov r0, #0x23\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._784 + 36\n"
+ " mov r5, #0x93\n"
+ " lsl r5, r5, #0x8\n"
+ " add r3, r5, #0\n"
+ "._781:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._781 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0x24\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._784 + 40\n"
+ " ldr r4, ._784 + 44\n"
+ " mov r0, #0x93\n"
+ " lsl r0, r0, #0x8\n"
+ " add r3, r0, #0\n"
+ "._782:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._782 @cond_branch\n"
+ " mov r1, sp\n"
+ " mov r0, #0x25\n"
+ " strb r0, [r1]\n"
+ " mov r2, #0x0\n"
+ " ldr r4, ._784 + 48\n"
+ " mov r0, #0x93\n"
+ " lsl r0, r0, #0x8\n"
+ " add r3, r0, #0\n"
+ "._783:\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r4\n"
+ " mov r6, sp\n"
+ " add r0, r6, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r0, r0, r3\n"
+ " strh r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x11\n"
+ " bls ._783 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._784 + 52\n"
+ " ldr r2, ._784 + 56\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r5, ._784 + 60\n"
+ " add r0, r5, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._784 + 64\n"
+ " mov r6, r8\n"
+ " add r0, r6, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._784 + 68\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x14\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._785:\n"
+ " .align 2, 0\n"
+ "._784:\n"
+ " .word gUnknown_Debug_083F8815\n"
+ " .word gUnknown_Debug_083F87D0\n"
+ " .word gUnknown_Debug_083F87D8\n"
+ " .word gUnknown_Debug_083F87E0\n"
+ " .word 0x600fa56\n"
+ " .word 0xa311\n"
+ " .word gUnknown_Debug_083F87F4\n"
+ " .word 0x600f256\n"
+ " .word 0x8301\n"
+ " .word 0x600f396\n"
+ " .word gUnknown_Debug_083F8801\n"
+ " .word 0x600f3d6\n"
+ " .word 0x600f416\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ " .word gTasks\n"
+ " .word debug_80C7934+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7934()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r8, r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " ldr r5, ._786\n"
+ " ldr r6, [r5]\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " ldr r1, ._786 + 4\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._786 + 8\n"
+ " lsl r2, r2, #0x2\n"
+ " add r2, r2, r1\n"
+ " ldrb r1, [r2]\n"
+ " ldrb r2, [r2, #0x1]\n"
+ " ldr r4, ._786 + 12\n"
+ " ldr r3, [r4]\n"
+ " ldr r4, [r4, #0x4]\n"
+ " str r4, [sp]\n"
+ " ldrh r4, [r6]\n"
+ " str r4, [sp, #0x4]\n"
+ " bl DecompressPicFromTable_2\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._786 + 16\n"
+ " add r0, r0, r1\n"
+ " bl LoadCompressedObjectPalette\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x1\n"
+ " bl GetMonSpriteTemplate_803C5A0\n"
+ " ldr r0, ._786 + 20\n"
+ " mov r1, #0x28\n"
+ " mov r2, #0x28\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " ldr r1, [r5]\n"
+ " mov r6, #0x0\n"
+ " strb r0, [r1, #0x2]\n"
+ " ldr r4, ._786 + 24\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r1, r4, #0\n"
+ " add r1, r1, #0x1c\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._786 + 28\n"
+ " str r1, [r0]\n"
+ " ldrb r0, [r2, #0x2]\n"
+ " lsl r1, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r4\n"
+ " ldrb r2, [r1, #0x5]\n"
+ " mov r0, #0xd\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r0, [r5]\n"
+ " ldrh r0, [r0]\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x5\n"
+ " bl debug_80C376C\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " strb r0, [r2, #0x6]\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r4, ._786 + 32\n"
+ " add r0, r0, r4\n"
+ " ldr r2, ._786 + 36\n"
+ " add r1, r4, r2\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, ._786 + 40\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, ._786 + 44\n"
+ " mov r2, r8\n"
+ " lsl r0, r2, #0x2\n"
+ " add r0, r0, r8\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._786 + 48\n"
+ " str r1, [r0]\n"
+ " ldr r0, [r5]\n"
+ " strb r6, [r0, #0x9]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._787:\n"
+ " .align 2, 0\n"
+ "._786:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gTrainerFrontPicTable\n"
+ " .word gTrainerFrontPicCoords\n"
+ " .word gUnknown_081FAF4C\n"
+ " .word gTrainerFrontPicPaletteTable\n"
+ " .word gUnknown_02024E8C\n"
+ " .word gSprites\n"
+ " .word debug_69+1\n"
+ " .word gPlttBufferUnfaded+0x200\n"
+ " .word 0xffffff00\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C7A54+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7A54()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " lsl r6, r6, #0x18\n"
+ " lsr r6, r6, #0x18\n"
+ " ldr r4, ._788\n"
+ " ldr r5, ._788 + 4\n"
+ " ldr r1, [r5]\n"
+ " add r1, r1, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, ._788 + 8\n"
+ " add r4, r4, r0\n"
+ " ldr r3, [r5]\n"
+ " ldrb r0, [r3, #0x7]\n"
+ " add r0, r0, #0x81\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r4\n"
+ " ldrh r4, [r0]\n"
+ " mov r1, #0x1f\n"
+ " and r1, r1, r4\n"
+ " ldrb r2, [r3, #0xc]\n"
+ " mov r0, #0x20\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r3, #0xc]\n"
+ " ldr r3, [r5]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x2\n"
+ " and r1, r1, r4\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " ldr r0, ._788 + 12\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strh r0, [r3, #0xc]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x7\n"
+ " and r1, r1, r4\n"
+ " lsr r1, r1, #0x8\n"
+ " ldrb r2, [r3, #0xd]\n"
+ " mov r0, #0x7d\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r3, #0xd]\n"
+ " ldr r2, [r5]\n"
+ " ldrb r1, [r2, #0xd]\n"
+ " mov r0, #0x7f\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2, #0xd]\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x7]\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x2\n"
+ " bl debug_80C68CC\n"
+ " ldr r0, ._788 + 16\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xa\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " ldr r1, ._788 + 20\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._788 + 24\n"
+ " str r1, [r0]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._789:\n"
+ " .align 2, 0\n"
+ "._788:\n"
+ " .word gPlttBufferUnfaded+0x100\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0xffffff00\n"
+ " .word 0xfffffc1f\n"
+ " .word gUnknown_Debug_083F8813\n"
+ " .word gTasks\n"
+ " .word debug_80C7B14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7B14()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r1, ._792\n"
+ " ldrh r3, [r1, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r3\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._790 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._792 + 4\n"
+ " bl SetMainCallback2\n"
+ " ldr r1, ._792 + 8\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._792 + 12\n"
+ " str r1, [r0]\n"
+ " b ._821\n"
+ "._793:\n"
+ " .align 2, 0\n"
+ "._792:\n"
+ " .word gMain\n"
+ " .word debug_80C370C+1\n"
+ " .word gTasks\n"
+ " .word debug_80C373C+1\n"
+ "._790:\n"
+ " ldrh r1, [r4, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._794 @cond_branch\n"
+ " ldr r4, ._796\n"
+ " ldr r0, [r4]\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x0\n"
+ " b ._795\n"
+ "._797:\n"
+ " .align 2, 0\n"
+ "._796:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._794:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._798 @cond_branch\n"
+ " ldr r4, ._800\n"
+ " ldr r0, [r4]\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0x1\n"
+ "._795:\n"
+ " bl debug_80C38B4\n"
+ " ldr r1, [r4]\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._800 + 4\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._800 + 8\n"
+ " str r1, [r0]\n"
+ " b ._821\n"
+ "._801:\n"
+ " .align 2, 0\n"
+ "._800:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gTasks\n"
+ " .word debug_80C7D44+1\n"
+ "._798:\n"
+ " mov r2, #0x1\n"
+ " and r2, r2, r3\n"
+ " cmp r2, #0\n"
+ " beq ._802 @cond_branch\n"
+ " ldr r0, ._804\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r1, ._804 + 4\n"
+ " ldr r2, ._804 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._804 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._804 + 16\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._804 + 20\n"
+ " str r1, [r0]\n"
+ " b ._821\n"
+ "._805:\n"
+ " .align 2, 0\n"
+ "._804:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x4167\n"
+ " .word gTasks\n"
+ " .word debug_80C7DDC+1\n"
+ "._802:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " ldr r3, ._809\n"
+ " cmp r0, #0\n"
+ " beq ._807 @cond_branch\n"
+ " ldr r1, [r3]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " cmp r0, #0xd\n"
+ " bhi ._807 @cond_branch\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r1, ._809 + 4\n"
+ " add r0, r0, r1\n"
+ " strh r2, [r0]\n"
+ " ldr r1, [r3]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0x7]\n"
+ " b ._813\n"
+ "._810:\n"
+ " .align 2, 0\n"
+ "._809:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x5000102\n"
+ "._807:\n"
+ " ldrh r1, [r4, #0x30]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._812 @cond_branch\n"
+ " ldr r1, [r3]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " cmp r0, #0\n"
+ " beq ._812 @cond_branch\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, ._814\n"
+ " add r0, r0, r2\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " ldr r1, [r3]\n"
+ " ldrb r0, [r1, #0x7]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x7]\n"
+ " b ._813\n"
+ "._815:\n"
+ " .align 2, 0\n"
+ "._814:\n"
+ " .word 0x5000102\n"
+ "._812:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._816 @cond_branch\n"
+ " ldr r4, ._819\n"
+ " ldr r2, [r4]\n"
+ " ldrb r0, [r2, #0x9]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strb r0, [r2, #0x9]\n"
+ " ldr r1, [r4]\n"
+ " ldrb r0, [r1, #0x9]\n"
+ " cmp r0, #0\n"
+ " beq ._817 @cond_branch\n"
+ " ldrh r0, [r1]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " bl species_and_otid_get_pal\n"
+ " ldr r1, [r4]\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x14\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x11\n"
+ " add r1, r1, r2\n"
+ " lsr r1, r1, #0x10\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ " b ._818\n"
+ "._820:\n"
+ " .align 2, 0\n"
+ "._819:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._817:\n"
+ " ldrh r0, [r1]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " bl species_and_otid_get_pal\n"
+ " ldr r1, [r4]\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x14\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x11\n"
+ " add r1, r1, r2\n"
+ " lsr r1, r1, #0x10\n"
+ " mov r2, #0x20\n"
+ " bl LoadCompressedPalette\n"
+ "._818:\n"
+ " ldr r5, ._822\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r4, ._822 + 4\n"
+ " add r0, r0, r4\n"
+ " ldr r2, ._822 + 8\n"
+ " add r1, r4, r2\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r5]\n"
+ " ldrb r0, [r0, #0x6]\n"
+ " lsl r0, r0, #0x5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, ._822 + 12\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ "._813:\n"
+ " ldr r1, ._822 + 16\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._822 + 20\n"
+ " str r1, [r0]\n"
+ " b ._821\n"
+ "._823:\n"
+ " .align 2, 0\n"
+ "._822:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gPlttBufferUnfaded+0x200\n"
+ " .word 0xffffff00\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C7A54+1\n"
+ "._816:\n"
+ " ldr r1, [r3]\n"
+ " ldrb r0, [r1, #0x8]\n"
+ " add r0, r0, #0x4\n"
+ " strb r0, [r1, #0x8]\n"
+ " ldr r2, [r3]\n"
+ " ldrb r1, [r2, #0x8]\n"
+ " mov r0, #0x1f\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2, #0x8]\n"
+ " ldr r0, [r3]\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r2, ._824\n"
+ " add r1, r1, r2\n"
+ " ldr r2, ._824 + 4\n"
+ " ldrb r0, [r0, #0x8]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r1]\n"
+ "._821:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._825:\n"
+ " .align 2, 0\n"
+ "._824:\n"
+ " .word 0x5000142\n"
+ " .word gUnknown_Debug_083F8790\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7D44()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r6, ._826\n"
+ " ldr r4, ._826 + 4\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x2]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl DestroySprite\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldrb r0, [r0, #0x5]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl GetSpritePaletteTagByPaletteNum\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl FreeSpritePaletteByTag\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x3]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl DestroySprite\n"
+ " ldr r0, [r4]\n"
+ " ldrb r1, [r0, #0x4]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " bl sub_809D510\n"
+ " ldr r1, ._826 + 8\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._826 + 12\n"
+ " str r1, [r0]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._827:\n"
+ " .align 2, 0\n"
+ "._826:\n"
+ " .word gSprites\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gTasks\n"
+ " .word debug_80C7934+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C7DDC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r0, ._830\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " mov r1, #0x1\n"
+ " and r1, r1, r2\n"
+ " add r3, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._828 @cond_branch\n"
+ " ldr r0, ._830 + 4\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1, #0x5]\n"
+ " ldr r1, ._830 + 8\n"
+ " ldr r2, ._830 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._830 + 16\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " b ._829\n"
+ "._831:\n"
+ " .align 2, 0\n"
+ "._830:\n"
+ " .word gMain\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ "._828:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._832 @cond_branch\n"
+ " ldr r6, ._834\n"
+ " ldr r0, [r6]\n"
+ " strb r1, [r0, #0x5]\n"
+ " ldr r1, ._834 + 4\n"
+ " ldr r2, ._834 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " ldr r2, ._834 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " ldr r0, [r6]\n"
+ " add r0, r0, #0x10\n"
+ " ldr r4, ._834 + 16\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r0, [r6]\n"
+ " add r0, r0, #0x10\n"
+ " ldr r5, ._834 + 20\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, [r6]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x5\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r4, r4, r2\n"
+ " add r1, r1, r4\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ " ldr r1, [r6]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x6]\n"
+ " lsl r1, r1, #0x5\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r5, r5, r2\n"
+ " add r1, r1, r5\n"
+ " mov r2, #0x10\n"
+ " bl CpuSet\n"
+ "._829:\n"
+ " ldr r1, ._834 + 24\n"
+ " lsl r0, r7, #0x2\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._834 + 28\n"
+ " str r1, [r0]\n"
+ " b ._871\n"
+ "._835:\n"
+ " .align 2, 0\n"
+ "._834:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word 0x4000040\n"
+ " .word 0x51ef\n"
+ " .word 0x699f\n"
+ " .word gPlttBufferUnfaded+0x100\n"
+ " .word gPlttBufferFaded+0x100\n"
+ " .word gTasks\n"
+ " .word debug_80C7A54+1\n"
+ "._832:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._837 @cond_branch\n"
+ " ldr r0, ._839\n"
+ " ldr r1, [r0]\n"
+ " ldrb r0, [r1, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._837 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0xa]\n"
+ " b ._871\n"
+ "._840:\n"
+ " .align 2, 0\n"
+ "._839:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._837:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._842 @cond_branch\n"
+ " ldr r0, ._844\n"
+ " ldr r1, [r0]\n"
+ " ldrb r0, [r1, #0xa]\n"
+ " cmp r0, #0\n"
+ " beq ._842 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0xa]\n"
+ " b ._871\n"
+ "._845:\n"
+ " .align 2, 0\n"
+ "._844:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._842:\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._846 @cond_branch\n"
+ " ldr r0, ._851\n"
+ " ldr r2, [r0]\n"
+ " ldrb r0, [r2, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " beq ._847 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._848 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._849 @cond_branch\n"
+ " b ._871\n"
+ "._852:\n"
+ " .align 2, 0\n"
+ "._851:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._848:\n"
+ " cmp r0, #0x2\n"
+ " beq ._853 @cond_branch\n"
+ " b ._871\n"
+ "._849:\n"
+ " ldrb r3, [r2, #0xc]\n"
+ " lsl r1, r3, #0x1b\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._878 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x20\n"
+ " neg r1, r1\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r2, #0xc]\n"
+ " b ._878\n"
+ "._847:\n"
+ " ldrh r3, [r2, #0xc]\n"
+ " lsl r1, r3, #0x16\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._878 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r1, ._859\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r2, #0xc]\n"
+ " b ._878\n"
+ "._860:\n"
+ " .align 2, 0\n"
+ "._859:\n"
+ " .word 0xfffffc1f\n"
+ "._853:\n"
+ " ldrb r3, [r2, #0xd]\n"
+ " lsl r1, r3, #0x19\n"
+ " lsr r0, r1, #0x1b\n"
+ " cmp r0, #0x1e\n"
+ " bhi ._878 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, #0x7d\n"
+ " neg r1, r1\n"
+ " and r1, r1, r3\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r2, #0xd]\n"
+ " b ._878\n"
+ "._846:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._871 @cond_branch\n"
+ " ldr r0, ._868\n"
+ " ldr r3, [r0]\n"
+ " ldrb r0, [r3, #0xa]\n"
+ " cmp r0, #0x1\n"
+ " beq ._864 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._865 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._866 @cond_branch\n"
+ " b ._871\n"
+ "._869:\n"
+ " .align 2, 0\n"
+ "._868:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ "._865:\n"
+ " cmp r0, #0x2\n"
+ " beq ._870 @cond_branch\n"
+ " b ._871\n"
+ "._866:\n"
+ " ldrb r2, [r3, #0xc]\n"
+ " mov r0, #0x1f\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._878 @cond_branch\n"
+ " lsl r0, r2, #0x1b\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " mov r1, #0x20\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r3, #0xc]\n"
+ " b ._878\n"
+ "._864:\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " mov r0, #0xf8\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._878 @cond_branch\n"
+ " lsl r0, r2, #0x16\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x5\n"
+ " ldr r1, ._876\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strh r1, [r3, #0xc]\n"
+ " b ._878\n"
+ "._877:\n"
+ " .align 2, 0\n"
+ "._876:\n"
+ " .word 0xfffffc1f\n"
+ "._870:\n"
+ " ldrb r2, [r3, #0xd]\n"
+ " mov r0, #0x7c\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._878 @cond_branch\n"
+ " lsl r0, r2, #0x19\n"
+ " lsr r0, r0, #0x1b\n"
+ " sub r0, r0, #0x1\n"
+ " mov r1, #0x1f\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " mov r1, #0x7d\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r3, #0xd]\n"
+ "._878:\n"
+ " ldr r0, ._879\n"
+ " lsl r1, r7, #0x2\n"
+ " add r1, r1, r7\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._879 + 4\n"
+ " str r0, [r1]\n"
+ "._871:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._880:\n"
+ " .align 2, 0\n"
+ "._879:\n"
+ " .word gTasks\n"
+ " .word debug_80C802C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_80C802C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r0, ._881\n"
+ " ldr r3, [r0]\n"
+ " ldrb r0, [r3, #0xc]\n"
+ " lsl r0, r0, #0x1b\n"
+ " lsr r0, r0, #0x1b\n"
+ " ldrh r2, [r3, #0xc]\n"
+ " mov r1, #0xf8\n"
+ " lsl r1, r1, #0x2\n"
+ " and r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r3, #0xd]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1b\n"
+ " lsl r1, r1, #0xa\n"
+ " add r0, r0, r1\n"
+ " ldr r6, ._881 + 4\n"
+ " ldrb r1, [r3, #0x7]\n"
+ " add r1, r1, #0x81\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r6\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._881 + 8\n"
+ " mov r8, r1\n"
+ " ldrb r1, [r3, #0x7]\n"
+ " add r1, r1, #0x81\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r8\n"
+ " strh r0, [r1]\n"
+ " ldrb r1, [r3, #0x6]\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r3, #0x7]\n"
+ " ldr r4, ._881 + 12\n"
+ " add r2, r2, r4\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r6\n"
+ " strh r0, [r1]\n"
+ " ldrb r1, [r3, #0x6]\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r3, #0x7]\n"
+ " add r2, r2, r4\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r8\n"
+ " strh r0, [r1]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl debug_80C68CC\n"
+ " ldr r1, ._881 + 16\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._881 + 20\n"
+ " str r1, [r0]\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._882:\n"
+ " .align 2, 0\n"
+ "._881:\n"
+ " .word unk_debug_ewram_0+0x34\n"
+ " .word gPlttBufferUnfaded\n"
+ " .word gPlttBufferFaded\n"
+ " .word 0x101\n"
+ " .word gTasks\n"
+ " .word debug_80C7DDC+1\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c
index 44d832e2b..03a64afc6 100644
--- a/src/engine/cable_club.c
+++ b/src/engine/cable_club.c
@@ -360,6 +360,10 @@ void sub_80831F8(u8 taskId)
|| sub_8082DF4(taskId) == TRUE)
return;
+#ifdef DEBUG
+ sub_8082D60(taskId, GetLinkPlayerCount_2());
+#endif
+
gSpecialVar_Result = sub_8082D9C(local1, local2);
if (gSpecialVar_Result == 0)
return;
diff --git a/src/engine/clock.c b/src/engine/clock.c
index 416aaa6bb..fceccdfcb 100644
--- a/src/engine/clock.c
+++ b/src/engine/clock.c
@@ -13,12 +13,11 @@
#include "tv.h"
#include "wallclock.h"
-static void InitTimeBasedEvents(void);
static void UpdatePerDay(struct Time *time);
static void UpdatePerMinute(struct Time *time);
static void ReturnFromStartWallClock(void);
-static void InitTimeBasedEvents(void)
+void InitTimeBasedEvents(void)
{
FlagSet(FLAG_SYS_CLOCK_SET);
RtcCalcLocalTime();
diff --git a/src/engine/link.c b/src/engine/link.c
index 34016d607..502715116 100644
--- a/src/engine/link.c
+++ b/src/engine/link.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "cable_club.h"
#include "link.h"
#include "battle.h"
#include "berry.h"
@@ -543,6 +544,9 @@ static void ProcessRecvCmds(u8 unusedParam)
else
{
SetBlockReceivedFlag(i);
+#ifdef DEBUG
+ debug_sub_808B838(i);
+#endif
}
}
break;
@@ -975,6 +979,143 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
}
}
+#ifdef DEBUG
+
+EWRAM_DATA u16 *debugCharacterBase = NULL;
+EWRAM_DATA void *unk_20238C8 = NULL;
+EWRAM_DATA u16 (*debugTileMap)[] = NULL;
+EWRAM_DATA u32 unk_20238D0 = 0;
+
+void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3)
+{
+ CpuSet(sLinkTestDigitTiles, buffer, 272);
+ debugCharacterBase = buffer;
+ unk_20238C8 = arg1;
+ debugTileMap = arg2;
+ unk_20238D0 = arg3;
+}
+
+#ifdef NONMATCHING
+void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0)
+{
+ u32 buffer[8];
+ u32 *ptr;
+
+ u16 *dest;
+
+ int i;
+
+ if (unk_20238D0 != sp0)
+ return;
+
+ r3 = max(r3, 8);
+
+ ptr = &buffer[0];
+ dest = &(*debugTileMap)[left + top * 32];
+
+ for (i = r3; i != 0; i--)
+ {
+ *(ptr++) = value & 0xF;
+ value = value >> 4;
+ }
+
+ ptr = &buffer[8 - r3];
+ for (i = r3; i != 0; i--)
+ {
+ int charOffset = (((uintptr_t) debugCharacterBase) - ((uintptr_t) unk_20238C8)) / 32;
+ *dest = *ptr + charOffset + 1;
+ ptr--;
+ dest++;
+ }
+}
+#else
+__attribute__((naked))
+void debug_sub_8008264()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xffffffe0\n"
+ " add r5, r0, #0\n"
+ " add r6, r1, #0\n"
+ " add r4, r3, #0\n"
+ " ldr r0, [sp, #0x38]\n"
+ " ldr r1, ._347\n"
+ " ldr r1, [r1]\n"
+ " cmp r1, r0\n"
+ " bne ._345 @cond_branch\n"
+ " cmp r4, #0x8\n"
+ " ble ._342 @cond_branch\n"
+ " mov r4, #0x8\n"
+ "._342:\n"
+ " mov r3, sp\n"
+ " ldr r0, ._347 + 4\n"
+ " mov r8, r0\n"
+ " lsl r2, r2, #0x6\n"
+ " mov ip, r2\n"
+ " lsl r6, r6, #0x1\n"
+ " lsl r7, r4, #0x2\n"
+ " cmp r4, #0\n"
+ " ble ._343 @cond_branch\n"
+ " mov r1, #0xf\n"
+ " add r2, r4, #0\n"
+ "._344:\n"
+ " add r0, r5, #0\n"
+ " and r0, r0, r1\n"
+ " stmia r3!, {r0}\n"
+ " lsr r5, r5, #0x4\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bne ._344 @cond_branch\n"
+ "._343:\n"
+ " mov r1, r8\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, ip\n"
+ " add r5, r0, r6\n"
+ " mov r1, sp\n"
+ " add r0, r1, r7\n"
+ " sub r3, r0, #4\n"
+ " cmp r4, #0\n"
+ " ble ._345 @cond_branch\n"
+ " ldr r7, ._347 + 8\n"
+ " ldr r6, ._347 + 12\n"
+ " add r2, r4, #0\n"
+ "._346:\n"
+ " ldr r1, [r7]\n"
+ " ldr r0, [r6]\n"
+ " sub r1, r1, r0\n"
+ " lsr r1, r1, #0x5\n"
+ " ldr r0, [r3]\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5]\n"
+ " sub r3, r3, #0x4\n"
+ " add r5, r5, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bne ._346 @cond_branch\n"
+ "._345:\n"
+ " add sp, sp, #0x20\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._348:\n"
+ " .align 2, 0\n"
+ "._347:\n"
+ " .word unk_20238D0\n"
+ " .word debugTileMap\n"
+ " .word debugCharacterBase\n"
+ " .word unk_20238C8\n"
+ "\n"
+ );
+}
+#endif
+
+#endif
+
static void LinkCB_RequestPlayerDataExchange(void)
{
// Only one request needs to be sent, so only the master sends it.
diff --git a/src/engine/rtc.c b/src/engine/rtc.c
index d73f943d2..a56fcd44e 100644
--- a/src/engine/rtc.c
+++ b/src/engine/rtc.c
@@ -268,6 +268,28 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day)
*dest = EOS;
}
+#ifdef DEBUG
+
+void debug_sub_800987C(u8 *dest)
+{
+ FormatHexDate(dest, sRtc.year, sRtc.month, sRtc.day);
+}
+
+void debug_sub_8009894(u8 *dest)
+{
+ u16 dayCount;
+
+ dayCount = RtcGetDayCount(&sRtc);
+ ConvertIntToDecimalStringN(dest, dayCount, STR_CONV_MODE_RIGHT_ALIGN, 4);
+}
+
+void debug_sub_80098B8(u8 *dest)
+{
+ ConvertIntToHexStringN(dest, sRtc.status, STR_CONV_MODE_LEADING_ZEROS, 2);
+}
+
+#endif
+
void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t)
{
u16 days = RtcGetDayCount(rtc);
@@ -347,3 +369,10 @@ u32 RtcGetMinuteCount()
RtcGetInfo(&sRtc);
return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute;
}
+
+#ifdef DEBUG
+void debug_sub_8009A60()
+{
+ RtcGetRawInfo(&sRtc);
+}
+#endif
diff --git a/src/engine/save.c b/src/engine/save.c
index d5de2e408..8b045eaaa 100644
--- a/src/engine/save.c
+++ b/src/engine/save.c
@@ -574,6 +574,83 @@ u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
+#ifdef DEBUG
+__attribute__((naked))
+void sub_813B79C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " ldr r4, ._163\n"
+ " ldr r6, ._163 + 4\n"
+ " mov r5, #0x0\n"
+ "._161:\n"
+ " lsl r0, r5, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r1, r4, #0\n"
+ " bl DoReadFlashWholeSection\n"
+ " ldr r1, ._163 + 8\n"
+ " add r0, r4, r1\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r6\n"
+ " ldrh r1, [r0, #0x4]\n"
+ " add r0, r4, #0\n"
+ " bl CalculateChecksum\n"
+ " ldr r2, ._163 + 12\n"
+ " add r1, r4, r2\n"
+ " strh r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " bl gScriptFuncs_End+0x2f60\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " cmp r5, #0x1b\n"
+ " bls ._161 @cond_branch\n"
+ " ldr r6, ._163\n"
+ " ldr r7, ._163 + 16\n"
+ " mov r5, #0x0\n"
+ "._162:\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0x1c\n"
+ " lsl r0, r4, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r1, r6, #0\n"
+ " bl DoReadFlashWholeSection\n"
+ " lsl r0, r5, #0x3\n"
+ " add r0, r0, r7\n"
+ " ldrh r1, [r0, #0x4]\n"
+ " add r0, r6, #0\n"
+ " bl CalculateChecksum\n"
+ " ldr r2, ._163 + 8\n"
+ " add r1, r6, r2\n"
+ " strh r0, [r1]\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl gScriptFuncs_End+0x2f60\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r5, r0, #0x10\n"
+ " cmp r5, #0x1\n"
+ " bls ._162 @cond_branch\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word +0x2000000\n"
+ " .word gSaveSectionLocations\n"
+ " .word 0xff4\n"
+ " .word 0xff6\n"
+ " .word gHallOfFameSaveSectionLocations\n"
+ "\n"
+ );
+}
+#endif
+
u8 HandleSavingData(u8 saveType)
{
u8 i;
diff --git a/src/engine/sprite.c b/src/engine/sprite.c
index cf35e12a3..cec3d0b3a 100644
--- a/src/engine/sprite.c
+++ b/src/engine/sprite.c
@@ -1,8 +1,10 @@
#include "global.h"
+#include "debug.h"
#include "sprite.h"
#include "main.h"
#include "menu_cursor.h"
#include "palette.h"
+#include "sprite.h"
#define MAX_SPRITE_COPY_REQUESTS 64
@@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr
gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
gSpriteCopyRequestCount++;
}
+#ifdef DEBUG
+ else
+ {
+ unref_sub_80AB084(sDmaOverErrorMsg);
+ }
+#endif
}
void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
@@ -833,6 +841,12 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
gSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
gSpriteCopyRequestCount++;
}
+#ifdef DEBUG
+ else
+ {
+ unref_sub_80AB084(sDmaOverErrorMsg);
+ }
+#endif
}
// these two functions are unused.
diff --git a/src/engine/task.c b/src/engine/task.c
index 7bd2b5937..ed17d28bb 100644
--- a/src/engine/task.c
+++ b/src/engine/task.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "debug.h"
#include "task.h"
#define ACTIVE_SENTINEL 0x10
@@ -11,8 +12,9 @@ struct Task gTasks[ACTIVE_SENTINEL];
static void InsertTask(u8 newTaskId);
static u8 FindFirstActiveTask();
-// Unused string
-const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました");
+const u8 gError_NoTasksLeft[] = _(
+ "TASK OVER\n"
+ "タスクがオーバーしました");
void ResetTasks()
{
@@ -49,6 +51,10 @@ u8 CreateTask(TaskFunc func, u8 priority)
}
}
+#ifdef DEBUG
+ unref_sub_80AB084(gError_NoTasksLeft);
+#endif
+
return 0;
}
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index 9d09575c8..daa513145 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -5,6 +5,7 @@
#include "field_effect.h"
#include "graphics.h"
#include "link.h"
+#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "money.h"
@@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
-extern const u8 gBadgesTiles[];
extern const u16 gUnknown_083B5F0C[];
extern const u16 gBadgesPalette[];
extern const u16 gUnknown_083B5F4C[];
@@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
// XXX: what is this?
u8 *const ewram_ = gSharedMem;
+#ifdef DEBUG
+const struct TrainerCard gUnknown_Debug_083E0448 =
+{
+ .gender = FEMALE,
+ .stars = 4,
+ .hasPokedex = TRUE,
+ .var_3 = TRUE,
+ .var_4 = TRUE,
+ .firstHallOfFameA = 999,
+ .firstHallOfFameB = 99,
+ .firstHallOfFameC = 99,
+ .pokedexSeen = 411,
+ .trainerId = 12345,
+ .playTimeHours = 99,
+ .playTimeMinutes = 99,
+ .linkBattleWins = 9999,
+ .linkBattleLosses = 9999,
+ .battleTowerWins = 9999,
+ .battleTowerLosses = 9999,
+ .contestsWithFriends = 999,
+ .pokeblocksWithFriends = 0xFFFF,
+ .pokemonTrades = 0xFFFF,
+ .money = 99999,
+ .var_28 = {1, 2, 3, 4},
+ .playerName = _("てすと"),
+};
+#endif
+
bool8 TrainerCard_Init(struct Task *);
bool8 TrainerCard_WaitForFadeInToFinish(struct Task *);
bool8 TrainerCard_WaitForKeys(struct Task *);
@@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void);
static void TrainerCard_Back_PrintPokemonTrades(void);
void unref_sub_8094588(u16 left, u16 top);
+#ifdef DEBUG
+static u8 gDebug_03000748;
+#endif
+
void TrainerCard_ShowPlayerCard(Callback arg1)
{
+#ifdef DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForPlayer(arg1);
SetMainCallback2(sub_8093174);
ewram0_2.language = GAME_LANGUAGE;
@@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1)
void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
{
+#ifdef DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
+#ifdef DEBUG
+void debug_sub_80A0710(Callback callback)
+{
+ gDebug_03000748 = TRUE;
+ TrainerCard_InitScreenForPlayer(callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A073C(Callback callback)
+{
+ memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard));
+ gDebug_03000748=TRUE;
+ TrainerCard_InitScreenForLinkPlayer(0, callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A0780()
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard));
+}
+#endif
+
static void sub_8093174(void)
{
switch (gMain.state)
@@ -553,6 +618,19 @@ static void TrainerCard_FillFlags(void)
}
}
}
+
+#ifdef DEBUG
+ if (gDebug_03000748 != 0)
+ {
+ ewram0_2.showHallOfFame = TRUE;
+ ewram0_2.showLinkBattleStatus = TRUE;
+ ewram0_2.showBattleTowerStatus = TRUE;
+ ewram0_2.showContestRecord = TRUE;
+ ewram0_2.showMixingRecord = TRUE;
+ ewram0_2.showTradingRecord = TRUE;
+ memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges));
+ }
+#endif
}
void sub_80937A4()
@@ -645,6 +723,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
}
return TRUE;
}
+#ifdef DEBUG
+ else if (gDebug_03000748 && gMain.newKeys & R_BUTTON)
+ {
+ ewram0_2.starCount++;
+ ewram0_2.starCount %= 5;
+ TrainerCard_LoadPalettes();
+ if (ewram0_2.backSideShown == 0)
+ TrainerCard_DrawStars();
+ }
+#endif
+
return FALSE;
}
@@ -1372,7 +1461,11 @@ static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (!ewram0_2.showPokedexCount)
+ if (
+#ifdef DEBUG
+ gDebug_03000748 == 0 &&
+#endif
+ !ewram0_2.showPokedexCount)
{
TrainerCard_ClearPokedexLabel();
}
diff --git a/src/field/berry.c b/src/field/berry.c
index 088267ad0..7c6640dc8 100644
--- a/src/field/berry.c
+++ b/src/field/berry.c
@@ -999,6 +999,66 @@ extern u16 gSpecialVar_0x8006;
static u8 CalcBerryYield(struct BerryTree *tree);
static u16 GetStageDurationByBerryType(u8 berry);
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2B04()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " bl sub_80B47D8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._1\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80C2B30()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " bl sub_80B47D8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._3\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+#endif
+
// unused
// this could be static, but making it so causes a compile-time warning.
void ClearEnigmaBerries(void)
@@ -1022,6 +1082,180 @@ void SetEnigmaBerry(u8 *src)
gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2BD0()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " ldr r3, ._11\n"
+ " ldr r1, ._11 + 4\n"
+ " add r4, r3, r1\n"
+ " ldr r6, [r4]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r3, r1\n"
+ " ldr r7, [r2]\n"
+ " mov r1, #0x0\n"
+ " str r1, [r4]\n"
+ " str r1, [r2]\n"
+ " add r4, r0, #0\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._11 + 8\n"
+ "._10:\n"
+ " add r0, r4, r1\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r2, r0\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r5\n"
+ " bls ._10 @cond_branch\n"
+ " ldr r1, ._11 + 4\n"
+ " add r0, r3, r1\n"
+ " str r6, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r3, r1\n"
+ " str r7, [r0]\n"
+ " add r0, r2, #0\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x316c\n"
+ " .word 0x52b\n"
+ "\n"
+ );
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add r3, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r9, r1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r8, r2\n"
+ " ldr r4, ._16\n"
+ " ldr r1, ._16 + 4\n"
+ " add r0, r4, r1\n"
+ " add r2, r0, #0\n"
+ " ldr r1, ._16 + 8\n"
+ " ldmia r1!, {r5, r6, r7}\n"
+ " stmia r2!, {r5, r6, r7}\n"
+ " ldmia r1!, {r5, r6, r7}\n"
+ " stmia r2!, {r5, r6, r7}\n"
+ " ldr r1, [r1]\n"
+ " str r1, [r2]\n"
+ " add r1, r3, #0\n"
+ " bl StringCopy\n"
+ " ldr r0, ._16 + 12\n"
+ " add r6, r4, r0\n"
+ " ldr r1, ._16 + 16\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " ldr r1, ._16 + 20\n"
+ " add r5, r4, r1\n"
+ " ldr r1, ._16 + 24\n"
+ " add r0, r5, #0\n"
+ " bl StringCopy\n"
+ " ldr r2, ._16 + 28\n"
+ " add r0, r4, r2\n"
+ " str r6, [r0]\n"
+ " ldr r6, ._16 + 32\n"
+ " add r0, r4, r6\n"
+ " str r5, [r0]\n"
+ " mov r2, #0x0\n"
+ " ldr r6, ._16 + 36\n"
+ " ldr r7, ._16 + 40\n"
+ " add r5, r4, r7\n"
+ " ldr r3, ._16 + 44\n"
+ "._13:\n"
+ " add r0, r2, r5\n"
+ " add r1, r2, r3\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r6\n"
+ " ble ._13 @cond_branch\n"
+ " ldr r0, ._16\n"
+ " ldr r3, ._16 + 48\n"
+ " ldr r2, ._16 + 52\n"
+ " add r1, r0, r2\n"
+ " mov r2, #0xf\n"
+ "._14:\n"
+ " ldrh r0, [r3]\n"
+ " strh r0, [r1]\n"
+ " add r3, r3, #0x2\n"
+ " add r1, r1, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._14 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._16 + 56\n"
+ " ldr r3, ._16 + 60\n"
+ "._15:\n"
+ " add r0, r2, r5\n"
+ " add r1, r2, r3\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x11\n"
+ " ble ._15 @cond_branch\n"
+ " ldr r5, ._16 + 64\n"
+ " add r0, r4, r5\n"
+ " mov r6, r9\n"
+ " strb r6, [r0]\n"
+ " ldr r7, ._16 + 68\n"
+ " add r0, r4, r7\n"
+ " mov r1, r8\n"
+ " strb r1, [r0]\n"
+ " ldr r2, ._16 + 4\n"
+ " add r0, r4, r2\n"
+ " bl debug_sub_80C2BD0\n"
+ " add r5, r5, #0x4\n"
+ " add r1, r4, r5\n"
+ " str r0, [r1]\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3160\n"
+ " .word gBerries\n"
+ " .word 0x361c\n"
+ " .word gUnknown_Debug_083F7F84\n"
+ " .word 0x3649\n"
+ " .word gUnknown_Debug_083F7F90\n"
+ " .word 0x316c\n"
+ " .word 0x3170\n"
+ " .word 0x47f\n"
+ " .word 0x317c\n"
+ " .word gSpriteImage_83C172C+0x80\n"
+ " .word gSpriteImage_83C172C+0x500\n"
+ " .word 0x35fc\n"
+ " .word gSaveBlock1+0x3676\n"
+ " .word gUnknown_Debug_839B6CE\n"
+ " .word 0x3688\n"
+ " .word 0x3689\n"
+ "\n"
+ );
+}
+#else
static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
const u8 *description1;
@@ -1051,9 +1285,110 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
return checksum;
}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2D24()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " ldr r6, [sp, #0x18]\n"
+ " ldr r4, [sp, #0x1c]\n"
+ " mov r8, r4\n"
+ " ldr r5, ._18\n"
+ " ldr r7, ._18 + 4\n"
+ " add r4, r5, r7\n"
+ " strb r0, [r4]\n"
+ " ldr r4, ._18 + 8\n"
+ " add r0, r5, r4\n"
+ " strb r1, [r0]\n"
+ " add r7, r7, #0x2\n"
+ " add r0, r5, r7\n"
+ " strb r2, [r0]\n"
+ " ldr r1, ._18 + 12\n"
+ " add r0, r5, r1\n"
+ " strb r3, [r0]\n"
+ " add r4, r4, #0x3\n"
+ " add r0, r5, r4\n"
+ " strb r6, [r0]\n"
+ " add r7, r7, #0x3\n"
+ " add r0, r5, r7\n"
+ " mov r1, r8\n"
+ " strb r1, [r0]\n"
+ " sub r4, r4, #0x19\n"
+ " add r0, r5, r4\n"
+ " bl debug_sub_80C2BD0\n"
+ " ldr r7, ._18 + 16\n"
+ " add r5, r5, r7\n"
+ " str r0, [r5]\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._19:\n"
+ " .align 2, 0\n"
+ "._18:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3175\n"
+ " .word 0x3176\n"
+ " .word 0x3178\n"
+ " .word 0x368c\n"
+ "\n"
+ );
+}
+#endif
// due to e-reader scans being particularly volatile to failure, it is a requirement to check for
// their integrity here due to scans possibly failing to produce the correct result.
+#if DEBUG
+__attribute__((naked))
+bool32 IsEnigmaBerryValid()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._24\n"
+ " ldr r1, ._24 + 4\n"
+ " add r0, r4, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._22 @cond_branch\n"
+ " ldr r2, ._24 + 8\n"
+ " add r0, r4, r2\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._22 @cond_branch\n"
+ " ldr r1, ._24 + 12\n"
+ " add r0, r4, r1\n"
+ " bl debug_sub_80C2BD0\n"
+ " ldr r2, ._24 + 16\n"
+ " add r1, r4, r2\n"
+ " ldr r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bne ._22 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3174\n"
+ " .word 0x316a\n"
+ " .word 0x3160\n"
+ " .word 0x368c\n"
+ "._22:\n"
+ " mov r0, #0x0\n"
+ "._23:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+#else
bool32 IsEnigmaBerryValid(void)
{
if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0)
@@ -1064,6 +1399,7 @@ bool32 IsEnigmaBerryValid(void)
return FALSE;
return TRUE;
}
+#endif
const struct Berry *GetBerryInfo(u8 berry)
{
@@ -1417,6 +1753,177 @@ bool8 PlayerHasBerries(void)
return IsBagPocketNonEmpty(BAG_BERRIES);
}
+#if DEBUG
+void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n)
+{
+ StringAppend(gStringVar4, buffer);
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n);
+ StringAppend(gStringVar4, gStringVar1);
+}
+
+extern const u8 gUnknown_Debug_083F7F9D[];
+extern const u8 gUnknown_Debug_083F7FA2[];
+extern const u8 gUnknown_Debug_083F7FA9[];
+extern const u8 gUnknown_Debug_083F7FB0[];
+extern const u8 gUnknown_Debug_083F7FB7[];
+extern const u8 gUnknown_Debug_083F7FBE[];
+extern const u8 gUnknown_Debug_083F7FC5[];
+extern const u8 gUnknown_Debug_083F7FCC[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+
+#ifdef NONMATCHING
+u8* DebugOpenBerryInfo(void)
+{
+ s32 i;
+ u8 berryTreeId;
+ struct BerryTree *berryTree;
+
+ if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript)
+ return NULL;
+
+ berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ berryTree = GetBerryTreeInfo(berryTreeId);
+
+ for (i = 0; i < 500; i++)
+ gStringVar4[i] |= 0xFF;
+
+ debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1);
+
+ return gStringVar4;
+}
+#else
+__attribute__((naked))
+void DebugOpenBerryInfo()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " bl GetFieldObjectScriptPointerForComparison\n"
+ " ldr r1, ._138\n"
+ " cmp r0, r1\n"
+ " beq ._136 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._137\n"
+ "._139:\n"
+ " .align 2, 0\n"
+ "._138:\n"
+ " .word BerryTreeScript\n"
+ "._136:\n"
+ " ldr r0, ._141\n"
+ " ldrb r0, [r0]\n"
+ " bl FieldObjectGetBerryTreeId\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " add r0, r6, #0\n"
+ " bl GetBerryTreeInfo\n"
+ " add r5, r0, #0\n"
+ " mov r2, #0x0\n"
+ " ldr r7, ._141 + 4\n"
+ " ldr r4, ._141 + 8\n"
+ " mov r3, #0xff\n"
+ "._140:\n"
+ " add r1, r2, r4\n"
+ " ldrb r0, [r1]\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r7\n"
+ " ble ._140 @cond_branch\n"
+ " ldr r0, ._141 + 12\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 16\n"
+ " ldrb r1, [r5]\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 20\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x19\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 24\n"
+ " ldrh r1, [r5, #0x2]\n"
+ " mov r2, #0x5\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 28\n"
+ " ldrb r1, [r5, #0x4]\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 32\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 36\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " lsr r1, r1, #0x7\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 40\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1b\n"
+ " lsr r1, r1, #0x1f\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r4, ._141 + 44\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1a\n"
+ " lsr r1, r1, #0x1f\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1f\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsr r1, r1, #0x7\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 8\n"
+ "._137:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word gSelectedMapObject\n"
+ " .word 0x1f3\n"
+ " .word gStringVar4\n"
+ " .word gUnknown_Debug_083F7F9D\n"
+ " .word gUnknown_Debug_083F7FA2\n"
+ " .word gUnknown_Debug_083F7FA9\n"
+ " .word gUnknown_Debug_083F7FB0\n"
+ " .word gUnknown_Debug_083F7FB7\n"
+ " .word gUnknown_Debug_083F7FBE\n"
+ " .word gUnknown_Debug_083F7FC5\n"
+ " .word gUnknown_Debug_083F7FCC\n"
+ " .word gUnknown_Debug_083F7FD3\n"
+ "\n"
+ );
+}
+#endif
+
+#endif
+
// whenever the player is not within view of the berry tree during its sparkle state, the
// sparkle state will be reset.
void ResetBerryTreeSparkleFlags(void)
@@ -1445,3 +1952,17 @@ void ResetBerryTreeSparkleFlags(void)
}
}
}
+
+#if DEBUG
+static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
+static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
+static const u8 gUnknown_Debug_083F7F9D[] = _("POS:");
+static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:");
+static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:");
+static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:");
+static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:");
+static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:");
+static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:");
+static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:");
+static const u8 gUnknown_Debug_083F7FD3[] = _("");
+#endif
diff --git a/src/field/bike.c b/src/field/bike.c
index 8db01b4b4..736dbc837 100644
--- a/src/field/bike.c
+++ b/src/field/bike.c
@@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
extern u8 gUnusedBikeCameraAheadPanback;
+#ifdef DEBUG
+extern u8 gUnknown_020297ED;
+u8 debug_sub_805F2B0(u8);
+#endif
+
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
static void MachBikeTransition_FaceDirection(u8);
@@ -126,6 +131,14 @@ static const struct BikeHistoryInputInfo gAcroBikeTricksList[] =
void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
{
+#ifdef DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(direction))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
+
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
MovePlayerOnMachBike(direction, newKeys, heldKeys);
else
@@ -271,6 +284,14 @@ static void MachBikeTransition_TrySlowDown(u8 var)
// the acro bike requires the input handler to be executed before the transition can.
static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys)
{
+#ifdef DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(newDirection))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
+
sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection);
}
diff --git a/src/field/choose_party.c b/src/field/choose_party.c
index 3ba04e489..545c19dfa 100644
--- a/src/field/choose_party.c
+++ b/src/field/choose_party.c
@@ -527,6 +527,107 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId)
sub_81227FC(taskId);
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_81381B4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " ldr r4, ._189\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x60\n"
+ " bl gScriptFuncs_End+0x5c24\n"
+ " mov r7, #0x0\n"
+ " mov r8, r4\n"
+ " mov r0, #0x4\n"
+ " add r0, r0, r8\n"
+ " mov r9, r0\n"
+ "._188:\n"
+ " mov r0, #0x64\n"
+ " add r1, r7, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._189 + 4\n"
+ " add r5, r1, r0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x41\n"
+ " bl GetMonData\n"
+ " lsl r4, r7, #0x5\n"
+ " mov r1, r8\n"
+ " add r6, r4, r1\n"
+ " strh r0, [r6]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " beq ._187 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " strb r0, [r6, #0xf]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x10]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x12]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x37\n"
+ " bl GetMonData\n"
+ " mov r1, r8\n"
+ " add r1, r1, #0x14\n"
+ " add r1, r4, r1\n"
+ " str r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x2]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x0\n"
+ " bl GetMonData\n"
+ " mov r1, r8\n"
+ " add r1, r1, #0x18\n"
+ " add r1, r4, r1\n"
+ " str r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " bl GetMonGender\n"
+ " strb r0, [r6, #0x1c]\n"
+ " add r4, r4, r9\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl GetMonData\n"
+ " add r0, r4, #0\n"
+ " bl StripExtCtrlCodes\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetMonData\n"
+ " strb r0, [r6, #0x1d]\n"
+ "._187:\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x2\n"
+ " bls ._188 @cond_branch\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._190:\n"
+ " .align 2, 0\n"
+ "._189:\n"
+ " .word gUnknown_02023A00\n"
+ " .word gPlayerParty+0x12c\n"
+ "\n"
+ );
+}
+#endif
+
bool8 SetupLinkMultiBattlePartyMenu(void)
{
switch (ewram1B000_alt.setupState)
diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c
index dd0e972aa..21ced1be8 100644
--- a/src/field/decoration_inventory.c
+++ b/src/field/decoration_inventory.c
@@ -164,3 +164,14 @@ u8 sub_81341D4(void)
}
return count;
}
+
+
+#ifdef DEBUG
+void debug_sub_814A3A8(void)
+{
+ u8 decor;
+
+ for (decor = 0; decor < DECOR_COUNT; decor++)
+ IsThereStorageSpaceForDecoration(decor);
+}
+#endif
diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c
index 52e66f16e..dad2fb1d2 100644
--- a/src/field/field_control_avatar.c
+++ b/src/field/field_control_avatar.c
@@ -82,25 +82,25 @@ extern u8 gUnknown_081C6BDE[];
static void player_get_pos_to_and_height(struct MapPosition *);
static void player_get_next_pos_and_height(struct MapPosition *);
-static u16 cur_mapdata_block_role_at_player_pos(int);
-static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c);
+/*static*/ u16 cur_mapdata_block_role_at_player_pos(int);
+/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c);
static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c);
static u8 *sub_8068364(struct MapPosition *, u8, u8);
static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c);
static u8 *sub_8068500(struct MapPosition *, u8, u8);
static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8);
-static bool32 sub_8068770(void);
-static bool32 sub_80687A4(void);
-static bool8 sub_80687E4(struct MapPosition *, u16, u16);
+/*static*/ bool32 sub_8068770(void);
+/*static*/ bool32 sub_80687A4(void);
+/*static*/ bool8 sub_80687E4(struct MapPosition *, u16, u16);
static void happiness_algorithm_step(void);
static bool8 overworld_poison_step(void);
-static bool8 is_it_battle_time_3(u16);
-static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8);
+/*static*/ bool8 is_it_battle_time_3(u16);
+/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8);
static bool8 sub_8068B30(u16);
static bool8 is_non_stair_warp_tile(u16, u8);
static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *);
static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *);
-static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
+/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
static s8 map_warp_check(struct MapHeader *, u16, u16, u8);
static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8);
static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);
@@ -122,6 +122,230 @@ void FieldClearPlayerInput(struct FieldInput *input)
input->dpadDirection = 0;
}
+#if DEBUG
+__attribute__((naked))
+void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add r4, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " mov r8, r1\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r5, r2, #0x10\n"
+ " ldr r0, ._17\n"
+ " ldrb r6, [r0, #0x3]\n"
+ " ldrb r0, [r0, #0x2]\n"
+ " mov r9, r0\n"
+ " bl cur_mapdata_block_role_at_player_pos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl MetatileBehavior_IsMoveTile\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bne ._1 @cond_branch\n"
+ " cmp r7, #0\n"
+ " beq ._2 @cond_branch\n"
+ "._1:\n"
+ " cmp r6, #0\n"
+ " bne ._9 @cond_branch\n"
+ "._2:\n"
+ " bl GetPlayerSpeed\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0x4\n"
+ " beq ._8 @cond_branch\n"
+ " mov r0, #0x8\n"
+ " mov r1, r8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._5 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._5:\n"
+ " mov r0, #0x4\n"
+ " mov r3, r8\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._6 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x8\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._6:\n"
+ " mov r0, #0x1\n"
+ " mov r1, r8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._7 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._7:\n"
+ " mov r0, #0x2\n"
+ " mov r3, r8\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._8 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x80\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._8:\n"
+ " mov r0, #0xf0\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._9 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x10\n"
+ " orr r0, r0, r1\n"
+ " mov r1, #0x20\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._9:\n"
+ " cmp r7, #0\n"
+ " bne ._14 @cond_branch\n"
+ " cmp r6, #0x2\n"
+ " bne ._12 @cond_branch\n"
+ " mov r0, r9\n"
+ " cmp r0, #0x2\n"
+ " bne ._12 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x40\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._12:\n"
+ " cmp r7, #0\n"
+ " bne ._14 @cond_branch\n"
+ " cmp r6, #0x2\n"
+ " bne ._14 @cond_branch\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ "._14:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._15 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " b ._22\n"
+ "._18:\n"
+ " .align 2, 0\n"
+ "._17:\n"
+ " .word gPlayerAvatar\n"
+ "._15:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._19 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._22\n"
+ "._19:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._21 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " b ._22\n"
+ "._21:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._23 @cond_branch\n"
+ " mov r0, #0x4\n"
+ "._22:\n"
+ " strb r0, [r4, #0x2]\n"
+ "._23:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " ldrb r2, [r4]\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " ldrb r0, [r4, #0x1]\n"
+ " mov r1, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x1]\n"
+ " mov r0, #0x5\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r4]\n"
+ "._25:\n"
+ " ldr r0, ._30\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._29 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._28 @cond_branch\n"
+ " ldrb r1, [r4, #0x1]\n"
+ " mov r0, #0x2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r4, #0x1]\n"
+ " ldrb r0, [r4]\n"
+ " mov r2, #0x41\n"
+ " neg r2, r2\n"
+ " and r2, r2, r0\n"
+ " mov r0, #0x3\n"
+ " neg r0, r0\n"
+ " and r2, r2, r0\n"
+ " sub r0, r0, #0xe\n"
+ " and r2, r2, r0\n"
+ " sub r0, r0, #0x10\n"
+ " and r2, r2, r0\n"
+ " strb r2, [r4]\n"
+ " mov r0, #0x4\n"
+ " mov r3, r8\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._28 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r4, #0x1]\n"
+ " mov r0, #0x9\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r4]\n"
+ "._28:\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r5\n"
+ " cmp r0, #0\n"
+ " beq ._29 @cond_branch\n"
+ " ldrb r0, [r4, #0x1]\n"
+ " mov r1, #0x8\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x1]\n"
+ "._29:\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._31:\n"
+ " .align 2, 0\n"
+ "._30:\n"
+ " .word gUnknown_020297ED\n"
+ "\n"
+ );
+}
+#else
void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
{
u8 r6 = gPlayerAvatar.tileTransitionState;
@@ -163,7 +387,222 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
else if (heldKeys & DPAD_RIGHT)
input->dpadDirection = DIR_EAST;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+int sub_8068024(struct FieldInput *input)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r5, r0, #0\n"
+ " bl player_get_direction_lower_nybble\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r4, sp\n"
+ " mov r0, sp\n"
+ " bl player_get_pos_to_and_height\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x2\n"
+ " ldsh r1, [r4, r2]\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._33 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " bl dive_warp\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._33 @cond_branch\n"
+ " b ._63\n"
+ "._33:\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " mov r6, #0x2\n"
+ " add r0, r6, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._39 @cond_branch\n"
+ " bl CheckTrainers\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._36 @cond_branch\n"
+ " b ._63\n"
+ "._36:\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " add r0, r6, #0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._39 @cond_branch\n"
+ " bl mapheader_run_first_tag2_script_list_match\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._39 @cond_branch\n"
+ " b ._63\n"
+ "._39:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._42 @cond_branch\n"
+ " bl sub_80687A4\n"
+ " cmp r0, #0x1\n"
+ " bne ._42 @cond_branch\n"
+ " b ._63\n"
+ "._42:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._44 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl IncrementGameStat\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " add r2, r7, #0\n"
+ " bl sub_80687E4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._44:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._46 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl is_it_battle_time_3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._46:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._49 @cond_branch\n"
+ " ldrb r0, [r5, #0x2]\n"
+ " cmp r0, r7\n"
+ " bne ._49 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " add r2, r7, #0\n"
+ " bl mapheader_run_first_tag2_script_list_match_conditionally\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._49:\n"
+ " mov r4, sp\n"
+ " mov r0, sp\n"
+ " bl player_get_next_pos_and_height\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x2\n"
+ " ldsh r1, [r4, r2]\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._51 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " add r2, r7, #0\n"
+ " bl sub_80681F0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._51:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._54 @cond_branch\n"
+ " ldrb r0, [r5, #0x2]\n"
+ " cmp r0, r7\n"
+ " bne ._54 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " add r2, r7, #0\n"
+ " bl map_warp_consider_2_to_inside\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._54:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._56 @cond_branch\n"
+ " bl sub_8068770\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._56:\n"
+ " ldrb r1, [r5]\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._58 @cond_branch\n"
+ " mov r0, #0x6\n"
+ " bl PlaySE\n"
+ " bl sub_8071310\n"
+ " b ._63\n"
+ "._58:\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._60 @cond_branch\n"
+ " bl sub_80A6D1C\n"
+ " cmp r0, #0x1\n"
+ " beq ._63 @cond_branch\n"
+ "._60:\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._62 @cond_branch\n"
+ " bl debug_sub_80888D8\n"
+ " b ._63\n"
+ "._62:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._64 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._65\n"
+ "._64:\n"
+ " mov r0, #0x6\n"
+ " bl PlaySE\n"
+ " bl DebugMenu_8077048\n"
+ "._63:\n"
+ " mov r0, #0x1\n"
+ "._65:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+#else
int sub_8068024(struct FieldInput *input)
{
struct MapPosition position;
@@ -213,6 +652,7 @@ int sub_8068024(struct FieldInput *input)
return TRUE;
return FALSE;
}
+#endif
static void player_get_pos_to_and_height(struct MapPosition *position)
{
@@ -232,7 +672,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position)
position->height = 0;
}
-static u16 cur_mapdata_block_role_at_player_pos(int unused)
+/*static*/ u16 cur_mapdata_block_role_at_player_pos(int unused)
{
s16 x, y;
@@ -240,7 +680,7 @@ static u16 cur_mapdata_block_role_at_player_pos(int unused)
return MapGridGetMetatileBehaviorAt(x, y);
}
-static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
+/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
{
u8 *script = TryGetScriptOnPressingA(position, b, c);
@@ -435,7 +875,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
return NULL;
}
-static bool32 sub_8068770(void)
+/*static*/ bool32 sub_8068770(void)
{
if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2)
{
@@ -445,7 +885,7 @@ static bool32 sub_8068770(void)
return FALSE;
}
-static bool32 sub_80687A4(void)
+/*static*/ bool32 sub_80687A4(void)
{
if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1)
{
@@ -455,7 +895,7 @@ static bool32 sub_80687A4(void)
return FALSE;
}
-static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused)
+/*static*/ bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused)
{
if (mapheader_trigger_activate_at__run_now(position) == TRUE)
return TRUE;
@@ -575,7 +1015,7 @@ void prev_quest_postbuffer_cursor_backup_reset(void)
gUnknown_0202E8C0 = 0;
}
-static bool8 is_it_battle_time_3(u16 a)
+/*static*/ bool8 is_it_battle_time_3(u16 a)
{
if (gUnknown_0202E8C0 < 4)
{
@@ -596,7 +1036,7 @@ static bool8 is_it_battle_time_3(u16 a)
}
}
-static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c)
+/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c)
{
s8 r6 = map_warp_check_packed(&gMapHeader, position);
@@ -704,7 +1144,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi
}
}
-static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c)
+/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c)
{
s8 r4;
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c
index 77b4c8b5c..1c0cefacb 100644
--- a/src/field/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -1917,6 +1917,40 @@ void npc_clear_ids_and_state(struct MapObject *mapObj)
mapObj->mapobj_unk_1C = 0xFF;
}
+#if DEBUG
+__attribute__((naked))
+void npcs_clear_ids_and_state()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._2\n"
+ "._1:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " bl npc_clear_ids_and_state\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0xf\n"
+ " bls ._1 @cond_branch\n"
+ " ldr r1, ._2 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._3:\n"
+ " .align 2, 0\n"
+ "._2:\n"
+ " .word gMapObjects\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
void npcs_clear_ids_and_state(void)
{
u8 i;
@@ -1924,6 +1958,7 @@ void npcs_clear_ids_and_state(void)
for (i = 0; i < 16; i++)
npc_clear_ids_and_state(&gMapObjects[i]);
}
+#endif
void sub_805AA98(void)
{
@@ -2017,6 +2052,176 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
return 16;
}
+#if DEBUG
+__attribute__((naked))
+u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r5, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r7, r2, #0x18\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r6, #0\n"
+ " add r2, r7, #0\n"
+ " mov r3, sp\n"
+ " bl GetAvailableFieldObjectSlot\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._35 @cond_branch\n"
+ " mov r0, #0x10\n"
+ " b ._36\n"
+ "._35:\n"
+ " mov r0, sp\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._40\n"
+ " add r4, r0, r1\n"
+ " add r0, r4, #0\n"
+ " bl npc_clear_ids_and_state\n"
+ " ldrh r3, [r5, #0x4]\n"
+ " add r3, r3, #0x7\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " ldrh r2, [r5, #0x6]\n"
+ " add r2, r2, #0x7\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " mov r1, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " strb r0, [r4, #0x5]\n"
+ " ldrb r0, [r5, #0x9]\n"
+ " strb r0, [r4, #0x6]\n"
+ " ldrb r0, [r5]\n"
+ " strb r0, [r4, #0x8]\n"
+ " strb r6, [r4, #0x9]\n"
+ " strb r7, [r4, #0xa]\n"
+ " strh r3, [r4, #0xc]\n"
+ " strh r2, [r4, #0xe]\n"
+ " strh r3, [r4, #0x10]\n"
+ " strh r2, [r4, #0x12]\n"
+ " strh r3, [r4, #0x14]\n"
+ " strh r2, [r4, #0x16]\n"
+ " ldrb r0, [r5, #0x8]\n"
+ " mov r7, #0xf\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " ldrb r2, [r4, #0xb]\n"
+ " mov r0, #0x10\n"
+ " neg r0, r0\n"
+ " mov r8, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0xb]\n"
+ " ldrb r1, [r5, #0x8]\n"
+ " lsl r1, r1, #0x4\n"
+ " and r0, r0, r7\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0xb]\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " lsl r1, r1, #0x1c\n"
+ " mov r0, #0xf\n"
+ " mov r9, r0\n"
+ " lsr r1, r1, #0x1c\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " mov r0, r8\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " lsr r1, r1, #0x4\n"
+ " lsl r1, r1, #0x4\n"
+ " and r0, r0, r7\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ " ldrh r0, [r5, #0xc]\n"
+ " strb r0, [r4, #0x7]\n"
+ " ldrh r0, [r5, #0xe]\n"
+ " strb r0, [r4, #0x1d]\n"
+ " ldr r1, ._40 + 4\n"
+ " ldrb r0, [r5, #0x9]\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x20\n"
+ " strb r1, [r0]\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl FieldObjectSetDirection\n"
+ " add r0, r4, #0\n"
+ " bl FieldObjectHandleDynamicGraphicsId\n"
+ " ldr r1, ._40 + 8\n"
+ " ldrb r0, [r4, #0x6]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._39 @cond_branch\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._38 @cond_branch\n"
+ " lsl r0, r2, #0x1c\n"
+ " lsr r0, r0, #0x1c\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, r9\n"
+ " and r0, r0, r1\n"
+ " mov r1, r8\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r4, #0x19]\n"
+ "._38:\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " mov r0, #0xf0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._39 @cond_branch\n"
+ " lsr r1, r2, #0x4\n"
+ " add r1, r1, #0x1\n"
+ " lsl r1, r1, #0x4\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ "._39:\n"
+ " ldr r1, ._40 + 12\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, sp\n"
+ " ldrb r0, [r0]\n"
+ "._36:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._41:\n"
+ " .align 2, 0\n"
+ "._40:\n"
+ " .word gMapObjects\n"
+ " .word gUnknown_0836DC09\n"
+ " .word gUnknown_0836DBBC\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
#ifdef NONMATCHING
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
@@ -2227,6 +2432,7 @@ _0805ADD8: .4byte gUnknown_0836DBBC\n\
.syntax divided\n");
}
#endif
+#endif
u8 sub_805ADDC(u8 localId)
{
@@ -2266,11 +2472,38 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d)
return 0;
}
+#if DEBUG
+__attribute__((naked))
+void RemoveFieldObject(struct MapObject *mapObject)
+{
+ asm(
+ " push {lr}\n"
+ " ldrb r2, [r0]\n"
+ " mov r1, #0x2\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl RemoveFieldObjectInternal\n"
+ " ldr r1, ._72\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._73:\n"
+ " .align 2, 0\n"
+ "._72:\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
void RemoveFieldObject(struct MapObject *mapObject)
{
mapObject->active = FALSE;
RemoveFieldObjectInternal(mapObject);
}
+#endif
void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
@@ -2303,6 +2536,226 @@ void npc_hide_all_but_player(void)
}
}
+#if DEBUG
+__attribute__((naked))
+u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add r7, r1, #0\n"
+ " add r1, r2, #0\n"
+ " add r2, r3, #0\n"
+ " ldr r3, [sp, #0x20]\n"
+ " ldr r4, [sp, #0x24]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " mov r9, r3\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " mov sl, r4\n"
+ " bl InitFieldObjectStateFromTemplate\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " cmp r0, #0x10\n"
+ " bne ._83 @cond_branch\n"
+ " mov r0, #0x10\n"
+ " b ._92\n"
+ "._83:\n"
+ " mov r0, r8\n"
+ " lsl r4, r0, #0x3\n"
+ " add r0, r4, r0\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._87\n"
+ " add r5, r0, r1\n"
+ " ldrb r0, [r5, #0x5]\n"
+ " bl GetFieldObjectGraphicsInfo\n"
+ " add r6, r0, #0\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._85 @cond_branch\n"
+ " ldrh r0, [r6, #0x2]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " bl npc_load_two_palettes__no_record\n"
+ " b ._89\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMapObjects\n"
+ "._85:\n"
+ " cmp r0, #0xa\n"
+ " bne ._89 @cond_branch\n"
+ " ldrh r0, [r6, #0x2]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " bl npc_load_two_palettes__and_record\n"
+ "._89:\n"
+ " ldrb r0, [r5, #0x6]\n"
+ " cmp r0, #0x4c\n"
+ " bne ._90 @cond_branch\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " mov r1, #0x20\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r5, #0x1]\n"
+ "._90:\n"
+ " ldr r1, ._93\n"
+ " add r0, r1, #0\n"
+ " strh r0, [r7, #0x2]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x40\n"
+ " bne ._91 @cond_branch\n"
+ " ldr r1, ._93 + 4\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._93 + 8\n"
+ " mov r2, r8\n"
+ " add r1, r4, r2\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r1]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x10\n"
+ " b ._92\n"
+ "._94:\n"
+ " .align 2, 0\n"
+ "._93:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ " .word gMapObjects\n"
+ "._91:\n"
+ " lsl r0, r7, #0x4\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._96\n"
+ " add r4, r0, r1\n"
+ " mov r1, r9\n"
+ " lsl r0, r1, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " ldrh r2, [r5, #0x10]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " mov r2, sl\n"
+ " lsl r1, r2, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " ldrh r2, [r5, #0x12]\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x20\n"
+ " add r3, r4, #0\n"
+ " add r3, r3, #0x22\n"
+ " bl sub_8060388\n"
+ " ldrh r0, [r6, #0x8]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x11\n"
+ " neg r0, r0\n"
+ " add r1, r4, #0\n"
+ " add r1, r1, #0x28\n"
+ " strb r0, [r1]\n"
+ " ldrh r0, [r6, #0xa]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x11\n"
+ " neg r0, r0\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x29\n"
+ " strb r0, [r2]\n"
+ " ldrh r0, [r4, #0x20]\n"
+ " add r0, r0, #0x8\n"
+ " strh r0, [r4, #0x20]\n"
+ " ldrh r1, [r4, #0x22]\n"
+ " add r1, r1, #0x10\n"
+ " mov r0, #0x0\n"
+ " ldsb r0, [r2, r0]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r4, #0x22]\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x18\n"
+ " ldrb r2, [r4, #0x5]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x5]\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x3e\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " mov r0, r8\n"
+ " strh r0, [r4, #0x2e]\n"
+ " strb r7, [r5, #0x4]\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1f\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r5, #0x1]\n"
+ " mov r0, #0x11\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r5, #0x1]\n"
+ " lsl r0, r0, #0x1b\n"
+ " cmp r0, #0\n"
+ " blt ._95 @cond_branch\n"
+ " ldrb r0, [r5, #0x18]\n"
+ " lsl r0, r0, #0x1c\n"
+ " lsr r0, r0, #0x1c\n"
+ " bl FieldObjectDirectionToImageAnimId\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl StartSpriteAnim\n"
+ "._95:\n"
+ " ldrb r0, [r5, #0xb]\n"
+ " lsr r0, r0, #0x4\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl SetObjectSubpriorityByZCoord\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " bl sub_80634D0\n"
+ " mov r0, r8\n"
+ "._92:\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._97:\n"
+ " .align 2, 0\n"
+ "._96:\n"
+ " .word gSprites\n"
+ "\n"
+ );
+}
+#else
u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
{
u8 mapObjectId;
@@ -2352,6 +2805,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
sub_80634D0(mapObject, sprite);
return mapObjectId;
}
+#endif
u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
{
@@ -2574,6 +3028,66 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
void sub_805B75C(u8, s16, s16);
+#if DEBUG
+__attribute__((naked))
+void sub_805B710(u16 u161, u16 u162)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " ldr r6, ._153\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r6]\n"
+ " bl ClearPlayerAvatarInfo\n"
+ " mov r7, #0x0\n"
+ " ldr r0, ._153 + 4\n"
+ " mov r8, r0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsl r5, r5, #0x10\n"
+ "._152:\n"
+ " lsl r0, r7, #0x3\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x1f\n"
+ " cmp r0, #0\n"
+ " beq ._151 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " asr r1, r4, #0x10\n"
+ " asr r2, r5, #0x10\n"
+ " bl sub_805B75C\n"
+ " ldrb r0, [r6]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r6]\n"
+ "._151:\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0xf\n"
+ " bls ._152 @cond_branch\n"
+ " bl sub_805AAB0\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._154:\n"
+ " .align 2, 0\n"
+ "._153:\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ " .word gMapObjects\n"
+ "\n"
+ );
+}
+#else
void sub_805B710(u16 a, u16 b)
{
u8 i;
@@ -2586,6 +3100,7 @@ void sub_805B710(u16 a, u16 b)
}
sub_805AAB0();
}
+#endif
extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
extern void sub_805B914(struct MapObject *);
diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c
index 9a29e2e92..747edf816 100644
--- a/src/field/field_player_avatar.c
+++ b/src/field/field_player_avatar.c
@@ -32,9 +32,9 @@ static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static bool8 TryDoMetatileBehaviorForcedMovement(void);
-static u8 GetForcedMovementByMetatileBehavior(void);
+/*static*/ u8 GetForcedMovementByMetatileBehavior(void);
static void MovePlayerNotOnBike(u8 a, u16 b);
-static u8 CheckMovementInputNotOnBike(u8 a);
+/*static*/ u8 CheckMovementInputNotOnBike(u8 a);
static u8 CheckForPlayerAvatarCollision(u8 a);
static u8 sub_8058EF0(s16 a, s16 b, u8 c);
static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c);
@@ -260,12 +260,59 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
}
+#if DEBUG
+__attribute__((naked))
+u8 TryDoMetatileBehaviorForcedMovement()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._27\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " ldr r0, ._27 + 4\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._26\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gMain\n"
+ "._25:\n"
+ " ldr r4, ._29\n"
+ " bl GetForcedMovementByMetatileBehavior\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x16\n"
+ " add r0, r0, r4\n"
+ " ldr r0, [r0]\n"
+ " bl gScriptFuncs_End+0x3cf4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._26:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gUnknown_0830FBA0\n"
+ "\n"
+ );
+}
+#else
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
}
+#endif
-static u8 GetForcedMovementByMetatileBehavior(void)
+/*static*/ u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
@@ -436,12 +483,57 @@ bool8 ForcedMovement_MuddySlope(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void MovePlayerNotOnBike(u8 u81, u16 u161)
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " add r5, r2, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r6, r1, #0x10\n"
+ " ldr r0, ._84\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._82 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " bl debug_sub_805F2B0\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._83 @cond_branch\n"
+ "._82:\n"
+ " ldr r4, ._84 + 4\n"
+ " add r0, r5, #0\n"
+ " bl CheckMovementInputNotOnBike\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x16\n"
+ " add r0, r0, r4\n"
+ " ldr r2, [r0]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl gScriptFuncs_End+0x3cfc\n"
+ "._83:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._85:\n"
+ " .align 2, 0\n"
+ "._84:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gUnknown_0830FBEC\n"
+ "\n"
+ );
+}
+#else
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
+#endif
-static u8 CheckMovementInputNotOnBike(u8 direction)
+/*static*/ u8 CheckMovementInputNotOnBike(u8 direction)
{
if (direction == DIR_NONE)
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 0a841eed1..1b53df6be 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -250,6 +250,87 @@ void SetupMauvilleOldMan(void)
sub_80F83D0();
}
+#ifdef DEBUG
+__attribute__((naked))
+void debug_sub_810B32C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x4\n"
+ " bhi ._37 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._23\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._24:\n"
+ " .align 2, 0\n"
+ "._23:\n"
+ " .word ._22\n"
+ "._22:\n"
+ " .word ._25\n"
+ " .word ._26\n"
+ " .word ._27\n"
+ " .word ._28\n"
+ " .word ._29\n"
+ "._25:\n"
+ " bl sub_80F7A34\n"
+ " b ._37\n"
+ "._26:\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._34\n"
+ "._31:\n"
+ " mov r0, sp\n"
+ " add r1, r0, r2\n"
+ " add r0, r2, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x7\n"
+ " bls ._31 @cond_branch\n"
+ " bl sub_80F7A6C\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._34\n"
+ "._32:\n"
+ " add r1, r2, r3\n"
+ " mov r4, sp\n"
+ " add r0, r4, r2\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x7\n"
+ " bls ._32 @cond_branch\n"
+ " b ._37\n"
+ "._35:\n"
+ " .align 2, 0\n"
+ "._34:\n"
+ " .word gSaveBlock1+0x2d8c\n"
+ "._27:\n"
+ " bl sub_80F7A98\n"
+ " b ._37\n"
+ "._28:\n"
+ " bl sub_80F7A7C\n"
+ " b ._37\n"
+ "._29:\n"
+ " bl sub_80F7A88\n"
+ "._37:\n"
+ " bl sub_80F83D0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
static u8 GetCurrentMauvilleOldMan(void)
{
struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 86b0a5dac..8346ce3f9 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -25,6 +25,7 @@
#include "link.h"
#include "load_save.h"
#include "main.h"
+#include "m4a.h"
#include "constants/maps.h"
#include "map_name_popup.h"
#include "menu.h"
@@ -62,6 +63,7 @@ struct UnkTVStruct
u32 tv_field_4;
};
+extern u8 gUnknown_020297ED;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -1106,6 +1108,68 @@ u8 sav1_map_get_battletype(void)
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
}
+#if DEBUG
+
+void debug_sub_8076B68(void);
+
+void debug_sub_80589D8(void);
+
+void debug_sub_8058A50(void);
+
+void CB2_InitTestMenu(void)
+{
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ debug_sub_8076B68();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ REG_IE |= 1;
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP;
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8058A50);
+ m4aSongNumStart(0x19D);
+ SetMainCallback2(debug_sub_80589D8);
+}
+
+void debug_sub_80589D8(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void debug_sub_80589F4(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ SetVBlankCallback(NULL);
+
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void debug_sub_8058A50(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+#endif
+
void ResetSafariZoneFlag_(void)
{
ResetSafariZoneFlag();
@@ -1210,6 +1274,33 @@ void CB2_NewGame(void)
SetMainCallback2(c2_overworld);
}
+#if DEBUG
+
+extern void (*gFieldCallback)(void);
+
+void debug_sub_8058C00(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ player_avatar_init_params_reset();
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+
+ if (gMain.heldKeys & R_BUTTON)
+ gFieldCallback = ExecuteTruckSequence;
+ else
+ gFieldCallback = sub_8080B60;
+
+ do_load_map_stuff_loop(&gMain.state);
+ SetFieldVBlankCallback();
+ set_callback1(c1_overworld);
+ SetMainCallback2(c2_overworld);
+}
+
+#endif
+
void CB2_WhiteOut(void)
{
u8 val;
@@ -1365,6 +1456,10 @@ void CB2_ContinueSavedGame(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
+#if DEBUG
+ if (gMain.heldKeys & R_BUTTON)
+ gUnknown_020297ED = TRUE;
+#endif
ResetSafariZoneFlag_();
LoadSaveblockMapHeader();
LoadSaveblockMapObjScripts();
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 7d243f569..053368a0e 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -4022,6 +4022,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func)
CreateTask(Task_TeamMonTMMove, 5);
}
+#ifdef DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
@@ -4036,7 +4040,11 @@ void Task_TeamMonTMMove(u8 taskId)
}
else
{
- if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ if (
+#ifdef DEBUG
+ !gUnknown_020297ED &&
+#endif
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -5514,9 +5522,13 @@ _08070F8A:\n\
}
#endif // NONMATCHING
+
+// Maybe this goes in start_menu.c
+#if !DEBUG
void unref_sub_8070F90(void)
{
FlagSet(FLAG_SYS_POKEDEX_GET);
FlagSet(FLAG_SYS_POKEMON_GET);
FlagSet(FLAG_SYS_POKENAV_GET);
}
+#endif
diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c
index 7e8bdc2ce..73fa53d97 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -95,7 +95,8 @@ static const u8 *gUnknown_03000758;
#define GFX_TAG_POKEBLOCK_CASE 14800
-const s8 gPokeblockFlavorCompatibilityTable[] = {
+const s8 gPokeblockFlavorCompatibilityTable[] =
+{
// Cool, Beauty, Cute, Smart, Tough
0, 0, 0, 0, 0, // Hardy
1, 0, 0, 0, -1, // Lonely
@@ -124,14 +125,16 @@ const s8 gPokeblockFlavorCompatibilityTable[] = {
0, 0, 0, 0, 0 // Quirky
};
-void (*const gUnknown_083F7EA8[])(void) = {
+void (*const gUnknown_083F7EA8[])(void) =
+{
sub_80A5B40,
c2_exit_to_overworld_2_switch,
sub_802E424,
c2_exit_to_overworld_2_switch
};
-const u8 *const gPokeblockNames[] = {
+const u8 *const gPokeblockNames[] =
+{
NULL,
ContestStatsText_RedPokeBlock,
ContestStatsText_BluePokeBlock,
@@ -149,7 +152,8 @@ const u8 *const gPokeblockNames[] = {
ContestStatsText_GoldPokeBlock
};
-const struct MenuAction2 gUnknown_083F7EF4[] = {
+const struct MenuAction2 gUnknown_083F7EF4[] =
+{
{OtherText_Use, sub_810C508},
{OtherText_Toss, sub_810C5C0},
{gOtherText_CancelNoTerminator, sub_810C748},
@@ -165,21 +169,25 @@ const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668};
const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f};
-const struct OamData gOamData_83F7F34 = {
+const struct OamData gOamData_83F7F34 =
+{
.size = 3,
.priority = 2
};
-const union AnimCmd gSpriteAnim_83F7F3C[] = {
+const union AnimCmd gSpriteAnim_83F7F3C[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_83F7F44[] = {
+const union AnimCmd *const gSpriteAnimTable_83F7F44[] =
+{
gSpriteAnim_83F7F3C
};
-const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
+const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] =
+{
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
AFFINEANIMCMD_FRAME(0, 0, -2, 4),
@@ -187,22 +195,26 @@ const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
AFFINEANIMCMD_END
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = {
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] =
+{
gSpriteAffineAnim_83F7F48
};
-const struct CompressedSpriteSheet gUnknown_083F7F74 = {
+const struct CompressedSpriteSheet gUnknown_083F7F74 =
+{
gMenuPokeblockDevice_Gfx,
0x800,
GFX_TAG_POKEBLOCK_CASE
};
-const struct CompressedSpritePalette gUnknown_083F7F7C = {
+const struct CompressedSpritePalette gUnknown_083F7F7C =
+{
gMenuPokeblockDevice_Pal,
GFX_TAG_POKEBLOCK_CASE
};
-const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
+const struct SpriteTemplate gSpriteTemplate_83F7F84 =
+{
GFX_TAG_POKEBLOCK_CASE,
GFX_TAG_POKEBLOCK_CASE,
&gOamData_83F7F34,
@@ -212,7 +224,8 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
SpriteCallbackDummy
};
-const struct Pokeblock gUnknown_083F7F9C[] = {
+const struct Pokeblock gUnknown_083F7F9C[] =
+{
{ PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20},
{ PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20},
{ PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20},
@@ -432,14 +445,13 @@ void OpenPokeblockCaseOnFeeder(void)
SetMainCallback2(sub_810B96C);
}
-#ifdef DEBUG
+#if DEBUG
void debug_sub_8120F98(void)
{
u8 i;
- for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++)
- {
+
+ for (i = 0; i < 40 && gUnknown_083F7F9C[i].color != 0; i++)
gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i];
- }
}
#endif
diff --git a/src/field/roamer.c b/src/field/roamer.c
index 2eb26ef9d..16a42e9f1 100644
--- a/src/field/roamer.c
+++ b/src/field/roamer.c
@@ -1,7 +1,9 @@
#include "global.h"
+#include "debug.h"
#include "roamer.h"
#include "pokemon.h"
#include "random.h"
+#include "region_map.h"
#include "constants/species.h"
#ifdef SAPPHIRE
@@ -224,3 +226,20 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
*mapGroup = sRoamerLocation[MAP_GRP];
*mapNum = sRoamerLocation[MAP_NUM];
}
+
+#ifdef DEBUG
+void debug_sub_814A714(void)
+{
+ if (gSaveBlock1.location.mapGroup == 0)
+ {
+ CreateInitialRoamerMon();
+ sRoamerLocation[0] = 0;
+ sRoamerLocation[1] = gSaveBlock1.location.mapNum;
+ }
+}
+
+void debug_sub_814A73C(u8* str)
+{
+ GetMapSectionName(str, sRoamerLocation[1], 0);
+}
+#endif
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 9ff3a037c..e231f686d 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -17,7 +17,8 @@
#include "menu.h"
#include "ewram.h"
-struct UnkStruct1 {
+struct UnkStruct1
+{
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x02*/ s16 unk02;
@@ -2854,7 +2855,13 @@ static void sub_8104C5C(void)
static void LoadSlotMachineWheelOverlay(void);
-static void sub_8104CAC(u8 arg0) {
+#ifdef DEBUG
+// should be static
+__attribute__((section(".bss"))) u8 unk_debug_bss_1[0xC] = { 0 };
+#endif
+
+static void sub_8104CAC(u8 arg0)
+{
u8 i;
struct Task *task;
@@ -2875,9 +2882,7 @@ static void sub_8104CAC(u8 arg0) {
#ifdef GERMAN
if (arg0 == 5 && i <= 2)
- {
gSprites[spriteId].invisible = TRUE;
- }
#endif
}
}
@@ -3966,7 +3971,8 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
vram[16 * 32 + 1 + arg0] = arg4;
}
-static void sub_81065DC(void) {
+static void sub_81065DC(void)
+{
s16 y, x;
u16 *screen;
@@ -3982,7 +3988,1226 @@ static void sub_81065DC(void) {
}
}
-static const u8 sReelSymbols[][21] = {
+#if DEBUG
+__attribute__((naked))
+void debug_sub_811B1C4()
+{
+ asm(
+ " ldr r1, ._1\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x2\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._1 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x2\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B1EC()
+{
+ asm(
+ " ldr r2, ._3\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldr r2, ._3 + 4\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " neg r0, r0\n"
+ " lsr r0, r0, #0x1f\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B210()
+{
+ asm(
+ " ldr r1, ._5\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x4\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._5 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x4\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._6:\n"
+ " .align 2, 0\n"
+ "._5:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B238()
+{
+ asm(
+ " ldr r1, ._7\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x8\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._7 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x8\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B260()
+{
+ asm(
+ " ldr r1, ._9\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x10\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._9 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x10\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B288()
+{
+ asm(
+ " ldr r1, ._11\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x40\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._11 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x40\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2B0()
+{
+ asm(
+ " ldr r1, ._13\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x80\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, ._13 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x80\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2D8()
+{
+ asm(
+ " ldr r0, ._15\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x20\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word unk_debug_bss_1+0x3\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2E8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r0, ._17\n"
+ " ldrb r1, [r0, #0x1]\n"
+ " add r1, r1, #0x1\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " add sp, sp, #0x4\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._18:\n"
+ " .align 2, 0\n"
+ "._17:\n"
+ " .word +0x2000000\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B310()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r0, ._21\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 12\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 28\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 32\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 36\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 40\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 44\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 48\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 52\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 56\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 60\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 64\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 68\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._21 + 72\n"
+ " ldrb r0, [r0, #0x3]\n"
+ " cmp r0, #0\n"
+ " bne ._19 @cond_branch\n"
+ " ldr r0, ._21 + 76\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " b ._20\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word Str_841B1C4\n"
+ " .word Str_841B1CB\n"
+ " .word Str_841B1D4\n"
+ " .word Str_841B1DB\n"
+ " .word Str_841B1E2\n"
+ " .word Str_841B1E8\n"
+ " .word Str_841B1F3\n"
+ " .word Str_841B202\n"
+ " .word Str_841B24C\n"
+ " .word Str_841B211\n"
+ " .word Str_841B219\n"
+ " .word Str_841B220\n"
+ " .word Str_841B227\n"
+ " .word Str_841B22E\n"
+ " .word Str_841B235\n"
+ " .word Str_841B23B\n"
+ " .word Str_841B23F\n"
+ " .word Str_841B243\n"
+ " .word +0x2000000\n"
+ " .word Str_841B246\n"
+ "._19:\n"
+ " ldr r0, ._30\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ "._20:\n"
+ " ldr r4, ._30 + 4\n"
+ " ldr r1, [r4, #0x68]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r1, [r4, #0x6c]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " mov r0, #0x10\n"
+ " ldsh r1, [r4, r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r1, [r4, #0x70]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " ldr r1, [r4, #0x74]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x5\n"
+ " bl MenuPrint\n"
+ " ldr r1, [r4, #0x78]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x7\n"
+ " bl MenuPrint\n"
+ " ldr r1, [r4, #0x7c]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x9\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x80\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xb\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x84\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xd\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x88\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8c\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._30 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._23 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " cmp r0, #0x8\n"
+ " beq ._24 @cond_branch\n"
+ " cmp r0, #0x8\n"
+ " bgt ._25 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq ._26 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " bgt ._27 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._28 @cond_branch\n"
+ " b ._45\n"
+ "._31:\n"
+ " .align 2, 0\n"
+ "._30:\n"
+ " .word Str_841B249\n"
+ " .word +0x2000000\n"
+ " .word unk_debug_bss_1\n"
+ "._27:\n"
+ " cmp r0, #0x4\n"
+ " beq ._32 @cond_branch\n"
+ " b ._45\n"
+ "._25:\n"
+ " cmp r0, #0x40\n"
+ " beq ._34 @cond_branch\n"
+ " cmp r0, #0x40\n"
+ " bgt ._35 @cond_branch\n"
+ " cmp r0, #0x10\n"
+ " beq ._36 @cond_branch\n"
+ " b ._45\n"
+ "._35:\n"
+ " cmp r0, #0x80\n"
+ " beq ._38 @cond_branch\n"
+ " b ._45\n"
+ "._26:\n"
+ " mov r2, #0x3\n"
+ " b ._45\n"
+ "._28:\n"
+ " mov r2, #0x5\n"
+ " b ._45\n"
+ "._32:\n"
+ " mov r2, #0x7\n"
+ " b ._45\n"
+ "._24:\n"
+ " mov r2, #0x9\n"
+ " b ._45\n"
+ "._36:\n"
+ " mov r2, #0xb\n"
+ " b ._45\n"
+ "._34:\n"
+ " mov r2, #0xd\n"
+ " b ._45\n"
+ "._38:\n"
+ " mov r2, #0xf\n"
+ "._45:\n"
+ " ldr r0, ._46\n"
+ " mov r1, #0x17\n"
+ " bl MenuPrint\n"
+ "._23:\n"
+ " bl debug_sub_811B2E8\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._47:\n"
+ " .align 2, 0\n"
+ "._46:\n"
+ " .word Str_841B26D\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B5B4()
+{
+ asm(
+ " push {lr}\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r2]\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " ldr r1, ._49\n"
+ " cmp r0, r1\n"
+ " ble ._48 @cond_branch\n"
+ " str r1, [r2]\n"
+ "._48:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._50:\n"
+ " .align 2, 0\n"
+ "._49:\n"
+ " .word 0x270f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B5D0()
+{
+ asm(
+ " ldr r0, ._51\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._51 + 4\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._51 + 8\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._51 + 12\n"
+ " strb r1, [r0]\n"
+ " ldr r2, ._51 + 16\n"
+ " mov r0, #0x0\n"
+ " str r0, [r2, #0x68]\n"
+ " str r0, [r2, #0x6c]\n"
+ " str r0, [r2, #0x70]\n"
+ " str r0, [r2, #0x74]\n"
+ " str r0, [r2, #0x78]\n"
+ " str r0, [r2, #0x7c]\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0x80\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ "._52:\n"
+ " .align 2, 0\n"
+ "._51:\n"
+ " .word unk_debug_bss_1\n"
+ " .word unk_debug_bss_1+0x2\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word unk_debug_bss_1+0x4\n"
+ " .word +0x2000000\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B620()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._53\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._54:\n"
+ " .align 2, 0\n"
+ "._53:\n"
+ " .word debug_sub_811B654+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B634()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._57\n"
+ " bl FindTaskIdByFunc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xff\n"
+ " beq ._55 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._56\n"
+ "._58:\n"
+ " .align 2, 0\n"
+ "._57:\n"
+ " .word debug_sub_811B654+1\n"
+ "._55:\n"
+ " mov r0, #0x1\n"
+ "._56:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B654()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._63\n"
+ " add r5, r0, r1\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r5, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._59 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._60 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._61 @cond_branch\n"
+ " b ._116\n"
+ "._64:\n"
+ " .align 2, 0\n"
+ "._63:\n"
+ " .word gTasks\n"
+ "._60:\n"
+ " cmp r1, #0x2\n"
+ " bne ._65 @cond_branch\n"
+ " b ._66\n"
+ "._65:\n"
+ " cmp r1, #0x3\n"
+ " bne ._67 @cond_branch\n"
+ " b ._68\n"
+ "._67:\n"
+ " b ._116\n"
+ "._61:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " bl debug_sub_811B310\n"
+ " ldrh r0, [r5, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5, #0x8]\n"
+ " b ._116\n"
+ "._59:\n"
+ " ldr r7, ._76\n"
+ " ldrh r2, [r7, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._71 @cond_branch\n"
+ " b ._94\n"
+ "._71:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0\n"
+ " beq ._73 @cond_branch\n"
+ " ldr r1, ._76 + 4\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x1]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bge ._79 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1, #0x1]\n"
+ " b ._79\n"
+ "._77:\n"
+ " .align 2, 0\n"
+ "._76:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ "._73:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._78 @cond_branch\n"
+ " ldr r1, ._81\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0x1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bls ._79 @cond_branch\n"
+ " strb r3, [r1, #0x1]\n"
+ "._79:\n"
+ " bl debug_sub_811B2E8\n"
+ " b ._116\n"
+ "._82:\n"
+ " .align 2, 0\n"
+ "._81:\n"
+ " .word +0x2000000\n"
+ "._78:\n"
+ " and r1, r1, r2\n"
+ " lsl r0, r1, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0\n"
+ " beq ._83 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " strh r0, [r5, #0x8]\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x5\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._85\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._85 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl MenuPrint\n"
+ " b ._116\n"
+ "._86:\n"
+ " .align 2, 0\n"
+ "._85:\n"
+ " .word Str_841B25C\n"
+ " .word Str_841B264\n"
+ "._83:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._87 @cond_branch\n"
+ " ldr r0, ._91\n"
+ " strb r4, [r0]\n"
+ " ldr r0, ._91 + 4\n"
+ " strb r4, [r0]\n"
+ " bl MenuZeroFillScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x13\n"
+ " bl MenuDrawTextWindow\n"
+ " ldr r0, ._91 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl MenuPrint\n"
+ " ldr r3, ._91 + 12\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x8\n"
+ " bl PrintMenuItems\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldrh r0, [r5, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5, #0x8]\n"
+ "._87:\n"
+ " ldrh r1, [r7, #0x2e]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._88 @cond_branch\n"
+ " b ._116\n"
+ "._88:\n"
+ " ldr r1, ._91 + 16\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._94\n"
+ "._92:\n"
+ " .align 2, 0\n"
+ "._91:\n"
+ " .word unk_debug_bss_1+0x2\n"
+ " .word unk_debug_bss_1+0x3\n"
+ " .word Str_841B254\n"
+ " .word _841B270\n"
+ " .word unk_debug_bss_1+0x4\n"
+ "._66:\n"
+ " bl ProcessMenuInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r2, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r2, r0\n"
+ " beq ._116 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " beq ._94 @cond_branch\n"
+ " ldr r1, ._96\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._96 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " bl _call_via_r0\n"
+ "._94:\n"
+ " bl MenuZeroFillScreen\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ " b ._116\n"
+ "._97:\n"
+ " .align 2, 0\n"
+ "._96:\n"
+ " .word unk_debug_bss_1+0x2\n"
+ " .word _841B270\n"
+ "._68:\n"
+ " ldr r2, ._100\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._98 @cond_branch\n"
+ " ldr r2, ._100 + 4\n"
+ " ldrh r0, [r2, #0xc]\n"
+ " add r0, r0, #0x64\n"
+ " b ._99\n"
+ "._101:\n"
+ " .align 2, 0\n"
+ "._100:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ "._98:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._102 @cond_branch\n"
+ " ldr r1, ._104\n"
+ " ldrh r0, [r1, #0xc]\n"
+ " sub r0, r0, #0x64\n"
+ " b ._103\n"
+ "._105:\n"
+ " .align 2, 0\n"
+ "._104:\n"
+ " .word +0x2000000\n"
+ "._102:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._106 @cond_branch\n"
+ " ldr r1, ._109\n"
+ " ldr r2, ._109 + 4\n"
+ " add r0, r2, #0\n"
+ " ldrh r2, [r1, #0xc]\n"
+ " add r0, r0, r2\n"
+ "._103:\n"
+ " strh r0, [r1, #0xc]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bgt ._116 @cond_branch\n"
+ " ldr r0, ._109 + 8\n"
+ " strh r0, [r1, #0xc]\n"
+ " b ._116\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word +0x2000000\n"
+ " .word 0xfffffc18\n"
+ " .word 0x270f\n"
+ "._106:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._111 @cond_branch\n"
+ " ldr r2, ._114\n"
+ " mov r1, #0xfa\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r1, #0\n"
+ " ldrh r1, [r2, #0xc]\n"
+ " add r0, r0, r1\n"
+ "._99:\n"
+ " strh r0, [r2, #0xc]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " ldr r1, ._114 + 4\n"
+ " cmp r0, r1\n"
+ " ble ._116 @cond_branch\n"
+ " strh r1, [r2, #0xc]\n"
+ " b ._116\n"
+ "._115:\n"
+ " .align 2, 0\n"
+ "._114:\n"
+ " .word +0x2000000\n"
+ " .word 0x270f\n"
+ "._111:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._116 @cond_branch\n"
+ " bl MenuZeroFillScreen\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ "._116:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B894()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r1, ._122\n"
+ " ldrh r2, [r1, #0x8]\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq ._117 @cond_branch\n"
+ " add r1, r1, #0x90\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [r1]\n"
+ " ldr r2, ._122 + 4\n"
+ " cmp r0, r2\n"
+ " ble ._118 @cond_branch\n"
+ " str r2, [r1]\n"
+ "._118:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x88\n"
+ " ldr r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " cmp r1, r0\n"
+ " beq ._119 @cond_branch\n"
+ " ldr r0, ._122 + 8\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._122 + 12\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ "._119:\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._126 @cond_branch\n"
+ " ldr r0, ._122 + 16\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " b ._121\n"
+ "._123:\n"
+ " .align 2, 0\n"
+ "._122:\n"
+ " .word +0x2000000\n"
+ " .word 0x270f\n"
+ " .word Str_841B2B0\n"
+ " .word unk_debug_bss_1+0x4\n"
+ " .word Str_841B2D3\n"
+ "._117:\n"
+ " lsl r0, r2, #0x10\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._126 @cond_branch\n"
+ " mov r4, #0x3\n"
+ " and r4, r4, r2\n"
+ " cmp r4, #0\n"
+ " bne ._126 @cond_branch\n"
+ " ldr r0, ._163\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x2\n"
+ "._121:\n"
+ " bl MenuPrint\n"
+ " ldr r0, ._163 + 4\n"
+ " strb r4, [r0]\n"
+ "._126:\n"
+ " ldr r0, ._163 + 8\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " add r4, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._127 @cond_branch\n"
+ " b ._162\n"
+ "._127:\n"
+ " mov r1, #0x12\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x3\n"
+ " beq ._129 @cond_branch\n"
+ " b ._162\n"
+ "._129:\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._131 @cond_branch\n"
+ " b ._162\n"
+ "._131:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x2\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x3\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x2\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x2\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " bl sub_8102BA4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r7, #0\n"
+ " bne ._134 @cond_branch\n"
+ " mov r1, r9\n"
+ " cmp r1, #0x1\n"
+ " bne ._134 @cond_branch\n"
+ " cmp r5, #0\n"
+ " beq ._159 @cond_branch\n"
+ "._134:\n"
+ " ldr r1, [sp]\n"
+ " cmp r1, #0\n"
+ " bne ._137 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne ._137 @cond_branch\n"
+ " mov r1, r8\n"
+ " cmp r1, #0\n"
+ " beq ._159 @cond_branch\n"
+ "._137:\n"
+ " cmp r6, #0\n"
+ " bne ._140 @cond_branch\n"
+ " mov r1, sl\n"
+ " cmp r1, #0x1\n"
+ " bne ._140 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._159 @cond_branch\n"
+ "._140:\n"
+ " cmp r7, #0\n"
+ " bne ._143 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne ._143 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._159 @cond_branch\n"
+ "._143:\n"
+ " cmp r6, #0\n"
+ " bne ._146 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne ._146 @cond_branch\n"
+ " cmp r5, #0\n"
+ " beq ._159 @cond_branch\n"
+ "._146:\n"
+ " cmp r7, #0x1\n"
+ " bne ._149 @cond_branch\n"
+ " mov r1, r9\n"
+ " cmp r1, #0\n"
+ " bne ._149 @cond_branch\n"
+ " cmp r5, #0x1\n"
+ " beq ._159 @cond_branch\n"
+ "._149:\n"
+ " ldr r1, [sp]\n"
+ " cmp r1, #0x1\n"
+ " bne ._152 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne ._152 @cond_branch\n"
+ " mov r1, r8\n"
+ " cmp r1, #0x1\n"
+ " beq ._159 @cond_branch\n"
+ "._152:\n"
+ " cmp r6, #0x1\n"
+ " bne ._155 @cond_branch\n"
+ " mov r1, sl\n"
+ " cmp r1, #0\n"
+ " bne ._155 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._159 @cond_branch\n"
+ "._155:\n"
+ " cmp r7, #0x1\n"
+ " bne ._158 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne ._158 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._159 @cond_branch\n"
+ "._158:\n"
+ " cmp r6, #0x1\n"
+ " bne ._162 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne ._162 @cond_branch\n"
+ " cmp r5, #0x1\n"
+ " bne ._162 @cond_branch\n"
+ "._159:\n"
+ " ldr r0, ._163 + 12\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl MenuPrint\n"
+ " ldr r1, ._163 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ "._162:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word Str_841B2E4\n"
+ " .word unk_debug_bss_1+0x4\n"
+ " .word +0x2000000\n"
+ " .word Str_841B2BF\n"
+ "\n"
+ );
+}
+#endif
+
+static const u8 sReelSymbols[][21] =
+{
{
SLOT_MACHINE_TAG_7_RED,
SLOT_MACHINE_TAG_CHERRY,
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 2f6f1e7dd..5e76d30a6 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -44,6 +44,11 @@ enum {
MENU_ACTION_PLAYER_LINK
};
+#ifdef DEBUG
+static u32 _debugStartMenu_0 __attribute__((unused));
+static u32 _debugStartMenu_1 __attribute__((unused));
+#endif
+
static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
@@ -132,6 +137,304 @@ static bool32 sub_80719FC(u8 *ptr);
static void sub_8071B54(void);
static void Task_8071B64(u8 taskId);
+#ifdef DEBUG
+__attribute__((naked))
+void debug_sub_8075C30()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_8075D9C\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075C40()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._5\n"
+ " add r5, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r5, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._1 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._2 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._3 @cond_branch\n"
+ " b ._18\n"
+ "._6:\n"
+ " .align 2, 0\n"
+ "._5:\n"
+ " .word gTasks+0x8\n"
+ "._2:\n"
+ " cmp r0, #0x2\n"
+ " beq ._7 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._8 @cond_branch\n"
+ " b ._18\n"
+ "._3:\n"
+ " bl m4aSoundVSyncOff\n"
+ " b ._12\n"
+ "._1:\n"
+ " ldr r1, ._13\n"
+ " ldrh r0, [r1]\n"
+ " mov sl, r0\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._13 + 4\n"
+ " strh r0, [r1]\n"
+ " mov r0, #0x83\n"
+ " lsl r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " ldr r4, ._13 + 8\n"
+ " mov r9, r4\n"
+ " ldr r2, ._13 + 12\n"
+ " ldr r0, ._13 + 16\n"
+ " mov ip, r0\n"
+ " ldr r1, ._13 + 20\n"
+ " mov r8, r1\n"
+ " ldr r7, ._13 + 24\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r6, ._13 + 28\n"
+ " ldr r4, ._13 + 32\n"
+ "._11:\n"
+ " mov r0, ip\n"
+ " str r0, [r2]\n"
+ " str r6, [r2, #0x4]\n"
+ " str r4, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " mov r0, r8\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r0, [r2, #0xa]\n"
+ " sub r3, r3, #0x1\n"
+ " cmp r3, #0\n"
+ " bne ._11 @cond_branch\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r0, ._13 + 36\n"
+ " mov r2, #0x0\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._13 + 4\n"
+ " ldrh r0, [r1]\n"
+ " ldr r4, ._13 + 40\n"
+ " str r0, [r4]\n"
+ " strh r2, [r1]\n"
+ " ldr r0, ._13\n"
+ " mov r1, sl\n"
+ " strh r1, [r0]\n"
+ " ldr r4, ._13 + 44\n"
+ " str r3, [r4]\n"
+ " bl m4aSoundVSyncOn\n"
+ " b ._12\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word 0x4000208\n"
+ " .word 0x4000108\n"
+ " .word 0xc34f\n"
+ " .word 0x40000b0\n"
+ " .word gUnknown_03004DE0\n"
+ " .word 0xc5ff\n"
+ " .word 0x7fff\n"
+ " .word 0x4000040\n"
+ " .word 0xa2600001\n"
+ " .word 0x400010a\n"
+ " .word _debugStartMenu_0\n"
+ " .word _debugStartMenu_1\n"
+ "._7:\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ " ldr r0, ._16\n"
+ " ldr r1, ._16 + 4\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._16 + 8\n"
+ " ldr r1, ._16 + 12\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " bl MenuDisplayMessageBox\n"
+ " ldr r0, ._16 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ "._12:\n"
+ " ldrh r0, [r5]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5]\n"
+ " b ._18\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gStringVar1\n"
+ " .word _debugStartMenu_1\n"
+ " .word gStringVar2\n"
+ " .word _debugStartMenu_0\n"
+ " .word gUnknown_Debug_839B6D8\n"
+ "._8:\n"
+ " ldr r0, ._19\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._18 @cond_branch\n"
+ " bl MenuZeroFillScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._18:\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075D9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._21\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word debug_sub_8075C40+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075DB4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r4, r2, #0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4d\n"
+ " bl __umodsi3\n"
+ " strb r0, [r6, #0x1]\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0xc\n"
+ " add r0, r4, #0\n"
+ " bl write_word_to_mem\n"
+ " add r0, r6, #4\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy8\n"
+ " mov r3, #0x7\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._25\n"
+ " ldr r1, ._25 + 4\n"
+ " add r5, r0, r1\n"
+ " add r2, r6, #0\n"
+ " add r2, r2, #0x10\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0x1c\n"
+ "._23:\n"
+ " ldrh r0, [r5]\n"
+ " strh r0, [r2]\n"
+ " strh r3, [r1]\n"
+ " add r0, r3, #6\n"
+ " strh r0, [r1, #0xc]\n"
+ " add r3, r3, #0x1\n"
+ " add r5, r5, #0x2\n"
+ " add r2, r2, #0x2\n"
+ " add r1, r1, #0x2\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x5\n"
+ " ble ._23 @cond_branch\n"
+ " mov r4, #0x0\n"
+ "._24:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._25 + 8\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2c\n"
+ " mul r1, r1, r4\n"
+ " add r1, r1, #0x34\n"
+ " add r1, r6, r1\n"
+ " bl sub_803AF78\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x2\n"
+ " ble ._24 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " bl sub_8136088\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b28\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void unref_sub_8070F90()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._27\n"
+ " bl FlagSet\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._27 + 4\n"
+ " bl FlagSet\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word 0x801\n"
+ " .word 0x802\n"
+ "\n"
+ );
+}
+#endif
static void BuildStartMenuActions(void)
{
diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c
index 4bf83cad8..08913f40d 100644
--- a/src/field/wild_encounter.c
+++ b/src/field/wild_encounter.c
@@ -3802,6 +3802,19 @@ static void FeebasSeedRng(u16 seed)
sFeebasRngValue = seed;
}
+#if DEBUG
+u16 debug_sub_8092344(u8 arg0)
+{
+ if (arg0 == 0)
+ return 131;
+ if (arg0 == 1)
+ return 167;
+ if (arg0 == 2)
+ return 149;
+ return 0;
+}
+#endif
+
static u8 ChooseWildMonIndex_Land(void)
{
u8 rand = Random() % 100;
@@ -4042,6 +4055,24 @@ static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate)
return FALSE;
}
+#if DEBUG
+u16 debug_sub_809283C(u16 attempts)
+{
+ u16 retval = 0;
+ u16 i = 0;
+
+ while (i < attempts)
+ {
+ if (DoWildEncounterRateDiceRoll(320) == TRUE)
+ retval++;
+
+ i++;
+ }
+
+ return retval;
+}
+#endif
+
static bool8 DoWildEncounterTest(u32 encounterRate, bool8 ignoreAbility)
{
encounterRate *= 16;
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
index 921a3ad93..c652b9398 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -238,7 +238,7 @@ const struct MailLayout gUnknown_083E57A4[] =
static u8 *const sSharedMemPtr = gSharedMem;
static u8 sub_80F8A28(void);
-static void sub_80F8D50(void);
+/*static*/ void sub_80F8D50(void);
static void sub_80F8DA0(void);
static void sub_80F8E80(void);
static void sub_80F8F18(void);
@@ -247,6 +247,205 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
+
+#if DEBUG
+
+// should be static
+__attribute__((section(".bss"))) u8 unk_debug_bss_2;
+
+__attribute__((naked))
+void HandleReadMail(struct MailStruct *aStruct, MainCallback callback, bool8 bool81)
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r4, r0, #0\n"
+ " add r6, r1, #0\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r5, r2, #0x18\n"
+ " ldr r0, ._3\n"
+ " ldrb r3, [r0]\n"
+ " cmp r3, #0\n"
+ " beq ._1 @cond_branch\n"
+ " ldr r2, ._3 + 4\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0xff\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._3 + 8\n"
+ " ldrh r1, [r0]\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r2, r3\n"
+ " strb r1, [r0]\n"
+ " mov r0, #0x82\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, r0\n"
+ " ldr r0, ._3 + 12\n"
+ " str r0, [r1]\n"
+ " add r3, r3, #0x8\n"
+ " add r1, r2, r3\n"
+ " ldr r0, ._3 + 16\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._3 + 20\n"
+ " ldrh r1, [r0]\n"
+ " b ._2\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gUnknown_03000748+0x4\n"
+ " .word +0x2000000\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word EasyChat_GetWordText+1\n"
+ " .word ConvertEasyChatWordsToString+1\n"
+ " .word gSpecialVar_0x8006\n"
+ "._1:\n"
+ " ldr r2, ._7\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0xff\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1]\n"
+ " add r0, r0, #0xfb\n"
+ " add r1, r2, r0\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x82\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, r0\n"
+ " ldr r0, ._7 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x84\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, r0\n"
+ " ldr r0, ._7 + 8\n"
+ " str r0, [r1]\n"
+ " ldrh r1, [r4, #0x20]\n"
+ " add r0, r1, #0\n"
+ " sub r0, r0, #0x79\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._5 @cond_branch\n"
+ " sub r1, r1, #0x79\n"
+ "._2:\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xfa\n"
+ " strb r1, [r0]\n"
+ " b ._6\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word +0x2000000\n"
+ " .word EasyChat_GetWordText+1\n"
+ " .word ConvertEasyChatWordsToString+1\n"
+ "._5:\n"
+ " add r0, r2, #0\n"
+ " add r0, r0, #0xfa\n"
+ " strb r3, [r0]\n"
+ " mov r5, #0x0\n"
+ "._6:\n"
+ " ldr r1, ._12\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._9 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._10 @cond_branch\n"
+ "._9:\n"
+ " mov r3, #0x86\n"
+ " lsl r3, r3, #0x1\n"
+ " add r2, r1, r3\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xfa\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._12 + 4\n"
+ " b ._11\n"
+ "._13:\n"
+ " .align 2, 0\n"
+ "._12:\n"
+ " .word +0x2000000\n"
+ " .word gUnknown_083E5730\n"
+ "._10:\n"
+ " mov r0, #0x86\n"
+ " lsl r0, r0, #0x1\n"
+ " add r2, r1, r0\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xfa\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._18\n"
+ "._11:\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " ldrh r0, [r4, #0x1e]\n"
+ " mov r1, sp\n"
+ " bl MailSpeciesToSpecies\n"
+ " lsl r0, r0, #0x10\n"
+ " ldr r1, ._18 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xcd\n"
+ " lsl r1, r1, #0x11\n"
+ " cmp r0, r1\n"
+ " bhi ._14 @cond_branch\n"
+ " ldr r0, ._18 + 8\n"
+ " add r1, r0, #0\n"
+ " add r1, r1, #0xfa\n"
+ " ldrb r2, [r1]\n"
+ " add r1, r0, #0\n"
+ " cmp r2, #0x6\n"
+ " beq ._15 @cond_branch\n"
+ " cmp r2, #0x9\n"
+ " beq ._16 @cond_branch\n"
+ " b ._17\n"
+ "._19:\n"
+ " .align 2, 0\n"
+ "._18:\n"
+ " .word gUnknown_083E57A4\n"
+ " .word 0xffff0000\n"
+ " .word +0x2000000\n"
+ "._15:\n"
+ " add r2, r1, #0\n"
+ " add r2, r2, #0xfb\n"
+ " mov r0, #0x1\n"
+ " b ._21\n"
+ "._16:\n"
+ " add r2, r1, #0\n"
+ " add r2, r2, #0xfb\n"
+ " mov r0, #0x2\n"
+ " b ._21\n"
+ "._14:\n"
+ " ldr r1, ._22\n"
+ "._17:\n"
+ " add r2, r1, #0\n"
+ " add r2, r2, #0xfb\n"
+ " mov r0, #0x0\n"
+ "._21:\n"
+ " strb r0, [r2]\n"
+ " add r0, r1, #0\n"
+ " add r0, r0, #0xf4\n"
+ " str r4, [r0]\n"
+ " sub r0, r0, #0x8\n"
+ " str r6, [r0]\n"
+ " add r0, r0, #0xc\n"
+ " strb r5, [r0]\n"
+ " ldr r0, ._22 + 4\n"
+ " bl SetMainCallback2\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._23:\n"
+ " .align 2, 0\n"
+ "._22:\n"
+ " .word +0x2000000\n"
+ " .word sub_80F8D50+1\n"
+ "\n"
+ );
+}
+#else
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
u16 mailDesign;
@@ -310,6 +509,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
SetMainCallback2(sub_80F8D50);
}
+#endif
#define RETURN_UP_STATE break
#define RETURN_SKIP_STATE return FALSE
@@ -456,7 +656,7 @@ static u8 sub_80F8A28(void)
return FALSE;
}
-static void sub_80F8D50(void)
+/*static*/ void sub_80F8D50(void)
{
do
{
@@ -573,6 +773,60 @@ static void sub_80F8F78(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_80F8FB4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._135 @cond_branch\n"
+ " ldr r4, ._138\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xec\n"
+ " ldr r0, [r0]\n"
+ " bl SetMainCallback2\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xfb\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0x2\n"
+ " bgt ._137 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " blt ._137 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xf4\n"
+ " ldr r0, [r0]\n"
+ " ldrh r0, [r0, #0x1e]\n"
+ " bl sub_809D4A8\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " bl sub_809D608\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xfc\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._138 + 4\n"
+ " add r0, r0, r1\n"
+ " bl sub_809D510\n"
+ "._137:\n"
+ " bl ResetPaletteFade\n"
+ "._135:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._139:\n"
+ " .align 2, 0\n"
+ "._138:\n"
+ " .word +0x2000000\n"
+ " .word gSprites\n"
+ "\n"
+ );
+}
+#else
static void sub_80F8FB4(void)
{
u16 local1;
@@ -597,3 +851,1611 @@ static void sub_80F8FB4(void)
memset(&ewram0_4, 0, 0x110);
ResetPaletteFade();
}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_810C910()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._143\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._142 @cond_branch\n"
+ " ldr r1, ._143 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " ldr r2, ._143 + 8\n"
+ " ldr r0, ._143 + 12\n"
+ " ldrh r1, [r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r1, r0, #0x2\n"
+ " add r0, r1, r2\n"
+ " ldr r3, ._143 + 16\n"
+ " add r0, r0, r3\n"
+ " ldrh r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._141 @cond_branch\n"
+ " sub r3, r3, #0x20\n"
+ " add r0, r2, r3\n"
+ " add r0, r1, r0\n"
+ " ldr r1, ._143 + 20\n"
+ " mov r2, #0x0\n"
+ " bl HandleReadMail\n"
+ " b ._142\n"
+ "._144:\n"
+ " .align 2, 0\n"
+ "._143:\n"
+ " .word gPaletteFade\n"
+ " .word unk_debug_bss_2\n"
+ " .word gSaveBlock1\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word 0x2b6c\n"
+ " .word debug_sub_810D388+1\n"
+ "._141:\n"
+ " ldr r3, ._145\n"
+ " add r0, r2, r3\n"
+ " add r0, r1, r0\n"
+ " ldr r1, ._145 + 4\n"
+ " mov r2, #0x1\n"
+ " bl HandleReadMail\n"
+ "._142:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._146:\n"
+ " .align 2, 0\n"
+ "._145:\n"
+ " .word 0x2b4c\n"
+ " .word debug_sub_810D388+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810C990()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r5, r4, #0\n"
+ " ldr r0, ._149\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0xa0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._147 @cond_branch\n"
+ " ldr r4, ._149 + 4\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xb\n"
+ " b ._148\n"
+ "._150:\n"
+ " .align 2, 0\n"
+ "._149:\n"
+ " .word gMain\n"
+ " .word gSpecialVar_0x8006\n"
+ "._147:\n"
+ " mov r2, #0x50\n"
+ " and r2, r2, r1\n"
+ " cmp r2, #0\n"
+ " beq ._151 @cond_branch\n"
+ " ldr r4, ._153\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ "._148:\n"
+ " mov r1, #0xc\n"
+ " bl __modsi3\n"
+ " strh r0, [r4]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r1, ._153 + 4\n"
+ " ldrh r0, [r4]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " b ._159\n"
+ "._154:\n"
+ " .align 2, 0\n"
+ "._153:\n"
+ " .word gSpecialVar_0x8006\n"
+ " .word _84115C4\n"
+ "._151:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._155 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " str r2, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._157\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._157 + 4\n"
+ " b ._156\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word gTasks\n"
+ " .word debug_sub_810C910+1\n"
+ "._155:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._159 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._160\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._160 + 4\n"
+ " ldr r0, ._160 + 8\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._160 + 12\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._160 + 16\n"
+ "._156:\n"
+ " str r1, [r0]\n"
+ "._159:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._161:\n"
+ " .align 2, 0\n"
+ "._160:\n"
+ " .word Str_8411540\n"
+ " .word _8411560\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word gTasks\n"
+ " .word debug_sub_810CA7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CA7C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r3, ._164\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r2, #0xf0\n"
+ " and r2, r2, r1\n"
+ " cmp r2, #0\n"
+ " beq ._162 @cond_branch\n"
+ " ldr r2, ._164 + 4\n"
+ " ldrh r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strh r0, [r2]\n"
+ " ldr r1, ._164 + 8\n"
+ " ldrh r0, [r2]\n"
+ " b ._163\n"
+ "._165:\n"
+ " .align 2, 0\n"
+ "._164:\n"
+ " .word gMain\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word _8411560\n"
+ "._162:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._168 @cond_branch\n"
+ " ldrh r0, [r3, #0x34]\n"
+ " cmp r0, #0\n"
+ " beq ._167 @cond_branch\n"
+ " strh r2, [r3, #0x34]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._169\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r1, ._169 + 4\n"
+ " ldr r0, ._169 + 8\n"
+ " ldrh r0, [r0]\n"
+ "._163:\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " b ._168\n"
+ "._170:\n"
+ " .align 2, 0\n"
+ "._169:\n"
+ " .word Str_8411540\n"
+ " .word _8411560\n"
+ " .word gSpecialVar_0x8004\n"
+ "._167:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._171\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x4\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r1, ._171 + 4\n"
+ " ldr r0, ._171 + 8\n"
+ " ldrh r0, [r0]\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._171 + 12\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._171 + 16\n"
+ " str r1, [r0]\n"
+ "._168:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word Str_8411568\n"
+ " .word _84115C4\n"
+ " .word gSpecialVar_0x8006\n"
+ " .word gTasks\n"
+ " .word debug_sub_810C990+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CB50()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xffffffec\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " ldr r1, ._175\n"
+ " mov r0, sp\n"
+ " mov r2, #0x6\n"
+ " bl memcpy\n"
+ " add r7, sp, #0x8\n"
+ " ldr r1, ._175 + 4\n"
+ " add r0, r7, #0\n"
+ " mov r2, #0x9\n"
+ " bl memcpy\n"
+ " mov r2, #0x0\n"
+ " ldr r0, ._175 + 8\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._173 @cond_branch\n"
+ " ldr r0, ._175 + 12\n"
+ " ldr r5, ._175 + 16\n"
+ " ldrh r1, [r5]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._175 + 20\n"
+ " ldr r1, ._175 + 24\n"
+ " lsl r4, r6, #0x2\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r2, [r4, r1]\n"
+ " mov r1, #0xb\n"
+ " mul r1, r1, r2\n"
+ " ldr r2, ._175 + 28\n"
+ " add r1, r1, r2\n"
+ " bl StringCopy\n"
+ " ldr r2, ._175 + 32\n"
+ " ldrh r1, [r5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrh r1, [r4, #0x8]\n"
+ " ldr r2, ._175 + 36\n"
+ " add r0, r0, r2\n"
+ " strh r1, [r0]\n"
+ " ldr r4, ._175 + 40\n"
+ " add r0, r4, #0\n"
+ " add r1, r7, #0\n"
+ " bl StringExpandPlaceholders\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ " b ._174\n"
+ "._176:\n"
+ " .align 2, 0\n"
+ "._175:\n"
+ " .word Str_841160F\n"
+ " .word Str_841161A\n"
+ " .word gMain\n"
+ " .word gStringVar1\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gStringVar2\n"
+ " .word gTasks\n"
+ " .word gSpeciesNames\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b6a\n"
+ " .word gStringVar4\n"
+ "._173:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._177 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ " bl Menu_EraseScreen\n"
+ "._174:\n"
+ " ldr r0, ._179\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " bl debug_sub_810D340\n"
+ " b ._186\n"
+ "._180:\n"
+ " .align 2, 0\n"
+ "._179:\n"
+ " .word debug_sub_810CE1C+1\n"
+ "._177:\n"
+ " mov r0, #0xa0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._181 @cond_branch\n"
+ " ldr r0, ._183\n"
+ " lsl r4, r6, #0x2\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " ldr r2, ._183 + 4\n"
+ " add r0, r0, r2\n"
+ " mov r1, #0xce\n"
+ " lsl r1, r1, #0x1\n"
+ " bl __modsi3\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._182\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word gTasks\n"
+ " .word 0x19b\n"
+ "._181:\n"
+ " mov r0, #0x50\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._185 @cond_branch\n"
+ " ldr r0, ._187\n"
+ " lsl r4, r6, #0x2\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r0\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, #0xce\n"
+ " lsl r1, r1, #0x1\n"
+ " bl __modsi3\n"
+ " strh r0, [r4, #0x8]\n"
+ " mov r2, #0x1\n"
+ "._185:\n"
+ " cmp r2, #0\n"
+ " beq ._186 @cond_branch\n"
+ "._182:\n"
+ " ldr r0, ._187 + 4\n"
+ " ldr r1, ._187\n"
+ " lsl r4, r6, #0x2\n"
+ " add r4, r4, r6\n"
+ " lsl r4, r4, #0x3\n"
+ " add r4, r4, r1\n"
+ " mov r2, #0x8\n"
+ " ldsh r1, [r4, r2]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._187 + 8\n"
+ " mov r1, #0x8\n"
+ " ldsh r2, [r4, r1]\n"
+ " mov r1, #0xb\n"
+ " mul r1, r1, r2\n"
+ " ldr r2, ._187 + 12\n"
+ " add r1, r1, r2\n"
+ " bl StringCopy\n"
+ " ldr r4, ._187 + 16\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " bl StringExpandPlaceholders\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ "._186:\n"
+ " add sp, sp, #0x14\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._188:\n"
+ " .align 2, 0\n"
+ "._187:\n"
+ " .word gTasks\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gSpeciesNames\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CCEC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xffffffe4\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r1, ._189\n"
+ " mov r0, sp\n"
+ " mov r2, #0x11\n"
+ " bl memcpy\n"
+ " add r6, sp, #0x14\n"
+ " ldr r1, ._189 + 4\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x7\n"
+ " bl memcpy\n"
+ " ldr r0, ._189 + 8\n"
+ " mov r8, r0\n"
+ " ldr r0, ._189 + 12\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, r8\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r4, ._189 + 16\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " bl StringExpandPlaceholders\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._189 + 20\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl StringExpandPlaceholders\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._189 + 24\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._189 + 28\n"
+ " str r1, [r0]\n"
+ " add sp, sp, #0x1c\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._190:\n"
+ " .align 2, 0\n"
+ "._189:\n"
+ " .word Str_8411623\n"
+ " .word Str_8411634\n"
+ " .word gStringVar1\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gStringVar4\n"
+ " .word gSpeciesNames\n"
+ " .word gTasks\n"
+ " .word debug_sub_810CB50+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CD9C()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext1_Stop\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r1, ._191\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " ldr r3, ._191 + 4\n"
+ " ldr r2, ._191 + 8\n"
+ " ldr r1, ._191 + 12\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1]\n"
+ " strh r0, [r2]\n"
+ " strh r0, [r3]\n"
+ " ldr r0, ._191 + 16\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._192:\n"
+ " .align 2, 0\n"
+ "._191:\n"
+ " .word unk_debug_bss_2\n"
+ " .word gSpecialVar_0x8004\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSpecialVar_0x8006\n"
+ " .word debug_sub_810D388+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CDE0()
+{
+ asm(
+ " push {lr}\n"
+ " bl UpdatePaletteFade\n"
+ " bl RunTasks\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CDF0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._193\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1, #0x34]\n"
+ " strh r0, [r1, #0x36]\n"
+ " ldr r1, ._193 + 4\n"
+ " ldr r0, ._193 + 8\n"
+ " str r0, [r1]\n"
+ " ldr r0, ._193 + 12\n"
+ " bl SetMainCallback2\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._194:\n"
+ " .align 2, 0\n"
+ "._193:\n"
+ " .word gMain\n"
+ " .word gFieldCallback\n"
+ " .word mapldr_default+1\n"
+ " .word c2_exit_to_overworld_2_switch+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CE1C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._196\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._195 @cond_branch\n"
+ " bl CloseMenu\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._195:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._197:\n"
+ " .align 2, 0\n"
+ "._196:\n"
+ " .word gCallback_03004AE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CE48()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._198 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._199 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_810D340\n"
+ "._198:\n"
+ " mov r0, #0x0\n"
+ " b ._200\n"
+ "._199:\n"
+ " ldr r0, ._201\n"
+ " strh r1, [r0]\n"
+ " ldr r4, ._201 + 4\n"
+ " ldrh r0, [r4]\n"
+ " mov r1, #0xc\n"
+ " bl __umodsi3\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._201 + 8\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " ldr r1, ._201 + 12\n"
+ " mov r2, #0x0\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1, #0x34]\n"
+ " strh r2, [r1, #0x36]\n"
+ "._200:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._202:\n"
+ " .align 2, 0\n"
+ "._201:\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSpecialVar_0x8006\n"
+ " .word debug_sub_810CA7C+1\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CEA4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._205\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._203 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._204\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word gPaletteFade\n"
+ "._203:\n"
+ " ldr r1, ._207\n"
+ " mov r0, #0x4\n"
+ " strh r0, [r1]\n"
+ " bl sub_80E60D8\n"
+ " mov r0, #0x1\n"
+ "._204:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._208:\n"
+ " .align 2, 0\n"
+ "._207:\n"
+ " .word gSpecialVar_0x8004\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CED0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xffffffdc\n"
+ " ldr r1, ._212\n"
+ " mov r0, sp\n"
+ " mov r2, #0x23\n"
+ " bl memcpy\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._215 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._210 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " b ._211\n"
+ "._213:\n"
+ " .align 2, 0\n"
+ "._212:\n"
+ " .word Str_841163B\n"
+ "._210:\n"
+ " ldr r5, ._216\n"
+ " strh r1, [r5]\n"
+ " ldr r6, ._216 + 4\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r1, ._216 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x79\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bls ._214 @cond_branch\n"
+ " ldrh r1, [r5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r6\n"
+ " ldr r2, ._216 + 8\n"
+ " add r0, r0, r2\n"
+ " ldr r1, ._216 + 12\n"
+ " strh r1, [r0]\n"
+ " ldrh r1, [r5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " sub r2, r2, #0xe\n"
+ " add r1, r6, r2\n"
+ " add r0, r0, r1\n"
+ " ldr r4, ._216 + 16\n"
+ " add r1, r4, #0\n"
+ " bl StringCopy\n"
+ " ldrh r1, [r5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r2, ._216 + 20\n"
+ " add r1, r6, r2\n"
+ " add r0, r0, r1\n"
+ " add r4, r4, #0xa\n"
+ " ldr r1, [r4]\n"
+ " str r1, [r0]\n"
+ " ldr r1, ._216 + 24\n"
+ " ldr r0, ._216 + 28\n"
+ " str r0, [r1]\n"
+ " b ._215\n"
+ "._217:\n"
+ " .align 2, 0\n"
+ "._216:\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b6c\n"
+ " .word 0xffff\n"
+ " .word gSaveBlock2\n"
+ " .word 0x2b66\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810CEA4+1\n"
+ "._214:\n"
+ " bl Menu_EraseScreen\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._211:\n"
+ " bl debug_sub_810D340\n"
+ "._215:\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x24\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810CFA4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xffffffe0\n"
+ " ldr r1, ._221\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1f\n"
+ " bl memcpy\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r2, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r2, r0\n"
+ " beq ._218 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " bne ._219 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " b ._220\n"
+ "._222:\n"
+ " .align 2, 0\n"
+ "._221:\n"
+ " .word Str_841165E\n"
+ "._219:\n"
+ " ldr r0, ._225\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._225 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._225 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x79\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bls ._223 @cond_branch\n"
+ " ldr r0, ._225 + 12\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " b ._224\n"
+ "._226:\n"
+ " .align 2, 0\n"
+ "._225:\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b6c\n"
+ " .word debug_sub_810CCEC+1\n"
+ "._223:\n"
+ " bl Menu_EraseScreen\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._220:\n"
+ " bl debug_sub_810D340\n"
+ "._218:\n"
+ " mov r0, #0x0\n"
+ "._224:\n"
+ " add sp, sp, #0x20\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810D030()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xffffffcc\n"
+ " ldr r1, ._230\n"
+ " mov r0, sp\n"
+ " mov r2, #0x10\n"
+ " bl memcpy\n"
+ " add r5, sp, #0x10\n"
+ " ldr r1, ._230 + 4\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x21\n"
+ " bl memcpy\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._227 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._228 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " b ._229\n"
+ "._231:\n"
+ " .align 2, 0\n"
+ "._230:\n"
+ " .word Str_841167D\n"
+ " .word Str_841168D\n"
+ "._228:\n"
+ " ldr r2, ._235\n"
+ " strh r1, [r2]\n"
+ " ldr r3, ._235 + 4\n"
+ " ldrh r1, [r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r3\n"
+ " ldr r1, ._235 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " ldr r0, ._235 + 12\n"
+ " add r4, r2, #0\n"
+ " cmp r1, r0\n"
+ " beq ._233 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._233 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r5, #0\n"
+ " b ._234\n"
+ "._236:\n"
+ " .align 2, 0\n"
+ "._235:\n"
+ " .word gSpecialVar_0x8005\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b6c\n"
+ " .word 0xffff\n"
+ "._233:\n"
+ " ldrh r1, [r4]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r3\n"
+ " ldr r5, ._238\n"
+ " add r0, r0, r5\n"
+ " mov r2, #0x0\n"
+ " strh r2, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r3\n"
+ " ldr r1, ._238 + 4\n"
+ " add r0, r0, r1\n"
+ " strh r2, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r3\n"
+ " sub r5, r5, #0xe\n"
+ " add r0, r0, r5\n"
+ " mov r1, #0xff\n"
+ " strb r1, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r5, r5, #0x8\n"
+ " add r1, r3, r5\n"
+ " add r0, r0, r1\n"
+ " str r2, [r0]\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._238 + 8\n"
+ " mov ip, r1\n"
+ " sub r5, r5, #0x1a\n"
+ " add r7, r3, r5\n"
+ " add r6, r4, #0\n"
+ " ldr r1, ._238 + 12\n"
+ " add r5, r1, #0\n"
+ "._237:\n"
+ " lsl r1, r0, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r3, r1, #0x1\n"
+ " ldrh r2, [r6]\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " add r3, r3, r0\n"
+ " add r3, r3, r7\n"
+ " ldrh r0, [r3]\n"
+ " orr r0, r0, r5\n"
+ " strh r0, [r3]\n"
+ " add r1, r1, #0x1\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r0, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " cmp r1, #0x8\n"
+ " ble ._237 @cond_branch\n"
+ " ldrh r1, [r4]\n"
+ " mov r0, ip\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r4, ._238 + 16\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " bl StringExpandPlaceholders\n"
+ " bl Menu_EraseScreen\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r4, #0\n"
+ "._234:\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._229:\n"
+ " bl debug_sub_810D340\n"
+ "._227:\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x34\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._239:\n"
+ " .align 2, 0\n"
+ "._238:\n"
+ " .word 0x2b6c\n"
+ " .word 0x2b6a\n"
+ " .word gStringVar1\n"
+ " .word 0xffff\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810D174()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffeec\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " ldr r1, ._242\n"
+ " add r0, sp, #0x8\n"
+ " mov r2, #0xc\n"
+ " bl memcpy\n"
+ " mov r5, #0x0\n"
+ " mov r0, sp\n"
+ " add r0, r0, #0x14\n"
+ " str r0, [sp, #0x110]\n"
+ " add r1, sp, #0xc8\n"
+ " mov r8, r1\n"
+ " add r2, sp, #0xcc\n"
+ " mov sl, r2\n"
+ " ldr r0, ._242 + 4\n"
+ " mov r9, r0\n"
+ "._248:\n"
+ " ldr r0, ._242 + 8\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " lsl r1, r5, #0x3\n"
+ " add r0, r1, r5\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldr r2, ._242 + 12\n"
+ " add r4, r0, r2\n"
+ " ldrh r0, [r4]\n"
+ " add r6, r1, #0\n"
+ " ldr r1, ._242 + 16\n"
+ " cmp r0, r1\n"
+ " bne ._240 @cond_branch\n"
+ " ldr r0, ._242 + 20\n"
+ " mov r1, #0x1\n"
+ " b ._241\n"
+ "._243:\n"
+ " .align 2, 0\n"
+ "._242:\n"
+ " .word Str_84116AE\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar1\n"
+ " .word 0x2b6c\n"
+ " .word 0xffff\n"
+ " .word gStringVar2\n"
+ "._240:\n"
+ " sub r0, r0, #0x79\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._244 @cond_branch\n"
+ " ldr r0, ._246\n"
+ " mov r1, #0x2\n"
+ "._241:\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._245\n"
+ "._247:\n"
+ " .align 2, 0\n"
+ "._246:\n"
+ " .word gStringVar2\n"
+ "._244:\n"
+ " ldr r0, ._253\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r4]\n"
+ "._245:\n"
+ " add r0, r6, r5\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r9\n"
+ " ldr r2, ._253 + 4\n"
+ " add r0, r0, r2\n"
+ " ldrh r1, [r0]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._253 + 8\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._253 + 12\n"
+ " bl StringCopy\n"
+ " lsl r4, r5, #0x2\n"
+ " add r4, r4, r5\n"
+ " lsl r4, r4, #0x2\n"
+ " ldr r0, [sp, #0x110]\n"
+ " add r4, r0, r4\n"
+ " add r0, r4, #0\n"
+ " add r1, sp, #0x8\n"
+ " bl StringExpandPlaceholders\n"
+ " mov r1, r8\n"
+ " add r0, r1, r6\n"
+ " str r4, [r0]\n"
+ " mov r2, sl\n"
+ " add r0, r2, r6\n"
+ " mov r4, #0x0\n"
+ " str r4, [r0]\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x8\n"
+ " bls ._248 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " mov r3, r8\n"
+ " bl Menu_PrintItems\n"
+ " str r4, [sp]\n"
+ " mov r0, #0xf\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x9\n"
+ " bl InitMenu\n"
+ " cmp r7, #0x1\n"
+ " beq ._249 @cond_branch\n"
+ " cmp r7, #0x1\n"
+ " bgt ._250 @cond_branch\n"
+ " cmp r7, #0\n"
+ " beq ._251 @cond_branch\n"
+ " b ._257\n"
+ "._254:\n"
+ " .align 2, 0\n"
+ "._253:\n"
+ " .word gStringVar2\n"
+ " .word 0x2b6a\n"
+ " .word gSpeciesNames\n"
+ " .word gStringVar3\n"
+ "._250:\n"
+ " cmp r7, #0x2\n"
+ " beq ._255 @cond_branch\n"
+ " cmp r7, #0x3\n"
+ " beq ._256 @cond_branch\n"
+ " b ._257\n"
+ "._251:\n"
+ " ldr r1, ._259\n"
+ " ldr r0, ._259 + 4\n"
+ " b ._264\n"
+ "._260:\n"
+ " .align 2, 0\n"
+ "._259:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810CE48+1\n"
+ "._249:\n"
+ " ldr r1, ._262\n"
+ " ldr r0, ._262 + 4\n"
+ " b ._264\n"
+ "._263:\n"
+ " .align 2, 0\n"
+ "._262:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810CED0+1\n"
+ "._255:\n"
+ " ldr r1, ._265\n"
+ " ldr r0, ._265 + 4\n"
+ " b ._264\n"
+ "._266:\n"
+ " .align 2, 0\n"
+ "._265:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810CFA4+1\n"
+ "._256:\n"
+ " ldr r1, ._267\n"
+ " ldr r0, ._267 + 4\n"
+ "._264:\n"
+ " str r0, [r1]\n"
+ "._257:\n"
+ " add sp, sp, #0x114\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._268:\n"
+ " .align 2, 0\n"
+ "._267:\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810D030+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810D2F4()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r2, r0, #0x18\n"
+ " asr r1, r2, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._269 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r1, r0\n"
+ " bne ._270 @cond_branch\n"
+ " ldr r0, ._272\n"
+ " bl SetMainCallback2\n"
+ " b ._279\n"
+ "._273:\n"
+ " .align 2, 0\n"
+ "._272:\n"
+ " .word debug_sub_810CDF0+1\n"
+ "._270:\n"
+ " cmp r1, #0x1\n"
+ " beq ._278 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._275 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._278 @cond_branch\n"
+ " b ._279\n"
+ "._275:\n"
+ " cmp r1, #0x2\n"
+ " beq ._278 @cond_branch\n"
+ " cmp r1, #0x3\n"
+ " bne ._279 @cond_branch\n"
+ "._278:\n"
+ " lsr r0, r2, #0x18\n"
+ " bl debug_sub_810D174\n"
+ "._269:\n"
+ " mov r0, #0x0\n"
+ " b ._280\n"
+ "._279:\n"
+ " mov r0, #0x1\n"
+ "._280:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810D340()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._281\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x8\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._281 + 4\n"
+ " ldr r0, ._281 + 8\n"
+ " str r0, [r1]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._282:\n"
+ " .align 2, 0\n"
+ "._281:\n"
+ " .word _84116BC\n"
+ " .word gCallback_03004AE8\n"
+ " .word debug_sub_810D2F4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_810D388()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r1, ._285\n"
+ " ldr r2, ._285 + 4\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r1, #0\n"
+ " cmp r0, #0x8\n"
+ " bls ._283 @cond_branch\n"
+ " b ._320\n"
+ "._283:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._285 + 8\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._286:\n"
+ " .align 2, 0\n"
+ "._285:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ " .word ._287\n"
+ "._287:\n"
+ " .word ._288\n"
+ " .word ._289\n"
+ " .word ._290\n"
+ " .word ._291\n"
+ " .word ._292\n"
+ " .word ._293\n"
+ " .word ._294\n"
+ " .word ._295\n"
+ " .word ._296\n"
+ "._288:\n"
+ " ldr r3, ._299\n"
+ " ldrb r4, [r3]\n"
+ " cmp r4, #0\n"
+ " beq ._297 @cond_branch\n"
+ " ldr r1, ._299 + 4\n"
+ " add r0, r2, r1\n"
+ " mov r2, #0x0\n"
+ " mov r1, #0x2\n"
+ " strb r1, [r0]\n"
+ " strb r2, [r3]\n"
+ " b ._320\n"
+ "._300:\n"
+ " .align 2, 0\n"
+ "._299:\n"
+ " .word unk_debug_bss_2\n"
+ " .word 0x43c\n"
+ "._297:\n"
+ " bl remove_some_task\n"
+ " bl ResetPaletteFade\n"
+ " ldr r0, ._302\n"
+ " bl SetVBlankCallback\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " str r4, [sp]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " b ._321\n"
+ "._303:\n"
+ " .align 2, 0\n"
+ "._302:\n"
+ " .word sub_80F8F18+1\n"
+ "._289:\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._304 @cond_branch\n"
+ " b ._320\n"
+ "._304:\n"
+ " b ._321\n"
+ "._290:\n"
+ " mov r0, #0x0\n"
+ " bl SetVBlankCallback\n"
+ " ldr r0, ._308\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r1, [r0]\n"
+ " sub r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x4\n"
+ " strh r1, [r0]\n"
+ " add r0, r0, #0x2\n"
+ " strh r1, [r0]\n"
+ " b ._321\n"
+ "._309:\n"
+ " .align 2, 0\n"
+ "._308:\n"
+ " .word 0x4000010\n"
+ "._291:\n"
+ " bl ResetSpriteData\n"
+ " bl ResetTasks\n"
+ " bl FreeAllSpritePalettes\n"
+ " b ._321\n"
+ "._292:\n"
+ " ldr r4, ._312\n"
+ " add r0, r4, #0\n"
+ " bl Text_LoadWindowTemplate\n"
+ " add r0, r4, #0\n"
+ " bl InitMenuWindow\n"
+ " bl Menu_EraseScreen\n"
+ " b ._321\n"
+ "._313:\n"
+ " .align 2, 0\n"
+ "._312:\n"
+ " .word gWindowTemplate_81E6CE4\n"
+ "._293:\n"
+ " ldr r4, ._315\n"
+ " ldr r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x20\n"
+ " bl LoadPalette\n"
+ " ldr r0, [r4, #0x4]\n"
+ " mov r1, #0xc0\n"
+ " lsl r1, r1, #0x13\n"
+ " bl LZ77UnCompVram\n"
+ " add r1, sp, #0x4\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._315 + 4\n"
+ " add r2, sp, #0x4\n"
+ " str r2, [r1]\n"
+ " ldr r0, ._315 + 8\n"
+ " str r0, [r1, #0x4]\n"
+ " ldr r0, ._315 + 12\n"
+ " str r0, [r1, #0x8]\n"
+ " ldr r0, [r1, #0x8]\n"
+ " b ._321\n"
+ "._316:\n"
+ " .align 2, 0\n"
+ "._315:\n"
+ " .word gMailGraphicsTable\n"
+ " .word 0x40000d4\n"
+ " .word 0x6004000\n"
+ " .word 0x81000280\n"
+ "._294:\n"
+ " ldr r1, ._318\n"
+ " ldr r2, ._318 + 4\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x2\n"
+ " ldr r2, ._318 + 8\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " add r1, r1, #0x46\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1]\n"
+ " sub r1, r1, #0x50\n"
+ " mov r2, #0xd0\n"
+ " lsl r2, r2, #0x2\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl debug_sub_810D340\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._318 + 12\n"
+ " bl SetVBlankCallback\n"
+ " b ._321\n"
+ "._319:\n"
+ " .align 2, 0\n"
+ "._318:\n"
+ " .word 0x4000008\n"
+ " .word 0x9f08\n"
+ " .word 0x801\n"
+ " .word sub_80F8F18+1\n"
+ "._295:\n"
+ " bl UpdatePaletteFade\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._320 @cond_branch\n"
+ " b ._321\n"
+ "._296:\n"
+ " ldr r0, ._322\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " ldr r0, ._322 + 4\n"
+ " bl SetMainCallback2\n"
+ "._321:\n"
+ " ldr r1, ._322 + 8\n"
+ " ldr r0, ._322 + 12\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._320:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._323:\n"
+ " .align 2, 0\n"
+ "._322:\n"
+ " .word debug_sub_810CE1C+1\n"
+ " .word debug_sub_810CDE0+1\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "\n"
+ );
+}
+#endif \ No newline at end of file
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c
index 0242e7444..079bcf489 100644
--- a/src/pokemon/pokemon_1.c
+++ b/src/pokemon/pokemon_1.c
@@ -524,6 +524,328 @@ void CalculateMonStats(struct Pokemon *mon)
SetMonData(mon, MON_DATA_HP, &currentHP);
}
+#ifdef DEBUG
+__attribute__((naked))
+void debug_sub_803F55C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffc4\n"
+ " add r5, r0, #0\n"
+ " mov r1, #0x39\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x1c]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x27\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " add r7, r0, #0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x28\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " mov r9, r0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1b\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " mov r8, r0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x29\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x20]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1c\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " mov sl, r0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2a\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x24]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1d\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x28]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2b\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x2c]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1e\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x30]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2c\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x34]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1f\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " str r0, [sp, #0x38]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x0\n"
+ " bl GetMonData\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl GetLevelFromMonExp\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x38\n"
+ " mov r2, sp\n"
+ " bl SetMonData\n"
+ " ldr r0, ._71\n"
+ " cmp r6, r0\n"
+ " bne ._69 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " str r0, [sp, #0x4]\n"
+ " lsl r7, r6, #0x3\n"
+ " b ._70\n"
+ "._72:\n"
+ " .align 2, 0\n"
+ "._71:\n"
+ " .word 0x12f\n"
+ "._69:\n"
+ " ldr r1, ._80\n"
+ " lsl r2, r6, #0x3\n"
+ " sub r0, r2, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r0, r7\n"
+ " add r0, r4, #0\n"
+ " add r7, r2, #0\n"
+ " cmp r0, #0\n"
+ " bge ._73 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._73:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r1, r0\n"
+ " ldr r4, [sp]\n"
+ " mul r0, r0, r4\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, #0xa\n"
+ " str r0, [sp, #0x4]\n"
+ "._70:\n"
+ " add r2, sp, #0x4\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3a\n"
+ " bl SetMonData\n"
+ " ldr r1, ._80\n"
+ " sub r0, r7, r6\n"
+ " lsl r0, r0, #0x2\n"
+ " add r6, r0, r1\n"
+ " ldrb r0, [r6, #0x1]\n"
+ " lsl r0, r0, #0x1\n"
+ " mov r2, r9\n"
+ " add r1, r0, r2\n"
+ " mov r0, r8\n"
+ " cmp r0, #0\n"
+ " bge ._74 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._74:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r1, r0\n"
+ " ldr r1, [sp]\n"
+ " mul r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, #0x5\n"
+ " str r0, [sp, #0x8]\n"
+ " add r0, r5, #0\n"
+ " bl GetNature\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, sp, #0x8\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x1\n"
+ " bl nature_stat_mod\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x8]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3b\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldrb r0, [r6, #0x2]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, [sp, #0x20]\n"
+ " add r1, r0, r2\n"
+ " mov r0, sl\n"
+ " cmp r0, #0\n"
+ " bge ._75 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._75:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r1, r0\n"
+ " ldr r1, [sp]\n"
+ " mul r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, #0x5\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r5, #0\n"
+ " bl GetNature\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, sp, #0xc\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " bl nature_stat_mod\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3c\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldrb r0, [r6, #0x3]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, [sp, #0x24]\n"
+ " add r1, r0, r2\n"
+ " ldr r0, [sp, #0x28]\n"
+ " cmp r0, #0\n"
+ " bge ._76 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._76:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r1, r0\n"
+ " ldr r1, [sp]\n"
+ " mul r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, #0x5\n"
+ " str r0, [sp, #0x10]\n"
+ " add r0, r5, #0\n"
+ " bl GetNature\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, sp, #0x10\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x3\n"
+ " bl nature_stat_mod\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x10]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3d\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldrb r0, [r6, #0x4]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, [sp, #0x2c]\n"
+ " add r1, r0, r2\n"
+ " ldr r0, [sp, #0x30]\n"
+ " cmp r0, #0\n"
+ " bge ._77 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._77:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r1, r0\n"
+ " ldr r1, [sp]\n"
+ " mul r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, #0x5\n"
+ " str r0, [sp, #0x14]\n"
+ " add r0, r5, #0\n"
+ " bl GetNature\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, sp, #0x14\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x4\n"
+ " bl nature_stat_mod\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x14]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3e\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldrb r0, [r6, #0x5]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r1, [sp, #0x34]\n"
+ " add r2, r0, r1\n"
+ " ldr r0, [sp, #0x38]\n"
+ " cmp r0, #0\n"
+ " bge ._78 @cond_branch\n"
+ " add r0, r0, #0x3\n"
+ "._78:\n"
+ " asr r0, r0, #0x2\n"
+ " add r0, r2, r0\n"
+ " ldr r1, [sp]\n"
+ " mul r0, r0, r1\n"
+ " mov r1, #0x64\n"
+ " bl gScriptFuncs_End+0x3d30\n"
+ " add r0, r0, #0x5\n"
+ " str r0, [sp, #0x18]\n"
+ " add r0, r5, #0\n"
+ " bl GetNature\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " add r4, sp, #0x18\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x5\n"
+ " bl nature_stat_mod\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x18]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3f\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0x4]\n"
+ " ldr r0, [sp, #0x1c]\n"
+ " cmp r1, r0\n"
+ " bge ._79 @cond_branch\n"
+ " str r1, [sp, #0x1c]\n"
+ "._79:\n"
+ " add r2, sp, #0x1c\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x39\n"
+ " bl SetMonData\n"
+ " add sp, sp, #0x3c\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._81:\n"
+ " .align 2, 0\n"
+ "._80:\n"
+ " .word gBaseStats\n"
+ "\n"
+ );
+}
+#endif
+
void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest)
{
u32 value = 0;
diff --git a/src/rom3.c b/src/rom3.c
index 11239a681..2b719d14a 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -67,6 +67,10 @@ void sub_800B858(void)
}
}
+#ifdef DEBUG
+extern u8 gUnknown_02023A14_50;
+#endif
+
void setup_poochyena_battle(void)
{
s32 i;
@@ -93,6 +97,16 @@ void setup_poochyena_battle(void)
}
gUnknown_020239FC = 0;
gUnknown_02024C78 = 0;
+
+#ifdef DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ ewram[0x160fd] = 0;
+ ewram[0x160fe] = 0;
+ ewram[0x160ff] = 0;
+ ((u32 *) gBattleBuffersTransferData)[64]++;
+ }
+#endif
}
void sub_800B950(void)
diff --git a/src/rom6.c b/src/rom6.c
index e71484b0a..1c0654538 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "constants/map_objects.h"
+#include "constants/songs.h"
#include "rom6.h"
#include "braille_puzzles.h"
#include "field_effect.h"
@@ -8,7 +10,6 @@
#include "pokemon_menu.h"
#include "overworld.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
@@ -116,6 +117,21 @@ static void sub_810B4CC(u8 taskId)
DestroyTask(taskId);
}
+#ifdef DEBUG
+void debug_sub_8120968(void)
+{
+ if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_810B53C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_RockSmash(void)
{
if (npc_before_player_of_type(0x56) == TRUE)
diff --git a/src/roulette.c b/src/roulette.c
index 6d79f9d38..ce95bc1c9 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -308,7 +308,10 @@ extern const u16 gUnknown_083FA632[];
extern const s8 gUnknown_083FA64A[0x2];
extern const s8 gUnknown_083FA64C[0x8][0x2];
-
+#if DEBUG
+EWRAM_DATA u8 unk_203955C[4] = { 0 };
+EWRAM_DATA u8 unk_2039560[4] = { 0 };
+#endif
void sub_81150FC(void)
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index d8e099130..4bf0cef09 100644
--- a/src/scene/cable_car.c
+++ b/src/scene/cable_car.c
@@ -6,6 +6,7 @@
#include "palette.h"
#include "random.h"
#include "main.h"
+#include "menu.h"
#include "script.h"
#include "task.h"
#include "sound.h"
@@ -102,6 +103,31 @@ static void sub_81248AC(u8);
// .rodata
+#if DEBUG
+
+u8 debug_sub_8138D74(void);
+u8 debug_sub_8138D8C(void);
+u8 debug_sub_8138C14(void);
+u8 debug_sub_8138C34(void);
+u8 debug_sub_810CD9C(void);
+
+const u8 Str_842DBD0[] = _("CABLE CAR U");
+const u8 Str_842DBDC[] = _("CABLE CAR D");
+const u8 Str_842DBE8[] = _("ROULETTE1");
+const u8 Str_842DBF2[] = _("ROULETTE3");
+const u8 Str_842DBFC[] = _("View a MAIL");
+
+const struct MenuAction gUnkDebug4Menu[] =
+{
+ {Str_842DBD0, debug_sub_8138D74},
+ {Str_842DBDC, debug_sub_8138D8C},
+ {Str_842DBE8, debug_sub_8138C14},
+ {Str_842DBF2, debug_sub_8138C34},
+ {Str_842DBFC, debug_sub_810CD9C},
+};
+
+#endif
+
static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz");
static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz");
@@ -182,6 +208,158 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = {
// .text
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8138C14(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r0, ._1\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._1 + 4\n\
+ bl ScriptContext1_SetupScript\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._2:\n\
+ .align 2, 0\n\
+._1:\n\
+ .word unk_203955C\n\
+ .word MauvilleCity_GameCorner_EventScript_1C407E");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138C34(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r0, ._3\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._3 + 4\n\
+ bl ScriptContext1_SetupScript\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word unk_203955C\n\
+ .word MauvilleCity_GameCorner_EventScript_1C40AC");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138C54(void)
+{
+ asm("\n\
+ push {r4, lr}\n\
+ ldr r4, ._10\n\
+ ldrh r0, [r4, #0x2e]\n\
+ cmp r0, #0x40\n\
+ bne ._5 @cond_branch\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ bl Menu_MoveCursor\n\
+._5:\n\
+ ldrh r0, [r4, #0x2e]\n\
+ cmp r0, #0x80\n\
+ bne ._6 @cond_branch\n\
+ mov r0, #0x1\n\
+ bl Menu_MoveCursor\n\
+._6:\n\
+ ldrh r1, [r4, #0x2e]\n\
+ cmp r1, #0x1\n\
+ beq ._7 @cond_branch\n\
+ ldr r0, ._10 + 4\n\
+ cmp r1, r0\n\
+ bne ._8 @cond_branch\n\
+ ldr r1, ._10 + 8\n\
+ mov r0, #0x1\n\
+ strh r0, [r1]\n\
+._7:\n\
+ ldr r4, ._10 + 12\n\
+ bl Menu_GetCursorPos\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x15\n\
+ add r4, r4, #0x4\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._13\n\
+._11:\n\
+ .align 2, 0\n\
+._10:\n\
+ .word gMain\n\
+ .word 0x101\n\
+ .word gSpecialVar_0x8004\n\
+ .word gUnkDebug4Menu\n\
+._8:\n\
+ cmp r1, #0x2\n\
+ beq ._12 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._13\n\
+._12:\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+._13:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138CC4(void)
+{
+ asm("\n\
+ push {lr}\n\
+ add sp, sp, #0xfffffff8\n\
+ ldr r1, ._14\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ bl Menu_EraseScreen\n\
+ mov r0, #0x13\n\
+ mov r1, #0x0\n\
+ mov r2, #0x1d\n\
+ mov r3, #0xc\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r3, ._14 + 4\n\
+ mov r0, #0x14\n\
+ mov r1, #0x1\n\
+ mov r2, #0x5\n\
+ bl Menu_PrintItems\n\
+ mov r0, #0x0\n\
+ str r0, [sp]\n\
+ mov r0, #0x8\n\
+ str r0, [sp, #0x4]\n\
+ mov r0, #0x0\n\
+ mov r1, #0x14\n\
+ mov r2, #0x1\n\
+ mov r3, #0x5\n\
+ bl InitMenu\n\
+ ldr r1, ._14 + 8\n\
+ ldr r0, ._14 + 12\n\
+ str r0, [r1]\n\
+ mov r0, #0x0\n\
+ add sp, sp, #0x8\n\
+ pop {r1}\n\
+ bx r1\n\
+._15:\n\
+ .align 2, 0\n\
+._14:\n\
+ .word gSpecialVar_0x8004\n\
+ .word gUnkDebug4Menu\n\
+ .word gCallback_03004AE8\n\
+ .word debug_sub_8138C54+1");
+}
+
+#endif
+
static void CableCarTask1(u8 taskId)
{
if (!gPaletteFade.active)
@@ -198,6 +376,46 @@ void CableCar(void)
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
}
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8138D74(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r1, ._21\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ bl CloseMenu\n\
+ bl CableCar\n\
+ pop {r0}\n\
+ bx r0\n\
+._22:\n\
+ .align 2, 0\n\
+._21:\n\
+ .word gSpecialVar_0x8004");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138D8C(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r1, ._23\n\
+ mov r0, #0x1\n\
+ strh r0, [r1]\n\
+ bl CloseMenu\n\
+ bl CableCar\n\
+ pop {r0}\n\
+ bx r0\n\
+._24:\n\
+ .align 2, 0\n\
+._23:\n\
+ .word gSpecialVar_0x8004");
+}
+
+#endif
+
static void CableCarMainCallback_Setup(void)
{
u8 i;
diff --git a/src/scene/new_game.c b/src/scene/new_game.c
index 0279f99c6..d954fb3c8 100644
--- a/src/scene/new_game.c
+++ b/src/scene/new_game.c
@@ -1,4 +1,7 @@
#include "global.h"
+#include "constants/maps.h"
+#include "constants/species.h"
+#include "clock.h"
#include "new_game.h"
#include "battle_records.h"
#include "berry.h"
@@ -20,6 +23,7 @@
#include "pokemon_storage_system.h"
#include "random.h"
#include "roamer.h"
+#include "script_pokemon_80C4.h"
#include "overworld.h"
#include "rtc.h"
#include "script.h"
@@ -27,6 +31,10 @@
#include "text.h"
#include "tv.h"
+#ifdef DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
EWRAM_DATA u8 gDifferentSaveFile = 0;
EWRAM_DATA u8 gUnknown_020297ED = 0;
@@ -42,6 +50,18 @@ static const struct ContestWinner sEmptyMuseumPortrait =
.trainerName = {EOS},
};
+#ifdef DEBUG
+const s8 gUnknown_Debug_0823C788[][2] =
+{
+ { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) },
+ { MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_2F), MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_2F) },
+ { MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN) },
+ { MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F) }
+};
+
+const u8 gUnknown_Debug_0823C790[] = _("KRÖTE");
+#endif
+
void write_word_to_mem(u32 var, u8 *dataPtr)
{
dataPtr[0] = var;
@@ -94,6 +114,30 @@ void ZeroBattleTowerData(void)
CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower));
}
+#ifdef DEBUG
+void debug_sub_8052E04()
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_Debug_0823C788[i][0] == gSaveBlock1.location.mapGroup &&
+ gUnknown_Debug_0823C788[i][1] == gSaveBlock1.location.mapNum)
+ {
+ break;
+ }
+ }
+
+ i++;
+ if (i >= 4)
+ {
+ i = 0;
+ }
+
+ Overworld_SetWarpDestination(gUnknown_Debug_0823C788[i][0], gUnknown_Debug_0823C788[i][1], -1, -1, -1);
+}
+#endif
+
void WarpToTruck(void)
{
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
@@ -109,6 +153,9 @@ void ClearSav2(void)
void sub_8052E4C(void)
{
gDifferentSaveFile = 0;
+#ifdef DEBUG
+ gUnknown_020297ED = 0;
+#endif
sub_808C0A0();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
@@ -161,3 +208,33 @@ void NewGameInitData(void)
WarpToTruck();
ScriptContext2_RunNewScript(gUnknown_0819FA81);
}
+
+#ifdef DEBUG
+extern void debug_sub_80A3904(void);
+extern void debug_sub_80A3714(void);
+extern void debug_sub_8120F98(void);
+extern void unref_sub_8070F90(void);
+
+void debug_sub_8057508(bool32 arg0)
+{
+ gUnknown_020297ED = 1;
+ NewGameInitData();
+ gSaveBlock1.money = 999999;
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
+ FlagSet(FLAG_SYS_B_DASH);
+ ScriptGiveMon(SPECIES_TREECKO, 99, 0, 0, 0, 0);
+
+ if (arg0 == TRUE)
+ SetMonData(&gPlayerParty[0], MON_DATA_NICKNAME, gUnknown_Debug_0823C790);
+
+ debug_sub_80A3904();
+ debug_sub_80A3714();
+ debug_sub_8120F98();
+ FlagSet(FLAG_SYS_HIPSTER_MEET);
+ sub_80EB8EC();
+ unref_sub_8070F90();
+ InitTimeBasedEvents();
+}
+#endif
diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c
index 202b752a6..8d5c4da13 100644
--- a/src/scene/title_screen.c
+++ b/src/scene/title_screen.c
@@ -8,6 +8,7 @@
#include "m4a.h"
#include "main.h"
#include "main_menu.h"
+#include "overworld.h"
#include "palette.h"
#include "reset_rtc_screen.h"
#include "sound.h"
@@ -353,6 +354,7 @@ static void Task_TitleScreenPhase1(u8);
static void Task_TitleScreenPhase2(u8);
static void Task_TitleScreenPhase3(u8);
static void CB2_GoToMainMenu(void);
+static void CB2_GoToTestMenu(void);
static void CB2_GoToClearSaveDataScreen(void);
static void CB2_GoToResetRtcScreen(void);
static void CB2_GoToCopyrightScreen(void);
@@ -829,6 +831,13 @@ static void Task_TitleScreenPhase3(u8 taskId)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_GoToResetRtcScreen);
}
+#ifdef DEBUG
+ else if (gMain.heldKeys == SELECT_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ SetMainCallback2(CB2_GoToTestMenu);
+ }
+#endif
else
{
REG_BG2Y = 0;
@@ -855,6 +864,14 @@ static void CB2_GoToMainMenu(void)
SetMainCallback2(CB2_InitMainMenu);
}
+#ifdef DEBUG
+static void CB2_GoToTestMenu(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitTestMenu);
+}
+#endif
+
static void CB2_GoToCopyrightScreen(void)
{
if (!UpdatePaletteFade())