pokeruby/asm/battle_9.s
2017-04-06 23:50:08 -07:00

4081 lines
70 KiB
ArmAsm

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