summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_2.c7963
-rw-r--r--src/battle/battle_4.c342
-rw-r--r--src/battle/battle_ai.c209
-rw-r--r--src/battle/battle_controller_opponent.c548
-rw-r--r--src/battle/battle_controller_player.c1402
-rw-r--r--src/battle/battle_controller_safari.c231
-rw-r--r--src/battle/battle_interface.c669
-rw-r--r--src/battle/battle_records.c89
-rw-r--r--src/battle/battle_util.c4473
-rw-r--r--src/contest.c840
-rw-r--r--src/data/pokedex_entries_de.h3
-rw-r--r--src/data/pokedex_entries_en.h2
-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/start_menu_debug.c6130
-rw-r--r--src/debug/taya_debug_window.c2122
-rw-r--r--src/debug/tomomichi_debug_menu.c8643
-rw-r--r--src/debug/unk_debug_menu_3.c804
-rw-r--r--src/debug/watanabe_debug_menu.c9846
-rw-r--r--src/engine/cable_club.c505
-rw-r--r--src/engine/clock.c3
-rw-r--r--src/engine/link.c167
-rw-r--r--src/engine/mystery_event_menu.c460
-rw-r--r--src/engine/reset_rtc_screen.c323
-rw-r--r--src/engine/rtc.c29
-rw-r--r--src/engine/save.c89
-rw-r--r--src/engine/save_failed_screen.c192
-rw-r--r--src/engine/sprite.c16
-rw-r--r--src/engine/task.c10
-rw-r--r--src/engine/trade.c2
-rw-r--r--src/engine/trainer_card.c97
-rw-r--r--src/field/battle_tower.c2
-rw-r--r--src/field/berry.c521
-rw-r--r--src/field/berry_tag_screen.c2
-rw-r--r--src/field/bike.c20
-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_effect_helpers.c2
-rw-r--r--src/field/field_fadetransition.c16
-rw-r--r--src/field/field_map_obj.c518
-rw-r--r--src/field/field_player_avatar.c195
-rw-r--r--src/field/field_weather.c181
-rw-r--r--src/field/fldeff_cut.c109
-rw-r--r--src/field/fldeff_flash.c30
-rw-r--r--src/field/fldeff_secretpower.c96
-rw-r--r--src/field/fldeff_strength.c23
-rw-r--r--src/field/item_menu.c516
-rw-r--r--src/field/mauville_man.c83
-rw-r--r--src/field/overworld.c95
-rw-r--r--src/field/party_menu.c523
-rw-r--r--src/field/pokeblock.c51
-rw-r--r--src/field/region_map.c22
-rw-r--r--src/field/roamer.c19
-rw-r--r--src/field/safari_zone.c2
-rw-r--r--src/field/secret_base.c173
-rw-r--r--src/field/shop.c21
-rw-r--r--src/field/slot_machine.c2484
-rw-r--r--src/field/start_menu.c303
-rw-r--r--src/field/trader.c2
-rw-r--r--src/field/wild_encounter.c41
-rw-r--r--src/pokemon/mail.c1945
-rw-r--r--src/pokemon/pokedex.c4
-rw-r--r--src/pokemon/pokemon_1.c322
-rw-r--r--src/pokemon/pokemon_menu.c134
-rw-r--r--src/pokemon/pokemon_storage_system.c3
-rw-r--r--src/pokemon/pokemon_summary_screen.c556
-rw-r--r--src/pokenav_before.c5192
-rw-r--r--src/rom3.c14
-rw-r--r--src/rom6.c18
-rw-r--r--src/roulette.c1098
-rw-r--r--src/scene/berry_blender.c21
-rw-r--r--src/scene/cable_car.c218
-rw-r--r--src/scene/cute_sketch.c344
-rw-r--r--src/scene/new_game.c77
-rw-r--r--src/scene/title_screen.c17
-rw-r--r--src/strings.c14
78 files changed, 70442 insertions, 145 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index b00c35312..696f1fde0 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 gMysteryEventScriptCmdTableEnd+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 ScanlineEffect_Clear\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 ScanlineEffect_SetParams\n"
+ " ldr r4, ._10 + 32\n"
+ " add r0, r4, #0\n"
+ " bl Text_LoadWindowTemplate\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 BattleSetup_GetTerrain\n"
+ " ldr r1, ._10 + 72\n"
+ " strb r0, [r1]\n"
+ "._7:\n"
+ " ldr r0, ._10 + 76\n"
+ " add r1, r4, #0\n"
+ " bl Text_InitWindowWithTemplate\n"
+ " ldr r0, ._10 + 80\n"
+ " ldr r1, ._10 + 84\n"
+ " bl Text_InitWindowWithTemplate\n"
+ " ldr r0, ._10 + 88\n"
+ " ldr r1, ._10 + 92\n"
+ " bl Text_InitWindowWithTemplate\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 gBattle_WIN0H\n"
+ " .word gBattle_WIN0V\n"
+ " .word gScanlineEffectRegBuffers\n"
+ " .word gUnknown_081F9674\n"
+ " .word 0xff10\n"
+ " .word gWindowTemplate_81E6C58\n"
+ " .word gBattle_BG0_X\n"
+ " .word gBattle_BG0_Y\n"
+ " .word gBattle_BG1_X\n"
+ " .word gBattle_BG1_Y\n"
+ " .word gBattle_BG2_X\n"
+ " .word gBattle_BG2_Y\n"
+ " .word gBattle_BG3_X\n"
+ " .word gBattle_BG3_Y\n"
+ " .word gUnknown_02023A14+0x50\n"
+ " .word gBattleTerrain\n"
+ " .word gUnknown_03004210\n"
+ " .word gUnknown_030041D0\n"
+ " .word gWindowTemplate_81E71D0\n"
+ " .word gUnknown_03004250\n"
+ " .word gWindowTemplate_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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 BattleMainCB2+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);
}
+#if 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 gMysteryEventScriptCmdTableEnd+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
+#if 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 BattleMainCB2+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 gMysteryEventScriptCmdTableEnd+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 gSpecialVar_Result\n"
+ " .word gBattleOutcome\n"
+ " .word 0x43d\n"
+ " .word gScanlineEffect\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 Text_UpdateWindowInBattle\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 gMysteryEventScriptCmdTableEnd+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 LZDecompressWram\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 gMysteryEventScriptCmdTableEnd+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 ScanlineEffect_Stop\n"
+ " ldr r4, ._507 + 84\n"
+ " add r0, r4, #0\n"
+ " bl Text_LoadWindowTemplate\n"
+ " ldr r0, ._507 + 88\n"
+ " add r1, r4, #0\n"
+ " bl Text_InitWindowWithTemplate\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 gBattle_BG0_X\n"
+ " .word gBattle_BG0_Y\n"
+ " .word gBattle_BG1_X\n"
+ " .word gBattle_BG1_Y\n"
+ " .word gBattle_BG2_X\n"
+ " .word gBattle_BG2_Y\n"
+ " .word gBattle_BG3_X\n"
+ " .word gBattle_BG3_Y\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 gWindowTemplate_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 gCB2_AfterEvolution\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 gMysteryEventScriptCmdTableEnd+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 gBattle_BG1_X\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 gBattle_BG1_X\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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gBattle_BG0_X\n"
+ " .word gBattle_BG0_Y\n"
+ " .word gBattle_BG1_X\n"
+ " .word gBattle_BG1_Y\n"
+ " .word gBattle_BG2_X\n"
+ " .word gBattle_BG2_Y\n"
+ " .word gBattle_BG3_X\n"
+ " .word gBattle_BG3_Y\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 ScanlineEffect_InitHBlankDmaTransfer\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._777:\n"
+ " .align 2, 0\n"
+ "._776:\n"
+ " .word 0x4000008\n"
+ " .word 0x9803\n"
+ " .word gBattle_BG0_X\n"
+ " .word gBattle_BG0_Y\n"
+ " .word gBattle_BG1_X\n"
+ " .word gBattle_BG1_Y\n"
+ " .word gBattle_BG2_X\n"
+ " .word gBattle_BG2_Y\n"
+ " .word gBattle_BG3_X\n"
+ " .word gBattle_BG3_Y\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 Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " ldr r0, ._823 + 8\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldrb r4, [r7]\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x5\n"
+ " bl gMysteryEventScriptCmdTableEnd+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 Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_LoadWindowTemplate\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 Text_InitWindowWithTemplate\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 gMysteryEventScriptCmdTableEnd+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 gWindowTemplate_81E6C58\n"
+ " .word gBattle_BG0_X\n"
+ " .word gBattle_BG0_Y\n"
+ " .word gBattle_BG1_X\n"
+ " .word gBattle_BG1_Y\n"
+ " .word gBattle_BG2_X\n"
+ " .word gBattle_BG2_Y\n"
+ " .word gBattle_BG3_X\n"
+ " .word gBattle_BG3_Y\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 Text_UpdateWindowInBattle\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r7, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_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 Text_InitWindow\n"
+ "._904:\n"
+ " add r5, r4, #0\n"
+ " ldr r4, ._907 + 8\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 BattleText_YesNo\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 Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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,642 @@ 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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"
+ );
+}
+
+__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 gMysteryEventScriptCmdTableEnd+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 gLastHitByType\n"
+ " .word gLastLandedMoves\n"
+ " .word gLastUsedMove\n"
+ " .word gDisableStructs\n"
+ " .word gUnknown_02024C2C\n"
+ " .word gLockedMoves\n"
+ " .word gStatuses3\n"
+ " .word gUnknown_02024C70\n"
+ " .word gUnknown_02024C5C\n"
+ " .word +0x2017100\n"
+ " .word gSideTimers\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_8010824(void)
{
gBattleMainFunc();
@@ -1663,6 +9625,7 @@ void sub_8010874(void)
gBattleResults.caughtNick[i] = 0;
}
}
+#endif
void SwitchInClearSetData(void)
{
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 3763fc309..038b4f5cf 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -1090,7 +1090,7 @@ static const u8 sTerrainToType[] =
TYPE_NORMAL, // plain
};
-static const u8 sBallCatchBonuses[] =
+const u8 sBallCatchBonuses[] =
{
20, 15, 10, 15 // Ultra, Great, Poke, Safari
};
@@ -5018,7 +5018,156 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\
}
#endif // NONMATCHING
-
+#if DEBUG
+__attribute__((naked))
+static void atk15_seteffectwithchance(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r2, ._1037\n\
+ ldr r0, ._1037 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x20\n\
+ bne ._1035 @cond_branch\n\
+ ldr r2, ._1037 + 8\n\
+ ldr r0, ._1037 + 12\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x5]\n\
+ lsl r4, r0, #0x1\n\
+ b ._1036\n\
+._1038:\n\
+ .align 2, 0\n\
+._1037:\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+._1035:\n\
+ ldr r2, ._1045\n\
+ ldr r0, ._1045 + 4\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r4, [r0, #0x5]\n\
+._1036:\n\
+ ldr r0, ._1045 + 8\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ ldr r2, ._1045 + 12\n\
+ cmp r0, #0\n\
+ beq ._1039 @cond_branch\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1040 @cond_branch\n\
+ ldr r0, ._1045 + 16\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1050 @cond_branch\n\
+._1039:\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1043 @cond_branch\n\
+._1040:\n\
+ ldr r0, ._1045 + 16\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1043 @cond_branch\n\
+ ldr r2, ._1045 + 12\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x3]\n\
+ b ._1044\n\
+._1046:\n\
+ .align 2, 0\n\
+._1045:\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1043:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x64\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ cmp r0, r4\n\
+ bhi ._1049 @cond_branch\n\
+ ldr r0, ._1052\n\
+ ldrb r0, [r0, #0x3]\n\
+ cmp r0, #0\n\
+ beq ._1049 @cond_branch\n\
+ ldr r0, ._1052 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1049 @cond_branch\n\
+ cmp r4, #0x63\n\
+ bls ._1050 @cond_branch\n\
+._1044:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x80\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1053:\n\
+ .align 2, 0\n\
+._1052:\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1050:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1049:\n\
+ ldr r1, ._1055\n\
+ ldr r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ str r0, [r1]\n\
+._1054:\n\
+ ldr r0, ._1055 + 4\n\
+ mov r1, #0x0\n\
+ strb r1, [r0, #0x3]\n\
+ ldr r0, ._1055 + 8\n\
+ ldr r2, ._1055 + 12\n\
+ add r0, r0, r2\n\
+ strb r1, [r0]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1056:\n\
+ .align 2, 0\n\
+._1055:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleCommunication\n\
+ .word +0x2000000\n\
+ .word 0x16112");
+}
+#else
static void atk15_seteffectwithchance(void)
{
u32 PercentChance;
@@ -5043,6 +5192,7 @@ static void atk15_seteffectwithchance(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattleStruct->unk16112 = 0;
}
+#endif
static void atk16_seteffectprimary(void)
{
@@ -12620,6 +12770,193 @@ static void atk9D_mimicattackcopy(void)
}
}
+#if DEBUG
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r6, ._3076\n\
+ ldrb r2, [r6]\n\
+ lsl r1, r2, #0x1\n\
+ ldr r0, ._3076 + 4\n\
+ add r3, r1, r0\n\
+ ldr r5, ._3076 + 8\n\
+ mov r4, #0x58\n\
+ add r0, r2, #0\n\
+ mul r0, r0, r4\n\
+ add r1, r0, r5\n\
+ ldrh r0, [r1, #0xe]\n\
+ cmp r0, #0\n\
+ bne ._3071 @cond_branch\n\
+ ldrh r2, [r1, #0x10]\n\
+ cmp r2, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r1, #0x12]\n\
+ cmp r0, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0\n\
+ bne ._3072 @cond_branch\n\
+ strh r2, [r3]\n\
+._3072:\n\
+ ldr r1, ._3076 + 12\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r5\n\
+ ldrh r5, [r0, #0x10]\n\
+ ldrh r2, [r0, #0x12]\n\
+ add r7, r1, #0\n\
+ cmp r5, r2\n\
+ bcs ._3073 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, r2\n\
+ beq ._3074 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ b ._3079\n\
+._3077:\n\
+ .align 2, 0\n\
+._3076:\n\
+ .word gBankAttacker\n\
+ .word +0x20160b4\n\
+ .word gBattleMons\n\
+ .word gCurrentMove\n\
+._3073:\n\
+ ldrh r4, [r3]\n\
+ add r1, r4, #0\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._3078 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._3079\n\
+._3078:\n\
+ cmp r1, r2\n\
+ bne ._3080 @cond_branch\n\
+._3074:\n\
+ strh r5, [r3]\n\
+ b ._3081\n\
+._3080:\n\
+ add r0, r4, #1\n\
+._3079:\n\
+ strh r0, [r3]\n\
+._3081:\n\
+ ldr r4, ._3083\n\
+ ldr r2, [r4]\n\
+ ldr r0, ._3083 + 4\n\
+ and r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldr r6, ._3083 + 8\n\
+ ldr r5, ._3083 + 12\n\
+ ldr r3, ._3083 + 16\n\
+ ldrh r1, [r7]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ str r0, [r6]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x4\n\
+ orr r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldrh r0, [r7]\n\
+ b ._3082\n\
+._3084:\n\
+ .align 2, 0\n\
+._3083:\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+._3071:\n\
+ ldr r7, ._3090\n\
+ mov r6, #0xb1\n\
+ lsl r6, r6, #0x1\n\
+ ldr r5, ._3090 + 4\n\
+ ldr r0, ._3090 + 8\n\
+ mov r8, r0\n\
+._3089:\n\
+ bl Random\n\
+ ldr r2, ._3090 + 12\n\
+ add r1, r2, #0\n\
+ and r0, r0, r1\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi ._3089 @cond_branch\n\
+ mov r0, #0x3\n\
+._3086:\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, #0\n\
+ bge ._3086 @cond_branch\n\
+ ldr r4, ._3090\n\
+ ldrh r2, [r4]\n\
+ ldr r3, ._3090 + 16\n\
+ sub r0, r5, #2\n\
+._3088:\n\
+ add r0, r0, #0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq ._3087 @cond_branch\n\
+ cmp r1, r3\n\
+ bne ._3088 @cond_branch\n\
+._3087:\n\
+ ldr r0, ._3090 + 16\n\
+ cmp r1, r0\n\
+ bne ._3089 @cond_branch\n\
+ ldr r2, ._3090 + 20\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._3090 + 24\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, ._3090 + 28\n\
+ ldr r2, ._3090 + 32\n\
+ ldrh r1, [r4]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+._3082:\n\
+ mov r1, #0x0\n\
+ bl GetMoveTarget\n\
+ ldr r1, ._3090 + 36\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._3091:\n\
+ .align 2, 0\n\
+._3090:\n\
+ .word gCurrentMove\n\
+ .word sMovesForbiddenToCopy\n\
+ .word gBattlescriptCurrInstr\n\
+ .word 0x1ff\n\
+ .word 0xffff\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+ .word gBankTarget");
+}
+#else
#ifdef NONMATCHING
static void atk9E_metronome(void)
{
@@ -12721,6 +13058,7 @@ _0802795C: .4byte gBankTarget\n\
.syntax divided");
}
#endif // NONMATCHING
+#endif
static void atk9F_dmgtolevel(void)
{
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 2ac9df2b9..ffc9281e4 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 CheckMoveLimitations\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_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 5947053b6..cc69c0120 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -1209,6 +1209,243 @@ void sub_8034B74(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void OpponentHandleTrainerThrow(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6}\n\
+ ldr r0, ._480\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._478 @cond_branch\n\
+ ldr r0, ._480 + 4\n\
+ ldr r1, ._480 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ b ._491\n\
+._481:\n\
+ .align 2, 0\n\
+._480:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word +0x2000000\n\
+ .word 0x160a3\n\
+._478:\n\
+ ldr r3, ._484\n\
+ ldrh r1, [r3]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x3\n\
+ cmp r1, r0\n\
+ bne ._482 @cond_branch\n\
+ bl GetSecretBaseTrainerPicIndex\n\
+ b ._487\n\
+._485:\n\
+ .align 2, 0\n\
+._484:\n\
+ .word gTrainerBattleOpponent\n\
+._482:\n\
+ ldr r0, ._488\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._486 @cond_branch\n\
+ bl get_trainer_class_pic_index\n\
+ b ._487\n\
+._489:\n\
+ .align 2, 0\n\
+._488:\n\
+ .word gBattleTypeFlags\n\
+._486:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._490 @cond_branch\n\
+ bl GetEReaderTrainerPicIndex\n\
+._487:\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._491\n\
+._490:\n\
+ ldr r2, ._492\n\
+ ldrh r1, [r3]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x3]\n\
+._491:\n\
+ mov r9, r0\n\
+ ldr r2, ._492 + 4\n\
+ mov r8, r2\n\
+ ldrb r1, [r2]\n\
+ bl sub_8031A6C\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ add r1, r0, #0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ mov r0, r9\n\
+ bl GetMonSpriteTemplate_803C5A0\n\
+ ldr r5, ._492 + 8\n\
+ ldr r1, ._492 + 12\n\
+ mov r2, r9\n\
+ lsl r0, r2, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r4, #0x8\n\
+ sub r4, r4, r0\n\
+ lsl r4, r4, #0x12\n\
+ mov r0, #0xa0\n\
+ lsl r0, r0, #0xe\n\
+ add r4, r4, r0\n\
+ asr r4, r4, #0x10\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ bl sub_8079E90\n\
+ add r3, r0, #0\n\
+ lsl r3, r3, #0x18\n\
+ lsr r3, r3, #0x18\n\
+ add r0, r5, #0\n\
+ mov r1, #0xb0\n\
+ add r2, r4, #0\n\
+ bl CreateSprite\n\
+ ldr r5, ._492 + 16\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r5\n\
+ strb r0, [r1]\n\
+ ldr r4, ._492 + 20\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x4\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r4\n\
+ ldr r1, ._492 + 24\n\
+ strh r1, [r0, #0x24]\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x4\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x2\n\
+ strh r1, [r0, #0x2e]\n\
+ ldr r0, ._492 + 28\n\
+ mov r1, r9\n\
+ lsl r6, r1, #0x3\n\
+ add r0, r6, r0\n\
+ ldrh r0, [r0, #0x4]\n\
+ bl IndexOfSpritePaletteTag\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r5\n\
+ ldrb r1, [r1]\n\
+ lsl r2, r1, #0x4\n\
+ add r2, r2, r1\n\
+ lsl r2, r2, #0x2\n\
+ add r2, r2, r4\n\
+ lsl r0, r0, #0x4\n\
+ ldrb r3, [r2, #0x5]\n\
+ mov r1, #0xf\n\
+ and r1, r1, r3\n\
+ orr r1, r1, r0\n\
+ strb r1, [r2, #0x5]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ lsl r1, r0, #0x4\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r4\n\
+ ldrh r0, [r1, #0x4]\n\
+ lsl r0, r0, #0x16\n\
+ lsr r0, r0, #0x16\n\
+ strh r0, [r1, #0x38]\n\
+ ldr r0, ._492 + 32\n\
+ add r6, r6, r0\n\
+ ldrh r0, [r6, #0x6]\n\
+ bl GetSpriteTileStartByTag\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r5\n\
+ ldrb r2, [r1]\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r2\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r4\n\
+ ldr r2, ._492 + 36\n\
+ and r2, r2, r0\n\
+ ldrh r3, [r1, #0x4]\n\
+ ldr r0, ._492 + 40\n\
+ and r0, r0, r3\n\
+ orr r0, r0, r2\n\
+ strh r0, [r1, #0x4]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x4\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r4\n\
+ mov r2, r9\n\
+ strh r2, [r0, #0x6]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x4\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r4, r4, #0x1c\n\
+ add r0, r0, r4\n\
+ ldr r1, ._492 + 44\n\
+ str r1, [r0]\n\
+ ldr r1, ._492 + 48\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._492 + 52\n\
+ str r1, [r0]\n\
+ pop {r3, r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._493:\n\
+ .align 2, 0\n\
+._492:\n\
+ .word gTrainers\n\
+ .word gActiveBank\n\
+ .word gUnknown_02024E8C\n\
+ .word gTrainerFrontPicCoords\n\
+ .word gObjectBankIDs\n\
+ .word gSprites\n\
+ .word 0xff10\n\
+ .word gTrainerFrontPicPaletteTable\n\
+ .word gTrainerFrontPicTable\n\
+ .word 0x3ff\n\
+ .word 0xfffffc00\n\
+ .word sub_80313A0+1\n\
+ .word gBattleBankFunc\n\
+ .word sub_8032B4C+1");
+}
+#else
void OpponentHandleTrainerThrow(void)
{
u32 trainerPicIndex;
@@ -1238,6 +1475,7 @@ void OpponentHandleTrainerThrow(void)
gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8032B4C;
}
+#endif
void OpponentHandleTrainerSlide(void)
{
@@ -1427,6 +1665,315 @@ void OpponentHandlecmd19(void)
OpponentBufferExecCompleted();
}
+#if DEBUG
+__attribute__((naked))
+void OpponentHandlecmd20(void)
+{
+ 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 r6, ._549\n\
+ ldrb r0, [r6]\n\
+ lsl r0, r0, #0x9\n\
+ ldr r1, ._549 + 4\n\
+ add r5, r0, r1\n\
+ ldr r2, ._549 + 8\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ mov sl, r6\n\
+ cmp r0, #0\n\
+ beq ._546 @cond_branch\n\
+ ldr r0, ._549 + 12\n\
+ mov r9, r0\n\
+ ldr r1, ._549 + 16\n\
+ mov ip, r1\n\
+ add r7, r6, #0\n\
+ mov r0, #0x2\n\
+ mov r8, r0\n\
+ ldr r6, ._549 + 20\n\
+._552:\n\
+ ldrb r1, [r7]\n\
+ mov r0, r8\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r6\n\
+ mov r1, ip\n\
+ add r3, r0, r1\n\
+ ldrb r1, [r3]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r2, #0\n\
+ beq ._547 @cond_branch\n\
+ add r0, r4, #1\n\
+ strb r0, [r3]\n\
+ b ._548\n\
+._550:\n\
+ .align 2, 0\n\
+._549:\n\
+ .word gActiveBank\n\
+ .word gUnknown_02023A64\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoves\n\
+ .word +0x2000000\n\
+ .word 0x1609e\n\
+._547:\n\
+ strb r2, [r3]\n\
+._548:\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x19\n\
+ add r1, r1, r6\n\
+ add r1, r1, ip\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x3\n\
+ bls ._551 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+._551:\n\
+ cmp r2, #0\n\
+ beq ._552 @cond_branch\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r9\n\
+ ldrb r3, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._553 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ b ._561\n\
+._553:\n\
+ ldr r0, ._559\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._557 @cond_branch\n\
+ ldr r0, ._559 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r5, #0x2\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._556 @cond_branch\n\
+ cmp r3, #0\n\
+ bne ._557 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ mov r1, #0x2\n\
+ eor r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._558\n\
+._560:\n\
+ .align 2, 0\n\
+._559:\n\
+ .word gBattleTypeFlags\n\
+ .word gUnknown_02023A14+0x50\n\
+._556:\n\
+ bl Random\n\
+ add r1, r5, #0\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r0, r1, #0x10\n\
+ b ._561\n\
+._557:\n\
+ mov r0, #0x0\n\
+._558:\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+._561:\n\
+ lsl r2, r0, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+._569:\n\
+ bl Emitcmd33\n\
+._573:\n\
+ bl OpponentBufferExecCompleted\n\
+ b ._562\n\
+._546:\n\
+ ldr r0, ._567\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x93\n\
+ lsl r0, r0, #0x3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._563 @cond_branch\n\
+ bl BattleAI_SetupAIData\n\
+ bl BattleAI_GetAIActionToUse\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x4\n\
+ beq ._564 @cond_branch\n\
+ cmp r4, #0x5\n\
+ bne ._565 @cond_branch\n\
+ mov r0, #0x1\n\
+ mov r1, #0x4\n\
+ b ._566\n\
+._568:\n\
+ .align 2, 0\n\
+._567:\n\
+ .word gBattleTypeFlags\n\
+._564:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x3\n\
+._566:\n\
+ mov r2, #0x0\n\
+ b ._569\n\
+._565:\n\
+ ldr r3, ._574\n\
+ lsl r0, r4, #0x1\n\
+ add r2, r5, r0\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._570 @cond_branch\n\
+ ldr r1, ._574 + 4\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1]\n\
+._570:\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ ldr r5, ._574 + 4\n\
+ strb r0, [r5]\n\
+ ldr r0, ._574 + 8\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._574 + 12\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl GetBankByIdentity\n\
+ strb r0, [r5]\n\
+._572:\n\
+ ldr r0, ._574 + 4\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._573\n\
+._575:\n\
+ .align 2, 0\n\
+._574:\n\
+ .word gBattleMoves\n\
+ .word gBankTarget\n\
+ .word gAbsentBankFlags\n\
+ .word gBitTable\n\
+._563:\n\
+ mov r6, #0x3\n\
+._576:\n\
+ bl Random\n\
+ add r4, r0, #0\n\
+ and r4, r4, r6\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ cmp r2, #0\n\
+ beq ._576 @cond_branch\n\
+ ldr r1, ._579\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r0, ._579 + 4\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ b ._578\n\
+._580:\n\
+ .align 2, 0\n\
+._579:\n\
+ .word gBattleMoves\n\
+ .word gActiveBank\n\
+._577:\n\
+ ldr r0, ._583\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._581 @cond_branch\n\
+ bl Random\n\
+ mov r1, #0x2\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r1, #0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+._578:\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._582\n\
+._584:\n\
+ .align 2, 0\n\
+._583:\n\
+ .word gBattleTypeFlags\n\
+._581:\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+._582:\n\
+ bl OpponentBufferExecCompleted\n\
+._562:\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");
+}
+#else
#ifdef NONMATCHING
void OpponentHandlecmd20(void)
{
@@ -1670,6 +2217,7 @@ _0803558A:\n\
.syntax divided\n");
}
#endif
+#endif
void OpponentHandleOpenBag(void)
{
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index f036e841f..7e3655e4a 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -617,6 +617,725 @@ struct ChooseMoveStruct
const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+#if DEBUG
+__attribute__((naked))
+void sub_802C68C(void)
+{
+ 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 r0, #0x0\n\
+ mov r8, r0\n\
+ mov r7, #0x0\n\
+ ldr r1, ._131\n\
+ ldrb r2, [r1]\n\
+ lsl r1, r2, #0x9\n\
+ ldr r0, ._131 + 4\n\
+ add r6, r1, r0\n\
+ ldr r0, ._131 + 8\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r5, #0x1\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._126 @cond_branch\n\
+ b ._127\n\
+._126:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r1, ._131 + 12\n\
+ ldr r2, ._131\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1\n\
+ add r1, r6, r0\n\
+ ldrh r0, [r1]\n\
+ cmp r0, #0xae\n\
+ bne ._128 @cond_branch\n\
+ ldrb r0, [r6, #0x12]\n\
+ mov r4, #0x0\n\
+ cmp r0, #0x7\n\
+ beq ._130 @cond_branch\n\
+ ldrb r1, [r6, #0x13]\n\
+ mov r0, #0x7\n\
+ eor r1, r1, r0\n\
+ neg r0, r1\n\
+ orr r0, r0, r1\n\
+ asr r4, r0, #0x1f\n\
+ mov r0, #0x10\n\
+ and r4, r4, r0\n\
+ b ._130\n\
+._132:\n\
+ .align 2, 0\n\
+._131:\n\
+ .word gActiveBank\n\
+ .word gUnknown_02023A64\n\
+ .word gMain\n\
+ .word gMoveSelectionCursor\n\
+._128:\n\
+ ldr r2, ._135\n\
+ ldrh r1, [r1]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r4, [r0, #0x6]\n\
+._130:\n\
+ mov r0, #0x10\n\
+ and r0, r0, r4\n\
+ cmp r0, #0\n\
+ beq ._133 @cond_branch\n\
+ ldr r0, ._135 + 4\n\
+ ldr r1, ._135 + 8\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ b ._134\n\
+._136:\n\
+ .align 2, 0\n\
+._135:\n\
+ .word gBattleMoves\n\
+ .word gUnknown_03004344\n\
+ .word gActiveBank\n\
+._133:\n\
+ ldr r0, ._141\n\
+ ldrb r0, [r0]\n\
+ bl GetBankIdentity\n\
+ add r1, r0, #0\n\
+ mov r2, #0x1\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ eor r0, r0, r2\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._141 + 4\n\
+ strb r0, [r1]\n\
+._134:\n\
+ ldr r3, ._141 + 8\n\
+ ldr r5, ._141\n\
+ ldrb r2, [r5]\n\
+ lsl r1, r2, #0x9\n\
+ add r0, r3, #1\n\
+ add r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._137 @cond_branch\n\
+ mov r0, #0x2\n\
+ and r0, r0, r4\n\
+ cmp r0, #0\n\
+ beq ._146 @cond_branch\n\
+ add r0, r3, #2\n\
+ add r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._146 @cond_branch\n\
+ mov r0, #0x1\n\
+ add r8, r8, r0\n\
+ b ._146\n\
+._142:\n\
+ .align 2, 0\n\
+._141:\n\
+ .word gActiveBank\n\
+ .word gUnknown_03004344\n\
+ .word gBattleBufferA\n\
+._137:\n\
+ mov r0, #0x7d\n\
+ and r0, r0, r4\n\
+ cmp r0, #0\n\
+ bne ._143 @cond_branch\n\
+ mov r1, #0x1\n\
+ add r8, r8, r1\n\
+._143:\n\
+ ldr r0, ._149\n\
+ add r0, r2, r0\n\
+ add r1, r6, #0\n\
+ add r1, r1, #0x8\n\
+ ldrb r0, [r0]\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0\n\
+ beq ._144 @cond_branch\n\
+ mov r0, #0x12\n\
+ and r0, r0, r4\n\
+ cmp r0, #0\n\
+ bne ._146 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl CountAliveMons\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bhi ._146 @cond_branch\n\
+ ldrb r0, [r5]\n\
+ bl sub_803C434\n\
+ ldr r1, ._149 + 4\n\
+ strb r0, [r1]\n\
+ mov r2, #0x0\n\
+ mov r8, r2\n\
+._146:\n\
+ mov r0, r8\n\
+ cmp r0, #0\n\
+ bne ._147 @cond_branch\n\
+._144:\n\
+ bl DestroyMenuCursor\n\
+ ldr r1, ._149\n\
+ ldr r0, ._149 + 8\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r1\n\
+ ldrb r2, [r0]\n\
+ ldr r0, ._149 + 4\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x8\n\
+ orr r2, r2, r0\n\
+ b ._148\n\
+._150:\n\
+ .align 2, 0\n\
+._149:\n\
+ .word gMoveSelectionCursor\n\
+ .word gUnknown_03004344\n\
+ .word gActiveBank\n\
+._147:\n\
+ ldr r1, ._153\n\
+ ldr r2, ._153 + 4\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._153 + 8\n\
+ str r1, [r0]\n\
+ mov r0, #0x12\n\
+ and r4, r4, r0\n\
+ cmp r4, #0\n\
+ beq ._151 @cond_branch\n\
+ ldr r1, ._153 + 12\n\
+ ldrb r0, [r2]\n\
+ b ._152\n\
+._154:\n\
+ .align 2, 0\n\
+._153:\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+ .word sub_802C2EC+1\n\
+ .word gUnknown_03004344\n\
+._151:\n\
+ mov r0, #0x1\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._157\n\
+ ldrb r1, [r1]\n\
+ ldr r2, ._157 + 4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x16\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._155 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._156\n\
+._158:\n\
+ .align 2, 0\n\
+._157:\n\
+ .word gAbsentBankFlags\n\
+ .word gBitTable\n\
+._155:\n\
+ mov r0, #0x1\n\
+._156:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._160\n\
+._152:\n\
+ strb r0, [r1]\n\
+ ldr r2, ._160 + 4\n\
+ ldr r1, ._160 + 8\n\
+ ldr r0, ._160\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x4\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r2, r2, #0x1c\n\
+ add r0, r0, r2\n\
+ ldr r1, ._160 + 12\n\
+ b ._203\n\
+._161:\n\
+ .align 2, 0\n\
+._160:\n\
+ .word gUnknown_03004344\n\
+ .word gSprites\n\
+ .word gObjectBankIDs\n\
+ .word sub_8010520+1\n\
+._127:\n\
+ mov r6, #0x2\n\
+ add r0, r6, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._162 @cond_branch\n\
+ bl DestroyMenuCursor\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._164\n\
+ strh r7, [r0]\n\
+ ldr r1, ._164 + 4\n\
+ mov r2, #0xa0\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ ldr r2, ._164 + 8\n\
+._148:\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ bl PlayerBufferExecCompleted\n\
+ b ._209\n\
+._165:\n\
+ .align 2, 0\n\
+._164:\n\
+ .word gBattle_BG0_X\n\
+ .word gBattle_BG0_Y\n\
+ .word 0xffff\n\
+._162:\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._166 @cond_branch\n\
+ ldr r4, ._170\n\
+ add r2, r2, r4\n\
+ ldrb r1, [r2]\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._167 @cond_branch\n\
+ b ._209\n\
+._167:\n\
+ ldrb r0, [r2]\n\
+ bl nullsub_7\n\
+ ldr r0, ._170 + 4\n\
+ ldrb r1, [r0]\n\
+ add r1, r1, r4\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x1\n\
+ eor r0, r0, r2\n\
+ b ._183\n\
+._171:\n\
+ .align 2, 0\n\
+._170:\n\
+ .word gMoveSelectionCursor\n\
+ .word gActiveBank\n\
+._166:\n\
+ mov r3, #0x10\n\
+ add r0, r3, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._172 @cond_branch\n\
+ ldr r4, ._178\n\
+ add r3, r2, r4\n\
+ ldrb r2, [r3]\n\
+ mov r6, #0x1\n\
+ add r0, r5, #0\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._173 @cond_branch\n\
+ b ._209\n\
+._173:\n\
+ ldr r1, ._178 + 4\n\
+ add r0, r6, #0\n\
+ eor r0, r0, r2\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._175 @cond_branch\n\
+ b ._209\n\
+._175:\n\
+ ldrb r0, [r3]\n\
+ bl nullsub_7\n\
+ ldr r2, ._178 + 8\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r4\n\
+ ldrb r0, [r1]\n\
+ eor r0, r0, r6\n\
+ b ._183\n\
+._179:\n\
+ .align 2, 0\n\
+._178:\n\
+ .word gMoveSelectionCursor\n\
+ .word gUnknown_03004348\n\
+ .word gActiveBank\n\
+._172:\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._180 @cond_branch\n\
+ ldr r4, ._184\n\
+ add r2, r2, r4\n\
+ ldrb r1, [r2]\n\
+ add r0, r6, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._181 @cond_branch\n\
+ b ._209\n\
+._181:\n\
+ ldrb r0, [r2]\n\
+ bl nullsub_7\n\
+ ldr r2, ._184 + 4\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r4\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x2\n\
+ eor r0, r0, r2\n\
+ b ._183\n\
+._185:\n\
+ .align 2, 0\n\
+._184:\n\
+ .word gMoveSelectionCursor\n\
+ .word gActiveBank\n\
+._180:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._186 @cond_branch\n\
+ ldr r4, ._192\n\
+ add r3, r2, r4\n\
+ ldrb r2, [r3]\n\
+ mov r5, #0x2\n\
+ add r0, r6, #0\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._187 @cond_branch\n\
+ b ._209\n\
+._187:\n\
+ ldr r1, ._192 + 4\n\
+ add r0, r5, #0\n\
+ eor r0, r0, r2\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._189 @cond_branch\n\
+ b ._209\n\
+._189:\n\
+ ldrb r0, [r3]\n\
+ bl nullsub_7\n\
+ ldr r2, ._192 + 8\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, r4\n\
+ ldrb r0, [r1]\n\
+ eor r0, r0, r5\n\
+._183:\n\
+ strb r0, [r1]\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r1, ._192 + 8\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl sub_802E3B4\n\
+ bl sub_802E220\n\
+ bl sub_802E2D4\n\
+ b ._209\n\
+._193:\n\
+ .align 2, 0\n\
+._192:\n\
+ .word gMoveSelectionCursor\n\
+ .word gUnknown_03004348\n\
+ .word gActiveBank\n\
+._186:\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._194 @cond_branch\n\
+ ldr r0, ._201\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bhi ._195 @cond_branch\n\
+ b ._209\n\
+._195:\n\
+ ldr r0, ._201 + 4\n\
+ ldrh r1, [r0]\n\
+ add r0, r6, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._197 @cond_branch\n\
+ b ._209\n\
+._197:\n\
+ ldr r4, ._201 + 8\n\
+ add r0, r2, r4\n\
+ ldrb r0, [r0]\n\
+ ldr r1, ._201 + 12\n\
+ bl sub_802E12C\n\
+ ldr r2, ._201 + 16\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._199 @cond_branch\n\
+ ldr r0, ._201 + 20\n\
+ strb r7, [r0]\n\
+ b ._200\n\
+._202:\n\
+ .align 2, 0\n\
+._201:\n\
+ .word gUnknown_03004348\n\
+ .word gBattleTypeFlags\n\
+ .word gMoveSelectionCursor\n\
+ .word gUnknown_081FAE80\n\
+ .word gActiveBank\n\
+ .word gUnknown_03004344\n\
+._199:\n\
+ ldr r1, ._204\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ add r0, r1, #0\n\
+._200:\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x1b\n\
+ bl sub_802E3B4\n\
+ ldr r4, ._204 + 4\n\
+ ldr r1, ._204 + 8\n\
+ mov r0, #0x1c\n\
+ str r0, [sp]\n\
+ mov r0, #0x3a\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x17\n\
+ mov r3, #0x37\n\
+ bl Text_FillWindowRect\n\
+ ldr r1, ._204 + 12\n\
+ mov r2, #0xa4\n\
+ lsl r2, r2, #0x2\n\
+ mov r0, #0x37\n\
+ str r0, [sp]\n\
+ add r0, r4, #0\n\
+ mov r3, #0x17\n\
+ bl Text_InitWindow\n\
+ add r0, r4, #0\n\
+ bl Text_PrintWindow8002F44\n\
+ ldr r1, ._204 + 16\n\
+ ldr r0, ._204 + 20\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._204 + 24\n\
+ b ._203\n\
+._205:\n\
+ .align 2, 0\n\
+._204:\n\
+ .word gUnknown_03004344\n\
+ .word gUnknown_03004210\n\
+ .word 0x1016\n\
+ .word BattleText_SwitchWhich\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+ .word sub_802CA60+1\n\
+._194:\n\
+ ldr r0, ._214\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._206 @cond_branch\n\
+ b ._209\n\
+._206:\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._208 @cond_branch\n\
+ b ._209\n\
+._208:\n\
+ ldr r6, ._214 + 4\n\
+ ldr r1, ._214 + 8\n\
+ str r3, [sp]\n\
+ mov r0, #0x3a\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r6, #0\n\
+ mov r2, #0x1\n\
+ mov r3, #0x37\n\
+ bl Text_FillWindowRect\n\
+ ldr r0, ._214 + 12\n\
+ mov sl, r0\n\
+ ldr r1, ._214 + 16\n\
+ ldrb r0, [r1]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, sl\n\
+ ldrh r0, [r0]\n\
+ mov r2, #0x64\n\
+ mov r9, r2\n\
+ mov r1, r9\n\
+ mul r1, r1, r0\n\
+ add r0, r1, #0\n\
+ ldr r5, ._214 + 20\n\
+ add r0, r0, r5\n\
+ mov r1, #0xd\n\
+ bl GetMonData\n\
+ mov r1, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._214 + 24\n\
+ add r1, r1, r0\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ mov r0, #0x37\n\
+ mov r8, r0\n\
+ str r0, [sp]\n\
+ add r0, r6, #0\n\
+ mov r3, #0x2\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r4, ._214 + 28\n\
+ ldr r1, ._214 + 16\n\
+ ldrb r0, [r1]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, sl\n\
+ ldrh r0, [r0]\n\
+ mov r2, r9\n\
+ mul r2, r2, r0\n\
+ add r0, r2, #0\n\
+ add r0, r0, r5\n\
+ mov r1, #0xd\n\
+ bl GetMonData\n\
+ add r1, r0, #0\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x88\n\
+ lsl r2, r2, #0x1\n\
+ mov r0, r8\n\
+ str r0, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xa\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r1, ._214 + 32\n\
+ mov r2, #0x8b\n\
+ lsl r2, r2, #0x1\n\
+ mov r5, #0x39\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ mov r3, #0x1\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r0, ._214 + 36\n\
+ ldrb r1, [r0]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x8e\n\
+ lsl r2, r2, #0x1\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x4\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r0, ._214 + 40\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x3e\n\
+ mov r1, #0x3f\n\
+._211:\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._210 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._210:\n\
+ add r2, r2, #0x44\n\
+ sub r1, r1, #0x1\n\
+ cmp r1, #0\n\
+ bge ._211 @cond_branch\n\
+ ldr r4, ._214 + 28\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r6, ._214 + 4\n\
+ mov r2, #0x91\n\
+ lsl r2, r2, #0x1\n\
+ mov r5, #0x39\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x8\n\
+ bl Text_InitWindowAndPrintText\n\
+ bl GetTaskCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x93\n\
+ lsl r2, r2, #0x1\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xb\n\
+ bl Text_InitWindowAndPrintText\n\
+ mov r1, #0x0\n\
+ mov r7, #0x0\n\
+ ldr r0, ._214 + 44\n\
+ mov r3, #0x1\n\
+ ldr r2, [r0]\n\
+._213:\n\
+ add r0, r3, #0\n\
+ LSL r0, r1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._212 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._212:\n\
+ add r1, r1, #0x1\n\
+ cmp r1, #0x1f\n\
+ ble ._213 @cond_branch\n\
+ ldr r4, ._214 + 28\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._214 + 4\n\
+ mov r2, #0x95\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0xe\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r1, ._214 + 48\n\
+ ldr r0, ._214 + 16\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._214 + 52\n\
+._203:\n\
+ str r1, [r0]\n\
+._209:\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\
+._215:\n\
+ .align 2, 0\n\
+._214:\n\
+ .word gUnknown_020297ED\n\
+ .word gUnknown_03004210\n\
+ .word 0x1016\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMoveNames\n\
+ .word gDisplayedStringBattle\n\
+ .word sBallCatchBonuses+0x4\n\
+ .word gAnimMoveTurn\n\
+ .word gSprites\n\
+ .word gOamMatrixAllocBitmap\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_8030C24+1");
+}
+#else
void sub_802C68C(void)
{
u32 r8 = 0;
@@ -751,6 +1470,7 @@ void sub_802C68C(void)
}
}
}
+#endif
extern const u8 BattleText_Format[];
@@ -956,6 +1676,688 @@ void sub_802D18C(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8030C24(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r1, ._293\n\
+ ldr r4, ._293 + 4\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._293 + 8\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ bl GetMonData\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ ldr r5, ._293 + 12\n\
+ ldrh r1, [r5, #0x30]\n\
+ cmp r1, #0x20\n\
+ bne ._286 @cond_branch\n\
+ b ._287\n\
+._286:\n\
+ cmp r1, #0x20\n\
+ bgt ._288 @cond_branch\n\
+ cmp r1, #0x8\n\
+ beq ._289 @cond_branch\n\
+ cmp r1, #0x8\n\
+ bgt ._290 @cond_branch\n\
+ cmp r1, #0x4\n\
+ beq ._291 @cond_branch\n\
+ b ._348\n\
+._294:\n\
+ .align 2, 0\n\
+._293:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMain\n\
+._290:\n\
+ cmp r1, #0x10\n\
+ bne ._295 @cond_branch\n\
+ b ._296\n\
+._295:\n\
+ b ._348\n\
+._288:\n\
+ cmp r1, #0x80\n\
+ bne ._298 @cond_branch\n\
+ b ._302\n\
+._298:\n\
+ cmp r1, #0x80\n\
+ bgt ._300 @cond_branch\n\
+ cmp r1, #0x40\n\
+ bne ._301 @cond_branch\n\
+ b ._302\n\
+._301:\n\
+ b ._348\n\
+._300:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._304 @cond_branch\n\
+ b ._305\n\
+._304:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ cmp r1, r0\n\
+ bne ._306 @cond_branch\n\
+ b ._307\n\
+._306:\n\
+ b ._348\n\
+._289:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._312\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 4\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 8\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._311\n\
+._313:\n\
+ .align 2, 0\n\
+._312:\n\
+ .word gBankAttacker\n\
+ .word gBattleTypeFlags\n\
+ .word gBankTarget\n\
+._310:\n\
+ ldr r0, ._317\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ ldr r0, ._317 + 4\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._316\n\
+._318:\n\
+ .align 2, 0\n\
+._317:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._315:\n\
+ mov r0, #0x1\n\
+._316:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._320\n\
+ strb r0, [r1]\n\
+._311:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._320 + 4\n\
+ ldr r0, ._320 + 8\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._321:\n\
+ .align 2, 0\n\
+._320:\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._291:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._325\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 4\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 8\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._324\n\
+._326:\n\
+ .align 2, 0\n\
+._325:\n\
+ .word gBankTarget\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._323:\n\
+ ldr r0, ._330\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ ldr r0, ._330 + 4\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._329\n\
+._331:\n\
+ .align 2, 0\n\
+._330:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._328:\n\
+ mov r0, #0x1\n\
+._329:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._333\n\
+ strb r0, [r1]\n\
+._324:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._333 + 4\n\
+ ldr r0, ._333 + 8\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._334:\n\
+ .align 2, 0\n\
+._333:\n\
+ .word gBankAttacker\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._305:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldr r0, ._338\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x3\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._338 + 4\n\
+ strb r0, [r1]\n\
+ mov r0, #0x1\n\
+ b ._337\n\
+._339:\n\
+ .align 2, 0\n\
+._338:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._336:\n\
+ add r0, sp, #0x8\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ add r0, r0, #0x9\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+._296:\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ add r0, r0, #0x1\n\
+ lsl r2, r0, #0x10\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x11\n\
+ cmp r2, r0\n\
+ ble ._347 @cond_branch\n\
+ mov r1, #0x1\n\
+ add r0, sp, #0x8\n\
+ strh r1, [r0]\n\
+ b ._347\n\
+._307:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldr r0, ._345\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x1\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 4\n\
+ strb r0, [r1]\n\
+ mov r0, #0x3\n\
+._337:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 8\n\
+ strb r0, [r1]\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._345 + 12\n\
+ ldrb r0, [r4]\n\
+._332:\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._345 + 16\n\
+ str r1, [r0]\n\
+ b ._348\n\
+._346:\n\
+ .align 2, 0\n\
+._345:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_803107C+1\n\
+._343:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x9\n\
+ strh r0, [r1]\n\
+._287:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bgt ._347 @cond_branch\n\
+ mov r2, #0xb1\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+._347:\n\
+ ldr r1, ._349\n\
+ ldr r4, ._349 + 4\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._349 + 8\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ add r2, sp, #0x8\n\
+ bl SetMonData\n\
+ ldr r2, ._349 + 12\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r1, sp, #0x8\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, #0xc]\n\
+ ldr r5, ._349 + 16\n\
+ ldr r1, ._349 + 20\n\
+ mov r0, #0x10\n\
+ str r0, [sp]\n\
+ mov r0, #0x38\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r5, #0\n\
+ mov r2, #0x1\n\
+ mov r3, #0x37\n\
+ bl Text_FillWindowRect\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ mov r0, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._349 + 24\n\
+ add r1, r1, r0\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ mov r6, #0x37\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ mov r3, #0x2\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r4, ._349 + 28\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x88\n\
+ lsl r2, r2, #0x1\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xa\n\
+ bl Text_InitWindowAndPrintText\n\
+ b ._348\n\
+._350:\n\
+ .align 2, 0\n\
+._349:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gBattleMons\n\
+ .word gUnknown_03004210\n\
+ .word 0x1016\n\
+ .word gMoveNames\n\
+ .word gDisplayedStringBattle\n\
+._302:\n\
+ ldr r0, ._353\n\
+ ldrh r0, [r0, #0x30]\n\
+ cmp r0, #0x40\n\
+ bne ._351 @cond_branch\n\
+ ldr r1, ._353 + 4\n\
+ ldrb r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ b ._352\n\
+._354:\n\
+ .align 2, 0\n\
+._353:\n\
+ .word gMain\n\
+ .word gAnimMoveTurn\n\
+._351:\n\
+ ldr r1, ._359\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+._352:\n\
+ strb r0, [r1]\n\
+ ldr r4, ._359 + 4\n\
+ ldrb r1, [r1]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._359 + 8\n\
+ mov r2, #0x8e\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0x4\n\
+ bl Text_InitWindowAndPrintText\n\
+._348:\n\
+ ldr r0, ._359 + 12\n\
+ ldrh r2, [r0, #0x28]\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 ._355 @cond_branch\n\
+ mov r4, #0x0\n\
+ ldr r5, ._359 + 4\n\
+ ldr r6, ._359 + 8\n\
+._361:\n\
+ add r0, r5, #0\n\
+ ldr r1, ._359 + 16\n\
+ bl StringCopy\n\
+ ldr r1, ._359 + 20\n\
+ ldr r0, ._359 + 24\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._359 + 28\n\
+ add r0, r0, r1\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0xd\n\
+ bl GetMonData\n\
+ mov r1, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._359 + 32\n\
+ add r1, r1, r0\n\
+ add r0, r5, #0\n\
+ bl StringAppend\n\
+ lsl r0, r4, #0x14\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x11\n\
+ add r0, r0, r1\n\
+ lsr r2, r0, #0x10\n\
+ mov r0, #0x1\n\
+ and r0, r0, r4\n\
+ mov r3, #0x2\n\
+ cmp r0, #0\n\
+ beq ._356 @cond_branch\n\
+ mov r3, #0xa\n\
+._356:\n\
+ cmp r4, #0x1\n\
+ bhi ._357 @cond_branch\n\
+ mov r0, #0x37\n\
+ b ._358\n\
+._360:\n\
+ .align 2, 0\n\
+._359:\n\
+ .word gAnimMoveTurn\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gMain\n\
+ .word BattleText_Format\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMoveNames\n\
+._357:\n\
+ mov r0, #0x39\n\
+._358:\n\
+ str r0, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r5, #0\n\
+ bl Text_InitWindow\n\
+ ldr r0, ._362\n\
+ bl Text_PrintWindow8002F44\n\
+ add r0, r4, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x3\n\
+ bls ._361 @cond_branch\n\
+ ldr r1, ._362 + 4\n\
+ ldr r0, ._362 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._362 + 12\n\
+ str r1, [r0]\n\
+._355:\n\
+ add sp, sp, #0xc\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._363:\n\
+ .align 2, 0\n\
+._362:\n\
+ .word gUnknown_03004210\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+ .word sub_802C68C+1");
+}
+
+__attribute__((naked))
+void debug_sub_803107C(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369\n\
+ ldr r0, [r0]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\
+ ldr r0, ._369 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._364 @cond_branch\n\
+ mov r0, #0x1\n\
+ bl sub_80326EC\n\
+ ldr r4, ._369 + 8\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldr r0, ._369 + 12\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x3e\n\
+ mov r1, #0x3f\n\
+._366:\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._365 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._365:\n\
+ add r2, r2, #0x44\n\
+ sub r1, r1, #0x1\n\
+ cmp r1, #0\n\
+ bge ._366 @cond_branch\n\
+ ldr r4, ._369 + 16\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r6, ._369 + 20\n\
+ mov r2, #0x91\n\
+ lsl r2, r2, #0x1\n\
+ mov r5, #0x39\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x8\n\
+ bl Text_InitWindowAndPrintText\n\
+ bl GetTaskCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x93\n\
+ lsl r2, r2, #0x1\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xb\n\
+ bl Text_InitWindowAndPrintText\n\
+ mov r1, #0x0\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369 + 24\n\
+ mov r3, #0x1\n\
+ ldr r2, [r0]\n\
+._368:\n\
+ add r0, r3, #0\n\
+ LSL r0, r1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._367 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._367:\n\
+ add r1, r1, #0x1\n\
+ cmp r1, #0x1f\n\
+ ble ._368 @cond_branch\n\
+ ldr r4, ._369 + 16\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._369 + 20\n\
+ mov r2, #0x95\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0xe\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r1, ._369 + 28\n\
+ ldr r0, ._369 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._369 + 32\n\
+ str r1, [r0]\n\
+._364:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._370:\n\
+ .align 2, 0\n\
+._369:\n\
+ .word gAnimScriptCallback\n\
+ .word gAnimScriptActive\n\
+ .word gActiveBank\n\
+ .word gSprites\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gOamMatrixAllocBitmap\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_8030C24+1");
+}
+#endif
+
void sub_802D204(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 0d193d68f..4af8adbbb 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -207,6 +207,236 @@ void SafariBufferRunCommand(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void bx_battle_menu_t6_2(void)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._94\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._89 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl DestroyMenuCursor\n\
+ ldr r1, ._94 + 4\n\
+ ldr r0, ._94 + 8\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._90 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._91 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._92 @cond_branch\n\
+ b ._101\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word gMain\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._91:\n\
+ cmp r0, #0x2\n\
+ beq ._96 @cond_branch\n\
+ cmp r0, #0x3\n\
+ beq ._97 @cond_branch\n\
+ b ._101\n\
+._92:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x5\n\
+ b ._100\n\
+._90:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x6\n\
+ b ._100\n\
+._96:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x7\n\
+._100:\n\
+ mov r2, #0x0\n\
+ bl Emitcmd33\n\
+ b ._101\n\
+._97:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x8\n\
+ mov r2, #0x0\n\
+ bl Emitcmd33\n\
+._101:\n\
+ bl SafariBufferExecCompleted\n\
+ b ._129\n\
+._89:\n\
+ mov r3, #0x20\n\
+ add r0, r3, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._103 @cond_branch\n\
+ ldr r5, ._107\n\
+ ldr r4, ._107 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._104 @cond_branch\n\
+ b ._129\n\
+._104:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x1\n\
+ b ._111\n\
+._108:\n\
+ .align 2, 0\n\
+._107:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._103:\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._109 @cond_branch\n\
+ ldr r5, ._112\n\
+ ldr r4, ._112 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x1\n\
+ b ._111\n\
+._113:\n\
+ .align 2, 0\n\
+._112:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._109:\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._114 @cond_branch\n\
+ ldr r5, ._117\n\
+ ldr r4, ._117 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._129 @cond_branch\n\
+ b ._116\n\
+._118:\n\
+ .align 2, 0\n\
+._117:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._114:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._119 @cond_branch\n\
+ ldr r5, ._122\n\
+ ldr r4, ._122 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+._116:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x2\n\
+._111:\n\
+ eor r0, r0, r2\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl sub_802E3E4\n\
+ b ._129\n\
+._123:\n\
+ .align 2, 0\n\
+._122:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._119:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._124 @cond_branch\n\
+ ldr r0, ._127\n\
+ ldrb r2, [r0]\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._127 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ add r0, r3, #0\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+ str r0, [sp]\n\
+ add r0, r2, #0\n\
+ add r1, r2, #0\n\
+ mov r3, #0x4\n\
+ bl move_anim_start_t3\n\
+ b ._129\n\
+._128:\n\
+ .align 2, 0\n\
+._127:\n\
+ .word gActiveBank\n\
+ .word +0x2017810\n\
+._124:\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._129 @cond_branch\n\
+ bl sub_804454C\n\
+._129:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
void bx_battle_menu_t6_2(void)
{
if (gMain.newKeys & A_BUTTON)
@@ -273,6 +503,7 @@ void bx_battle_menu_t6_2(void)
}
}
}
+#endif
void sub_812B65C(void)
{
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 97568d254..1b6240159 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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)
}
}
+#if 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..4fce958fa 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;
+#if 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));
@@ -197,6 +223,66 @@ void UpdateLinkBattleRecords(int id)
gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_81257E0(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl InitLinkBattleRecords\n\
+ mov r5, #0x0\n\
+ ldr r6, ._62\n\
+ sub r0, r6, #2\n\
+ mov r8, r0\n\
+ ldr r7, ._62 + 4\n\
+._61:\n\
+ ldr r0, ._62 + 8\n\
+ lsl r3, r5, #0x2\n\
+ add r3, r3, r0\n\
+ ldrb r4, [r3]\n\
+ sub r4, r4, #0x1\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r0, r6\n\
+ add r0, r0, r8\n\
+ ldrh r2, [r0]\n\
+ ldrb r3, [r3, #0x1]\n\
+ ldr r0, ._62 + 12\n\
+ lsl r4, r4, #0x2\n\
+ add r4, r4, r0\n\
+ ldrb r4, [r4, #0x1]\n\
+ lsl r0, r4, #0x3\n\
+ sub r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r7\n\
+ ldrb r0, [r0, #0x1a]\n\
+ str r0, [sp]\n\
+ ldr r0, ._62 + 16\n\
+ bl UpdateLinkBattleRecords_\n\
+ add r5, r5, #0x1\n\
+ cmp r5, #0x2\n\
+ bls ._61 @cond_branch\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\
+._63:\n\
+ .align 2, 0\n\
+._62:\n\
+ .word gUnknown_083F8410+0xa\n\
+ .word gLinkPlayers\n\
+ .word gUnknown_083F8410+0x5c\n\
+ .word gLinkPlayerMapObjects\n\
+ .word gSaveBlock1+0x30b8");
+}
+#endif
+
static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
{
ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
@@ -240,7 +326,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/battle/battle_util.c b/src/battle/battle_util.c
index 87b6952ff..8dae98b66 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -1683,6 +1683,4066 @@ u8 CastformDataTypeChange(u8 bank)
return formChange;
}
+#if DEBUG
+__attribute__((naked))
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
+{
+ 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\
+ ldr r4, [sp, #0x48]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ str r0, [sp, #0x4]\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ mov sl, r1\n\
+ lsl r2, r2, #0x18\n\
+ lsr r6, r2, #0x18\n\
+ lsl r3, r3, #0x18\n\
+ lsr r3, r3, #0x18\n\
+ mov r8, r3\n\
+ lsl r4, r4, #0x10\n\
+ lsr r4, r4, #0x10\n\
+ mov r0, #0x0\n\
+ mov r9, r0\n\
+ ldr r5, ._718\n\
+ ldr r1, ._718 + 4\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._715 @cond_branch\n\
+ mov r1, sl\n\
+ strb r1, [r5]\n\
+._715:\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._716 @cond_branch\n\
+ ldr r1, ._718 + 8\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._718 + 12\n\
+ b ._717\n\
+._719:\n\
+ .align 2, 0\n\
+._718:\n\
+ .word gBankAttacker\n\
+ .word gNoOfAllBanks\n\
+ .word gBattlePartyID\n\
+ .word gPlayerParty\n\
+._716:\n\
+ ldr r1, ._723\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._723 + 4\n\
+._717:\n\
+ add r7, r1, r0\n\
+ ldr r5, ._723 + 8\n\
+ ldr r1, ._723 + 12\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._720 @cond_branch\n\
+ mov r2, sl\n\
+ strb r2, [r5]\n\
+._720:\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._721 @cond_branch\n\
+ ldr r1, ._723\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._723 + 16\n\
+ b ._722\n\
+._724:\n\
+ .align 2, 0\n\
+._723:\n\
+ .word gBattlePartyID\n\
+ .word gEnemyParty\n\
+ .word gBankTarget\n\
+ .word gNoOfAllBanks\n\
+ .word gPlayerParty\n\
+._721:\n\
+ ldr r1, ._729\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._729 + 4\n\
+._722:\n\
+ add r5, r1, r0\n\
+ add r0, r7, #0\n\
+ mov r1, #0xb\n\
+ bl GetMonData\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0x8]\n\
+ add r0, r7, #0\n\
+ mov r1, #0x0\n\
+ bl GetMonData\n\
+ str r0, [sp, #0x10]\n\
+ add r0, r5, #0\n\
+ mov r1, #0xb\n\
+ bl GetMonData\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0xc]\n\
+ add r0, r5, #0\n\
+ mov r1, #0x0\n\
+ bl GetMonData\n\
+ str r0, [sp, #0x14]\n\
+ ldr r0, ._729 + 8\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._725 @cond_branch\n\
+ bl ._1540\n\
+._725:\n\
+ mov r3, r8\n\
+ cmp r3, #0\n\
+ beq ._727 @cond_branch\n\
+ ldr r0, ._729 + 12\n\
+ strb r3, [r0]\n\
+ mov r8, r0\n\
+ b ._728\n\
+._730:\n\
+ .align 2, 0\n\
+._729:\n\
+ .word gBattlePartyID\n\
+ .word gEnemyParty\n\
+ .word gBattleTypeFlags\n\
+ .word gLastUsedAbility\n\
+._727:\n\
+ ldr r2, ._733\n\
+ ldr r1, ._733 + 4\n\
+ mov r0, #0x58\n\
+ mov r5, sl\n\
+ mul r5, r5, r0\n\
+ add r0, r5, #0\n\
+ add r0, r0, r1\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ mov r8, r2\n\
+._728:\n\
+ cmp r4, #0\n\
+ beq ._731 @cond_branch\n\
+ add r3, r4, #0\n\
+ b ._732\n\
+._734:\n\
+ .align 2, 0\n\
+._733:\n\
+ .word gLastUsedAbility\n\
+ .word gBattleMons\n\
+._731:\n\
+ ldr r0, ._737\n\
+ ldrh r3, [r0]\n\
+._732:\n\
+ ldr r1, ._737 + 4\n\
+ ldr r2, ._737 + 8\n\
+ add r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ add r7, r1, #0\n\
+ cmp r0, #0\n\
+ beq ._735 @cond_branch\n\
+ mov r4, #0x3f\n\
+ and r4, r4, r0\n\
+ b ._736\n\
+._738:\n\
+ .align 2, 0\n\
+._737:\n\
+ .word gCurrentMove\n\
+ .word +0x2000000\n\
+ .word 0x1601c\n\
+._735:\n\
+ ldr r1, ._741\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r4, [r0, #0x2]\n\
+._736:\n\
+ ldr r5, [sp, #0x4]\n\
+ cmp r5, #0x13\n\
+ bls ._739 @cond_branch\n\
+ bl ._1534\n\
+._739:\n\
+ lsl r0, r5, #0x2\n\
+ ldr r1, ._741 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._742:\n\
+ .align 2, 0\n\
+._741:\n\
+ .word gBattleMoves\n\
+ .word ._743\n\
+._743:\n\
+ .word ._744\n\
+ .word ._745\n\
+ .word ._746\n\
+ .word ._747\n\
+ .word ._748\n\
+ .word ._749\n\
+ .word ._750\n\
+ .word ._751\n\
+ .word ._752\n\
+ .word ._753\n\
+ .word ._754\n\
+ .word ._755\n\
+ .word ._756\n\
+ .word ._757\n\
+ .word ._758\n\
+ .word ._759\n\
+ .word ._760\n\
+ .word ._761\n\
+ .word ._762\n\
+ .word ._763\n\
+._744:\n\
+ ldr r2, ._774\n\
+ ldr r0, ._774 + 4\n\
+ ldrb r1, [r2]\n\
+ add r5, r0, #0\n\
+ ldrb r0, [r5]\n\
+ cmp r1, r0\n\
+ bcc ._764 @cond_branch\n\
+ mov r1, sl\n\
+ strb r1, [r2]\n\
+._764:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ cmp r0, #0x2d\n\
+ bne ._765 @cond_branch\n\
+ b ._766\n\
+._765:\n\
+ cmp r0, #0x2d\n\
+ bgt ._767 @cond_branch\n\
+ cmp r0, #0xd\n\
+ bne ._768 @cond_branch\n\
+ b ._788\n\
+._768:\n\
+ cmp r0, #0xd\n\
+ bgt ._770 @cond_branch\n\
+ cmp r0, #0x2\n\
+ bne ._771 @cond_branch\n\
+ b ._772\n\
+._771:\n\
+ bl ._1534\n\
+._775:\n\
+ .align 2, 0\n\
+._774:\n\
+ .word gBankAttacker\n\
+ .word gNoOfAllBanks\n\
+._770:\n\
+ cmp r0, #0x16\n\
+ bne ._776 @cond_branch\n\
+ b ._777\n\
+._776:\n\
+ cmp r0, #0x24\n\
+ bne ._778 @cond_branch\n\
+ b ._779\n\
+._778:\n\
+ bl ._1534\n\
+._767:\n\
+ cmp r0, #0x46\n\
+ bne ._781 @cond_branch\n\
+ b ._782\n\
+._781:\n\
+ cmp r0, #0x46\n\
+ bgt ._783 @cond_branch\n\
+ cmp r0, #0x3b\n\
+ bne ._784 @cond_branch\n\
+ b ._785\n\
+._784:\n\
+ bl ._1534\n\
+._783:\n\
+ cmp r0, #0x4d\n\
+ bne ._787 @cond_branch\n\
+ b ._788\n\
+._787:\n\
+ cmp r0, #0xff\n\
+ beq ._789 @cond_branch\n\
+ bl ._1534\n\
+._789:\n\
+ bl GetCurrentWeather\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ sub r0, r0, #0x3\n\
+ cmp r0, #0xa\n\
+ bhi ._814 @cond_branch\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._793\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._794:\n\
+ .align 2, 0\n\
+._793:\n\
+ .word ._792\n\
+._792:\n\
+ .word ._805\n\
+ .word ._814\n\
+ .word ._805\n\
+ .word ._814\n\
+ .word ._814\n\
+ .word ._800\n\
+ .word ._814\n\
+ .word ._814\n\
+ .word ._814\n\
+ .word ._804\n\
+ .word ._805\n\
+._805:\n\
+ ldr r2, ._808\n\
+ ldrh r1, [r2]\n\
+ mov r0, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._814 @cond_branch\n\
+ mov r0, #0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, ._808 + 4\n\
+ ldr r3, ._808 + 8\n\
+ add r2, r0, r3\n\
+ mov r1, #0xa\n\
+ b ._811\n\
+._809:\n\
+ .align 2, 0\n\
+._808:\n\
+ .word gBattleWeather\n\
+ .word +0x2000000\n\
+ .word 0x160a4\n\
+._800:\n\
+ ldr r3, ._812\n\
+ ldrh r1, [r3]\n\
+ mov r2, #0x18\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._814 @cond_branch\n\
+ strh r2, [r3]\n\
+ ldr r0, ._812 + 4\n\
+ ldr r3, ._812 + 8\n\
+ add r2, r0, r3\n\
+ mov r1, #0xc\n\
+ b ._811\n\
+._813:\n\
+ .align 2, 0\n\
+._812:\n\
+ .word gBattleWeather\n\
+ .word +0x2000000\n\
+ .word 0x160a4\n\
+._804:\n\
+ ldr r3, ._818\n\
+ ldrh r1, [r3]\n\
+ mov r2, #0x60\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._814 @cond_branch\n\
+ strh r2, [r3]\n\
+ ldr r0, ._818 + 4\n\
+ ldr r3, ._818 + 8\n\
+ add r2, r0, r3\n\
+ mov r1, #0xb\n\
+._811:\n\
+ strb r1, [r2]\n\
+ ldr r5, ._818 + 12\n\
+ add r0, r0, r5\n\
+ mov r1, sl\n\
+ strb r1, [r0]\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._814:\n\
+ mov r2, r9\n\
+ cmp r2, #0\n\
+ bne ._815 @cond_branch\n\
+ bl ._1540\n\
+._815:\n\
+ bl GetCurrentWeather\n\
+ ldr r1, ._818 + 16\n\
+ strb r0, [r1, #0x5]\n\
+ ldr r0, ._818 + 20\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ bl ._1534\n\
+._819:\n\
+ .align 2, 0\n\
+._818:\n\
+ .word gBattleWeather\n\
+ .word +0x2000000\n\
+ .word 0x160a4\n\
+ .word 0x16003\n\
+ .word gBattleCommunication\n\
+ .word BattleScript_OverworldWeatherStarts\n\
+._772:\n\
+ ldr r2, ._823\n\
+ ldrh r1, [r2]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._820 @cond_branch\n\
+ bl ._1534\n\
+._820:\n\
+ mov r0, #0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, ._823 + 4\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._823 + 8\n\
+ ldr r3, ._823 + 12\n\
+ add r0, r0, r3\n\
+ mov r5, sl\n\
+ strb r5, [r0]\n\
+ bl ._1392\n\
+._824:\n\
+ .align 2, 0\n\
+._823:\n\
+ .word gBattleWeather\n\
+ .word BattleScript_DrizzleActivates\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+._766:\n\
+ ldr r2, ._828\n\
+ ldrh r1, [r2]\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._825 @cond_branch\n\
+ bl ._1534\n\
+._825:\n\
+ mov r0, #0x18\n\
+ strh r0, [r2]\n\
+ ldr r0, ._828 + 4\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._828 + 8\n\
+ ldr r1, ._828 + 12\n\
+ add r0, r0, r1\n\
+ mov r2, sl\n\
+ strb r2, [r0]\n\
+ bl ._1392\n\
+._829:\n\
+ .align 2, 0\n\
+._828:\n\
+ .word gBattleWeather\n\
+ .word BattleScript_SandstreamActivates\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+._782:\n\
+ ldr r2, ._833\n\
+ ldrh r1, [r2]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._830 @cond_branch\n\
+ bl ._1534\n\
+._830:\n\
+ mov r0, #0x60\n\
+ strh r0, [r2]\n\
+ ldr r0, ._833 + 4\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._833 + 8\n\
+ ldr r3, ._833 + 12\n\
+ add r0, r0, r3\n\
+ mov r5, sl\n\
+ strb r5, [r0]\n\
+ bl ._1392\n\
+._834:\n\
+ .align 2, 0\n\
+._833:\n\
+ .word gBattleWeather\n\
+ .word BattleScript_DroughtActivates\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+._777:\n\
+ ldr r0, ._838\n\
+ mov r1, sl\n\
+ lsl r2, r1, #0x2\n\
+ add r1, r2, r1\n\
+ lsl r1, r1, #0x2\n\
+ add r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._835 @cond_branch\n\
+ bl ._1534\n\
+._835:\n\
+ ldr r1, ._838 + 4\n\
+ add r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0xc\n\
+ orr r0, r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ mov r1, #0x8\n\
+ b ._837\n\
+._839:\n\
+ .align 2, 0\n\
+._838:\n\
+ .word gSpecialStatuses\n\
+ .word gStatuses3\n\
+._785:\n\
+ mov r0, sl\n\
+ bl CastformDataTypeChange\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+ cmp r0, #0\n\
+ bne ._840 @cond_branch\n\
+ bl ._1540\n\
+._840:\n\
+ ldr r0, ._843\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._843 + 4\n\
+ ldr r2, ._843 + 8\n\
+ add r1, r0, r2\n\
+ mov r3, sl\n\
+ strb r3, [r1]\n\
+ mov r1, r9\n\
+ sub r1, r1, #0x1\n\
+ ldr r5, ._843 + 12\n\
+ add r0, r0, r5\n\
+ strb r1, [r0]\n\
+ bl ._1534\n\
+._844:\n\
+ .align 2, 0\n\
+._843:\n\
+ .word BattleScript_CastformChange\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+ .word 0x1609b\n\
+._779:\n\
+ ldr r0, ._848\n\
+ mov r1, sl\n\
+ lsl r2, r1, #0x2\n\
+ add r1, r2, r1\n\
+ lsl r1, r1, #0x2\n\
+ add r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsl r0, r0, #0x1b\n\
+ cmp r0, #0\n\
+ bge ._845 @cond_branch\n\
+ bl ._1534\n\
+._845:\n\
+ ldr r1, ._848 + 4\n\
+ add r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0xd\n\
+ orr r0, r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ mov r1, #0x10\n\
+._837:\n\
+ orr r0, r0, r1\n\
+ strb r0, [r3]\n\
+ bl ._1534\n\
+._849:\n\
+ .align 2, 0\n\
+._848:\n\
+ .word gSpecialStatuses\n\
+ .word gStatuses3\n\
+._788:\n\
+ mov r6, #0x0\n\
+ ldrb r5, [r5]\n\
+ cmp r6, r5\n\
+ bcc ._854 @cond_branch\n\
+ bl ._1534\n\
+._854:\n\
+ add r0, r6, #0\n\
+ bl CastformDataTypeChange\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+ cmp r0, #0\n\
+ beq ._852 @cond_branch\n\
+ bl ._853\n\
+._852:\n\
+ add r0, r6, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ ldr r0, ._856\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bcc ._854 @cond_branch\n\
+ bl ._1534\n\
+._857:\n\
+ .align 2, 0\n\
+._856:\n\
+ .word gNoOfAllBanks\n\
+._745:\n\
+ ldr r2, ._865\n\
+ mov r0, #0x58\n\
+ mov r1, sl\n\
+ mul r1, r1, r0\n\
+ add r4, r1, r2\n\
+ ldrh r0, [r4, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._858 @cond_branch\n\
+ bl ._1534\n\
+._858:\n\
+ ldr r0, ._865 + 4\n\
+ mov r3, sl\n\
+ strb r3, [r0]\n\
+ mov r3, r8\n\
+ ldrb r5, [r3]\n\
+ cmp r5, #0x2c\n\
+ beq ._860 @cond_branch\n\
+ cmp r5, #0x2c\n\
+ bgt ._861 @cond_branch\n\
+ cmp r5, #0x3\n\
+ bne ._862 @cond_branch\n\
+ b ._863\n\
+._862:\n\
+ bl ._1534\n\
+._866:\n\
+ .align 2, 0\n\
+._865:\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+._861:\n\
+ cmp r5, #0x36\n\
+ bne ._867 @cond_branch\n\
+ b ._868\n\
+._867:\n\
+ cmp r5, #0x3d\n\
+ beq ._869 @cond_branch\n\
+ bl ._1534\n\
+._860:\n\
+ mov r0, #0x0\n\
+ str r0, [sp]\n\
+ mov r0, #0x13\n\
+ mov r1, #0x0\n\
+ mov r2, #0xd\n\
+ mov r3, #0x0\n\
+ bl AbilityBattleEffects\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._871 @cond_branch\n\
+ bl ._1534\n\
+._871:\n\
+ str r0, [sp]\n\
+ mov r0, #0x13\n\
+ mov r1, #0x0\n\
+ mov r2, #0x4d\n\
+ mov r3, #0x0\n\
+ bl AbilityBattleEffects\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._873 @cond_branch\n\
+ bl ._1534\n\
+._873:\n\
+ ldr r0, ._881\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._875 @cond_branch\n\
+ bl ._1534\n\
+._875:\n\
+ ldrh r0, [r4, #0x2c]\n\
+ ldrh r1, [r4, #0x28]\n\
+ cmp r0, r1\n\
+ bhi ._877 @cond_branch\n\
+ bl ._1534\n\
+._877:\n\
+ mov r2, r8\n\
+ strb r5, [r2]\n\
+ ldr r0, ._881 + 4\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r1, ._881 + 8\n\
+ ldrh r0, [r4, #0x2c]\n\
+ lsr r0, r0, #0x4\n\
+ str r0, [r1]\n\
+ cmp r0, #0\n\
+ bne ._879 @cond_branch\n\
+ mov r0, #0x1\n\
+ str r0, [r1]\n\
+._879:\n\
+ ldr r0, [r1]\n\
+ neg r0, r0\n\
+ str r0, [r1]\n\
+ bl ._1392\n\
+._882:\n\
+ .align 2, 0\n\
+._881:\n\
+ .word gBattleWeather\n\
+ .word BattleScript_RainDishActivates\n\
+ .word gBattleMoveDamage\n\
+._869:\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x4c\n\
+ add r5, r1, r0\n\
+ ldrb r0, [r5]\n\
+ cmp r0, #0\n\
+ bne ._883 @cond_branch\n\
+ bl ._1534\n\
+._883:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x3\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ lsr r4, r0, #0x10\n\
+ cmp r4, #0\n\
+ beq ._885 @cond_branch\n\
+ bl ._1534\n\
+._885:\n\
+ ldr r0, [r5]\n\
+ mov r1, #0x88\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._887 @cond_branch\n\
+ ldr r0, ._893\n\
+ ldr r1, ._893 + 4\n\
+ bl StringCopy\n\
+._887:\n\
+ ldr r0, [r5]\n\
+ mov r1, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._888 @cond_branch\n\
+ ldr r0, ._893\n\
+ ldr r1, ._893 + 8\n\
+ bl StringCopy\n\
+._888:\n\
+ ldr r0, [r5]\n\
+ mov r1, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._889 @cond_branch\n\
+ ldr r0, ._893\n\
+ ldr r1, ._893 + 12\n\
+ bl StringCopy\n\
+._889:\n\
+ ldr r0, [r5]\n\
+ mov r1, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._890 @cond_branch\n\
+ ldr r0, ._893\n\
+ ldr r1, ._893 + 16\n\
+ bl StringCopy\n\
+._890:\n\
+ ldr r0, [r5]\n\
+ mov r1, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._891 @cond_branch\n\
+ ldr r0, ._893\n\
+ ldr r1, ._893 + 20\n\
+ bl StringCopy\n\
+._891:\n\
+ str r4, [r5]\n\
+ ldr r0, ._893 + 24\n\
+ ldr r4, ._893 + 28\n\
+ mov r3, sl\n\
+ strb r3, [r4]\n\
+ ldr r1, ._893 + 32\n\
+ add r0, r0, r1\n\
+ strb r3, [r0]\n\
+ ldr r0, ._893 + 36\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ str r5, [sp]\n\
+ mov r0, #0x0\n\
+ mov r1, #0x28\n\
+ mov r2, #0x0\n\
+ mov r3, #0x4\n\
+ bl EmitSetMonData\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl ._1392\n\
+._894:\n\
+ .align 2, 0\n\
+._893:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_PoisonJpn\n\
+ .word gStatusConditionString_SleepJpn\n\
+ .word gStatusConditionString_ParalysisJpn\n\
+ .word gStatusConditionString_BurnJpn\n\
+ .word gStatusConditionString_IceJpn\n\
+ .word +0x2000000\n\
+ .word gActiveBank\n\
+ .word 0x16003\n\
+ .word BattleScript_ShedSkinActivates\n\
+._863:\n\
+ ldrb r2, [r4, #0x1b]\n\
+ mov r0, #0x1b\n\
+ ldsb r0, [r4, r0]\n\
+ cmp r0, #0xb\n\
+ ble ._895 @cond_branch\n\
+ bl ._1534\n\
+._895:\n\
+ ldr r0, ._900\n\
+ mov r3, sl\n\
+ lsl r1, r3, #0x3\n\
+ sub r1, r1, r3\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x16]\n\
+ cmp r0, #0x2\n\
+ bne ._897 @cond_branch\n\
+ bl ._1534\n\
+._897:\n\
+ add r0, r2, #1\n\
+ mov r2, #0x0\n\
+ strb r0, [r4, #0x1b]\n\
+ ldr r5, ._900 + 4\n\
+ add r1, r7, r5\n\
+ mov r0, #0x11\n\
+ strb r0, [r1]\n\
+ ldr r1, ._900 + 8\n\
+ add r0, r7, r1\n\
+ strb r2, [r0]\n\
+ ldr r0, ._900 + 12\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r2, ._900 + 16\n\
+ add r0, r7, r2\n\
+ mov r3, sl\n\
+ strb r3, [r0]\n\
+ bl ._1392\n\
+._901:\n\
+ .align 2, 0\n\
+._900:\n\
+ .word gDisableStructs\n\
+ .word 0x160a4\n\
+ .word 0x160a5\n\
+ .word BattleScript_SpeedBoostActivates\n\
+ .word 0x16003\n\
+._868:\n\
+ ldr r2, ._903\n\
+ ldrb r0, [r0]\n\
+ lsl r1, r0, #0x3\n\
+ sub r1, r1, r0\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r2\n\
+ ldrb r3, [r1, #0x18]\n\
+ lsl r0, r3, #0x1f\n\
+ lsr r0, r0, #0x1f\n\
+ mov r2, #0x1\n\
+ eor r2, r2, r0\n\
+ mov r0, #0x2\n\
+ neg r0, r0\n\
+ and r0, r0, r3\n\
+ orr r0, r0, r2\n\
+ strb r0, [r1, #0x18]\n\
+ bl ._1534\n\
+._904:\n\
+ .align 2, 0\n\
+._903:\n\
+ .word gDisableStructs\n\
+._746:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ cmp r0, #0x2b\n\
+ beq ._905 @cond_branch\n\
+ bl ._1534\n\
+._905:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._917\n\
+ ldrh r2, [r0]\n\
+ ldr r5, ._917 + 4\n\
+ add r1, r0, #0\n\
+ cmp r2, r5\n\
+ bne ._907 @cond_branch\n\
+ bl ._1534\n\
+._907:\n\
+ cmp r2, r3\n\
+ beq ._909 @cond_branch\n\
+ add r2, r1, #0\n\
+._912:\n\
+ add r2, r2, #0x2\n\
+ add r4, r4, #0x1\n\
+ ldrh r0, [r2]\n\
+ cmp r0, r5\n\
+ bne ._910 @cond_branch\n\
+ bl ._1534\n\
+._910:\n\
+ cmp r0, r3\n\
+ bne ._912 @cond_branch\n\
+._909:\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, ._917 + 4\n\
+ cmp r1, r0\n\
+ bne ._913 @cond_branch\n\
+ bl ._1534\n\
+._913:\n\
+ ldr r1, ._917 + 8\n\
+ ldr r0, ._917 + 12\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r1, r1, #0x50\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x5\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._915 @cond_branch\n\
+ ldr r0, ._917 + 16\n\
+ ldr r1, [r0]\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x4\n\
+ orr r1, r1, r2\n\
+ str r1, [r0]\n\
+._915:\n\
+ ldr r1, ._917 + 20\n\
+ ldr r0, ._917 + 24\n\
+ str r0, [r1]\n\
+ mov r0, #0x1\n\
+ mov r9, r0\n\
+ bl ._916\n\
+._918:\n\
+ .align 2, 0\n\
+._917:\n\
+ .word gSoundMovesTable\n\
+ .word 0xffff\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gHitMarker\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_SoundproofProtected\n\
+._747:\n\
+ cmp r3, #0\n\
+ bne ._919 @cond_branch\n\
+ bl ._1534\n\
+._919:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0xb\n\
+ beq ._921 @cond_branch\n\
+ cmp r0, #0xb\n\
+ bgt ._922 @cond_branch\n\
+ cmp r0, #0xa\n\
+ beq ._923 @cond_branch\n\
+ b ._956\n\
+._922:\n\
+ cmp r0, #0x12\n\
+ beq ._925 @cond_branch\n\
+ b ._956\n\
+._923:\n\
+ cmp r4, #0xd\n\
+ beq ._927 @cond_branch\n\
+ b ._956\n\
+._927:\n\
+ ldr r0, ._933\n\
+ lsl r1, r3, #0x1\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ cmp r0, #0\n\
+ bne ._929 @cond_branch\n\
+ b ._956\n\
+._929:\n\
+ ldr r1, ._933 + 4\n\
+ ldr r0, ._933 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0, #0x2]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._931 @cond_branch\n\
+ ldr r1, ._933 + 12\n\
+ ldr r0, ._933 + 16\n\
+ b ._932\n\
+._934:\n\
+ .align 2, 0\n\
+._933:\n\
+ .word gBattleMoves\n\
+ .word gProtectStructs\n\
+ .word gBankAttacker\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveHPDrain\n\
+._931:\n\
+ ldr r1, ._936\n\
+ ldr r0, ._936 + 4\n\
+._932:\n\
+ str r0, [r1]\n\
+ mov r2, #0x1\n\
+ b ._935\n\
+._937:\n\
+ .align 2, 0\n\
+._936:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveHPDrain_PPLoss\n\
+._921:\n\
+ cmp r4, #0xb\n\
+ beq ._938 @cond_branch\n\
+ b ._956\n\
+._938:\n\
+ ldr r0, ._944\n\
+ lsl r1, r3, #0x1\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ cmp r0, #0\n\
+ bne ._940 @cond_branch\n\
+ b ._956\n\
+._940:\n\
+ ldr r1, ._944 + 4\n\
+ ldr r0, ._944 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0, #0x2]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._942 @cond_branch\n\
+ ldr r1, ._944 + 12\n\
+ ldr r0, ._944 + 16\n\
+ b ._943\n\
+._945:\n\
+ .align 2, 0\n\
+._944:\n\
+ .word gBattleMoves\n\
+ .word gProtectStructs\n\
+ .word gBankAttacker\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveHPDrain\n\
+._942:\n\
+ ldr r1, ._947\n\
+ ldr r0, ._947 + 4\n\
+._943:\n\
+ str r0, [r1]\n\
+ mov r3, #0x1\n\
+ mov r9, r3\n\
+ b ._956\n\
+._948:\n\
+ .align 2, 0\n\
+._947:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveHPDrain_PPLoss\n\
+._925:\n\
+ cmp r4, #0xa\n\
+ bne ._956 @cond_branch\n\
+ ldr r1, ._954\n\
+ mov r0, #0x58\n\
+ mov r5, sl\n\
+ mul r5, r5, r0\n\
+ add r0, r5, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._956 @cond_branch\n\
+ ldr r2, ._954 + 4\n\
+ mov r0, sl\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r1, r2\n\
+ ldr r3, [r0]\n\
+ mov r4, #0x1\n\
+ and r3, r3, r4\n\
+ add r5, r1, #0\n\
+ cmp r3, #0\n\
+ bne ._951 @cond_branch\n\
+ ldr r0, ._954 + 8\n\
+ strb r3, [r0, #0x5]\n\
+ ldr r1, ._954 + 12\n\
+ ldr r0, ._954 + 16\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0, #0x2]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._952 @cond_branch\n\
+ ldr r1, ._954 + 20\n\
+ ldr r0, ._954 + 24\n\
+ b ._953\n\
+._955:\n\
+ .align 2, 0\n\
+._954:\n\
+ .word gBattleMons\n\
+ .word +0x2017100\n\
+ .word gBattleCommunication\n\
+ .word gProtectStructs\n\
+ .word gBankAttacker\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_FlashFireBoost\n\
+._952:\n\
+ ldr r1, ._957\n\
+ ldr r0, ._957 + 4\n\
+._953:\n\
+ str r0, [r1]\n\
+ add r0, r5, r2\n\
+ ldr r1, [r0]\n\
+ mov r2, #0x1\n\
+ orr r1, r1, r2\n\
+ str r1, [r0]\n\
+ mov r1, #0x2\n\
+ mov r9, r1\n\
+ b ._956\n\
+._958:\n\
+ .align 2, 0\n\
+._957:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_FlashFireBoost_PPLoss\n\
+._951:\n\
+ ldr r0, ._961\n\
+ strb r4, [r0, #0x5]\n\
+ ldr r1, ._961 + 4\n\
+ ldr r0, ._961 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0, #0x2]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._959 @cond_branch\n\
+ ldr r1, ._961 + 12\n\
+ ldr r0, ._961 + 16\n\
+ b ._960\n\
+._962:\n\
+ .align 2, 0\n\
+._961:\n\
+ .word gBattleCommunication\n\
+ .word gProtectStructs\n\
+ .word gBankAttacker\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_FlashFireBoost\n\
+._959:\n\
+ ldr r1, ._968\n\
+ ldr r0, ._968 + 4\n\
+._960:\n\
+ str r0, [r1]\n\
+ mov r2, #0x2\n\
+._935:\n\
+ mov r9, r2\n\
+._956:\n\
+ mov r3, r9\n\
+ cmp r3, #0x1\n\
+ beq ._963 @cond_branch\n\
+ bl ._1534\n\
+._963:\n\
+ ldr r1, ._968 + 8\n\
+ mov r0, #0x58\n\
+ mov r5, sl\n\
+ mul r5, r5, r0\n\
+ add r0, r5, #0\n\
+ add r1, r0, r1\n\
+ ldrh r0, [r1, #0x2c]\n\
+ ldrh r2, [r1, #0x28]\n\
+ cmp r0, r2\n\
+ bne ._965 @cond_branch\n\
+ ldr r1, ._968 + 12\n\
+ ldr r0, ._968 + 16\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0, #0x2]\n\
+ lsl r0, r0, #0x1c\n\
+ cmp r0, #0\n\
+ bge ._966 @cond_branch\n\
+ ldr r1, ._968\n\
+ ldr r0, ._968 + 20\n\
+ str r0, [r1]\n\
+ bl ._1534\n\
+._969:\n\
+ .align 2, 0\n\
+._968:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_FlashFireBoost_PPLoss\n\
+ .word gBattleMons\n\
+ .word gProtectStructs\n\
+ .word gBankAttacker\n\
+ .word BattleScript_MoveHPDrain_FullHP\n\
+._966:\n\
+ ldr r1, ._971\n\
+ ldr r0, ._971 + 4\n\
+ str r0, [r1]\n\
+ bl ._1534\n\
+._972:\n\
+ .align 2, 0\n\
+._971:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveHPDrain_FullHP_PPLoss\n\
+._965:\n\
+ ldr r2, ._975\n\
+ ldrh r0, [r1, #0x2c]\n\
+ lsr r0, r0, #0x2\n\
+ str r0, [r2]\n\
+ cmp r0, #0\n\
+ bne ._973 @cond_branch\n\
+ mov r3, r9\n\
+ str r3, [r2]\n\
+._973:\n\
+ ldr r0, [r2]\n\
+ neg r0, r0\n\
+ str r0, [r2]\n\
+ bl ._1534\n\
+._976:\n\
+ .align 2, 0\n\
+._975:\n\
+ .word gBattleMoveDamage\n\
+._748:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ sub r0, r0, #0x9\n\
+ cmp r0, #0x2f\n\
+ bls ._977 @cond_branch\n\
+ bl ._1534\n\
+._977:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._980\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._981:\n\
+ .align 2, 0\n\
+._980:\n\
+ .word ._979\n\
+._979:\n\
+ .word ._982\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._989\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._997\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1000\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1011\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1022\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1534\n\
+ .word ._1029\n\
+._989:\n\
+ ldr r0, ._1046\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1030 @cond_branch\n\
+ bl ._1534\n\
+._1030:\n\
+ cmp r3, #0xa5\n\
+ bne ._1032 @cond_branch\n\
+ bl ._1534\n\
+._1032:\n\
+ ldr r0, ._1046 + 4\n\
+ lsl r1, r3, #0x1\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ cmp r0, #0\n\
+ bne ._1034 @cond_branch\n\
+ bl ._1534\n\
+._1034:\n\
+ ldr r2, ._1046 + 8\n\
+ ldr r0, ._1046 + 12\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1037 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1037 @cond_branch\n\
+ bl ._1534\n\
+._1037:\n\
+ ldr r1, ._1046 + 16\n\
+ mov r0, #0x58\n\
+ mov r2, sl\n\
+ mul r2, r2, r0\n\
+ add r0, r2, #0\n\
+ add r1, r0, r1\n\
+ add r3, r1, #0\n\
+ add r3, r3, #0x21\n\
+ ldrb r0, [r3]\n\
+ cmp r0, r4\n\
+ bne ._1039 @cond_branch\n\
+ bl ._1534\n\
+._1039:\n\
+ add r2, r1, #0\n\
+ add r2, r2, #0x22\n\
+ ldrb r0, [r2]\n\
+ cmp r0, r4\n\
+ bne ._1041 @cond_branch\n\
+ bl ._1534\n\
+._1041:\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1043 @cond_branch\n\
+ bl ._1534\n\
+._1043:\n\
+ strb r4, [r3]\n\
+ strb r4, [r2]\n\
+ ldr r1, ._1046 + 20\n\
+ mov r0, #0xfd\n\
+ strb r0, [r1]\n\
+ mov r0, #0x3\n\
+ strb r0, [r1, #0x1]\n\
+ strb r4, [r1, #0x2]\n\
+ mov r0, #0xff\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1046 + 24\n\
+ ldr r0, ._1046 + 28\n\
+ str r0, [r1]\n\
+ bl ._1392\n\
+._1047:\n\
+ .align 2, 0\n\
+._1046:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMoves\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMons\n\
+ .word gBattleTextBuff1\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ColorChangeActivates\n\
+._997:\n\
+ ldr r0, ._1061\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1048 @cond_branch\n\
+ bl ._1534\n\
+._1048:\n\
+ ldr r1, ._1061 + 4\n\
+ ldr r0, ._1061 + 8\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r4, r0, r1\n\
+ ldrh r0, [r4, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1050 @cond_branch\n\
+ bl ._1534\n\
+._1050:\n\
+ ldr r0, ._1061 + 12\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1052 @cond_branch\n\
+ bl ._1534\n\
+._1052:\n\
+ ldr r2, ._1061 + 16\n\
+ ldr r0, ._1061 + 20\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1055 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1055 @cond_branch\n\
+ bl ._1534\n\
+._1055:\n\
+ ldr r1, ._1061 + 24\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1057 @cond_branch\n\
+ bl ._1534\n\
+._1057:\n\
+ ldr r1, ._1061 + 28\n\
+ ldrh r0, [r4, #0x2c]\n\
+ lsr r0, r0, #0x4\n\
+ str r0, [r1]\n\
+ cmp r0, #0\n\
+ bne ._1059 @cond_branch\n\
+ str r2, [r1]\n\
+._1059:\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1061 + 32\n\
+ ldr r0, ._1061 + 36\n\
+ str r0, [r1]\n\
+ bl ._1392\n\
+._1062:\n\
+ .align 2, 0\n\
+._1061:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleMoveDamage\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_RoughSkinActivates\n\
+._1000:\n\
+ ldr r0, ._1078\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1063 @cond_branch\n\
+ ldr r0, ._1078 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1064 @cond_branch\n\
+ bl ._1534\n\
+._1064:\n\
+ ldr r1, ._1078 + 8\n\
+ ldr r0, ._1078 + 12\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1066 @cond_branch\n\
+ bl ._1534\n\
+._1066:\n\
+ ldr r0, ._1078 + 16\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1068 @cond_branch\n\
+ bl ._1534\n\
+._1068:\n\
+ ldr r2, ._1078 + 20\n\
+ ldr r0, ._1078 + 24\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1071 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1071 @cond_branch\n\
+ bl ._1534\n\
+._1071:\n\
+ ldr r1, ._1078 + 28\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1073 @cond_branch\n\
+ bl ._1534\n\
+._1073:\n\
+ ldr r5, ._1078 + 32\n\
+ mov r4, #0x3\n\
+._1075:\n\
+ bl Random\n\
+ and r0, r0, r4\n\
+ strb r0, [r5, #0x3]\n\
+ cmp r0, #0\n\
+ beq ._1075 @cond_branch\n\
+ ldr r1, ._1078 + 32\n\
+ ldrb r0, [r1, #0x3]\n\
+ cmp r0, #0x3\n\
+ bne ._1076 @cond_branch\n\
+ add r0, r0, #0x2\n\
+ strb r0, [r1, #0x3]\n\
+._1076:\n\
+ ldrb r0, [r1, #0x3]\n\
+ add r0, r0, #0x40\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1078 + 36\n\
+ ldr r0, ._1078 + 40\n\
+ str r0, [r1]\n\
+ ldr r2, ._1078 + 44\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1079:\n\
+ .align 2, 0\n\
+._1078:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1063:\n\
+ ldr r0, ._1096\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1080 @cond_branch\n\
+ bl ._1534\n\
+._1080:\n\
+ ldr r1, ._1096 + 4\n\
+ ldr r0, ._1096 + 8\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1082 @cond_branch\n\
+ bl ._1534\n\
+._1082:\n\
+ ldr r0, ._1096 + 12\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1084 @cond_branch\n\
+ bl ._1534\n\
+._1084:\n\
+ ldr r2, ._1096 + 16\n\
+ ldr r0, ._1096 + 20\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1087 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1087 @cond_branch\n\
+ bl ._1534\n\
+._1087:\n\
+ ldr r1, ._1096 + 24\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1089 @cond_branch\n\
+ bl ._1534\n\
+._1089:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0xa\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ beq ._1091 @cond_branch\n\
+ bl ._1534\n\
+._1091:\n\
+ ldr r5, ._1096 + 28\n\
+ mov r4, #0x3\n\
+._1093:\n\
+ bl Random\n\
+ and r0, r0, r4\n\
+ strb r0, [r5, #0x3]\n\
+ cmp r0, #0\n\
+ beq ._1093 @cond_branch\n\
+ ldr r1, ._1096 + 28\n\
+ ldrb r0, [r1, #0x3]\n\
+ cmp r0, #0x3\n\
+ bne ._1094 @cond_branch\n\
+ add r0, r0, #0x2\n\
+ strb r0, [r1, #0x3]\n\
+._1094:\n\
+ ldrb r0, [r1, #0x3]\n\
+ add r0, r0, #0x40\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1096 + 32\n\
+ ldr r0, ._1096 + 36\n\
+ str r0, [r1]\n\
+ ldr r2, ._1096 + 40\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1097:\n\
+ .align 2, 0\n\
+._1096:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1011:\n\
+ ldr r0, ._1111\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1098 @cond_branch\n\
+ ldr r0, ._1111 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1099 @cond_branch\n\
+ bl ._1534\n\
+._1099:\n\
+ ldr r1, ._1111 + 8\n\
+ ldr r0, ._1111 + 12\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1101 @cond_branch\n\
+ bl ._1534\n\
+._1101:\n\
+ ldr r0, ._1111 + 16\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1103 @cond_branch\n\
+ bl ._1534\n\
+._1103:\n\
+ ldr r2, ._1111 + 20\n\
+ ldr r0, ._1111 + 24\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1106 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1106 @cond_branch\n\
+ bl ._1534\n\
+._1106:\n\
+ ldr r1, ._1111 + 28\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1108 @cond_branch\n\
+ bl ._1534\n\
+._1108:\n\
+ ldr r1, ._1111 + 32\n\
+ mov r0, #0x42\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1111 + 36\n\
+ ldr r0, ._1111 + 40\n\
+ str r0, [r1]\n\
+ ldr r2, ._1111 + 44\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1112:\n\
+ .align 2, 0\n\
+._1111:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1098:\n\
+ ldr r0, ._1127\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1113 @cond_branch\n\
+ bl ._1534\n\
+._1113:\n\
+ ldr r1, ._1127 + 4\n\
+ ldr r0, ._1127 + 8\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1115 @cond_branch\n\
+ bl ._1534\n\
+._1115:\n\
+ ldr r0, ._1127 + 12\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1117 @cond_branch\n\
+ bl ._1534\n\
+._1117:\n\
+ ldr r2, ._1127 + 16\n\
+ ldr r0, ._1127 + 20\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1120 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1120 @cond_branch\n\
+ bl ._1534\n\
+._1120:\n\
+ ldr r1, ._1127 + 24\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1122 @cond_branch\n\
+ bl ._1534\n\
+._1122:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x3\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ beq ._1124 @cond_branch\n\
+ bl ._1534\n\
+._1124:\n\
+ ldr r1, ._1127 + 28\n\
+ mov r0, #0x42\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1127 + 32\n\
+ ldr r0, ._1127 + 36\n\
+ str r0, [r1]\n\
+ ldr r2, ._1127 + 40\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1128:\n\
+ .align 2, 0\n\
+._1127:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._982:\n\
+ ldr r0, ._1142\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1129 @cond_branch\n\
+ ldr r0, ._1142 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1130 @cond_branch\n\
+ bl ._1534\n\
+._1130:\n\
+ ldr r1, ._1142 + 8\n\
+ ldr r0, ._1142 + 12\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1132 @cond_branch\n\
+ bl ._1534\n\
+._1132:\n\
+ ldr r0, ._1142 + 16\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1134 @cond_branch\n\
+ bl ._1534\n\
+._1134:\n\
+ ldr r2, ._1142 + 20\n\
+ ldr r0, ._1142 + 24\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1137 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1137 @cond_branch\n\
+ bl ._1534\n\
+._1137:\n\
+ ldr r1, ._1142 + 28\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1139 @cond_branch\n\
+ bl ._1534\n\
+._1139:\n\
+ ldr r1, ._1142 + 32\n\
+ mov r0, #0x45\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1142 + 36\n\
+ ldr r0, ._1142 + 40\n\
+ str r0, [r1]\n\
+ ldr r2, ._1142 + 44\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1143:\n\
+ .align 2, 0\n\
+._1142:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1129:\n\
+ ldr r0, ._1158\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1144 @cond_branch\n\
+ bl ._1534\n\
+._1144:\n\
+ ldr r1, ._1158 + 4\n\
+ ldr r0, ._1158 + 8\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1146 @cond_branch\n\
+ bl ._1534\n\
+._1146:\n\
+ ldr r0, ._1158 + 12\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1148 @cond_branch\n\
+ bl ._1534\n\
+._1148:\n\
+ ldr r2, ._1158 + 16\n\
+ ldr r0, ._1158 + 20\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1151 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1151 @cond_branch\n\
+ bl ._1534\n\
+._1151:\n\
+ ldr r1, ._1158 + 24\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1153 @cond_branch\n\
+ bl ._1534\n\
+._1153:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x3\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ beq ._1155 @cond_branch\n\
+ bl ._1534\n\
+._1155:\n\
+ ldr r1, ._1158 + 28\n\
+ mov r0, #0x45\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1158 + 32\n\
+ ldr r0, ._1158 + 36\n\
+ str r0, [r1]\n\
+ ldr r2, ._1158 + 40\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1159:\n\
+ .align 2, 0\n\
+._1158:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleMoves\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1022:\n\
+ ldr r0, ._1173\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1160 @cond_branch\n\
+ ldr r0, ._1173 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1161 @cond_branch\n\
+ bl ._1534\n\
+._1161:\n\
+ ldr r1, ._1173 + 8\n\
+ ldr r0, ._1173 + 12\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1163 @cond_branch\n\
+ bl ._1534\n\
+._1163:\n\
+ ldr r0, ._1173 + 16\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1165 @cond_branch\n\
+ bl ._1534\n\
+._1165:\n\
+ ldr r1, ._1173 + 20\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1167 @cond_branch\n\
+ bl ._1534\n\
+._1167:\n\
+ ldr r2, ._1173 + 24\n\
+ ldr r0, ._1173 + 28\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1170 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1170 @cond_branch\n\
+ bl ._1534\n\
+._1170:\n\
+ ldr r1, ._1173 + 32\n\
+ mov r0, #0x43\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1173 + 36\n\
+ ldr r0, ._1173 + 40\n\
+ str r0, [r1]\n\
+ ldr r2, ._1173 + 44\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1174:\n\
+ .align 2, 0\n\
+._1173:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gBattleMoves\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1160:\n\
+ ldr r0, ._1189\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1175 @cond_branch\n\
+ bl ._1534\n\
+._1175:\n\
+ ldr r1, ._1189 + 4\n\
+ ldr r0, ._1189 + 8\n\
+ ldrb r2, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1177 @cond_branch\n\
+ bl ._1534\n\
+._1177:\n\
+ ldr r0, ._1189 + 12\n\
+ lsl r1, r2, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1179 @cond_branch\n\
+ bl ._1534\n\
+._1179:\n\
+ ldr r1, ._1189 + 16\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1181 @cond_branch\n\
+ bl ._1534\n\
+._1181:\n\
+ ldr r2, ._1189 + 20\n\
+ ldr r0, ._1189 + 24\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r1, r0, #0x2\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1184 @cond_branch\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1184 @cond_branch\n\
+ bl ._1534\n\
+._1184:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x3\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ beq ._1186 @cond_branch\n\
+ bl ._1534\n\
+._1186:\n\
+ ldr r1, ._1189 + 28\n\
+ mov r0, #0x43\n\
+ strb r0, [r1, #0x3]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1189 + 32\n\
+ ldr r0, ._1189 + 36\n\
+ str r0, [r1]\n\
+ ldr r2, ._1189 + 40\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl ._1392\n\
+._1190:\n\
+ .align 2, 0\n\
+._1189:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gBattleMoves\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_ApplySecondaryEffect\n\
+ .word gHitMarker\n\
+._1029:\n\
+ ldr r0, ._1217\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1191 @cond_branch\n\
+ b ._1192\n\
+._1191:\n\
+ ldr r0, ._1217 + 4\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1193 @cond_branch\n\
+ bl ._1534\n\
+._1193:\n\
+ ldr r5, ._1217 + 8\n\
+ ldr r7, ._1217 + 12\n\
+ ldrb r1, [r7]\n\
+ mov r6, #0x58\n\
+ add r0, r1, #0\n\
+ mul r0, r0, r6\n\
+ add r4, r0, r5\n\
+ ldrh r0, [r4, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1195 @cond_branch\n\
+ bl ._1534\n\
+._1195:\n\
+ ldr r0, ._1217 + 16\n\
+ lsl r1, r1, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1197 @cond_branch\n\
+ bl ._1534\n\
+._1197:\n\
+ ldr r1, ._1217 + 20\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1199 @cond_branch\n\
+ bl ._1534\n\
+._1199:\n\
+ ldr r3, ._1217 + 24\n\
+ ldr r0, ._1217 + 28\n\
+ mov r8, r0\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r2, r0, #0x2\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1202 @cond_branch\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1202 @cond_branch\n\
+ bl ._1534\n\
+._1202:\n\
+ add r0, r1, #0\n\
+ mul r0, r0, r6\n\
+ add r0, r0, r5\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1204 @cond_branch\n\
+ bl ._1534\n\
+._1204:\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0xc\n\
+ bne ._1206 @cond_branch\n\
+ bl ._1534\n\
+._1206:\n\
+ ldr r0, [sp, #0x8]\n\
+ ldr r1, [sp, #0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ add r4, r0, #0\n\
+ ldr r0, [sp, #0xc]\n\
+ ldr r1, [sp, #0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r4, r4, #0x18\n\
+ lsl r0, r0, #0x18\n\
+ cmp r4, r0\n\
+ bne ._1208 @cond_branch\n\
+ bl ._1534\n\
+._1208:\n\
+ ldrb r0, [r7]\n\
+ mul r0, r0, r6\n\
+ add r4, r5, #0\n\
+ add r4, r4, #0x50\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ mov r1, #0xf0\n\
+ lsl r1, r1, #0xc\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1210 @cond_branch\n\
+ bl ._1534\n\
+._1210:\n\
+ ldr r0, [sp, #0x8]\n\
+ ldr r1, [sp, #0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._1212 @cond_branch\n\
+ bl ._1534\n\
+._1212:\n\
+ ldr r0, [sp, #0xc]\n\
+ ldr r1, [sp, #0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._1214 @cond_branch\n\
+ bl ._1534\n\
+._1214:\n\
+ ldrb r0, [r7]\n\
+ add r2, r0, #0\n\
+ mul r2, r2, r6\n\
+ add r2, r2, r4\n\
+ ldr r1, ._1217 + 32\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, [r0]\n\
+ lsl r1, r1, #0x10\n\
+ ldr r0, [r2]\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1217 + 36\n\
+ ldr r0, ._1217 + 40\n\
+ str r0, [r1]\n\
+ bl ._1392\n\
+._1218:\n\
+ .align 2, 0\n\
+._1217:\n\
+ .word gUnknown_02023A14+0x50\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gBattleMoves\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBitTable\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_CuteCharmActivates\n\
+._1192:\n\
+ ldr r0, ._1245\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1219 @cond_branch\n\
+ bl ._1534\n\
+._1219:\n\
+ ldr r5, ._1245 + 4\n\
+ ldr r7, ._1245 + 8\n\
+ ldrb r1, [r7]\n\
+ mov r6, #0x58\n\
+ add r0, r1, #0\n\
+ mul r0, r0, r6\n\
+ add r0, r0, r5\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1221 @cond_branch\n\
+ bl ._1534\n\
+._1221:\n\
+ ldr r0, ._1245 + 12\n\
+ lsl r1, r1, #0x4\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1, #0x1]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._1223 @cond_branch\n\
+ bl ._1534\n\
+._1223:\n\
+ ldr r1, ._1245 + 16\n\
+ lsl r0, r3, #0x1\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x8]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1225 @cond_branch\n\
+ bl ._1534\n\
+._1225:\n\
+ ldr r3, ._1245 + 20\n\
+ ldr r0, ._1245 + 24\n\
+ mov r8, r0\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r2, r0, #0x2\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0x8\n\
+ add r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1228 @cond_branch\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0xc\n\
+ add r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._1228 @cond_branch\n\
+ bl ._1534\n\
+._1228:\n\
+ add r0, r1, #0\n\
+ mul r0, r0, r6\n\
+ add r0, r0, r5\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ bne ._1230 @cond_branch\n\
+ bl ._1534\n\
+._1230:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x3\n\
+ bl gMysteryEventScriptCmdTableEnd+0x43d0\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ beq ._1232 @cond_branch\n\
+ bl ._1534\n\
+._1232:\n\
+ ldrb r0, [r7]\n\
+ mul r0, r0, r6\n\
+ add r0, r0, r5\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0xc\n\
+ bne ._1234 @cond_branch\n\
+ bl ._1534\n\
+._1234:\n\
+ ldr r0, [sp, #0x8]\n\
+ ldr r1, [sp, #0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ add r4, r0, #0\n\
+ ldr r0, [sp, #0xc]\n\
+ ldr r1, [sp, #0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r4, r4, #0x18\n\
+ lsl r0, r0, #0x18\n\
+ cmp r4, r0\n\
+ bne ._1236 @cond_branch\n\
+ bl ._1534\n\
+._1236:\n\
+ ldrb r0, [r7]\n\
+ mul r0, r0, r6\n\
+ add r4, r5, #0\n\
+ add r4, r4, #0x50\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ mov r1, #0xf0\n\
+ lsl r1, r1, #0xc\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1238 @cond_branch\n\
+ bl ._1534\n\
+._1238:\n\
+ ldr r0, [sp, #0x8]\n\
+ ldr r1, [sp, #0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._1240 @cond_branch\n\
+ bl ._1534\n\
+._1240:\n\
+ ldr r0, [sp, #0xc]\n\
+ ldr r1, [sp, #0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._1242 @cond_branch\n\
+ bl ._1534\n\
+._1242:\n\
+ ldrb r0, [r7]\n\
+ add r2, r0, #0\n\
+ mul r2, r2, r6\n\
+ add r2, r2, r4\n\
+ ldr r1, ._1245 + 28\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, [r0]\n\
+ lsl r1, r1, #0x10\n\
+ ldr r0, [r2]\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1245 + 32\n\
+ ldr r0, ._1245 + 36\n\
+ str r0, [r1]\n\
+ bl ._1392\n\
+._1246:\n\
+ .align 2, 0\n\
+._1245:\n\
+ .word gBattleMoveFlags\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gProtectStructs\n\
+ .word gBattleMoves\n\
+ .word gSpecialStatuses\n\
+ .word gBankTarget\n\
+ .word gBitTable\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_CuteCharmActivates\n\
+._749:\n\
+ mov r5, #0x0\n\
+ mov sl, r5\n\
+ ldr r0, ._1251\n\
+ ldrb r0, [r0]\n\
+ cmp sl, r0\n\
+ bcc ._1366 @cond_branch\n\
+ bl ._1534\n\
+._1366:\n\
+ ldr r1, ._1251 + 4\n\
+ mov r0, #0x58\n\
+ mov r2, sl\n\
+ mul r2, r2, r0\n\
+ add r0, r2, #0\n\
+ add r0, r0, r1\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x7\n\
+ add r2, r1, #0\n\
+ cmp r0, #0x41\n\
+ bls ._1249 @cond_branch\n\
+ b ._1346\n\
+._1249:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1251 + 8\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1252:\n\
+ .align 2, 0\n\
+._1251:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word ._1253\n\
+._1253:\n\
+ .word ._1254\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1259\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1319\n\
+ .word ._1346\n\
+ .word ._1264\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1267\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1287\n\
+ .word ._1288\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1346\n\
+ .word ._1319\n\
+._1264:\n\
+ mov r0, #0x58\n\
+ mov r3, sl\n\
+ mul r3, r3, r0\n\
+ add r0, r3, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, ._1323\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1320 @cond_branch\n\
+ b ._1346\n\
+._1320:\n\
+ ldr r0, ._1323 + 4\n\
+ ldr r1, ._1323 + 8\n\
+ b ._1331\n\
+._1324:\n\
+ .align 2, 0\n\
+._1323:\n\
+ .word 0xf88\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_PoisonJpn\n\
+._1267:\n\
+ mov r0, #0x58\n\
+ mov r1, sl\n\
+ mul r1, r1, r0\n\
+ add r0, r1, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x50\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1325 @cond_branch\n\
+ b ._1346\n\
+._1325:\n\
+ ldr r0, ._1328\n\
+ ldr r1, ._1328 + 4\n\
+ bl StringCopy\n\
+ mov r2, #0x2\n\
+ mov r9, r2\n\
+ b ._1343\n\
+._1329:\n\
+ .align 2, 0\n\
+._1328:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_ConfusionJpn\n\
+._1254:\n\
+ mov r0, #0x58\n\
+ mov r3, sl\n\
+ mul r3, r3, r0\n\
+ add r0, r3, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1346 @cond_branch\n\
+ ldr r0, ._1332\n\
+ ldr r1, ._1332 + 4\n\
+ b ._1331\n\
+._1333:\n\
+ .align 2, 0\n\
+._1332:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_ParalysisJpn\n\
+._1319:\n\
+ mov r0, #0x58\n\
+ mov r3, sl\n\
+ mul r3, r3, r0\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x4c\n\
+ add r0, r3, r0\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1346 @cond_branch\n\
+ add r2, r2, #0x50\n\
+ add r2, r3, r2\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._1336\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, ._1336 + 4\n\
+ ldr r1, ._1336 + 8\n\
+ bl StringCopy\n\
+ mov r0, #0x1\n\
+ mov r9, r0\n\
+ b ._1343\n\
+._1337:\n\
+ .align 2, 0\n\
+._1336:\n\
+ .word 0xf7ffffff\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_SleepJpn\n\
+._1288:\n\
+ mov r0, #0x58\n\
+ mov r1, sl\n\
+ mul r1, r1, r0\n\
+ add r0, r1, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1346 @cond_branch\n\
+ ldr r0, ._1340\n\
+ ldr r1, ._1340 + 4\n\
+ bl StringCopy\n\
+ mov r2, #0x1\n\
+ mov r9, r2\n\
+ b ._1343\n\
+._1341:\n\
+ .align 2, 0\n\
+._1340:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_BurnJpn\n\
+._1287:\n\
+ mov r0, #0x58\n\
+ mov r3, sl\n\
+ mul r3, r3, r0\n\
+ add r0, r3, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1346 @cond_branch\n\
+ ldr r0, ._1344\n\
+ ldr r1, ._1344 + 4\n\
+._1331:\n\
+ bl StringCopy\n\
+ mov r5, #0x1\n\
+ mov r9, r5\n\
+ b ._1343\n\
+._1345:\n\
+ .align 2, 0\n\
+._1344:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_IceJpn\n\
+._1259:\n\
+ mov r0, #0x58\n\
+ mov r1, sl\n\
+ mul r1, r1, r0\n\
+ add r0, r1, #0\n\
+ add r1, r2, #0\n\
+ add r1, r1, #0x50\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0xf0\n\
+ lsl r1, r1, #0xc\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1346 @cond_branch\n\
+ ldr r0, ._1352\n\
+ ldr r1, ._1352 + 4\n\
+ bl StringCopy\n\
+ mov r2, #0x3\n\
+ mov r9, r2\n\
+._1346:\n\
+ mov r3, r9\n\
+ cmp r3, #0\n\
+ beq ._1347 @cond_branch\n\
+._1343:\n\
+ mov r5, r9\n\
+ cmp r5, #0x2\n\
+ beq ._1348 @cond_branch\n\
+ cmp r5, #0x2\n\
+ bgt ._1349 @cond_branch\n\
+ cmp r5, #0x1\n\
+ beq ._1350 @cond_branch\n\
+ b ._1355\n\
+._1353:\n\
+ .align 2, 0\n\
+._1352:\n\
+ .word gBattleTextBuff1\n\
+ .word gStatusConditionString_LoveJpn\n\
+._1349:\n\
+ mov r0, r9\n\
+ cmp r0, #0x3\n\
+ beq ._1354 @cond_branch\n\
+ b ._1355\n\
+._1350:\n\
+ ldr r1, ._1357\n\
+ mov r0, #0x58\n\
+ mov r2, sl\n\
+ mul r2, r2, r0\n\
+ add r1, r1, #0x4c\n\
+ add r2, r2, r1\n\
+ mov r0, #0x0\n\
+ b ._1356\n\
+._1358:\n\
+ .align 2, 0\n\
+._1357:\n\
+ .word gBattleMons\n\
+._1348:\n\
+ ldr r1, ._1360\n\
+ mov r0, #0x58\n\
+ mov r2, sl\n\
+ mul r2, r2, r0\n\
+ add r1, r1, #0x50\n\
+ add r2, r2, r1\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x8\n\
+ neg r1, r1\n\
+ b ._1359\n\
+._1361:\n\
+ .align 2, 0\n\
+._1360:\n\
+ .word gBattleMons\n\
+._1354:\n\
+ ldr r1, ._1363\n\
+ mov r0, #0x58\n\
+ mov r2, sl\n\
+ mul r2, r2, r0\n\
+ add r1, r1, #0x50\n\
+ add r2, r2, r1\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._1363 + 4\n\
+._1359:\n\
+ and r0, r0, r1\n\
+._1356:\n\
+ str r0, [r2]\n\
+._1355:\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1363 + 8\n\
+ ldr r0, ._1363 + 12\n\
+ str r0, [r1]\n\
+ ldr r0, ._1363 + 16\n\
+ ldr r1, ._1363 + 20\n\
+ add r0, r0, r1\n\
+ mov r2, sl\n\
+ strb r2, [r0]\n\
+ ldr r4, ._1363 + 24\n\
+ strb r2, [r4]\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._1363 + 28\n\
+ add r0, r0, r1\n\
+ str r0, [sp]\n\
+ mov r0, #0x0\n\
+ mov r1, #0x28\n\
+ mov r2, #0x0\n\
+ mov r3, #0x4\n\
+ bl EmitSetMonData\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl ._1540\n\
+._1364:\n\
+ .align 2, 0\n\
+._1363:\n\
+ .word gBattleMons\n\
+ .word 0xfff0ffff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_AbilityCuredStatus\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+ .word gActiveBank\n\
+ .word gUnknown_02024ACC\n\
+._1347:\n\
+ mov r0, sl\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov sl, r0\n\
+ ldr r0, ._1368\n\
+ ldrb r0, [r0]\n\
+ cmp sl, r0\n\
+ bcs ._1365 @cond_branch\n\
+ b ._1366\n\
+._1365:\n\
+ bl ._1534\n\
+._1369:\n\
+ .align 2, 0\n\
+._1368:\n\
+ .word gNoOfAllBanks\n\
+._750:\n\
+ mov r3, #0x0\n\
+ mov sl, r3\n\
+ ldr r0, ._1377\n\
+ ldrb r0, [r0]\n\
+ cmp sl, r0\n\
+ bcc ._1370 @cond_branch\n\
+ b ._1534\n\
+._1370:\n\
+ ldr r4, ._1377 + 4\n\
+._1375:\n\
+ mov r0, #0x58\n\
+ mov r5, sl\n\
+ mul r5, r5, r0\n\
+ add r0, r5, #0\n\
+ add r0, r0, r4\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x3b\n\
+ bne ._1373 @cond_branch\n\
+ mov r0, sl\n\
+ bl CastformDataTypeChange\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+ cmp r0, #0\n\
+ beq ._1373 @cond_branch\n\
+ b ._1374\n\
+._1373:\n\
+ mov r0, sl\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov sl, r0\n\
+ ldr r0, ._1377\n\
+ ldrb r0, [r0]\n\
+ cmp sl, r0\n\
+ bcc ._1375 @cond_branch\n\
+ b ._1534\n\
+._1378:\n\
+ .align 2, 0\n\
+._1377:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+._751:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x1c\n\
+ beq ._1379 @cond_branch\n\
+ b ._1534\n\
+._1379:\n\
+ ldr r4, ._1385\n\
+ ldr r1, [r4]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1381 @cond_branch\n\
+ b ._1534\n\
+._1381:\n\
+ ldr r0, ._1385 + 4\n\
+ and r1, r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, ._1385 + 8\n\
+ add r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, #0x6\n\
+ bne ._1383 @cond_branch\n\
+ mov r0, #0x2\n\
+ strb r0, [r2]\n\
+._1383:\n\
+ ldr r1, ._1385 + 12\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, #0x40\n\
+ strb r0, [r1, #0x3]\n\
+ ldr r0, ._1385 + 16\n\
+ ldrb r1, [r0]\n\
+ ldr r5, ._1385 + 20\n\
+ add r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1385 + 24\n\
+ ldr r0, ._1385 + 28\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r4]\n\
+ b ._1392\n\
+._1386:\n\
+ .align 2, 0\n\
+._1385:\n\
+ .word gHitMarker\n\
+ .word 0xffffbfff\n\
+ .word 0x160ca\n\
+ .word gBattleCommunication\n\
+ .word gBankTarget\n\
+ .word 0x16003\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_SynchronizeActivates\n\
+._752:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x1c\n\
+ beq ._1387 @cond_branch\n\
+ b ._1534\n\
+._1387:\n\
+ ldr r4, ._1393\n\
+ ldr r1, [r4]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1389 @cond_branch\n\
+ b ._1534\n\
+._1389:\n\
+ ldr r0, ._1393 + 4\n\
+ and r1, r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, ._1393 + 8\n\
+ add r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, #0x6\n\
+ bne ._1391 @cond_branch\n\
+ mov r0, #0x2\n\
+ strb r0, [r2]\n\
+._1391:\n\
+ ldr r1, ._1393 + 12\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, #0x3]\n\
+ ldr r0, ._1393 + 16\n\
+ ldrb r1, [r0]\n\
+ ldr r5, ._1393 + 20\n\
+ add r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1393 + 24\n\
+ ldr r0, ._1393 + 28\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x6\n\
+ orr r0, r0, r1\n\
+ str r0, [r4]\n\
+ b ._1392\n\
+._1394:\n\
+ .align 2, 0\n\
+._1393:\n\
+ .word gHitMarker\n\
+ .word 0xffffbfff\n\
+ .word 0x160ca\n\
+ .word gBattleCommunication\n\
+ .word gBankAttacker\n\
+ .word 0x16003\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_SynchronizeActivates\n\
+._753:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1402\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt ._1395 @cond_branch\n\
+ b ._1534\n\
+._1395:\n\
+ ldr r0, ._1402 + 4\n\
+ add r5, r1, #0\n\
+ ldr r2, ._1402 + 8\n\
+ add r3, r0, #0\n\
+ add r3, r3, #0x20\n\
+ mov r6, #0x80\n\
+ lsl r6, r6, #0xc\n\
+._1400:\n\
+ ldrb r1, [r3]\n\
+ cmp r1, #0x16\n\
+ bne ._1398 @cond_branch\n\
+ ldr r0, [r2]\n\
+ and r0, r0, r6\n\
+ cmp r0, #0\n\
+ beq ._1398 @cond_branch\n\
+ b ._1399\n\
+._1398:\n\
+ add r2, r2, #0x4\n\
+ add r3, r3, #0x58\n\
+ add r4, r4, #0x1\n\
+ cmp r4, r5\n\
+ blt ._1400 @cond_branch\n\
+ b ._1534\n\
+._1403:\n\
+ .align 2, 0\n\
+._1402:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gStatuses3\n\
+._755:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1417\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1404 @cond_branch\n\
+ b ._1534\n\
+._1404:\n\
+ ldr r0, ._1417 + 4\n\
+ mov r8, r0\n\
+ ldr r1, ._1417 + 8\n\
+ add r1, r1, #0x20\n\
+ str r1, [sp, #0x1c]\n\
+ mov r2, #0x0\n\
+ str r2, [sp, #0x20]\n\
+._1434:\n\
+ ldr r3, [sp, #0x1c]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, #0x24\n\
+ beq ._1406 @cond_branch\n\
+ b ._1431\n\
+._1406:\n\
+ ldr r0, ._1417 + 12\n\
+ ldr r5, [sp, #0x20]\n\
+ add r0, r5, r0\n\
+ ldr r1, [r0]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0xd\n\
+ and r1, r1, r0\n\
+ str r5, [sp, #0x18]\n\
+ cmp r1, #0\n\
+ bne ._1408 @cond_branch\n\
+ b ._1431\n\
+._1408:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl GetBankIdentity\n\
+ mov r1, #0x1\n\
+ add r5, r0, #0\n\
+ eor r5, r5, r1\n\
+ and r5, r5, r1\n\
+ add r0, r5, #0\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ add r0, r5, #2\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ ldr r0, ._1417 + 16\n\
+ ldrh r1, [r0]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1410 @cond_branch\n\
+ b ._1411\n\
+._1410:\n\
+ mov r1, #0x58\n\
+ add r0, r6, #0\n\
+ mul r0, r0, r1\n\
+ ldr r3, ._1417 + 8\n\
+ add r1, r0, r3\n\
+ add r0, r1, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1420 @cond_branch\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1415 @cond_branch\n\
+ mov r1, #0x58\n\
+ add r0, r7, #0\n\
+ mul r0, r0, r1\n\
+ add r1, r0, r3\n\
+ add r0, r1, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1415 @cond_branch\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1415 @cond_branch\n\
+ str r2, [sp, #0x24]\n\
+ bl Random\n\
+ ldr r2, [sp, #0x24]\n\
+ add r1, r2, #0\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x1\n\
+ orr r5, r5, r1\n\
+ add r0, r5, #0\n\
+ bl GetBankByIdentity\n\
+ mov r2, r8\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r2]\n\
+ mov r3, #0x58\n\
+ mul r0, r0, r3\n\
+ ldr r5, ._1417 + 8\n\
+ add r0, r0, r5\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r1, [sp, #0x1c]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ mul r0, r0, r3\n\
+ add r0, r0, r5\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r2, ._1417 + 20\n\
+ strb r0, [r2]\n\
+ b ._1416\n\
+._1418:\n\
+ .align 2, 0\n\
+._1417:\n\
+ .word gNoOfAllBanks\n\
+ .word gActiveBank\n\
+ .word gBattleMons\n\
+ .word gStatuses3\n\
+ .word gBattleTypeFlags\n\
+ .word gLastUsedAbility\n\
+._1415:\n\
+ ldr r3, ._1422\n\
+ mov r2, #0x58\n\
+ add r0, r6, #0\n\
+ mul r0, r0, r2\n\
+ add r1, r0, r3\n\
+ add r0, r1, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1420 @cond_branch\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1420 @cond_branch\n\
+ mov r5, r8\n\
+ strb r6, [r5]\n\
+ add r1, r4, #0\n\
+ mul r1, r1, r2\n\
+ add r1, r1, r3\n\
+ ldrb r0, [r5]\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r3\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ add r1, r1, #0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r3\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ b ._1426\n\
+._1423:\n\
+ .align 2, 0\n\
+._1422:\n\
+ .word gBattleMons\n\
+._1420:\n\
+ ldr r3, ._1427\n\
+ mov r2, #0x58\n\
+ add r0, r7, #0\n\
+ mul r0, r0, r2\n\
+ add r1, r0, r3\n\
+ add r0, r1, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1430 @cond_branch\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1430 @cond_branch\n\
+ mov r5, r8\n\
+ strb r7, [r5]\n\
+ add r1, r4, #0\n\
+ mul r1, r1, r2\n\
+ add r1, r1, r3\n\
+ ldrb r0, [r5]\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r3\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ add r1, r1, #0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ mul r0, r0, r2\n\
+ add r0, r0, r3\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ b ._1426\n\
+._1428:\n\
+ .align 2, 0\n\
+._1427:\n\
+ .word gBattleMons\n\
+._1411:\n\
+ mov r2, r8\n\
+ strb r6, [r2]\n\
+ mov r3, #0x58\n\
+ add r0, r6, #0\n\
+ mul r0, r0, r3\n\
+ ldr r5, ._1436\n\
+ add r0, r0, r5\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x20\n\
+ ldrb r1, [r2]\n\
+ cmp r1, #0\n\
+ beq ._1430 @cond_branch\n\
+ ldrh r0, [r0, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1430 @cond_branch\n\
+ ldr r0, [sp, #0x1c]\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r2]\n\
+._1426:\n\
+ ldr r1, ._1436 + 4\n\
+ strb r0, [r1]\n\
+._1416:\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1430:\n\
+ mov r2, r9\n\
+ cmp r2, #0\n\
+ beq ._1431 @cond_branch\n\
+ b ._1432\n\
+._1431:\n\
+ ldr r3, [sp, #0x1c]\n\
+ add r3, r3, #0x58\n\
+ str r3, [sp, #0x1c]\n\
+ ldr r5, [sp, #0x20]\n\
+ add r5, r5, #0x4\n\
+ str r5, [sp, #0x20]\n\
+ add r4, r4, #0x1\n\
+ ldr r0, ._1436 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ bge ._1433 @cond_branch\n\
+ b ._1434\n\
+._1433:\n\
+ b ._1534\n\
+._1437:\n\
+ .align 2, 0\n\
+._1436:\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+ .word gNoOfAllBanks\n\
+._754:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1445\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt ._1438 @cond_branch\n\
+ b ._1534\n\
+._1438:\n\
+ ldr r0, ._1445 + 4\n\
+ add r5, r1, #0\n\
+ ldr r2, ._1445 + 8\n\
+ add r3, r0, #0\n\
+ add r3, r3, #0x20\n\
+ mov r6, #0x80\n\
+ lsl r6, r6, #0xc\n\
+._1443:\n\
+ ldrb r1, [r3]\n\
+ cmp r1, #0x16\n\
+ bne ._1441 @cond_branch\n\
+ ldr r0, [r2]\n\
+ and r0, r0, r6\n\
+ cmp r0, #0\n\
+ beq ._1441 @cond_branch\n\
+ b ._1442\n\
+._1441:\n\
+ add r2, r2, #0x4\n\
+ add r3, r3, #0x58\n\
+ add r4, r4, #0x1\n\
+ cmp r4, r5\n\
+ blt ._1443 @cond_branch\n\
+ b ._1534\n\
+._1446:\n\
+ .align 2, 0\n\
+._1445:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gStatuses3\n\
+._756:\n\
+ mov r0, sl\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1453\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1447 @cond_branch\n\
+ b ._1534\n\
+._1447:\n\
+ ldr r7, ._1453 + 4\n\
+._1451:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ add r3, r4, #1\n\
+ cmp r0, r5\n\
+ beq ._1450 @cond_branch\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r7\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne ._1450 @cond_branch\n\
+ ldr r0, ._1453 + 8\n\
+ strb r6, [r0]\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1450:\n\
+ add r4, r3, #0\n\
+ ldr r0, ._1453\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1451 @cond_branch\n\
+ b ._1534\n\
+._1454:\n\
+ .align 2, 0\n\
+._1453:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+._757:\n\
+ mov r0, sl\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1461\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1455 @cond_branch\n\
+ b ._1534\n\
+._1455:\n\
+ ldr r7, ._1461 + 4\n\
+._1459:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ add r3, r4, #1\n\
+ cmp r0, r5\n\
+ bne ._1458 @cond_branch\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r7\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne ._1458 @cond_branch\n\
+ ldr r0, ._1461 + 8\n\
+ strb r6, [r0]\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1458:\n\
+ add r4, r3, #0\n\
+ ldr r0, ._1461\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1459 @cond_branch\n\
+ b ._1534\n\
+._1462:\n\
+ .align 2, 0\n\
+._1461:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+._758:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0xfd\n\
+ beq ._1463 @cond_branch\n\
+ cmp r0, #0xfe\n\
+ beq ._1464 @cond_branch\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1468\n\
+ add r5, r0, #0\n\
+ ldrb r2, [r5]\n\
+ cmp r4, r2\n\
+ blt ._1465 @cond_branch\n\
+ b ._1534\n\
+._1465:\n\
+ ldr r2, ._1468 + 4\n\
+ b ._1485\n\
+._1469:\n\
+ .align 2, 0\n\
+._1468:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+._1463:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1475\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1470 @cond_branch\n\
+ b ._1534\n\
+._1470:\n\
+ ldr r5, ._1475 + 4\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x9\n\
+ add r1, r0, #0\n\
+._1473:\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ and r0, r0, r2\n\
+ add r3, r4, #1\n\
+ cmp r0, #0\n\
+ beq ._1472 @cond_branch\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1472:\n\
+ add r4, r3, #0\n\
+ cmp r4, r1\n\
+ blt ._1473 @cond_branch\n\
+ b ._1534\n\
+._1476:\n\
+ .align 2, 0\n\
+._1475:\n\
+ .word gNoOfAllBanks\n\
+ .word gStatuses3\n\
+._1464:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1482\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1477 @cond_branch\n\
+ b ._1534\n\
+._1477:\n\
+ ldr r5, ._1482 + 4\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0xa\n\
+ add r1, r0, #0\n\
+._1480:\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ and r0, r0, r2\n\
+ add r3, r4, #1\n\
+ cmp r0, #0\n\
+ beq ._1479 @cond_branch\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1479:\n\
+ add r4, r3, #0\n\
+ cmp r4, r1\n\
+ blt ._1480 @cond_branch\n\
+ b ._1534\n\
+._1483:\n\
+ .align 2, 0\n\
+._1482:\n\
+ .word gNoOfAllBanks\n\
+ .word gStatuses3\n\
+._1485:\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r2\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ add r3, r4, #1\n\
+ cmp r0, r6\n\
+ bne ._1484 @cond_branch\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1484:\n\
+ add r4, r3, #0\n\
+ ldrb r1, [r5]\n\
+ cmp r4, r1\n\
+ blt ._1485 @cond_branch\n\
+ b ._1534\n\
+._763:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1493\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1487 @cond_branch\n\
+ b ._1534\n\
+._1487:\n\
+ ldr r7, ._1493 + 4\n\
+ add r2, r0, #0\n\
+ mov r5, #0x58\n\
+._1491:\n\
+ add r0, r4, #0\n\
+ mul r0, r0, r5\n\
+ add r1, r0, r7\n\
+ add r0, r1, #0\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ add r3, r4, #1\n\
+ cmp r0, r6\n\
+ bne ._1490 @cond_branch\n\
+ ldrh r0, [r1, #0x28]\n\
+ cmp r0, #0\n\
+ beq ._1490 @cond_branch\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1490:\n\
+ add r4, r3, #0\n\
+ cmp r4, r2\n\
+ blt ._1491 @cond_branch\n\
+ b ._1534\n\
+._1494:\n\
+ .align 2, 0\n\
+._1493:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+._759:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1501\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1495 @cond_branch\n\
+ b ._1534\n\
+._1495:\n\
+ ldr r7, ._1501 + 4\n\
+ add r1, r0, #0\n\
+ mov r5, #0x58\n\
+ ldr r2, ._1501 + 8\n\
+._1499:\n\
+ add r0, r4, #0\n\
+ mul r0, r0, r5\n\
+ add r0, r0, r7\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ add r3, r4, #1\n\
+ cmp r0, r6\n\
+ bne ._1498 @cond_branch\n\
+ cmp r4, sl\n\
+ beq ._1498 @cond_branch\n\
+ strb r6, [r2]\n\
+ lsl r0, r3, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1498:\n\
+ add r4, r3, #0\n\
+ cmp r4, r1\n\
+ blt ._1499 @cond_branch\n\
+ b ._1534\n\
+._1502:\n\
+ .align 2, 0\n\
+._1501:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+._760:\n\
+ mov r0, sl\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1509\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1503 @cond_branch\n\
+ b ._1534\n\
+._1503:\n\
+ ldr r7, ._1509 + 4\n\
+._1507:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, r5\n\
+ beq ._1506 @cond_branch\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r7\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne ._1506 @cond_branch\n\
+ ldr r0, ._1509 + 8\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1506:\n\
+ add r4, r4, #0x1\n\
+ ldr r0, ._1509\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1507 @cond_branch\n\
+ b ._1534\n\
+._1510:\n\
+ .align 2, 0\n\
+._1509:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+._761:\n\
+ mov r0, sl\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1517\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1511 @cond_branch\n\
+ b ._1534\n\
+._1511:\n\
+ ldr r7, ._1517 + 4\n\
+._1515:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, r5\n\
+ bne ._1514 @cond_branch\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r7\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne ._1514 @cond_branch\n\
+ ldr r0, ._1517 + 8\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1514:\n\
+ add r4, r4, #0x1\n\
+ ldr r0, ._1517\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._1515 @cond_branch\n\
+ b ._1534\n\
+._1518:\n\
+ .align 2, 0\n\
+._1517:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility\n\
+._853:\n\
+ ldr r0, ._1520\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._1520 + 4\n\
+ ldr r2, ._1520 + 8\n\
+ add r1, r0, r2\n\
+ strb r6, [r1]\n\
+ mov r1, r9\n\
+ sub r1, r1, #0x1\n\
+ ldr r3, ._1520 + 12\n\
+ add r0, r0, r3\n\
+ strb r1, [r0]\n\
+ b ._1534\n\
+._1521:\n\
+ .align 2, 0\n\
+._1520:\n\
+ .word BattleScript_CastformChange\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+ .word 0x1609b\n\
+._1374:\n\
+ ldr r0, ._1523\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r0, ._1523 + 4\n\
+ ldr r5, ._1523 + 8\n\
+ add r1, r0, r5\n\
+ mov r2, sl\n\
+ strb r2, [r1]\n\
+ mov r1, r9\n\
+ sub r1, r1, #0x1\n\
+ ldr r3, ._1523 + 12\n\
+ add r0, r0, r3\n\
+ strb r1, [r0]\n\
+ b ._1540\n\
+._1524:\n\
+ .align 2, 0\n\
+._1523:\n\
+ .word BattleScript_CastformChange\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+ .word 0x1609b\n\
+._1399:\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._1526\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, ._1526 + 4\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ b ._1525\n\
+._1527:\n\
+ .align 2, 0\n\
+._1526:\n\
+ .word 0xfff7ffff\n\
+ .word gUnknown_081D978C\n\
+._1432:\n\
+ ldr r0, ._1529\n\
+ bl BattleScriptPushCursorAndCallback\n\
+ ldr r1, ._1529 + 4\n\
+ ldr r2, [sp, #0x18]\n\
+ add r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ ldr r2, ._1529 + 8\n\
+ and r0, r0, r2\n\
+ str r0, [r1]\n\
+ ldr r0, ._1529 + 12\n\
+ ldr r3, ._1529 + 16\n\
+ add r0, r0, r3\n\
+ strb r4, [r0]\n\
+ ldr r1, ._1529 + 20\n\
+ mov r4, #0xfd\n\
+ strb r4, [r1]\n\
+ mov r0, #0x4\n\
+ strb r0, [r1, #0x1]\n\
+ ldr r2, ._1529 + 24\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, #0x2]\n\
+ ldr r3, ._1529 + 28\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r3\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1, #0x3]\n\
+ mov r0, #0xff\n\
+ strb r0, [r1, #0x4]\n\
+ ldr r1, ._1529 + 32\n\
+ strb r4, [r1]\n\
+ mov r0, #0x9\n\
+ strb r0, [r1, #0x1]\n\
+ ldr r0, ._1529 + 36\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, #0x2]\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ strb r0, [r1, #0x3]\n\
+ b ._1534\n\
+._1530:\n\
+ .align 2, 0\n\
+._1529:\n\
+ .word BattleScript_TraceActivates\n\
+ .word gStatuses3\n\
+ .word 0xffefffff\n\
+ .word +0x2000000\n\
+ .word 0x16003\n\
+ .word gBattleTextBuff1\n\
+ .word gActiveBank\n\
+ .word gBattlePartyID\n\
+ .word gBattleTextBuff2\n\
+ .word gLastUsedAbility\n\
+._1442:\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._1532\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ bl BattleScriptPushCursor\n\
+ ldr r1, ._1532 + 4\n\
+ ldr r0, ._1532 + 8\n\
+ str r0, [r1]\n\
+._1525:\n\
+ ldr r0, ._1532 + 12\n\
+ ldr r1, ._1532 + 16\n\
+ add r0, r0, r1\n\
+ strb r4, [r0]\n\
+._1392:\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+ b ._1534\n\
+._1533:\n\
+ .align 2, 0\n\
+._1532:\n\
+ .word 0xfff7ffff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gUnknown_081D9795\n\
+ .word +0x2000000\n\
+ .word 0x160dd\n\
+._762:\n\
+ mov r4, #0x0\n\
+ ldr r0, ._1541\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ bge ._1534 @cond_branch\n\
+ ldr r0, ._1541 + 4\n\
+ add r2, r1, #0\n\
+ add r1, r0, #0\n\
+ add r1, r1, #0x20\n\
+ ldr r3, ._1541 + 8\n\
+._1537:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r6\n\
+ bne ._1536 @cond_branch\n\
+ cmp r4, sl\n\
+ beq ._1536 @cond_branch\n\
+ strb r6, [r3]\n\
+ mov r0, r9\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r9, r0\n\
+._1536:\n\
+ add r1, r1, #0x58\n\
+ add r4, r4, #0x1\n\
+ cmp r4, r2\n\
+ blt ._1537 @cond_branch\n\
+._1534:\n\
+ mov r2, r9\n\
+ cmp r2, #0\n\
+ beq ._1540 @cond_branch\n\
+._916:\n\
+ ldr r3, [sp, #0x4]\n\
+ cmp r3, #0xb\n\
+ bhi ._1540 @cond_branch\n\
+ ldr r1, ._1541 + 8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0xff\n\
+ beq ._1540 @cond_branch\n\
+ add r1, r0, #0\n\
+ mov r0, sl\n\
+ bl RecordAbilityBattle\n\
+._1540:\n\
+ mov r0, r9\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\
+._1542:\n\
+ .align 2, 0\n\
+._1541:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMons\n\
+ .word gLastUsedAbility");
+}
+#else
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
u8 effect = 0;
@@ -2498,6 +6558,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
return effect;
}
+#endif
void BattleScriptExecute(const u8* BS_ptr)
{
@@ -3377,6 +7438,417 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
return targetBank;
}
+#if DEBUG
+__attribute__((naked))
+u8 IsMonDisobedient(void)
+{
+ 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\
+ ldr r0, ._1785\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1791 @cond_branch\n\
+ ldr r4, ._1785 + 4\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ beq ._1791 @cond_branch\n\
+ ldr r2, ._1785 + 8\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r1, r1, r0\n\
+ add r0, r2, #0\n\
+ add r0, r0, #0x54\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ add r2, r2, #0x3c\n\
+ add r1, r1, r2\n\
+ bl IsOtherTrainer\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1791 @cond_branch\n\
+ ldr r0, ._1785 + 12\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1783 @cond_branch\n\
+ mov r0, #0xa\n\
+ b ._1784\n\
+._1786:\n\
+ .align 2, 0\n\
+._1785:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+ .word gBattleMons\n\
+ .word gUnknown_02023A14+0x50\n\
+._1783:\n\
+ ldr r0, ._1794\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1791 @cond_branch\n\
+ mov r1, #0xa\n\
+ mov r8, r1\n\
+ ldr r0, ._1794 + 4\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1788 @cond_branch\n\
+ mov r2, #0x1e\n\
+ mov r8, r2\n\
+._1788:\n\
+ ldr r0, ._1794 + 8\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1789 @cond_branch\n\
+ mov r4, #0x32\n\
+ mov r8, r4\n\
+._1789:\n\
+ ldr r0, ._1794 + 12\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1790 @cond_branch\n\
+ mov r0, #0x46\n\
+._1784:\n\
+ mov r8, r0\n\
+._1790:\n\
+ ldr r5, ._1794 + 16\n\
+ ldr r7, ._1794 + 20\n\
+ ldrb r0, [r7]\n\
+ mov r6, #0x58\n\
+ mul r0, r0, r6\n\
+ add r0, r0, r5\n\
+ add r0, r0, #0x2a\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r8\n\
+ bls ._1791 @cond_branch\n\
+ bl Random\n\
+ mov r1, #0xff\n\
+ and r1, r1, r0\n\
+ ldrb r0, [r7]\n\
+ add r2, r0, #0\n\
+ mul r2, r2, r6\n\
+ add r0, r2, r5\n\
+ add r0, r0, #0x2a\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r8\n\
+ mul r0, r0, r1\n\
+ asr r4, r0, #0x8\n\
+ cmp r4, r8\n\
+ bge ._1792 @cond_branch\n\
+._1791:\n\
+ mov r0, #0x0\n\
+ b ._1823\n\
+._1795:\n\
+ .align 2, 0\n\
+._1794:\n\
+ .word 0x80e\n\
+ .word 0x808\n\
+ .word 0x80a\n\
+ .word 0x80c\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+._1792:\n\
+ ldr r3, ._1801\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0x63\n\
+ bne ._1796 @cond_branch\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x50\n\
+ add r0, r2, r0\n\
+ ldr r1, [r0]\n\
+ ldr r2, ._1801 + 4\n\
+ and r1, r1, r2\n\
+ str r1, [r0]\n\
+._1796:\n\
+ ldrb r0, [r7]\n\
+ mul r0, r0, r6\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x4c\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x7\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1799 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0xad\n\
+ beq ._1798 @cond_branch\n\
+ cmp r0, #0xd6\n\
+ bne ._1799 @cond_branch\n\
+._1798:\n\
+ ldr r1, ._1801 + 8\n\
+ ldr r0, ._1801 + 12\n\
+ b ._1819\n\
+._1802:\n\
+ .align 2, 0\n\
+._1801:\n\
+ .word gCurrentMove\n\
+ .word 0xff7fffff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gUnknown_081D995F\n\
+._1799:\n\
+ bl Random\n\
+ mov r5, #0xff\n\
+ add r1, r5, #0\n\
+ and r1, r1, r0\n\
+ ldr r6, ._1808\n\
+ ldr r2, ._1808 + 4\n\
+ mov r9, r2\n\
+ ldrb r3, [r2]\n\
+ mov r7, #0x58\n\
+ add r0, r3, #0\n\
+ mul r0, r0, r7\n\
+ add r0, r0, r6\n\
+ add r0, r0, #0x2a\n\
+ ldrb r2, [r0]\n\
+ mov r4, r8\n\
+ add r0, r2, r4\n\
+ mul r0, r0, r1\n\
+ asr r4, r0, #0x8\n\
+ cmp r4, r8\n\
+ bge ._1803 @cond_branch\n\
+ ldr r7, ._1808 + 8\n\
+ ldr r5, ._1808 + 12\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r7\n\
+ ldrb r1, [r0]\n\
+ add r0, r3, #0\n\
+ mov r2, #0xff\n\
+ bl CheckMoveLimitations\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0xf\n\
+ bne ._1804 @cond_branch\n\
+ b ._1805\n\
+._1804:\n\
+ add r6, r5, #0\n\
+ ldr r0, ._1808 + 16\n\
+ mov r9, r0\n\
+ mov r1, #0x3\n\
+ mov r8, r1\n\
+._1806:\n\
+ bl Random\n\
+ mov r2, r8\n\
+ and r0, r0, r2\n\
+ mov r1, r9\n\
+ strb r0, [r1]\n\
+ strb r0, [r6]\n\
+ ldrb r0, [r6]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r7\n\
+ ldr r5, [r0]\n\
+ and r5, r5, r4\n\
+ cmp r5, #0\n\
+ bne ._1806 @cond_branch\n\
+ ldr r4, ._1808 + 20\n\
+ ldr r3, ._1808\n\
+ ldr r0, ._1808 + 12\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1\n\
+ ldr r1, ._1808 + 4\n\
+ ldrb r2, [r1]\n\
+ mov r1, #0x58\n\
+ mul r1, r1, r2\n\
+ add r0, r0, r1\n\
+ add r3, r3, #0xc\n\
+ add r0, r0, r3\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r4]\n\
+ ldr r0, ._1808 + 24\n\
+ strb r5, [r0, #0x3]\n\
+ ldr r0, ._1808 + 28\n\
+ mov r1, #0x0\n\
+ strh r5, [r0]\n\
+ ldr r0, ._1808 + 32\n\
+ ldr r2, ._1808 + 36\n\
+ add r0, r0, r2\n\
+ strb r1, [r0]\n\
+ ldr r1, ._1808 + 40\n\
+ ldr r0, ._1808 + 44\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl GetMoveTarget\n\
+ ldr r1, ._1808 + 48\n\
+ strb r0, [r1]\n\
+ ldr r2, ._1808 + 52\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0xe\n\
+ b ._1807\n\
+._1809:\n\
+ .align 2, 0\n\
+._1808:\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gBitTable\n\
+ .word gCurrMovePos\n\
+ .word gUnknown_02024BE5\n\
+ .word gRandomMove\n\
+ .word gBattleCommunication\n\
+ .word gDynamicBasePower\n\
+ .word +0x2000000\n\
+ .word 0x1601c\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_IgnoresAndUsesRandomMove\n\
+ .word gBankTarget\n\
+ .word gHitMarker\n\
+._1803:\n\
+ mov r4, r8\n\
+ sub r0, r2, r4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r8, r0\n\
+ bl Random\n\
+ add r4, r5, #0\n\
+ and r4, r4, r0\n\
+ cmp r4, r8\n\
+ bge ._1818 @cond_branch\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ add r1, r0, #0\n\
+ mul r1, r1, r7\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0x4c\n\
+ add r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ and r0, r0, r5\n\
+ cmp r0, #0\n\
+ bne ._1818 @cond_branch\n\
+ add r0, r1, r6\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x48\n\
+ beq ._1818 @cond_branch\n\
+ cmp r0, #0xf\n\
+ beq ._1818 @cond_branch\n\
+ mov r2, #0x0\n\
+ ldr r0, ._1820\n\
+ ldrb r3, [r0]\n\
+ add r7, r0, #0\n\
+ cmp r2, r3\n\
+ bge ._1816 @cond_branch\n\
+ ldr r0, [r6, #0x50]\n\
+ mov r1, #0x70\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1816 @cond_branch\n\
+ add r1, r6, #0\n\
+ add r1, r1, #0x50\n\
+ mov r5, #0x70\n\
+._1817:\n\
+ add r1, r1, #0x58\n\
+ add r2, r2, #0x1\n\
+ cmp r2, r3\n\
+ bge ._1816 @cond_branch\n\
+ ldr r0, [r1]\n\
+ and r0, r0, r5\n\
+ cmp r0, #0\n\
+ beq ._1817 @cond_branch\n\
+._1816:\n\
+ ldrb r7, [r7]\n\
+ cmp r2, r7\n\
+ bne ._1818 @cond_branch\n\
+ ldr r1, ._1820 + 4\n\
+ ldr r0, ._1820 + 8\n\
+ b ._1819\n\
+._1821:\n\
+ .align 2, 0\n\
+._1820:\n\
+ .word gNoOfAllBanks\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_IgnoresAndFallsAsleep\n\
+._1818:\n\
+ mov r2, r8\n\
+ sub r4, r4, r2\n\
+ cmp r4, r8\n\
+ blt ._1822 @cond_branch\n\
+._1805:\n\
+ bl Random\n\
+ ldr r2, ._1824\n\
+ mov r1, #0x3\n\
+ and r1, r1, r0\n\
+ strb r1, [r2, #0x5]\n\
+ ldr r1, ._1824 + 4\n\
+ ldr r0, ._1824 + 8\n\
+._1819:\n\
+ str r0, [r1]\n\
+ mov r0, #0x1\n\
+ b ._1823\n\
+._1825:\n\
+ .align 2, 0\n\
+._1824:\n\
+ .word gBattleCommunication\n\
+ .word gBattlescriptCurrInstr\n\
+ .word BattleScript_MoveUsedLoafingAround\n\
+._1822:\n\
+ ldr r4, ._1826\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._1826 + 4\n\
+ add r1, r1, r0\n\
+ mov r0, #0x28\n\
+ str r0, [sp]\n\
+ mov r0, #0x0\n\
+ str r0, [sp, #0x4]\n\
+ ldrb r0, [r4]\n\
+ str r0, [sp, #0x8]\n\
+ ldrb r0, [r4]\n\
+ str r0, [sp, #0xc]\n\
+ add r0, r1, #0\n\
+ mov r2, #0x1\n\
+ mov r3, #0x0\n\
+ bl CalculateBaseDamage\n\
+ ldr r1, ._1826 + 8\n\
+ str r0, [r1]\n\
+ ldr r1, ._1826 + 12\n\
+ ldrb r0, [r4]\n\
+ strb r0, [r1]\n\
+ ldr r1, ._1826 + 16\n\
+ ldr r0, ._1826 + 20\n\
+ str r0, [r1]\n\
+ ldr r2, ._1826 + 24\n\
+ ldr r0, [r2]\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0xc\n\
+._1807:\n\
+ orr r0, r0, r1\n\
+ str r0, [r2]\n\
+ mov r0, #0x2\n\
+._1823:\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\
+._1827:\n\
+ .align 2, 0\n\
+._1826:\n\
+ .word gBankAttacker\n\
+ .word gBattleMons\n\
+ .word gBattleMoveDamage\n\
+ .word gBankTarget\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gUnknown_081D99A0\n\
+ .word gHitMarker");
+}
+#else
u8 IsMonDisobedient(void)
{
u8 obedienceLevel;
@@ -3477,3 +7949,4 @@ u8 IsMonDisobedient(void)
}
}
}
+#endif
diff --git a/src/contest.c b/src/contest.c
index 93d1a8efc..20e202d80 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -611,6 +611,35 @@ void sub_80AB9A0(u8 taskId)
}
}
+#if DEBUG
+__attribute__((naked))
+void ContestMainCallback2(void)
+{
+ asm("\
+ push {lr}\n\
+ ldr r0, ._122\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._121 @cond_branch\n\
+ ldr r0, ._122 + 4\n\
+ ldrh r0, [r0, #0x2e]\n\
+ cmp r0, #0x4\n\
+ bne ._121 @cond_branch\n\
+ bl unref_sub_80B0CF4\n\
+._121:\n\
+ bl AnimateSprites\n\
+ bl RunTasks\n\
+ bl BuildOamBuffer\n\
+ bl UpdatePaletteFade\n\
+ pop {r0}\n\
+ bx r0\n\
+._123:\n\
+ .align 2, 0\n\
+._122:\n\
+ .word gUnknown_020297ED\n\
+ .word gMain");
+}
+#else
void ContestMainCallback2(void)
{
AnimateSprites();
@@ -618,6 +647,7 @@ void ContestMainCallback2(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+#endif
void ContestVBlankCallback(void)
{
@@ -733,6 +763,272 @@ void sub_80ABCDC(u8 taskId)
}
// Handle move selection input
+#if DEBUG
+__attribute__((naked))
+void sub_80ABEA0(u8 taskId)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffff8\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ mov r6, #0x0\n\
+ ldr r0, ._161\n\
+ mov ip, r0\n\
+ ldr r4, ._161 + 4\n\
+ ldr r3, ._161 + 8\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x6\n\
+ mov r1, ip\n\
+ add r1, r1, #0x1e\n\
+ add r1, r0, r1\n\
+ mov r2, #0x3\n\
+._158:\n\
+ ldrh r0, [r1]\n\
+ cmp r0, #0\n\
+ beq ._157 @cond_branch\n\
+ add r0, r6, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+._157:\n\
+ add r1, r1, #0x2\n\
+ sub r2, r2, #0x1\n\
+ cmp r2, #0\n\
+ bge ._158 @cond_branch\n\
+ ldrh r0, [r3, #0x2e]\n\
+ mov r5, #0x1\n\
+ and r5, r5, r0\n\
+ cmp r5, #0\n\
+ beq ._159 @cond_branch\n\
+ bl DestroyMenuCursor\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._161 + 12\n\
+ lsl r1, r7, #0x2\n\
+ add r1, r1, r7\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ ldr r0, ._161 + 16\n\
+ b ._160\n\
+._162:\n\
+ .align 2, 0\n\
+._161:\n\
+ .word gContestMons\n\
+ .word gContestPlayerMonIndex\n\
+ .word gMain\n\
+ .word gTasks\n\
+ .word sub_80AC0C8+1\n\
+._159:\n\
+ ldrh r0, [r3, #0x30]\n\
+ cmp r0, #0x10\n\
+ bne ._163 @cond_branch\n\
+ b ._196\n\
+._163:\n\
+ cmp r0, #0x10\n\
+ bgt ._165 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._166 @cond_branch\n\
+ cmp r0, #0x8\n\
+ bne ._167 @cond_branch\n\
+ b ._168\n\
+._167:\n\
+ b ._196\n\
+._165:\n\
+ cmp r0, #0x40\n\
+ beq ._170 @cond_branch\n\
+ cmp r0, #0x40\n\
+ bgt ._171 @cond_branch\n\
+ b ._196\n\
+._171:\n\
+ cmp r0, #0x80\n\
+ beq ._173 @cond_branch\n\
+ b ._196\n\
+._166:\n\
+ bl sub_814A904\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x0\n\
+ bl sub_80AFFE0\n\
+ ldr r0, ._177\n\
+ ldr r1, ._177 + 4\n\
+ ldrb r2, [r1]\n\
+ ldrb r3, [r1, #0x1]\n\
+ ldrb r4, [r1, #0x2]\n\
+ str r4, [sp]\n\
+ ldrb r1, [r1, #0x3]\n\
+ str r1, [sp, #0x4]\n\
+ mov r1, #0x0\n\
+ bl Text_FillWindowRectDefPalette\n\
+ ldr r0, ._177 + 8\n\
+ ldrb r0, [r0]\n\
+ bl Contest_IsMonsTurnDisabled\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._175 @cond_branch\n\
+ ldr r0, ._177 + 12\n\
+ ldr r1, ._177 + 16\n\
+ bl StringCopy\n\
+ b ._176\n\
+._178:\n\
+ .align 2, 0\n\
+._177:\n\
+ .word gUnknown_03004210\n\
+ .word gUnknown_083CA340\n\
+ .word gContestPlayerMonIndex\n\
+ .word gDisplayedStringBattle\n\
+ .word gText_Contest_WhichMoveWillBePlayed\n\
+._175:\n\
+ ldr r0, ._180\n\
+ ldr r1, ._180 + 4\n\
+ bl StringCopy\n\
+._176:\n\
+ ldr r5, ._180\n\
+ ldr r0, ._180 + 8\n\
+ ldrb r1, [r0, #0x1]\n\
+ add r1, r1, #0x1\n\
+ add r0, r5, #0\n\
+ bl InsertStringDigit\n\
+ bl sub_80AF138\n\
+ ldr r4, ._180 + 12\n\
+ add r0, r4, #0\n\
+ add r1, r5, #0\n\
+ bl StringExpandPlaceholders\n\
+ ldr r0, ._180 + 16\n\
+ mov r2, #0xc2\n\
+ lsl r2, r2, #0x2\n\
+ mov r1, #0xf\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0x1\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r0, ._180 + 20\n\
+ mov r1, #0x0\n\
+ strh r1, [r0]\n\
+ ldr r0, ._180 + 24\n\
+ strh r1, [r0]\n\
+ ldr r1, ._180 + 28\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r1\n\
+ ldr r1, ._180 + 32\n\
+ str r1, [r0]\n\
+ b ._196\n\
+._181:\n\
+ .align 2, 0\n\
+._180:\n\
+ .word gDisplayedStringBattle\n\
+ .word gText_Contest_ButItCantParticipate\n\
+ .word +0x2019204\n\
+ .word gStringVar4\n\
+ .word gMenuWindow\n\
+ .word gBattle_BG0_Y\n\
+ .word gBattle_BG2_Y\n\
+ .word gTasks\n\
+ .word sub_80ABC70+1\n\
+._170:\n\
+ ldr r4, ._184\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r4, r0]\n\
+ bl nullsub_17\n\
+ ldrb r0, [r4]\n\
+ cmp r0, #0\n\
+ bne ._182 @cond_branch\n\
+ sub r0, r6, #1\n\
+ b ._186\n\
+._185:\n\
+ .align 2, 0\n\
+._184:\n\
+ .word +0x2019204\n\
+._182:\n\
+ sub r0, r0, #0x1\n\
+ b ._186\n\
+._173:\n\
+ ldr r4, ._189\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r4, r0]\n\
+ bl nullsub_17\n\
+ ldrb r1, [r4]\n\
+ sub r0, r6, #1\n\
+ cmp r1, r0\n\
+ bne ._187 @cond_branch\n\
+ strb r5, [r4]\n\
+ b ._188\n\
+._190:\n\
+ .align 2, 0\n\
+._189:\n\
+ .word +0x2019204\n\
+._187:\n\
+ add r0, r1, #1\n\
+._186:\n\
+ strb r0, [r4]\n\
+._188:\n\
+ ldr r4, ._193\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r4, r0]\n\
+ bl sub_80AC0AC\n\
+ bl sub_80AED58\n\
+ ldr r2, ._193 + 4\n\
+ ldrb r1, [r4]\n\
+ lsl r1, r1, #0x1\n\
+ ldr r0, ._193 + 8\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x6\n\
+ add r1, r1, r0\n\
+ add r2, r2, #0x1e\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ bl sub_80AEBEC\n\
+ cmp r6, #0x1\n\
+ bls ._196 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ b ._196\n\
+._194:\n\
+ .align 2, 0\n\
+._193:\n\
+ .word +0x2019204\n\
+ .word gContestMons\n\
+ .word gContestPlayerMonIndex\n\
+._168:\n\
+ ldr r0, ._197\n\
+ ldrb r1, [r0]\n\
+ cmp r1, #0x1\n\
+ bne ._196 @cond_branch\n\
+ ldr r0, ._197 + 4\n\
+ ldrb r0, [r0]\n\
+ add r2, r0, #0\n\
+ and r2, r2, r1\n\
+ cmp r2, #0\n\
+ bne ._196 @cond_branch\n\
+ ldr r0, ._197 + 8\n\
+ lsl r1, r7, #0x2\n\
+ add r1, r1, r7\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ strh r2, [r1, #0x8]\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x6\n\
+ add r0, r0, ip\n\
+ ldrh r0, [r0, #0x1e]\n\
+ strh r0, [r1, #0xa]\n\
+ ldr r0, ._197 + 12\n\
+._160:\n\
+ str r0, [r1]\n\
+._196:\n\
+ add sp, sp, #0x8\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._198:\n\
+ .align 2, 0\n\
+._197:\n\
+ .word gUnknown_020297ED\n\
+ .word gIsLinkContest\n\
+ .word gTasks\n\
+ .word debug_sub_80B9EBC+1");
+}
+#else
void sub_80ABEA0(u8 taskId)
{
u8 numMoves = 0;
@@ -807,6 +1103,550 @@ void sub_80ABEA0(u8 taskId)
}
}
}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80B9EBC()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xffffff94\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ ldr r1, ._202\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x3\n\
+ add r7, r0, r1\n\
+ mov r0, #0x8\n\
+ ldsh r2, [r7, r0]\n\
+ cmp r2, #0\n\
+ beq ._199 @cond_branch\n\
+ cmp r2, #0x1\n\
+ beq ._200 @cond_branch\n\
+ b ._229\n\
+._203:\n\
+ .align 2, 0\n\
+._202:\n\
+ .word gTasks\n\
+._199:\n\
+ ldr r5, ._205\n\
+ ldr r4, ._205 + 4\n\
+ ldrb r0, [r4]\n\
+ mov r8, r0\n\
+ ldrb r6, [r4, #0x1]\n\
+ ldrb r0, [r4, #0x2]\n\
+ str r0, [sp]\n\
+ ldrb r0, [r4, #0x3]\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r5, #0\n\
+ mov r1, #0x0\n\
+ mov r2, r8\n\
+ add r3, r6, #0\n\
+ bl Text_FillWindowRectDefPalette\n\
+ mov r0, #0xa\n\
+ ldsh r1, [r7, r0]\n\
+ mov r0, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._205 + 8\n\
+ add r1, r1, r0\n\
+ mov r2, #0xc2\n\
+ lsl r2, r2, #0x2\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ mov r3, r8\n\
+ bl Text_InitWindowAndPrintText\n\
+ mov r0, #0xa\n\
+ ldsh r1, [r7, r0]\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0xc7\n\
+ lsl r2, r2, #0x2\n\
+ ldrb r3, [r4, #0x4]\n\
+ ldrb r0, [r4, #0x5]\n\
+ str r0, [sp]\n\
+ add r0, r5, #0\n\
+ add r1, sp, #0x8\n\
+ bl Text_InitWindowAndPrintText\n\
+ bl sub_80AED58\n\
+ ldrh r0, [r7, #0xa]\n\
+ bl sub_80AEBEC\n\
+ ldrh r0, [r7, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7, #0x8]\n\
+ b ._229\n\
+._206:\n\
+ .align 2, 0\n\
+._205:\n\
+ .word gUnknown_03004210\n\
+ .word gUnknown_083CA340\n\
+ .word gMoveNames\n\
+._200:\n\
+ ldr r0, ._213\n\
+ ldrh r1, [r0, #0x30]\n\
+ cmp r1, #0x10\n\
+ beq ._207 @cond_branch\n\
+ cmp r1, #0x10\n\
+ bgt ._208 @cond_branch\n\
+ cmp r1, #0x4\n\
+ beq ._215 @cond_branch\n\
+ cmp r1, #0x4\n\
+ bgt ._210 @cond_branch\n\
+ cmp r1, #0x2\n\
+ beq ._211 @cond_branch\n\
+ b ._229\n\
+._214:\n\
+ .align 2, 0\n\
+._213:\n\
+ .word gMain\n\
+._210:\n\
+ cmp r1, #0x8\n\
+ beq ._215 @cond_branch\n\
+ b ._229\n\
+._208:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ beq ._217 @cond_branch\n\
+ cmp r1, r0\n\
+ bgt ._218 @cond_branch\n\
+ cmp r1, #0x20\n\
+ beq ._219 @cond_branch\n\
+ b ._229\n\
+._218:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ cmp r1, r0\n\
+ beq ._221 @cond_branch\n\
+ b ._229\n\
+._219:\n\
+ ldrh r0, [r7, #0xa]\n\
+ sub r0, r0, #0x1\n\
+ b ._223\n\
+._221:\n\
+ ldrh r0, [r7, #0xa]\n\
+ sub r0, r0, #0xa\n\
+._223:\n\
+ strh r0, [r7, #0xa]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bgt ._227 @cond_branch\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x1\n\
+ strh r0, [r7, #0xa]\n\
+ b ._227\n\
+._207:\n\
+ ldrh r0, [r7, #0xa]\n\
+ add r0, r0, #0x1\n\
+ b ._226\n\
+._217:\n\
+ ldrh r0, [r7, #0xa]\n\
+ add r0, r0, #0xa\n\
+._226:\n\
+ strh r0, [r7, #0xa]\n\
+ lsl r0, r0, #0x10\n\
+ mov r1, #0xb1\n\
+ lsl r1, r1, #0x11\n\
+ cmp r0, r1\n\
+ ble ._227 @cond_branch\n\
+ strh r2, [r7, #0xa]\n\
+._227:\n\
+ ldrh r0, [r7, #0x8]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r7, #0x8]\n\
+ b ._229\n\
+._215:\n\
+ ldr r0, ._230\n\
+ mov r1, #0x0\n\
+ strh r1, [r0]\n\
+ ldr r0, ._230 + 4\n\
+ strh r1, [r0]\n\
+ bl sub_80B1BDC\n\
+ ldr r1, ._230 + 8\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r1\n\
+ mov r1, #0x0\n\
+ strh r1, [r0, #0x8]\n\
+ ldr r1, ._230 + 12\n\
+ str r1, [r0]\n\
+ b ._229\n\
+._231:\n\
+ .align 2, 0\n\
+._230:\n\
+ .word gBattle_BG0_Y\n\
+ .word gBattle_BG2_Y\n\
+ .word gTasks\n\
+ .word debug_sub_80BA054+1\n\
+._211:\n\
+ ldr r0, ._232\n\
+ mov r1, #0xa0\n\
+ strh r1, [r0]\n\
+ ldr r0, ._232 + 4\n\
+ strh r1, [r0]\n\
+ ldr r1, ._232 + 8\n\
+ ldr r0, ._232 + 12\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x6\n\
+ add r0, r0, r1\n\
+ ldrh r2, [r7, #0xa]\n\
+ mov r1, #0x0\n\
+ strh r2, [r0, #0x1e]\n\
+ strh r1, [r7, #0x8]\n\
+ strh r1, [r7, #0xa]\n\
+ strh r1, [r7, #0xc]\n\
+ strh r1, [r7, #0xe]\n\
+ ldr r0, ._232 + 16\n\
+ str r0, [r7]\n\
+._229:\n\
+ add sp, sp, #0x6c\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._233:\n\
+ .align 2, 0\n\
+._232:\n\
+ .word gBattle_BG0_Y\n\
+ .word gBattle_BG2_Y\n\
+ .word gContestMons\n\
+ .word gContestPlayerMonIndex\n\
+ .word sub_80ABCDC+1");
+}
+
+__attribute__((naked))
+void debug_sub_80BA054()
+{
+ 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 r7, r0, #0x18\n\
+ ldr r1, ._236\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r1\n\
+ mov r2, #0x8\n\
+ ldsh r0, [r0, r2]\n\
+ add r2, r1, #0\n\
+ cmp r0, #0x14\n\
+ bls ._234 @cond_branch\n\
+ b ._286\n\
+._234:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._236 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._237:\n\
+ .align 2, 0\n\
+._236:\n\
+ .word gTasks\n\
+ .word ._238\n\
+._238:\n\
+ .word ._239\n\
+ .word ._240\n\
+ .word ._241\n\
+ .word ._242\n\
+ .word ._243\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._286\n\
+ .word ._259\n\
+._239:\n\
+ lsl r0, r7, #0x2\n\
+ mov r8, r0\n\
+ ldr r2, ._262\n\
+ mov r9, r2\n\
+ ldr r1, ._262 + 4\n\
+ mov r2, #0x0\n\
+ add r0, r1, #3\n\
+._260:\n\
+ strb r2, [r0]\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, r1\n\
+ bge ._260 @cond_branch\n\
+ mov r5, #0x0\n\
+ mov r0, r9\n\
+ mov r1, #0x0\n\
+ mov r2, #0x14\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5c24\n\
+ ldr r4, ._262 + 8\n\
+ ldrb r0, [r4]\n\
+ bl sub_80B28F0\n\
+ ldr r3, ._262 + 12\n\
+ ldrb r2, [r4]\n\
+ lsl r2, r2, #0x6\n\
+ add r0, r2, r3\n\
+ ldrh r0, [r0]\n\
+ add r1, r3, #0\n\
+ add r1, r1, #0x3c\n\
+ add r1, r2, r1\n\
+ ldr r1, [r1]\n\
+ add r3, r3, #0x38\n\
+ add r2, r2, r3\n\
+ ldr r2, [r2]\n\
+ bl sub_80AE9FC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ ldr r2, ._262 + 16\n\
+ lsl r0, r6, #0x4\n\
+ add r0, r0, r6\n\
+ lsl r0, r0, #0x2\n\
+ add r3, r0, r2\n\
+ mov r4, #0x0\n\
+ mov r1, #0x78\n\
+ strh r1, [r3, #0x24]\n\
+ add r2, r2, #0x1c\n\
+ add r0, r0, r2\n\
+ ldr r1, ._262 + 20\n\
+ str r1, [r0]\n\
+ ldr r0, ._262 + 24\n\
+ mov r2, r8\n\
+ add r1, r2, r7\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ strh r6, [r1, #0xc]\n\
+ ldr r2, ._262 + 28\n\
+ ldr r0, ._262 + 32\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r2\n\
+ strb r6, [r0]\n\
+ strh r5, [r1, #0xe]\n\
+ ldrh r0, [r1, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1, #0x8]\n\
+ mov r0, r9\n\
+ sub r0, r0, #0xea\n\
+ strb r4, [r0]\n\
+ b ._286\n\
+._263:\n\
+ .align 2, 0\n\
+._262:\n\
+ .word +0x2019348\n\
+ .word gBattleMonForms\n\
+ .word gContestPlayerMonIndex\n\
+ .word gContestMons\n\
+ .word gSprites\n\
+ .word sub_80AD8FC+1\n\
+ .word gTasks\n\
+ .word gObjectBankIDs\n\
+ .word gBankAttacker\n\
+._240:\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r7, r0, r2\n\
+ ldrb r6, [r7, #0xc]\n\
+ ldr r1, ._267\n\
+ lsl r0, r6, #0x4\n\
+ add r0, r0, r6\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, #0x1c\n\
+ add r0, r0, r1\n\
+ ldr r1, [r0]\n\
+ ldr r0, ._267 + 4\n\
+ cmp r1, r0\n\
+ beq ._264 @cond_branch\n\
+ b ._286\n\
+._264:\n\
+ ldr r4, ._267 + 8\n\
+ ldrb r1, [r4]\n\
+ lsl r0, r1, #0x3\n\
+ sub r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._267 + 12\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r7, #0xa]\n\
+ mov r5, #0x0\n\
+ strh r1, [r0, #0x6]\n\
+ ldrb r0, [r4]\n\
+ bl sub_80B2790\n\
+ ldrb r0, [r4]\n\
+ bl sub_80B28F0\n\
+ ldrh r0, [r7, #0xa]\n\
+ bl SelectContestMoveBankTarget\n\
+ ldrh r0, [r7, #0xa]\n\
+ bl DoMoveAnim\n\
+ strh r5, [r7, #0xe]\n\
+ ldrh r0, [r7, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7, #0x8]\n\
+ b ._286\n\
+._268:\n\
+ .align 2, 0\n\
+._267:\n\
+ .word gSprites\n\
+ .word SpriteCallbackDummy+1\n\
+ .word gContestPlayerMonIndex\n\
+ .word +0x2019260\n\
+._241:\n\
+ ldr r0, ._273\n\
+ ldr r0, [r0]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\
+ ldr r0, ._273 + 4\n\
+ ldrb r4, [r0]\n\
+ cmp r4, #0\n\
+ beq ._269 @cond_branch\n\
+ b ._286\n\
+._269:\n\
+ ldr r0, ._273 + 8\n\
+ ldrb r0, [r0]\n\
+ bl sub_80B28CC\n\
+ ldr r0, ._273 + 12\n\
+ add r0, r0, #0x5a\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._271 @cond_branch\n\
+ ldr r0, ._273 + 16\n\
+ lsl r1, r7, #0x2\n\
+ add r1, r1, r7\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ strh r4, [r1, #0x1c]\n\
+ mov r0, #0x14\n\
+ strh r0, [r1, #0x8]\n\
+ b ._286\n\
+._274:\n\
+ .align 2, 0\n\
+._273:\n\
+ .word gAnimScriptCallback\n\
+ .word gAnimScriptActive\n\
+ .word gContestPlayerMonIndex\n\
+ .word +0x2019204\n\
+ .word gTasks\n\
+._271:\n\
+ ldr r0, ._276\n\
+ lsl r1, r7, #0x2\n\
+ add r1, r1, r7\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1, #0x8]\n\
+ b ._286\n\
+._277:\n\
+ .align 2, 0\n\
+._276:\n\
+ .word gTasks\n\
+._242:\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r4, r0, r2\n\
+ ldrh r0, [r4, #0xe]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0xe]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x15\n\
+ bne ._286 @cond_branch\n\
+ ldrb r6, [r4, #0xc]\n\
+ ldr r1, ._280\n\
+ lsl r0, r6, #0x4\n\
+ add r0, r0, r6\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, #0x1c\n\
+ add r0, r0, r1\n\
+ ldr r1, ._280 + 4\n\
+ str r1, [r0]\n\
+ bl sub_80B1B14\n\
+ mov r0, #0x0\n\
+ strh r0, [r4, #0xe]\n\
+ ldrh r0, [r4, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0x8]\n\
+ b ._286\n\
+._281:\n\
+ .align 2, 0\n\
+._280:\n\
+ .word gSprites\n\
+ .word sub_80AD92C+1\n\
+._243:\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r5, r0, r2\n\
+ ldrb r6, [r5, #0xc]\n\
+ ldr r1, ._284\n\
+ lsl r0, r6, #0x4\n\
+ add r0, r0, r6\n\
+ lsl r0, r0, #0x2\n\
+ add r4, r0, r1\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x3e\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1d\n\
+ cmp r0, #0\n\
+ bge ._286 @cond_branch\n\
+ add r0, r4, #0\n\
+ bl FreeSpriteOamMatrix\n\
+ add r0, r4, #0\n\
+ bl DestroySprite\n\
+ mov r0, #0x0\n\
+ strh r0, [r5, #0x8]\n\
+ ldr r0, ._284 + 4\n\
+ str r0, [r5]\n\
+ ldr r0, ._284 + 8\n\
+ mov r1, #0xa0\n\
+ strh r1, [r0]\n\
+ ldr r0, ._284 + 12\n\
+ strh r1, [r0]\n\
+ b ._286\n\
+._285:\n\
+ .align 2, 0\n\
+._284:\n\
+ .word gSprites\n\
+ .word debug_sub_80B9EBC+1\n\
+ .word gBattle_BG0_Y\n\
+ .word gBattle_BG2_Y\n\
+._259:\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r2\n\
+ ldrh r0, [r2, #0x1c]\n\
+ add r1, r0, #1\n\
+ strh r1, [r2, #0x1c]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x1e\n\
+ ble ._286 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r2, #0x1c]\n\
+ mov r0, #0x1\n\
+ strh r0, [r2, #0x8]\n\
+._286:\n\
+ pop {r3, r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
void sub_80AC0AC(s8 a)
{
diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h
index 0f64cba66..413b73d90 100644
--- a/src/data/pokedex_entries_de.h
+++ b/src/data/pokedex_entries_de.h
@@ -6337,7 +6337,8 @@ static const u8 DexDescription_Deoxys_2[] = _(
"dieses POKéMON ist sein Gehirn.");
#endif
-static const struct PokedexEntry gPokedexEntries[] = {
+const struct PokedexEntry gPokedexEntries[] =
+{
{
// Dummy
.categoryName = _("UNBEKANNT"),
diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h
index 86da3d67b..933b1fc7d 100644
--- a/src/data/pokedex_entries_en.h
+++ b/src/data/pokedex_entries_en.h
@@ -5389,7 +5389,7 @@ static const u8 DexDescription_Deoxys_2[] = _(
"chest appears to be its brain.");
#endif
-static const struct PokedexEntry gPokedexEntries[] =
+const struct PokedexEntry gPokedexEntries[] =
{
{ //Dummy
.categoryName = _("UNKNOWN"),
diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c
new file mode 100644
index 000000000..53e3fac1a
--- /dev/null
+++ b/src/debug/kagaya_debug_menu.c
@@ -0,0 +1,420 @@
+#if 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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_80B061C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80B061C()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gFieldEffectArguments\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 gMenuCallback\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 CB2_InitFlyRegionMap+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 gFieldEffectArguments\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..67f4a1af7
--- /dev/null
+++ b/src/debug/nakamura_debug_menu.c
@@ -0,0 +1,5031 @@
+#if 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 Menu_EraseScreen\n"
+ " mov r0, #0xe\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_GetCursorPos\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 Menu_DestroyCursor\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 Menu_EraseScreen\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_PrintText\n"
+ " ldr r0, ._43 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\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 Menu_PrintText\n"
+ " ldr r0, ._43 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\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 Menu_PrintText\n"
+ " ldr r0, ._43 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_EraseWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\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 gMenuCallback\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 Menu_PrintText\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 gMenuCallback\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 Menu_MoveCursor\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 Menu_GetCursorPos\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 gMenuCallback\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 Menu_EraseWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\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 gMenuCallback\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 Menu_MoveCursor\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 Menu_GetCursorPos\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 Menu_EraseWindowRect\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 Menu_DrawStdWindowFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._178 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\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 gMenuCallback\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 Menu_EraseWindowRect\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 Menu_EraseWindowRect\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 Menu_EraseWindowRect\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._210\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 gMenuCallback\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._214\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\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 PrintTriangleCursorWithPalette\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 gMenuCallback\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_EraseWindowRect\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 Menu_BlankWindowRect\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 PrintTriangleCursorWithPalette\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 GetPokeblockData\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " bl debug_sub_8160BB0\n"
+ " ldr r0, ._459\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._459 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._459 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._459 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._459 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._459 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\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 Menu_MoveCursor\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 Menu_GetCursorPos\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 Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ "._478:\n"
+ " bl debug_sub_8160B50\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseWindowRect\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 Menu_EraseWindowRect\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 gMenuCallback\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 Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._487\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 24\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 28\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._487 + 32\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x15\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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 Menu_EraseWindowRect\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 Menu_EraseWindowRect\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 gMenuCallback\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 Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._531\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._531 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._531 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._531 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._531 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._531 + 20\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r4, ._531 + 24\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_MoveCursor\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 Menu_GetCursorPos\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 Menu_GetCursorPos\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 Menu_EraseWindowRect\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 Menu_EraseWindowRect\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 gMenuCallback\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..a932fee8d
--- /dev/null
+++ b/src/debug/nohara_debug_menu.c
@@ -0,0 +1,2316 @@
+#if 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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808F414+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F414()
+{
+ asm(
+ " push {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 ._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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._8 + 4\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808F4AC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808F4AC()
+{
+ asm(
+ " push {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 ._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 gMenuCallback\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 gMenuCallback\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 GetSlotMachineId\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 Menu_PrintText\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 gMenuCallback\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 Menu_EraseWindowRect\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 Menu_ProcessInputNoWrap_\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " ldr r0, ._69 + 8\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 Menu_PrintText\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 gMenuCallback\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 Menu_BlankWindowRect\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 Menu_PrintText\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 Menu_PrintText\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 GetTVChannelByShowType\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 Menu_BlankWindowRect\n"
+ " ldr r0, ._178 + 8\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 Menu_PrintText\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 gMenuCallback\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 Menu_BlankWindowRect\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 Menu_PrintText\n"
+ " mov r0, #0x16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x2\n"
+ " bl Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._204\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_80901A4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80901A4()
+{
+ asm(
+ " push {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 ._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 gMenuCallback\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 Menu_PrintText\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 gMenuCallback\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 Menu_PrintText\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 gMenuCallback\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 Menu_PrintText\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 gMenuCallback\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 FlagClear\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 FlagClear\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/start_menu_debug.c b/src/debug/start_menu_debug.c
new file mode 100644
index 000000000..f8e10baa2
--- /dev/null
+++ b/src/debug/start_menu_debug.c
@@ -0,0 +1,6130 @@
+__attribute__((naked))
+void debug_sub_8076AC8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\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, #0x1\n"
+ " ldr r0, ._3 + 4\n"
+ " add r1, r1, r0\n"
+ " str r1, [r2]\n"
+ " mov r4, #0x0\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0xff\n"
+ " beq ._1 @cond_branch\n"
+ "._2:\n"
+ " add r4, r4, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._2 @cond_branch\n"
+ "._1:\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_EraseWindowRect\n"
+ " lsl r3, r4, #0x1\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r3, ._3 + 8\n"
+ " ldr r0, ._3\n"
+ " ldr r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x11\n"
+ " mov r1, #0x1\n"
+ " add r2, r4, #0\n"
+ " bl Menu_PrintItemsReordered\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xc\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " add r3, r4, #0\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word 0x30006c4 @ gTileset1AnimLength\n"
+ " .word gUnknown_Debug_0839BBC1+0x153\n"
+ " .word gUnknown_Debug_0839BBC1+0xd3\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8076B4C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._6\n"
+ " bl FindTaskIdByFunc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xff\n"
+ " beq ._5 @cond_branch\n"
+ " bl DestroyTask\n"
+ "._5:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._7:\n"
+ " .align 2, 0\n"
+ "._6:\n"
+ " .word debug_sub_8076BB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8076B68()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._8 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._8 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xb\n"
+ " bl debug_sub_8077CF4\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8076AC8\n"
+ " ldr r0, ._8 + 12\n"
+ " mov r1, #0x1\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._9:\n"
+ " .align 2, 0\n"
+ "._8:\n"
+ " .word gUnknown_Debug_0839BBB6\n"
+ " .word gUnknown_Debug_0839BBC1\n"
+ " .word gUnknown_Debug_0839BBA4\n"
+ " .word debug_sub_8076BB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8076BB4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._13\n"
+ " add r5, r1, r0\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 ._10 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " beq ._11 @cond_branch\n"
+ " ldr r2, ._13 + 4\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " ldr r0, ._13 + 8\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 r0, [r0]\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n"
+ " b ._24\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word gTasks+0x8\n"
+ " .word gUnknown_Debug_0839BBC1+0xd3\n"
+ " .word 0x30006c4 @ gTileset1AnimLength\n"
+ "._10:\n"
+ " ldr r0, ._18\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 ._15 @cond_branch\n"
+ " ldrh r1, [r5]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r5, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._16 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._20\n"
+ "._19:\n"
+ " .align 2, 0\n"
+ "._18:\n"
+ " .word gMain\n"
+ "._16:\n"
+ " sub r0, r1, #1\n"
+ " b ._20\n"
+ "._15:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._24 @cond_branch\n"
+ " ldrh r1, [r5]\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r5, r3]\n"
+ " cmp r0, #0x1\n"
+ " bne ._22 @cond_branch\n"
+ " strh r2, [r5]\n"
+ " b ._23\n"
+ "._22:\n"
+ " add r0, r1, #1\n"
+ "._20:\n"
+ " strh r0, [r5]\n"
+ "._23:\n"
+ " ldrb r0, [r5]\n"
+ " bl debug_sub_8076AC8\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._24\n"
+ "._11:\n"
+ " bl DoSoftReset\n"
+ "._24:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076C6C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._25\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word debug_sub_8010800+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076C80()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " bl DebugMenu_8076FEC\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076C90()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._29\n"
+ " ldrh r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._27 @cond_branch\n"
+ " mov r0, #0x16\n"
+ " bl PlaySE\n"
+ " b ._28\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gSaveFileStatus\n"
+ "._27:\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._31\n"
+ " bl SetMainCallback2\n"
+ "._28:\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._32:\n"
+ " .align 2, 0\n"
+ "._31:\n"
+ " .word CB2_ContinueSavedGame+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076CBC()
+{
+ asm(
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076CC0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._33\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._34:\n"
+ " .align 2, 0\n"
+ "._33:\n"
+ " .word debug_nullsub_66+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076CD4()
+{
+ asm(
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076CD8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._35\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._36:\n"
+ " .align 2, 0\n"
+ "._35:\n"
+ " .word unref_sub_80524BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076CEC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._37\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._38:\n"
+ " .align 2, 0\n"
+ "._37:\n"
+ " .word CB2_InitMysteryEventMenu+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D00()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._39\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._40:\n"
+ " .align 2, 0\n"
+ "._39:\n"
+ " .word debug_sub_815D15C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D14()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._41\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._42:\n"
+ " .align 2, 0\n"
+ "._41:\n"
+ " .word sub_804B790+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D28()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._43\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._44:\n"
+ " .align 2, 0\n"
+ "._43:\n"
+ " .word LinkTestScreen+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D3C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._45\n"
+ " bl SetMainCallback2\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._46:\n"
+ " .align 2, 0\n"
+ "._45:\n"
+ " .word CB2_StartSoundCheckMenu+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D50()
+{
+ asm(
+ " push {lr}\n"
+ " bl Save_EraseAllData\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D5C()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " bl debug_sub_806F8F8\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076D6C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._51\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._47 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._48 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._49 @cond_branch\n"
+ " b ._64\n"
+ "._52:\n"
+ " .align 2, 0\n"
+ "._51:\n"
+ " .word gTasks+0x8\n"
+ "._48:\n"
+ " cmp r1, #0x2\n"
+ " beq ._53 @cond_branch\n"
+ " b ._64\n"
+ "._49:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._56\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " b ._55\n"
+ "._57:\n"
+ " .align 2, 0\n"
+ "._56:\n"
+ " .word gUnknown_Debug_0839BBC1+0x16b\n"
+ "._47:\n"
+ " ldr r0, ._60\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " and r1, r1, r2\n"
+ " cmp r1, #0\n"
+ " beq ._58 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._60 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " bl RtcReset\n"
+ "._55:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._64\n"
+ "._61:\n"
+ " .align 2, 0\n"
+ "._60:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_0839BBC1+0x18b\n"
+ "._58:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._64 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ " b ._64\n"
+ "._53:\n"
+ " ldr r0, ._65\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._64 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ "._64:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._66:\n"
+ " .align 2, 0\n"
+ "._65:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076E18()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._67\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._68:\n"
+ " .align 2, 0\n"
+ "._67:\n"
+ " .word DebugMenu_8076D6C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076E30()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._73\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._69 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._70 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._71 @cond_branch\n"
+ " b ._86\n"
+ "._74:\n"
+ " .align 2, 0\n"
+ "._73:\n"
+ " .word gTasks+0x8\n"
+ "._70:\n"
+ " cmp r1, #0x2\n"
+ " beq ._75 @cond_branch\n"
+ " b ._86\n"
+ "._71:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._78\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " b ._77\n"
+ "._79:\n"
+ " .align 2, 0\n"
+ "._78:\n"
+ " .word gUnknown_Debug_0839BBC1+0x199\n"
+ "._69:\n"
+ " ldr r0, ._82\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " and r1, r1, r2\n"
+ " cmp r1, #0\n"
+ " beq ._80 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " bl sub_813B79C\n"
+ " ldr r0, ._82 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ "._77:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._86\n"
+ "._83:\n"
+ " .align 2, 0\n"
+ "._82:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_0839BBC1+0x1bc\n"
+ "._80:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ " b ._86\n"
+ "._75:\n"
+ " ldr r0, ._87\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ "._86:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076EDC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._89\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._90:\n"
+ " .align 2, 0\n"
+ "._89:\n"
+ " .word DebugMenu_8076E30+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076EF4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r4, ._93\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " add r3, r4, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r5, #0x0\n"
+ " add r4, r4, #0x4\n"
+ "._92:\n"
+ " lsl r0, r5, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " and r1, r1, r0\n"
+ " mov r0, #0xb6\n"
+ " cmp r1, #0\n"
+ " bne ._91 @cond_branch\n"
+ " mov r0, #0xb5\n"
+ "._91:\n"
+ " lsl r2, r5, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0xa\n"
+ " bl sub_8071F60\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x7\n"
+ " bls ._92 @cond_branch\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, #0x8\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._94:\n"
+ " .align 2, 0\n"
+ "._93:\n"
+ " .word gUnknown_Debug_0839BBC1+0x203\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076F60()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 ._97 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " bne ._96 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_8076B68\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " b ._97\n"
+ "._96:\n"
+ " ldr r3, ._100\n"
+ " lsl r2, r2, #0x18\n"
+ " asr r2, r2, #0x15\n"
+ " add r0, r3, #4\n"
+ " add r0, r2, r0\n"
+ " ldrb r4, [r0]\n"
+ " ldr r0, ._100 + 4\n"
+ " mov r1, #0x1\n"
+ " and r1, r1, r4\n"
+ " strb r1, [r0, #0x8]\n"
+ " add r2, r2, r3\n"
+ " ldr r1, [r2]\n"
+ " bl StringCopy\n"
+ " mov r0, #0x80\n"
+ " and r4, r4, r0\n"
+ " cmp r4, #0\n"
+ " bne ._98 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8057508\n"
+ " b ._99\n"
+ "._101:\n"
+ " .align 2, 0\n"
+ "._100:\n"
+ " .word gUnknown_Debug_0839BBC1+0x203\n"
+ " .word gSaveBlock2\n"
+ "._98:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8057508\n"
+ "._99:\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " ldr r0, ._102\n"
+ " bl SetMainCallback2\n"
+ "._97:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._103:\n"
+ " .align 2, 0\n"
+ "._102:\n"
+ " .word debug_sub_8058C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076FEC()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_8076EF4\n"
+ " ldr r0, ._104\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._105:\n"
+ " .align 2, 0\n"
+ "._104:\n"
+ " .word DebugMenu_8076F60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077004()
+{
+ asm(
+ " ldr r2, ._106\n"
+ " ldr r0, ._106 + 4\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._106 + 8\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " bx lr\n"
+ "._107:\n"
+ " .align 2, 0\n"
+ "._106:\n"
+ " .word 0x30006c4 @ gTileset1AnimLength\n"
+ " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n"
+ " .word gDebug0x839B9BC+0x1a8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._109\n"
+ " ldr r0, [r0]\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._108 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._108:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word gMenuCallback\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077048()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._111\n"
+ " ldr r1, ._111 + 4\n"
+ " str r1, [r0]\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._111 + 8\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._112:\n"
+ " .align 2, 0\n"
+ "._111:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807706C+1\n"
+ " .word DebugMenu_8077020+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807706C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._113\n"
+ " bl InitMenuWindow\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ " bl DebugMenu_80771EC\n"
+ " bl DebugMenu_8077238\n"
+ " ldr r1, ._113 + 4\n"
+ " ldr r0, ._113 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._114:\n"
+ " .align 2, 0\n"
+ "._113:\n"
+ " .word gWindowTemplate_81E6CE4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807709C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807709C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._120\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._115 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4\n"
+ " strb r0, [r1]\n"
+ "._115:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._116 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4\n"
+ " strb r0, [r1]\n"
+ "._116:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._117 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._120 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._118 @cond_branch\n"
+ " mov r0, #0x7\n"
+ " b ._119\n"
+ "._121:\n"
+ " .align 2, 0\n"
+ "._120:\n"
+ " .word gMain\n"
+ " .word 0x030006c0 @ gNumTilesetAnimDmas\n"
+ " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n"
+ "._118:\n"
+ " sub r0, r0, #0x1\n"
+ "._119:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._117:\n"
+ " ldr r0, ._125\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._122 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._125 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x7\n"
+ " bne ._123 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._124\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word gMain\n"
+ " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n"
+ "._123:\n"
+ " add r0, r0, #0x1\n"
+ "._124:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._122:\n"
+ " ldr r0, ._129\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._129 + 4\n"
+ " ldr r0, ._129 + 8\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._129 + 12\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r2\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 gMysteryEventScriptCmdTableEnd+0x3cf4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._132\n"
+ "._130:\n"
+ " .align 2, 0\n"
+ "._129:\n"
+ " .word gMain\n"
+ " .word gDebug0x839B9BC\n"
+ " .word 0x030006c0 @ gNumTilesetAnimDmas\n"
+ " .word 0x30006c4 @ gTileset1AnimLength\n"
+ "._127:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._131 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._132\n"
+ "._131:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._132:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807719C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._133\n"
+ " ldr r0, ._133 + 4\n"
+ " ldr r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItemsReordered\n"
+ " ldr r4, ._133 + 8\n"
+ " ldrb r0, [r4]\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, #0x8\n"
+ " bl InitMenu\n"
+ " strb r0, [r4]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gDebug0x839B9BC\n"
+ " .word 0x30006c4 @ gTileset1AnimLength\n"
+ " .word 0x030006c0 @ gNumTilesetAnimDmas\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80771EC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._135\n"
+ " ldr r1, ._135 + 4\n"
+ " bl StringCopy\n"
+ " ldr r4, ._135 + 8\n"
+ " mov r1, #0x4\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r1, #0x5\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._135\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._136:\n"
+ " .align 2, 0\n"
+ "._135:\n"
+ " .word gStringVar4\n"
+ " .word gUnknown_Debug_0839BBC1+0x243\n"
+ " .word gSaveBlock1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077238()
+{
+ 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"
+ " ldr r1, ._139\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, sp, #0x4\n"
+ " mov r9, r0\n"
+ " ldr r1, ._139 + 4\n"
+ " mov r2, #0x3\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r1, sp, #0x8\n"
+ " mov sl, r1\n"
+ " ldr r1, ._139 + 8\n"
+ " mov r0, sl\n"
+ " mov r2, #0x3\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " mov r2, #0x0\n"
+ " str r2, [sp, #0x14]\n"
+ " add r4, sp, #0x10\n"
+ " mov r6, sp\n"
+ " add r6, r6, #0x12\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl PlayerGetDestCoords\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r6, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " mov r8, r0\n"
+ " mov r0, r8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r4]\n"
+ " ldrh r0, [r6]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r6]\n"
+ " ldr r7, ._139 + 12\n"
+ " add r0, r7, #0\n"
+ " mov r1, sp\n"
+ " bl StringCopy\n"
+ " add r5, sp, #0xc\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, r9\n"
+ " bl StringAppend\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r6, r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, sl\n"
+ " bl StringAppend\n"
+ " add r0, r5, #0\n"
+ " mov r1, r8\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " ldrb r0, [r7]\n"
+ " cmp r0, #0xff\n"
+ " beq ._137 @cond_branch\n"
+ " add r1, r7, #0\n"
+ "._138:\n"
+ " ldr r0, [sp, #0x14]\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x14]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._138 @cond_branch\n"
+ "._137:\n"
+ " mov r0, #0x1c\n"
+ " ldr r1, [sp, #0x14]\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._139 + 12\n"
+ " mov r1, #0x1d\n"
+ " ldr r2, [sp, #0x14]\n"
+ " sub r1, r1, r2\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word gUnknown_Debug_0839BBC1+0x246\n"
+ " .word gUnknown_Debug_0839BBC1+0x248\n"
+ " .word gUnknown_Debug_0839BBC1+0x24b\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_Exit()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenSogabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_814A414\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenTamada()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8075C30\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenKagaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitKagayaDebugMenu_A\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenMatsuda()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_80A9B28\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenNohara()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNoharaDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenWatanabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._141\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word InitWatanabeDebugMenu+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_EndSequenceDemo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._143\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._144:\n"
+ " .align 2, 0\n"
+ "._143:\n"
+ " .word sub_81439D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_HallOfFame()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl GameClear\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenSizeComparison()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSizeComparison\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_HoennNationalDex()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsNationalPokedexEnabled\n"
+ " cmp r0, #0\n"
+ " beq ._145 @cond_branch\n"
+ " bl DisableNationalPokedex\n"
+ " b ._146\n"
+ "._145:\n"
+ " bl EnableNationalPokedex\n"
+ "._146:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077434()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x4\n"
+ " bhi ._165 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._149\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._150:\n"
+ " .align 2, 0\n"
+ "._149:\n"
+ " .word ._148\n"
+ "._148:\n"
+ " .word ._151\n"
+ " .word ._152\n"
+ " .word ._153\n"
+ " .word ._154\n"
+ " .word ._155\n"
+ "._151:\n"
+ " ldr r0, ._157\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0x0\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word gUnknown_Debug_0839BBC1+0x24e\n"
+ "._152:\n"
+ " ldr r0, ._160\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0x0\n"
+ " b ._159\n"
+ "._161:\n"
+ " .align 2, 0\n"
+ "._160:\n"
+ " .word gUnknown_Debug_0839BBC1+0x251\n"
+ "._153:\n"
+ " ldr r0, ._163\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0x0\n"
+ " b ._162\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word gUnknown_Debug_0839BBC1+0x255\n"
+ "._154:\n"
+ " ldr r0, ._166\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xff\n"
+ "._162:\n"
+ " mov r2, #0xff\n"
+ "._159:\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word gUnknown_Debug_0839BBC1+0x259\n"
+ "._155:\n"
+ " ldr r0, ._168\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ "._165:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._169:\n"
+ " .align 2, 0\n"
+ "._168:\n"
+ " .word gUnknown_Debug_0839BBC1+0x25d\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807750C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._170\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._171:\n"
+ " .align 2, 0\n"
+ "._170:\n"
+ " .word gUnknown_Debug_0839BBC1+0x263\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_SetRamBerry()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._172\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._172 + 4\n"
+ " ldr r0, ._172 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._173:\n"
+ " .align 2, 0\n"
+ "._172:\n"
+ " .word gUnknown_Debug_0839BBC1+0x263\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807750C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_ToggleBGM()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._175\n"
+ " mov r1, #0x0\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0\n"
+ " bne ._174 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._174:\n"
+ " strb r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._176:\n"
+ " .align 2, 0\n"
+ "._175:\n"
+ " .word gDisableMusic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_BattleForDebug()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitBattleForDebug\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_NationalDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._178\n"
+ "._177:\n"
+ " add r4, r4, #0x1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r4, r5\n"
+ " bls ._177 @cond_branch\n"
+ " ldr r1, ._178 + 4\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._179:\n"
+ " .align 2, 0\n"
+ "._178:\n"
+ " .word 0x181\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_HoennDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r5, #0x0\n"
+ "._180:\n"
+ " add r5, r5, #0x1\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl HoennToNationalOrder\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r5, #0xc9\n"
+ " bls ._180 @cond_branch\n"
+ " ldr r1, ._181\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_CreatePKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitCreatePokemon\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_ViewPokemonGraphics()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeePokemonGraphics\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenSeeTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeeTrainers\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenMori()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitMoriDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenTomomichi()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTomomichiDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenAoki()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenTaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTayaDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenNakamura()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNakamuraDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenIwasawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8138CC4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_Teleport()
+{
+ asm(
+ " push {lr}\n"
+ " bl Overworld_SetWarpDestToLastHealLoc\n"
+ " bl sub_8080E88\n"
+ " bl ScriptContext2_Enable\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_EditPKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_815FFDC\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80776B4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._183\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " lsl r3, r4, #0x1\n"
+ " lsl r5, r4, #0x19\n"
+ " lsr r5, r5, #0x18\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x19\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x1d\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r0, ._183 + 4\n"
+ " ldrb r0, [r0]\n"
+ " ASR r0, r4\n"
+ " mov r1, #0x1\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x19\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word gUnknown_Debug_0839BBC1+0x28b\n"
+ " .word 0x30006c8 @ gTileset2AnimLength\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077704()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xffffffec\n"
+ " ldr r1, ._185\n"
+ " mov r0, sp\n"
+ " mov r2, #0x11\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x8\n"
+ " bl Menu_BlankWindowRect\n"
+ " mov r0, sp\n"
+ " mov r1, #0x15\n"
+ " mov r2, #0x0\n"
+ " bl Menu_PrintText\n"
+ " ldr r2, ._185 + 4\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x13\n"
+ " ldrh r0, [r0]\n"
+ " lsr r0, r0, #0x8\n"
+ " mov r1, #0xf\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x2\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x3\n"
+ " bl DebugMenu_80776B4\n"
+ " add sp, sp, #0x14\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._186:\n"
+ " .align 2, 0\n"
+ "._185:\n"
+ " .word gUnknown_Debug_0839BBC1+0x292\n"
+ " .word 0x30006c8 @ gTileset2AnimLength\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077760()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r2, ._190\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " add r5, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._187 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._190 + 4\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._188 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._189\n"
+ "._191:\n"
+ " .align 2, 0\n"
+ "._190:\n"
+ " .word gMain\n"
+ " .word 0x030006b0+0x8 @ gMenu+0x8\n"
+ "._188:\n"
+ " mov r0, #0x3\n"
+ "._189:\n"
+ " strb r0, [r1]\n"
+ "._187:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._192 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._195\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3\n"
+ " beq ._193 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " b ._194\n"
+ "._196:\n"
+ " .align 2, 0\n"
+ "._195:\n"
+ " .word 0x030006b0+0x8 @ gMenu+0x8\n"
+ "._193:\n"
+ " mov r0, #0x0\n"
+ "._194:\n"
+ " strb r0, [r1]\n"
+ "._192:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._197 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._201\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " LSL r1, r0\n"
+ " ldrb r0, [r4]\n"
+ " eor r1, r1, r0\n"
+ " strb r1, [r4]\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_80776B4\n"
+ "._197:\n"
+ " ldrh r2, [r5, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._198 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._199 @cond_branch\n"
+ "._198:\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x13\n"
+ " ldrh r0, [r2]\n"
+ " ldr r1, ._201 + 4\n"
+ " and r1, r1, r0\n"
+ " ldr r0, ._201\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x8\n"
+ " add r1, r1, r0\n"
+ " strh r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._200\n"
+ "._202:\n"
+ " .align 2, 0\n"
+ "._201:\n"
+ " .word 0x30006c8 @ gTileset2AnimLength\n"
+ " .word 0xf0ff\n"
+ "._199:\n"
+ " mov r0, #0x0\n"
+ "._200:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_SwitchBG()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " bl DebugMenu_8077704\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x6\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._203\n"
+ " ldr r0, ._203 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._204:\n"
+ " .align 2, 0\n"
+ "._203:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077760+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807786C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._205\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " lsl r0, r4, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word gUnknown_Debug_0839BBC1+0x2a3\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80778A8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._211\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._207 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r2, ._211 + 4\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrb r0, [r2]\n"
+ " bl DebugMenu_807786C\n"
+ "._207:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._208 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ "._208:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._210\n"
+ "._212:\n"
+ " .align 2, 0\n"
+ "._211:\n"
+ " .word gMain\n"
+ " .word sWildEncountersDisabled\n"
+ "._209:\n"
+ " mov r0, #0x0\n"
+ "._210:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_ControlEncounter()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._213\n"
+ " ldrb r0, [r0]\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._213 + 4\n"
+ " ldr r0, ._213 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word sWildEncountersDisabled\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80778A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_UseHM()
+{
+ asm(
+ " ldr r1, ._215\n"
+ " ldr r0, ._215 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "._216:\n"
+ " .align 2, 0\n"
+ "._215:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077934()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._218\n"
+ " mov r2, #0x1\n"
+ "._217:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._217 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._219:\n"
+ " .align 2, 0\n"
+ "._218:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077954()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._222\n"
+ " mov r2, #0x0\n"
+ "._221:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._221 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._223:\n"
+ " .align 2, 0\n"
+ "._222:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077974()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._226\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl IsRematchTrainerIn\n"
+ " cmp r0, #0\n"
+ " beq ._224 @cond_branch\n"
+ " ldr r0, ._226 + 4\n"
+ " ldr r1, ._226 + 8\n"
+ " bl StringCopy\n"
+ " b ._225\n"
+ "._227:\n"
+ " .align 2, 0\n"
+ "._226:\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar1\n"
+ " .word gUnknown_Debug_0839BBC1+0x2cc\n"
+ "._224:\n"
+ " ldr r0, ._230\n"
+ " ldr r1, ._230 + 4\n"
+ " bl StringCopy\n"
+ "._225:\n"
+ " ldr r1, ._230 + 8\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl DoesSomeoneWantRematchIn\n"
+ " cmp r0, #0\n"
+ " beq ._228 @cond_branch\n"
+ " ldr r0, ._230 + 12\n"
+ " ldr r1, ._230 + 16\n"
+ " bl StringCopy\n"
+ " b ._229\n"
+ "._231:\n"
+ " .align 2, 0\n"
+ "._230:\n"
+ " .word gStringVar1\n"
+ " .word gUnknown_Debug_0839BBC1+0x2cf\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar2\n"
+ " .word gUnknown_Debug_0839BBC1+0x2cc\n"
+ "._228:\n"
+ " ldr r0, ._232\n"
+ " ldr r1, ._232 + 4\n"
+ " bl StringCopy\n"
+ "._229:\n"
+ " ldr r0, ._232 + 8\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._232 + 12\n"
+ " ldr r0, ._232 + 16\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._233:\n"
+ " .align 2, 0\n"
+ "._232:\n"
+ " .word gStringVar2\n"
+ " .word gUnknown_Debug_0839BBC1+0x2cf\n"
+ " .word gUnknown_Debug_0839BBC1+0x2aa\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A20()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._234\n"
+ " ldr r1, ._234 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xff\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._235:\n"
+ " .align 2, 0\n"
+ "._234:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A40()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._236\n"
+ " ldr r1, ._236 + 4\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._237:\n"
+ " .align 2, 0\n"
+ "._236:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A60()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._238\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._239:\n"
+ " .align 2, 0\n"
+ "._238:\n"
+ " .word gUnknown_Debug_0839BBC1+0x323\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_RematchTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._240\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._240 + 4\n"
+ " ldr r0, ._240 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._241:\n"
+ " .align 2, 0\n"
+ "._240:\n"
+ " .word gUnknown_Debug_0839BBC1+0x323\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077A60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._242\n"
+ " mov r0, #0x1e\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._243:\n"
+ " .align 2, 0\n"
+ "._242:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._244\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._245:\n"
+ " .align 2, 0\n"
+ "._244:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077ACC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._246\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._247:\n"
+ " .align 2, 0\n"
+ "._246:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AE8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._248\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._249:\n"
+ " .align 2, 0\n"
+ "._248:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B00()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl unref_sub_80C853C\n"
+ " cmp r0, #0\n"
+ " beq ._250 @cond_branch\n"
+ " ldr r0, ._252\n"
+ " bl sub_8071F40\n"
+ " b ._251\n"
+ "._253:\n"
+ " .align 2, 0\n"
+ "._252:\n"
+ " .word gUnknown_Debug_0839BBC1+0x353\n"
+ "._250:\n"
+ " ldr r0, ._254\n"
+ " bl sub_8071F40\n"
+ "._251:\n"
+ " ldr r1, ._254 + 4\n"
+ " ldr r0, ._254 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._255:\n"
+ " .align 2, 0\n"
+ "._254:\n"
+ " .word gUnknown_Debug_0839BBC1+0x35e\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B3C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._256\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._257:\n"
+ " .align 2, 0\n"
+ "._256:\n"
+ " .word gUnknown_Debug_0839BBC1+0x3ab\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_Safari()
+{
+ asm(
+ " push {lr}\n"
+ " bl GetSafariZoneFlag\n"
+ " cmp r0, #0\n"
+ " beq ._258 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._260\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r0, ._260 + 4\n"
+ " ldr r1, ._260 + 8\n"
+ " ldrh r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._260 + 12\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._260 + 16\n"
+ " ldr r0, ._260 + 20\n"
+ " str r0, [r1]\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x0\n"
+ " b ._259\n"
+ "._261:\n"
+ " .align 2, 0\n"
+ "._260:\n"
+ " .word gUnknown_Debug_0839BBC1+0x3ab\n"
+ " .word gStringVar1\n"
+ " .word gSafariZoneStepCounter\n"
+ " .word gUnknown_Debug_0839BBC1+0x34b\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077B3C+1\n"
+ "._258:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x16\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ "._259:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BB4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80AFEE4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BC0()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8122080\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BCC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8120968\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BD8()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8130318\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BE4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80986AC\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BF4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80D93F4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C00()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._262\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._263:\n"
+ " .align 2, 0\n"
+ "._262:\n"
+ " .word gUnknown_Debug_0839BBC1+0x3d3\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C14()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._264\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._264 + 4\n"
+ " ldr r0, ._264 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._265:\n"
+ " .align 2, 0\n"
+ "._264:\n"
+ " .word gUnknown_Debug_0839BBC1+0x3d3\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C3C()
+{
+ 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 sl, r0\n"
+ " add r7, r1, #0\n"
+ " ldr r0, ._271\n"
+ " ldr r1, ._271 + 4\n"
+ " str r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " mov r3, #0x0\n"
+ " mov r8, r0\n"
+ "._269:\n"
+ " mov r5, #0x0\n"
+ " ldr r1, ._271\n"
+ " ldr r0, [r1]\n"
+ " ldr r2, [r0, #0x4]\n"
+ " mov r4, #0x0\n"
+ " ldr r1, [r0, #0x8]\n"
+ " add r3, r3, #0x1\n"
+ " mov r9, r3\n"
+ " cmp r5, r1\n"
+ " bge ._266 @cond_branch\n"
+ " add r3, r0, #0\n"
+ " add r6, r1, #0\n"
+ "._267:\n"
+ " ldr r0, [r3, #0xc]\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sl\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x30\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " add r4, r4, #0x1\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0xa\n"
+ " str r3, [sp]\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x3d30\n"
+ " add r2, r0, #0\n"
+ " ldr r3, [sp]\n"
+ " cmp r4, r6\n"
+ " blt ._267 @cond_branch\n"
+ "._266:\n"
+ " mov r0, r8\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, r5\n"
+ " bcs ._268 @cond_branch\n"
+ " add r5, r0, #0\n"
+ "._268:\n"
+ " ldrb r3, [r1, #0x8]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r7, r0, #0\n"
+ " mov r3, r9\n"
+ " mov r1, r8\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " cmp r3, #0x1\n"
+ " ble ._269 @cond_branch\n"
+ " mov r1, sl\n"
+ " ldrb r0, [r1, #0x1d]\n"
+ " add r0, r0, #0x7a\n"
+ " strb r0, [r7]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xf6\n"
+ " bls ._270 @cond_branch\n"
+ " mov r0, #0xf6\n"
+ " strb r0, [r7]\n"
+ "._270:\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r7, #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 {r0}\n"
+ " bx r0\n"
+ "._272:\n"
+ " .align 2, 0\n"
+ "._271:\n"
+ " .word 0x030006b0+0xc @ gMenu+0xc\n"
+ " .word gUnknown_Debug_0839BBC1+0x427\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8077CF4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r0, ._273\n"
+ " ldr r6, ._273 + 4\n"
+ " add r1, r6, #0\n"
+ " bl DebugMenu_8077C3C\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._274:\n"
+ " .align 2, 0\n"
+ "._273:\n"
+ " .word BuildDateTime\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D24()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r6, r0, #0\n"
+ " add r4, r1, #0\n"
+ " add r5, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " lsl r3, r5, #0x1\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " add r2, r5, #0\n"
+ " add r3, r6, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " sub r4, r4, #0x1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " str r4, [sp, #0x4]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " add r3, r5, #0\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D78()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r4, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._275 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " beq ._276 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._278\n"
+ " lsl r1, r4, #0x3\n"
+ " add r1, r1, r5\n"
+ " ldr r1, [r1, #0x4]\n"
+ " str r1, [r0]\n"
+ "._275:\n"
+ " mov r0, #0x0\n"
+ " b ._277\n"
+ "._279:\n"
+ " .align 2, 0\n"
+ "._278:\n"
+ " .word gMenuCallback\n"
+ "._276:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._277:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._282\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._280 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._281\n"
+ "._283:\n"
+ " .align 2, 0\n"
+ "._282:\n"
+ " .word gMain\n"
+ "._280:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._281:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DD8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " add r1, r3, #0\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._284 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._285\n"
+ "._284:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._286 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " b ._287\n"
+ "._286:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._288 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ "._285:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r5\n"
+ " bge ._293 @cond_branch\n"
+ " strh r2, [r4]\n"
+ " b ._293\n"
+ "._288:\n"
+ " mov r0, #0x10\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0\n"
+ " bne ._291 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._292\n"
+ "._291:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ "._287:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r2\n"
+ " ble ._293 @cond_branch\n"
+ " strh r5, [r4]\n"
+ "._293:\n"
+ " mov r0, #0x1\n"
+ "._292:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077E40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " ldr r0, ._297\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._294 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._295 @cond_branch\n"
+ "._294:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._302\n"
+ "._298:\n"
+ " .align 2, 0\n"
+ "._297:\n"
+ " .word gMain\n"
+ "._295:\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._299 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " cmp r4, #0\n"
+ " beq ._300 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x0\n"
+ " b ._302\n"
+ "._300:\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x1\n"
+ " b ._302\n"
+ "._299:\n"
+ " add r0, r4, #0\n"
+ "._302:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_MakeItems()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl DebugMenu_8077EAC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EAC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._303\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._303 + 4\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xa]\n"
+ " strh r1, [r0, #0xc]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._304:\n"
+ " .align 2, 0\n"
+ "._303:\n"
+ " .word DebugMenu_8077F40+1\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EE0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r6, r1, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r6, r6, #0x10\n"
+ " lsr r6, r6, #0x10\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r5, ._305\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " bl ItemId_GetItem\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._306:\n"
+ " .align 2, 0\n"
+ "._305:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r0, ._307\n"
+ " add r4, r4, r0\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._307 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._307 + 8\n"
+ " str r0, [r4]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._308:\n"
+ " .align 2, 0\n"
+ "._307:\n"
+ " .word gTasks\n"
+ " .word gDebug0x839C008\n"
+ " .word DebugMenu_8077F7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F7C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._311\n"
+ " add r4, r1, r0\n"
+ " ldr r3, ._311 + 4\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._309 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._311 + 8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._311 + 12\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._312:\n"
+ " .align 2, 0\n"
+ "._311:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ " .word gDebug0x839C008+0xc\n"
+ " .word DebugMenu_8077FFC+1\n"
+ "._309:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._313 @cond_branch\n"
+ " ldr r0, ._315\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._316:\n"
+ " .align 2, 0\n"
+ "._315:\n"
+ " .word DebugMenu_807806C+1\n"
+ "._313:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xa\n"
+ " mov r2, #0xae\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x1\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._317 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._317:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077FFC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._321\n"
+ " add r4, r1, r0\n"
+ " ldr r2, ._321 + 4\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._318 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl AddBagItem\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._320 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._320\n"
+ "._322:\n"
+ " .align 2, 0\n"
+ "._321:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ "._318:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._323 @cond_branch\n"
+ "._320:\n"
+ " ldr r0, ._325\n"
+ " str r0, [r4]\n"
+ " b ._327\n"
+ "._326:\n"
+ " .align 2, 0\n"
+ "._325:\n"
+ " .word DebugMenu_8077F40+1\n"
+ "._323:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x63\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._327 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._327:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807806C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl DebugMenu_8077048\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807808C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " add r4, r0, #0\n"
+ " sub r0, r4, #1\n"
+ " cmp r0, #0xc\n"
+ " bls ._328 @cond_branch\n"
+ " mov r4, #0x1\n"
+ "._328:\n"
+ " lsl r1, r4, #0x5\n"
+ " ldr r0, ._331\n"
+ " add r5, r1, r0\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._331 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintText\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0xb\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._329 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ " b ._330\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gSaveBlock1+0x2ddc\n"
+ " .word gDebug0x839C008+0x16\n"
+ "._329:\n"
+ " ldr r0, ._335\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ "._330:\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0x16\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._333 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ " b ._334\n"
+ "._336:\n"
+ " .align 2, 0\n"
+ "._335:\n"
+ " .word gDebug0x839C008+0x45\n"
+ "._333:\n"
+ " ldr r0, ._337\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ "._334:\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xa\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r5]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xc\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0xc\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._338:\n"
+ " .align 2, 0\n"
+ "._337:\n"
+ " .word gDebug0x839C008+0x45\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807817C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._340\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._339 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ "._339:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._341:\n"
+ " .align 2, 0\n"
+ "._340:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80781A8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._344\n"
+ " add r5, r1, r0\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r2, #0x8\n"
+ " ldsh r0, [r5, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._342 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r5, #0x8]\n"
+ " b ._343\n"
+ "._345:\n"
+ " .align 2, 0\n"
+ "._344:\n"
+ " .word gTasks\n"
+ "._342:\n"
+ " ldr r2, ._348\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._346 @cond_branch\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r5, r1]\n"
+ " bl DebugMenu_807808C\n"
+ " ldr r0, ._348 + 4\n"
+ " str r0, [r5]\n"
+ " b ._350\n"
+ "._349:\n"
+ " .align 2, 0\n"
+ "._348:\n"
+ " .word gMain\n"
+ " .word DebugMenu_807817C+1\n"
+ "._346:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r3, #0xc0\n"
+ " and r3, r3, r1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0\n"
+ " beq ._350 @cond_branch\n"
+ "._343:\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r4, ._351\n"
+ " mov r2, #0x8\n"
+ " ldsh r1, [r5, r2]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ "._350:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._352:\n"
+ " .align 2, 0\n"
+ "._351:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_ViewPortraits()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._353\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._354:\n"
+ " .align 2, 0\n"
+ "._353:\n"
+ " .word DebugMenu_80781A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078254()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_807808C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_AllBadges()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._355\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 8\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 12\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 16\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 20\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 24\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 28\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._356:\n"
+ " .align 2, 0\n"
+ "._355:\n"
+ " .word 0x807\n"
+ " .word 0x808\n"
+ " .word 0x809\n"
+ " .word 0x80a\n"
+ " .word 0x80b\n"
+ " .word 0x80c\n"
+ " .word 0x80d\n"
+ " .word 0x80e\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_TimeRecords()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._357\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._358:\n"
+ " .align 2, 0\n"
+ "._357:\n"
+ " .word debug_sub_806F9E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_SetTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_806F99C\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80782EC()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._359\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._359 + 4\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._360:\n"
+ " .align 2, 0\n"
+ "._359:\n"
+ " .word gStringVar1\n"
+ " .word gDebug0x839C008+0x4b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078310()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._364\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._361 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._362 @cond_branch\n"
+ " b ._375\n"
+ "._365:\n"
+ " .align 2, 0\n"
+ "._364:\n"
+ " .word gTasks+0x8\n"
+ "._361:\n"
+ " ldr r0, ._367\n"
+ " bl VarGet\n"
+ " strh r0, [r4, #0x2]\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._375\n"
+ "._368:\n"
+ " .align 2, 0\n"
+ "._367:\n"
+ " .word 0x4024\n"
+ "._362:\n"
+ " ldr r3, ._371\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._369 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " ldr r0, ._371 + 4\n"
+ " bl GetVarPointer\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " b ._370\n"
+ "._372:\n"
+ " .align 2, 0\n"
+ "._371:\n"
+ " .word gMain\n"
+ " .word 0x4024\n"
+ "._369:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._373 @cond_branch\n"
+ "._370:\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._375\n"
+ "._373:\n"
+ " add r0, r4, #2\n"
+ " ldr r2, ._376\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._375 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ "._375:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._377:\n"
+ " .align 2, 0\n"
+ "._376:\n"
+ " .word 0xffff\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_MiragaIslandRND()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._378\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._379:\n"
+ " .align 2, 0\n"
+ "._378:\n"
+ " .word DebugMenu_8078310+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80783C8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._383\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._382 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._383 + 4\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._381 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " b ._382\n"
+ "._384:\n"
+ " .align 2, 0\n"
+ "._383:\n"
+ " .word gMain\n"
+ " .word 0x804\n"
+ "._381:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ "._382:\n"
+ " ldr r0, ._388\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._385 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._386 @cond_branch\n"
+ "._385:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._387\n"
+ "._389:\n"
+ " .align 2, 0\n"
+ "._388:\n"
+ " .word gMain\n"
+ "._386:\n"
+ " mov r0, #0x0\n"
+ "._387:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_ToggleClearFlag()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._390\n"
+ " bl FlagGet\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._390 + 4\n"
+ " ldr r0, ._390 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._391:\n"
+ " .align 2, 0\n"
+ "._390:\n"
+ " .word 0x804\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80783C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078464()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._396\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._392 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._393 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._394 @cond_branch\n"
+ " b ._401\n"
+ "._397:\n"
+ " .align 2, 0\n"
+ "._396:\n"
+ " .word 0x82a\n"
+ "._393:\n"
+ " cmp r1, #0x1\n"
+ " beq ._398 @cond_branch\n"
+ " b ._401\n"
+ "._392:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " b ._401\n"
+ "._398:\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._401\n"
+ "._394:\n"
+ " mov r0, #0x1\n"
+ " b ._402\n"
+ "._401:\n"
+ " mov r0, #0x0\n"
+ "._402:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenWeatherEvents()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._404\n"
+ " bl FlagGet\n"
+ " mov r1, #0x0\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._403 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._403:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._404 + 4\n"
+ " ldr r0, ._404 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._405:\n"
+ " .align 2, 0\n"
+ "._404:\n"
+ " .word 0x82a\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078464+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80784E8()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsMysteryGiftEnabled\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._406 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._407 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._408 @cond_branch\n"
+ " b ._413\n"
+ "._407:\n"
+ " cmp r1, #0x1\n"
+ " beq ._410 @cond_branch\n"
+ " b ._413\n"
+ "._406:\n"
+ " bl DisableMysteryGift\n"
+ " b ._413\n"
+ "._410:\n"
+ " bl EnableMysteryGift\n"
+ " b ._413\n"
+ "._408:\n"
+ " mov r0, #0x1\n"
+ " b ._414\n"
+ "._413:\n"
+ " mov r0, #0x0\n"
+ "._414:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenMysteryEvent()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl IsMysteryGiftEnabled\n"
+ " mov r1, #0x0\n"
+ " cmp r0, #0\n"
+ " bne ._415 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._415:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._416\n"
+ " ldr r0, ._416 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._417:\n"
+ " .align 2, 0\n"
+ "._416:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80784E8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078550()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " lsl r0, r6, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl GetGameStat\n"
+ " add r7, r0, #0\n"
+ " ldr r0, ._420\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._420 + 4\n"
+ " ldr r5, ._420 + 8\n"
+ " lsl r4, r6, #0x3\n"
+ " add r1, r5, #4\n"
+ " add r1, r4, r1\n"
+ " ldr r1, [r1]\n"
+ " bl StringCopy\n"
+ " add r4, r4, r5\n"
+ " ldr r0, [r4]\n"
+ " cmp r0, #0\n"
+ " bne ._418 @cond_branch\n"
+ " ldr r0, ._420 + 12\n"
+ " ldr r1, ._420 + 16\n"
+ " bl StringCopy\n"
+ " b ._423\n"
+ "._421:\n"
+ " .align 2, 0\n"
+ "._420:\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gDebug0x839C008+0x264\n"
+ " .word gStringVar3\n"
+ " .word gDebug0x839C008+0x7d\n"
+ "._418:\n"
+ " cmp r6, #0x1\n"
+ " beq ._422 @cond_branch\n"
+ " ldr r0, ._424\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xa\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._423\n"
+ "._425:\n"
+ " .align 2, 0\n"
+ "._424:\n"
+ " .word gStringVar3\n"
+ "._422:\n"
+ " ldr r4, ._426\n"
+ " lsr r1, r7, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r6, #0xf0\n"
+ " strb r6, [r4, #0x3]\n"
+ " add r0, r4, #4\n"
+ " lsr r1, r7, #0x8\n"
+ " mov r5, #0xff\n"
+ " and r1, r1, r5\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " strb r6, [r4, #0x6]\n"
+ " add r4, r4, #0x7\n"
+ " and r7, r7, r5\n"
+ " add r0, r4, #0\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._423:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._426 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gStringVar3\n"
+ " .word gDebug0x839C008+0x74\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807860C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._432\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._428 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._429 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._430 @cond_branch\n"
+ " b ._447\n"
+ "._433:\n"
+ " .align 2, 0\n"
+ "._432:\n"
+ " .word gTasks+0x8\n"
+ "._429:\n"
+ " cmp r0, #0x2\n"
+ " beq ._434 @cond_branch\n"
+ " b ._447\n"
+ "._430:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ "._441:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._447\n"
+ "._428:\n"
+ " ldr r3, ._439\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._437 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " mov r0, #0x1\n"
+ " b ._438\n"
+ "._440:\n"
+ " .align 2, 0\n"
+ "._439:\n"
+ " .word gMain\n"
+ "._437:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " bne ._441 @cond_branch\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._442 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0x32\n"
+ " bne ._446 @cond_branch\n"
+ " strh r2, [r4, #0x2]\n"
+ " b ._446\n"
+ "._442:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._447 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bge ._446 @cond_branch\n"
+ " mov r0, #0x31\n"
+ " strh r0, [r4, #0x2]\n"
+ "._446:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ " b ._447\n"
+ "._434:\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._447:\n"
+ " mov r0, #0x0\n"
+ "._438:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786C0()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807860C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786D0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " ldr r1, ._450\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._450 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " sub r1, r0, #1\n"
+ " add r0, r2, #0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._449:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._451:\n"
+ " .align 2, 0\n"
+ "._450:\n"
+ " .word gTasks\n"
+ " .word gDebug0x839C008+0x264\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078714()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " ldr r1, ._454\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._454 + 4\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0x0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._453:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._455:\n"
+ " .align 2, 0\n"
+ "._454:\n"
+ " .word gTasks\n"
+ " .word gDebug0x839C008+0x264\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078758()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078774()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._456\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._457:\n"
+ " .align 2, 0\n"
+ "._456:\n"
+ " .word DebugMenu_80786C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078788()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._458\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._459:\n"
+ " .align 2, 0\n"
+ "._458:\n"
+ " .word DebugMenu_80786D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807879C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._460\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._461:\n"
+ " .align 2, 0\n"
+ "._460:\n"
+ " .word DebugMenu_8078714+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787B0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._462\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._463:\n"
+ " .align 2, 0\n"
+ "._462:\n"
+ " .word gDebug0x839C008+0x3f4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenLegendsRecord()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._464\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._464 + 4\n"
+ " ldr r0, ._464 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._465:\n"
+ " .align 2, 0\n"
+ "._464:\n"
+ " .word gDebug0x839C008+0x3f4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80787B0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787EC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r5, sp\n"
+ " add r5, r5, #0x2\n"
+ " mov r0, sp\n"
+ " add r1, r5, #0\n"
+ " bl GetXYCoordsOneStepInFrontOfPlayer\n"
+ " ldr r4, ._466\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 4\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileIdAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 8\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 12\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._466 + 16\n"
+ " ldr r1, ._466 + 20\n"
+ " bl StringExpandPlaceholders\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._467:\n"
+ " .align 2, 0\n"
+ "._466:\n"
+ " .word gSpecialVar_Result\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gStringVar3\n"
+ " .word gStringVar4\n"
+ " .word gDebug0x839C008+0x40c\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078880()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._472\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._468 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._469 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._470 @cond_branch\n"
+ " b ._480\n"
+ "._473:\n"
+ " .align 2, 0\n"
+ "._472:\n"
+ " .word gTasks\n"
+ "._469:\n"
+ " cmp r0, #0x2\n"
+ " beq ._474 @cond_branch\n"
+ " b ._480\n"
+ "._470:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._476\n"
+ "._468:\n"
+ " ldr r0, ._478\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._476:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._480\n"
+ "._479:\n"
+ " .align 2, 0\n"
+ "._478:\n"
+ " .word gStringVar4\n"
+ "._474:\n"
+ " ldr r0, ._481\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._480 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._480:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._482:\n"
+ " .align 2, 0\n"
+ "._481:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_CellInfo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._483\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl DebugMenu_80787EC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._484:\n"
+ " .align 2, 0\n"
+ "._483:\n"
+ " .word DebugMenu_8078880+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenBerryInfo()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl DebugOpenBerryInfo\n"
+ " add r4, r0, #0\n"
+ " cmp r4, #0\n"
+ " bne ._485 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._486\n"
+ "._485:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._487\n"
+ " ldr r0, ._487 + 4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ "._486:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._488:\n"
+ " .align 2, 0\n"
+ "._487:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078950()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._489\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word gDebug0x839C008+0x426\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078968()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._491 @cond_branch\n"
+ " ldr r0, ._493\n"
+ " mov r1, #0x32\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._492\n"
+ "._494:\n"
+ " .align 2, 0\n"
+ "._493:\n"
+ " .word gStringVar1\n"
+ "._491:\n"
+ " ldr r0, ._495\n"
+ " mov r1, #0x64\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._492:\n"
+ " ldr r0, ._495\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._496:\n"
+ " .align 2, 0\n"
+ "._495:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789A4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r4, ._497\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._498:\n"
+ " .align 2, 0\n"
+ "._497:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789CC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._499\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r0, ._499 + 4\n"
+ " ldr r1, ._499 + 8\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r5, #0x2]\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r5]\n"
+ " bl DebugMenu_8078968\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._499 + 12\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._500:\n"
+ " .align 2, 0\n"
+ "._499:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078A14()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r4, r1, #0x3\n"
+ " ldr r5, ._504\n"
+ " add r2, r4, r5\n"
+ " ldr r0, ._504 + 4\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0xc0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._501 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " cmp r0, #0\n"
+ " bne ._502 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._502:\n"
+ " strh r1, [r2]\n"
+ " ldrh r0, [r2]\n"
+ " bl DebugMenu_8078968\n"
+ " b ._510\n"
+ "._505:\n"
+ " .align 2, 0\n"
+ "._504:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._501:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._506 @cond_branch\n"
+ " ldr r1, ._508\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r3, ._508 + 4\n"
+ " add r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r2, #0x2]\n"
+ " ldrh r0, [r2, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._508 + 8\n"
+ " b ._507\n"
+ "._509:\n"
+ " .align 2, 0\n"
+ "._508:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078AA4+1\n"
+ "._506:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._510 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._511\n"
+ "._507:\n"
+ " str r1, [r0]\n"
+ "._510:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._512:\n"
+ " .align 2, 0\n"
+ "._511:\n"
+ " .word DebugMenu_8078B38+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078AA4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r7, ._515\n"
+ " add r4, r5, r7\n"
+ " add r0, r4, #2\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r6, ._515 + 4\n"
+ " ldrh r3, [r6, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._513 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " b ._521\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._513:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._517 @cond_branch\n"
+ " ldr r1, ._519\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, ._519 + 4\n"
+ " add r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._519 + 8\n"
+ " b ._518\n"
+ "._520:\n"
+ " .align 2, 0\n"
+ "._519:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078B38+1\n"
+ "._517:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._521 @cond_branch\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r4]\n"
+ " bl DebugMenu_8078968\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._522\n"
+ "._518:\n"
+ " str r1, [r0]\n"
+ "._521:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._523:\n"
+ " .align 2, 0\n"
+ "._522:\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B38()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_BattleTowerStages()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._524\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._525:\n"
+ " .align 2, 0\n"
+ "._524:\n"
+ " .word DebugMenu_80789CC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B70()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._526\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._526 + 4\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._527:\n"
+ " .align 2, 0\n"
+ "._526:\n"
+ " .word gStringVar1\n"
+ " .word gDebug0x839C008+0x430\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B94()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r3, #0x0\n"
+ " ldr r1, ._531\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._529 @cond_branch\n"
+ " ldr r5, ._531 + 4\n"
+ " add r4, r1, #0\n"
+ "._530:\n"
+ " lsl r0, r3, #0x3\n"
+ " add r2, r0, r5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0, #0x4]\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r2]\n"
+ " str r1, [r2, #0x4]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0x27\n"
+ " bhi ._529 @cond_branch\n"
+ " lsl r0, r3, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._530 @cond_branch\n"
+ "._529:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._532:\n"
+ " .align 2, 0\n"
+ "._531:\n"
+ " .word gDebug0x839C008+0x43c\n"
+ " .word gSaveBlock1+0x7f8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078BD4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._536\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._533 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._534 @cond_branch\n"
+ " b ._545\n"
+ "._537:\n"
+ " .align 2, 0\n"
+ "._536:\n"
+ " .word gTasks+0x8\n"
+ "._533:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._545\n"
+ "._534:\n"
+ " ldr r2, ._541\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._539 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " bl DebugMenu_8078B94\n"
+ " b ._545\n"
+ "._542:\n"
+ " .align 2, 0\n"
+ "._541:\n"
+ " .word gMain\n"
+ "._539:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._543 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._545\n"
+ "._543:\n"
+ " add r0, r4, #2\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x4\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._545 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ "._545:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_CheckPKBLCK()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._546\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._547:\n"
+ " .align 2, 0\n"
+ "._546:\n"
+ " .word DebugMenu_8078BD4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078C80()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._548\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._548 + 4\n"
+ " ldr r0, ._548 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._549:\n"
+ " .align 2, 0\n"
+ "._548:\n"
+ " .word gDebug0x839C574+0x30\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CA8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CA8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._552\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._550 @cond_branch\n"
+ " ldr r1, ._552 + 4\n"
+ " ldr r0, ._552 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._553:\n"
+ " .align 2, 0\n"
+ "._552:\n"
+ " .word gMain\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CE4+1\n"
+ "._550:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._554 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._554:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._555:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CE4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._558\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0xa\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_8078E40\n"
+ " cmp r0, #0x1\n"
+ " bne ._556 @cond_branch\n"
+ " ldr r0, ._558 + 4\n"
+ " ldr r1, ._558 + 8\n"
+ " bl StringCopy\n"
+ " b ._557\n"
+ "._559:\n"
+ " .align 2, 0\n"
+ "._558:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word gDebug0x839C574+0x58\n"
+ "._556:\n"
+ " ldr r0, ._560\n"
+ " ldr r1, ._560 + 4\n"
+ " bl StringCopy\n"
+ "._557:\n"
+ " ldr r1, ._560 + 8\n"
+ " ldr r0, ._560 + 12\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._561:\n"
+ " .align 2, 0\n"
+ "._560:\n"
+ " .word gStringVar4\n"
+ " .word gDebug0x839C574+0x6b\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D30()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " ldr r5, ._563\n"
+ " mov r4, #0x0\n"
+ " mov r6, #0x80\n"
+ " lsl r6, r6, #0x5\n"
+ "._562:\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E68\n"
+ " add r5, r5, r6\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x1f\n"
+ " bls ._562 @cond_branch\n"
+ " ldr r0, ._563 + 4\n"
+ " ldr r1, ._563 + 8\n"
+ " bl StringCopy\n"
+ " ldr r1, ._563 + 12\n"
+ " ldr r0, ._563 + 16\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word gDebug0x839C574+0x62\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D7C()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._565\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._565 + 4\n"
+ " ldr r0, ._565 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gStringVar4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DA4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DA4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._569\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._567 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._568\n"
+ "._570:\n"
+ " .align 2, 0\n"
+ "._569:\n"
+ " .word gMain\n"
+ "._567:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._568:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_MeTooBackupMan()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._571\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x2\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._571 + 4\n"
+ " ldr r0, ._571 + 8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._572:\n"
+ " .align 2, 0\n"
+ "._571:\n"
+ " .word gDebug0x839C574+0x20\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DF0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DF0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._573\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._574:\n"
+ " .align 2, 0\n"
+ "._573:\n"
+ " .word gDebug0x839C574+0x20\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E04()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r1, #0\n"
+ " add r5, r2, #0\n"
+ " b ._575\n"
+ "._577:\n"
+ " ldr r0, ._579\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"
+ "._575:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x2f60\n"
+ " cmp r0, #0\n"
+ " bne ._576 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " cmp r5, r0\n"
+ " bhi ._577 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._578\n"
+ "._580:\n"
+ " .align 2, 0\n"
+ "._579:\n"
+ " .word 0xfffff000\n"
+ "._576:\n"
+ " mov r0, #0x0\n"
+ "._578:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E40()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r6, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x19f4\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E04\n"
+ " add r4, r0, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x1a70\n"
+ " add r0, r4, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E68()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r1, #0\n"
+ " add r3, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x2d64\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x10\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r1, ._581\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0, #0x4]\n"
+ " mov r0, #0xd0\n"
+ " mov r2, #0xf\n"
+ " bl sub_8071F60\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word gDebug0x839C574+0x80\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078EB0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " ldr r4, ._583\n"
+ " mov r0, #0x2\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x4\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x6\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._584:\n"
+ " .align 2, 0\n"
+ "._583:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F1C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._585\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r1, ._585 + 4\n"
+ " ldrh r0, [r1, #0xe]\n"
+ " strh r0, [r5, #0x2]\n"
+ " ldrb r0, [r1, #0x10]\n"
+ " strh r0, [r5, #0x4]\n"
+ " ldrb r0, [r1, #0x11]\n"
+ " strh r0, [r5, #0x6]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._585 + 8\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._586:\n"
+ " .align 2, 0\n"
+ "._585:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word DebugMenu_8078F68+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F68()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r6, ._589\n"
+ " add r4, r5, r6\n"
+ " ldr r3, ._589 + 4\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._587 @cond_branch\n"
+ " ldr r1, ._589 + 8\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " strh r0, [r1, #0xe]\n"
+ " ldrh r0, [r4, #0x4]\n"
+ " strb r0, [r1, #0x10]\n"
+ " ldrh r0, [r4, #0x6]\n"
+ " strb r0, [r1, #0x11]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " b ._588\n"
+ "._590:\n"
+ " .align 2, 0\n"
+ "._589:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ " .word gSaveBlock2\n"
+ "._587:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._591 @cond_branch\n"
+ "._588:\n"
+ " add r0, r6, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._593\n"
+ " str r1, [r0]\n"
+ " b ._601\n"
+ "._594:\n"
+ " .align 2, 0\n"
+ "._593:\n"
+ " .word DebugMenu_8079020+1\n"
+ "._591:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._595 @cond_branch\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " beq ._601 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " b ._597\n"
+ "._595:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._598 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._601 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._597:\n"
+ " strh r0, [r4]\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " b ._601\n"
+ "._598:\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r0, ._602\n"
+ " add r2, r2, r0\n"
+ " ldrb r0, [r2, #0x5]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r4, r0\n"
+ " ldrh r1, [r2]\n"
+ " ldrh r2, [r2, #0x2]\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._601 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ "._601:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._603:\n"
+ " .align 2, 0\n"
+ "._602:\n"
+ " .word gDebug0x839C574+0x80\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_PTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._604\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._605:\n"
+ " .align 2, 0\n"
+ "._604:\n"
+ " .word DebugMenu_8078F1C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079058()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._610\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._606 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._607 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._608 @cond_branch\n"
+ " b ._620\n"
+ "._611:\n"
+ " .align 2, 0\n"
+ "._610:\n"
+ " .word gTasks\n"
+ "._607:\n"
+ " cmp r1, #0x2\n"
+ " beq ._612 @cond_branch\n"
+ " b ._620\n"
+ "._608:\n"
+ " ldr r0, ._615\n"
+ " str r1, [r0]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._614\n"
+ "._616:\n"
+ " .align 2, 0\n"
+ "._615:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._606:\n"
+ " ldr r0, ._618\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1\n"
+ " bl DisplayYesNoMenu\n"
+ "._614:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._620\n"
+ "._619:\n"
+ " .align 2, 0\n"
+ "._618:\n"
+ " .word gDebug0x839C60C\n"
+ "._612:\n"
+ " bl Menu_ProcessInputNoWrap_\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._620 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bne ._621 @cond_branch\n"
+ " ldr r1, ._623\n"
+ " mov r0, #0x1\n"
+ " b ._622\n"
+ "._624:\n"
+ " .align 2, 0\n"
+ "._623:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._621:\n"
+ " ldr r1, ._625\n"
+ " mov r0, #0x0\n"
+ "._622:\n"
+ " str r0, [r1]\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._620:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._626:\n"
+ " .align 2, 0\n"
+ "._625:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenMurakawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._627\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._628:\n"
+ " .align 2, 0\n"
+ "._627:\n"
+ " .word DebugMenu_8079058+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079110()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._633\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._629 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._630 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._631 @cond_branch\n"
+ " b ._642\n"
+ "._634:\n"
+ " .align 2, 0\n"
+ "._633:\n"
+ " .word gTasks\n"
+ "._630:\n"
+ " cmp r0, #0x2\n"
+ " beq ._635 @cond_branch\n"
+ " b ._642\n"
+ "._631:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._637\n"
+ "._629:\n"
+ " ldr r0, ._639\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ "._637:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._642\n"
+ "._640:\n"
+ " .align 2, 0\n"
+ "._639:\n"
+ " .word gDebug0x839C60C+0xe\n"
+ "._635:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " ldr r0, ._643\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._642:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._644:\n"
+ " .align 2, 0\n"
+ "._643:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_OpenKiwa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._645\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._646:\n"
+ " .align 2, 0\n"
+ "._645:\n"
+ " .word DebugMenu_8079110+1\n"
+ "\n"
+ );
+}
+
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
new file mode 100644
index 000000000..954974e50
--- /dev/null
+++ b/src/debug/taya_debug_window.c
@@ -0,0 +1,2122 @@
+#if 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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1e\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\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 EasyChat_GetWordText\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 EasyChat_GetWordText\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 Menu_PrintText\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 gMenuCallback\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 Menu_EraseScreen\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 Menu_EraseScreen\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 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 ._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 FadeScreen\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 gMenuCallback\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 Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._32\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_809089C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8090984()
+{
+ asm(
+ " push {r4, r5, r6, r7, 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 ._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 Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._48\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_8090984+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TayaDebugMenu_LanettesPC()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\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 Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\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 gSpecialVar_Result\n"
+ " .word gMenuCallback\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 SetTrainerFlag\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 SetTrainerFlag\n"
+ " mov r0, #0x85\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 8\n"
+ " bl SetTrainerFlag\n"
+ " mov r0, #0x86\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 12\n"
+ " bl SetTrainerFlag\n"
+ " mov r0, #0x87\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 16\n"
+ " bl SetTrainerFlag\n"
+ " mov r0, #0x88\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 20\n"
+ " bl SetTrainerFlag\n"
+ " mov r0, #0x83\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 24\n"
+ " bl SetTrainerFlag\n"
+ " mov r0, #0x84\n"
+ " lsl r0, r0, #0x1\n"
+ " bl SetTrainerFlag\n"
+ " ldr r0, ._86 + 28\n"
+ " bl SetTrainerFlag\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 Menu_DisplayDialogueFrame\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 Menu_PrintText\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 Menu_ProcessInput\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_PrintItems\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._109 + 4\n"
+ " ldr r3, [r0]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 FadeScreen\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 gMenuCallback\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 Text_LoadWindowTemplate\n"
+ " add r0, r4, #0\n"
+ " bl InitMenuWindow\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._172 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x15\n"
+ " bl Menu_DrawStdWindowFrame\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 gWindowTemplate_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 Menu_PrintText\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..0549cb5c0
--- /dev/null
+++ b/src/debug/tomomichi_debug_menu.c
@@ -0,0 +1,8643 @@
+#if 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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._1\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._11\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._11 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._13\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._13 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x14\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._15\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._15 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintItems\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._17\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._17 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808BDA4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlEvents()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._19\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808BE2C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlFlags()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._21\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808BEB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void TomomichiDebugMenu_ControlWorks()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._23\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808BF3C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BC48()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl Menu_GetCursorPos\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 gMenuCallback\n"
+ " .word gUnknown_Debug_083C0D2C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BCBC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl Menu_GetCursorPos\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 gMenuCallback\n"
+ " .word gUnknown_Debug_083C0D83\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808BD30()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " bl Menu_GetCursorPos\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 gMenuCallback\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_MoveCursor\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._99\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C064+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C014()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._101\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C0A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C064()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 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"
+ " 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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._157\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C36C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C36C()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._165\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C408()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._167\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C460()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._169\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C4B8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._171\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C510()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._173\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C568()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._175\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C5C0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._177\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C618()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._179\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C670()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._181\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C6C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C6C8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._197\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808C818+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C818()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._205\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C8B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._207\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C90C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._209\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C964()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._211\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808C9BC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._213\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CA14()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._215\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CA6C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._217\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CAC4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._219\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CB1C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._221\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CB74+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CB74()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._237\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CCC4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CCC4()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._245\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CD60()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._247\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, #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 gMenuCallback\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CDB8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._249\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CE10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CE10()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._265\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808CF60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CF60()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._273\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808CFFC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._275\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D054()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._277\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D0AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._279\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, #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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D104()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._281\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D15C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._283\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D1B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._285\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D20C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._287\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D264()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._289\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D2BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D2BC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._305\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D40C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D40C()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._313\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D500+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D4A8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._315\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D500+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D500()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._331\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D650+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D650()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._339\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D744+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D6EC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._341\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D744+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D744()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._357\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D894+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D894()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_ProcessInput\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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._365\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808D930+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808D930()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 FlagClear\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._381\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DA80+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DA80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 gSpecialVar_Result\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 gSpecialVar_Result\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DB0C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._395\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DB5C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DB5C()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._403\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DBF8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._405\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DC50()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._407\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DCA8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._409\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DD00()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._411\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DD58()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._413\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DDB0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._415\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DE08()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._417\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DE60()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._419\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808DEB8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808DEB8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._437\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E010+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E010()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._445\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E0AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._447\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E104()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._449\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E15C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._451\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E1B4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._453\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E20C()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._455\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E264+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E264()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._473\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E3BC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E3BC()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._481\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E458()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._483\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E4B0()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._485\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E508()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._487\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E560()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xb\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._489\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E5B8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E5B8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._507\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E710+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E710()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._515\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E804+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E7AC()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._517\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E804+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E804()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._535\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808E95C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E95C()
+{
+ asm(
+ " push {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"
+ " 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 gMenuCallback\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._543\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808EA50+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808E9F8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._545\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808EA50+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EA50()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xc\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._563\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._563 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808EC10+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EBB4()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xd\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._565\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, ._565 + 4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintItems\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 gMenuCallback\n"
+ " .word debug_sub_808EC5C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_808EC10()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\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 gMenuCallback\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c
new file mode 100644
index 000000000..fe2e6317e
--- /dev/null
+++ b/src/debug/unk_debug_menu_3.c
@@ -0,0 +1,804 @@
+#include "global.h"
+#include "menu.h"
+
+#if DEBUG
+
+__attribute__((naked))
+int debug_sub_813C404()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._1\n"
+ " ldr r4, ._1 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word gOtherText_DataCannotUseVersion+0x30d\n"
+ " .word gOtherText_DataCannotUseVersion+0x3c\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C430()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._3\n"
+ " ldr r4, ._3 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gOtherText_DataCannotUseVersion+0x95d\n"
+ " .word gOtherText_DataCannotUseVersion+0x93b\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C45C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._5\n"
+ " ldr r4, ._5 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._6:\n"
+ " .align 2, 0\n"
+ "._5:\n"
+ " .word gOtherText_DataCannotUseVersion+0x99e\n"
+ " .word gOtherText_DataCannotUseVersion+0x97d\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C488()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._7\n"
+ " ldr r4, ._7 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._8:\n"
+ " .align 2, 0\n"
+ "._7:\n"
+ " .word gOtherText_DataCannotUseVersion+0x97d\n"
+ " .word gOtherText_DataCannotUseVersion+0x95d\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C4B4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._9\n"
+ " ldr r1, ._9 + 4\n"
+ " sub r4, r4, r1\n"
+ " add r2, r4, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r4, #0\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word gOtherText_DataCannotUseVersion+0xb74\n"
+ " .word gOtherText_DataCannotUseVersion+0xb61\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C4D4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._11\n"
+ " ldr r4, ._11 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_81261B4\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word gOtherText_DataCannotUseVersion+0xc6d\n"
+ " .word gOtherText_DataCannotUseVersion+0xb74\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C500()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._13\n"
+ " ldr r4, ._13 + 4\n"
+ " sub r5, r5, r4\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word gOtherText_DataCannotUseVersion+0xcf2\n"
+ " .word gOtherText_DataCannotUseVersion+0xc6d\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_813C52C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6}\n"
+ " mov r8, r0\n"
+ " lsl r5, r1, #0x10\n"
+ " lsr r0, r5, #0x10\n"
+ " mov r9, r0\n"
+ " ldr r6, ._15\n"
+ " ldr r4, ._15 + 4\n"
+ " sub r6, r6, r4\n"
+ " mov r0, r8\n"
+ " add r1, r4, #0\n"
+ " add r2, r6, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " ldr r0, ._15 + 8\n"
+ " sub r0, r0, r4\n"
+ " add r0, r0, r8\n"
+ " add r0, r0, #0x3\n"
+ " mov r1, r9\n"
+ " strb r1, [r0]\n"
+ " lsr r5, r5, #0x18\n"
+ " strb r5, [r0, #0x1]\n"
+ " mov r0, r8\n"
+ " add r1, r4, #0\n"
+ " bl unref_sub_812620C\n"
+ " add r0, r6, #0\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._16:\n"
+ " .align 2, 0\n"
+ "._15:\n"
+ " .word gOtherText_DataCannotUseVersion+0xd16\n"
+ " .word gOtherText_DataCannotUseVersion+0xcf2\n"
+ " .word gOtherText_DataCannotUseVersion+0xd10\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C580()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0xd\n"
+ " bl debug_sub_813C52C\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C58C()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x4\n"
+ " bl debug_sub_813C52C\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C598()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x85\n"
+ " bl debug_sub_813C52C\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C5A4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._17\n"
+ " bl debug_sub_813C52C\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._18:\n"
+ " .align 2, 0\n"
+ "._17:\n"
+ " .word 0x121\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C5B4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add r4, r0, #0\n"
+ " ldr r7, ._23\n"
+ " ldr r0, ._23 + 4\n"
+ " ldr r1, ._23 + 8\n"
+ " sub r0, r0, r1\n"
+ " add r6, r0, r4\n"
+ " ldr r0, ._23 + 12\n"
+ " sub r5, r0, r1\n"
+ " ldr r0, ._23 + 16\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._23 + 20\n"
+ " mov r1, #0x0\n"
+ "._19:\n"
+ " add r0, r4, r2\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r3\n"
+ " ble ._19 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " cmp r2, r5\n"
+ " bcs ._20 @cond_branch\n"
+ " ldr r3, ._23 + 8\n"
+ "._21:\n"
+ " add r0, r4, r2\n"
+ " add r1, r2, r3\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r5\n"
+ " bcc ._21 @cond_branch\n"
+ "._20:\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._23 + 24\n"
+ "._22:\n"
+ " add r0, r6, r2\n"
+ " add r1, r7, r2\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r3\n"
+ " bls ._22 @cond_branch\n"
+ " bl ClearEnigmaBerries\n"
+ " ldr r1, ._23 + 8\n"
+ " add r0, r4, #0\n"
+ " bl unref_sub_81261B4\n"
+ " add r0, r5, #0\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._24:\n"
+ " .align 2, 0\n"
+ "._23:\n"
+ " .word gSaveBlock1+0x3160\n"
+ " .word gOtherText_DataCannotUseVersion+0x331\n"
+ " .word gOtherText_DataCannotUseVersion+0x30d\n"
+ " .word gOtherText_DataCannotUseVersion+0x861\n"
+ " .word sUnusedFlashSectors+0x8\n"
+ " .word 0xfff\n"
+ " .word 0x52f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_813C638()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xffffffec\n"
+ " mov r8, r0\n"
+ " add r4, r1, #0\n"
+ " add r5, r2, #0\n"
+ " add r6, r3, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " lsl r6, r6, #0x10\n"
+ " lsr r6, r6, #0x10\n"
+ " bl ZeroMonData\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x1\n"
+ " str r0, [sp, #0x8]\n"
+ " ldr r0, ._25\n"
+ " str r0, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " mov r3, #0x20\n"
+ " bl CreateMon\n"
+ " ldr r2, ._25 + 4\n"
+ " mov r0, r8\n"
+ " mov r1, #0x7\n"
+ " bl SetMonData\n"
+ " ldr r2, ._25 + 8\n"
+ " mov r0, r8\n"
+ " mov r1, #0x2\n"
+ " bl SetMonData\n"
+ " str r6, [sp, #0x10]\n"
+ " mov r0, r8\n"
+ " mov r1, #0xc\n"
+ " add r2, sp, #0x10\n"
+ " bl SetMonData\n"
+ " add sp, sp, #0x14\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word 0x270f\n"
+ " .word sUnusedFlashSectors+0xc\n"
+ " .word sUnusedFlashSectors+0x14\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_813C6AC()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r6, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r0, r5, #0\n"
+ " bl ClearMailStruct\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xc\n"
+ " bl GetMonData\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " mov r8, r0\n"
+ " bl ItemIsMail\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._27 @cond_branch\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0x12\n"
+ " add r7, r5, #0\n"
+ " add r7, r7, #0x1a\n"
+ " mov r1, #0x9\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x10\n"
+ "._28:\n"
+ " strh r1, [r0]\n"
+ " sub r1, r1, #0x1\n"
+ " sub r0, r0, #0x2\n"
+ " cmp r0, r5\n"
+ " bge ._28 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x7\n"
+ " mov r2, sp\n"
+ " bl GetMonData\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " mov r2, #0x8\n"
+ " bl StringCopyN\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x1\n"
+ " bl GetMonData\n"
+ " add r1, r7, #0\n"
+ " bl write_word_to_mem\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0xb\n"
+ " bl GetMonData\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x0\n"
+ " bl GetMonData\n"
+ " add r1, r0, #0\n"
+ " add r0, r4, #0\n"
+ " bl SpeciesToMailSpecies\n"
+ " strh r0, [r5, #0x1e]\n"
+ " mov r0, r8\n"
+ " strh r0, [r5, #0x20]\n"
+ "._27:\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"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C740()
+{
+ 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, #0xffffffd0\n"
+ " add r6, r0, #0\n"
+ " ldr r0, ._29\n"
+ " mov r8, r0\n"
+ " ldr r1, ._29 + 4\n"
+ " ldr r5, ._29 + 8\n"
+ " sub r1, r1, r0\n"
+ " mov r9, r1\n"
+ " add r0, r6, #0\n"
+ " mov r1, r8\n"
+ " mov r2, r9\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x5\n"
+ " mov r3, #0x0\n"
+ " bl debug_sub_813C638\n"
+ " add r4, sp, #0x24\n"
+ " mov r0, #0x1\n"
+ " mov sl, r0\n"
+ " mov r1, sl\n"
+ " strb r1, [r4]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2d\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " mov r0, #0x3\n"
+ " strb r0, [r4]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x20\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r4]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x23\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, ._29 + 12\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0xb\n"
+ " bl StringCopyN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " mov r0, sl\n"
+ " strb r0, [r4]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " add r2, r4, #0\n"
+ " bl SetMonData\n"
+ " ldr r0, ._29 + 16\n"
+ " add r0, r6, r0\n"
+ " mov r1, r8\n"
+ " sub r0, r0, r1\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x64\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " ldr r0, ._29 + 20\n"
+ " add r6, r6, r0\n"
+ " mov r0, r8\n"
+ " sub r6, r6, r0\n"
+ " add r0, r6, #0\n"
+ " mov r1, sp\n"
+ " mov r2, #0x24\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " mov r0, r9\n"
+ " add sp, sp, #0x30\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gOtherText_DataCannotUseVersion+0x99e\n"
+ " .word gOtherText_DataCannotUseVersion+0xa4a\n"
+ " .word gEnemyParty\n"
+ " .word sUnusedFlashSectors+0x4\n"
+ " .word gOtherText_DataCannotUseVersion+0x9c2\n"
+ " .word gOtherText_DataCannotUseVersion+0xa26\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C810()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xffffffdc\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._31\n"
+ " ldr r0, ._31 + 4\n"
+ " ldr r4, ._31 + 8\n"
+ " sub r0, r0, r5\n"
+ " mov r8, r0\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, r8\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc9\n"
+ " mov r2, #0x15\n"
+ " mov r3, #0x82\n"
+ " bl debug_sub_813C638\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " bl debug_sub_813C6AC\n"
+ " ldr r0, ._31 + 12\n"
+ " add r0, r6, r0\n"
+ " sub r0, r0, r5\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x64\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " ldr r0, ._31 + 16\n"
+ " add r0, r6, r0\n"
+ " sub r0, r0, r5\n"
+ " mov r1, sp\n"
+ " mov r2, #0x24\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl unref_sub_812620C\n"
+ " mov r0, r8\n"
+ " add sp, sp, #0x24\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._32:\n"
+ " .align 2, 0\n"
+ "._31:\n"
+ " .word gOtherText_DataCannotUseVersion+0x99e\n"
+ " .word gOtherText_DataCannotUseVersion+0xa4a\n"
+ " .word gEnemyParty\n"
+ " .word gOtherText_DataCannotUseVersion+0x9c2\n"
+ " .word gOtherText_DataCannotUseVersion+0xa26\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C888()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " mov r6, r8\n"
+ " push {r6}\n"
+ " add sp, sp, #0xffffffdc\n"
+ " add r6, r0, #0\n"
+ " ldr r5, ._33\n"
+ " ldr r0, ._33 + 4\n"
+ " ldr r4, ._33 + 8\n"
+ " sub r0, r0, r5\n"
+ " mov r8, r0\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, r8\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc9\n"
+ " mov r2, #0x15\n"
+ " mov r3, #0x82\n"
+ " bl debug_sub_813C638\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " bl debug_sub_813C6AC\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r4, #0x1c]\n"
+ " ldr r0, ._33 + 12\n"
+ " add r0, r6, r0\n"
+ " sub r0, r0, r5\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x64\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " ldr r0, ._33 + 16\n"
+ " add r0, r6, r0\n"
+ " sub r0, r0, r5\n"
+ " mov r1, sp\n"
+ " mov r2, #0x24\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r6, #0\n"
+ " add r1, r5, #0\n"
+ " bl unref_sub_812620C\n"
+ " mov r0, r8\n"
+ " add sp, sp, #0x24\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._34:\n"
+ " .align 2, 0\n"
+ "._33:\n"
+ " .word gOtherText_DataCannotUseVersion+0x99e\n"
+ " .word gOtherText_DataCannotUseVersion+0xa4a\n"
+ " .word gEnemyParty\n"
+ " .word gOtherText_DataCannotUseVersion+0x9c2\n"
+ " .word gOtherText_DataCannotUseVersion+0xa26\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_813C904()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._35\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x32\n"
+ " mov r3, #0xb7\n"
+ " bl debug_sub_813C638\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x64\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x32\n"
+ " mov r3, #0xc4\n"
+ " bl debug_sub_813C638\n"
+ " add r4, r4, #0xc8\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x32\n"
+ " mov r3, #0x8d\n"
+ " bl debug_sub_813C638\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._36:\n"
+ " .align 2, 0\n"
+ "._35:\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+int debug_sub_813C93C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xffffff44\n"
+ " add r4, r0, #0\n"
+ " ldr r6, ._37\n"
+ " ldr r5, ._37 + 4\n"
+ " sub r5, r5, r6\n"
+ " add r1, r6, #0\n"
+ " add r2, r5, #0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " bl SavePlayerParty\n"
+ " bl debug_sub_813C904\n"
+ " ldr r1, ._37 + 8\n"
+ " ldr r2, ._37 + 12\n"
+ " mov r0, sp\n"
+ " bl debug_sub_8075DB4\n"
+ " bl LoadPlayerParty\n"
+ " ldr r0, ._37 + 16\n"
+ " add r4, r4, r0\n"
+ " sub r4, r4, r6\n"
+ " add r0, r4, #0\n"
+ " mov r1, sp\n"
+ " mov r2, #0xbc\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n"
+ " add r0, r5, #0\n"
+ " add sp, sp, #0xbc\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._38:\n"
+ " .align 2, 0\n"
+ "._37:\n"
+ " .word gOtherText_DataCannotUseVersion+0xa4a\n"
+ " .word gOtherText_DataCannotUseVersion+0xb61\n"
+ " .word sUnusedFlashSectors+0x24\n"
+ " .word 0x270f\n"
+ " .word gOtherText_DataCannotUseVersion+0xa61\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..b0fbebac1
--- /dev/null
+++ b/src/debug/watanabe_debug_menu.c
@@ -0,0 +1,9846 @@
+#if 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 ScanlineEffect_Stop\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 Text_LoadWindowTemplate\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 gWindowTemplate_81E6C3C\n"
+ " .word gWindowTemplate_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 Menu_PrintText\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 Menu_PrintText\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 Menu_BlankWindowRect\n"
+ " cmp r6, #0\n"
+ " beq ._36 @cond_branch\n"
+ " mov r0, sp\n"
+ " add r1, r7, #0\n"
+ " mov r2, r8\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x5\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r5, ._56 + 8\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r4, ._56 + 12\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._56 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._56 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._56 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._56 + 28\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._56 + 32\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._56 + 36\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._56 + 40\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._56 + 44\n"
+ " mov r1, #0x18\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, sp\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r6, #0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0xe\n"
+ " bl Menu_BlankWindowRect\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " mov r0, r9\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " mov r0, r8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_DrawStdWindowFrame\n"
+ " add r0, sp, #0x4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " cmp r4, #0\n"
+ " beq ._379 @cond_branch\n"
+ " ldr r0, ._381 + 4\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\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 Menu_PrintText\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 Menu_BlankWindowRect\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 Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x10\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._666 + 4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._666 + 8\n"
+ " mov r1, #0x1b\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._666 + 12\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xc\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_PrintText\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_PrintText\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 Menu_PrintText\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 GetMonSpritePal\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 GetMonSpritePal\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 Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x9\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0xe\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._784 + 4\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._784 + 8\n"
+ " mov r1, #0x19\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._784 + 12\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xc\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_PrintText\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\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 Menu_PrintText\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 Menu_PrintText\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 GetMonSpritePal\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 GetMonSpritePal\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 e7c504c7b..ed6929638 100644
--- a/src/engine/cable_club.c
+++ b/src/engine/cable_club.c
@@ -41,7 +41,7 @@ extern struct
u8 field1;
} gUnknown_020297D8;
-static void sub_8082F20(u8 taskId);
+/*static*/ void sub_8082F20(u8 taskId);
static void sub_8082F68(u8 taskId);
static void sub_8082FEC(u8 taskId);
static void sub_808303C(u8 taskId);
@@ -95,6 +95,382 @@ const u8 *const gTrainerCardColorNames[] =
TrainerCardColorName_Gold,
};
+#if DEBUG
+
+__attribute__((naked))
+int debug_sub_808A4D0()
+{
+ asm("\
+ push {lr}\n\
+ add r1, r0, #0\n\
+ ldr r0, ._3\n\
+ cmp r1, r0\n\
+ bne ._1 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._30\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word sub_8082F68+1\n\
+._1:\n\
+ ldr r0, ._7\n\
+ cmp r1, r0\n\
+ bne ._5 @cond_branch\n\
+ mov r0, #0x11\n\
+ b ._30\n\
+._8:\n\
+ .align 2, 0\n\
+._7:\n\
+ .word sub_8082FEC+1\n\
+._5:\n\
+ ldr r0, ._11\n\
+ cmp r1, r0\n\
+ bne ._9 @cond_branch\n\
+ mov r0, #0x12\n\
+ b ._30\n\
+._12:\n\
+ .align 2, 0\n\
+._11:\n\
+ .word sub_808303C+1\n\
+._9:\n\
+ ldr r0, ._15\n\
+ cmp r1, r0\n\
+ bne ._13 @cond_branch\n\
+ mov r0, #0x13\n\
+ b ._30\n\
+._16:\n\
+ .align 2, 0\n\
+._15:\n\
+ .word sub_8083188+1\n\
+._13:\n\
+ ldr r0, ._19\n\
+ cmp r1, r0\n\
+ bne ._17 @cond_branch\n\
+ mov r0, #0x14\n\
+ b ._30\n\
+._20:\n\
+ .align 2, 0\n\
+._19:\n\
+ .word sub_80830E4+1\n\
+._17:\n\
+ ldr r0, ._23\n\
+ cmp r1, r0\n\
+ bne ._21 @cond_branch\n\
+ mov r0, #0x21\n\
+ b ._30\n\
+._24:\n\
+ .align 2, 0\n\
+._23:\n\
+ .word sub_80831F8+1\n\
+._21:\n\
+ ldr r0, ._27\n\
+ cmp r1, r0\n\
+ bne ._25 @cond_branch\n\
+ mov r0, #0x2\n\
+ b ._30\n\
+._28:\n\
+ .align 2, 0\n\
+._27:\n\
+ .word sub_8083314+1\n\
+._25:\n\
+ ldr r0, ._31\n\
+ cmp r1, r0\n\
+ beq ._29 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._30\n\
+._32:\n\
+ .align 2, 0\n\
+._31:\n\
+ .word sub_80833C4+1\n\
+._29:\n\
+ mov r0, #0x3\n\
+._30:\n\
+ pop {r1}\n\
+ bx r1");
+}
+
+__attribute__((naked))
+void debug_sub_808A55C()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ ldr r2, ._37\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r4, r0, r2\n\
+ mov r0, #0x8\n\
+ ldsh r1, [r4, r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x4]\n\
+ cmp r0, #0\n\
+ bne ._33 @cond_branch\n\
+ mov r1, #0xa\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0x5\n\
+ bne ._34 @cond_branch\n\
+ add r0, r7, #0\n\
+ bl DestroyTask\n\
+._34:\n\
+ ldrh r0, [r4, #0xa]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0xa]\n\
+._33:\n\
+ ldr r0, ._37 + 4\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0x0\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 8\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x16\n\
+ mov r2, #0x5\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r4, #0x0\n\
+ lsl r3, r7, #0x2\n\
+ mov r8, r3\n\
+ mov r6, #0xc0\n\
+ lsl r6, r6, #0x13\n\
+ mov r5, #0xa0\n\
+ lsl r5, r5, #0x13\n\
+._35:\n\
+ ldr r0, ._37 + 12\n\
+ add r0, r4, r0\n\
+ ldrb r0, [r0]\n\
+ lsr r1, r5, #0x18\n\
+ mov r2, #0x0\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r1, ._37 + 16\n\
+ lsl r0, r4, #0x8\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsr r2, r6, #0x18\n\
+ mov r1, #0x16\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x11\n\
+ add r6, r6, r0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x12\n\
+ add r5, r5, r1\n\
+ add r4, r4, #0x1\n\
+ cmp r4, #0x3\n\
+ ble ._35 @cond_branch\n\
+ ldr r4, ._37 + 20\n\
+ ldr r0, [r4]\n\
+ mov r1, #0xf\n\
+ mov r2, #0x0\n\
+ mov r3, #0x8\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 24\n\
+ ldrb r0, [r0, #0x1]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl GetMultiplayerId\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x7\n\
+ mov r2, #0xc\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl GetBlockReceivedStatus\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x7\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 28\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xc\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 32\n\
+ ldrh r0, [r0]\n\
+ mov r1, #0xb\n\
+ mov r2, #0x8\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, [r4]\n\
+ mov r1, #0x1c\n\
+ and r0, r0, r1\n\
+ lsr r0, r0, #0x2\n\
+ mov r1, #0xb\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl IsLinkConnectionEstablished\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xb\n\
+ mov r2, #0xc\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ bl sub_8007ECC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xf\n\
+ mov r2, #0xa\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r2, ._37\n\
+ mov r3, r8\n\
+ add r0, r3, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ mov r3, #0x8\n\
+ ldsh r1, [r0, r3]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ bl debug_sub_808A4D0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xf\n\
+ mov r2, #0xc\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 36\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xd\n\
+ mov r3, #0x8\n\
+ bl PrintHex\n\
+ bl HasLinkErrorOccurred\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x2\n\
+ mov r2, #0x2\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 40\n\
+ mov r6, #0x80\n\
+ lsl r6, r6, #0x12\n\
+ add r5, r0, #0\n\
+ add r5, r5, #0x14\n\
+ mov r4, #0x3\n\
+._36:\n\
+ ldr r0, [r5]\n\
+ lsr r1, r6, #0x18\n\
+ mov r2, #0x3\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x13\n\
+ add r6, r6, r0\n\
+ add r5, r5, #0x1c\n\
+ sub r4, r4, #0x1\n\
+ cmp r4, #0\n\
+ bge ._36 @cond_branch\n\
+ ldr r0, ._37 + 44\n\
+ ldrh r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0x6\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ bl debug_sub_808B850\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x19\n\
+ mov r2, #0x3\n\
+ mov r3, #0x1\n\
+ bl PrintHex\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 gTasks\n\
+ .word gShouldAdvanceLinkState\n\
+ .word gBlockSendBuffer\n\
+ .word gLinkPlayerPending\n\
+ .word gBlockRecvBuffer\n\
+ .word gLinkStatus\n\
+ .word gLink\n\
+ .word gReceivedRemoteLinkPlayers\n\
+ .word gSpecialVar_Result\n\
+ .word gLinkCallback\n\
+ .word gLinkPlayers\n\
+ .word 0x4000128");
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+static void sub_8082CD4(u8 arg0, u8 arg1)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ lsl r1, r1, #0x18\n\
+ lsr r6, r1, #0x18\n\
+ mov r0, #0xc\n\
+ mov r1, #0x0\n\
+ mov r2, #0x1f\n\
+ mov r3, #0x2\n\
+ bl InitLinkTestBG_Unused\n\
+ ldr r4, ._40\n\
+ add r0, r4, #0\n\
+ bl FindTaskIdByFunc\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._39 @cond_branch\n\
+ add r0, r4, #0\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ add r4, r0, #0\n\
+ lsl r4, r4, #0x18\n\
+ lsr r4, r4, #0x18\n\
+ ldr r5, ._40 + 4\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r5\n\
+ strh r7, [r0, #0xa]\n\
+ strh r6, [r0, #0xc]\n\
+ ldr r0, ._40 + 8\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r5\n\
+ strh r4, [r1, #0x8]\n\
+._39:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._41:\n\
+ .align 2, 0\n\
+._40:\n\
+ .word sub_8082F20+1\n\
+ .word gTasks\n\
+ .word debug_sub_808A55C+1");
+}
+#else
static void sub_8082CD4(u8 arg0, u8 arg1)
{
if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
@@ -105,6 +481,7 @@ static void sub_8082CD4(u8 arg0, u8 arg1)
gTasks[taskId].data[2] = arg1;
}
}
+#endif
static void sub_8082D18(u32 value)
{
@@ -207,7 +584,7 @@ void unref_sub_8082EEC(u8 taskId)
}
}
-static void sub_8082F20(u8 taskId)
+/*static*/ void sub_8082F20(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -360,6 +737,10 @@ void sub_80831F8(u8 taskId)
|| sub_8082DF4(taskId) == TRUE)
return;
+#if DEBUG
+ sub_8082D60(taskId, GetLinkPlayerCount_2());
+#endif
+
gSpecialVar_Result = sub_8082D9C(local1, local2);
if (gSpecialVar_Result == 0)
return;
@@ -908,6 +1289,74 @@ void sub_8083C50(u8 taskId)
DestroyTask(taskId);
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_808B778()
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._390\n\
+ add r0, r4, #0\n\
+ bl FuncIsActiveTask\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._389 @cond_branch\n\
+ add r0, r4, #0\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+._389:\n\
+ ldr r1, ._390 + 4\n\
+ ldr r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ str r0, [r1]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._391:\n\
+ .align 2, 0\n\
+._390:\n\
+ .word debug_sub_808B7A8+1\n\
+ .word unk_3004E98");
+}
+
+__attribute__((naked))
+void debug_sub_808B7A8()
+{
+ asm("\
+ push {lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._393\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1, #0x8]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x1e\n\
+ bne ._392 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r1, #0x8]\n\
+ ldr r2, ._393 + 4\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\n\
+._392:\n\
+ pop {r0}\n\
+ bx r0\n\
+._394:\n\
+ .align 2, 0\n\
+._393:\n\
+ .word gTasks\n\
+ .word unk_3004E94");
+}
+#endif
+
static void sub_8083CA4(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
@@ -921,4 +1370,54 @@ void unref_sub_8083CC8(u8 taskId)
{
sub_800832C();
gTasks[taskId].func = sub_8083CA4;
-} \ No newline at end of file
+}
+
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_808B82C()
+{
+ asm("\
+ ldr r1, ._400\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bx lr\n\
+._401:\n\
+ .align 2, 0\n\
+._400:\n\
+ .word unk_2030220");
+}
+
+__attribute__((naked))
+void debug_sub_808B838(u8 a)
+{
+ asm("\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._402\n\
+ mov r1, #0x1\n\
+ LSL r1, r0\n\
+ ldrb r0, [r2]\n\
+ orr r1, r1, r0\n\
+ strb r1, [r2]\n\
+ bx lr\n\
+._403:\n\
+ .align 2, 0\n\
+._402:\n\
+ .word unk_2030220");
+}
+
+__attribute__((naked))
+int debug_sub_808B850()
+{
+ asm("\
+ ldr r0, ._404\n\
+ ldrb r0, [r0]\n\
+ bx lr\n\
+._405:\n\
+ .align 2, 0\n\
+._404:\n\
+ .word unk_2030220");
+}
+
+#endif \ No newline at end of file
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 ec94295d7..a716d5c2b 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"
@@ -12,6 +13,7 @@
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
+#include "string_util.h"
#include "strings2.h"
#include "task.h"
#include "text.h"
@@ -66,7 +68,7 @@ u32 sub_8007E40(void);
static void SetBlockReceivedFlag(u8);
static u16 LinkTestCalcBlockChecksum(void *, u16);
static void PrintHexDigit(u8, u8, u8);
-static void PrintHex(u32, u8, u8, u8);
+void PrintHex(u32, u8, u8, u8);
static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8);
bool8 sub_8008224(void);
@@ -543,6 +545,9 @@ static void ProcessRecvCmds(u8 unusedParam)
else
{
SetBlockReceivedFlag(i);
+#if DEBUG
+ debug_sub_808B838(i);
+#endif
}
}
break;
@@ -957,7 +962,7 @@ static void PrintHexDigit(u8 tileNum, u8 x, u8 y)
tilemap[(32 * y) + x] = (gLinkTestBGInfo.paletteNum << 12) | (tileNum + 1);
}
-static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
+void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
{
u8 buffer[16];
s32 i;
@@ -975,6 +980,143 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
}
}
+#if 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.
@@ -1255,12 +1397,31 @@ void CB2_LinkError(void)
static void CB2_PrintErrorMessage(void)
{
- u8 array[64] __attribute__((unused)); // unused
+ u8 array[32] __attribute__((unused)); // unused
+ u8 array2[32] __attribute__((unused)); // unused
switch (gMain.state)
{
case 0:
Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1);
+#ifdef DEBUG
+ StringCopy(array, sColorCodes);
+
+ ConvertIntToHexStringN(array2, sErrorLinkStatus, STR_CONV_MODE_LEADING_ZEROS, 8);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastSendQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastRecvQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ Menu_PrintText(array, 2, 15);
+#endif
break;
case 30:
case 60:
diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index 8fad563e6..656e774c5 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -338,3 +338,463 @@ static void CB2_MysteryEventMenu(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+
+#if DEBUG
+
+void debug_sub_815D1D8();
+
+__attribute__((naked))
+void debug_sub_815D04C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._125\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " bne ._121 @cond_branch\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r1, ._125 + 4\n"
+ " mov r2, #0xa\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ "._121:\n"
+ " ldr r2, ._125 + 8\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " add r6, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._122 @cond_branch\n"
+ " ldrh r1, [r4, #0xa]\n"
+ " mov r2, #0xa\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._123 @cond_branch\n"
+ " ldr r0, ._125 + 12\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._124\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word gTasks\n"
+ " .word sUnusedFlashSectors+0x9c\n"
+ " .word gMain\n"
+ " .word sUnusedFlashSectors+0x11c\n"
+ "._123:\n"
+ " sub r0, r1, #1\n"
+ "._124:\n"
+ " strh r0, [r4, #0xa]\n"
+ " ldr r0, ._130\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1, #0x8]\n"
+ "._122:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " ldr r1, ._130\n"
+ " lsl r2, r5, #0x2\n"
+ " add r0, r2, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0xa\n"
+ " ldsh r3, [r4, r0]\n"
+ " ldr r0, ._130 + 4\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r3, r0\n"
+ " bne ._128 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._129\n"
+ "._131:\n"
+ " .align 2, 0\n"
+ "._130:\n"
+ " .word gTasks\n"
+ " .word sUnusedFlashSectors+0x11c\n"
+ "._128:\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " add r0, r0, #0x1\n"
+ "._129:\n"
+ " strh r0, [r4, #0xa]\n"
+ " add r0, r2, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0, #0x8]\n"
+ "._127:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._132 @cond_branch\n"
+ " ldr r1, ._133\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xa\n"
+ " ldsh r1, [r0, r2]\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._133 + 4\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._133 + 8\n"
+ " ldr r1, [r1]\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x3cf8\n"
+ " ldr r0, ._133 + 12\n"
+ " add r1, r6, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._132:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gTasks\n"
+ " .word sUnusedFlashSectors+0x9c\n"
+ " .word +0x2004000\n"
+ " .word 0x43c\n"
+ "\n"
+ );
+}
+
+void debug_sub_815D15C(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Menu_EraseScreen();
+ REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
+ REG_BLDCNT = 0;
+
+ CreateTask(Task_DestroySelf, 0);
+ StopMapMusic();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ FillPalette(0, 0, 2);
+ SetMainCallback2(debug_sub_815D1D8);
+}
+
+__attribute__((naked))
+void debug_sub_815D1D8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r1, ._139\n"
+ " ldr r2, ._139 + 4\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0xb\n"
+ " bls ._137 @cond_branch\n"
+ " b ._196\n"
+ "._137:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._139 + 8\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ " .word ._141\n"
+ "._141:\n"
+ " .word ._142\n"
+ " .word ._143\n"
+ " .word ._144\n"
+ " .word ._145\n"
+ " .word ._146\n"
+ " .word ._196\n"
+ " .word ._148\n"
+ " .word ._149\n"
+ " .word ._150\n"
+ " .word ._151\n"
+ " .word ._152\n"
+ " .word ._153\n"
+ "._142:\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x1b\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\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 r1, ._155\n"
+ " ldr r0, ._155 + 4\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._156:\n"
+ " .align 2, 0\n"
+ "._155:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._143:\n"
+ " ldr r0, ._161\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._157 @cond_branch\n"
+ " b ._196\n"
+ "._157:\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 ._159 @cond_branch\n"
+ " ldr r1, ._161 + 4\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._159:\n"
+ " ldr r0, ._161 + 8\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " ldr r2, ._161 + 12\n"
+ " add r1, r4, r2\n"
+ " b ._189\n"
+ "._162:\n"
+ " .align 2, 0\n"
+ "._161:\n"
+ " .word gPaletteFade\n"
+ " .word gLinkTestBlockChecksums+0x8\n"
+ " .word gUnknown_0841192C+0x14\n"
+ " .word 0x43c\n"
+ "._144:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._163 @cond_branch\n"
+ " b ._196\n"
+ "._163:\n"
+ " ldr r1, ._166\n"
+ " ldr r0, ._166 + 4\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._166 + 8\n"
+ " ldr r2, ._166 + 12\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl OpenLink\n"
+ " b ._196\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ " .word gLinkType\n"
+ " .word 0x5501\n"
+ "._145:\n"
+ " ldr r0, ._171\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._168 @cond_branch\n"
+ " b ._196\n"
+ "._168:\n"
+ " ldr r1, ._171 + 4\n"
+ " add r0, r4, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._171 + 8\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " b ._196\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word 0x43c\n"
+ " .word gUnknown_0841192C+0x28\n"
+ "._146:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._173 @cond_branch\n"
+ " b ._196\n"
+ "._173:\n"
+ " ldr r0, ._176\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " ldr r1, ._176 + 4\n"
+ " ldr r2, ._176 + 8\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._177:\n"
+ " .align 2, 0\n"
+ "._176:\n"
+ " .word debug_sub_815D04C+1\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._148:\n"
+ " ldr r0, ._179\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " ldr r1, ._179 + 4\n"
+ " ldr r2, ._179 + 8\n"
+ " mov r0, #0x0\n"
+ " bl SendBlock\n"
+ " ldr r1, ._179 + 12\n"
+ " ldr r0, ._179 + 16\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._180:\n"
+ " .align 2, 0\n"
+ "._179:\n"
+ " .word gUnknown_0841192C+0x3c\n"
+ " .word +0x2004000\n"
+ " .word 0x2004\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._149:\n"
+ " bl Menu_UpdateWindowText\n"
+ " bl sub_8007ECC\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._196 @cond_branch\n"
+ " ldr r1, ._183\n"
+ " ldr r2, ._183 + 4\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._150:\n"
+ " bl sub_800832C\n"
+ " ldr r1, ._186\n"
+ " ldr r0, ._186 + 4\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._187:\n"
+ " .align 2, 0\n"
+ "._186:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._151:\n"
+ " ldr r0, ._190\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._196 @cond_branch\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1a\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r0, ._190 + 4\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._190 + 8\n"
+ " ldr r2, ._190 + 12\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._191:\n"
+ " .align 2, 0\n"
+ "._190:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word gUnknown_0841192C+0x47\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._152:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._196 @cond_branch\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, ._194\n"
+ " add r1, r4, r0\n"
+ "._189:\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._196\n"
+ "._195:\n"
+ " .align 2, 0\n"
+ "._194:\n"
+ " .word 0x43c\n"
+ "._153:\n"
+ " ldr r0, ._197\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._196 @cond_branch\n"
+ " ldr r0, ._197 + 4\n"
+ " bl SetMainCallback2\n"
+ "._196:\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " bl UpdatePaletteFade\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._198:\n"
+ " .align 2, 0\n"
+ "._197:\n"
+ " .word gPaletteFade\n"
+ " .word CB2_InitTitleScreen+1\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index ce4afe922..45cde2cc0 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -147,6 +147,13 @@ const struct SpriteTemplate gSpriteTemplate_83764E8 =
const u8 gUnknown_08376500[] = _(" : ");
+#if DEBUG
+const u8 gUnknown_Debug_0839AE94[] = _("にっすう");
+const u8 gUnknown_Debug_0839AE99[] = _("じかん");
+const u8 gUnknown_Debug_0839AE9D[] = _("ゲームない じかん");
+const u8 gUnknown_Debug_0839AEA7[] = _("RTC じかん");
+#endif
+
void SpriteCB_ResetRtcCusor0(struct Sprite *sprite)
{
int state = gTasks[sprite->data[0]].data[2];
@@ -587,3 +594,319 @@ void Task_ResetRtcScreen(u8 taskId)
}
}
}
+
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_806F8F8(void)
+{
+ asm("\
+ push {lr}\n\
+ ldr r0, ._131\n\
+ bl SetMainCallback2\n\
+ pop {r0}\n\
+ bx r0\n\
+._132:\n\
+ .align 2, 0\n\
+._131:\n\
+ .word CB2_InitResetRtcScreen+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F908(u8 a)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ lsl r0, r5, #0x2\n\
+ add r0, r0, r5\n\
+ lsl r0, r0, #0x3\n\
+ ldr r2, ._136\n\
+ add r4, r0, r2\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0\n\
+ beq ._133 @cond_branch\n\
+ cmp r0, #0x1\n\
+ beq ._134 @cond_branch\n\
+ b ._141\n\
+._137:\n\
+ .align 2, 0\n\
+._136:\n\
+ .word gTasks+0x8\n\
+._133:\n\
+ ldr r0, ._139\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ strh r0, [r4, #0x2]\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._141\n\
+._140:\n\
+ .align 2, 0\n\
+._139:\n\
+ .word Task_ResetRtc_0+1\n\
+._134:\n\
+ sub r2, r2, #0x8\n\
+ mov r0, #0x2\n\
+ ldsh r1, [r4, r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r2\n\
+ mov r1, #0x8\n\
+ ldsh r0, [r2, r1]\n\
+ cmp r0, #0\n\
+ beq ._141 @cond_branch\n\
+ mov r1, #0xa\n\
+ ldsh r0, [r2, r1]\n\
+ cmp r0, #0x1\n\
+ bne ._142 @cond_branch\n\
+ ldr r3, ._143\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r3, r1]\n\
+ mov r1, #0x2\n\
+ ldsb r1, [r3, r1]\n\
+ mov r2, #0x3\n\
+ ldsb r2, [r3, r2]\n\
+ ldrb r3, [r3, #0x4]\n\
+ lsl r3, r3, #0x18\n\
+ asr r3, r3, #0x18\n\
+ bl RtcCalcLocalTimeOffset\n\
+._142:\n\
+ ldrb r0, [r4, #0x2]\n\
+ bl DestroyTask\n\
+ bl Menu_EraseScreen\n\
+ bl ScriptContext2_Disable\n\
+ add r0, r5, #0\n\
+ bl DestroyTask\n\
+._141:\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._144:\n\
+ .align 2, 0\n\
+._143:\n\
+ .word gLocalTime");
+}
+
+__attribute__((naked))
+void debug_sub_806F99C()
+{
+ asm("\
+ push {lr}\n\
+ bl RtcCalcLocalTime\n\
+ ldr r0, ._145\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ bl ScriptContext2_Enable\n\
+ pop {r0}\n\
+ bx r0\n\
+._146:\n\
+ .align 2, 0\n\
+._145:\n\
+ .word debug_sub_806F908+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F9B8()
+{
+ asm("\
+ push {lr}\n\
+ ldr r2, ._147\n\
+ ldr r0, ._147 + 4\n\
+ add r0, r0, #0xa0\n\
+ ldr r1, [r0, #0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, #0x4]\n\
+ ldr r0, ._147 + 8\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ bl ScriptContext2_Enable\n\
+ pop {r0}\n\
+ bx r0\n\
+._148:\n\
+ .align 2, 0\n\
+._147:\n\
+ .word gLocalTime\n\
+ .word gSaveBlock2\n\
+ .word debug_sub_806F908+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F9E4()
+{
+ 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 r7, r0, #0x18\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ ldr r1, ._153\n\
+ add r5, r0, r1\n\
+ ldr r6, ._153 + 4\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r5, r1]\n\
+ cmp r0, #0x1\n\
+ beq ._149 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._150 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._151 @cond_branch\n\
+ b ._165\n\
+._154:\n\
+ .align 2, 0\n\
+._153:\n\
+ .word gTasks+0x8\n\
+ .word gStringVar4\n\
+._150:\n\
+ cmp r0, #0x2\n\
+ beq ._155 @cond_branch\n\
+ b ._165\n\
+._149:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r4, r6, #0\n\
+ add r4, r4, #0x50\n\
+ bl RtcGetErrorStatus\n\
+ add r1, r0, #0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r1, r1, #0x10\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToHexStringN\n\
+ add r0, r4, #0\n\
+ mov r1, #0x2\n\
+ mov r2, #0xa\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158\n\
+ mov r1, #0xc\n\
+ mov r2, #0xc\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 4\n\
+ mov r1, #0x14\n\
+ mov r2, #0xc\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 8\n\
+ mov r1, #0x1\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 12\n\
+ mov r1, #0x1\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+._151:\n\
+ ldrh r0, [r5]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r5]\n\
+ b ._165\n\
+._159:\n\
+ .align 2, 0\n\
+._158:\n\
+ .word gUnknown_08376500+0x4\n\
+ .word gUnknown_08376500+0x9\n\
+ .word gUnknown_08376500+0x17\n\
+ .word gUnknown_08376500+0xd\n\
+._155:\n\
+ bl RtcCalcLocalTime\n\
+ add r0, r6, #0\n\
+ bl FormatHexRtcTime\n\
+ mov r2, #0x14\n\
+ add r2, r2, r6\n\
+ mov r9, r2\n\
+ mov r0, r9\n\
+ bl debug_sub_8009894\n\
+ mov r0, #0x28\n\
+ add r0, r0, r6\n\
+ mov sl, r0\n\
+ ldr r4, ._163\n\
+ mov r1, #0x2\n\
+ ldsb r1, [r4, r1]\n\
+ mov r2, #0x3\n\
+ ldsb r2, [r4, r2]\n\
+ mov r3, #0x4\n\
+ ldsb r3, [r4, r3]\n\
+ bl FormatDecimalTime\n\
+ mov r1, #0x3c\n\
+ add r1, r1, r6\n\
+ mov r8, r1\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r4, r2]\n\
+ mov r0, r8\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._163 + 4\n\
+ ldrb r0, [r0, #0x12]\n\
+ cmp r0, #0\n\
+ bne ._160 @cond_branch\n\
+ add r0, r6, #0\n\
+ mov r1, #0x14\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ mov r0, r9\n\
+ mov r1, #0xc\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ mov r0, sl\n\
+ mov r1, #0x14\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+ mov r0, r8\n\
+ mov r1, #0xc\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+._160:\n\
+ ldrh r1, [r5, #0x2]\n\
+ mov r2, #0x2\n\
+ ldsh r0, [r5, r2]\n\
+ cmp r0, #0x13\n\
+ ble ._161 @cond_branch\n\
+ add r0, r1, #1\n\
+ strh r0, [r5, #0x2]\n\
+ b ._165\n\
+._164:\n\
+ .align 2, 0\n\
+._163:\n\
+ .word gLocalTime\n\
+ .word gSaveBlock2\n\
+._161:\n\
+ ldr r0, ._166\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._165 @cond_branch\n\
+ bl Menu_EraseScreen\n\
+ add r0, r7, #0\n\
+ bl DestroyTask\n\
+ bl ScriptContext2_Disable\n\
+._165:\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 gMain");
+}
+
+#endif \ No newline at end of file
diff --git a/src/engine/rtc.c b/src/engine/rtc.c
index d73f943d2..5462298ed 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;
}
+#if 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;
}
+
+#if DEBUG
+void debug_sub_8009A60()
+{
+ RtcGetRawInfo(&sRtc);
+}
+#endif
diff --git a/src/engine/save.c b/src/engine/save.c
index 250b29a87..8217652f9 100644
--- a/src/engine/save.c
+++ b/src/engine/save.c
@@ -663,6 +663,83 @@ static u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
+#if 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 sSaveBlockChunks\n"
+ " .word 0xff4\n"
+ " .word 0xff6\n"
+ " .word sHallOfFameChunks\n"
+ "\n"
+ );
+}
+#endif
+
u8 Save_WriteDataInternal(u8 saveType)
{
u8 i;
@@ -706,13 +783,21 @@ u8 Save_WriteDataInternal(u8 saveType)
return 0;
}
+#ifdef DEBUG
+extern u32 gUnknown_Debug_03004BD0;
+#endif
+
u8 Save_WriteData(u8 saveType) // TrySave
{
if (gFlashMemoryPresent != TRUE)
return SAVE_STATUS_ERROR;
Save_WriteDataInternal(saveType);
- if (!gDamagedSaveSectors)
+ if (!gDamagedSaveSectors
+#ifdef DEBUG
+ && gUnknown_Debug_03004BD0 == 0
+#endif
+ )
return SAVE_STATUS_OK;
DoSaveFailedScreen(saveType);
@@ -815,7 +900,7 @@ u8 Save_LoadGameData(u8 saveType)
return result;
}
-static const u8 sUnusedFlashSectors[] = { 30, 31 };
+const u8 sUnusedFlashSectors[] = { 30, 31 };
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
{
diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c
index 74a1e9612..421cd0779 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/engine/save_failed_screen.c
@@ -61,16 +61,18 @@ static const u8 sClockFrames[8][3] =
static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+#define static
+
static void VBlankCB(void);
static void CB2_SaveFailedScreen(void);
static void CB2_WipeSave(void);
-static void CB2_GameplayCannotBeContinued(void);
+/*static*/ void CB2_GameplayCannotBeContinued(void);
static void CB2_FadeAndReturnToTitleScreen(void);
static void CB2_ReturnToTitleScreen(void);
static void VBlankCB_UpdateClockGraphics(void);
static bool8 VerifySectorWipe(u16 sector);
static bool8 WipeSector(u16 sector);
-static bool8 WipeSectors(u32 sectorBits);
+/*static*/ bool8 WipeSectors(u32 sectorBits);
void DoSaveFailedScreen(u8 saveType)
{
@@ -148,6 +150,151 @@ static void CB2_SaveFailedScreen(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void CB2_WipeSave()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._20\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r0, ._20 + 4\n"
+ " ldr r0, [r0]\n"
+ " ldr r1, ._20 + 8\n"
+ " cmp r0, #0\n"
+ " beq ._12 @cond_branch\n"
+ " str r2, [r1]\n"
+ "._12:\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " add r5, r1, #0\n"
+ "._17:\n"
+ " ldr r0, [r5]\n"
+ " bl WipeSectors\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._14 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 16\n"
+ " ldrb r0, [r0]\n"
+ " bl Save_WriteDataInternal\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._15 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._15:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " cmp r4, #0x2\n"
+ " bls ._17 @cond_branch\n"
+ "._16:\n"
+ " cmp r4, #0x3\n"
+ " bne ._18 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 24\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 28\n"
+ " bl SetMainCallback2\n"
+ " b ._23\n"
+ "._21:\n"
+ " .align 2, 0\n"
+ "._20:\n"
+ " .word gSaveFailedClockInfo\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ " .word gDamagedSaveSectors\n"
+ " .word gSystemText_CheckCompleteSaveAttempt\n"
+ " .word gSaveFailedType\n"
+ " .word gSystemText_SaveFailedBackupCheck\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "._18:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._24\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._22 @cond_branch\n"
+ " ldr r0, ._24 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gGameContinueCallback\n"
+ " .word gSystemText_SaveCompletedGameEnd\n"
+ "._14:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._27\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._27 + 4\n"
+ " bl SetMainCallback2\n"
+ " b ._26\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_GameplayCannotBeContinued+1\n"
+ "._22:\n"
+ " ldr r0, ._29\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._23:\n"
+ " ldr r0, ._29 + 4\n"
+ " bl SetMainCallback2\n"
+ "._26:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gSystemText_SaveCompletedPressA\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "\n"
+ );
+}
+#else
static void CB2_WipeSave(void)
{
u8 wipeTries = 0;
@@ -198,8 +345,9 @@ static void CB2_WipeSave(void)
SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
}
+#endif
-static void CB2_GameplayCannotBeContinued(void)
+/*static*/ void CB2_GameplayCannotBeContinued(void)
{
gSaveFailedClockInfo[0] = FALSE;
@@ -264,6 +412,41 @@ static void VBlankCB_UpdateClockGraphics(void)
gSaveFailedClockInfo[1]--;
}
+#if DEBUG
+__attribute__((naked))
+bool8 VerifySectorWipe(u16 sector)
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldr r2, ._50\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x5\n"
+ " mov r1, #0x0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x2d64\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._50 + 4\n"
+ "._49:\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, r1\n"
+ " bls ._49 @cond_branch\n"
+ " ldr r0, ._50 + 8\n"
+ " ldrb r0, [r0]\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._51:\n"
+ " .align 2, 0\n"
+ "._50:\n"
+ " .word +0x2000000\n"
+ " .word 0x3ff\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+#else
static bool8 VerifySectorWipe(u16 sector)
{
u32 *ptr = (u32 *)&gSharedMem;
@@ -277,6 +460,7 @@ static bool8 VerifySectorWipe(u16 sector)
return FALSE;
}
+#endif
static bool8 WipeSector(u16 sector)
{
@@ -294,7 +478,7 @@ static bool8 WipeSector(u16 sector)
return failed;
}
-static bool8 WipeSectors(u32 sectorBits)
+/*static*/ bool8 WipeSectors(u32 sectorBits)
{
u16 i;
diff --git a/src/engine/sprite.c b/src/engine/sprite.c
index cf35e12a3..df8c66750 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
@@ -813,7 +815,7 @@ void ProcessSpriteCopyRequests(void)
}
}
-static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
+/*static*/ void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
@@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr
gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
gSpriteCopyRequestCount++;
}
+#if DEBUG
+ else
+ {
+ Crash(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++;
}
+#if DEBUG
+ else
+ {
+ Crash(sDmaOverErrorMsg);
+ }
+#endif
}
// these two functions are unused.
diff --git a/src/engine/task.c b/src/engine/task.c
index 7bd2b5937..3e8a5588c 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)
}
}
+#if DEBUG
+ Crash(gError_NoTasksLeft);
+#endif
+
return 0;
}
diff --git a/src/engine/trade.c b/src/engine/trade.c
index 4dc27ea6f..c878f62db 100644
--- a/src/engine/trade.c
+++ b/src/engine/trade.c
@@ -4495,8 +4495,8 @@ static __attribute__((naked)) void sub_804B41C(void)
}
#endif
-static void sub_804B790(void)
// In-game trade init
+void sub_804B790(void)
{
u8 otName[11];
switch (gMain.state)
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index b49628bfa..998c4697e 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;
+#if 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);
+#if DEBUG
+static u8 gDebug_03000748;
+#endif
+
void TrainerCard_ShowPlayerCard(Callback arg1)
{
+#if 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)
{
+#if DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
+#if 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)
@@ -538,6 +603,19 @@ static void TrainerCard_FillFlags(void)
}
}
}
+
+#if 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()
@@ -630,6 +708,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
}
return TRUE;
}
+#if 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;
}
@@ -1334,7 +1423,11 @@ static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (!ewram0_2.showPokedexCount)
+ if (
+#if DEBUG
+ gDebug_03000748 == 0 &&
+#endif
+ !ewram0_2.showPokedexCount)
{
TrainerCard_ClearPokedexLabel();
}
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index ab2a818a7..41d5ae9d1 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -259,7 +259,7 @@ static void SaveCurrentWinStreak(void);
static void sub_8135CFC(void);
static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *);
static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
-static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
+void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *);
static void ClearBattleTowerRecord(struct BattleTowerRecord *);
diff --git a/src/field/berry.c b/src/field/berry.c
index 088267ad0..d6982479e 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 (GetFieldObjectScriptPointerPlayerFacing() != &S_BerryTree)
+ 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 GetFieldObjectScriptPointerPlayerFacing\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 S_BerryTree\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/berry_tag_screen.c b/src/field/berry_tag_screen.c
index bb937ea43..ed0ab86ae 100644
--- a/src/field/berry_tag_screen.c
+++ b/src/field/berry_tag_screen.c
@@ -42,7 +42,7 @@ extern u8 gBerryCheck_Pal[];
extern u8 gUnknown_08E788E4[];
extern u8 gUnknown_08E78A84[];
-static const u8 *const gUnknown_0841192C[] =
+const u8 *const gUnknown_0841192C[] =
{
ContestStatsText_VerySoft,
ContestStatsText_Soft,
diff --git a/src/field/bike.c b/src/field/bike.c
index 8db01b4b4..98966ebd4 100644
--- a/src/field/bike.c
+++ b/src/field/bike.c
@@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
extern u8 gUnusedBikeCameraAheadPanback;
+#if 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);
@@ -134,6 +139,13 @@ void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(direction))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
sMachBikeTransitions[GetMachBikeTransition(&direction)](direction);
}
@@ -271,6 +283,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)
{
+#if 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 18d26f007..fd5808fc3 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 gMysteryEventScriptCmdTableEnd+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 Text_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..8f7f5eb92 100644
--- a/src/field/decoration_inventory.c
+++ b/src/field/decoration_inventory.c
@@ -164,3 +164,14 @@ u8 sub_81341D4(void)
}
return count;
}
+
+
+#if 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 bf96c724f..9ac5ae11d 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_effect_helpers.c b/src/field/field_effect_helpers.c
index 93fc62bd5..c9d337de1 100644
--- a/src/field/field_effect_helpers.c
+++ b/src/field/field_effect_helpers.c
@@ -29,8 +29,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
static void sub_8128174(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
-const u8 UnusedEggString_8401E28[] = _("タマゴ");
-
void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
{
struct Sprite *newSprite;
diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c
index ad1cd4a59..16ba50e4b 100644
--- a/src/field/field_fadetransition.c
+++ b/src/field/field_fadetransition.c
@@ -511,6 +511,22 @@ void sub_80810DC(void)
CreateTask(sub_8081050, 10);
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_80888D8()
+{
+ asm("\
+ PUSH {LR}\n\
+ BL debug_sub_8052E04\n\
+ BL sub_8080E88\n\
+ BL ScriptContext2_Enable\n\
+ POP {R0}\n\
+ BX R0");
+}
+
+#endif
+
void task0A_fade_n_map_maybe(u8 taskId)
{
struct Task *task = &gTasks[taskId];
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c
index 77b4c8b5c..c255d3013 100644
--- a/src/field/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -1907,6 +1907,9 @@ static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
struct MapObject gMapObjects[16];
+#if DEBUG
+u8 gUnknown_Debug_03004BC0[4]; // unknown type
+#endif
void npc_clear_ids_and_state(struct MapObject *mapObj)
{
@@ -1917,6 +1920,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 +1961,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 +2055,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 +2435,7 @@ _0805ADD8: .4byte gUnknown_0836DBBC\n\
.syntax divided\n");
}
#endif
+#endif
u8 sub_805ADDC(u8 localId)
{
@@ -2266,11 +2475,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 +2539,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 +2808,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 +3031,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 +3103,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 ba45e506d..85cfdb829 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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)
{
@@ -1763,3 +1855,98 @@ static void sub_805A954(void)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y);
}
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_805F2B0()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " ldr r0, ._422\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._420 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._421\n"
+ "._423:\n"
+ " .align 2, 0\n"
+ "._422:\n"
+ " .word gMain\n"
+ "._420:\n"
+ " add r0, r2, #0\n"
+ " bl debug_sub_805F2DC\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._421:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_805F2DC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._424 @cond_branch\n"
+ " ldr r2, ._426\n"
+ " ldr r0, ._426 + 4\n"
+ " ldrb r1, [r0, #0x5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0, #0x18]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl PlayerFaceDirection\n"
+ " b ._430\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gMapObjects\n"
+ " .word gPlayerAvatar\n"
+ "._424:\n"
+ " ldr r2, ._431\n"
+ " ldr r0, ._431 + 4\n"
+ " ldrb r1, [r0, #0x5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0, #0x1]\n"
+ " lsr r0, r0, #0x7\n"
+ " cmp r0, #0\n"
+ " beq ._429 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl CanCameraMoveInDirection\n"
+ " cmp r0, #0\n"
+ " bne ._429 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl PlayerOnBikeCollide\n"
+ " b ._430\n"
+ "._432:\n"
+ " .align 2, 0\n"
+ "._431:\n"
+ " .word gMapObjects\n"
+ " .word gPlayerAvatar\n"
+ "._429:\n"
+ " add r0, r4, #0\n"
+ " bl PlayerGoSpeed4\n"
+ "._430:\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+#endif
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index 7beb1b440..cf96b2e87 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -210,6 +210,45 @@ static const u8 sBasePaletteGammaTypes[32] =
GAMMA_NORMAL,
};
+#if DEBUG
+
+const u8 gDebugText_Weather_0[] = _("なし   ");
+const u8 gDebugText_Weather_1[] = _("はれ   ");
+const u8 gDebugText_Weather_2[] = _("はれ2  ");
+const u8 gDebugText_Weather_3[] = _("あめ   ");
+const u8 gDebugText_Weather_4[] = _("ゆき   ");
+const u8 gDebugText_Weather_5[] = _("かみなり ");
+const u8 gDebugText_Weather_6[] = _("きり   ");
+const u8 gDebugText_Weather_7[] = _("かざんばい");
+const u8 gDebugText_Weather_8[] = _("すなあらし");
+const u8 gDebugText_Weather_9[] = _("きり2  ");
+const u8 gDebugText_Weather_10[] = _("かいてい ");
+const u8 gDebugText_Weather_11[] = _("くもり  ");
+const u8 gDebugText_Weather_12[] = _("はれ3  ");
+const u8 gDebugText_Weather_13[] = _("おおあめ");
+const u8 gDebugText_Weather_14[] = _("かいてい2");
+
+const u8 *const gDebugText_Weather[] =
+{
+ gDebugText_Weather_0,
+ gDebugText_Weather_1,
+ gDebugText_Weather_2,
+ gDebugText_Weather_3,
+ gDebugText_Weather_4,
+ gDebugText_Weather_5,
+ gDebugText_Weather_6,
+ gDebugText_Weather_7,
+ gDebugText_Weather_8,
+ gDebugText_Weather_9,
+ gDebugText_Weather_10,
+ gDebugText_Weather_11,
+ gDebugText_Weather_12,
+ gDebugText_Weather_13,
+ gDebugText_Weather_14,
+};
+
+#endif
+
const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal");
void StartWeather(void)
@@ -1213,3 +1252,145 @@ void ResetPreservedPalettesInWeather(void)
{
sPaletteGammaTypes = sBasePaletteGammaTypes;
}
+
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8085564(void)
+{
+ asm("\
+ push {lr}\n\
+ mov r2, #0x0\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 ._370 @cond_branch\n\
+ ldr r1, ._375 + 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, #0xf\n\
+ bne ._371 @cond_branch\n\
+ strb r2, [r1]\n\
+._371:\n\
+ mov r2, #0x1\n\
+._370:\n\
+ ldr r0, ._375\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._372 @cond_branch\n\
+ ldr r1, ._375 + 4\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0\n\
+ beq ._373 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ b ._374\n\
+._376:\n\
+ .align 2, 0\n\
+._375:\n\
+ .word gMain\n\
+ .word gUnknown_0202FF58+0x2\n\
+._373:\n\
+ mov r0, #0xe\n\
+._374:\n\
+ strb r0, [r1]\n\
+ mov r2, #0x1\n\
+._372:\n\
+ cmp r2, #0\n\
+ beq ._377 @cond_branch\n\
+ mov r0, #0x16\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1c\n\
+ mov r3, #0x2\n\
+ bl Menu_BlankWindowRect\n\
+ ldr r1, ._380\n\
+ ldr r0, ._380 + 4\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x17\n\
+ mov r2, #0x1\n\
+ bl Menu_PrintText\n\
+._377:\n\
+ ldr r0, ._380 + 8\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._378 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._379\n\
+._381:\n\
+ .align 2, 0\n\
+._380:\n\
+ .word gDebugText_Weather\n\
+ .word gUnknown_0202FF58+0x2\n\
+ .word gMain\n\
+._378:\n\
+ ldr r0, ._382\n\
+ ldrb r0, [r0]\n\
+ bl ChangeWeather\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+._379:\n\
+ pop {r1}\n\
+ bx r1\n\
+._383:\n\
+ .align 2, 0\n\
+._382:\n\
+ .word gUnknown_0202FF58+0x2");
+}
+
+__attribute__((naked))
+u8 debug_sub_808560C(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._384\n\
+ ldr r0, ._384 + 4\n\
+ mov r1, #0xda\n\
+ lsl r1, r1, #0x3\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r4]\n\
+ bl Menu_EraseScreen\n\
+ mov r0, #0x16\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1c\n\
+ mov r3, #0x2\n\
+ bl Menu_BlankWindowRect\n\
+ ldr r1, ._384 + 8\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x17\n\
+ mov r2, #0x1\n\
+ bl Menu_PrintText\n\
+ ldr r1, ._384 + 12\n\
+ ldr r0, ._384 + 16\n\
+ str r0, [r1]\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._385:\n\
+ .align 2, 0\n\
+._384:\n\
+ .word gUnknown_0202FF58+0x2\n\
+ .word gWeather\n\
+ .word gDebugText_Weather\n\
+ .word gMenuCallback\n\
+ .word debug_sub_8085564+1");
+}
+
+#endif
diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c
index 513107729..522fb01d6 100644
--- a/src/field/fldeff_cut.c
+++ b/src/field/fldeff_cut.c
@@ -72,6 +72,115 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass =
.callback = sub_80A2A48,
};
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80AFEE4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r0, #0x52\n"
+ " bl npc_before_player_of_type\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._1 @cond_branch\n"
+ " ldr r1, ._3\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl sub_80A2634\n"
+ " b ._8\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gLastFieldPokeMenuOpened\n"
+ "._1:\n"
+ " ldr r4, ._9\n"
+ " add r1, r4, #2\n"
+ " add r0, r4, #0\n"
+ " bl PlayerGetDestCoords\n"
+ " mov r7, #0x0\n"
+ " mov r8, r4\n"
+ "._12:\n"
+ " ldr r1, ._9 + 4\n"
+ " add r0, r7, r1\n"
+ " mov r2, r8\n"
+ " ldrh r2, [r2, #0x2]\n"
+ " add r0, r0, r2\n"
+ " mov r6, #0x0\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r5, r0, #0x10\n"
+ "._11:\n"
+ " ldr r1, ._9 + 4\n"
+ " add r0, r6, r1\n"
+ " mov r2, r8\n"
+ " ldrh r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl MapGridGetZCoordAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r2, r8\n"
+ " mov r1, #0x4\n"
+ " ldsb r1, [r2, r1]\n"
+ " cmp r0, r1\n"
+ " bne ._7 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl MetatileBehavior_IsPokeGrass\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._6 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl MetatileBehavior_IsAshGrass\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._7 @cond_branch\n"
+ "._6:\n"
+ " ldr r1, ._9 + 8\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl sub_80A25E8\n"
+ " b ._8\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word gUnknown_0203923C\n"
+ " .word 0xffff\n"
+ " .word gLastFieldPokeMenuOpened\n"
+ "._7:\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bls ._11 @cond_branch\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x2\n"
+ " bls ._12 @cond_branch\n"
+ " bl ScriptContext2_Disable\n"
+ "._8:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
bool8 SetUpFieldMove_Cut(void)
{
s16 x, y;
diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c
index 22f170184..d8f70200c 100644
--- a/src/field/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -71,6 +71,36 @@ static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal"
static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8122080(void)
+{
+ asm("\
+ push {lr}\n\
+ ldr r0, ._4\n\
+ ldrb r0, [r0, #0x15]\n\
+ cmp r0, #0x1\n\
+ bne ._2 @cond_branch\n\
+ ldr r0, ._4 + 4\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._2 @cond_branch\n\
+ bl sub_810CBFC\n\
+ b ._3\n\
+._5:\n\
+ .align 2, 0\n\
+._4:\n\
+ .word gMapHeader\n\
+ .word 0x828\n\
+._2:\n\
+ bl ScriptContext2_Disable\n\
+._3:\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c
index bf8e98403..3f539fc6e 100644
--- a/src/field/fldeff_secretpower.c
+++ b/src/field/fldeff_secretpower.c
@@ -243,6 +243,102 @@ void sub_80C6280(void)
}
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_80D93F4()
+{
+ asm("\
+ push {r4, lr}\n\
+ bl sub_80BB63C\n\
+ ldr r0, ._98\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._95 @cond_branch\n\
+ bl player_get_direction_lower_nybble\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x2\n\
+ beq ._96 @cond_branch\n\
+._95:\n\
+ bl ScriptContext2_Disable\n\
+ b ._109\n\
+._99:\n\
+ .align 2, 0\n\
+._98:\n\
+ .word gSpecialVar_Result\n\
+._96:\n\
+ ldr r4, ._102\n\
+ add r1, r4, #2\n\
+ add r0, r4, #0\n\
+ bl GetXYCoordsOneStepInFrontOfPlayer\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ mov r2, #0x2\n\
+ ldsh r1, [r4, r2]\n\
+ bl MapGridGetMetatileBehaviorAt\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseCave\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._100 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._102 + 4\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C639C\n\
+ b ._109\n\
+._103:\n\
+ .align 2, 0\n\
+._102:\n\
+ .word gUnknown_0203923C\n\
+ .word gLastFieldPokeMenuOpened\n\
+._100:\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseTree\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._104 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._106\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C64A8\n\
+ b ._109\n\
+._107:\n\
+ .align 2, 0\n\
+._106:\n\
+ .word gLastFieldPokeMenuOpened\n\
+._104:\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseShrub\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._108 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._110\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C660C\n\
+ b ._109\n\
+._111:\n\
+ .align 2, 0\n\
+._110:\n\
+ .word gLastFieldPokeMenuOpened\n\
+._108:\n\
+ bl ScriptContext2_Disable\n\
+._109:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
bool8 SetUpFieldMove_SecretPower(void)
{
u8 behavior;
diff --git a/src/field/fldeff_strength.c b/src/field/fldeff_strength.c
index 565ac1651..9f9cd4013 100644
--- a/src/field/fldeff_strength.c
+++ b/src/field/fldeff_strength.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/map_objects.h"
#include "braille_puzzles.h"
#include "field_effect.h"
#include "party_menu.h"
@@ -20,6 +21,28 @@ extern void (*gUnknown_03005CE4)(void);
extern u8 S_UseStrength[];
+#if DEBUG
+void debug_sub_8130318(void)
+{
+ if (ShouldDoBrailleStrengthEffect())
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA38();
+ }
+ else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA18();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
diff --git a/src/field/item_menu.c b/src/field/item_menu.c
index 959eb09ae..cf3c7ca4b 100644
--- a/src/field/item_menu.c
+++ b/src/field/item_menu.c
@@ -158,6 +158,9 @@ extern struct PocketScrollState gBagPocketScrollStates[];
extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots
extern const u8 Event_NoRegisteredItem[];
+// TODO: decompile the debug code so we can use static in this file
+#define static
+
extern const struct CompressedSpriteSheet sMaleBagSpriteSheet;
extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet;
extern const struct CompressedSpritePalette sBagSpritePalette;
@@ -286,6 +289,24 @@ static void sub_80A6618(u8);
const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618};
+#if DEBUG
+const struct {u16 item; u8 unk;} gUnknown_Debug_083EBC68[12+48] =
+{
+ {ITEM_POKE_BALL, 10},
+ {ITEM_ULTRA_BALL, 15},
+ {ITEM_GREAT_BALL, 20},
+ {ITEM_MASTER_BALL, 25},
+ {ITEM_ACRO_BIKE, 1 },
+ {ITEM_OLD_ROD, 1 },
+ {ITEM_GOOD_ROD, 1 },
+ {ITEM_SUPER_ROD, 1 },
+ {ITEM_POKEBLOCK_CASE, 1 },
+ {ITEM_WAILMER_PAIL, 1 },
+ {ITEM_ITEMFINDER, 1 },
+ {ITEM_NONE, 1 },
+};
+#endif
+
void sub_80A34E8(void);
static bool8 LoadBagGraphicsMultistep(void);
static void sub_80A362C(void);
@@ -372,6 +393,390 @@ static void sub_80A3134(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800);
}
+#if DEBUG
+__attribute__((naked))
+static bool8 SetupBagMultistep(void)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._5\n\
+ ldr r1, ._5 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x10\n\
+ bls ._3 @cond_branch\n\
+ b ._66\n\
+._3:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._5 + 8\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._6:\n\
+ .align 2, 0\n\
+._5:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._7\n\
+._7:\n\
+ .word ._8\n\
+ .word ._9\n\
+ .word ._10\n\
+ .word ._11\n\
+ .word ._12\n\
+ .word ._13\n\
+ .word ._14\n\
+ .word ._15\n\
+ .word ._16\n\
+ .word ._17\n\
+ .word ._18\n\
+ .word ._19\n\
+ .word ._20\n\
+ .word ._21\n\
+ .word ._22\n\
+ .word ._23\n\
+ .word ._24\n\
+._8:\n\
+ bl ClearVideoCallbacks\n\
+ bl sub_80A34E8\n\
+ b ._61\n\
+._9:\n\
+ bl ScanlineEffect_Stop\n\
+ ldr r1, ._27\n\
+ ldr r0, ._27 + 4\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._28:\n\
+ .align 2, 0\n\
+._27:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._10:\n\
+ bl gpu_pal_allocator_reset__manage_upper_four\n\
+ b ._61\n\
+._11:\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._31\n\
+ ldr r1, ._31 + 4\n\
+ add r0, r0, r1\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ b ._61\n\
+._32:\n\
+ .align 2, 0\n\
+._31:\n\
+ .word +0x2000000\n\
+ .word 0x1ffff\n\
+._12:\n\
+ bl ResetPaletteFade\n\
+ ldr r2, ._34\n\
+ ldrb r0, [r2, #0x8]\n\
+ mov r1, #0x80\n\
+ orr r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._34 + 4\n\
+ ldr r0, ._34 + 8\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._35:\n\
+ .align 2, 0\n\
+._34:\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._13:\n\
+ bl ResetSpriteData\n\
+ b ._61\n\
+._14:\n\
+ bl LoadBagGraphicsMultistep\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._37 @cond_branch\n\
+ b ._66\n\
+._37:\n\
+ ldr r1, ._40\n\
+ ldr r0, ._40 + 4\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._41:\n\
+ .align 2, 0\n\
+._40:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._15:\n\
+ ldr r0, ._43\n\
+ bl Text_LoadWindowTemplate\n\
+ b ._61\n\
+._44:\n\
+ .align 2, 0\n\
+._43:\n\
+ .word gWindowTemplate_81E6DFC\n\
+._16:\n\
+ ldr r0, ._46\n\
+ bl MultistepInitMenuWindowBegin\n\
+ ldr r1, ._46 + 4\n\
+ ldr r0, ._46 + 8\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._47:\n\
+ .align 2, 0\n\
+._46:\n\
+ .word gWindowTemplate_81E6DFC\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._17:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ bne ._48 @cond_branch\n\
+ b ._66\n\
+._48:\n\
+ b ._61\n\
+._18:\n\
+ bl ClearVerticalScrollIndicatorPalettes\n\
+ bl LoadScrollIndicatorPalette\n\
+ mov r0, #0x0\n\
+ mov r1, #0xac\n\
+ mov r2, #0xc\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x1\n\
+ mov r1, #0xac\n\
+ mov r2, #0x94\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x2\n\
+ mov r1, #0x1c\n\
+ mov r2, #0x58\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x3\n\
+ mov r1, #0x64\n\
+ mov r2, #0x58\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x0\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x1\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x2\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x3\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ ldr r0, ._53\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bhi ._51 @cond_branch\n\
+ mov r0, #0x2\n\
+ mov r1, #0x1\n\
+ bl SetVerticalScrollIndicators\n\
+ mov r0, #0x3\n\
+ mov r1, #0x1\n\
+ bl SetVerticalScrollIndicators\n\
+._51:\n\
+ ldr r1, ._53 + 4\n\
+ ldr r0, ._53 + 8\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._54:\n\
+ .align 2, 0\n\
+._53:\n\
+ .word sReturnLocation\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._19:\n\
+ ldr r1, ._56\n\
+ mov r0, #0x10\n\
+ strb r0, [r1]\n\
+ ldr r4, ._56 + 4\n\
+ ldr r5, ._56 + 8\n\
+ ldrb r1, [r5]\n\
+ add r1, r1, #0x1\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r4, #0\n\
+ bl sub_80A39B8\n\
+ ldrb r1, [r5]\n\
+ add r0, r4, #0\n\
+ bl DrawPocketIndicatorDots\n\
+ bl UpdateAllBagPockets\n\
+ ldr r4, ._56 + 12\n\
+ ldr r0, [r4, #0x10]\n\
+ ldr r1, [r4, #0x14]\n\
+ bl SortItemSlots\n\
+ ldr r0, [r4, #0x18]\n\
+ ldr r1, [r4, #0x1c]\n\
+ bl SortItemSlots\n\
+ bl sub_80A3D40\n\
+ ldr r1, ._56 + 16\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r5, r0]\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ str r0, [r1]\n\
+ bl sub_80A362C\n\
+ b ._61\n\
+._57:\n\
+ .align 2, 0\n\
+._56:\n\
+ .word gUnknown_0203855A\n\
+ .word gBGTilemapBuffers+0x1000\n\
+ .word sCurrentBagPocket\n\
+ .word gBagPockets\n\
+ .word gCurrentBagPocketItemSlots\n\
+._20:\n\
+ ldr r0, ._59\n\
+ mov r1, #0x0\n\
+ mov r2, #0x7\n\
+ bl sub_80A48E8\n\
+ ldr r1, ._59 + 4\n\
+ ldr r4, ._59 + 8\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r4, r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x1]\n\
+ ldrb r0, [r0]\n\
+ add r1, r1, r0\n\
+ ldr r0, ._59 + 12\n\
+ ldr r0, [r0]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r1, r2]\n\
+ bl ItemListMenu_InitDescription\n\
+ bl ItemListMenu_InitMenu\n\
+ ldr r1, ._59 + 16\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ ldr r1, ._59 + 20\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ ldr r1, ._59 + 24\n\
+ ldr r0, ._59 + 28\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._60:\n\
+ .align 2, 0\n\
+._59:\n\
+ .word 0xffff\n\
+ .word gBagPocketScrollStates\n\
+ .word sCurrentBagPocket\n\
+ .word gCurrentBagPocketItemSlots\n\
+ .word gUnknown_0203855B\n\
+ .word gUnknown_0203855C\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._21:\n\
+ bl CreateBagSprite\n\
+ mov r0, #0x0\n\
+ bl CreateBagPokeballSprite\n\
+ bl sub_80A3740\n\
+ b ._61\n\
+._22:\n\
+ ldr r3, ._63\n\
+ ldrh r2, [r3]\n\
+ mov r0, #0x0\n\
+ strh r0, [r3]\n\
+ ldr r4, ._63 + 4\n\
+ ldrh r0, [r4]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r4]\n\
+ strh r2, [r3]\n\
+ ldr r2, ._63 + 8\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x8\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\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 r2, ._63 + 12\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._63 + 16\n\
+ ldr r0, ._63 + 20\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._64:\n\
+ .align 2, 0\n\
+._63:\n\
+ .word 0x4000208\n\
+ .word 0x4000200\n\
+ .word 0x4000004\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._23:\n\
+ bl sub_8055870\n\
+ cmp r0, #0x1\n\
+ beq ._66 @cond_branch\n\
+._61:\n\
+ ldr r1, ._67\n\
+ ldr r2, ._67 + 4\n\
+ add r1, r1, r2\n\
+._62:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._66\n\
+._68:\n\
+ .align 2, 0\n\
+._67:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._24:\n\
+ ldr r0, ._71\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._71 + 4\n\
+ bl SetMainCallback2\n\
+ bl sub_80A751C\n\
+ bl sub_80A7630\n\
+ bl sub_80A770C\n\
+ bl sub_80A7828\n\
+ bl sub_80A78B8\n\
+ ldr r0, ._71 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._69 @cond_branch\n\
+ ldr r0, ._71 + 12\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._71 + 16\n\
+ mov r3, #0x0\n\
+ bl debug_sub_8008218\n\
+._69:\n\
+ mov r0, #0x1\n\
+ b ._70\n\
+._72:\n\
+ .align 2, 0\n\
+._71:\n\
+ .word sub_80A3134+1\n\
+ .word sub_80A3118+1\n\
+ .word gLinkOpen\n\
+ .word 0x600f5e0\n\
+ .word 0x600f800\n\
+._66:\n\
+ mov r0, #0x0\n\
+._70:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
static bool8 SetupBagMultistep(void)
{
u32 index;
@@ -496,6 +901,7 @@ static bool8 SetupBagMultistep(void)
}
return FALSE;
}
+#endif
static bool8 sub_80A34B4(void)
{
@@ -622,6 +1028,79 @@ void ClearBag(void)
ResetBagScrollPositions();
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80A3714()
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffff4\n\
+ mov r5, #0x0\n\
+ ldr r2, ._138\n\
+ mov r1, #0x0\n\
+._134:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, sp\n\
+ strh r1, [r0]\n\
+ add r0, r5, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x4\n\
+ bls ._134 @cond_branch\n\
+ mov r5, #0x0\n\
+ ldrh r0, [r2]\n\
+ cmp r0, #0\n\
+ beq ._136 @cond_branch\n\
+ add r6, r2, #0\n\
+._137:\n\
+ lsl r4, r5, #0x2\n\
+ add r4, r4, r6\n\
+ ldrh r0, [r4]\n\
+ bl ItemId_GetPocket\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x8\n\
+ ldr r1, ._138 + 4\n\
+ add r0, r0, r1\n\
+ lsr r0, r0, #0x10\n\
+ ldr r1, ._138 + 8\n\
+ lsl r2, r0, #0x3\n\
+ add r2, r2, r1\n\
+ lsl r0, r0, #0x1\n\
+ mov r1, sp\n\
+ add r3, r1, r0\n\
+ ldrh r1, [r3]\n\
+ ldr r0, [r2]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldr r0, [r4]\n\
+ str r0, [r1]\n\
+ ldrh r0, [r3]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r3]\n\
+ add r0, r5, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x3b\n\
+ bhi ._136 @cond_branch\n\
+ lsl r0, r5, #0x2\n\
+ add r0, r0, r6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._137 @cond_branch\n\
+._136:\n\
+ add sp, sp, #0xc\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._139:\n\
+ .align 2, 0\n\
+._138:\n\
+ .word gUnknown_Debug_083EBC68\n\
+ .word 0xffff0000\n\
+ .word gBagPockets");
+}
+#endif
+
static void sub_80A3740(void)
{
const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE};
@@ -3561,12 +4040,49 @@ static void sub_80A73FC(void)
MenuCursor_Destroy814AD44();
}
+#if DEBUG
+__attribute__((naked))
+static void sub_80A740C(void)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl sub_80A75E4\n\
+ bl sub_80A7768\n\
+ bl sub_80A7420\n\
+ ldr r0, ._931\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._930 @cond_branch\n\
+ ldr r0, ._931 + 4\n\
+ ldr r1, ._931 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._930:\n\
+ add sp, sp, #0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+._932:\n\
+ .align 2, 0\n\
+._931:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
static void sub_80A740C(void)
{
sub_80A75E4();
sub_80A7768();
sub_80A7420();
}
+#endif
static void sub_80A7420(void)
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 0a841eed1..e41ea1628 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -250,7 +250,88 @@ void SetupMauvilleOldMan(void)
sub_80F83D0();
}
-static u8 GetCurrentMauvilleOldMan(void)
+#if 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 SetupBard\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 SetupHipster\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 SetupTrader\n"
+ " b ._37\n"
+ "._28:\n"
+ " bl SetupStoryteller\n"
+ " b ._37\n"
+ "._29:\n"
+ " bl SetupGiddy\n"
+ "._37:\n"
+ " bl sub_80F83D0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
+u8 GetCurrentMauvilleOldMan(void)
{
struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 07453e4fe..07135080e 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 f55ed669d..4fdb17786 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -94,9 +94,9 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite);
static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId);
static void ItemUseMoveMenu_HandleCancel(u8 taskId);
static bool8 SetupDefaultPartyMenu(void);
-static void sub_806B4A8(void);
-static void VBlankCB_PartyMenu(void);
-static bool8 LoadPartyMenuGraphics(u8 a);
+/*static*/ void sub_806B4A8(void);
+/*static*/ void VBlankCB_PartyMenu(void);
+/*static*/ bool8 LoadPartyMenuGraphics(u8 a);
static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
static void sub_806BB9C(u8 a);
static void sub_806BBEC(u8 a);
@@ -493,6 +493,71 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
+#if DEBUG
+__attribute__((naked))
+void CB2_PartyMenuMain(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, ._3\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x4\n\
+ ldr r1, ._3 + 4\n\
+ add r5, r0, r1\n\
+ mov r6, #0x0\n\
+._1:\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x3\n\
+ ldrb r1, [r5, #0x1]\n\
+ lsl r1, r1, #0x3\n\
+ ldr r2, [r5, #0x4]\n\
+ lsl r3, r6, #0x5\n\
+ mov r4, #0x80\n\
+ lsl r4, r4, #0x2\n\
+ orr r3, r3, r4\n\
+ str r3, [sp]\n\
+ mov r3, #0x0\n\
+ bl DrawPartyMenuMonText\n\
+ add r5, r5, #0x8\n\
+ add r6, r6, #0x1\n\
+ cmp r6, #0x5\n\
+ ble ._1 @cond_branch\n\
+ bl RunTasks\n\
+ bl UpdatePaletteFade\n\
+ ldr r0, ._3 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._2 @cond_branch\n\
+ ldr r0, ._3 + 12\n\
+ ldr r1, ._3 + 16\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._2:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word gPartyMenuType\n\
+ .word PartyMonTextSettings\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -517,6 +582,7 @@ void CB2_PartyMenuMain(void)
RunTasks();
UpdatePaletteFade();
}
+#endif
void VBlankCB_PartyMenu(void)
{
@@ -621,6 +687,425 @@ bool8 SetupDefaultPartyMenu(void)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+bool8 InitPartyMenu(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r0, ._55\n\
+ ldr r1, ._55 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x11\n\
+ bls ._53 @cond_branch\n\
+ b ._125\n\
+._53:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._55 + 8\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._56:\n\
+ .align 2, 0\n\
+._55:\n\
+ .word gMain\n\
+ .word 0x43c\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\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+._58:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ mov r3, #0xc0\n\
+ lsl r3, r3, #0x13\n\
+ mov r4, #0xc0\n\
+ lsl r4, r4, #0x9\n\
+ add r2, sp, #0x8\n\
+ mov r8, r2\n\
+ add r2, sp, #0x4\n\
+ mov r6, #0x0\n\
+ ldr r1, ._78\n\
+ mov r5, #0x80\n\
+ lsl r5, r5, #0x5\n\
+ ldr r7, ._78 + 4\n\
+ mov r0, #0x81\n\
+ lsl r0, r0, #0x18\n\
+ mov ip, r0\n\
+._76:\n\
+ strh r6, [r2]\n\
+ add r0, sp, #0x4\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 ._76 @cond_branch\n\
+ strh r6, [r2]\n\
+ add r2, sp, #0x4\n\
+ str r2, [r1]\n\
+ str r3, [r1, #0x4]\n\
+ lsr r0, r4, #0x1\n\
+ mov r3, ip\n\
+ orr r0, r0, r3\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, #0x8]\n\
+ ldr r2, ._78\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\
+ add r0, sp, #0x4\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\
+ ldr r2, ._78 + 8\n\
+ ldrb r0, [r2, #0x8]\n\
+ mov r1, #0x80\n\
+ orr r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._78 + 12\n\
+ ldr r2, ._78 + 16\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._79:\n\
+ .align 2, 0\n\
+._78:\n\
+ .word 0x40000d4\n\
+ .word 0x81000800\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._59:\n\
+ bl ScanlineEffect_Stop\n\
+ b ._115\n\
+._60:\n\
+ bl sub_806B4A8\n\
+ ldr r1, ._82\n\
+ mov r2, #0x99\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ mov r2, #0x0\n\
+ strh r2, [r0]\n\
+ ldr r3, ._82 + 4\n\
+ add r0, r1, r3\n\
+ strh r2, [r0]\n\
+ mov r0, #0x9a\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ strh r2, [r1]\n\
+ ldr r1, ._82 + 8\n\
+ ldr r2, ._82 + 12\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._83:\n\
+ .align 2, 0\n\
+._82:\n\
+ .word +0x201b000\n\
+ .word 0x266\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._61:\n\
+ bl ResetSpriteData\n\
+ b ._115\n\
+._62:\n\
+ ldr r0, ._88\n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._86 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._86 @cond_branch\n\
+ bl ResetTasks\n\
+._86:\n\
+ ldr r1, ._88 + 4\n\
+ ldr r2, ._88 + 8\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._89:\n\
+ .align 2, 0\n\
+._88:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._63:\n\
+ bl FreeAllSpritePalettes\n\
+ b ._115\n\
+._64:\n\
+ ldr r4, ._92\n\
+ mov r1, #0x97\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ mov r2, #0x98\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ strb r0, [r1]\n\
+ b ._115\n\
+._93:\n\
+ .align 2, 0\n\
+._92:\n\
+ .word +0x201b000\n\
+._65:\n\
+ ldr r0, ._95\n\
+ bl Text_LoadWindowTemplate\n\
+ ldr r1, ._95 + 4\n\
+ ldr r0, ._95 + 8\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._96:\n\
+ .align 2, 0\n\
+._95:\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._66:\n\
+ ldr r4, ._98\n\
+ ldr r1, ._98 + 4\n\
+ add r0, r4, #0\n\
+ bl Text_InitWindowWithTemplate\n\
+ add r0, r4, #0\n\
+ mov r1, #0x1\n\
+ bl MultistepInitWindowTileData\n\
+ ldr r1, ._98 + 8\n\
+ ldr r2, ._98 + 12\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._99:\n\
+ .align 2, 0\n\
+._98:\n\
+ .word gUnknown_03004210\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._67:\n\
+ bl MultistepLoadFont\n\
+ cmp r0, #0\n\
+ bne ._100 @cond_branch\n\
+ b ._125\n\
+._100:\n\
+ ldr r0, ._103\n\
+ mov r3, #0x99\n\
+ lsl r3, r3, #0x2\n\
+ add r0, r0, r3\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ ldr r1, ._103 + 4\n\
+ ldr r0, ._103 + 8\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._68:\n\
+ ldr r0, ._107\n\
+ mov r1, #0x99\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ bl LoadPartyMenuGraphics\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._105 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r4]\n\
+ ldr r1, ._107 + 4\n\
+ ldr r2, ._107 + 8\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._108:\n\
+ .align 2, 0\n\
+._107:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._105:\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._125\n\
+._69:\n\
+ bl sub_809D51C\n\
+ b ._115\n\
+._70:\n\
+ ldr r2, ._113\n\
+ ldr r0, ._113 + 4\n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r2, r2, #0x4\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._125 @cond_branch\n\
+ ldr r1, ._113 + 8\n\
+ ldr r2, ._113 + 12\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._114:\n\
+ .align 2, 0\n\
+._113:\n\
+ .word PartyMenuHandlers\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._71:\n\
+ ldr r0, ._116\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b ._115\n\
+._117:\n\
+ .align 2, 0\n\
+._116:\n\
+ .word gWindowTemplate_81E6CC8\n\
+._72:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ beq ._125 @cond_branch\n\
+ ldr r1, ._120\n\
+ ldr r0, ._120 + 4\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._121:\n\
+ .align 2, 0\n\
+._120:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._73:\n\
+ ldr r0, ._123\n\
+ ldr r1, ._123 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl PrintPartyMenuPromptText\n\
+ ldr r1, ._123 + 8\n\
+ ldr r2, ._123 + 12\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._124:\n\
+ .align 2, 0\n\
+._123:\n\
+ .word +0x201b000\n\
+ .word 0x259\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._74:\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 r2, ._126\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+._115:\n\
+ ldr r1, ._126 + 4\n\
+ ldr r3, ._126 + 8\n\
+ add r1, r1, r3\n\
+._122:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._125\n\
+._127:\n\
+ .align 2, 0\n\
+._126:\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._75:\n\
+ ldr r0, ._130\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._130 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._128 @cond_branch\n\
+ ldr r0, ._130 + 8\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._130 + 12\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008218\n\
+._128:\n\
+ mov r0, #0x1\n\
+ b ._129\n\
+._131:\n\
+ .align 2, 0\n\
+._130:\n\
+ .word VBlankCB_PartyMenu+1\n\
+ .word gLinkOpen\n\
+ .word 0x600e5e0\n\
+ .word 0x6007800\n\
+._125:\n\
+ mov r0, #0x0\n\
+._129:\n\
+ add sp, sp, #0xc\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
bool8 InitPartyMenu(void)
{
switch (gMain.state)
@@ -728,6 +1213,7 @@ bool8 InitPartyMenu(void)
return FALSE;
}
+#endif
void CB2_InitPartyMenu(void)
{
@@ -4007,6 +4493,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func)
CreateTask(Task_TeamMonTMMove, 5);
}
+#if DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
@@ -4021,7 +4511,11 @@ void Task_TeamMonTMMove(u8 taskId)
}
else
{
- if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ if (
+#if DEBUG
+ !gUnknown_020297ED &&
+#endif
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -4751,7 +5245,8 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
-static const u8 *const StatNames[] = {
+static const u8 *const StatNames[] =
+{
gOtherText_HP,
gOtherText_Attack,
gOtherText_Defense,
@@ -4760,7 +5255,8 @@ static const u8 *const StatNames[] = {
gOtherText_Speed,
};
-static const u8 StatDataTypes[] = {
+static const u8 StatDataTypes[] =
+{
MON_DATA_MAX_HP,
MON_DATA_ATK,
MON_DATA_DEF,
@@ -4768,6 +5264,17 @@ static const u8 StatDataTypes[] = {
MON_DATA_SPDEF,
MON_DATA_SPEED,
};
+
+#if DEBUG
+
+const u8 gUnknown_Debug_839B6CE[] = {0x40, 0, 0, 0, 0x44, 0, 0xFF, 0, 0, 0};
+
+const u8 gUnknown_Debug_839B6D8[] = _(
+ "{STR_VAR_1}かい じっこう\n"
+ "{STR_VAR_2}たんいじかん しょうひ");
+
+#endif
+
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
@@ -5499,9 +6006,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 e08a65f49..43684dfec 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -91,7 +91,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
@@ -120,14 +121,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,
@@ -145,7 +148,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},
@@ -161,21 +165,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),
@@ -183,22 +191,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,
@@ -208,7 +220,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},
@@ -216,6 +229,11 @@ const struct Pokeblock gUnknown_083F7F9C[] = {
{ PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
};
+#if DEBUG
+// possibly continuation of gUnknown_083F7F9C?
+asm(".incbin \"baserom_de_debug.gba\", 0x424128, 0x50");
+#endif
+
// text
static void sub_810B674(void)
@@ -424,14 +442,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/region_map.c b/src/field/region_map.c
index 1378820fe..7bfda1a81 100644
--- a/src/field/region_map.c
+++ b/src/field/region_map.c
@@ -280,7 +280,7 @@ static u16 sub_80FB9C0(u16);
static void sub_80FBA18(void);
static bool8 sub_80FBAA0(u16);
void CreateRegionMapCursor(u16, u16);
-static void sub_80FBCA0(void);
+void sub_80FBCA0(void);
static void sub_80FBDF8(void);
static void sub_80FBE24(void);
static void SpriteCB_PlayerIconZoomedOut(struct Sprite *);
@@ -288,8 +288,8 @@ static void UpdateIconBlink(struct Sprite *);
static void SpriteCB_PlayerIconZoomedIn(struct Sprite *);
const u8 *GetMapSectionName(u8 *, u16, u16);
static void VBlankCB_FlyRegionMap(void);
-static void CB2_FlyRegionMap(void);
-static void sub_80FC244(void (*func)(void));
+void CB2_FlyRegionMap(void);
+void sub_80FC244(void (*func)(void));
static void PrintFlyTargetName(void);
static void CreateFlyTargetGraphics(void);
static void CreateCityTownFlyTargetIcons(void);
@@ -297,7 +297,7 @@ static void CreateSpecialAreaFlyTargetIcons(void);
static void SpriteCB_FlyTargetIcons(struct Sprite *);
static void sub_80FC5B4(void);
static void sub_80FC600(void);
-static void sub_80FC69C(void);
+void sub_80FC69C(void);
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
{
@@ -1127,7 +1127,7 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
}
}
-static void sub_80FBCA0(void)
+void sub_80FBCA0(void)
{
if (gRegionMap->cursorSprite != NULL)
{
@@ -1420,7 +1420,7 @@ struct UnknownStruct4
static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
-static const struct UnknownStruct4 sUnknown_083E79C0[1] =
+const struct UnknownStruct4 gUnknown_083E79C0[1] =
{
{sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY},
};
@@ -1591,14 +1591,14 @@ static void VBlankCB_FlyRegionMap(void)
TransferPlttBuffer();
}
-static void CB2_FlyRegionMap(void)
+void CB2_FlyRegionMap(void)
{
ewram0_3.unk0();
AnimateSprites();
BuildOamBuffer();
}
-static void sub_80FC244(void (*func)(void))
+void sub_80FC244(void (*func)(void))
{
ewram0_3.unk0 = func;
ewram0_3.unk4 = 0;
@@ -1611,9 +1611,9 @@ static void PrintFlyTargetName(void)
u16 i;
bool32 drawFrameDisabled = FALSE;
- for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++)
+ for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++)
{
- const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
+ const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i];
if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId)
{
@@ -1795,7 +1795,7 @@ static void sub_80FC600(void)
}
}
-static void sub_80FC69C(void)
+void sub_80FC69C(void)
{
switch (ewram0_3.unk4)
{
diff --git a/src/field/roamer.c b/src/field/roamer.c
index 2eb26ef9d..6ed5b6c89 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];
}
+
+#if 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/safari_zone.c b/src/field/safari_zone.c
index 6c7c8b391..f371b08b3 100644
--- a/src/field/safari_zone.c
+++ b/src/field/safari_zone.c
@@ -26,7 +26,7 @@ static void DecrementFeederStepCounters(void);
extern u8 gBattleOutcome;
EWRAM_DATA u8 gNumSafariBalls = 0;
-EWRAM_DATA static u16 gSafariZoneStepCounter = 0;
+EWRAM_DATA u16 gSafariZoneStepCounter = 0;
EWRAM_DATA static struct PokeblockFeeder gPokeblockFeeders[NUM_POKEBLOCK_FEEDERS] = {0};
extern void (*gFieldCallback)(void);
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 2d02de004..082e8ebc6 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -1648,6 +1648,178 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
sub_80BD328(basesC, 0);
}
+#if DEBUG
+__attribute__((naked))
+void sub_80BD674(void *playerRecords, u32 size, u8 c)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add r6, r0, #0\n\
+ add r5, r1, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r7, r2, #0x18\n\
+ ldr r0, ._503\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._498 @cond_branch\n\
+ mov r0, #0x60\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._498 @cond_branch\n\
+ b ._520\n\
+._498:\n\
+ bl GetLinkPlayerCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x2\n\
+ beq ._500 @cond_branch\n\
+ cmp r0, #0x3\n\
+ beq ._501 @cond_branch\n\
+ b ._505\n\
+._504:\n\
+ .align 2, 0\n\
+._503:\n\
+ .word gUnknown_020297ED\n\
+._500:\n\
+ lsl r4, r5, #0x1\n\
+ add r0, r6, r4\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5c24\n\
+ add r4, r4, r5\n\
+ add r4, r6, r4\n\
+ add r0, r4, #0\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5c24\n\
+ b ._505\n\
+._501:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, r5\n\
+ add r0, r6, r0\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5c24\n\
+._505:\n\
+ cmp r7, #0x1\n\
+ beq ._506 @cond_branch\n\
+ cmp r7, #0x1\n\
+ bgt ._507 @cond_branch\n\
+ cmp r7, #0\n\
+ beq ._508 @cond_branch\n\
+ b ._515\n\
+._507:\n\
+ cmp r7, #0x2\n\
+ beq ._510 @cond_branch\n\
+ cmp r7, #0x3\n\
+ beq ._511 @cond_branch\n\
+ b ._515\n\
+._508:\n\
+ add r0, r6, r5\n\
+ lsl r2, r5, #0x1\n\
+ add r1, r6, r2\n\
+ add r2, r2, r5\n\
+ add r2, r6, r2\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._506:\n\
+ lsl r1, r5, #0x1\n\
+ add r0, r6, r1\n\
+ add r1, r1, r5\n\
+ add r1, r6, r1\n\
+ add r2, r6, #0\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._510:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, r5\n\
+ add r0, r6, r0\n\
+ add r2, r6, r5\n\
+ add r1, r6, #0\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._511:\n\
+ add r1, r6, r5\n\
+ lsl r2, r5, #0x1\n\
+ add r2, r6, r2\n\
+ add r0, r6, #0\n\
+ bl sub_80BD610\n\
+._515:\n\
+ mov r3, #0x1\n\
+ ldr r6, ._521\n\
+ mov r5, #0x10\n\
+ neg r5, r5\n\
+ ldr r4, ._521 + 4\n\
+._517:\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x5\n\
+ add r0, r0, r6\n\
+ add r2, r0, r4\n\
+ ldrb r1, [r2]\n\
+ lsl r0, r1, #0x1c\n\
+ lsr r0, r0, #0x1c\n\
+ cmp r0, #0x1\n\
+ bne ._516 @cond_branch\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ mov r1, #0x40\n\
+ orr r0, r0, r1\n\
+ and r0, r0, r5\n\
+ strb r0, [r2]\n\
+._516:\n\
+ add r0, r3, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r3, r0, #0x10\n\
+ cmp r3, #0x13\n\
+ bls ._517 @cond_branch\n\
+ bl sub_80BD280\n\
+ mov r3, #0x1\n\
+ ldr r4, ._521\n\
+ ldr r6, ._521 + 4\n\
+ add r7, r4, #0\n\
+ mov r5, #0x3f\n\
+._519:\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x5\n\
+ add r0, r0, r4\n\
+ add r2, r0, r6\n\
+ ldrb r1, [r2]\n\
+ lsr r0, r1, #0x6\n\
+ cmp r0, #0x2\n\
+ bne ._518 @cond_branch\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ strb r0, [r2]\n\
+._518:\n\
+ add r0, r3, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r3, r0, #0x10\n\
+ cmp r3, #0x13\n\
+ bls ._519 @cond_branch\n\
+ ldr r0, ._521 + 8\n\
+ add r2, r7, r0\n\
+ ldrh r1, [r2]\n\
+ ldr r0, ._521 + 12\n\
+ cmp r1, r0\n\
+ beq ._520 @cond_branch\n\
+ add r0, r1, #1\n\
+ strh r0, [r2]\n\
+._520:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._522:\n\
+ .align 2, 0\n\
+._521:\n\
+ .word gSaveBlock1\n\
+ .word 0x1a09\n\
+ .word 0x1a16\n\
+ .word 0xffff");
+}
+#else
void sub_80BD674(void *playerRecords, u32 size, u8 c)
{
if (FlagGet(FLAG_RECEIVED_SECRET_POWER))
@@ -1706,3 +1878,4 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
}
}
}
+#endif
diff --git a/src/field/shop.c b/src/field/shop.c
index e087628da..852ccddda 100644
--- a/src/field/shop.c
+++ b/src/field/shop.c
@@ -1238,3 +1238,24 @@ void Shop_CreateDecorationShop2Menu(u16 *itemList)
SetShopItemsForSale(itemList);
SetShopMenuCallback(EnableBothScriptContexts);
}
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2818(void)
+{
+ asm("\
+ push {lr}\n\
+ mov r0, #0x0\n\
+ bl CreateShopMenu\n\
+ ldr r0, ._290\n\
+ bl SetShopItemsForSale\n\
+ mov r0, #0x0\n\
+ bl SetShopMenuCallback\n\
+ pop {r0}\n\
+ bx r0\n\
+._291:\n\
+ .align 2, 0\n\
+._290:\n\
+ .word gMartBuyNoSellOptionList+0x3");
+}
+#endif
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 21bf29e91..b5b13c533 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;
@@ -29,6 +30,8 @@ struct UnkStruct1 {
#define SLOTMACHINE_GFX_TILES 236
#endif
+// TODO: figure out which functions are static and which are not.
+#define static
static void CB2_SlotMachineSetup(void);
static void CB2_SlotMachineLoop(void);
@@ -61,7 +64,7 @@ static bool8 sub_8102008(struct Task *task);
static bool8 sub_8102034(struct Task *task);
static bool8 sub_8102058(struct Task *task);
static bool8 sub_8102090(struct Task *task);
-static bool8 sub_81020C8(struct Task *task);
+bool8 sub_81020C8(struct Task *task);
static bool8 sub_81021E0(struct Task *task);
static bool8 sub_81021FC(struct Task *task);
static bool8 sub_8102264(struct Task *task);
@@ -76,6 +79,7 @@ static bool8 sub_81023E0(struct Task *task);
static bool8 sub_81023FC(struct Task *task);
static bool8 sub_8102424(struct Task *task);
static bool8 sub_8102460(struct Task *task);
+static bool8 debug_sub_8116E74(struct Task *);
static void sub_8102484(void);
static void sub_81024F0(void);
static bool8 sub_8102540(void);
@@ -229,11 +233,59 @@ static const u8 gUnknown_083ECE3A[];
static const u16 gUnknown_083ECE42[];
static const u16 gUnknown_083ECE48[];
+#if DEBUG
+__attribute__((naked))
+void PlaySlotMachine(u8 arg0, MainCallback cb)
+{
+ asm("\
+ push {lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r3, ._1\n\
+ mov r2, #0x0\n\
+ strb r2, [r3]\n\
+ bl PlaySlotMachine_Internal\n\
+ ldr r0, ._1 + 4\n\
+ bl SetMainCallback2\n\
+ pop {r0}\n\
+ bx r0\n\
+._2:\n\
+ .align 2, 0\n\
+._1:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word CB2_SlotMachineSetup+1");
+}
+#else
void PlaySlotMachine(u8 arg0, MainCallback cb)
{
PlaySlotMachine_Internal(arg0, cb);
SetMainCallback2(CB2_SlotMachineSetup);
}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_811609C()
+{
+ asm("\
+ push {lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r3, ._3\n\
+ mov r2, #0x1\n\
+ strb r2, [r3]\n\
+ bl PlaySlotMachine_Internal\n\
+ ldr r0, ._3 + 4\n\
+ bl SetMainCallback2\n\
+ pop {r0}\n\
+ bx r0\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word CB2_SlotMachineSetup+1");
+}
+#endif
static void CB2_SlotMachineSetup(void)
{
@@ -366,6 +418,135 @@ static void SlotMachineSetup_2_1(void)
static const s16 gUnknown_083ECCF8[][2];
+#if DEBUG
+__attribute__((naked))
+static void SlotMachineSetup_0_1(void)
+{
+ 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\
+ bl sub_81019EC\n\
+ ldr r5, ._43\n\
+ mov r4, #0x0\n\
+ strb r4, [r5]\n\
+ strb r4, [r5, #0x2]\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ strb r1, [r5, #0x3]\n\
+ strb r4, [r5, #0x4]\n\
+ mov r0, #0x0\n\
+ strh r4, [r5, #0x8]\n\
+ strb r0, [r5, #0xa]\n\
+ strb r0, [r5, #0xb]\n\
+ ldr r0, ._43 + 4\n\
+ ldr r1, ._43 + 8\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r5, #0xc]\n\
+ strh r4, [r5, #0xe]\n\
+ strh r4, [r5, #0x10]\n\
+ strh r4, [r5, #0x12]\n\
+ strh r4, [r5, #0x18]\n\
+ mov r0, #0x8\n\
+ strh r0, [r5, #0x1a]\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x58\n\
+ mov r0, #0xf0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x2\n\
+ mov r0, #0xa0\n\
+ strh r0, [r1]\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x5c\n\
+ mov r1, #0x3f\n\
+ strh r1, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r1, [r0]\n\
+ bl GetCurrentMapMusic\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x60\n\
+ strh r0, [r1]\n\
+ mov r7, #0x0\n\
+ add r6, r5, #0\n\
+ ldr r2, ._43 + 12\n\
+ mov sl, r2\n\
+ mov r0, #0x1c\n\
+ add r0, r0, r6\n\
+ mov r9, r0\n\
+._41:\n\
+ lsl r5, r7, #0x1\n\
+ mov r1, #0x22\n\
+ add r1, r1, r6\n\
+ mov r8, r1\n\
+ add r1, r5, r1\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ add r4, r6, #0\n\
+ add r4, r4, #0x28\n\
+ add r4, r5, r4\n\
+ ldrb r0, [r6, #0x3]\n\
+ lsl r0, r0, #0x1\n\
+ lsl r1, r7, #0x2\n\
+ add r0, r0, r1\n\
+ add r0, r0, sl\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ mov r1, #0x15\n\
+ bl __modsi3\n\
+ strh r0, [r4]\n\
+ add r5, r5, r9\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ lsl r1, r0, #0x1\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ mov r2, #0xfc\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ sub r0, r0, r1\n\
+ strh r0, [r5]\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r5, r1]\n\
+ add r1, r2, #0\n\
+ bl __modsi3\n\
+ strh r0, [r5]\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ cmp r7, #0x2\n\
+ bls ._41 @cond_branch\n\
+ bl debug_sub_811B5D0\n\
+ ldr r0, ._43 + 16\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._42 @cond_branch\n\
+ mov r1, r8\n\
+ sub r1, r1, #0x22\n\
+ mov r0, #0xfa\n\
+ lsl r0, r0, #0x2\n\
+ strh r0, [r1, #0xc]\n\
+._42:\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\
+._44:\n\
+ .align 2, 0\n\
+._43:\n\
+ .word +0x2000000\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gUnknown_083ECCF8\n\
+ .word unk_debug_bss_1+0x1");
+}
+#else
static void SlotMachineSetup_0_1(void)
{
u8 i;
@@ -397,6 +578,7 @@ static void SlotMachineSetup_0_1(void)
eSlotMachine->unk1C[i] %= 0x1f8;
}
}
+#endif
static void SlotMachineSetup_3_0(void)
{
@@ -441,7 +623,8 @@ static void sub_8101D04(void)
sub_8101D24(CreateTask(sub_8101D24, 0));
}
-static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
+{
sub_8101D5C,
sub_8101D8C,
sub_8101DB0,
@@ -470,7 +653,10 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
sub_81023E0,
sub_81023FC,
sub_8102424,
- sub_8102460
+ sub_8102460,
+#if DEBUG
+ debug_sub_8116E74,
+#endif
};
static void sub_8101D24(u8 taskId)
@@ -523,6 +709,46 @@ static bool8 sub_8101DF4(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101E10(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ mov r0, #0x0\n\
+ bl sub_8104CAC\n\
+ ldr r2, ._70\n\
+ mov r0, #0x5\n\
+ strb r0, [r2]\n\
+ ldr r0, ._70 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._67 @cond_branch\n\
+ ldr r0, ._70 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._69 @cond_branch\n\
+._67:\n\
+ mov r0, #0xc\n\
+ ldsh r1, [r2, r0]\n\
+ ldr r0, ._70 + 12\n\
+ cmp r1, r0\n\
+ ble ._69 @cond_branch\n\
+ mov r0, #0x17\n\
+ strb r0, [r2]\n\
+._69:\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._71:\n\
+ .align 2, 0\n\
+._70:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word unk_debug_bss_1+0x4\n\
+ .word 0x270e");
+}
+#else
static bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
@@ -533,7 +759,205 @@ static bool8 sub_8101E10(struct Task *task)
}
return TRUE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101E3C(struct Task *task)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ ldr r0, ._77\n\
+ ldrb r1, [r0]\n\
+ add r3, r0, #0\n\
+ ldr r5, ._77 + 4\n\
+ cmp r1, #0\n\
+ beq ._76 @cond_branch\n\
+ ldr r2, ._77 + 8\n\
+ ldrb r0, [r2]\n\
+ cmp r0, #0\n\
+ beq ._76 @cond_branch\n\
+ ldr r4, ._77 + 12\n\
+ mov r1, #0xc\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0x3\n\
+ ble ._74 @cond_branch\n\
+ ldrh r1, [r5, #0x2c]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._75 @cond_branch\n\
+._74:\n\
+ mov r0, #0x0\n\
+ strb r0, [r2]\n\
+ b ._76\n\
+._78:\n\
+ .align 2, 0\n\
+._77:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word gMain\n\
+ .word unk_debug_bss_1+0x4\n\
+ .word +0x2000000\n\
+._75:\n\
+ mov r0, #0x0\n\
+ bl sub_8103D50\n\
+ mov r0, #0x1\n\
+ bl sub_8103D50\n\
+ mov r0, #0x2\n\
+ bl sub_8103D50\n\
+ ldrh r0, [r4, #0xc]\n\
+ sub r0, r0, #0x3\n\
+ strh r0, [r4, #0xc]\n\
+ mov r0, #0x3\n\
+ strh r0, [r4, #0x12]\n\
+ mov r0, #0x9\n\
+ strb r0, [r4]\n\
+ b ._102\n\
+._76:\n\
+ ldrb r0, [r3]\n\
+ cmp r0, #0\n\
+ beq ._81 @cond_branch\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._81 @cond_branch\n\
+ bl debug_sub_811B620\n\
+ ldr r1, ._83\n\
+ mov r0, #0x1d\n\
+ strb r0, [r1]\n\
+ b ._102\n\
+._84:\n\
+ .align 2, 0\n\
+._83:\n\
+ .word +0x2000000\n\
+._81:\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._85 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_8104AB8\n\
+ ldr r1, ._87\n\
+ mov r0, #0x8\n\
+ strb r0, [r1]\n\
+ b ._102\n\
+._88:\n\
+ .align 2, 0\n\
+._87:\n\
+ .word +0x2000000\n\
+._85:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._89 @cond_branch\n\
+ ldr r2, ._94\n\
+ mov r3, #0xc\n\
+ ldsh r0, [r2, r3]\n\
+ sub r0, r0, #0x3\n\
+ mov r3, #0x12\n\
+ ldsh r1, [r2, r3]\n\
+ add r0, r0, r1\n\
+ cmp r0, #0\n\
+ blt ._90 @cond_branch\n\
+ ldrh r4, [r2, #0x12]\n\
+ add r0, r1, #0\n\
+ cmp r0, #0x2\n\
+ bgt ._91 @cond_branch\n\
+._92:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl sub_8103D50\n\
+ lsl r0, r4, #0x10\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x9\n\
+ add r0, r0, r2\n\
+ lsr r4, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x2\n\
+ ble ._92 @cond_branch\n\
+._91:\n\
+ ldr r1, ._94\n\
+ ldrh r0, [r1, #0xc]\n\
+ sub r0, r0, #0x3\n\
+ ldrh r3, [r1, #0x12]\n\
+ add r0, r0, r3\n\
+ strh r0, [r1, #0xc]\n\
+ mov r0, #0x3\n\
+ strh r0, [r1, #0x12]\n\
+ mov r0, #0x9\n\
+ strb r0, [r1]\n\
+ mov r0, #0x5f\n\
+ bl PlaySE\n\
+ b ._102\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word +0x2000000\n\
+._90:\n\
+ mov r0, #0x6\n\
+ b ._96\n\
+._89:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._98 @cond_branch\n\
+ ldr r4, ._103\n\
+ mov r1, #0xc\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0\n\
+ beq ._98 @cond_branch\n\
+ mov r0, #0x5f\n\
+ bl PlaySE\n\
+ ldrb r0, [r4, #0x12]\n\
+ bl sub_8103D50\n\
+ ldrh r0, [r4, #0xc]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r4, #0xc]\n\
+ ldrh r0, [r4, #0x12]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0x12]\n\
+._98:\n\
+ ldr r0, ._103\n\
+ mov r2, #0x12\n\
+ ldsh r1, [r0, r2]\n\
+ add r2, r0, #0\n\
+ ldr r5, ._103 + 4\n\
+ cmp r1, #0x2\n\
+ bgt ._99 @cond_branch\n\
+ cmp r1, #0\n\
+ beq ._101 @cond_branch\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._101 @cond_branch\n\
+._99:\n\
+ mov r0, #0x9\n\
+ strb r0, [r2]\n\
+._101:\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._102 @cond_branch\n\
+ mov r0, #0x15\n\
+._96:\n\
+ strb r0, [r2]\n\
+._102:\n\
+ mov r0, #0x0\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word +0x2000000\n\
+ .word gMain");
+}
+#else
static bool8 sub_8101E3C(struct Task *task)
{
s16 i;
@@ -581,6 +1005,7 @@ static bool8 sub_8101E3C(struct Task *task)
}
return FALSE;
}
+#endif
static void sub_8101F2C(const u8 *str)
{
@@ -614,6 +1039,71 @@ static bool8 sub_8101F88(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101FA4(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ add r4, r0, #0\n\
+ bl sub_8102484\n\
+ bl sub_8104DA4\n\
+ mov r0, #0x0\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x1\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x2\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x0\n\
+ strh r0, [r4, #0x8]\n\
+ ldr r4, ._115\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._113 @cond_branch\n\
+ bl sub_810430C\n\
+ mov r0, #0xa\n\
+ b ._114\n\
+._116:\n\
+ .align 2, 0\n\
+._115:\n\
+ .word +0x2000000\n\
+._113:\n\
+ mov r0, #0x1\n\
+ bl sub_8104CAC\n\
+ mov r0, #0xb\n\
+._114:\n\
+ strb r0, [r4]\n\
+ ldr r4, ._119\n\
+ mov r0, #0x8\n\
+ strh r0, [r4, #0x1a]\n\
+ ldrb r0, [r4, #0xa]\n\
+ cmp r0, #0\n\
+ beq ._117 @cond_branch\n\
+ bl dp15_jump_random_unknown\n\
+ strh r0, [r4, #0x1a]\n\
+._117:\n\
+ ldr r0, ._119 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._118 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x68\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._118:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._120:\n\
+ .align 2, 0\n\
+._119:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1+0x1");
+}
+#else
static bool8 sub_8101FA4(struct Task *task)
{
sub_8102484();
@@ -639,6 +1129,7 @@ static bool8 sub_8101FA4(struct Task *task)
}
return FALSE;
}
+#endif
static bool8 sub_8102008(struct Task *task)
{
@@ -651,6 +1142,52 @@ static bool8 sub_8102008(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102034(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldrh r1, [r0, #0x8]\n\
+ add r1, r1, #0x1\n\
+ strh r1, [r0, #0x8]\n\
+ lsl r1, r1, #0x10\n\
+ asr r1, r1, #0x10\n\
+ cmp r1, #0x1d\n\
+ ble ._124 @cond_branch\n\
+ ldr r0, ._127\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._126 @cond_branch\n\
+ ldr r0, ._127 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._126 @cond_branch\n\
+ ldr r4, ._127 + 8\n\
+ bl Random\n\
+ mov r1, #0x1f\n\
+ and r1, r1, r0\n\
+ add r1, r1, #0x1\n\
+ str r1, [r4]\n\
+._126:\n\
+ bl sub_81024F0\n\
+ ldr r1, ._127 + 12\n\
+ mov r0, #0xc\n\
+ strb r0, [r1]\n\
+._124:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._128:\n\
+ .align 2, 0\n\
+._127:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word unk_debug_bss_1+0x4\n\
+ .word unk_debug_bss_1+0x8\n\
+ .word +0x2000000");
+}
+#else
static bool8 sub_8102034(struct Task *task)
{
if (++task->data[0] >= 30)
@@ -660,7 +1197,77 @@ static bool8 sub_8102034(struct Task *task)
}
return FALSE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102058(struct Task *task)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ ldr r0, ._133\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._130 @cond_branch\n\
+ ldr r0, ._133 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._130 @cond_branch\n\
+ ldr r5, ._133 + 8\n\
+ ldr r0, [r5]\n\
+ sub r0, r0, #0x1\n\
+ str r0, [r5]\n\
+ cmp r0, #0\n\
+ bne ._135 @cond_branch\n\
+ mov r0, #0x18\n\
+ bl PlaySE\n\
+ ldr r4, ._133 + 12\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E1C\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8103C14\n\
+ bl Random\n\
+ mov r1, #0x1f\n\
+ and r1, r1, r0\n\
+ add r1, r1, #0x1\n\
+ str r1, [r5]\n\
+ b ._132\n\
+._134:\n\
+ .align 2, 0\n\
+._133:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word unk_debug_bss_1+0x4\n\
+ .word unk_debug_bss_1+0x8\n\
+ .word +0x2000000\n\
+._130:\n\
+ ldr r0, ._136\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._135 @cond_branch\n\
+ mov r0, #0x18\n\
+ bl PlaySE\n\
+ ldr r4, ._136 + 4\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E1C\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8103C14\n\
+._132:\n\
+ mov r0, #0xd\n\
+ strb r0, [r4]\n\
+._135:\n\
+ mov r0, #0x0\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+._137:\n\
+ .align 2, 0\n\
+._136:\n\
+ .word gMain\n\
+ .word +0x2000000");
+}
+#else
static bool8 sub_8102058(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
@@ -672,7 +1279,121 @@ static bool8 sub_8102058(struct Task *task)
}
return FALSE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102090(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._146\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E40\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ bne ._138 @cond_branch\n\
+ ldrh r0, [r4, #0x18]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0x18]\n\
+ mov r1, #0xc\n\
+ strb r1, [r4]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x2\n\
+ ble ._161 @cond_branch\n\
+ mov r0, #0xe\n\
+ strb r0, [r4]\n\
+ ldr r0, ._146 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x8\n\
+ beq ._140 @cond_branch\n\
+ cmp r0, #0x8\n\
+ bgt ._141 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._142 @cond_branch\n\
+ cmp r0, #0x2\n\
+ bgt ._143 @cond_branch\n\
+ cmp r0, #0x1\n\
+ beq ._144 @cond_branch\n\
+ b ._161\n\
+._147:\n\
+ .align 2, 0\n\
+._146:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1\n\
+._143:\n\
+ cmp r0, #0x4\n\
+ beq ._148 @cond_branch\n\
+ b ._161\n\
+._141:\n\
+ cmp r0, #0x40\n\
+ beq ._150 @cond_branch\n\
+ cmp r0, #0x40\n\
+ bgt ._151 @cond_branch\n\
+ cmp r0, #0x10\n\
+ beq ._152 @cond_branch\n\
+ b ._161\n\
+._151:\n\
+ cmp r0, #0x80\n\
+ beq ._154 @cond_branch\n\
+ b ._161\n\
+._142:\n\
+ mov r0, #0x14\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x12\n\
+ b ._160\n\
+._144:\n\
+ mov r0, #0x14\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x12\n\
+ b ._160\n\
+._148:\n\
+ mov r0, #0x3\n\
+ strh r0, [r4, #0x28]\n\
+ mov r0, #0x1\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x2\n\
+ b ._160\n\
+._140:\n\
+ strh r2, [r4, #0x28]\n\
+ mov r0, #0x2\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x3\n\
+ b ._160\n\
+._152:\n\
+ mov r0, #0x2\n\
+ strh r0, [r4, #0x28]\n\
+ mov r0, #0x5\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x14\n\
+ b ._160\n\
+._150:\n\
+ mov r0, #0x13\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ strh r2, [r4, #0x2c]\n\
+ b ._161\n\
+._154:\n\
+ mov r0, #0x13\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+._160:\n\
+ strh r0, [r4, #0x2c]\n\
+._161:\n\
+ mov r0, #0x1\n\
+ b ._162\n\
+._138:\n\
+ mov r0, #0x0\n\
+._162:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
static bool8 sub_8102090(struct Task *task)
{
if (!sub_8102E40(eSlotMachine->unk18))
@@ -687,8 +1408,169 @@ static bool8 sub_8102090(struct Task *task)
}
return FALSE;
}
+#endif
-static bool8 sub_81020C8(struct Task *task)
+#if DEBUG
+__attribute__((naked))
+bool8 sub_81020C8(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._165\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0xc0\n\
+ and r0, r0, r1\n\
+ strb r0, [r4, #0x4]\n\
+ bl CheckMatch\n\
+ ldrb r0, [r4, #0xa]\n\
+ cmp r0, #0\n\
+ beq ._163 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ strb r0, [r4, #0xa]\n\
+ ldrb r0, [r4, #0xb]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r4, #0xb]\n\
+ b ._164\n\
+._166:\n\
+ .align 2, 0\n\
+._165:\n\
+ .word +0x2000000\n\
+._163:\n\
+ bl debug_sub_811B894\n\
+._164:\n\
+ ldr r4, ._171\n\
+ ldrh r0, [r4, #0x8]\n\
+ cmp r0, #0\n\
+ beq ._167 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x6c\n\
+ mov r2, #0xe\n\
+ ldsh r1, [r4, r2]\n\
+ bl debug_sub_811B5B4\n\
+ mov r0, #0xf\n\
+ strb r0, [r4]\n\
+ bl sub_8102A24\n\
+ bl sub_8103F70\n\
+ ldrh r0, [r4, #0x10]\n\
+ ldrh r1, [r4, #0xe]\n\
+ sub r0, r0, r1\n\
+ strh r0, [r4, #0x10]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._168 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r4, #0x10]\n\
+._168:\n\
+ ldrh r1, [r4, #0x8]\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._169 @cond_branch\n\
+ ldr r0, ._171 + 4\n\
+ bl PlayFanfare\n\
+ mov r0, #0x6\n\
+ bl sub_8104CAC\n\
+ b ._174\n\
+._172:\n\
+ .align 2, 0\n\
+._171:\n\
+ .word +0x2000000\n\
+ .word 0x185\n\
+._169:\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._173 @cond_branch\n\
+ ldr r0, ._175\n\
+ bl PlayFanfare\n\
+ mov r0, #0x5\n\
+ bl sub_8104CAC\n\
+ b ._174\n\
+._176:\n\
+ .align 2, 0\n\
+._175:\n\
+ .word 0x185\n\
+._173:\n\
+ mov r0, #0xc3\n\
+ lsl r0, r0, #0x1\n\
+ bl PlayFanfare\n\
+ mov r0, #0x2\n\
+ bl sub_8104CAC\n\
+._174:\n\
+ ldr r1, ._183\n\
+ ldrh r3, [r1, #0x8]\n\
+ mov r0, #0xe0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ add r2, r1, #0\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ ldrb r1, [r2, #0x4]\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ mov r1, #0x0\n\
+ strb r0, [r2, #0x4]\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ strb r1, [r2, #0xa]\n\
+ strb r1, [r2, #0xb]\n\
+ strb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ mov r0, #0x1\n\
+ strb r0, [r2, #0x3]\n\
+._179:\n\
+ ldrh r1, [r2, #0x8]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._185 @cond_branch\n\
+ ldrb r0, [r2, #0x2]\n\
+ cmp r0, #0xf\n\
+ bhi ._185 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r2, #0x2]\n\
+ ldrb r0, [r2, #0x2]\n\
+ bl sub_8104064\n\
+ b ._185\n\
+._184:\n\
+ .align 2, 0\n\
+._183:\n\
+ .word +0x2000000\n\
+._167:\n\
+ mov r0, #0x3\n\
+ bl sub_8104CAC\n\
+ mov r0, #0x14\n\
+ strb r0, [r4]\n\
+ ldrh r0, [r4, #0x12]\n\
+ ldrh r1, [r4, #0x10]\n\
+ add r0, r0, r1\n\
+ strh r0, [r4, #0x10]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ ldr r1, ._186\n\
+ cmp r0, r1\n\
+ ble ._185 @cond_branch\n\
+ strh r1, [r4, #0x10]\n\
+._185:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._187:\n\
+ .align 2, 0\n\
+._186:\n\
+ .word 0x270f");
+}
+#else
+bool8 sub_81020C8(struct Task *task)
{
eSlotMachine->unk04 &= 0xc0;
CheckMatch();
@@ -752,6 +1634,7 @@ static bool8 sub_81020C8(struct Task *task)
}
return FALSE;
}
+#endif
static bool8 sub_81021E0(struct Task *task)
{
@@ -902,6 +1785,48 @@ static bool8 sub_81023FC(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102424(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._234\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._233 @cond_branch\n\
+ ldr r0, ._234 + 4\n\
+ ldr r1, ._234 + 8\n\
+ ldrh r1, [r1, #0xc]\n\
+ ldr r2, ._234 + 12\n\
+ add r0, r0, r2\n\
+ strh r1, [r0]\n\
+._233:\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, ._234 + 8\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ mov r0, #0x0\n\
+ add sp, sp, #0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+._235:\n\
+ .align 2, 0\n\
+._234:\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word gSaveBlock1\n\
+ .word +0x2000000\n\
+ .word 0x494");
+}
+#else
static bool8 sub_8102424(struct Task *task)
{
gSaveBlock1.coins = eSlotMachine->coins;
@@ -909,6 +1834,7 @@ static bool8 sub_8102424(struct Task *task)
eSlotMachine->state++;
return FALSE;
}
+#endif
static bool8 sub_8102460(struct Task *task)
{
@@ -919,6 +1845,272 @@ static bool8 sub_8102460(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 debug_sub_8116E74(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ bl debug_sub_811B634\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._239 @cond_branch\n\
+ ldr r1, ._240\n\
+ mov r0, #0x5\n\
+ strb r0, [r1]\n\
+._239:\n\
+ mov r0, #0x0\n\
+ pop {r1}\n\
+ bx r1\n\
+._241:\n\
+ .align 2, 0\n\
+._240:\n\
+ .word +0x2000000");
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+static void sub_8102484(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ ldr r0, ._256\n\
+ ldrb r2, [r0, #0xa]\n\
+ add r4, r0, #0\n\
+ cmp r2, #0\n\
+ beq ._242 @cond_branch\n\
+ b ._270\n\
+._242:\n\
+ ldr r0, ._256 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._245 @cond_branch\n\
+ ldr r3, ._256 + 8\n\
+ ldrb r0, [r3]\n\
+ cmp r0, #0\n\
+ beq ._245 @cond_branch\n\
+ ldr r0, ._256 + 12\n\
+ ldrb r1, [r0]\n\
+ strb r1, [r4, #0x4]\n\
+ strb r2, [r3]\n\
+ strb r2, [r0]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._246 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x88\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._246:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._247 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x84\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._247:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._248 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x8c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._248:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._249 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x80\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._249:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._250 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._250:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._251 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x78\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._251:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._252 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._252:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._253 @cond_branch\n\
+ b ._270\n\
+._253:\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x70\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+ b ._270\n\
+._257:\n\
+ .align 2, 0\n\
+._256:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1+0x1\n\
+ .word unk_debug_bss_1+0x2\n\
+ .word unk_debug_bss_1+0x3\n\
+._245:\n\
+ add r5, r4, #0\n\
+ ldrb r1, [r5, #0x4]\n\
+ mov r0, #0xc0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._270 @cond_branch\n\
+ bl sub_8102540\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._260 @cond_branch\n\
+ bl sub_8102578\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ cmp r6, #0x3\n\
+ beq ._260 @cond_branch\n\
+ ldr r1, ._271\n\
+ lsl r0, r6, #0x1\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldrb r0, [r5, #0x4]\n\
+ orr r0, r0, r1\n\
+ strb r0, [r5, #0x4]\n\
+ mov r1, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._261 @cond_branch\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x88\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._261:\n\
+ ldrb r1, [r5, #0x4]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._262 @cond_branch\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x84\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._262:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._263 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x8c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._263:\n\
+ cmp r6, #0x1\n\
+ bne ._270 @cond_branch\n\
+._260:\n\
+ bl sub_81025BC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ cmp r6, #0x5\n\
+ beq ._270 @cond_branch\n\
+ ldr r4, ._271 + 4\n\
+ ldr r1, ._271 + 8\n\
+ lsl r0, r6, #0x1\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldrb r0, [r4, #0x4]\n\
+ orr r0, r0, r1\n\
+ strb r0, [r4, #0x4]\n\
+ mov r1, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._266 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x80\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._266:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._267 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._267:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._268 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x78\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._268:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._269 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._269:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._270 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x70\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._270:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._272:\n\
+ .align 2, 0\n\
+._271:\n\
+ .word gUnknown_083ECE42\n\
+ .word +0x2000000\n\
+ .word gUnknown_083ECE48");
+}
+#else
static void sub_8102484(void)
{
u8 r3;
@@ -944,6 +2136,7 @@ static void sub_8102484(void)
}
}
}
+#endif
static void sub_81024F0(void)
{
@@ -2854,7 +4047,13 @@ static void sub_8104C5C(void)
static void LoadSlotMachineWheelOverlay(void);
-static void sub_8104CAC(u8 arg0) {
+#if 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 +4074,7 @@ static void sub_8104CAC(u8 arg0) {
#ifdef GERMAN
if (arg0 == 5 && i <= 2)
- {
gSprites[spriteId].invisible = TRUE;
- }
#endif
}
}
@@ -3949,7 +5146,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;
@@ -3965,7 +5163,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 Menu_PrintText\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 Menu_PrintText\n"
+ " ldr r0, .__21 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 12\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 28\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 32\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 36\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 40\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 44\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 48\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 52\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 56\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 60\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 64\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 68\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_PrintText\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 Menu_DrawStdWindowFrame\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, .__85\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__85 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\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 Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, .__91 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, .__91 + 12\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\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 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 .__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 Menu_EraseScreen\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 Menu_EraseScreen\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 Menu_PrintText\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 Menu_PrintText\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 GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\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 Menu_PrintText\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,
@@ -5394,3 +7811,50 @@ static const struct SpritePalette gSlotMachineSpritePalettes[] = {
static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin");
+
+#if DEBUG
+
+const u8 Str_841B1C4[] = _("SETTEI");
+const u8 Str_841B1CB[] = _("MAWASITA");
+const u8 Str_841B1D4[] = _("MODOSI");
+const u8 Str_841B1DB[] = _("NOMARE");
+const u8 Str_841B1E2[] = _("MAE 7");
+const u8 Str_841B1E8[] = _("LR  HENKOU");
+const u8 Str_841B1F3[] = _("START  JIDOUSU");
+const u8 Str_841B202[] = _("SELECT  SETTEI");
+const u8 Str_841B211[] = _("TYUHSEN");
+const u8 Str_841B219[] = _("CHERRY");
+const u8 Str_841B220[] = _("REPLAY");
+const u8 Str_841B227[] = _("HASUBO");
+const u8 Str_841B22E[] = _("RURIRI");
+const u8 Str_841B235[] = _("INAZU");
+const u8 Str_841B23B[] = _("REG");
+const u8 Str_841B23F[] = _("BIG");
+const u8 Str_841B243[] = _("BD");
+const u8 Str_841B246[] = _("R7");
+const u8 Str_841B249[] = _("B7");
+const u8 Str_841B24C[] = _("A  COIN");
+const u8 Str_841B254[] = _("TYUHSEN");
+const u8 Str_841B25C[] = _("UD  100");
+const u8 Str_841B264[] = _("LR  1000");
+const u8 Str_841B26D[] = _("×");
+
+// Is this MenuAction2? I'm not sure.
+const struct {const u8 *text; void (*func)();} _841B270[] =
+{
+ {Str_841B219, debug_sub_811B1C4},
+ {Str_841B220, debug_sub_811B1EC},
+ {Str_841B227, debug_sub_811B210},
+ {Str_841B22E, debug_sub_811B238},
+ {Str_841B235, debug_sub_811B260},
+ {Str_841B23B, debug_sub_811B288},
+ {Str_841B23F, debug_sub_811B2B0},
+ {Str_841B243, debug_sub_811B2D8},
+};
+
+const u8 Str_841B2B0[] = _("·カウントエラーがおきました");
+const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました");
+const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました");
+const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました");
+
+#endif
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 381c19bb7..1b01bf7a8 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -44,6 +44,11 @@ enum {
MENU_ACTION_PLAYER_LINK
};
+#if 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);
+#if 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 gScanlineEffectRegBuffers\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 Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._16 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\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 Menu_EraseScreen\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 SetEReaderTrainerChecksum\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/trader.c b/src/field/trader.c
index 64bd708f6..885557d5a 100644
--- a/src/field/trader.c
+++ b/src/field/trader.c
@@ -108,7 +108,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
{
if (trader->unk1[i] > DECOR_REGISTEEL_DOLL)
{
- Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2);
+ Menu_PrintText(gOtherText_FiveQuestions, 1, numDecorations * 2 + 2);
}
else
{
diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c
index 79542422e..19778e29b 100644
--- a/src/field/wild_encounter.c
+++ b/src/field/wild_encounter.c
@@ -3698,13 +3698,13 @@ const u16 gRoute119WaterTileData[] =
extern u16 gSpecialVar_Result;
extern u8 S_RepelWoreOff[];
-EWRAM_DATA static u8 sWildEncountersDisabled = 0;
+EWRAM_DATA u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
#define NUM_FEEBAS_SPOTS 6
-static u16 FeebasRandom(void);
-static void FeebasSeedRng(u16 seed);
+u16 FeebasRandom(void);
+void FeebasSeedRng(u16 seed);
static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
@@ -3791,17 +3791,30 @@ static bool8 CheckFeebas(void)
return FALSE;
}
-static u16 FeebasRandom(void)
+u16 FeebasRandom(void)
{
sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue;
return sFeebasRngValue >> 16;
}
-static void FeebasSeedRng(u16 seed)
+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..db0c96938 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -68,6 +68,11 @@ struct MailGraphics
u16 color12;
};
+#if DEBUG
+// should be static
+__attribute__((section(".bss"))) u8 unk_debug_bss_2;
+#endif
+
const u16 gUnknown_083E562C[][2] =
{
{0x6ACD, 0x51A5},
@@ -234,11 +239,86 @@ const struct MailLayout gUnknown_083E57A4[] =
{5, 15, 15, 4, 3, Unknown_3E5790},
};
+#if DEBUG
+
+const u8 Str_8411540[] = _("レイアウトを にほんごで ひょうじ?"); // Display using Japanese layout?
+const u8 Str_8411553[] = _("にほんご "); // Japanese
+const u8 Str_8411559[] = _("かいがい "); // Overseas
+
+const u8 *const _8411560[] =
+{
+ Str_8411553,
+ Str_8411559,
+};
+
+const u8 Str_8411568[] = _("イメージ タイプを えらんでね"); // Choose an image type
+const u8 Str_8411578[] = _("{STR_VAR_1}");
+const u8 Str_841157B[] = _("オレンジ "); // Orange
+const u8 Str_8411581[] = _("ハーバー "); // Harbor
+const u8 Str_8411587[] = _("キラキラ "); // Glitter
+const u8 Str_841158D[] = _("メカニカル"); // Mech
+const u8 Str_8411593[] = _("ウッディー"); // Wood
+const u8 Str_8411599[] = _("クロス  "); // Wave
+const u8 Str_841159F[] = _("トレジャー"); // Bead
+const u8 Str_84115A5[] = _("シャドウ "); // Shadow
+const u8 Str_84115AB[] = _("トロピカル"); // Tropic
+const u8 Str_84115B1[] = _("ドリーム "); // Dream
+const u8 Str_84115B7[] = _("ミラクル "); // Fab
+const u8 Str_84115BD[] = _("レトロ  "); // Retro
+
+const u8 *const _84115C4[] =
+{
+ Str_841157B,
+ Str_8411581,
+ Str_8411587,
+ Str_841158D,
+ Str_8411593,
+ Str_8411599,
+ Str_841159F,
+ Str_84115A5,
+ Str_84115AB,
+ Str_84115B1,
+ Str_84115B7,
+ Str_84115BD,
+};
+
+const u8 Str_84115F4[] = _("メールをみる"); // View Mail
+const u8 Str_84115FB[] = _("メールとうろく"); // Register Mail
+const u8 Str_8411603[] = _("もたせる"); // Give to Pokémon
+const u8 Str_8411608[] = _("メールをけす"); // Delete Mail
+
+#endif
+
// XXX: what is this?
static u8 *const sSharedMemPtr = gSharedMem;
+#if DEBUG
+
+const u8 Str_841160F[] = _("{STR_VAR_1} {STR_VAR_2}");
+const u8 Str_841161A[] = _("メール{STR_VAR_1} {STR_VAR_2}");
+const u8 Str_8411623[] = _("メール{STR_VAR_1}を だれに もたせる?");
+const u8 Str_8411634[] = _("000 {STR_VAR_1}");
+const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n"
+ "しんき とうろく できません");
+const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n"
+ "へんこう できません");
+const u8 Str_841167D[] = _("メール{STR_VAR_1} とうろく かいじょ");
+const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n"
+ "メール いがいは けせません");
+const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}");
+
+const struct MenuAction _84116BC[] =
+{
+ {Str_84115F4, NULL},
+ {Str_84115FB, NULL},
+ {Str_8411603, NULL},
+ {Str_8411608, NULL},
+};
+
+#endif
+
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 +327,204 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
+// some debug variable, I guess.
+// TODO: where exactly is this located?
+__attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0;
+
+#if DEBUG
+__attribute__((naked))
+void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
+{
+ 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_0300074C\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 +588,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 +735,7 @@ static u8 sub_80F8A28(void)
return FALSE;
}
-static void sub_80F8D50(void)
+/*static*/ void sub_80F8D50(void)
{
do
{
@@ -573,6 +852,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 +930,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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 gMenuCallback\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 ScanlineEffect_Stop\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/pokedex.c b/src/pokemon/pokedex.c
index cbd816206..090873f9d 100644
--- a/src/pokemon/pokedex.c
+++ b/src/pokemon/pokedex.c
@@ -1273,7 +1273,7 @@ static u8 sub_8091260(u16 num, u8, u8, u8);
static void sub_8091304(const u8 *name, u8, u8);
static void sub_8091458(u16 height, u8 i, u8 i1);
static void sub_8091564(u16 weight, u8 i, u8 i1);
-static void sub_8091738(u16, u16, u16);
+void sub_8091738(u16, u16, u16);
static void sub_80917CC(u16 i, u16 i1);
static u16 sub_8091818(u8, u16, u16, u16);
u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d);
@@ -4449,7 +4449,7 @@ static void sub_8091564(u16 arg0, u8 left, u8 top)
}
#endif
-static void sub_8091738(u16 num, u16 b, u16 c)
+void sub_8091738(u16 num, u16 b, u16 c)
{
u8 arr[0x80];
u16 i;
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c
index 0242e7444..63f1b322a 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);
}
+#if 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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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 gMysteryEventScriptCmdTableEnd+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/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c
index c0cae9353..8e1bd1671 100644
--- a/src/pokemon/pokemon_menu.c
+++ b/src/pokemon/pokemon_menu.c
@@ -912,6 +912,139 @@ static bool8 SetUpFieldMove_Waterfall(void)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80986AC()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ mov r4, sp\n\
+ add r4, r4, #0x2\n\
+ mov r0, sp\n\
+ add r1, r4, #0\n\
+ bl GetXYCoordsOneStepInFrontOfPlayer\n\
+ mov r0, sp\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r4, r2]\n\
+ bl MapGridGetMetatileBehaviorAt\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl MetatileBehavior_IsWaterfall\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._274 @cond_branch\n\
+ bl IsPlayerSurfingNorth\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._274 @cond_branch\n\
+ bl sub_808AE08\n\
+ b ._275\n\
+._274:\n\
+ bl ScriptContext2_Disable\n\
+._275:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+static void sub_808AE8C(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ ldr r0, ._281\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x21\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ mov r5, #0x0\n\
+._287:\n\
+ mov r0, #0x64\n\
+ add r1, r5, #0\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._281 + 4\n\
+ add r4, r1, r0\n\
+ add r0, r4, #0\n\
+ mov r1, #0xb\n\
+ bl GetMonData\n\
+ cmp r0, #0\n\
+ beq ._284 @cond_branch\n\
+ add r0, r5, #0\n\
+ bl sub_806D668\n\
+ ldr r0, ._281 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._279 @cond_branch\n\
+ add r0, r4, #0\n\
+ mov r1, #0x2d\n\
+ bl GetMonData\n\
+ cmp r0, #0\n\
+ bne ._278 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r1, r6, #0\n\
+ bl CanMonLearnTMHM\n\
+ cmp r0, #0\n\
+ bne ._279 @cond_branch\n\
+._278:\n\
+ add r0, r5, #0\n\
+ mov r1, #0x9a\n\
+ bl sub_806BC3C\n\
+ b ._284\n\
+._282:\n\
+ .align 2, 0\n\
+._281:\n\
+ .word gSpecialVar_ItemId\n\
+ .word gPlayerParty\n\
+ .word gUnknown_020297ED\n\
+._279:\n\
+ mov r0, #0x64\n\
+ add r4, r5, #0\n\
+ mul r4, r4, r0\n\
+ ldr r0, ._285\n\
+ add r4, r4, r0\n\
+ ldr r0, ._285 + 4\n\
+ ldrh r0, [r0]\n\
+ bl ItemIdToBattleMoveId\n\
+ add r1, r0, #0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r1, r1, #0x10\n\
+ add r0, r4, #0\n\
+ bl pokemon_has_move\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._283 @cond_branch\n\
+ add r0, r5, #0\n\
+ mov r1, #0xa8\n\
+ bl sub_806BC3C\n\
+ b ._284\n\
+._286:\n\
+ .align 2, 0\n\
+._285:\n\
+ .word gPlayerParty\n\
+ .word gSpecialVar_ItemId\n\
+._283:\n\
+ add r0, r5, #0\n\
+ mov r1, #0x8c\n\
+ bl sub_806BC3C\n\
+._284:\n\
+ add r0, r5, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ cmp r5, #0x5\n\
+ bls ._287 @cond_branch\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
static void sub_808AE8C(void)
{
u8 i;
@@ -930,6 +1063,7 @@ static void sub_808AE8C(void)
}
}
}
+#endif
static void sub_808AF20(void)
{
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 001cebe45..cd4c18252 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -13,7 +13,8 @@ extern const struct StorageAction gUnknown_083B6DF4[];
EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
-void sub_8098898(u8 index) {
+void sub_8098898(u8 index)
+{
u8 *ptr;
Menu_DrawStdWindowFrame(10, 16, 29, 19);
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 96f9c44f9..29973fd99 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -41,11 +41,11 @@ static void sub_80A0090(struct Pokemon *);
static void sub_80A015C(struct Pokemon *);
static void sub_809DE44(void);
static void sub_809EB40(u8);
-static void sub_809EBC4(void);
-static void sub_809E044(void);
+/*static*/ void sub_809EBC4(void);
+/*static*/ void sub_809E044(void);
static void sub_80A1D84(struct Pokemon *);
-static void sub_80A18C4(void);
-static bool8 LoadPokemonSummaryScreenGraphics(void);
+/*static*/ void sub_80A18C4(void);
+/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void);
static bool8 MonKnowsMultipleMoves(struct Pokemon *);
static void PrintSummaryWindowHeaderText(void);
static void sub_80A1DCC(struct Pokemon *);
@@ -63,8 +63,8 @@ static void PrintHeldItemName(u16, u8, u8);
static void PrintNumRibbons(struct Pokemon *);
static void DrawExperienceProgressBar(struct Pokemon *, u8, u8);
static void sub_809E13C(u8 taskId);
-static void sub_80A1950(void);
-static void sub_809DE64(void);
+/*static*/ void sub_80A1950(void);
+/*static*/ void sub_809DE64(void);
static void SummaryScreenHandleAButton(u8);
static void SummaryScreenHandleUpDownInput(u8, s8);
static bool8 sub_809F7D0(u8);
@@ -572,7 +572,43 @@ static const u8 sUnknown_083C15BC[] = {
-1, 15, 0, 10,
};
-
+#if DEBUG
+__attribute__((naked))
+void sub_809D844(void)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl RunTasks\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ bl UpdatePaletteFade\n\
+ ldr r0, ._2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1 @cond_branch\n\
+ ldr r0, ._2 + 4\n\
+ ldr r1, ._2 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x3\n\
+ str r1, [sp]\n\
+ mov r1, #0x14\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1:\n\
+ add sp, sp, #0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+._3:\n\
+ .align 2, 0\n\
+._2:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_809D844(void)
{
RunTasks();
@@ -580,6 +616,7 @@ void sub_809D844(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+#endif
void sub_809D85C(void)
{
@@ -689,6 +726,491 @@ void sub_809DA1C(void)
}
}
+#if DEBUG
+__attribute__((naked))
+bool8 sub_809DA84(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffff8\n\
+ ldr r1, ._52\n\
+ ldr r2, ._52 + 4\n\
+ add r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ mov ip, r1\n\
+ cmp r0, #0x16\n\
+ bls ._50 @cond_branch\n\
+ b ._51\n\
+._50:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._52 + 8\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._53:\n\
+ .align 2, 0\n\
+._52:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._54\n\
+._54:\n\
+ .word ._55\n\
+ .word ._56\n\
+ .word ._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\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+ .word ._76\n\
+ .word ._77\n\
+._55:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl ResetSpriteData\n\
+ b ._146\n\
+._56:\n\
+ bl ScanlineEffect_Stop\n\
+ ldr r1, ._80\n\
+ ldr r2, ._80 + 4\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._81:\n\
+ .align 2, 0\n\
+._80:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._57:\n\
+ bl FreeAllSpritePalettes\n\
+ b ._146\n\
+._58:\n\
+ mov r2, #0xc0\n\
+ lsl r2, r2, #0x13\n\
+ mov r3, #0x80\n\
+ lsl r3, r3, #0x9\n\
+ mov r5, #0x0\n\
+ ldr r1, ._85\n\
+ mov r4, #0x80\n\
+ lsl r4, r4, #0x5\n\
+ ldr r6, ._85 + 4\n\
+ mov r7, #0x85\n\
+ lsl r7, r7, #0x18\n\
+._83:\n\
+ str r5, [sp, #0x4]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r2, [r1, #0x4]\n\
+ str r6, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ add r2, r2, r4\n\
+ sub r3, r3, r4\n\
+ cmp r3, r4\n\
+ bhi ._83 @cond_branch\n\
+ str r5, [sp, #0x4]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r2, [r1, #0x4]\n\
+ lsr r0, r3, #0x2\n\
+ orr r0, r0, r7\n\
+ str r0, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ ldr r1, ._85 + 8\n\
+ add r1, r1, ip\n\
+ b ._153\n\
+._86:\n\
+ .align 2, 0\n\
+._85:\n\
+ .word 0x40000d4\n\
+ .word 0x85000400\n\
+ .word 0x43c\n\
+._59:\n\
+ bl sub_809DE64\n\
+ ldr r1, ._88\n\
+ ldr r2, ._88 + 4\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._89:\n\
+ .align 2, 0\n\
+._88:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._60:\n\
+ ldr r0, ._91\n\
+ bl Text_LoadWindowTemplate\n\
+ b ._146\n\
+._92:\n\
+ .align 2, 0\n\
+._91:\n\
+ .word gWindowTemplate_81E6E6C\n\
+._61:\n\
+ ldr r0, ._94\n\
+ bl MultistepInitMenuWindowBegin\n\
+ ldr r1, ._94 + 4\n\
+ ldr r2, ._94 + 8\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word gWindowTemplate_81E6E6C\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._62:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ bne ._96 @cond_branch\n\
+ b ._157\n\
+._96:\n\
+ b ._146\n\
+._63:\n\
+ bl sub_809DA1C\n\
+ ldr r1, ._100\n\
+ ldr r2, ._100 + 4\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._101:\n\
+ .align 2, 0\n\
+._100:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._64:\n\
+ ldr r1, ._103\n\
+ ldr r2, ._103 + 4\n\
+ ldr r0, ._103 + 8\n\
+ str r1, [r0]\n\
+ str r2, [r0, #0x4]\n\
+ ldr r1, ._103 + 12\n\
+ str r1, [r0, #0x8]\n\
+ ldr r1, [r0, #0x8]\n\
+ ldr r1, ._103 + 16\n\
+ ldr r2, ._103 + 20\n\
+ str r1, [r0]\n\
+ str r2, [r0, #0x4]\n\
+ ldr r1, ._103 + 24\n\
+ str r1, [r0, #0x8]\n\
+ ldr r0, [r0, #0x8]\n\
+ ldr r0, ._103 + 28\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ ldr r1, ._103 + 32\n\
+ add r1, r1, ip\n\
+ b ._153\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word gSummaryScreenTextTiles\n\
+ .word 0x600d000\n\
+ .word 0x40000d4\n\
+ .word 0x800000a0\n\
+ .word sSummaryScreenButtonTiles\n\
+ .word 0x600d140\n\
+ .word 0x80000080\n\
+ .word +0x2018000\n\
+ .word 0x43c\n\
+._65:\n\
+ bl LoadPokemonSummaryScreenGraphics\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._105 @cond_branch\n\
+ b ._157\n\
+._105:\n\
+ ldr r0, ._108\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ b ._146\n\
+._109:\n\
+ .align 2, 0\n\
+._108:\n\
+ .word +0x2018000\n\
+._66:\n\
+ bl sub_80A18C4\n\
+ ldr r1, ._111\n\
+ ldr r2, ._111 + 4\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._112:\n\
+ .align 2, 0\n\
+._111:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._67:\n\
+ ldr r4, ._115\n\
+ add r0, r4, #0\n\
+ bl sub_809F678\n\
+ add r0, r4, #0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._113 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_80A12D0\n\
+ b ._114\n\
+._116:\n\
+ .align 2, 0\n\
+._115:\n\
+ .word +0x2018010\n\
+._113:\n\
+ mov r0, #0xa\n\
+ bl sub_80A12D0\n\
+._114:\n\
+ ldr r0, ._118\n\
+ bl DrawPokerusSurvivorDot\n\
+ b ._146\n\
+._119:\n\
+ .align 2, 0\n\
+._118:\n\
+ .word +0x2018010\n\
+._68:\n\
+ bl sub_80A1950\n\
+ ldr r0, ._121\n\
+ bl sub_80A1D84\n\
+ ldr r1, ._121 + 4\n\
+ ldr r2, ._121 + 8\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._122:\n\
+ .align 2, 0\n\
+._121:\n\
+ .word +0x2018010\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._69:\n\
+ ldr r4, ._124\n\
+ add r0, r4, #0\n\
+ bl sub_80A1DE8\n\
+ add r4, r4, #0x64\n\
+ mov r0, #0x0\n\
+ strb r0, [r4]\n\
+ b ._146\n\
+._125:\n\
+ .align 2, 0\n\
+._124:\n\
+ .word +0x2018010\n\
+._70:\n\
+ ldr r4, ._129\n\
+ add r5, r4, #0\n\
+ add r5, r5, #0x64\n\
+ add r0, r4, #0\n\
+ add r1, r5, #0\n\
+ bl sub_809F6B4\n\
+ sub r4, r4, #0x10\n\
+ strb r0, [r4, #0xc]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._126 @cond_branch\n\
+ b ._157\n\
+._126:\n\
+ mov r0, #0x0\n\
+ strb r0, [r5]\n\
+ ldr r1, ._129 + 4\n\
+ ldr r2, ._129 + 8\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._130:\n\
+ .align 2, 0\n\
+._129:\n\
+ .word +0x2018010\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._71:\n\
+ bl sub_809E044\n\
+ bl DrawSummaryScreenNavigationDots\n\
+ b ._146\n\
+._72:\n\
+ ldr r1, ._134\n\
+ ldrb r0, [r1, #0xb]\n\
+ cmp r0, #0x1\n\
+ bhi ._132 @cond_branch\n\
+ ldr r0, ._134 + 4\n\
+ ldrb r1, [r1, #0xb]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldr r0, [r1]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\
+._132:\n\
+ ldr r1, ._134 + 8\n\
+ ldr r2, ._134 + 12\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._135:\n\
+ .align 2, 0\n\
+._134:\n\
+ .word +0x2018000\n\
+ .word sUnknown_083C1580\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._73:\n\
+ ldr r0, ._137\n\
+ bl sub_809FAC8\n\
+ b ._146\n\
+._138:\n\
+ .align 2, 0\n\
+._137:\n\
+ .word +0x2018010\n\
+._74:\n\
+ ldr r2, ._140\n\
+ ldr r0, ._140 + 4\n\
+ ldrb r1, [r0, #0xb]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r2\n\
+ add r0, r0, #0x10\n\
+ ldr r1, [r1]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cf8\n\
+ ldr r1, ._140 + 8\n\
+ ldr r2, ._140 + 12\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._141:\n\
+ .align 2, 0\n\
+._140:\n\
+ .word sUnknown_083C1598\n\
+ .word +0x2018000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._75:\n\
+ ldr r0, ._144\n\
+ mov r1, #0x2d\n\
+ bl GetMonData\n\
+ add r1, r0, #0\n\
+ cmp r1, #0\n\
+ beq ._142 @cond_branch\n\
+ ldr r1, ._144 + 4\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ b ._146\n\
+._145:\n\
+ .align 2, 0\n\
+._144:\n\
+ .word +0x2018010\n\
+ .word gBattle_BG3_X\n\
+._142:\n\
+ ldr r0, ._147\n\
+ strh r1, [r0]\n\
+ b ._146\n\
+._148:\n\
+ .align 2, 0\n\
+._147:\n\
+ .word gBattle_BG3_X\n\
+._76:\n\
+ bl sub_809EBC4\n\
+ ldr r0, ._151\n\
+ add r0, r0, #0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._149 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl sub_80A1488\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl sub_80A1654\n\
+ b ._150\n\
+._152:\n\
+ .align 2, 0\n\
+._151:\n\
+ .word +0x2018000\n\
+._149:\n\
+ mov r0, #0xa\n\
+ mov r1, #0x0\n\
+ bl sub_80A1488\n\
+ mov r0, #0xa\n\
+ mov r1, #0x0\n\
+ bl sub_80A1654\n\
+._150:\n\
+ bl PrintSummaryWindowHeaderText\n\
+ ldr r1, ._154\n\
+ ldr r2, ._154 + 4\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._155:\n\
+ .align 2, 0\n\
+._154:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._77:\n\
+ bl sub_8055870\n\
+ cmp r0, #0x1\n\
+ beq ._157 @cond_branch\n\
+._146:\n\
+ ldr r1, ._158\n\
+ ldr r0, ._158 + 4\n\
+ add r1, r1, r0\n\
+._153:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._157\n\
+._159:\n\
+ .align 2, 0\n\
+._158:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._51:\n\
+ ldr r0, ._162\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0x1\n\
+ str r0, [sp]\n\
+ mov r0, #0xff\n\
+ mov r1, #0x0\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginHardwarePaletteFade\n\
+ ldr r0, ._162 + 4\n\
+ bl SetMainCallback2\n\
+ ldr r2, ._162 + 8\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r0, ._162 + 12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._160 @cond_branch\n\
+ ldr r0, ._162 + 16\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._162 + 20\n\
+ mov r3, #0x3\n\
+ bl debug_sub_8008218\n\
+._160:\n\
+ mov r0, #0x1\n\
+ b ._161\n\
+._163:\n\
+ .align 2, 0\n\
+._162:\n\
+ .word sub_809D85C+1\n\
+ .word sub_809D844+1\n\
+ .word gPaletteFade\n\
+ .word gLinkOpen\n\
+ .word 0x600dde0\n\
+ .word 0x600f000\n\
+._157:\n\
+ mov r0, #0x0\n\
+._161:\n\
+ add sp, sp, #0x8\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
bool8 sub_809DA84(void)
{
switch (gMain.state)
@@ -846,13 +1368,15 @@ bool8 sub_809DA84(void)
return FALSE;
}
+#endif
static void sub_809DE44(void)
{
- while (sub_809DA84() != TRUE && sub_80F9344() != TRUE);
+ while (sub_809DA84() != TRUE && sub_80F9344() != TRUE)
+ ;
}
-static void sub_809DE64(void)
+/*static*/ void sub_809DE64(void)
{
REG_BG0CNT = 0x1E08;
REG_BG1CNT = 0x4801;
@@ -879,7 +1403,7 @@ static void sub_809DE64(void)
REG_DISPCNT = 0x1F40;
}
-static bool8 LoadPokemonSummaryScreenGraphics(void)
+/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void)
{
switch (pssData.loadGfxState)
{
@@ -929,7 +1453,7 @@ static bool8 LoadPokemonSummaryScreenGraphics(void)
return FALSE;
}
-static void sub_809E044(void)
+/*static*/ void sub_809E044(void)
{
LoadPalette(&gUnknownPalette_81E6692[28], 129, 2);
LoadPalette(&gUnknownPalette_81E6692[30], 136, 2);
@@ -1508,7 +2032,7 @@ static void sub_809EB40(u8 taskId)
}
}
-static void sub_809EBC4(void)
+/*static*/ void sub_809EBC4(void)
{
if (pssData.page != PSS_PAGE_INFO)
{
@@ -2566,14 +3090,14 @@ static void sub_809FC34(struct Pokemon *mon)
buffer = gStringVar1;
buffer = sub_80A1E58(buffer, 13);
buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
- buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash);
+ buffer = StringCopy(buffer, gOtherText_FiveQuestions);
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x13;
buffer[2] = 0x4E;
buffer[3] = EOS;
Menu_PrintText(gStringVar1, 11, 4);
- sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1);
+ sub_80A1EF8(gOtherText_FiveQuestions, 13, 193, 32, 1);
sub_80A198C(9, 120, 48, 0);
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
@@ -4875,7 +5399,7 @@ static void sub_80A1888(struct Sprite *sprite)
}
}
-static void sub_80A18C4(void)
+/*static*/ void sub_80A18C4(void)
{
u8 i;
@@ -4899,7 +5423,7 @@ static void sub_80A1918(u8 a, u8 invisible)
gSprites[ewram1A000[a]].invisible = invisible;
}
-static void sub_80A1950(void)
+/*static*/ void sub_80A1950(void)
{
u8 i;
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index b31be2ce1..f9e2beccb 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -132,6 +132,10 @@ extern const u8 gUnknown_08E99FB0[];
extern const u8 gUnknown_08E9A100[];
extern const u16 gPokenavHoennMap1_Pal[];
+// TODO: decompile the debug code so the compiler doesn't complain about
+// unused static functions
+#define static
+
static void sub_80EBCA8();
static void sub_80EEE20();
static bool8 sub_80EEE54();
@@ -297,7 +301,6 @@ extern void sub_80F19FC();
extern u16 gKeyRepeatStartDelay;
-
void sub_80EBA5C()
{
switch (gMain.state)
@@ -469,6 +472,315 @@ void sub_80EBDBC(void (*func)(void))
ewram0_10.var304 = 0;
}
+#if DEBUG
+__attribute__((naked))
+void sub_80EBDD8()
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._64\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r2, r1, #0\n\
+ cmp r0, #0x11\n\
+ bls ._62 @cond_branch\n\
+ b ._131\n\
+._62:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._64 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._65:\n\
+ .align 2, 0\n\
+._64:\n\
+ .word +0x2000000\n\
+ .word ._66\n\
+._66:\n\
+ .word ._67\n\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+ .word ._76\n\
+ .word ._77\n\
+ .word ._78\n\
+ .word ._79\n\
+ .word ._80\n\
+ .word ._81\n\
+ .word ._82\n\
+ .word ._83\n\
+ .word ._84\n\
+._67:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x13\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ ldr r1, ._86\n\
+ ldr r3, ._86 + 4\n\
+ add r0, r1, r3\n\
+ ldrb r2, [r0]\n\
+ sub r3, r3, #0x2f\n\
+ add r0, r1, r3\n\
+ strb r2, [r0]\n\
+ ldr r0, ._86 + 8\n\
+ add r2, r1, r0\n\
+ mov r0, #0x5\n\
+ strb r0, [r2]\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._124\n\
+._87:\n\
+ .align 2, 0\n\
+._86:\n\
+ .word +0x2000000\n\
+ .word 0x6ddc\n\
+ .word 0x6dae\n\
+._68:\n\
+ bl sub_80F3FF0\n\
+ ldr r1, ._91\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._69:\n\
+ bl sub_80F4024\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._88 @cond_branch\n\
+ b ._131\n\
+._88:\n\
+ ldr r1, ._91\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._124\n\
+._92:\n\
+ .align 2, 0\n\
+._91:\n\
+ .word +0x2000000\n\
+._70:\n\
+ bl sub_80F2598\n\
+ ldr r1, ._94\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._124\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word +0x2000000\n\
+._71:\n\
+ bl sub_80EEE20\n\
+ ldr r1, ._99\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._72:\n\
+ bl sub_80EEE54\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._96 @cond_branch\n\
+ b ._131\n\
+._96:\n\
+ bl sub_80EEE08\n\
+ ldr r1, ._99\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._124\n\
+._100:\n\
+ .align 2, 0\n\
+._99:\n\
+ .word +0x2000000\n\
+._73:\n\
+ mov r0, #0x0\n\
+ bl sub_80EF248\n\
+ ldr r1, ._104\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._74:\n\
+ mov r0, #0x0\n\
+ bl sub_80EF284\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._101 @cond_branch\n\
+ b ._131\n\
+._101:\n\
+ b ._110\n\
+._105:\n\
+ .align 2, 0\n\
+._104:\n\
+ .word +0x2000000\n\
+._75:\n\
+ mov r0, #0x0\n\
+ bl sub_80F1B8C\n\
+ ldr r1, ._108\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._76:\n\
+ mov r0, #0x0\n\
+ bl sub_80F1BC8\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._131 @cond_branch\n\
+ ldr r1, ._108\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._124\n\
+._109:\n\
+ .align 2, 0\n\
+._108:\n\
+ .word +0x2000000\n\
+._77:\n\
+ ldr r0, ._111\n\
+ bl SetVBlankCallback\n\
+ b ._110\n\
+._112:\n\
+ .align 2, 0\n\
+._111:\n\
+ .word sub_80EBD18+1\n\
+._78:\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 r1, ._114\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._124\n\
+._115:\n\
+ .align 2, 0\n\
+._114:\n\
+ .word +0x2000000\n\
+._79:\n\
+ mov r0, #0x0\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._117\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._124\n\
+._118:\n\
+ .align 2, 0\n\
+._117:\n\
+ .word +0x2000000\n\
+._80:\n\
+ ldr r0, ._121\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._131 @cond_branch\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r2, r3\n\
+ b ._124\n\
+._122:\n\
+ .align 2, 0\n\
+._121:\n\
+ .word gPaletteFade\n\
+._81:\n\
+ mov r0, #0x0\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._125\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._82:\n\
+ mov r0, #0x0\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._131 @cond_branch\n\
+ ldr r1, ._125\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._124\n\
+._126:\n\
+ .align 2, 0\n\
+._125:\n\
+ .word +0x2000000\n\
+._83:\n\
+ bl sub_80F1DF0\n\
+._110:\n\
+ ldr r1, ._128\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+._124:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._131\n\
+._129:\n\
+ .align 2, 0\n\
+._128:\n\
+ .word +0x2000000\n\
+._84:\n\
+ bl sub_80F1E50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._131 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl sub_80EF428\n\
+ ldr r0, ._132\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._132 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._131 @cond_branch\n\
+ ldr r0, ._132 + 8\n\
+ ldr r2, ._132 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._131:\n\
+ add sp, sp, #0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+._133:\n\
+ .align 2, 0\n\
+._132:\n\
+ .word sub_80EC268+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800");
+}
+#else
void sub_80EBDD8()
{
switch (ewram0_10.var304)
@@ -556,7 +868,285 @@ void sub_80EBDD8()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EC00C()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._136\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0xd\n\
+ bls ._134 @cond_branch\n\
+ b ._191\n\
+._134:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._136 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._137:\n\
+ .align 2, 0\n\
+._136:\n\
+ .word +0x2000000\n\
+ .word ._138\n\
+._138:\n\
+ .word ._139\n\
+ .word ._140\n\
+ .word ._141\n\
+ .word ._142\n\
+ .word ._143\n\
+ .word ._144\n\
+ .word ._145\n\
+ .word ._146\n\
+ .word ._147\n\
+ .word ._148\n\
+ .word ._149\n\
+ .word ._150\n\
+ .word ._151\n\
+ .word ._152\n\
+._139:\n\
+ bl sub_80EEF78\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._153 @cond_branch\n\
+ b ._191\n\
+._153:\n\
+ ldr r0, ._156\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED1C\n\
+ ldr r4, ._156 + 4\n\
+ ldr r1, ._156 + 8\n\
+ add r0, r4, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._156 + 12\n\
+ add r0, r4, r2\n\
+ strb r1, [r0]\n\
+ ldr r0, ._156 + 16\n\
+ add r1, r4, r0\n\
+ mov r0, #0x5\n\
+ strb r0, [r1]\n\
+ bl sub_80EEE08\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r4, r1\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._191\n\
+._157:\n\
+ .align 2, 0\n\
+._156:\n\
+ .word sub_80EBD80+1\n\
+ .word +0x2000000\n\
+ .word 0x6ddc\n\
+ .word 0x6dad\n\
+ .word 0x6dae\n\
+._140:\n\
+ mov r0, #0x0\n\
+ bl sub_80EF248\n\
+ ldr r1, ._161\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._141:\n\
+ mov r0, #0x0\n\
+ bl sub_80EF284\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._158 @cond_branch\n\
+ b ._191\n\
+._158:\n\
+ ldr r1, ._161\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._184\n\
+._162:\n\
+ .align 2, 0\n\
+._161:\n\
+ .word +0x2000000\n\
+._142:\n\
+ mov r0, #0x0\n\
+ bl sub_80F1B8C\n\
+ ldr r1, ._166\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._143:\n\
+ mov r0, #0x0\n\
+ bl sub_80F1BC8\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._163 @cond_branch\n\
+ b ._191\n\
+._163:\n\
+ ldr r1, ._166\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._184\n\
+._167:\n\
+ .align 2, 0\n\
+._166:\n\
+ .word +0x2000000\n\
+._144:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._191 @cond_branch\n\
+ b ._169\n\
+._145:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._171\n\
+ bl SetVBlankCallback\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._184\n\
+._172:\n\
+ .align 2, 0\n\
+._171:\n\
+ .word sub_80EBD18+1\n\
+._146:\n\
+ mov r0, #0x0\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._174\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._184\n\
+._175:\n\
+ .align 2, 0\n\
+._174:\n\
+ .word +0x2000000\n\
+._147:\n\
+ ldr r0, ._178\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._191 @cond_branch\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._184\n\
+._179:\n\
+ .align 2, 0\n\
+._178:\n\
+ .word gPaletteFade\n\
+._148:\n\
+ bl sub_80F2598\n\
+ ldr r1, ._181\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._184\n\
+._182:\n\
+ .align 2, 0\n\
+._181:\n\
+ .word +0x2000000\n\
+._149:\n\
+ mov r0, #0x0\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._185\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._150:\n\
+ mov r0, #0x0\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._191 @cond_branch\n\
+ ldr r1, ._185\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._184\n\
+._186:\n\
+ .align 2, 0\n\
+._185:\n\
+ .word +0x2000000\n\
+._151:\n\
+ bl sub_80F1DF0\n\
+._169:\n\
+ ldr r1, ._188\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+._184:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._191\n\
+._189:\n\
+ .align 2, 0\n\
+._188:\n\
+ .word +0x2000000\n\
+._152:\n\
+ bl sub_80F1E50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._191 @cond_branch\n\
+ ldr r0, ._192\n\
+ ldr r1, ._192 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x0\n\
+ bl sub_80EF428\n\
+ ldr r0, ._192 + 8\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._192 + 12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._191 @cond_branch\n\
+ ldr r0, ._192 + 16\n\
+ ldr r2, ._192 + 20\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._191:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._193:\n\
+ .align 2, 0\n\
+._192:\n\
+ .word +0x2000000\n\
+ .word 0x6dad\n\
+ .word sub_80EC268+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800");
+}
+#else
void sub_80EC00C()
{
switch (ewram0_10.var304)
@@ -630,6 +1220,7 @@ void sub_80EC00C()
break;
}
}
+#endif
void sub_80EC210()
{
@@ -751,6 +1342,262 @@ void sub_80EC268()
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_80EC4A0()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._285\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0xe\n\
+ bls ._283 @cond_branch\n\
+ b ._340\n\
+._283:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._285 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._286:\n\
+ .align 2, 0\n\
+._285:\n\
+ .word +0x2000000\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\
+ .word ._297\n\
+ .word ._298\n\
+ .word ._299\n\
+ .word ._300\n\
+ .word ._301\n\
+ .word ._302\n\
+._288:\n\
+ bl sub_80F1E84\n\
+ mov r0, #0x0\n\
+ bl sub_80F2D04\n\
+ b ._336\n\
+._289:\n\
+ bl sub_80F1F10\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._304 @cond_branch\n\
+ b ._340\n\
+._304:\n\
+ ldr r0, ._308\n\
+ ldrb r1, [r0, #0x15]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ mov r1, #0x8\n\
+ cmp r0, #0\n\
+ beq ._306 @cond_branch\n\
+ mov r1, #0x7\n\
+._306:\n\
+ add r0, r1, #0\n\
+ bl sub_80EEFBC\n\
+ ldr r1, ._308 + 4\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._335\n\
+._309:\n\
+ .align 2, 0\n\
+._308:\n\
+ .word gSaveBlock2\n\
+ .word +0x2000000\n\
+._290:\n\
+ bl sub_80EEF34\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ beq ._310 @cond_branch\n\
+ b ._340\n\
+._310:\n\
+ ldr r4, ._313\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r2, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._335\n\
+._314:\n\
+ .align 2, 0\n\
+._313:\n\
+ .word +0x2000000\n\
+._291:\n\
+ ldr r0, ._318\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ b ._340\n\
+._315:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ b ._336\n\
+._319:\n\
+ .align 2, 0\n\
+._318:\n\
+ .word gPaletteFade\n\
+._292:\n\
+ bl sub_80F2620\n\
+ ldr r1, ._321\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._335\n\
+._322:\n\
+ .align 2, 0\n\
+._321:\n\
+ .word +0x2000000\n\
+._293:\n\
+ bl sub_80EF814\n\
+ b ._336\n\
+._294:\n\
+ bl sub_80EF840\n\
+ ldr r1, ._326\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._295:\n\
+ bl sub_80EF874\n\
+._328:\n\
+ lsl r0, r0, #0x18\n\
+._334:\n\
+ cmp r0, #0\n\
+ bne ._340 @cond_branch\n\
+ b ._336\n\
+._327:\n\
+ .align 2, 0\n\
+._326:\n\
+ .word +0x2000000\n\
+._296:\n\
+ mov r0, #0x4\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._329\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._297:\n\
+ mov r0, #0x4\n\
+ bl sub_80F2CBC\n\
+ b ._328\n\
+._330:\n\
+ .align 2, 0\n\
+._329:\n\
+ .word +0x2000000\n\
+._298:\n\
+ bl sub_80F2DD8\n\
+ ldr r0, ._332\n\
+ bl SetVBlankCallback\n\
+ ldr r1, ._332 + 4\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._335\n\
+._333:\n\
+ .align 2, 0\n\
+._332:\n\
+ .word sub_80EBD30+1\n\
+ .word +0x2000000\n\
+._299:\n\
+ bl sub_8055870\n\
+ b ._334\n\
+._300:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._335\n\
+._301:\n\
+ mov r0, #0x1\n\
+ bl sub_80EED2C\n\
+ ldr r0, ._338\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._336 @cond_branch\n\
+ ldr r0, ._338 + 4\n\
+ ldr r2, ._338 + 8\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._336:\n\
+ ldr r1, ._338 + 12\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+._335:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._340\n\
+._339:\n\
+ .align 2, 0\n\
+._338:\n\
+ .word gLinkOpen\n\
+ .word 0x60075e0\n\
+ .word 0x600f800\n\
+ .word +0x2000000\n\
+._302:\n\
+ ldr r0, ._341\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._340 @cond_branch\n\
+ ldr r0, ._341 + 4\n\
+ bl sub_80EBDBC\n\
+._340:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._342:\n\
+ .align 2, 0\n\
+._341:\n\
+ .word gPaletteFade\n\
+ .word sub_80EC67C+1");
+}
+#else
void sub_80EC4A0()
{
u32 var1;
@@ -835,7 +1682,243 @@ void sub_80EC4A0()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EC67C()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._345\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x5\n\
+ bls ._343 @cond_branch\n\
+ b ._386\n\
+._343:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._345 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._346:\n\
+ .align 2, 0\n\
+._345:\n\
+ .word +0x2000000\n\
+ .word ._347\n\
+._347:\n\
+ .word ._348\n\
+ .word ._349\n\
+ .word ._350\n\
+ .word ._351\n\
+ .word ._352\n\
+ .word ._353\n\
+._348:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x3\n\
+ beq ._354 @cond_branch\n\
+ cmp r0, #0x3\n\
+ bgt ._355 @cond_branch\n\
+ cmp r0, #0x1\n\
+ beq ._356 @cond_branch\n\
+ b ._386\n\
+._355:\n\
+ cmp r0, #0x4\n\
+ beq ._358 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._359 @cond_branch\n\
+ b ._386\n\
+._356:\n\
+ bl sub_80EED9C\n\
+ b ._386\n\
+._354:\n\
+ bl sub_80EF9F8\n\
+ b ._386\n\
+._358:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._364\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._386\n\
+._365:\n\
+ .align 2, 0\n\
+._364:\n\
+ .word +0x2000000\n\
+._359:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._367\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x4\n\
+ strh r1, [r0]\n\
+ b ._386\n\
+._368:\n\
+ .align 2, 0\n\
+._367:\n\
+ .word +0x2000000\n\
+._349:\n\
+ ldr r1, ._371\n\
+ add r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._369 @cond_branch\n\
+ bl sub_80FAEC4\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._380\n\
+._372:\n\
+ .align 2, 0\n\
+._371:\n\
+ .word 0x6e90\n\
+._369:\n\
+ mov r0, #0x1\n\
+ bl sub_80EFBDC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._386 @cond_branch\n\
+ bl sub_80FAEC4\n\
+ b ._374\n\
+._350:\n\
+ bl sub_80FAFC0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._386 @cond_branch\n\
+ ldr r5, ._378\n\
+ ldr r1, ._378 + 4\n\
+ add r0, r5, r1\n\
+ ldrb r4, [r0]\n\
+ cmp r4, #0\n\
+ bne ._376 @cond_branch\n\
+ bl sub_80EFBB0\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r5, r2\n\
+ strh r4, [r0]\n\
+ b ._386\n\
+._379:\n\
+ .align 2, 0\n\
+._378:\n\
+ .word +0x2000000\n\
+ .word 0x6e90\n\
+._376:\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r5, r0\n\
+ b ._380\n\
+._351:\n\
+ mov r0, #0x0\n\
+ bl sub_80EFBDC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0\n\
+ bne ._386 @cond_branch\n\
+ bl sub_80EFBB0\n\
+ ldr r0, ._383\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ strh r4, [r0]\n\
+ b ._386\n\
+._384:\n\
+ .align 2, 0\n\
+._383:\n\
+ .word +0x2000000\n\
+._352:\n\
+ mov r2, #0xc2\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r4, r2\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+._374:\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+._380:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._386\n\
+._353:\n\
+ ldr r0, ._389\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._386 @cond_branch\n\
+ bl sub_80F2DF4\n\
+ mov r0, #0x4\n\
+ bl sub_80F2D04\n\
+ ldr r3, ._389 + 4\n\
+ mov r2, #0x0\n\
+ ldr r0, ._389 + 8\n\
+ ldr r1, ._389 + 12\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._387 @cond_branch\n\
+ mov r2, #0x1\n\
+._387:\n\
+ lsl r2, r2, #0x3\n\
+ ldrb r1, [r3, #0x15]\n\
+ mov r0, #0x9\n\
+ neg r0, r0\n\
+ and r0, r0, r1\n\
+ orr r0, r0, r2\n\
+ strb r0, [r3, #0x15]\n\
+ ldr r0, ._389 + 16\n\
+ bl sub_80EBDBC\n\
+._386:\n\
+ ldr r0, ._389 + 20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._388 @cond_branch\n\
+ ldr r0, ._389 + 24\n\
+ ldr r2, ._389 + 28\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._388:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._390:\n\
+ .align 2, 0\n\
+._389:\n\
+ .word gPaletteFade\n\
+ .word gSaveBlock2\n\
+ .word +0x2000000\n\
+ .word 0x6e90\n\
+ .word sub_80EC00C+1\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_80EC67C()
{
switch (ewram0_10.var304)
@@ -907,6 +1990,7 @@ void sub_80EC67C()
break;
}
}
+#endif
void sub_80EC81C()
{
@@ -1001,6 +2085,275 @@ void sub_80EC9A8()
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_80ECA10()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._456\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0xd\n\
+ bls ._454 @cond_branch\n\
+ b ._509\n\
+._454:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._456 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._457:\n\
+ .align 2, 0\n\
+._456:\n\
+ .word +0x2000000\n\
+ .word ._458\n\
+._458:\n\
+ .word ._459\n\
+ .word ._460\n\
+ .word ._461\n\
+ .word ._462\n\
+ .word ._463\n\
+ .word ._464\n\
+ .word ._465\n\
+ .word ._466\n\
+ .word ._467\n\
+ .word ._468\n\
+ .word ._469\n\
+ .word ._470\n\
+ .word ._471\n\
+ .word ._472\n\
+._459:\n\
+ bl sub_80EEF78\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._473 @cond_branch\n\
+ b ._509\n\
+._473:\n\
+ ldr r0, ._476\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED1C\n\
+ ldr r4, ._476 + 4\n\
+ ldr r1, ._476 + 8\n\
+ add r0, r4, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._476 + 12\n\
+ add r0, r4, r2\n\
+ strb r1, [r0]\n\
+ ldr r0, ._476 + 16\n\
+ add r1, r4, r0\n\
+ mov r0, #0x3\n\
+ strb r0, [r1]\n\
+ bl sub_80EEE08\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r4, r1\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._509\n\
+._477:\n\
+ .align 2, 0\n\
+._476:\n\
+ .word sub_80EBD80+1\n\
+ .word +0x2000000\n\
+ .word 0x6df0\n\
+ .word 0x6dad\n\
+ .word 0x6dae\n\
+._460:\n\
+ mov r0, #0x1\n\
+ bl sub_80EF248\n\
+ ldr r1, ._481\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._461:\n\
+ mov r0, #0x1\n\
+ bl sub_80EF284\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._478 @cond_branch\n\
+ b ._509\n\
+._478:\n\
+ ldr r1, ._481\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._502\n\
+._482:\n\
+ .align 2, 0\n\
+._481:\n\
+ .word +0x2000000\n\
+._462:\n\
+ mov r0, #0x1\n\
+ bl sub_80F1B8C\n\
+ ldr r1, ._486\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._463:\n\
+ mov r0, #0x1\n\
+ bl sub_80F1BC8\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._483 @cond_branch\n\
+ b ._509\n\
+._483:\n\
+ ldr r1, ._486\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._502\n\
+._487:\n\
+ .align 2, 0\n\
+._486:\n\
+ .word +0x2000000\n\
+._464:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._509 @cond_branch\n\
+ b ._496\n\
+._465:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._491\n\
+ bl SetVBlankCallback\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._502\n\
+._492:\n\
+ .align 2, 0\n\
+._491:\n\
+ .word sub_80EBD18+1\n\
+._466:\n\
+ mov r0, #0x0\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._494\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._502\n\
+._495:\n\
+ .align 2, 0\n\
+._494:\n\
+ .word +0x2000000\n\
+._467:\n\
+ bl sub_80F2598\n\
+ b ._496\n\
+._468:\n\
+ ldr r0, ._499\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._509 @cond_branch\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ b ._502\n\
+._500:\n\
+ .align 2, 0\n\
+._499:\n\
+ .word gPaletteFade\n\
+._469:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._503\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._470:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._509 @cond_branch\n\
+ ldr r1, ._503\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._502\n\
+._504:\n\
+ .align 2, 0\n\
+._503:\n\
+ .word +0x2000000\n\
+._471:\n\
+ bl sub_80F1DF0\n\
+._496:\n\
+ ldr r1, ._506\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+._502:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._509\n\
+._507:\n\
+ .align 2, 0\n\
+._506:\n\
+ .word +0x2000000\n\
+._472:\n\
+ bl sub_80F1E50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._509 @cond_branch\n\
+ ldr r0, ._510\n\
+ ldr r1, ._510 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x1\n\
+ bl sub_80EF428\n\
+ ldr r0, ._510 + 8\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._510 + 12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._509 @cond_branch\n\
+ ldr r0, ._510 + 16\n\
+ ldr r2, ._510 + 20\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._509:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._511:\n\
+ .align 2, 0\n\
+._510:\n\
+ .word +0x2000000\n\
+ .word 0x6dad\n\
+ .word sub_80EC86C+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800");
+}
+#else
void sub_80ECA10()
{
switch (ewram0_10.var304)
@@ -1072,6 +2425,7 @@ void sub_80ECA10()
break;
}
}
+#endif
void sub_80ECC08()
{
@@ -1127,6 +2481,362 @@ void sub_80ECC08()
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_80ECD80()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._564\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x14\n\
+ bls ._562 @cond_branch\n\
+ b ._642\n\
+._562:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._564 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._565:\n\
+ .align 2, 0\n\
+._564:\n\
+ .word +0x2000000\n\
+ .word ._566\n\
+._566:\n\
+ .word ._567\n\
+ .word ._568\n\
+ .word ._569\n\
+ .word ._570\n\
+ .word ._571\n\
+ .word ._572\n\
+ .word ._573\n\
+ .word ._574\n\
+ .word ._575\n\
+ .word ._576\n\
+ .word ._577\n\
+ .word ._578\n\
+ .word ._579\n\
+ .word ._580\n\
+ .word ._581\n\
+ .word ._582\n\
+ .word ._583\n\
+ .word ._584\n\
+ .word ._585\n\
+ .word ._586\n\
+ .word ._587\n\
+._567:\n\
+ mov r3, #0xc2\n\
+ lsl r3, r3, #0x2\n\
+ add r0, r4, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ b ._630\n\
+._568:\n\
+ ldr r0, ._592\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._589 @cond_branch\n\
+ b ._642\n\
+._589:\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._630\n\
+._593:\n\
+ .align 2, 0\n\
+._592:\n\
+ .word gPaletteFade\n\
+._569:\n\
+ bl sub_80EEF78\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._594 @cond_branch\n\
+ b ._642\n\
+._594:\n\
+ ldr r0, ._597\n\
+ bl SetVBlankCallback\n\
+ b ._625\n\
+._598:\n\
+ .align 2, 0\n\
+._597:\n\
+ .word sub_80EBD80+1\n\
+._570:\n\
+ bl sub_80EED1C\n\
+ bl sub_80F3130\n\
+ ldr r1, ._600\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._630\n\
+._601:\n\
+ .align 2, 0\n\
+._600:\n\
+ .word +0x2000000\n\
+._571:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D6C\n\
+ ldr r1, ._603\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._630\n\
+._604:\n\
+ .align 2, 0\n\
+._603:\n\
+ .word +0x2000000\n\
+._572:\n\
+ mov r0, #0x5\n\
+ bl sub_80F2D6C\n\
+ b ._625\n\
+._573:\n\
+ ldr r1, ._607\n\
+ add r0, r4, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._607 + 4\n\
+ add r0, r4, r2\n\
+ strb r1, [r0]\n\
+ ldr r3, ._607 + 8\n\
+ add r1, r4, r3\n\
+ mov r0, #0x6\n\
+ strb r0, [r1]\n\
+ bl sub_80EEE08\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ b ._630\n\
+._608:\n\
+ .align 2, 0\n\
+._607:\n\
+ .word 0x6dfc\n\
+ .word 0x6dad\n\
+ .word 0x6dae\n\
+._574:\n\
+ mov r0, #0x2\n\
+ bl sub_80EF248\n\
+ ldr r1, ._612\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._575:\n\
+ mov r0, #0x2\n\
+ bl sub_80EF284\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._609 @cond_branch\n\
+ b ._642\n\
+._609:\n\
+ b ._625\n\
+._613:\n\
+ .align 2, 0\n\
+._612:\n\
+ .word +0x2000000\n\
+._576:\n\
+ mov r0, #0x2\n\
+ bl sub_80F1B8C\n\
+ ldr r1, ._617\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._577:\n\
+ mov r0, #0x2\n\
+ bl sub_80F1BC8\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._614 @cond_branch\n\
+ b ._642\n\
+._614:\n\
+ ldr r1, ._617\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._630\n\
+._618:\n\
+ .align 2, 0\n\
+._617:\n\
+ .word +0x2000000\n\
+._578:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._619 @cond_branch\n\
+ b ._642\n\
+._619:\n\
+ b ._625\n\
+._579:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._623\n\
+ bl SetVBlankCallback\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._630\n\
+._624:\n\
+ .align 2, 0\n\
+._623:\n\
+ .word sub_80EBD18+1\n\
+._580:\n\
+ mov r0, #0x0\n\
+ bl sub_80EED2C\n\
+ b ._625\n\
+._581:\n\
+ bl sub_80F2598\n\
+ ldr r1, ._627\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._630\n\
+._628:\n\
+ .align 2, 0\n\
+._627:\n\
+ .word +0x2000000\n\
+._582:\n\
+ ldr r0, ._631\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._642 @cond_branch\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._630\n\
+._632:\n\
+ .align 2, 0\n\
+._631:\n\
+ .word gPaletteFade\n\
+._583:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._635\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._584:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ bne ._642 @cond_branch\n\
+ ldr r0, ._635\n\
+ ldr r3, ._635 + 4\n\
+ add r1, r0, r3\n\
+ strh r2, [r1]\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ add r1, r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._642\n\
+._636:\n\
+ .align 2, 0\n\
+._635:\n\
+ .word +0x2000000\n\
+ .word 0x306\n\
+._585:\n\
+ mov r0, #0x5\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._639\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._586:\n\
+ mov r0, #0x5\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._642 @cond_branch\n\
+ bl sub_80F1DF0\n\
+._625:\n\
+ ldr r1, ._639\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+._630:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._642\n\
+._640:\n\
+ .align 2, 0\n\
+._639:\n\
+ .word +0x2000000\n\
+._587:\n\
+ bl sub_80F1E50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._642 @cond_branch\n\
+ ldr r0, ._643\n\
+ ldr r1, ._643 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x2\n\
+ bl sub_80EF428\n\
+ ldr r0, ._643 + 8\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._643 + 12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._642 @cond_branch\n\
+ ldr r0, ._643 + 16\n\
+ ldr r2, ._643 + 20\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._642:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._644:\n\
+ .align 2, 0\n\
+._643:\n\
+ .word +0x2000000\n\
+ .word 0x6dad\n\
+ .word sub_80ECC08+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800");
+}
+#else
void sub_80ECD80()
{
switch (ewram0_10.var304)
@@ -1233,7 +2943,418 @@ void sub_80ECD80()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80ED01C()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._647\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x13\n\
+ bls ._645 @cond_branch\n\
+ b ._736\n\
+._645:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._647 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._648:\n\
+ .align 2, 0\n\
+._647:\n\
+ .word +0x2000000\n\
+ .word ._649\n\
+._649:\n\
+ .word ._650\n\
+ .word ._651\n\
+ .word ._652\n\
+ .word ._653\n\
+ .word ._654\n\
+ .word ._655\n\
+ .word ._656\n\
+ .word ._657\n\
+ .word ._658\n\
+ .word ._659\n\
+ .word ._660\n\
+ .word ._661\n\
+ .word ._662\n\
+ .word ._663\n\
+ .word ._664\n\
+ .word ._665\n\
+ .word ._666\n\
+ .word ._667\n\
+ .word ._668\n\
+ .word ._669\n\
+._650:\n\
+ bl sub_80F1E84\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D04\n\
+ mov r0, #0x5\n\
+ bl sub_80F2D04\n\
+ ldr r1, ._671\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ b ._724\n\
+._672:\n\
+ .align 2, 0\n\
+._671:\n\
+ .word +0x2000000\n\
+._651:\n\
+ bl sub_80F1F10\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._673 @cond_branch\n\
+ b ._736\n\
+._673:\n\
+ mov r0, #0x0\n\
+ bl sub_80EEFBC\n\
+ ldr r1, ._676\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._724\n\
+._677:\n\
+ .align 2, 0\n\
+._676:\n\
+ .word +0x2000000\n\
+._652:\n\
+ bl sub_80EEF34\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ beq ._678 @cond_branch\n\
+ b ._736\n\
+._678:\n\
+ ldr r4, ._681\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r2, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._724\n\
+._682:\n\
+ .align 2, 0\n\
+._681:\n\
+ .word +0x2000000\n\
+._653:\n\
+ ldr r0, ._686\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._683 @cond_branch\n\
+ b ._736\n\
+._683:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80EF814\n\
+ ldr r1, ._686 + 4\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ b ._724\n\
+._687:\n\
+ .align 2, 0\n\
+._686:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._654:\n\
+ bl sub_80F2620\n\
+ ldr r1, ._689\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._724\n\
+._690:\n\
+ .align 2, 0\n\
+._689:\n\
+ .word +0x2000000\n\
+._655:\n\
+ bl sub_80F4D44\n\
+ ldr r1, ._693\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._656:\n\
+ bl sub_80F4D88\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._691 @cond_branch\n\
+ ldr r1, ._693\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x2\n\
+ strh r0, [r1]\n\
+ b ._736\n\
+._694:\n\
+ .align 2, 0\n\
+._693:\n\
+ .word +0x2000000\n\
+._691:\n\
+ ldr r1, ._696\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._724\n\
+._697:\n\
+ .align 2, 0\n\
+._696:\n\
+ .word +0x2000000\n\
+._657:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._698 @cond_branch\n\
+ b ._736\n\
+._698:\n\
+ ldr r1, ._701\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._736\n\
+._702:\n\
+ .align 2, 0\n\
+._701:\n\
+ .word +0x2000000\n\
+._658:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._703 @cond_branch\n\
+ b ._736\n\
+._703:\n\
+ ldr r1, ._706\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ b ._724\n\
+._707:\n\
+ .align 2, 0\n\
+._706:\n\
+ .word +0x2000000\n\
+._659:\n\
+ mov r0, #0x0\n\
+ bl sub_80F0264\n\
+ ldr r1, ._711\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._660:\n\
+ bl sub_80F02A0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._708 @cond_branch\n\
+ b ._736\n\
+._708:\n\
+ ldr r1, ._711\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._724\n\
+._712:\n\
+ .align 2, 0\n\
+._711:\n\
+ .word +0x2000000\n\
+._661:\n\
+ mov r0, #0x0\n\
+ bl sub_80F3008\n\
+ ldr r1, ._714\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ b ._724\n\
+._715:\n\
+ .align 2, 0\n\
+._714:\n\
+ .word +0x2000000\n\
+._662:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._716 @cond_branch\n\
+ b ._736\n\
+._716:\n\
+ ldr r1, ._719\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._724\n\
+._720:\n\
+ .align 2, 0\n\
+._719:\n\
+ .word +0x2000000\n\
+._663:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._722\n\
+ bl SetVBlankCallback\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._724\n\
+._723:\n\
+ .align 2, 0\n\
+._722:\n\
+ .word sub_80EBD18+1\n\
+._664:\n\
+ mov r0, #0x4\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._725\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r1, r3\n\
+ b ._724\n\
+._726:\n\
+ .align 2, 0\n\
+._725:\n\
+ .word +0x2000000\n\
+._665:\n\
+ ldr r0, ._729\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r1, r0, #0x18\n\
+ cmp r1, #0\n\
+ bne ._736 @cond_branch\n\
+ ldr r2, ._729 + 4\n\
+ add r0, r4, r2\n\
+ strh r1, [r0]\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r1, r4, r3\n\
+._724:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._736\n\
+._730:\n\
+ .align 2, 0\n\
+._729:\n\
+ .word gPaletteFade\n\
+ .word 0x306\n\
+._666:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._733\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._667:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ bne ._736 @cond_branch\n\
+ ldr r0, ._733\n\
+ ldr r3, ._733 + 4\n\
+ add r1, r0, r3\n\
+ strh r2, [r1]\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ add r1, r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._736\n\
+._734:\n\
+ .align 2, 0\n\
+._733:\n\
+ .word +0x2000000\n\
+ .word 0x306\n\
+._668:\n\
+ ldr r4, ._737\n\
+ ldr r2, ._737 + 4\n\
+ add r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, #0x7\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl sub_80F2C80\n\
+ mov r3, #0xc1\n\
+ lsl r3, r3, #0x2\n\
+ add r4, r4, r3\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+._669:\n\
+ ldr r0, ._737\n\
+ ldr r1, ._737 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, #0x7\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._736 @cond_branch\n\
+ ldr r0, ._737 + 8\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._737 + 12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._736 @cond_branch\n\
+ ldr r0, ._737 + 16\n\
+ ldr r2, ._737 + 20\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._736:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._738:\n\
+ .align 2, 0\n\
+._737:\n\
+ .word +0x2000000\n\
+ .word 0x6dfc\n\
+ .word sub_80ED31C+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800");
+}
+#else
void sub_80ED01C()
{
switch (ewram0_10.var304)
@@ -1342,7 +3463,129 @@ void sub_80ED01C()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80ED31C()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._743\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r0, r1\n\
+ ldrh r0, [r4]\n\
+ cmp r0, #0x1\n\
+ beq ._739 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._740 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._741 @cond_branch\n\
+ b ._761\n\
+._744:\n\
+ .align 2, 0\n\
+._743:\n\
+ .word +0x2000000\n\
+._740:\n\
+ cmp r0, #0x2\n\
+ beq ._745 @cond_branch\n\
+ b ._761\n\
+._741:\n\
+ bl sub_80F5DD4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ beq ._747 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._748 @cond_branch\n\
+ ldr r0, ._751\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._749 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._751 + 4\n\
+ bl sub_80EBDBC\n\
+ b ._762\n\
+._752:\n\
+ .align 2, 0\n\
+._751:\n\
+ .word gMain\n\
+ .word sub_80ED4D8+1\n\
+._747:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl ShowMapNamePopUpWindow\n\
+ b ._762\n\
+._748:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._762\n\
+._749:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._761 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._757\n\
+ bl sub_80EBDBC\n\
+ b ._762\n\
+._758:\n\
+ .align 2, 0\n\
+._757:\n\
+ .word sub_80ECD80+1\n\
+._739:\n\
+ bl sub_80F0718\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._761 @cond_branch\n\
+ bl ShowMapNamePopUpWindow\n\
+ bl sub_80F3264\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ b ._760\n\
+._745:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._761 @cond_branch\n\
+._760:\n\
+ strh r0, [r4]\n\
+._761:\n\
+ ldr r0, ._763\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._762 @cond_branch\n\
+ ldr r0, ._763 + 4\n\
+ ldr r1, ._763 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x8\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._762:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._764:\n\
+ .align 2, 0\n\
+._763:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_80ED31C()
{
switch (ewram0_10.var304)
@@ -1386,7 +3629,195 @@ void sub_80ED31C()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80ED3D0()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._767\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0x8\n\
+ bls ._765 @cond_branch\n\
+ b ._803\n\
+._765:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._767 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._768:\n\
+ .align 2, 0\n\
+._767:\n\
+ .word +0x2000000\n\
+ .word ._769\n\
+._769:\n\
+ .word ._770\n\
+ .word ._771\n\
+ .word ._772\n\
+ .word ._773\n\
+ .word ._774\n\
+ .word ._775\n\
+ .word ._776\n\
+ .word ._777\n\
+ .word ._778\n\
+._770:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ ldr r1, ._780\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._793\n\
+._781:\n\
+ .align 2, 0\n\
+._780:\n\
+ .word +0x2000000\n\
+._771:\n\
+ bl sub_80EED0C\n\
+ bl sub_80F6134\n\
+ ldr r1, ._783\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._793\n\
+._784:\n\
+ .align 2, 0\n\
+._783:\n\
+ .word +0x2000000\n\
+._772:\n\
+ mov r0, #0x0\n\
+ bl sub_80EEFBC\n\
+ ldr r1, ._786\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._793\n\
+._787:\n\
+ .align 2, 0\n\
+._786:\n\
+ .word +0x2000000\n\
+._773:\n\
+ mov r0, #0x0\n\
+ bl sub_80F0264\n\
+ ldr r1, ._790\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._774:\n\
+ bl sub_80F02A0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._803 @cond_branch\n\
+ ldr r1, ._790\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._793\n\
+._791:\n\
+ .align 2, 0\n\
+._790:\n\
+ .word +0x2000000\n\
+._775:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._803 @cond_branch\n\
+ ldr r1, ._794\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._793\n\
+._795:\n\
+ .align 2, 0\n\
+._794:\n\
+ .word +0x2000000\n\
+._776:\n\
+ mov r0, #0x0\n\
+ bl sub_80F3008\n\
+ ldr r4, ._797\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._797 + 4\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+._793:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._803\n\
+._798:\n\
+ .align 2, 0\n\
+._797:\n\
+ .word +0x2000000\n\
+ .word sub_80EBD18+1\n\
+._777:\n\
+ mov r0, #0x4\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._801\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._801 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._803 @cond_branch\n\
+ ldr r0, ._801 + 8\n\
+ ldr r2, ._801 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._803\n\
+._802:\n\
+ .align 2, 0\n\
+._801:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800\n\
+._778:\n\
+ ldr r0, ._804\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._803 @cond_branch\n\
+ ldr r0, ._804 + 4\n\
+ bl sub_80EBDBC\n\
+._803:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._805:\n\
+ .align 2, 0\n\
+._804:\n\
+ .word gPaletteFade\n\
+ .word sub_80ED31C+1");
+}
+#else
void sub_80ED3D0()
{
switch (ewram0_10.var304)
@@ -1432,7 +3863,207 @@ void sub_80ED3D0()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80ED4D8()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._808\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x8\n\
+ bls ._806 @cond_branch\n\
+ b ._844\n\
+._806:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._808 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._809:\n\
+ .align 2, 0\n\
+._808:\n\
+ .word +0x2000000\n\
+ .word ._810\n\
+._810:\n\
+ .word ._811\n\
+ .word ._812\n\
+ .word ._813\n\
+ .word ._814\n\
+ .word ._815\n\
+ .word ._816\n\
+ .word ._817\n\
+ .word ._818\n\
+ .word ._819\n\
+._811:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ b ._820\n\
+._812:\n\
+ ldr r0, ._824\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._821 @cond_branch\n\
+ b ._844\n\
+._821:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80F3130\n\
+ ldr r1, ._824 + 4\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._834\n\
+._825:\n\
+ .align 2, 0\n\
+._824:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._813:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._844 @cond_branch\n\
+ ldr r1, ._828\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._834\n\
+._829:\n\
+ .align 2, 0\n\
+._828:\n\
+ .word +0x2000000\n\
+._814:\n\
+ bl sub_80F4CF0\n\
+ ldr r1, ._831\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._834\n\
+._832:\n\
+ .align 2, 0\n\
+._831:\n\
+ .word +0x2000000\n\
+._815:\n\
+ bl sub_80EFF34\n\
+ ldr r1, ._835\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._816:\n\
+ bl sub_80EFF68\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._844 @cond_branch\n\
+ ldr r1, ._835\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._834\n\
+._836:\n\
+ .align 2, 0\n\
+._835:\n\
+ .word +0x2000000\n\
+._817:\n\
+ bl sub_80F35B4\n\
+ mov r0, #0x2\n\
+ bl sub_80EEFBC\n\
+ ldr r4, ._838\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._838 + 4\n\
+ bl SetVBlankCallback\n\
+._820:\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+._834:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._844\n\
+._839:\n\
+ .align 2, 0\n\
+._838:\n\
+ .word +0x2000000\n\
+ .word sub_80EBD4C+1\n\
+._818:\n\
+ mov r0, #0x2\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._842\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._842 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._844 @cond_branch\n\
+ ldr r0, ._842 + 8\n\
+ ldr r2, ._842 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._844\n\
+._843:\n\
+ .align 2, 0\n\
+._842:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f000\n\
+._819:\n\
+ ldr r0, ._845\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._844 @cond_branch\n\
+ ldr r0, ._845 + 4\n\
+ bl sub_80EBDBC\n\
+._844:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._846:\n\
+ .align 2, 0\n\
+._845:\n\
+ .word gPaletteFade\n\
+ .word sub_80ED858+1");
+}
+#else
void sub_80ED4D8()
{
switch (ewram0_10.var304)
@@ -1483,7 +4114,310 @@ void sub_80ED4D8()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80ED620()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._849\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x10\n\
+ bls ._847 @cond_branch\n\
+ b ._912\n\
+._847:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._849 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._850:\n\
+ .align 2, 0\n\
+._849:\n\
+ .word +0x2000000\n\
+ .word ._851\n\
+._851:\n\
+ .word ._852\n\
+ .word ._853\n\
+ .word ._854\n\
+ .word ._855\n\
+ .word ._856\n\
+ .word ._857\n\
+ .word ._858\n\
+ .word ._859\n\
+ .word ._860\n\
+ .word ._861\n\
+ .word ._862\n\
+ .word ._863\n\
+ .word ._864\n\
+ .word ._865\n\
+ .word ._866\n\
+ .word ._867\n\
+ .word ._868\n\
+._852:\n\
+ bl sub_80F1E84\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D04\n\
+ ldr r1, ._870\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._904\n\
+._871:\n\
+ .align 2, 0\n\
+._870:\n\
+ .word +0x2000000\n\
+._853:\n\
+ bl sub_80F1F10\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._872 @cond_branch\n\
+ b ._912\n\
+._872:\n\
+ mov r0, #0x1\n\
+ bl sub_80EEFBC\n\
+ b ._885\n\
+._854:\n\
+ bl sub_80EEF34\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ beq ._875 @cond_branch\n\
+ b ._912\n\
+._875:\n\
+ ldr r4, ._878\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r2, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._904\n\
+._879:\n\
+ .align 2, 0\n\
+._878:\n\
+ .word +0x2000000\n\
+._855:\n\
+ ldr r0, ._883\n\
+ ldrb r1, [r0, #0x7]\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 ._880 @cond_branch\n\
+ b ._912\n\
+._880:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80EF814\n\
+ ldr r0, ._883 + 4\n\
+ ldr r2, ._883 + 8\n\
+ add r1, r0, r2\n\
+ strb r4, [r1]\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ add r1, r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._912\n\
+._884:\n\
+ .align 2, 0\n\
+._883:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+ .word 0x76aa\n\
+._856:\n\
+ bl sub_80F2620\n\
+ b ._885\n\
+._857:\n\
+ ldr r0, ._887\n\
+ add r1, r4, r0\n\
+ mov r0, #0x2\n\
+ strb r0, [r1]\n\
+ bl sub_80F4BD0\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._904\n\
+._888:\n\
+ .align 2, 0\n\
+._887:\n\
+ .word 0xd162\n\
+._858:\n\
+ bl sub_80EFF34\n\
+ ldr r1, ._890\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._859:\n\
+ bl sub_80EFF68\n\
+ b ._889\n\
+._891:\n\
+ .align 2, 0\n\
+._890:\n\
+ .word +0x2000000\n\
+._860:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._912 @cond_branch\n\
+ ldr r1, ._894\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._904\n\
+._895:\n\
+ .align 2, 0\n\
+._894:\n\
+ .word +0x2000000\n\
+._861:\n\
+ bl sub_8055870\n\
+ b ._896\n\
+._862:\n\
+ bl sub_80F33A8\n\
+ ldr r4, ._898\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._898 + 4\n\
+ bl SetVBlankCallback\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._904\n\
+._899:\n\
+ .align 2, 0\n\
+._898:\n\
+ .word +0x2000000\n\
+ .word sub_80EBD4C+1\n\
+._863:\n\
+ mov r0, #0x2\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._901\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._904\n\
+._902:\n\
+ .align 2, 0\n\
+._901:\n\
+ .word +0x2000000\n\
+._864:\n\
+ ldr r0, ._905\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._912 @cond_branch\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ b ._904\n\
+._906:\n\
+ .align 2, 0\n\
+._905:\n\
+ .word gPaletteFade\n\
+._865:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._909\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._866:\n\
+ mov r0, #0x1\n\
+ bl sub_80F2CBC\n\
+._889:\n\
+ lsl r0, r0, #0x18\n\
+._896:\n\
+ cmp r0, #0\n\
+ bne ._912 @cond_branch\n\
+._885:\n\
+ ldr r1, ._909\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+._904:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._912\n\
+._910:\n\
+ .align 2, 0\n\
+._909:\n\
+ .word +0x2000000\n\
+._867:\n\
+ mov r0, #0x6\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._913\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._868:\n\
+ mov r0, #0x6\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._912 @cond_branch\n\
+ ldr r0, ._913 + 4\n\
+ bl sub_80EBDBC\n\
+ ldr r0, ._913 + 8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._912 @cond_branch\n\
+ ldr r0, ._913 + 12\n\
+ ldr r2, ._913 + 16\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+._912:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._914:\n\
+ .align 2, 0\n\
+._913:\n\
+ .word +0x2000000\n\
+ .word sub_80ED858+1\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f000");
+}
+#else
void sub_80ED620()
{
switch (ewram0_10.var304)
@@ -1573,6 +4507,7 @@ void sub_80ED620()
break;
}
}
+#endif
#if 0
void sub_80F4F78();
@@ -1742,8 +4677,433 @@ label2:
}
#else
+#if DEBUG
__attribute__((naked))
-void sub_80ED858() {
+void sub_80ED858()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._917\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r5, r1, #0\n\
+ cmp r0, #0xb\n\
+ bls ._915 @cond_branch\n\
+ b ._999\n\
+._915:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._917 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._918:\n\
+ .align 2, 0\n\
+._917:\n\
+ .word +0x2000000\n\
+ .word ._919\n\
+._919:\n\
+ .word ._920\n\
+ .word ._921\n\
+ .word ._922\n\
+ .word ._923\n\
+ .word ._924\n\
+ .word ._925\n\
+ .word ._926\n\
+ .word ._927\n\
+ .word ._928\n\
+ .word ._929\n\
+ .word ._999\n\
+ .word ._931\n\
+._920:\n\
+ bl sub_80F4F78\n\
+ bl sub_80F5B38\n\
+ ldr r0, ._933\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._934:\n\
+ .align 2, 0\n\
+._933:\n\
+ .word +0x2000000\n\
+._921:\n\
+ bl sub_80F5B50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._935 @cond_branch\n\
+ b ._999\n\
+._935:\n\
+ ldr r0, ._938\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x2\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._939:\n\
+ .align 2, 0\n\
+._938:\n\
+ .word +0x2000000\n\
+._922:\n\
+ mov r0, #0x1\n\
+ bl sub_80F0174\n\
+ ldr r0, ._941\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x3\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._942:\n\
+ .align 2, 0\n\
+._941:\n\
+ .word +0x2000000\n\
+._923:\n\
+ bl sub_80F4FB4\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._943 @cond_branch\n\
+ b ._999\n\
+._943:\n\
+ bl sub_80F3C94\n\
+ bl sub_80F3D00\n\
+ b ._945\n\
+._924:\n\
+ ldr r2, ._951\n\
+ ldrh r1, [r2, #0x2c]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ add r3, r2, #0\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r1, ._951 + 4\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r2, ._951 + 8\n\
+ add r0, r5, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._948 @cond_branch\n\
+ ldr r4, ._951 + 12\n\
+ add r0, r5, r4\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+._948:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x1\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ b ._950\n\
+._952:\n\
+ .align 2, 0\n\
+._951:\n\
+ .word gMain\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._949:\n\
+ ldrh r1, [r3, #0x2c]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r4, ._958\n\
+ add r0, r5, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r1, ._958 + 4\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._955 @cond_branch\n\
+ ldr r2, ._958 + 8\n\
+ add r0, r5, r2\n\
+ sub r4, r4, #0x57\n\
+ add r1, r5, r4\n\
+ mov r4, #0x0\n\
+ ldsh r2, [r0, r4]\n\
+ mov r4, #0x0\n\
+ ldsh r0, [r1, r4]\n\
+ cmp r2, r0\n\
+ bge ._956 @cond_branch\n\
+._955:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x0\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r5, r0\n\
+._950:\n\
+ mov r0, #0x5\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._959:\n\
+ .align 2, 0\n\
+._958:\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._956:\n\
+ ldrh r2, [r3, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._960 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_80F4FDC\n\
+ bl move_anim_execute\n\
+ ldr r0, ._962\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x9\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._963:\n\
+ .align 2, 0\n\
+._962:\n\
+ .word +0x2000000\n\
+._960:\n\
+ mov r0, #0x1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ bne ._964 @cond_branch\n\
+ b ._999\n\
+._964:\n\
+ add r4, r5, #0\n\
+ ldr r2, ._970\n\
+ add r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._966 @cond_branch\n\
+ ldr r1, ._970 + 4\n\
+ add r0, r4, r1\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ ldr r2, ._970 + 8\n\
+ add r0, r4, r2\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ sub r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ beq ._967 @cond_branch\n\
+ b ._999\n\
+._967:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ mov r0, #0x9\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._971:\n\
+ .align 2, 0\n\
+._970:\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+ .word 0x87da\n\
+._966:\n\
+ ldr r1, ._975\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._972 @cond_branch\n\
+ b ._999\n\
+._972:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0x7\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._976:\n\
+ .align 2, 0\n\
+._975:\n\
+ .word 0x6dac\n\
+._925:\n\
+ bl gpu_sync_bg_show\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._977 @cond_branch\n\
+ b ._999\n\
+._977:\n\
+ bl sub_80F3D00\n\
+ ldr r0, ._980\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x6\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._981:\n\
+ .align 2, 0\n\
+._980:\n\
+ .word +0x2000000\n\
+._926:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ ldr r0, ._984\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ b ._983\n\
+._985:\n\
+ .align 2, 0\n\
+._984:\n\
+ .word +0x2000000\n\
+._927:\n\
+ mov r0, #0x3\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3668\n\
+ ldr r0, ._987\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x8\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._988:\n\
+ .align 2, 0\n\
+._987:\n\
+ .word +0x2000000\n\
+._928:\n\
+ bl sub_80F7500\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3698\n\
+._945:\n\
+ ldr r0, ._991\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+._983:\n\
+ mov r1, #0x4\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._992:\n\
+ .align 2, 0\n\
+._991:\n\
+ .word +0x2000000\n\
+._929:\n\
+ bl sub_80F5038\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_80F0174\n\
+ bl sub_80F2F48\n\
+ ldr r5, ._995\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r5, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r4, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0xb\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._996:\n\
+ .align 2, 0\n\
+._995:\n\
+ .word +0x2000000\n\
+._931:\n\
+ ldr r0, ._1000\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ bl sub_80F3CE8\n\
+ bl sub_80F5BDC\n\
+ ldr r0, ._1000 + 4\n\
+ ldr r4, ._1000 + 8\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._998 @cond_branch\n\
+ bl sub_80F357C\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D6C\n\
+ mov r0, #0x6\n\
+ bl sub_80F2D6C\n\
+ ldr r0, ._1000 + 12\n\
+ bl sub_80EBDBC\n\
+ b ._999\n\
+._1001:\n\
+ .align 2, 0\n\
+._1000:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+ .word 0x76aa\n\
+ .word sub_80ECA10+1\n\
+._998:\n\
+ bl sub_80F3614\n\
+ ldr r0, ._1003\n\
+ bl sub_80EBDBC\n\
+._999:\n\
+ ldr r0, ._1003 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1002 @cond_branch\n\
+ ldr r0, ._1003 + 8\n\
+ ldr r1, ._1003 + 12\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x9\n\
+ mov r2, #0x6\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1002:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1004:\n\
+ .align 2, 0\n\
+._1003:\n\
+ .word sub_80ED3D0+1\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
+__attribute__((naked))
+void sub_80ED858()
+{
asm_unified("push {r4,r5,lr}\n\
sub sp, 0x4\n\
ldr r1, _080ED878 @ =gSharedMem\n\
@@ -2114,7 +5474,361 @@ _080EDB7A:\n\
_080EDB84: .4byte sub_80ED3D0\n");
}
#endif
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EDB88()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._1007\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x11\n\
+ bls ._1005 @cond_branch\n\
+ b ._1088\n\
+._1005:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1007 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1008:\n\
+ .align 2, 0\n\
+._1007:\n\
+ .word +0x2000000\n\
+ .word ._1009\n\
+._1009:\n\
+ .word ._1010\n\
+ .word ._1011\n\
+ .word ._1012\n\
+ .word ._1013\n\
+ .word ._1014\n\
+ .word ._1015\n\
+ .word ._1016\n\
+ .word ._1017\n\
+ .word ._1018\n\
+ .word ._1019\n\
+ .word ._1020\n\
+ .word ._1021\n\
+ .word ._1022\n\
+ .word ._1023\n\
+ .word ._1024\n\
+ .word ._1025\n\
+ .word ._1026\n\
+ .word ._1027\n\
+._1010:\n\
+ bl sub_80F1E84\n\
+ mov r0, #0x0\n\
+ bl sub_80F2D04\n\
+ ldr r1, ._1029\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1030:\n\
+ .align 2, 0\n\
+._1029:\n\
+ .word +0x2000000\n\
+._1011:\n\
+ bl sub_80F1F10\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1031 @cond_branch\n\
+ b ._1088\n\
+._1031:\n\
+ mov r0, #0x4\n\
+ bl sub_80EEFBC\n\
+ ldr r1, ._1034\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1078\n\
+._1035:\n\
+ .align 2, 0\n\
+._1034:\n\
+ .word +0x2000000\n\
+._1012:\n\
+ bl sub_80EEF34\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ beq ._1036 @cond_branch\n\
+ b ._1088\n\
+._1036:\n\
+ ldr r4, ._1039\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r2, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ b ._1038\n\
+._1040:\n\
+ .align 2, 0\n\
+._1039:\n\
+ .word +0x2000000\n\
+._1013:\n\
+ ldr r0, ._1044\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1041 @cond_branch\n\
+ b ._1088\n\
+._1041:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80EF814\n\
+ ldr r1, ._1044 + 4\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1045:\n\
+ .align 2, 0\n\
+._1044:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._1014:\n\
+ bl sub_80F2620\n\
+ ldr r1, ._1047\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1078\n\
+._1048:\n\
+ .align 2, 0\n\
+._1047:\n\
+ .word +0x2000000\n\
+._1015:\n\
+ bl sub_80F638C\n\
+ ldr r1, ._1051\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1016:\n\
+ bl sub_80F63D0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1049 @cond_branch\n\
+ ldr r1, ._1051\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x2\n\
+ strh r0, [r1]\n\
+ b ._1088\n\
+._1052:\n\
+ .align 2, 0\n\
+._1051:\n\
+ .word +0x2000000\n\
+._1049:\n\
+ ldr r1, ._1054\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1055:\n\
+ .align 2, 0\n\
+._1054:\n\
+ .word +0x2000000\n\
+._1017:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._1056 @cond_branch\n\
+ b ._1088\n\
+._1056:\n\
+ ldr r1, ._1059\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1088\n\
+._1060:\n\
+ .align 2, 0\n\
+._1059:\n\
+ .word +0x2000000\n\
+._1018:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ beq ._1061 @cond_branch\n\
+ b ._1088\n\
+._1061:\n\
+ ldr r1, ._1064\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1065:\n\
+ .align 2, 0\n\
+._1064:\n\
+ .word +0x2000000\n\
+._1019:\n\
+ mov r0, #0x1\n\
+ bl sub_80F0264\n\
+ ldr r1, ._1068\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1020:\n\
+ bl sub_80F02A0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1088 @cond_branch\n\
+ ldr r1, ._1068\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1069:\n\
+ .align 2, 0\n\
+._1068:\n\
+ .word +0x2000000\n\
+._1021:\n\
+ mov r0, #0x2\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._1072\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1022:\n\
+ mov r0, #0x2\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1088 @cond_branch\n\
+ ldr r1, ._1072\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1073:\n\
+ .align 2, 0\n\
+._1072:\n\
+ .word +0x2000000\n\
+._1023:\n\
+ mov r0, #0x1\n\
+ bl sub_80F3008\n\
+ ldr r1, ._1075\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1078\n\
+._1076:\n\
+ .align 2, 0\n\
+._1075:\n\
+ .word +0x2000000\n\
+._1024:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1088 @cond_branch\n\
+ ldr r1, ._1079\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1078\n\
+._1080:\n\
+ .align 2, 0\n\
+._1079:\n\
+ .word +0x2000000\n\
+._1025:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._1082\n\
+ bl SetVBlankCallback\n\
+._1038:\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+._1078:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1088\n\
+._1083:\n\
+ .align 2, 0\n\
+._1082:\n\
+ .word sub_80EBD18+1\n\
+._1026:\n\
+ mov r0, #0x4\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._1086\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._1086 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1088 @cond_branch\n\
+ ldr r0, ._1086 + 8\n\
+ ldr r2, ._1086 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._1088\n\
+._1087:\n\
+ .align 2, 0\n\
+._1086:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800\n\
+._1027:\n\
+ ldr r0, ._1089\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1088 @cond_branch\n\
+ ldr r0, ._1089 + 4\n\
+ bl sub_80EBDBC\n\
+._1088:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1090:\n\
+ .align 2, 0\n\
+._1089:\n\
+ .word gPaletteFade\n\
+ .word sub_80EDDBC+1");
+}
+#else
void sub_80EDB88()
{
switch (ewram0_10.var304)
@@ -2205,7 +5919,129 @@ void sub_80EDB88()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EDDBC()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._1095\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r0, r1\n\
+ ldrh r0, [r4]\n\
+ cmp r0, #0x1\n\
+ beq ._1091 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._1092 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._1093 @cond_branch\n\
+ b ._1113\n\
+._1096:\n\
+ .align 2, 0\n\
+._1095:\n\
+ .word +0x2000000\n\
+._1092:\n\
+ cmp r0, #0x2\n\
+ beq ._1097 @cond_branch\n\
+ b ._1113\n\
+._1093:\n\
+ bl sub_80F5DD4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ beq ._1099 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._1100 @cond_branch\n\
+ ldr r0, ._1103\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1101 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._1103 + 4\n\
+ bl sub_80EBDBC\n\
+ b ._1114\n\
+._1104:\n\
+ .align 2, 0\n\
+._1103:\n\
+ .word gMain\n\
+ .word sub_80EDEE4+1\n\
+._1099:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl ShowMapNamePopUpWindow\n\
+ b ._1114\n\
+._1100:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._1114\n\
+._1101:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1113 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._1109\n\
+ bl sub_80EBDBC\n\
+ b ._1114\n\
+._1110:\n\
+ .align 2, 0\n\
+._1109:\n\
+ .word sub_80EDE70+1\n\
+._1091:\n\
+ bl sub_80F0718\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1113 @cond_branch\n\
+ bl ShowMapNamePopUpWindow\n\
+ bl sub_80F3264\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ b ._1112\n\
+._1097:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1113 @cond_branch\n\
+._1112:\n\
+ strh r0, [r4]\n\
+._1113:\n\
+ ldr r0, ._1115\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1114 @cond_branch\n\
+ ldr r0, ._1115 + 4\n\
+ ldr r1, ._1115 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x8\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1114:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1116:\n\
+ .align 2, 0\n\
+._1115:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_80EDDBC()
{
switch (ewram0_10.var304)
@@ -2250,6 +6086,7 @@ void sub_80EDDBC()
}
}
+#endif
void sub_80EDE70()
{
@@ -2274,6 +6111,228 @@ void sub_80EDE70()
}
+#if DEBUG
+__attribute__((naked))
+void sub_80EDEE4()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._1134\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0xa\n\
+ bls ._1132 @cond_branch\n\
+ b ._1180\n\
+._1132:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1134 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1135:\n\
+ .align 2, 0\n\
+._1134:\n\
+ .word +0x2000000\n\
+ .word ._1136\n\
+._1136:\n\
+ .word ._1137\n\
+ .word ._1138\n\
+ .word ._1139\n\
+ .word ._1140\n\
+ .word ._1141\n\
+ .word ._1142\n\
+ .word ._1143\n\
+ .word ._1144\n\
+ .word ._1145\n\
+ .word ._1146\n\
+ .word ._1147\n\
+._1137:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ b ._1169\n\
+._1138:\n\
+ ldr r0, ._1152\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1149 @cond_branch\n\
+ b ._1180\n\
+._1149:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80F3130\n\
+ ldr r1, ._1152 + 4\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1166\n\
+._1153:\n\
+ .align 2, 0\n\
+._1152:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._1139:\n\
+ bl sub_80F66E0\n\
+ bl sub_80EEE08\n\
+ ldr r1, ._1155\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1166\n\
+._1156:\n\
+ .align 2, 0\n\
+._1155:\n\
+ .word +0x2000000\n\
+._1140:\n\
+ bl sub_80F1080\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1180 @cond_branch\n\
+ ldr r1, ._1159\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1166\n\
+._1160:\n\
+ .align 2, 0\n\
+._1159:\n\
+ .word +0x2000000\n\
+._1141:\n\
+ mov r0, #0x5\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F38B8\n\
+ ldr r1, ._1163\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1142:\n\
+ bl sub_80F38EC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1180 @cond_branch\n\
+ ldr r1, ._1163\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1166\n\
+._1164:\n\
+ .align 2, 0\n\
+._1163:\n\
+ .word +0x2000000\n\
+._1143:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1180 @cond_branch\n\
+ ldr r1, ._1167\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1166\n\
+._1168:\n\
+ .align 2, 0\n\
+._1167:\n\
+ .word +0x2000000\n\
+._1144:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._1170\n\
+ bl SetVBlankCallback\n\
+ b ._1169\n\
+._1171:\n\
+ .align 2, 0\n\
+._1170:\n\
+ .word sub_80EBD18+1\n\
+._1145:\n\
+ mov r0, #0x3\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._1174\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._1174 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1180 @cond_branch\n\
+ ldr r0, ._1174 + 8\n\
+ ldr r2, ._1174 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._1180\n\
+._1175:\n\
+ .align 2, 0\n\
+._1174:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f000\n\
+._1146:\n\
+ ldr r0, ._1178\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1180 @cond_branch\n\
+._1169:\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+._1166:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1180\n\
+._1179:\n\
+ .align 2, 0\n\
+._1178:\n\
+ .word gPaletteFade\n\
+._1147:\n\
+ bl sub_80F170C\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1180 @cond_branch\n\
+ ldr r0, ._1181\n\
+ bl sub_80EBDBC\n\
+._1180:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1182:\n\
+ .align 2, 0\n\
+._1181:\n\
+ .word sub_80EE06C+1");
+}
+#else
void sub_80EDEE4()
{
switch (ewram0_10.var304)
@@ -2331,7 +6390,316 @@ void sub_80EDEE4()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EE06C()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._1185\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x8\n\
+ bls ._1183 @cond_branch\n\
+ b ._1248\n\
+._1183:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1185 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1186:\n\
+ .align 2, 0\n\
+._1185:\n\
+ .word +0x2000000\n\
+ .word ._1187\n\
+._1187:\n\
+ .word ._1188\n\
+ .word ._1189\n\
+ .word ._1190\n\
+ .word ._1191\n\
+ .word ._1192\n\
+ .word ._1193\n\
+ .word ._1194\n\
+ .word ._1195\n\
+ .word ._1196\n\
+._1188:\n\
+ bl sub_80F15A8\n\
+ ldr r1, ._1198\n\
+ mov r5, #0xc1\n\
+ lsl r5, r5, #0x2\n\
+ add r1, r1, r5\n\
+ b ._1221\n\
+._1199:\n\
+ .align 2, 0\n\
+._1198:\n\
+ .word +0x2000000\n\
+._1189:\n\
+ ldr r2, ._1203\n\
+ ldrh r1, [r2, #0x30]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ add r3, r2, #0\n\
+ cmp r0, #0\n\
+ beq ._1201 @cond_branch\n\
+ ldr r1, ._1203 + 4\n\
+ add r0, r4, r1\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ cmp r0, #0\n\
+ beq ._1201 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ bl sub_80F6A4C\n\
+ mov r5, #0xc1\n\
+ lsl r5, r5, #0x2\n\
+ add r1, r4, r5\n\
+ b ._1221\n\
+._1204:\n\
+ .align 2, 0\n\
+._1203:\n\
+ .word gMain\n\
+ .word 0x87dc\n\
+._1201:\n\
+ ldrh r1, [r3, #0x30]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1206 @cond_branch\n\
+ ldr r1, ._1208\n\
+ add r0, r4, r1\n\
+ ldr r2, ._1208 + 4\n\
+ add r1, r4, r2\n\
+ mov r5, #0x0\n\
+ ldsh r2, [r0, r5]\n\
+ mov r5, #0x0\n\
+ ldsh r0, [r1, r5]\n\
+ cmp r2, r0\n\
+ bge ._1206 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x1\n\
+ bl sub_80F6A4C\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ b ._1221\n\
+._1209:\n\
+ .align 2, 0\n\
+._1208:\n\
+ .word 0x87dc\n\
+ .word 0x8774\n\
+._1206:\n\
+ ldrh r2, [r3, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._1210 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0xb\n\
+ bl sub_80EEFBC\n\
+ ldr r0, ._1212\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ b ._1211\n\
+._1213:\n\
+ .align 2, 0\n\
+._1212:\n\
+ .word +0x2000000\n\
+._1210:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ bne ._1214 @cond_branch\n\
+ b ._1248\n\
+._1214:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._1217\n\
+ bl sub_80EBDBC\n\
+ b ._1248\n\
+._1218:\n\
+ .align 2, 0\n\
+._1217:\n\
+ .word sub_80EE294+1\n\
+._1190:\n\
+ bl sub_80F6AF0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1219 @cond_branch\n\
+ b ._1248\n\
+._1219:\n\
+ ldr r1, ._1222\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1221\n\
+._1223:\n\
+ .align 2, 0\n\
+._1222:\n\
+ .word +0x2000000\n\
+._1191:\n\
+ bl sub_8055870\n\
+ add r1, r0, #0\n\
+ cmp r1, #0\n\
+ bne ._1248 @cond_branch\n\
+ ldr r0, ._1226\n\
+ mov r5, #0xc1\n\
+ lsl r5, r5, #0x2\n\
+ add r0, r0, r5\n\
+ strh r1, [r0]\n\
+ b ._1248\n\
+._1227:\n\
+ .align 2, 0\n\
+._1226:\n\
+ .word +0x2000000\n\
+._1192:\n\
+ bl sub_80F3B00\n\
+ ldr r1, ._1229\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+._1221:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1248\n\
+._1230:\n\
+ .align 2, 0\n\
+._1229:\n\
+ .word +0x2000000\n\
+._1193:\n\
+ bl sub_80F3B58\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1248 @cond_branch\n\
+ bl sub_80F1494\n\
+ ldr r1, ._1233\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ bl sub_80EED9C\n\
+ b ._1248\n\
+._1234:\n\
+ .align 2, 0\n\
+._1233:\n\
+ .word +0x2000000\n\
+._1194:\n\
+ bl sub_80F68E8\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1236 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bne ._1236 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_80F3B94\n\
+ ldr r0, ._1238\n\
+ mov r5, #0xc1\n\
+ lsl r5, r5, #0x2\n\
+ add r0, r0, r5\n\
+ mov r1, #0x7\n\
+ strh r1, [r0]\n\
+ b ._1249\n\
+._1239:\n\
+ .align 2, 0\n\
+._1238:\n\
+ .word +0x2000000\n\
+._1236:\n\
+ ldr r0, ._1242\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1248 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_80F3B94\n\
+ ldr r0, ._1242 + 4\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x8\n\
+ strh r1, [r0]\n\
+ b ._1248\n\
+._1243:\n\
+ .align 2, 0\n\
+._1242:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+._1195:\n\
+ bl sub_80F3BD4\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1248 @cond_branch\n\
+ ldr r0, ._1246\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+._1211:\n\
+ mov r1, #0x4\n\
+ strh r1, [r0]\n\
+ b ._1248\n\
+._1247:\n\
+ .align 2, 0\n\
+._1246:\n\
+ .word +0x2000000\n\
+._1196:\n\
+ bl sub_80F3BD4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0\n\
+ bne ._1248 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl sub_80EEFBC\n\
+ ldr r0, ._1250\n\
+ mov r5, #0xc1\n\
+ lsl r5, r5, #0x2\n\
+ add r0, r0, r5\n\
+ strh r4, [r0]\n\
+._1248:\n\
+ ldr r0, ._1250 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1249 @cond_branch\n\
+ ldr r0, ._1250 + 8\n\
+ ldr r1, ._1250 + 12\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x4\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1249:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1251:\n\
+ .align 2, 0\n\
+._1250:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_80EE06C()
{
switch (ewram0_10.var304)
@@ -2417,7 +6785,204 @@ void sub_80EE06C()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EE294()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._1254\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r0, #0x8\n\
+ bls ._1252 @cond_branch\n\
+ b ._1288\n\
+._1252:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1254 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1255:\n\
+ .align 2, 0\n\
+._1254:\n\
+ .word +0x2000000\n\
+ .word ._1256\n\
+._1256:\n\
+ .word ._1257\n\
+ .word ._1258\n\
+ .word ._1259\n\
+ .word ._1260\n\
+ .word ._1261\n\
+ .word ._1262\n\
+ .word ._1263\n\
+ .word ._1264\n\
+ .word ._1265\n\
+._1257:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r3, #0x10\n\
+ b ._1266\n\
+._1258:\n\
+ ldr r0, ._1270\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1267 @cond_branch\n\
+ b ._1288\n\
+._1267:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80F3C2C\n\
+ bl sub_80EEE08\n\
+ ldr r1, ._1270 + 4\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1280\n\
+._1271:\n\
+ .align 2, 0\n\
+._1270:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._1259:\n\
+ bl sub_80F6134\n\
+ mov r0, #0x1\n\
+ bl sub_80F0264\n\
+ ldr r1, ._1274\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1260:\n\
+ bl sub_80F02A0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1288 @cond_branch\n\
+ ldr r1, ._1274\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1280\n\
+._1275:\n\
+ .align 2, 0\n\
+._1274:\n\
+ .word +0x2000000\n\
+._1261:\n\
+ mov r0, #0x4\n\
+ bl sub_80EEFBC\n\
+ mov r0, #0x1\n\
+ bl sub_80F3008\n\
+ ldr r0, ._1277\n\
+ bl SetVBlankCallback\n\
+ ldr r1, ._1277 + 4\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r1, r2\n\
+ b ._1280\n\
+._1278:\n\
+ .align 2, 0\n\
+._1277:\n\
+ .word sub_80EBD18+1\n\
+ .word +0x2000000\n\
+._1262:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1288 @cond_branch\n\
+ ldr r1, ._1281\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1280\n\
+._1282:\n\
+ .align 2, 0\n\
+._1281:\n\
+ .word +0x2000000\n\
+._1263:\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+._1266:\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+._1280:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1288\n\
+._1264:\n\
+ mov r0, #0x4\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._1286\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._1286 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1288 @cond_branch\n\
+ ldr r0, ._1286 + 8\n\
+ ldr r2, ._1286 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._1288\n\
+._1287:\n\
+ .align 2, 0\n\
+._1286:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800\n\
+._1265:\n\
+ ldr r0, ._1289\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1288 @cond_branch\n\
+ ldr r0, ._1289 + 4\n\
+ bl sub_80EBDBC\n\
+._1288:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1290:\n\
+ .align 2, 0\n\
+._1289:\n\
+ .word gPaletteFade\n\
+ .word sub_80EDDBC+1");
+}
+#else
void sub_80EE294()
{
switch (ewram0_10.var304)
@@ -2468,7 +7033,293 @@ void sub_80EE294()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EE3D8()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._1293\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0xd\n\
+ bls ._1291 @cond_branch\n\
+ b ._1354\n\
+._1291:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._1293 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._1294:\n\
+ .align 2, 0\n\
+._1293:\n\
+ .word +0x2000000\n\
+ .word ._1295\n\
+._1295:\n\
+ .word ._1296\n\
+ .word ._1297\n\
+ .word ._1298\n\
+ .word ._1299\n\
+ .word ._1300\n\
+ .word ._1301\n\
+ .word ._1302\n\
+ .word ._1303\n\
+ .word ._1304\n\
+ .word ._1305\n\
+ .word ._1306\n\
+ .word ._1307\n\
+ .word ._1308\n\
+ .word ._1309\n\
+._1296:\n\
+ bl sub_80F1E84\n\
+ mov r0, #0x0\n\
+ bl sub_80F2D04\n\
+ ldr r1, ._1311\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1312:\n\
+ .align 2, 0\n\
+._1311:\n\
+ .word +0x2000000\n\
+._1297:\n\
+ bl sub_80F1F10\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1313 @cond_branch\n\
+ b ._1354\n\
+._1313:\n\
+ mov r0, #0x9\n\
+ bl sub_80EEFBC\n\
+ ldr r1, ._1316\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1317:\n\
+ .align 2, 0\n\
+._1316:\n\
+ .word +0x2000000\n\
+._1298:\n\
+ bl sub_80EEF34\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ beq ._1318 @cond_branch\n\
+ b ._1354\n\
+._1318:\n\
+ ldr r4, ._1321\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r2, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ b ._1320\n\
+._1322:\n\
+ .align 2, 0\n\
+._1321:\n\
+ .word +0x2000000\n\
+._1299:\n\
+ ldr r0, ._1326\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1323 @cond_branch\n\
+ b ._1354\n\
+._1323:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl sub_80EED0C\n\
+ bl sub_80EF814\n\
+ bl sub_80EEE08\n\
+ ldr r1, ._1326 + 4\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1327:\n\
+ .align 2, 0\n\
+._1326:\n\
+ .word gPaletteFade\n\
+ .word +0x2000000\n\
+._1300:\n\
+ bl sub_80F2620\n\
+ ldr r1, ._1329\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1330:\n\
+ .align 2, 0\n\
+._1329:\n\
+ .word +0x2000000\n\
+._1301:\n\
+ mov r0, #0x2\n\
+ bl sub_80F0264\n\
+ ldr r1, ._1334\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1302:\n\
+ bl sub_80F02A0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._1331 @cond_branch\n\
+ b ._1354\n\
+._1331:\n\
+ ldr r1, ._1334\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1335:\n\
+ .align 2, 0\n\
+._1334:\n\
+ .word +0x2000000\n\
+._1303:\n\
+ mov r0, #0x3\n\
+ bl sub_80F2C80\n\
+ ldr r1, ._1338\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+._1304:\n\
+ mov r0, #0x3\n\
+ bl sub_80F2CBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1354 @cond_branch\n\
+ ldr r1, ._1338\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1339:\n\
+ .align 2, 0\n\
+._1338:\n\
+ .word +0x2000000\n\
+._1305:\n\
+ mov r0, #0x2\n\
+ bl sub_80F3008\n\
+ ldr r1, ._1341\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1342:\n\
+ .align 2, 0\n\
+._1341:\n\
+ .word +0x2000000\n\
+._1306:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1354 @cond_branch\n\
+ ldr r1, ._1345\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ b ._1344\n\
+._1346:\n\
+ .align 2, 0\n\
+._1345:\n\
+ .word +0x2000000\n\
+._1307:\n\
+ bl sub_80F6F10\n\
+ ldr r4, ._1348\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ mov r2, #0x0\n\
+ str r2, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, ._1348 + 4\n\
+ bl SetVBlankCallback\n\
+._1320:\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+._1344:\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ b ._1354\n\
+._1349:\n\
+ .align 2, 0\n\
+._1348:\n\
+ .word +0x2000000\n\
+ .word sub_80EBD68+1\n\
+._1308:\n\
+ mov r0, #0x5\n\
+ bl sub_80EED2C\n\
+ ldr r1, ._1352\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ ldr r0, ._1352 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1354 @cond_branch\n\
+ ldr r0, ._1352 + 8\n\
+ ldr r2, ._1352 + 12\n\
+ mov r1, #0x0\n\
+ mov r3, #0x4\n\
+ bl debug_sub_8008218\n\
+ b ._1354\n\
+._1353:\n\
+ .align 2, 0\n\
+._1352:\n\
+ .word +0x2000000\n\
+ .word gLinkOpen\n\
+ .word 0x6007de0\n\
+ .word 0x600f800\n\
+._1309:\n\
+ ldr r0, ._1355\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1354 @cond_branch\n\
+ ldr r0, ._1355 + 4\n\
+ bl sub_80EBDBC\n\
+._1354:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1356:\n\
+ .align 2, 0\n\
+._1355:\n\
+ .word gPaletteFade\n\
+ .word sub_80EE58C+1");
+}
+#else
void sub_80EE3D8()
{
switch (ewram0_10.var304)
@@ -2544,7 +7395,143 @@ void sub_80EE3D8()
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_80EE58C()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r5, ._1361\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r4, r5, r0\n\
+ ldrh r0, [r4]\n\
+ cmp r0, #0x1\n\
+ beq ._1357 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._1358 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._1359 @cond_branch\n\
+ b ._1383\n\
+._1362:\n\
+ .align 2, 0\n\
+._1361:\n\
+ .word +0x2000000\n\
+._1358:\n\
+ cmp r0, #0x2\n\
+ beq ._1363 @cond_branch\n\
+ b ._1383\n\
+._1359:\n\
+ bl sub_80F5DD4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ beq ._1365 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._1366 @cond_branch\n\
+ ldr r0, ._1369\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1367 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._1369 + 4\n\
+ bl sub_80EBDBC\n\
+ b ._1384\n\
+._1370:\n\
+ .align 2, 0\n\
+._1369:\n\
+ .word gMain\n\
+ .word sub_80EE658+1\n\
+._1365:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r1, ._1372\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_80F0FFC\n\
+ b ._1384\n\
+._1373:\n\
+ .align 2, 0\n\
+._1372:\n\
+ .word 0x876e\n\
+._1366:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._1384\n\
+._1367:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1383 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._1377\n\
+ bl sub_80EBDBC\n\
+ b ._1384\n\
+._1378:\n\
+ .align 2, 0\n\
+._1377:\n\
+ .word sub_80EE8F4+1\n\
+._1357:\n\
+ bl sub_80F0718\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._1383 @cond_branch\n\
+ ldr r1, ._1381\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_80F0FFC\n\
+ bl sub_80F3264\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ b ._1380\n\
+._1382:\n\
+ .align 2, 0\n\
+._1381:\n\
+ .word 0x876e\n\
+._1363:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._1383 @cond_branch\n\
+._1380:\n\
+ strh r0, [r4]\n\
+._1383:\n\
+ ldr r0, ._1385\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1384 @cond_branch\n\
+ ldr r0, ._1385 + 4\n\
+ ldr r1, ._1385 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x3\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1384:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1386:\n\
+ .align 2, 0\n\
+._1385:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_80EE58C()
{
switch (ewram0_10.var304)
@@ -2588,6 +7575,7 @@ void sub_80EE58C()
break;
}
}
+#endif
void sub_80EE658()
{
@@ -3018,6 +8006,108 @@ _080EEC0A:\n\
#endif
// var6dad and var6dae must be s8 in this func
+#if DEBUG
+__attribute__((naked))
+bool8 sub_80EEC10()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._1563\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1559 @cond_branch\n\
+ ldr r1, ._1563 + 4\n\
+ add r3, r1, #1\n\
+ add r2, r1, #5\n\
+._1561:\n\
+ ldrb r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bge ._1560 @cond_branch\n\
+ ldrb r0, [r3]\n\
+ sub r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+._1560:\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r1, r0]\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1561 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._1568\n\
+._1564:\n\
+ .align 2, 0\n\
+._1563:\n\
+ .word gMain\n\
+ .word +0x2006dad\n\
+._1559:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1565 @cond_branch\n\
+ ldr r1, ._1569\n\
+ mov r4, #0x0\n\
+ mov r2, #0x1\n\
+ ldsb r2, [r1, r2]\n\
+ add r3, r1, #5\n\
+._1567:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ lsl r0, r0, #0x18\n\
+ asr r0, r0, #0x18\n\
+ cmp r0, r2\n\
+ blt ._1566 @cond_branch\n\
+ strb r4, [r1]\n\
+._1566:\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r1, r0]\n\
+ add r0, r0, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._1567 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._1568\n\
+._1570:\n\
+ .align 2, 0\n\
+._1569:\n\
+ .word +0x2006dad\n\
+._1565:\n\
+ ldr r0, ._1572\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1571 @cond_branch\n\
+ ldr r0, ._1572 + 4\n\
+ ldr r1, ._1572 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x6\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1571:\n\
+ mov r0, #0x0\n\
+._1568:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._1573:\n\
+ .align 2, 0\n\
+._1572:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
bool8 sub_80EEC10()
{
if (gMain.newKeys & 0x40)
@@ -3040,7 +8130,104 @@ bool8 sub_80EEC10()
}
return FALSE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+bool8 sub_80EEC90()
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._1577\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r3, r0, #0x10\n\
+ cmp r3, #0\n\
+ beq ._1574 @cond_branch\n\
+ ldr r2, ._1577 + 4\n\
+ ldr r0, ._1577 + 8\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\
+ bge ._1580 @cond_branch\n\
+ ldr r3, ._1577 + 12\n\
+ add r0, r2, r3\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._1580\n\
+._1578:\n\
+ .align 2, 0\n\
+._1577:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+ .word 0x6dad\n\
+ .word 0x6dae\n\
+._1574:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1579 @cond_branch\n\
+ ldr r0, ._1582\n\
+ ldr r4, ._1582 + 4\n\
+ add r2, r0, r4\n\
+ ldrb r1, [r2]\n\
+ add r1, r1, #0x1\n\
+ strb r1, [r2]\n\
+ add r4, r4, #0x1\n\
+ add r0, r0, r4\n\
+ lsl r1, r1, #0x18\n\
+ asr r1, r1, #0x18\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x18\n\
+ asr r0, r0, #0x18\n\
+ cmp r1, r0\n\
+ blt ._1580 @cond_branch\n\
+ strb r3, [r2]\n\
+._1580:\n\
+ mov r0, #0x1\n\
+ b ._1581\n\
+._1583:\n\
+ .align 2, 0\n\
+._1582:\n\
+ .word +0x2000000\n\
+ .word 0x6dad\n\
+._1579:\n\
+ ldr r0, ._1585\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1584 @cond_branch\n\
+ ldr r0, ._1585 + 4\n\
+ ldr r1, ._1585 + 8\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x6\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1584:\n\
+ mov r0, #0x0\n\
+._1581:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._1586:\n\
+ .align 2, 0\n\
+._1585:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
bool8 sub_80EEC90()
{
if (gMain.newKeys & 0x40)
@@ -3057,6 +8244,7 @@ bool8 sub_80EEC90()
}
return FALSE;
}
+#endif
void sub_80EED0C()
{
diff --git a/src/rom3.c b/src/rom3.c
index 713713162..34746c1a8 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -67,6 +67,10 @@ void sub_800B858(void)
}
}
+#if 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;
+
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ gSharedMem[0x160fd] = 0;
+ gSharedMem[0x160fe] = 0;
+ gSharedMem[0x160ff] = 0;
+ ((u32 *) gBattleBuffersTransferData)[64]++;
+ }
+#endif
}
void sub_800B950(void)
diff --git a/src/rom6.c b/src/rom6.c
index 62fbc987c..06e84cc0f 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);
}
+#if 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 41e8ef77f..e01f085a2 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -131,6 +131,12 @@ struct StructgUnknown_083F8D90
u32 var04;
};
+#if DEBUG
+u8 gUnknown_Debug_03005FB8;
+#endif
+
+#define static
+
static void sub_81150FC(void);
static void sub_8115124(void);
static void sub_8115238(void);
@@ -308,7 +314,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)
@@ -570,6 +579,305 @@ void sub_8115238(void)
}
#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8115384(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._35\n\
+ ldr r0, ._35 + 4\n\
+ str r0, [r1]\n\
+ ldr r1, ._35 + 8\n\
+ ldr r2, ._35 + 12\n\
+ add r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ add r2, r1, #0\n\
+ cmp r0, #0x7\n\
+ bls ._33 @cond_branch\n\
+ b ._64\n\
+._33:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._35 + 16\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._36:\n\
+ .align 2, 0\n\
+._35:\n\
+ .word gUnknown_Debug_03005FB8\n\
+ .word +0x2019000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._37\n\
+._37:\n\
+ .word ._38\n\
+ .word ._39\n\
+ .word ._40\n\
+ .word ._41\n\
+ .word ._42\n\
+ .word ._43\n\
+ .word ._44\n\
+ .word ._45\n\
+._38:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl ScanlineEffect_Stop\n\
+ bl ClearVideoCallbacks\n\
+ bl sub_80F9368\n\
+ ldr r1, ._47\n\
+ ldr r3, ._47 + 4\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ sub r1, r1, #0x2\n\
+ ldr r2, ._47 + 8\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x46\n\
+ mov r3, #0x90\n\
+ lsl r3, r3, #0x6\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x2\n\
+ ldr r2, ._47 + 12\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ ldr r0, ._47 + 16\n\
+ mov r1, #0xc0\n\
+ lsl r1, r1, #0x13\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\
+ ldr r0, ._47 + 20\n\
+ ldr r1, ._47 + 24\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\
+ ldr r1, ._47 + 28\n\
+ ldr r3, ._47 + 32\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._48:\n\
+ .align 2, 0\n\
+._47:\n\
+ .word 0x400000c\n\
+ .word 0x4686\n\
+ .word 0x4401\n\
+ .word 0x60a\n\
+ .word gUnknown_08E8096C\n\
+ .word gRouletteWheelTiles\n\
+ .word 0x6004000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._39:\n\
+ bl ResetPaletteFade\n\
+ bl ResetSpriteData\n\
+ bl ResetTasks\n\
+ ldr r1, ._50\n\
+ ldr r0, ._50 + 4\n\
+ add r1, r1, r0\n\
+ b ._61\n\
+._51:\n\
+ .align 2, 0\n\
+._50:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._40:\n\
+ ldr r0, ._53\n\
+ bl Text_LoadWindowTemplate\n\
+ ldr r0, ._53 + 4\n\
+ bl InitMenuWindow\n\
+ ldr r0, ._53 + 8\n\
+ mov r2, #0xe0\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x0\n\
+ bl LoadPalette\n\
+ ldr r1, ._53 + 12\n\
+ ldr r2, ._53 + 16\n\
+ add r1, r1, r2\n\
+ b ._61\n\
+._54:\n\
+ .align 2, 0\n\
+._53:\n\
+ .word gWindowTemplate_81E6C3C\n\
+ .word gWindowTemplate_81E6CE4\n\
+ .word gUnknown_083F86BC\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._41:\n\
+ bl sub_8115238\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._56\n\
+ ldr r1, ._56 + 4\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cbc\n\
+ ldr r0, ._56 + 8\n\
+ ldr r1, ._56 + 12\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\
+ ldr r1, ._56 + 16\n\
+ ldr r3, ._56 + 20\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._57:\n\
+ .align 2, 0\n\
+._56:\n\
+ .word gUnknown_083F88BC\n\
+ .word +0x2018800\n\
+ .word gUnknown_083F8A60\n\
+ .word 0x6003000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._42:\n\
+ mov r0, #0x0\n\
+ bl sub_8117838\n\
+ bl sub_811857C\n\
+ bl sub_81184D8\n\
+ bl sub_8117F2C\n\
+ bl sub_8117900\n\
+ bl sub_8117BBC\n\
+ bl sub_8117DF4\n\
+ ldr r1, ._59\n\
+ ldr r0, ._59 + 4\n\
+ add r1, r1, r0\n\
+ b ._61\n\
+._60:\n\
+ .align 2, 0\n\
+._59:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._43:\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, ._62\n\
+ ldr r1, ._62 + 4\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ bl sub_81180F4\n\
+ mov r0, #0x6\n\
+ bl sub_81182F8\n\
+ mov r0, #0x0\n\
+ bl sub_811829C\n\
+ mov r0, #0x0\n\
+ bl sub_8117158\n\
+ mov r0, #0x0\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._62 + 8\n\
+ mov r1, #0x1\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldr r1, ._62 + 12\n\
+ mov r2, #0x3c\n\
+ neg r2, r2\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ ldr r1, ._62 + 16\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ ldr r1, ._62 + 20\n\
+ ldr r3, ._62 + 24\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._63:\n\
+ .align 2, 0\n\
+._62:\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gUnknown_081C4157\n\
+ .word gSpriteCoordOffsetX\n\
+ .word gSpriteCoordOffsetY\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._44:\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x13\n\
+ ldr r3, ._65\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ ldr r0, ._65 + 4\n\
+ add r1, r2, r0\n\
+._61:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._64\n\
+._66:\n\
+ .align 2, 0\n\
+._65:\n\
+ .word 0x1741\n\
+ .word 0x43c\n\
+._45:\n\
+ ldr r3, ._67\n\
+ ldrh r2, [r3]\n\
+ mov r0, #0x0\n\
+ strh r0, [r3]\n\
+ ldr r4, ._67 + 4\n\
+ ldrh r0, [r4]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r4]\n\
+ strh r2, [r3]\n\
+ ldr r2, ._67 + 8\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x8\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\n\
+ ldr r0, ._67 + 12\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0x1\n\
+ str r0, [sp]\n\
+ mov r0, #0xff\n\
+ mov r1, #0x0\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginHardwarePaletteFade\n\
+ ldr r0, ._67 + 16\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ ldr r4, ._67 + 20\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0xa4\n\
+ strb r0, [r1]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._67 + 24\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ mov r0, #0x6\n\
+ strh r0, [r1, #0x14]\n\
+ ldr r0, ._67 + 28\n\
+ ldr r2, ._67 + 32\n\
+ add r0, r0, r2\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, #0x22]\n\
+ ldr r0, ._67 + 36\n\
+ mov r1, #0x1\n\
+ bl CreateTask\n\
+ add r4, r4, #0xa5\n\
+ strb r0, [r4]\n\
+ ldr r0, ._67 + 40\n\
+ bl SetMainCallback2\n\
+._64:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._68:\n\
+ .align 2, 0\n\
+._67:\n\
+ .word 0x4000208\n\
+ .word 0x4000200\n\
+ .word 0x4000004\n\
+ .word sub_8115124+1\n\
+ .word sub_81156BC+1\n\
+ .word +0x2019000\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word sub_8115634+1\n\
+ .word sub_81150FC+1");
+}
+#else
void sub_8115384(void)
{
u32 temp_IME;
@@ -651,7 +959,120 @@ void sub_8115384(void)
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8115634(u8 unused)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ ldr r0, ._75\n\
+ add r3, r0, #0\n\
+ add r3, r3, #0x21\n\
+ ldrb r1, [r3]\n\
+ add r2, r1, #1\n\
+ strb r2, [r3]\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x23\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r6, r0, #0\n\
+ ldrb r2, [r2]\n\
+ cmp r1, r2\n\
+ bne ._70 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r3]\n\
+ add r2, r6, #0\n\
+ add r2, r2, #0x22\n\
+ ldrb r1, [r2]\n\
+ ldrh r0, [r6, #0x24]\n\
+ sub r0, r0, r1\n\
+ strh r0, [r6, #0x24]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._70 @cond_branch\n\
+ ldrb r1, [r2]\n\
+ mov r2, #0xb4\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ sub r0, r0, r1\n\
+ strh r0, [r6, #0x24]\n\
+._70:\n\
+ add r4, r6, #0\n\
+ ldrh r0, [r4, #0x24]\n\
+ bl Sin2\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ ldrh r0, [r4, #0x24]\n\
+ bl Cos2\n\
+ lsl r0, r0, #0x10\n\
+ lsr r1, r0, #0x10\n\
+ lsl r0, r5, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._71 @cond_branch\n\
+ add r0, r0, #0xf\n\
+._71:\n\
+ lsl r0, r0, #0xc\n\
+ lsr r5, r0, #0x10\n\
+ lsl r0, r1, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._72 @cond_branch\n\
+ add r0, r0, #0xf\n\
+._72:\n\
+ asr r0, r0, #0x4\n\
+ strh r0, [r6, #0x32]\n\
+ strh r0, [r6, #0x2c]\n\
+ strh r5, [r6, #0x2e]\n\
+ lsl r0, r5, #0x10\n\
+ asr r0, r0, #0x10\n\
+ neg r0, r0\n\
+ strh r0, [r6, #0x30]\n\
+ ldr r0, ._75 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._74 @cond_branch\n\
+ ldr r0, ._75 + 8\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._74 @cond_branch\n\
+ ldr r2, ._75 + 12\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0xa4\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldr r1, ._75 + 16\n\
+ str r1, [r0]\n\
+ ldr r0, ._75 + 20\n\
+ bl gMysteryEventScriptCmdTableEnd+0x1c08\n\
+ ldr r0, ._75 + 24\n\
+ bl gMysteryEventScriptCmdTableEnd+0x1c08\n\
+ ldr r0, ._75 + 28\n\
+ bl gMysteryEventScriptCmdTableEnd+0x1c08\n\
+._74:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._76:\n\
+ .align 2, 0\n\
+._75:\n\
+ .word +0x2019000\n\
+ .word unk_203955C\n\
+ .word gMain\n\
+ .word gTasks\n\
+ .word sub_81157AC+1\n\
+ .word gMPlay_SE1\n\
+ .word gMPlay_SE2\n\
+ .word gMPlay_SE3");
+}
+#else
void sub_8115634(u8 unused)
{
s16 sin;
@@ -672,6 +1093,7 @@ void sub_8115634(u8 unused)
eRoulette->var2C.b = sin;
eRoulette->var2C.c = -sin;
}
+#endif
void sub_81156BC(u8 taskid)
{
@@ -1593,7 +2015,69 @@ void sub_8116AB0(u8 taskid)
gTasks[taskid].func = &sub_8116B40;
}
-void sub_8116B40(u8 taskid) // end oulette ?
+#if DEBUG
+__attribute__((naked))
+void sub_8116B40(u8 taskid) // end roulette ?
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ cmp r5, #0\n\
+ bne ._380 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._381\n\
+ mov r2, #0xbe\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5c24\n\
+ ldr r1, ._381 + 4\n\
+ ldr r0, ._381 + 8\n\
+ mov r4, #0x0\n\
+ strh r5, [r0]\n\
+ strh r5, [r1]\n\
+ bl sub_80F9368\n\
+ bl FreeAllSpritePalettes\n\
+ bl ResetPaletteFade\n\
+ bl ResetSpriteData\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._381 + 12\n\
+ strh r5, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r5, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r5, [r0]\n\
+ ldr r1, ._381 + 16\n\
+ ldr r0, ._381 + 20\n\
+ str r0, [r1]\n\
+ ldr r0, ._381 + 24\n\
+ bl SetMainCallback2\n\
+ add r0, r6, #0\n\
+ bl DestroyTask\n\
+ ldr r0, ._381 + 28\n\
+ strb r4, [r0]\n\
+._380:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._382:\n\
+ .align 2, 0\n\
+._381:\n\
+ .word +0x2019000\n\
+ .word gSpriteCoordOffsetX\n\
+ .word gSpriteCoordOffsetY\n\
+ .word 0x4000050\n\
+ .word gFieldCallback\n\
+ .word sub_8080990+1\n\
+ .word c2_exit_to_overworld_2_switch+1\n\
+ .word unk_203955C");
+}
+#else
+void sub_8116B40(u8 taskid) // end roulette ?
{
if (UpdatePaletteFade() == 0)
{
@@ -1613,6 +2097,7 @@ void sub_8116B40(u8 taskid) // end oulette ?
DestroyTask(taskid);
}
}
+#endif
void sub_8116BC0(u8 taskid)
{
@@ -2629,6 +3114,9 @@ void sub_811755C(u8 taskid)
void sub_81175C0(u8 taskid)
{
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
Menu_EraseScreen();
ScriptContext2_Disable();
DestroyTask(taskid);
@@ -2691,6 +3179,386 @@ void Task_Roulette_0(u8 taskid)
}
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_812CDE4()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r3, r0, #0x18\n\
+ add r4, r3, #0\n\
+ ldr r0, ._575\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ ldr r1, ._575 + 4\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r0, [r2, #0x22]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ ldr r1, ._575 + 8\n\
+ cmp r0, r1\n\
+ bne ._573 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r2, #0x22]\n\
+._573:\n\
+ ldr r0, ._575 + 12\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._576:\n\
+ .align 2, 0\n\
+._575:\n\
+ .word gMain\n\
+ .word gTasks\n\
+ .word 0x27100000\n\
+ .word gStringVar1\n\
+._572:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r1, ._580\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r0, [r2, #0x22]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ cmp r0, r1\n\
+ bne ._578 @cond_branch\n\
+ ldr r0, ._580 + 4\n\
+ strh r0, [r2, #0x22]\n\
+._578:\n\
+ ldr r0, ._580 + 8\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._581:\n\
+ .align 2, 0\n\
+._580:\n\
+ .word gTasks\n\
+ .word 0x270f\n\
+ .word gStringVar1\n\
+._577:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._582 @cond_branch\n\
+ ldr r1, ._585\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r3, [r2, #0x22]\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0xa\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ ldr r1, ._585 + 4\n\
+ cmp r0, r1\n\
+ ble ._583 @cond_branch\n\
+ ldr r1, ._585 + 8\n\
+ add r0, r3, r1\n\
+ strh r0, [r2, #0x22]\n\
+._583:\n\
+ ldr r0, ._585 + 12\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._586:\n\
+ .align 2, 0\n\
+._585:\n\
+ .word gTasks\n\
+ .word 0x270f0000\n\
+ .word 0xffffd8fb\n\
+ .word gStringVar1\n\
+._582:\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 r0, ._590\n\
+ lsl r1, r3, #0x2\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ ldrh r2, [r1, #0x22]\n\
+ add r0, r2, #0\n\
+ sub r0, r0, #0xa\n\
+ strh r0, [r1, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._588 @cond_branch\n\
+ ldr r3, ._590 + 4\n\
+ add r0, r2, r3\n\
+ strh r0, [r1, #0x22]\n\
+._588:\n\
+ ldr r0, ._590 + 8\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+._584:\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._590 + 12\n\
+ ldr r1, ._590 + 16\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ b ._596\n\
+._591:\n\
+ .align 2, 0\n\
+._590:\n\
+ .word gTasks\n\
+ .word 0x2705\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+._587:\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._592 @cond_branch\n\
+ ldr r0, ._594\n\
+ ldr r2, ._594 + 4\n\
+ lsl r1, r3, #0x2\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r2, [r1, #0x22]\n\
+ ldr r3, ._594 + 8\n\
+ add r0, r0, r3\n\
+ mov r5, #0x0\n\
+ strh r2, [r0]\n\
+ ldr r0, ._594 + 12\n\
+ str r0, [r1]\n\
+ ldr r0, ._594 + 16\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._594 + 20\n\
+ ldr r1, ._594 + 24\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ ldr r0, ._594 + 28\n\
+ strb r5, [r0]\n\
+ b ._596\n\
+._595:\n\
+ .align 2, 0\n\
+._594:\n\
+ .word gSaveBlock1\n\
+ .word gTasks\n\
+ .word 0x494\n\
+ .word Task_Roulette_0+1\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word unk_2039560\n\
+._592:\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._596 @cond_branch\n\
+ ldr r0, ._597\n\
+ ldr r2, ._597 + 4\n\
+ lsl r1, r4, #0x2\n\
+ add r1, r1, r4\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r2, [r1, #0x22]\n\
+ ldr r3, ._597 + 8\n\
+ add r0, r0, r3\n\
+ strh r2, [r0]\n\
+ ldr r0, ._597 + 12\n\
+ str r0, [r1]\n\
+ ldr r0, ._597 + 16\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._597 + 20\n\
+ ldr r1, ._597 + 24\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ ldr r1, ._597 + 28\n\
+ mov r0, #0x1\n\
+ strb r0, [r1]\n\
+._596:\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._598:\n\
+ .align 2, 0\n\
+._597:\n\
+ .word gSaveBlock1\n\
+ .word gTasks\n\
+ .word 0x494\n\
+ .word Task_Roulette_0+1\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word unk_2039560");
+}
+
+__attribute__((naked))
+void debug_sub_812CFE8()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._600\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r5, r1, r2\n\
+ ldr r0, ._600 + 4\n\
+ ldr r1, ._600 + 8\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r5, #0x22]\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._599 @cond_branch\n\
+ ldr r0, ._600 + 12\n\
+ ldrh r1, [r0]\n\
+ mov r2, #0x80\n\
+ orr r1, r1, r2\n\
+ strh r1, [r0]\n\
+._599:\n\
+ ldr r0, ._600 + 16\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r5, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._600 + 20\n\
+ ldr r1, ._600 + 24\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ mov r2, #0x9\n\
+ mov r3, #0x3\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ mov r0, #0x0\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._600 + 28\n\
+ mov r1, #0x1\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._600 + 32\n\
+ str r0, [r5]\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._601:\n\
+ .align 2, 0\n\
+._600:\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gSpecialVar_0x8004\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word gUnknown_Debug_0842510D\n\
+ .word debug_sub_812CDE4+1");
+}
+
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void PlayRoulette(void)
+{
+ asm("\
+ push {lr}\n\
+ bl ScriptContext2_Enable\n\
+ ldr r1, ._604\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ ldr r0, ._604 + 4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._602 @cond_branch\n\
+ ldr r0, ._604 + 8\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ b ._603\n\
+._605:\n\
+ .align 2, 0\n\
+._604:\n\
+ .word unk_2039560\n\
+ .word unk_203955C\n\
+ .word debug_sub_812CFE8+1\n\
+._602:\n\
+ ldr r0, ._606\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._606 + 4\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldr r0, ._606 + 8\n\
+ ldr r2, ._606 + 12\n\
+ add r0, r0, r2\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, #0x22]\n\
+._603:\n\
+ pop {r0}\n\
+ bx r0\n\
+._607:\n\
+ .align 2, 0\n\
+._606:\n\
+ .word Task_Roulette_0+1\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494");
+}
+#else
void PlayRoulette(void)
{
u8 taskid;
@@ -2698,6 +3566,7 @@ void PlayRoulette(void)
taskid = CreateTask(&Task_Roulette_0, 0x0);
gTasks[taskid].data[0xD] = gSaveBlock1.coins;
}
+#endif
void sub_8117838(u8 r0)
{
@@ -3591,6 +4460,99 @@ void sub_8118D2C(struct Sprite *sprite)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_812E698()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add r7, r0, #0\n\
+ bl sub_8118724\n\
+ mov r0, #0x0\n\
+ strh r0, [r7, #0x32]\n\
+ add r0, r7, #0\n\
+ bl sub_81186B8\n\
+ mov r0, #0x38\n\
+ bl gMysteryEventScriptCmdTableEnd+0x13c0\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._837 @cond_branch\n\
+ ldr r4, ._839\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x8c\n\
+ ldr r0, ._839 + 4\n\
+ str r0, [r1]\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7e\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, #0x1\n\
+ mov r1, #0xc\n\
+ bl gMysteryEventScriptCmdTableEnd+0x3e40\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x7f\n\
+ strb r0, [r1]\n\
+ add r1, r4, #0\n\
+ ldr r4, ._839 + 8\n\
+ b ._838\n\
+._840:\n\
+ .align 2, 0\n\
+._839:\n\
+ .word +0x2019000\n\
+ .word 0x0\n\
+ .word gUnknown_083F8DF4\n\
+._837:\n\
+ ldr r6, ._841\n\
+ add r5, r6, #0\n\
+ add r5, r5, #0x8c\n\
+ ldr r4, ._841 + 4\n\
+ ldrb r0, [r6, #0x4]\n\
+ lsl r0, r0, #0x1e\n\
+ lsr r0, r0, #0x19\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x1c\n\
+ add r0, r0, r1\n\
+ ldr r1, [r0]\n\
+ add r0, r1, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x54dc\n\
+ str r0, [r5]\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0x7e\n\
+ ldrb r0, [r0]\n\
+ add r1, r6, #0\n\
+ add r1, r1, #0x7f\n\
+ strb r0, [r1]\n\
+ add r1, r6, #0\n\
+._838:\n\
+ mov r0, #0x1\n\
+ strh r0, [r7, #0x2e]\n\
+ ldrb r0, [r1, #0x4]\n\
+ lsl r0, r0, #0x1e\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0, #0x2]\n\
+ strh r0, [r7, #0x32]\n\
+ add r1, r1, #0x98\n\
+ ldr r0, ._841 + 8\n\
+ str r0, [r1]\n\
+ ldr r0, ._841 + 12\n\
+ str r0, [r7, #0x1c]\n\
+ mov r0, #0x5\n\
+ strh r0, [r7, #0x30]\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._842:\n\
+ .align 2, 0\n\
+._841:\n\
+ .word +0x2019000\n\
+ .word gUnknown_083F8DF4\n\
+ .word 0x3dae147b\n\
+ .word sub_8118D2C+1");
+}
+#endif
+
#ifdef NONMATCHING
void sub_8118DE4(struct Sprite *sprite)
{
@@ -3866,6 +4828,137 @@ _08118F88: .4byte sub_8118D2C\n\
}
#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8118F8C(struct Sprite *sprite)
+{
+ 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\
+ bl sub_8118724\n\
+ ldr r5, ._868\n\
+ mov r0, #0x8c\n\
+ add r0, r0, r5\n\
+ mov r8, r0\n\
+ ldr r0, [r0]\n\
+ ldr r1, ._868 + 4\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5928\n\
+ cmp r0, #0\n\
+ bgt ._874 @cond_branch\n\
+ add r0, r6, #0\n\
+ bl sub_81186B8\n\
+ add r0, r6, #0\n\
+ bl sub_81186E8\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bne ._864 @cond_branch\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x90\n\
+ ldr r0, ._868 + 8\n\
+ str r0, [r1]\n\
+ ldr r1, ._868 + 12\n\
+ mov r9, r1\n\
+ ldrb r0, [r5, #0x4]\n\
+ lsl r7, r0, #0x1e\n\
+ lsr r0, r7, #0x19\n\
+ add r0, r0, r9\n\
+ mov r4, #0x3\n\
+ ldsb r4, [r0, r4]\n\
+ add r0, r4, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5a48\n\
+ add r5, r0, #0\n\
+ cmp r4, #0\n\
+ bge ._865 @cond_branch\n\
+ ldr r1, ._868 + 16\n\
+ bl gMysteryEventScriptCmdTableEnd+0x54dc\n\
+ add r5, r0, #0\n\
+._865:\n\
+ lsr r0, r7, #0x19\n\
+ add r0, r0, r9\n\
+ ldrb r0, [r0, #0x4]\n\
+ add r0, r0, #0x1\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5a48\n\
+ add r1, r0, #0\n\
+ add r0, r5, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x56a0\n\
+ add r1, r0, #0\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5508\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ mov r0, #0x4\n\
+ strh r0, [r6, #0x30]\n\
+ ldr r0, ._868 + 20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._866 @cond_branch\n\
+ ldr r0, ._868 + 24\n\
+ str r0, [r6, #0x1c]\n\
+ b ._874\n\
+._869:\n\
+ .align 2, 0\n\
+._868:\n\
+ .word +0x2019000\n\
+ .word 0x3f000000\n\
+ .word 0x0\n\
+ .word gUnknown_083F8DF4\n\
+ .word 0x43800000\n\
+ .word unk_2039560\n\
+ .word debug_sub_812E698+1\n\
+._866:\n\
+ ldr r0, ._871\n\
+ str r0, [r6, #0x1c]\n\
+ b ._874\n\
+._872:\n\
+ .align 2, 0\n\
+._871:\n\
+ .word sub_8118DE4+1\n\
+._864:\n\
+ add r6, r5, #0\n\
+ add r6, r6, #0x90\n\
+ ldr r0, [r6]\n\
+ ldr r4, ._875\n\
+ add r1, r4, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x58e0\n\
+ cmp r0, #0\n\
+ beq ._874 @cond_branch\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ add r1, r4, #0\n\
+ bl gMysteryEventScriptCmdTableEnd+0x59b8\n\
+ cmp r0, #0\n\
+ bge ._874 @cond_branch\n\
+ str r4, [r6]\n\
+ mov r0, r8\n\
+ str r4, [r0]\n\
+ add r4, r5, #0\n\
+ add r4, r4, #0x98\n\
+ ldr r0, [r4]\n\
+ bl gMysteryEventScriptCmdTableEnd+0x5b4c\n\
+ ldr r2, ._875 + 4\n\
+ ldr r3, ._875 + 8\n\
+ bl gMysteryEventScriptCmdTableEnd+0x4c2c\n\
+ bl gMysteryEventScriptCmdTableEnd+0x51e8\n\
+ str r0, [r4]\n\
+._874:\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\
+._876:\n\
+ .align 2, 0\n\
+._875:\n\
+ .word 0x0\n\
+ .word 0x3ff33333\n\
+ .word 0x33333333");
+}
+#else
void sub_8118F8C(struct Sprite *sprite)
{
sub_8118724(sprite);
@@ -3896,6 +4989,7 @@ void sub_8118F8C(struct Sprite *sprite)
}
}
}
+#endif
void sub_8119088(struct Sprite *sprite)
{
diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c
index 7567899ae..2535f02a6 100644
--- a/src/scene/berry_blender.c
+++ b/src/scene/berry_blender.c
@@ -278,8 +278,8 @@ static bool8 Blender_PrintBlendingResults(void);
static void sub_80510E8(void);
static void sub_8050E30(void);
static void sub_805197C(u16 a0, u16 a1);
-static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
-static void sub_8052BD0(u8 taskID);
+/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
+/*static*/ void sub_8052BD0(u8 taskID);
static void sub_8052AF8(void);
static void sub_804F8C8(u8 taskID);
static void sub_804F9F4(u8 taskID);
@@ -2411,7 +2411,7 @@ static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct
Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4);
}
-static void sub_8050760(void)
+/*static*/ void sub_8050760(void)
{
u32 frames = (u16)(gBerryBlenderData->gameFrameTime);
u16 max_RPM = gBerryBlenderData->max_RPM;
@@ -3270,12 +3270,20 @@ static void sub_8051C04(struct Sprite* sprite)
sprite->pos2.y = -(gBerryBlenderData->field_146);
}
-static void Blender_TrySettingRecord(void)
+/*static*/ void Blender_TrySettingRecord(void)
{
if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM)
gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 Blender_PrintBlendingResults(void)
+{
+ // TODO: disassemble this!
+ asm(".incbin \"baserom_de_debug.gba\", 0x56178, 0x5655C-0x56178");
+}
+#else
static bool8 Blender_PrintBlendingResults(void)
{
u16 i;
@@ -3410,8 +3418,9 @@ static bool8 Blender_PrintBlendingResults(void)
}
return FALSE;
}
+#endif
-static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
+/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
{
u8 text[12];
u8 flavourLvl, feel;
@@ -3834,7 +3843,7 @@ void ShowBerryBlenderRecordWindow(void)
}
}
-static void sub_8052BD0(u8 taskID)
+/*static*/ void sub_8052BD0(u8 taskID)
{
if (gTasks[taskID].data[0] == 0)
{
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index 7faa8d844..d81263f87 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"
@@ -103,6 +104,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");
@@ -183,6 +209,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 gMenuCallback\n\
+ .word debug_sub_8138C54+1");
+}
+
+#endif
+
static void CableCarTask1(u8 taskId)
{
if (!gPaletteFade.active)
@@ -199,6 +377,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/cute_sketch.c b/src/scene/cute_sketch.c
index 5317bc334..c4d9463f5 100644
--- a/src/scene/cute_sketch.c
+++ b/src/scene/cute_sketch.c
@@ -29,6 +29,350 @@ void sub_80FD1C8(u16);
u16 sub_80FD39C(u16*);
u16 sub_80FD68C(u16*, u16*, u16*);
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_8110CCC(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, #0x0\n\
+ mov r1, #0x0\n\
+ ldr r2, ._5\n\
+ ldr r6, ._5 + 4\n\
+._7:\n\
+ lsl r0, r1, #0x3\n\
+ add r4, r0, r2\n\
+ ldrh r0, [r6, #0x1c]\n\
+ ldrh r3, [r4, #0x4]\n\
+ cmp r0, r3\n\
+ bne ._1 @cond_branch\n\
+ ldrh r0, [r4, #0x6]\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._4 @cond_branch\n\
+ ldrb r0, [r6, #0x1f]\n\
+ ldr r1, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ bl StringLength\n\
+ mov r1, #0xc\n\
+ sub r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r5, r1, #0x10\n\
+ cmp r1, #0\n\
+ bge ._3 @cond_branch\n\
+ mov r5, #0x0\n\
+._3:\n\
+ mov r7, #0x1\n\
+ mov r0, #0x10\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0x8\n\
+ mov r1, #0x11\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldrb r0, [r6, #0x1f]\n\
+ ldr r1, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x11\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ mov r2, #0x11\n\
+ bl Menu_PrintText\n\
+ b ._4\n\
+._6:\n\
+ .align 2, 0\n\
+._5:\n\
+ .word gUnknown_083E79C0\n\
+ .word +0x2000000\n\
+._1:\n\
+ add r0, r1, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r1, r0, #0x10\n\
+ cmp r1, #0\n\
+ beq ._7 @cond_branch\n\
+._4:\n\
+ cmp r7, #0\n\
+ bne ._8 @cond_branch\n\
+ mov r0, #0x10\n\
+ mov r1, #0x10\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._9\n\
+ mov r1, #0x11\n\
+ mov r2, #0x11\n\
+ bl Menu_PrintText\n\
+ mov r0, #0x10\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0xf\n\
+ bl Menu_EraseWindowRect\n\
+._8:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._10:\n\
+ .align 2, 0\n\
+._9:\n\
+ .word +0x2000008");
+}
+
+__attribute__((naked))
+void debug_sub_8110D84(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._13\n\
+ ldrh r0, [r0, #0x4]\n\
+ cmp r0, #0x7\n\
+ bls ._11 @cond_branch\n\
+ b ._65\n\
+._11:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._13 + 4\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._14:\n\
+ .align 2, 0\n\
+._13:\n\
+ .word +0x2000000\n\
+ .word ._15\n\
+._15:\n\
+ .word ._16\n\
+ .word ._17\n\
+ .word ._18\n\
+ .word ._19\n\
+ .word ._20\n\
+ .word ._21\n\
+ .word ._22\n\
+ .word ._23\n\
+._16:\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 r1, ._25\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._26:\n\
+ .align 2, 0\n\
+._25:\n\
+ .word +0x2000000\n\
+._17:\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._27 @cond_branch\n\
+ b ._65\n\
+._27:\n\
+ ldr r1, ._30\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._31:\n\
+ .align 2, 0\n\
+._30:\n\
+ .word +0x2000000\n\
+._18:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x3\n\
+ beq ._32 @cond_branch\n\
+ cmp r0, #0x3\n\
+ bgt ._33 @cond_branch\n\
+ b ._65\n\
+._33:\n\
+ cmp r0, #0x4\n\
+ beq ._35 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._36 @cond_branch\n\
+ b ._65\n\
+._35:\n\
+ ldr r4, ._41\n\
+ ldrb r0, [r4, #0x1e]\n\
+ cmp r0, #0\n\
+ bne ._38 @cond_branch\n\
+ b ._65\n\
+._38:\n\
+ mov r0, #0x5\n\
+ bl gMysteryEventScriptCmdTableEnd+0x13c0\n\
+ ldr r1, ._41 + 4\n\
+ add r0, r4, r1\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._41 + 8\n\
+ bl sub_80FC244\n\
+ b ._65\n\
+._42:\n\
+ .align 2, 0\n\
+._41:\n\
+ .word +0x2000000\n\
+ .word 0xa6e\n\
+ .word sub_80FC69C+1\n\
+._36:\n\
+ mov r0, #0x5\n\
+ bl gMysteryEventScriptCmdTableEnd+0x13c0\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, ._44\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._45:\n\
+ .align 2, 0\n\
+._44:\n\
+ .word +0x2000000\n\
+._19:\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ ldr r0, ._48\n\
+ bl SetMainCallback2\n\
+ b ._65\n\
+._49:\n\
+ .align 2, 0\n\
+._48:\n\
+ .word sub_805469C+1\n\
+._20:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._50 @cond_branch\n\
+._32:\n\
+ bl debug_sub_8110CCC\n\
+ b ._65\n\
+._50:\n\
+ ldr r0, ._54\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._65 @cond_branch\n\
+ bl sub_80FBCA0\n\
+ bl sub_80FAEC4\n\
+ ldr r1, ._54 + 4\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._55:\n\
+ .align 2, 0\n\
+._54:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+._21:\n\
+ bl sub_80FAFC0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl CreateRegionMapCursor\n\
+ ldr r1, ._58\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._59:\n\
+ .align 2, 0\n\
+._58:\n\
+ .word +0x2000000\n\
+._22:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._60 @cond_branch\n\
+ bl debug_sub_8110CCC\n\
+._60:\n\
+ ldr r0, ._63\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._65 @cond_branch\n\
+ bl sub_80FBCA0\n\
+ bl sub_80FAEC4\n\
+ ldr r1, ._63 + 4\n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._64:\n\
+ .align 2, 0\n\
+._63:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+._23:\n\
+ bl sub_80FAFC0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl CreateRegionMapCursor\n\
+ ldr r1, ._66\n\
+ mov r0, #0x3\n\
+._62:\n\
+ strh r0, [r1, #0x4]\n\
+._65:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._67:\n\
+ .align 2, 0\n\
+._66:\n\
+ .word +0x2000000");
+}
+
+__attribute__((naked))
+void debug_sub_8110F28(void)
+{
+ asm("\
+ push {lr}\n\
+ bl CB2_InitFlyRegionMap\n\
+ ldr r0, ._69\n\
+ ldr r1, [r0, #0x4]\n\
+ ldr r0, ._69 + 4\n\
+ cmp r1, r0\n\
+ bne ._68 @cond_branch\n\
+ bl sub_80FBF94\n\
+ ldr r0, ._69 + 8\n\
+ bl sub_80FC244\n\
+ bl debug_sub_8110CCC\n\
+._68:\n\
+ pop {r0}\n\
+ bx r0\n\
+._70:\n\
+ .align 2, 0\n\
+._69:\n\
+ .word gMain\n\
+ .word CB2_FlyRegionMap+1\n\
+ .word debug_sub_8110D84+1");
+}
+
+#endif
+
void sub_80FC7A0(struct Unk03005E20* info)
{
gUnknown_03005DEC = info->var_4;
diff --git a/src/scene/new_game.c b/src/scene/new_game.c
index 0279f99c6..cec7134a3 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"
+#if 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},
};
+#if 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));
}
+#if 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;
+#if DEBUG
+ gUnknown_020297ED = 0;
+#endif
sub_808C0A0();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
@@ -161,3 +208,33 @@ void NewGameInitData(void)
WarpToTruck();
ScriptContext2_RunNewScript(gUnknown_0819FA81);
}
+
+#if 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..4ff02d93c 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);
}
+#if 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);
}
+#if DEBUG
+static void CB2_GoToTestMenu(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitTestMenu);
+}
+#endif
+
static void CB2_GoToCopyrightScreen(void)
{
if (!UpdatePaletteFade())
diff --git a/src/strings.c b/src/strings.c
index 06bbadb8f..0f599db72 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -173,7 +173,8 @@ const u8 gOtherText_None[] = _("NONE");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -267,7 +268,9 @@ const u8 gContestStatsText_Spicy[] = _("SPICY");
const u8 gContestStatsText_Dry[] = _("DRY");
const u8 gContestStatsText_Sweet[] = _("SWEET");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SOUR$TASTY$FEEL"); // tasty is unused, feel might not be
+const u8 gContestStatsText_Sour[] = _("SOUR");
+const u8 gContestStatsText_Tasty[] = _("TASTY");
+const u8 gContestStatsText_Feel[] = _("FEEL");
const u8 gContestStatsText_StowCase[] = _("Stow CASE.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("Throw away this\n{STR_VAR_1}?");
@@ -1096,7 +1099,8 @@ const u8 gOtherText_None[] = _("KEINES");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -1190,7 +1194,9 @@ const u8 gContestStatsText_Spicy[] = _("SCHARF");
const u8 gContestStatsText_Dry[] = _("TROCKEN");
const u8 gContestStatsText_Sweet[] = _("SÜSS");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SAUER$LECKER$WÜRZE");
+const u8 gContestStatsText_Sour[] = _("SAUER");
+const u8 gContestStatsText_Tasty[] = _("LECKER");
+const u8 gContestStatsText_Feel[] = _("WÜRZE");
const u8 gContestStatsText_StowCase[] = _("BOX verstauen.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("{STR_VAR_1}\nwegwerfen?");