summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-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
9 files changed, 15915 insertions, 11 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