summaryrefslogtreecommitdiff
path: root/asm/battle_2.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_2.s')
-rw-r--r--asm/battle_2.s16487
1 files changed, 16487 insertions, 0 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
new file mode 100644
index 000000000..53b83c10e
--- /dev/null
+++ b/asm/battle_2.s
@@ -0,0 +1,16487 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+
+ thumb_func_start sub_8036760
+sub_8036760: @ 8036760
+ push {lr}
+ bl MoveSaveBlocks_ResetHeap
+ bl sub_8056F28
+ bl dp11_init
+ bl init_uns_table_pokemon_copy
+ bl sub_8185F84
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080367CC
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _08036798
+ bl InitBattle
+ b _080367BA
+ .pool
+_08036798:
+ movs r0, 0x80
+ lsls r0, 15
+ ands r1, r0
+ cmp r1, 0
+ bne _080367B4
+ bl battle_wireless_setup_if_required_maybe
+ ldr r0, =sub_8037ADC
+ bl SetMainCallback2
+ b _080367BA
+ .pool
+_080367B4:
+ ldr r0, =intro_end
+ bl SetMainCallback2
+_080367BA:
+ ldr r1, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1]
+ b _080367D0
+ .pool
+_080367CC:
+ bl InitBattle
+_080367D0:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8036760
+
+ thumb_func_start InitBattle
+InitBattle: @ 80367D4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ movs r0, 0
+ bl SetHBlankCallback
+ movs r0, 0
+ bl SetVBlankCallback
+ movs r0, 0
+ str r0, [sp]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, =0x05006000
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x40
+ movs r1, 0xF0
+ bl SetGpuReg
+ ldr r1, =0x00005051
+ movs r0, 0x44
+ bl SetGpuReg
+ movs r0, 0x48
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E24
+ movs r2, 0xF0
+ strh r2, [r0]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 15
+ ands r0, r1
+ cmp r0, 0
+ beq _08036870
+ ldr r0, =gUnknown_02038BCE
+ ldrh r1, [r0]
+ ldr r0, =0x00000c03
+ cmp r1, r0
+ beq _08036870
+ ldr r1, =gUnknown_02022E26
+ movs r0, 0x9F
+ strh r0, [r1]
+ ldr r0, =gUnknown_02022E28
+ strh r2, [r0]
+ ldr r1, =gUnknown_02022E2A
+ movs r0, 0x20
+ strh r0, [r1]
+ b _080368BE
+ .pool
+_08036870:
+ ldr r0, =gUnknown_02022E26
+ ldr r2, =0x00005051
+ adds r1, r2, 0
+ strh r1, [r0]
+ bl dp12_8087EA4
+ ldr r0, =gUnknown_02038C28
+ movs r3, 0xF0
+ movs r5, 0xF0
+ lsls r5, 3
+ adds r2, r0, r5
+ movs r1, 0x4F
+_08036888:
+ strh r3, [r0]
+ strh r3, [r2]
+ adds r2, 0x2
+ adds r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _08036888
+ movs r1, 0x50
+ ldr r4, =gUnknown_0831AC70
+ ldr r0, =gUnknown_02038C28
+ ldr r3, =0x0000ff10
+ movs r5, 0x82
+ lsls r5, 4
+ adds r2, r0, r5
+ adds r0, 0xA0
+_080368A6:
+ strh r3, [r0]
+ strh r3, [r2]
+ adds r2, 0x2
+ adds r0, 0x2
+ adds r1, 0x1
+ cmp r1, 0x9F
+ ble _080368A6
+ ldr r0, [r4]
+ ldr r1, [r4, 0x4]
+ ldr r2, [r4, 0x8]
+ bl sub_80BA038
+_080368BE:
+ bl ResetPaletteFade
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E18
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E1A
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E1C
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E1E
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E20
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E22
+ strh r1, [r0]
+ bl sub_80B0BD0
+ ldr r2, =gUnknown_02022FF0
+ strb r0, [r2]
+ ldr r4, =gBattleTypeFlags
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _080368FE
+ movs r0, 0x8
+ strb r0, [r2]
+_080368FE:
+ bl c2_berry_program_update_menu
+ bl sub_8035AA4
+ bl ResetSpriteData
+ bl ResetTasks
+ bl sub_8036154
+ bl FreeAllSpritePalettes
+ ldr r1, =gReservedSpritePaletteCount
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r0, =vblank_cb_08078BB4
+ bl SetVBlankCallback
+ bl sub_803269C
+ ldr r2, [r4]
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, r1
+ beq _0803693E
+ ldr r1, =0x00400040
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, r1
+ bne _08036994
+_0803693E:
+ ldr r0, =sub_8037458
+ bl SetMainCallback2
+ b _080369AE
+ .pool
+_08036994:
+ movs r0, 0x40
+ ands r2, r0
+ cmp r2, 0
+ beq _080369A8
+ ldr r0, =sub_8037DF4
+ bl SetMainCallback2
+ b _080369AE
+ .pool
+_080369A8:
+ ldr r0, =sub_8036FAC
+ bl SetMainCallback2
+_080369AE:
+ ldr r5, =gBattleTypeFlags
+ ldr r0, [r5]
+ ldr r1, =0x01000002
+ ands r0, r1
+ cmp r0, 0
+ bne _080369E8
+ ldr r4, =gEnemyParty
+ ldr r0, =gTrainerBattleOpponent_A
+ ldrh r1, [r0]
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl CreateNPCTrainerParty
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080369E4
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r4, r1
+ ldr r1, =gTrainerBattleOpponent_B
+ ldrh r1, [r1]
+ movs r2, 0
+ bl CreateNPCTrainerParty
+_080369E4:
+ bl SetWildMonHeldItem
+_080369E8:
+ ldr r1, =gMain
+ ldr r2, =0x00000439
+ adds r1, r2
+ ldrb r0, [r1]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r1, [r0]
+ ldr r5, =0x00000ca9
+ adds r1, r5
+ ldrb r2, [r1]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r4, =gPlayerParty
+ movs r0, 0xFA
+ lsls r0, 1
+ adds r5, r4, r0
+_08036A10:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl AdjustFriendship
+ adds r4, 0x64
+ cmp r4, r5
+ ble _08036A10
+ movs r1, 0
+ ldr r0, =gBattleCommunication
+ strb r1, [r0]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end InitBattle
+
+ thumb_func_start sub_8036A5C
+sub_8036A5C: @ 8036A5C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r6, 0
+ mov r9, r6
+ movs r0, 0xCE
+ lsls r0, 1
+ mov r10, r0
+ mov r8, r6
+_08036A72:
+ movs r0, 0x64
+ mov r4, r9
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ lsls r0, 16
+ lsrs r7, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+ adds r1, r0, 0
+ cmp r5, 0
+ beq _08036AEE
+ cmp r5, r10
+ beq _08036ABA
+ cmp r7, 0
+ beq _08036ABA
+ cmp r1, 0
+ bne _08036ABA
+ movs r0, 0x1
+ mov r2, r8
+ lsls r0, r2
+ orrs r6, r0
+ lsls r0, r6, 16
+ lsrs r6, r0, 16
+_08036ABA:
+ cmp r5, 0
+ beq _08036AEE
+ cmp r7, 0
+ beq _08036AD6
+ cmp r5, r10
+ beq _08036ACA
+ cmp r1, 0
+ beq _08036AD6
+_08036ACA:
+ movs r0, 0x2
+ mov r1, r8
+ lsls r0, r1
+ orrs r6, r0
+ lsls r0, r6, 16
+ lsrs r6, r0, 16
+_08036AD6:
+ cmp r5, 0
+ beq _08036AEE
+ cmp r5, r10
+ beq _08036AEE
+ cmp r7, 0
+ bne _08036AEE
+ movs r0, 0x3
+ mov r2, r8
+ lsls r0, r2
+ orrs r6, r0
+ lsls r0, r6, 16
+ lsrs r6, r0, 16
+_08036AEE:
+ movs r0, 0x2
+ add r8, r0
+ movs r1, 0x1
+ add r9, r1
+ mov r2, r9
+ cmp r2, 0x5
+ ble _08036A72
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ movs r1, 0xC1
+ lsls r1, 1
+ adds r0, r1
+ strb r6, [r0]
+ ldr r0, [r4]
+ ldr r5, =0x00000183
+ adds r0, r5
+ lsrs r1, r6, 8
+ strb r1, [r0]
+ ldr r0, =0x000008d2
+ bl FlagGet
+ ldr r1, [r4]
+ adds r1, r5
+ lsls r0, 7
+ ldrb r2, [r1]
+ orrs r0, r2
+ strb r0, [r1]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8036A5C
+
+ thumb_func_start sub_8036B44
+sub_8036B44: @ 8036B44
+ push {r4-r7,lr}
+ ldr r0, =gBattleStruct
+ ldr r5, [r0]
+ movs r0, 0xC2
+ lsls r0, 1
+ adds r4, r5, r0
+ bl sub_80E162C
+ cmp r0, 0x1
+ bne _08036BC0
+ movs r2, 0
+ ldr r7, =gSaveBlock1Ptr
+ movs r1, 0xC6
+ lsls r1, 1
+ adds r5, r1
+ adds r6, r7, 0
+ ldr r3, =0x000031f8
+_08036B66:
+ adds r0, r4, r2
+ ldr r1, [r6]
+ adds r1, r3
+ adds r1, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x5
+ ble _08036B66
+ adds r1, r4, r2
+ movs r0, 0xFF
+ strb r0, [r1]
+ movs r2, 0
+ adds r3, r5, 0
+ ldr r6, =gSaveBlock1Ptr
+ ldr r5, =0x00003214
+_08036B86:
+ adds r0, r3, r2
+ ldr r1, [r6]
+ adds r1, r5
+ adds r1, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x11
+ ble _08036B86
+ ldr r0, [r7]
+ ldr r1, =0x00003226
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r4, 0x7]
+ ldr r0, [r7]
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ b _08036C00
+ .pool
+_08036BC0:
+ movs r0, 0xAF
+ bl ItemIdToBerryType
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBerryInfo
+ adds r3, r0, 0
+ movs r2, 0
+ movs r0, 0xC6
+ lsls r0, 1
+ adds r5, r0
+_08036BD8:
+ adds r0, r4, r2
+ adds r1, r3, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x5
+ ble _08036BD8
+ adds r1, r4, r2
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r0, r5, 0
+ movs r2, 0
+ adds r1, r0, 0
+ adds r1, 0x11
+_08036BF4:
+ strb r2, [r1]
+ subs r1, 0x1
+ cmp r1, r0
+ bge _08036BF4
+ movs r0, 0
+ strb r0, [r4, 0x7]
+_08036C00:
+ strb r0, [r4, 0x1A]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8036B44
+
+ thumb_func_start berry_801017C
+berry_801017C: @ 8036C08
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08036C20
+ b _08036D4C
+_08036C20:
+ bl sub_80E162C
+ cmp r0, 0x1
+ bne _08036CDC
+ movs r5, 0
+ ldr r3, =gEnigmaBerries
+ ldr r0, =gSaveBlock1Ptr
+ mov r8, r0
+ adds r6, r3, 0
+ mov r4, r8
+ ldr r2, =0x000031f8
+ adds r7, r3, 0
+ adds r7, 0x38
+_08036C3A:
+ adds r1, r5, r6
+ ldr r0, [r4]
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, r5, r7
+ ldr r0, [r4]
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _08036C3A
+ adds r1, r5, r3
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r0, r3, 0
+ adds r0, 0x38
+ adds r0, r5, r0
+ movs r1, 0x1
+ negs r1, r1
+ strb r1, [r0]
+ movs r5, 0
+ adds r7, r3, 0
+ adds r7, 0x8
+ ldr r4, =gSaveBlock1Ptr
+ ldr r2, =0x00003214
+ adds r6, r3, 0
+ adds r6, 0x40
+_08036C78:
+ adds r1, r5, r7
+ ldr r0, [r4]
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, r5, r6
+ ldr r0, [r4]
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x11
+ ble _08036C78
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r2, =0x00003226
+ adds r0, r2
+ ldrb r1, [r0]
+ strb r1, [r3, 0x7]
+ ldrb r0, [r0]
+ adds r1, r3, 0
+ adds r1, 0x3F
+ strb r0, [r1]
+ mov r4, r8
+ ldr r0, [r4]
+ ldr r1, =0x00003227
+ adds r0, r1
+ ldrb r1, [r0]
+ strb r1, [r3, 0x1A]
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ adds r0, 0x52
+ strb r1, [r0]
+ b _08036EA0
+ .pool
+_08036CDC:
+ movs r0, 0xAF
+ bl ItemIdToBerryType
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBerryInfo
+ adds r6, r0, 0
+ movs r5, 0
+ ldr r4, =gEnigmaBerries
+ adds r7, r4, 0
+ adds r7, 0x38
+ adds r3, r4, 0
+_08036CF6:
+ adds r1, r5, r4
+ adds r2, r6, r5
+ ldrb r0, [r2]
+ strb r0, [r1]
+ adds r1, r5, r7
+ ldrb r0, [r2]
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _08036CF6
+ adds r1, r5, r3
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r0, r3, 0
+ adds r0, 0x38
+ adds r0, r5, r0
+ movs r1, 0x1
+ negs r1, r1
+ strb r1, [r0]
+ movs r5, 0
+ adds r4, r3, 0
+ adds r4, 0x8
+ movs r1, 0
+ adds r2, r3, 0
+ adds r2, 0x40
+_08036D28:
+ adds r0, r5, r4
+ strb r1, [r0]
+ adds r0, r5, r2
+ strb r1, [r0]
+ adds r5, 0x1
+ cmp r5, 0x11
+ ble _08036D28
+ movs r1, 0
+ strb r1, [r3, 0x7]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ strb r1, [r0]
+ strb r1, [r3, 0x1A]
+ adds r0, 0x13
+ strb r1, [r0]
+ b _08036EA0
+ .pool
+_08036D4C:
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08036DF0
+ movs r0, 0x80
+ lsls r0, 1
+ ands r1, r0
+ movs r2, 0x4
+ mov r8, r2
+ cmp r1, 0
+ beq _08036D66
+ movs r4, 0x2
+ mov r8, r4
+_08036D66:
+ movs r5, 0
+ cmp r5, r8
+ blt _08036D6E
+ b _08036EA0
+_08036D6E:
+ ldr r0, =gLinkPlayers
+ mov r12, r0
+ ldr r3, =gEnigmaBerries
+ adds r6, r3, 0
+ movs r1, 0x8
+ adds r1, r6
+ mov r9, r1
+_08036D7C:
+ lsls r1, r5, 8
+ ldr r0, =gUnknown_020223C8
+ adds r7, r1, r0
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ add r0, r12
+ ldrb r3, [r0, 0x18]
+ movs r4, 0
+ adds r5, 0x1
+ mov r10, r5
+ lsls r1, r3, 3
+ subs r0, r1, r3
+ adds r5, r1, 0
+ lsls r0, 2
+ adds r1, r0, r6
+_08036D9C:
+ adds r0, r7, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, 0x1
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _08036D9C
+ subs r0, r5, r3
+ lsls r0, 2
+ adds r1, r4, r0
+ adds r1, r6
+ movs r2, 0xFF
+ strb r2, [r1]
+ movs r4, 0
+ mov r2, r9
+ adds r1, r0, r2
+ adds r2, r7, 0
+ adds r2, 0x8
+_08036DC0:
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, 0x1
+ adds r4, 0x1
+ cmp r4, 0x11
+ ble _08036DC0
+ subs r0, r5, r3
+ lsls r0, 2
+ adds r0, r6
+ ldrb r1, [r7, 0x7]
+ strb r1, [r0, 0x7]
+ ldrb r1, [r7, 0x1A]
+ strb r1, [r0, 0x1A]
+ mov r5, r10
+ cmp r5, r8
+ blt _08036D7C
+ b _08036EA0
+ .pool
+_08036DF0:
+ movs r5, 0
+ ldr r4, =gEnigmaBerries
+ mov r9, r4
+_08036DF6:
+ lsls r0, r5, 8
+ ldr r1, =gUnknown_020223C8
+ adds r7, r0, r1
+ movs r4, 0
+ adds r2, r5, 0x1
+ mov r10, r2
+ lsls r0, r5, 3
+ mov r8, r0
+ adds r1, r5, 0x2
+ mov r12, r1
+ subs r1, r0, r5
+ mov r2, r12
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ mov r2, r9
+ adds r3, r0, r2
+ lsls r1, 2
+ adds r2, r1, r2
+_08036E1C:
+ adds r0, r7, r4
+ ldrb r1, [r0]
+ strb r1, [r2]
+ ldrb r0, [r0]
+ strb r0, [r3]
+ adds r3, 0x1
+ adds r2, 0x1
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _08036E1C
+ mov r0, r8
+ subs r3, r0, r5
+ lsls r3, 2
+ adds r1, r4, r3
+ add r1, r9
+ ldrb r0, [r1]
+ movs r2, 0xFF
+ orrs r0, r2
+ strb r0, [r1]
+ mov r0, r12
+ lsls r2, r0, 3
+ subs r2, r0
+ lsls r2, 2
+ adds r1, r4, r2
+ add r1, r9
+ ldrb r0, [r1]
+ movs r4, 0xFF
+ orrs r0, r4
+ strb r0, [r1]
+ movs r4, 0
+ ldr r0, =gEnigmaBerries
+ adds r0, 0x8
+ adds r2, r0
+ adds r3, r0
+ adds r6, r7, 0
+ adds r6, 0x8
+_08036E64:
+ adds r0, r6, r4
+ ldrb r1, [r0]
+ strb r1, [r3]
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r2, 0x1
+ adds r3, 0x1
+ adds r4, 0x1
+ cmp r4, 0x11
+ ble _08036E64
+ mov r0, r8
+ subs r2, r0, r5
+ lsls r2, 2
+ add r2, r9
+ ldrb r0, [r7, 0x7]
+ strb r0, [r2, 0x7]
+ mov r1, r12
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r7, 0x7]
+ strb r1, [r0, 0x7]
+ ldrb r1, [r7, 0x1A]
+ strb r1, [r2, 0x1A]
+ ldrb r1, [r7, 0x1A]
+ strb r1, [r0, 0x1A]
+ mov r5, r10
+ cmp r5, 0x1
+ ble _08036DF6
+_08036EA0:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end berry_801017C
+
+ thumb_func_start sub_8036EB8
+sub_8036EB8: @ 8036EB8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ movs r6, 0
+ ldr r0, =gUnknown_020223C4
+ ldrh r2, [r0]
+ movs r1, 0x80
+ lsls r1, 1
+ mov r12, r0
+ cmp r2, r1
+ bne _08036EFC
+ cmp r3, 0
+ bne _08036EEC
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0xC
+ b _08036EF2
+ .pool
+_08036EEC:
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0x8
+_08036EF2:
+ orrs r1, r2
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08036EFC:
+ cmp r6, 0
+ bne _08036FA0
+ movs r2, 0
+ cmp r2, r4
+ bge _08036F20
+ ldr r1, =gUnknown_020223C4
+ mov r8, r1
+ movs r5, 0x80
+ lsls r5, 1
+_08036F0E:
+ adds r1, r5
+ adds r2, 0x1
+ cmp r2, r4
+ bge _08036F20
+ mov r7, r8
+ ldrh r0, [r7]
+ ldrh r7, [r1]
+ cmp r0, r7
+ beq _08036F0E
+_08036F20:
+ cmp r2, r4
+ bne _08036F48
+ cmp r3, 0
+ bne _08036F38
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0xC
+ b _08036F3E
+ .pool
+_08036F38:
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0x8
+_08036F3E:
+ orrs r1, r2
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08036F48:
+ cmp r6, 0
+ bne _08036FA0
+ movs r2, 0
+ ldr r5, =gBattleTypeFlags
+ cmp r2, r4
+ bge _08036F8A
+ mov r0, r12
+ ldrh r1, [r0]
+ movs r0, 0xC0
+ lsls r0, 2
+ cmp r1, r0
+ beq _08036F82
+_08036F60:
+ lsls r0, r2, 8
+ add r0, r12
+ ldrh r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 2
+ cmp r0, r1
+ bls _08036F72
+ cmp r2, r3
+ bne _08036F8A
+_08036F72:
+ adds r2, 0x1
+ cmp r2, r4
+ bge _08036F8A
+ lsls r0, r2, 8
+ add r0, r12
+ ldrh r0, [r0]
+ cmp r0, r1
+ bne _08036F60
+_08036F82:
+ cmp r2, r3
+ beq _08036F60
+ cmp r2, r3
+ bge _08036F60
+_08036F8A:
+ cmp r2, r4
+ bne _08036F98
+ ldr r0, [r5]
+ movs r1, 0xC
+ b _08036F9C
+ .pool
+_08036F98:
+ ldr r0, [r5]
+ movs r1, 0x8
+_08036F9C:
+ orrs r0, r1
+ str r0, [r5]
+_08036FA0:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8036EB8
+
+ thumb_func_start sub_8036FAC
+sub_8036FAC: @ 8036FAC
+ push {r4-r6,lr}
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, =gBattleScripting
+ adds r0, 0x25
+ strb r6, [r0]
+ movs r0, 0x1
+ adds r5, r6, 0
+ eors r5, r0
+ ldr r0, =gBattleCommunication
+ ldrb r0, [r0]
+ cmp r0, 0x12
+ bls _08036FD8
+ b _0803744C
+_08036FD8:
+ lsls r0, 2
+ ldr r1, =_08036FF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08036FF0:
+ .4byte _0803703C
+ .4byte _08037080
+ .4byte _08037144
+ .4byte _080371D8
+ .4byte _08037200
+ .4byte _0803742C
+ .4byte _08037438
+ .4byte _08037230
+ .4byte _08037258
+ .4byte _0803742C
+ .4byte _08037438
+ .4byte _08037288
+ .4byte _080372B0
+ .4byte _0803742C
+ .4byte _08037438
+ .4byte _08037318
+ .4byte _08037378
+ .4byte _080373A0
+ .4byte _080373E0
+_0803703C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037068
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl ShowBg
+ bl sub_805EF14
+ ldr r1, =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1]
+_08037068:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037072
+ b _0803744C
+_08037072:
+ bl sub_800E0E8
+ b _0803744C
+ .pool
+_08037080:
+ ldr r2, =gBattleTypeFlags
+ ldr r1, [r2]
+ movs r6, 0x2
+ adds r0, r1, 0
+ ands r0, r6
+ cmp r0, 0
+ beq _08037124
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037098
+ b _0803744C
+_08037098:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _080370EE
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ movs r5, 0xC0
+ lsls r5, 1
+ adds r0, r5
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r4]
+ ldr r2, =0x00000181
+ adds r1, r0, r2
+ movs r0, 0x3
+ strb r0, [r1]
+ bl sub_8036A5C
+ bl sub_8036B44
+ ldr r0, =gTrainerBattleOpponent_A
+ ldrh r1, [r0]
+ movs r0, 0xC0
+ lsls r0, 4
+ cmp r1, r0
+ bne _080370D8
+ ldr r0, =gLinkPlayers
+ movs r1, 0
+ strh r1, [r0, 0x18]
+ movs r1, 0x1
+ strh r1, [r0, 0x34]
+_080370D8:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [r4]
+ adds r1, r5
+ movs r2, 0x20
+ bl link_0800A448
+ ldr r0, =gBattleCommunication
+ strb r6, [r0]
+_080370EE:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080370F8
+ b _0803744C
+_080370F8:
+ movs r0, 0
+ movs r1, 0
+ bl sub_800DFB4
+ b _0803744C
+ .pool
+_08037124:
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ bne _08037134
+ movs r0, 0x4
+ orrs r1, r0
+ str r1, [r2]
+_08037134:
+ ldr r1, =gBattleCommunication
+ movs r0, 0xF
+ strb r0, [r1]
+ bl berry_801017C
+ b _0803744C
+ .pool
+_08037144:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _08037152
+ b _0803744C
+_08037152:
+ bl sub_800A5B4
+ movs r0, 0x2
+ adds r1, r6, 0
+ bl sub_8036EB8
+ bl berry_801017C
+ ldr r0, =task00_0800F6FC
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gTasks
+ lsls r2, r0, 2
+ adds r2, r0
+ lsls r2, 3
+ adds r2, r1
+ movs r1, 0
+ movs r0, 0x87
+ lsls r0, 1
+ strh r0, [r2, 0xA]
+ movs r0, 0x5A
+ strh r0, [r2, 0xC]
+ strh r1, [r2, 0x12]
+ ldr r0, =gBattleStruct
+ ldr r3, [r0]
+ movs r4, 0xC1
+ lsls r4, 1
+ adds r0, r3, r4
+ ldrb r1, [r0]
+ adds r4, 0x1
+ adds r0, r3, r4
+ ldrb r0, [r0]
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2, 0xE]
+ ldr r1, =gUnknown_020223C4
+ lsls r4, r5, 8
+ adds r1, 0x2
+ adds r4, r1
+ ldrh r0, [r4]
+ strh r0, [r2, 0x10]
+ lsls r0, r6, 8
+ adds r0, r1
+ ldrh r0, [r0]
+ bl sub_8185F90
+ ldrh r0, [r4]
+ bl sub_8185F90
+ bl sub_8068AA4
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_080371D8:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _080371E4
+ b _0803744C
+_080371E4:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty
+ movs r2, 0xC8
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_08037200:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _0803720E
+ b _0803744C
+_0803720E:
+ bl sub_800A5B4
+ ldr r0, =gEnemyParty
+ lsls r1, r5, 8
+ ldr r2, =gUnknown_020223C4
+ adds r1, r2
+ movs r2, 0xC8
+ bl memcpy
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_08037230:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803723C
+ b _0803744C
+_0803723C:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty + 200
+ movs r2, 0xC8
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_08037258:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _08037266
+ b _0803744C
+_08037266:
+ bl sub_800A5B4
+ ldr r0, =gEnemyParty + 200
+ lsls r1, r5, 8
+ ldr r2, =gUnknown_020223C4
+ adds r1, r2
+ movs r2, 0xC8
+ bl memcpy
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_08037288:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037294
+ b _0803744C
+_08037294:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty + 400
+ movs r2, 0xC8
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_080372B0:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _080372BE
+ b _0803744C
+_080372BE:
+ bl sub_800A5B4
+ ldr r4, =gEnemyParty + 400
+ lsls r1, r5, 8
+ ldr r0, =gUnknown_020223C4
+ adds r1, r0
+ adds r0, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+ ldr r1, =0xfffffe70
+ adds r0, r4, r1
+ bl shedinja_something
+ ldr r2, =0xfffffed4
+ adds r0, r4, r2
+ bl shedinja_something
+ adds r0, r4, 0
+ subs r0, 0xC8
+ bl shedinja_something
+ adds r0, r4, 0
+ subs r0, 0x64
+ bl shedinja_something
+ adds r0, r4, 0
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0x64
+ bl shedinja_something
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_08037318:
+ bl sub_8032768
+ bl sub_8184E58
+ ldr r2, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r2, 0x1]
+ strb r0, [r2, 0x2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08037372
+ movs r3, 0
+ ldr r1, =gLinkPlayers
+ ldrb r0, [r1]
+ adds r5, r2, 0
+ cmp r0, 0x3
+ bne _08037356
+ movs r4, 0xFF
+ adds r2, r1, 0
+_08037344:
+ adds r2, 0x1C
+ adds r3, 0x1
+ cmp r3, 0x1
+ bgt _08037356
+ ldrh r1, [r2]
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0x3
+ beq _08037344
+_08037356:
+ cmp r3, 0x2
+ bne _0803736C
+ movs r0, 0x10
+ strb r0, [r5]
+ b _0803744C
+ .pool
+_0803736C:
+ movs r0, 0x12
+ strb r0, [r5]
+ b _0803744C
+_08037372:
+ movs r0, 0x12
+ strb r0, [r2]
+ b _0803744C
+_08037378:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803744C
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gUnknown_0203BD2C
+ movs r2, 0x4
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_080373A0:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ bne _0803744C
+ bl sub_800A5B4
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080373CA
+ ldr r0, =gUnknown_0203BD2C
+ lsls r1, r5, 8
+ ldr r2, =gUnknown_020223C4
+ adds r1, r2
+ movs r2, 0x4
+ bl memcpy
+_080373CA:
+ ldr r1, =gBattleCommunication
+ b _08037446
+ .pool
+_080373E0:
+ ldr r0, =gUnknown_02024333
+ adds r1, r0, 0x1
+ bl battle_load_something
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803744C
+ ldr r2, =gUnknown_03005D00
+ ldr r1, =gMain
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r0, =sub_8039EF0
+ str r0, [r1]
+ ldr r0, =sub_8038420
+ bl SetMainCallback2
+ ldr r2, =gBattleTypeFlags
+ ldr r1, [r2]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0803744C
+ movs r0, 0x20
+ orrs r1, r0
+ str r1, [r2]
+ b _0803744C
+ .pool
+_0803742C:
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ movs r1, 0x1
+ strb r1, [r0, 0x1]
+_08037438:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1, 0x1]
+ subs r0, 0x1
+ strb r0, [r1, 0x1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803744C
+_08037446:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0803744C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8036FAC
+
+ thumb_func_start sub_8037458
+sub_8037458: @ 8037458
+ push {r4-r7,lr}
+ sub sp, 0x4
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, =gBattleScripting
+ adds r0, 0x25
+ strb r6, [r0]
+ movs r0, 0x1
+ adds r7, r6, 0
+ eors r7, r0
+ ldr r0, =gBattleCommunication
+ ldrb r0, [r0]
+ cmp r0, 0x10
+ bls _08037486
+ b _080379D6
+_08037486:
+ lsls r0, 2
+ ldr r1, =_0803749C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803749C:
+ .4byte _080374E0
+ .4byte _08037518
+ .4byte _0803761C
+ .4byte _08037670
+ .4byte _08037694
+ .4byte _08037710
+ .4byte _08037734
+ .4byte _080377B0
+ .4byte _080377CC
+ .4byte _080377FC
+ .4byte _08037818
+ .4byte _08037848
+ .4byte _08037864
+ .4byte _08037908
+ .4byte _0803793A
+ .4byte _0803795C
+ .4byte _080379A0
+_080374E0:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803750C
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl ShowBg
+ bl sub_805EF14
+ ldr r1, =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1]
+_0803750C:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08037518
+ bl sub_800E0E8
+_08037518:
+ ldr r2, =gBattleTypeFlags
+ ldr r1, [r2]
+ movs r3, 0x2
+ adds r0, r1, 0
+ ands r0, r3
+ cmp r0, 0
+ beq _080375FC
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037530
+ b _080379D6
+_08037530:
+ ldr r6, =gLinkPlayers
+ movs r0, 0
+ strh r0, [r6, 0x18]
+ strh r3, [r6, 0x34]
+ adds r1, r6, 0
+ adds r1, 0x50
+ movs r0, 0x1
+ strh r0, [r1]
+ adds r1, 0x1C
+ movs r0, 0x3
+ strh r0, [r1]
+ adds r0, r6, 0
+ adds r0, 0x40
+ ldr r4, =gTrainerBattleOpponent_A
+ ldrh r1, [r4]
+ bl sub_8162E20
+ adds r0, r6, 0
+ adds r0, 0x5C
+ ldr r5, =gTrainerBattleOpponent_B
+ ldrh r1, [r5]
+ bl sub_8162E20
+ ldrh r1, [r4]
+ mov r0, sp
+ bl sub_8165B88
+ mov r0, sp
+ ldrb r0, [r0]
+ adds r1, r6, 0
+ adds r1, 0x52
+ strh r0, [r1]
+ ldrh r1, [r5]
+ mov r0, sp
+ bl sub_8165B88
+ mov r0, sp
+ ldrb r1, [r0]
+ adds r0, r6, 0
+ adds r0, 0x6E
+ strh r1, [r0]
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _080375C4
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ movs r5, 0xC0
+ lsls r5, 1
+ adds r0, r5
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r4]
+ ldr r2, =0x00000181
+ adds r1, r0, r2
+ movs r0, 0x3
+ strb r0, [r1]
+ bl sub_8036A5C
+ bl sub_8036B44
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [r4]
+ adds r1, r5
+ movs r2, 0x20
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ movs r0, 0x2
+ strb r0, [r1]
+_080375C4:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080375CE
+ b _080379D6
+_080375CE:
+ movs r0, 0
+ movs r1, 0
+ bl sub_800DFB4
+ b _080379D6
+ .pool
+_080375FC:
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ bne _0803760C
+ movs r0, 0x4
+ orrs r1, r0
+ str r1, [r2]
+_0803760C:
+ ldr r1, =gBattleCommunication
+ movs r0, 0xD
+ strb r0, [r1]
+ bl berry_801017C
+ b _080379D6
+ .pool
+_0803761C:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _0803762A
+ b _080379D6
+_0803762A:
+ bl sub_800A5B4
+ movs r0, 0x2
+ adds r1, r6, 0
+ bl sub_8036EB8
+ bl berry_801017C
+ ldr r0, =task00_0800F6FC
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0
+ movs r0, 0x87
+ lsls r0, 1
+ strh r0, [r1, 0xA]
+ movs r0, 0x5A
+ strh r0, [r1, 0xC]
+ strh r2, [r1, 0x12]
+ adds r0, 0xEB
+ strh r0, [r1, 0xE]
+ strh r0, [r1, 0x10]
+ b _08037986
+ .pool
+_08037670:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803767C
+ b _080379D6
+_0803767C:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty
+_08037686:
+ movs r2, 0xC8
+ bl link_0800A448
+ b _08037986
+ .pool
+_08037694:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _080376A2
+ b _080379D6
+_080376A2:
+ bl sub_800A5B4
+ ldr r0, =gLinkPlayers
+ lsls r1, r6, 3
+ subs r1, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x18]
+ cmp r0, 0
+ beq _080376E8
+ ldr r4, =gPlayerParty
+ lsls r1, r7, 8
+ ldr r5, =gUnknown_020223C4
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+ movs r0, 0x96
+ lsls r0, 1
+ adds r4, r0
+ lsls r1, r6, 8
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+ b _08037986
+ .pool
+_080376E8:
+ ldr r4, =gPlayerParty
+ lsls r1, r6, 8
+ ldr r5, =gUnknown_020223C4
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+ movs r1, 0x96
+ lsls r1, 1
+ adds r4, r1
+ lsls r1, r7, 8
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0xC8
+ b _08037982
+ .pool
+_08037710:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803771C
+ b _080379D6
+_0803771C:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty + 200
+ movs r2, 0x64
+ bl link_0800A448
+ b _08037986
+ .pool
+_08037734:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _08037742
+ b _080379D6
+_08037742:
+ bl sub_800A5B4
+ ldr r0, =gLinkPlayers
+ lsls r1, r6, 3
+ subs r1, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x18]
+ cmp r0, 0
+ beq _08037788
+ ldr r4, =gPlayerParty + 200
+ lsls r1, r7, 8
+ ldr r5, =gUnknown_020223C4
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ movs r2, 0x96
+ lsls r2, 1
+ adds r4, r2
+ lsls r1, r6, 8
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ b _08037986
+ .pool
+_08037788:
+ ldr r4, =gPlayerParty + 200
+ lsls r1, r6, 8
+ ldr r5, =gUnknown_020223C4
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ movs r0, 0x96
+ lsls r0, 1
+ adds r4, r0
+ lsls r1, r7, 8
+ adds r1, r5
+ adds r0, r4, 0
+ movs r2, 0x64
+ b _08037982
+ .pool
+_080377B0:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _080377BC
+ b _080379D6
+_080377BC:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gEnemyParty
+ b _08037686
+ .pool
+_080377CC:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _080377DA
+ b _080379D6
+_080377DA:
+ bl sub_800A5B4
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ bne _080377EA
+ b _08037986
+_080377EA:
+ ldr r0, =gEnemyParty
+ ldr r1, =gUnknown_020223C4
+ movs r2, 0xC8
+ b _08037982
+ .pool
+_080377FC:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037808
+ b _080379D6
+_08037808:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gEnemyParty + 200
+ b _08037686
+ .pool
+_08037818:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _08037826
+ b _080379D6
+_08037826:
+ bl sub_800A5B4
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037836
+ b _08037986
+_08037836:
+ ldr r0, =gEnemyParty + 200
+ ldr r1, =gUnknown_020223C4
+ movs r2, 0xC8
+ b _08037982
+ .pool
+_08037848:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037854
+ b _080379D6
+_08037854:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gEnemyParty + 400
+ b _08037686
+ .pool
+_08037864:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ beq _08037872
+ b _080379D6
+_08037872:
+ bl sub_800A5B4
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803788A
+ ldr r0, =gEnemyParty + 400
+ ldr r1, =gUnknown_020223C4
+ movs r2, 0xC8
+ bl memcpy
+_0803788A:
+ ldr r4, =gPlayerParty
+ adds r0, r4, 0
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0x64
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0xC8
+ bl shedinja_something
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ movs r2, 0xC8
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ movs r1, 0xFA
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ ldr r4, =gEnemyParty
+ adds r0, r4, 0
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0x64
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0xC8
+ bl shedinja_something
+ movs r2, 0x96
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ movs r1, 0xC8
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ movs r2, 0xFA
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ b _08037986
+ .pool
+_08037908:
+ bl sub_8032768
+ bl sub_8184E58
+ ldr r2, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r2, 0x1]
+ strb r0, [r2, 0x2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08037934
+ movs r0, 0xE
+ strb r0, [r2]
+ b _080379D6
+ .pool
+_08037934:
+ movs r0, 0x10
+ strb r0, [r2]
+ b _080379D6
+_0803793A:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _080379D6
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gUnknown_0203BD2C
+ movs r2, 0x4
+ bl link_0800A448
+ b _08037986
+ .pool
+_0803795C:
+ bl sub_800A550
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x3
+ bne _080379D6
+ bl sub_800A5B4
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08037986
+ ldr r0, =gUnknown_0203BD2C
+ lsls r1, r7, 8
+ ldr r2, =gUnknown_020223C4
+ adds r1, r2
+ movs r2, 0x4
+_08037982:
+ bl memcpy
+_08037986:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _080379D6
+ .pool
+_080379A0:
+ ldr r0, =gUnknown_02024333
+ adds r1, r0, 0x1
+ bl battle_load_something
+ lsls r0, 24
+ cmp r0, 0
+ beq _080379D6
+ bl sub_8166188
+ ldr r2, =gUnknown_03005D00
+ ldr r1, =gMain
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r0, =sub_8039EF0
+ str r0, [r1]
+ ldr r0, =sub_8038420
+ bl SetMainCallback2
+ ldr r2, =gBattleTypeFlags
+ ldr r1, [r2]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080379D6
+ movs r0, 0x20
+ orrs r1, r0
+ str r1, [r2]
+_080379D6:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8037458
+
+ thumb_func_start sub_80379F8
+sub_80379F8: @ 80379F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r0, 0
+ mov r8, r0
+ ldr r6, =gUnknown_02022FF8
+ mov r10, r6
+_08037A12:
+ ldr r1, [sp]
+ add r1, r8
+ movs r0, 0x64
+ adds r4, r1, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ mov r1, r8
+ lsls r5, r1, 5
+ strh r0, [r6]
+ adds r0, r4, 0
+ movs r1, 0xC
+ bl GetMonData
+ strh r0, [r6, 0x2]
+ movs r0, 0x4
+ add r0, r10
+ mov r9, r0
+ adds r7, r5, r0
+ adds r0, r4, 0
+ movs r1, 0x2
+ adds r2, r7, 0
+ bl GetMonData
+ adds r0, r4, 0
+ movs r1, 0x38
+ bl GetMonData
+ strb r0, [r6, 0xF]
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ strh r0, [r6, 0x10]
+ adds r0, r4, 0
+ movs r1, 0x3A
+ bl GetMonData
+ strh r0, [r6, 0x12]
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+ mov r1, r10
+ adds r1, 0x14
+ adds r5, r1
+ str r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetMonData
+ str r0, [r6, 0x18]
+ adds r0, r4, 0
+ bl GetMonGender
+ strb r0, [r6, 0x1C]
+ adds r0, r7, 0
+ bl StripExtCtrlCodes
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl GetMonData
+ cmp r0, 0x1
+ beq _08037AA4
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_81DB4DC
+_08037AA4:
+ adds r6, 0x20
+ movs r1, 0x1
+ add r8, r1
+ mov r0, r8
+ cmp r0, 0x2
+ ble _08037A12
+ ldr r0, =gUnknown_02023058
+ ldr r0, [r0]
+ mov r1, r9
+ subs r1, 0x4
+ movs r2, 0x60
+ bl memcpy
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80379F8
+
+ thumb_func_start sub_8037ADC
+sub_8037ADC: @ 8037ADC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ movs r0, 0x4
+ mov r9, r0
+ movs r4, 0xF
+ ldr r6, =gBattleTypeFlags
+ ldr r0, [r6]
+ movs r1, 0x80
+ lsls r1, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _08037B02
+ movs r1, 0x2
+ mov r9, r1
+ movs r4, 0x3
+_08037B02:
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, =gBattleScripting
+ adds r0, 0x25
+ movs r2, 0
+ mov r8, r2
+ strb r7, [r0]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0xB4
+ str r1, [sp]
+ adds r0, 0xAC
+ mov r10, r0
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ ldr r5, =gBattleCommunication
+ ldrb r0, [r5]
+ cmp r0, 0x1
+ beq _08037BA4
+ cmp r0, 0x1
+ bgt _08037B50
+ cmp r0, 0
+ beq _08037B5E
+ b _08037D0A
+ .pool
+_08037B50:
+ cmp r0, 0x2
+ bne _08037B56
+ b _08037C64
+_08037B56:
+ cmp r0, 0x3
+ bne _08037B5C
+ b _08037C9E
+_08037B5C:
+ b _08037D0A
+_08037B5E:
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037B68
+ b _08037D0A
+_08037B68:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037B74
+ b _08037D0A
+_08037B74:
+ ldr r4, =gUnknown_02023058
+ movs r0, 0x60
+ bl Alloc
+ str r0, [r4]
+ movs r0, 0
+ bl sub_80379F8
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [r4]
+ movs r2, 0x60
+ bl link_0800A448
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ b _08037D0A
+ .pool
+_08037BA4:
+ bl sub_800A550
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, r4
+ beq _08037BB2
+ b _08037D0A
+_08037BB2:
+ bl sub_800A5B4
+ movs r5, 0
+ cmp r8, r9
+ bge _08037C2E
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r6, r0, 2
+ mov r8, r5
+ ldr r4, =gUnknown_020223C4
+_08037BC6:
+ cmp r5, r7
+ beq _08037C1E
+ mov r2, r9
+ cmp r2, 0x4
+ bne _08037C14
+ ldr r2, =gLinkPlayers
+ mov r1, r8
+ adds r0, r1, r2
+ ldrh r1, [r0, 0x18]
+ movs r3, 0x1
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08037BF8
+ adds r0, r6, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08037C04
+ b _08037C1E
+ .pool
+_08037BF8:
+ adds r0, r6, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08037C1E
+_08037C04:
+ ldr r0, =gUnknown_02022FF8
+ adds r1, r4, 0
+ movs r2, 0x60
+ bl memcpy
+ b _08037C1E
+ .pool
+_08037C14:
+ ldr r0, =gUnknown_02022FF8
+ adds r1, r4, 0
+ movs r2, 0x60
+ bl memcpy
+_08037C1E:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r4, r2
+ movs r0, 0x1C
+ add r8, r0
+ adds r5, 0x1
+ cmp r5, r9
+ blt _08037BC6
+_08037C2E:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, =gMain
+ ldr r0, [r1, 0x8]
+ ldr r2, [sp]
+ str r0, [r2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ mov r2, r10
+ str r0, [r2]
+ ldr r0, =sub_8037ADC
+ str r0, [r1, 0x8]
+ bl sub_81B9150
+ b _08037D0A
+ .pool
+_08037C64:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _08037D0A
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08037D0A
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08037C98
+ bl sub_800ADF8
+ b _08037D0A
+ .pool
+_08037C98:
+ bl sub_800AC34
+ b _08037D0A
+_08037C9E:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08037CE4
+ bl sub_8010500
+ lsls r0, 24
+ cmp r0, 0
+ beq _08037D0A
+ mov r1, r10
+ ldr r0, [r1]
+ str r0, [r6]
+ ldr r1, =gMain
+ ldr r2, [sp]
+ ldr r0, [r2]
+ str r0, [r1, 0x8]
+ ldr r0, =InitBattle
+ bl SetMainCallback2
+ ldr r4, =gUnknown_02023058
+ ldr r0, [r4]
+ bl Free
+ mov r0, r8
+ str r0, [r4]
+ b _08037D0A
+ .pool
+_08037CE4:
+ ldr r0, =gUnknown_03003124
+ ldrb r5, [r0]
+ cmp r5, 0
+ bne _08037D0A
+ mov r1, r10
+ ldr r0, [r1]
+ str r0, [r6]
+ ldr r1, =gMain
+ ldr r2, [sp]
+ ldr r0, [r2]
+ str r0, [r1, 0x8]
+ ldr r0, =InitBattle
+ bl SetMainCallback2
+ ldr r4, =gUnknown_02023058
+ ldr r0, [r4]
+ bl Free
+ str r5, [r4]
+_08037D0A:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8037ADC
+
+ thumb_func_start intro_end
+intro_end: @ 8037D2C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ movs r1, 0xB4
+ adds r1, r0
+ mov r8, r1
+ adds r7, r0, 0
+ adds r7, 0xAC
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ ldr r5, =gBattleCommunication
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _08037D64
+ cmp r0, 0x1
+ beq _08037DA4
+ b _08037DD6
+ .pool
+_08037D64:
+ ldr r4, =gUnknown_02023058
+ movs r0, 0x60
+ bl Alloc
+ str r0, [r4]
+ movs r0, 0x3
+ bl sub_80379F8
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r1, =gMain
+ ldr r0, [r1, 0x8]
+ mov r2, r8
+ str r0, [r2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ str r0, [r7]
+ ldr r0, =intro_end
+ str r0, [r1, 0x8]
+ bl sub_81B9150
+ b _08037DD6
+ .pool
+_08037DA4:
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ bne _08037DD6
+ movs r0, 0x2
+ strb r0, [r5]
+ ldr r1, =gBattleTypeFlags
+ ldr r0, [r7]
+ str r0, [r1]
+ ldr r1, =gMain
+ mov r2, r8
+ ldr r0, [r2]
+ str r0, [r1, 0x8]
+ ldr r0, =InitBattle
+ bl SetMainCallback2
+ ldr r4, =gUnknown_02023058
+ ldr r0, [r4]
+ bl Free
+ str r6, [r4]
+_08037DD6:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end intro_end
+
+ thumb_func_start sub_8037DF4
+sub_8037DF4: @ 8037DF4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, =gBattleScripting
+ adds r0, 0x25
+ strb r7, [r0]
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ ldr r0, =gBattleCommunication
+ ldrb r0, [r0]
+ cmp r0, 0xA
+ bls _08037E20
+ b _080383F8
+_08037E20:
+ lsls r0, 2
+ ldr r1, =_08037E38
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08037E38:
+ .4byte _08037E64
+ .4byte _08037EA8
+ .4byte _08037F50
+ .4byte _08038026
+ .4byte _0803804C
+ .4byte _08038140
+ .4byte _08038164
+ .4byte _080382CC
+ .4byte _0803832C
+ .4byte _0803836C
+ .4byte _080383BC
+_08037E64:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08037E90
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl ShowBg
+ bl sub_805EF14
+ ldr r1, =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1]
+_08037E90:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037E9A
+ b _080383F8
+_08037E9A:
+ bl sub_800E0E8
+ b _080383F8
+ .pool
+_08037EA8:
+ ldr r2, =gBattleTypeFlags
+ ldr r1, [r2]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08037F30
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037EBE
+ b _080383F8
+_08037EBE:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _08037F02
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ movs r5, 0xC0
+ lsls r5, 1
+ adds r0, r5
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r4]
+ ldr r2, =0x00000181
+ adds r1, r0, r2
+ movs r0, 0x3
+ strb r0, [r1]
+ bl sub_8036A5C
+ bl sub_8036B44
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [r4]
+ adds r1, r5
+ movs r2, 0x20
+ bl link_0800A448
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08037F02:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08037F0C
+ b _080383F8
+_08037F0C:
+ movs r0, 0
+ movs r1, 0
+ bl sub_800DFB4
+ b _080383F8
+ .pool
+_08037F30:
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ bne _08037F40
+ movs r0, 0x4
+ orrs r1, r0
+ str r1, [r2]
+_08037F40:
+ ldr r1, =gBattleCommunication
+ movs r0, 0x7
+ strb r0, [r1]
+ bl berry_801017C
+ b _080383F8
+ .pool
+_08037F50:
+ bl sub_800A550
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0xF
+ beq _08037F5E
+ b _080383F8
+_08037F5E:
+ bl sub_800A5B4
+ movs r0, 0x4
+ adds r1, r7, 0
+ bl sub_8036EB8
+ bl berry_801017C
+ bl sub_8068AA4
+ ldr r0, =task00_0800F6FC
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x87
+ lsls r1, 1
+ strh r1, [r0, 0xA]
+ movs r1, 0x5A
+ strh r1, [r0, 0xC]
+ strh r2, [r0, 0x12]
+ strh r2, [r0, 0xE]
+ strh r2, [r0, 0x10]
+ ldr r1, =gUnknown_020223C4
+ adds r4, r0, 0
+ adds r5, r1, 0x2
+ movs r7, 0x3F
+ movs r6, 0x3
+_08037FA4:
+ ldrh r0, [r5]
+ str r2, [sp]
+ bl sub_8185F90
+ ldr r0, =gLinkPlayers
+ ldr r2, [sp]
+ adds r0, r2, r0
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x1
+ beq _08037FE6
+ cmp r0, 0x1
+ bgt _08037FD4
+ cmp r0, 0
+ beq _08037FDE
+ b _0803800C
+ .pool
+_08037FD4:
+ cmp r0, 0x2
+ beq _08037FEE
+ cmp r0, 0x3
+ beq _08037FFE
+ b _0803800C
+_08037FDE:
+ ldrh r0, [r5]
+ adds r1, r7, 0
+ ands r1, r0
+ b _08037FF6
+_08037FE6:
+ ldrh r0, [r5]
+ adds r1, r7, 0
+ ands r1, r0
+ b _08038006
+_08037FEE:
+ ldrh r0, [r5]
+ adds r1, r7, 0
+ ands r1, r0
+ lsls r1, 6
+_08037FF6:
+ ldrh r0, [r4, 0xE]
+ orrs r1, r0
+ strh r1, [r4, 0xE]
+ b _0803800C
+_08037FFE:
+ ldrh r0, [r5]
+ adds r1, r7, 0
+ ands r1, r0
+ lsls r1, 6
+_08038006:
+ ldrh r0, [r4, 0x10]
+ orrs r1, r0
+ strh r1, [r4, 0x10]
+_0803800C:
+ movs r0, 0x80
+ lsls r0, 1
+ adds r5, r0
+ adds r2, 0x1C
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08037FA4
+ bl ZeroEnemyPartyMons
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08038026:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _08038032
+ b _080383F8
+_08038032:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty
+ movs r2, 0xC8
+ bl link_0800A448
+ b _080383A6
+ .pool
+_0803804C:
+ bl sub_800A550
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0xF
+ beq _0803805A
+ b _080383F8
+_0803805A:
+ bl sub_800A5B4
+ movs r6, 0
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 2
+ mov r8, r0
+ ldr r4, =gUnknown_020223C4
+ movs r5, 0
+_0803806C:
+ cmp r6, r7
+ bne _080380A0
+ ldr r0, =gLinkPlayers
+ adds r0, r5, r0
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _0803808C
+ cmp r0, 0x1
+ bge _08038098
+ cmp r0, 0
+ beq _08038090
+ b _0803812A
+ .pool
+_0803808C:
+ cmp r0, 0x3
+ bne _0803812A
+_08038090:
+ ldr r0, =gPlayerParty
+ b _08038110
+ .pool
+_08038098:
+ ldr r0, =gPlayerParty + 300
+ b _08038110
+ .pool
+_080380A0:
+ ldr r2, =gLinkPlayers
+ adds r0, r5, r2
+ ldrh r1, [r0, 0x18]
+ movs r3, 0x1
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080380C4
+ mov r1, r8
+ adds r0, r1, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080380D2
+ b _080380F8
+ .pool
+_080380C4:
+ mov r1, r8
+ adds r0, r1, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080380F8
+_080380D2:
+ adds r0, r5, r2
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _080380E4
+ cmp r0, 0x1
+ bge _080380F0
+ cmp r0, 0
+ beq _080380E8
+ b _0803812A
+_080380E4:
+ cmp r0, 0x3
+ bne _0803812A
+_080380E8:
+ ldr r0, =gPlayerParty
+ b _08038110
+ .pool
+_080380F0:
+ ldr r0, =gPlayerParty + 300
+ b _08038110
+ .pool
+_080380F8:
+ adds r0, r5, r2
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _0803810A
+ cmp r0, 0x1
+ bge _08038120
+ cmp r0, 0
+ beq _0803810E
+ b _0803812A
+_0803810A:
+ cmp r0, 0x3
+ bne _0803812A
+_0803810E:
+ ldr r0, =gEnemyParty
+_08038110:
+ adds r1, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+ b _0803812A
+ .pool
+_08038120:
+ ldr r0, =gEnemyParty + 300
+ adds r1, r4, 0
+ movs r2, 0xC8
+ bl memcpy
+_0803812A:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r4, r2
+ adds r5, 0x1C
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0803806C
+ b _080383A6
+ .pool
+_08038140:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803814C
+ b _080383F8
+_0803814C:
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gPlayerParty + 200
+ movs r2, 0x64
+ bl link_0800A448
+ b _080383A6
+ .pool
+_08038164:
+ bl sub_800A550
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0xF
+ beq _08038172
+ b _080383F8
+_08038172:
+ bl sub_800A5B4
+ movs r6, 0
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 2
+ mov r8, r0
+ ldr r4, =gUnknown_020223C4
+ movs r5, 0
+_08038184:
+ cmp r6, r7
+ bne _080381B8
+ ldr r0, =gLinkPlayers
+ adds r0, r5, r0
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _080381A4
+ cmp r0, 0x1
+ bge _080381B0
+ cmp r0, 0
+ beq _080381A8
+ b _08038242
+ .pool
+_080381A4:
+ cmp r0, 0x3
+ bne _08038242
+_080381A8:
+ ldr r0, =gPlayerParty + 200
+ b _08038228
+ .pool
+_080381B0:
+ ldr r0, =gPlayerParty + 500
+ b _08038228
+ .pool
+_080381B8:
+ ldr r2, =gLinkPlayers
+ adds r0, r5, r2
+ ldrh r1, [r0, 0x18]
+ movs r3, 0x1
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080381DC
+ mov r1, r8
+ adds r0, r1, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080381EA
+ b _08038210
+ .pool
+_080381DC:
+ mov r1, r8
+ adds r0, r1, r2
+ ldrh r1, [r0, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08038210
+_080381EA:
+ adds r0, r5, r2
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _080381FC
+ cmp r0, 0x1
+ bge _08038208
+ cmp r0, 0
+ beq _08038200
+ b _08038242
+_080381FC:
+ cmp r0, 0x3
+ bne _08038242
+_08038200:
+ ldr r0, =gPlayerParty + 200
+ b _08038228
+ .pool
+_08038208:
+ ldr r0, =gPlayerParty + 500
+ b _08038228
+ .pool
+_08038210:
+ adds r0, r5, r2
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x2
+ bgt _08038222
+ cmp r0, 0x1
+ bge _08038238
+ cmp r0, 0
+ beq _08038226
+ b _08038242
+_08038222:
+ cmp r0, 0x3
+ bne _08038242
+_08038226:
+ ldr r0, =gEnemyParty + 200
+_08038228:
+ adds r1, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ b _08038242
+ .pool
+_08038238:
+ ldr r0, =gEnemyParty + 500
+ adds r1, r4, 0
+ movs r2, 0x64
+ bl memcpy
+_08038242:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r4, r2
+ adds r5, 0x1C
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _08038184
+ ldr r4, =gPlayerParty
+ adds r0, r4, 0
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0x64
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0xC8
+ bl shedinja_something
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ movs r2, 0xC8
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ movs r1, 0xFA
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ ldr r4, =gEnemyParty
+ adds r0, r4, 0
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0x64
+ bl shedinja_something
+ adds r0, r4, 0
+ adds r0, 0xC8
+ bl shedinja_something
+ movs r2, 0x96
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ movs r1, 0xC8
+ lsls r1, 1
+ adds r0, r4, r1
+ bl shedinja_something
+ movs r2, 0xFA
+ lsls r2, 1
+ adds r0, r4, r2
+ bl shedinja_something
+ b _080383A6
+ .pool
+_080382CC:
+ bl sub_8032768
+ bl sub_8184E58
+ ldr r3, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r3, 0x1]
+ strb r0, [r3, 0x2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08038326
+ movs r6, 0
+ ldr r0, =gLinkPlayers
+ ldrb r1, [r0]
+ adds r4, r3, 0
+ adds r2, r0, 0
+ cmp r1, 0x3
+ bne _0803830A
+ movs r3, 0xFF
+_080382F8:
+ adds r2, 0x1C
+ adds r6, 0x1
+ cmp r6, 0x3
+ bgt _0803830A
+ ldrh r1, [r2]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0x3
+ beq _080382F8
+_0803830A:
+ cmp r6, 0x4
+ bne _08038320
+ movs r0, 0x8
+ strb r0, [r4]
+ b _080383F8
+ .pool
+_08038320:
+ movs r0, 0xA
+ strb r0, [r4]
+ b _080383F8
+_08038326:
+ movs r0, 0xA
+ strb r0, [r3]
+ b _080383F8
+_0803832C:
+ bl sub_800A520
+ lsls r0, 24
+ cmp r0, 0
+ beq _080383F8
+ ldr r0, =gBattleStruct
+ ldr r4, [r0]
+ movs r0, 0xC0
+ lsls r0, 1
+ adds r4, r0
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r0, =gUnknown_0203BD2C
+ ldr r0, [r0]
+ str r0, [r4, 0x4]
+ bl bitmask_all_link_players_but_self
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ movs r2, 0x8
+ bl link_0800A448
+ b _080383A6
+ .pool
+_0803836C:
+ bl sub_800A550
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0xF
+ bne _080383F8
+ bl sub_800A5B4
+ movs r2, 0
+ b _08038386
+_08038380:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+_08038386:
+ cmp r2, 0x3
+ bhi _080383A6
+ ldr r4, =gUnknown_020223C4
+ lsls r3, r2, 8
+ adds r0, r3, r4
+ ldrh r0, [r0]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08038380
+ adds r1, r4, 0x4
+ adds r1, r3, r1
+ ldr r0, =gUnknown_0203BD2C
+ movs r2, 0x4
+ bl memcpy
+_080383A6:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _080383F8
+ .pool
+_080383BC:
+ ldr r0, =gUnknown_02024333
+ adds r1, r0, 0x1
+ bl battle_load_something
+ lsls r0, 24
+ cmp r0, 0
+ beq _080383F8
+ ldr r2, =gUnknown_03005D00
+ ldr r1, =gMain
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r0, =sub_8039EF0
+ str r0, [r1]
+ ldr r0, =sub_8038420
+ bl SetMainCallback2
+ ldr r3, =gBattleTypeFlags
+ ldr r2, [r3]
+ movs r0, 0x2
+ ands r0, r2
+ cmp r0, 0
+ beq _080383F8
+ ldr r0, =gTrainerBattleOpponent_A
+ movs r4, 0x80
+ lsls r4, 4
+ adds r1, r4, 0
+ strh r1, [r0]
+ movs r0, 0x20
+ orrs r2, r0
+ str r2, [r3]
+_080383F8:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8037DF4
+
+ thumb_func_start sub_8038420
+sub_8038420: @ 8038420
+ push {lr}
+ sub sp, 0x4
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl RunTextPrinters
+ bl UpdatePaletteFade
+ bl RunTasks
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2C]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08038482
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _08038482
+ bl rfu_lacks_rfufunc
+ lsls r0, 24
+ cmp r0, 0
+ beq _08038482
+ ldr r2, =gScriptResult
+ ldr r1, =gBattleOutcome
+ movs r0, 0x5
+ strb r0, [r1]
+ movs r0, 0x5
+ strh r0, [r2]
+ bl ResetPaletteFadeControl
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, =sub_80384E4
+ bl SetMainCallback2
+_08038482:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038420
+
+ thumb_func_start sub_803849C
+sub_803849C: @ 803849C
+ push {lr}
+ ldr r1, =gMain
+ ldr r0, =gUnknown_03005D00
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r2, =gUnknown_02039B28
+ movs r0, 0x3
+ strb r0, [r2, 0x15]
+ ldr r0, =0x00000439
+ adds r1, r0
+ ldrb r2, [r1]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ bl ZeroEnemyPartyMons
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ bl sub_805F094
+ bl dp11_free
+ bl sub_8057028
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803849C
+
+ thumb_func_start sub_80384E4
+sub_80384E4: @ 80384E4
+ push {lr}
+ bl UpdatePaletteFade
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08038512
+ ldr r0, =gMPlay_SE1
+ bl m4aMPlayStop
+ ldr r0, =gMPlay_SE2
+ bl m4aMPlayStop
+ bl sub_803849C
+ bl FreeAllWindowBuffers
+ ldr r0, =gMain
+ ldr r0, [r0, 0x8]
+ bl SetMainCallback2
+_08038512:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80384E4
+
+ thumb_func_start sub_8038528
+sub_8038528: @ 8038528
+ movs r1, 0
+ strh r1, [r0, 0x2E]
+ ldr r1, =sub_8038538
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_8038528
+
+ thumb_func_start sub_8038538
+sub_8038538: @ 8038538
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ ldr r5, =0x0201c000
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ cmp r1, 0x1
+ beq _0803856C
+ cmp r1, 0x1
+ bgt _08038554
+ cmp r1, 0
+ beq _0803855A
+ b _080385DC
+ .pool
+_08038554:
+ cmp r1, 0x2
+ beq _080385C8
+ b _080385DC
+_0803855A:
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ strh r1, [r3, 0x30]
+ ldr r0, =0x00000281
+ strh r0, [r3, 0x32]
+ strh r1, [r3, 0x34]
+ movs r0, 0x1
+ strh r0, [r3, 0x36]
+_0803856C:
+ ldrh r0, [r3, 0x36]
+ subs r0, 0x1
+ strh r0, [r3, 0x36]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080385DC
+ movs r0, 0x2
+ strh r0, [r3, 0x36]
+ movs r4, 0x30
+ ldrsh r2, [r3, r4]
+ movs r0, 0x34
+ ldrsh r1, [r3, r0]
+ lsls r1, 5
+ adds r2, r1
+ movs r4, 0x32
+ ldrsh r0, [r3, r4]
+ subs r0, r1
+ movs r4, 0x3D
+ lsls r0, 1
+ adds r0, r5
+ lsls r2, 1
+ adds r2, r5
+ movs r1, 0x1C
+_0803859A:
+ strh r4, [r2]
+ strh r4, [r0]
+ adds r0, 0x4
+ adds r2, 0x4
+ subs r1, 0x2
+ cmp r1, 0
+ bge _0803859A
+ ldrh r0, [r3, 0x34]
+ adds r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080385DC
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ movs r0, 0x20
+ strh r0, [r3, 0x30]
+ b _080385DC
+ .pool
+_080385C8:
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080385DC
+ ldr r0, =sub_8036760
+ bl SetMainCallback2
+_080385DC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038538
+
+ thumb_func_start CreateNPCTrainerParty
+CreateNPCTrainerParty: @ 80385E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ str r0, [sp, 0x10]
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp, 0x14]
+ lsls r2, 24
+ lsrs r2, 24
+ movs r0, 0
+ mov r9, r0
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ bne _08038610
+ movs r0, 0
+ b _080389E2
+_08038610:
+ ldr r4, =gBattleTypeFlags
+ ldr r0, [r4]
+ ldr r1, =0x043f0908
+ ands r0, r1
+ ldr r1, [sp, 0x14]
+ lsls r1, 2
+ str r1, [sp, 0x20]
+ cmp r0, 0x8
+ beq _08038624
+ b _080389D2
+_08038624:
+ cmp r2, 0x1
+ bne _0803862C
+ bl ZeroEnemyPartyMons
+_0803862C:
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _08038668
+ ldr r0, =gTrainers
+ ldr r2, [sp, 0x20]
+ ldr r3, [sp, 0x14]
+ adds r1, r2, r3
+ lsls r1, 3
+ adds r1, r0
+ adds r2, r1, 0
+ adds r2, 0x20
+ ldrb r1, [r2]
+ movs r4, 0x3
+ str r4, [sp, 0x1C]
+ adds r4, r0, 0
+ cmp r1, 0x3
+ bhi _0803867C
+ adds r2, r1, 0
+ str r2, [sp, 0x1C]
+ b _0803867C
+ .pool
+_08038668:
+ ldr r1, =gTrainers
+ ldr r2, [sp, 0x20]
+ ldr r3, [sp, 0x14]
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ str r0, [sp, 0x1C]
+ adds r4, r1, 0
+_0803867C:
+ movs r0, 0
+ str r0, [sp, 0x18]
+ b _080389B4
+ .pool
+_08038688:
+ ldr r2, [sp, 0x20]
+ ldr r3, [sp, 0x14]
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r1, r0, r4
+ ldrb r0, [r1, 0x18]
+ cmp r0, 0x1
+ bne _0803869E
+ movs r0, 0x80
+ mov r10, r0
+ b _080386B0
+_0803869E:
+ ldrb r1, [r1, 0x2]
+ movs r0, 0x80
+ ands r0, r1
+ movs r1, 0x88
+ mov r10, r1
+ cmp r0, 0
+ beq _080386B0
+ movs r2, 0x78
+ mov r10, r2
+_080386B0:
+ movs r6, 0
+ ldr r2, [sp, 0x20]
+ ldr r3, [sp, 0x14]
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r1, r4, 0x4
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r3, [sp, 0x18]
+ adds r3, 0x1
+ str r3, [sp, 0x24]
+ cmp r0, 0xFF
+ beq _080386E6
+ adds r3, r1, 0
+_080386CC:
+ ldr r0, [sp, 0x14]
+ adds r1, r2, r0
+ lsls r1, 3
+ adds r0, r6, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ add r9, r0
+ adds r6, 0x1
+ adds r1, r6, r1
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _080386CC
+_080386E6:
+ ldr r1, [sp, 0x20]
+ ldr r2, [sp, 0x14]
+ adds r0, r1, r2
+ lsls r1, r0, 3
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08038794
+ cmp r0, 0x1
+ bgt _08038700
+ cmp r0, 0
+ beq _0803870E
+ b _080389AC
+_08038700:
+ cmp r0, 0x2
+ bne _08038706
+ b _08038854
+_08038706:
+ cmp r0, 0x3
+ bne _0803870C
+ b _080388E8
+_0803870C:
+ b _080389AC
+_0803870E:
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r4, [r0]
+ movs r6, 0
+ ldr r3, [sp, 0x18]
+ lsls r2, r3, 3
+ adds r0, r2, r4
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xB
+ muls r0, r1
+ ldr r1, =gSpeciesNames
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r5, r2, 0
+ cmp r0, 0xFF
+ beq _08038750
+ adds r3, r1, 0
+ movs r7, 0xB
+_08038734:
+ adds r0, r2, r4
+ ldrh r0, [r0, 0x4]
+ adds r1, r0, 0
+ muls r1, r7
+ adds r0, r6, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ add r9, r0
+ adds r6, 0x1
+ adds r1, r6, r1
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _08038734
+_08038750:
+ mov r2, r9
+ lsls r0, r2, 8
+ add r10, r0
+ adds r4, r5, r4
+ ldrh r1, [r4]
+ lsls r0, r1, 5
+ subs r0, r1
+ movs r1, 0xFF
+ bl __divsi3
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r3, [sp, 0x18]
+ movs r1, 0x64
+ adds r0, r3, 0
+ muls r0, r1
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldrh r1, [r4, 0x4]
+ ldrb r2, [r4, 0x2]
+ movs r3, 0x1
+ str r3, [sp]
+ mov r3, r10
+ str r3, [sp, 0x4]
+ movs r3, 0x2
+ str r3, [sp, 0x8]
+ movs r3, 0
+ str r3, [sp, 0xC]
+ adds r3, r6, 0
+ bl CreateMon
+ b _080389AC
+ .pool
+_08038794:
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r7, [r0]
+ movs r6, 0
+ ldr r4, [sp, 0x18]
+ lsls r2, r4, 4
+ adds r0, r2, r7
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xB
+ muls r0, r1
+ ldr r1, =gSpeciesNames
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r8, r2
+ cmp r0, 0xFF
+ beq _080387D6
+ adds r3, r1, 0
+ movs r4, 0xB
+_080387BA:
+ adds r0, r2, r7
+ ldrh r0, [r0, 0x4]
+ adds r1, r0, 0
+ muls r1, r4
+ adds r0, r6, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ add r9, r0
+ adds r6, 0x1
+ adds r1, r6, r1
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _080387BA
+_080387D6:
+ mov r2, r9
+ lsls r0, r2, 8
+ add r10, r0
+ mov r3, r8
+ adds r4, r3, r7
+ ldrh r1, [r4]
+ lsls r0, r1, 5
+ subs r0, r1
+ movs r1, 0xFF
+ bl __divsi3
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, [sp, 0x18]
+ movs r1, 0x64
+ adds r5, r0, 0
+ muls r5, r1
+ ldr r2, [sp, 0x10]
+ adds r5, r2, r5
+ ldrh r1, [r4, 0x4]
+ ldrb r2, [r4, 0x2]
+ movs r0, 0x1
+ str r0, [sp]
+ mov r3, r10
+ str r3, [sp, 0x4]
+ movs r0, 0x2
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ adds r0, r5, 0
+ adds r3, r6, 0
+ bl CreateMon
+ movs r6, 0
+ mov r0, r8
+ adds r0, 0x6
+ adds r4, r7, r0
+_08038820:
+ adds r1, r6, 0
+ adds r1, 0xD
+ adds r0, r5, 0
+ adds r2, r4, 0
+ bl SetMonData
+ adds r1, r6, 0
+ adds r1, 0x11
+ ldrh r0, [r4]
+ lsls r2, r0, 1
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, =gBattleMoves + 0x4 @ PP offset
+ adds r2, r0
+ adds r0, r5, 0
+ bl SetMonData
+ adds r4, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _08038820
+ b _080389AC
+ .pool
+_08038854:
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r4, [r0]
+ movs r6, 0
+ ldr r0, [sp, 0x18]
+ lsls r2, r0, 3
+ adds r0, r2, r4
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xB
+ muls r0, r1
+ ldr r1, =gSpeciesNames
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r5, r2, 0
+ cmp r0, 0xFF
+ beq _08038896
+ adds r3, r1, 0
+ movs r7, 0xB
+_0803887A:
+ adds r0, r2, r4
+ ldrh r0, [r0, 0x4]
+ adds r1, r0, 0
+ muls r1, r7
+ adds r0, r6, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ add r9, r0
+ adds r6, 0x1
+ adds r1, r6, r1
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _0803887A
+_08038896:
+ mov r2, r9
+ lsls r0, r2, 8
+ add r10, r0
+ adds r5, r4
+ ldrh r1, [r5]
+ lsls r0, r1, 5
+ subs r0, r1
+ movs r1, 0xFF
+ bl __divsi3
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r3, [sp, 0x18]
+ movs r0, 0x64
+ adds r4, r3, 0
+ muls r4, r0
+ ldr r1, [sp, 0x10]
+ adds r4, r1, r4
+ ldrh r1, [r5, 0x4]
+ ldrb r2, [r5, 0x2]
+ movs r0, 0x1
+ str r0, [sp]
+ mov r3, r10
+ str r3, [sp, 0x4]
+ movs r0, 0x2
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl CreateMon
+ adds r5, 0x6
+ adds r0, r4, 0
+ movs r1, 0xC
+ adds r2, r5, 0
+ bl SetMonData
+ b _080389AC
+ .pool
+_080388E8:
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r7, [r0]
+ movs r6, 0
+ ldr r4, [sp, 0x18]
+ lsls r2, r4, 4
+ adds r0, r2, r7
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xB
+ muls r0, r1
+ ldr r1, =gSpeciesNames
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r8, r2
+ cmp r0, 0xFF
+ beq _0803892A
+ adds r3, r1, 0
+ movs r4, 0xB
+_0803890E:
+ adds r0, r2, r7
+ ldrh r0, [r0, 0x4]
+ adds r1, r0, 0
+ muls r1, r4
+ adds r0, r6, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ add r9, r0
+ adds r6, 0x1
+ adds r1, r6, r1
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _0803890E
+_0803892A:
+ mov r2, r9
+ lsls r0, r2, 8
+ add r10, r0
+ mov r3, r8
+ adds r5, r3, r7
+ ldrh r1, [r5]
+ lsls r0, r1, 5
+ subs r0, r1
+ movs r1, 0xFF
+ bl __divsi3
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, [sp, 0x18]
+ movs r1, 0x64
+ adds r4, r0, 0
+ muls r4, r1
+ ldr r2, [sp, 0x10]
+ adds r4, r2, r4
+ ldrh r1, [r5, 0x4]
+ ldrb r2, [r5, 0x2]
+ movs r0, 0x1
+ str r0, [sp]
+ mov r3, r10
+ str r3, [sp, 0x4]
+ movs r0, 0x2
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl CreateMon
+ adds r5, 0x6
+ adds r0, r4, 0
+ movs r1, 0xC
+ adds r2, r5, 0
+ bl SetMonData
+ movs r6, 0
+ adds r5, r4, 0
+ mov r0, r8
+ adds r0, 0x8
+ adds r4, r7, r0
+_08038982:
+ adds r1, r6, 0
+ adds r1, 0xD
+ adds r0, r5, 0
+ adds r2, r4, 0
+ bl SetMonData
+ adds r1, r6, 0
+ adds r1, 0x11
+ ldrh r0, [r4]
+ lsls r2, r0, 1
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, =gBattleMoves + 0x4 @ PP offset
+ adds r2, r0
+ adds r0, r5, 0
+ bl SetMonData
+ adds r4, 0x2
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _08038982
+_080389AC:
+ ldr r4, [sp, 0x24]
+ str r4, [sp, 0x18]
+ ldr r4, =gTrainers
+ ldr r0, [sp, 0x18]
+_080389B4:
+ ldr r1, [sp, 0x1C]
+ cmp r0, r1
+ bge _080389BC
+ b _08038688
+_080389BC:
+ ldr r2, =gBattleTypeFlags
+ ldr r1, =gTrainers
+ ldr r3, [sp, 0x20]
+ ldr r4, [sp, 0x14]
+ adds r0, r3, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+_080389D2:
+ ldr r0, =gTrainers
+ ldr r2, [sp, 0x20]
+ ldr r3, [sp, 0x14]
+ adds r1, r2, r3
+ lsls r1, 3
+ adds r1, r0
+ adds r1, 0x20
+ ldrb r0, [r1]
+_080389E2:
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end CreateNPCTrainerParty
+
+ thumb_func_start sub_8038A04
+sub_8038A04: @ 8038A04
+ push {lr}
+ ldr r0, =0x04000006
+ ldrh r0, [r0]
+ subs r0, 0x6F
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x30
+ bhi _08038A1E
+ movs r1, 0x98
+ lsls r1, 8
+ movs r0, 0x8
+ bl SetGpuReg
+_08038A1E:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038A04
+
+ thumb_func_start vblank_cb_08078BB4
+vblank_cb_08078BB4: @ 8038A28
+ push {lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x013f0102
+ ands r0, r1
+ cmp r0, 0
+ bne _08038A3A
+ bl Random
+_08038A3A:
+ ldr r0, =gUnknown_02022E14
+ ldrh r1, [r0]
+ movs r0, 0x10
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E16
+ ldrh r1, [r0]
+ movs r0, 0x12
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E18
+ ldrh r1, [r0]
+ movs r0, 0x14
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E1A
+ ldrh r1, [r0]
+ movs r0, 0x16
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E1C
+ ldrh r1, [r0]
+ movs r0, 0x18
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E1E
+ ldrh r1, [r0]
+ movs r0, 0x1A
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E20
+ ldrh r1, [r0]
+ movs r0, 0x1C
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E22
+ ldrh r1, [r0]
+ movs r0, 0x1E
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E24
+ ldrh r1, [r0]
+ movs r0, 0x40
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E26
+ ldrh r1, [r0]
+ movs r0, 0x44
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E28
+ ldrh r1, [r0]
+ movs r0, 0x42
+ bl SetGpuReg
+ ldr r0, =gUnknown_02022E2A
+ ldrh r1, [r0]
+ movs r0, 0x46
+ bl SetGpuReg
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ bl sub_80BA0A8
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end vblank_cb_08078BB4
+
+ thumb_func_start nullsub_17
+nullsub_17: @ 8038B00
+ bx lr
+ thumb_func_end nullsub_17
+
+ thumb_func_start sub_8038B04
+sub_8038B04: @ 8038B04
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _08038B24
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ lsrs r0, 8
+ ldrh r1, [r5, 0x30]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ b _08038B36
+_08038B24:
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ asrs r0, 8
+ ldrh r1, [r5, 0x30]
+ subs r1, r0
+ strh r1, [r5, 0x20]
+_08038B36:
+ movs r1, 0xC0
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r1, [r5, 0x32]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08038B6A
+ ldr r4, =0x00002710
+ adds r0, r4, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl FreeSpritePaletteByTag
+ adds r0, r5, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r5, 0
+ bl DestroySprite
+_08038B6A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038B04
+
+ thumb_func_start sub_8038B74
+sub_8038B74: @ 8038B74
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r0, =sub_8038B04
+ str r0, [r4, 0x1C]
+ movs r0, 0x68
+ bl PlaySE
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038B74
+
+ thumb_func_start sub_8038B94
+sub_8038B94: @ 8038B94
+ 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
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ ldr r0, =gBattleScripting
+ adds r0, 0x25
+ ldrb r2, [r0]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08038C04
+ ldr r1, =gLinkPlayers
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x18]
+ cmp r0, 0x1
+ beq _08038BF0
+ cmp r0, 0x1
+ bgt _08038BE8
+ cmp r0, 0
+ beq _08038C04
+ b _08038C0C
+ .pool
+_08038BE8:
+ cmp r0, 0x2
+ beq _08038C04
+ cmp r0, 0x3
+ bne _08038C0C
+_08038BF0:
+ ldr r0, =gEnemyParty
+ str r0, [sp, 0x4]
+ ldr r1, =gPlayerParty
+ str r1, [sp, 0x8]
+ b _08038C0C
+ .pool
+_08038C04:
+ ldr r2, =gPlayerParty
+ str r2, [sp, 0x4]
+ ldr r3, =gEnemyParty
+ str r3, [sp, 0x8]
+_08038C0C:
+ movs r7, 0
+ movs r0, 0
+ mov r8, r0
+ ldr r1, [sp]
+ lsls r1, 2
+ str r1, [sp, 0xC]
+ movs r2, 0xCE
+ lsls r2, 1
+ mov r10, r2
+ mov r9, r0
+_08038C20:
+ movs r0, 0x64
+ mov r4, r8
+ muls r4, r0
+ ldr r3, [sp, 0x4]
+ adds r4, r3, r4
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+ adds r1, r0, 0
+ cmp r5, 0
+ beq _08038C90
+ cmp r5, r10
+ beq _08038C64
+ cmp r6, 0
+ beq _08038C64
+ cmp r1, 0
+ bne _08038C64
+ movs r0, 0x1
+ mov r2, r9
+ lsls r0, r2
+ orrs r7, r0
+_08038C64:
+ cmp r5, 0
+ beq _08038C90
+ cmp r6, 0
+ beq _08038C7C
+ cmp r5, r10
+ beq _08038C74
+ cmp r1, 0
+ beq _08038C7C
+_08038C74:
+ movs r0, 0x2
+ mov r3, r9
+ lsls r0, r3
+ orrs r7, r0
+_08038C7C:
+ cmp r5, 0
+ beq _08038C90
+ cmp r5, r10
+ beq _08038C90
+ cmp r6, 0
+ bne _08038C90
+ movs r0, 0x3
+ mov r1, r9
+ lsls r0, r1
+ orrs r7, r0
+_08038C90:
+ movs r2, 0x2
+ add r9, r2
+ movs r3, 0x1
+ add r8, r3
+ mov r0, r8
+ cmp r0, 0x5
+ ble _08038C20
+ ldr r1, =gTasks
+ ldr r2, [sp, 0xC]
+ ldr r3, [sp]
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r0, r1
+ strh r7, [r0, 0xE]
+ movs r7, 0
+ movs r0, 0
+ mov r8, r0
+ movs r1, 0xCE
+ lsls r1, 1
+ mov r10, r1
+ mov r9, r0
+_08038CBA:
+ movs r0, 0x64
+ mov r4, r8
+ muls r4, r0
+ ldr r2, [sp, 0x8]
+ adds r4, r2, r4
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+ adds r1, r0, 0
+ cmp r5, 0
+ beq _08038D2A
+ cmp r5, r10
+ beq _08038CFE
+ cmp r6, 0
+ beq _08038CFE
+ cmp r1, 0
+ bne _08038CFE
+ movs r0, 0x1
+ mov r3, r9
+ lsls r0, r3
+ orrs r7, r0
+_08038CFE:
+ cmp r5, 0
+ beq _08038D2A
+ cmp r6, 0
+ beq _08038D16
+ cmp r5, r10
+ beq _08038D0E
+ cmp r1, 0
+ beq _08038D16
+_08038D0E:
+ movs r0, 0x2
+ mov r1, r9
+ lsls r0, r1
+ orrs r7, r0
+_08038D16:
+ cmp r5, 0
+ beq _08038D2A
+ cmp r5, r10
+ beq _08038D2A
+ cmp r6, 0
+ bne _08038D2A
+ movs r0, 0x3
+ mov r2, r9
+ lsls r0, r2
+ orrs r7, r0
+_08038D2A:
+ movs r3, 0x2
+ add r9, r3
+ movs r0, 0x1
+ add r8, r0
+ mov r1, r8
+ cmp r1, 0x5
+ ble _08038CBA
+ ldr r1, =gTasks
+ ldr r2, [sp, 0xC]
+ ldr r3, [sp]
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r0, r1
+ strh r7, [r0, 0x10]
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038B94
+
+ thumb_func_start sub_8038D64
+sub_8038D64: @ 8038D64
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ bl SetHBlankCallback
+ movs r0, 0
+ bl SetVBlankCallback
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0x21
+ negs r2, r2
+ ands r1, r2
+ str r1, [r0]
+ ldr r0, =0x003f0100
+ ands r0, r1
+ cmp r0, 0
+ beq _08038DAC
+ ldr r0, =gMain
+ ldr r0, [r0, 0x8]
+ bl SetMainCallback2
+ bl sub_8057028
+ bl dp11_free
+ bl sub_805F094
+ b _08038EB6
+ .pool
+_08038DAC:
+ str r0, [sp]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, =0x05006000
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x40
+ movs r1, 0xF0
+ bl SetGpuReg
+ ldr r4, =0x00005051
+ movs r0, 0x44
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x48
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ movs r1, 0
+ bl SetGpuReg
+ ldr r1, =gUnknown_02022E24
+ movs r0, 0xF0
+ strh r0, [r1]
+ ldr r0, =gUnknown_02022E26
+ strh r4, [r0]
+ bl dp12_8087EA4
+ ldr r0, =gUnknown_02038C28
+ movs r3, 0xF0
+ movs r1, 0xF0
+ lsls r1, 3
+ adds r2, r0, r1
+ movs r1, 0x4F
+_08038DFE:
+ strh r3, [r0]
+ strh r3, [r2]
+ adds r2, 0x2
+ adds r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _08038DFE
+ movs r1, 0x50
+ ldr r0, =gUnknown_02038C28
+ ldr r3, =0x0000ff10
+ movs r4, 0x82
+ lsls r4, 4
+ adds r2, r0, r4
+ adds r0, 0xA0
+_08038E1A:
+ strh r3, [r0]
+ strh r3, [r2]
+ adds r2, 0x2
+ adds r0, 0x2
+ adds r1, 0x1
+ cmp r1, 0x9F
+ ble _08038E1A
+ bl ResetPaletteFade
+ ldr r0, =gUnknown_02022E14
+ movs r4, 0
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E18
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1A
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1C
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1E
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E20
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E22
+ strh r4, [r0]
+ bl c2_berry_program_update_menu
+ ldr r0, =gUnknown_08C004E0
+ movs r1, 0
+ movs r2, 0x40
+ bl LoadCompressedPalette
+ bl sub_803570C
+ bl ResetSpriteData
+ bl ResetTasks
+ bl sub_8036154
+ movs r0, 0x4A
+ movs r1, 0x37
+ bl SetGpuReg
+ bl FreeAllSpritePalettes
+ ldr r1, =gReservedSpritePaletteCount
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r0, =vblank_cb_08078BB4
+ bl SetVBlankCallback
+ ldr r0, =task00_0800F6FC
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0x87
+ lsls r2, 1
+ strh r2, [r1, 0xA]
+ movs r2, 0x5A
+ strh r2, [r1, 0xC]
+ movs r2, 0x1
+ strh r2, [r1, 0x12]
+ bl sub_8038B94
+ ldr r0, =sub_8038F14
+ bl SetMainCallback2
+ ldr r0, =gBattleCommunication
+ strb r4, [r0]
+_08038EB6:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038D64
+
+ thumb_func_start sub_8038F14
+sub_8038F14: @ 8038F14
+ push {lr}
+ bl sub_8038F34
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl RunTextPrinters
+ bl UpdatePaletteFade
+ bl RunTasks
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8038F14
+
+ thumb_func_start sub_8038F34
+sub_8038F34: @ 8038F34
+ push {r4-r6,lr}
+ sub sp, 0x8
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x9
+ bls _08038F44
+ b _080391C6
+_08038F44:
+ lsls r0, r1, 2
+ ldr r1, =_08038F58
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08038F58:
+ .4byte _08038F80
+ .4byte _08038FA0
+ .4byte _08038FC2
+ .4byte _080390C8
+ .4byte _08039100
+ .4byte _08039118
+ .4byte _0803912C
+ .4byte _0803914C
+ .4byte _08039166
+ .4byte _08039184
+_08038F80:
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ ldr r1, =gBattleCommunication
+ movs r0, 0xFF
+ strb r0, [r1, 0x1]
+ b _08039174
+ .pool
+_08038FA0:
+ ldrb r0, [r4, 0x1]
+ subs r0, 0x1
+ strb r0, [r4, 0x1]
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08038FB0
+ b _080391C6
+_08038FB0:
+ movs r0, 0x1
+ negs r0, r0
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _0803910C
+_08038FC2:
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08038FD0
+ b _080391C6
+_08038FD0:
+ bl sub_8185FAC
+ ldr r2, =gMain
+ ldr r1, =0x00000439
+ adds r2, r1
+ movs r1, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ movs r3, 0x2
+ cmp r0, 0
+ beq _08038FFC
+ movs r3, 0x4
+_08038FFC:
+ movs r4, 0
+ ldr r6, =gSaveBlock2Ptr
+ cmp r4, r3
+ bge _08039022
+ ldr r1, =gLinkPlayers
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _08039022
+ movs r5, 0xFF
+ adds r2, r1, 0
+_08039010:
+ adds r2, 0x1C
+ adds r4, 0x1
+ cmp r4, r3
+ bge _08039022
+ ldrh r1, [r2]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0x3
+ beq _08039010
+_08039022:
+ ldr r0, [r6]
+ ldr r1, =0x00000ca9
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _080390AC
+ cmp r4, r3
+ bne _080390AC
+ ldr r0, =0x000008d2
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _08039074
+ bl FreeAllWindowBuffers
+ ldr r0, =sub_80392A8
+ bl SetMainCallback2
+ b _080391C6
+ .pool
+_08039074:
+ ldr r2, =gMain
+ ldr r1, =0x00000439
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08039090
+ ldr r0, [r2, 0x8]
+ b _080390B0
+ .pool
+_08039090:
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08039172
+ ldr r0, =sub_80B3AF8
+ movs r1, 0x5
+ bl CreateTask
+ b _08039172
+ .pool
+_080390AC:
+ ldr r0, =gMain
+ ldr r0, [r0, 0x8]
+_080390B0:
+ bl SetMainCallback2
+ bl sub_8057028
+ bl dp11_free
+ bl sub_805F094
+ b _080391C6
+ .pool
+_080390C8:
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, =0x05006000
+ add r0, sp, 0x4
+ bl CpuSet
+ movs r4, 0
+_080390DA:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_80363C4
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _080390DA
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _08039172
+ .pool
+_08039100:
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080391C6
+_0803910C:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ b _080391C6
+ .pool
+_08039118:
+ ldr r0, =sub_80B3AF8
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ bne _080391C6
+ b _08039172
+ .pool
+_0803912C:
+ bl sub_800A520
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080391C6
+ bl sub_800ADF8
+ ldr r0, =gUnknown_0824978D
+ movs r1, 0
+ bl battle_show_message_maybe
+ b _08039172
+ .pool
+_0803914C:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ cmp r0, 0
+ bne _080391C6
+ bl sub_800A520
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080391C6
+ b _08039172
+_08039166:
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08039172
+ bl sub_800AC34
+_08039172:
+ ldr r1, =gBattleCommunication
+_08039174:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _080391C6
+ .pool
+_08039184:
+ ldr r2, =gMain
+ ldr r1, =0x00000439
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ adds r3, r2, 0
+ cmp r0, 0
+ beq _080391A6
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080391A6
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _080391C6
+_080391A6:
+ ldr r0, =0x00000439
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, [r3, 0x8]
+ bl SetMainCallback2
+ bl sub_8057028
+ bl dp11_free
+ bl sub_805F094
+_080391C6:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8038F34
+
+ thumb_func_start sub_80391E0
+sub_80391E0: @ 80391E0
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0
+ cmp r1, 0x6
+ bhi _080392A0
+ lsls r0, r1, 2
+ ldr r1, =_08039200
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08039200:
+ .4byte _0803921C
+ .4byte _08039230
+ .4byte _08039244
+ .4byte _08039258
+ .4byte _0803926C
+ .4byte _08039280
+ .4byte _08039294
+_0803921C:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 30
+ lsrs r0, 30
+ b _080392A0
+ .pool
+_08039230:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 28
+ lsrs r0, 30
+ b _080392A0
+ .pool
+_08039244:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrh r0, [r1]
+ lsls r0, 23
+ lsrs r0, 27
+ b _080392A0
+ .pool
+_08039258:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 29
+ lsrs r0, 30
+ b _080392A0
+ .pool
+_0803926C:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 28
+ lsrs r0, 31
+ b _080392A0
+ .pool
+_08039280:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 26
+ lsrs r0, 30
+ b _080392A0
+ .pool
+_08039294:
+ ldr r0, =gUnknown_0831AA08
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r0, [r1]
+ lsls r0, 8
+ lsrs r0, 22
+_080392A0:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80391E0
+
+ thumb_func_start sub_80392A8
+sub_80392A8: @ 80392A8
+ push {r4,lr}
+ sub sp, 0x8
+ movs r0, 0
+ bl SetHBlankCallback
+ movs r0, 0
+ bl SetVBlankCallback
+ movs r4, 0
+ str r4, [sp, 0x4]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, =0x05006000
+ add r0, sp, 0x4
+ bl CpuSet
+ bl ResetPaletteFade
+ ldr r0, =gUnknown_02022E14
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E18
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1A
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1C
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E1E
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E20
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E22
+ strh r4, [r0]
+ bl c2_berry_program_update_menu
+ movs r1, 0x82
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ bl sub_803570C
+_080392FE:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_80363C4
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _080392FE
+ bl ResetSpriteData
+ bl ResetTasks
+ bl FreeAllSpritePalettes
+ ldr r1, =gReservedSpritePaletteCount
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r0, =vblank_cb_08078BB4
+ bl SetVBlankCallback
+ ldr r0, =sub_803937C
+ bl SetMainCallback2
+ movs r0, 0x1
+ negs r0, r0
+ movs r4, 0
+ str r4, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, =gBattleCommunication
+ strb r4, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80392A8
+
+ thumb_func_start sub_803937C
+sub_803937C: @ 803937C
+ push {lr}
+ bl sub_803939C
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl RunTextPrinters
+ bl UpdatePaletteFade
+ bl RunTasks
+ pop {r0}
+ bx r0
+ thumb_func_end sub_803937C
+
+ thumb_func_start sub_803939C
+sub_803939C: @ 803939C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0xC
+ bls _080393AC
+ b _0803975E
+_080393AC:
+ lsls r0, r1, 2
+ ldr r1, =_080393C0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080393C0:
+ .4byte _080393F4
+ .4byte _08039414
+ .4byte _08039450
+ .4byte _08039470
+ .4byte _0803949C
+ .4byte _080394D8
+ .4byte _0803957C
+ .4byte _08039704
+ .4byte _080395CC
+ .4byte _08039610
+ .4byte _08039678
+ .4byte _080396A8
+ .4byte _08039704
+_080393F4:
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_08039414:
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08039434
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08039434
+ ldr r0, =sub_80B3AF8
+ movs r1, 0x5
+ bl CreateTask
+_08039434:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_08039450:
+ ldr r0, =sub_80B3AF8
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803945E
+ b _0803975E
+_0803945E:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_08039470:
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0803947E
+ b _0803975E
+_0803947E:
+ ldr r0, =gUnknown_085CD28F
+ movs r1, 0
+ bl battle_show_message_maybe
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_0803949C:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ beq _080394AC
+ b _0803975E
+_080394AC:
+ str r0, [sp]
+ movs r0, 0x18
+ movs r1, 0x8
+ movs r2, 0x1D
+ movs r3, 0xD
+ bl sub_8056A3C
+ ldr r0, =gUnknown_085CCABB
+ movs r1, 0xC
+ bl battle_show_message_maybe
+ ldr r4, =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r4, 0x1]
+ bl sub_8056B74
+ b _080396EA
+ .pool
+_080394D8:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08039500
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ bne _080394EC
+ b _0803975E
+_080394EC:
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4, 0x1]
+ bl sub_8056BAC
+ movs r0, 0
+ b _0803951E
+ .pool
+_08039500:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08039526
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ beq _08039510
+ b _0803975E
+_08039510:
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4, 0x1]
+ bl sub_8056BAC
+ movs r0, 0x1
+_0803951E:
+ strb r0, [r4, 0x1]
+ bl sub_8056B74
+ b _0803975E
+_08039526:
+ movs r5, 0x1
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08039560
+ movs r0, 0x5
+ bl PlaySE
+ ldr r4, =gBattleCommunication
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ beq _08039540
+ b _080396EA
+_08039540:
+ str r5, [sp]
+ movs r0, 0x18
+ movs r1, 0x8
+ movs r2, 0x1D
+ movs r3, 0xD
+ bl sub_8056A3C
+ bl sub_8185338
+ strb r0, [r4, 0x1]
+ movs r0, 0xA
+ strb r0, [r4]
+ b _0803975E
+ .pool
+_08039560:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0803956A
+ b _0803975E
+_0803956A:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_0803957C:
+ bl sub_800A520
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0803958A
+ b _0803975E
+_0803958A:
+ str r0, [sp]
+ movs r0, 0x18
+ movs r1, 0x8
+ movs r2, 0x1D
+ movs r3, 0xD
+ bl sub_8056A3C
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080395B4
+ bl sub_800ADF8
+ ldr r0, =gUnknown_0824978D
+ movs r1, 0
+ bl battle_show_message_maybe
+_080395B4:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_080395CC:
+ ldrb r0, [r4, 0x1]
+ subs r0, 0x1
+ strb r0, [r4, 0x1]
+ lsls r0, 24
+ cmp r0, 0
+ beq _080395DA
+ b _0803975E
+_080395DA:
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080395F6
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080395F6
+ bl sub_800AC34
+_080395F6:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _0803975C
+ .pool
+_08039610:
+ ldr r2, =gMain
+ ldr r1, =0x00000439
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ adds r3, r2, 0
+ cmp r0, 0
+ beq _08039634
+ ldr r0, =gLinkVSyncDisabled
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08039634
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _08039634
+ b _0803975E
+_08039634:
+ ldr r0, =0x00000439
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08039650
+ b _0803975E
+_08039650:
+ ldr r0, [r3, 0x8]
+ bl SetMainCallback2
+ bl sub_8057028
+ bl dp11_free
+ bl sub_805F094
+ b _0803975E
+ .pool
+_08039678:
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0x1
+ bne _080396A0
+ movs r0, 0x37
+ bl PlaySE
+ ldr r0, =gUnknown_085CD2CB
+_08039686:
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
+ movs r1, 0
+ bl battle_show_message_maybe
+ movs r0, 0x80
+ strb r0, [r4, 0x1]
+ b _080396EA
+ .pool
+_080396A0:
+ ldr r0, =gUnknown_08242481
+ b _08039686
+ .pool
+_080396A8:
+ bl sub_800A520
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803975E
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ cmp r0, 0
+ bne _0803975E
+ ldr r4, =gBattleCommunication
+ ldrb r0, [r4, 0x1]
+ subs r0, 0x1
+ strb r0, [r4, 0x1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803975E
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080396EA
+ bl sub_800ADF8
+ ldr r0, =gUnknown_0824978D
+ movs r1, 0
+ bl battle_show_message_maybe
+_080396EA:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ b _0803975E
+ .pool
+_08039704:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ bne _0803975E
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08039744
+ bl sub_800A520
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803975E
+ movs r0, 0x1
+ negs r0, r0
+ str r4, [sp]
+ b _0803974A
+ .pool
+_08039744:
+ movs r0, 0x1
+ negs r0, r0
+ str r1, [sp]
+_0803974A:
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r1, =gBattleCommunication
+ movs r0, 0x20
+ strb r0, [r1, 0x1]
+ movs r0, 0x8
+_0803975C:
+ strb r0, [r1]
+_0803975E:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803939C
+
+ thumb_func_start shedinja_something
+shedinja_something: @ 803976C
+ push {r4,r5,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ add r5, sp, 0xC
+ movs r0, 0x1
+ strb r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ ldr r1, =0x0000012f
+ cmp r0, r1
+ bne _080397B4
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl GetMonData
+ ldrb r1, [r5]
+ cmp r0, r1
+ beq _080397B4
+ adds r0, r4, 0
+ movs r1, 0x2
+ mov r2, sp
+ bl GetMonData
+ ldr r1, =gUnknown_0831ACA0
+ mov r0, sp
+ bl StringCompareWithoutExtCtrlCodes
+ cmp r0, 0
+ bne _080397B4
+ adds r0, r4, 0
+ movs r1, 0x3
+ adds r2, r5, 0
+ bl SetMonData
+_080397B4:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end shedinja_something
+
+ thumb_func_start sub_80397C4
+sub_80397C4: @ 80397C4
+ ldr r2, =gUnknown_0831ABA0
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ lsls r1, 3
+ adds r1, r0
+ ldrb r0, [r1, 0x3]
+ lsls r0, 3
+ bx lr
+ .pool
+ thumb_func_end sub_80397C4
+
+ thumb_func_start oac_poke_opponent
+oac_poke_opponent: @ 80397DC
+ push {lr}
+ sub sp, 0x4
+ ldr r1, =sub_803980C
+ str r1, [r0, 0x1C]
+ movs r1, 0
+ bl StartSpriteAnimIfDifferent
+ movs r0, 0x80
+ lsls r0, 10
+ ldr r1, =0x00002108
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0xA
+ movs r3, 0xA
+ bl BeginNormalPaletteFade
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end oac_poke_opponent
+
+ thumb_func_start sub_803980C
+sub_803980C: @ 803980C
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, =gUnknown_020243FC
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803982C
+ ldrh r0, [r2, 0x24]
+ adds r0, 0x2
+ strh r0, [r2, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0803982C
+ ldr r0, =sub_8039838
+ str r0, [r2, 0x1C]
+_0803982C:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803980C
+
+ thumb_func_start sub_8039838
+sub_8039838: @ 8039838
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08039880
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076918
+ ldr r1, =gHealthBoxesIds
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_80729D0
+ ldr r0, =sub_8039894
+ str r0, [r4, 0x1C]
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnimIfDifferent
+ movs r0, 0x80
+ lsls r0, 10
+ ldr r1, =0x00002108
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0xA
+ movs r3, 0
+ bl BeginNormalPaletteFade
+_08039880:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039838
+
+ thumb_func_start sub_8039894
+sub_8039894: @ 8039894
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080398B0
+ ldrh r1, [r2, 0x32]
+ adds r0, r2, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_806ECEC
+_080398B0:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039894
+
+ thumb_func_start nullsub_18
+nullsub_18: @ 80398B8
+ bx lr
+ thumb_func_end nullsub_18
+
+ thumb_func_start sub_80398BC
+sub_80398BC: @ 80398BC
+ movs r1, 0x6
+ strh r1, [r0, 0x34]
+ movs r1, 0x1
+ strh r1, [r0, 0x36]
+ ldr r1, =sub_80398D0
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_80398BC
+
+ thumb_func_start sub_80398D0
+sub_80398D0: @ 80398D0
+ push {r4,lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x36]
+ subs r0, 0x1
+ strh r0, [r3, 0x36]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08039924
+ movs r0, 0x8
+ strh r0, [r3, 0x36]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r4, 0x5
+ negs r4, r4
+ adds r0, r4, 0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0
+ bne _08039924
+ ldrb r1, [r1]
+ adds r0, r4, 0
+ ands r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldr r0, =nullsub_18
+ str r0, [r3, 0x1C]
+ ldr r0, =gUnknown_02022F88
+ str r2, [r0]
+_08039924:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80398D0
+
+ thumb_func_start sub_8039934
+sub_8039934: @ 8039934
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r9, r0
+ ldrh r0, [r0, 0x2E]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r6, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ beq _0803995C
+ adds r4, r0, 0
+ b _08039960
+ .pool
+_0803995C:
+ mov r0, r9
+ ldrh r4, [r0, 0x32]
+_08039960:
+ ldr r1, =gBattlePartyID
+ lsls r0, r6, 1
+ adds r5, r0, r1
+ ldrh r0, [r5]
+ movs r1, 0x64
+ mov r8, r1
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ ldr r7, =gEnemyParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ cmp r4, 0xC9
+ bne _080399E4
+ ldrh r0, [r5]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ adds r2, r0, 0
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r2
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r2
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r2
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r2
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _080399D0
+ movs r0, 0xC9
+ b _080399DA
+ .pool
+_080399D0:
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_080399DA:
+ ldr r1, =gUnknown_08300D38
+ lsls r0, 2
+ b _08039A1C
+ .pool
+_080399E4:
+ ldr r0, =0x00000181
+ cmp r4, r0
+ bne _08039A08
+ ldr r0, =gUnknown_08525F78
+ ldr r1, =gUnknown_020244E4
+ adds r1, r6, r1
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ b _08039A20
+ .pool
+_08039A08:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r4, r0
+ bls _08039A18
+ ldr r0, =gUnknown_08300D38
+ b _08039A1E
+ .pool
+_08039A18:
+ ldr r1, =gUnknown_08300D38
+ lsls r0, r4, 2
+_08039A1C:
+ adds r0, r1
+_08039A1E:
+ ldrb r0, [r0, 0x1]
+_08039A20:
+ lsrs r1, r0, 3
+ movs r0, 0x8
+ subs r0, r1
+ mov r1, r9
+ strh r0, [r1, 0x34]
+ movs r0, 0x1
+ strh r0, [r1, 0x36]
+ ldr r0, =sub_8039A48
+ str r0, [r1, 0x1C]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039934
+
+ thumb_func_start sub_8039A48
+sub_8039A48: @ 8039A48
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x36]
+ subs r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08039AC8
+ movs r0, 0x2
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x8
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bge _08039A7C
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+ b _08039AC8
+_08039A7C:
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankIdentity
+ ldr r1, =gUnknown_020244D4
+ ldr r1, [r1]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r1, 0x4
+ adds r1, r0
+ ldr r2, =gUnknown_020244E4
+ movs r3, 0x2E
+ ldrsh r0, [r4, r3]
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 11
+ ldr r1, [r1]
+ adds r1, r0
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ lsls r0, 8
+ adds r1, r0
+ movs r2, 0
+ movs r0, 0xFF
+_08039AAE:
+ strb r2, [r1]
+ adds r1, 0x1
+ subs r0, 0x1
+ cmp r0, 0
+ bge _08039AAE
+ ldr r0, =gUnknown_020244E4
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ adds r1, r0
+ ldrb r1, [r1]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_08039AC8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039A48
+
+ thumb_func_start sub_8039AD8
+sub_8039AD8: @ 8039AD8
+ movs r1, 0x8
+ strh r1, [r0, 0x34]
+ adds r1, r0, 0
+ adds r1, 0x3E
+ ldrb r1, [r1]
+ lsls r1, 29
+ lsrs r1, 31
+ strh r1, [r0, 0x36]
+ ldr r1, =sub_8039AF4
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_8039AD8
+
+ thumb_func_start sub_8039AF4
+sub_8039AF4: @ 8039AF4
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08039B26
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ 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
+ mov r1, r12
+ strb r0, [r1]
+ movs r0, 0x8
+ strh r0, [r3, 0x34]
+_08039B26:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8039AF4
+
+ thumb_func_start sub_8039B2C
+sub_8039B2C: @ 8039B2C
+ movs r1, 0x3E
+ adds r1, r0
+ mov r12, r1
+ movs r1, 0x1
+ ldrh r2, [r0, 0x36]
+ ands r2, r1
+ lsls r2, 2
+ mov r1, r12
+ ldrb r3, [r1]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ mov r2, r12
+ strb r1, [r2]
+ movs r1, 0
+ strh r1, [r0, 0x36]
+ ldr r1, =nullsub_18
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_8039B2C
+
+ thumb_func_start sub_8039B58
+sub_8039B58: @ 8039B58
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08039BA0
+ ldr r0, =gHitMarker
+ ldr r0, [r0]
+ movs r1, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08039B80
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x02000002
+ ands r0, r1
+ cmp r0, 0
+ beq _08039B94
+_08039B80:
+ ldrh r0, [r4, 0x32]
+ bl sub_806F0D4
+ lsls r0, 24
+ cmp r0, 0
+ beq _08039B94
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_08039B94:
+ ldrh r1, [r4, 0x32]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_806ECEC
+_08039BA0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039B58
+
+ thumb_func_start sub_8039BB4
+sub_8039BB4: @ 8039BB4
+ ldr r1, =oac_poke_ally_
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_8039BB4
+
+ thumb_func_start oac_poke_ally_
+oac_poke_ally_: @ 8039BC0
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, =gUnknown_020243FC
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08039BE4
+ ldrh r0, [r2, 0x24]
+ subs r0, 0x2
+ strh r0, [r2, 0x24]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ bne _08039BE4
+ ldr r0, =nullsub_19
+ str r0, [r2, 0x1C]
+ strh r1, [r2, 0x30]
+_08039BE4:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end oac_poke_ally_
+
+ thumb_func_start sub_8039BF0
+sub_8039BF0: @ 8039BF0
+ ldr r1, =nullsub_19
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_8039BF0
+
+ thumb_func_start nullsub_19
+nullsub_19: @ 8039BFC
+ bx lr
+ thumb_func_end nullsub_19
+
+ thumb_func_start sub_8039C00
+sub_8039C00: @ 8039C00
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, =gUnknown_020243FC
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08039C20
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x26]
+ adds r0, r1
+ strh r0, [r2, 0x26]
+_08039C20:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039C00
+
+ thumb_func_start dp11b_obj_instanciate
+dp11b_obj_instanciate: @ 8039C28
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ cmp r1, 0
+ beq _08039C64
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r2, r4, 1
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ b _08039C76
+ .pool
+_08039C64:
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r2, r4, 1
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+_08039C76:
+ ands r0, r1
+ adds r6, r2, 0
+ cmp r0, 0
+ bne _08039D2C
+ ldr r0, =objc_dp11b_pingpong
+ bl CreateInvisibleSpriteWithCallback
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, r8
+ cmp r0, 0x1
+ bne _08039CD0
+ ldr r0, =gHealthBoxesIds
+ adds r0, r4, r0
+ ldrb r7, [r0]
+ ldr r2, =gUnknown_020244D0
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r1, r6, r4
+ lsls r1, 2
+ adds r0, r1, r0
+ strb r5, [r0, 0x2]
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r2, =gSprites
+ lsls r3, r5, 4
+ adds r0, r3, r5
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x80
+ b _08039CFE
+ .pool
+_08039CD0:
+ ldr r0, =gBankSpriteIds
+ adds r0, r4, r0
+ ldrb r7, [r0]
+ ldr r2, =gUnknown_020244D0
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r1, r6, r4
+ lsls r1, 2
+ adds r0, r1, r0
+ strb r5, [r0, 0x3]
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r2, =gSprites
+ lsls r3, r5, 4
+ adds r0, r3, r5
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0xC0
+_08039CFE:
+ strh r1, [r0, 0x2E]
+ adds r4, r2, 0
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r4
+ mov r2, r9
+ lsls r0, r2, 24
+ asrs r0, 24
+ movs r2, 0
+ strh r0, [r1, 0x30]
+ mov r3, r10
+ lsls r0, r3, 24
+ asrs r0, 24
+ strh r0, [r1, 0x32]
+ strh r7, [r1, 0x34]
+ mov r0, r8
+ strh r0, [r1, 0x36]
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r4
+ strh r2, [r0, 0x24]
+ strh r2, [r0, 0x26]
+_08039D2C:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end dp11b_obj_instanciate
+
+ thumb_func_start dp11b_obj_free
+dp11b_obj_free: @ 8039D48
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0x1
+ bne _08039D9C
+ ldr r6, =gUnknown_020244D0
+ ldr r0, [r6]
+ ldr r1, [r0, 0x4]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r5, r0, 2
+ adds r3, r5, r1
+ ldrb r1, [r3]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08039DEA
+ ldr r2, =gSprites
+ ldrb r1, [r3, 0x2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x34]
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl DestroySprite
+ ldr r0, [r6]
+ ldr r1, [r0, 0x4]
+ adds r1, r5, r1
+ ldrb r2, [r1]
+ movs r0, 0x3
+ negs r0, r0
+ b _08039DD6
+ .pool
+_08039D9C:
+ ldr r6, =gUnknown_020244D0
+ ldr r0, [r6]
+ ldr r1, [r0, 0x4]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r5, r0, 2
+ adds r3, r5, r1
+ ldrb r1, [r3]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08039DEA
+ ldr r2, =gSprites
+ ldrb r1, [r3, 0x3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x34]
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl DestroySprite
+ ldr r0, [r6]
+ ldr r1, [r0, 0x4]
+ adds r1, r5, r1
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+_08039DD6:
+ ands r0, r2
+ strb r0, [r1]
+ ldr r0, =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0x24]
+ strh r0, [r1, 0x26]
+_08039DEA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end dp11b_obj_free
+
+ thumb_func_start objc_dp11b_pingpong
+objc_dp11b_pingpong: @ 8039DF8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _08039E10
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ b _08039E14
+_08039E10:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+_08039E14:
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldr r2, =gSprites
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r4, 0x32]
+ adds r0, r2
+ strh r0, [r1, 0x26]
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x2E]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end objc_dp11b_pingpong
+
+ thumb_func_start sub_8039E44
+sub_8039E44: @ 8039E44
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08039E5C
+ ldrh r1, [r2, 0x32]
+ adds r0, r2, 0
+ bl sub_806EEB4
+_08039E5C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8039E44
+
+ thumb_func_start sub_8039E60
+sub_8039E60: @ 8039E60
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8039E9C
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08039E7A
+ ldr r0, =nullsub_19
+ str r0, [r4, 0x1C]
+_08039E7A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039E60
+
+ thumb_func_start sub_8039E84
+sub_8039E84: @ 8039E84
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, =sub_8039E60
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039E84
+
+ thumb_func_start sub_8039E9C
+sub_8039E9C: @ 8039E9C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r0, 0x3F
+ ands r0, r1
+ cmp r0, 0
+ bne _08039EBE
+ ldr r1, =gUnknown_0831ACE0
+ adds r0, r2, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ adds r0, 0x28
+ strb r1, [r0]
+_08039EBE:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039E9C
+
+ thumb_func_start nullsub_20
+nullsub_20: @ 8039EC8
+ bx lr
+ thumb_func_end nullsub_20
+
+ thumb_func_start sub_8039ECC
+sub_8039ECC: @ 8039ECC
+ push {lr}
+ bl sub_8039F40
+ ldr r1, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x1]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_8012FAC
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039ECC
+
+ thumb_func_start sub_8039EF0
+sub_8039EF0: @ 8039EF0
+ push {r4,r5,lr}
+ ldr r0, =gBattleMainFunc
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r1, =gActiveBank
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08039F2A
+ ldr r5, =gBattleBankFunc
+ adds r4, r1, 0
+_08039F0C:
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r5
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08039F0C
+_08039F2A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039EF0
+
+ thumb_func_start sub_8039F40
+sub_8039F40: @ 8039F40
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r0, 0
+ bl sub_803D580
+ bl sub_803D6A0
+ movs r2, 0
+ movs r3, 0
+ ldr r0, =gUnknown_02024260
+ mov r10, r0
+ ldr r1, =gUnknown_02024258
+ mov r9, r1
+ ldr r0, =gUnknown_02024250
+ mov r8, r0
+ ldr r1, =gLastUsedMovesByBanks
+ mov r12, r1
+ ldr r5, =gDisableStructs
+ movs r4, 0
+ ldr r7, =gUnknown_02024240
+ ldr r6, =gUnknown_02024268
+_08039F70:
+ ldr r0, =gStatuses3
+ adds r0, r4, r0
+ str r3, [r0]
+ movs r1, 0
+_08039F78:
+ adds r0, r5, r1
+ strb r3, [r0]
+ adds r1, 0x1
+ cmp r1, 0x1B
+ bls _08039F78
+ movs r0, 0x2
+ strb r0, [r5, 0x16]
+ ldr r1, =gUnknown_02024284
+ adds r0, r2, r1
+ strb r3, [r0]
+ mov r0, r12
+ strh r3, [r0]
+ mov r1, r8
+ strh r3, [r1]
+ mov r0, r9
+ strh r3, [r0]
+ mov r1, r10
+ strh r3, [r1]
+ ldr r0, =gUnknown_02024270
+ adds r1, r2, r0
+ movs r0, 0xFF
+ strb r0, [r1]
+ strh r3, [r6]
+ strh r3, [r7]
+ ldr r1, =gBattleResources
+ ldr r0, [r1]
+ ldr r0, [r0, 0x4]
+ adds r0, r4
+ str r3, [r0]
+ ldr r1, =gUnknown_02024230
+ adds r0, r4, r1
+ str r3, [r0]
+ movs r0, 0x2
+ add r10, r0
+ add r9, r0
+ add r8, r0
+ add r12, r0
+ adds r5, 0x1C
+ adds r4, 0x4
+ adds r7, 0x2
+ adds r6, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ ble _08039F70
+ movs r5, 0
+ ldr r3, =gSideTimers
+ ldr r4, =gSideAffecting
+ movs r2, 0x1
+_08039FD8:
+ strh r5, [r4]
+ movs r1, 0
+_08039FDC:
+ adds r0, r3, r1
+ strb r5, [r0]
+ adds r1, 0x1
+ cmp r1, 0xB
+ bls _08039FDC
+ adds r3, 0xC
+ adds r4, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08039FD8
+ movs r1, 0
+ ldr r2, =gBankAttacker
+ strb r1, [r2]
+ ldr r0, =gBankTarget
+ strb r1, [r0]
+ ldr r2, =gBattleWeather
+ strh r1, [r2]
+ ldr r1, =gUnknown_020243D0
+ movs r2, 0
+ movs r3, 0
+_0803A004:
+ adds r0, r1, r2
+ strb r3, [r0]
+ adds r2, 0x1
+ cmp r2, 0x2B
+ bls _0803A004
+ ldr r2, =gHitMarker
+ movs r0, 0
+ str r0, [r2]
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ bne _0803A090
+ movs r0, 0x2
+ ands r1, r0
+ cmp r1, 0
+ bne _0803A0AE
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x15]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A0AE
+ movs r0, 0x80
+ b _0803A0AC
+ .pool
+_0803A090:
+ ldr r0, =0x02000002
+ ands r1, r0
+ cmp r1, 0
+ bne _0803A0AE
+ bl sub_8185FB8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803A0AE
+ ldr r1, =gHitMarker
+ ldr r0, [r1]
+ movs r1, 0x80
+ orrs r0, r1
+ ldr r2, =gHitMarker
+_0803A0AC:
+ str r0, [r2]
+_0803A0AE:
+ ldr r3, =gBattleScripting
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x15]
+ lsls r0, 30
+ lsrs r0, 31
+ movs r1, 0
+ strb r0, [r3, 0x1D]
+ ldr r0, =gUnknown_02024212
+ strb r1, [r0]
+ ldr r0, =gBattleOutcome
+ strb r1, [r0]
+ ldr r0, =gBattleExecBuffer
+ str r1, [r0]
+ ldr r0, =gUnknown_0202432E
+ movs r2, 0
+ strh r1, [r0]
+ ldr r1, =gBattleResources
+ ldr r0, [r1]
+ ldr r0, [r0, 0x8]
+ adds r0, 0x20
+ strb r2, [r0]
+ ldr r0, [r1]
+ ldr r0, [r0, 0xC]
+ adds r0, 0x20
+ strb r2, [r0]
+ ldr r5, =gUnknown_0202432C
+ ldr r6, =gBattleMoveDamage
+ ldr r7, =gUnknown_020243FC
+ ldr r0, =gUnknown_03005D54
+ mov r8, r0
+ ldr r1, =gAbsentBankFlags
+ mov r9, r1
+ ldr r2, =gEnemyParty
+ mov r10, r2
+ ldr r1, =gBattleCommunication
+ movs r2, 0
+ adds r0, r1, 0x7
+_0803A0FA:
+ strb r2, [r0]
+ subs r0, 0x1
+ cmp r0, r1
+ bge _0803A0FA
+ movs r4, 0
+ strh r4, [r5]
+ movs r0, 0
+ str r0, [r6]
+ strh r0, [r7]
+ strb r4, [r3, 0x18]
+ strb r4, [r3, 0x19]
+ mov r0, r8
+ strb r4, [r0]
+ mov r1, r9
+ strb r4, [r1]
+ ldr r5, =gBattleStruct
+ ldr r0, [r5]
+ adds r0, 0x6C
+ strb r4, [r0]
+ ldr r0, [r5]
+ adds r0, 0x79
+ strb r4, [r0]
+ ldr r0, [r5]
+ adds r0, 0x7A
+ strb r4, [r0]
+ mov r0, r10
+ movs r1, 0xB
+ bl GetMonData
+ ldr r6, [r5]
+ adds r6, 0x7C
+ ldr r2, =gBaseStats
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r1, [r1, 0x8]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =0x000004fb
+ bl __divsi3
+ strb r0, [r6]
+ ldr r0, [r5]
+ adds r0, 0x7B
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r0, [r5]
+ strb r4, [r0, 0x12]
+ ldr r0, [r5]
+ adds r0, 0x4A
+ movs r1, 0x1
+ strb r1, [r0]
+ movs r2, 0
+ movs r1, 0
+ adds r6, r5, 0
+_0803A16A:
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0x98
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xB8
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xC8
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xD0
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xE0
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xE8
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xF0
+ strb r1, [r0]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, 0xF8
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x7
+ ble _0803A16A
+ movs r2, 0
+ ldr r4, =gBattleStruct
+ movs r3, 0xA5
+ lsls r3, 2
+ movs r1, 0x6
+_0803A1BA:
+ ldr r0, [r4]
+ adds r0, r2, r0
+ adds r0, r3
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x3
+ ble _0803A1BA
+ ldr r0, [r6]
+ adds r0, 0xDF
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r6]
+ adds r0, 0x92
+ strb r1, [r0]
+ bl Random
+ ldr r1, =gUnknown_02024330
+ strh r0, [r1]
+ ldr r1, =gBattleResults
+ movs r2, 0
+ movs r3, 0
+_0803A1E4:
+ adds r0, r1, r2
+ strb r3, [r0]
+ adds r2, 0x1
+ cmp r2, 0x43
+ bls _0803A1E4
+ ldr r0, =gEnemyParty
+ bl IsMonShiny
+ ldr r3, =gBattleResults
+ movs r1, 0x1
+ ands r1, r0
+ lsls r1, 6
+ ldrb r2, [r3, 0x5]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x5]
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ movs r1, 0xA8
+ lsls r1, 2
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ ldr r2, =0x000002a1
+ adds r0, r2
+ strb r1, [r0]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8039F40
+
+ thumb_func_start sub_803A284
+sub_803A284: @ 803A284
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ ldr r4, =gDisableStructs
+ ldr r5, =gActiveBank
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ mov r1, sp
+ adds r0, r4
+ ldm r0!, {r2,r3,r6}
+ stm r1!, {r2,r3,r6}
+ ldm r0!, {r2,r3,r7}
+ stm r1!, {r2,r3,r7}
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r2, =gBattleMoves
+ ldr r3, =gCurrentMove
+ ldrh r1, [r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ mov r12, r4
+ mov r9, r5
+ ldr r6, =gStatuses3
+ mov r10, r6
+ cmp r0, 0x7F
+ beq _0803A35C
+ movs r5, 0
+ mov r6, r9
+ movs r4, 0x58
+ ldr r2, =gBattleMons
+ adds r2, 0x18
+ movs r1, 0x6
+_0803A2D4:
+ ldrb r0, [r6]
+ muls r0, r4
+ adds r0, r5, r0
+ adds r0, r2
+ strb r1, [r0]
+ adds r5, 0x1
+ cmp r5, 0x7
+ ble _0803A2D4
+ movs r5, 0
+ ldr r7, =gNoOfAllBanks
+ ldrb r7, [r7]
+ cmp r5, r7
+ bge _0803A348
+ ldr r0, =gBattleMons + 0x50
+ mov r8, r0
+ ldr r4, =gDisableStructs
+ ldr r3, =gStatuses3
+_0803A2F6:
+ movs r0, 0x58
+ muls r0, r5
+ mov r1, r8
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x80
+ lsls r0, 19
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A31A
+ ldrb r0, [r4, 0x14]
+ ldr r6, =gActiveBank
+ ldrb r6, [r6]
+ cmp r0, r6
+ bne _0803A31A
+ ldr r0, =0xfbffffff
+ ands r1, r0
+ str r1, [r2]
+_0803A31A:
+ ldr r1, [r3]
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A33A
+ ldrb r0, [r4, 0x15]
+ ldr r7, =gActiveBank
+ ldrb r7, [r7]
+ cmp r0, r7
+ bne _0803A33A
+ movs r0, 0x19
+ negs r0, r0
+ ands r1, r0
+ str r1, [r3]
+ movs r0, 0
+ strb r0, [r4, 0x15]
+_0803A33A:
+ adds r4, 0x1C
+ adds r3, 0x4
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803A2F6
+_0803A348:
+ ldr r1, =gCurrentMove
+ ldrh r0, [r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r2, =gBattleMoves
+ adds r1, r2
+ ldrb r0, [r1]
+ cmp r0, 0x7F
+ bne _0803A414
+_0803A35C:
+ mov r3, r9
+ ldrb r1, [r3]
+ movs r0, 0x58
+ adds r2, r1, 0
+ muls r2, r0
+ ldr r0, =gBattleMons
+ adds r0, 0x50
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r1, =0x15100007
+ ands r0, r1
+ str r0, [r2]
+ ldrb r1, [r3]
+ lsls r1, 2
+ add r1, r10
+ ldr r0, [r1]
+ ldr r2, =0x0003043f
+ ands r0, r2
+ str r0, [r1]
+ movs r5, 0
+ ldr r6, =gNoOfAllBanks
+ ldrb r6, [r6]
+ cmp r5, r6
+ bge _0803A430
+ mov r7, r9
+ movs r6, 0
+_0803A390:
+ ldrb r0, [r7]
+ bl GetBankSide
+ adds r4, r0, 0
+ lsls r0, r5, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0803A3D0
+ ldr r1, =gStatuses3
+ lsls r0, r5, 2
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A3D0
+ ldr r0, =gDisableStructs
+ adds r0, r6, r0
+ ldrb r0, [r0, 0x15]
+ ldrb r3, [r7]
+ cmp r0, r3
+ bne _0803A3D0
+ movs r0, 0x19
+ negs r0, r0
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ str r1, [r2]
+_0803A3D0:
+ adds r6, 0x1C
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803A390
+ ldr r6, =gDisableStructs
+ mov r12, r6
+ ldr r7, =gActiveBank
+ mov r9, r7
+ b _0803A430
+ .pool
+_0803A414:
+ mov r0, r9
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ ldr r1, =gBattleMons
+ adds r1, 0x50
+ adds r0, r1
+ movs r1, 0
+ str r1, [r0]
+ mov r2, r9
+ ldrb r0, [r2]
+ lsls r0, 2
+ add r0, r10
+ str r1, [r0]
+_0803A430:
+ movs r5, 0
+ ldr r3, =gBattleStruct
+ mov r8, r3
+ ldr r6, =gUnknown_020244AC
+ mov r10, r6
+ ldr r7, =gNoOfAllBanks
+ ldrb r7, [r7]
+ cmp r5, r7
+ bge _0803A490
+ ldr r3, =gBattleMons + 0x50
+ ldr r7, =gBitTable
+ ldr r6, =gActiveBank
+_0803A448:
+ movs r0, 0x58
+ muls r0, r5
+ adds r4, r0, r3
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r0, r7
+ ldr r0, [r0]
+ lsls r2, r0, 16
+ ldr r1, [r4]
+ adds r0, r1, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _0803A466
+ bics r1, r2
+ str r1, [r4]
+_0803A466:
+ ldr r1, [r4]
+ movs r0, 0xE0
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A486
+ mov r2, r8
+ ldr r0, [r2]
+ adds r0, r5, r0
+ ldrb r0, [r0, 0x14]
+ ldrb r2, [r6]
+ cmp r0, r2
+ bne _0803A486
+ ldr r0, =0xffff1fff
+ ands r1, r0
+ str r1, [r4]
+_0803A486:
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803A448
+_0803A490:
+ mov r1, r9
+ ldrb r0, [r1]
+ add r0, r10
+ movs r1, 0
+ strb r1, [r0]
+ mov r2, r9
+ ldrb r0, [r2]
+ ldr r3, =gUnknown_020244B0
+ adds r0, r3
+ strb r1, [r0]
+ ldrb r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ mov r6, r12
+ adds r1, r0, r6
+ movs r5, 0
+ movs r2, 0
+_0803A4B4:
+ adds r0, r1, r5
+ strb r2, [r0]
+ adds r5, 0x1
+ cmp r5, 0x1B
+ bls _0803A4B4
+ ldr r7, =gCurrentMove
+ ldrh r0, [r7]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gBattleMoves
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x7F
+ bne _0803A540
+ mov r2, r9
+ ldrb r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ mov r1, sp
+ ldrb r1, [r1, 0xA]
+ strb r1, [r0, 0xA]
+ ldrb r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ mov r1, sp
+ ldrb r1, [r1, 0x15]
+ strb r1, [r0, 0x15]
+ ldrb r0, [r2]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ add r1, r12
+ mov r0, sp
+ ldrb r2, [r0, 0xF]
+ lsls r2, 28
+ movs r4, 0xF
+ lsrs r2, 28
+ ldrb r3, [r1, 0xF]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0xF]
+ mov r3, r9
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ mov r1, sp
+ ldrb r1, [r1, 0xF]
+ lsrs r1, 4
+ lsls r1, 4
+ ldrb r2, [r0, 0xF]
+ ands r4, r2
+ orrs r4, r1
+ strb r4, [r0, 0xF]
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ mov r1, sp
+ ldrb r1, [r1, 0x14]
+ strb r1, [r0, 0x14]
+_0803A540:
+ movs r0, 0
+ ldr r6, =gBattleMoveFlags
+ strb r0, [r6]
+ mov r7, r9
+ ldrb r1, [r7]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ movs r4, 0
+ movs r1, 0x2
+ strb r1, [r0, 0x16]
+ ldrb r0, [r7]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ add r1, r12
+ mov r0, sp
+ ldrb r0, [r0, 0x18]
+ movs r2, 0x2
+ ands r2, r0
+ ldrb r3, [r1, 0x18]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x18]
+ ldrb r0, [r7]
+ lsls r0, 1
+ ldr r1, =gLastUsedMovesByBanks
+ adds r0, r1
+ movs r2, 0
+ strh r4, [r0]
+ ldrb r0, [r7]
+ lsls r0, 1
+ ldr r3, =gUnknown_02024250
+ adds r0, r3
+ strh r4, [r0]
+ ldrb r0, [r7]
+ lsls r0, 1
+ ldr r6, =gUnknown_02024258
+ adds r0, r6
+ strh r4, [r0]
+ ldrb r0, [r7]
+ lsls r0, 1
+ ldr r7, =gUnknown_02024260
+ adds r0, r7
+ strh r4, [r0]
+ mov r1, r9
+ ldrb r0, [r1]
+ lsls r0, 1
+ ldr r3, =gUnknown_02024240
+ adds r0, r3
+ strh r4, [r0]
+ ldrb r0, [r1]
+ ldr r6, =gUnknown_02024270
+ adds r0, r6
+ movs r1, 0xFF
+ strb r1, [r0]
+ mov r7, r9
+ ldrb r0, [r7]
+ mov r3, r8
+ ldr r1, [r3]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0x98
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0x99
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE0
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE1
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE2
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE3
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE4
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE5
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE6
+ strb r2, [r0]
+ ldrb r0, [r7]
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE7
+ strb r2, [r0]
+ ldr r1, [r3]
+ adds r1, 0x92
+ ldrb r0, [r7]
+ lsls r0, 2
+ ldr r6, =gBitTable
+ adds r0, r6
+ ldr r2, [r0]
+ ldrb r0, [r1]
+ bics r0, r2
+ strb r0, [r1]
+ movs r5, 0
+ ldr r7, =gNoOfAllBanks
+ ldrb r7, [r7]
+ cmp r5, r7
+ bge _0803A6B4
+ mov r3, r9
+ mov r7, r8
+ movs r6, 0
+_0803A656:
+ ldrb r0, [r3]
+ cmp r5, r0
+ beq _0803A68C
+ lsls r0, r5, 24
+ lsrs r0, 24
+ str r3, [sp, 0x1C]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldr r3, [sp, 0x1C]
+ ldrb r0, [r3]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ ldr r3, [sp, 0x1C]
+ cmp r4, r0
+ beq _0803A68C
+ ldr r0, [r7]
+ lsls r1, r5, 1
+ adds r0, r1, r0
+ adds r0, 0x98
+ strb r6, [r0]
+ ldr r0, [r7]
+ adds r1, r0
+ adds r1, 0x99
+ strb r6, [r1]
+_0803A68C:
+ ldrb r0, [r3]
+ ldr r1, [r7]
+ lsls r0, 1
+ lsls r2, r5, 3
+ adds r0, r2
+ adds r0, r1
+ adds r0, 0xE0
+ strb r6, [r0]
+ ldrb r0, [r3]
+ ldr r1, [r7]
+ lsls r0, 1
+ adds r0, r2
+ adds r0, r1
+ adds r0, 0xE1
+ strb r6, [r0]
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803A656
+_0803A6B4:
+ mov r1, r9
+ ldrb r0, [r1]
+ mov r2, r8
+ ldr r1, [r2]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0xC8
+ movs r2, 0
+ strb r2, [r0]
+ mov r3, r9
+ ldrb r0, [r3]
+ mov r6, r8
+ ldr r1, [r6]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0xC9
+ strb r2, [r0]
+ ldr r0, =gBattleResources
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r1, r0
+ movs r2, 0
+ str r2, [r1]
+ ldr r0, =gCurrentMove
+ strh r2, [r0]
+ ldr r0, [r6]
+ adds r0, 0xDA
+ movs r1, 0xFF
+ strb r1, [r0]
+ ldrb r0, [r3]
+ bl ClearBankMoveHistory
+ mov r7, r9
+ ldrb r0, [r7]
+ bl ClearBankAbilityHistory
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803A284
+
+ thumb_func_start sub_803A75C
+sub_803A75C: @ 803A75C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ movs r5, 0
+ ldr r6, =gBattleMons
+ ldr r0, =gStatuses3
+ mov r8, r0
+ ldr r1, =gBattleStruct
+ mov r12, r1
+ ldr r2, =gUnknown_020244AC
+ mov r9, r2
+ ldr r3, =gUnknown_020244B0
+ mov r10, r3
+ ldr r7, =gProtectStructs
+ ldr r4, =gActiveBank
+ movs r3, 0x58
+ adds r2, r6, 0
+ adds r2, 0x18
+ movs r1, 0x6
+_0803A788:
+ ldrb r0, [r4]
+ muls r0, r3
+ adds r0, r5, r0
+ adds r0, r2
+ strb r1, [r0]
+ adds r5, 0x1
+ cmp r5, 0x7
+ ble _0803A788
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r2, r6, 0
+ adds r2, 0x50
+ adds r0, r2
+ movs r1, 0
+ str r1, [r0]
+ ldr r3, =gActiveBank
+ ldrb r0, [r3]
+ lsls r0, 2
+ add r0, r8
+ str r1, [r0]
+ movs r5, 0
+ ldr r6, =gNoOfAllBanks
+ ldrb r6, [r6]
+ cmp r5, r6
+ bge _0803A830
+ adds r3, r2, 0
+ movs r4, 0
+ ldr r0, =gBitTable
+ mov r8, r0
+_0803A7C6:
+ ldr r1, [r3]
+ movs r0, 0x80
+ lsls r0, 19
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A7E6
+ ldr r2, =gDisableStructs
+ adds r0, r4, r2
+ ldrb r0, [r0, 0x14]
+ ldr r6, =gActiveBank
+ ldrb r6, [r6]
+ cmp r0, r6
+ bne _0803A7E6
+ ldr r0, =0xfbffffff
+ ands r1, r0
+ str r1, [r3]
+_0803A7E6:
+ ldr r1, =gActiveBank
+ ldrb r0, [r1]
+ lsls r0, 2
+ add r0, r8
+ ldr r0, [r0]
+ lsls r2, r0, 16
+ ldr r1, [r3]
+ adds r0, r1, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _0803A800
+ bics r1, r2
+ str r1, [r3]
+_0803A800:
+ ldr r1, [r3]
+ movs r0, 0xE0
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _0803A822
+ mov r2, r12
+ ldr r0, [r2]
+ adds r0, r5, r0
+ ldrb r0, [r0, 0x14]
+ ldr r6, =gActiveBank
+ ldrb r6, [r6]
+ cmp r0, r6
+ bne _0803A822
+ ldr r0, =0xffff1fff
+ ands r1, r0
+ str r1, [r3]
+_0803A822:
+ adds r3, 0x58
+ adds r4, 0x1C
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803A7C6
+_0803A830:
+ ldr r1, =gActiveBank
+ ldrb r0, [r1]
+ add r0, r9
+ movs r1, 0
+ strb r1, [r0]
+ ldr r2, =gActiveBank
+ ldrb r0, [r2]
+ add r0, r10
+ strb r1, [r0]
+ ldrb r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ ldr r3, =gDisableStructs
+ adds r1, r0, r3
+ movs r5, 0
+ movs r2, 0
+_0803A852:
+ adds r0, r1, r5
+ strb r2, [r0]
+ adds r5, 0x1
+ cmp r5, 0x1B
+ bls _0803A852
+ ldr r6, =gActiveBank
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x2
+ negs r0, r0
+ mov r9, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r3, 0x3
+ negs r3, r3
+ mov r8, r3
+ mov r0, r8
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r6, 0x5
+ negs r6, r6
+ adds r0, r6, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ subs r3, 0x6
+ mov r10, r3
+ mov r0, r10
+ ands r0, r2
+ strb r0, [r1]
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r2, =gActiveBank
+ ldrb r1, [r2]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r5, 0x21
+ negs r5, r5
+ adds r0, r5, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r3, =gActiveBank
+ ldrb r1, [r3]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r4, 0x41
+ negs r4, r4
+ adds r0, r4, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r1, [r3]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r3, 0x7F
+ adds r0, r3, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1, 0x1]
+ mov r0, r9
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r2, =gActiveBank
+ ldrb r1, [r2]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1, 0x1]
+ mov r0, r8
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1, 0x1]
+ adds r0, r6, 0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r2, =gActiveBank
+ ldrb r1, [r2]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ ldr r1, =gActiveBank
+ ldrb r0, [r1]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x1]
+ ands r5, r1
+ strb r5, [r0, 0x1]
+ ldr r2, =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x1]
+ ands r4, r1
+ strb r4, [r0, 0x1]
+ ldrb r0, [r2]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x1]
+ ands r3, r1
+ strb r3, [r0, 0x1]
+ ldrb r0, [r2]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x2]
+ mov r3, r9
+ ands r3, r1
+ strb r3, [r0, 0x2]
+ ldrb r0, [r2]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x2]
+ mov r2, r8
+ ands r2, r1
+ strb r2, [r0, 0x2]
+ ldr r3, =gActiveBank
+ ldrb r0, [r3]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x2]
+ ands r6, r1
+ strb r6, [r0, 0x2]
+ ldrb r0, [r3]
+ lsls r0, 4
+ adds r0, r7
+ ldrb r1, [r0, 0x2]
+ mov r6, r10
+ ands r6, r1
+ strb r6, [r0, 0x2]
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ ldr r1, =gDisableStructs
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x2
+ strb r1, [r0, 0x16]
+ ldrb r0, [r3]
+ lsls r0, 1
+ ldr r3, =gLastUsedMovesByBanks
+ adds r0, r3
+ movs r3, 0
+ strh r2, [r0]
+ ldr r6, =gActiveBank
+ ldrb r0, [r6]
+ lsls r0, 1
+ ldr r1, =gUnknown_02024250
+ adds r0, r1
+ strh r2, [r0]
+ ldrb r0, [r6]
+ lsls r0, 1
+ ldr r6, =gUnknown_02024258
+ adds r0, r6
+ strh r2, [r0]
+ ldr r1, =gActiveBank
+ ldrb r0, [r1]
+ lsls r0, 1
+ ldr r6, =gUnknown_02024260
+ adds r0, r6
+ strh r2, [r0]
+ ldrb r0, [r1]
+ lsls r0, 1
+ ldr r1, =gUnknown_02024240
+ adds r0, r1
+ strh r2, [r0]
+ ldr r2, =gActiveBank
+ ldrb r0, [r2]
+ ldr r6, =gUnknown_02024270
+ adds r0, r6
+ movs r1, 0xFF
+ strb r1, [r0]
+ ldrb r0, [r2]
+ mov r2, r12
+ ldr r1, [r2]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0xC8
+ strb r3, [r0]
+ ldr r6, =gActiveBank
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0xC9
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0x98
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, 0x99
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE0
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE1
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE2
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE3
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE4
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE5
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE6
+ strb r3, [r0]
+ ldrb r0, [r6]
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ adds r0, 0xE7
+ strb r3, [r0]
+ ldr r1, [r2]
+ adds r1, 0x92
+ ldrb r0, [r6]
+ lsls r0, 2
+ ldr r2, =gBitTable
+ adds r0, r2
+ ldr r2, [r0]
+ ldrb r0, [r1]
+ bics r0, r2
+ strb r0, [r1]
+ movs r5, 0
+ ldr r3, =gNoOfAllBanks
+ ldrb r3, [r3]
+ cmp r5, r3
+ bge _0803AB02
+ adds r3, r6, 0
+ mov r7, r12
+ movs r6, 0
+_0803AAA4:
+ ldrb r0, [r3]
+ cmp r5, r0
+ beq _0803AADA
+ lsls r0, r5, 24
+ lsrs r0, 24
+ str r3, [sp]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldr r3, [sp]
+ ldrb r0, [r3]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ ldr r3, [sp]
+ cmp r4, r0
+ beq _0803AADA
+ ldr r0, [r7]
+ lsls r1, r5, 1
+ adds r0, r1, r0
+ adds r0, 0x98
+ strb r6, [r0]
+ ldr r0, [r7]
+ adds r1, r0
+ adds r1, 0x99
+ strb r6, [r1]
+_0803AADA:
+ ldrb r0, [r3]
+ ldr r1, [r7]
+ lsls r0, 1
+ lsls r2, r5, 3
+ adds r0, r2
+ adds r0, r1
+ adds r0, 0xE0
+ strb r6, [r0]
+ ldrb r0, [r3]
+ ldr r1, [r7]
+ lsls r0, 1
+ adds r0, r2
+ adds r0, r1
+ adds r0, 0xE1
+ strb r6, [r0]
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803AAA4
+_0803AB02:
+ ldr r0, =gBattleResources
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldr r2, =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+ ldr r4, =gBattleMons
+ ldrb r0, [r2]
+ movs r3, 0x58
+ adds r2, r0, 0
+ muls r2, r3
+ b _0803AB6C
+ .pool
+_0803AB6C:
+ adds r2, r4
+ ldr r5, =gBaseStats
+ ldrh r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x6]
+ adds r2, 0x21
+ strb r0, [r2]
+ ldr r6, =gActiveBank
+ ldrb r0, [r6]
+ adds r1, r0, 0
+ muls r1, r3
+ adds r1, r4
+ ldrh r2, [r1]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x7]
+ adds r1, 0x22
+ strb r0, [r1]
+ ldrb r0, [r6]
+ bl ClearBankMoveHistory
+ ldrb r0, [r6]
+ bl ClearBankAbilityHistory
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803A75C
+
+ thumb_func_start bc_8012FAC
+bc_8012FAC: @ 803ABC0
+ push {r4,r5,lr}
+ ldr r5, =gBattleCommunication
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _0803ABD4
+ cmp r0, 0x1
+ beq _0803ABF8
+ b _0803AC2E
+ .pool
+_0803ABD4:
+ ldr r4, =gActiveBank
+ ldrb r0, [r5, 0x1]
+ strb r0, [r4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl dp01_build_cmdbuf_x00_a_b_0
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ b _0803AC2E
+ .pool
+_0803ABF8:
+ ldr r0, =gBattleExecBuffer
+ ldr r2, [r0]
+ cmp r2, 0
+ bne _0803AC2E
+ ldrb r0, [r5, 0x1]
+ adds r0, 0x1
+ strb r0, [r5, 0x1]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _0803AC2C
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_load_battlefield
+ str r0, [r1]
+ b _0803AC2E
+ .pool
+_0803AC2C:
+ strb r2, [r5]
+_0803AC2E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end bc_8012FAC
+
+ thumb_func_start bc_load_battlefield
+bc_load_battlefield: @ 803AC34
+ push {r4,r5,lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r5, [r0]
+ cmp r5, 0
+ bne _0803AC64
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r4, =gActiveBank
+ strb r0, [r4]
+ ldr r0, =gUnknown_02022FF0
+ ldrb r1, [r0]
+ movs r0, 0
+ bl dp01_build_cmdbuf_x2E_a
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803AC84
+ str r0, [r1]
+ ldr r0, =gBattleCommunication
+ strb r5, [r0]
+ strb r5, [r0, 0x1]
+_0803AC64:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_load_battlefield
+
+ thumb_func_start sub_803AC84
+sub_803AC84: @ 803AC84
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r0, =gBattleExecBuffer
+ ldr r1, [r0]
+ cmp r1, 0
+ beq _0803AC98
+ b _0803AF4E
+_0803AC98:
+ ldr r2, =gActiveBank
+ strb r1, [r2]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcc _0803ACA6
+ b _0803AF48
+_0803ACA6:
+ movs r7, 0x58
+ ldr r0, =gBattleMons
+ mov r8, r0
+ mov r9, r2
+ movs r1, 0x48
+ add r1, r8
+ mov r10, r1
+_0803ACB4:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0803ACFC
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803ACFC
+ ldrb r0, [r4]
+ muls r0, r7
+ mov r2, r8
+ adds r3, r0, r2
+ movs r2, 0
+ movs r1, 0
+_0803ACDA:
+ adds r0, r3, r2
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x57
+ bls _0803ACDA
+ b _0803ADCA
+ .pool
+_0803ACFC:
+ mov r1, r9
+ ldrb r0, [r1]
+ muls r0, r7
+ mov r2, r8
+ adds r3, r0, r2
+ movs r2, 0
+ ldr r6, =gBaseStats
+ ldr r5, =gBattleBufferB
+ ldr r4, =gActiveBank
+_0803AD0E:
+ adds r0, r3, r2
+ ldrb r1, [r4]
+ lsls r1, 9
+ adds r1, 0x4
+ adds r1, r2, r1
+ adds r1, r5
+ ldrb r1, [r1]
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x57
+ bls _0803AD0E
+ mov r1, r9
+ ldrb r0, [r1]
+ adds r2, r0, 0
+ muls r2, r7
+ add r2, r8
+ ldrh r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r0, [r0, 0x6]
+ adds r2, 0x21
+ strb r0, [r2]
+ mov r2, r9
+ ldrb r0, [r2]
+ adds r2, r0, 0
+ muls r2, r7
+ add r2, r8
+ ldrh r1, [r2]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r0, [r0, 0x7]
+ adds r2, 0x22
+ strb r0, [r2]
+ mov r1, r9
+ ldrb r0, [r1]
+ adds r1, r0, 0
+ muls r1, r7
+ add r1, r8
+ ldrh r0, [r1]
+ ldrb r1, [r1, 0x17]
+ lsrs r1, 7
+ bl GetAbilityBySpecies
+ mov r2, r9
+ ldrb r1, [r2]
+ muls r1, r7
+ add r1, r8
+ adds r1, 0x20
+ strb r0, [r1]
+ ldrb r0, [r2]
+ bl GetBankSide
+ ldr r1, =gBattleStruct
+ lsls r0, 24
+ lsrs r0, 23
+ adds r0, 0xA8
+ ldr r1, [r1]
+ adds r1, r0
+ mov r2, r9
+ ldrb r0, [r2]
+ muls r0, r7
+ add r0, r8
+ ldrh r0, [r0, 0x28]
+ strh r0, [r1]
+ movs r2, 0
+ ldr r4, =gActiveBank
+ movs r5, 0x58
+ ldr r1, =gBattleMons + 0x18
+ adds r6, r4, 0
+ movs r0, 0x18
+ negs r0, r0
+ adds r0, r1
+ mov r12, r0
+ movs r3, 0x6
+_0803ADAA:
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r0, r2, r0
+ adds r0, r1
+ strb r3, [r0]
+ adds r2, 0x1
+ cmp r2, 0x7
+ ble _0803ADAA
+ ldrb r0, [r6]
+ adds r1, r0, 0
+ muls r1, r7
+ mov r0, r12
+ adds r0, 0x50
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_0803ADCA:
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803ADE4
+ movs r0, 0
+ bl dp01_build_cmdbuf_x07_7_7_7
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803ADE4:
+ ldr r5, =gBattleTypeFlags
+ ldr r0, [r5]
+ movs r1, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0803AE60
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803AE0A
+ movs r0, 0
+ bl dp01_build_cmdbuf_x07_7_7_7
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803AE0A:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803AEC0
+ ldr r0, [r5]
+ ldr r1, =0x063f0902
+ ands r0, r1
+ cmp r0, 0
+ bne _0803AEC0
+ ldrb r0, [r4]
+ muls r0, r7
+ add r0, r8
+ ldrh r0, [r0]
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r4]
+ muls r1, r7
+ add r1, r10
+ ldr r2, [r1]
+ movs r1, 0x2
+ bl SetPokedexFlag
+ b _0803AEC0
+ .pool
+_0803AE60:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803AEC0
+ ldr r0, [r5]
+ ldr r1, =0x063f0902
+ ands r0, r1
+ cmp r0, 0
+ bne _0803AE96
+ ldrb r0, [r4]
+ muls r0, r7
+ add r0, r8
+ ldrh r0, [r0]
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r4]
+ muls r1, r7
+ add r1, r10
+ ldr r2, [r1]
+ movs r1, 0x2
+ bl SetPokedexFlag
+_0803AE96:
+ movs r0, 0
+ bl dp01_build_cmdbuf_x04_4_4_4
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldr r1, =gBattlePartyID
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gEnemyParty
+ adds r0, r1
+ movs r1, 0xB
+ movs r2, 0
+ bl GetMonData
+ ldr r1, =gBattleResults
+ strh r0, [r1, 0x20]
+_0803AEC0:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803AEF6
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ beq _0803AEEA
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0803AEF6
+_0803AEEA:
+ movs r0, 0
+ bl dp01_build_cmdbuf_x07_7_7_7
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803AEF6:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _0803AF20
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0803AF20
+ movs r0, 0
+ bl dp01_build_cmdbuf_x07_7_7_7
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803AF20:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 11
+ ands r0, r1
+ cmp r0, 0
+ beq _0803AF32
+ bl sub_81A56B4
+_0803AF32:
+ mov r1, r9
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0803AF48
+ b _0803ACB4
+_0803AF48:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_801333C
+ str r0, [r1]
+_0803AF4E:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803AC84
+
+ thumb_func_start bc_801333C
+bc_801333C: @ 803AF80
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x30
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0803AF92
+ b _0803B10C
+_0803AF92:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _0803AFA0
+ b _0803B0AC
+_0803AFA0:
+ movs r7, 0
+ add r0, sp, 0x4
+ mov r8, r0
+ mov r6, r8
+ mov r5, sp
+_0803AFAA:
+ movs r0, 0x64
+ adds r1, r7, 0
+ muls r1, r0
+ ldr r0, =gEnemyParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _0803AFD0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ bne _0803AFE8
+_0803AFD0:
+ ldr r0, =0x0000ffff
+ strh r0, [r5]
+ movs r0, 0
+ b _0803AFFA
+ .pool
+_0803AFE8:
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ strh r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+_0803AFFA:
+ str r0, [r6]
+ adds r6, 0x8
+ adds r5, 0x8
+ adds r7, 0x1
+ cmp r7, 0x5
+ ble _0803AFAA
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ ldr r4, =gActiveBank
+ strb r0, [r4]
+ movs r0, 0
+ mov r1, sp
+ movs r2, 0x80
+ bl dp01_build_cmdbuf_x30_TODO
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ movs r7, 0
+ mov r6, r8
+ mov r5, sp
+_0803B026:
+ movs r0, 0x64
+ adds r1, r7, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _0803B04C
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ bne _0803B060
+_0803B04C:
+ ldr r0, =0x0000ffff
+ strh r0, [r5]
+ movs r0, 0
+ b _0803B072
+ .pool
+_0803B060:
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ strh r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+_0803B072:
+ str r0, [r6]
+ adds r6, 0x8
+ adds r5, 0x8
+ adds r7, 0x1
+ cmp r7, 0x5
+ ble _0803B026
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r4, =gActiveBank
+ strb r0, [r4]
+ movs r0, 0
+ mov r1, sp
+ movs r2, 0x80
+ bl dp01_build_cmdbuf_x30_TODO
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_battle_begin_message
+ b _0803B10A
+ .pool
+_0803B0AC:
+ movs r7, 0
+ add r6, sp, 0x4
+ mov r5, sp
+_0803B0B2:
+ movs r0, 0x64
+ adds r1, r7, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _0803B0D8
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ bne _0803B0E8
+_0803B0D8:
+ ldr r0, =0x0000ffff
+ strh r0, [r5]
+ movs r0, 0
+ b _0803B0FA
+ .pool
+_0803B0E8:
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ strh r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0x37
+ bl GetMonData
+_0803B0FA:
+ str r0, [r6]
+ adds r6, 0x8
+ adds r5, 0x8
+ adds r7, 0x1
+ cmp r7, 0x5
+ ble _0803B0B2
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_8013568
+_0803B10A:
+ str r0, [r1]
+_0803B10C:
+ add sp, 0x30
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_801333C
+
+ thumb_func_start bc_battle_begin_message
+bc_battle_begin_message: @ 803B120
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B142
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ ldr r1, =gActiveBank
+ strb r0, [r1]
+ ldrb r1, [r1]
+ movs r0, 0
+ bl b_std_message
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B180
+ str r0, [r1]
+_0803B142:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_battle_begin_message
+
+ thumb_func_start bc_8013568
+bc_8013568: @ 803B158
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B170
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B3CC
+ str r0, [r1]
+ movs r0, 0
+ movs r1, 0
+ bl b_std_message
+_0803B170:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_8013568
+
+ thumb_func_start sub_803B180
+sub_803B180: @ 803B180
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B1D0
+ ldr r0, =gBattleTypeFlags
+ ldr r2, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B1B8
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B1B8
+ movs r1, 0x80
+ lsls r1, 24
+ ands r1, r2
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ b _0803B1BA
+ .pool
+_0803B1B8:
+ movs r0, 0x1
+_0803B1BA:
+ bl GetBankByPlayerAI
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0x1
+ bl b_std_message
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B25C
+ str r0, [r1]
+_0803B1D0:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B180
+
+ thumb_func_start sub_803B1DC
+sub_803B1DC: @ 803B1DC
+ push {r4,r5,lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B1FC
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B1FC
+ movs r5, 0x2
+ cmp r1, 0
+ bge _0803B1FE
+_0803B1FC:
+ movs r5, 0x3
+_0803B1FE:
+ ldr r1, =gActiveBank
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803B23A
+ adds r4, r1, 0
+_0803B20E:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r5
+ bne _0803B228
+ movs r0, 0
+ bl dp01_build_cmdbuf_x2F_2F_2F_2F
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803B228:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B20E
+_0803B23A:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_801362C
+ str r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B1DC
+
+ thumb_func_start sub_803B25C
+sub_803B25C: @ 803B25C
+ push {r4-r6,lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r2, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B298
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B298
+ movs r1, 0x80
+ lsls r1, 24
+ ands r1, r2
+ negs r0, r1
+ orrs r0, r1
+ lsrs r5, r0, 31
+ b _0803B29A
+ .pool
+_0803B288:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B1DC
+ b _0803B2F0
+ .pool
+_0803B298:
+ movs r5, 0x1
+_0803B29A:
+ ldr r0, =gBattleExecBuffer
+ ldr r2, [r0]
+ cmp r2, 0
+ bne _0803B2F2
+ ldr r0, =gActiveBank
+ strb r2, [r0]
+ ldr r1, =gNoOfAllBanks
+ adds r4, r0, 0
+ ldrb r1, [r1]
+ cmp r2, r1
+ bcs _0803B2EC
+ adds r6, r4, 0
+_0803B2B2:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r5
+ bne _0803B2D8
+ movs r0, 0
+ bl dp01_build_cmdbuf_x2F_2F_2F_2F
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x00008040
+ ands r0, r1
+ cmp r0, 0
+ bne _0803B288
+_0803B2D8:
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, =gActiveBank
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B2B2
+_0803B2EC:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_801362C
+_0803B2F0:
+ str r0, [r1]
+_0803B2F2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B25C
+
+ thumb_func_start bc_801362C
+bc_801362C: @ 803B314
+ push {r4-r7,lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r1, [r0]
+ cmp r1, 0
+ bne _0803B384
+ ldr r2, =gActiveBank
+ strb r1, [r2]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs _0803B37E
+ adds r4, r2, 0
+ ldr r6, =gBattleMons
+ movs r5, 0x58
+ adds r7, r6, 0
+ adds r7, 0x48
+_0803B334:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803B36C
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x063f0902
+ ands r0, r1
+ cmp r0, 0
+ bne _0803B36C
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r0, r6
+ ldrh r0, [r0]
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r4]
+ muls r1, r5
+ adds r1, r7
+ ldr r2, [r1]
+ movs r1, 0x2
+ bl SetPokedexFlag
+_0803B36C:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B334
+_0803B37E:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B3CC
+ str r0, [r1]
+_0803B384:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_801362C
+
+ thumb_func_start sub_803B3AC
+sub_803B3AC: @ 803B3AC
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B3BC
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B3CC
+ str r0, [r1]
+_0803B3BC:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B3AC
+
+ thumb_func_start sub_803B3CC
+sub_803B3CC: @ 803B3CC
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B418
+ ldr r1, =gBattleTypeFlags
+ ldr r2, [r1]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B3F4
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r2
+ cmp r0, 0
+ beq _0803B3F4
+ movs r3, 0x1
+ cmp r2, 0
+ bge _0803B3F6
+_0803B3F4:
+ movs r3, 0
+_0803B3F6:
+ ldr r0, [r1]
+ movs r1, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0803B412
+ adds r0, r3, 0
+ bl GetBankByPlayerAI
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0x1
+ bl b_std_message
+_0803B412:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B4C8
+ str r0, [r1]
+_0803B418:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B3CC
+
+ thumb_func_start sub_803B42C
+sub_803B42C: @ 803B42C
+ push {r4,r5,lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B44C
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B44C
+ movs r5, 0x3
+ cmp r1, 0
+ bge _0803B44E
+_0803B44C:
+ movs r5, 0x2
+_0803B44E:
+ ldr r1, =gActiveBank
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803B48A
+ adds r4, r1, 0
+_0803B45E:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r5
+ bne _0803B478
+ movs r0, 0
+ bl dp01_build_cmdbuf_x2F_2F_2F_2F
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803B478:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B45E
+_0803B48A:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0x4C
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r0, 0xD9
+ strb r1, [r0]
+ ldr r0, [r2]
+ movs r2, 0xD1
+ lsls r2, 1
+ adds r0, r2
+ strb r1, [r0]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B628
+ str r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B42C
+
+ thumb_func_start sub_803B4C8
+sub_803B4C8: @ 803B4C8
+ push {r4-r6,lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 17
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B500
+ movs r0, 0x80
+ lsls r0, 18
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B500
+ movs r6, 0x1
+ cmp r1, 0
+ bge _0803B502
+ b _0803B500
+ .pool
+_0803B4F0:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B42C
+ b _0803B572
+ .pool
+_0803B500:
+ movs r6, 0
+_0803B502:
+ ldr r0, =gBattleExecBuffer
+ ldr r2, [r0]
+ cmp r2, 0
+ bne _0803B574
+ ldr r0, =gActiveBank
+ strb r2, [r0]
+ ldr r1, =gNoOfAllBanks
+ adds r4, r0, 0
+ ldrb r1, [r1]
+ cmp r2, r1
+ bcs _0803B554
+ adds r5, r4, 0
+_0803B51A:
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r6
+ bne _0803B540
+ movs r0, 0
+ bl dp01_build_cmdbuf_x2F_2F_2F_2F
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0803B4F0
+_0803B540:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, =gActiveBank
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B51A
+_0803B554:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0x4C
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r0, 0xD9
+ strb r1, [r0]
+ ldr r0, [r2]
+ movs r2, 0xD1
+ lsls r2, 1
+ adds r0, r2
+ strb r1, [r0]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B628
+_0803B572:
+ str r0, [r1]
+_0803B574:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B4C8
+
+ thumb_func_start sub_803B598
+sub_803B598: @ 803B598
+ push {r4,r5,lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r1, [r0]
+ cmp r1, 0
+ bne _0803B606
+ ldr r2, =gActiveBank
+ strb r1, [r2]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs _0803B5E6
+ adds r4, r2, 0
+ ldr r5, =gBattlePartyID
+_0803B5B2:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803B5D4
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0
+ movs r2, 0
+ bl dp01_build_cmdbuf_x05_a_b_c
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803B5D4:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B5B2
+_0803B5E6:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0x4C
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r0, 0xD9
+ strb r1, [r0]
+ ldr r0, [r2]
+ movs r2, 0xD1
+ lsls r2, 1
+ adds r0, r2
+ strb r1, [r0]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B628
+ str r0, [r1]
+_0803B606:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B598
+
+ thumb_func_start sub_803B628
+sub_803B628: @ 803B628
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ movs r0, 0
+ mov r9, r0
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0803B642
+ b _0803B8B2
+_0803B642:
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, 0x4C
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803B6C2
+ movs r5, 0
+ ldr r1, =gNoOfAllBanks
+ mov r10, r1
+ ldrb r3, [r1]
+ cmp r5, r3
+ bge _0803B668
+ ldr r2, =gTurnOrder
+_0803B65C:
+ adds r0, r5, r2
+ strb r5, [r0]
+ adds r5, 0x1
+ ldrb r0, [r1]
+ cmp r5, r0
+ blt _0803B65C
+_0803B668:
+ movs r5, 0
+ b _0803B6B8
+ .pool
+_0803B67C:
+ adds r4, r5, 0x1
+ mov r8, r4
+ ldrb r1, [r1]
+ cmp r8, r1
+ bge _0803B6B6
+ ldr r6, =gTurnOrder
+ ldr r1, =gNoOfAllBanks
+ mov r10, r1
+ lsls r7, r5, 24
+_0803B68E:
+ adds r0, r5, r6
+ ldrb r0, [r0]
+ adds r1, r4, r6
+ ldrb r1, [r1]
+ movs r2, 0x1
+ bl b_first_side
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B6AC
+ lsls r1, r4, 24
+ lsrs r1, 24
+ lsrs r0, r7, 24
+ bl sub_803CEDC
+_0803B6AC:
+ adds r4, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0803B68E
+_0803B6B6:
+ mov r5, r8
+_0803B6B8:
+ mov r1, r10
+ ldrb r0, [r1]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _0803B67C
+_0803B6C2:
+ ldr r5, =gBattleStruct
+ ldr r0, [r5]
+ movs r4, 0xD1
+ lsls r4, 1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803B6FC
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFF
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B6FC
+ ldr r0, [r5]
+ adds r0, r4
+ movs r1, 0x1
+ strb r1, [r0]
+ b _0803B8B2
+ .pool
+_0803B6FC:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0x4C
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0803B756
+ ldr r5, =gTurnOrder
+ adds r4, r2, 0
+_0803B710:
+ ldr r0, [r4]
+ adds r0, 0x4C
+ ldrb r0, [r0]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B736
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0803B736:
+ ldr r1, [r4]
+ adds r1, 0x4C
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ mov r3, r9
+ cmp r3, 0
+ beq _0803B748
+ b _0803B8B2
+_0803B748:
+ ldr r0, [r4]
+ adds r0, 0x4C
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B710
+_0803B756:
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x9
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0803B770
+ b _0803B8B2
+_0803B770:
+ str r0, [sp]
+ movs r0, 0xB
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B786
+ b _0803B8B2
+_0803B786:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0xD9
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0803B7DA
+ ldr r5, =gTurnOrder
+ adds r4, r2, 0
+_0803B79A:
+ ldr r0, [r4]
+ adds r0, 0xD9
+ ldrb r0, [r0]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0
+ movs r2, 0
+ bl berry_effects_maybe
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B7BC
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0803B7BC:
+ ldr r1, [r4]
+ adds r1, 0xD9
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ mov r0, r9
+ cmp r0, 0
+ bne _0803B8B2
+ ldr r0, [r4]
+ adds r0, 0xD9
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803B79A
+_0803B7DA:
+ movs r5, 0
+ ldr r1, =gBattleStruct
+ mov r8, r1
+ movs r7, 0x6
+ ldr r6, =gUnknown_0202421C
+ ldr r2, =gUnknown_02024274
+ movs r4, 0xFF
+ movs r3, 0
+_0803B7EA:
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, r5, r0
+ adds r0, 0x5C
+ strb r7, [r0]
+ adds r1, r5, r6
+ ldrb r0, [r1]
+ orrs r0, r4
+ strb r0, [r1]
+ strh r3, [r2]
+ adds r2, 0x2
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0803B7EA
+ movs r0, 0
+ bl sub_803D580
+ bl sub_803D6A0
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, 0x91
+ ldr r1, =gAbsentBankFlags
+ ldrb r1, [r1]
+ strb r1, [r0]
+ ldr r0, =gUnknown_085CC23E
+ movs r1, 0
+ bl battle_show_message_maybe
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803BE74
+ str r0, [r1]
+ bl sub_803F988
+ ldr r1, =gBattleCommunication
+ movs r2, 0
+ adds r0, r1, 0x7
+_0803B834:
+ strb r2, [r0]
+ subs r0, 0x1
+ cmp r0, r1
+ bge _0803B834
+ movs r5, 0
+ ldr r3, =gNoOfAllBanks
+ ldr r2, =gBattleStruct
+ ldr r6, =gBattleScripting
+ ldr r7, =gBattleMoveFlags
+ ldrb r0, [r3]
+ cmp r5, r0
+ bge _0803B866
+ ldr r0, =gBattleMons
+ movs r4, 0x9
+ negs r4, r4
+ adds r1, r0, 0
+ adds r1, 0x50
+_0803B856:
+ ldr r0, [r1]
+ ands r0, r4
+ str r0, [r1]
+ adds r1, 0x58
+ adds r5, 0x1
+ ldrb r0, [r3]
+ cmp r5, r0
+ blt _0803B856
+_0803B866:
+ ldr r0, [r2]
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ strb r1, [r0, 0x1]
+ ldr r0, [r2]
+ movs r3, 0xD0
+ lsls r3, 1
+ adds r0, r3
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r3, 0x1
+ adds r0, r3
+ strb r1, [r0]
+ movs r1, 0
+ strb r1, [r6, 0x14]
+ ldr r0, [r2]
+ adds r0, 0x4D
+ strb r1, [r0]
+ ldr r0, [r2]
+ strb r1, [r0, 0x3]
+ strb r1, [r7]
+ bl Random
+ ldr r1, =gUnknown_02024330
+ strh r0, [r1]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 11
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B8B2
+ bl StopCryAndClearCrySongs
+ ldr r0, =gUnknown_082DB8BE
+ bl b_call_bc_move_exec
+_0803B8B2:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B628
+
+ thumb_func_start bc_8013B1C
+bc_8013B1C: @ 803B904
+ push {r4-r6,lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803B994
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803B9BC
+ str r0, [r1]
+ ldr r3, =gNoOfAllBanks
+ ldr r1, =gBattleCommunication
+ movs r2, 0
+ adds r0, r1, 0x7
+_0803B91C:
+ strb r2, [r0]
+ subs r0, 0x1
+ cmp r0, r1
+ bge _0803B91C
+ movs r4, 0
+ ldrb r3, [r3]
+ cmp r4, r3
+ bge _0803B96E
+ ldr r5, =gBattleMons
+ adds r6, r5, 0
+ adds r6, 0x4C
+_0803B932:
+ movs r0, 0x58
+ adds r2, r4, 0
+ muls r2, r0
+ adds r1, r5, 0
+ adds r1, 0x50
+ adds r1, r2, r1
+ ldr r3, [r1]
+ subs r0, 0x61
+ ands r3, r0
+ str r3, [r1]
+ adds r2, r6
+ ldr r0, [r2]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _0803B964
+ movs r0, 0x80
+ lsls r0, 5
+ ands r3, r0
+ cmp r3, 0
+ beq _0803B964
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl CancelMultiTurnMoves
+_0803B964:
+ adds r4, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0803B932
+_0803B96E:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ strb r1, [r0, 0x1]
+ ldr r0, [r2]
+ movs r3, 0xD0
+ lsls r3, 1
+ adds r0, r3
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r3, 0x1
+ adds r0, r3
+ strb r1, [r0]
+ ldr r0, [r2]
+ strb r1, [r0, 0x3]
+ ldr r0, =gBattleMoveFlags
+ strb r1, [r0]
+_0803B994:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_8013B1C
+
+ thumb_func_start sub_803B9BC
+sub_803B9BC: @ 803B9BC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ movs r0, 0x1
+ bl sub_803D580
+ ldr r0, =gBattleOutcome
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803B9EA
+ bl sub_80401D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B9DE
+ b _0803BB78
+_0803B9DE:
+ bl sub_8040924
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803B9EA
+ b _0803BB78
+_0803B9EA:
+ bl sub_8041728
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _0803B9F8
+ b _0803BB78
+_0803B9F8:
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, 0x4D
+ strb r1, [r0]
+ bl sub_8041364
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0803BA0E
+ b _0803BB78
+_0803BA0E:
+ movs r0, 0
+ bl sub_803D580
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ ldr r1, =0xfffffdff
+ ands r0, r1
+ ldr r1, =0xfff7ffff
+ ands r0, r1
+ ldr r1, =0xffbfffff
+ ands r0, r1
+ ldr r1, =0xffefffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, =gBattleScripting
+ strb r4, [r0, 0x18]
+ strb r4, [r0, 0x19]
+ strb r4, [r0, 0x14]
+ ldr r0, =gBattleMoveDamage
+ str r4, [r0]
+ ldr r0, =gBattleMoveFlags
+ strb r4, [r0]
+ ldr r1, =gBattleCommunication
+ movs r2, 0
+ adds r0, r1, 0x4
+_0803BA40:
+ strb r2, [r0]
+ subs r0, 0x1
+ cmp r0, r1
+ bge _0803BA40
+ ldr r0, =gBattleOutcome
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803BA98
+ ldr r1, =gFightStateTracker
+ movs r0, 0xC
+ strb r0, [r1]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_bs_exec
+ str r0, [r1]
+ b _0803BB78
+ .pool
+_0803BA98:
+ ldr r1, =gBattleResults
+ ldrb r0, [r1, 0x13]
+ ldr r2, =gBattleStruct
+ mov r8, r2
+ cmp r0, 0xFE
+ bhi _0803BAB2
+ adds r0, 0x1
+ strb r0, [r1, 0x13]
+ ldr r1, [r2]
+ adds r1, 0xDA
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0803BAB2:
+ movs r2, 0
+ ldr r4, =gNoOfAllBanks
+ ldr r0, =gAbsentBankFlags
+ mov r12, r0
+ ldr r1, =gUnknown_085CC23E
+ mov r9, r1
+ ldrb r0, [r4]
+ cmp r2, r0
+ bge _0803BAE0
+ ldr r7, =gUnknown_0202421C
+ movs r6, 0xFF
+ movs r5, 0
+ ldr r3, =gUnknown_02024274
+_0803BACC:
+ adds r1, r2, r7
+ ldrb r0, [r1]
+ orrs r0, r6
+ strb r0, [r1]
+ strh r5, [r3]
+ adds r3, 0x2
+ adds r2, 0x1
+ ldrb r1, [r4]
+ cmp r2, r1
+ blt _0803BACC
+_0803BAE0:
+ movs r2, 0
+ ldr r3, =gBattleStruct
+ movs r1, 0x6
+_0803BAE6:
+ ldr r0, [r3]
+ adds r0, r2, r0
+ adds r0, 0x5C
+ strb r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x3
+ ble _0803BAE6
+ mov r2, r8
+ ldr r0, [r2]
+ adds r0, 0x91
+ mov r2, r12
+ ldrb r1, [r2]
+ strb r1, [r0]
+ mov r0, r9
+ movs r1, 0
+ bl battle_show_message_maybe
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803BE74
+ str r0, [r1]
+ bl Random
+ ldr r1, =gUnknown_02024330
+ strh r0, [r1]
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 10
+ ands r0, r1
+ cmp r0, 0
+ beq _0803BB5C
+ ldr r0, =gUnknown_082DB881
+ bl b_call_bc_move_exec
+ b _0803BB78
+ .pool
+_0803BB5C:
+ movs r0, 0x80
+ lsls r0, 11
+ ands r1, r0
+ cmp r1, 0
+ beq _0803BB78
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0xDA
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803BB78
+ ldr r0, =gUnknown_082DB8BE
+ bl b_call_bc_move_exec
+_0803BB78:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803B9BC
+
+ thumb_func_start sub_803BB88
+sub_803BB88: @ 803BB88
+ push {r4-r7,lr}
+ sub sp, 0x4
+ ldr r1, =gBattleMons
+ ldr r0, =gActiveBank
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _0803BBB8
+ ldr r1, =gEnigmaBerries
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r2, [r0, 0x7]
+ b _0803BBC2
+ .pool
+_0803BBB8:
+ ldrh r0, [r1, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r2, r0, 24
+_0803BBC2:
+ ldr r1, =gUnknown_0202420F
+ ldr r3, =gActiveBank
+ ldrb r0, [r3]
+ strb r0, [r1]
+ cmp r2, 0x25
+ bne _0803BBD0
+ b _0803BD4C
+_0803BBD0:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0803BBDE
+ b _0803BD4C
+_0803BBDE:
+ ldr r1, =gBattleMons
+ ldrb r2, [r3]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x32
+ bne _0803BBF2
+ b _0803BD4C
+_0803BBF2:
+ adds r0, r2, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ bge _0803BC86
+ movs r7, 0
+_0803BC08:
+ lsrs r4, r7, 24
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ beq _0803BC2C
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r5
+ adds r0, r1
+ adds r2, r0, 0
+ adds r2, 0x20
+ ldrb r0, [r2]
+ cmp r0, 0x17
+ bne _0803BC2C
+ b _0803BD54
+_0803BC2C:
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ beq _0803BC76
+ ldr r3, =gBattleMons
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ movs r2, 0x58
+ muls r0, r2
+ adds r1, r0, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1A
+ beq _0803BC76
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0803BC76
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0803BC76
+ adds r0, r5, 0
+ muls r0, r2
+ adds r0, r3
+ adds r2, r0, 0
+ adds r2, 0x20
+ ldrb r0, [r2]
+ cmp r0, 0x47
+ bne _0803BC76
+ b _0803BD70
+_0803BC76:
+ movs r0, 0x80
+ lsls r0, 17
+ adds r7, r0
+ adds r5, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0803BC08
+_0803BC86:
+ ldr r4, =gActiveBank
+ ldrb r1, [r4]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xF
+ movs r2, 0x2A
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _0803BCF8
+ ldr r6, =gBattleMons
+ ldrb r0, [r4]
+ movs r3, 0x58
+ muls r0, r3
+ adds r1, r0, r6
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ beq _0803BCBE
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _0803BCF8
+_0803BCBE:
+ ldr r0, =gBattleScripting
+ subs r1, r5, 0x1
+ strb r1, [r0, 0x17]
+ ldr r2, =gLastUsedAbility
+ adds r0, r1, 0
+ muls r0, r3
+ adds r0, r6
+ adds r0, 0x20
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r1, =gBattleCommunication
+ movs r0, 0x2
+ b _0803BD90
+ .pool
+_0803BCF8:
+ ldr r1, =gBattleMons
+ ldr r0, =gActiveBank
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, =0x0400e000
+ ands r0, r1
+ cmp r0, 0
+ bne _0803BD22
+ ldr r1, =gStatuses3
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 3
+ ands r0, r1
+ cmp r0, 0
+ beq _0803BD40
+_0803BD22:
+ ldr r1, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x5]
+ movs r0, 0x1
+ b _0803BD92
+ .pool
+_0803BD40:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _0803BD8C
+_0803BD4C:
+ movs r0, 0
+ b _0803BD92
+ .pool
+_0803BD54:
+ ldr r0, =gBattleScripting
+ strb r5, [r0, 0x17]
+ ldr r1, =gLastUsedAbility
+ ldrb r0, [r2]
+ strb r0, [r1]
+ ldr r1, =gBattleCommunication
+ movs r0, 0x2
+ b _0803BD90
+ .pool
+_0803BD70:
+ ldr r0, =gBattleScripting
+ strb r5, [r0, 0x17]
+ ldr r1, =gLastUsedAbility
+ ldrb r0, [r2]
+ strb r0, [r1]
+ ldr r1, =gBattleCommunication
+ movs r0, 0x2
+ b _0803BD90
+ .pool
+_0803BD8C:
+ ldr r1, =gBattleCommunication
+ movs r0, 0x1
+_0803BD90:
+ strb r0, [r1, 0x5]
+_0803BD92:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_803BB88
+
+ thumb_func_start sub_803BDA0
+sub_803BDA0: @ 803BDA0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r3, 0
+ ldr r0, =gBattlePartyID
+ mov r8, r0
+ ldr r1, =gUnknown_0203CF00
+ mov r12, r1
+ ldr r7, =gBattleStruct
+ lsls r0, r5, 1
+ adds r4, r0, r5
+ adds r6, r0, 0
+_0803BDBC:
+ mov r0, r12
+ adds r2, r3, r0
+ ldr r1, [r7]
+ adds r0, r4, r3
+ adds r0, r1
+ adds r0, 0x60
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x2
+ ble _0803BDBC
+ mov r1, r8
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ bl pokemon_order_func
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r7, =gBattleStruct
+ ldr r0, [r7]
+ adds r0, r5, r0
+ adds r0, 0x5C
+ ldrb r0, [r0]
+ bl pokemon_order_func
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_81B8FB0
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803BE4C
+ movs r3, 0
+ adds r4, r7, 0
+ adds r6, r5
+ movs r0, 0x2
+ adds r1, r5, 0
+ eors r1, r0
+ ldr r7, =gUnknown_0203CF00
+ lsls r0, r1, 1
+ adds r5, r0, r1
+_0803BE1A:
+ ldr r0, [r4]
+ adds r1, r6, r3
+ adds r1, r0
+ adds r1, 0x60
+ adds r2, r3, r7
+ ldrb r0, [r2]
+ strb r0, [r1]
+ ldr r1, [r4]
+ adds r0, r5, r3
+ adds r0, r1
+ adds r0, 0x60
+ ldrb r1, [r2]
+ strb r1, [r0]
+ adds r3, 0x1
+ cmp r3, 0x2
+ ble _0803BE1A
+ b _0803BE66
+ .pool
+_0803BE4C:
+ movs r3, 0
+ adds r2, r6, r5
+ ldr r4, =gUnknown_0203CF00
+_0803BE52:
+ ldr r0, [r7]
+ adds r1, r2, r3
+ adds r1, r0
+ adds r1, 0x60
+ adds r0, r3, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r3, 0x1
+ cmp r3, 0x2
+ ble _0803BE52
+_0803BE66:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803BDA0
+
+ thumb_func_start sub_803BE74
+sub_803BE74: @ 803BE74
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ ldr r0, =gBattleCommunication
+ movs r1, 0
+ strb r1, [r0, 0x4]
+ ldr r0, =gActiveBank
+ strb r1, [r0]
+ ldr r0, =gNoOfAllBanks
+ bl _0803CD12
+ .pool
+_0803BE9C:
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bls _0803BEB8
+ bl _0803CD04
+_0803BEB8:
+ lsls r0, 2
+ ldr r1, =_0803BED0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803BED0:
+ .4byte _0803BEF4
+ .4byte _0803BF0C
+ .4byte _0803C02C
+ .4byte _0803C7D8
+ .4byte _0803CAD0
+ .4byte _0803CB84
+ .4byte _0803CBC8
+ .4byte _0803CBF4
+ .4byte _0803CC38
+_0803BEF4:
+ bl sub_8185FD0
+ ldr r1, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ bl _0803CC20
+ .pool
+_0803BF0C:
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ adds r1, r0
+ adds r1, 0x5C
+ movs r0, 0x6
+ strb r0, [r1]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0803BF68
+ movs r1, 0x2
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ beq _0803BF68
+ eors r5, r1
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ ldr r1, [r4]
+ adds r1, 0x91
+ ldrb r1, [r1]
+ ldr r2, =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803BF68
+ ldr r4, =gBattleCommunication
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ beq _0803BF68
+ bl _0803CD04
+_0803BF68:
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, 0x91
+ ldrb r3, [r0]
+ ldr r1, =gBitTable
+ ldr r4, =gActiveBank
+ ldrb r2, [r4]
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ands r3, r0
+ cmp r3, 0
+ beq _0803BFD0
+ ldr r0, =gUnknown_0202421C
+ adds r0, r2, r0
+ movs r1, 0xD
+ strb r1, [r0]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0803BFBC
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r4]
+ adds r1, r0
+ movs r0, 0x5
+ strb r0, [r1]
+ bl _0803CD04
+ .pool
+_0803BFBC:
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r4]
+ adds r1, r0
+ movs r0, 0x4
+ strb r0, [r1]
+ bl _0803CD04
+ .pool
+_0803BFD0:
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r1
+ cmp r0, 0
+ bne _0803BFF0
+ movs r0, 0x80
+ lsls r0, 15
+ ands r1, r0
+ cmp r1, 0
+ beq _0803C00C
+_0803BFF0:
+ ldr r0, =gUnknown_0202421C
+ adds r0, r2, r0
+ strb r3, [r0]
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r4]
+ bl _0803CC72
+ .pool
+_0803C00C:
+ ldr r0, =gUnknown_0202421C
+ ldrb r1, [r0]
+ ldr r0, =gBattleBufferB
+ ldrb r2, [r0, 0x1]
+ ldrb r0, [r0, 0x2]
+ lsls r0, 8
+ orrs r2, r0
+ movs r0, 0
+ bl dp01_build_cmdbuf_x12_a_bb
+ bl _0803CB68
+ .pool
+_0803C02C:
+ ldr r3, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ ldr r6, =gActiveBank
+ ldrb r5, [r6]
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ beq _0803C058
+ bl _0803CD04
+_0803C058:
+ ldr r4, =gBattleBufferB
+ lsls r0, r5, 9
+ adds r4, 0x1
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl sub_8184FBC
+ ldr r1, =gUnknown_0202421C
+ ldrb r0, [r6]
+ adds r1, r0, r1
+ lsls r0, 9
+ adds r0, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r6]
+ lsls r0, 9
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bls _0803C084
+ b _0803C6C4
+_0803C084:
+ lsls r0, 2
+ ldr r1, =_0803C0A8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803C0A8:
+ .4byte _0803C0DC
+ .4byte _0803C230
+ .4byte _0803C268
+ .4byte _0803C6C4
+ .4byte _0803C6C4
+ .4byte _0803C440
+ .4byte _0803C48C
+ .4byte _0803C6C4
+ .4byte _0803C6C4
+ .4byte _0803C6C4
+ .4byte _0803C6C4
+ .4byte _0803C6C4
+ .4byte _0803C4B4
+_0803C0DC:
+ bl sub_80400C8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C134
+ ldr r0, =gBattleCommunication
+ ldr r3, =gActiveBank
+ ldrb r1, [r3]
+ adds r1, r0
+ movs r4, 0
+ movs r0, 0x6
+ strb r0, [r1]
+ ldrb r1, [r3]
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x54
+ strb r4, [r1]
+ ldrb r1, [r3]
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x84
+ movs r0, 0x4
+ strb r0, [r1]
+ ldrb r1, [r3]
+ ldr r2, [r2]
+ adds r2, r1, r2
+ ldr r0, =gBattleBufferB
+ lsls r1, 9
+ adds r0, 0x3
+ adds r1, r0
+ ldrb r0, [r1]
+ strb r0, [r2, 0xC]
+ bl _0803CD70
+ .pool
+_0803C134:
+ ldr r3, =gDisableStructs
+ ldr r5, =gActiveBank
+ ldrb r4, [r5]
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r3
+ ldrh r2, [r0, 0x6]
+ cmp r2, 0
+ beq _0803C188
+ ldr r1, =gUnknown_02024274
+ lsls r0, r4, 1
+ adds r0, r1
+ strh r2, [r0]
+ ldrb r2, [r5]
+ ldr r0, =gBattleStruct
+ ldr r1, [r0]
+ adds r1, r2, r1
+ adds r1, 0x80
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0xC]
+ strb r0, [r1]
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r5]
+ adds r0, r1
+ movs r1, 0x4
+ strb r1, [r0]
+ bl _0803CD70
+ .pool
+_0803C188:
+ add r2, sp, 0x4
+ ldr r3, =gBattleMons
+ movs r1, 0x58
+ adds r0, r4, 0
+ muls r0, r1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r2, 0x10]
+ ldrb r0, [r5]
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x21
+ ldrb r0, [r0]
+ strb r0, [r2, 0x12]
+ ldrb r0, [r5]
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x22
+ ldrb r0, [r0]
+ strb r0, [r2, 0x13]
+ movs r4, 0
+ mov r1, sp
+ adds r1, 0xC
+ str r1, [sp, 0x18]
+ add r2, sp, 0x10
+ mov r10, r2
+ mov r8, r3
+ adds r7, r5, 0
+ movs r6, 0x58
+ movs r0, 0xC
+ add r0, r8
+ mov r9, r0
+ add r5, sp, 0x4
+_0803C1CA:
+ lsls r2, r4, 1
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r0, r2, r0
+ add r0, r9
+ ldrh r0, [r0]
+ strh r0, [r5]
+ ldr r1, [sp, 0x18]
+ adds r3, r1, r4
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r0, r4, r0
+ mov r1, r8
+ adds r1, 0x24
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldrb r0, [r7]
+ adds r1, r0, 0
+ muls r1, r6
+ adds r2, r1
+ add r2, r9
+ ldrh r0, [r2]
+ add r1, r8
+ adds r1, 0x3B
+ ldrb r1, [r1]
+ lsls r2, r4, 24
+ lsrs r2, 24
+ bl CalculatePPWithBonus
+ mov r2, r10
+ adds r1, r2, r4
+ strb r0, [r1]
+ adds r5, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0803C1CA
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x1
+ ands r1, r0
+ movs r0, 0
+ movs r2, 0
+ add r3, sp, 0x4
+ bl sub_8033E30
+ b _0803C42E
+ .pool
+_0803C230:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x021f0902
+ ands r0, r1
+ cmp r0, 0
+ bne _0803C23E
+ b _0803C48C
+_0803C23E:
+ ldr r4, =gActiveBank
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8185008
+ ldr r1, =gUnknown_02024220
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, =gUnknown_082DB879
+ b _0803C784
+ .pool
+_0803C268:
+ ldr r5, =gActiveBank
+ ldrb r0, [r5]
+ ldr r3, =gBattleStruct
+ ldr r1, [r3]
+ adds r1, r0, r1
+ adds r1, 0x58
+ ldr r2, =gBattlePartyID
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ strb r0, [r1]
+ ldr r7, =gBattleMons
+ ldrb r2, [r5]
+ movs r6, 0x58
+ adds r0, r2, 0
+ muls r0, r6
+ adds r1, r7, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, =0x0400e000
+ ands r1, r0
+ cmp r1, 0
+ bne _0803C2B8
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 11
+ ands r0, r1
+ cmp r0, 0
+ bne _0803C2B8
+ ldr r0, =gStatuses3
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r1, [r1]
+ movs r0, 0x80
+ lsls r0, 3
+ ands r1, r0
+ cmp r1, 0
+ beq _0803C2EC
+_0803C2B8:
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, 0x60
+ ldr r0, [r3]
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x2
+ movs r2, 0x6
+ b _0803C400
+ .pool
+_0803C2EC:
+ str r1, [sp]
+ movs r0, 0xC
+ adds r1, r2, 0
+ movs r2, 0x17
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0803C374
+ ldrb r1, [r5]
+ str r4, [sp]
+ movs r0, 0xC
+ movs r2, 0x47
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0803C33C
+ ldrb r0, [r5]
+ muls r0, r6
+ adds r1, r0, r7
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0803C33C
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0803C33C
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1A
+ bne _0803C374
+_0803C33C:
+ ldr r5, =gActiveBank
+ ldrb r1, [r5]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xF
+ movs r2, 0x2A
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0803C3B0
+ ldr r2, =gBattleMons
+ ldrb r1, [r5]
+ movs r0, 0x58
+ muls r0, r1
+ adds r1, r0, r2
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ beq _0803C374
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _0803C3B0
+_0803C374:
+ subs r1, r4, 0x1
+ lsls r1, 4
+ movs r0, 0x4
+ orrs r1, r0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r0, =gLastUsedAbility
+ ldrb r3, [r0]
+ ldr r4, =gBattleStruct
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ lsls r2, r0, 1
+ adds r2, r0
+ adds r2, 0x60
+ ldr r0, [r4]
+ adds r0, r2
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0x6
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ b _0803C42E
+ .pool
+_0803C3B0:
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x2
+ bne _0803C3D8
+ ldr r0, =gUnknown_0202421C
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _0803C3D8
+ ldr r0, =gBattleStruct
+ ldr r3, [r0]
+ adds r0, r3, 0
+ adds r0, 0x5C
+ b _0803C3EE
+ .pool
+_0803C3D8:
+ ldrb r0, [r4]
+ cmp r0, 0x3
+ bne _0803C410
+ ldr r0, =gUnknown_0202421C
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0x2
+ bne _0803C410
+ ldr r0, =gBattleStruct
+ ldr r3, [r0]
+ adds r0, r3, 0
+ adds r0, 0x5D
+_0803C3EE:
+ ldrb r2, [r0]
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ adds r0, 0x60
+ adds r3, r0
+ str r3, [sp]
+ movs r0, 0
+ movs r1, 0
+_0803C400:
+ movs r3, 0
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ b _0803C42E
+ .pool
+_0803C410:
+ ldr r2, =gBattleStruct
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, 0x60
+ ldr r0, [r2]
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x6
+ movs r3, 0
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+_0803C42E:
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ bl dp01_battle_side_mark_buffer_for_execution
+ b _0803C6C4
+ .pool
+_0803C440:
+ bl PlayerPartyAndPokemonStorageFull
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803C44C
+ b _0803C6C4
+_0803C44C:
+ ldr r1, =gUnknown_02024220
+ ldr r3, =gActiveBank
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, =gUnknown_082DAB11
+ str r1, [r0]
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r3]
+ adds r1, r0
+ movs r4, 0
+ movs r0, 0x6
+ strb r0, [r1]
+ ldrb r1, [r3]
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x54
+ strb r4, [r1]
+ ldrb r1, [r3]
+ b _0803C7A0
+ .pool
+_0803C48C:
+ ldr r2, =gBattleStruct
+ ldr r4, =gActiveBank
+ ldrb r1, [r4]
+ lsls r0, r1, 1
+ adds r0, r1
+ adds r0, 0x60
+ ldr r1, [r2]
+ adds r1, r0
+ movs r0, 0
+ bl sub_8033E6C
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ b _0803C6C4
+ .pool
+_0803C4B4:
+ ldr r4, =gBattleCommunication
+ ldr r5, =gActiveBank
+ ldrb r0, [r5]
+ adds r0, r4
+ movs r1, 0x7
+ strb r1, [r0]
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ movs r6, 0x2
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ movs r1, 0x1
+ strb r1, [r0]
+ ldrb r0, [r5]
+ bl sub_8185008
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r1, =gBattleMons
+ lsls r0, 24
+ lsrs r0, 24
+ movs r7, 0x58
+ muls r0, r7
+ adds r4, r1, 0
+ adds r4, 0x50
+ adds r0, r4
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 5
+ ands r0, r1
+ cmp r0, 0
+ bne _0803C532
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ muls r0, r7
+ adds r0, r4
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 15
+ ands r0, r1
+ cmp r0, 0
+ beq _0803C550
+_0803C532:
+ movs r0, 0
+ bl dp01_build_cmdbuf_x32_32_32_32
+ ldrb r0, [r5]
+ bl dp01_battle_side_mark_buffer_for_execution
+ bl _0803CD70
+ .pool
+_0803C550:
+ ldr r4, =gUnknown_0202421C
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _0803C590
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8185008
+ b _0803C6AE
+ .pool
+_0803C590:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0803C5B6
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ b _0803C668
+_0803C5B6:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803C628
+ ldr r4, =gProtectStructs
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 20
+ adds r0, r4
+ ldrb r0, [r0]
+ lsls r0, 29
+ cmp r0, 0
+ blt _0803C616
+ ldr r4, =gDisableStructs
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r1, 0x6]
+ cmp r0, 0
+ beq _0803C628
+_0803C616:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ eors r0, r6
+ b _0803C668
+ .pool
+_0803C628:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 10
+ ands r0, r1
+ cmp r0, 0
+ beq _0803C690
+ ldr r4, =gUnknown_0202421C
+ ldr r6, =gActiveBank
+ ldrb r0, [r6]
+ bl GetBankIdentity
+ movs r5, 0x2
+ eors r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803C690
+ ldr r1, =gRngValue
+ ldr r0, =gUnknown_0203BD30
+ ldr r0, [r0]
+ str r0, [r1]
+ ldrb r0, [r6]
+ bl GetBankIdentity
+ eors r0, r5
+_0803C668:
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl sub_8185008
+ b _0803C6AE
+ .pool
+_0803C690:
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ movs r1, 0x2
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl sub_8185008
+_0803C6AE:
+ movs r0, 0
+ bl dp01_build_cmdbuf_x32_32_32_32
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ bl dp01_battle_side_mark_buffer_for_execution
+ b _0803CD70
+ .pool
+_0803C6C4:
+ ldr r1, =gBattleTypeFlags
+ ldr r2, [r1]
+ movs r5, 0x8
+ adds r0, r2, 0
+ ands r0, r5
+ adds r3, r1, 0
+ cmp r0, 0
+ beq _0803C720
+ ldr r0, =0x043f0100
+ ands r2, r0
+ cmp r2, 0
+ beq _0803C720
+ ldr r0, =gBattleBufferB
+ ldr r4, =gActiveBank
+ ldrb r2, [r4]
+ lsls r1, r2, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _0803C720
+ ldr r1, =gUnknown_02024220
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r1, =gUnknown_082DB9BA
+ str r1, [r0]
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ movs r3, 0
+ strb r5, [r0]
+ b _0803C792
+ .pool
+_0803C720:
+ ldr r0, [r3]
+ ldr r1, =0x0200000a
+ ands r0, r1
+ cmp r0, 0x8
+ bne _0803C760
+ ldr r0, =gBattleBufferB
+ ldr r4, =gActiveBank
+ ldrb r1, [r4]
+ lsls r1, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _0803C760
+ ldr r0, =gUnknown_082DAAFE
+ bl b_call_bc_move_exec
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ b _0803CC20
+ .pool
+_0803C760:
+ bl sub_803BB88
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C7C4
+ ldr r0, =gBattleBufferB
+ ldr r4, =gActiveBank
+ ldrb r2, [r4]
+ lsls r1, r2, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _0803C7C4
+ ldr r1, =gUnknown_02024220
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r1, =gUnknown_082DAB0B
+_0803C784:
+ str r1, [r0]
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r4]
+ adds r1, r0
+ movs r3, 0
+ movs r0, 0x6
+ strb r0, [r1]
+_0803C792:
+ ldrb r1, [r4]
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x54
+ strb r3, [r1]
+ ldrb r1, [r4]
+_0803C7A0:
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x84
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0803CD70
+ .pool
+_0803C7C4:
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803C7D8:
+ ldr r4, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ ldr r3, =gActiveBank
+ ldrb r5, [r3]
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r0, r2, 4
+ movs r1, 0xF0
+ lsls r1, 24
+ orrs r0, r1
+ orrs r0, r2
+ lsls r1, r2, 8
+ orrs r0, r1
+ lsls r2, 12
+ orrs r0, r2
+ ldr r1, [r4]
+ ands r1, r0
+ adds r4, r3, 0
+ cmp r1, 0
+ beq _0803C804
+ b _0803CD04
+_0803C804:
+ ldr r1, =gUnknown_0202421C
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ adds r2, r1, 0
+ cmp r0, 0x9
+ bls _0803C812
+ b _0803CD04
+_0803C812:
+ lsls r0, 2
+ ldr r1, =_0803C830
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803C830:
+ .4byte _0803C858
+ .4byte _0803C99C
+ .4byte _0803C9D4
+ .4byte _0803CA0A
+ .4byte _0803CA2C
+ .4byte _0803CA40
+ .4byte _0803CA54
+ .4byte _0803CA84
+ .4byte _0803CA98
+ .4byte _0803CABC
+_0803C858:
+ ldr r1, =gBattleBufferB
+ ldrb r3, [r4]
+ lsls r0, r3, 9
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r1, [r0]
+ cmp r1, 0x3
+ blt _0803C88A
+ cmp r1, 0x9
+ ble _0803C878
+ cmp r1, 0xF
+ beq _0803C87E
+ b _0803C88A
+ .pool
+_0803C878:
+ adds r0, r3, r2
+ strb r1, [r0]
+ b _0803CD70
+_0803C87E:
+ adds r1, r3, r2
+ movs r0, 0x2
+ strb r0, [r1]
+ bl sub_803CDF8
+ b _0803CD70
+_0803C88A:
+ movs r0, 0x2
+ bl sub_818603C
+ ldr r4, =gBattleBufferB
+ ldr r6, =gActiveBank
+ ldrb r3, [r6]
+ lsls r1, r3, 9
+ adds r5, r4, 0x2
+ adds r0, r1, r5
+ ldrb r2, [r0]
+ adds r7, r4, 0x3
+ adds r1, r7
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r2, r0
+ ldr r0, =0x0000ffff
+ cmp r2, r0
+ bne _0803C8D0
+ ldr r0, =gBattleCommunication
+ adds r0, r3, r0
+ movs r1, 0x1
+ strb r1, [r0]
+ ldrb r0, [r6]
+ bl sub_8185008
+ b _0803CD04
+ .pool
+_0803C8D0:
+ bl sub_803FB4C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C91C
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8185008
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r6]
+ adds r1, r0
+ movs r3, 0
+ movs r0, 0x6
+ strb r0, [r1]
+ ldrb r1, [r6]
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x54
+ strb r3, [r1]
+ ldrb r0, [r6]
+ lsls r0, 9
+ adds r1, r4, 0x1
+ adds r0, r1
+ strb r3, [r0]
+ ldrb r1, [r6]
+ ldr r0, [r2]
+ adds r1, r0
+ adds r1, 0x84
+ movs r0, 0x2
+ strb r0, [r1]
+ b _0803CD70
+ .pool
+_0803C91C:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 10
+ ands r0, r1
+ cmp r0, 0
+ bne _0803C942
+ ldrb r0, [r6]
+ lsls r1, r0, 9
+ adds r1, r5
+ ldrb r1, [r1]
+ bl sub_8184FBC
+ ldrb r0, [r6]
+ lsls r1, r0, 9
+ adds r1, r7
+ ldrb r1, [r1]
+ bl sub_8184FBC
+_0803C942:
+ ldrb r0, [r6]
+ ldr r4, =gBattleStruct
+ ldr r1, [r4]
+ adds r1, r0, r1
+ adds r1, 0x80
+ lsls r0, 9
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, =gUnknown_02024274
+ ldrb r2, [r6]
+ lsls r5, r2, 1
+ adds r5, r0
+ ldr r3, =gBattleMons
+ ldr r4, [r4]
+ adds r0, r2, r4
+ adds r0, 0x80
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ muls r1, r2
+ adds r0, r1
+ adds r3, 0xC
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r5]
+ ldrb r0, [r6]
+ adds r4, r0, r4
+ lsls r0, 9
+ adds r0, r7
+ ldrb r0, [r0]
+ strb r0, [r4, 0xC]
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r6]
+ b _0803CB72
+ .pool
+_0803C99C:
+ ldr r2, =gBattleBufferB
+ ldr r5, =gActiveBank
+ ldrb r4, [r5]
+ lsls r1, r4, 9
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r3, [r0]
+ adds r2, 0x2
+ adds r1, r2
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r3, r0
+ cmp r3, 0
+ bne _0803C9BA
+ b _0803CC1C
+_0803C9BA:
+ ldr r0, =gLastUsedItem
+ strh r3, [r0]
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r5]
+ b _0803CB72
+ .pool
+_0803C9D4:
+ ldr r0, =gBattleBufferB
+ ldr r4, =gActiveBank
+ ldrb r2, [r4]
+ lsls r1, r2, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x6
+ bne _0803CA04
+ ldr r0, =gBattleCommunication
+ adds r0, r2, r0
+ movs r1, 0x1
+ strb r1, [r0]
+ ldrb r0, [r4]
+ bl sub_8185008
+ b _0803CD04
+ .pool
+_0803CA04:
+ bl sub_803CDF8
+ b _0803CB6E
+_0803CA0A:
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ str r0, [r2]
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CA2C:
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CA40:
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CA54:
+ ldr r3, =gBattleBufferB
+ ldr r0, =gActiveBank
+ ldrb r4, [r0]
+ lsls r1, r4, 9
+ adds r0, r3, 0x1
+ adds r0, r1, r0
+ ldrb r2, [r0]
+ adds r3, 0x2
+ adds r1, r3
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r2, r0
+ cmp r2, 0
+ bne _0803CA72
+ b _0803CC1C
+_0803CA72:
+ ldr r1, =gBattleCommunication
+ adds r1, r4, r1
+ b _0803CB74
+ .pool
+_0803CA84:
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CA98:
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ str r0, [r2]
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CABC:
+ ldr r2, =gBattleCommunication
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _0803CB74
+ .pool
+_0803CAD0:
+ ldr r3, =gBattleExecBuffer
+ ldr r6, =gBitTable
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r6
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ beq _0803CAFA
+ b _0803CD04
+_0803CAFA:
+ bl sub_803CDB8
+ lsls r0, 24
+ lsrs r0, 24
+ negs r1, r0
+ orrs r1, r0
+ lsrs r4, r1, 31
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x41
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0803CB3C
+ movs r1, 0x2
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ bne _0803CB3C
+ adds r0, r5, 0
+ eors r0, r1
+ bl GetBankByPlayerAI
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r1, 0x91
+ ldrb r1, [r1]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r6
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0803CB5C
+_0803CB3C:
+ movs r0, 0
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_8034464
+ b _0803CB66
+ .pool
+_0803CB5C:
+ movs r0, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ bl sub_8034464
+_0803CB66:
+ ldr r4, =gActiveBank
+_0803CB68:
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803CB6E:
+ ldr r0, =gBattleCommunication
+ ldrb r1, [r4]
+_0803CB72:
+ adds r1, r0
+_0803CB74:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0803CD04
+ .pool
+_0803CB84:
+ ldr r3, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ ldr r0, =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ beq _0803CBAE
+ b _0803CD04
+_0803CBAE:
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r1, 0x4]
+ adds r0, 0x1
+ strb r0, [r1, 0x4]
+ b _0803CD04
+ .pool
+_0803CBC8:
+ ldr r5, =gActiveBank
+ ldrb r2, [r5]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r1, r2, r0
+ adds r0, r1, 0
+ adds r0, 0x54
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803CCB4
+ ldr r0, =gBattleCommunication
+ adds r0, r2, r0
+ adds r1, 0x84
+ ldrb r1, [r1]
+ strb r1, [r0]
+ b _0803CD04
+ .pool
+_0803CBF4:
+ ldr r3, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ ldr r0, =gActiveBank
+ ldrb r4, [r0]
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ bne _0803CD04
+_0803CC1C:
+ ldr r0, =gBattleCommunication
+ adds r0, r4, r0
+_0803CC20:
+ movs r1, 0x1
+ strb r1, [r0]
+ b _0803CD04
+ .pool
+_0803CC38:
+ ldr r5, =gActiveBank
+ ldrb r2, [r5]
+ ldr r4, =gBattleStruct
+ ldr r0, [r4]
+ adds r0, r2, r0
+ adds r0, 0x54
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803CCB4
+ ldr r0, =gBattleBufferB
+ lsls r1, r2, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0xD
+ bne _0803CC94
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ str r0, [r2]
+ ldr r1, =gUnknown_0202421C
+ ldrb r0, [r5]
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r1, =gBattleCommunication
+ ldrb r0, [r5]
+_0803CC72:
+ adds r0, r1
+ movs r1, 0x4
+ strb r1, [r0]
+ b _0803CD04
+ .pool
+_0803CC94:
+ adds r0, r2, 0
+ movs r1, 0x1
+ bl sub_8185008
+ ldr r2, =gBattleCommunication
+ ldrb r0, [r5]
+ adds r2, r0, r2
+ ldr r1, [r4]
+ adds r0, r1
+ adds r0, 0x84
+ ldrb r0, [r0]
+ strb r0, [r2]
+ b _0803CD04
+ .pool
+_0803CCB4:
+ ldr r0, =gBankAttacker
+ strb r2, [r0]
+ ldr r7, =gBattlescriptCurrInstr
+ ldr r6, =gUnknown_02024220
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r6
+ ldr r4, [r0]
+ str r4, [r7]
+ ldr r3, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ bne _0803CCFA
+ ldr r0, =gBattleScriptingCommandsTable
+ ldrb r1, [r4]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+_0803CCFA:
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r6
+ ldr r1, [r7]
+ str r1, [r0]
+_0803CD04:
+ ldr r0, =gActiveBank
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ ldr r0, =gNoOfAllBanks
+ lsls r1, 24
+ lsrs r1, 24
+_0803CD12:
+ adds r5, r0, 0
+ ldrb r0, [r5]
+ cmp r1, r0
+ bcs _0803CD1E
+ bl _0803BE9C
+_0803CD1E:
+ ldr r0, =gBattleCommunication
+ ldrb r0, [r0, 0x4]
+ ldrb r1, [r5]
+ cmp r0, r1
+ bne _0803CD70
+ movs r0, 0x1
+ bl sub_818603C
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803D2E8
+ str r0, [r1]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 15
+ ands r0, r1
+ cmp r0, 0
+ beq _0803CD70
+ movs r4, 0
+ ldrb r5, [r5]
+ cmp r4, r5
+ bge _0803CD70
+_0803CD4A:
+ ldr r0, =gUnknown_0202421C
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _0803CD66
+ lsls r0, r4, 24
+ lsrs r0, 24
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r1, r4, r1
+ adds r1, 0x5C
+ ldrb r1, [r1]
+ bl sub_80571DC
+_0803CD66:
+ adds r4, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0803CD4A
+_0803CD70:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803BE74
+
+ thumb_func_start sub_803CDB8
+sub_803CDB8: @ 803CDB8
+ push {r4,r5,lr}
+ movs r3, 0
+ movs r1, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r2, [r0]
+ adds r5, r0, 0
+ cmp r3, r2
+ bge _0803CDDA
+ ldr r4, =gBattleCommunication
+_0803CDCA:
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bne _0803CDD4
+ adds r3, 0x1
+_0803CDD4:
+ adds r1, 0x1
+ cmp r1, r2
+ blt _0803CDCA
+_0803CDDA:
+ adds r0, r3, 0x1
+ ldrb r5, [r5]
+ cmp r0, r5
+ beq _0803CDF0
+ movs r0, 0
+ b _0803CDF2
+ .pool
+_0803CDF0:
+ movs r0, 0x1
+_0803CDF2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803CDB8
+
+ thumb_func_start sub_803CDF8
+sub_803CDF8: @ 803CDF8
+ push {r4-r7,lr}
+ ldr r7, =gActiveBank
+ ldrb r0, [r7]
+ ldr r6, =gBattleStruct
+ ldr r1, [r6]
+ adds r1, r0, r1
+ adds r1, 0x5C
+ ldr r4, =gBattleBufferB
+ lsls r0, 9
+ adds r2, r4, 0x1
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r7]
+ lsls r1, r0, 9
+ adds r1, r2
+ ldrb r1, [r1]
+ bl sub_8184FBC
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x42
+ ands r0, r1
+ cmp r0, 0x42
+ bne _0803CEC6
+ ldrb r0, [r7]
+ ldr r2, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r2
+ adds r1, 0x60
+ ldrb r2, [r1]
+ movs r0, 0xF
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r0, [r7]
+ ldr r2, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r2
+ adds r1, 0x60
+ lsls r0, 9
+ adds r5, r4, 0x2
+ adds r0, r5
+ ldrb r2, [r0]
+ movs r3, 0xF0
+ adds r0, r3, 0
+ ands r0, r2
+ ldrb r2, [r1]
+ orrs r0, r2
+ strb r0, [r1]
+ ldrb r1, [r7]
+ ldr r2, [r6]
+ lsls r0, r1, 1
+ adds r0, r1
+ adds r0, r2
+ adds r0, 0x61
+ lsls r1, 9
+ adds r4, 0x3
+ mov r12, r4
+ add r1, r12
+ ldrb r1, [r1]
+ strb r1, [r0]
+ ldrb r0, [r7]
+ movs r4, 0x2
+ eors r0, r4
+ ldr r2, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r2
+ adds r1, 0x60
+ ldrb r2, [r1]
+ adds r0, r3, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r0, [r7]
+ eors r0, r4
+ ldr r2, [r6]
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r2
+ adds r1, 0x60
+ ldrb r0, [r7]
+ lsls r0, 9
+ adds r0, r5
+ ldrb r0, [r0]
+ ands r3, r0
+ lsrs r3, 4
+ ldrb r0, [r1]
+ orrs r3, r0
+ strb r3, [r1]
+ ldrb r0, [r7]
+ eors r4, r0
+ ldr r0, [r6]
+ lsls r1, r4, 1
+ adds r1, r4
+ adds r1, r0
+ adds r1, 0x62
+ ldrb r0, [r7]
+ lsls r0, 9
+ add r0, r12
+ ldrb r0, [r0]
+ strb r0, [r1]
+_0803CEC6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803CDF8
+
+ thumb_func_start sub_803CEDC
+sub_803CEDC: @ 803CEDC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, =gUnknown_0202407A
+ adds r4, r0, r2
+ ldrb r5, [r4]
+ adds r2, r1, r2
+ ldrb r3, [r2]
+ strb r3, [r4]
+ strb r5, [r2]
+ ldr r2, =gTurnOrder
+ adds r0, r2
+ ldrb r5, [r0]
+ adds r1, r2
+ ldrb r2, [r1]
+ strb r2, [r0]
+ strb r5, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803CEDC
+
+ thumb_func_start b_first_side
+b_first_side: @ 803CF10
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ str r0, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0xD
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803CFD8
+ ldr r1, [sp, 0x8]
+ str r1, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803CFD8
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ mov r2, r9
+ muls r2, r0
+ adds r0, r2, 0
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r3, [r0]
+ cmp r3, 0x21
+ bne _0803CF7C
+ ldr r0, =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0803CF8C
+_0803CF7C:
+ cmp r3, 0x22
+ bne _0803CF98
+ ldr r0, =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _0803CF98
+_0803CF8C:
+ movs r3, 0x2
+ b _0803CF9A
+ .pool
+_0803CF98:
+ movs r3, 0x1
+_0803CF9A:
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ ldr r2, =gBattleMons
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r2, [r0]
+ cmp r2, 0x21
+ bne _0803CFBA
+ ldr r0, =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0803CFCA
+_0803CFBA:
+ cmp r2, 0x22
+ bne _0803CFDA
+ ldr r0, =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _0803CFDA
+_0803CFCA:
+ movs r7, 0x2
+ b _0803CFDC
+ .pool
+_0803CFD8:
+ movs r3, 0x1
+_0803CFDA:
+ movs r7, 0x1
+_0803CFDC:
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ mov r2, r9
+ muls r2, r0
+ adds r0, r2, 0
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x6]
+ muls r3, r0
+ ldr r2, =gStatStageRatios
+ movs r1, 0x1B
+ ldrsb r1, [r4, r1]
+ lsls r1, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ muls r0, r3
+ adds r2, 0x1
+ adds r1, r2
+ ldrb r1, [r1]
+ bl __divsi3
+ mov r8, r0
+ ldrh r0, [r4, 0x2E]
+ cmp r0, 0xAF
+ bne _0803D02C
+ ldr r1, =gEnigmaBerries
+ mov r3, r9
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r6, [r0, 0x7]
+ ldrb r5, [r0, 0x1A]
+ b _0803D040
+ .pool
+_0803D02C:
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0803D040:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x023f0102
+ ands r0, r1
+ cmp r0, 0
+ bne _0803D074
+ ldr r0, =0x00000869
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803D074
+ mov r0, r9
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803D074
+ movs r0, 0x6E
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ movs r1, 0x64
+ bl __udivsi3
+ mov r8, r0
+_0803D074:
+ cmp r6, 0x18
+ bne _0803D07E
+ mov r2, r8
+ lsrs r2, 1
+ mov r8, r2
+_0803D07E:
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ mov r3, r9
+ muls r3, r0
+ adds r0, r3, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803D09C
+ mov r0, r8
+ lsrs r0, 2
+ mov r8, r0
+_0803D09C:
+ cmp r6, 0x1A
+ bne _0803D0B8
+ ldr r0, =gUnknown_02024330
+ ldrh r4, [r0]
+ lsls r0, r5, 16
+ subs r0, r5
+ movs r1, 0x64
+ bl __divsi3
+ cmp r4, r0
+ bge _0803D0B8
+ movs r1, 0x1
+ negs r1, r1
+ mov r8, r1
+_0803D0B8:
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r0, r2, 0
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x6]
+ adds r3, r0, 0
+ muls r3, r7
+ ldr r2, =gStatStageRatios
+ movs r1, 0x1B
+ ldrsb r1, [r4, r1]
+ lsls r1, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ muls r0, r3
+ adds r2, 0x1
+ adds r1, r2
+ ldrb r1, [r1]
+ bl __divsi3
+ adds r7, r0, 0
+ ldrh r0, [r4, 0x2E]
+ cmp r0, 0xAF
+ bne _0803D118
+ ldr r1, =gEnigmaBerries
+ mov r3, r10
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r6, [r0, 0x7]
+ ldrb r5, [r0, 0x1A]
+ b _0803D12C
+ .pool
+_0803D118:
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0803D12C:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x023f0102
+ ands r0, r1
+ cmp r0, 0
+ bne _0803D15C
+ ldr r0, =0x00000869
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803D15C
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803D15C
+ movs r0, 0x6E
+ muls r0, r7
+ movs r1, 0x64
+ bl __udivsi3
+ adds r7, r0, 0
+_0803D15C:
+ cmp r6, 0x18
+ bne _0803D162
+ lsrs r7, 1
+_0803D162:
+ ldr r2, =gBattleMons
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803D17E
+ lsrs r7, 2
+_0803D17E:
+ cmp r6, 0x1A
+ bne _0803D198
+ ldr r0, =gUnknown_02024330
+ ldrh r4, [r0]
+ lsls r0, r5, 16
+ subs r0, r5
+ movs r1, 0x64
+ bl __divsi3
+ cmp r4, r0
+ bge _0803D198
+ movs r7, 0x1
+ negs r7, r7
+_0803D198:
+ ldr r2, [sp, 0x4]
+ cmp r2, 0
+ beq _0803D1B8
+ movs r3, 0
+ b _0803D254
+ .pool
+_0803D1B8:
+ ldr r0, =gUnknown_0202421C
+ mov r3, r9
+ adds r1, r3, r0
+ ldrb r1, [r1]
+ adds r2, r0, 0
+ cmp r1, 0
+ bne _0803D208
+ ldr r0, =gProtectStructs
+ lsls r1, r3, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _0803D1E0
+ movs r3, 0xA5
+ b _0803D20A
+ .pool
+_0803D1E0:
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ add r0, r9
+ adds r0, 0x80
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ mov r3, r9
+ muls r3, r1
+ adds r1, r3, 0
+ adds r0, r1
+ ldr r1, =gBattleMons
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r3, [r0]
+ b _0803D20A
+ .pool
+_0803D208:
+ movs r3, 0
+_0803D20A:
+ mov r1, r10
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803D254
+ ldr r0, =gProtectStructs
+ lsls r1, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _0803D22C
+ movs r2, 0xA5
+ b _0803D256
+ .pool
+_0803D22C:
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ add r0, r10
+ adds r0, 0x80
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ mov r2, r10
+ muls r2, r1
+ adds r1, r2, 0
+ adds r0, r1
+ ldr r1, =gBattleMons
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r2, [r0]
+ b _0803D256
+ .pool
+_0803D254:
+ movs r2, 0
+_0803D256:
+ ldr r4, =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x7
+ ldrsb r1, [r0, r1]
+ lsls r3, r2, 1
+ cmp r1, 0
+ bne _0803D27A
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x7]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0
+ beq _0803D2B8
+_0803D27A:
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x7]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r1, r0
+ bne _0803D2AE
+ cmp r8, r7
+ bne _0803D2A4
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0803D2A4
+ movs r3, 0x2
+ b _0803D2D4
+ .pool
+_0803D2A4:
+ cmp r8, r7
+ bcs _0803D2D6
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ b _0803D2D6
+_0803D2AE:
+ cmp r1, r0
+ bge _0803D2D6
+ movs r1, 0x1
+ str r1, [sp, 0x8]
+ b _0803D2D6
+_0803D2B8:
+ cmp r8, r7
+ bne _0803D2CE
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0803D2CE
+ movs r2, 0x2
+ str r2, [sp, 0x8]
+ b _0803D2D6
+_0803D2CE:
+ cmp r8, r7
+ bcs _0803D2D6
+ movs r3, 0x1
+_0803D2D4:
+ str r3, [sp, 0x8]
+_0803D2D6:
+ ldr r0, [sp, 0x8]
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end b_first_side
+
+ thumb_func_start sub_803D2E8
+sub_803D2E8: @ 803D2E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r3, 0
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0803D354
+ ldr r0, =gActiveBank
+ strb r3, [r0]
+ ldr r4, =gNoOfAllBanks
+ mov r8, r0
+ ldrb r0, [r4]
+ cmp r3, r0
+ bcc _0803D310
+ b _0803D54A
+_0803D310:
+ ldr r7, =gUnknown_0202407A
+ ldr r6, =gUnknown_0202421C
+ mov r2, r8
+ ldr r5, =gTurnOrder
+_0803D318:
+ adds r1, r3, r7
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, r3, r5
+ ldrb r0, [r2]
+ strb r0, [r1]
+ adds r3, 0x1
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r4]
+ cmp r0, r1
+ bcc _0803D318
+ b _0803D54A
+ .pool
+_0803D354:
+ movs r2, 0x2
+ ands r1, r2
+ cmp r1, 0
+ beq _0803D3A4
+ ldr r0, =gActiveBank
+ strb r3, [r0]
+ ldr r1, =gNoOfAllBanks
+ mov r8, r0
+ adds r2, r1, 0
+ ldrb r2, [r2]
+ cmp r3, r2
+ bcs _0803D3C0
+ ldr r0, =gUnknown_0202421C
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x3
+ beq _0803D3BE
+_0803D376:
+ mov r7, r8
+ ldrb r0, [r7]
+ adds r0, 0x1
+ strb r0, [r7]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _0803D3C0
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0803D376
+ b _0803D3BE
+ .pool
+_0803D3A4:
+ ldr r1, =gUnknown_0202421C
+ ldrb r0, [r1]
+ ldr r4, =gActiveBank
+ mov r8, r4
+ cmp r0, 0x3
+ bne _0803D3B4
+ strb r3, [r4]
+ movs r3, 0x5
+_0803D3B4:
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0x3
+ bne _0803D3C0
+ mov r7, r8
+ strb r2, [r7]
+_0803D3BE:
+ movs r3, 0x5
+_0803D3C0:
+ cmp r3, 0x5
+ bne _0803D448
+ ldr r6, =gUnknown_0202407A
+ ldr r1, =gUnknown_0202421C
+ mov r2, r8
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r6]
+ ldr r2, =gTurnOrder
+ mov r3, r8
+ ldrb r0, [r3]
+ strb r0, [r2]
+ movs r3, 0x1
+ movs r5, 0
+ adds r4, r1, 0
+ ldr r7, =gBattleMainFunc
+ mov r10, r7
+ ldr r0, =bc_80154A0
+ mov r12, r0
+ ldr r1, =gBattleStruct
+ mov r9, r1
+ ldr r7, =gNoOfAllBanks
+ ldrb r7, [r7]
+ cmp r5, r7
+ bge _0803D41A
+ adds r7, r6, 0
+ adds r6, r4, 0
+ adds r4, r2, 0
+ ldr r2, =gNoOfAllBanks
+_0803D3FC:
+ mov r0, r8
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _0803D412
+ adds r1, r3, r7
+ adds r0, r5, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r3, r4
+ strb r5, [r0]
+ adds r3, 0x1
+_0803D412:
+ adds r5, 0x1
+ ldrb r1, [r2]
+ cmp r5, r1
+ blt _0803D3FC
+_0803D41A:
+ mov r2, r12
+ mov r3, r10
+ str r2, [r3]
+ mov r4, r9
+ ldr r0, [r4]
+ b _0803D554
+ .pool
+_0803D448:
+ movs r0, 0
+ mov r7, r8
+ strb r0, [r7]
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0803D48E
+ ldr r6, =gUnknown_0202421C
+ mov r2, r8
+ ldr r5, =gUnknown_0202407A
+ ldr r4, =gTurnOrder
+_0803D45E:
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r1, [r0]
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0803D47C
+ adds r0, r3, r5
+ strb r1, [r0]
+ adds r1, r3, r4
+ mov r7, r8
+ ldrb r0, [r7]
+ strb r0, [r1]
+ adds r3, 0x1
+_0803D47C:
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803D45E
+_0803D48E:
+ movs r0, 0
+ mov r2, r8
+ strb r0, [r2]
+ ldr r4, =gNoOfAllBanks
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0803D4D2
+ ldr r6, =gUnknown_0202421C
+ ldr r5, =gUnknown_0202407A
+ ldr r4, =gTurnOrder
+_0803D4A2:
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r1, [r0]
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _0803D4C0
+ adds r0, r3, r5
+ strb r1, [r0]
+ adds r1, r3, r4
+ mov r7, r8
+ ldrb r0, [r7]
+ strb r0, [r1]
+ adds r3, 0x1
+_0803D4C0:
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803D4A2
+_0803D4D2:
+ movs r5, 0
+ b _0803D540
+ .pool
+_0803D4E8:
+ adds r4, r5, 0x1
+ adds r7, r4, 0
+ ldrb r1, [r1]
+ cmp r7, r1
+ bge _0803D53E
+ ldr r6, =gUnknown_0202407A
+ lsls r2, r5, 24
+ mov r8, r2
+_0803D4F8:
+ ldr r0, =gTurnOrder
+ adds r1, r5, r0
+ ldrb r3, [r1]
+ adds r0, r4, r0
+ ldrb r1, [r0]
+ adds r0, r5, r6
+ ldrb r2, [r0]
+ cmp r2, 0x1
+ beq _0803D534
+ adds r0, r4, r6
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0803D534
+ cmp r2, 0x2
+ beq _0803D534
+ cmp r0, 0x2
+ beq _0803D534
+ adds r0, r3, 0
+ movs r2, 0
+ bl b_first_side
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803D534
+ lsls r1, r4, 24
+ lsrs r1, 24
+ mov r3, r8
+ lsrs r0, r3, 24
+ bl sub_803CEDC
+_0803D534:
+ adds r4, 0x1
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0803D4F8
+_0803D53E:
+ adds r5, r7, 0
+_0803D540:
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r1]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _0803D4E8
+_0803D54A:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_80154A0
+ str r0, [r1]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+_0803D554:
+ adds r0, 0x48
+ movs r1, 0
+ strb r1, [r0]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803D2E8
+
+ thumb_func_start sub_803D580
+sub_803D580: @ 803D580
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, =gActiveBank
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, =gNoOfAllBanks
+ ldrb r2, [r0]
+ adds r5, r1, 0
+ cmp r2, 0
+ beq _0803D678
+ ldr r7, =gProtectStructs
+ adds r6, r5, 0
+ ldr r0, =gBattleMons + 0x50
+ mov r12, r0
+ ldr r1, =gDisableStructs
+ mov r8, r1
+ mov r10, r8
+_0803D5AE:
+ mov r2, r9
+ cmp r2, 0
+ beq _0803D5EC
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ b _0803D648
+ .pool
+_0803D5EC:
+ ldrb r0, [r6]
+ lsls r0, 4
+ adds r2, r0, r7
+ movs r1, 0
+ mov r4, r10
+ movs r3, 0
+_0803D5F8:
+ adds r0, r2, r1
+ strb r3, [r0]
+ adds r1, 0x1
+ cmp r1, 0xF
+ bls _0803D5F8
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1, 0x16]
+ cmp r0, 0
+ beq _0803D616
+ subs r0, 0x1
+ strb r0, [r1, 0x16]
+_0803D616:
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1, 0x19]
+ cmp r0, 0
+ beq _0803D648
+ subs r0, 0x1
+ strb r0, [r1, 0x19]
+ ldrb r2, [r5]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x19]
+ cmp r0, 0
+ bne _0803D648
+ movs r0, 0x58
+ muls r2, r0
+ add r2, r12
+ ldr r0, [r2]
+ ldr r1, =0xffbfffff
+ ands r0, r1
+ str r0, [r2]
+_0803D648:
+ ldrb r2, [r5]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ add r0, r8
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ bne _0803D666
+ movs r0, 0x58
+ muls r2, r0
+ add r2, r12
+ ldr r0, [r2]
+ ldr r1, =0xfeffffff
+ ands r0, r1
+ str r0, [r2]
+_0803D666:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803D5AE
+_0803D678:
+ movs r0, 0
+ ldr r2, =gSideTimers
+ strb r0, [r2, 0x8]
+ strb r0, [r2, 0x14]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803D580
+
+ thumb_func_start sub_803D6A0
+sub_803D6A0: @ 803D6A0
+ push {r4-r6,lr}
+ ldr r2, =gActiveBank
+ movs r0, 0
+ strb r0, [r2]
+ ldr r0, =gNoOfAllBanks
+ ldrb r1, [r0]
+ adds r6, r0, 0
+ cmp r1, 0
+ beq _0803D6DE
+ adds r3, r2, 0
+ movs r4, 0
+ ldr r5, =gSpecialStatuses
+_0803D6B8:
+ ldrb r1, [r3]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r2, r0, r5
+ movs r1, 0
+_0803D6C4:
+ adds r0, r2, r1
+ strb r4, [r0]
+ adds r1, 0x1
+ cmp r1, 0x13
+ bls _0803D6C4
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r6]
+ cmp r0, r1
+ bcc _0803D6B8
+_0803D6DE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803D6A0
+
+ thumb_func_start bc_80154A0
+bc_80154A0: @ 803D6F0
+ push {r4-r7,lr}
+ ldr r0, =gHitMarker
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ bne _0803D7AE
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r0, 0x48
+ ldr r1, =gNoOfAllBanks
+ ldrb r0, [r0]
+ mov r12, r2
+ adds r6, r1, 0
+ ldrb r1, [r6]
+ cmp r0, r1
+ bcs _0803D7AE
+ ldr r5, =gActiveBank
+ ldr r4, =gBankAttacker
+ movs r7, 0x84
+ lsls r7, 1
+_0803D71C:
+ ldr r1, [r2]
+ adds r1, 0x48
+ ldrb r0, [r1]
+ strb r0, [r4]
+ strb r0, [r5]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, =gUnknown_02024274
+ ldrb r3, [r5]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r7
+ bne _0803D7A0
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r3
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0803D7A0
+ ldr r2, =gDisableStructs
+ ldrb r1, [r4]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x18]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0803D7A0
+ ldr r0, =gProtectStructs
+ lsls r1, r3, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ blt _0803D7A0
+ ldr r0, =gUnknown_082DB1FF
+ bl b_call_bc_move_exec
+ b _0803D7E8
+ .pool
+_0803D7A0:
+ mov r2, r12
+ ldr r0, [r2]
+ adds r0, 0x48
+ ldrb r0, [r0]
+ ldrb r1, [r6]
+ cmp r0, r1
+ bcc _0803D71C
+_0803D7AE:
+ bl b_clear_atk_up_if_hit_flag_unless_enraged
+ ldr r1, =gUnknown_02024082
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, =gFightStateTracker
+ ldr r0, =gUnknown_0202407A
+ movs r3, 0
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, =gDynamicBasePower
+ movs r2, 0
+ strh r3, [r0]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ strb r2, [r0, 0x13]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_bs_exec
+ str r0, [r1]
+ ldr r0, =gBattleCommunication
+ strb r2, [r0, 0x3]
+ strb r2, [r0, 0x4]
+ ldr r0, =gBattleScripting
+ strb r2, [r0, 0x16]
+ ldr r0, =gBattleResources
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ adds r0, 0x20
+ strb r2, [r0]
+_0803D7E8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_80154A0
+
+ thumb_func_start bc_bs_exec
+bc_bs_exec: @ 803D818
+ push {r4-r6,lr}
+ ldr r6, =gBattleOutcome
+ ldrb r0, [r6]
+ ldr r2, =gFightStateTracker
+ cmp r0, 0
+ beq _0803D828
+ movs r0, 0xC
+ strb r0, [r2]
+_0803D828:
+ ldr r5, =gBattleStruct
+ ldr r0, [r5]
+ adds r0, 0x4B
+ ldr r4, =gUnknown_02024082
+ ldrb r1, [r4]
+ strb r1, [r0]
+ ldr r1, =gUnknown_0831BC0C
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, =gNoOfAllBanks
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcc _0803D894
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ ldr r1, =0xffefffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r3, =gBattleMainFunc
+ ldr r2, =gUnknown_0831BC44
+ ldrb r1, [r6]
+ movs r0, 0x7F
+ ands r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ str r0, [r3]
+ b _0803D8AC
+ .pool
+_0803D894:
+ ldr r0, [r5]
+ adds r0, 0x4B
+ ldrb r0, [r0]
+ cmp r0, r1
+ beq _0803D8AC
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ ldr r1, =0xfffffdff
+ ands r0, r1
+ ldr r1, =0xfff7ffff
+ ands r0, r1
+ str r0, [r2]
+_0803D8AC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_bs_exec
+
+ thumb_func_start sub_803D8C0
+sub_803D8C0: @ 803D8C0
+ push {r4,lr}
+ ldr r1, =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, =gBattleTypeFlags
+ ldr r2, [r1]
+ ldr r0, =0x02000002
+ ands r0, r2
+ cmp r0, 0
+ beq _0803D920
+ ldr r1, =gScriptResult
+ ldr r4, =gBattleOutcome
+ ldrb r0, [r4]
+ strh r0, [r1]
+ ldr r1, =gBattleTextBuff1
+ ldrb r0, [r4]
+ strb r0, [r1]
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r1, =gBankAttacker
+ strb r0, [r1]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAA35
+ str r0, [r1]
+ ldrb r1, [r4]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ b _0803DAA4
+ .pool
+_0803D920:
+ movs r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ beq _0803D95C
+ ldr r0, =0x043f0900
+ ands r2, r0
+ cmp r2, 0
+ beq _0803D95C
+ bl sub_805EA60
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAA87
+ str r0, [r1]
+ ldr r0, =gTrainerBattleOpponent_A
+ ldrh r1, [r0]
+ ldr r0, =0x000003fe
+ cmp r1, r0
+ bne _0803D946
+ b _0803DA8A
+_0803D946:
+ b _0803DA94
+ .pool
+_0803D95C:
+ ldr r0, [r1]
+ movs r1, 0xA
+ ands r0, r1
+ cmp r0, 0x8
+ beq _0803D968
+ b _0803DA9E
+_0803D968:
+ bl sub_805EA60
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DA92D
+ str r0, [r1]
+ ldr r2, =gTrainers
+ ldr r0, =gTrainerBattleOpponent_A
+ ldrh r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ subs r0, 0x3
+ cmp r0, 0x32
+ bls _0803D98A
+ b _0803DA94
+_0803D98A:
+ lsls r0, 2
+ ldr r1, =_0803D9A8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803D9A8:
+ .4byte _0803DA80
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA80
+ .4byte _0803DA94
+ .4byte _0803DA80
+ .4byte _0803DA94
+ .4byte _0803DA80
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA74
+ .4byte _0803DA8A
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA74
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA80
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA94
+ .4byte _0803DA80
+_0803DA74:
+ ldr r0, =0x00000163
+ bl PlayBGM
+ b _0803DAA4
+ .pool
+_0803DA80:
+ movs r0, 0xD4
+ lsls r0, 1
+ bl PlayBGM
+ b _0803DAA4
+_0803DA8A:
+ movs r0, 0xB1
+ lsls r0, 1
+ bl PlayBGM
+ b _0803DAA4
+_0803DA94:
+ movs r0, 0xCE
+ lsls r0, 1
+ bl PlayBGM
+ b _0803DAA4
+_0803DA9E:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DA96A
+ str r0, [r1]
+_0803DAA4:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803DCD8
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803D8C0
+
+ thumb_func_start sub_803DAC0
+sub_803DAC0: @ 803DAC0
+ push {r4,lr}
+ ldr r1, =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ ldr r0, =0x02000002
+ ands r0, r1
+ cmp r0, 0
+ beq _0803DB7C
+ ldr r0, =0x003f0100
+ ands r1, r0
+ cmp r1, 0
+ beq _0803DB44
+ ldr r3, =gBattleOutcome
+ ldrb r2, [r3]
+ movs r0, 0x80
+ ands r0, r2
+ cmp r0, 0
+ beq _0803DB2C
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DB9C8
+ str r0, [r1]
+ movs r0, 0x7F
+ ands r0, r2
+ strb r0, [r3]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r1, [r0]
+ ldr r0, =0x00000ca9
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x8
+ orrs r0, r2
+ strb r0, [r1]
+ b _0803DB82
+ .pool
+_0803DB2C:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAA0B
+ str r0, [r1]
+ movs r0, 0x7F
+ ands r0, r2
+ strb r0, [r3]
+ b _0803DB82
+ .pool
+_0803DB44:
+ ldr r1, =gBattleTextBuff1
+ ldr r4, =gBattleOutcome
+ ldrb r0, [r4]
+ strb r0, [r1]
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r1, =gBankAttacker
+ strb r0, [r1]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAA35
+ str r0, [r1]
+ ldrb r1, [r4]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ b _0803DB82
+ .pool
+_0803DB7C:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DA96D
+ str r0, [r1]
+_0803DB82:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803DCD8
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803DAC0
+
+ thumb_func_start sub_803DBA0
+sub_803DBA0: @ 803DBA0
+ push {lr}
+ ldr r1, =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, =gBattleTypeFlags
+ ldr r2, [r1]
+ ldr r0, =0x003f0100
+ ands r0, r2
+ cmp r0, 0
+ beq _0803DBFC
+ movs r0, 0x8
+ ands r2, r0
+ cmp r2, 0
+ beq _0803DBFC
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DB9C1
+ str r0, [r1]
+ ldr r1, =gBattleOutcome
+ movs r0, 0x9
+ strb r0, [r1]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r1, [r0]
+ ldr r0, =0x00000ca9
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x8
+ orrs r0, r2
+ strb r0, [r1]
+ b _0803DC6A
+ .pool
+_0803DBFC:
+ ldr r0, [r1]
+ movs r1, 0x80
+ lsls r1, 19
+ ands r0, r1
+ cmp r0, 0
+ beq _0803DC24
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DB9C1
+ str r0, [r1]
+ ldr r1, =gBattleOutcome
+ movs r0, 0x9
+ strb r0, [r1]
+ b _0803DC6A
+ .pool
+_0803DC24:
+ ldr r1, =gProtectStructs
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ lsrs r0, 30
+ cmp r0, 0x1
+ beq _0803DC54
+ cmp r0, 0x2
+ beq _0803DC64
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAAF0
+ b _0803DC68
+ .pool
+_0803DC54:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAADB
+ b _0803DC68
+ .pool
+_0803DC64:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAAE9
+_0803DC68:
+ str r0, [r1]
+_0803DC6A:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803DCD8
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803DBA0
+
+ thumb_func_start bc_80158BC
+bc_80158BC: @ 803DC84
+ ldr r1, =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x7
+ strb r0, [r1, 0x1]
+ ldr r2, =gBankAttacker
+ ldrb r0, [r2]
+ strb r0, [r1, 0x2]
+ ldr r3, =gBattlePartyID
+ ldrb r0, [r2]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAAF7
+ str r0, [r1]
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803DCD8
+ str r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end bc_80158BC
+
+ thumb_func_start sub_803DCD8
+sub_803DCD8: @ 803DCD8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, =gFightStateTracker
+ ldrb r0, [r0]
+ subs r0, 0xB
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _0803DCEE
+ b _0803DE10
+_0803DCEE:
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ ldr r0, =0x023f0b92
+ ands r1, r0
+ cmp r1, 0
+ bne _0803DDB6
+ ldr r2, =gActiveBank
+ strb r1, [r2]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs _0803DDB2
+ adds r5, r2, 0
+ ldr r0, =gBattlePartyID
+ mov r8, r0
+ movs r7, 0x64
+ ldr r6, =gPlayerParty
+_0803DD10:
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803DDA0
+ ldr r4, =gBattleResults
+ ldrh r0, [r4, 0x6]
+ cmp r0, 0
+ bne _0803DD74
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r8
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r6
+ movs r1, 0xB
+ movs r2, 0
+ bl GetMonData
+ strh r0, [r4, 0x6]
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r8
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r6
+ movs r1, 0x2
+ adds r2, r4, 0
+ adds r2, 0x8
+ bl GetMonData
+ b _0803DDA0
+ .pool
+_0803DD74:
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r8
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r6
+ movs r1, 0xB
+ movs r2, 0
+ bl GetMonData
+ strh r0, [r4, 0x26]
+ ldrb r0, [r5]
+ lsls r0, 1
+ add r0, r8
+ ldrh r0, [r0]
+ muls r0, r7
+ adds r0, r6
+ movs r1, 0x2
+ adds r2, r4, 0
+ adds r2, 0x14
+ bl GetMonData
+_0803DDA0:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803DD10
+_0803DDB2:
+ bl sub_80EC728
+_0803DDB6:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x023f0b9a
+ ands r0, r1
+ cmp r0, 0
+ bne _0803DDD2
+ ldr r0, =gBattleResults
+ ldrb r1, [r0, 0x5]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0803DDD2
+ bl sub_80EE184
+_0803DDD2:
+ bl sub_8186444
+ movs r0, 0x3
+ bl BeginFastPaletteFade
+ movs r0, 0x5
+ bl FadeOutMapMusic
+ ldr r1, =gBattleMainFunc
+ ldr r0, =sub_803DE40
+ str r0, [r1]
+ ldr r1, =gUnknown_030061E8
+ ldr r0, =sub_8038420
+ str r0, [r1]
+ b _0803DE2A
+ .pool
+_0803DE10:
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803DE2A
+ ldr r1, =gBattleScriptingCommandsTable
+ ldr r0, =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_0803DE2A:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803DCD8
+
+ thumb_func_start sub_803DE40
+sub_803DE40: @ 803DE40
+ push {lr}
+ ldr r0, =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0803DE86
+ bl ResetSpriteData
+ ldr r0, =gUnknown_03005D54
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0803DE62
+ ldr r0, =gBattleOutcome
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0803DE80
+_0803DE62:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =c4_overworld
+ str r0, [r1]
+ b _0803DEA2
+ .pool
+_0803DE80:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_evolution_cutscene
+ str r0, [r1]
+_0803DE86:
+ bl FreeAllWindowBuffers
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0803DEA2
+ bl sub_805F094
+ bl sub_8057028
+ bl dp11_free
+_0803DEA2:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803DE40
+
+ thumb_func_start bc_evolution_cutscene
+bc_evolution_cutscene: @ 803DEB4
+ push {r4-r6,lr}
+ ldr r0, =gUnknown_03005D54
+ ldrb r1, [r0]
+ adds r3, r0, 0
+ cmp r1, 0
+ beq _0803DF2E
+_0803DEC0:
+ movs r6, 0
+_0803DEC2:
+ ldrb r2, [r3]
+ ldr r0, =gBitTable
+ lsls r1, r6, 2
+ adds r1, r0
+ ldr r1, [r1]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0803DF20
+ bics r2, r1
+ strb r2, [r3]
+ movs r0, 0x64
+ adds r1, r6, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0
+ bl GetEvolutionTargetSpecies
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ beq _0803DF20
+ bl FreeAllWindowBuffers
+ ldr r0, =gBattleMainFunc
+ ldr r1, =sub_803DF48
+ str r1, [r0]
+ lsls r3, r6, 24
+ lsrs r3, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl evolution_cutscene
+ b _0803DF34
+ .pool
+_0803DF20:
+ adds r6, 0x1
+ ldr r3, =gUnknown_03005D54
+ cmp r6, 0x5
+ ble _0803DEC2
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _0803DEC0
+_0803DF2E:
+ ldr r1, =gBattleMainFunc
+ ldr r0, =c4_overworld
+ str r0, [r1]
+_0803DF34:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_evolution_cutscene
+
+ thumb_func_start sub_803DF48
+sub_803DF48: @ 803DF48
+ push {lr}
+ ldr r0, =gMain
+ ldr r1, [r0, 0x4]
+ ldr r0, =sub_8038420
+ cmp r1, r0
+ bne _0803DF5A
+ ldr r1, =gBattleMainFunc
+ ldr r0, =bc_evolution_cutscene
+ str r0, [r1]
+_0803DF5A:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803DF48
+
+ thumb_func_start c4_overworld
+c4_overworld: @ 803DF70
+ push {r4-r6,lr}
+ ldr r6, =gBattleTypeFlags
+ ldr r0, [r6]
+ movs r5, 0x2
+ ands r0, r5
+ cmp r0, 0
+ bne _0803DF8C
+ ldr r4, =gPlayerParty
+ adds r0, r4, 0
+ bl RandomlyGivePartyPokerus
+ adds r0, r4, 0
+ bl PartySpreadPokerus
+_0803DF8C:
+ ldr r4, [r6]
+ adds r0, r4, 0
+ ands r0, r5
+ cmp r0, 0
+ beq _0803DF9E
+ ldr r0, =gUnknown_03003124
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0803DFEC
+_0803DF9E:
+ ldr r1, =gScriptResult
+ ldr r5, =gBattleOutcome
+ ldrb r0, [r5]
+ strh r0, [r1]
+ ldr r3, =gMain
+ ldr r0, =0x00000439
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, =gUnknown_03005D00
+ ldr r0, [r0]
+ str r0, [r3]
+ movs r0, 0x80
+ lsls r0, 3
+ ands r4, r0
+ cmp r4, 0
+ beq _0803DFDE
+ ldr r0, =gEnemyParty
+ bl UpdateRoamerHPStatus
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803DFDA
+ cmp r1, 0x7
+ bne _0803DFDE
+_0803DFDA:
+ bl SetRoamerInactive
+_0803DFDE:
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r0, =gMain
+ ldr r0, [r0, 0x8]
+ bl SetMainCallback2
+_0803DFEC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end c4_overworld
+
+ thumb_func_start bc_move_exec_returning
+bc_move_exec_returning: @ 803E018
+ push {lr}
+ ldr r0, =gFightStateTracker
+ ldrb r0, [r0]
+ subs r0, 0xB
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0803E060
+ ldr r3, =gBattleResources
+ ldr r0, [r3]
+ ldr r0, [r0, 0xC]
+ adds r1, r0, 0
+ adds r1, 0x20
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0803E03C
+ subs r0, 0x1
+ strb r0, [r1]
+_0803E03C:
+ ldr r2, =gBattleMainFunc
+ ldr r0, [r3]
+ ldr r1, [r0, 0xC]
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ b _0803E07A
+ .pool
+_0803E060:
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803E07A
+ ldr r1, =gBattleScriptingCommandsTable
+ ldr r0, =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_0803E07A:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bc_move_exec_returning
+
+ thumb_func_start sub_803E08C
+sub_803E08C: @ 803E08C
+ push {lr}
+ ldr r0, =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0803E0A8
+ ldr r1, =gBattleScriptingCommandsTable
+ ldr r0, =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_0803E0A8:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803E08C
+
+ thumb_func_start sub_803E0B8
+sub_803E0B8: @ 803E0B8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ movs r0, 0x4
+ str r0, [sp]
+ ldr r6, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r6]
+ ldr r1, =gBattleStruct
+ ldr r3, [r1]
+ adds r0, r3, 0
+ adds r0, 0x91
+ ldrb r2, [r0]
+ ldr r1, =gBitTable
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ands r2, r0
+ cmp r2, 0
+ beq _0803E110
+ ldr r1, =gFightStateTracker
+ movs r0, 0xC
+ b _0803E83C
+ .pool
+_0803E110:
+ ldr r1, =gCritMultiplier
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, =gBattleScripting
+ movs r0, 0x1
+ strb r0, [r1, 0xE]
+ ldr r5, =0x000001a3
+ adds r0, r3, r5
+ strb r2, [r0]
+ ldr r0, =gBattleMoveFlags
+ strb r2, [r0]
+ ldr r0, =gUnknown_02024212
+ strb r2, [r0]
+ ldr r0, =gBattleCommunication
+ strb r2, [r0, 0x6]
+ ldr r2, =gCurrMovePos
+ ldr r0, =gUnknown_020241E9
+ mov r9, r0
+ ldrb r0, [r6]
+ ldr r3, =gBattleStruct
+ ldr r1, [r3]
+ adds r0, r1
+ adds r0, 0x80
+ ldrb r0, [r0]
+ mov r5, r9
+ strb r0, [r5]
+ strb r0, [r2]
+ ldr r1, =gProtectStructs
+ ldrb r4, [r6]
+ lsls r0, r4, 4
+ adds r3, r0, r1
+ ldrb r1, [r3]
+ lsls r0, r1, 29
+ mov r8, r2
+ cmp r0, 0
+ bge _0803E1BC
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+ ldr r2, =gCurrentMove
+ ldr r1, =gUnknown_020241EC
+ movs r0, 0xA5
+ strh r0, [r1]
+ strh r0, [r2]
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 4
+ orrs r0, r1
+ str r0, [r2]
+ movs r0, 0xA5
+ movs r1, 0
+ bl GetMoveTarget
+ ldrb r1, [r6]
+ ldr r3, =gBattleStruct
+ ldr r2, [r3]
+ b _0803E316
+ .pool
+_0803E1BC:
+ ldr r5, =gBattleMons
+ mov r10, r5
+ movs r0, 0x58
+ adds r5, r4, 0
+ muls r5, r0
+ mov r0, r10
+ adds r0, 0x50
+ adds r0, r5, r0
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r1
+ cmp r0, 0
+ bne _0803E1E2
+ movs r7, 0x80
+ lsls r7, 15
+ ands r7, r1
+ cmp r7, 0
+ beq _0803E204
+_0803E1E2:
+ ldr r3, =gCurrentMove
+ ldr r2, =gUnknown_020241EC
+ ldr r1, =gUnknown_02024268
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r2]
+ strh r0, [r3]
+ b _0803E33C
+ .pool
+_0803E204:
+ ldr r1, =gDisableStructs
+ mov r12, r1
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ add r0, r12
+ ldrh r3, [r0, 0x6]
+ adds r1, r3, 0
+ cmp r1, 0
+ beq _0803E2DC
+ ldrb r2, [r0, 0xC]
+ lsls r0, r2, 1
+ adds r0, r5
+ mov r4, r10
+ adds r4, 0xC
+ adds r0, r4
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _0803E268
+ ldr r2, =gCurrentMove
+ ldr r0, =gUnknown_020241EC
+ strh r3, [r0]
+ strh r3, [r2]
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ ldrb r0, [r0, 0xC]
+ mov r3, r9
+ strb r0, [r3]
+ mov r5, r8
+ strb r0, [r5]
+ ldrh r0, [r2]
+ movs r1, 0
+ bl GetMoveTarget
+ ldrb r1, [r6]
+ ldr r3, =gBattleStruct
+ ldr r2, [r3]
+ b _0803E316
+ .pool
+_0803E268:
+ cmp r1, 0
+ beq _0803E2DC
+ cmp r1, r0
+ beq _0803E2DC
+ mov r5, r9
+ strb r2, [r5]
+ mov r0, r8
+ strb r2, [r0]
+ ldr r3, =gCurrentMove
+ ldr r2, =gUnknown_020241EC
+ ldrb r0, [r0]
+ lsls r0, 1
+ ldrb r1, [r6]
+ movs r5, 0x58
+ muls r1, r5
+ adds r0, r1
+ adds r0, r4
+ ldrh r0, [r0]
+ strh r0, [r2]
+ strh r0, [r3]
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ movs r2, 0
+ strh r7, [r0, 0x6]
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ strb r2, [r0, 0xC]
+ ldrb r0, [r6]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ add r1, r12
+ ldrb r2, [r1, 0xE]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0xE]
+ ldrh r0, [r3]
+ movs r1, 0
+ bl GetMoveTarget
+ ldrb r1, [r6]
+ ldr r3, =gBattleStruct
+ ldr r2, [r3]
+ b _0803E316
+ .pool
+_0803E2DC:
+ ldr r3, =gBattleMons
+ mov r5, r8
+ ldrb r0, [r5]
+ lsls r0, 1
+ ldr r4, =gBankAttacker
+ ldrb r2, [r4]
+ movs r1, 0x58
+ muls r1, r2
+ adds r0, r1
+ adds r3, 0xC
+ adds r0, r3
+ ldr r1, =gUnknown_02024274
+ lsls r2, 1
+ adds r2, r1
+ ldrh r3, [r0]
+ ldrh r2, [r2]
+ cmp r3, r2
+ beq _0803E334
+ ldr r1, =gCurrentMove
+ ldr r0, =gUnknown_020241EC
+ strh r3, [r0]
+ strh r3, [r1]
+ ldrh r0, [r1]
+ movs r1, 0
+ bl GetMoveTarget
+ ldrb r1, [r4]
+ ldr r2, =gBattleStruct
+ ldr r2, [r2]
+_0803E316:
+ adds r1, r2
+ strb r0, [r1, 0xC]
+ b _0803E33C
+ .pool
+_0803E334:
+ ldr r1, =gCurrentMove
+ ldr r0, =gUnknown_020241EC
+ strh r3, [r0]
+ strh r3, [r1]
+_0803E33C:
+ ldr r2, =gBattleMons
+ ldr r1, =gBankAttacker
+ ldrb r3, [r1]
+ movs r0, 0x58
+ muls r0, r3
+ adds r0, r2
+ ldrh r0, [r0, 0x28]
+ mov r8, r1
+ cmp r0, 0
+ beq _0803E384
+ adds r0, r3, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803E37C
+ ldr r0, =gBattleResults
+ ldr r1, =gCurrentMove
+ ldrh r1, [r1]
+ strh r1, [r0, 0x22]
+ b _0803E384
+ .pool
+_0803E37C:
+ ldr r0, =gBattleResults
+ ldr r1, =gCurrentMove
+ ldrh r1, [r1]
+ strh r1, [r0, 0x24]
+_0803E384:
+ mov r1, r8
+ ldrb r0, [r1]
+ bl GetBankSide
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, =gSideTimers
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r5, r0, r1
+ ldrb r0, [r5, 0x8]
+ cmp r0, 0
+ beq _0803E400
+ ldr r2, =gBattleMoves
+ ldr r0, =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ bne _0803E400
+ mov r3, r8
+ ldrb r0, [r3]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5, 0x9]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0803E400
+ ldr r1, =gBattleMons
+ ldrb r2, [r5, 0x9]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0803E400
+ ldr r0, =gBankTarget
+ strb r2, [r0]
+ b _0803E76A
+ .pool
+_0803E400:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ ldr r5, =gBankAttacker
+ mov r8, r5
+ cmp r0, 0
+ bne _0803E412
+ b _0803E6E0
+_0803E412:
+ ldr r1, =gSideTimers
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r5, [r0, 0x8]
+ cmp r5, 0
+ beq _0803E424
+ b _0803E630
+_0803E424:
+ ldr r2, =gBattleMoves
+ ldr r0, =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r2
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ bne _0803E440
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0x10
+ bne _0803E440
+ b _0803E630
+_0803E440:
+ ldr r3, =gBattleMons
+ ldr r2, =gBankAttacker
+ ldrb r6, [r2]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, r6, r0
+ ldrb r1, [r0, 0xC]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ mov r8, r2
+ cmp r0, 0x1F
+ bne _0803E460
+ b _0803E630
+_0803E460:
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0xD
+ beq _0803E468
+ b _0803E630
+_0803E468:
+ adds r0, r6, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, =gActiveBank
+ strb r5, [r1]
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _0803E4E0
+ adds r4, r1, 0
+_0803E480:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ beq _0803E4CE
+ ldr r0, =gBankAttacker
+ ldrb r1, [r0]
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r1, r0
+ ldrb r0, [r1, 0xC]
+ ldrb r1, [r4]
+ cmp r0, r1
+ beq _0803E4CE
+ ldr r1, =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1F
+ bne _0803E4CE
+ adds r0, r2, 0
+ bl sub_8048728
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, [sp]
+ cmp r0, r3
+ bcs _0803E4CE
+ ldrb r0, [r4]
+ bl sub_8048728
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+_0803E4CE:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803E480
+_0803E4E0:
+ ldr r5, [sp]
+ cmp r5, 0x4
+ beq _0803E4E8
+ b _0803E5E2
+_0803E4E8:
+ ldr r2, =gBattleMoves
+ ldr r0, =gUnknown_020241EC
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x6]
+ ands r5, r0
+ cmp r5, 0
+ beq _0803E568
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803E548
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E544
+ movs r0, 0x1
+ b _0803E55A
+ .pool
+_0803E544:
+ movs r0, 0x3
+ b _0803E55A
+_0803E548:
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E558
+ movs r0, 0
+ b _0803E55A
+_0803E558:
+ movs r0, 0x2
+_0803E55A:
+ bl GetBankByPlayerAI
+ ldr r1, =gBankTarget
+ strb r0, [r1]
+ b _0803E578
+ .pool
+_0803E568:
+ ldr r2, =gBankTarget
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r0, r1
+ ldrb r0, [r0, 0xC]
+ strb r0, [r2]
+_0803E578:
+ ldr r7, =gAbsentBankFlags
+ ldrb r0, [r7]
+ ldr r1, =gBitTable
+ mov r8, r1
+ ldr r5, =gBankTarget
+ ldrb r1, [r5]
+ lsls r1, 2
+ add r1, r8
+ ldr r1, [r1]
+ ands r0, r1
+ cmp r0, 0
+ bne _0803E592
+ b _0803E76A
+_0803E592:
+ ldr r6, =gBankAttacker
+ ldrb r0, [r6]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0803E5C4
+ ldrb r0, [r5]
+ b _0803E758
+ .pool
+_0803E5C4:
+ ldrb r0, [r6]
+ bl GetBankIdentity
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldrb r1, [r7]
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ add r0, r8
+ b _0803E74E
+_0803E5E2:
+ ldr r4, =gActiveBank
+ ldr r0, =gTurnOrder
+ ldr r3, [sp]
+ adds r0, r3, r0
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldrb r0, [r4]
+ ldr r2, =gBattleMons
+ movs r1, 0x58
+ muls r1, r0
+ adds r1, r2
+ adds r1, 0x20
+ ldrb r1, [r1]
+ bl RecordAbilityBattle
+ ldr r2, =gSpecialStatuses
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r0]
+ ldr r1, =gBankTarget
+ ldrb r0, [r4]
+ strb r0, [r1]
+ b _0803E76A
+ .pool
+_0803E630:
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r4, 0x1
+ ands r0, r4
+ cmp r0, 0
+ beq _0803E6E0
+ ldr r2, =gBattleMoves
+ ldr r0, =gUnknown_020241EC
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x6]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0803E6E0
+ mov r5, r8
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803E684
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E680
+ movs r0, 0x1
+ b _0803E696
+ .pool
+_0803E680:
+ movs r0, 0x3
+ b _0803E696
+_0803E684:
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E694
+ movs r0, 0
+ b _0803E696
+_0803E694:
+ movs r0, 0x2
+_0803E696:
+ bl GetBankByPlayerAI
+ ldr r1, =gBankTarget
+ strb r0, [r1]
+ ldr r0, =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, =gBitTable
+ ldr r5, =gBankTarget
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E76A
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0803E76A
+ ldrb r0, [r5]
+ b _0803E758
+ .pool
+_0803E6E0:
+ ldr r5, =gBankTarget
+ mov r2, r8
+ ldrb r0, [r2]
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r0, r1
+ ldrb r0, [r0, 0xC]
+ strb r0, [r5]
+ ldr r6, =gAbsentBankFlags
+ ldrb r1, [r6]
+ ldr r7, =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r7
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E76A
+ ldrb r0, [r2]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0803E730
+ ldrb r0, [r5]
+ b _0803E758
+ .pool
+_0803E730:
+ mov r1, r8
+ ldrb r0, [r1]
+ bl GetBankIdentity
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldrb r1, [r6]
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ adds r0, r7
+_0803E74E:
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0803E76A
+ adds r0, r2, 0
+_0803E758:
+ bl GetBankIdentity
+ movs r1, 0x2
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+_0803E76A:
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r2, 0x80
+ lsls r2, 10
+ ands r1, r2
+ adds r5, r0, 0
+ cmp r1, 0
+ beq _0803E808
+ ldr r0, =gProtectStructs
+ ldr r4, =gBankAttacker
+ ldrb r2, [r4]
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x2]
+ lsls r0, 27
+ cmp r0, 0
+ bge _0803E808
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _0803E7B4
+ ldr r1, =gFightStateTracker
+ movs r0, 0xC
+ b _0803E83C
+ .pool
+_0803E7B4:
+ ldr r3, =gUnknown_02024230
+ lsls r0, r2, 2
+ adds r0, r3
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0803E7EC
+ ldr r1, =gBattleCommunication
+ movs r2, 0
+ movs r0, 0x4
+ strb r0, [r1, 0x5]
+ ldr r1, =gBattlescriptCurrInstr
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r3
+ ldr r0, [r0]
+ str r0, [r1]
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r3
+ str r2, [r0]
+ b _0803E824
+ .pool
+_0803E7EC:
+ ldr r1, =gBattleCommunication
+ movs r0, 0x4
+ strb r0, [r1, 0x5]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DB6AD
+ str r0, [r1]
+ b _0803E824
+ .pool
+_0803E808:
+ ldr r4, =gBattlescriptCurrInstr
+ ldr r3, =gUnknown_082D86A8
+ ldr r2, =gBattleMoves
+ ldr r0, =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r3
+ ldr r0, [r0]
+ str r0, [r4]
+_0803E824:
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 11
+ ands r0, r1
+ cmp r0, 0
+ beq _0803E838
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ bl sub_81A56E8
+_0803E838:
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+_0803E83C:
+ strb r0, [r1]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803E0B8
+
+ thumb_func_start bs2_8016374
+bs2_8016374: @ 803E868
+ push {r4,lr}
+ ldr r3, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r0, =gUnknown_02022E14
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r2, [r0]
+ ldr r1, =gUnknown_020244AC
+ ldrb r0, [r3]
+ adds r0, r1
+ strb r2, [r0]
+ ldr r1, =gUnknown_020244B0
+ ldrb r0, [r3]
+ adds r0, r1
+ strb r2, [r0]
+ ldr r2, =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r2]
+ movs r0, 0x7
+ strb r0, [r2, 0x1]
+ ldrb r4, [r3]
+ strb r4, [r2, 0x2]
+ ldrb r0, [r3]
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r0, r1
+ adds r0, 0x58
+ ldrb r0, [r0]
+ strb r0, [r2, 0x3]
+ movs r0, 0xFF
+ strb r0, [r2, 0x4]
+ ldr r0, =gBattleScripting
+ strb r4, [r0, 0x17]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAB15
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ ldr r1, =gBattleResults
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0xFE
+ bhi _0803E8CE
+ adds r0, 0x1
+ strb r0, [r1, 0x2]
+_0803E8CE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bs2_8016374
+
+ thumb_func_start sub_803E90C
+sub_803E90C: @ 803E90C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r4, =gBankAttacker
+ ldr r2, =gBankTarget
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ strb r0, [r4]
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldrb r0, [r4]
+ bl sub_8045868
+ ldr r5, =gLastUsedItem
+ ldr r2, =gBattleBufferB
+ ldrb r1, [r4]
+ lsls r1, 9
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r3, [r0]
+ adds r2, 0x2
+ adds r1, r2
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r3, r0
+ strh r3, [r5]
+ cmp r3, 0xC
+ bhi _0803E998
+ ldr r2, =gBattlescriptCurrInstr
+ ldr r1, =gUnknown_082DBD08
+ ldrh r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, =gFightStateTracker
+ mov r10, r0
+ b _0803EBF6
+ .pool
+_0803E998:
+ adds r0, r3, 0
+ subs r0, 0x50
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0803E9C0
+ ldr r0, =gBattlescriptCurrInstr
+ ldr r1, =gUnknown_082DBD54
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r1, =gFightStateTracker
+ mov r10, r1
+ b _0803EBF6
+ .pool
+_0803E9C0:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803E9E8
+ ldr r0, =gBattlescriptCurrInstr
+ ldr r1, =gUnknown_082DBD3C
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r2, =gFightStateTracker
+ mov r10, r2
+ b _0803EBF6
+ .pool
+_0803E9E8:
+ ldr r3, =gBattleScripting
+ ldrb r0, [r4]
+ strb r0, [r3, 0x17]
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r2, =gBattleStruct
+ ldr r1, [r2]
+ adds r0, r1
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ subs r0, 0x1
+ mov r8, r4
+ ldr r1, =gBattlescriptCurrInstr
+ mov r9, r1
+ ldr r6, =gUnknown_082DBD3C
+ mov r12, r3
+ adds r7, r2, 0
+ ldr r2, =gFightStateTracker
+ mov r10, r2
+ cmp r0, 0x4
+ bls _0803EA14
+ b _0803EBDE
+_0803EA14:
+ lsls r0, 2
+ ldr r1, =_0803EA38
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803EA38:
+ .4byte _0803EBDE
+ .4byte _0803EBDE
+ .4byte _0803EA4C
+ .4byte _0803EAE0
+ .4byte _0803EBB0
+_0803EA4C:
+ ldr r5, =gBattleCommunication
+ movs r0, 0
+ strb r0, [r5, 0x5]
+ ldr r2, =gBankAttacker
+ ldrb r0, [r2]
+ lsrs r0, 1
+ ldr r1, [r7]
+ adds r0, r1
+ adds r0, 0xC6
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _0803EA98
+ movs r0, 0x3E
+ ands r0, r1
+ ldr r1, =gBattlescriptCurrInstr
+ mov r9, r1
+ ldr r6, =gUnknown_082DBD3C
+ ldr r2, =gFightStateTracker
+ mov r10, r2
+ cmp r0, 0
+ bne _0803EA7E
+ b _0803EBDE
+_0803EA7E:
+ movs r0, 0x5
+ strb r0, [r5, 0x5]
+ b _0803EBDE
+ .pool
+_0803EA98:
+ ldr r0, =gBattlescriptCurrInstr
+ mov r9, r0
+ ldr r6, =gUnknown_082DBD3C
+ ldr r1, =gFightStateTracker
+ mov r10, r1
+ mov r4, r8
+ adds r3, r7, 0
+ adds r2, r5, 0
+_0803EAA8:
+ ldrb r1, [r4]
+ lsrs r1, 1
+ ldr r0, [r3]
+ adds r1, r0
+ adds r1, 0xC6
+ ldrb r0, [r1]
+ lsrs r0, 1
+ strb r0, [r1]
+ ldrb r0, [r2, 0x5]
+ adds r0, 0x1
+ strb r0, [r2, 0x5]
+ ldrb r0, [r4]
+ lsrs r0, 1
+ ldr r1, [r3]
+ adds r0, r1
+ adds r0, 0xC6
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803EAA8
+ b _0803EBDE
+ .pool
+_0803EAE0:
+ ldr r3, =gBattleCommunication
+ movs r0, 0x4
+ strb r0, [r3, 0x5]
+ ldr r2, =gBankAttacker
+ ldrb r0, [r2]
+ lsrs r0, 1
+ ldr r1, [r7]
+ adds r0, r1
+ adds r6, r0, 0
+ adds r6, 0xC6
+ ldrb r1, [r6]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r8, r2
+ cmp r5, 0
+ beq _0803EB28
+ movs r0, 0x5
+ strb r0, [r3, 0x5]
+ ldr r2, =gBattlescriptCurrInstr
+ mov r9, r2
+ ldr r6, =gUnknown_082DBD3C
+ ldr r0, =gFightStateTracker
+ mov r10, r0
+ b _0803EBDE
+ .pool
+_0803EB28:
+ ldr r3, =gBattleTextBuff1
+ movs r4, 0xFD
+ strb r4, [r3]
+ movs r0, 0x5
+ strb r0, [r3, 0x1]
+ movs r2, 0x1
+ strb r2, [r3, 0x2]
+ movs r0, 0xFF
+ strb r0, [r3, 0x3]
+ ldr r1, =gBattleTextBuff2
+ strb r4, [r1]
+ strb r5, [r1, 0x1]
+ movs r0, 0xD2
+ strb r0, [r1, 0x2]
+ strb r5, [r1, 0x3]
+ subs r0, 0xD3
+ strb r0, [r1, 0x4]
+ ldrb r0, [r6]
+ ands r2, r0
+ ldr r1, =gBattlescriptCurrInstr
+ mov r9, r1
+ ldr r6, =gUnknown_082DBD3C
+ ldr r0, =gFightStateTracker
+ mov r10, r0
+ cmp r2, 0
+ bne _0803EB8C
+ mov r5, r8
+ adds r4, r7, 0
+ adds r2, r3, 0
+_0803EB62:
+ ldrb r1, [r5]
+ lsrs r1, 1
+ ldr r0, [r4]
+ adds r1, r0
+ adds r1, 0xC6
+ ldrb r0, [r1]
+ lsrs r0, 1
+ strb r0, [r1]
+ ldrb r0, [r2, 0x2]
+ adds r0, 0x1
+ strb r0, [r2, 0x2]
+ ldrb r0, [r5]
+ lsrs r0, 1
+ ldr r1, [r4]
+ adds r0, r1
+ adds r0, 0xC6
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803EB62
+_0803EB8C:
+ ldrb r0, [r3, 0x2]
+ adds r0, 0xE
+ movs r1, 0
+ mov r2, r12
+ strb r0, [r2, 0x10]
+ strb r1, [r2, 0x11]
+ b _0803EBDE
+ .pool
+_0803EBB0:
+ ldr r0, =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0803EBCC
+ ldr r1, =gBattleCommunication
+ movs r0, 0x2
+ strb r0, [r1, 0x5]
+ b _0803EBD0
+ .pool
+_0803EBCC:
+ ldr r0, =gBattleCommunication
+ strb r1, [r0, 0x5]
+_0803EBD0:
+ ldr r0, =gBankAttacker
+ mov r8, r0
+ ldr r1, =gBattlescriptCurrInstr
+ mov r9, r1
+ ldr r6, =gUnknown_082DBD3C
+ ldr r2, =gFightStateTracker
+ mov r10, r2
+_0803EBDE:
+ mov r1, r8
+ ldrb r0, [r1]
+ lsrs r0, 1
+ ldr r1, [r7]
+ adds r0, r1
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r6
+ ldr r0, [r0]
+ mov r2, r9
+ str r0, [r2]
+_0803EBF6:
+ movs r0, 0xA
+ mov r1, r10
+ strb r0, [r1]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803E90C
+
+ thumb_func_start sub_803EC20
+sub_803EC20: @ 803EC20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r7, 0
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r5
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _0803EC54
+ ldr r1, =gEnigmaBerries
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x7]
+ b _0803EC5E
+ .pool
+_0803EC54:
+ ldrh r0, [r1, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r1, r0, 24
+_0803EC5E:
+ ldr r0, =gUnknown_0202420F
+ strb r5, [r0]
+ cmp r1, 0x25
+ bne _0803EC9C
+ ldr r2, =gLastUsedItem
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ muls r0, r5
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ strh r0, [r2]
+ ldr r0, =gProtectStructs
+ lsls r2, r5, 4
+ adds r2, r0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ b _0803ED70
+ .pool
+_0803EC9C:
+ ldr r0, =gBattleMons
+ mov r10, r0
+ movs r2, 0x58
+ mov r9, r2
+ mov r0, r9
+ muls r0, r5
+ add r0, r10
+ mov r8, r0
+ adds r0, 0x20
+ ldrb r6, [r0]
+ cmp r6, 0x32
+ bne _0803ED5C
+ bl InBattlePyramid
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803ED38
+ ldr r4, =gBattleStruct
+ ldr r1, [r4]
+ adds r1, 0x6C
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl sub_81A9E28
+ lsls r0, 24
+ lsrs r1, r0, 24
+ mov r2, r8
+ ldrh r0, [r2, 0x6]
+ muls r0, r1
+ movs r2, 0x1
+ adds r1, r5, 0
+ eors r1, r2
+ mov r2, r9
+ muls r2, r1
+ adds r1, r2, 0
+ add r1, r10
+ ldrh r1, [r1, 0x6]
+ bl __divsi3
+ ldr r1, [r4]
+ adds r1, 0x6C
+ ldrb r2, [r1]
+ lsls r1, r2, 4
+ subs r1, r2
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r4, r1
+ bhi _0803ED0C
+ b _0803EE12
+_0803ED0C:
+ ldr r0, =gLastUsedAbility
+ strb r6, [r0]
+ ldr r0, =gProtectStructs
+ lsls r2, r5, 4
+ adds r2, r0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ b _0803ED70
+ .pool
+_0803ED38:
+ ldr r0, =gLastUsedAbility
+ strb r6, [r0]
+ ldr r0, =gProtectStructs
+ lsls r2, r5, 4
+ adds r2, r0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ b _0803ED70
+ .pool
+_0803ED5C:
+ ldr r1, =gBattleTypeFlags
+ ldr r2, [r1]
+ ldr r0, =0x043f0100
+ ands r0, r2
+ cmp r0, 0
+ beq _0803ED80
+ movs r0, 0x8
+ ands r2, r0
+ cmp r2, 0
+ beq _0803ED80
+_0803ED70:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ b _0803EE12
+ .pool
+_0803ED80:
+ ldr r0, [r1]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EE06
+ bl InBattlePyramid
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803EDBC
+ bl sub_81A9E28
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r4, =gBattleMons
+ movs r3, 0x58
+ adds r0, r5, 0
+ muls r0, r3
+ adds r0, r4
+ ldrh r0, [r0, 0x6]
+ muls r0, r1
+ movs r2, 0x1
+ adds r1, r5, 0
+ eors r1, r2
+ muls r1, r3
+ adds r1, r4
+ b _0803EDDA
+ .pool
+_0803EDBC:
+ ldr r3, =gBattleMons
+ movs r2, 0x58
+ adds r0, r5, 0
+ muls r0, r2
+ adds r4, r0, r3
+ movs r1, 0x1
+ adds r0, r5, 0
+ eors r0, r1
+ muls r0, r2
+ adds r1, r0, r3
+ ldrh r0, [r4, 0x6]
+ ldrh r2, [r1, 0x6]
+ cmp r0, r2
+ bcs _0803EE00
+ lsls r0, 7
+_0803EDDA:
+ ldrh r1, [r1, 0x6]
+ bl __divsi3
+ ldr r1, =gBattleStruct
+ ldr r1, [r1]
+ adds r1, 0x6C
+ ldrb r2, [r1]
+ lsls r1, r2, 4
+ subs r1, r2
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r4, r1
+ bls _0803EE06
+_0803EE00:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+_0803EE06:
+ ldr r0, =gBattleStruct
+ ldr r1, [r0]
+ adds r1, 0x6C
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0803EE12:
+ cmp r7, 0
+ beq _0803EE24
+ ldr r1, =gUnknown_02024082
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r1, =gBattleOutcome
+ movs r0, 0x4
+ strb r0, [r1]
+_0803EE24:
+ adds r0, r7, 0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_803EC20
+
+ thumb_func_start sub_803EE48
+sub_803EE48: @ 803EE48
+ push {r4-r6,lr}
+ ldr r4, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r5, =gUnknown_02024082
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ ldr r1, =0x02000002
+ ands r0, r1
+ cmp r0, 0
+ beq _0803EF0C
+ ldr r0, =gNoOfAllBanks
+ ldrb r1, [r0]
+ strb r1, [r5]
+ ldr r2, =gActiveBank
+ movs r0, 0
+ strb r0, [r2]
+ lsls r1, 24
+ cmp r1, 0
+ beq _0803EEE0
+ adds r4, r2, 0
+ ldr r6, =gUnknown_0202421C
+ ldr r5, =gBattleOutcome
+_0803EE7C:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EEBC
+ ldrb r0, [r4]
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0803EECE
+ ldrb r0, [r5]
+ movs r1, 0x2
+ b _0803EECA
+ .pool
+_0803EEBC:
+ ldrb r0, [r4]
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0803EECE
+ ldrb r0, [r5]
+ movs r1, 0x1
+_0803EECA:
+ orrs r0, r1
+ strb r0, [r5]
+_0803EECE:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0803EE7C
+_0803EEE0:
+ ldr r2, =gBattleOutcome
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r1, [r0]
+ ldr r0, =0x00000ca9
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x8
+ orrs r0, r2
+ b _0803EF96
+ .pool
+_0803EF0C:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EF4C
+ ldrb r0, [r4]
+ bl sub_803EC20
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EF98
+ ldrb r0, [r4]
+ bl sub_8045868
+ ldr r1, =gBattleCommunication
+ movs r0, 0x3
+ strb r0, [r1, 0x5]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAB02
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ b _0803EF96
+ .pool
+_0803EF4C:
+ ldr r1, =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, =0x0400e000
+ ands r0, r1
+ cmp r0, 0
+ beq _0803EF8C
+ ldr r1, =gBattleCommunication
+ movs r0, 0x4
+ strb r0, [r1, 0x5]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DAB02
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ b _0803EF96
+ .pool
+_0803EF8C:
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r5]
+ ldr r1, =gBattleOutcome
+ movs r0, 0x6
+_0803EF96:
+ strb r0, [r1]
+_0803EF98:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803EE48
+
+ thumb_func_start sub_803EFA8
+sub_803EFA8: @ 803EFA8
+ ldr r2, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DBD58
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end sub_803EFA8
+
+ thumb_func_start bs5_8016AC0
+bs5_8016AC0: @ 803EFF0
+ ldr r2, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldr r1, =gNumSafariBalls
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ ldr r1, =gLastUsedItem
+ movs r0, 0x5
+ strh r0, [r1]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DBD08
+ ldr r0, [r0, 0x14]
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end bs5_8016AC0
+
+ thumb_func_start sub_803F050
+sub_803F050: @ 803F050
+ push {r4-r6,lr}
+ ldr r3, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldr r6, =gBattleCommunication
+ ldr r2, =gBattleBufferB
+ ldrb r0, [r3]
+ lsls r0, 9
+ adds r1, r2, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ subs r0, 0x1
+ strb r0, [r6, 0x5]
+ ldr r1, =gLastUsedItem
+ ldrb r0, [r3]
+ lsls r0, 9
+ adds r2, 0x2
+ adds r0, r2
+ ldrb r0, [r0]
+ strh r0, [r1]
+ ldr r1, =gBattleResults
+ ldrb r0, [r1, 0x1F]
+ cmp r0, 0xFE
+ bhi _0803F096
+ adds r0, 0x1
+ strb r0, [r1, 0x1F]
+_0803F096:
+ ldr r2, =gBattleStruct
+ ldr r0, [r2]
+ adds r1, r0, 0
+ adds r1, 0x7A
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bhi _0803F0A8
+ adds r0, 0x1
+ strb r0, [r1]
+_0803F0A8:
+ ldr r0, [r2]
+ adds r3, r0, 0
+ adds r3, 0x7B
+ ldrb r5, [r3]
+ adds r4, r5, 0
+ cmp r4, 0x1
+ bls _0803F100
+ ldr r2, =gUnknown_0831BCE0
+ adds r0, 0x7A
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrb r6, [r6, 0x5]
+ adds r0, r6
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _0803F0FC
+ movs r0, 0x1
+ b _0803F0FE
+ .pool
+_0803F0FC:
+ subs r0, r5, r0
+_0803F0FE:
+ strb r0, [r3]
+_0803F100:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DBD58
+ ldr r0, [r0, 0x8]
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F050
+
+ thumb_func_start sub_803F120
+sub_803F120: @ 803F120
+ push {r4,lr}
+ ldr r2, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, =gUnknown_02022E14
+ movs r4, 0
+ strh r4, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r4, [r0]
+ ldr r3, =gBattleStruct
+ ldr r0, [r3]
+ adds r2, r0, 0
+ adds r2, 0x7C
+ ldr r1, =gUnknown_0831BCEF
+ adds r0, 0x79
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ ldrb r1, [r2]
+ adds r0, r1
+ strb r0, [r2]
+ ldr r0, [r3]
+ adds r1, r0, 0
+ adds r1, 0x7C
+ ldrb r0, [r1]
+ cmp r0, 0x14
+ bls _0803F162
+ movs r0, 0x14
+ strb r0, [r1]
+_0803F162:
+ ldr r0, [r3]
+ adds r2, r0, 0
+ adds r2, 0x7B
+ ldr r1, =gUnknown_0831BCF3
+ adds r0, 0x79
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ ldrb r1, [r2]
+ adds r0, r1
+ strb r0, [r2]
+ ldr r0, [r3]
+ adds r1, r0, 0
+ adds r1, 0x7B
+ ldrb r0, [r1]
+ cmp r0, 0x14
+ bls _0803F188
+ movs r0, 0x14
+ strb r0, [r1]
+_0803F188:
+ ldr r0, [r3]
+ adds r1, r0, 0
+ adds r1, 0x79
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bhi _0803F1C4
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, =gBattleCommunication
+ strb r4, [r0, 0x5]
+ b _0803F1CA
+ .pool
+_0803F1C4:
+ ldr r1, =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+_0803F1CA:
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DBD58
+ ldr r0, [r0, 0x4]
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F120
+
+ thumb_func_start bs8_exit_by_flight
+bs8_exit_by_flight: @ 803F1F0
+ push {r4,lr}
+ ldr r2, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r4, =gUnknown_02024082
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ movs r0, 0x11
+ bl PlaySE
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldr r1, =gBattleOutcome
+ movs r0, 0x4
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bs8_exit_by_flight
+
+ thumb_func_start bs9_8016C9C
+bs9_8016C9C: @ 803F22C
+ ldr r3, =gBankAttacker
+ ldr r1, =gTurnOrder
+ ldr r0, =gUnknown_02024082
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ strb r2, [r3]
+ ldr r0, =gUnknown_02022E14
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_02022E16
+ strh r1, [r0]
+ ldr r1, =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x7
+ strb r0, [r1, 0x1]
+ strb r2, [r1, 0x2]
+ ldr r2, =gBattlePartyID
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, =gBattlescriptCurrInstr
+ ldr r0, =gUnknown_082DBD58
+ ldr r0, [r0, 0xC]
+ str r0, [r1]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ ldr r1, =gUnknown_0202407A
+ movs r0, 0xC
+ strb r0, [r1, 0x1]
+ bx lr
+ .pool
+ thumb_func_end bs9_8016C9C
+
+ thumb_func_start bsB_exit_by_move
+bsB_exit_by_move: @ 803F2A4
+ push {lr}
+ bl sub_8041728
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0803F2C0
+ ldr r0, =gBattleStruct
+ ldr r0, [r0]
+ adds r0, 0x4D
+ strb r1, [r0]
+ ldr r1, =gFightStateTracker
+ movs r0, 0xC
+ strb r0, [r1]
+_0803F2C0:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bsB_exit_by_move
+
+ thumb_func_start bsD_proceed
+bsD_proceed: @ 803F2CC
+ ldr r1, =gUnknown_02024082
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r3, =gFightStateTracker
+ ldr r2, =gUnknown_0202407A
+ ldrb r0, [r1]
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ ldr r1, =0xf1e892af
+ ands r0, r1
+ str r0, [r2]
+ bx lr
+ .pool
+ thumb_func_end bsD_proceed
+
+ thumb_func_start bsC_8016D70
+bsC_8016D70: @ 803F300
+ push {r4-r6,lr}
+ ldr r1, =gTurnOrder
+ ldr r2, =gUnknown_02024082
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r6, =gBattleStruct
+ ldr r1, [r6]
+ adds r0, r1
+ adds r0, 0x5C
+ movs r1, 0x6
+ strb r1, [r0]
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ ldr r3, =gFightStateTracker
+ ldr r1, =gUnknown_0202407A
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ bl sub_803D6A0
+ ldr r2, =gHitMarker
+ ldr r0, [r2]
+ ldr r1, =0xf1e892af
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, =gCurrentMove
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gBattleMoveDamage
+ movs r4, 0
+ str r4, [r0]
+ ldr r0, =gBattleMoveFlags
+ strb r1, [r0]
+ ldr r5, =gBattleScripting
+ strb r1, [r5, 0x18]
+ strb r1, [r5, 0x19]
+ ldr r2, =gUnknown_02024250
+ ldr r3, =gBankAttacker
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r0, r2
+ strh r4, [r0]
+ ldr r2, =gUnknown_02024258
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r0, r2
+ strh r4, [r0]
+ ldr r0, [r6]
+ strb r1, [r0, 0x13]
+ ldr r0, =gDynamicBasePower
+ strh r4, [r0]
+ strb r1, [r5, 0x14]
+ ldr r0, =gBattleCommunication
+ strb r1, [r0, 0x3]
+ strb r1, [r0, 0x4]
+ strb r1, [r5, 0x16]
+ ldr r0, =gBattleResources
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ adds r0, 0x20
+ strb r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end bsC_8016D70
+
+ thumb_func_start get_battle_side_of_something
+get_battle_side_of_something: @ 803F3CC
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r0, 0
+ cmp r1, 0xE
+ bhi _0803F47A
+ lsls r0, r1, 2
+ ldr r1, =_0803F3E8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0803F3E8:
+ .4byte _0803F424
+ .4byte _0803F430
+ .4byte _0803F43C
+ .4byte _0803F458
+ .4byte _0803F464
+ .4byte _0803F458
+ .4byte _0803F464
+ .4byte _0803F448
+ .4byte _0803F464
+ .4byte _0803F464
+ .4byte _0803F44C
+ .4byte _0803F464
+ .4byte _0803F468
+ .4byte _0803F46C
+ .4byte _0803F470
+_0803F424:
+ ldr r0, =gBankTarget
+ ldrb r0, [r0]
+ b _0803F47A
+ .pool
+_0803F430:
+ ldr r0, =gBankAttacker
+ ldrb r0, [r0]
+ b _0803F47A
+ .pool
+_0803F43C:
+ ldr r0, =gUnknown_0202420E
+ ldrb r0, [r0]
+ b _0803F47A
+ .pool
+_0803F448:
+ movs r0, 0
+ b _0803F47A
+_0803F44C:
+ ldr r0, =gBattleScripting
+ ldrb r0, [r0, 0x17]
+ b _0803F47A
+ .pool
+_0803F458:
+ ldr r0, =gUnknown_0202420D
+ ldrb r0, [r0]
+ b _0803F47A
+ .pool
+_0803F464:
+ movs r0, 0
+ b _0803F472
+_0803F468:
+ movs r0, 0x1
+ b _0803F472
+_0803F46C:
+ movs r0, 0x2
+ b _0803F472
+_0803F470:
+ movs r0, 0x3
+_0803F472:
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+_0803F47A:
+ pop {r1}
+ bx r1
+ thumb_func_end get_battle_side_of_something
+
+ thumb_func_start sub_803F480
+sub_803F480: @ 803F480
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r1, =gBattleMons
+ movs r4, 0x58
+ muls r0, r4
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ mov r12, r1
+ cmp r0, 0x2E
+ bne _0803F532
+ movs r3, 0
+ adds r0, r5, 0
+ muls r0, r4
+ adds r1, 0xC
+ adds r1, r0, r1
+ b _0803F4BC
+ .pool
+_0803F4B4:
+ adds r1, 0x2
+ adds r3, 0x1
+ cmp r3, 0x3
+ bgt _0803F4C2
+_0803F4BC:
+ ldrh r0, [r1]
+ cmp r0, r2
+ bne _0803F4B4
+_0803F4C2:
+ cmp r3, 0x4
+ beq _0803F532
+ movs r7, 0x58
+ adds r2, r5, 0
+ muls r2, r7
+ adds r0, r3, r2
+ mov r6, r12
+ adds r6, 0x24
+ adds r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0803F4DE
+ subs r0, 0x1
+ strb r0, [r1]
+_0803F4DE:
+ mov r0, r12
+ adds r0, 0x50
+ adds r0, r2, r0
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _0803F532
+ ldr r1, =gDisableStructs
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, =gBitTable
+ lsls r0, r3, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803F532
+ ldr r4, =gActiveBank
+ strb r5, [r4]
+ adds r1, r3, 0
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r7
+ adds r0, r6
+ adds r0, r3
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl dp01_build_cmdbuf_x02_a_b_varargs
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803F532:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F480
+
+ thumb_func_start sub_803F548
+sub_803F548: @ 803F548
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r0, 0x4
+ mov r8, r0
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r4, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ bge _0803F5F0
+ ldr r1, =gBattleMons
+ movs r0, 0x58
+ adds r7, r5, 0
+ muls r7, r0
+ adds r1, 0xC
+ mov r10, r1
+_0803F57E:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r4, 0x1
+ cmp r9, r0
+ beq _0803F5E6
+ ldr r0, =gBattleMons
+ movs r3, 0x58
+ adds r1, r4, 0
+ muls r1, r3
+ adds r1, r0
+ adds r1, 0x20
+ ldrb r1, [r1]
+ adds r4, r0, 0
+ cmp r1, 0x2E
+ bne _0803F5E6
+ movs r2, 0
+ adds r0, r5, 0
+ muls r0, r3
+ adds r1, r4, 0
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r0, [r0]
+ movs r1, 0x8F
+ lsls r1, 1
+ cmp r0, r1
+ beq _0803F5CE
+ adds r3, r1, 0
+ mov r0, r10
+ adds r1, r7, r0
+_0803F5C0:
+ adds r1, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ bgt _0803F5CE
+ ldrh r0, [r1]
+ cmp r0, r3
+ bne _0803F5C0
+_0803F5CE:
+ cmp r2, 0x4
+ beq _0803F5E6
+ mov r8, r2
+ adds r1, r2, r7
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0803F5E6
+ subs r0, 0x1
+ strb r0, [r1]
+_0803F5E6:
+ adds r4, r6, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0803F57E
+_0803F5F0:
+ mov r1, r8
+ cmp r1, 0x4
+ beq _0803F658
+ ldr r6, =gBattleMons
+ movs r3, 0x58
+ adds r0, r5, 0
+ muls r0, r3
+ adds r1, r6, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _0803F658
+ ldr r1, =gDisableStructs
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, =gBitTable
+ mov r4, r8
+ lsls r0, r4, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803F658
+ ldr r4, =gActiveBank
+ strb r5, [r4]
+ mov r1, r8
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r3
+ adds r2, r6, 0
+ adds r2, 0x24
+ adds r0, r2
+ add r0, r8
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl dp01_build_cmdbuf_x02_a_b_varargs
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803F658:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F548
+
+ thumb_func_start sub_803F67C
+sub_803F67C: @ 803F67C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r6, 0x4
+ movs r1, 0
+ ldr r0, =gNoOfAllBanks
+ mov r8, r0
+ ldrb r0, [r0]
+ cmp r1, r0
+ bge _0803F6FE
+ ldr r7, =gBattleMons
+ movs r2, 0x58
+ mov r12, r2
+ mov r5, r12
+ muls r5, r3
+ adds r0, r7, 0
+ adds r0, 0xC
+ adds r2, r5, r0
+ mov r10, r2
+ mov r9, r5
+_0803F6AE:
+ mov r0, r12
+ muls r0, r1
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r4, r1, 0x1
+ cmp r0, 0x2E
+ bne _0803F6F4
+ cmp r1, r3
+ beq _0803F6F4
+ movs r2, 0
+ mov r1, r10
+ ldrh r0, [r1]
+ cmp r0, 0xC3
+ beq _0803F6DE
+ ldr r1, =gBattleMons + 0xC
+ add r1, r9
+_0803F6D0:
+ adds r1, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ bgt _0803F6DE
+ ldrh r0, [r1]
+ cmp r0, 0xC3
+ bne _0803F6D0
+_0803F6DE:
+ cmp r2, 0x4
+ beq _0803F6F4
+ adds r6, r2, 0
+ adds r0, r6, r5
+ ldr r2, =gBattleMons + 0x24
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0803F6F4
+ subs r0, 0x1
+ strb r0, [r1]
+_0803F6F4:
+ adds r1, r4, 0
+ mov r0, r8
+ ldrb r0, [r0]
+ cmp r1, r0
+ blt _0803F6AE
+_0803F6FE:
+ cmp r6, 0x4
+ beq _0803F762
+ ldr r7, =gBattleMons
+ movs r5, 0x58
+ adds r0, r3, 0
+ muls r0, r5
+ adds r1, r7, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _0803F762
+ ldr r1, =gDisableStructs
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, =gBitTable
+ lsls r0, r6, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _0803F762
+ ldr r4, =gActiveBank
+ strb r3, [r4]
+ adds r1, r6, 0
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r2, r7, 0
+ adds r2, 0x24
+ adds r0, r2
+ adds r0, r6
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl dp01_build_cmdbuf_x02_a_b_varargs
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+_0803F762:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F67C
+
+ thumb_func_start sub_803F790
+sub_803F790: @ 803F790
+ push {r4,r5,lr}
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F7D0
+ movs r2, 0
+ ldr r4, =gNoOfAllBanks
+ ldrb r0, [r4]
+ cmp r2, r0
+ bge _0803F7EE
+ ldr r3, =gBattleExecBuffer
+ ldr r5, =gBitTable
+_0803F7AC:
+ ldm r5!, {r1}
+ lsls r1, 28
+ ldr r0, [r3]
+ orrs r0, r1
+ str r0, [r3]
+ adds r2, 0x1
+ ldrb r0, [r4]
+ cmp r2, r0
+ blt _0803F7AC
+ b _0803F7EE
+ .pool
+_0803F7D0:
+ movs r2, 0
+ ldr r4, =gNoOfAllBanks
+ ldrb r0, [r4]
+ cmp r2, r0
+ bge _0803F7EE
+ ldr r3, =gBattleExecBuffer
+ ldr r5, =gBitTable
+_0803F7DE:
+ ldr r0, [r3]
+ ldm r5!, {r1}
+ orrs r0, r1
+ str r0, [r3]
+ adds r2, 0x1
+ ldrb r0, [r4]
+ cmp r2, r0
+ blt _0803F7DE
+_0803F7EE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F790
+
+ thumb_func_start dp01_battle_side_mark_buffer_for_execution
+dp01_battle_side_mark_buffer_for_execution: @ 803F800
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F834
+ ldr r2, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r1, 28
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ b _0803F844
+ .pool
+_0803F834:
+ ldr r2, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r2]
+ ldr r0, [r0]
+ orrs r1, r0
+ str r1, [r2]
+_0803F844:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end dp01_battle_side_mark_buffer_for_execution
+
+ thumb_func_start sub_803F850
+sub_803F850: @ 803F850
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r4, 0
+ ldr r5, =gBattleExecBuffer
+ ldr r1, =gBitTable
+ lsls r0, r7, 2
+ adds r6, r0, r1
+ b _0803F87A
+ .pool
+_0803F86C:
+ lsls r0, r4, 2
+ ldr r1, [r6]
+ lsls r1, r0
+ ldr r0, [r5]
+ orrs r0, r1
+ str r0, [r5]
+ adds r4, 0x1
+_0803F87A:
+ bl sub_8009FCC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ blt _0803F86C
+ ldr r2, =gBattleExecBuffer
+ movs r1, 0x80
+ lsls r1, 21
+ lsls r1, r7
+ ldr r0, [r2]
+ bics r0, r1
+ str r0, [r2]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F850
+
+ thumb_func_start CancelMultiTurnMoves
+CancelMultiTurnMoves: @ 803F8A0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gBattleMons
+ movs r2, 0x58
+ adds r3, r0, 0
+ muls r3, r2
+ adds r1, 0x50
+ adds r3, r1
+ ldr r1, [r3]
+ ldr r2, =0xffffefff
+ ands r1, r2
+ ldr r2, =0xfffff3ff
+ ands r1, r2
+ movs r2, 0x71
+ negs r2, r2
+ ands r1, r2
+ ldr r2, =0xfffffcff
+ ands r1, r2
+ str r1, [r3]
+ ldr r1, =gStatuses3
+ lsls r2, r0, 2
+ adds r2, r1
+ ldr r1, [r2]
+ ldr r3, =0xfffbff3f
+ ands r1, r3
+ str r1, [r2]
+ ldr r2, =gDisableStructs
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r2, [r1, 0x11]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x11]
+ movs r0, 0
+ strb r0, [r1, 0x10]
+ bx lr
+ .pool
+ thumb_func_end CancelMultiTurnMoves
+
+ thumb_func_start sub_803F90C
+sub_803F90C: @ 803F90C
+ push {lr}
+ lsls r0, 24
+ ldr r1, =gProtectStructs
+ lsrs r0, 20
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ lsrs r0, 7
+ cmp r0, 0
+ bne _0803F952
+ ldrb r2, [r1, 0x1]
+ lsls r0, r2, 30
+ cmp r0, 0
+ blt _0803F952
+ lsls r0, r2, 26
+ cmp r0, 0
+ blt _0803F952
+ lsls r0, r2, 25
+ cmp r0, 0
+ blt _0803F952
+ lsrs r0, r2, 7
+ cmp r0, 0
+ bne _0803F952
+ ldrb r1, [r1, 0x2]
+ lsls r0, r1, 31
+ cmp r0, 0
+ bne _0803F952
+ lsls r0, r1, 30
+ cmp r0, 0
+ blt _0803F952
+ lsls r0, r1, 29
+ cmp r0, 0
+ blt _0803F952
+ lsls r0, r2, 31
+ cmp r0, 0
+ beq _0803F95C
+_0803F952:
+ movs r0, 0x1
+ b _0803F95E
+ .pool
+_0803F95C:
+ movs r0, 0
+_0803F95E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803F90C
+
+ thumb_func_start b_std_message
+b_std_message: @ 803F964
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, =gActiveBank
+ strb r1, [r4]
+ movs r0, 0
+ adds r1, r2, 0
+ bl dp01_build_cmdbuf_x10_TODO
+ ldrb r0, [r4]
+ bl dp01_battle_side_mark_buffer_for_execution
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end b_std_message
+
+ thumb_func_start sub_803F988
+sub_803F988: @ 803F988
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r0, =gUnknown_020243FE
+ strb r3, [r0]
+ strb r3, [r0, 0x1]
+ movs r1, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r2, [r0]
+ adds r6, r0, 0
+ cmp r1, r2
+ bge _0803F9B6
+ ldr r5, =gBitTable
+ adds r4, r2, 0
+ ldr r2, =gBattlePartyID
+_0803F9A4:
+ ldrh r0, [r2]
+ lsls r0, 2
+ adds r0, r5
+ ldr r0, [r0]
+ orrs r3, r0
+ adds r2, 0x4
+ adds r1, 0x2
+ cmp r1, r4
+ blt _0803F9A4
+_0803F9B6:
+ movs r1, 0x1
+ adds r2, r6, 0
+ ldrb r0, [r2]
+ cmp r1, r0
+ bge _0803F9D6
+ ldr r5, =gUnknown_020243FE
+ movs r4, 0x2
+_0803F9C4:
+ adds r0, r1, 0
+ ands r0, r4
+ asrs r0, 1
+ adds r0, r5
+ strb r3, [r0]
+ adds r1, 0x2
+ ldrb r0, [r2]
+ cmp r1, r0
+ blt _0803F9C4
+_0803F9D6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F988
+
+ thumb_func_start sub_803F9EC
+sub_803F9EC: @ 803F9EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803FA50
+ movs r0, 0x2
+ ands r0, r5
+ lsls r0, 24
+ lsrs r0, 25
+ mov r12, r0
+ ldr r1, =gUnknown_020243FE
+ adds r0, r1
+ strb r4, [r0]
+ adds r5, r4, 0
+ ldr r0, =gNoOfAllBanks
+ ldrb r2, [r0]
+ mov r8, r1
+ cmp r4, r2
+ bge _0803FA4A
+ ldr r0, =gAbsentBankFlags
+ ldrb r7, [r0]
+ ldr r1, =gBitTable
+ adds r6, r2, 0
+ ldr r3, =gBattlePartyID
+ adds r2, r1, 0
+_0803FA2E:
+ ldr r0, [r2]
+ ands r0, r7
+ cmp r0, 0
+ bne _0803FA40
+ ldrh r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r4, r0
+_0803FA40:
+ adds r3, 0x4
+ adds r2, 0x8
+ adds r5, 0x2
+ cmp r5, r6
+ blt _0803FA2E
+_0803FA4A:
+ mov r0, r12
+ add r0, r8
+ strb r4, [r0]
+_0803FA50:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803F9EC
+
+ thumb_func_start sub_803FA70
+sub_803FA70: @ 803FA70
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0803FA8C
+ adds r0, r4, 0
+ bl sub_803F9EC
+ b _0803FAC2
+_0803FA8C:
+ movs r3, 0x1
+ ldr r5, =gNoOfAllBanks
+ ldrb r0, [r5]
+ cmp r3, r0
+ bge _0803FAC2
+ ldr r0, =gUnknown_020243FE
+ mov r12, r0
+ movs r7, 0x2
+ ldr r6, =gBitTable
+ ldr r1, =gBattlePartyID
+ lsls r0, r4, 1
+ adds r4, r0, r1
+_0803FAA4:
+ adds r2, r3, 0
+ ands r2, r7
+ asrs r2, 1
+ add r2, r12
+ ldrh r0, [r4]
+ lsls r0, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldrb r1, [r2]
+ orrs r0, r1
+ strb r0, [r2]
+ adds r3, 0x1
+ ldrb r0, [r5]
+ cmp r3, r0
+ blt _0803FAA4
+_0803FAC2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_803FA70
+
+ .align 2, 0 @ Don't pad with nop.
+ \ No newline at end of file