summaryrefslogtreecommitdiff
path: root/asm/battle_9.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_9.s')
-rw-r--r--asm/battle_9.s4080
1 files changed, 4080 insertions, 0 deletions
diff --git a/asm/battle_9.s b/asm/battle_9.s
new file mode 100644
index 000000000..887fbd702
--- /dev/null
+++ b/asm/battle_9.s
@@ -0,0 +1,4080 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start ai_switch_perish_song
+ai_switch_perish_song: @ 8035FEC
+ push {lr}
+ ldr r1, _08036038 @ =gStatuses3
+ ldr r0, _0803603C @ =gActiveBank
+ ldrb r2, [r0]
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0803604C
+ ldr r0, _08036040 @ =gDisableStructs
+ lsls r1, r2, 3
+ subs r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0xF]
+ lsls r0, 28
+ cmp r0, 0
+ bne _0803604C
+ adds r0, r2, 0
+ bl GetBankIdentity
+ ldr r1, _08036044 @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, _08036048 @ =0x000160c8
+ adds r0, r2
+ adds r0, r1
+ movs r1, 0x6
+ strb r1, [r0]
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ movs r0, 0x1
+ b _0803604E
+ .align 2, 0
+_08036038: .4byte gStatuses3
+_0803603C: .4byte gActiveBank
+_08036040: .4byte gDisableStructs
+_08036044: .4byte 0x02000000
+_08036048: .4byte 0x000160c8
+_0803604C:
+ movs r0, 0
+_0803604E:
+ pop {r1}
+ bx r1
+ thumb_func_end ai_switch_perish_song
+
+ thumb_func_start sub_8036054
+sub_8036054: @ 8036054
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r0, _0803606C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080360A0
+ b _080361C8
+ .align 2, 0
+_0803606C: .4byte gBattleTypeFlags
+_08036070:
+ ldr r0, _08036094 @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, _08036098 @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, _0803609C @ =0x000160c8
+ adds r0, r2
+ adds r0, r1
+ strb r6, [r0]
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ movs r0, 0x1
+ b _080361CA
+ .align 2, 0
+_08036094: .4byte gActiveBank
+_08036098: .4byte 0x02000000
+_0803609C: .4byte 0x000160c8
+_080360A0:
+ ldr r4, _080361D8 @ =gBattleMons
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x58
+ muls r0, r1
+ adds r0, r4
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x19
+ beq _080360BC
+ b _080361C8
+_080360BC:
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r6, 0
+ adds r7, r4, 0
+ movs r5, 0x58
+ adds r0, r2, 0
+ muls r0, r5
+ adds r4, r0, r7
+ movs r3, 0x20
+ adds r3, r4
+ mov r8, r3
+_080360D8:
+ lsls r1, r6, 1
+ ldr r0, _080361DC @ =gActiveBank
+ ldrb r0, [r0]
+ muls r0, r5
+ adds r1, r0
+ adds r0, r7, 0
+ adds r0, 0xC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ beq _08036104
+ ldrh r1, [r4]
+ mov r3, r8
+ ldrb r2, [r3]
+ bl ai_rate_move
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ bne _080361C8
+_08036104:
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _080360D8
+ movs r6, 0
+ ldr r0, _080361E0 @ =gEnemyParty
+ mov r9, r0
+_08036110:
+ movs r0, 0x64
+ adds r5, r6, 0
+ muls r5, r0
+ mov r2, r9
+ adds r4, r5, r2
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _080361C2
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _080361C2
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _080361C2
+ ldr r1, _080361E4 @ =gBattlePartyID
+ ldr r0, _080361DC @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ beq _080361C2
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ adds r0, r4, 0
+ movs r1, 0x2E
+ bl GetMonData
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r4, 0
+ mov r8, r5
+ ldr r1, _080361D8 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r2
+ adds r5, r0, r1
+ adds r7, r5, 0
+ adds r7, 0x20
+_0803617C:
+ adds r1, r4, 0
+ adds r1, 0xD
+ mov r0, r8
+ add r0, r9
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ beq _080361BC
+ ldrh r1, [r5]
+ ldrb r2, [r7]
+ bl ai_rate_move
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ beq _080361BC
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _080361BC
+ b _08036070
+_080361BC:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0803617C
+_080361C2:
+ adds r6, 0x1
+ cmp r6, 0x5
+ ble _08036110
+_080361C8:
+ movs r0, 0
+_080361CA:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080361D8: .4byte gBattleMons
+_080361DC: .4byte gActiveBank
+_080361E0: .4byte gEnemyParty
+_080361E4: .4byte gBattlePartyID
+ thumb_func_end sub_8036054
+
+ thumb_func_start sub_80361E8
+sub_80361E8: @ 80361E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r0, 0x1
+ bl ai_has_super_effective_move_on_field
+ lsls r0, 24
+ cmp r0, 0
+ beq _08036214
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _08036214
+ b _08036400
+_08036214:
+ ldr r1, _0803627C @ =gMoveHitWith
+ ldr r5, _08036280 @ =gActiveBank
+ ldrb r3, [r5]
+ lsls r0, r3, 1
+ adds r4, r0, r1
+ ldrh r1, [r4]
+ cmp r1, 0
+ bne _08036226
+ b _08036400
+_08036226:
+ ldr r0, _08036284 @ =0x0000ffff
+ cmp r1, r0
+ bne _0803622E
+ b _08036400
+_0803622E:
+ ldr r2, _08036288 @ =gBattleMoves
+ ldrh r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0
+ bne _08036242
+ b _08036400
+_08036242:
+ ldr r0, _0803628C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080362AE
+ mov r8, r3
+ mov r0, r8
+ bl GetBankIdentity
+ movs r4, 0x2
+ eors r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r1, _08036290 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _08036294 @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08036298
+ ldrb r7, [r5]
+ b _080362B2
+ .align 2, 0
+_0803627C: .4byte gMoveHitWith
+_08036280: .4byte gActiveBank
+_08036284: .4byte 0x0000ffff
+_08036288: .4byte gBattleMoves
+_0803628C: .4byte gBattleTypeFlags
+_08036290: .4byte gAbsentBankFlags
+_08036294: .4byte gBitTable
+_08036298:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r7, r0, 24
+ b _080362B2
+_080362AE:
+ adds r7, r3, 0
+ mov r8, r7
+_080362B2:
+ ldr r3, _080362D4 @ =gBattleMoves
+ ldr r1, _080362D8 @ =gMoveHitWith
+ ldr r2, _080362DC @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x2]
+ adds r1, r2, 0
+ cmp r0, 0xA
+ bne _080362E0
+ movs r0, 0x12
+ b _080362F2
+ .align 2, 0
+_080362D4: .4byte gBattleMoves
+_080362D8: .4byte gMoveHitWith
+_080362DC: .4byte gActiveBank
+_080362E0:
+ cmp r0, 0xB
+ bne _080362EA
+ movs r2, 0xB
+ mov r10, r2
+ b _080362F4
+_080362EA:
+ cmp r0, 0xD
+ beq _080362F0
+ b _08036400
+_080362F0:
+ movs r0, 0xA
+_080362F2:
+ mov r10, r0
+_080362F4:
+ ldr r2, _08036308 @ =gBattleMons
+ ldrb r1, [r1]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r10
+ bne _0803633C
+ b _08036400
+ .align 2, 0
+_08036308: .4byte gBattleMons
+_0803630C:
+ ldr r0, _08036330 @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, _08036334 @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, _08036338 @ =0x000160c8
+ adds r0, r2
+ adds r0, r1
+ strb r6, [r0]
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ movs r0, 0x1
+ b _08036402
+ .align 2, 0
+_08036330: .4byte gActiveBank
+_08036334: .4byte 0x02000000
+_08036338: .4byte 0x000160c8
+_0803633C:
+ movs r6, 0
+ ldr r0, _080363CC @ =gBaseStats
+ mov r9, r0
+_08036342:
+ movs r0, 0x64
+ adds r1, r6, 0
+ muls r1, r0
+ ldr r0, _080363D0 @ =gEnemyParty
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _080363FA
+ adds r0, r5, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _080363FA
+ adds r0, r5, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _080363FA
+ ldr r1, _080363D4 @ =gBattlePartyID
+ mov r2, r8
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ beq _080363FA
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ beq _080363FA
+ ldr r1, _080363D8 @ =0x02000000
+ ldr r0, _080363DC @ =0x00016068
+ add r0, r8
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r6, r0
+ beq _080363FA
+ ldr r2, _080363DC @ =0x00016068
+ adds r0, r7, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r6, r0
+ beq _080363FA
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r5, 0
+ movs r1, 0x2E
+ bl GetMonData
+ cmp r0, 0
+ beq _080363E0
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ add r0, r9
+ ldrb r0, [r0, 0x17]
+ b _080363EA
+ .align 2, 0
+_080363CC: .4byte gBaseStats
+_080363D0: .4byte gEnemyParty
+_080363D4: .4byte gBattlePartyID
+_080363D8: .4byte 0x02000000
+_080363DC: .4byte 0x00016068
+_080363E0:
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ add r0, r9
+ ldrb r0, [r0, 0x16]
+_080363EA:
+ cmp r10, r0
+ bne _080363FA
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _0803630C
+_080363FA:
+ adds r6, 0x1
+ cmp r6, 0x5
+ ble _08036342
+_08036400:
+ movs r0, 0
+_08036402:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80361E8
+
+ thumb_func_start ai_switchout_natural_cure
+ai_switchout_natural_cure: @ 8036410
+ push {r4,r5,lr}
+ ldr r3, _08036468 @ =gBattleMons
+ ldr r5, _0803646C @ =gActiveBank
+ ldrb r4, [r5]
+ movs r0, 0x58
+ adds r2, r4, 0
+ muls r2, r0
+ adds r0, r3, 0
+ adds r0, 0x4C
+ adds r0, r2, r0
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _080364D8
+ adds r1, r2, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1E
+ bne _080364D8
+ ldrh r0, [r1, 0x2C]
+ ldrh r1, [r1, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bcc _080364D8
+ ldr r1, _08036470 @ =gMoveHitWith
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ cmp r1, 0
+ beq _08036456
+ ldr r0, _08036474 @ =0x0000ffff
+ cmp r1, r0
+ bne _08036478
+_08036456:
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08036478
+ ldrb r0, [r5]
+ b _080364E0
+ .align 2, 0
+_08036468: .4byte gBattleMons
+_0803646C: .4byte gActiveBank
+_08036470: .4byte gMoveHitWith
+_08036474: .4byte 0x0000ffff
+_08036478:
+ ldr r2, _080364A4 @ =gBattleMoves
+ ldr r1, _080364A8 @ =gMoveHitWith
+ ldr r4, _080364AC @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0
+ bne _080364B0
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080364B0
+ ldrb r0, [r4]
+ b _080364E0
+ .align 2, 0
+_080364A4: .4byte gBattleMoves
+_080364A8: .4byte gMoveHitWith
+_080364AC: .4byte gActiveBank
+_080364B0:
+ movs r0, 0x8
+ movs r1, 0x1
+ bl sub_80366A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _080364FE
+ movs r0, 0x4
+ movs r1, 0x1
+ bl sub_80366A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _080364FE
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _080364DC
+_080364D8:
+ movs r0, 0
+ b _08036500
+_080364DC:
+ ldr r0, _08036508 @ =gActiveBank
+ ldrb r0, [r0]
+_080364E0:
+ bl GetBankIdentity
+ ldr r1, _0803650C @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, _08036510 @ =0x000160c8
+ adds r0, r2
+ adds r0, r1
+ movs r1, 0x6
+ strb r1, [r0]
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+_080364FE:
+ movs r0, 0x1
+_08036500:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08036508: .4byte gActiveBank
+_0803650C: .4byte 0x02000000
+_08036510: .4byte 0x000160c8
+ thumb_func_end ai_switchout_natural_cure
+
+ thumb_func_start ai_has_super_effective_move_on_field
+ai_has_super_effective_move_on_field: @ 8036514
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, _080365AC @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _080365B0 @ =gBitTable
+ lsls r0, r3, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803659C
+ movs r4, 0
+ ldr r6, _080365B4 @ =gBattleMons
+ movs r7, 0x58
+ adds r0, r3, 0
+ muls r0, r7
+ adds r5, r0, r6
+ movs r0, 0x20
+ adds r0, r5
+ mov r9, r0
+_08036550:
+ lsls r1, r4, 1
+ ldr r0, _080365B8 @ =gActiveBank
+ ldrb r0, [r0]
+ muls r0, r7
+ adds r1, r0
+ adds r0, r6, 0
+ adds r0, 0xC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ beq _08036596
+ ldrh r1, [r5]
+ mov r3, r9
+ ldrb r2, [r3]
+ bl ai_rate_move
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ beq _08036596
+ mov r0, r8
+ cmp r0, 0
+ bne _080365C0
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080365C0
+_08036596:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _08036550
+_0803659C:
+ ldr r0, _080365BC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080365C4
+ b _0803663E
+ .align 2, 0
+_080365AC: .4byte gAbsentBankFlags
+_080365B0: .4byte gBitTable
+_080365B4: .4byte gBattleMons
+_080365B8: .4byte gActiveBank
+_080365BC: .4byte gBattleTypeFlags
+_080365C0:
+ movs r0, 0x1
+ b _08036640
+_080365C4:
+ movs r0, 0x2
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, _0803664C @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _08036650 @ =gBitTable
+ lsls r0, r3, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803663E
+ movs r4, 0
+ ldr r6, _08036654 @ =gBattleMons
+ movs r7, 0x58
+ adds r0, r3, 0
+ muls r0, r7
+ adds r5, r0, r6
+ movs r3, 0x20
+ adds r3, r5
+ mov r9, r3
+_080365F2:
+ lsls r1, r4, 1
+ ldr r0, _08036658 @ =gActiveBank
+ ldrb r0, [r0]
+ muls r0, r7
+ adds r1, r0
+ adds r0, r6, 0
+ adds r0, 0xC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ beq _08036638
+ ldrh r1, [r5]
+ mov r3, r9
+ ldrb r2, [r3]
+ bl ai_rate_move
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ beq _08036638
+ mov r0, r8
+ cmp r0, 0
+ bne _080365C0
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080365C0
+_08036638:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _080365F2
+_0803663E:
+ movs r0, 0
+_08036640:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803664C: .4byte gAbsentBankFlags
+_08036650: .4byte gBitTable
+_08036654: .4byte gBattleMons
+_08036658: .4byte gActiveBank
+ thumb_func_end ai_has_super_effective_move_on_field
+
+ thumb_func_start ai_is_too_invested_in_stat_buffs
+ai_is_too_invested_in_stat_buffs: @ 803665C
+ push {r4,lr}
+ movs r4, 0
+ ldr r1, _0803669C @ =gBattleMons
+ ldr r0, _080366A0 @ =gActiveBank
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x18
+ adds r2, r0, r1
+ movs r3, 0x7
+_08036670:
+ ldrb r1, [r2]
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ cmp r0, 0x6
+ ble _08036686
+ subs r1, 0x6
+ lsls r0, r4, 24
+ asrs r0, 24
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_08036686:
+ adds r2, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _08036670
+ movs r0, 0
+ cmp r4, 0x3
+ bls _08036696
+ movs r0, 0x1
+_08036696:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803669C: .4byte gBattleMons
+_080366A0: .4byte gActiveBank
+ thumb_func_end ai_is_too_invested_in_stat_buffs
+
+ thumb_func_start sub_80366A4
+sub_80366A4: @ 80366A4
+ 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
+ str r0, [sp]
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x4]
+ ldr r1, _08036730 @ =gMoveHitWith
+ ldr r5, _08036734 @ =gActiveBank
+ ldrb r3, [r5]
+ lsls r0, r3, 1
+ adds r4, r0, r1
+ ldrh r1, [r4]
+ cmp r1, 0
+ bne _080366CE
+ b _080368D8
+_080366CE:
+ ldr r0, _08036738 @ =0x0000ffff
+ cmp r1, r0
+ bne _080366D6
+ b _080368D8
+_080366D6:
+ ldr r0, _0803673C @ =gUnknown_02024C5C
+ adds r0, r3, r0
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _080366E2
+ b _080368D8
+_080366E2:
+ ldr r2, _08036740 @ =gBattleMoves
+ ldrh r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0
+ bne _080366F6
+ b _080368D8
+_080366F6:
+ ldr r0, _08036744 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08036798
+ mov r9, r3
+ mov r0, r9
+ bl GetBankIdentity
+ movs r4, 0x2
+ eors r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r1, _08036748 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _0803674C @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08036750
+ ldrb r5, [r5]
+ mov r10, r5
+ b _0803679C
+ .align 2, 0
+_08036730: .4byte gMoveHitWith
+_08036734: .4byte gActiveBank
+_08036738: .4byte 0x0000ffff
+_0803673C: .4byte gUnknown_02024C5C
+_08036740: .4byte gBattleMoves
+_08036744: .4byte gBattleTypeFlags
+_08036748: .4byte gAbsentBankFlags
+_0803674C: .4byte gBitTable
+_08036750:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ b _0803679C
+_08036768:
+ ldr r0, _0803678C @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, _08036790 @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, _08036794 @ =0x000160c8
+ adds r0, r2
+ adds r0, r1
+ strb r6, [r0]
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ movs r0, 0x1
+ b _080368DA
+ .align 2, 0
+_0803678C: .4byte gActiveBank
+_08036790: .4byte 0x02000000
+_08036794: .4byte 0x000160c8
+_08036798:
+ mov r9, r3
+ mov r10, r9
+_0803679C:
+ movs r6, 0
+_0803679E:
+ movs r0, 0x64
+ adds r1, r6, 0
+ muls r1, r0
+ ldr r0, _08036830 @ =gEnemyParty
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ bne _080367B6
+ b _080368D0
+_080367B6:
+ adds r0, r5, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ bne _080367C4
+ b _080368D0
+_080367C4:
+ adds r0, r5, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _080368D0
+ ldr r1, _08036834 @ =gBattlePartyID
+ mov r2, r9
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ beq _080368D0
+ mov r2, r10
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r6, r0
+ beq _080368D0
+ ldr r1, _08036838 @ =0x02000000
+ ldr r0, _0803683C @ =0x00016068
+ add r0, r9
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r6, r0
+ beq _080368D0
+ ldr r0, _0803683C @ =0x00016068
+ add r0, r10
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r6, r0
+ beq _080368D0
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r5, 0
+ movs r1, 0x2E
+ bl GetMonData
+ cmp r0, 0
+ beq _08036844
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ ldr r1, _08036840 @ =gBaseStats
+ adds r0, r1
+ ldrb r2, [r0, 0x17]
+ b _08036850
+ .align 2, 0
+_08036830: .4byte gEnemyParty
+_08036834: .4byte gBattlePartyID
+_08036838: .4byte 0x02000000
+_0803683C: .4byte 0x00016068
+_08036840: .4byte gBaseStats
+_08036844:
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ ldr r2, _080368EC @ =gBaseStats
+ adds r0, r2
+ ldrb r2, [r0, 0x16]
+_08036850:
+ ldr r1, _080368F0 @ =gMoveHitWith
+ ldr r5, _080368F4 @ =gActiveBank
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ adds r1, r4, 0
+ bl ai_rate_move
+ ldr r1, [sp]
+ ands r1, r0
+ cmp r1, 0
+ beq _080368D0
+ ldr r1, _080368F8 @ =gUnknown_02024C5C
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r9, r0
+ movs r4, 0
+ movs r0, 0x64
+ adds r1, r6, 0
+ muls r1, r0
+ mov r8, r1
+ ldr r1, _080368FC @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r9
+ muls r2, r0
+ adds r0, r2, 0
+ adds r5, r0, r1
+ adds r7, r5, 0
+ adds r7, 0x20
+_0803688E:
+ ldr r0, _08036900 @ =gEnemyParty
+ adds r1, r4, 0
+ adds r1, 0xD
+ add r0, r8
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ beq _080368CA
+ ldrh r1, [r5]
+ ldrb r2, [r7]
+ bl ai_rate_move
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ beq _080368CA
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, [sp, 0x4]
+ bl __modsi3
+ cmp r0, 0
+ bne _080368CA
+ b _08036768
+_080368CA:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0803688E
+_080368D0:
+ adds r6, 0x1
+ cmp r6, 0x5
+ bgt _080368D8
+ b _0803679E
+_080368D8:
+ movs r0, 0
+_080368DA:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080368EC: .4byte gBaseStats
+_080368F0: .4byte gMoveHitWith
+_080368F4: .4byte gActiveBank
+_080368F8: .4byte gUnknown_02024C5C
+_080368FC: .4byte gBattleMons
+_08036900: .4byte gEnemyParty
+ thumb_func_end sub_80366A4
+
+ thumb_func_start sub_8036904
+sub_8036904: @ 8036904
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ ldr r6, _080369E0 @ =gBattleMons
+ ldr r4, _080369E4 @ =gActiveBank
+ ldrb r2, [r4]
+ movs r5, 0x58
+ adds r0, r2, 0
+ muls r0, r5
+ adds r1, r6, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080369E8 @ =0x0400e000
+ ands r0, r1
+ cmp r0, 0
+ beq _0803692A
+ b _08036AFC
+_0803692A:
+ ldr r0, _080369EC @ =gStatuses3
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r1, [r1]
+ movs r0, 0x80
+ lsls r0, 3
+ ands r1, r0
+ cmp r1, 0
+ beq _0803693E
+ b _08036AFC
+_0803693E:
+ str r1, [sp]
+ movs r0, 0xC
+ adds r1, r2, 0
+ movs r2, 0x17
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08036956
+ b _08036AFC
+_08036956:
+ ldrb r1, [r4]
+ str r0, [sp]
+ movs r0, 0xC
+ movs r2, 0x47
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0803696E
+ b _08036AFC
+_0803696E:
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0x2A
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _080369A0
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r1, r0, r6
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _08036994
+ b _08036AFC
+_08036994:
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _080369A0
+ b _08036AFC
+_080369A0:
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _080369F0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08036A12
+ ldr r4, _080369E4 @ =gActiveBank
+ ldrb r7, [r4]
+ adds r0, r7, 0
+ bl GetBankIdentity
+ movs r5, 0x2
+ eors r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r1, _080369F4 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _080369F8 @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _080369FC
+ ldrb r6, [r4]
+ b _08036A18
+ .align 2, 0
+_080369E0: .4byte gBattleMons
+_080369E4: .4byte gActiveBank
+_080369E8: .4byte 0x0400e000
+_080369EC: .4byte gStatuses3
+_080369F0: .4byte gBattleTypeFlags
+_080369F4: .4byte gAbsentBankFlags
+_080369F8: .4byte gBitTable
+_080369FC:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ eors r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r6, r0, 24
+ b _08036A18
+_08036A12:
+ ldr r0, _08036AE8 @ =gActiveBank
+ ldrb r6, [r0]
+ adds r7, r6, 0
+_08036A18:
+ movs r5, 0
+_08036A1A:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _08036AEC @ =gEnemyParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08036A7E
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _08036A7E
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _08036A7E
+ ldr r1, _08036AF0 @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r5, r0
+ beq _08036A7E
+ lsls r0, r6, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r5, r0
+ beq _08036A7E
+ ldr r1, _08036AF4 @ =0x02000000
+ ldr r2, _08036AF8 @ =0x00016068
+ adds r0, r7, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _08036A7E
+ adds r0, r6, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _08036A7E
+ movs r0, 0x1
+ add r8, r0
+_08036A7E:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _08036A1A
+ mov r2, r8
+ cmp r2, 0
+ beq _08036AFC
+ bl ai_switch_perish_song
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AE4
+ bl sub_8036054
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AE4
+ bl sub_80361E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AE4
+ bl ai_switchout_natural_cure
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AE4
+ movs r0, 0
+ bl ai_has_super_effective_move_on_field
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AFC
+ bl ai_is_too_invested_in_stat_buffs
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AFC
+ movs r0, 0x8
+ movs r1, 0x2
+ bl sub_80366A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036AE4
+ movs r0, 0x4
+ movs r1, 0x3
+ bl sub_80366A4
+ lsls r0, 24
+ cmp r0, 0
+ beq _08036AFC
+_08036AE4:
+ movs r0, 0x1
+ b _08036AFE
+ .align 2, 0
+_08036AE8: .4byte gActiveBank
+_08036AEC: .4byte gEnemyParty
+_08036AF0: .4byte gBattlePartyID
+_08036AF4: .4byte 0x02000000
+_08036AF8: .4byte 0x00016068
+_08036AFC:
+ movs r0, 0
+_08036AFE:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8036904
+
+ thumb_func_start sub_8036B0C
+sub_8036B0C: @ 8036B0C
+ push {r4-r6,lr}
+ ldr r5, _08036B68 @ =gBattleTypeFlags
+ ldrh r1, [r5]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _08036B1C
+ b _08036C2E
+_08036B1C:
+ bl sub_8036904
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036B28
+ b _08036C24
+_08036B28:
+ ldr r4, _08036B6C @ =0x02000000
+ ldr r0, _08036B70 @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r1, _08036B74 @ =0x000160c8
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bne _08036BEA
+ bl sub_8036CD4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x6
+ bne _08036BD4
+ ldrh r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08036B78
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r6, r5, 0
+ b _08036B8C
+ .align 2, 0
+_08036B68: .4byte gBattleTypeFlags
+_08036B6C: .4byte 0x02000000
+_08036B70: .4byte gActiveBank
+_08036B74: .4byte 0x000160c8
+_08036B78:
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0x3
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08036B8C:
+ movs r4, 0
+_08036B8E:
+ movs r0, 0x64
+ muls r0, r4
+ ldr r1, _08036C0C @ =gEnemyParty
+ adds r0, r1
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08036BCE
+ ldr r1, _08036C10 @ =gBattlePartyID
+ lsls r0, r6, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq _08036BCE
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq _08036BCE
+ ldr r1, _08036C14 @ =0x02000000
+ ldr r2, _08036C18 @ =0x00016068
+ adds r0, r6, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ beq _08036BCE
+ adds r0, r5, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ bne _08036BD4
+_08036BCE:
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _08036B8E
+_08036BD4:
+ ldr r0, _08036C1C @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, _08036C14 @ =0x02000000
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r3, _08036C20 @ =0x000160c8
+ adds r0, r3
+ adds r0, r1
+ strb r4, [r0]
+_08036BEA:
+ ldr r4, _08036C1C @ =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ ldr r2, _08036C14 @ =0x02000000
+ ldrb r1, [r4]
+ ldr r3, _08036C18 @ =0x00016068
+ adds r1, r3
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 25
+ adds r3, 0x60
+ adds r0, r3
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ b _08036C40
+ .align 2, 0
+_08036C0C: .4byte gEnemyParty
+_08036C10: .4byte gBattlePartyID
+_08036C14: .4byte 0x02000000
+_08036C18: .4byte 0x00016068
+_08036C1C: .4byte gActiveBank
+_08036C20: .4byte 0x000160c8
+_08036C24:
+ bl sub_803708C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08036C40
+_08036C2E:
+ ldr r0, _08036C48 @ =gActiveBank
+ ldrb r0, [r0]
+ movs r2, 0x1
+ eors r2, r0
+ lsls r2, 8
+ movs r0, 0x1
+ movs r1, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+_08036C40:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08036C48: .4byte gActiveBank
+ thumb_func_end sub_8036B0C
+
+ thumb_func_start sub_8036C4C
+sub_8036C4C: @ 8036C4C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r6, r3, 0
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ movs r7, 0
+ ldr r0, _08036CD0 @ =gTypeEffectiveness
+ mov r10, r0
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ beq _08036CBE
+ mov r5, r10
+_08036C7A:
+ ldrb r0, [r5]
+ cmp r0, 0xFE
+ beq _08036CB0
+ ldr r1, [sp]
+ cmp r0, r1
+ bne _08036CB0
+ ldrb r4, [r5, 0x1]
+ cmp r4, r9
+ bne _08036C9A
+ ldrb r1, [r6]
+ ldrb r0, [r5, 0x2]
+ muls r0, r1
+ movs r1, 0xA
+ bl __divsi3
+ strb r0, [r6]
+_08036C9A:
+ cmp r4, r8
+ bne _08036CB0
+ cmp r9, r8
+ beq _08036CB0
+ ldrb r1, [r6]
+ ldrb r0, [r5, 0x2]
+ muls r0, r1
+ movs r1, 0xA
+ bl __divsi3
+ strb r0, [r6]
+_08036CB0:
+ adds r5, 0x3
+ adds r7, 0x3
+ mov r1, r10
+ adds r0, r7, r1
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _08036C7A
+_08036CBE:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08036CD0: .4byte gTypeEffectiveness
+ thumb_func_end sub_8036C4C
+
+ thumb_func_start sub_8036CD4
+sub_8036CD4: @ 8036CD4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ ldr r0, _08036D1C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08036D78
+ ldr r4, _08036D20 @ =gActiveBank
+ ldrb r0, [r4]
+ str r0, [sp, 0xC]
+ bl GetBankIdentity
+ movs r5, 0x2
+ eors r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r1, _08036D24 @ =gAbsentBankFlags
+ ldrb r1, [r1]
+ ldr r2, _08036D28 @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08036D2C
+ ldrb r4, [r4]
+ str r4, [sp, 0x10]
+ b _08036D42
+ .align 2, 0
+_08036D1C: .4byte gBattleTypeFlags
+_08036D20: .4byte gActiveBank
+_08036D24: .4byte gAbsentBankFlags
+_08036D28: .4byte gBitTable
+_08036D2C:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ eors r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x10]
+_08036D42:
+ bl Random
+ movs r3, 0x2
+ ands r0, r3
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _08036D70 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _08036D74 @ =gBitTable
+ mov r4, r10
+ lsls r0, r4, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08036D8C
+ eors r4, r3
+ lsls r0, r4, 24
+ lsrs r0, 24
+ mov r10, r0
+ b _08036D8C
+ .align 2, 0
+_08036D70: .4byte gAbsentBankFlags
+_08036D74: .4byte gBitTable
+_08036D78:
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _08036E5C @ =gActiveBank
+ ldrb r0, [r0]
+ str r0, [sp, 0x10]
+ str r0, [sp, 0xC]
+_08036D8C:
+ movs r0, 0
+ mov r9, r0
+ mov r1, sp
+ str r1, [sp, 0x14]
+_08036D94:
+ movs r2, 0
+ str r2, [sp, 0x4]
+ movs r3, 0x6
+ str r3, [sp, 0x8]
+ movs r7, 0
+ ldr r4, _08036E60 @ =gBitTable
+ mov r8, r4
+_08036DA2:
+ movs r0, 0x64
+ adds r1, r7, 0
+ muls r1, r0
+ ldr r0, _08036E64 @ =gEnemyParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0
+ beq _08036E7C
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08036E7C
+ mov r1, r8
+ ldr r0, [r1]
+ mov r2, r9
+ ands r0, r2
+ cmp r0, 0
+ bne _08036E7C
+ ldr r1, _08036E68 @ =gBattlePartyID
+ ldr r3, [sp, 0xC]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r7
+ beq _08036E7C
+ ldr r4, [sp, 0x10]
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r7
+ beq _08036E7C
+ ldr r1, _08036E6C @ =0x02000000
+ ldr r2, _08036E70 @ =0x00016068
+ adds r0, r3, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r7, r0
+ beq _08036E7C
+ adds r0, r4, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r7, r0
+ beq _08036E7C
+ ldr r1, _08036E74 @ =gBaseStats
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r5, [r0, 0x6]
+ ldrb r6, [r0, 0x7]
+ movs r0, 0xA
+ ldr r3, [sp, 0x14]
+ strb r0, [r3]
+ movs r0, 0x58
+ mov r4, r10
+ muls r4, r0
+ ldr r0, _08036E78 @ =gBattleMons
+ adds r4, r0
+ adds r0, r4, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ adds r1, r5, 0
+ adds r2, r6, 0
+ mov r3, sp
+ bl sub_8036C4C
+ adds r4, 0x22
+ ldrb r0, [r4]
+ adds r1, r5, 0
+ adds r2, r6, 0
+ mov r3, sp
+ bl sub_8036C4C
+ ldr r2, [sp, 0x4]
+ ldr r1, [sp, 0x14]
+ ldrb r1, [r1]
+ cmp r2, r1
+ bcs _08036E8A
+ ldr r2, [sp, 0x14]
+ ldrb r2, [r2]
+ str r2, [sp, 0x4]
+ lsls r0, r7, 24
+ lsrs r0, 24
+ str r0, [sp, 0x8]
+ b _08036E8A
+ .align 2, 0
+_08036E5C: .4byte gActiveBank
+_08036E60: .4byte gBitTable
+_08036E64: .4byte gEnemyParty
+_08036E68: .4byte gBattlePartyID
+_08036E6C: .4byte 0x02000000
+_08036E70: .4byte 0x00016068
+_08036E74: .4byte gBaseStats
+_08036E78: .4byte gBattleMons
+_08036E7C:
+ mov r3, r8
+ ldr r0, [r3]
+ mov r4, r9
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r0, 24
+ mov r9, r0
+_08036E8A:
+ movs r0, 0x4
+ add r8, r0
+ adds r7, 0x1
+ cmp r7, 0x5
+ ble _08036DA2
+ ldr r1, [sp, 0x8]
+ cmp r1, 0x6
+ beq _08036EF8
+ movs r7, 0
+ movs r0, 0x64
+ adds r5, r1, 0
+ muls r5, r0
+ ldr r6, _08036EEC @ =gEnemyParty
+_08036EA4:
+ adds r1, r7, 0
+ adds r1, 0xD
+ adds r0, r5, r6
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ beq _08036ECA
+ ldr r0, _08036EF0 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ mov r2, r10
+ bl move_effectiveness_something
+ movs r1, 0x2
+ ands r1, r0
+ cmp r1, 0
+ bne _08036ED0
+_08036ECA:
+ adds r7, 0x1
+ cmp r7, 0x3
+ ble _08036EA4
+_08036ED0:
+ cmp r7, 0x4
+ beq _08036ED6
+ b _08036FEE
+_08036ED6:
+ ldr r2, [sp, 0x8]
+ lsls r0, r2, 2
+ ldr r3, _08036EF4 @ =gBitTable
+ adds r0, r3
+ ldr r0, [r0]
+ mov r4, r9
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r0, 24
+ b _08036EFA
+ .align 2, 0
+_08036EEC: .4byte gEnemyParty
+_08036EF0: .4byte gActiveBank
+_08036EF4: .4byte gBitTable
+_08036EF8:
+ movs r0, 0x3F
+_08036EFA:
+ mov r9, r0
+ mov r1, r9
+ cmp r1, 0x3F
+ beq _08036F04
+ b _08036D94
+_08036F04:
+ ldr r0, _08037000 @ =gDynamicBasePower
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, _08037004 @ =0x02000000
+ ldr r3, _08037008 @ =0x0001601c
+ adds r1, r0, r3
+ strb r2, [r1]
+ ldr r4, _0803700C @ =0x0001601f
+ adds r0, r4
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, _08037010 @ =gBattleMoveFlags
+ strb r2, [r0]
+ ldr r0, _08037014 @ =gCritMultiplier
+ strb r1, [r0]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r1, 0x6
+ str r1, [sp, 0x8]
+ movs r7, 0
+_08036F2C:
+ movs r0, 0x64
+ adds r6, r7, 0
+ muls r6, r0
+ ldr r2, _08037018 @ =gEnemyParty
+ adds r4, r6, r2
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ adds r3, r7, 0x1
+ str r3, [sp, 0x18]
+ cmp r0, 0
+ beq _08036FE8
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08036FE8
+ ldr r1, _0803701C @ =gBattlePartyID
+ ldr r4, [sp, 0xC]
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r7
+ beq _08036FE8
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r7
+ beq _08036FE8
+ ldr r1, _08037004 @ =0x02000000
+ ldr r3, _08037020 @ =0x00016068
+ adds r0, r4, r3
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r7, r0
+ beq _08036FE8
+ adds r0, r2, r3
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r7, r0
+ beq _08036FE8
+ movs r5, 0
+ mov r9, r6
+ ldr r4, _08037024 @ =gBattleMoveDamage
+ mov r8, r4
+ ldr r6, _08037028 @ =gActiveBank
+_08036F90:
+ adds r1, r5, 0
+ adds r1, 0xD
+ ldr r0, _08037018 @ =gEnemyParty
+ add r0, r9
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0
+ mov r1, r8
+ str r0, [r1]
+ cmp r4, 0
+ beq _08036FCC
+ ldr r0, _0803702C @ =gBattleMoves
+ lsls r1, r4, 1
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0x1
+ beq _08036FCC
+ ldrb r0, [r6]
+ mov r1, r10
+ bl sub_801CAF8
+ ldrb r1, [r6]
+ adds r0, r4, 0
+ mov r2, r10
+ bl move_effectiveness_something
+_08036FCC:
+ mov r2, r8
+ ldr r0, [r2]
+ ldr r3, [sp, 0x4]
+ cmp r3, r0
+ bge _08036FE2
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ lsls r0, r7, 24
+ lsrs r0, 24
+ str r0, [sp, 0x8]
+_08036FE2:
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _08036F90
+_08036FE8:
+ ldr r7, [sp, 0x18]
+ cmp r7, 0x5
+ ble _08036F2C
+_08036FEE:
+ ldr r0, [sp, 0x8]
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08037000: .4byte gDynamicBasePower
+_08037004: .4byte 0x02000000
+_08037008: .4byte 0x0001601c
+_0803700C: .4byte 0x0001601f
+_08037010: .4byte gBattleMoveFlags
+_08037014: .4byte gCritMultiplier
+_08037018: .4byte gEnemyParty
+_0803701C: .4byte gBattlePartyID
+_08037020: .4byte 0x00016068
+_08037024: .4byte gBattleMoveDamage
+_08037028: .4byte gActiveBank
+_0803702C: .4byte gBattleMoves
+ thumb_func_end sub_8036CD4
+
+ thumb_func_start ai_identify_item_effect
+ai_identify_item_effect: @ 8037030
+ push {r4,lr}
+ adds r2, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x13
+ bne _08037040
+ movs r0, 0x1
+ b _08037086
+_08037040:
+ ldrb r1, [r2, 0x4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0803704E
+ movs r0, 0x2
+ b _08037086
+_0803704E:
+ ldrb r4, [r2, 0x3]
+ movs r3, 0x3F
+ adds r0, r3, 0
+ ands r0, r4
+ cmp r0, 0
+ beq _0803705E
+ movs r0, 0x3
+ b _08037086
+_0803705E:
+ ldrb r1, [r2]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08037074
+ ldrb r0, [r2, 0x1]
+ cmp r0, 0
+ bne _08037074
+ ldrb r0, [r2, 0x2]
+ cmp r0, 0
+ beq _08037078
+_08037074:
+ movs r0, 0x4
+ b _08037086
+_08037078:
+ movs r0, 0x80
+ ands r0, r4
+ cmp r0, 0
+ bne _08037084
+ movs r0, 0x6
+ b _08037086
+_08037084:
+ movs r0, 0x5
+_08037086:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end ai_identify_item_effect
+
+ thumb_func_start sub_803708C
+sub_803708C: @ 803708C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ movs r0, 0
+ str r0, [sp]
+ mov r8, r0
+ mov r9, r0
+_080370A0:
+ movs r0, 0x64
+ mov r1, r9
+ muls r1, r0
+ ldr r0, _08037170 @ =gEnemyParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _080370DC
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _080370DC
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _080370DC
+ ldr r0, [sp]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+_080370DC:
+ movs r1, 0x1
+ add r9, r1
+ mov r2, r9
+ cmp r2, 0x5
+ ble _080370A0
+ movs r3, 0
+ mov r9, r3
+_080370EA:
+ ldr r4, _08037174 @ =0x02016a00
+ mov r0, r9
+ cmp r0, 0
+ beq _08037106
+ adds r0, r4, 0
+ adds r0, 0x2C
+ ldrb r0, [r0]
+ mov r1, r9
+ subs r0, r1
+ adds r0, 0x1
+ ldr r2, [sp]
+ cmp r2, r0
+ ble _08037106
+ b _080374EC
+_08037106:
+ mov r3, r9
+ lsls r1, r3, 1
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldrh r0, [r0]
+ mov r10, r0
+ str r1, [sp, 0x4]
+ cmp r0, 0
+ bne _0803711C
+ b _080374EC
+_0803711C:
+ ldr r1, _08037178 @ =gItemEffectTable
+ subs r0, 0xD
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ cmp r1, 0
+ bne _0803712C
+ b _080374EC
+_0803712C:
+ adds r5, r1, 0
+ mov r0, r10
+ cmp r0, 0xAF
+ bne _08037136
+ ldr r5, _0803717C @ =gSaveBlock1 + 0x3676
+_08037136:
+ mov r1, r10
+ lsls r0, r1, 24
+ lsrs r0, 24
+ adds r1, r5, 0
+ bl ai_identify_item_effect
+ ldr r2, _08037180 @ =0xfffe9600
+ adds r4, r2
+ ldr r3, _08037184 @ =gActiveBank
+ ldrb r1, [r3]
+ lsrs r1, 1
+ ldr r2, _08037188 @ =0x000160d8
+ adds r1, r2
+ adds r1, r4
+ strb r0, [r1]
+ ldrb r0, [r3]
+ lsrs r0, 1
+ adds r0, r2
+ adds r0, r4
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r0, 0x5
+ bls _08037166
+ b _080374A8
+_08037166:
+ lsls r0, 2
+ ldr r1, _0803718C @ =_08037190
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08037170: .4byte gEnemyParty
+_08037174: .4byte 0x02016a00
+_08037178: .4byte gItemEffectTable
+_0803717C: .4byte gSaveBlock1 + 0x3676
+_08037180: .4byte 0xfffe9600
+_08037184: .4byte gActiveBank
+_08037188: .4byte 0x000160d8
+_0803718C: .4byte _08037190
+ .align 2, 0
+_08037190:
+ .4byte _080371A8
+ .4byte _080371D0
+ .4byte _0803721C
+ .4byte _08037388
+ .4byte _08037468
+ .4byte _080374F8
+_080371A8:
+ ldr r2, _080371C8 @ =gBattleMons
+ ldr r0, _080371CC @ =gActiveBank
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ ldrh r1, [r0, 0x2C]
+ ldrh r0, [r0, 0x28]
+ lsrs r1, 2
+ cmp r0, r1
+ bcc _080371C0
+ b _080374A8
+_080371C0:
+ cmp r0, 0
+ bne _080371C6
+ b _080374A8
+_080371C6:
+ b _08037450
+ .align 2, 0
+_080371C8: .4byte gBattleMons
+_080371CC: .4byte gActiveBank
+_080371D0:
+ mov r0, r10
+ movs r1, 0x4
+ movs r2, 0x4
+ bl GetItemEffectParamOffset
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _080371E4
+ b _080374A8
+_080371E4:
+ ldr r2, _08037214 @ =gBattleMons
+ ldr r0, _08037218 @ =gActiveBank
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r1, r0, r2
+ ldrh r2, [r1, 0x28]
+ cmp r2, 0
+ bne _080371F8
+ b _080374A8
+_080371F8:
+ ldrh r3, [r1, 0x2C]
+ lsrs r0, r3, 2
+ cmp r2, r0
+ bcs _08037202
+ b _08037496
+_08037202:
+ adds r0, r2, 0
+ subs r0, r3, r0
+ adds r1, r5, r4
+ ldrb r1, [r1]
+ cmp r0, r1
+ bgt _08037210
+ b _080374A8
+_08037210:
+ b _08037496
+ .align 2, 0
+_08037214: .4byte gBattleMons
+_08037218: .4byte gActiveBank
+_0803721C:
+ ldr r2, _08037378 @ =0x02000000
+ ldr r3, _0803737C @ =gActiveBank
+ ldrb r0, [r3]
+ lsrs r0, 1
+ ldr r6, _08037380 @ =0x000160da
+ adds r0, r6
+ adds r0, r2
+ movs r1, 0
+ mov r12, r1
+ movs r1, 0
+ strb r1, [r0]
+ ldrb r1, [r5, 0x3]
+ movs r7, 0x20
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08037264
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r4, [r3]
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _08037264
+ lsrs r1, r4, 1
+ adds r1, r6
+ adds r1, r2
+ ldrb r0, [r1]
+ orrs r0, r7
+ strb r0, [r1]
+ movs r0, 0x1
+ mov r8, r0
+_08037264:
+ ldrb r1, [r5, 0x3]
+ movs r6, 0x10
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080372A0
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r4, [r3]
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _0803728E
+ movs r0, 0x80
+ ands r1, r0
+ cmp r1, 0
+ beq _080372A0
+_0803728E:
+ lsrs r1, r4, 1
+ ldr r0, _08037380 @ =0x000160da
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ orrs r0, r6
+ strb r0, [r1]
+ movs r1, 0x1
+ mov r8, r1
+_080372A0:
+ ldrb r1, [r5, 0x3]
+ movs r6, 0x8
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _080372D4
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r4, [r3]
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080372D4
+ lsrs r0, r4, 1
+ ldr r1, _08037380 @ =0x000160da
+ adds r0, r1
+ adds r0, r2
+ ldrb r1, [r0]
+ orrs r1, r6
+ strb r1, [r0]
+ movs r0, 0x1
+ mov r8, r0
+_080372D4:
+ ldrb r1, [r5, 0x3]
+ movs r6, 0x4
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08037308
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r4, [r3]
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08037308
+ lsrs r0, r4, 1
+ ldr r1, _08037380 @ =0x000160da
+ adds r0, r1
+ adds r0, r2
+ ldrb r1, [r0]
+ orrs r1, r6
+ strb r1, [r0]
+ movs r0, 0x1
+ mov r8, r0
+_08037308:
+ ldrb r1, [r5, 0x3]
+ movs r6, 0x2
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0803733C
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r4, [r3]
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803733C
+ lsrs r0, r4, 1
+ ldr r1, _08037380 @ =0x000160da
+ adds r0, r1
+ adds r0, r2
+ ldrb r1, [r0]
+ orrs r1, r6
+ strb r1, [r0]
+ movs r0, 0x1
+ mov r8, r0
+_0803733C:
+ ldrb r1, [r5, 0x3]
+ movs r4, 0x1
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803734A
+ b _080374A8
+_0803734A:
+ ldr r1, _08037384 @ =gBattleMons
+ ldrb r3, [r3]
+ movs r0, 0x58
+ muls r0, r3
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _08037362
+ b _080374A8
+_08037362:
+ lsrs r0, r3, 1
+ ldr r1, _08037380 @ =0x000160da
+ adds r0, r1
+ adds r0, r2
+ ldrb r1, [r0]
+ orrs r1, r4
+ strb r1, [r0]
+ movs r2, 0x1
+ mov r8, r2
+ b _080374AE
+ .align 2, 0
+_08037378: .4byte 0x02000000
+_0803737C: .4byte gActiveBank
+_08037380: .4byte 0x000160da
+_08037384: .4byte gBattleMons
+_08037388:
+ ldr r6, _08037458 @ =0x02000000
+ ldr r4, _0803745C @ =gActiveBank
+ ldrb r0, [r4]
+ lsrs r0, 1
+ ldr r3, _08037460 @ =0x000160da
+ adds r0, r3
+ adds r0, r6
+ movs r1, 0
+ mov r12, r1
+ movs r1, 0
+ strb r1, [r0]
+ ldr r1, _08037464 @ =gDisableStructs
+ ldrb r2, [r4]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x16]
+ cmp r0, 0
+ beq _080374A8
+ ldrb r1, [r5]
+ movs r7, 0xF
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080373CA
+ lsrs r0, r2, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0]
+_080373CA:
+ ldrb r1, [r5, 0x1]
+ movs r2, 0xF0
+ mov r8, r2
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _080373E8
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r0]
+_080373E8:
+ ldrb r1, [r5, 0x1]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08037402
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_08037402:
+ ldrb r1, [r5, 0x2]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0803741C
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0]
+_0803741C:
+ ldrb r1, [r5, 0x2]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _08037436
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x20
+ orrs r1, r2
+ strb r1, [r0]
+_08037436:
+ ldrb r1, [r5]
+ movs r0, 0x30
+ ands r0, r1
+ cmp r0, 0
+ beq _08037450
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+_08037450:
+ movs r3, 0x1
+ mov r8, r3
+ b _080374AE
+ .align 2, 0
+_08037458: .4byte 0x02000000
+_0803745C: .4byte gActiveBank
+_08037460: .4byte 0x000160da
+_08037464: .4byte gDisableStructs
+_08037468:
+ ldr r4, _0803749C @ =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080374A0 @ =gDisableStructs
+ ldrb r1, [r4]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x16]
+ cmp r0, 0
+ beq _080374A8
+ ldr r0, _080374A4 @ =gSideTimer
+ lsls r1, r3, 1
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080374A8
+_08037496:
+ movs r0, 0x1
+ mov r8, r0
+ b _080374AE
+ .align 2, 0
+_0803749C: .4byte gActiveBank
+_080374A0: .4byte gDisableStructs
+_080374A4: .4byte gSideTimer
+_080374A8:
+ mov r1, r8
+ cmp r1, 0
+ beq _080374EC
+_080374AE:
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl dp01_build_cmdbuf_x21_a_bb
+ ldr r1, _080374DC @ =0x02000000
+ ldr r0, _080374E0 @ =gActiveBank
+ ldrb r0, [r0]
+ lsrs r0, 1
+ lsls r0, 1
+ ldr r2, _080374E4 @ =0x000160d4
+ adds r0, r2
+ adds r0, r1
+ movs r2, 0
+ mov r3, r10
+ strb r3, [r0]
+ ldr r0, _080374E8 @ =0x00016a24
+ adds r1, r0
+ ldr r3, [sp, 0x4]
+ adds r1, r3, r1
+ strh r2, [r1]
+ mov r0, r8
+ b _080374FA
+ .align 2, 0
+_080374DC: .4byte 0x02000000
+_080374E0: .4byte gActiveBank
+_080374E4: .4byte 0x000160d4
+_080374E8: .4byte 0x00016a24
+_080374EC:
+ movs r0, 0x1
+ add r9, r0
+ mov r1, r9
+ cmp r1, 0x3
+ bgt _080374F8
+ b _080370EA
+_080374F8:
+ movs r0, 0
+_080374FA:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803708C
+
+ thumb_func_start nullsub_47
+nullsub_47: @ 803750C
+ bx lr
+ thumb_func_end nullsub_47
+
+ thumb_func_start SetBankFuncToLinkOpponentBufferRunCommand
+SetBankFuncToLinkOpponentBufferRunCommand: @ 8037510
+ ldr r1, _08037520 @ =gBattleBankFunc
+ ldr r0, _08037524 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08037528 @ =sub_803752C
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_08037520: .4byte gBattleBankFunc
+_08037524: .4byte gActiveBank
+_08037528: .4byte sub_803752C
+ thumb_func_end SetBankFuncToLinkOpponentBufferRunCommand
+
+ thumb_func_start sub_803752C
+sub_803752C: @ 803752C
+ push {lr}
+ ldr r2, _08037560 @ =gBattleExecBuffer
+ ldr r1, _08037564 @ =gBitTable
+ ldr r0, _08037568 @ =gActiveBank
+ ldrb r3, [r0]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r2]
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08037578
+ ldr r0, _0803756C @ =gBattleBufferA
+ lsls r1, r3, 9
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x38
+ bhi _08037574
+ ldr r0, _08037570 @ =gLinkOpponentBufferCommands
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+ b _08037578
+ .align 2, 0
+_08037560: .4byte gBattleExecBuffer
+_08037564: .4byte gBitTable
+_08037568: .4byte gActiveBank
+_0803756C: .4byte gBattleBufferA
+_08037570: .4byte gLinkOpponentBufferCommands
+_08037574:
+ bl dp01_tbl4_exec_completed
+_08037578:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_803752C
+
+ thumb_func_start sub_803757C
+sub_803757C: @ 803757C
+ push {lr}
+ ldr r2, _080375A4 @ =gSprites
+ ldr r1, _080375A8 @ =gObjectBankIDs
+ ldr r0, _080375AC @ =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, _080375B0 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _080375A0
+ bl dp01_tbl4_exec_completed
+_080375A0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080375A4: .4byte gSprites
+_080375A8: .4byte gObjectBankIDs
+_080375AC: .4byte gActiveBank
+_080375B0: .4byte SpriteCallbackDummy
+ thumb_func_end sub_803757C
+
+ thumb_func_start sub_80375B4
+sub_80375B4: @ 80375B4
+ push {r4-r6,lr}
+ ldr r4, _0803762C @ =gSprites
+ ldr r6, _08037630 @ =gObjectBankIDs
+ ldr r5, _08037634 @ =gActiveBank
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r2, r0, 2
+ adds r0, r4, 0
+ adds r0, 0x1C
+ adds r0, r2, r0
+ ldr r1, [r0]
+ ldr r0, _08037638 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _08037624
+ adds r0, r2, r4
+ ldrh r0, [r0, 0x6]
+ bl sub_8031B74
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r1, 0x38]
+ ldr r2, _0803763C @ =0x000003ff
+ ands r2, r0
+ ldrh r3, [r1, 0x4]
+ ldr r0, _08037640 @ =0xfffffc00
+ ands r0, r3
+ orrs r0, r2
+ strh r0, [r1, 0x4]
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl FreeSpriteOamMatrix
+ ldrb r0, [r5]
+ adds r0, r6
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+ bl dp01_tbl4_exec_completed
+_08037624:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0803762C: .4byte gSprites
+_08037630: .4byte gObjectBankIDs
+_08037634: .4byte gActiveBank
+_08037638: .4byte SpriteCallbackDummy
+_0803763C: .4byte 0x000003ff
+_08037640: .4byte 0xfffffc00
+ thumb_func_end sub_80375B4
+
+ thumb_func_start sub_8037644
+sub_8037644: @ 8037644
+ push {lr}
+ ldr r3, _08037678 @ =gActiveBank
+ ldrb r0, [r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r2, _0803767C @ =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 _08037674
+ ldrb r0, [r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0
+ strb r0, [r1, 0x9]
+ bl dp01_tbl4_exec_completed
+_08037674:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037678: .4byte gActiveBank
+_0803767C: .4byte 0x02017810
+ thumb_func_end sub_8037644
+
+ thumb_func_start sub_8037680
+sub_8037680: @ 8037680
+ push {r4-r7,lr}
+ movs r6, 0
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080376A4
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080376D8
+ ldr r0, _080376C4 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080376D8
+_080376A4:
+ ldr r2, _080376C8 @ =gSprites
+ ldr r1, _080376CC @ =gHealthboxIDs
+ ldr r0, _080376D0 @ =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, _080376D4 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0803770E
+ b _0803770C
+ .align 2, 0
+_080376C4: .4byte gBattleTypeFlags
+_080376C8: .4byte gSprites
+_080376CC: .4byte gHealthboxIDs
+_080376D0: .4byte gActiveBank
+_080376D4: .4byte SpriteCallbackDummy
+_080376D8:
+ ldr r2, _080377D8 @ =gSprites
+ ldr r5, _080377DC @ =gHealthboxIDs
+ ldr r0, _080377E0 @ =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, _080377E4 @ =SpriteCallbackDummy
+ cmp r4, r0
+ bne _0803770E
+ 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 _0803770E
+_0803770C:
+ movs r6, 0x1
+_0803770E:
+ bl IsCryPlayingOrClearCrySongs
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803771A
+ movs r6, 0
+_0803771A:
+ cmp r6, 0
+ bne _08037720
+ b _08037822
+_08037720:
+ ldr r7, _080377E0 @ =gActiveBank
+ ldrb r0, [r7]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bne _080377B4
+ ldrb r2, [r7]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ ldr r5, _080377E8 @ =0x02017810
+ adds r4, r0, r5
+ ldrb r1, [r4, 0x1]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08037822
+ 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 _08037822
+ 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, _080377EC @ =0x000027f9
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+_080377B4:
+ ldr r0, _080377F0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080377F8
+ ldrb r0, [r7]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08037804
+ ldr r0, _080377F4 @ =gMPlay_BGM
+ bl m4aMPlayContinue
+ b _08037804
+ .align 2, 0
+_080377D8: .4byte gSprites
+_080377DC: .4byte gHealthboxIDs
+_080377E0: .4byte gActiveBank
+_080377E4: .4byte SpriteCallbackDummy
+_080377E8: .4byte 0x02017810
+_080377EC: .4byte 0x000027f9
+_080377F0: .4byte gBattleTypeFlags
+_080377F4: .4byte gMPlay_BGM
+_080377F8:
+ ldr r0, _08037828 @ =gMPlay_BGM
+ ldr r1, _0803782C @ =0x0000ffff
+ movs r2, 0x80
+ lsls r2, 1
+ bl m4aMPlayVolumeControl
+_08037804:
+ ldr r2, _08037830 @ =gActiveBank
+ ldrb r1, [r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037834 @ =0x02017810
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0, 0x9]
+ ldr r1, _08037838 @ =gBattleBankFunc
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0803783C @ =sub_8037644
+ str r1, [r0]
+_08037822:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037828: .4byte gMPlay_BGM
+_0803782C: .4byte 0x0000ffff
+_08037830: .4byte gActiveBank
+_08037834: .4byte 0x02017810
+_08037838: .4byte gBattleBankFunc
+_0803783C: .4byte sub_8037644
+ thumb_func_end sub_8037680
+
+ thumb_func_start sub_8037840
+sub_8037840: @ 8037840
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r6, _08037A48 @ =gActiveBank
+ ldrb r2, [r6]
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ ldr r5, _08037A4C @ =0x02017810
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r4, 0x88
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08037878
+ ldr r0, _08037A50 @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _08037A54 @ =gEnemyParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_08037878:
+ ldrb r0, [r6]
+ movs r7, 0x2
+ adds r2, r7, 0
+ eors r2, r0
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080378A6
+ ldr r0, _08037A50 @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _08037A54 @ =gEnemyParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_080378A6:
+ ldrb r2, [r6]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r3, 0x8
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080378BE
+ b _08037A3A
+_080378BE:
+ adds r1, r2, 0
+ eors r1, r7
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _080378DA
+ b _08037A3A
+_080378DA:
+ ldr r0, _08037A58 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803791A
+ adds r0, r2, 0
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0803791A
+ ldrb r0, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldrb r0, [r1, 0x9]
+ adds r0, 0x1
+ strb r0, [r1, 0x9]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803790E
+ b _08037A3A
+_0803790E:
+ ldrb r1, [r6]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ strb r4, [r0, 0x9]
+_0803791A:
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080379B2
+ ldr r0, _08037A58 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _080379B2
+ ldr r1, _08037A5C @ =gUnknown_0300434C
+ ldr r5, _08037A48 @ =gActiveBank
+ ldrb r0, [r5]
+ movs r4, 0x2
+ eors r0, r4
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037A60 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ ldr r0, _08037A64 @ =gHealthboxIDs
+ mov r8, r0
+ ldrb r0, [r5]
+ adds r1, r4, 0
+ eors r1, r0
+ mov r2, r8
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ ldr r2, _08037A50 @ =gBattlePartyID
+ mov r10, r2
+ lsls r1, 1
+ add r1, r10
+ ldrh r1, [r1]
+ movs r2, 0x64
+ mov r9, r2
+ mov r2, r9
+ muls r2, r1
+ adds r1, r2, 0
+ ldr r6, _08037A54 @ =gEnemyParty
+ adds r1, r6
+ movs r2, 0
+ bl sub_8045A5C
+ ldrb r0, [r5]
+ eors r0, r4
+ bl sub_804777C
+ ldrb r0, [r5]
+ eors r0, r4
+ add r0, r8
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ ldrb r0, [r5]
+ eors r4, r0
+ lsls r0, r4, 1
+ add r0, r10
+ ldrh r0, [r0]
+ mov r1, r9
+ muls r1, r0
+ adds r0, r1, 0
+ adds r0, r6
+ movs r1, 0xB
+ bl GetMonData
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8032984
+_080379B2:
+ ldr r1, _08037A5C @ =gUnknown_0300434C
+ ldr r4, _08037A48 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037A60 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ ldr r5, _08037A64 @ =gHealthboxIDs
+ ldrb r1, [r4]
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ ldr r2, _08037A50 @ =gBattlePartyID
+ mov r9, r2
+ lsls r1, 1
+ add r1, r9
+ ldrh r1, [r1]
+ movs r2, 0x64
+ mov r8, r2
+ mov r2, r8
+ muls r2, r1
+ adds r1, r2, 0
+ ldr r6, _08037A54 @ =gEnemyParty
+ adds r1, r6
+ movs r2, 0
+ bl sub_8045A5C
+ ldrb r0, [r4]
+ bl sub_804777C
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ ldrb r5, [r4]
+ lsls r0, r5, 1
+ add r0, r9
+ ldrh r0, [r0]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r0, r6
+ movs r1, 0xB
+ bl GetMonData
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ bl sub_8032984
+ ldr r2, _08037A68 @ =0x02017840
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0x9]
+ ldr r1, _08037A6C @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08037A70 @ =sub_8037680
+ str r1, [r0]
+_08037A3A:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037A48: .4byte gActiveBank
+_08037A4C: .4byte 0x02017810
+_08037A50: .4byte gBattlePartyID
+_08037A54: .4byte gEnemyParty
+_08037A58: .4byte gBattleTypeFlags
+_08037A5C: .4byte gUnknown_0300434C
+_08037A60: .4byte gSprites
+_08037A64: .4byte gHealthboxIDs
+_08037A68: .4byte 0x02017840
+_08037A6C: .4byte gBattleBankFunc
+_08037A70: .4byte sub_8037680
+ thumb_func_end sub_8037840
+
+ thumb_func_start sub_8037A74
+sub_8037A74: @ 8037A74
+ push {r4-r7,lr}
+ ldr r2, _08037ACC @ =gSprites
+ ldr r0, _08037AD0 @ =gObjectBankIDs
+ ldr r7, _08037AD4 @ =gActiveBank
+ ldrb r3, [r7]
+ adds r0, r3, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 27
+ lsrs r2, r0, 31
+ cmp r2, 0x1
+ bne _08037B18
+ movs r4, 0x24
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bne _08037B18
+ lsls r4, r3, 1
+ adds r0, r4, r3
+ lsls r0, 2
+ ldr r6, _08037AD8 @ =0x02017810
+ adds r1, r0, r6
+ ldrb r5, [r1]
+ movs r0, 0x80
+ ands r0, r5
+ cmp r0, 0
+ bne _08037AE4
+ ldr r0, _08037ADC @ =gBattlePartyID
+ adds r0, r4, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _08037AE0 @ =gEnemyParty
+ adds r1, r0
+ adds r0, r3, 0
+ bl sub_8141828
+ b _08037B18
+ .align 2, 0
+_08037ACC: .4byte gSprites
+_08037AD0: .4byte gObjectBankIDs
+_08037AD4: .4byte gActiveBank
+_08037AD8: .4byte 0x02017810
+_08037ADC: .4byte gBattlePartyID
+_08037AE0: .4byte gEnemyParty
+_08037AE4:
+ ldrb r0, [r1, 0x1]
+ ands r2, r0
+ cmp r2, 0
+ beq _08037B18
+ movs r0, 0x7F
+ ands r0, r5
+ strb r0, [r1]
+ ldrb r0, [r7]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r4, _08037B20 @ =0x000027f9
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+ bl dp01_tbl4_exec_completed
+_08037B18:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037B20: .4byte 0x000027f9
+ thumb_func_end sub_8037A74
+
+ thumb_func_start sub_8037B24
+sub_8037B24: @ 8037B24
+ push {r4-r6,lr}
+ ldr r6, _08037B64 @ =gActiveBank
+ ldrb r0, [r6]
+ ldr r5, _08037B68 @ =gHealthboxIDs
+ adds r1, r0, r5
+ ldrb r1, [r1]
+ movs r2, 0
+ movs r3, 0
+ bl sub_8045C78
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r6]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ lsls r4, 16
+ asrs r1, r4, 16
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08037B6C
+ ldrb r0, [r6]
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r2, 0
+ bl sub_80440EC
+ b _08037B70
+ .align 2, 0
+_08037B64: .4byte gActiveBank
+_08037B68: .4byte gHealthboxIDs
+_08037B6C:
+ bl dp01_tbl4_exec_completed
+_08037B70:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8037B24
+
+ thumb_func_start sub_8037B78
+sub_8037B78: @ 8037B78
+ push {lr}
+ ldr r2, _08037BAC @ =gSprites
+ ldr r0, _08037BB0 @ =gObjectBankIDs
+ ldr r1, _08037BB4 @ =gActiveBank
+ ldrb r3, [r1]
+ adds r0, r3, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ bne _08037BA6
+ ldr r0, _08037BB8 @ =gHealthboxIDs
+ adds r0, r3, r0
+ ldrb r0, [r0]
+ bl sub_8043DB0
+ bl dp01_tbl4_exec_completed
+_08037BA6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037BAC: .4byte gSprites
+_08037BB0: .4byte gObjectBankIDs
+_08037BB4: .4byte gActiveBank
+_08037BB8: .4byte gHealthboxIDs
+ thumb_func_end sub_8037B78
+
+ thumb_func_start sub_8037BBC
+sub_8037BBC: @ 8037BBC
+ push {r4-r6,lr}
+ ldr r6, _08037C18 @ =gActiveBank
+ ldrb r2, [r6]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, _08037C1C @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _08037C12
+ ldr r5, _08037C20 @ =gObjectBankIDs
+ adds r0, r2, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _08037C24 @ =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
+ ldrb r0, [r6]
+ bl sub_8032A08
+ ldr r1, _08037C28 @ =gHealthboxIDs
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_8043DB0
+ bl dp01_tbl4_exec_completed
+_08037C12:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037C18: .4byte gActiveBank
+_08037C1C: .4byte 0x02017810
+_08037C20: .4byte gObjectBankIDs
+_08037C24: .4byte gSprites
+_08037C28: .4byte gHealthboxIDs
+ thumb_func_end sub_8037BBC
+
+ thumb_func_start sub_8037C2C
+sub_8037C2C: @ 8037C2C
+ push {lr}
+ ldr r0, _08037C40 @ =gUnknown_03004210
+ ldrh r0, [r0, 0x16]
+ cmp r0, 0
+ bne _08037C3A
+ bl dp01_tbl4_exec_completed
+_08037C3A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037C40: .4byte gUnknown_03004210
+ thumb_func_end sub_8037C2C
+
+ thumb_func_start dp01t_0F_4_move_anim
+dp01t_0F_4_move_anim: @ 8037C44
+ push {r4,lr}
+ ldr r1, _08037C80 @ =gObjectBankIDs
+ ldr r0, _08037C84 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r2, _08037C88 @ =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 _08037C90
+ 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, _08037C8C @ =gDoingBattleAnim
+ strb r3, [r0]
+ bl dp01_tbl4_exec_completed
+ b _08037CBA
+ .align 2, 0
+_08037C80: .4byte gObjectBankIDs
+_08037C84: .4byte gActiveBank
+_08037C88: .4byte gSprites
+_08037C8C: .4byte gDoingBattleAnim
+_08037C90:
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _08037CB4
+ 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]
+_08037CB4:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+_08037CBA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end dp01t_0F_4_move_anim
+
+ thumb_func_start sub_8037CC0
+sub_8037CC0: @ 8037CC0
+ push {r4,lr}
+ ldr r2, _08037D10 @ =gSprites
+ ldr r0, _08037D14 @ =gHealthboxIDs
+ ldr r4, _08037D18 @ =gActiveBank
+ ldrb r3, [r4]
+ 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, _08037D1C @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _08037D08
+ lsls r0, r3, 2
+ ldr r1, _08037D20 @ =0x02017800
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08037CFC
+ adds r0, r3, 0
+ adds r1, r3, 0
+ adds r2, r3, 0
+ movs r3, 0x6
+ bl move_anim_start_t4
+_08037CFC:
+ ldr r0, _08037D24 @ =gBattleBankFunc
+ ldrb r1, [r4]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _08037D28 @ =sub_8037D2C
+ str r0, [r1]
+_08037D08:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037D10: .4byte gSprites
+_08037D14: .4byte gHealthboxIDs
+_08037D18: .4byte gActiveBank
+_08037D1C: .4byte SpriteCallbackDummy
+_08037D20: .4byte 0x02017800
+_08037D24: .4byte gBattleBankFunc
+_08037D28: .4byte sub_8037D2C
+ thumb_func_end sub_8037CC0
+
+ thumb_func_start sub_8037D2C
+sub_8037D2C: @ 8037D2C
+ push {lr}
+ ldr r0, _08037D58 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037D5C @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _08037D52
+ ldr r0, _08037D60 @ =c3_0802FDF4
+ movs r1, 0xA
+ bl CreateTask
+ bl dp01_tbl4_exec_completed
+_08037D52:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037D58: .4byte gActiveBank
+_08037D5C: .4byte 0x02017810
+_08037D60: .4byte c3_0802FDF4
+ thumb_func_end sub_8037D2C
+
+ thumb_func_start sub_8037D64
+sub_8037D64: @ 8037D64
+ push {r4,r5,lr}
+ ldr r5, _08037E08 @ =gActiveBank
+ ldrb r1, [r5]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r3, _08037E0C @ =0x02017810
+ adds r2, r0, r3
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08037E00
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r5]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r4, _08037E10 @ =0x000027f9
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+ ldr r1, _08037E14 @ =gObjectBankIDs
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037E18 @ =gSprites
+ adds r0, r1
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r4, _08037E1C @ =gHealthboxIDs
+ ldrb r1, [r5]
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ ldr r2, _08037E20 @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _08037E24 @ =gEnemyParty
+ 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, _08037E28 @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08037E2C @ =sub_8037CC0
+ str r1, [r0]
+_08037E00:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037E08: .4byte gActiveBank
+_08037E0C: .4byte 0x02017810
+_08037E10: .4byte 0x000027f9
+_08037E14: .4byte gObjectBankIDs
+_08037E18: .4byte gSprites
+_08037E1C: .4byte gHealthboxIDs
+_08037E20: .4byte gBattlePartyID
+_08037E24: .4byte gEnemyParty
+_08037E28: .4byte gBattleBankFunc
+_08037E2C: .4byte sub_8037CC0
+ thumb_func_end sub_8037D64
+
+ thumb_func_start sub_8037E30
+sub_8037E30: @ 8037E30
+ push {r4-r6,lr}
+ ldr r5, _08037ECC @ =gActiveBank
+ ldrb r2, [r5]
+ lsls r3, r2, 1
+ adds r0, r3, r2
+ lsls r0, 2
+ ldr r6, _08037ED0 @ =0x02017810
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r0, 0x88
+ ands r0, r1
+ cmp r0, 0
+ bne _08037E5E
+ ldr r0, _08037ED4 @ =gBattlePartyID
+ adds r0, r3, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _08037ED8 @ =gEnemyParty
+ adds r1, r0
+ adds r0, r2, 0
+ bl sub_8141828
+_08037E5E:
+ ldr r4, _08037EDC @ =gSprites
+ ldr r0, _08037EE0 @ =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, _08037EE4 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _08037EC4
+ 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 _08037EC4
+ adds r0, r3, r4
+ bl DestroySprite
+ ldrb r4, [r5]
+ ldr r1, _08037ED4 @ =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08037ED8 @ =gEnemyParty
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8032984
+ ldr r1, _08037EE8 @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08037EEC @ =sub_8037D64
+ str r1, [r0]
+_08037EC4:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037ECC: .4byte gActiveBank
+_08037ED0: .4byte 0x02017810
+_08037ED4: .4byte gBattlePartyID
+_08037ED8: .4byte gEnemyParty
+_08037EDC: .4byte gSprites
+_08037EE0: .4byte gUnknown_0300434C
+_08037EE4: .4byte SpriteCallbackDummy
+_08037EE8: .4byte gBattleBankFunc
+_08037EEC: .4byte sub_8037D64
+ thumb_func_end sub_8037E30
+
+ thumb_func_start sub_8037EF0
+sub_8037EF0: @ 8037EF0
+ push {lr}
+ ldr r0, _08037F20 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037F1C
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r3, _08037F24 @ =gMain
+ ldr r0, _08037F28 @ =0x0000043d
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _08037F2C @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r3]
+ ldr r0, _08037F30 @ =c2_8011A1C
+ bl SetMainCallback2
+_08037F1C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037F20: .4byte gReceivedRemoteLinkPlayers
+_08037F24: .4byte gMain
+_08037F28: .4byte 0x0000043d
+_08037F2C: .4byte gPreBattleCallback1
+_08037F30: .4byte c2_8011A1C
+ thumb_func_end sub_8037EF0
+
+ thumb_func_start sub_8037F34
+sub_8037F34: @ 8037F34
+ push {lr}
+ ldr r0, _08037F64 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08037F9A
+ ldr r0, _08037F68 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08037F78
+ bl sub_800832C
+ ldr r1, _08037F6C @ =gBattleBankFunc
+ ldr r0, _08037F70 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08037F74 @ =sub_8037EF0
+ str r1, [r0]
+ b _08037F9A
+ .align 2, 0
+_08037F64: .4byte gPaletteFade
+_08037F68: .4byte gBattleTypeFlags
+_08037F6C: .4byte gBattleBankFunc
+_08037F70: .4byte gActiveBank
+_08037F74: .4byte sub_8037EF0
+_08037F78:
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r2, _08037FA0 @ =gMain
+ ldr r0, _08037FA4 @ =0x0000043d
+ adds r3, r2, r0
+ ldrb r1, [r3]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+ ldr r0, _08037FA8 @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, [r2, 0x8]
+ bl SetMainCallback2
+_08037F9A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037FA0: .4byte gMain
+_08037FA4: .4byte 0x0000043d
+_08037FA8: .4byte gPreBattleCallback1
+ thumb_func_end sub_8037F34
+
+ thumb_func_start sub_8037FAC
+sub_8037FAC: @ 8037FAC
+ push {lr}
+ ldr r0, _08037FD0 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08037FD4 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _08037FCA
+ bl dp01_tbl4_exec_completed
+_08037FCA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037FD0: .4byte gActiveBank
+_08037FD4: .4byte 0x02017810
+ thumb_func_end sub_8037FAC
+
+ thumb_func_start sub_8037FD8
+sub_8037FD8: @ 8037FD8
+ push {lr}
+ ldr r0, _08037FFC @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08038000 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _08037FF6
+ bl dp01_tbl4_exec_completed
+_08037FF6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08037FFC: .4byte gActiveBank
+_08038000: .4byte 0x02017810
+ thumb_func_end sub_8037FD8
+
+ thumb_func_start dp01_tbl4_exec_completed
+dp01_tbl4_exec_completed: @ 8038004
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r1, _08038044 @ =gBattleBankFunc
+ ldr r4, _08038048 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0803804C @ =sub_803752C
+ str r1, [r0]
+ ldr r0, _08038050 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08038058
+ 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, _08038054 @ =gBattleBufferA
+ ldrb r0, [r4]
+ lsls r0, 9
+ adds r0, r1
+ movs r1, 0x38
+ strb r1, [r0]
+ b _0803806A
+ .align 2, 0
+_08038044: .4byte gBattleBankFunc
+_08038048: .4byte gActiveBank
+_0803804C: .4byte sub_803752C
+_08038050: .4byte gBattleTypeFlags
+_08038054: .4byte gBattleBufferA
+_08038058:
+ ldr r2, _08038074 @ =gBattleExecBuffer
+ ldr r1, _08038078 @ =gBitTable
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, [r2]
+ bics r0, r1
+ str r0, [r2]
+_0803806A:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08038074: .4byte gBattleExecBuffer
+_08038078: .4byte gBitTable
+ thumb_func_end dp01_tbl4_exec_completed
+
+ .align 2, 0 @ Don't pad with nop.