pokeemerald/asm/battle_2.s
2017-09-17 14:10:32 +02:00

16487 lines
249 KiB
ArmAsm

.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, =gPartnerTrainerId
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 IsEnigmaBerryValid
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 IsEnigmaBerryValid
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 GetFrontierTrainerName
adds r0, r6, 0
adds r0, 0x5C
ldr r5, =gTrainerBattleOpponent_B
ldrh r1, [r5]
bl GetFrontierTrainerName
ldrh r1, [r4]
mov r0, sp
bl sub_8165B88
mov r0, sp
ldrb r0, [r0]
adds r1, r6, 0
adds r1, 0x52
strh r0, [r1]
ldrh r1, [r5]
mov r0, sp
bl sub_8165B88
mov r0, sp
ldrb r1, [r0]
adds r0, r6, 0
adds r0, 0x6E
strh r1, [r0]
bl sub_800A520
lsls r0, 24
cmp r0, 0
beq _080375C4
ldr r4, =gBattleStruct
ldr r0, [r4]
movs r5, 0xC0
lsls r5, 1
adds r0, r5
movs r1, 0
strb r1, [r0]
ldr r0, [r4]
ldr r2, =0x00000181
adds r1, r0, r2
movs r0, 0x3
strb r0, [r1]
bl sub_8036A5C
bl sub_8036B44
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
adds r1, r5
movs r2, 0x20
bl link_0800A448
ldr r1, =gBattleCommunication
movs r0, 0x2
strb r0, [r1]
_080375C4:
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _080375CE
b _080379D6
_080375CE:
movs r0, 0
movs r1, 0
bl sub_800DFB4
b _080379D6
.pool
_080375FC:
movs r0, 0x80
lsls r0, 17
ands r0, r1
cmp r0, 0
bne _0803760C
movs r0, 0x4
orrs r1, r0
str r1, [r2]
_0803760C:
ldr r1, =gBattleCommunication
movs r0, 0xD
strb r0, [r1]
bl berry_801017C
b _080379D6
.pool
_0803761C:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _0803762A
b _080379D6
_0803762A:
bl sub_800A5B4
movs r0, 0x2
adds r1, r6, 0
bl sub_8036EB8
bl berry_801017C
ldr r0, =task00_0800F6FC
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r2, 0
movs r0, 0x87
lsls r0, 1
strh r0, [r1, 0xA]
movs r0, 0x5A
strh r0, [r1, 0xC]
strh r2, [r1, 0x12]
adds r0, 0xEB
strh r0, [r1, 0xE]
strh r0, [r1, 0x10]
b _08037986
.pool
_08037670:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _0803767C
b _080379D6
_0803767C:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gPlayerParty
_08037686:
movs r2, 0xC8
bl link_0800A448
b _08037986
.pool
_08037694:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _080376A2
b _080379D6
_080376A2:
bl sub_800A5B4
ldr r0, =gLinkPlayers
lsls r1, r6, 3
subs r1, r6
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x18]
cmp r0, 0
beq _080376E8
ldr r4, =gPlayerParty
lsls r1, r7, 8
ldr r5, =gUnknown_020223C4
adds r1, r5
adds r0, r4, 0
movs r2, 0xC8
bl memcpy
movs r0, 0x96
lsls r0, 1
adds r4, r0
lsls r1, r6, 8
adds r1, r5
adds r0, r4, 0
movs r2, 0xC8
bl memcpy
b _08037986
.pool
_080376E8:
ldr r4, =gPlayerParty
lsls r1, r6, 8
ldr r5, =gUnknown_020223C4
adds r1, r5
adds r0, r4, 0
movs r2, 0xC8
bl memcpy
movs r1, 0x96
lsls r1, 1
adds r4, r1
lsls r1, r7, 8
adds r1, r5
adds r0, r4, 0
movs r2, 0xC8
b _08037982
.pool
_08037710:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _0803771C
b _080379D6
_0803771C:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gPlayerParty + 200
movs r2, 0x64
bl link_0800A448
b _08037986
.pool
_08037734:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _08037742
b _080379D6
_08037742:
bl sub_800A5B4
ldr r0, =gLinkPlayers
lsls r1, r6, 3
subs r1, r6
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x18]
cmp r0, 0
beq _08037788
ldr r4, =gPlayerParty + 200
lsls r1, r7, 8
ldr r5, =gUnknown_020223C4
adds r1, r5
adds r0, r4, 0
movs r2, 0x64
bl memcpy
movs r2, 0x96
lsls r2, 1
adds r4, r2
lsls r1, r6, 8
adds r1, r5
adds r0, r4, 0
movs r2, 0x64
bl memcpy
b _08037986
.pool
_08037788:
ldr r4, =gPlayerParty + 200
lsls r1, r6, 8
ldr r5, =gUnknown_020223C4
adds r1, r5
adds r0, r4, 0
movs r2, 0x64
bl memcpy
movs r0, 0x96
lsls r0, 1
adds r4, r0
lsls r1, r7, 8
adds r1, r5
adds r0, r4, 0
movs r2, 0x64
b _08037982
.pool
_080377B0:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _080377BC
b _080379D6
_080377BC:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gEnemyParty
b _08037686
.pool
_080377CC:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _080377DA
b _080379D6
_080377DA:
bl sub_800A5B4
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
bne _080377EA
b _08037986
_080377EA:
ldr r0, =gEnemyParty
ldr r1, =gUnknown_020223C4
movs r2, 0xC8
b _08037982
.pool
_080377FC:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _08037808
b _080379D6
_08037808:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gEnemyParty + 200
b _08037686
.pool
_08037818:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _08037826
b _080379D6
_08037826:
bl sub_800A5B4
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
bne _08037836
b _08037986
_08037836:
ldr r0, =gEnemyParty + 200
ldr r1, =gUnknown_020223C4
movs r2, 0xC8
b _08037982
.pool
_08037848:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _08037854
b _080379D6
_08037854:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gEnemyParty + 400
b _08037686
.pool
_08037864:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _08037872
b _080379D6
_08037872:
bl sub_800A5B4
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
beq _0803788A
ldr r0, =gEnemyParty + 400
ldr r1, =gUnknown_020223C4
movs r2, 0xC8
bl memcpy
_0803788A:
ldr r4, =gPlayerParty
adds r0, r4, 0
bl shedinja_something
adds r0, r4, 0
adds r0, 0x64
bl shedinja_something
adds r0, r4, 0
adds r0, 0xC8
bl shedinja_something
movs r1, 0x96
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
movs r2, 0xC8
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
movs r1, 0xFA
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
ldr r4, =gEnemyParty
adds r0, r4, 0
bl shedinja_something
adds r0, r4, 0
adds r0, 0x64
bl shedinja_something
adds r0, r4, 0
adds r0, 0xC8
bl shedinja_something
movs r2, 0x96
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
movs r1, 0xC8
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
movs r2, 0xFA
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
b _08037986
.pool
_08037908:
bl sub_8032768
bl sub_8184E58
ldr r2, =gBattleCommunication
movs r0, 0
strb r0, [r2, 0x1]
strb r0, [r2, 0x2]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _08037934
movs r0, 0xE
strb r0, [r2]
b _080379D6
.pool
_08037934:
movs r0, 0x10
strb r0, [r2]
b _080379D6
_0803793A:
bl sub_800A520
lsls r0, 24
cmp r0, 0
beq _080379D6
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gUnknown_0203BD2C
movs r2, 0x4
bl link_0800A448
b _08037986
.pool
_0803795C:
bl sub_800A550
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
bne _080379D6
bl sub_800A5B4
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x4
ands r0, r1
cmp r0, 0
bne _08037986
ldr r0, =gUnknown_0203BD2C
lsls r1, r7, 8
ldr r2, =gUnknown_020223C4
adds r1, r2
movs r2, 0x4
_08037982:
bl memcpy
_08037986:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _080379D6
.pool
_080379A0:
ldr r0, =gUnknown_02024333
adds r1, r0, 0x1
bl battle_load_something
lsls r0, 24
cmp r0, 0
beq _080379D6
bl sub_8166188
ldr r2, =gUnknown_03005D00
ldr r1, =gMain
ldr r0, [r1]
str r0, [r2]
ldr r0, =sub_8039EF0
str r0, [r1]
ldr r0, =sub_8038420
bl SetMainCallback2
ldr r2, =gBattleTypeFlags
ldr r1, [r2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080379D6
movs r0, 0x20
orrs r1, r0
str r1, [r2]
_080379D6:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8037458
thumb_func_start sub_80379F8
sub_80379F8: @ 80379F8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
str r0, [sp]
movs r0, 0
mov r8, r0
ldr r6, =gUnknown_02022FF8
mov r10, r6
_08037A12:
ldr r1, [sp]
add r1, r8
movs r0, 0x64
adds r4, r1, 0
muls r4, r0
ldr r0, =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
mov r1, r8
lsls r5, r1, 5
strh r0, [r6]
adds r0, r4, 0
movs r1, 0xC
bl GetMonData
strh r0, [r6, 0x2]
movs r0, 0x4
add r0, r10
mov r9, r0
adds r7, r5, r0
adds r0, r4, 0
movs r1, 0x2
adds r2, r7, 0
bl GetMonData
adds r0, r4, 0
movs r1, 0x38
bl GetMonData
strb r0, [r6, 0xF]
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
strh r0, [r6, 0x10]
adds r0, r4, 0
movs r1, 0x3A
bl GetMonData
strh r0, [r6, 0x12]
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
mov r1, r10
adds r1, 0x14
adds r5, r1
str r0, [r5]
adds r0, r4, 0
movs r1, 0
bl GetMonData
str r0, [r6, 0x18]
adds r0, r4, 0
bl GetMonGender
strb r0, [r6, 0x1C]
adds r0, r7, 0
bl StripExtCtrlCodes
adds r0, r4, 0
movs r1, 0x3
bl GetMonData
cmp r0, 0x1
beq _08037AA4
adds r0, r7, 0
movs r1, 0
bl sub_81DB4DC
_08037AA4:
adds r6, 0x20
movs r1, 0x1
add r8, r1
mov r0, r8
cmp r0, 0x2
ble _08037A12
ldr r0, =gUnknown_02023058
ldr r0, [r0]
mov r1, r9
subs r1, 0x4
movs r2, 0x60
bl memcpy
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80379F8
thumb_func_start sub_8037ADC
sub_8037ADC: @ 8037ADC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r0, 0x4
mov r9, r0
movs r4, 0xF
ldr r6, =gBattleTypeFlags
ldr r0, [r6]
movs r1, 0x80
lsls r1, 1
ands r0, r1
cmp r0, 0
beq _08037B02
movs r1, 0x2
mov r9, r1
movs r4, 0x3
_08037B02:
bl GetMultiplayerId
lsls r0, 24
lsrs r7, r0, 24
ldr r0, =gBattleScripting
adds r0, 0x25
movs r2, 0
mov r8, r2
strb r7, [r0]
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r1, r0, 0
adds r1, 0xB4
str r1, [sp]
adds r0, 0xAC
mov r10, r0
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
ldr r5, =gBattleCommunication
ldrb r0, [r5]
cmp r0, 0x1
beq _08037BA4
cmp r0, 0x1
bgt _08037B50
cmp r0, 0
beq _08037B5E
b _08037D0A
.pool
_08037B50:
cmp r0, 0x2
bne _08037B56
b _08037C64
_08037B56:
cmp r0, 0x3
bne _08037B5C
b _08037C9E
_08037B5C:
b _08037D0A
_08037B5E:
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0
bne _08037B68
b _08037D0A
_08037B68:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _08037B74
b _08037D0A
_08037B74:
ldr r4, =gUnknown_02023058
movs r0, 0x60
bl Alloc
str r0, [r4]
movs r0, 0
bl sub_80379F8
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
movs r2, 0x60
bl link_0800A448
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
b _08037D0A
.pool
_08037BA4:
bl sub_800A550
adds r1, r4, 0
ands r1, r0
cmp r1, r4
beq _08037BB2
b _08037D0A
_08037BB2:
bl sub_800A5B4
movs r5, 0
cmp r8, r9
bge _08037C2E
lsls r0, r7, 3
subs r0, r7
lsls r6, r0, 2
mov r8, r5
ldr r4, =gUnknown_020223C4
_08037BC6:
cmp r5, r7
beq _08037C1E
mov r2, r9
cmp r2, 0x4
bne _08037C14
ldr r2, =gLinkPlayers
mov r1, r8
adds r0, r1, r2
ldrh r1, [r0, 0x18]
movs r3, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _08037BF8
adds r0, r6, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08037C04
b _08037C1E
.pool
_08037BF8:
adds r0, r6, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08037C1E
_08037C04:
ldr r0, =gUnknown_02022FF8
adds r1, r4, 0
movs r2, 0x60
bl memcpy
b _08037C1E
.pool
_08037C14:
ldr r0, =gUnknown_02022FF8
adds r1, r4, 0
movs r2, 0x60
bl memcpy
_08037C1E:
movs r2, 0x80
lsls r2, 1
adds r4, r2
movs r0, 0x1C
add r8, r0
adds r5, 0x1
cmp r5, r9
blt _08037BC6
_08037C2E:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
ldr r1, =gMain
ldr r0, [r1, 0x8]
ldr r2, [sp]
str r0, [r2]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
mov r2, r10
str r0, [r2]
ldr r0, =sub_8037ADC
str r0, [r1, 0x8]
bl sub_81B9150
b _08037D0A
.pool
_08037C64:
bl sub_800A520
lsls r0, 24
cmp r0, 0
beq _08037D0A
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08037D0A
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
beq _08037C98
bl sub_800ADF8
b _08037D0A
.pool
_08037C98:
bl sub_800AC34
b _08037D0A
_08037C9E:
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
beq _08037CE4
bl sub_8010500
lsls r0, 24
cmp r0, 0
beq _08037D0A
mov r1, r10
ldr r0, [r1]
str r0, [r6]
ldr r1, =gMain
ldr r2, [sp]
ldr r0, [r2]
str r0, [r1, 0x8]
ldr r0, =InitBattle
bl SetMainCallback2
ldr r4, =gUnknown_02023058
ldr r0, [r4]
bl Free
mov r0, r8
str r0, [r4]
b _08037D0A
.pool
_08037CE4:
ldr r0, =gUnknown_03003124
ldrb r5, [r0]
cmp r5, 0
bne _08037D0A
mov r1, r10
ldr r0, [r1]
str r0, [r6]
ldr r1, =gMain
ldr r2, [sp]
ldr r0, [r2]
str r0, [r1, 0x8]
ldr r0, =InitBattle
bl SetMainCallback2
ldr r4, =gUnknown_02023058
ldr r0, [r4]
bl Free
str r5, [r4]
_08037D0A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8037ADC
thumb_func_start intro_end
intro_end: @ 8037D2C
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, =gBattleStruct
ldr r0, [r0]
movs r1, 0xB4
adds r1, r0
mov r8, r1
adds r7, r0, 0
adds r7, 0xAC
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
ldr r5, =gBattleCommunication
ldrb r0, [r5]
cmp r0, 0
beq _08037D64
cmp r0, 0x1
beq _08037DA4
b _08037DD6
.pool
_08037D64:
ldr r4, =gUnknown_02023058
movs r0, 0x60
bl Alloc
str r0, [r4]
movs r0, 0x3
bl sub_80379F8
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
ldr r1, =gMain
ldr r0, [r1, 0x8]
mov r2, r8
str r0, [r2]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
str r0, [r7]
ldr r0, =intro_end
str r0, [r1, 0x8]
bl sub_81B9150
b _08037DD6
.pool
_08037DA4:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0
bne _08037DD6
movs r0, 0x2
strb r0, [r5]
ldr r1, =gBattleTypeFlags
ldr r0, [r7]
str r0, [r1]
ldr r1, =gMain
mov r2, r8
ldr r0, [r2]
str r0, [r1, 0x8]
ldr r0, =InitBattle
bl SetMainCallback2
ldr r4, =gUnknown_02023058
ldr r0, [r4]
bl Free
str r6, [r4]
_08037DD6:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end intro_end
thumb_func_start sub_8037DF4
sub_8037DF4: @ 8037DF4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
bl GetMultiplayerId
lsls r0, 24
lsrs r7, r0, 24
ldr r0, =gBattleScripting
adds r0, 0x25
strb r7, [r0]
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
ldr r0, =gBattleCommunication
ldrb r0, [r0]
cmp r0, 0xA
bls _08037E20
b _080383F8
_08037E20:
lsls r0, 2
ldr r1, =_08037E38
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08037E38:
.4byte _08037E64
.4byte _08037EA8
.4byte _08037F50
.4byte _08038026
.4byte _0803804C
.4byte _08038140
.4byte _08038164
.4byte _080382CC
.4byte _0803832C
.4byte _0803836C
.4byte _080383BC
_08037E64:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _08037E90
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
movs r0, 0x3
bl ShowBg
bl sub_805EF14
ldr r1, =gBattleCommunication
movs r0, 0x1
strb r0, [r1]
_08037E90:
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _08037E9A
b _080383F8
_08037E9A:
bl sub_800E0E8
b _080383F8
.pool
_08037EA8:
ldr r2, =gBattleTypeFlags
ldr r1, [r2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08037F30
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0
bne _08037EBE
b _080383F8
_08037EBE:
bl sub_800A520
lsls r0, 24
cmp r0, 0
beq _08037F02
ldr r4, =gBattleStruct
ldr r0, [r4]
movs r5, 0xC0
lsls r5, 1
adds r0, r5
movs r1, 0
strb r1, [r0]
ldr r0, [r4]
ldr r2, =0x00000181
adds r1, r0, r2
movs r0, 0x3
strb r0, [r1]
bl sub_8036A5C
bl sub_8036B44
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
adds r1, r5
movs r2, 0x20
bl link_0800A448
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
_08037F02:
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _08037F0C
b _080383F8
_08037F0C:
movs r0, 0
movs r1, 0
bl sub_800DFB4
b _080383F8
.pool
_08037F30:
movs r0, 0x80
lsls r0, 17
ands r0, r1
cmp r0, 0
bne _08037F40
movs r0, 0x4
orrs r1, r0
str r1, [r2]
_08037F40:
ldr r1, =gBattleCommunication
movs r0, 0x7
strb r0, [r1]
bl berry_801017C
b _080383F8
.pool
_08037F50:
bl sub_800A550
movs r1, 0xF
ands r1, r0
cmp r1, 0xF
beq _08037F5E
b _080383F8
_08037F5E:
bl sub_800A5B4
movs r0, 0x4
adds r1, r7, 0
bl sub_8036EB8
bl berry_801017C
bl sub_8068AA4
ldr r0, =task00_0800F6FC
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r2, r0, 24
ldr r1, =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r1
movs r2, 0
movs r1, 0x87
lsls r1, 1
strh r1, [r0, 0xA]
movs r1, 0x5A
strh r1, [r0, 0xC]
strh r2, [r0, 0x12]
strh r2, [r0, 0xE]
strh r2, [r0, 0x10]
ldr r1, =gUnknown_020223C4
adds r4, r0, 0
adds r5, r1, 0x2
movs r7, 0x3F
movs r6, 0x3
_08037FA4:
ldrh r0, [r5]
str r2, [sp]
bl sub_8185F90
ldr r0, =gLinkPlayers
ldr r2, [sp]
adds r0, r2, r0
ldrh r0, [r0, 0x18]
cmp r0, 0x1
beq _08037FE6
cmp r0, 0x1
bgt _08037FD4
cmp r0, 0
beq _08037FDE
b _0803800C
.pool
_08037FD4:
cmp r0, 0x2
beq _08037FEE
cmp r0, 0x3
beq _08037FFE
b _0803800C
_08037FDE:
ldrh r0, [r5]
adds r1, r7, 0
ands r1, r0
b _08037FF6
_08037FE6:
ldrh r0, [r5]
adds r1, r7, 0
ands r1, r0
b _08038006
_08037FEE:
ldrh r0, [r5]
adds r1, r7, 0
ands r1, r0
lsls r1, 6
_08037FF6:
ldrh r0, [r4, 0xE]
orrs r1, r0
strh r1, [r4, 0xE]
b _0803800C
_08037FFE:
ldrh r0, [r5]
adds r1, r7, 0
ands r1, r0
lsls r1, 6
_08038006:
ldrh r0, [r4, 0x10]
orrs r1, r0
strh r1, [r4, 0x10]
_0803800C:
movs r0, 0x80
lsls r0, 1
adds r5, r0
adds r2, 0x1C
subs r6, 0x1
cmp r6, 0
bge _08037FA4
bl ZeroEnemyPartyMons
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
_08038026:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _08038032
b _080383F8
_08038032:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gPlayerParty
movs r2, 0xC8
bl link_0800A448
b _080383A6
.pool
_0803804C:
bl sub_800A550
movs r1, 0xF
ands r1, r0
cmp r1, 0xF
beq _0803805A
b _080383F8
_0803805A:
bl sub_800A5B4
movs r6, 0
lsls r0, r7, 3
subs r0, r7
lsls r0, 2
mov r8, r0
ldr r4, =gUnknown_020223C4
movs r5, 0
_0803806C:
cmp r6, r7
bne _080380A0
ldr r0, =gLinkPlayers
adds r0, r5, r0
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _0803808C
cmp r0, 0x1
bge _08038098
cmp r0, 0
beq _08038090
b _0803812A
.pool
_0803808C:
cmp r0, 0x3
bne _0803812A
_08038090:
ldr r0, =gPlayerParty
b _08038110
.pool
_08038098:
ldr r0, =gPlayerParty + 300
b _08038110
.pool
_080380A0:
ldr r2, =gLinkPlayers
adds r0, r5, r2
ldrh r1, [r0, 0x18]
movs r3, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _080380C4
mov r1, r8
adds r0, r1, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080380D2
b _080380F8
.pool
_080380C4:
mov r1, r8
adds r0, r1, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080380F8
_080380D2:
adds r0, r5, r2
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _080380E4
cmp r0, 0x1
bge _080380F0
cmp r0, 0
beq _080380E8
b _0803812A
_080380E4:
cmp r0, 0x3
bne _0803812A
_080380E8:
ldr r0, =gPlayerParty
b _08038110
.pool
_080380F0:
ldr r0, =gPlayerParty + 300
b _08038110
.pool
_080380F8:
adds r0, r5, r2
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _0803810A
cmp r0, 0x1
bge _08038120
cmp r0, 0
beq _0803810E
b _0803812A
_0803810A:
cmp r0, 0x3
bne _0803812A
_0803810E:
ldr r0, =gEnemyParty
_08038110:
adds r1, r4, 0
movs r2, 0xC8
bl memcpy
b _0803812A
.pool
_08038120:
ldr r0, =gEnemyParty + 300
adds r1, r4, 0
movs r2, 0xC8
bl memcpy
_0803812A:
movs r2, 0x80
lsls r2, 1
adds r4, r2
adds r5, 0x1C
adds r6, 0x1
cmp r6, 0x3
ble _0803806C
b _080383A6
.pool
_08038140:
bl sub_800A520
lsls r0, 24
cmp r0, 0
bne _0803814C
b _080383F8
_0803814C:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
ldr r1, =gPlayerParty + 200
movs r2, 0x64
bl link_0800A448
b _080383A6
.pool
_08038164:
bl sub_800A550
movs r1, 0xF
ands r1, r0
cmp r1, 0xF
beq _08038172
b _080383F8
_08038172:
bl sub_800A5B4
movs r6, 0
lsls r0, r7, 3
subs r0, r7
lsls r0, 2
mov r8, r0
ldr r4, =gUnknown_020223C4
movs r5, 0
_08038184:
cmp r6, r7
bne _080381B8
ldr r0, =gLinkPlayers
adds r0, r5, r0
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _080381A4
cmp r0, 0x1
bge _080381B0
cmp r0, 0
beq _080381A8
b _08038242
.pool
_080381A4:
cmp r0, 0x3
bne _08038242
_080381A8:
ldr r0, =gPlayerParty + 200
b _08038228
.pool
_080381B0:
ldr r0, =gPlayerParty + 500
b _08038228
.pool
_080381B8:
ldr r2, =gLinkPlayers
adds r0, r5, r2
ldrh r1, [r0, 0x18]
movs r3, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _080381DC
mov r1, r8
adds r0, r1, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080381EA
b _08038210
.pool
_080381DC:
mov r1, r8
adds r0, r1, r2
ldrh r1, [r0, 0x18]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08038210
_080381EA:
adds r0, r5, r2
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _080381FC
cmp r0, 0x1
bge _08038208
cmp r0, 0
beq _08038200
b _08038242
_080381FC:
cmp r0, 0x3
bne _08038242
_08038200:
ldr r0, =gPlayerParty + 200
b _08038228
.pool
_08038208:
ldr r0, =gPlayerParty + 500
b _08038228
.pool
_08038210:
adds r0, r5, r2
ldrh r0, [r0, 0x18]
cmp r0, 0x2
bgt _08038222
cmp r0, 0x1
bge _08038238
cmp r0, 0
beq _08038226
b _08038242
_08038222:
cmp r0, 0x3
bne _08038242
_08038226:
ldr r0, =gEnemyParty + 200
_08038228:
adds r1, r4, 0
movs r2, 0x64
bl memcpy
b _08038242
.pool
_08038238:
ldr r0, =gEnemyParty + 500
adds r1, r4, 0
movs r2, 0x64
bl memcpy
_08038242:
movs r2, 0x80
lsls r2, 1
adds r4, r2
adds r5, 0x1C
adds r6, 0x1
cmp r6, 0x3
ble _08038184
ldr r4, =gPlayerParty
adds r0, r4, 0
bl shedinja_something
adds r0, r4, 0
adds r0, 0x64
bl shedinja_something
adds r0, r4, 0
adds r0, 0xC8
bl shedinja_something
movs r1, 0x96
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
movs r2, 0xC8
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
movs r1, 0xFA
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
ldr r4, =gEnemyParty
adds r0, r4, 0
bl shedinja_something
adds r0, r4, 0
adds r0, 0x64
bl shedinja_something
adds r0, r4, 0
adds r0, 0xC8
bl shedinja_something
movs r2, 0x96
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
movs r1, 0xC8
lsls r1, 1
adds r0, r4, r1
bl shedinja_something
movs r2, 0xFA
lsls r2, 1
adds r0, r4, r2
bl shedinja_something
b _080383A6
.pool
_080382CC:
bl sub_8032768
bl sub_8184E58
ldr r3, =gBattleCommunication
movs r0, 0
strb r0, [r3, 0x1]
strb r0, [r3, 0x2]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _08038326
movs r6, 0
ldr r0, =gLinkPlayers
ldrb r1, [r0]
adds r4, r3, 0
adds r2, r0, 0
cmp r1, 0x3
bne _0803830A
movs r3, 0xFF
_080382F8:
adds r2, 0x1C
adds r6, 0x1
cmp r6, 0x3
bgt _0803830A
ldrh r1, [r2]
adds r0, r3, 0
ands r0, r1
cmp r0, 0x3
beq _080382F8
_0803830A:
cmp r6, 0x4
bne _08038320
movs r0, 0x8
strb r0, [r4]
b _080383F8
.pool
_08038320:
movs r0, 0xA
strb r0, [r4]
b _080383F8
_08038326:
movs r0, 0xA
strb r0, [r3]
b _080383F8
_0803832C:
bl sub_800A520
lsls r0, 24
cmp r0, 0
beq _080383F8
ldr r0, =gBattleStruct
ldr r4, [r0]
movs r0, 0xC0
lsls r0, 1
adds r4, r0
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
str r0, [r4]
ldr r0, =gUnknown_0203BD2C
ldr r0, [r0]
str r0, [r4, 0x4]
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
movs r2, 0x8
bl link_0800A448
b _080383A6
.pool
_0803836C:
bl sub_800A550
movs r1, 0xF
ands r1, r0
cmp r1, 0xF
bne _080383F8
bl sub_800A5B4
movs r2, 0
b _08038386
_08038380:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
_08038386:
cmp r2, 0x3
bhi _080383A6
ldr r4, =gUnknown_020223C4
lsls r3, r2, 8
adds r0, r3, r4
ldrh r0, [r0]
movs r1, 0x4
ands r0, r1
cmp r0, 0
beq _08038380
adds r1, r4, 0x4
adds r1, r3, r1
ldr r0, =gUnknown_0203BD2C
movs r2, 0x4
bl memcpy
_080383A6:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _080383F8
.pool
_080383BC:
ldr r0, =gUnknown_02024333
adds r1, r0, 0x1
bl battle_load_something
lsls r0, 24
cmp r0, 0
beq _080383F8
ldr r2, =gUnknown_03005D00
ldr r1, =gMain
ldr r0, [r1]
str r0, [r2]
ldr r0, =sub_8039EF0
str r0, [r1]
ldr r0, =sub_8038420
bl SetMainCallback2
ldr r3, =gBattleTypeFlags
ldr r2, [r3]
movs r0, 0x2
ands r0, r2
cmp r0, 0
beq _080383F8
ldr r0, =gTrainerBattleOpponent_A
movs r4, 0x80
lsls r4, 4
adds r1, r4, 0
strh r1, [r0]
movs r0, 0x20
orrs r2, r0
str r2, [r3]
_080383F8:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8037DF4
thumb_func_start sub_8038420
sub_8038420: @ 8038420
push {lr}
sub sp, 0x4
bl AnimateSprites
bl BuildOamBuffer
bl RunTextPrinters
bl UpdatePaletteFade
bl RunTasks
ldr r0, =gMain
ldrh r1, [r0, 0x2C]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08038482
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
beq _08038482
bl rfu_lacks_rfufunc
lsls r0, 24
cmp r0, 0
beq _08038482
ldr r2, =gScriptResult
ldr r1, =gBattleOutcome
movs r0, 0x5
strb r0, [r1]
movs r0, 0x5
strh r0, [r2]
bl ResetPaletteFadeControl
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, =sub_80384E4
bl SetMainCallback2
_08038482:
add sp, 0x4
pop {r0}
bx r0
.pool
thumb_func_end sub_8038420
thumb_func_start sub_803849C
sub_803849C: @ 803849C
push {lr}
ldr r1, =gMain
ldr r0, =gUnknown_03005D00
ldr r0, [r0]
str r0, [r1]
ldr r2, =gUnknown_02039B28
movs r0, 0x3
strb r0, [r2, 0x15]
ldr r0, =0x00000439
adds r1, r0
ldrb r2, [r1]
movs r0, 0x3
negs r0, r0
ands r0, r2
strb r0, [r1]
bl ZeroEnemyPartyMons
movs r0, 0x5A
bl m4aSongNumStop
bl sub_805F094
bl dp11_free
bl sub_8057028
pop {r0}
bx r0
.pool
thumb_func_end sub_803849C
thumb_func_start sub_80384E4
sub_80384E4: @ 80384E4
push {lr}
bl UpdatePaletteFade
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08038512
ldr r0, =gMPlay_SE1
bl m4aMPlayStop
ldr r0, =gMPlay_SE2
bl m4aMPlayStop
bl sub_803849C
bl FreeAllWindowBuffers
ldr r0, =gMain
ldr r0, [r0, 0x8]
bl SetMainCallback2
_08038512:
pop {r0}
bx r0
.pool
thumb_func_end sub_80384E4
thumb_func_start sub_8038528
sub_8038528: @ 8038528
movs r1, 0
strh r1, [r0, 0x2E]
ldr r1, =sub_8038538
str r1, [r0, 0x1C]
bx lr
.pool
thumb_func_end sub_8038528
thumb_func_start sub_8038538
sub_8038538: @ 8038538
push {r4,r5,lr}
adds r3, r0, 0
ldr r5, =0x0201c000
movs r0, 0x2E
ldrsh r1, [r3, r0]
cmp r1, 0x1
beq _0803856C
cmp r1, 0x1
bgt _08038554
cmp r1, 0
beq _0803855A
b _080385DC
.pool
_08038554:
cmp r1, 0x2
beq _080385C8
b _080385DC
_0803855A:
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
strh r1, [r3, 0x30]
ldr r0, =0x00000281
strh r0, [r3, 0x32]
strh r1, [r3, 0x34]
movs r0, 0x1
strh r0, [r3, 0x36]
_0803856C:
ldrh r0, [r3, 0x36]
subs r0, 0x1
strh r0, [r3, 0x36]
lsls r0, 16
cmp r0, 0
bne _080385DC
movs r0, 0x2
strh r0, [r3, 0x36]
movs r4, 0x30
ldrsh r2, [r3, r4]
movs r0, 0x34
ldrsh r1, [r3, r0]
lsls r1, 5
adds r2, r1
movs r4, 0x32
ldrsh r0, [r3, r4]
subs r0, r1
movs r4, 0x3D
lsls r0, 1
adds r0, r5
lsls r2, 1
adds r2, r5
movs r1, 0x1C
_0803859A:
strh r4, [r2]
strh r4, [r0]
adds r0, 0x4
adds r2, 0x4
subs r1, 0x2
cmp r1, 0
bge _0803859A
ldrh r0, [r3, 0x34]
adds r0, 0x1
strh r0, [r3, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x15
bne _080385DC
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
movs r0, 0x20
strh r0, [r3, 0x30]
b _080385DC
.pool
_080385C8:
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
bne _080385DC
ldr r0, =sub_8036760
bl SetMainCallback2
_080385DC:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038538
thumb_func_start CreateNPCTrainerParty
CreateNPCTrainerParty: @ 80385E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
str r0, [sp, 0x10]
lsls r1, 16
lsrs r1, 16
str r1, [sp, 0x14]
lsls r2, 24
lsrs r2, 24
movs r0, 0
mov r9, r0
movs r0, 0x80
lsls r0, 3
cmp r1, r0
bne _08038610
movs r0, 0
b _080389E2
_08038610:
ldr r4, =gBattleTypeFlags
ldr r0, [r4]
ldr r1, =0x043f0908
ands r0, r1
ldr r1, [sp, 0x14]
lsls r1, 2
str r1, [sp, 0x20]
cmp r0, 0x8
beq _08038624
b _080389D2
_08038624:
cmp r2, 0x1
bne _0803862C
bl ZeroEnemyPartyMons
_0803862C:
ldr r0, [r4]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _08038668
ldr r0, =gTrainers
ldr r2, [sp, 0x20]
ldr r3, [sp, 0x14]
adds r1, r2, r3
lsls r1, 3
adds r1, r0
adds r2, r1, 0
adds r2, 0x20
ldrb r1, [r2]
movs r4, 0x3
str r4, [sp, 0x1C]
adds r4, r0, 0
cmp r1, 0x3
bhi _0803867C
adds r2, r1, 0
str r2, [sp, 0x1C]
b _0803867C
.pool
_08038668:
ldr r1, =gTrainers
ldr r2, [sp, 0x20]
ldr r3, [sp, 0x14]
adds r0, r2, r3
lsls r0, 3
adds r0, r1
adds r0, 0x20
ldrb r0, [r0]
str r0, [sp, 0x1C]
adds r4, r1, 0
_0803867C:
movs r0, 0
str r0, [sp, 0x18]
b _080389B4
.pool
_08038688:
ldr r2, [sp, 0x20]
ldr r3, [sp, 0x14]
adds r0, r2, r3
lsls r0, 3
adds r1, r0, r4
ldrb r0, [r1, 0x18]
cmp r0, 0x1
bne _0803869E
movs r0, 0x80
mov r10, r0
b _080386B0
_0803869E:
ldrb r1, [r1, 0x2]
movs r0, 0x80
ands r0, r1
movs r1, 0x88
mov r10, r1
cmp r0, 0
beq _080386B0
movs r2, 0x78
mov r10, r2
_080386B0:
movs r6, 0
ldr r2, [sp, 0x20]
ldr r3, [sp, 0x14]
adds r0, r2, r3
lsls r0, 3
adds r1, r4, 0x4
adds r0, r1
ldrb r0, [r0]
ldr r3, [sp, 0x18]
adds r3, 0x1
str r3, [sp, 0x24]
cmp r0, 0xFF
beq _080386E6
adds r3, r1, 0
_080386CC:
ldr r0, [sp, 0x14]
adds r1, r2, r0
lsls r1, 3
adds r0, r6, r1
adds r0, r3
ldrb r0, [r0]
add r9, r0
adds r6, 0x1
adds r1, r6, r1
adds r1, r3
ldrb r0, [r1]
cmp r0, 0xFF
bne _080386CC
_080386E6:
ldr r1, [sp, 0x20]
ldr r2, [sp, 0x14]
adds r0, r1, r2
lsls r1, r0, 3
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, 0x1
beq _08038794
cmp r0, 0x1
bgt _08038700
cmp r0, 0
beq _0803870E
b _080389AC
_08038700:
cmp r0, 0x2
bne _08038706
b _08038854
_08038706:
cmp r0, 0x3
bne _0803870C
b _080388E8
_0803870C:
b _080389AC
_0803870E:
adds r0, r4, 0
adds r0, 0x24
adds r0, r1, r0
ldr r4, [r0]
movs r6, 0
ldr r3, [sp, 0x18]
lsls r2, r3, 3
adds r0, r2, r4
ldrh r1, [r0, 0x4]
movs r0, 0xB
muls r0, r1
ldr r1, =gSpeciesNames
adds r0, r1
ldrb r0, [r0]
adds r5, r2, 0
cmp r0, 0xFF
beq _08038750
adds r3, r1, 0
movs r7, 0xB
_08038734:
adds r0, r2, r4
ldrh r0, [r0, 0x4]
adds r1, r0, 0
muls r1, r7
adds r0, r6, r1
adds r0, r3
ldrb r0, [r0]
add r9, r0
adds r6, 0x1
adds r1, r6, r1
adds r1, r3
ldrb r0, [r1]
cmp r0, 0xFF
bne _08038734
_08038750:
mov r2, r9
lsls r0, r2, 8
add r10, r0
adds r4, r5, r4
ldrh r1, [r4]
lsls r0, r1, 5
subs r0, r1
movs r1, 0xFF
bl __divsi3
lsls r0, 24
lsrs r6, r0, 24
ldr r3, [sp, 0x18]
movs r1, 0x64
adds r0, r3, 0
muls r0, r1
ldr r2, [sp, 0x10]
adds r0, r2, r0
ldrh r1, [r4, 0x4]
ldrb r2, [r4, 0x2]
movs r3, 0x1
str r3, [sp]
mov r3, r10
str r3, [sp, 0x4]
movs r3, 0x2
str r3, [sp, 0x8]
movs r3, 0
str r3, [sp, 0xC]
adds r3, r6, 0
bl CreateMon
b _080389AC
.pool
_08038794:
adds r0, r4, 0
adds r0, 0x24
adds r0, r1, r0
ldr r7, [r0]
movs r6, 0
ldr r4, [sp, 0x18]
lsls r2, r4, 4
adds r0, r2, r7
ldrh r1, [r0, 0x4]
movs r0, 0xB
muls r0, r1
ldr r1, =gSpeciesNames
adds r0, r1
ldrb r0, [r0]
mov r8, r2
cmp r0, 0xFF
beq _080387D6
adds r3, r1, 0
movs r4, 0xB
_080387BA:
adds r0, r2, r7
ldrh r0, [r0, 0x4]
adds r1, r0, 0
muls r1, r4
adds r0, r6, r1
adds r0, r3
ldrb r0, [r0]
add r9, r0
adds r6, 0x1
adds r1, r6, r1
adds r1, r3
ldrb r0, [r1]
cmp r0, 0xFF
bne _080387BA
_080387D6:
mov r2, r9
lsls r0, r2, 8
add r10, r0
mov r3, r8
adds r4, r3, r7
ldrh r1, [r4]
lsls r0, r1, 5
subs r0, r1
movs r1, 0xFF
bl __divsi3
lsls r0, 24
lsrs r6, r0, 24
ldr r0, [sp, 0x18]
movs r1, 0x64
adds r5, r0, 0
muls r5, r1
ldr r2, [sp, 0x10]
adds r5, r2, r5
ldrh r1, [r4, 0x4]
ldrb r2, [r4, 0x2]
movs r0, 0x1
str r0, [sp]
mov r3, r10
str r3, [sp, 0x4]
movs r0, 0x2
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
adds r0, r5, 0
adds r3, r6, 0
bl CreateMon
movs r6, 0
mov r0, r8
adds r0, 0x6
adds r4, r7, r0
_08038820:
adds r1, r6, 0
adds r1, 0xD
adds r0, r5, 0
adds r2, r4, 0
bl SetMonData
adds r1, r6, 0
adds r1, 0x11
ldrh r0, [r4]
lsls r2, r0, 1
adds r2, r0
lsls r2, 2
ldr r0, =gBattleMoves + 0x4 @ PP offset
adds r2, r0
adds r0, r5, 0
bl SetMonData
adds r4, 0x2
adds r6, 0x1
cmp r6, 0x3
ble _08038820
b _080389AC
.pool
_08038854:
adds r0, r4, 0
adds r0, 0x24
adds r0, r1, r0
ldr r4, [r0]
movs r6, 0
ldr r0, [sp, 0x18]
lsls r2, r0, 3
adds r0, r2, r4
ldrh r1, [r0, 0x4]
movs r0, 0xB
muls r0, r1
ldr r1, =gSpeciesNames
adds r0, r1
ldrb r0, [r0]
adds r5, r2, 0
cmp r0, 0xFF
beq _08038896
adds r3, r1, 0
movs r7, 0xB
_0803887A:
adds r0, r2, r4
ldrh r0, [r0, 0x4]
adds r1, r0, 0
muls r1, r7
adds r0, r6, r1
adds r0, r3
ldrb r0, [r0]
add r9, r0
adds r6, 0x1
adds r1, r6, r1
adds r1, r3
ldrb r0, [r1]
cmp r0, 0xFF
bne _0803887A
_08038896:
mov r2, r9
lsls r0, r2, 8
add r10, r0
adds r5, r4
ldrh r1, [r5]
lsls r0, r1, 5
subs r0, r1
movs r1, 0xFF
bl __divsi3
lsls r0, 24
lsrs r6, r0, 24
ldr r3, [sp, 0x18]
movs r0, 0x64
adds r4, r3, 0
muls r4, r0
ldr r1, [sp, 0x10]
adds r4, r1, r4
ldrh r1, [r5, 0x4]
ldrb r2, [r5, 0x2]
movs r0, 0x1
str r0, [sp]
mov r3, r10
str r3, [sp, 0x4]
movs r0, 0x2
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
adds r0, r4, 0
adds r3, r6, 0
bl CreateMon
adds r5, 0x6
adds r0, r4, 0
movs r1, 0xC
adds r2, r5, 0
bl SetMonData
b _080389AC
.pool
_080388E8:
adds r0, r4, 0
adds r0, 0x24
adds r0, r1, r0
ldr r7, [r0]
movs r6, 0
ldr r4, [sp, 0x18]
lsls r2, r4, 4
adds r0, r2, r7
ldrh r1, [r0, 0x4]
movs r0, 0xB
muls r0, r1
ldr r1, =gSpeciesNames
adds r0, r1
ldrb r0, [r0]
mov r8, r2
cmp r0, 0xFF
beq _0803892A
adds r3, r1, 0
movs r4, 0xB
_0803890E:
adds r0, r2, r7
ldrh r0, [r0, 0x4]
adds r1, r0, 0
muls r1, r4
adds r0, r6, r1
adds r0, r3
ldrb r0, [r0]
add r9, r0
adds r6, 0x1
adds r1, r6, r1
adds r1, r3
ldrb r0, [r1]
cmp r0, 0xFF
bne _0803890E
_0803892A:
mov r2, r9
lsls r0, r2, 8
add r10, r0
mov r3, r8
adds r5, r3, r7
ldrh r1, [r5]
lsls r0, r1, 5
subs r0, r1
movs r1, 0xFF
bl __divsi3
lsls r0, 24
lsrs r6, r0, 24
ldr r0, [sp, 0x18]
movs r1, 0x64
adds r4, r0, 0
muls r4, r1
ldr r2, [sp, 0x10]
adds r4, r2, r4
ldrh r1, [r5, 0x4]
ldrb r2, [r5, 0x2]
movs r0, 0x1
str r0, [sp]
mov r3, r10
str r3, [sp, 0x4]
movs r0, 0x2
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
adds r0, r4, 0
adds r3, r6, 0
bl CreateMon
adds r5, 0x6
adds r0, r4, 0
movs r1, 0xC
adds r2, r5, 0
bl SetMonData
movs r6, 0
adds r5, r4, 0
mov r0, r8
adds r0, 0x8
adds r4, r7, r0
_08038982:
adds r1, r6, 0
adds r1, 0xD
adds r0, r5, 0
adds r2, r4, 0
bl SetMonData
adds r1, r6, 0
adds r1, 0x11
ldrh r0, [r4]
lsls r2, r0, 1
adds r2, r0
lsls r2, 2
ldr r0, =gBattleMoves + 0x4 @ PP offset
adds r2, r0
adds r0, r5, 0
bl SetMonData
adds r4, 0x2
adds r6, 0x1
cmp r6, 0x3
ble _08038982
_080389AC:
ldr r4, [sp, 0x24]
str r4, [sp, 0x18]
ldr r4, =gTrainers
ldr r0, [sp, 0x18]
_080389B4:
ldr r1, [sp, 0x1C]
cmp r0, r1
bge _080389BC
b _08038688
_080389BC:
ldr r2, =gBattleTypeFlags
ldr r1, =gTrainers
ldr r3, [sp, 0x20]
ldr r4, [sp, 0x14]
adds r0, r3, r4
lsls r0, 3
adds r0, r1
ldrb r1, [r0, 0x18]
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
_080389D2:
ldr r0, =gTrainers
ldr r2, [sp, 0x20]
ldr r3, [sp, 0x14]
adds r1, r2, r3
lsls r1, 3
adds r1, r0
adds r1, 0x20
ldrb r0, [r1]
_080389E2:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end CreateNPCTrainerParty
thumb_func_start sub_8038A04
sub_8038A04: @ 8038A04
push {lr}
ldr r0, =0x04000006
ldrh r0, [r0]
subs r0, 0x6F
lsls r0, 16
lsrs r0, 16
cmp r0, 0x30
bhi _08038A1E
movs r1, 0x98
lsls r1, 8
movs r0, 0x8
bl SetGpuReg
_08038A1E:
pop {r0}
bx r0
.pool
thumb_func_end sub_8038A04
thumb_func_start vblank_cb_08078BB4
vblank_cb_08078BB4: @ 8038A28
push {lr}
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
ldr r1, =0x013f0102
ands r0, r1
cmp r0, 0
bne _08038A3A
bl Random
_08038A3A:
ldr r0, =gUnknown_02022E14
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
ldr r0, =gUnknown_02022E16
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
ldr r0, =gUnknown_02022E18
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
ldr r0, =gUnknown_02022E1A
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
ldr r0, =gUnknown_02022E1C
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
ldr r0, =gUnknown_02022E1E
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
ldr r0, =gUnknown_02022E20
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
ldr r0, =gUnknown_02022E22
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
ldr r0, =gUnknown_02022E24
ldrh r1, [r0]
movs r0, 0x40
bl SetGpuReg
ldr r0, =gUnknown_02022E26
ldrh r1, [r0]
movs r0, 0x44
bl SetGpuReg
ldr r0, =gUnknown_02022E28
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
ldr r0, =gUnknown_02022E2A
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
bl sub_80BA0A8
pop {r0}
bx r0
.pool
thumb_func_end vblank_cb_08078BB4
thumb_func_start nullsub_17
nullsub_17: @ 8038B00
bx lr
thumb_func_end nullsub_17
thumb_func_start sub_8038B04
sub_8038B04: @ 8038B04
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
beq _08038B24
movs r1, 0x32
ldrsh r0, [r5, r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
lsrs r0, 8
ldrh r1, [r5, 0x30]
adds r0, r1
strh r0, [r5, 0x20]
b _08038B36
_08038B24:
movs r1, 0x32
ldrsh r0, [r5, r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
asrs r0, 8
ldrh r1, [r5, 0x30]
subs r1, r0
strh r1, [r5, 0x20]
_08038B36:
movs r1, 0xC0
lsls r1, 1
adds r0, r1, 0
ldrh r1, [r5, 0x32]
adds r0, r1
strh r0, [r5, 0x32]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08038B6A
ldr r4, =0x00002710
adds r0, r4, 0
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
adds r0, r5, 0
bl FreeSpriteOamMatrix
adds r0, r5, 0
bl DestroySprite
_08038B6A:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038B04
thumb_func_start sub_8038B74
sub_8038B74: @ 8038B74
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl StartSpriteAffineAnim
ldr r0, =sub_8038B04
str r0, [r4, 0x1C]
movs r0, 0x68
bl PlaySE
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038B74
thumb_func_start sub_8038B94
sub_8038B94: @ 8038B94
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
movs r1, 0
str r1, [sp, 0x8]
ldr r0, =gBattleScripting
adds r0, 0x25
ldrb r2, [r0]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08038C04
ldr r1, =gLinkPlayers
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x18]
cmp r0, 0x1
beq _08038BF0
cmp r0, 0x1
bgt _08038BE8
cmp r0, 0
beq _08038C04
b _08038C0C
.pool
_08038BE8:
cmp r0, 0x2
beq _08038C04
cmp r0, 0x3
bne _08038C0C
_08038BF0:
ldr r0, =gEnemyParty
str r0, [sp, 0x4]
ldr r1, =gPlayerParty
str r1, [sp, 0x8]
b _08038C0C
.pool
_08038C04:
ldr r2, =gPlayerParty
str r2, [sp, 0x4]
ldr r3, =gEnemyParty
str r3, [sp, 0x8]
_08038C0C:
movs r7, 0
movs r0, 0
mov r8, r0
ldr r1, [sp]
lsls r1, 2
str r1, [sp, 0xC]
movs r2, 0xCE
lsls r2, 1
mov r10, r2
mov r9, r0
_08038C20:
movs r0, 0x64
mov r4, r8
muls r4, r0
ldr r3, [sp, 0x4]
adds r4, r3, r4
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
adds r1, r0, 0
cmp r5, 0
beq _08038C90
cmp r5, r10
beq _08038C64
cmp r6, 0
beq _08038C64
cmp r1, 0
bne _08038C64
movs r0, 0x1
mov r2, r9
lsls r0, r2
orrs r7, r0
_08038C64:
cmp r5, 0
beq _08038C90
cmp r6, 0
beq _08038C7C
cmp r5, r10
beq _08038C74
cmp r1, 0
beq _08038C7C
_08038C74:
movs r0, 0x2
mov r3, r9
lsls r0, r3
orrs r7, r0
_08038C7C:
cmp r5, 0
beq _08038C90
cmp r5, r10
beq _08038C90
cmp r6, 0
bne _08038C90
movs r0, 0x3
mov r1, r9
lsls r0, r1
orrs r7, r0
_08038C90:
movs r2, 0x2
add r9, r2
movs r3, 0x1
add r8, r3
mov r0, r8
cmp r0, 0x5
ble _08038C20
ldr r1, =gTasks
ldr r2, [sp, 0xC]
ldr r3, [sp]
adds r0, r2, r3
lsls r0, 3
adds r0, r1
strh r7, [r0, 0xE]
movs r7, 0
movs r0, 0
mov r8, r0
movs r1, 0xCE
lsls r1, 1
mov r10, r1
mov r9, r0
_08038CBA:
movs r0, 0x64
mov r4, r8
muls r4, r0
ldr r2, [sp, 0x8]
adds r4, r2, r4
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
adds r1, r0, 0
cmp r5, 0
beq _08038D2A
cmp r5, r10
beq _08038CFE
cmp r6, 0
beq _08038CFE
cmp r1, 0
bne _08038CFE
movs r0, 0x1
mov r3, r9
lsls r0, r3
orrs r7, r0
_08038CFE:
cmp r5, 0
beq _08038D2A
cmp r6, 0
beq _08038D16
cmp r5, r10
beq _08038D0E
cmp r1, 0
beq _08038D16
_08038D0E:
movs r0, 0x2
mov r1, r9
lsls r0, r1
orrs r7, r0
_08038D16:
cmp r5, 0
beq _08038D2A
cmp r5, r10
beq _08038D2A
cmp r6, 0
bne _08038D2A
movs r0, 0x3
mov r2, r9
lsls r0, r2
orrs r7, r0
_08038D2A:
movs r3, 0x2
add r9, r3
movs r0, 0x1
add r8, r0
mov r1, r8
cmp r1, 0x5
ble _08038CBA
ldr r1, =gTasks
ldr r2, [sp, 0xC]
ldr r3, [sp]
adds r0, r2, r3
lsls r0, 3
adds r0, r1
strh r7, [r0, 0x10]
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038B94
thumb_func_start sub_8038D64
sub_8038D64: @ 8038D64
push {r4,lr}
sub sp, 0x4
movs r0, 0
bl SetHBlankCallback
movs r0, 0
bl SetVBlankCallback
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
movs r2, 0x21
negs r2, r2
ands r1, r2
str r1, [r0]
ldr r0, =0x003f0100
ands r0, r1
cmp r0, 0
beq _08038DAC
ldr r0, =gMain
ldr r0, [r0, 0x8]
bl SetMainCallback2
bl sub_8057028
bl dp11_free
bl sub_805F094
b _08038EB6
.pool
_08038DAC:
str r0, [sp]
movs r1, 0xC0
lsls r1, 19
ldr r2, =0x05006000
mov r0, sp
bl CpuSet
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
movs r0, 0x40
movs r1, 0xF0
bl SetGpuReg
ldr r4, =0x00005051
movs r0, 0x44
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
ldr r1, =gUnknown_02022E24
movs r0, 0xF0
strh r0, [r1]
ldr r0, =gUnknown_02022E26
strh r4, [r0]
bl dp12_8087EA4
ldr r0, =gUnknown_02038C28
movs r3, 0xF0
movs r1, 0xF0
lsls r1, 3
adds r2, r0, r1
movs r1, 0x4F
_08038DFE:
strh r3, [r0]
strh r3, [r2]
adds r2, 0x2
adds r0, 0x2
subs r1, 0x1
cmp r1, 0
bge _08038DFE
movs r1, 0x50
ldr r0, =gUnknown_02038C28
ldr r3, =0x0000ff10
movs r4, 0x82
lsls r4, 4
adds r2, r0, r4
adds r0, 0xA0
_08038E1A:
strh r3, [r0]
strh r3, [r2]
adds r2, 0x2
adds r0, 0x2
adds r1, 0x1
cmp r1, 0x9F
ble _08038E1A
bl ResetPaletteFade
ldr r0, =gUnknown_02022E14
movs r4, 0
strh r4, [r0]
ldr r0, =gUnknown_02022E16
strh r4, [r0]
ldr r0, =gUnknown_02022E18
strh r4, [r0]
ldr r0, =gUnknown_02022E1A
strh r4, [r0]
ldr r0, =gUnknown_02022E1C
strh r4, [r0]
ldr r0, =gUnknown_02022E1E
strh r4, [r0]
ldr r0, =gUnknown_02022E20
strh r4, [r0]
ldr r0, =gUnknown_02022E22
strh r4, [r0]
bl c2_berry_program_update_menu
ldr r0, =gUnknown_08C004E0
movs r1, 0
movs r2, 0x40
bl LoadCompressedPalette
bl sub_803570C
bl ResetSpriteData
bl ResetTasks
bl sub_8036154
movs r0, 0x4A
movs r1, 0x37
bl SetGpuReg
bl FreeAllSpritePalettes
ldr r1, =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
ldr r0, =vblank_cb_08078BB4
bl SetVBlankCallback
ldr r0, =task00_0800F6FC
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r2, 0x87
lsls r2, 1
strh r2, [r1, 0xA]
movs r2, 0x5A
strh r2, [r1, 0xC]
movs r2, 0x1
strh r2, [r1, 0x12]
bl sub_8038B94
ldr r0, =sub_8038F14
bl SetMainCallback2
ldr r0, =gBattleCommunication
strb r4, [r0]
_08038EB6:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038D64
thumb_func_start sub_8038F14
sub_8038F14: @ 8038F14
push {lr}
bl sub_8038F34
bl AnimateSprites
bl BuildOamBuffer
bl RunTextPrinters
bl UpdatePaletteFade
bl RunTasks
pop {r0}
bx r0
thumb_func_end sub_8038F14
thumb_func_start sub_8038F34
sub_8038F34: @ 8038F34
push {r4-r6,lr}
sub sp, 0x8
ldr r0, =gBattleCommunication
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0x9
bls _08038F44
b _080391C6
_08038F44:
lsls r0, r1, 2
ldr r1, =_08038F58
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08038F58:
.4byte _08038F80
.4byte _08038FA0
.4byte _08038FC2
.4byte _080390C8
.4byte _08039100
.4byte _08039118
.4byte _0803912C
.4byte _0803914C
.4byte _08039166
.4byte _08039184
_08038F80:
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
ldr r1, =gBattleCommunication
movs r0, 0xFF
strb r0, [r1, 0x1]
b _08039174
.pool
_08038FA0:
ldrb r0, [r4, 0x1]
subs r0, 0x1
strb r0, [r4, 0x1]
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08038FB0
b _080391C6
_08038FB0:
movs r0, 0x1
negs r0, r0
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _0803910C
_08038FC2:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08038FD0
b _080391C6
_08038FD0:
bl sub_8185FAC
ldr r2, =gMain
ldr r1, =0x00000439
adds r2, r1
movs r1, 0x1
ands r1, r0
lsls r1, 2
ldrb r3, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
movs r3, 0x2
cmp r0, 0
beq _08038FFC
movs r3, 0x4
_08038FFC:
movs r4, 0
ldr r6, =gSaveBlock2Ptr
cmp r4, r3
bge _08039022
ldr r1, =gLinkPlayers
ldrb r0, [r1]
cmp r0, 0x3
bne _08039022
movs r5, 0xFF
adds r2, r1, 0
_08039010:
adds r2, 0x1C
adds r4, 0x1
cmp r4, r3
bge _08039022
ldrh r1, [r2]
adds r0, r5, 0
ands r0, r1
cmp r0, 0x3
beq _08039010
_08039022:
ldr r0, [r6]
ldr r1, =0x00000ca9
adds r0, r1
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _080390AC
cmp r4, r3
bne _080390AC
ldr r0, =0x000008d2
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _08039074
bl FreeAllWindowBuffers
ldr r0, =sub_80392A8
bl SetMainCallback2
b _080391C6
.pool
_08039074:
ldr r2, =gMain
ldr r1, =0x00000439
adds r0, r2, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _08039090
ldr r0, [r2, 0x8]
b _080390B0
.pool
_08039090:
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0
bne _08039172
ldr r0, =sub_80B3AF8
movs r1, 0x5
bl CreateTask
b _08039172
.pool
_080390AC:
ldr r0, =gMain
ldr r0, [r0, 0x8]
_080390B0:
bl SetMainCallback2
bl sub_8057028
bl dp11_free
bl sub_805F094
b _080391C6
.pool
_080390C8:
movs r0, 0
str r0, [sp, 0x4]
movs r1, 0xC0
lsls r1, 19
ldr r2, =0x05006000
add r0, sp, 0x4
bl CpuSet
movs r4, 0
_080390DA:
lsls r0, r4, 24
lsrs r0, 24
bl sub_80363C4
adds r4, 0x1
cmp r4, 0x1
ble _080390DA
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
b _08039172
.pool
_08039100:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080391C6
_0803910C:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _080391C6
.pool
_08039118:
ldr r0, =sub_80B3AF8
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
bne _080391C6
b _08039172
.pool
_0803912C:
bl sub_800A520
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080391C6
bl sub_800ADF8
ldr r0, =gUnknown_0824978D
movs r1, 0
bl battle_show_message_maybe
b _08039172
.pool
_0803914C:
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
cmp r0, 0
bne _080391C6
bl sub_800A520
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080391C6
b _08039172
_08039166:
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _08039172
bl sub_800AC34
_08039172:
ldr r1, =gBattleCommunication
_08039174:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _080391C6
.pool
_08039184:
ldr r2, =gMain
ldr r1, =0x00000439
adds r0, r2, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
adds r3, r2, 0
cmp r0, 0
beq _080391A6
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _080391A6
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0x1
beq _080391C6
_080391A6:
ldr r0, =0x00000439
adds r2, r3, r0
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
ldr r0, [r3, 0x8]
bl SetMainCallback2
bl sub_8057028
bl dp11_free
bl sub_805F094
_080391C6:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_8038F34
thumb_func_start sub_80391E0
sub_80391E0: @ 80391E0
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r1, 24
movs r0, 0
cmp r1, 0x6
bhi _080392A0
lsls r0, r1, 2
ldr r1, =_08039200
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08039200:
.4byte _0803921C
.4byte _08039230
.4byte _08039244
.4byte _08039258
.4byte _0803926C
.4byte _08039280
.4byte _08039294
_0803921C:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrb r0, [r1]
lsls r0, 30
lsrs r0, 30
b _080392A0
.pool
_08039230:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrb r0, [r1]
lsls r0, 28
lsrs r0, 30
b _080392A0
.pool
_08039244:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrh r0, [r1]
lsls r0, 23
lsrs r0, 27
b _080392A0
.pool
_08039258:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrb r0, [r1, 0x1]
lsls r0, 29
lsrs r0, 30
b _080392A0
.pool
_0803926C:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrb r0, [r1, 0x1]
lsls r0, 28
lsrs r0, 31
b _080392A0
.pool
_08039280:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldrb r0, [r1, 0x1]
lsls r0, 26
lsrs r0, 30
b _080392A0
.pool
_08039294:
ldr r0, =gUnknown_0831AA08
lsls r1, r2, 2
adds r1, r0
ldr r0, [r1]
lsls r0, 8
lsrs r0, 22
_080392A0:
pop {r1}
bx r1
.pool
thumb_func_end sub_80391E0
thumb_func_start sub_80392A8
sub_80392A8: @ 80392A8
push {r4,lr}
sub sp, 0x8
movs r0, 0
bl SetHBlankCallback
movs r0, 0
bl SetVBlankCallback
movs r4, 0
str r4, [sp, 0x4]
movs r1, 0xC0
lsls r1, 19
ldr r2, =0x05006000
add r0, sp, 0x4
bl CpuSet
bl ResetPaletteFade
ldr r0, =gUnknown_02022E14
strh r4, [r0]
ldr r0, =gUnknown_02022E16
strh r4, [r0]
ldr r0, =gUnknown_02022E18
strh r4, [r0]
ldr r0, =gUnknown_02022E1A
strh r4, [r0]
ldr r0, =gUnknown_02022E1C
strh r4, [r0]
ldr r0, =gUnknown_02022E1E
strh r4, [r0]
ldr r0, =gUnknown_02022E20
strh r4, [r0]
ldr r0, =gUnknown_02022E22
strh r4, [r0]
bl c2_berry_program_update_menu
movs r1, 0x82
lsls r1, 5
movs r0, 0
bl SetGpuReg
bl sub_803570C
_080392FE:
lsls r0, r4, 24
lsrs r0, 24
bl sub_80363C4
adds r4, 0x1
cmp r4, 0x1
ble _080392FE
bl ResetSpriteData
bl ResetTasks
bl FreeAllSpritePalettes
ldr r1, =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
ldr r0, =vblank_cb_08078BB4
bl SetVBlankCallback
ldr r0, =sub_803937C
bl SetMainCallback2
movs r0, 0x1
negs r0, r0
movs r4, 0
str r4, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
ldr r0, =gBattleCommunication
strb r4, [r0]
add sp, 0x8
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80392A8
thumb_func_start sub_803937C
sub_803937C: @ 803937C
push {lr}
bl sub_803939C
bl AnimateSprites
bl BuildOamBuffer
bl RunTextPrinters
bl UpdatePaletteFade
bl RunTasks
pop {r0}
bx r0
thumb_func_end sub_803937C
thumb_func_start sub_803939C
sub_803939C: @ 803939C
push {r4,r5,lr}
sub sp, 0x4
ldr r0, =gBattleCommunication
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0xC
bls _080393AC
b _0803975E
_080393AC:
lsls r0, r1, 2
ldr r1, =_080393C0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080393C0:
.4byte _080393F4
.4byte _08039414
.4byte _08039450
.4byte _08039470
.4byte _0803949C
.4byte _080394D8
.4byte _0803957C
.4byte _08039704
.4byte _080395CC
.4byte _08039610
.4byte _08039678
.4byte _080396A8
.4byte _08039704
_080393F4:
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_08039414:
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _08039434
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0
bne _08039434
ldr r0, =sub_80B3AF8
movs r1, 0x5
bl CreateTask
_08039434:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_08039450:
ldr r0, =sub_80B3AF8
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
beq _0803945E
b _0803975E
_0803945E:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_08039470:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0803947E
b _0803975E
_0803947E:
ldr r0, =gUnknown_085CD28F
movs r1, 0
bl battle_show_message_maybe
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_0803949C:
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
lsrs r0, 16
cmp r0, 0
beq _080394AC
b _0803975E
_080394AC:
str r0, [sp]
movs r0, 0x18
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_8056A3C
ldr r0, =gUnknown_085CCABB
movs r1, 0xC
bl battle_show_message_maybe
ldr r4, =gBattleCommunication
movs r0, 0x1
strb r0, [r4, 0x1]
bl sub_8056B74
b _080396EA
.pool
_080394D8:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08039500
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _080394EC
b _0803975E
_080394EC:
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
bl sub_8056BAC
movs r0, 0
b _0803951E
.pool
_08039500:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08039526
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _08039510
b _0803975E
_08039510:
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
bl sub_8056BAC
movs r0, 0x1
_0803951E:
strb r0, [r4, 0x1]
bl sub_8056B74
b _0803975E
_08039526:
movs r5, 0x1
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _08039560
movs r0, 0x5
bl PlaySE
ldr r4, =gBattleCommunication
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _08039540
b _080396EA
_08039540:
str r5, [sp]
movs r0, 0x18
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_8056A3C
bl sub_8185338
strb r0, [r4, 0x1]
movs r0, 0xA
strb r0, [r4]
b _0803975E
.pool
_08039560:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0803956A
b _0803975E
_0803956A:
movs r0, 0x5
bl PlaySE
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_0803957C:
bl sub_800A520
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0803958A
b _0803975E
_0803958A:
str r0, [sp]
movs r0, 0x18
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_8056A3C
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080395B4
bl sub_800ADF8
ldr r0, =gUnknown_0824978D
movs r1, 0
bl battle_show_message_maybe
_080395B4:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_080395CC:
ldrb r0, [r4, 0x1]
subs r0, 0x1
strb r0, [r4, 0x1]
lsls r0, 24
cmp r0, 0
beq _080395DA
b _0803975E
_080395DA:
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080395F6
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _080395F6
bl sub_800AC34
_080395F6:
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
b _0803975C
.pool
_08039610:
ldr r2, =gMain
ldr r1, =0x00000439
adds r0, r2, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
adds r3, r2, 0
cmp r0, 0
beq _08039634
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _08039634
ldr r0, =gUnknown_03003124
ldrb r0, [r0]
cmp r0, 0x1
bne _08039634
b _0803975E
_08039634:
ldr r0, =0x00000439
adds r2, r3, r0
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08039650
b _0803975E
_08039650:
ldr r0, [r3, 0x8]
bl SetMainCallback2
bl sub_8057028
bl dp11_free
bl sub_805F094
b _0803975E
.pool
_08039678:
ldrb r0, [r4, 0x1]
cmp r0, 0x1
bne _080396A0
movs r0, 0x37
bl PlaySE
ldr r0, =gUnknown_085CD2CB
_08039686:
bl StrCpyDecodeToDisplayedStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
bl battle_show_message_maybe
movs r0, 0x80
strb r0, [r4, 0x1]
b _080396EA
.pool
_080396A0:
ldr r0, =gUnknown_08242481
b _08039686
.pool
_080396A8:
bl sub_800A520
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0803975E
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
cmp r0, 0
bne _0803975E
ldr r4, =gBattleCommunication
ldrb r0, [r4, 0x1]
subs r0, 0x1
strb r0, [r4, 0x1]
lsls r0, 24
cmp r0, 0
bne _0803975E
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080396EA
bl sub_800ADF8
ldr r0, =gUnknown_0824978D
movs r1, 0
bl battle_show_message_maybe
_080396EA:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _0803975E
.pool
_08039704:
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0
bne _0803975E
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08039744
bl sub_800A520
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0803975E
movs r0, 0x1
negs r0, r0
str r4, [sp]
b _0803974A
.pool
_08039744:
movs r0, 0x1
negs r0, r0
str r1, [sp]
_0803974A:
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, =gBattleCommunication
movs r0, 0x20
strb r0, [r1, 0x1]
movs r0, 0x8
_0803975C:
strb r0, [r1]
_0803975E:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_803939C
thumb_func_start shedinja_something
shedinja_something: @ 803976C
push {r4,r5,lr}
sub sp, 0x10
adds r4, r0, 0
add r5, sp, 0xC
movs r0, 0x1
strb r0, [r5]
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
ldr r1, =0x0000012f
cmp r0, r1
bne _080397B4
adds r0, r4, 0
movs r1, 0x3
bl GetMonData
ldrb r1, [r5]
cmp r0, r1
beq _080397B4
adds r0, r4, 0
movs r1, 0x2
mov r2, sp
bl GetMonData
ldr r1, =gUnknown_0831ACA0
mov r0, sp
bl StringCompareWithoutExtCtrlCodes
cmp r0, 0
bne _080397B4
adds r0, r4, 0
movs r1, 0x3
adds r2, r5, 0
bl SetMonData
_080397B4:
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end shedinja_something
thumb_func_start sub_80397C4
sub_80397C4: @ 80397C4
ldr r2, =gUnknown_0831ABA0
lsls r0, 2
adds r0, r2
ldr r0, [r0]
lsls r1, 3
adds r1, r0
ldrb r0, [r1, 0x3]
lsls r0, 3
bx lr
.pool
thumb_func_end sub_80397C4
thumb_func_start oac_poke_opponent
oac_poke_opponent: @ 80397DC
push {lr}
sub sp, 0x4
ldr r1, =sub_803980C
str r1, [r0, 0x1C]
movs r1, 0
bl StartSpriteAnimIfDifferent
movs r0, 0x80
lsls r0, 10
ldr r1, =0x00002108
str r1, [sp]
movs r1, 0
movs r2, 0xA
movs r3, 0xA
bl BeginNormalPaletteFade
add sp, 0x4
pop {r0}
bx r0
.pool
thumb_func_end oac_poke_opponent
thumb_func_start sub_803980C
sub_803980C: @ 803980C
push {lr}
adds r2, r0, 0
ldr r0, =gUnknown_020243FC
ldrh r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0803982C
ldrh r0, [r2, 0x24]
adds r0, 0x2
strh r0, [r2, 0x24]
lsls r0, 16
cmp r0, 0
bne _0803982C
ldr r0, =sub_8039838
str r0, [r2, 0x1C]
_0803982C:
pop {r0}
bx r0
.pool
thumb_func_end sub_803980C
thumb_func_start sub_8039838
sub_8039838: @ 8039838
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08039880
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
bl sub_8076918
ldr r1, =gHealthBoxesIds
movs r2, 0x2E
ldrsh r0, [r4, r2]
adds r0, r1
ldrb r0, [r0]
bl sub_80729D0
ldr r0, =sub_8039894
str r0, [r4, 0x1C]
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnimIfDifferent
movs r0, 0x80
lsls r0, 10
ldr r1, =0x00002108
str r1, [sp]
movs r1, 0
movs r2, 0xA
movs r3, 0
bl BeginNormalPaletteFade
_08039880:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8039838
thumb_func_start sub_8039894
sub_8039894: @ 8039894
push {lr}
adds r2, r0, 0
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080398B0
ldrh r1, [r2, 0x32]
adds r0, r2, 0
movs r2, 0
movs r3, 0x1
bl BattleAnimateFrontSprite
_080398B0:
pop {r0}
bx r0
.pool
thumb_func_end sub_8039894
thumb_func_start SpriteCallbackDummy_2
SpriteCallbackDummy_2: @ 80398B8
bx lr
thumb_func_end SpriteCallbackDummy_2
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, =SpriteCallbackDummy_2
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, =gBattleMonForms
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, =gBattleSpritesGfx
ldr r1, [r1]
lsls r0, 24
lsrs r0, 22
adds r1, 0x4
adds r1, r0
ldr r2, =gBattleMonForms
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, =gBattleMonForms
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, =SpriteCallbackDummy_2
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 HasTwoFramesAnimation
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 BattleAnimateFrontSprite
_08039BA0:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8039B58
thumb_func_start sub_8039BB4
sub_8039BB4: @ 8039BB4
ldr r1, =oac_poke_ally_
str r1, [r0, 0x1C]
bx lr
.pool
thumb_func_end sub_8039BB4
thumb_func_start oac_poke_ally_
oac_poke_ally_: @ 8039BC0
push {lr}
adds r2, r0, 0
ldr r0, =gUnknown_020243FC
ldrh r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08039BE4
ldrh r0, [r2, 0x24]
subs r0, 0x2
strh r0, [r2, 0x24]
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0
bne _08039BE4
ldr r0, =nullsub_19
str r0, [r2, 0x1C]
strh r1, [r2, 0x30]
_08039BE4:
pop {r0}
bx r0
.pool
thumb_func_end oac_poke_ally_
thumb_func_start sub_8039BF0
sub_8039BF0: @ 8039BF0
ldr r1, =nullsub_19
str r1, [r0, 0x1C]
bx lr
.pool
thumb_func_end sub_8039BF0
thumb_func_start nullsub_19
nullsub_19: @ 8039BFC
bx lr
thumb_func_end nullsub_19
thumb_func_start sub_8039C00
sub_8039C00: @ 8039C00
push {lr}
adds r2, r0, 0
ldr r0, =gUnknown_020243FC
ldrh r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08039C20
ldrh r0, [r2, 0x30]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x32]
ldrh r1, [r2, 0x26]
adds r0, r1
strh r0, [r2, 0x26]
_08039C20:
pop {r0}
bx r0
.pool
thumb_func_end sub_8039C00
thumb_func_start dp11b_obj_instanciate
dp11b_obj_instanciate: @ 8039C28
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r2, 24
lsrs r2, 24
mov r9, r2
lsls r3, 24
lsrs r3, 24
mov r10, r3
cmp r1, 0
beq _08039C64
ldr r0, =gUnknown_020244D0
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r2, r4, 1
adds r0, r2, r4
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
b _08039C76
.pool
_08039C64:
ldr r0, =gUnknown_020244D0
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r2, r4, 1
adds r0, r2, r4
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
_08039C76:
ands r0, r1
adds r6, r2, 0
cmp r0, 0
bne _08039D2C
ldr r0, =objc_dp11b_pingpong
bl CreateInvisibleSpriteWithCallback
lsls r0, 24
lsrs r5, r0, 24
mov r0, r8
cmp r0, 0x1
bne _08039CD0
ldr r0, =gHealthBoxesIds
adds r0, r4, r0
ldrb r7, [r0]
ldr r2, =gUnknown_020244D0
ldr r0, [r2]
ldr r0, [r0, 0x4]
adds r1, r6, r4
lsls r1, 2
adds r0, r1, r0
strb r5, [r0, 0x2]
ldr r0, [r2]
ldr r0, [r0, 0x4]
adds r1, r0
ldrb r0, [r1]
movs r2, 0x2
orrs r0, r2
strb r0, [r1]
ldr r2, =gSprites
lsls r3, r5, 4
adds r0, r3, r5
lsls r0, 2
adds r0, r2
movs r1, 0x80
b _08039CFE
.pool
_08039CD0:
ldr r0, =gBankSpriteIds
adds r0, r4, r0
ldrb r7, [r0]
ldr r2, =gUnknown_020244D0
ldr r0, [r2]
ldr r0, [r0, 0x4]
adds r1, r6, r4
lsls r1, 2
adds r0, r1, r0
strb r5, [r0, 0x3]
ldr r0, [r2]
ldr r0, [r0, 0x4]
adds r1, r0
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldr r2, =gSprites
lsls r3, r5, 4
adds r0, r3, r5
lsls r0, 2
adds r0, r2
movs r1, 0xC0
_08039CFE:
strh r1, [r0, 0x2E]
adds r4, r2, 0
adds r1, r3, r5
lsls r1, 2
adds r1, r4
mov r2, r9
lsls r0, r2, 24
asrs r0, 24
movs r2, 0
strh r0, [r1, 0x30]
mov r3, r10
lsls r0, r3, 24
asrs r0, 24
strh r0, [r1, 0x32]
strh r7, [r1, 0x34]
mov r0, r8
strh r0, [r1, 0x36]
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r0, r4
strh r2, [r0, 0x24]
strh r2, [r0, 0x26]
_08039D2C:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end dp11b_obj_instanciate
thumb_func_start dp11b_obj_free
dp11b_obj_free: @ 8039D48
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r1, 24
cmp r1, 0x1
bne _08039D9C
ldr r6, =gUnknown_020244D0
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r5, r0, 2
adds r3, r5, r1
ldrb r1, [r3]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08039DEA
ldr r2, =gSprites
ldrb r1, [r3, 0x2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x34]
lsls r1, 24
lsrs r4, r1, 24
bl DestroySprite
ldr r0, [r6]
ldr r1, [r0, 0x4]
adds r1, r5, r1
ldrb r2, [r1]
movs r0, 0x3
negs r0, r0
b _08039DD6
.pool
_08039D9C:
ldr r6, =gUnknown_020244D0
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r5, r0, 2
adds r3, r5, r1
ldrb r1, [r3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _08039DEA
ldr r2, =gSprites
ldrb r1, [r3, 0x3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x34]
lsls r1, 24
lsrs r4, r1, 24
bl DestroySprite
ldr r0, [r6]
ldr r1, [r0, 0x4]
adds r1, r5, r1
ldrb r2, [r1]
movs r0, 0x5
negs r0, r0
_08039DD6:
ands r0, r2
strb r0, [r1]
ldr r0, =gSprites
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r1, r0
movs r0, 0
strh r0, [r1, 0x24]
strh r0, [r1, 0x26]
_08039DEA:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end dp11b_obj_free
thumb_func_start objc_dp11b_pingpong
objc_dp11b_pingpong: @ 8039DF8
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x34]
lsls r0, 24
lsrs r5, r0, 24
movs r1, 0x36
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _08039E10
movs r2, 0x2E
ldrsh r0, [r4, r2]
b _08039E14
_08039E10:
movs r1, 0x2E
ldrsh r0, [r4, r1]
_08039E14:
movs r2, 0x32
ldrsh r1, [r4, r2]
bl Sin
ldr r2, =gSprites
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
adds r1, r2
ldrh r2, [r4, 0x32]
adds r0, r2
strh r0, [r1, 0x26]
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x2E]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end objc_dp11b_pingpong
thumb_func_start sub_8039E44
sub_8039E44: @ 8039E44
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08039E5C
ldrh r1, [r2, 0x32]
adds r0, r2, 0
bl BattleAnimateBackSprite
_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, =gWishFutureKnock
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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
_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 MarkBufferBankForExecution
_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 HandleSetPokedexFlag
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 HandleSetPokedexFlag
_0803AE96:
movs r0, 0
bl dp01_build_cmdbuf_x04_4_4_4
ldrb r0, [r4]
bl MarkBufferBankForExecution
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 MarkBufferBankForExecution
_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 MarkBufferBankForExecution
_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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
_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 MarkBufferBankForExecution
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 HandleSetPokedexFlag
_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 MarkBufferBankForExecution
_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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
_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 ItemBattleEffects
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, =gChosenMovesByBanks
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, =BattleTurnPassed
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 BattleTurnPassed
BattleTurnPassed: @ 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 UpdateTurnCounters
lsls r0, 24
cmp r0, 0
beq _0803B9DE
b _0803BB78
_0803B9DE:
bl TurnBasedEffects
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, =gChosenMovesByBanks
_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 BattleTurnPassed
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, =gStringBank
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 AreAllMovesUnusable
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, =gChosenMovesByBanks
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 MarkBufferBankForExecution
b _0803C6C4
.pool
_0803C440:
bl IsPlayerPartyAndPokemonStorageFull
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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
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, =gChosenMovesByBanks
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 MarkBufferBankForExecution
_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, =gChosenMovesByBanks
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, =gChosenMovesByBanks
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, =BattleScript_MoveUsedLoafingAround
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, =gStringBank
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, =gEffectBank
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, =gBank1
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 EmitSetAttributes
ldrb r0, [r4]
bl MarkBufferBankForExecution
_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 EmitSetAttributes
ldrb r0, [r4]
bl MarkBufferBankForExecution
_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 EmitSetAttributes
ldrb r0, [r4]
bl MarkBufferBankForExecution
_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 MarkBufferBankForExecution
MarkBufferBankForExecution: @ 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 MarkBufferBankForExecution
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 MarkBufferBankForExecution
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.