summaryrefslogtreecommitdiff
path: root/asm/battle_5.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_5.s')
-rw-r--r--asm/battle_5.s4591
1 files changed, 4591 insertions, 0 deletions
diff --git a/asm/battle_5.s b/asm/battle_5.s
new file mode 100644
index 000000000..b72266193
--- /dev/null
+++ b/asm/battle_5.s
@@ -0,0 +1,4591 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start nullsub_91
+nullsub_91: @ 802BF70
+ bx lr
+ thumb_func_end nullsub_91
+
+ thumb_func_start SetBankFuncToPlayerBufferRunCommand
+SetBankFuncToPlayerBufferRunCommand: @ 802BF74
+ ldr r1, _0802BF8C @ =gBattleBankFunc
+ ldr r0, _0802BF90 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802BF94 @ =PlayerBufferRunCommand
+ str r1, [r0]
+ ldr r1, _0802BF98 @ =gDoingBattleAnim
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0802BF8C: .4byte gBattleBankFunc
+_0802BF90: .4byte gActiveBank
+_0802BF94: .4byte PlayerBufferRunCommand
+_0802BF98: .4byte gDoingBattleAnim
+ thumb_func_end SetBankFuncToPlayerBufferRunCommand
+
+ thumb_func_start PlayerBufferExecCompleted
+PlayerBufferExecCompleted: @ 802BF9C
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r1, _0802BFDC @ =gBattleBankFunc
+ ldr r4, _0802BFE0 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802BFE4 @ =PlayerBufferRunCommand
+ str r1, [r0]
+ ldr r0, _0802BFE8 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802BFF0
+ bl GetMultiplayerId
+ mov r1, sp
+ strb r0, [r1]
+ movs r0, 0x2
+ movs r1, 0x4
+ mov r2, sp
+ bl dp01_prepare_buffer_wireless_probably
+ ldr r1, _0802BFEC @ =gBattleBufferA
+ ldrb r0, [r4]
+ lsls r0, 9
+ adds r0, r1
+ movs r1, 0x38
+ strb r1, [r0]
+ b _0802C002
+ .align 2, 0
+_0802BFDC: .4byte gBattleBankFunc
+_0802BFE0: .4byte gActiveBank
+_0802BFE4: .4byte PlayerBufferRunCommand
+_0802BFE8: .4byte gBattleTypeFlags
+_0802BFEC: .4byte gBattleBufferA
+_0802BFF0:
+ ldr r2, _0802C00C @ =gBattleExecBuffer
+ ldr r1, _0802C010 @ =gBitTable
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, [r2]
+ bics r0, r1
+ str r0, [r2]
+_0802C002:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802C00C: .4byte gBattleExecBuffer
+_0802C010: .4byte gBitTable
+ thumb_func_end PlayerBufferExecCompleted
+
+ thumb_func_start PlayerBufferRunCommand
+PlayerBufferRunCommand: @ 802C014
+ push {lr}
+ ldr r2, _0802C048 @ =gBattleExecBuffer
+ ldr r1, _0802C04C @ =gBitTable
+ ldr r0, _0802C050 @ =gActiveBank
+ ldrb r3, [r0]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r2]
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0802C060
+ ldr r0, _0802C054 @ =gBattleBufferA
+ lsls r1, r3, 9
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x38
+ bhi _0802C05C
+ ldr r0, _0802C058 @ =gPlayerBufferCommands
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+ b _0802C060
+ .align 2, 0
+_0802C048: .4byte gBattleExecBuffer
+_0802C04C: .4byte gBitTable
+_0802C050: .4byte gActiveBank
+_0802C054: .4byte gBattleBufferA
+_0802C058: .4byte gPlayerBufferCommands
+_0802C05C:
+ bl PlayerBufferExecCompleted
+_0802C060:
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerBufferRunCommand
+
+ thumb_func_start bx_0802E404
+bx_0802E404: @ 802C064
+ push {lr}
+ ldr r2, _0802C08C @ =gSprites
+ ldr r1, _0802C090 @ =gObjectBankIDs
+ ldr r0, _0802C094 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0802C086
+ bl PlayerBufferExecCompleted
+_0802C086:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802C08C: .4byte gSprites
+_0802C090: .4byte gObjectBankIDs
+_0802C094: .4byte gActiveBank
+ thumb_func_end bx_0802E404
+
+ thumb_func_start sub_802C098
+sub_802C098: @ 802C098
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r7, _0802C0FC @ =gBattleBufferA
+ ldr r4, _0802C100 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r2, r0, 9
+ adds r1, r7, 0x2
+ adds r1, r2, r1
+ ldrb r5, [r1]
+ adds r1, r7, 0x3
+ adds r2, r1
+ ldrb r1, [r2]
+ lsls r1, 8
+ orrs r5, r1
+ movs r1, 0x1
+ movs r2, 0x7
+ movs r3, 0x1
+ bl dp11b_obj_instanciate
+ ldrb r0, [r4]
+ movs r1, 0
+ movs r2, 0x7
+ movs r3, 0x1
+ bl dp11b_obj_instanciate
+ ldr r0, _0802C104 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C13E
+ movs r0, 0x5
+ bl PlaySE
+ bl DestroyMenuCursor
+ ldr r1, _0802C108 @ =gActionSelectionCursor
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0802C11C
+ cmp r0, 0x1
+ bgt _0802C10C
+ cmp r0, 0
+ beq _0802C116
+ b _0802C138
+ .align 2, 0
+_0802C0FC: .4byte gBattleBufferA
+_0802C100: .4byte gActiveBank
+_0802C104: .4byte gMain
+_0802C108: .4byte gActionSelectionCursor
+_0802C10C:
+ cmp r0, 0x2
+ beq _0802C122
+ cmp r0, 0x3
+ beq _0802C12E
+ b _0802C138
+_0802C116:
+ movs r0, 0x1
+ movs r1, 0
+ b _0802C126
+_0802C11C:
+ movs r0, 0x1
+ movs r1, 0x1
+ b _0802C126
+_0802C122:
+ movs r0, 0x1
+ movs r1, 0x2
+_0802C126:
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ b _0802C138
+_0802C12E:
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+_0802C138:
+ bl PlayerBufferExecCompleted
+ b _0802C2AC
+_0802C13E:
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C178
+ ldr r5, _0802C174 @ =gActionSelectionCursor
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C158
+ b _0802C2AC
+_0802C158:
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x1
+ b _0802C200
+ .align 2, 0
+_0802C174: .4byte gActionSelectionCursor
+_0802C178:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C1B0
+ ldr r5, _0802C1AC @ =gActionSelectionCursor
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C192
+ b _0802C2AC
+_0802C192:
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x1
+ b _0802C200
+ .align 2, 0
+_0802C1AC: .4byte gActionSelectionCursor
+_0802C1B0:
+ movs r0, 0x40
+ mov r8, r0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C1D0
+ ldr r5, _0802C1CC @ =gActionSelectionCursor
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C2AC
+ b _0802C1E8
+ .align 2, 0
+_0802C1CC: .4byte gActionSelectionCursor
+_0802C1D0:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C218
+ ldr r5, _0802C214 @ =gActionSelectionCursor
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C2AC
+_0802C1E8:
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x2
+_0802C200:
+ eors r0, r2
+ strb r0, [r1]
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3E4
+ b _0802C2AC
+ .align 2, 0
+_0802C214: .4byte gActionSelectionCursor
+_0802C218:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C2A0
+ ldr r6, _0802C294 @ =gBattleTypeFlags
+ ldrh r1, [r6]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C2AC
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0802C2AC
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r1, _0802C298 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _0802C29C @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0802C2AC
+ ldrh r1, [r6]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C2AC
+ ldrb r0, [r4]
+ lsls r0, 9
+ adds r1, r7, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0802C278
+ cmp r5, 0xC
+ bhi _0802C2AC
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl AddBagItem
+_0802C278:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x1
+ movs r1, 0xC
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ bl PlayerBufferExecCompleted
+ bl DestroyMenuCursor
+ b _0802C2AC
+ .align 2, 0
+_0802C294: .4byte gBattleTypeFlags
+_0802C298: .4byte gAbsentBankFlags
+_0802C29C: .4byte gBitTable
+_0802C2A0:
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C2AC
+ bl sub_804454C
+_0802C2AC:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802C098
+
+ thumb_func_start unref_sub_802C2B8
+unref_sub_802C2B8: @ 802C2B8
+ push {r4,lr}
+ ldr r4, _0802C2E0 @ =gActiveBank
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl dp11b_obj_free
+ ldrb r0, [r4]
+ movs r1, 0
+ bl dp11b_obj_free
+ ldr r1, _0802C2E4 @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802C2E8 @ =sub_802C2EC
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802C2E0: .4byte gActiveBank
+_0802C2E4: .4byte gBattleBankFunc
+_0802C2E8: .4byte sub_802C2EC
+ thumb_func_end unref_sub_802C2B8
+
+ thumb_func_start sub_802C2EC
+sub_802C2EC: @ 802C2EC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r1, _0802C384 @ =gUnknown_081FAE7C
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ ldr r0, _0802C388 @ =gUnknown_03004344
+ ldrb r0, [r0]
+ movs r1, 0x1
+ movs r2, 0xF
+ movs r3, 0x1
+ bl dp11b_obj_instanciate
+ movs r4, 0
+ ldr r0, _0802C38C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802C32E
+_0802C312:
+ ldr r0, _0802C388 @ =gUnknown_03004344
+ ldrb r0, [r0]
+ cmp r4, r0
+ beq _0802C324
+ lsls r0, r4, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl dp11b_obj_free
+_0802C324:
+ adds r4, 0x1
+ ldr r0, _0802C38C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0802C312
+_0802C32E:
+ ldr r0, _0802C390 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C3A8
+ bl DestroyMenuCursor
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0802C394 @ =gSprites
+ ldr r1, _0802C398 @ =gObjectBankIDs
+ ldr r4, _0802C388 @ =gUnknown_03004344
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C39C @ =sub_8010574
+ str r1, [r0]
+ ldr r1, _0802C3A0 @ =gMoveSelectionCursor
+ ldr r0, _0802C3A4 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldrb r0, [r4]
+ lsls r0, 8
+ orrs r2, r0
+ movs r0, 0x1
+ movs r1, 0xA
+ bl dp01_build_cmdbuf_x21_a_bb
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl dp11b_obj_free
+ bl PlayerBufferExecCompleted
+ b _0802C658
+ .align 2, 0
+_0802C384: .4byte gUnknown_081FAE7C
+_0802C388: .4byte gUnknown_03004344
+_0802C38C: .4byte gNoOfAllBanks
+_0802C390: .4byte gMain
+_0802C394: .4byte gSprites
+_0802C398: .4byte gObjectBankIDs
+_0802C39C: .4byte sub_8010574
+_0802C3A0: .4byte gMoveSelectionCursor
+_0802C3A4: .4byte gActiveBank
+_0802C3A8:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C41C
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0802C400 @ =gSprites
+ ldr r1, _0802C404 @ =gObjectBankIDs
+ ldr r5, _0802C408 @ =gUnknown_03004344
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C40C @ =sub_8010574
+ str r1, [r0]
+ ldr r1, _0802C410 @ =gBattleBankFunc
+ ldr r4, _0802C414 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802C418 @ =sub_802C68C
+ str r1, [r0]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ movs r2, 0x7
+ movs r3, 0x1
+ bl dp11b_obj_instanciate
+ ldrb r0, [r4]
+ movs r1, 0
+ movs r2, 0x7
+ movs r3, 0x1
+ bl dp11b_obj_instanciate
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl dp11b_obj_free
+ b _0802C658
+ .align 2, 0
+_0802C400: .4byte gSprites
+_0802C404: .4byte gObjectBankIDs
+_0802C408: .4byte gUnknown_03004344
+_0802C40C: .4byte sub_8010574
+_0802C410: .4byte gBattleBankFunc
+_0802C414: .4byte gActiveBank
+_0802C418: .4byte sub_802C68C
+_0802C41C:
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C426
+ b _0802C540
+_0802C426:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0802C458 @ =gSprites
+ ldr r1, _0802C45C @ =gObjectBankIDs
+ ldr r3, _0802C460 @ =gUnknown_03004344
+ ldrb r0, [r3]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C464 @ =sub_8010574
+ str r1, [r0]
+ adds r5, r3, 0
+_0802C448:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r4, 0
+ mov r0, sp
+ b _0802C472
+ .align 2, 0
+_0802C458: .4byte gSprites
+_0802C45C: .4byte gObjectBankIDs
+_0802C460: .4byte gUnknown_03004344
+_0802C464: .4byte sub_8010574
+_0802C468:
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _0802C478
+ mov r2, sp
+ adds r0, r2, r4
+_0802C472:
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802C468
+_0802C478:
+ subs r4, 0x1
+ cmp r4, 0
+ bge _0802C480
+ movs r4, 0x3
+_0802C480:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldr r1, _0802C4B4 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ beq _0802C478
+ movs r4, 0
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0802C4FE
+ cmp r0, 0x1
+ bgt _0802C4B8
+ cmp r0, 0
+ beq _0802C4C2
+ b _0802C500
+ .align 2, 0
+_0802C4B4: .4byte gNoOfAllBanks
+_0802C4B8:
+ cmp r0, 0x2
+ beq _0802C4C2
+ cmp r0, 0x3
+ beq _0802C4FE
+ b _0802C500
+_0802C4C2:
+ ldr r2, _0802C520 @ =gActiveBank
+ ldrb r0, [r2]
+ ldrb r1, [r5]
+ cmp r0, r1
+ bne _0802C4FE
+ ldr r1, _0802C524 @ =gBattlePartyID
+ ldrb r2, [r2]
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802C528 @ =gPlayerParty
+ adds r0, r1
+ ldr r1, _0802C52C @ =gMoveSelectionCursor
+ adds r2, r1
+ ldrb r1, [r2]
+ adds r1, 0xD
+ bl GetMonData
+ ldr r2, _0802C530 @ =gBattleMoves
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r1, [r1, 0x6]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C500
+_0802C4FE:
+ adds r4, 0x1
+_0802C500:
+ ldr r0, _0802C534 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _0802C538 @ =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ ldr r0, _0802C53C @ =gUnknown_03004344
+ cmp r1, 0
+ beq _0802C518
+ movs r4, 0
+_0802C518:
+ cmp r4, 0
+ beq _0802C448
+ b _0802C640
+ .align 2, 0
+_0802C520: .4byte gActiveBank
+_0802C524: .4byte gBattlePartyID
+_0802C528: .4byte gPlayerParty
+_0802C52C: .4byte gMoveSelectionCursor
+_0802C530: .4byte gBattleMoves
+_0802C534: .4byte gAbsentBankFlags
+_0802C538: .4byte gBitTable
+_0802C53C: .4byte gUnknown_03004344
+_0802C540:
+ movs r0, 0x90
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C54A
+ b _0802C658
+_0802C54A:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0802C57C @ =gSprites
+ ldr r1, _0802C580 @ =gObjectBankIDs
+ ldr r3, _0802C584 @ =gUnknown_03004344
+ ldrb r0, [r3]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C588 @ =sub_8010574
+ str r1, [r0]
+ adds r5, r3, 0
+_0802C56C:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r4, 0
+ mov r0, sp
+ b _0802C596
+ .align 2, 0
+_0802C57C: .4byte gSprites
+_0802C580: .4byte gObjectBankIDs
+_0802C584: .4byte gUnknown_03004344
+_0802C588: .4byte sub_8010574
+_0802C58C:
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _0802C59C
+ mov r2, sp
+ adds r0, r2, r4
+_0802C596:
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802C58C
+_0802C59C:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0802C5A4
+ movs r4, 0
+_0802C5A4:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldr r1, _0802C5D8 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ beq _0802C59C
+ movs r4, 0
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0802C622
+ cmp r0, 0x1
+ bgt _0802C5DC
+ cmp r0, 0
+ beq _0802C5E6
+ b _0802C624
+ .align 2, 0
+_0802C5D8: .4byte gNoOfAllBanks
+_0802C5DC:
+ cmp r0, 0x2
+ beq _0802C5E6
+ cmp r0, 0x3
+ beq _0802C622
+ b _0802C624
+_0802C5E6:
+ ldr r2, _0802C660 @ =gActiveBank
+ ldrb r0, [r2]
+ ldrb r1, [r5]
+ cmp r0, r1
+ bne _0802C622
+ ldr r1, _0802C664 @ =gBattlePartyID
+ ldrb r2, [r2]
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802C668 @ =gPlayerParty
+ adds r0, r1
+ ldr r1, _0802C66C @ =gMoveSelectionCursor
+ adds r2, r1
+ ldrb r1, [r2]
+ adds r1, 0xD
+ bl GetMonData
+ ldr r2, _0802C670 @ =gBattleMoves
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r1, [r1, 0x6]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C624
+_0802C622:
+ adds r4, 0x1
+_0802C624:
+ ldr r0, _0802C674 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _0802C678 @ =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ ldr r0, _0802C67C @ =gUnknown_03004344
+ cmp r1, 0
+ beq _0802C63C
+ movs r4, 0
+_0802C63C:
+ cmp r4, 0
+ beq _0802C56C
+_0802C640:
+ ldr r2, _0802C680 @ =gSprites
+ ldr r1, _0802C684 @ =gObjectBankIDs
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C688 @ =sub_8010520
+ str r1, [r0]
+_0802C658:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802C660: .4byte gActiveBank
+_0802C664: .4byte gBattlePartyID
+_0802C668: .4byte gPlayerParty
+_0802C66C: .4byte gMoveSelectionCursor
+_0802C670: .4byte gBattleMoves
+_0802C674: .4byte gAbsentBankFlags
+_0802C678: .4byte gBitTable
+_0802C67C: .4byte gUnknown_03004344
+_0802C680: .4byte gSprites
+_0802C684: .4byte gObjectBankIDs
+_0802C688: .4byte sub_8010520
+ thumb_func_end sub_802C2EC
+
+ thumb_func_start sub_802C68C
+sub_802C68C: @ 802C68C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ movs r0, 0
+ mov r8, r0
+ ldr r7, _0802C6E4 @ =gActiveBank
+ ldrb r2, [r7]
+ lsls r0, r2, 9
+ ldr r1, _0802C6E8 @ =gUnknown_02023A64
+ adds r6, r0, r1
+ ldr r0, _0802C6EC @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r5, 0x1
+ adds r4, r5, 0
+ ands r4, r1
+ cmp r4, 0
+ bne _0802C6B2
+ b _0802C864
+_0802C6B2:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _0802C6F0 @ =gMoveSelectionCursor
+ ldrb r0, [r7]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r1, r6, r0
+ ldrh r0, [r1]
+ cmp r0, 0xAE
+ bne _0802C6F4
+ ldrb r0, [r6, 0x12]
+ movs r4, 0
+ cmp r0, 0x7
+ beq _0802C702
+ ldrb r1, [r6, 0x13]
+ movs r0, 0x7
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ asrs r4, r0, 31
+ movs r0, 0x10
+ ands r4, r0
+ b _0802C702
+ .align 2, 0
+_0802C6E4: .4byte gActiveBank
+_0802C6E8: .4byte gUnknown_02023A64
+_0802C6EC: .4byte gMain
+_0802C6F0: .4byte gMoveSelectionCursor
+_0802C6F4:
+ ldr r2, _0802C714 @ =gBattleMoves
+ ldrh r1, [r1]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r4, [r0, 0x6]
+_0802C702:
+ movs r0, 0x10
+ ands r0, r4
+ cmp r0, 0
+ beq _0802C720
+ ldr r0, _0802C718 @ =gUnknown_03004344
+ ldr r1, _0802C71C @ =gActiveBank
+ ldrb r1, [r1]
+ strb r1, [r0]
+ b _0802C73A
+ .align 2, 0
+_0802C714: .4byte gBattleMoves
+_0802C718: .4byte gUnknown_03004344
+_0802C71C: .4byte gActiveBank
+_0802C720:
+ ldr r0, _0802C764 @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ adds r1, r0, 0
+ movs r2, 0x1
+ movs r0, 0x1
+ ands r0, r1
+ eors r0, r2
+ bl GetBankByPlayerAI
+ ldr r1, _0802C768 @ =gUnknown_03004344
+ strb r0, [r1]
+_0802C73A:
+ ldr r3, _0802C76C @ =gBattleBufferA
+ ldr r5, _0802C764 @ =gActiveBank
+ ldrb r2, [r5]
+ lsls r1, r2, 9
+ adds r0, r3, 0x1
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0802C770
+ movs r0, 0x2
+ ands r0, r4
+ cmp r0, 0
+ beq _0802C7B2
+ adds r0, r3, 0x2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0802C7B2
+ movs r2, 0x1
+ add r8, r2
+ b _0802C7B2
+ .align 2, 0
+_0802C764: .4byte gActiveBank
+_0802C768: .4byte gUnknown_03004344
+_0802C76C: .4byte gBattleBufferA
+_0802C770:
+ movs r0, 0x7D
+ ands r0, r4
+ cmp r0, 0
+ bne _0802C77C
+ movs r0, 0x1
+ add r8, r0
+_0802C77C:
+ ldr r0, _0802C7D0 @ =gMoveSelectionCursor
+ adds r0, r2, r0
+ adds r1, r6, 0
+ adds r1, 0x8
+ ldrb r0, [r0]
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0802C7B8
+ movs r0, 0x12
+ ands r0, r4
+ cmp r0, 0
+ bne _0802C7B2
+ movs r0, 0
+ bl CountAliveMons
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0802C7B2
+ ldrb r0, [r5]
+ bl sub_803C434
+ ldr r1, _0802C7D4 @ =gUnknown_03004344
+ strb r0, [r1]
+ movs r2, 0
+ mov r8, r2
+_0802C7B2:
+ mov r0, r8
+ cmp r0, 0
+ bne _0802C7DC
+_0802C7B8:
+ bl DestroyMenuCursor
+ ldr r1, _0802C7D0 @ =gMoveSelectionCursor
+ ldr r0, _0802C7D8 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r0, _0802C7D4 @ =gUnknown_03004344
+ ldrb r0, [r0]
+ lsls r0, 8
+ orrs r2, r0
+ b _0802C888
+ .align 2, 0
+_0802C7D0: .4byte gMoveSelectionCursor
+_0802C7D4: .4byte gUnknown_03004344
+_0802C7D8: .4byte gActiveBank
+_0802C7DC:
+ ldr r1, _0802C7F8 @ =gBattleBankFunc
+ ldr r2, _0802C7FC @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802C800 @ =sub_802C2EC
+ str r1, [r0]
+ movs r0, 0x12
+ ands r4, r0
+ cmp r4, 0
+ beq _0802C808
+ ldr r1, _0802C804 @ =gUnknown_03004344
+ ldrb r0, [r2]
+ b _0802C838
+ .align 2, 0
+_0802C7F8: .4byte gBattleBankFunc
+_0802C7FC: .4byte gActiveBank
+_0802C800: .4byte sub_802C2EC
+_0802C804: .4byte gUnknown_03004344
+_0802C808:
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ ldr r1, _0802C828 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _0802C82C @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0802C830
+ movs r0, 0x3
+ b _0802C832
+ .align 2, 0
+_0802C828: .4byte gAbsentBankFlags
+_0802C82C: .4byte gBitTable
+_0802C830:
+ movs r0, 0x1
+_0802C832:
+ bl GetBankByPlayerAI
+ ldr r1, _0802C854 @ =gUnknown_03004344
+_0802C838:
+ strb r0, [r1]
+ ldr r2, _0802C858 @ =gSprites
+ ldr r1, _0802C85C @ =gObjectBankIDs
+ ldr r0, _0802C854 @ =gUnknown_03004344
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _0802C860 @ =sub_8010520
+ b _0802CA36
+ .align 2, 0
+_0802C854: .4byte gUnknown_03004344
+_0802C858: .4byte gSprites
+_0802C85C: .4byte gObjectBankIDs
+_0802C860: .4byte sub_8010520
+_0802C864:
+ movs r6, 0x2
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C8A4
+ bl DestroyMenuCursor
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, _0802C898 @ =gUnknown_030042A4
+ strh r4, [r0]
+ ldr r1, _0802C89C @ =gUnknown_030042A0
+ movs r2, 0xA0
+ lsls r2, 1
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r2, _0802C8A0 @ =0x0000ffff
+_0802C888:
+ movs r0, 0x1
+ movs r1, 0xA
+ bl dp01_build_cmdbuf_x21_a_bb
+ bl PlayerBufferExecCompleted
+ b _0802CA38
+ .align 2, 0
+_0802C898: .4byte gUnknown_030042A4
+_0802C89C: .4byte gUnknown_030042A0
+_0802C8A0: .4byte 0x0000ffff
+_0802C8A4:
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C8D4
+ ldr r4, _0802C8D0 @ =gMoveSelectionCursor
+ adds r2, r4
+ ldrb r1, [r2]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C8BC
+ b _0802CA38
+_0802C8BC:
+ ldrb r0, [r2]
+ bl nullsub_7
+ ldrb r1, [r7]
+ adds r1, r4
+ ldrb r0, [r1]
+ movs r2, 0x1
+ eors r0, r2
+ b _0802C976
+ .align 2, 0
+_0802C8D0: .4byte gMoveSelectionCursor
+_0802C8D4:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C914
+ ldr r4, _0802C90C @ =gMoveSelectionCursor
+ adds r3, r2, r4
+ ldrb r2, [r3]
+ movs r6, 0x1
+ adds r0, r5, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _0802C8EE
+ b _0802CA38
+_0802C8EE:
+ ldr r1, _0802C910 @ =gUnknown_03004348
+ adds r0, r6, 0
+ eors r0, r2
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0802C8FC
+ b _0802CA38
+_0802C8FC:
+ ldrb r0, [r3]
+ bl nullsub_7
+ ldrb r1, [r7]
+ adds r1, r4
+ ldrb r0, [r1]
+ eors r0, r6
+ b _0802C976
+ .align 2, 0
+_0802C90C: .4byte gMoveSelectionCursor
+_0802C910: .4byte gUnknown_03004348
+_0802C914:
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C944
+ ldr r4, _0802C940 @ =gMoveSelectionCursor
+ adds r2, r4
+ ldrb r1, [r2]
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802C92C
+ b _0802CA38
+_0802C92C:
+ ldrb r0, [r2]
+ bl nullsub_7
+ ldrb r1, [r7]
+ adds r1, r4
+ ldrb r0, [r1]
+ movs r2, 0x2
+ eors r0, r2
+ b _0802C976
+ .align 2, 0
+_0802C940: .4byte gMoveSelectionCursor
+_0802C944:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0802C99C
+ ldr r4, _0802C994 @ =gMoveSelectionCursor
+ adds r3, r2, r4
+ ldrb r2, [r3]
+ movs r5, 0x2
+ adds r0, r6, 0
+ ands r0, r2
+ cmp r0, 0
+ bne _0802CA38
+ ldr r1, _0802C998 @ =gUnknown_03004348
+ adds r0, r5, 0
+ eors r0, r2
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0802CA38
+ ldrb r0, [r3]
+ bl nullsub_7
+ ldrb r1, [r7]
+ adds r1, r4
+ ldrb r0, [r1]
+ eors r0, r5
+_0802C976:
+ strb r0, [r1]
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3B4
+ bl sub_802E220
+ bl sub_802E2D4
+ b _0802CA38
+ .align 2, 0
+_0802C994: .4byte gMoveSelectionCursor
+_0802C998: .4byte gUnknown_03004348
+_0802C99C:
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0802CA38
+ ldr r0, _0802C9D8 @ =gUnknown_03004348
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bls _0802CA38
+ ldr r0, _0802C9DC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ adds r0, r6, 0
+ ands r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _0802CA38
+ ldr r4, _0802C9E0 @ =gMoveSelectionCursor
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ ldr r1, _0802C9E4 @ =gUnknown_081FAE80
+ bl sub_802E12C
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802C9EC
+ ldr r0, _0802C9E8 @ =gUnknown_03004344
+ strb r5, [r0]
+ b _0802C9F4
+ .align 2, 0
+_0802C9D8: .4byte gUnknown_03004348
+_0802C9DC: .4byte gBattleTypeFlags
+_0802C9E0: .4byte gMoveSelectionCursor
+_0802C9E4: .4byte gUnknown_081FAE80
+_0802C9E8: .4byte gUnknown_03004344
+_0802C9EC:
+ ldr r1, _0802CA44 @ =gUnknown_03004344
+ adds r0, 0x1
+ strb r0, [r1]
+ adds r0, r1, 0
+_0802C9F4:
+ ldrb r0, [r0]
+ movs r1, 0x1B
+ bl sub_802E3B4
+ ldr r4, _0802CA48 @ =gUnknown_03004210
+ ldr r1, _0802CA4C @ =0x00001016
+ movs r0, 0x1C
+ str r0, [sp]
+ movs r0, 0x3A
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x17
+ movs r3, 0x37
+ bl FillWindowRect
+ ldr r1, _0802CA50 @ =gUnknown_08400D89
+ movs r2, 0xA4
+ lsls r2, 2
+ movs r0, 0x37
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x17
+ bl InitWindow
+ adds r0, r4, 0
+ bl sub_8002F44
+ ldr r1, _0802CA54 @ =gBattleBankFunc
+ ldr r0, _0802CA58 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802CA5C @ =sub_802CA60
+_0802CA36:
+ str r1, [r0]
+_0802CA38:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802CA44: .4byte gUnknown_03004344
+_0802CA48: .4byte gUnknown_03004210
+_0802CA4C: .4byte 0x00001016
+_0802CA50: .4byte gUnknown_08400D89
+_0802CA54: .4byte gBattleBankFunc
+_0802CA58: .4byte gActiveBank
+_0802CA5C: .4byte sub_802CA60
+ thumb_func_end sub_802C68C
+
+ thumb_func_start sub_802CA60
+sub_802CA60: @ 802CA60
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ ldr r0, _0802CDEC @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x5
+ ands r0, r1
+ cmp r0, 0
+ bne _0802CA7A
+ b _0802CE78
+_0802CA7A:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, _0802CDF0 @ =gMoveSelectionCursor
+ mov r10, r0
+ ldr r1, _0802CDF4 @ =gActiveBank
+ mov r8, r1
+ ldrb r1, [r1]
+ adds r2, r1, r0
+ ldr r5, _0802CDF8 @ =gUnknown_03004344
+ ldrb r0, [r2]
+ ldrb r3, [r5]
+ cmp r0, r3
+ bne _0802CA98
+ b _0802CE14
+_0802CA98:
+ lsls r1, 9
+ ldr r0, _0802CDFC @ =gUnknown_02023A64
+ adds r1, r0
+ mov r9, r1
+ ldrb r1, [r2]
+ lsls r1, 1
+ add r1, r9
+ ldrh r6, [r1]
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r9
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r9
+ strh r6, [r0]
+ mov r1, r8
+ ldrb r0, [r1]
+ add r0, r10
+ ldrb r1, [r0]
+ mov r7, r9
+ adds r7, 0x8
+ adds r1, r7, r1
+ ldrb r6, [r1]
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ strb r6, [r0]
+ mov r2, r8
+ ldrb r0, [r2]
+ add r0, r10
+ ldrb r1, [r0]
+ mov r2, r9
+ adds r2, 0xC
+ adds r1, r2, r1
+ ldrb r6, [r1]
+ ldrb r0, [r5]
+ adds r0, r2, r0
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r5]
+ adds r2, r0
+ strb r6, [r2]
+ mov r3, r8
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ ldr r2, _0802CE00 @ =gDisableStructs
+ adds r6, r0, r2
+ ldrb r4, [r6, 0x18]
+ lsls r3, r4, 24
+ lsrs r2, r3, 28
+ ldr r0, _0802CE04 @ =gBitTable
+ mov r12, r0
+ add r1, r10
+ ldrb r0, [r1]
+ lsls r0, 2
+ add r0, r12
+ ldr r0, [r0]
+ ands r2, r0
+ cmp r2, 0
+ beq _0802CB52
+ lsrs r1, r3, 28
+ bics r1, r0
+ lsls r1, 4
+ movs r2, 0xF
+ adds r0, r2, 0
+ ands r0, r4
+ orrs r0, r1
+ strb r0, [r6, 0x18]
+ mov r1, r8
+ ldrb r0, [r1]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ ldr r3, _0802CE00 @ =gDisableStructs
+ adds r1, r3
+ ldrb r4, [r1, 0x18]
+ lsrs r3, r4, 4
+ ldrb r0, [r5]
+ lsls r0, 2
+ add r0, r12
+ ldr r0, [r0]
+ orrs r0, r3
+ lsls r0, 4
+ ands r2, r4
+ orrs r2, r0
+ strb r2, [r1, 0x18]
+_0802CB52:
+ bl sub_802E1B0
+ movs r6, 0
+ mov r12, r7
+ mov r5, sp
+ adds r5, 0x20
+ str r5, [sp, 0x28]
+ ldr r2, _0802CE08 @ =gBattleMons
+ mov r0, r8
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ adds r4, r0, 0
+ adds r4, 0x3B
+ mov r7, r8
+ mov r10, r2
+ movs r5, 0x3
+_0802CB76:
+ mov r3, sp
+ adds r3, r6
+ adds r3, 0x8
+ ldrb r1, [r4]
+ lsls r2, r6, 1
+ adds r0, r5, 0
+ lsls r0, r2
+ ands r1, r0
+ asrs r1, r2
+ strb r1, [r3]
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CB76
+ ldr r1, _0802CDF0 @ =gMoveSelectionCursor
+ ldrb r0, [r7]
+ adds r0, r1
+ ldrb r0, [r0]
+ add r0, sp
+ adds r0, 0x8
+ ldrb r0, [r0]
+ ldr r2, [sp, 0x28]
+ strb r0, [r2]
+ ldrb r0, [r7]
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r2, sp
+ adds r2, r0
+ adds r2, 0x8
+ ldr r1, _0802CDF8 @ =gUnknown_03004344
+ ldrb r0, [r1]
+ add r0, sp
+ adds r0, 0x8
+ ldrb r0, [r0]
+ movs r3, 0
+ strb r0, [r2]
+ ldrb r0, [r1]
+ mov r1, sp
+ adds r1, r0
+ adds r1, 0x8
+ ldr r5, [sp, 0x28]
+ ldrb r0, [r5]
+ strb r0, [r1]
+ strb r3, [r5]
+ movs r6, 0
+ ldr r2, [sp, 0x28]
+_0802CBD0:
+ mov r0, sp
+ adds r0, r6
+ adds r0, 0x8
+ ldrb r1, [r0]
+ lsls r0, r6, 1
+ lsls r1, r0
+ ldrb r0, [r2]
+ orrs r0, r1
+ strb r0, [r2]
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CBD0
+ ldrb r1, [r7]
+ movs r0, 0x58
+ muls r0, r1
+ add r0, r10
+ adds r0, 0x3B
+ ldr r2, [sp, 0x28]
+ ldrb r1, [r2]
+ strb r1, [r0]
+ movs r6, 0
+ adds r4, r7, 0
+ movs r3, 0x58
+ movs r5, 0x24
+ add r5, r10
+ mov r8, r5
+ mov r2, r9
+ mov r7, r10
+ adds r7, 0xC
+ mov r5, r12
+_0802CC0C:
+ lsls r1, r6, 1
+ ldrb r0, [r4]
+ muls r0, r3
+ adds r1, r0
+ adds r1, r7
+ ldrh r0, [r2]
+ strh r0, [r1]
+ ldrb r0, [r4]
+ adds r1, r0, 0
+ muls r1, r3
+ adds r1, r6, r1
+ add r1, r8
+ adds r0, r5, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r2, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CC0C
+ ldr r2, _0802CDF4 @ =gActiveBank
+ ldrb r1, [r2]
+ movs r0, 0x58
+ muls r0, r1
+ mov r1, r10
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ beq _0802CC4E
+ b _0802CE1C
+_0802CC4E:
+ movs r6, 0
+ mov r0, sp
+ adds r0, 0xC
+ str r0, [sp, 0x24]
+ add r1, sp, 0x14
+ mov r10, r1
+ ldr r3, _0802CE0C @ =gBattlePartyID
+ mov r9, r3
+ mov r8, r2
+ movs r7, 0x64
+ ldr r5, _0802CE10 @ =gPlayerParty
+ adds r4, r0, 0
+_0802CC66:
+ mov r1, r8
+ ldrb r0, [r1]
+ lsls r0, 1
+ add r0, r9
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r5
+ adds r1, r6, 0
+ adds r1, 0xD
+ bl GetMonData
+ strh r0, [r4]
+ mov r2, r8
+ ldrb r0, [r2]
+ lsls r0, 1
+ add r0, r9
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r5
+ adds r1, r6, 0
+ adds r1, 0x11
+ bl GetMonData
+ mov r3, r10
+ adds r1, r3, r6
+ strb r0, [r1]
+ adds r4, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CC66
+ ldr r1, _0802CE0C @ =gBattlePartyID
+ ldr r0, _0802CDF4 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802CE10 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0x15
+ bl GetMonData
+ ldr r5, [sp, 0x28]
+ strb r0, [r5]
+ movs r6, 0
+ movs r5, 0x3
+ ldr r4, [sp, 0x28]
+_0802CCC6:
+ mov r3, sp
+ adds r3, r6
+ adds r3, 0x8
+ lsls r2, r6, 1
+ adds r1, r5, 0
+ lsls r1, r2
+ ldrb r0, [r4]
+ ands r0, r1
+ asrs r0, r2
+ strb r0, [r3]
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CCC6
+ ldr r4, _0802CDF0 @ =gMoveSelectionCursor
+ ldr r3, _0802CDF4 @ =gActiveBank
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r1, 1
+ ldr r0, [sp, 0x24]
+ adds r1, r0, r1
+ ldrh r6, [r1]
+ ldr r2, _0802CDF8 @ =gUnknown_03004344
+ ldrb r0, [r2]
+ lsls r0, 1
+ ldr r5, [sp, 0x24]
+ adds r0, r5, r0
+ ldrh r0, [r0]
+ movs r5, 0
+ strh r0, [r1]
+ ldrb r0, [r2]
+ lsls r0, 1
+ ldr r1, [sp, 0x24]
+ adds r0, r1, r0
+ strh r6, [r0]
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r1, [r0]
+ add r1, r10
+ ldrb r6, [r1]
+ ldrb r0, [r2]
+ add r0, r10
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r2]
+ add r0, r10
+ strb r6, [r0]
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r0, [r0]
+ add r0, sp
+ adds r0, 0x8
+ ldrb r0, [r0]
+ ldr r1, [sp, 0x28]
+ strb r0, [r1]
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r0, [r0]
+ mov r1, sp
+ adds r1, r0
+ adds r1, 0x8
+ ldrb r0, [r2]
+ add r0, sp
+ adds r0, 0x8
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r2]
+ mov r1, sp
+ adds r1, r0
+ adds r1, 0x8
+ ldr r2, [sp, 0x28]
+ ldrb r0, [r2]
+ strb r0, [r1]
+ strb r5, [r2]
+ movs r6, 0
+ ldr r2, [sp, 0x28]
+_0802CD5E:
+ mov r0, sp
+ adds r0, r6
+ adds r0, 0x8
+ ldrb r1, [r0]
+ lsls r0, r6, 1
+ lsls r1, r0
+ ldrb r0, [r2]
+ orrs r0, r1
+ strb r0, [r2]
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CD5E
+ movs r6, 0
+ ldr r3, _0802CE0C @ =gBattlePartyID
+ mov r10, r3
+ ldr r5, _0802CDF4 @ =gActiveBank
+ mov r9, r5
+ movs r0, 0x64
+ mov r8, r0
+ ldr r7, _0802CE10 @ =gPlayerParty
+ ldr r5, [sp, 0x24]
+ adds r5, 0x8
+ ldr r4, [sp, 0x24]
+_0802CD8C:
+ mov r1, r9
+ ldrb r0, [r1]
+ lsls r0, 1
+ add r0, r10
+ ldrh r0, [r0]
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ adds r0, r7
+ adds r1, r6, 0
+ adds r1, 0xD
+ adds r2, r4, 0
+ bl SetMonData
+ mov r3, r9
+ ldrb r0, [r3]
+ lsls r0, 1
+ add r0, r10
+ ldrh r0, [r0]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r0, r7
+ adds r1, r6, 0
+ adds r1, 0x11
+ adds r2, r5, 0
+ bl SetMonData
+ adds r5, 0x1
+ adds r4, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802CD8C
+ ldr r1, _0802CE0C @ =gBattlePartyID
+ ldr r0, _0802CDF4 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802CE10 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0x15
+ ldr r2, [sp, 0x28]
+ bl SetMonData
+ b _0802CE1C
+ .align 2, 0
+_0802CDEC: .4byte gMain
+_0802CDF0: .4byte gMoveSelectionCursor
+_0802CDF4: .4byte gActiveBank
+_0802CDF8: .4byte gUnknown_03004344
+_0802CDFC: .4byte gUnknown_02023A64
+_0802CE00: .4byte gDisableStructs
+_0802CE04: .4byte gBitTable
+_0802CE08: .4byte gBattleMons
+_0802CE0C: .4byte gBattlePartyID
+_0802CE10: .4byte gPlayerParty
+_0802CE14:
+ ldrb r0, [r5]
+ ldr r1, _0802CF20 @ =gUnknown_08400D49
+ bl sub_802E12C
+_0802CE1C:
+ ldr r1, _0802CF24 @ =gBattleBankFunc
+ ldr r2, _0802CF28 @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802CF2C @ =sub_802C68C
+ str r1, [r0]
+ ldr r3, _0802CF30 @ =gMoveSelectionCursor
+ ldrb r0, [r2]
+ adds r0, r3
+ ldr r1, _0802CF34 @ =gUnknown_03004344
+ ldrb r1, [r1]
+ strb r1, [r0]
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3B4
+ ldr r4, _0802CF38 @ =gUnknown_03004210
+ ldr r1, _0802CF3C @ =0x00001016
+ movs r0, 0x1C
+ str r0, [sp]
+ movs r0, 0x3A
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x17
+ movs r3, 0x37
+ bl FillWindowRect
+ ldr r1, _0802CF40 @ =gUnknown_08400D38
+ movs r2, 0xA4
+ lsls r2, 2
+ movs r0, 0x37
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x17
+ bl InitWindow
+ adds r0, r4, 0
+ bl sub_8002F44
+ bl sub_802E220
+ bl sub_802E2D4
+_0802CE78:
+ ldr r6, _0802CF44 @ =gMain
+ ldrh r1, [r6, 0x2E]
+ movs r0, 0x6
+ ands r0, r1
+ cmp r0, 0
+ beq _0802CEF0
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, _0802CF34 @ =gUnknown_03004344
+ ldrb r0, [r0]
+ bl nullsub_7
+ ldr r5, _0802CF30 @ =gMoveSelectionCursor
+ ldr r4, _0802CF28 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3B4
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ ldr r1, _0802CF20 @ =gUnknown_08400D49
+ bl sub_802E12C
+ ldr r1, _0802CF24 @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802CF2C @ =sub_802C68C
+ str r1, [r0]
+ ldr r4, _0802CF38 @ =gUnknown_03004210
+ ldr r1, _0802CF3C @ =0x00001016
+ movs r0, 0x1C
+ str r0, [sp]
+ movs r0, 0x3A
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x17
+ movs r3, 0x37
+ bl FillWindowRect
+ ldr r1, _0802CF40 @ =gUnknown_08400D38
+ movs r2, 0xA4
+ lsls r2, 2
+ movs r0, 0x37
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x17
+ bl InitWindow
+ adds r0, r4, 0
+ bl sub_8002F44
+ bl sub_802E220
+ bl sub_802E2D4
+_0802CEF0:
+ ldrh r1, [r6, 0x2E]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0802CF8C
+ ldr r3, _0802CF34 @ =gUnknown_03004344
+ ldrb r2, [r3]
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ beq _0802CF8C
+ ldr r0, _0802CF30 @ =gMoveSelectionCursor
+ ldr r1, _0802CF28 @ =gActiveBank
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r5, [r1]
+ cmp r2, r5
+ bne _0802CF48
+ ldrb r0, [r1]
+ movs r1, 0x1D
+ bl sub_802E3B4
+ b _0802CF4E
+ .align 2, 0
+_0802CF20: .4byte gUnknown_08400D49
+_0802CF24: .4byte gBattleBankFunc
+_0802CF28: .4byte gActiveBank
+_0802CF2C: .4byte sub_802C68C
+_0802CF30: .4byte gMoveSelectionCursor
+_0802CF34: .4byte gUnknown_03004344
+_0802CF38: .4byte gUnknown_03004210
+_0802CF3C: .4byte 0x00001016
+_0802CF40: .4byte gUnknown_08400D38
+_0802CF44: .4byte gMain
+_0802CF48:
+ ldrb r0, [r3]
+ bl nullsub_7
+_0802CF4E:
+ ldr r4, _0802CF78 @ =gUnknown_03004344
+ ldrb r0, [r4]
+ movs r1, 0x1
+ eors r0, r1
+ strb r0, [r4]
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _0802CF7C @ =gMoveSelectionCursor
+ ldr r0, _0802CF80 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802CF84
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_802E3B4
+ b _0802CF8C
+ .align 2, 0
+_0802CF78: .4byte gUnknown_03004344
+_0802CF7C: .4byte gMoveSelectionCursor
+_0802CF80: .4byte gActiveBank
+_0802CF84:
+ ldrb r0, [r4]
+ movs r1, 0x1B
+ bl sub_802E3B4
+_0802CF8C:
+ ldr r0, _0802CFC8 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D020
+ ldr r3, _0802CFCC @ =gUnknown_03004344
+ ldrb r2, [r3]
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ bne _0802D020
+ ldr r1, _0802CFD0 @ =gUnknown_03004348
+ movs r0, 0x1
+ eors r0, r2
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0802D020
+ ldr r0, _0802CFD4 @ =gMoveSelectionCursor
+ ldr r1, _0802CFD8 @ =gActiveBank
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r2, r0
+ bne _0802CFDC
+ ldrb r0, [r1]
+ movs r1, 0x1D
+ bl sub_802E3B4
+ b _0802CFE2
+ .align 2, 0
+_0802CFC8: .4byte gMain
+_0802CFCC: .4byte gUnknown_03004344
+_0802CFD0: .4byte gUnknown_03004348
+_0802CFD4: .4byte gMoveSelectionCursor
+_0802CFD8: .4byte gActiveBank
+_0802CFDC:
+ ldrb r0, [r3]
+ bl nullsub_7
+_0802CFE2:
+ ldr r4, _0802D00C @ =gUnknown_03004344
+ ldrb r0, [r4]
+ movs r1, 0x1
+ eors r0, r1
+ strb r0, [r4]
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _0802D010 @ =gMoveSelectionCursor
+ ldr r0, _0802D014 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802D018
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_802E3B4
+ b _0802D020
+ .align 2, 0
+_0802D00C: .4byte gUnknown_03004344
+_0802D010: .4byte gMoveSelectionCursor
+_0802D014: .4byte gActiveBank
+_0802D018:
+ ldrb r0, [r4]
+ movs r1, 0x1B
+ bl sub_802E3B4
+_0802D020:
+ ldr r0, _0802D050 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D0A4
+ ldr r3, _0802D054 @ =gUnknown_03004344
+ ldrb r2, [r3]
+ movs r0, 0x2
+ ands r0, r2
+ cmp r0, 0
+ beq _0802D0A4
+ ldr r0, _0802D058 @ =gMoveSelectionCursor
+ ldr r1, _0802D05C @ =gActiveBank
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r5, [r1]
+ cmp r2, r5
+ bne _0802D060
+ ldrb r0, [r1]
+ movs r1, 0x1D
+ bl sub_802E3B4
+ b _0802D066
+ .align 2, 0
+_0802D050: .4byte gMain
+_0802D054: .4byte gUnknown_03004344
+_0802D058: .4byte gMoveSelectionCursor
+_0802D05C: .4byte gActiveBank
+_0802D060:
+ ldrb r0, [r3]
+ bl nullsub_7
+_0802D066:
+ ldr r4, _0802D090 @ =gUnknown_03004344
+ ldrb r0, [r4]
+ movs r1, 0x2
+ eors r0, r1
+ strb r0, [r4]
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _0802D094 @ =gMoveSelectionCursor
+ ldr r0, _0802D098 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802D09C
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_802E3B4
+ b _0802D0A4
+ .align 2, 0
+_0802D090: .4byte gUnknown_03004344
+_0802D094: .4byte gMoveSelectionCursor
+_0802D098: .4byte gActiveBank
+_0802D09C:
+ ldrb r0, [r4]
+ movs r1, 0x1B
+ bl sub_802E3B4
+_0802D0A4:
+ ldr r0, _0802D0E0 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D138
+ ldr r3, _0802D0E4 @ =gUnknown_03004344
+ ldrb r2, [r3]
+ movs r0, 0x2
+ ands r0, r2
+ cmp r0, 0
+ bne _0802D138
+ ldr r1, _0802D0E8 @ =gUnknown_03004348
+ movs r0, 0x2
+ eors r0, r2
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0802D138
+ ldr r0, _0802D0EC @ =gMoveSelectionCursor
+ ldr r1, _0802D0F0 @ =gActiveBank
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r2, r0
+ bne _0802D0F4
+ ldrb r0, [r1]
+ movs r1, 0x1D
+ bl sub_802E3B4
+ b _0802D0FA
+ .align 2, 0
+_0802D0E0: .4byte gMain
+_0802D0E4: .4byte gUnknown_03004344
+_0802D0E8: .4byte gUnknown_03004348
+_0802D0EC: .4byte gMoveSelectionCursor
+_0802D0F0: .4byte gActiveBank
+_0802D0F4:
+ ldrb r0, [r3]
+ bl nullsub_7
+_0802D0FA:
+ ldr r4, _0802D124 @ =gUnknown_03004344
+ ldrb r0, [r4]
+ movs r1, 0x2
+ eors r0, r1
+ strb r0, [r4]
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _0802D128 @ =gMoveSelectionCursor
+ ldr r0, _0802D12C @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0802D130
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_802E3B4
+ b _0802D138
+ .align 2, 0
+_0802D124: .4byte gUnknown_03004344
+_0802D128: .4byte gMoveSelectionCursor
+_0802D12C: .4byte gActiveBank
+_0802D130:
+ ldrb r0, [r4]
+ movs r1, 0x1B
+ bl sub_802E3B4
+_0802D138:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802CA60
+
+ thumb_func_start sub_802D148
+sub_802D148: @ 802D148
+ push {lr}
+ ldr r0, _0802D178 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0802D174
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r3, _0802D17C @ =gMain
+ ldr r0, _0802D180 @ =0x0000043d
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _0802D184 @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r3]
+ ldr r0, _0802D188 @ =c2_8011A1C
+ bl SetMainCallback2
+_0802D174:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D178: .4byte gReceivedRemoteLinkPlayers
+_0802D17C: .4byte gMain
+_0802D180: .4byte 0x0000043d
+_0802D184: .4byte gPreBattleCallback1
+_0802D188: .4byte c2_8011A1C
+ thumb_func_end sub_802D148
+
+ thumb_func_start sub_802D18C
+sub_802D18C: @ 802D18C
+ push {lr}
+ ldr r0, _0802D1BC @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D1F2
+ ldr r0, _0802D1C0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D1D0
+ bl sub_800832C
+ ldr r1, _0802D1C4 @ =gBattleBankFunc
+ ldr r0, _0802D1C8 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802D1CC @ =sub_802D148
+ str r1, [r0]
+ b _0802D1F2
+ .align 2, 0
+_0802D1BC: .4byte gPaletteFade
+_0802D1C0: .4byte gBattleTypeFlags
+_0802D1C4: .4byte gBattleBankFunc
+_0802D1C8: .4byte gActiveBank
+_0802D1CC: .4byte sub_802D148
+_0802D1D0:
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r2, _0802D1F8 @ =gMain
+ ldr r0, _0802D1FC @ =0x0000043d
+ adds r3, r2, r0
+ ldrb r1, [r3]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+ ldr r0, _0802D200 @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, [r2, 0x8]
+ bl SetMainCallback2
+_0802D1F2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D1F8: .4byte gMain
+_0802D1FC: .4byte 0x0000043d
+_0802D200: .4byte gPreBattleCallback1
+ thumb_func_end sub_802D18C
+
+ thumb_func_start sub_802D204
+sub_802D204: @ 802D204
+ push {lr}
+ ldr r2, _0802D22C @ =gSprites
+ ldr r1, _0802D230 @ =gObjectBankIDs
+ ldr r0, _0802D234 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, [r0]
+ ldr r0, _0802D238 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D228
+ bl PlayerBufferExecCompleted
+_0802D228:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D22C: .4byte gSprites
+_0802D230: .4byte gObjectBankIDs
+_0802D234: .4byte gActiveBank
+_0802D238: .4byte SpriteCallbackDummy
+ thumb_func_end sub_802D204
+
+ thumb_func_start sub_802D23C
+sub_802D23C: @ 802D23C
+ push {lr}
+ ldr r2, _0802D264 @ =gSprites
+ ldr r1, _0802D268 @ =gObjectBankIDs
+ ldr r0, _0802D26C @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, [r0]
+ ldr r0, _0802D270 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D260
+ bl PlayerBufferExecCompleted
+_0802D260:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D264: .4byte gSprites
+_0802D268: .4byte gObjectBankIDs
+_0802D26C: .4byte gActiveBank
+_0802D270: .4byte SpriteCallbackDummy
+ thumb_func_end sub_802D23C
+
+ thumb_func_start sub_802D274
+sub_802D274: @ 802D274
+ push {r4-r6,lr}
+ ldr r6, _0802D2CC @ =gSprites
+ ldr r5, _0802D2D0 @ =gObjectBankIDs
+ ldr r4, _0802D2D4 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r6, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, _0802D2D8 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D2C6
+ ldr r0, _0802D2DC @ =gSaveBlock2
+ ldrb r0, [r0, 0x8]
+ bl nullsub_10
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl FreeSpriteOamMatrix
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ bl PlayerBufferExecCompleted
+_0802D2C6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D2CC: .4byte gSprites
+_0802D2D0: .4byte gObjectBankIDs
+_0802D2D4: .4byte gActiveBank
+_0802D2D8: .4byte SpriteCallbackDummy
+_0802D2DC: .4byte gSaveBlock2
+ thumb_func_end sub_802D274
+
+ thumb_func_start sub_802D2E0
+sub_802D2E0: @ 802D2E0
+ push {lr}
+ ldr r3, _0802D314 @ =gActiveBank
+ ldrb r0, [r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r2, _0802D318 @ =0x02017810
+ adds r1, r2
+ ldrb r0, [r1, 0x9]
+ subs r0, 0x1
+ strb r0, [r1, 0x9]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _0802D310
+ ldrb r0, [r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0
+ strb r0, [r1, 0x9]
+ bl PlayerBufferExecCompleted
+_0802D310:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D314: .4byte gActiveBank
+_0802D318: .4byte 0x02017810
+ thumb_func_end sub_802D2E0
+
+ thumb_func_start sub_802D31C
+sub_802D31C: @ 802D31C
+ push {r4-r7,lr}
+ movs r6, 0
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802D340
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802D374
+ ldr r0, _0802D360 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D374
+_0802D340:
+ ldr r2, _0802D364 @ =gSprites
+ ldr r1, _0802D368 @ =gHealthboxIDs
+ ldr r0, _0802D36C @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, [r0]
+ ldr r0, _0802D370 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D3AA
+ b _0802D3A8
+ .align 2, 0
+_0802D360: .4byte gBattleTypeFlags
+_0802D364: .4byte gSprites
+_0802D368: .4byte gHealthboxIDs
+_0802D36C: .4byte gActiveBank
+_0802D370: .4byte SpriteCallbackDummy
+_0802D374:
+ ldr r2, _0802D45C @ =gSprites
+ ldr r5, _0802D460 @ =gHealthboxIDs
+ ldr r0, _0802D464 @ =gActiveBank
+ ldrb r3, [r0]
+ adds r0, r3, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r4, [r0]
+ ldr r0, _0802D468 @ =SpriteCallbackDummy
+ cmp r4, r0
+ bne _0802D3AA
+ movs r0, 0x2
+ eors r3, r0
+ adds r0, r3, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ cmp r0, r4
+ bne _0802D3AA
+_0802D3A8:
+ movs r6, 0x1
+_0802D3AA:
+ bl IsCryPlayingOrClearCrySongs
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802D3B6
+ movs r6, 0
+_0802D3B6:
+ cmp r6, 0
+ bne _0802D3BC
+ b _0802D4DA
+_0802D3BC:
+ ldr r7, _0802D464 @ =gActiveBank
+ ldrb r2, [r7]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ ldr r5, _0802D46C @ =0x02017810
+ adds r4, r0, r5
+ ldrb r1, [r4, 0x1]
+ movs r3, 0x1
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D3D8
+ b _0802D4DA
+_0802D3D8:
+ movs r6, 0x2
+ adds r1, r6, 0
+ eors r1, r2
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0, 0x1]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D4DA
+ ldrb r1, [r4]
+ movs r3, 0x7F
+ adds r0, r3, 0
+ ands r0, r1
+ strb r0, [r4]
+ ldrb r0, [r7]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldrb r2, [r1, 0x1]
+ movs r4, 0x2
+ negs r4, r4
+ adds r0, r4, 0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldrb r0, [r7]
+ adds r1, r6, 0
+ eors r1, r0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0]
+ ands r3, r1
+ strb r3, [r0]
+ ldrb r0, [r7]
+ adds r1, r6, 0
+ eors r1, r0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0, 0x1]
+ ands r4, r1
+ strb r4, [r0, 0x1]
+ ldr r4, _0802D470 @ =0x000027f9
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+ ldr r0, _0802D474 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D47C
+ ldr r0, _0802D478 @ =gMPlay_BGM
+ bl m4aMPlayContinue
+ b _0802D488
+ .align 2, 0
+_0802D45C: .4byte gSprites
+_0802D460: .4byte gHealthboxIDs
+_0802D464: .4byte gActiveBank
+_0802D468: .4byte SpriteCallbackDummy
+_0802D46C: .4byte 0x02017810
+_0802D470: .4byte 0x000027f9
+_0802D474: .4byte gBattleTypeFlags
+_0802D478: .4byte gMPlay_BGM
+_0802D47C:
+ ldr r0, _0802D4E0 @ =gMPlay_BGM
+ ldr r1, _0802D4E4 @ =0x0000ffff
+ movs r2, 0x80
+ lsls r2, 1
+ bl m4aMPlayVolumeControl
+_0802D488:
+ ldr r7, _0802D4E8 @ =gBattlePartyID
+ ldr r4, _0802D4EC @ =gActiveBank
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _0802D4F0 @ =gPlayerParty
+ adds r0, r5
+ bl sub_80324F8
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802D4BE
+ ldrb r0, [r4]
+ movs r1, 0x2
+ eors r1, r0
+ lsls r0, r1, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ bl sub_80324F8
+_0802D4BE:
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802D4F4 @ =0x02017810
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0, 0x9]
+ ldr r1, _0802D4F8 @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802D4FC @ =sub_802D2E0
+ str r1, [r0]
+_0802D4DA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D4E0: .4byte gMPlay_BGM
+_0802D4E4: .4byte 0x0000ffff
+_0802D4E8: .4byte gBattlePartyID
+_0802D4EC: .4byte gActiveBank
+_0802D4F0: .4byte gPlayerParty
+_0802D4F4: .4byte 0x02017810
+_0802D4F8: .4byte gBattleBankFunc
+_0802D4FC: .4byte sub_802D2E0
+ thumb_func_end sub_802D31C
+
+ thumb_func_start sub_802D500
+sub_802D500: @ 802D500
+ push {r4-r7,lr}
+ ldr r5, _0802D654 @ =gActiveBank
+ ldrb r2, [r5]
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ ldr r4, _0802D658 @ =0x02017810
+ adds r0, r4
+ ldrb r1, [r0]
+ movs r7, 0x88
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D530
+ ldr r0, _0802D65C @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0802D660 @ =gPlayerParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_0802D530:
+ ldrb r0, [r5]
+ movs r6, 0x2
+ adds r2, r6, 0
+ eors r2, r0
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D55E
+ ldr r0, _0802D65C @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0802D660 @ =gPlayerParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_0802D55E:
+ ldrb r2, [r5]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0]
+ movs r3, 0x8
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D64C
+ adds r1, r6, 0
+ eors r1, r2
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D64C
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802D5EE
+ ldr r0, _0802D664 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D5EE
+ ldr r1, _0802D668 @ =gUnknown_0300434C
+ ldrb r0, [r5]
+ eors r0, r6
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802D66C @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ ldr r4, _0802D670 @ =gHealthboxIDs
+ ldrb r0, [r5]
+ adds r1, r6, 0
+ eors r1, r0
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ ldr r2, _0802D65C @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0802D660 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+ ldrb r0, [r5]
+ eors r0, r6
+ bl sub_804777C
+ ldrb r0, [r5]
+ eors r0, r6
+ adds r0, r4
+ ldrb r0, [r0]
+ bl sub_8043DFC
+_0802D5EE:
+ ldr r1, _0802D668 @ =gUnknown_0300434C
+ ldr r4, _0802D654 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802D66C @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ ldr r5, _0802D670 @ =gHealthboxIDs
+ ldrb r1, [r4]
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ ldr r2, _0802D65C @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0802D660 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+ ldrb r0, [r4]
+ bl sub_804777C
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ ldr r2, _0802D674 @ =0x02017840
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0x9]
+ ldr r1, _0802D678 @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802D67C @ =sub_802D31C
+ str r1, [r0]
+_0802D64C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D654: .4byte gActiveBank
+_0802D658: .4byte 0x02017810
+_0802D65C: .4byte gBattlePartyID
+_0802D660: .4byte gPlayerParty
+_0802D664: .4byte gBattleTypeFlags
+_0802D668: .4byte gUnknown_0300434C
+_0802D66C: .4byte gSprites
+_0802D670: .4byte gHealthboxIDs
+_0802D674: .4byte 0x02017840
+_0802D678: .4byte gBattleBankFunc
+_0802D67C: .4byte sub_802D31C
+ thumb_func_end sub_802D500
+
+ thumb_func_start sub_802D680
+sub_802D680: @ 802D680
+ push {r4-r6,lr}
+ ldr r2, _0802D710 @ =gSprites
+ ldr r0, _0802D714 @ =gHealthboxIDs
+ ldr r6, _0802D718 @ =gActiveBank
+ ldrb r3, [r6]
+ adds r0, r3, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, [r0]
+ ldr r0, _0802D71C @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D708
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ ldr r5, _0802D720 @ =0x02017810
+ adds r2, r0, r5
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D708
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r4, _0802D724 @ =0x000027f9
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+ ldrb r2, [r6]
+ lsls r0, r2, 2
+ adds r1, r5, 0
+ subs r1, 0x10
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0802D6FC
+ adds r0, r2, 0
+ adds r1, r2, 0
+ movs r3, 0x6
+ bl move_anim_start_t4
+_0802D6FC:
+ ldr r0, _0802D728 @ =gBattleBankFunc
+ ldrb r1, [r6]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _0802D72C @ =sub_802D730
+ str r0, [r1]
+_0802D708:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D710: .4byte gSprites
+_0802D714: .4byte gHealthboxIDs
+_0802D718: .4byte gActiveBank
+_0802D71C: .4byte SpriteCallbackDummy
+_0802D720: .4byte 0x02017810
+_0802D724: .4byte 0x000027f9
+_0802D728: .4byte gBattleBankFunc
+_0802D72C: .4byte sub_802D730
+ thumb_func_end sub_802D680
+
+ thumb_func_start sub_802D730
+sub_802D730: @ 802D730
+ push {r4,lr}
+ ldr r4, _0802D780 @ =gActiveBank
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802D784 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D77A
+ bl IsCryPlayingOrClearCrySongs
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802D77A
+ ldr r0, _0802D788 @ =gMPlay_BGM
+ ldr r1, _0802D78C @ =0x0000ffff
+ movs r2, 0x80
+ lsls r2, 1
+ bl m4aMPlayVolumeControl
+ ldr r2, _0802D790 @ =gBattlePartyID
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r2
+ ldrh r2, [r0]
+ movs r0, 0x64
+ muls r0, r2
+ ldr r2, _0802D794 @ =gPlayerParty
+ adds r0, r2
+ bl sub_80324F8
+ bl PlayerBufferExecCompleted
+_0802D77A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D780: .4byte gActiveBank
+_0802D784: .4byte 0x02017810
+_0802D788: .4byte gMPlay_BGM
+_0802D78C: .4byte 0x0000ffff
+_0802D790: .4byte gBattlePartyID
+_0802D794: .4byte gPlayerParty
+ thumb_func_end sub_802D730
+
+ thumb_func_start sub_802D798
+sub_802D798: @ 802D798
+ push {r4-r6,lr}
+ ldr r5, _0802D844 @ =gActiveBank
+ ldrb r2, [r5]
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ ldr r6, _0802D848 @ =0x02017810
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r0, 0x88
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D7C6
+ ldr r0, _0802D84C @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0802D850 @ =gPlayerParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_0802D7C6:
+ ldr r4, _0802D854 @ =gSprites
+ ldr r0, _0802D858 @ =gUnknown_0300434C
+ ldrb r2, [r5]
+ adds r0, r2, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r3, r0, 2
+ adds r0, r4, 0
+ adds r0, 0x1C
+ adds r0, r3, r0
+ ldr r1, [r0]
+ ldr r0, _0802D85C @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0802D83C
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _0802D83C
+ adds r0, r3, r4
+ bl DestroySprite
+ ldr r4, _0802D860 @ =gHealthboxIDs
+ ldrb r1, [r5]
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ ldr r2, _0802D84C @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0802D850 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+ ldrb r0, [r5]
+ bl sub_804777C
+ ldrb r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ ldrb r0, [r5]
+ bl sub_8031F88
+ ldr r1, _0802D864 @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802D868 @ =sub_802D680
+ str r1, [r0]
+_0802D83C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D844: .4byte gActiveBank
+_0802D848: .4byte 0x02017810
+_0802D84C: .4byte gBattlePartyID
+_0802D850: .4byte gPlayerParty
+_0802D854: .4byte gSprites
+_0802D858: .4byte gUnknown_0300434C
+_0802D85C: .4byte SpriteCallbackDummy
+_0802D860: .4byte gHealthboxIDs
+_0802D864: .4byte gBattleBankFunc
+_0802D868: .4byte sub_802D680
+ thumb_func_end sub_802D798
+
+ thumb_func_start c3_0802FDF4
+c3_0802FDF4: @ 802D86C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl IsCryPlayingOrClearCrySongs
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802D88E
+ ldr r0, _0802D894 @ =gMPlay_BGM
+ ldr r1, _0802D898 @ =0x0000ffff
+ movs r2, 0x80
+ lsls r2, 1
+ bl m4aMPlayVolumeControl
+ adds r0, r4, 0
+ bl DestroyTask
+_0802D88E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D894: .4byte gMPlay_BGM
+_0802D898: .4byte 0x0000ffff
+ thumb_func_end c3_0802FDF4
+
+ thumb_func_start bx_t1_healthbar_update
+bx_t1_healthbar_update: @ 802D89C
+ push {r4-r6,lr}
+ ldr r5, _0802D8DC @ =gActiveBank
+ ldrb r0, [r5]
+ ldr r6, _0802D8E0 @ =gHealthboxIDs
+ adds r1, r0, r6
+ ldrb r1, [r1]
+ movs r2, 0
+ movs r3, 0
+ bl sub_8045C78
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ lsls r4, 16
+ asrs r1, r4, 16
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _0802D8E4
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r0, [r0]
+ movs r2, 0
+ bl sub_80440EC
+ b _0802D8FE
+ .align 2, 0
+_0802D8DC: .4byte gActiveBank
+_0802D8E0: .4byte gHealthboxIDs
+_0802D8E4:
+ ldr r2, _0802D904 @ =gBattlePartyID
+ ldrb r1, [r5]
+ lsls r0, r1, 1
+ adds r0, r2
+ ldrh r2, [r0]
+ movs r0, 0x64
+ muls r0, r2
+ ldr r2, _0802D908 @ =gPlayerParty
+ adds r0, r2
+ bl sub_80324F8
+ bl PlayerBufferExecCompleted
+_0802D8FE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D904: .4byte gBattlePartyID
+_0802D908: .4byte gPlayerParty
+ thumb_func_end bx_t1_healthbar_update
+
+ thumb_func_start sub_802D90C
+sub_802D90C: @ 802D90C
+ push {lr}
+ ldr r0, _0802D920 @ =gUnknown_03004210
+ ldrh r0, [r0, 0x16]
+ cmp r0, 0
+ bne _0802D91A
+ bl PlayerBufferExecCompleted
+_0802D91A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802D920: .4byte gUnknown_03004210
+ thumb_func_end sub_802D90C
+
+ thumb_func_start sub_802D924
+sub_802D924: @ 802D924
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _0802DA24 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ mov r8, r0
+ ldrb r0, [r0, 0x8]
+ mov r10, r0
+ mov r1, r8
+ ldrb r7, [r1, 0xC]
+ str r7, [sp, 0x8]
+ ldrh r2, [r1, 0xA]
+ str r2, [sp, 0xC]
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0802D96A
+ ldr r1, _0802DA28 @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r10, r0
+ bne _0802D96A
+ b _0802DA80
+_0802D96A:
+ movs r0, 0x64
+ mov r1, r10
+ muls r1, r0
+ ldr r0, _0802DA2C @ =gPlayerParty
+ adds r6, r1, r0
+ adds r0, r6, 0
+ movs r1, 0xB
+ bl GetMonData
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r6, 0
+ movs r1, 0x38
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r6, 0
+ movs r1, 0x19
+ bl GetMonData
+ str r0, [sp, 0x4]
+ ldr r3, _0802DA30 @ =gExperienceTables
+ adds r4, 0x1
+ lsls r4, 2
+ ldr r2, _0802DA34 @ =gBaseStats
+ lsls r1, r5, 3
+ subs r1, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrb r2, [r1, 0x13]
+ movs r1, 0xCA
+ lsls r1, 1
+ muls r1, r2
+ adds r4, r1
+ adds r4, r3
+ ldr r2, [r4]
+ str r2, [sp]
+ ldr r3, [sp, 0xC]
+ lsls r1, r3, 16
+ asrs r1, 16
+ adds r0, r1
+ cmp r0, r2
+ bcc _0802DA58
+ adds r0, r6, 0
+ movs r1, 0x19
+ mov r2, sp
+ bl SetMonData
+ adds r0, r6, 0
+ bl CalculateMonStats
+ ldr r2, [sp]
+ add r0, sp, 0x4
+ ldrh r0, [r0]
+ subs r2, r0
+ ldr r0, [sp, 0xC]
+ subs r2, r0, r2
+ ldr r4, _0802DA38 @ =gActiveBank
+ ldrb r5, [r4]
+ strb r7, [r4]
+ lsls r2, 16
+ lsrs r2, 16
+ movs r0, 0x1
+ movs r1, 0xB
+ bl dp01_build_cmdbuf_x21_a_bb
+ strb r5, [r4]
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0802DA40
+ ldr r2, _0802DA28 @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r2
+ mov r1, r10
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _0802DA1E
+ movs r0, 0x2
+ eors r7, r0
+ lsls r0, r7, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _0802DA40
+_0802DA1E:
+ ldr r0, _0802DA3C @ =sub_802DCB0
+ b _0802DA82
+ .align 2, 0
+_0802DA24: .4byte gTasks
+_0802DA28: .4byte gBattlePartyID
+_0802DA2C: .4byte gPlayerParty
+_0802DA30: .4byte gExperienceTables
+_0802DA34: .4byte gBaseStats
+_0802DA38: .4byte gActiveBank
+_0802DA3C: .4byte sub_802DCB0
+_0802DA40:
+ ldr r0, _0802DA50 @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0802DA54 @ =sub_802DDC4
+ b _0802DA84
+ .align 2, 0
+_0802DA50: .4byte gTasks
+_0802DA54: .4byte sub_802DDC4
+_0802DA58:
+ str r0, [sp, 0x4]
+ add r2, sp, 0x4
+ adds r0, r6, 0
+ movs r1, 0x19
+ bl SetMonData
+ ldr r1, _0802DA78 @ =gBattleBankFunc
+ ldr r3, [sp, 0x8]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, _0802DA7C @ =sub_802D90C
+ str r1, [r0]
+ mov r0, r9
+ bl DestroyTask
+ b _0802DA86
+ .align 2, 0
+_0802DA78: .4byte gBattleBankFunc
+_0802DA7C: .4byte sub_802D90C
+_0802DA80:
+ ldr r0, _0802DA98 @ =sub_802DA9C
+_0802DA82:
+ mov r1, r8
+_0802DA84:
+ str r0, [r1]
+_0802DA86:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DA98: .4byte sub_802DA9C
+ thumb_func_end sub_802D924
+
+ thumb_func_start sub_802DA9C
+sub_802DA9C: @ 802DA9C
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0802DB54 @ =gTasks
+ lsls r2, r0, 2
+ mov r8, r2
+ add r8, r0
+ mov r0, r8
+ lsls r0, 3
+ mov r8, r0
+ add r8, r1
+ mov r2, r8
+ ldrb r1, [r2, 0x8]
+ movs r0, 0xA
+ ldrsh r2, [r2, r0]
+ mov r9, r2
+ mov r2, r8
+ ldrb r2, [r2, 0xC]
+ mov r10, r2
+ movs r0, 0x64
+ adds r6, r1, 0
+ muls r6, r0
+ ldr r0, _0802DB58 @ =gPlayerParty
+ adds r6, r0
+ adds r0, r6, 0
+ movs r1, 0x38
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r6, 0
+ movs r1, 0xB
+ bl GetMonData
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r6, 0
+ movs r1, 0x19
+ bl GetMonData
+ adds r3, r0, 0
+ ldr r6, _0802DB5C @ =gExperienceTables
+ lsls r1, r4, 2
+ ldr r2, _0802DB60 @ =gBaseStats
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r2
+ ldrb r2, [r0, 0x13]
+ movs r0, 0xCA
+ lsls r0, 1
+ muls r0, r2
+ adds r1, r0
+ adds r1, r6
+ ldr r1, [r1]
+ subs r3, r1
+ adds r4, 0x1
+ lsls r4, 2
+ adds r4, r0
+ adds r4, r6
+ ldr r2, [r4]
+ subs r2, r1
+ ldr r0, _0802DB64 @ =gHealthboxIDs
+ add r0, r10
+ ldrb r1, [r0]
+ mov r0, r9
+ negs r0, r0
+ str r0, [sp]
+ mov r0, r10
+ bl sub_8043D84
+ movs r0, 0x21
+ bl PlaySE
+ ldr r0, _0802DB68 @ =sub_802DB6C
+ mov r1, r8
+ str r0, [r1]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DB54: .4byte gTasks
+_0802DB58: .4byte gPlayerParty
+_0802DB5C: .4byte gExperienceTables
+_0802DB60: .4byte gBaseStats
+_0802DB64: .4byte gHealthboxIDs
+_0802DB68: .4byte sub_802DB6C
+ thumb_func_end sub_802DA9C
+
+ thumb_func_start sub_802DB6C
+sub_802DB6C: @ 802DB6C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _0802DB98 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r1, [r6, 0x1C]
+ movs r2, 0x1C
+ ldrsh r0, [r6, r2]
+ cmp r0, 0xC
+ bgt _0802DB9C
+ adds r0, r1, 0x1
+ strh r0, [r6, 0x1C]
+ b _0802DC98
+ .align 2, 0
+_0802DB98: .4byte gTasks
+_0802DB9C:
+ ldrb r0, [r6, 0x8]
+ mov r9, r0
+ ldrh r2, [r6, 0xA]
+ mov r10, r2
+ ldrb r7, [r6, 0xC]
+ ldr r5, _0802DC64 @ =gHealthboxIDs
+ adds r5, r7, r5
+ ldrb r1, [r5]
+ adds r0, r7, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_8045C78
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r5]
+ bl sub_8043DFC
+ lsls r4, 16
+ asrs r4, 16
+ movs r0, 0x1
+ negs r0, r0
+ cmp r4, r0
+ bne _0802DC98
+ movs r0, 0x21
+ bl m4aSongNumStop
+ movs r0, 0x64
+ mov r1, r9
+ muls r1, r0
+ ldr r0, _0802DC68 @ =gPlayerParty
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0x38
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ movs r1, 0x19
+ bl GetMonData
+ str r0, [sp, 0x4]
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r3, _0802DC6C @ =gExperienceTables
+ adds r4, 0x1
+ lsls r4, 2
+ ldr r2, _0802DC70 @ =gBaseStats
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r1, [r1, 0x13]
+ movs r0, 0xCA
+ lsls r0, 1
+ muls r0, r1
+ adds r4, r0
+ adds r4, r3
+ ldr r1, [r4]
+ str r1, [sp]
+ mov r2, r10
+ lsls r0, r2, 16
+ asrs r4, r0, 16
+ ldr r0, [sp, 0x4]
+ adds r0, r4
+ cmp r0, r1
+ blt _0802DC7C
+ adds r0, r5, 0
+ movs r1, 0x19
+ mov r2, sp
+ bl SetMonData
+ adds r0, r5, 0
+ bl CalculateMonStats
+ ldr r2, [sp]
+ add r0, sp, 0x4
+ ldrh r0, [r0]
+ subs r2, r0
+ subs r2, r4, r2
+ ldr r4, _0802DC74 @ =gActiveBank
+ ldrb r5, [r4]
+ strb r7, [r4]
+ lsls r2, 16
+ lsrs r2, 16
+ movs r0, 0x1
+ movs r1, 0xB
+ bl dp01_build_cmdbuf_x21_a_bb
+ strb r5, [r4]
+ ldr r0, _0802DC78 @ =sub_802DCB0
+ str r0, [r6]
+ b _0802DC98
+ .align 2, 0
+_0802DC64: .4byte gHealthboxIDs
+_0802DC68: .4byte gPlayerParty
+_0802DC6C: .4byte gExperienceTables
+_0802DC70: .4byte gBaseStats
+_0802DC74: .4byte gActiveBank
+_0802DC78: .4byte sub_802DCB0
+_0802DC7C:
+ str r0, [sp, 0x4]
+ add r2, sp, 0x4
+ adds r0, r5, 0
+ movs r1, 0x19
+ bl SetMonData
+ ldr r1, _0802DCA8 @ =gBattleBankFunc
+ lsls r0, r7, 2
+ adds r0, r1
+ ldr r1, _0802DCAC @ =sub_802D90C
+ str r1, [r0]
+ mov r0, r8
+ bl DestroyTask
+_0802DC98:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DCA8: .4byte gBattleBankFunc
+_0802DCAC: .4byte sub_802D90C
+ thumb_func_end sub_802DB6C
+
+ thumb_func_start sub_802DCB0
+sub_802DCB0: @ 802DCB0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _0802DD04 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldrb r4, [r0, 0xC]
+ ldrb r6, [r0, 0x8]
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0802DCE4
+ ldr r1, _0802DD08 @ =gBattlePartyID
+ movs r0, 0x2
+ adds r2, r4, 0
+ eors r2, r0
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ bne _0802DCE4
+ adds r4, r2, 0
+_0802DCE4:
+ adds r0, r4, 0
+ adds r1, r4, 0
+ adds r2, r4, 0
+ movs r3, 0
+ bl move_anim_start_t4
+ ldr r0, _0802DD04 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0802DD0C @ =sub_802DD10
+ str r0, [r1]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DD04: .4byte gTasks
+_0802DD08: .4byte gBattlePartyID
+_0802DD0C: .4byte sub_802DD10
+ thumb_func_end sub_802DCB0
+
+ thumb_func_start sub_802DD10
+sub_802DD10: @ 802DD10
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _0802DD78 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r2, r0, r1
+ ldrb r5, [r2, 0xC]
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 2
+ ldr r1, _0802DD7C @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0802DDAE
+ ldrb r4, [r2, 0x8]
+ movs r0, 0x64
+ adds r1, r4, 0
+ muls r1, r0
+ ldr r0, _0802DD80 @ =gPlayerParty
+ adds r7, r1, r0
+ adds r0, r7, 0
+ movs r1, 0x38
+ bl GetMonData
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0802DD8C
+ ldr r1, _0802DD84 @ =gBattlePartyID
+ movs r0, 0x2
+ adds r2, r5, 0
+ eors r2, r0
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ bne _0802DD8C
+ ldr r0, _0802DD88 @ =gHealthboxIDs
+ adds r0, r2, r0
+ ldrb r0, [r0]
+ adds r1, r7, 0
+ movs r2, 0
+ bl sub_8045A5C
+ b _0802DDA0
+ .align 2, 0
+_0802DD78: .4byte gTasks
+_0802DD7C: .4byte 0x02017810
+_0802DD80: .4byte gPlayerParty
+_0802DD84: .4byte gBattlePartyID
+_0802DD88: .4byte gHealthboxIDs
+_0802DD8C:
+ ldr r0, _0802DDB4 @ =gHealthboxIDs
+ adds r0, r5, r0
+ ldrb r0, [r0]
+ movs r1, 0x64
+ muls r1, r4
+ ldr r2, _0802DDB8 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+_0802DDA0:
+ ldr r0, _0802DDBC @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0802DDC0 @ =sub_802DDC4
+ str r0, [r1]
+_0802DDAE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DDB4: .4byte gHealthboxIDs
+_0802DDB8: .4byte gPlayerParty
+_0802DDBC: .4byte gTasks
+_0802DDC0: .4byte sub_802DDC4
+ thumb_func_end sub_802DD10
+
+ thumb_func_start sub_802DDC4
+sub_802DDC4: @ 802DDC4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _0802DE00 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ ldrb r1, [r4, 0x8]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802DE04 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0x38
+ bl GetMonData
+ ldrb r0, [r4, 0xC]
+ ldr r1, _0802DE08 @ =gBattleBankFunc
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802DE0C @ =sub_802D90C
+ str r1, [r0]
+ adds r0, r5, 0
+ bl DestroyTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DE00: .4byte gTasks
+_0802DE04: .4byte gPlayerParty
+_0802DE08: .4byte gBattleBankFunc
+_0802DE0C: .4byte sub_802D90C
+ thumb_func_end sub_802DDC4
+
+ thumb_func_start sub_802DE10
+sub_802DE10: @ 802DE10
+ push {r4-r6,lr}
+ ldr r6, _0802DE94 @ =gSprites
+ ldr r5, _0802DE98 @ =gObjectBankIDs
+ ldr r4, _0802DE9C @ =gActiveBank
+ ldrb r2, [r4]
+ adds r0, r2, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r3, 0x22
+ ldrsh r1, [r0, r3]
+ movs r3, 0x26
+ ldrsh r0, [r0, r3]
+ adds r1, r0
+ cmp r1, 0xA0
+ ble _0802DE8C
+ ldr r1, _0802DEA0 @ =gBattlePartyID
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0802DEA4 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ bl nullsub_9
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r0, [r0, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ ldr r1, _0802DEA8 @ =gHealthboxIDs
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_8043DB0
+ bl PlayerBufferExecCompleted
+_0802DE8C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DE94: .4byte gSprites
+_0802DE98: .4byte gObjectBankIDs
+_0802DE9C: .4byte gActiveBank
+_0802DEA0: .4byte gBattlePartyID
+_0802DEA4: .4byte gPlayerParty
+_0802DEA8: .4byte gHealthboxIDs
+ thumb_func_end sub_802DE10
+
+ thumb_func_start sub_802DEAC
+sub_802DEAC: @ 802DEAC
+ push {r4-r6,lr}
+ ldr r6, _0802DF04 @ =gActiveBank
+ ldrb r2, [r6]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, _0802DF08 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0802DEFC
+ ldr r5, _0802DF0C @ =gObjectBankIDs
+ adds r0, r2, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _0802DF10 @ =gSprites
+ adds r0, r4
+ bl FreeSpriteOamMatrix
+ ldrb r0, [r6]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+ ldr r1, _0802DF14 @ =gHealthboxIDs
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_8043DB0
+ bl PlayerBufferExecCompleted
+_0802DEFC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DF04: .4byte gActiveBank
+_0802DF08: .4byte 0x02017810
+_0802DF0C: .4byte gObjectBankIDs
+_0802DF10: .4byte gSprites
+_0802DF14: .4byte gHealthboxIDs
+ thumb_func_end sub_802DEAC
+
+ thumb_func_start sub_802DF18
+sub_802DF18: @ 802DF18
+ push {lr}
+ ldr r0, _0802DF2C @ =gUnknown_03004210
+ ldrh r0, [r0, 0x16]
+ cmp r0, 0
+ bne _0802DF26
+ bl PlayerBufferExecCompleted
+_0802DF26:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DF2C: .4byte gUnknown_03004210
+ thumb_func_end sub_802DF18
+
+ thumb_func_start sub_802DF30
+sub_802DF30: @ 802DF30
+ push {r4,lr}
+ ldr r0, _0802DF70 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0802DF6A
+ ldr r1, _0802DF74 @ =gBattleBankFunc
+ ldr r2, _0802DF78 @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802DF7C @ =sub_802DF88
+ str r1, [r0]
+ ldr r3, _0802DF80 @ =gTasks
+ ldr r1, _0802DF84 @ =gUnknown_0300434C
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r3
+ ldrb r4, [r1, 0x8]
+ bl DestroyTask
+ adds r0, r4, 0
+ bl sub_8094E20
+_0802DF6A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DF70: .4byte gPaletteFade
+_0802DF74: .4byte gBattleBankFunc
+_0802DF78: .4byte gActiveBank
+_0802DF7C: .4byte sub_802DF88
+_0802DF80: .4byte gTasks
+_0802DF84: .4byte gUnknown_0300434C
+ thumb_func_end sub_802DF30
+
+ thumb_func_start sub_802DF88
+sub_802DF88: @ 802DF88
+ push {lr}
+ ldr r0, _0802DFB8 @ =gMain
+ ldr r1, [r0, 0x4]
+ ldr r0, _0802DFBC @ =sub_800F808
+ cmp r1, r0
+ bne _0802DFF8
+ ldr r0, _0802DFC0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0802DFF8
+ ldr r0, _0802DFC4 @ =gUnknown_0202E8F4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0802DFD0
+ ldr r0, _0802DFC8 @ =gUnknown_0202E8F5
+ ldrb r1, [r0]
+ ldr r2, _0802DFCC @ =gUnknown_02038470
+ movs r0, 0x1
+ bl dp01_build_cmdbuf_x22_a_three_bytes
+ b _0802DFDA
+ .align 2, 0
+_0802DFB8: .4byte gMain
+_0802DFBC: .4byte sub_800F808
+_0802DFC0: .4byte gPaletteFade
+_0802DFC4: .4byte gUnknown_0202E8F4
+_0802DFC8: .4byte gUnknown_0202E8F5
+_0802DFCC: .4byte gUnknown_02038470
+_0802DFD0:
+ movs r0, 0x1
+ movs r1, 0x6
+ movs r2, 0
+ bl dp01_build_cmdbuf_x22_a_three_bytes
+_0802DFDA:
+ ldr r1, _0802DFFC @ =gBattleBufferA
+ ldr r0, _0802E000 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 9
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0802DFF4
+ bl b_link_standby_message
+_0802DFF4:
+ bl PlayerBufferExecCompleted
+_0802DFF8:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802DFFC: .4byte gBattleBufferA
+_0802E000: .4byte gActiveBank
+ thumb_func_end sub_802DF88
+
+ thumb_func_start sub_802E004
+sub_802E004: @ 802E004
+ push {lr}
+ ldr r0, _0802E02C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E028
+ ldr r1, _0802E030 @ =gBattleBankFunc
+ ldr r0, _0802E034 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0802E038 @ =sub_802E03C
+ str r1, [r0]
+ bl nullsub_14
+ bl sub_80A6DCC
+_0802E028:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E02C: .4byte gPaletteFade
+_0802E030: .4byte gBattleBankFunc
+_0802E034: .4byte gActiveBank
+_0802E038: .4byte sub_802E03C
+ thumb_func_end sub_802E004
+
+ thumb_func_start sub_802E03C
+sub_802E03C: @ 802E03C
+ push {lr}
+ ldr r0, _0802E068 @ =gMain
+ ldr r1, [r0, 0x4]
+ ldr r0, _0802E06C @ =sub_800F808
+ cmp r1, r0
+ bne _0802E062
+ ldr r0, _0802E070 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E062
+ ldr r0, _0802E074 @ =gScriptItemId
+ ldrh r1, [r0]
+ movs r0, 0x1
+ bl dp01_build_cmdbuf_x23_aa_0
+ bl PlayerBufferExecCompleted
+_0802E062:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E068: .4byte gMain
+_0802E06C: .4byte sub_800F808
+_0802E070: .4byte gPaletteFade
+_0802E074: .4byte gScriptItemId
+ thumb_func_end sub_802E03C
+
+ thumb_func_start bx_wait_t1
+bx_wait_t1: @ 802E078
+ push {lr}
+ ldr r0, _0802E0A4 @ =gDoingBattleAnim
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802E09A
+ ldr r0, _0802E0A8 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802E0AC @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E09E
+_0802E09A:
+ bl PlayerBufferExecCompleted
+_0802E09E:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E0A4: .4byte gDoingBattleAnim
+_0802E0A8: .4byte gActiveBank
+_0802E0AC: .4byte 0x02017810
+ thumb_func_end bx_wait_t1
+
+ thumb_func_start bx_blink_t1
+bx_blink_t1: @ 802E0B0
+ push {r4,lr}
+ ldr r1, _0802E0EC @ =gObjectBankIDs
+ ldr r0, _0802E0F0 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r2, _0802E0F4 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r2
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x20
+ bne _0802E0FC
+ movs r3, 0
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ subs r0, 0x5
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _0802E0F8 @ =gDoingBattleAnim
+ strb r3, [r0]
+ bl PlayerBufferExecCompleted
+ b _0802E126
+ .align 2, 0
+_0802E0EC: .4byte gObjectBankIDs
+_0802E0F0: .4byte gActiveBank
+_0802E0F4: .4byte gSprites
+_0802E0F8: .4byte gDoingBattleAnim
+_0802E0FC:
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E120
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_0802E120:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+_0802E126:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end bx_blink_t1
+
+ thumb_func_start sub_802E12C
+sub_802E12C: @ 802E12C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r0, _0802E180 @ =gActiveBank
+ ldrb r4, [r0]
+ lsls r4, 9
+ ldr r0, _0802E184 @ =gUnknown_02023A64
+ adds r4, r0
+ ldr r5, _0802E188 @ =gDisplayedStringBattle
+ adds r0, r5, 0
+ bl StringCopy
+ lsls r0, r6, 1
+ adds r4, r0
+ ldrh r1, [r4]
+ movs r0, 0xD
+ muls r1, r0
+ ldr r0, _0802E18C @ =gMoveNames
+ adds r1, r0
+ adds r0, r5, 0
+ bl StringAppend
+ ldr r4, _0802E190 @ =gUnknown_03004210
+ adds r1, r5, 0
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 18
+ movs r2, 0xC0
+ lsls r2, 18
+ adds r0, r2
+ lsrs r2, r0, 16
+ movs r0, 0x1
+ ands r0, r6
+ movs r3, 0x1
+ cmp r0, 0
+ beq _0802E176
+ movs r3, 0xB
+_0802E176:
+ cmp r6, 0x1
+ bgt _0802E194
+ movs r0, 0x37
+ b _0802E196
+ .align 2, 0
+_0802E180: .4byte gActiveBank
+_0802E184: .4byte gUnknown_02023A64
+_0802E188: .4byte gDisplayedStringBattle
+_0802E18C: .4byte gMoveNames
+_0802E190: .4byte gUnknown_03004210
+_0802E194:
+ movs r0, 0x39
+_0802E196:
+ str r0, [sp]
+ adds r0, r4, 0
+ bl InitWindow
+ ldr r0, _0802E1AC @ =gUnknown_03004210
+ bl sub_8002F44
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E1AC: .4byte gUnknown_03004210
+ thumb_func_end sub_802E12C
+
+ thumb_func_start sub_802E1B0
+sub_802E1B0: @ 802E1B0
+ push {r4-r6,lr}
+ sub sp, 0x8
+ ldr r0, _0802E208 @ =gActiveBank
+ ldrb r4, [r0]
+ lsls r4, 9
+ ldr r0, _0802E20C @ =gUnknown_02023A64
+ adds r4, r0
+ ldr r5, _0802E210 @ =gUnknown_03004348
+ movs r0, 0
+ strb r0, [r5]
+ ldr r0, _0802E214 @ =gUnknown_03004210
+ ldr r1, _0802E218 @ =0x00001016
+ movs r2, 0x14
+ str r2, [sp]
+ movs r2, 0x3A
+ str r2, [sp, 0x4]
+ movs r2, 0x1
+ movs r3, 0x37
+ bl FillWindowRect
+ movs r6, 0
+_0802E1DA:
+ lsls r0, r6, 24
+ lsrs r0, 24
+ bl nullsub_7
+ adds r0, r6, 0
+ ldr r1, _0802E21C @ =gUnknown_08400D49
+ bl sub_802E12C
+ ldrh r0, [r4]
+ cmp r0, 0
+ beq _0802E1F6
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+_0802E1F6:
+ adds r4, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0802E1DA
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E208: .4byte gActiveBank
+_0802E20C: .4byte gUnknown_02023A64
+_0802E210: .4byte gUnknown_03004348
+_0802E214: .4byte gUnknown_03004210
+_0802E218: .4byte 0x00001016
+_0802E21C: .4byte gUnknown_08400D49
+ thumb_func_end sub_802E1B0
+
+ thumb_func_start sub_802E220
+sub_802E220: @ 802E220
+ push {r4-r6,lr}
+ sub sp, 0x4
+ ldr r4, _0802E2B8 @ =gBattleBufferA
+ ldr r6, _0802E2BC @ =gActiveBank
+ ldrb r0, [r6]
+ lsls r1, r0, 9
+ adds r0, r4, 0x2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0802E2B0
+ adds r4, 0x4
+ adds r4, r1, r4
+ ldr r2, _0802E2C0 @ =gDisplayedStringBattle
+ ldr r1, _0802E2C4 @ =gUnknown_08400D49
+ adds r0, r2, 0
+ bl StringCopy
+ adds r2, r0, 0
+ movs r1, 0xFC
+ strb r1, [r2]
+ movs r0, 0x11
+ strb r0, [r2, 0x1]
+ movs r0, 0x2
+ strb r0, [r2, 0x2]
+ adds r2, 0x3
+ strb r1, [r2]
+ movs r0, 0x14
+ strb r0, [r2, 0x1]
+ movs r0, 0x6
+ strb r0, [r2, 0x2]
+ adds r2, 0x3
+ ldr r5, _0802E2C8 @ =gMoveSelectionCursor
+ ldrb r1, [r6]
+ adds r1, r5
+ adds r0, r4, 0
+ adds r0, 0x8
+ ldrb r1, [r1]
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ adds r2, r0, 0
+ movs r0, 0xBA
+ strb r0, [r2]
+ adds r2, 0x1
+ ldrb r0, [r6]
+ adds r0, r5
+ adds r4, 0xC
+ ldrb r0, [r0]
+ adds r4, r0
+ ldrb r1, [r4]
+ adds r0, r2, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r4, _0802E2CC @ =gUnknown_03004210
+ ldr r1, _0802E2C0 @ =gDisplayedStringBattle
+ ldr r2, _0802E2D0 @ =0x000002a2
+ movs r0, 0x37
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x19
+ bl InitWindow
+ adds r0, r4, 0
+ bl sub_8002F44
+_0802E2B0:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E2B8: .4byte gBattleBufferA
+_0802E2BC: .4byte gActiveBank
+_0802E2C0: .4byte gDisplayedStringBattle
+_0802E2C4: .4byte gUnknown_08400D49
+_0802E2C8: .4byte gMoveSelectionCursor
+_0802E2CC: .4byte gUnknown_03004210
+_0802E2D0: .4byte 0x000002a2
+ thumb_func_end sub_802E220
+
+ thumb_func_start sub_802E2D4
+sub_802E2D4: @ 802E2D4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r4, _0802E314 @ =gBattleBufferA
+ ldr r5, _0802E318 @ =gActiveBank
+ ldrb r0, [r5]
+ lsls r1, r0, 9
+ adds r0, r4, 0x2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0802E328
+ ldr r4, _0802E31C @ =gUnknown_03004210
+ ldr r1, _0802E320 @ =0x00001016
+ movs r0, 0x1C
+ str r0, [sp]
+ movs r0, 0x3A
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x17
+ movs r3, 0x37
+ bl FillWindowRect
+ ldr r1, _0802E324 @ =gUnknown_08400D52
+ movs r2, 0xA4
+ lsls r2, 2
+ movs r0, 0x37
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x13
+ bl InitWindow
+ b _0802E388
+ .align 2, 0
+_0802E314: .4byte gBattleBufferA
+_0802E318: .4byte gActiveBank
+_0802E31C: .4byte gUnknown_03004210
+_0802E320: .4byte 0x00001016
+_0802E324: .4byte gUnknown_08400D52
+_0802E328:
+ adds r4, 0x4
+ adds r4, r1, r4
+ ldr r3, _0802E398 @ =gDisplayedStringBattle
+ ldr r1, _0802E39C @ =gUnknown_08400D49
+ adds r0, r3, 0
+ bl StringCopy
+ adds r3, r0, 0
+ ldr r2, _0802E3A0 @ =gBattleMoves
+ ldr r1, _0802E3A4 @ =gMoveSelectionCursor
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r0
+ ldrh r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x2]
+ lsls r1, r0, 3
+ subs r1, r0
+ ldr r0, _0802E3A8 @ =gTypeNames
+ adds r1, r0
+ adds r0, r3, 0
+ bl StringCopy
+ ldr r4, _0802E3AC @ =gUnknown_03004210
+ ldr r1, _0802E3B0 @ =0x00001016
+ movs r0, 0x1C
+ str r0, [sp]
+ movs r0, 0x3A
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x17
+ movs r3, 0x39
+ bl FillWindowRect
+ ldr r1, _0802E398 @ =gDisplayedStringBattle
+ movs r2, 0xB0
+ lsls r2, 2
+ movs r0, 0x39
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x17
+ bl InitWindow
+_0802E388:
+ ldr r0, _0802E3AC @ =gUnknown_03004210
+ bl sub_8002F44
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E398: .4byte gDisplayedStringBattle
+_0802E39C: .4byte gUnknown_08400D49
+_0802E3A0: .4byte gBattleMoves
+_0802E3A4: .4byte gMoveSelectionCursor
+_0802E3A8: .4byte gTypeNames
+_0802E3AC: .4byte gUnknown_03004210
+_0802E3B0: .4byte 0x00001016
+ thumb_func_end sub_802E2D4
+
+ thumb_func_start sub_802E3B4
+sub_802E3B4: @ 802E3B4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x48
+ bl sub_814A958
+ ldr r1, _0802E3DC @ =gUnknown_081FAE89
+ lsls r4, 1
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ adds r1, 0x1
+ adds r4, r1
+ ldrb r1, [r4]
+ bl sub_814A880
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E3DC: .4byte gUnknown_081FAE89
+ thumb_func_end sub_802E3B4
+
+ thumb_func_start nullsub_7
+nullsub_7: @ 802E3E0
+ bx lr
+ thumb_func_end nullsub_7
+
+ thumb_func_start sub_802E3E4
+sub_802E3E4: @ 802E3E4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x2A
+ bl sub_814A958
+ ldr r1, _0802E40C @ =gUnknown_081FAE91
+ lsls r4, 1
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ adds r1, 0x1
+ adds r4, r1
+ ldrb r1, [r4]
+ bl sub_814A880
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E40C: .4byte gUnknown_081FAE91
+ thumb_func_end sub_802E3E4
+
+ thumb_func_start nullsub_8
+nullsub_8: @ 802E410
+ bx lr
+ thumb_func_end nullsub_8
+
+ thumb_func_start sub_802E414
+sub_802E414: @ 802E414
+ push {lr}
+ ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E420: .4byte ReshowBattleScreenAfterMenu
+ thumb_func_end sub_802E414
+
+ thumb_func_start sub_802E424
+sub_802E424: @ 802E424
+ push {lr}
+ ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E430: .4byte ReshowBattleScreenAfterMenu
+ thumb_func_end sub_802E424
+
+ thumb_func_start sub_802E434
+sub_802E434: @ 802E434
+ push {lr}
+ ldr r0, _0802E458 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802E45C @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E452
+ bl PlayerBufferExecCompleted
+_0802E452:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E458: .4byte gActiveBank
+_0802E45C: .4byte 0x02017810
+ thumb_func_end sub_802E434
+
+ thumb_func_start sub_802E460
+sub_802E460: @ 802E460
+ push {lr}
+ ldr r0, _0802E484 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0802E488 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _0802E47E
+ bl PlayerBufferExecCompleted
+_0802E47E:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E484: .4byte gActiveBank
+_0802E488: .4byte 0x02017810
+ thumb_func_end sub_802E460
+
+ thumb_func_start b_link_standby_message
+b_link_standby_message: @ 802E48C
+ push {lr}
+ sub sp, 0x4
+ ldr r0, _0802E4BC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0802E4B6
+ ldr r0, _0802E4C0 @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0802E4C4 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r0, _0802E4C8 @ =gUnknown_03004210
+ ldr r1, _0802E4CC @ =gUnknown_08400CE0
+ movs r2, 0xF
+ str r2, [sp]
+ movs r2, 0x90
+ movs r3, 0x2
+ bl sub_8002EB0
+_0802E4B6:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802E4BC: .4byte gBattleTypeFlags
+_0802E4C0: .4byte gUnknown_030042A4
+_0802E4C4: .4byte gUnknown_030042A0
+_0802E4C8: .4byte gUnknown_03004210
+_0802E4CC: .4byte gUnknown_08400CE0
+ thumb_func_end b_link_standby_message
+
+ .align 2, 0 @ Don't pad with nop.