summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-09-07 16:35:25 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-09-07 16:35:25 +0200
commit8bfdc42d0ee8d0eae7108fd4c68accfd4649f3a0 (patch)
tree1a4b52307b63ecec8aa0bac34d9a86b29a8f1576
parentd7d1b97bb82daca99995a3f0a7986720ae7d6237 (diff)
name b message functions, split battle2
-rw-r--r--asm/battle_2.s16487
-rw-r--r--asm/battle_4.s4
-rw-r--r--asm/battle_controller_linkopponent.s2
-rw-r--r--asm/battle_controller_linkpartner.s2
-rw-r--r--asm/battle_controller_opponent.s2
-rw-r--r--asm/battle_controller_player.s14
-rw-r--r--asm/battle_controller_player_partner.s2
-rw-r--r--asm/battle_controller_recorded_opponent.s2
-rw-r--r--asm/battle_controller_recorded_player.s2
-rw-r--r--asm/battle_controller_safari.s6
-rw-r--r--asm/battle_controller_wally.s6
-rw-r--r--asm/battle_message.s36
-rw-r--r--asm/contest.s18
-rw-r--r--asm/contest_link_80F57C4.s4
-rw-r--r--asm/evolution_scene.s88
-rw-r--r--asm/pokemon_3.s10
-rw-r--r--asm/rom_8034C54.s16477
-rw-r--r--asm/rom_8072304.s4
-rw-r--r--asm/rom_818E9AC.s20
-rw-r--r--ld_script.txt1
-rw-r--r--sym_ewram.txt2
21 files changed, 16600 insertions, 16589 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
new file mode 100644
index 000000000..cd4d649c1
--- /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, =gUnknown_03005D70
+ 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, =gUnknown_03005D70
+ 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
diff --git a/asm/battle_4.s b/asm/battle_4.s
index cb9c944fc..f7e9fe499 100644
--- a/asm/battle_4.s
+++ b/asm/battle_4.s
@@ -17922,8 +17922,8 @@ _0804FC38:
lsls r0, 2
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0x16
bl battle_show_message_maybe
b _0804FD70
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index 1e5e0fce5..e9ce01f0a 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -5043,7 +5043,7 @@ sub_8066FF4: @ 8066FF4
adds r4, r0
ldrh r0, [r4]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 979f99ac1..d5c6fd8e6 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -4352,7 +4352,7 @@ sub_814D590: @ 814D590
adds r4, r0
ldrh r0, [r4]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index c35c3badf..5f06b1f8f 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -5183,7 +5183,7 @@ sub_8061F34: @ 8061F34
adds r4, r0
ldrh r0, [r4]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 86381bf35..956df3799 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -4337,7 +4337,7 @@ sub_8059AAC: @ 8059AAC
movs r0, 0
strb r0, [r2]
movs r5, 0
- ldr r7, =gUnknown_02022E2C
+ ldr r7, =gDisplayedStringBattle
adds r4, r1, r3
adds r6, r2, 0
_08059AC4:
@@ -4376,7 +4376,7 @@ _08059AF4:
thumb_func_start sub_8059B18
sub_8059B18: @ 8059B18
push {r4,lr}
- ldr r4, =gUnknown_02022E2C
+ ldr r4, =gDisplayedStringBattle
ldr r1, =gUnknown_085CCA6F
adds r0, r4, 0
bl StringCopy
@@ -4406,7 +4406,7 @@ sub_8059B3C: @ 8059B3C
lsls r4, r1, 9
adds r0, r5, 0x4
adds r4, r0
- ldr r6, =gUnknown_02022E2C
+ ldr r6, =gDisplayedStringBattle
ldr r5, =gUnknown_020244B0
adds r1, r5
adds r0, r4, 0
@@ -4448,7 +4448,7 @@ sub_8059BB0: @ 8059BB0
lsls r4, 9
ldr r0, =gBattleBufferA + 4
adds r4, r0
- ldr r6, =gUnknown_02022E2C
+ ldr r6, =gDisplayedStringBattle
ldr r1, =gUnknown_085CCA73
adds r0, r6, 0
bl StringCopy
@@ -8456,7 +8456,7 @@ sub_805BF80: @ 805BF80
adds r4, r0
ldrh r0, [r4]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
@@ -8551,8 +8551,8 @@ _0805C062:
movs r1, 0
bl sub_8059CB4
ldr r0, =gUnknown_085CC9F3
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0x1
bl battle_show_message_maybe
pop {r4}
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index 0b4ef0973..95e1c57f8 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -4964,7 +4964,7 @@ sub_81BDA4C: @ 81BDA4C
adds r0, r1
ldrh r0, [r0]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index 7eebf563b..bc1f425ce 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -4720,7 +4720,7 @@ sub_8188E90: @ 8188E90
adds r0, r1
ldrh r0, [r0]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index 141dfca11..4bbb03f6a 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -4820,7 +4820,7 @@ sub_818C43C: @ 818C43C
adds r0, r1
ldrh r0, [r0]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index be274e81b..d7fd0b505 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -790,7 +790,7 @@ dp01t_10_6_message: @ 81599DC
adds r0, r1
ldrh r0, [r0]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
@@ -879,8 +879,8 @@ _08159AAE:
movs r1, 0
bl sub_8059CB4
ldr r0, =gUnknown_085CCA04
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0x1
bl battle_show_message_maybe
pop {r4}
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 978e2da2d..620bf3e95 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -3604,7 +3604,7 @@ sub_816A3B8: @ 816A3B8
adds r0, r1
ldrh r0, [r0]
bl BufferStringBattle
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleBankFunc
@@ -3693,8 +3693,8 @@ _0816A48A:
movs r1, 0
bl sub_8059CB4
ldr r0, =gUnknown_085CCA15
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0x1
bl battle_show_message_maybe
pop {r4}
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 1e46ef557..c224df9f9 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -673,7 +673,7 @@ _0814E6B8:
lsls r0, 1
cmp r6, r0
bls _0814E6CC
- ldr r1, =gUnknown_02022E2C
+ ldr r1, =gDisplayedStringBattle
movs r0, 0xFF
strb r0, [r1]
b _0814E6DE
@@ -687,7 +687,7 @@ _0814E6CC:
ldr r7, [r0]
_0814E6D8:
adds r0, r7, 0
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
_0814E6DE:
pop {r3-r5}
mov r8, r3
@@ -699,18 +699,18 @@ _0814E6DE:
.pool
thumb_func_end BufferStringBattle
- thumb_func_start get_battle_strings_
-get_battle_strings_: @ 814E6F0
+ thumb_func_start StrCpyDecodeToDisplayedStringBattle
+StrCpyDecodeToDisplayedStringBattle: @ 814E6F0
push {lr}
- ldr r1, =gUnknown_02022E2C
- bl get_battle_strings
+ ldr r1, =gDisplayedStringBattle
+ bl StrCpyDecodeBattle
pop {r1}
bx r1
.pool
- thumb_func_end get_battle_strings_
+ thumb_func_end StrCpyDecodeToDisplayedStringBattle
- thumb_func_start sub_814E700
-sub_814E700: @ 814E700
+ thumb_func_start AppendStatusString
+AppendStatusString: @ 814E700
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
@@ -761,10 +761,10 @@ _0814E75A:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_814E700
+ thumb_func_end AppendStatusString
- thumb_func_start get_battle_strings
-get_battle_strings: @ 814E764
+ thumb_func_start StrCpyDecodeBattle
+StrCpyDecodeBattle: @ 814E764
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -878,7 +878,7 @@ _0814E8A0:
.pool
_0814E8B8:
adds r0, r5, 0
- bl sub_814E700
+ bl AppendStatusString
adds r4, r0, 0
cmp r4, 0
beq _0814E8C8
@@ -904,7 +904,7 @@ _0814E8EE:
adds r0, r1, 0
_0814E8F0:
adds r1, r4, 0
- bl sub_814F648
+ bl StrCpyDecodeBattleTextBuff
bl _0814F5C0
.pool
_0814E904:
@@ -2335,10 +2335,10 @@ _0814F62A:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end get_battle_strings
+ thumb_func_end StrCpyDecodeBattle
- thumb_func_start sub_814F648
-sub_814F648: @ 814F648
+ thumb_func_start StrCpyDecodeBattleTextBuff
+StrCpyDecodeBattleTextBuff: @ 814F648
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -2652,7 +2652,7 @@ _0814F8EA:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_814F648
+ thumb_func_end StrCpyDecodeBattleTextBuff
thumb_func_start sub_814F8F8
sub_814F8F8: @ 814F8F8
diff --git a/asm/contest.s b/asm/contest.s
index e5a728c3c..e0ea14adb 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -1415,19 +1415,19 @@ sub_80D833C: @ 80D833C
lsls r0, 24
cmp r0, 0
bne _080D83CC
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
ldr r1, =gUnknown_0827D507
bl StringCopy
b _080D83D4
.pool
_080D83CC:
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
ldr r1, =gUnknown_0827D531
bl StringCopy
_080D83D4:
bl sub_80DB89C
ldr r4, =gStringVar4
- ldr r1, =gUnknown_02022E2C
+ ldr r1, =gDisplayedStringBattle
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -1752,19 +1752,19 @@ _080D868E:
lsls r0, 24
cmp r0, 0
bne _080D86DC
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
ldr r1, =gUnknown_0827D507
bl StringCopy
b _080D86E4
.pool
_080D86DC:
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
ldr r1, =gUnknown_0827D531
bl StringCopy
_080D86E4:
bl sub_80DB89C
ldr r4, =gStringVar4
- ldr r1, =gUnknown_02022E2C
+ ldr r1, =gDisplayedStringBattle
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -6406,7 +6406,7 @@ sub_80DAED4: @ 80DAED4
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
ldr r1, =gUnknown_085ED1AB
bl StringCopy
adds r1, r0, 0
@@ -6458,7 +6458,7 @@ sub_80DAF1C: @ 80DAF1C
add r0, sp, 0x4
adds r1, r4, 0
bl sub_80DAED4
- ldr r4, =gUnknown_02022E2C
+ ldr r4, =gDisplayedStringBattle
movs r0, 0x7
adds r1, r4, 0
movs r2, 0x60
@@ -6514,7 +6514,7 @@ sub_80DAFA0: @ 80DAFA0
ldr r0, =gUnknown_02039F26
adds r4, r0
ldrb r0, [r4]
- ldr r1, =gUnknown_02022E2C
+ ldr r1, =gDisplayedStringBattle
movs r2, 0x7
str r2, [sp]
movs r2, 0x5
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index 851ec8709..39a8f5209 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -278,7 +278,7 @@ sub_80F5A74: @ 80F5A74
lsls r1, r5, 6
ldr r0, =gUnknown_02039E00
adds r7, r1, r0
- ldr r6, =gUnknown_02022E2C
+ ldr r6, =gDisplayedStringBattle
ldr r0, =gUnknown_02039F25
ldrb r0, [r0]
cmp r5, r0
@@ -291,7 +291,7 @@ _080F5A96:
adds r1, r7, 0x2
adds r0, r6, 0
bl StringCopy
- ldr r4, =gUnknown_02022E2C
+ ldr r4, =gDisplayedStringBattle
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 2ccbe8167..01b495c09 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -1897,8 +1897,8 @@ _0813EC2A:
bl PlayFanfare
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0xC]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -1994,8 +1994,8 @@ _0813ED16:
bl sub_804F574
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x10]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -2023,8 +2023,8 @@ _0813ED56:
_0813ED62:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x14]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -2048,8 +2048,8 @@ _0813ED90:
bne _0813EDCE
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x18]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -2289,8 +2289,8 @@ _0813EFC8:
ldr r3, =0x000004cc
adds r0, r3
ldr r0, [r0]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gTasks
@@ -2338,8 +2338,8 @@ _0813F05C:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -2367,8 +2367,8 @@ _0813F09E:
_0813F0AA:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x1C]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r0, =gTasks
@@ -2395,8 +2395,8 @@ _0813F0D8:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gTasks
@@ -2411,8 +2411,8 @@ _0813F0D8:
_0813F120:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x20]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gTasks
@@ -2431,8 +2431,8 @@ _0813F120:
_0813F154:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x24]
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gTasks
@@ -3064,8 +3064,8 @@ _0813F762:
bl PlayFanfare
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0xC]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3163,8 +3163,8 @@ _0813F852:
bl sub_804F574
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x10]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3193,8 +3193,8 @@ _0813F892:
_0813F89E:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x14]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3219,8 +3219,8 @@ _0813F8CC:
bne _0813F90C
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x18]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3299,8 +3299,8 @@ _0813F98C:
lsls r1, 3
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3336,8 +3336,8 @@ _0813F9E4:
lsls r1, 3
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3441,8 +3441,8 @@ _0813FAEC:
ldr r1, =0x000004cc
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3481,8 +3481,8 @@ _0813FB3C:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3511,8 +3511,8 @@ _0813FBB2:
_0813FBBE:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x1C]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3540,8 +3540,8 @@ _0813FBEC:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3557,8 +3557,8 @@ _0813FBEC:
_0813FC38:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x20]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
@@ -3578,8 +3578,8 @@ _0813FC38:
_0813FC70:
ldr r0, =gUnknown_085CC270
ldr r0, [r0, 0x24]
- bl get_battle_strings_
- ldr r1, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
bl sub_807F1A8
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 38d0bfab0..5a2fcfdeb 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -260,7 +260,7 @@ sub_806CF24: @ 806CF24
ldr r1, =gUnknown_085CB38A
bl StringCopy
ldr r0, =gUnknown_085CB3AA
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
pop {r0}
bx r0
.pool
@@ -342,7 +342,7 @@ _0806D020:
mov r1, r8
strb r0, [r1]
ldr r0, =gUnknown_085CA459
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
_0806D02E:
adds r6, 0x2
adds r5, 0x1
@@ -358,9 +358,9 @@ _0806D02E:
ldrb r0, [r0]
strb r0, [r1]
ldr r0, =gUnknown_085CA424
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
_0806D04E:
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
pop {r3}
mov r8, r3
pop {r4-r7}
@@ -3698,7 +3698,7 @@ _0806E9F6:
strb r0, [r4, 0x4]
ldr r0, =gUnknown_085CB2A1
ldr r1, =gStringVar4
- bl get_battle_strings
+ bl StrCpyDecodeBattle
pop {r4,r5}
pop {r0}
bx r0
diff --git a/asm/rom_8034C54.s b/asm/rom_8034C54.s
index d79ada7c7..2690b0f98 100644
--- a/asm/rom_8034C54.s
+++ b/asm/rom_8034C54.s
@@ -3062,16481 +3062,4 @@ _08036758:
bx r1
thumb_func_end sub_80363C4
- 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 sub_80367D4
- 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 sub_80367D4
-_080367D0:
- pop {r0}
- bx r0
- thumb_func_end sub_8036760
-
- thumb_func_start sub_80367D4
-sub_80367D4: @ 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 LoadTrainerParty
- 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 LoadTrainerParty
-_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 sub_80367D4
-
- 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, =sub_80367D4
- 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, =sub_80367D4
- 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, =sub_80367D4
- 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 LoadTrainerParty
-LoadTrainerParty: @ 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 LoadTrainerParty
-
- 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 get_battle_strings_
- ldr r0, =gUnknown_02022E2C
- 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, =gUnknown_03005D70
- 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, =gUnknown_03005D70
- 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.
diff --git a/asm/rom_8072304.s b/asm/rom_8072304.s
index 39a6cbade..0c0ddc102 100644
--- a/asm/rom_8072304.s
+++ b/asm/rom_8072304.s
@@ -3759,7 +3759,7 @@ sub_80741E8: @ 80741E8
adds r4, r1, 0
lsls r0, 24
lsrs r7, r0, 24
- ldr r5, =gUnknown_02022E2C
+ ldr r5, =gDisplayedStringBattle
ldr r1, =gUnknown_085ED228
adds r0, r5, 0
bl StringCopy
@@ -3814,7 +3814,7 @@ _08074270:
_08074272:
adds r0, r5, 0
bl StringCopy
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
add r1, sp, 0x10
str r1, [sp]
movs r1, 0
diff --git a/asm/rom_818E9AC.s b/asm/rom_818E9AC.s
index 18e0dcc18..28dc75584 100644
--- a/asm/rom_818E9AC.s
+++ b/asm/rom_818E9AC.s
@@ -10664,7 +10664,7 @@ _0819456C:
ldrh r1, [r0]
lsls r1, 22
lsrs r1, 22
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
bl sub_8195898
mov r2, r10
cmp r2, 0x1
@@ -10879,7 +10879,7 @@ _08194740:
bne _08194768
ldrb r0, [r4, 0x5]
ldrb r3, [r4, 0xA]
- ldr r1, =gUnknown_02022E2C
+ ldr r1, =gDisplayedStringBattle
movs r2, 0x3D
bl GetStringWidthDifference
b _0819476A
@@ -10888,7 +10888,7 @@ _08194768:
movs r0, 0x3
_0819476A:
strb r0, [r4, 0x8]
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
str r0, [sp, 0x4]
ldr r0, =gUnknown_0860D3F1
ldr r1, [sp, 0x20]
@@ -11190,7 +11190,7 @@ _081949CE:
movs r0, 0xD0
strb r0, [r1, 0xD]
movs r7, 0
- ldr r0, =gUnknown_02022E2C
+ ldr r0, =gDisplayedStringBattle
mov r9, r0
ldr r1, =gSaveBlock2Ptr
mov r8, r1
@@ -43251,8 +43251,8 @@ _081A5328:
negs r0, r0
strb r0, [r1, 0x1]
ldr r0, =gUnknown_085CCDB2
- bl get_battle_strings_
- ldr r4, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r4, =gDisplayedStringBattle
adds r0, r4, 0
movs r1, 0xF
bl battle_show_message_maybe
@@ -43260,7 +43260,7 @@ _081A5328:
movs r1, 0x10
bl battle_show_message_maybe
ldr r0, =gUnknown_085CCDB8
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
adds r0, r4, 0
movs r1, 0x11
bl battle_show_message_maybe
@@ -43274,7 +43274,7 @@ _081A5328:
movs r1, 0x14
bl battle_show_message_maybe
ldr r0, =gUnknown_085CCDCB
- bl get_battle_strings_
+ bl StrCpyDecodeToDisplayedStringBattle
adds r0, r4, 0
movs r1, 0x15
bl battle_show_message_maybe
@@ -43358,8 +43358,8 @@ _081A5464:
movs r3, 0x1
bl sub_81A5558
ldr r0, =gUnknown_085CCDCB
- bl get_battle_strings_
- ldr r0, =gUnknown_02022E2C
+ bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gDisplayedStringBattle
movs r1, 0x15
bl battle_show_message_maybe
ldrb r0, [r5]
diff --git a/ld_script.txt b/ld_script.txt
index d94b7440c..19a79c9ed 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -57,6 +57,7 @@ SECTIONS {
asm/rom3.o(.text);
src/decompress.o(.text);
asm/rom_8034C54.o(.text);
+ asm/battle_2.o(.text);
asm/battle_3.o(.text);
src/battle_4.o(.text);
asm/battle_4.o(.text);
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b5aaaea48..754b050ef 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -241,7 +241,7 @@ gUnknown_02022E28: @ 2022E28
gUnknown_02022E2A: @ 2022E2A
.space 0x2
-gUnknown_02022E2C: @ 2022E2C
+gDisplayedStringBattle: @ 2022E2C
.space 0x12C
gBattleTextBuff1: @ 2022F58