pokefirered/asm/battle_anim_mons.s

6344 lines
107 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start GetBattlerSpriteCoord
GetBattlerSpriteCoord: @ 8074480
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 24
lsrs r4, r1, 24
cmp r4, 0x4
bhi _08074500
lsls r0, r4, 2
ldr r1, _08074498 @ =_0807449C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08074498: .4byte _0807449C
.align 2, 0
_0807449C:
.4byte _080744B0
.4byte _080744D8
.4byte _080744B0
.4byte _08074500
.4byte _08074500
_080744B0:
ldr r4, _080744D0 @ =gUnknown_83AE01C
adds r0, r5, 0
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 22
ldr r1, _080744D4 @ =gBattleTypeFlags
ldr r1, [r1]
movs r2, 0x1
ands r1, r2
lsls r1, 4
adds r0, r1
adds r0, r4
ldrb r0, [r0]
b _08074588
.align 2, 0
_080744D0: .4byte gUnknown_83AE01C
_080744D4: .4byte gBattleTypeFlags
_080744D8:
ldr r4, _080744F8 @ =gUnknown_83AE01C
adds r0, r5, 0
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 22
ldr r1, _080744FC @ =gBattleTypeFlags
ldr r1, [r1]
movs r2, 0x1
ands r1, r2
lsls r1, 4
adds r0, r1
adds r0, r4
ldrb r0, [r0, 0x1]
b _08074588
.align 2, 0
_080744F8: .4byte gUnknown_83AE01C
_080744FC: .4byte gBattleTypeFlags
_08074500:
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08074538
ldr r0, _0807452C @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _08074570
ldr r1, _08074530 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08074534 @ =gEnemyParty
b _08074556
.align 2, 0
_0807452C: .4byte gBattleSpritesDataPtr
_08074530: .4byte gBattlerPartyIndexes
_08074534: .4byte gEnemyParty
_08074538:
ldr r0, _08074564 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _08074570
ldr r1, _08074568 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0807456C @ =gPlayerParty
_08074556:
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r1, r0, 16
b _08074572
.align 2, 0
_08074564: .4byte gBattleSpritesDataPtr
_08074568: .4byte gBattlerPartyIndexes
_0807456C: .4byte gPlayerParty
_08074570:
ldrh r1, [r1, 0x2]
_08074572:
cmp r4, 0x3
bne _0807457C
adds r0, r5, 0
movs r2, 0x1
b _08074580
_0807457C:
adds r0, r5, 0
movs r2, 0
_08074580:
bl sub_80747AC
lsls r0, 24
lsrs r0, 24
_08074588:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetBattlerSpriteCoord
thumb_func_start sub_8074590
sub_8074590: @ 8074590
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
adds r6, r5, 0
lsls r1, 16
lsrs r4, r1, 16
adds r7, r4, 0
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08074674
cmp r4, 0xC9
bne _08074638
ldr r0, _080745D8 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r5, 2
adds r0, r1, r0
ldrh r0, [r0, 0x2]
cmp r0, 0
bne _080745E4
ldr r1, _080745DC @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080745E0 @ =gPlayerParty
adds r0, r1
movs r1, 0
bl GetMonData
adds r2, r0, 0
b _080745EA
.align 2, 0
_080745D8: .4byte gBattleSpritesDataPtr
_080745DC: .4byte gBattlerPartyIndexes
_080745E0: .4byte gPlayerParty
_080745E4:
ldr r0, _08074620 @ =gTransformedPersonalities
adds r0, r1, r0
ldr r2, [r0]
_080745EA:
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 _08074624
adds r0, r7, 0
b _0807462E
.align 2, 0
_08074620: .4byte gTransformedPersonalities
_08074624:
movs r1, 0xCE
lsls r1, 1
adds r0, r1
lsls r0, 16
lsrs r0, 16
_0807462E:
ldr r1, _08074634 @ =gUnknown_8235E6C
lsls r0, 2
b _0807473C
.align 2, 0
_08074634: .4byte gUnknown_8235E6C
_08074638:
ldr r0, _0807464C @ =0x00000181
cmp r4, r0
bne _08074658
ldr r0, _08074650 @ =gUnknown_83AE050
ldr r1, _08074654 @ =gBattleMonForms
adds r1, r5, r1
ldrb r1, [r1]
adds r1, r0
ldrb r0, [r1]
b _08074740
.align 2, 0
_0807464C: .4byte 0x00000181
_08074650: .4byte gUnknown_83AE050
_08074654: .4byte gBattleMonForms
_08074658:
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bls _08074668
ldr r0, _08074664 @ =gUnknown_8235E6C
b _0807473E
.align 2, 0
_08074664: .4byte gUnknown_8235E6C
_08074668:
ldr r1, _08074670 @ =gUnknown_8235E6C
lsls r0, r4, 2
b _0807473C
.align 2, 0
_08074670: .4byte gUnknown_8235E6C
_08074674:
cmp r4, 0xC9
bne _08074704
ldr r0, _080746A4 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r5, 2
adds r0, r1, r0
ldrh r0, [r0, 0x2]
cmp r0, 0
bne _080746B0
ldr r1, _080746A8 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080746AC @ =gEnemyParty
adds r0, r1
movs r1, 0
bl GetMonData
adds r2, r0, 0
b _080746B6
.align 2, 0
_080746A4: .4byte gBattleSpritesDataPtr
_080746A8: .4byte gBattlerPartyIndexes
_080746AC: .4byte gEnemyParty
_080746B0:
ldr r0, _080746EC @ =gTransformedPersonalities
adds r0, r1, r0
ldr r2, [r0]
_080746B6:
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 _080746F0
adds r0, r7, 0
b _080746FA
.align 2, 0
_080746EC: .4byte gTransformedPersonalities
_080746F0:
movs r1, 0xCE
lsls r1, 1
adds r0, r1
lsls r0, 16
lsrs r0, 16
_080746FA:
ldr r1, _08074700 @ =gUnknown_82349CC
lsls r0, 2
b _0807473C
.align 2, 0
_08074700: .4byte gUnknown_82349CC
_08074704:
ldr r0, _0807471C @ =0x00000181
cmp r4, r0
bne _08074728
ldr r0, _08074720 @ =gUnknown_83AE03C
ldr r1, _08074724 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
b _08074740
.align 2, 0
_0807471C: .4byte 0x00000181
_08074720: .4byte gUnknown_83AE03C
_08074724: .4byte gBattleMonForms
_08074728:
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bls _08074738
ldr r0, _08074734 @ =gUnknown_82349CC
b _0807473E
.align 2, 0
_08074734: .4byte gUnknown_82349CC
_08074738:
ldr r1, _08074748 @ =gUnknown_82349CC
lsls r0, r7, 2
_0807473C:
adds r0, r1
_0807473E:
ldrb r0, [r0, 0x1]
_08074740:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08074748: .4byte gUnknown_82349CC
thumb_func_end sub_8074590
thumb_func_start sub_807474C
sub_807474C: @ 807474C
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 16
lsrs r4, r1, 16
adds r7, r4, 0
movs r5, 0
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0807479E
ldr r0, _0807477C @ =0x00000181
cmp r4, r0
bne _08074788
ldr r0, _08074780 @ =gUnknown_83AE04C
ldr r1, _08074784 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
adds r1, r0
ldrb r5, [r1]
b _0807479E
.align 2, 0
_0807477C: .4byte 0x00000181
_08074780: .4byte gUnknown_83AE04C
_08074784: .4byte gBattleMonForms
_08074788:
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bls _08074798
ldr r0, _08074794 @ =gEnemyMonElevation
b _0807479C
.align 2, 0
_08074794: .4byte gEnemyMonElevation
_08074798:
ldr r0, _080747A8 @ =gEnemyMonElevation
adds r0, r7, r0
_0807479C:
ldrb r5, [r0]
_0807479E:
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080747A8: .4byte gEnemyMonElevation
thumb_func_end sub_807474C
thumb_func_start sub_80747AC
sub_80747AC: @ 80747AC
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 16
lsrs r4, r1, 16
lsls r2, 24
lsrs r7, r2, 24
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080747D4
adds r0, r6, 0
adds r1, r4, 0
bl sub_8074590
lsls r0, 24
lsrs r5, r0, 24
b _080747F2
_080747D4:
adds r0, r6, 0
adds r1, r4, 0
bl sub_8074590
lsls r0, 24
lsrs r5, r0, 24
adds r0, r6, 0
adds r1, r4, 0
bl sub_807474C
lsls r0, 24
lsrs r0, 24
subs r0, r5, r0
lsls r0, 16
lsrs r5, r0, 16
_080747F2:
adds r0, r6, 0
bl GetBattlerPosition
ldr r3, _0807483C @ =gUnknown_83AE01C
lsls r0, 24
lsrs r0, 22
ldr r1, _08074840 @ =gBattleTypeFlags
ldr r1, [r1]
movs r2, 0x1
ands r1, r2
lsls r1, 4
adds r0, r1
adds r0, r3
ldrb r0, [r0, 0x1]
adds r0, r5
lsls r0, 24
lsrs r4, r0, 24
cmp r7, 0
beq _08074832
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0807482C
adds r0, r4, 0
adds r0, 0x8
lsls r0, 24
lsrs r4, r0, 24
_0807482C:
cmp r4, 0x68
bls _08074832
movs r4, 0x68
_08074832:
adds r0, r4, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0807483C: .4byte gUnknown_83AE01C
_08074840: .4byte gBattleTypeFlags
thumb_func_end sub_80747AC
thumb_func_start sub_8074844
sub_8074844: @ 8074844
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r3, r1, 24
movs r0, 0xFD
lsls r0, 24
adds r1, r0
lsrs r1, 24
cmp r1, 0x1
bhi _08074896
ldr r0, _08074874 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0807487C
ldr r1, _08074878 @ =gUnknown_2037F1C
lsls r0, r2, 1
adds r0, r1
ldrh r1, [r0]
b _0807487E
.align 2, 0
_08074874: .4byte gBattleSpritesDataPtr
_08074878: .4byte gUnknown_2037F1C
_0807487C:
ldrh r1, [r1, 0x2]
_0807487E:
cmp r3, 0x3
bne _0807488C
adds r0, r2, 0
movs r2, 0x1
bl sub_80747AC
b _0807489E
_0807488C:
adds r0, r2, 0
movs r2, 0
bl sub_80747AC
b _0807489E
_08074896:
adds r0, r2, 0
adds r1, r3, 0
bl GetBattlerSpriteCoord
_0807489E:
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8074844
thumb_func_start GetBattlerSpriteDefault_Y
GetBattlerSpriteDefault_Y: @ 80748A8
push {lr}
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end GetBattlerSpriteDefault_Y
thumb_func_start GetSubstituteSpriteDefault_Y
GetSubstituteSpriteDefault_Y: @ 80748BC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080748E0
adds r0, r4, 0
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0x80
lsls r1, 13
b _080748F0
_080748E0:
adds r0, r4, 0
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0x88
lsls r1, 13
_080748F0:
adds r0, r1
lsrs r0, 16
lsls r0, 24
lsrs r0, 24
pop {r4}
pop {r1}
bx r1
thumb_func_end GetSubstituteSpriteDefault_Y
thumb_func_start GetGhostSpriteDefault_Y
GetGhostSpriteDefault_Y: @ 8074900
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0807491A
adds r0, r4, 0
movs r1, 0x1
b _0807491E
_0807491A:
adds r0, r4, 0
movs r1, 0x4
_0807491E:
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
pop {r4}
pop {r1}
bx r1
thumb_func_end GetGhostSpriteDefault_Y
thumb_func_start sub_807492C
sub_807492C: @ 807492C
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08074978
ldr r0, _0807496C @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080749B0
ldr r1, _08074970 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08074974 @ =gEnemyParty
b _08074996
.align 2, 0
_0807496C: .4byte gBattleSpritesDataPtr
_08074970: .4byte gBattlerPartyIndexes
_08074974: .4byte gEnemyParty
_08074978:
ldr r0, _080749A4 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080749B0
ldr r1, _080749A8 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080749AC @ =gPlayerParty
_08074996:
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
b _080749B2
.align 2, 0
_080749A4: .4byte gBattleSpritesDataPtr
_080749A8: .4byte gBattlerPartyIndexes
_080749AC: .4byte gPlayerParty
_080749B0:
ldrh r4, [r1, 0x2]
_080749B2:
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080749CC
adds r0, r5, 0
adds r1, r4, 0
bl sub_807474C
subs r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
_080749CC:
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_807492C
thumb_func_start GetAnimBankSpriteId
GetAnimBankSpriteId: @ 80749D4
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
cmp r0, 0
bne _080749FC
ldr r4, _080749F4 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl IsBattlerSpritePresent
lsls r0, 24
cmp r0, 0
beq _08074A4A
ldr r1, _080749F8 @ =gBattlerSpriteIds
ldrb r0, [r4]
b _08074A5A
.align 2, 0
_080749F4: .4byte gBattleAnimAttacker
_080749F8: .4byte gBattlerSpriteIds
_080749FC:
cmp r0, 0x1
bne _08074A1C
ldr r4, _08074A14 @ =gBattleAnimTarget
ldrb r0, [r4]
bl IsBattlerSpritePresent
lsls r0, 24
cmp r0, 0
beq _08074A4A
ldr r1, _08074A18 @ =gBattlerSpriteIds
ldrb r0, [r4]
b _08074A5A
.align 2, 0
_08074A14: .4byte gBattleAnimTarget
_08074A18: .4byte gBattlerSpriteIds
_08074A1C:
cmp r1, 0x2
bne _08074A38
ldr r5, _08074A34 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08074A4A
b _08074A54
.align 2, 0
_08074A34: .4byte gBattleAnimAttacker
_08074A38:
ldr r5, _08074A50 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08074A54
_08074A4A:
movs r0, 0xFF
b _08074A5E
.align 2, 0
_08074A50: .4byte gBattleAnimTarget
_08074A54:
ldr r1, _08074A64 @ =gBattlerSpriteIds
ldrb r0, [r5]
eors r0, r4
_08074A5A:
adds r0, r1
ldrb r0, [r0]
_08074A5E:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08074A64: .4byte gBattlerSpriteIds
thumb_func_end GetAnimBankSpriteId
thumb_func_start StoreSpriteCallbackInData6
StoreSpriteCallbackInData6: @ 8074A68
strh r1, [r0, 0x3A]
lsrs r1, 16
strh r1, [r0, 0x3C]
bx lr
thumb_func_end StoreSpriteCallbackInData6
thumb_func_start SetCallbackToStoredInData
SetCallbackToStoredInData: @ 8074A70
ldrh r2, [r0, 0x3A]
movs r3, 0x3C
ldrsh r1, [r0, r3]
lsls r1, 16
orrs r2, r1
str r2, [r0, 0x1C]
bx lr
thumb_func_end SetCallbackToStoredInData
thumb_func_start sub_8074A80
sub_8074A80: @ 8074A80
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08074AD4
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r2, 0x30
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r2, 0x30
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _08074AC0
ldr r2, _08074ABC @ =0xffffff00
b _08074AC8
.align 2, 0
_08074ABC: .4byte 0xffffff00
_08074AC0:
cmp r0, 0
bge _08074ACC
movs r2, 0x80
lsls r2, 1
_08074AC8:
adds r0, r1, r2
strh r0, [r4, 0x2E]
_08074ACC:
ldrh r0, [r4, 0x34]
subs r0, 0x1
strh r0, [r4, 0x34]
b _08074ADA
_08074AD4:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074ADA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074A80
thumb_func_start sub_8074AE0
sub_8074AE0: @ 8074AE0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08074B50
movs r2, 0x2E
ldrsh r0, [r4, r2]
ldrh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 24
ldrh r2, [r4, 0x30]
adds r1, r2
lsls r1, 16
asrs r1, 16
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 24
ldrh r2, [r4, 0x30]
adds r1, r2
lsls r1, 16
asrs r1, 16
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x36]
ldrh r2, [r4, 0x38]
adds r0, r2
strh r0, [r4, 0x38]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _08074B3C
ldr r2, _08074B38 @ =0xffffff00
b _08074B44
.align 2, 0
_08074B38: .4byte 0xffffff00
_08074B3C:
cmp r0, 0
bge _08074B48
movs r2, 0x80
lsls r2, 1
_08074B44:
adds r0, r1, r2
strh r0, [r4, 0x2E]
_08074B48:
ldrh r0, [r4, 0x34]
subs r0, 0x1
strh r0, [r4, 0x34]
b _08074B56
_08074B50:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074B56:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074AE0
thumb_func_start sub_8074B5C
sub_8074B5C: @ 8074B5C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08074BD8
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r2, 0x30
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r2, 0x30
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x38]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _08074BA4
ldr r2, _08074BA0 @ =0xffffff00
b _08074BAC
.align 2, 0
_08074BA0: .4byte 0xffffff00
_08074BA4:
cmp r0, 0
bge _08074BB0
movs r2, 0x80
lsls r2, 1
_08074BAC:
adds r0, r1, r2
strh r0, [r4, 0x2E]
_08074BB0:
ldrh r1, [r4, 0x36]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r0, 0xFF
ble _08074BC4
ldr r2, _08074BC0 @ =0xffffff00
b _08074BCC
.align 2, 0
_08074BC0: .4byte 0xffffff00
_08074BC4:
cmp r0, 0
bge _08074BD0
movs r2, 0x80
lsls r2, 1
_08074BCC:
adds r0, r1, r2
strh r0, [r4, 0x36]
_08074BD0:
ldrh r0, [r4, 0x34]
subs r0, 0x1
strh r0, [r4, 0x34]
b _08074BDE
_08074BD8:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074BDE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074B5C
thumb_func_start sub_8074BE4
sub_8074BE4: @ 8074BE4
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08074C38
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r2, 0x30
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r2, 0x36
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _08074C24
ldr r2, _08074C20 @ =0xffffff00
b _08074C2C
.align 2, 0
_08074C20: .4byte 0xffffff00
_08074C24:
cmp r0, 0
bge _08074C30
movs r2, 0x80
lsls r2, 1
_08074C2C:
adds r0, r1, r2
strh r0, [r4, 0x2E]
_08074C30:
ldrh r0, [r4, 0x34]
subs r0, 0x1
strh r0, [r4, 0x34]
b _08074C3E
_08074C38:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074C3E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074BE4
thumb_func_start sub_8074C44
sub_8074C44: @ 8074C44
push {lr}
adds r1, r0, 0
ldrh r2, [r1, 0x2E]
movs r3, 0x2E
ldrsh r0, [r1, r3]
cmp r0, 0
ble _08074C58
subs r0, r2, 0x1
strh r0, [r1, 0x2E]
b _08074C5E
_08074C58:
adds r0, r1, 0
bl SetCallbackToStoredInData
_08074C5E:
pop {r0}
bx r0
thumb_func_end sub_8074C44
thumb_func_start sub_8074C64
sub_8074C64: @ 8074C64
push {r4,lr}
adds r4, r0, 0
bl sub_8074C80
ldr r1, _08074C7C @ =sub_8074CD0
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08074C7C: .4byte sub_8074CD0
thumb_func_end sub_8074C64
thumb_func_start sub_8074C80
sub_8074C80: @ 8074C80
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x30
ldrsh r1, [r4, r0]
movs r2, 0x32
ldrsh r0, [r4, r2]
cmp r1, r0
ble _08074C96
ldrh r0, [r4, 0x2E]
negs r0, r0
strh r0, [r4, 0x2E]
_08074C96:
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r2, 0x30
ldrsh r1, [r4, r2]
subs r0, r1
ldrh r5, [r4, 0x2E]
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl __divsi3
cmp r0, 0
bge _08074CB0
negs r0, r0
_08074CB0:
strh r0, [r4, 0x2E]
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r2, 0x34
ldrsh r1, [r4, r2]
subs r0, r1
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl __divsi3
strh r0, [r4, 0x32]
strh r5, [r4, 0x30]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8074C80
thumb_func_start sub_8074CD0
sub_8074CD0: @ 8074CD0
push {lr}
adds r1, r0, 0
ldrh r2, [r1, 0x2E]
movs r3, 0x2E
ldrsh r0, [r1, r3]
cmp r0, 0
ble _08074CF4
subs r0, r2, 0x1
strh r0, [r1, 0x2E]
ldrh r0, [r1, 0x30]
ldrh r2, [r1, 0x24]
adds r0, r2
strh r0, [r1, 0x24]
ldrh r0, [r1, 0x32]
ldrh r3, [r1, 0x26]
adds r0, r3
strh r0, [r1, 0x26]
b _08074CFA
_08074CF4:
adds r0, r1, 0
bl SetCallbackToStoredInData
_08074CFA:
pop {r0}
bx r0
thumb_func_end sub_8074CD0
thumb_func_start sub_8074D00
sub_8074D00: @ 8074D00
push {lr}
adds r2, r0, 0
ldrh r1, [r2, 0x2E]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
ble _08074D30
subs r0, r1, 0x1
strh r0, [r2, 0x2E]
ldrh r0, [r2, 0x30]
ldrh r1, [r2, 0x34]
adds r0, r1
strh r0, [r2, 0x34]
ldrh r1, [r2, 0x32]
ldrh r3, [r2, 0x36]
adds r1, r3
strh r1, [r2, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r2, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r2, 0x26]
b _08074D36
_08074D30:
adds r0, r2, 0
bl SetCallbackToStoredInData
_08074D36:
pop {r0}
bx r0
thumb_func_end sub_8074D00
thumb_func_start sub_8074D3C
sub_8074D3C: @ 8074D3C
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _08074D6C
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x34]
adds r0, r1
strh r0, [r4, 0x34]
ldrh r1, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r1, r2
strh r1, [r4, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r4, 0x26]
b _08074D72
_08074D6C:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074D72:
adds r0, r4, 0
bl UpdateMonIconFrame
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074D3C
thumb_func_start sub_8074D80
sub_8074D80: @ 8074D80
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x26]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
ldr r5, _08074DBC @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
ldr r0, _08074DC0 @ =sub_8074C64
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08074DBC: .4byte gBattleAnimTarget
_08074DC0: .4byte sub_8074C64
thumb_func_end sub_8074D80
thumb_func_start TranslateMonSpriteLinear
TranslateMonSpriteLinear: @ 8074DC4
push {r4,lr}
adds r3, r0, 0
ldrh r1, [r3, 0x2E]
movs r2, 0x2E
ldrsh r0, [r3, r2]
cmp r0, 0
ble _08074E08
subs r0, r1, 0x1
strh r0, [r3, 0x2E]
ldr r2, _08074E04 @ =gSprites
movs r4, 0x34
ldrsh r1, [r3, r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r3, 0x30]
ldrh r4, [r0, 0x24]
adds r1, r4
strh r1, [r0, 0x24]
movs r0, 0x34
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r3, 0x32]
ldrh r2, [r0, 0x26]
adds r1, r2
strh r1, [r0, 0x26]
b _08074E0E
.align 2, 0
_08074E04: .4byte gSprites
_08074E08:
adds r0, r3, 0
bl SetCallbackToStoredInData
_08074E0E:
pop {r4}
pop {r0}
bx r0
thumb_func_end TranslateMonSpriteLinear
thumb_func_start TranslateMonSpriteLinearFixedPoint
TranslateMonSpriteLinearFixedPoint: @ 8074E14
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _08074E64
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
ldrh r0, [r4, 0x34]
adds r1, r0
strh r1, [r4, 0x34]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
ldr r3, _08074E60 @ =gSprites
movs r0, 0x38
ldrsh r2, [r4, r0]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
lsls r1, 16
asrs r1, 24
strh r1, [r0, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r1, 0x26]
b _08074E6A
.align 2, 0
_08074E60: .4byte gSprites
_08074E64:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074E6A:
pop {r4}
pop {r0}
bx r0
thumb_func_end TranslateMonSpriteLinearFixedPoint
thumb_func_start sub_8074E70
sub_8074E70: @ 8074E70
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _08074ED2
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x32]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r1, r0
strh r1, [r4, 0x32]
ldrh r1, [r4, 0x36]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x34]
adds r1, r0
strh r1, [r4, 0x36]
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r2, 0x38
ldrsh r1, [r4, r2]
bl __modsi3
cmp r0, 0
bne _08074ED8
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08074ED8
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]
b _08074ED8
_08074ED2:
adds r0, r4, 0
bl SetCallbackToStoredInData
_08074ED8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074E70
thumb_func_start move_anim_8074EE0
move_anim_8074EE0: @ 8074EE0
push {r4,lr}
adds r4, r0, 0
bl FreeSpriteOamMatrix
adds r0, r4, 0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end move_anim_8074EE0
thumb_func_start sub_8074EF4
sub_8074EF4: @ 8074EF4
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x26]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
ldr r5, _08074F30 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
ldr r0, _08074F34 @ =sub_8074C64
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08074F30: .4byte gBattleAnimAttacker
_08074F34: .4byte sub_8074C64
thumb_func_end sub_8074EF4
thumb_func_start sub_8074F38
sub_8074F38: @ 8074F38
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x38]
bl ResetPaletteStructByUid
adds r0, r4, 0
bl move_anim_8074EE0
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074F38
thumb_func_start sub_8074F50
sub_8074F50: @ 8074F50
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08074F66
adds r0, r2, 0
bl SetCallbackToStoredInData
_08074F66:
pop {r0}
bx r0
thumb_func_end sub_8074F50
thumb_func_start sub_8074F6C
sub_8074F6C: @ 8074F6C
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08074F82
adds r0, r2, 0
bl SetCallbackToStoredInData
_08074F82:
pop {r0}
bx r0
thumb_func_end sub_8074F6C
thumb_func_start sub_8074F88
sub_8074F88: @ 8074F88
push {r4,lr}
adds r4, r0, 0
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074F88
thumb_func_start sub_8074FA8
sub_8074FA8: @ 8074FA8
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8074FA8
thumb_func_start sub_8074FCC
sub_8074FCC: @ 8074FCC
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _08074FF4 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08074FF4: .4byte gBattleAnimAttacker
thumb_func_end sub_8074FCC
thumb_func_start sub_8074FF8
sub_8074FF8: @ 8074FF8
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r4, r0, 0
lsls r1, 16
lsrs r5, r1, 16
mov r8, r5
ldr r7, _08075030 @ =gBattleAnimAttacker
ldrb r0, [r7]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _08075034 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r6, r0
bhi _08075044
cmp r6, r0
bcs _08075038
lsls r0, r5, 16
b _08075054
.align 2, 0
_08075030: .4byte gBattleAnimAttacker
_08075034: .4byte gBattleAnimTarget
_08075038:
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08075050
_08075044:
ldrh r1, [r4, 0x20]
lsls r0, r5, 16
asrs r0, 16
subs r1, r0
strh r1, [r4, 0x20]
b _0807505C
_08075050:
mov r1, r8
lsls r0, r1, 16
_08075054:
asrs r0, 16
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
_0807505C:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8074FF8
thumb_func_start sub_8075068
sub_8075068: @ 8075068
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
movs r5, 0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
movs r0, 0x2E
ldrsh r1, [r4, r0]
movs r0, 0x80
lsls r0, 8
bl __divsi3
strh r0, [r4, 0x3A]
strh r5, [r4, 0x3C]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8075068
thumb_func_start AnimateBallThrow
AnimateBallThrow: @ 8075094
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080750C0
ldrh r0, [r4, 0x3A]
ldrh r1, [r4, 0x3C]
adds r0, r1
strh r0, [r4, 0x3C]
lsls r0, 16
lsrs r0, 24
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Sin
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
movs r0, 0
b _080750C2
_080750C0:
movs r0, 0x1
_080750C2:
pop {r4}
pop {r1}
bx r1
thumb_func_end AnimateBallThrow
thumb_func_start sub_80750C8
sub_80750C8: @ 80750C8
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080750F4
ldrh r0, [r4, 0x3A]
ldrh r1, [r4, 0x3C]
adds r0, r1
strh r0, [r4, 0x3C]
lsls r0, 16
lsrs r0, 24
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r0, 0
b _080750F6
_080750F4:
movs r0, 0x1
_080750F6:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80750C8
thumb_func_start SetSpritePrimaryCoordsFromSecondaryCoords
SetSpritePrimaryCoordsFromSecondaryCoords: @ 80750FC
ldrh r1, [r0, 0x24]
ldrh r2, [r0, 0x20]
adds r1, r2
movs r2, 0
strh r1, [r0, 0x20]
ldrh r1, [r0, 0x26]
ldrh r3, [r0, 0x22]
adds r1, r3
strh r1, [r0, 0x22]
strh r2, [r0, 0x24]
strh r2, [r0, 0x26]
bx lr
thumb_func_end SetSpritePrimaryCoordsFromSecondaryCoords
thumb_func_start sub_8075114
sub_8075114: @ 8075114
push {r4,r5,lr}
adds r5, r0, 0
lsls r1, 24
cmp r1, 0
bne _0807513C
ldr r4, _08075158 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8074844
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074844
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
_0807513C:
ldr r4, _0807515C @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r4, r0]
adds r0, r5, 0
bl sub_8074FF8
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08075158: .4byte gBattleAnimTarget
_0807515C: .4byte gBattleAnimArgs
thumb_func_end sub_8075114
thumb_func_start sub_8075160
sub_8075160: @ 8075160
push {r4,r5,lr}
adds r5, r0, 0
lsls r1, 24
cmp r1, 0
bne _08075184
ldr r4, _08075180 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8074844
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
b _08075198
.align 2, 0
_08075180: .4byte gBattleAnimAttacker
_08075184:
ldr r4, _080751BC @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074844
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
_08075198:
bl sub_8074844
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r4, _080751C0 @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r4, r0]
adds r0, r5, 0
bl sub_8074FF8
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080751BC: .4byte gBattleAnimAttacker
_080751C0: .4byte gBattleAnimArgs
thumb_func_end sub_8075160
thumb_func_start GetBattlerSide
GetBattlerSide: @ 80751C4
lsls r0, 24
lsrs r0, 24
ldr r1, _080751D4 @ =gBattlerPositions
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
bx lr
.align 2, 0
_080751D4: .4byte gBattlerPositions
thumb_func_end GetBattlerSide
thumb_func_start GetBattlerPosition
GetBattlerPosition: @ 80751D8
lsls r0, 24
lsrs r0, 24
ldr r1, _080751E4 @ =gBattlerPositions
adds r0, r1
ldrb r0, [r0]
bx lr
.align 2, 0
_080751E4: .4byte gBattlerPositions
thumb_func_end GetBattlerPosition
thumb_func_start GetBattlerAtPosition
GetBattlerAtPosition: @ 80751E8
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
movs r1, 0
ldr r0, _0807521C @ =gBattlersCount
ldrb r2, [r0]
cmp r1, r2
bcs _08075212
ldr r4, _08075220 @ =gBattlerPositions
ldrb r0, [r4]
cmp r0, r3
beq _08075212
_08075200:
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r2
bcs _08075212
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, r3
bne _08075200
_08075212:
adds r0, r1, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0807521C: .4byte gBattlersCount
_08075220: .4byte gBattlerPositions
thumb_func_end GetBattlerAtPosition
thumb_func_start IsBattlerSpritePresent
IsBattlerSpritePresent: @ 8075224
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
ldr r0, _08075254 @ =gBattlerPositions
adds r0, r4, r0
ldrb r0, [r0]
cmp r0, 0xFF
beq _08075288
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08075260
ldr r1, _08075258 @ =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0807525C @ =gEnemyParty
b _0807526E
.align 2, 0
_08075254: .4byte gBattlerPositions
_08075258: .4byte gBattlerPartyIndexes
_0807525C: .4byte gEnemyParty
_08075260:
ldr r1, _08075280 @ =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08075284 @ =gPlayerParty
_0807526E:
adds r0, r1
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08075288
movs r0, 0x1
b _0807528A
.align 2, 0
_08075280: .4byte gBattlerPartyIndexes
_08075284: .4byte gPlayerParty
_08075288:
movs r0, 0
_0807528A:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end IsBattlerSpritePresent
thumb_func_start IsDoubleBattle
IsDoubleBattle: @ 8075290
ldr r0, _0807529C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
bx lr
.align 2, 0
_0807529C: .4byte gBattleTypeFlags
thumb_func_end IsDoubleBattle
thumb_func_start sub_80752A0
sub_80752A0: @ 80752A0
ldr r1, _080752C0 @ =gUnknown_2022BB8
ldr r1, [r1]
str r1, [r0]
ldr r1, _080752C4 @ =gUnknown_2022BBC
ldr r1, [r1]
str r1, [r0, 0x4]
movs r2, 0
movs r1, 0x8
strb r1, [r0, 0x8]
movs r1, 0x1
strb r1, [r0, 0x9]
movs r1, 0x80
lsls r1, 2
strh r1, [r0, 0xA]
strh r2, [r0, 0xC]
bx lr
.align 2, 0
_080752C0: .4byte gUnknown_2022BB8
_080752C4: .4byte gUnknown_2022BBC
thumb_func_end sub_80752A0
thumb_func_start sub_80752C8
sub_80752C8: @ 80752C8
push {lr}
adds r2, r0, 0
cmp r1, 0x1
bne _080752D6
bl sub_80752A0
b _080752F4
_080752D6:
ldr r0, _080752F8 @ =gUnknown_2022BB8
ldr r0, [r0]
str r0, [r2]
ldr r0, _080752FC @ =gUnknown_2022BBC
ldr r0, [r0]
str r0, [r2, 0x4]
movs r1, 0
movs r0, 0x9
strb r0, [r2, 0x8]
movs r0, 0x2
strb r0, [r2, 0x9]
movs r0, 0xC0
lsls r0, 2
strh r0, [r2, 0xA]
strh r1, [r2, 0xC]
_080752F4:
pop {r0}
bx r0
.align 2, 0
_080752F8: .4byte gUnknown_2022BB8
_080752FC: .4byte gUnknown_2022BBC
thumb_func_end sub_80752C8
thumb_func_start sub_8075300
sub_8075300: @ 8075300
push {r4,lr}
adds r4, r0, 0
ldr r0, _08075334 @ =gUnknown_2022BB8
ldr r0, [r0]
str r0, [r4]
ldr r0, _08075338 @ =gUnknown_2022BBC
ldr r0, [r0]
str r0, [r4, 0x4]
ldr r0, _0807533C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x1
bne _08075340
movs r0, 0
movs r1, 0x8
strb r1, [r4, 0x8]
strb r2, [r4, 0x9]
movs r1, 0x80
lsls r1, 2
strh r1, [r4, 0xA]
strh r0, [r4, 0xC]
b _08075352
.align 2, 0
_08075334: .4byte gUnknown_2022BB8
_08075338: .4byte gUnknown_2022BBC
_0807533C: .4byte gBattleAnimAttacker
_08075340:
movs r1, 0
movs r0, 0x9
strb r0, [r4, 0x8]
movs r0, 0x2
strb r0, [r4, 0x9]
movs r0, 0xC0
lsls r0, 2
strh r0, [r4, 0xA]
strh r1, [r4, 0xC]
_08075352:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075300
thumb_func_start sub_8075358
sub_8075358: @ 8075358
push {r4,lr}
sub sp, 0x20
adds r4, r0, 0
add r0, sp, 0xC
adds r1, r4, 0
bl sub_80752C8
movs r0, 0
str r0, [sp, 0x1C]
add r0, sp, 0x1C
ldr r1, [sp, 0xC]
ldr r2, _080753B0 @ =0x05000800
bl CpuSet
lsls r4, 24
lsrs r4, 24
ldr r1, [sp, 0xC]
movs r2, 0x80
lsls r2, 6
add r0, sp, 0xC
ldrh r3, [r0, 0xA]
adds r0, r4, 0
bl LoadBgTiles
movs r0, 0x20
str r0, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
adds r0, r4, 0
bl CopyBgTilemapBufferToVram
add sp, 0x20
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080753B0: .4byte 0x05000800
thumb_func_end sub_8075358
thumb_func_start sub_80753B4
sub_80753B4: @ 80753B4
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x4
adds r5, r0, 0
mov r8, r1
adds r6, r2, 0
movs r0, 0
str r0, [sp]
ldr r4, _080753FC @ =gUnknown_2022BB8
ldr r1, [r4]
ldr r2, _08075400 @ =0x05000800
mov r0, sp
bl CpuSet
ldr r1, [r4]
mov r0, r8
bl LZDecompressWram
lsls r5, 24
lsrs r5, 24
ldr r1, [r4]
movs r2, 0x80
lsls r2, 6
lsls r6, 16
lsrs r6, 16
adds r0, r5, 0
adds r3, r6, 0
bl LoadBgTiles
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080753FC: .4byte gUnknown_2022BB8
_08075400: .4byte 0x05000800
thumb_func_end sub_80753B4
thumb_func_start sub_8075404
sub_8075404: @ 8075404
push {r4,r5,lr}
sub sp, 0xC
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x20
str r0, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBuffer
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8075404
thumb_func_start sub_807543C
sub_807543C: @ 807543C
push {r4,lr}
adds r4, r0, 0
bl sub_8075404
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl CopyBgTilemapBufferToVram
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_807543C
thumb_func_start sub_8075454
sub_8075454: @ 8075454
movs r0, 0x2
bx lr
thumb_func_end sub_8075454
thumb_func_start sub_8075458
sub_8075458: @ 8075458
push {lr}
lsls r0, 24
cmp r0, 0
bne _08075476
movs r0, 0x3
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0x3
movs r1, 0x1
movs r2, 0x1
bl SetAnimBgAttribute
b _0807548A
_08075476:
movs r0, 0x3
movs r1, 0
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x3
movs r1, 0x1
movs r2, 0
bl SetAnimBgAttribute
_0807548A:
pop {r0}
bx r0
thumb_func_end sub_8075458
thumb_func_start sub_8075490
sub_8075490: @ 8075490
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl InitSpriteDataForLinearTranslation
ldr r1, _080754B4 @ =sub_8074D3C
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080754B4: .4byte sub_8074D3C
thumb_func_end sub_8075490
thumb_func_start InitSpriteDataForLinearTranslation
InitSpriteDataForLinearTranslation: @ 80754B8
push {r4-r6,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x32]
ldrh r1, [r5, 0x30]
subs r0, r1
ldrh r4, [r5, 0x36]
ldrh r1, [r5, 0x34]
subs r4, r1
lsls r4, 24
lsrs r4, 16
lsls r0, 24
asrs r0, 16
movs r2, 0x2E
ldrsh r1, [r5, r2]
bl __divsi3
movs r6, 0
strh r0, [r5, 0x30]
lsls r4, 16
asrs r4, 16
movs r0, 0x2E
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl __divsi3
strh r0, [r5, 0x32]
strh r6, [r5, 0x36]
strh r6, [r5, 0x34]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end InitSpriteDataForLinearTranslation
thumb_func_start obj_translate_based_on_private_1_2_3_4
obj_translate_based_on_private_1_2_3_4: @ 80754F8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r7, r0, 0
movs r0, 0x32
ldrsh r1, [r7, r0]
movs r2, 0x30
ldrsh r0, [r7, r2]
subs r1, r0
movs r3, 0x36
ldrsh r2, [r7, r3]
movs r3, 0x34
ldrsh r0, [r7, r3]
subs r2, r0
lsrs r0, r1, 31
mov r8, r0
lsrs r3, r2, 31
mov r9, r3
cmp r1, 0
bge _08075524
negs r1, r1
_08075524:
lsls r0, r1, 24
lsrs r6, r0, 16
adds r0, r2, 0
cmp r0, 0
bge _08075530
negs r0, r0
_08075530:
lsls r0, 24
lsrs r5, r0, 16
movs r0, 0x2E
ldrsh r4, [r7, r0]
adds r0, r6, 0
adds r1, r4, 0
bl __divsi3
lsls r0, 16
lsrs r6, r0, 16
adds r0, r5, 0
adds r1, r4, 0
bl __divsi3
lsls r0, 16
lsrs r5, r0, 16
mov r2, r8
cmp r2, 0
beq _0807555C
movs r0, 0x1
orrs r6, r0
b _08075560
_0807555C:
ldr r0, _0807556C @ =0x0000fffe
ands r6, r0
_08075560:
mov r3, r9
cmp r3, 0
beq _08075570
movs r0, 0x1
orrs r5, r0
b _08075574
.align 2, 0
_0807556C: .4byte 0x0000fffe
_08075570:
ldr r0, _0807558C @ =0x0000fffe
ands r5, r0
_08075574:
movs r0, 0
strh r6, [r7, 0x30]
strh r5, [r7, 0x32]
strh r0, [r7, 0x36]
strh r0, [r7, 0x34]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0807558C: .4byte 0x0000fffe
thumb_func_end obj_translate_based_on_private_1_2_3_4
thumb_func_start StartAnimLinearTranslation
StartAnimLinearTranslation: @ 8075590
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
ldr r1, _080755B4 @ =sub_807563C
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080755B4: .4byte sub_807563C
thumb_func_end StartAnimLinearTranslation
thumb_func_start sub_80755B8
sub_80755B8: @ 80755B8
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
ldr r1, _080755DC @ =sub_8075658
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080755DC: .4byte sub_8075658
thumb_func_end sub_80755B8
thumb_func_start sub_80755E0
sub_80755E0: @ 80755E0
push {r4-r6,lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080755F0
movs r0, 0x1
b _08075634
_080755F0:
ldrh r1, [r2, 0x30]
ldrh r4, [r2, 0x32]
ldrh r6, [r2, 0x34]
ldrh r5, [r2, 0x36]
adds r0, r6, r1
lsls r3, r0, 16
lsrs r6, r3, 16
adds r0, r5, r4
lsls r0, 16
lsrs r5, r0, 16
movs r0, 0x1
ands r1, r0
cmp r1, 0
beq _08075612
lsrs r0, r3, 24
negs r0, r0
b _08075614
_08075612:
lsrs r0, r3, 24
_08075614:
strh r0, [r2, 0x24]
movs r0, 0x1
ands r4, r0
cmp r4, 0
beq _08075624
lsrs r0, r5, 8
negs r0, r0
b _08075626
_08075624:
lsrs r0, r5, 8
_08075626:
strh r0, [r2, 0x26]
strh r6, [r2, 0x34]
strh r5, [r2, 0x36]
ldrh r0, [r2, 0x2E]
subs r0, 0x1
strh r0, [r2, 0x2E]
movs r0, 0
_08075634:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80755E0
thumb_func_start sub_807563C
sub_807563C: @ 807563C
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _08075650
adds r0, r4, 0
bl SetCallbackToStoredInData
_08075650:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_807563C
thumb_func_start sub_8075658
sub_8075658: @ 8075658
push {r4,lr}
adds r4, r0, 0
bl sub_801236C
adds r0, r4, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _08075672
adds r0, r4, 0
bl SetCallbackToStoredInData
_08075672:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075658
thumb_func_start sub_8075678
sub_8075678: @ 8075678
push {r4,lr}
adds r4, r0, 0
movs r0, 0x32
ldrsh r1, [r4, r0]
movs r2, 0x30
ldrsh r0, [r4, r2]
subs r0, r1, r0
cmp r0, 0
bge _0807568C
negs r0, r0
_0807568C:
lsls r0, 8
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl __divsi3
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075678
thumb_func_start sub_80756A4
sub_80756A4: @ 80756A4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl sub_8075678
ldr r1, _080756C8 @ =sub_807563C
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080756C8: .4byte sub_807563C
thumb_func_end sub_80756A4
thumb_func_start sub_80756CC
sub_80756CC: @ 80756CC
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r7, r0, 0
movs r0, 0x32
ldrsh r1, [r7, r0]
movs r2, 0x30
ldrsh r0, [r7, r2]
subs r1, r0
movs r3, 0x36
ldrsh r2, [r7, r3]
movs r3, 0x34
ldrsh r0, [r7, r3]
subs r2, r0
lsrs r0, r1, 31
mov r8, r0
lsrs r3, r2, 31
mov r9, r3
cmp r1, 0
bge _080756F8
negs r1, r1
_080756F8:
lsls r0, r1, 20
lsrs r6, r0, 16
adds r0, r2, 0
cmp r0, 0
bge _08075704
negs r0, r0
_08075704:
lsls r0, 20
lsrs r5, r0, 16
movs r0, 0x2E
ldrsh r4, [r7, r0]
adds r0, r6, 0
adds r1, r4, 0
bl __divsi3
lsls r0, 16
lsrs r6, r0, 16
adds r0, r5, 0
adds r1, r4, 0
bl __divsi3
lsls r0, 16
lsrs r5, r0, 16
mov r2, r8
cmp r2, 0
beq _08075730
movs r0, 0x1
orrs r6, r0
b _08075734
_08075730:
ldr r0, _08075740 @ =0x0000fffe
ands r6, r0
_08075734:
mov r3, r9
cmp r3, 0
beq _08075744
movs r0, 0x1
orrs r5, r0
b _08075748
.align 2, 0
_08075740: .4byte 0x0000fffe
_08075744:
ldr r0, _08075760 @ =0x0000fffe
ands r5, r0
_08075748:
movs r0, 0
strh r6, [r7, 0x30]
strh r5, [r7, 0x32]
strh r0, [r7, 0x36]
strh r0, [r7, 0x34]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075760: .4byte 0x0000fffe
thumb_func_end sub_80756CC
thumb_func_start sub_8075764
sub_8075764: @ 8075764
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl sub_80756CC
ldr r1, _08075788 @ =sub_80757E8
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08075788: .4byte sub_80757E8
thumb_func_end sub_8075764
thumb_func_start sub_807578C
sub_807578C: @ 807578C
push {r4-r6,lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0807579C
movs r0, 0x1
b _080757E0
_0807579C:
ldrh r1, [r2, 0x30]
ldrh r4, [r2, 0x32]
ldrh r6, [r2, 0x34]
ldrh r5, [r2, 0x36]
adds r0, r6, r1
lsls r3, r0, 16
lsrs r6, r3, 16
adds r0, r5, r4
lsls r0, 16
lsrs r5, r0, 16
movs r0, 0x1
ands r1, r0
cmp r1, 0
beq _080757BE
lsrs r0, r3, 20
negs r0, r0
b _080757C0
_080757BE:
lsrs r0, r3, 20
_080757C0:
strh r0, [r2, 0x24]
movs r0, 0x1
ands r4, r0
cmp r4, 0
beq _080757D0
lsrs r0, r5, 4
negs r0, r0
b _080757D2
_080757D0:
lsrs r0, r5, 4
_080757D2:
strh r0, [r2, 0x26]
strh r6, [r2, 0x34]
strh r5, [r2, 0x36]
ldrh r0, [r2, 0x2E]
subs r0, 0x1
strh r0, [r2, 0x2E]
movs r0, 0
_080757E0:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_807578C
thumb_func_start sub_80757E8
sub_80757E8: @ 80757E8
push {r4,lr}
adds r4, r0, 0
bl sub_807578C
lsls r0, 24
cmp r0, 0
beq _080757FC
adds r0, r4, 0
bl SetCallbackToStoredInData
_080757FC:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80757E8
thumb_func_start sub_8075804
sub_8075804: @ 8075804
push {r4,lr}
adds r4, r0, 0
movs r0, 0x32
ldrsh r1, [r4, r0]
movs r2, 0x30
ldrsh r0, [r4, r2]
subs r0, r1, r0
cmp r0, 0
bge _08075818
negs r0, r0
_08075818:
lsls r0, 4
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl __divsi3
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl sub_80756CC
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075804
thumb_func_start sub_8075830
sub_8075830: @ 8075830
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
adds r0, r4, 0
bl sub_8075804
ldr r1, _08075854 @ =sub_80757E8
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08075854: .4byte sub_80757E8
thumb_func_end sub_8075830
thumb_func_start SetSpriteRotScale
SetSpriteRotScale: @ 8075858
push {r4,r5,lr}
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
lsls r3, 16
lsrs r3, 16
ldr r5, _080758D0 @ =0xffff0000
lsls r2, 16
lsrs r1, 16
orrs r1, r2
str r1, [sp]
ldr r0, [sp, 0x4]
ands r0, r5
orrs r0, r3
str r0, [sp, 0x4]
bl sub_80758DC
lsls r0, 24
cmp r0, 0
beq _08075894
mov r0, sp
ldrh r0, [r0]
negs r0, r0
lsls r0, 16
lsrs r0, 16
ldr r1, [sp]
ands r1, r5
orrs r1, r0
str r1, [sp]
_08075894:
ldr r1, _080758D4 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x3]
lsls r4, 26
lsrs r4, 27
add r5, sp, 0x8
mov r0, sp
adds r1, r5, 0
movs r2, 0x1
movs r3, 0x2
bl ObjAffineSet
ldr r0, _080758D8 @ =gOamMatrices
lsls r4, 3
adds r4, r0
ldrh r0, [r5]
strh r0, [r4]
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x2]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x4]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x6]
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080758D0: .4byte 0xffff0000
_080758D4: .4byte gSprites
_080758D8: .4byte gOamMatrices
thumb_func_end SetSpriteRotScale
thumb_func_start sub_80758DC
sub_80758DC: @ 80758DC
movs r0, 0
bx lr
thumb_func_end sub_80758DC
thumb_func_start PrepareBattlerSpriteForRotScale
PrepareBattlerSpriteForRotScale: @ 80758E0
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r5, r1, 24
ldr r2, _08075978 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r4, r1, r2
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075914
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_08075914:
movs r7, 0x3
ands r5, r7
lsls r2, r5, 2
ldrb r1, [r4, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
strb r0, [r4, 0x1]
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4, 0x1]
lsls r0, 30
cmp r0, 0
bne _0807595C
ldr r0, _0807597C @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r6, 1
adds r0, r6
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x6]
movs r0, 0x1F
ands r1, r0
lsls r1, 1
ldrb r2, [r4, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x3]
_0807595C:
ldrb r3, [r4, 0x1]
orrs r3, r7
strb r3, [r4, 0x1]
lsrs r1, r3, 6
ldrb r2, [r4, 0x3]
lsrs r2, 6
lsls r3, 30
lsrs r3, 30
adds r0, r4, 0
bl CalcCenterToCornerVec
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075978: .4byte gSprites
_0807597C: .4byte gBattleSpritesDataPtr
thumb_func_end PrepareBattlerSpriteForRotScale
thumb_func_start ResetSpriteRotScale
ResetSpriteRotScale: @ 8075980
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r2, 0x80
lsls r2, 1
adds r0, r4, 0
adds r1, r2, 0
movs r3, 0
bl SetSpriteRotScale
ldr r1, _080759D8 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
ldrb r2, [r0, 0x1]
movs r1, 0x4
negs r1, r1
ands r1, r2
movs r2, 0x1
orrs r1, r2
movs r2, 0xD
negs r2, r2
ands r1, r2
strb r1, [r0, 0x1]
adds r3, r0, 0
adds r3, 0x2C
ldrb r2, [r3]
movs r1, 0x7F
ands r1, r2
strb r1, [r3]
ldrb r3, [r0, 0x1]
lsrs r1, r3, 6
ldrb r2, [r0, 0x3]
lsrs r2, 6
lsls r3, 30
lsrs r3, 30
bl CalcCenterToCornerVec
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080759D8: .4byte gSprites
thumb_func_end ResetSpriteRotScale
thumb_func_start sub_80759DC
sub_80759DC: @ 80759DC
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _08075A14 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r2, r1, r2
ldrb r0, [r2, 0x3]
lsls r0, 26
lsrs r0, 27
ldr r1, _08075A18 @ =gOamMatrices
lsls r0, 3
adds r0, r1
ldrh r1, [r0, 0x4]
movs r3, 0x4
ldrsh r0, [r0, r3]
cmp r0, 0
bge _08075A08
negs r0, r0
lsls r0, 16
lsrs r1, r0, 16
_08075A08:
lsls r0, r1, 16
asrs r0, 19
strh r0, [r2, 0x26]
pop {r0}
bx r0
.align 2, 0
_08075A14: .4byte gSprites
_08075A18: .4byte gOamMatrices
thumb_func_end sub_80759DC
thumb_func_start sub_8075A1C
sub_8075A1C: @ 8075A1C
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r4, r0, 0
ldr r0, [sp, 0x28]
lsls r1, 24
lsrs r6, r1, 24
lsls r2, 16
lsrs r5, r2, 16
lsls r3, 16
lsrs r7, r3, 16
lsls r0, 16
lsrs r0, 16
mov r8, r0
ldrb r0, [r4, 0x1]
lsls r0, 30
lsrs r0, 30
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08075AC2
adds r0, r4, 0
adds r0, 0x2C
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
cmp r6, 0
beq _08075A6A
ldrb r3, [r4, 0x1]
lsrs r1, r3, 6
ldrb r2, [r4, 0x3]
lsrs r2, 6
lsls r3, 30
lsrs r3, 30
adds r0, r4, 0
bl CalcCenterToCornerVec
_08075A6A:
ldr r6, _08075AD0 @ =0xffff0000
lsls r0, r7, 16
orrs r5, r0
str r5, [sp]
ldr r0, [sp, 0x4]
ands r0, r6
mov r1, r8
orrs r0, r1
str r0, [sp, 0x4]
bl sub_80758DC
lsls r0, 24
cmp r0, 0
beq _08075A98
mov r0, sp
ldrh r0, [r0]
negs r0, r0
lsls r0, 16
lsrs r0, 16
ldr r1, [sp]
ands r1, r6
orrs r1, r0
str r1, [sp]
_08075A98:
ldrb r4, [r4, 0x3]
lsls r4, 26
lsrs r4, 27
add r5, sp, 0x8
mov r0, sp
adds r1, r5, 0
movs r2, 0x1
movs r3, 0x2
bl ObjAffineSet
ldr r0, _08075AD4 @ =gOamMatrices
lsls r4, 3
adds r4, r0
ldrh r0, [r5]
strh r0, [r4]
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x2]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x4]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x6]
_08075AC2:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075AD0: .4byte 0xffff0000
_08075AD4: .4byte gOamMatrices
thumb_func_end sub_8075A1C
thumb_func_start sub_8075AD8
sub_8075AD8: @ 8075AD8
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
movs r3, 0x80
lsls r3, 1
movs r0, 0
str r0, [sp]
adds r0, r4, 0
movs r1, 0x1
adds r2, r3, 0
bl sub_8075A1C
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
ldrb r3, [r4, 0x1]
lsrs r1, r3, 6
ldrb r2, [r4, 0x3]
lsrs r2, 6
lsls r3, 30
lsrs r3, 30
adds r0, r4, 0
bl CalcCenterToCornerVec
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075AD8
thumb_func_start ArcTan2_
ArcTan2_: @ 8075B18
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
bl ArcTan2
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
thumb_func_end ArcTan2_
thumb_func_start sub_8075B30
sub_8075B30: @ 8075B30
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
bl ArcTan2_
lsls r0, 16
negs r0, r0
lsrs r0, 16
pop {r1}
bx r1
thumb_func_end sub_8075B30
thumb_func_start sub_8075B48
sub_8075B48: @ 8075B48
push {r4-r7,lr}
lsls r1, 24
lsls r0, 20
lsrs r0, 16
cmp r1, 0
bne _08075BC4
ldr r2, _08075BB8 @ =gPlttBufferUnfaded
ldr r1, _08075BBC @ =gPlttBufferFaded
lsls r0, 1
adds r4, r0, r1
adds r5, r0, r2
movs r6, 0xF
_08075B60:
ldr r0, [r5]
lsls r2, r0, 27
lsrs r2, 27
lsls r1, r0, 22
lsrs r1, 27
adds r2, r1
lsls r0, 17
lsrs r0, 27
adds r0, r2
movs r1, 0x3
bl __udivsi3
lsls r0, 16
lsrs r0, 16
movs r1, 0x1F
ands r0, r1
ldrb r1, [r4]
movs r3, 0x20
negs r3, r3
adds r2, r3, 0
ands r1, r2
orrs r1, r0
strb r1, [r4]
lsls r3, r0, 5
ldrh r1, [r4]
ldr r7, _08075BC0 @ =0xfffffc1f
adds r2, r7, 0
ands r1, r2
orrs r1, r3
strh r1, [r4]
lsls r0, 2
ldrb r1, [r4, 0x1]
movs r3, 0x7D
negs r3, r3
adds r2, r3, 0
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x1]
adds r4, 0x2
adds r5, 0x2
subs r6, 0x1
cmp r6, 0
bge _08075B60
b _08075BD4
.align 2, 0
_08075BB8: .4byte gPlttBufferUnfaded
_08075BBC: .4byte gPlttBufferFaded
_08075BC0: .4byte 0xfffffc1f
_08075BC4:
lsls r1, r0, 1
ldr r0, _08075BDC @ =gPlttBufferUnfaded
adds r0, r1, r0
ldr r2, _08075BE0 @ =gPlttBufferFaded
adds r1, r2
ldr r2, _08075BE4 @ =0x04000008
bl CpuSet
_08075BD4:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075BDC: .4byte gPlttBufferUnfaded
_08075BE0: .4byte gPlttBufferFaded
_08075BE4: .4byte 0x04000008
thumb_func_end sub_8075B48
thumb_func_start sub_8075BE8
sub_8075BE8: @ 8075BE8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r4, [sp, 0x1C]
ldr r5, [sp, 0x20]
ldr r6, [sp, 0x24]
lsls r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
lsls r4, 24
lsrs r7, r4, 24
lsls r5, 24
lsrs r5, 24
mov r8, r5
lsls r6, 24
lsrs r6, 24
mov r9, r6
movs r4, 0
cmp r0, 0
beq _08075C1C
movs r4, 0xE
_08075C1C:
cmp r1, 0
beq _08075C2E
ldr r0, _08075CB0 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075C2E:
cmp r2, 0
beq _08075C40
ldr r0, _08075CB4 @ =gBattleAnimTarget
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075C40:
cmp r3, 0
beq _08075C64
ldr r6, _08075CB0 @ =gBattleAnimAttacker
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075C64
ldrb r0, [r6]
eors r0, r5
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075C64:
cmp r7, 0
beq _08075C88
ldr r6, _08075CB4 @ =gBattleAnimTarget
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075C88
ldrb r0, [r6]
eors r0, r5
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075C88:
mov r0, r8
cmp r0, 0
beq _08075C94
movs r0, 0x80
lsls r0, 1
orrs r4, r0
_08075C94:
mov r0, r9
cmp r0, 0
beq _08075CA0
movs r0, 0x80
lsls r0, 2
orrs r4, r0
_08075CA0:
adds r0, r4, 0
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08075CB0: .4byte gBattleAnimAttacker
_08075CB4: .4byte gBattleAnimTarget
thumb_func_end sub_8075BE8
thumb_func_start sub_8075CB8
sub_8075CB8: @ 8075CB8
push {r4-r7,lr}
lsls r0, 24
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 24
lsrs r6, r2, 24
lsls r3, 24
lsrs r7, r3, 24
movs r4, 0
cmp r0, 0
beq _08075CF2
movs r0, 0
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075CF2
movs r0, 0
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r4, 0x1
lsls r4, r0
_08075CF2:
cmp r5, 0
beq _08075D1E
movs r0, 0x2
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075D1E
movs r0, 0x2
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075D1E:
cmp r6, 0
beq _08075D4A
movs r0, 0x1
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075D4A
movs r0, 0x1
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075D4A:
cmp r7, 0
beq _08075D76
movs r0, 0x3
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08075D76
movs r0, 0x3
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
adds r1, 0x10
movs r0, 0x1
lsls r0, r1
orrs r4, r0
_08075D76:
adds r0, r4, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8075CB8
thumb_func_start sub_8075D80
sub_8075D80: @ 8075D80
lsls r0, 24
lsrs r0, 24
bx lr
thumb_func_end sub_8075D80
thumb_func_start sub_8075D88
sub_8075D88: @ 8075D88
push {lr}
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8075D88
thumb_func_start sub_8075D9C
sub_8075D9C: @ 8075D9C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08075DDA
ldr r2, _08075DC8 @ =gBattleAnimArgs
movs r3, 0x6
ldrsh r0, [r2, r3]
movs r1, 0
cmp r0, 0
bne _08075DB6
movs r1, 0x1
_08075DB6:
movs r3, 0x4
ldrsh r0, [r2, r3]
cmp r0, 0
bne _08075DCC
adds r0, r4, 0
bl sub_8075160
b _08075DD2
.align 2, 0
_08075DC8: .4byte gBattleAnimArgs
_08075DCC:
adds r0, r4, 0
bl sub_8075114
_08075DD2:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _08075DEE
_08075DDA:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x30
ands r0, r1
cmp r0, 0
beq _08075DEE
adds r0, r4, 0
bl move_anim_8074EE0
_08075DEE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075D9C
thumb_func_start sub_8075DF4
sub_8075DF4: @ 8075DF4
push {r4-r7,lr}
adds r5, r0, 0
ldr r6, _08075E6C @ =gBattleAnimArgs
movs r1, 0xA
ldrsh r0, [r6, r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
movs r1, 0
cmp r0, 0
bne _08075E0C
movs r1, 0x1
_08075E0C:
ldrb r0, [r6, 0xA]
movs r7, 0x1
cmp r0, 0
bne _08075E16
movs r7, 0x3
_08075E16:
adds r0, r5, 0
bl sub_8075160
ldr r0, _08075E70 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08075E30
ldrh r0, [r6, 0x4]
negs r0, r0
strh r0, [r6, 0x4]
_08075E30:
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
ldr r4, _08075E74 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
adds r0, r1
strh r0, [r5, 0x32]
ldrb r0, [r4]
adds r1, r7, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
adds r0, r6
strh r0, [r5, 0x36]
ldr r0, _08075E78 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _08075E7C @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075E6C: .4byte gBattleAnimArgs
_08075E70: .4byte gBattleAnimAttacker
_08075E74: .4byte gBattleAnimTarget
_08075E78: .4byte StartAnimLinearTranslation
_08075E7C: .4byte DestroyAnimSprite
thumb_func_end sub_8075DF4
thumb_func_start sub_8075E80
sub_8075E80: @ 8075E80
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _08075EE0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08075EA0
ldr r1, _08075EE4 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_08075EA0:
ldr r4, _08075EE4 @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
ldr r5, _08075EE8 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
adds r0, r1
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
adds r0, r1
strh r0, [r6, 0x36]
ldrh r0, [r4, 0xA]
strh r0, [r6, 0x38]
adds r0, r6, 0
bl sub_8075068
ldr r0, _08075EEC @ =sub_8075EF0
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08075EE0: .4byte gBattleAnimAttacker
_08075EE4: .4byte gBattleAnimArgs
_08075EE8: .4byte gBattleAnimTarget
_08075EEC: .4byte sub_8075EF0
thumb_func_end sub_8075E80
thumb_func_start sub_8075EF0
sub_8075EF0: @ 8075EF0
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08075F04
adds r0, r4, 0
bl DestroyAnimSprite
_08075F04:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075EF0
thumb_func_start sub_8075F0C
sub_8075F0C: @ 8075F0C
push {r4-r7,lr}
adds r5, r0, 0
ldr r0, _08075F20 @ =gBattleAnimArgs
movs r2, 0xC
ldrsh r1, [r0, r2]
cmp r1, 0
bne _08075F24
movs r4, 0x1
movs r7, 0x3
b _08075F28
.align 2, 0
_08075F20: .4byte gBattleAnimArgs
_08075F24:
movs r4, 0
movs r7, 0x1
_08075F28:
movs r1, 0xA
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08075F40
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075160
ldr r0, _08075F3C @ =gBattleAnimAttacker
b _08075F4A
.align 2, 0
_08075F3C: .4byte gBattleAnimAttacker
_08075F40:
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075114
ldr r0, _08075FA8 @ =gBattleAnimTarget
_08075F4A:
ldrb r6, [r0]
ldr r0, _08075FAC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08075F62
ldr r1, _08075FB0 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_08075F62:
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075114
ldr r4, _08075FB0 @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x2E]
adds r0, r6, 0
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
adds r0, r2
strh r0, [r5, 0x32]
adds r0, r6, 0
adds r1, r7, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
adds r0, r4
strh r0, [r5, 0x36]
ldr r0, _08075FB4 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _08075FB8 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075FA8: .4byte gBattleAnimTarget
_08075FAC: .4byte gBattleAnimAttacker
_08075FB0: .4byte gBattleAnimArgs
_08075FB4: .4byte StartAnimLinearTranslation
_08075FB8: .4byte DestroyAnimSprite
thumb_func_end sub_8075F0C
thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0xFF
beq _08076026
movs r6, 0
ldr r2, _08076018 @ =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r1, r0, 2
_08075FD8:
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r4, r0, r2
adds r5, r4, 0
adds r5, 0x3E
ldrb r0, [r5]
lsls r0, 31
cmp r0, 0
bne _0807601C
adds r0, r4, 0
adds r1, r2
movs r2, 0x44
bl memcpy
ldrb r1, [r4, 0x1]
movs r2, 0xD
negs r2, r2
adds r0, r2, 0
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4, 0x1]
ldrb r0, [r5]
adds r2, 0x8
adds r1, r2, 0
ands r0, r1
strb r0, [r5]
lsls r0, r6, 16
asrs r0, 16
b _0807602A
.align 2, 0
_08076018: .4byte gSprites
_0807601C:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x3F
bls _08075FD8
_08076026:
movs r0, 0x1
negs r0, r0
_0807602A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
thumb_func_start obj_delete_but_dont_free_vram
obj_delete_but_dont_free_vram: @ 8076030
push {lr}
adds r3, r0, 0
adds r3, 0x3F
ldrb r1, [r3]
movs r2, 0x40
orrs r1, r2
strb r1, [r3]
bl DestroySprite
pop {r0}
bx r0
thumb_func_end obj_delete_but_dont_free_vram
thumb_func_start sub_8076048
sub_8076048: @ 8076048
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r6, 0
movs r3, 0
ldr r2, _080760C0 @ =gBattleAnimArgs
movs r0, 0x4
ldrsh r1, [r2, r0]
movs r4, 0
ldrsh r0, [r2, r4]
cmp r1, r0
ble _08076062
movs r3, 0x1
_08076062:
cmp r1, r0
bge _08076068
ldr r3, _080760C4 @ =0x0000ffff
_08076068:
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r4, 0x2
ldrsh r0, [r2, r4]
cmp r1, r0
ble _08076076
movs r6, 0x1
_08076076:
cmp r1, r0
bge _0807607C
ldr r6, _080760C4 @ =0x0000ffff
_0807607C:
ldr r0, _080760C8 @ =gTasks
lsls r4, r5, 2
adds r4, r5
lsls r4, 3
adds r4, r0
movs r1, 0
strh r1, [r4, 0x8]
ldrh r0, [r2, 0x8]
strh r0, [r4, 0xA]
strh r1, [r4, 0xC]
ldrh r0, [r2]
strh r0, [r4, 0xE]
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x10]
strh r3, [r4, 0x12]
strh r6, [r4, 0x14]
ldrh r0, [r2, 0x4]
strh r0, [r4, 0x16]
ldrh r0, [r2, 0x6]
strh r0, [r4, 0x18]
ldrh r1, [r2, 0x2]
lsls r1, 8
ldrh r0, [r2]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r0, _080760CC @ =sub_80760D0
str r0, [r4]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080760C0: .4byte gBattleAnimArgs
_080760C4: .4byte 0x0000ffff
_080760C8: .4byte gTasks
_080760CC: .4byte sub_80760D0
thumb_func_end sub_8076048
thumb_func_start sub_80760D0
sub_80760D0: @ 80760D0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _0807611C @ =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
movs r2, 0xA
ldrsh r1, [r4, r2]
cmp r0, r1
ble _08076164
movs r0, 0
strh r0, [r4, 0x8]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08076120
ldrh r2, [r4, 0xE]
movs r3, 0xE
ldrsh r1, [r4, r3]
movs r3, 0x16
ldrsh r0, [r4, r3]
cmp r1, r0
beq _08076134
ldrh r0, [r4, 0x12]
adds r0, r2, r0
strh r0, [r4, 0xE]
b _08076134
.align 2, 0
_0807611C: .4byte gTasks
_08076120:
ldrh r2, [r4, 0x10]
movs r0, 0x10
ldrsh r1, [r4, r0]
movs r3, 0x18
ldrsh r0, [r4, r3]
cmp r1, r0
beq _08076134
ldrh r0, [r4, 0x14]
adds r0, r2, r0
strh r0, [r4, 0x10]
_08076134:
ldrh r1, [r4, 0x10]
lsls r1, 8
ldrh r0, [r4, 0xE]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r0, 0xE
ldrsh r1, [r4, r0]
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r1, r0
bne _08076164
movs r3, 0x10
ldrsh r1, [r4, r3]
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r1, r0
bne _08076164
adds r0, r5, 0
bl DestroyAnimVisualTask
_08076164:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80760D0
thumb_func_start sub_807616C
sub_807616C: @ 807616C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0807618C @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
bne _08076190
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080761B6
.align 2, 0
_0807618C: .4byte gBattleAnimArgs
_08076190:
ldr r1, _080761BC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r2, _080761C0 @ =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r2
ldrb r1, [r1, 0x5]
lsrs r1, 4
lsls r1, 4
ldr r3, _080761C4 @ =0x00000101
adds r2, r3, 0
adds r1, r2
strh r1, [r0, 0x8]
bl sub_80761C8
_080761B6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080761BC: .4byte gTasks
_080761C0: .4byte gSprites
_080761C4: .4byte 0x00000101
thumb_func_end sub_807616C
thumb_func_start sub_80761C8
sub_80761C8: @ 80761C8
ldr r3, _080761E8 @ =gBattleAnimArgs
ldrh r1, [r3, 0x2]
movs r2, 0
strh r1, [r0, 0xA]
strh r2, [r0, 0xC]
ldrh r1, [r3, 0x4]
strh r1, [r0, 0xE]
strh r2, [r0, 0x10]
ldrh r1, [r3, 0x6]
strh r1, [r0, 0x12]
strh r2, [r0, 0x14]
ldrh r1, [r3, 0x8]
strh r1, [r0, 0x16]
ldr r1, _080761EC @ =sub_80761F0
str r1, [r0]
bx lr
.align 2, 0
_080761E8: .4byte gBattleAnimArgs
_080761EC: .4byte sub_80761F0
thumb_func_end sub_80761C8
thumb_func_start sub_80761F0
sub_80761F0: @ 80761F0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _08076248 @ =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
lsls r0, 16
asrs r0, 16
movs r2, 0x12
ldrsh r1, [r4, r2]
cmp r0, r1
blt _08076280
movs r0, 0
strh r0, [r4, 0x10]
movs r1, 0x14
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0807624C
ldrh r2, [r4, 0xC]
adds r2, 0x1
strh r2, [r4, 0xC]
ldrh r0, [r4, 0x8]
lsls r2, 24
lsrs r2, 24
ldrh r3, [r4, 0xA]
movs r1, 0xF
bl BlendPalette
movs r2, 0xC
ldrsh r1, [r4, r2]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r1, r0
bne _08076280
movs r0, 0x1
strh r0, [r4, 0x14]
b _08076280
.align 2, 0
_08076248: .4byte gTasks
_0807624C:
ldrh r2, [r4, 0xC]
subs r2, 0x1
strh r2, [r4, 0xC]
ldrh r0, [r4, 0x8]
lsls r2, 24
lsrs r2, 24
ldrh r3, [r4, 0xA]
movs r1, 0xF
bl BlendPalette
movs r0, 0xC
ldrsh r1, [r4, r0]
cmp r1, 0
bne _08076280
ldrh r0, [r4, 0x16]
subs r0, 0x1
strh r0, [r4, 0x16]
lsls r0, 16
cmp r0, 0
beq _0807627A
strh r1, [r4, 0x10]
strh r1, [r4, 0x14]
b _08076280
_0807627A:
adds r0, r5, 0
bl DestroyAnimVisualTask
_08076280:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80761F0
thumb_func_start sub_8076288
sub_8076288: @ 8076288
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080762A8 @ =gBattleAnimArgs
ldrh r0, [r0]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
bne _080762AC
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080762C2
.align 2, 0
_080762A8: .4byte gBattleAnimArgs
_080762AC:
ldr r1, _080762C8 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
lsls r1, r2, 4
ldr r2, _080762CC @ =0x00000101
adds r1, r2
strh r1, [r0, 0x8]
bl sub_80761C8
_080762C2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080762C8: .4byte gTasks
_080762CC: .4byte 0x00000101
thumb_func_end sub_8076288
thumb_func_start sub_80762D0
sub_80762D0: @ 80762D0
push {r4,lr}
adds r3, r0, 0
adds r4, r1, 0
lsls r4, 24
lsrs r4, 24
movs r1, 0
strh r1, [r3, 0x16]
strh r1, [r3, 0x18]
strh r1, [r3, 0x1A]
strh r4, [r3, 0x26]
movs r0, 0x80
lsls r0, 1
strh r0, [r3, 0x1C]
strh r0, [r3, 0x1E]
strh r1, [r3, 0x20]
adds r0, r3, 0
adds r0, 0x22
adds r3, 0x24
adds r1, r3, 0
bl sub_80765C0
adds r0, r4, 0
movs r1, 0
bl PrepareBattlerSpriteForRotScale
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80762D0
thumb_func_start sub_8076308
sub_8076308: @ 8076308
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _080763A8 @ =gUnknown_2037F28
movs r1, 0x22
ldrsh r0, [r4, r1]
movs r2, 0x24
ldrsh r1, [r4, r2]
bl sub_80765C8
movs r3, 0x16
ldrsh r1, [r4, r3]
lsls r1, 3
adds r1, r0, r1
str r1, [r5]
movs r6, 0
ldrsh r2, [r1, r6]
ldr r0, _080763AC @ =0x00007ffe
cmp r2, r0
beq _080763B0
cmp r2, r0
bgt _08076410
subs r0, 0x1
cmp r2, r0
beq _080763B6
ldrb r0, [r1, 0x5]
cmp r0, 0
bne _08076356
ldrh r0, [r1]
strh r0, [r4, 0x1C]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x1E]
ldrb r0, [r1, 0x4]
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x16]
adds r0, 0x1
strh r0, [r4, 0x16]
adds r0, r1, 0
adds r0, 0x8
str r0, [r5]
_08076356:
ldr r1, [r5]
ldrh r0, [r1]
ldrh r2, [r4, 0x1C]
adds r0, r2
strh r0, [r4, 0x1C]
ldrh r0, [r1, 0x2]
ldrh r3, [r4, 0x1E]
adds r0, r3
strh r0, [r4, 0x1E]
ldrh r0, [r4, 0x20]
ldrb r1, [r1, 0x4]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r6, 0x1C
ldrsh r1, [r4, r6]
movs r3, 0x1E
ldrsh r2, [r4, r3]
ldrh r3, [r4, 0x20]
bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_8076440
ldrh r0, [r4, 0x18]
adds r0, 0x1
strh r0, [r4, 0x18]
lsls r0, 16
asrs r0, 16
ldr r1, [r5]
ldrb r1, [r1, 0x5]
cmp r0, r1
blt _08076436
movs r0, 0
strh r0, [r4, 0x18]
b _08076408
.align 2, 0
_080763A8: .4byte gUnknown_2037F28
_080763AC: .4byte 0x00007ffe
_080763B0:
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x16]
b _08076436
_080763B6:
ldrh r2, [r1, 0x2]
movs r6, 0x2
ldrsh r0, [r1, r6]
cmp r0, 0
beq _08076408
ldrh r1, [r4, 0x1A]
movs r3, 0x1A
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080763D6
subs r0, r1, 0x1
strh r0, [r4, 0x1A]
lsls r0, 16
cmp r0, 0
bne _080763D8
b _08076408
_080763D6:
strh r2, [r4, 0x1A]
_080763D8:
movs r6, 0x16
ldrsh r0, [r4, r6]
cmp r0, 0
beq _08076436
ldr r3, _08076400 @ =gUnknown_2037F28
ldr r5, _08076404 @ =0x00007ffd
_080763E4:
ldrh r2, [r4, 0x16]
subs r1, r2, 0x1
strh r1, [r4, 0x16]
ldr r0, [r3]
subs r0, 0x8
str r0, [r3]
movs r6, 0
ldrsh r0, [r0, r6]
cmp r0, r5
beq _08076434
lsls r0, r1, 16
cmp r0, 0
bne _080763E4
b _08076436
.align 2, 0
_08076400: .4byte gUnknown_2037F28
_08076404: .4byte 0x00007ffd
_08076408:
ldrh r0, [r4, 0x16]
adds r0, 0x1
strh r0, [r4, 0x16]
b _08076436
_08076410:
ldr r2, _08076430 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strh r1, [r0, 0x26]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl ResetSpriteRotScale
movs r0, 0
b _08076438
.align 2, 0
_08076430: .4byte gSprites
_08076434:
strh r2, [r4, 0x16]
_08076436:
movs r0, 0x1
_08076438:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8076308
thumb_func_start sub_8076440
sub_8076440: @ 8076440
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl sub_80764EC
lsls r0, 16
lsrs r0, 15
movs r1, 0x40
subs r5, r1, r0
ldr r1, _0807648C @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r4, r0, r1
ldrb r1, [r4, 0x3]
lsls r1, 26
lsrs r1, 27
lsls r0, r5, 8
ldr r2, _08076490 @ =gOamMatrices
lsls r1, 3
adds r1, r2
movs r2, 0x6
ldrsh r1, [r1, r2]
bl __divsi3
cmp r0, 0x80
ble _0807647C
movs r0, 0x80
_0807647C:
subs r0, r5, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r4, 0x26]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0807648C: .4byte gSprites
_08076490: .4byte gOamMatrices
thumb_func_end sub_8076440
thumb_func_start sub_8076494
sub_8076494: @ 8076494
push {r4,r5,lr}
adds r4, r0, 0
adds r0, r1, 0
lsls r4, 24
lsrs r4, 24
lsls r0, 24
lsrs r0, 24
bl sub_80764EC
lsls r0, 16
lsrs r0, 15
movs r1, 0x40
subs r5, r1, r0
ldr r1, _080764E4 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r4, r0, r1
ldrb r1, [r4, 0x3]
lsls r1, 26
lsrs r1, 27
lsls r0, r5, 8
ldr r2, _080764E8 @ =gOamMatrices
lsls r1, 3
adds r1, r2
movs r2, 0x6
ldrsh r1, [r1, r2]
bl __divsi3
cmp r0, 0x80
ble _080764D4
movs r0, 0x80
_080764D4:
subs r0, r5, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r4, 0x26]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080764E4: .4byte gSprites
_080764E8: .4byte gOamMatrices
thumb_func_end sub_8076494
thumb_func_start sub_80764EC
sub_80764EC: @ 80764EC
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _08076548 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x2E]
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r1, _0807654C @ =gBattlerSpriteIds
ldr r6, _08076550 @ =gBattlerPartyIndexes
_08076508:
adds r0, r4, r1
ldrb r0, [r0]
cmp r0, r2
bne _080765AC
lsls r0, r4, 24
lsrs r0, 24
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08076568
ldr r0, _08076554 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0807655C
lsls r0, r4, 1
adds r0, r6
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08076558 @ =gPlayerParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r1, r0, 16
b _0807655E
.align 2, 0
_08076548: .4byte gSprites
_0807654C: .4byte gBattlerSpriteIds
_08076550: .4byte gBattlerPartyIndexes
_08076554: .4byte gBattleSpritesDataPtr
_08076558: .4byte gPlayerParty
_0807655C:
ldrh r1, [r1, 0x2]
_0807655E:
ldr r0, _08076564 @ =gUnknown_8235E6C
b _080765A0
.align 2, 0
_08076564: .4byte gUnknown_8235E6C
_08076568:
ldr r0, _08076594 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0807659C
lsls r0, r4, 1
adds r0, r6
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08076598 @ =gEnemyParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r1, r0, 16
b _0807659E
.align 2, 0
_08076594: .4byte gBattleSpritesDataPtr
_08076598: .4byte gEnemyParty
_0807659C:
ldrh r1, [r1, 0x2]
_0807659E:
ldr r0, _080765A8 @ =gUnknown_82349CC
_080765A0:
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
b _080765B8
.align 2, 0
_080765A8: .4byte gUnknown_82349CC
_080765AC:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x3
bls _08076508
movs r0, 0x40
_080765B8:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80764EC
thumb_func_start sub_80765C0
sub_80765C0: @ 80765C0
strh r2, [r0]
asrs r2, 16
strh r2, [r1]
bx lr
thumb_func_end sub_80765C0
thumb_func_start sub_80765C8
sub_80765C8: @ 80765C8
lsls r0, 16
lsrs r0, 16
lsls r1, 16
orrs r0, r1
bx lr
thumb_func_end sub_80765C8
thumb_func_start sub_80765D4
sub_80765D4: @ 80765D4
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r5, r3, 0
ldr r0, [sp, 0x14]
ldr r4, [sp, 0x18]
ldr r6, [sp, 0x1C]
lsls r1, 24
lsrs r1, 24
lsls r2, 16
lsrs r2, 16
lsls r5, 16
lsrs r5, 16
lsls r0, 16
lsrs r0, 16
lsls r4, 16
lsrs r4, 16
lsls r6, 16
lsrs r6, 16
mov r3, r8
strh r6, [r3, 0x18]
strh r1, [r3, 0x26]
strh r2, [r3, 0x1A]
strh r5, [r3, 0x1C]
strh r0, [r3, 0x22]
strh r4, [r3, 0x24]
lsls r0, 16
asrs r0, 16
lsls r2, 16
asrs r2, 16
subs r0, r2
adds r1, r6, 0
bl __divsi3
mov r1, r8
strh r0, [r1, 0x1E]
lsls r4, 16
asrs r4, 16
lsls r5, 16
asrs r5, 16
subs r4, r5
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
mov r3, r8
strh r0, [r3, 0x20]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80765D4
thumb_func_start sub_8076640
sub_8076640: @ 8076640
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x18]
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08076652
movs r0, 0
b _080766AE
_08076652:
subs r0, r1, 0x1
strh r0, [r4, 0x18]
lsls r0, 16
cmp r0, 0
beq _0807666C
ldrh r0, [r4, 0x1E]
ldrh r3, [r4, 0x1A]
adds r0, r3
strh r0, [r4, 0x1A]
ldrh r0, [r4, 0x20]
ldrh r1, [r4, 0x1C]
adds r0, r1
b _08076672
_0807666C:
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x1A]
ldrh r0, [r4, 0x24]
_08076672:
strh r0, [r4, 0x1C]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x1A
ldrsh r1, [r4, r2]
movs r3, 0x1C
ldrsh r2, [r4, r3]
movs r3, 0
bl SetSpriteRotScale
movs r0, 0x18
ldrsh r3, [r4, r0]
cmp r3, 0
beq _0807669C
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_8076440
b _080766AC
_0807669C:
ldr r2, _080766B4 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r3, [r0, 0x26]
_080766AC:
ldrb r0, [r4, 0x18]
_080766AE:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080766B4: .4byte gSprites
thumb_func_end sub_8076640
thumb_func_start sub_80766B8
sub_80766B8: @ 80766B8
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080766E4 @ =gAnimFriendship
ldrb r0, [r0]
movs r1, 0
cmp r0, 0x1E
bls _080766D6
movs r1, 0x1
cmp r0, 0x64
bls _080766D6
movs r1, 0x3
cmp r0, 0xC8
bhi _080766D6
movs r1, 0x2
_080766D6:
ldr r0, _080766E8 @ =gBattleAnimArgs
strh r1, [r0, 0xE]
adds r0, r2, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080766E4: .4byte gAnimFriendship
_080766E8: .4byte gBattleAnimArgs
thumb_func_end sub_80766B8
thumb_func_start sub_80766EC
sub_80766EC: @ 80766EC
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r4, r0, 24
adds r7, r4, 0
ldr r6, _080767E0 @ =gBattleAnimTarget
ldrb r0, [r6]
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0807672C
ldr r2, _080767E4 @ =gSprites
ldr r1, _080767E8 @ =gBattlerSpriteIds
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x3
adds r2, r4, 0
ands r2, r0
lsls r2, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
_0807672C:
ldr r0, _080767EC @ =gBattleAnimAttacker
mov r8, r0
ldrb r0, [r0]
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08076764
ldr r2, _080767E4 @ =gSprites
ldr r1, _080767E8 @ =gBattlerSpriteIds
mov r3, r8
ldrb r0, [r3]
adds r0, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x3
adds r2, r4, 0
ands r2, r0
lsls r2, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
_08076764:
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0807679C
ldr r2, _080767E4 @ =gSprites
ldr r1, _080767E8 @ =gBattlerSpriteIds
ldrb r0, [r6]
eors r0, r5
adds r0, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x3
adds r2, r4, 0
ands r2, r0
lsls r2, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
_0807679C:
mov r1, r8
ldrb r0, [r1]
eors r0, r5
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080767D4
ldr r2, _080767E4 @ =gSprites
ldr r1, _080767E8 @ =gBattlerSpriteIds
mov r3, r8
ldrb r0, [r3]
eors r0, r5
adds r0, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x3
ands r7, r0
lsls r3, r7, 2
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x5]
_080767D4:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080767E0: .4byte gBattleAnimTarget
_080767E4: .4byte gSprites
_080767E8: .4byte gBattlerSpriteIds
_080767EC: .4byte gBattleAnimAttacker
thumb_func_end sub_80766EC
thumb_func_start sub_80767F0
sub_80767F0: @ 80767F0
push {r4-r6,lr}
movs r5, 0
ldr r0, _08076850 @ =gBattlersCount
ldrb r0, [r0]
cmp r5, r0
bge _0807684A
ldr r6, _08076854 @ =gSprites
_080767FE:
lsls r0, r5, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08076840
adds r0, r4, 0
bl GetBattlerSpriteSubpriority
ldr r3, _08076858 @ =gBattlerSpriteIds
adds r3, r5, r3
ldrb r2, [r3]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r6
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r2, [r0, 0x5]
movs r3, 0xD
negs r3, r3
adds r1, r3, 0
ands r2, r1
movs r1, 0x8
orrs r2, r1
strb r2, [r0, 0x5]
_08076840:
adds r5, 0x1
ldr r0, _08076850 @ =gBattlersCount
ldrb r0, [r0]
cmp r5, r0
blt _080767FE
_0807684A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08076850: .4byte gBattlersCount
_08076854: .4byte gSprites
_08076858: .4byte gBattlerSpriteIds
thumb_func_end sub_80767F0
thumb_func_start GetBattlerSpriteSubpriority
GetBattlerSpriteSubpriority: @ 807685C
push {lr}
lsls r0, 24
lsrs r0, 24
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0x1E
cmp r0, 0
beq _0807687E
movs r1, 0x14
cmp r0, 0x2
beq _0807687E
movs r1, 0x32
cmp r0, 0x1
bne _0807687E
movs r1, 0x28
_0807687E:
adds r0, r1, 0
pop {r1}
bx r1
thumb_func_end GetBattlerSpriteSubpriority
thumb_func_start sub_8076884
sub_8076884: @ 8076884
push {lr}
lsls r0, 24
lsrs r0, 24
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _0807689A
cmp r0, 0x3
bne _0807689E
_0807689A:
movs r0, 0x2
b _080768A0
_0807689E:
movs r0, 0x1
_080768A0:
movs r1, 0x4
bl sub_80BC30C
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8076884
thumb_func_start sub_80768B0
sub_80768B0: @ 80768B0
push {lr}
lsls r0, 24
lsrs r0, 24
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _080768C6
cmp r0, 0x3
bne _080768CA
_080768C6:
movs r0, 0x2
b _080768CC
_080768CA:
movs r0, 0x1
_080768CC:
pop {r1}
bx r1
thumb_func_end sub_80768B0
thumb_func_start sub_80768D0
sub_80768D0: @ 80768D0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
ldr r4, [sp, 0x30]
ldr r5, [sp, 0x34]
ldr r6, [sp, 0x38]
mov r8, r6
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 24
lsrs r1, 24
mov r9, r1
lsls r2, 24
lsrs r7, r2, 24
lsls r3, 16
lsrs r3, 16
mov r10, r3
lsls r4, 16
lsrs r4, 16
str r4, [sp, 0x4]
lsls r5, 24
lsrs r5, 24
str r5, [sp, 0x8]
lsls r0, r7, 3
ldr r1, _080769B0 @ =gUnknown_83AE084
adds r0, r1
bl LoadSpriteSheet
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0xC]
ldr r1, _080769B4 @ =gUnknown_83AE054
lsls r0, r7, 1
adds r0, r7
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x2]
bl AllocSpritePalette
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080769B8 @ =gMonSpritesGfxPtr
ldr r0, [r4]
cmp r0, 0
beq _0807694E
movs r1, 0xBE
lsls r1, 1
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _0807694E
movs r0, 0x80
lsls r0, 6
bl AllocZeroed
ldr r1, [r4]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
str r0, [r1]
_0807694E:
mov r3, r9
cmp r3, 0
bne _080769EC
adds r0, r6, 0
ldr r1, [sp, 0x3C]
mov r2, r8
bl GetMonSpritePalFromSpeciesAndPersonality
lsls r1, r5, 20
movs r2, 0x80
lsls r2, 17
adds r1, r2
lsrs r1, 16
movs r2, 0x20
bl LoadCompressedPalette
ldr r3, [sp, 0x44]
cmp r3, 0x1
beq _0807699A
ldr r0, [sp, 0x40]
lsls r1, r0, 24
lsrs r1, 24
movs r0, 0x5
bl sub_804455C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0807699A
ldr r0, _080769BC @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
ldr r2, [sp, 0x40]
lsls r0, r2, 2
adds r0, r1
ldrh r0, [r0, 0x2]
cmp r0, 0
beq _080769C4
_0807699A:
lsls r0, r6, 3
ldr r1, _080769C0 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080769B8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
adds r1, r3
ldr r1, [r1]
movs r2, 0x1
b _08076A46
.align 2, 0
_080769B0: .4byte gUnknown_83AE084
_080769B4: .4byte gUnknown_83AE054
_080769B8: .4byte gMonSpritesGfxPtr
_080769BC: .4byte gBattleSpritesDataPtr
_080769C0: .4byte gMonFrontPicTable
_080769C4:
lsls r0, r6, 3
ldr r1, _080769E4 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080769E8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
ldr r1, [r1]
movs r2, 0x1
str r2, [sp]
adds r2, r6, 0
mov r3, r8
bl LoadSpecialPokePic
b _08076A7C
.align 2, 0
_080769E4: .4byte gMonFrontPicTable
_080769E8: .4byte gMonSpritesGfxPtr
_080769EC:
adds r0, r6, 0
ldr r1, [sp, 0x3C]
mov r2, r8
bl GetMonSpritePalFromSpeciesAndPersonality
lsls r1, r5, 20
movs r3, 0x80
lsls r3, 17
adds r1, r3
lsrs r1, 16
movs r2, 0x20
bl LoadCompressedPalette
ldr r0, [sp, 0x44]
cmp r0, 0x1
beq _08076A32
ldr r2, [sp, 0x40]
lsls r1, r2, 24
lsrs r1, 24
movs r0, 0x5
bl sub_804455C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08076A32
ldr r0, _08076A54 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
ldr r3, [sp, 0x40]
lsls r0, r3, 2
adds r0, r1
ldrh r2, [r0, 0x2]
cmp r2, 0
beq _08076A60
_08076A32:
lsls r0, r6, 3
ldr r1, _08076A58 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08076A5C @ =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
ldr r1, [r1]
movs r2, 0
_08076A46:
str r2, [sp]
adds r2, r6, 0
mov r3, r8
bl LoadSpecialPokePic_DontHandleDeoxys
b _08076A7C
.align 2, 0
_08076A54: .4byte gBattleSpritesDataPtr
_08076A58: .4byte gMonBackPicTable
_08076A5C: .4byte gMonSpritesGfxPtr
_08076A60:
lsls r0, r6, 3
ldr r1, _08076AC8 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08076ACC @ =gMonSpritesGfxPtr
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
adds r1, r3
ldr r1, [r1]
str r2, [sp]
adds r2, r6, 0
mov r3, r8
bl LoadSpecialPokePic
_08076A7C:
ldr r5, _08076ACC @ =gMonSpritesGfxPtr
ldr r0, [r5]
movs r4, 0xBE
lsls r4, 1
adds r0, r4
ldr r0, [r0]
ldr r2, [sp, 0xC]
lsls r1, r2, 5
ldr r3, _08076AD0 @ =0x06010000
adds r1, r3
movs r2, 0x80
lsls r2, 4
movs r3, 0x1
bl RequestDma3Copy
ldr r0, [r5]
adds r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r5]
adds r0, r4
movs r1, 0
str r1, [r0]
mov r0, r9
cmp r0, 0
bne _08076ADC
lsls r0, r7, 1
adds r0, r7
lsls r0, 3
ldr r1, _08076AD4 @ =gUnknown_83AE054
adds r0, r1
mov r2, r10
lsls r1, r2, 16
asrs r1, 16
ldr r3, _08076AD8 @ =gUnknown_82349CC
b _08076AEE
.align 2, 0
_08076AC8: .4byte gMonBackPicTable
_08076ACC: .4byte gMonSpritesGfxPtr
_08076AD0: .4byte 0x06010000
_08076AD4: .4byte gUnknown_83AE054
_08076AD8: .4byte gUnknown_82349CC
_08076ADC:
lsls r0, r7, 1
adds r0, r7
lsls r0, 3
ldr r1, _08076B18 @ =gUnknown_83AE054
adds r0, r1
mov r2, r10
lsls r1, r2, 16
asrs r1, 16
ldr r3, _08076B1C @ =gUnknown_8235E6C
_08076AEE:
lsls r2, r6, 2
adds r2, r3
ldrb r2, [r2, 0x1]
ldr r3, [sp, 0x4]
adds r2, r3
lsls r2, 16
asrs r2, 16
ldr r3, [sp, 0x8]
bl CreateSprite
lsls r0, 24
lsrs r0, 24
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08076B18: .4byte gUnknown_83AE054
_08076B1C: .4byte gUnknown_8235E6C
thumb_func_end sub_80768D0
thumb_func_start sub_8076B20
sub_8076B20: @ 8076B20
push {lr}
bl DestroySpriteAndFreeResources
pop {r0}
bx r0
thumb_func_end sub_8076B20
thumb_func_start sub_8076B2C
sub_8076B2C: @ 8076B2C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, 24
lsrs r1, 24
mov r9, r1
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08076C08
ldr r0, _08076B88 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r1, r8
lsls r2, r1, 2
adds r1, r2, r0
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _08076B94
ldr r0, _08076B8C @ =gBattlerPartyIndexes
mov r1, r8
lsls r4, r1, 1
adds r4, r0
ldrh r0, [r4]
movs r6, 0x64
muls r0, r6
ldr r5, _08076B90 @ =gPlayerParty
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
ldrh r0, [r4]
muls r0, r6
adds r0, r5
movs r1, 0
bl GetMonData
adds r2, r0, 0
b _08076B9C
.align 2, 0
_08076B88: .4byte gBattleSpritesDataPtr
_08076B8C: .4byte gBattlerPartyIndexes
_08076B90: .4byte gPlayerParty
_08076B94:
ldrh r7, [r1, 0x2]
ldr r0, _08076BD4 @ =gTransformedPersonalities
adds r0, r2, r0
ldr r2, [r0]
_08076B9C:
cmp r7, 0xC9
bne _08076BEC
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 _08076BD8
movs r0, 0xC9
b _08076BE2
.align 2, 0
_08076BD4: .4byte gTransformedPersonalities
_08076BD8:
movs r1, 0xCE
lsls r1, 1
adds r0, r1
lsls r0, 16
lsrs r0, 16
_08076BE2:
lsls r1, r0, 2
ldr r0, _08076BE8 @ =gUnknown_8235E6C
b _08076CDC
.align 2, 0
_08076BE8: .4byte gUnknown_8235E6C
_08076BEC:
movs r0, 0xCE
lsls r0, 1
cmp r7, r0
bls _08076BFC
ldr r4, _08076BF8 @ =gUnknown_8235E6C
b _08076CDE
.align 2, 0
_08076BF8: .4byte gUnknown_8235E6C
_08076BFC:
lsls r1, r7, 2
ldr r0, _08076C04 @ =gUnknown_8235E6C
b _08076CDC
.align 2, 0
_08076C04: .4byte gUnknown_8235E6C
_08076C08:
ldr r0, _08076C48 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r1, r8
lsls r2, r1, 2
adds r1, r2, r0
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _08076C54
ldr r0, _08076C4C @ =gBattlerPartyIndexes
mov r1, r8
lsls r4, r1, 1
adds r4, r0
ldrh r0, [r4]
movs r6, 0x64
muls r0, r6
ldr r5, _08076C50 @ =gEnemyParty
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
ldrh r0, [r4]
muls r0, r6
adds r0, r5
movs r1, 0
bl GetMonData
adds r2, r0, 0
b _08076C5C
.align 2, 0
_08076C48: .4byte gBattleSpritesDataPtr
_08076C4C: .4byte gBattlerPartyIndexes
_08076C50: .4byte gEnemyParty
_08076C54:
ldrh r7, [r1, 0x2]
ldr r0, _08076C94 @ =gTransformedPersonalities
adds r0, r2, r0
ldr r2, [r0]
_08076C5C:
cmp r7, 0xC9
bne _08076CA6
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 _08076C98
movs r0, 0xC9
b _08076CA2
.align 2, 0
_08076C94: .4byte gTransformedPersonalities
_08076C98:
movs r1, 0xCE
lsls r1, 1
adds r0, r1
lsls r0, 16
lsrs r0, 16
_08076CA2:
lsls r1, r0, 2
b _08076CDA
_08076CA6:
ldr r0, _08076CBC @ =0x00000181
cmp r7, r0
bne _08076CC8
ldr r0, _08076CC0 @ =gBattleMonForms
add r0, r8
ldrb r0, [r0]
lsls r0, 2
ldr r1, _08076CC4 @ =gUnknown_83AE03C
adds r4, r0, r1
b _08076CDE
.align 2, 0
_08076CBC: .4byte 0x00000181
_08076CC0: .4byte gBattleMonForms
_08076CC4: .4byte gUnknown_83AE03C
_08076CC8:
movs r0, 0xCE
lsls r0, 1
cmp r7, r0
bls _08076CD8
ldr r4, _08076CD4 @ =gUnknown_82349CC
b _08076CDE
.align 2, 0
_08076CD4: .4byte gUnknown_82349CC
_08076CD8:
lsls r1, r7, 2
_08076CDA:
ldr r0, _08076CF0 @ =gUnknown_82349CC
_08076CDC:
adds r4, r1, r0
_08076CDE:
mov r0, r9
cmp r0, 0x6
bhi _08076D8E
lsls r0, 2
ldr r1, _08076CF4 @ =_08076CF8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08076CF0: .4byte gUnknown_82349CC
_08076CF4: .4byte _08076CF8
.align 2, 0
_08076CF8:
.4byte _08076D14
.4byte _08076D1E
.4byte _08076D4A
.4byte _08076D62
.4byte _08076D26
.4byte _08076D38
.4byte _08076D7A
_08076D14:
ldrb r1, [r4]
movs r0, 0xF
ands r0, r1
lsls r0, 3
b _08076D90
_08076D1E:
ldrb r0, [r4]
lsrs r0, 4
lsls r0, 3
b _08076D90
_08076D26:
mov r0, r8
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
lsrs r1, 4
b _08076D5C
_08076D38:
mov r0, r8
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
lsrs r1, 4
b _08076D74
_08076D4A:
mov r0, r8
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
movs r1, 0xF
ands r1, r2
_08076D5C:
lsls r1, 2
subs r0, r1
b _08076D90
_08076D62:
mov r0, r8
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
movs r1, 0xF
ands r1, r2
_08076D74:
lsls r1, 2
adds r0, r1
b _08076D90
_08076D7A:
mov r0, r8
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
ldrb r1, [r4, 0x1]
subs r0, r1
b _08076D90
_08076D8E:
movs r0, 0
_08076D90:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8076B2C
thumb_func_start sub_8076D9C
sub_8076D9C: @ 8076D9C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r9, r2
mov r10, r3
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 24
cmp r1, 0
bne _08076DBA
movs r5, 0
movs r6, 0x1
b _08076DBE
_08076DBA:
movs r5, 0x2
movs r6, 0x3
_08076DBE:
adds r0, r4, 0
adds r1, r5, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r8, r0
adds r0, r4, 0
adds r1, r6, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08076E06
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
adds r1, r5, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0
adds r1, r6, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r3, r0, 24
mov r0, r8
lsls r1, r0, 16
lsls r2, r7, 16
b _08076E12
_08076E06:
mov r0, r8
lsls r1, r0, 16
lsrs r5, r1, 16
lsls r0, r7, 16
lsrs r3, r0, 16
adds r2, r0, 0
_08076E12:
asrs r0, r1, 16
adds r0, r5
asrs r0, 1
mov r1, r9
strh r0, [r1]
asrs r0, r2, 16
adds r0, r3
asrs r0, 1
mov r1, r10
strh r0, [r1]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8076D9C
thumb_func_start sub_8076E34
sub_8076E34: @ 8076E34
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0x4
lsls r6, r1, 24
lsrs r6, 24
ldr r0, _08076ECC @ =SpriteCallbackDummy
mov r10, r0
bl CreateInvisibleSpriteWithCallback
mov r8, r0
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r0, _08076ED0 @ =gSprites
mov r9, r0
mov r0, r8
lsls r3, r0, 4
add r3, r8
lsls r3, 2
mov r0, r9
adds r5, r3, r0
lsls r4, r6, 4
adds r4, r6
lsls r4, 2
add r4, r9
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x44
str r3, [sp]
bl memcpy
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
ldrb r2, [r5, 0x5]
movs r1, 0xD
negs r1, r1
adds r0, r1, 0
ands r0, r2
strb r0, [r5, 0x5]
ldrb r0, [r5, 0x1]
ands r1, r0
movs r0, 0x8
orrs r1, r0
strb r1, [r5, 0x1]
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 22
ldrh r2, [r5, 0x4]
ldr r0, _08076ED4 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
movs r0, 0x1C
add r9, r0
ldr r3, [sp]
add r3, r9
mov r0, r10
str r0, [r3]
mov r0, r8
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08076ECC: .4byte SpriteCallbackDummy
_08076ED0: .4byte gSprites
_08076ED4: .4byte 0xfffffc00
thumb_func_end sub_8076E34
thumb_func_start sub_8076ED8
sub_8076ED8: @ 8076ED8
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _08076F10 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08076F18
ldr r2, _08076F14 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x6]
negs r0, r0
strh r0, [r2, 0x6]
adds r3, r4, 0
adds r3, 0x3F
ldrb r0, [r3]
movs r1, 0x1
orrs r0, r1
strb r0, [r3]
adds r1, r2, 0
b _08076F22
.align 2, 0
_08076F10: .4byte gBattleAnimAttacker
_08076F14: .4byte gBattleAnimArgs
_08076F18:
ldr r1, _08076F4C @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
_08076F22:
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x34]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x38]
ldr r1, _08076F50 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _08076F54 @ =sub_8074E70
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08076F4C: .4byte gBattleAnimArgs
_08076F50: .4byte move_anim_8074EE0
_08076F54: .4byte sub_8074E70
thumb_func_end sub_8076ED8
thumb_func_start sub_8076F58
sub_8076F58: @ 8076F58
push {r4,lr}
adds r4, r0, 0
ldr r0, _08076F80 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08076F88
ldr r2, _08076F84 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
movs r1, 0x6
ldrsh r0, [r2, r1]
negs r0, r0
strh r0, [r2, 0x6]
adds r1, r2, 0
b _08076F92
.align 2, 0
_08076F80: .4byte gBattleAnimAttacker
_08076F84: .4byte gBattleAnimArgs
_08076F88:
ldr r1, _08076FC4 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
_08076F92:
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x34]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x38]
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl StartSpriteAnim
ldr r1, _08076FC8 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _08076FCC @ =sub_8074E70
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08076FC4: .4byte gBattleAnimArgs
_08076FC8: .4byte move_anim_8074EE0
_08076FCC: .4byte sub_8074E70
thumb_func_end sub_8076F58
thumb_func_start sub_8076FD0
sub_8076FD0: @ 8076FD0
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _08076FF4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08076FFC
ldr r0, _08076FF8 @ =gBattleAnimArgs
ldrh r1, [r4, 0x20]
ldrh r2, [r0]
subs r1, r2
strh r1, [r4, 0x20]
b _08077008
.align 2, 0
_08076FF4: .4byte gBattleAnimAttacker
_08076FF8: .4byte gBattleAnimArgs
_08076FFC:
ldr r1, _08077024 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
adds r0, r1, 0
_08077008:
ldrh r0, [r0, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r0, _08077028 @ =sub_8074F6C
str r0, [r4, 0x1C]
ldr r1, _0807702C @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08077024: .4byte gBattleAnimArgs
_08077028: .4byte sub_8074F6C
_0807702C: .4byte DestroyAnimSprite
thumb_func_end sub_8076FD0
thumb_func_start sub_8077030
sub_8077030: @ 8077030
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080770C4 @ =gTasks
adds r5, r1, r0
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x8]
ldr r7, _080770C8 @ =gBattleAnimAttacker
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
movs r1, 0x8
cmp r0, 0
beq _08077064
movs r0, 0x8
negs r0, r0
adds r1, r0, 0
_08077064:
strh r1, [r5, 0xA]
strh r6, [r5, 0xC]
strh r6, [r5, 0xE]
ldr r4, _080770CC @ =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r0, 0x24]
ldrh r2, [r5, 0x8]
subs r1, r2
strh r1, [r0, 0x24]
ldr r0, _080770D0 @ =0x00002771
bl AllocSpritePalette
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
strh r6, [r5, 0x12]
movs r1, 0x10
ldrsh r0, [r5, r1]
adds r0, 0x10
lsls r0, 20
lsrs r6, r0, 16
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x5]
lsrs r0, 4
adds r0, 0x10
lsls r4, r0, 4
ldrb r0, [r7]
bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
cmp r0, 0x14
beq _080770C0
cmp r0, 0x28
bne _080770D4
_080770C0:
movs r0, 0x2
b _080770D6
.align 2, 0
_080770C4: .4byte gTasks
_080770C8: .4byte gBattleAnimAttacker
_080770CC: .4byte gSprites
_080770D0: .4byte 0x00002771
_080770D4:
movs r0, 0x3
_080770D6:
strh r0, [r5, 0x14]
lsls r0, r4, 1
ldr r1, _08077104 @ =gPlttBufferUnfaded
adds r0, r1
lsls r1, r6, 1
ldr r2, _08077108 @ =gPlttBufferFaded
adds r1, r2
ldr r2, _0807710C @ =0x04000008
bl CpuSet
ldr r0, _08077110 @ =gBattleAnimArgs
ldrb r2, [r0, 0x2]
ldrh r3, [r0]
adds r0, r6, 0
movs r1, 0x10
bl BlendPalette
ldr r0, _08077114 @ =sub_8077118
str r0, [r5]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08077104: .4byte gPlttBufferUnfaded
_08077108: .4byte gPlttBufferFaded
_0807710C: .4byte 0x04000008
_08077110: .4byte gBattleAnimArgs
_08077114: .4byte sub_8077118
thumb_func_end sub_8077030
thumb_func_start sub_8077118
sub_8077118: @ 8077118
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _0807713C @ =gTasks
adds r4, r0, r1
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _0807717C
cmp r0, 0x1
bgt _08077140
cmp r0, 0
beq _08077146
b _080771D8
.align 2, 0
_0807713C: .4byte gTasks
_08077140:
cmp r0, 0x2
beq _080771C4
b _080771D8
_08077146:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80771E4
ldr r2, _08077178 @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0xA]
ldrh r2, [r0, 0x24]
adds r1, r2
strh r1, [r0, 0x24]
ldrh r1, [r4, 0xE]
adds r0, r1, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080771D8
strh r1, [r4, 0xE]
b _080771B6
.align 2, 0
_08077178: .4byte gSprites
_0807717C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80771E4
ldr r3, _080771C0 @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r1, [r0, 0x24]
ldrh r2, [r4, 0xA]
subs r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r2, r0, 16
cmp r2, 0
bne _080771D8
movs r1, 0x8
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
strh r2, [r1, 0x24]
_080771B6:
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
b _080771D8
.align 2, 0
_080771C0: .4byte gSprites
_080771C4:
movs r2, 0x12
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080771D8
ldr r0, _080771E0 @ =0x00002771
bl FreeSpritePaletteByTag
adds r0, r5, 0
bl DestroyAnimVisualTask
_080771D8:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080771E0: .4byte 0x00002771
thumb_func_end sub_8077118
thumb_func_start sub_80771E4
sub_80771E4: @ 80771E4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
lsls r1, 24
lsrs r1, 24
mov r8, r1
movs r0, 0
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
lsrs r7, r0, 16
asrs r0, 16
cmp r0, 0
blt _08077254
ldr r5, _08077260 @ =gSprites
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
adds r3, r4, r5
movs r0, 0x3
ldrb r1, [r6, 0x14]
ands r1, r0
lsls r1, 2
ldrb r2, [r3, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x5]
ldrb r1, [r6, 0x10]
lsls r1, 4
movs r2, 0xF
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x5]
movs r0, 0x8
strh r0, [r3, 0x2E]
mov r0, r8
strh r0, [r3, 0x30]
strh r7, [r3, 0x32]
movs r0, 0x8
ldrsh r1, [r6, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrh r0, [r0, 0x24]
strh r0, [r3, 0x24]
adds r5, 0x1C
adds r4, r5
ldr r0, _08077264 @ =sub_8077268
str r0, [r4]
ldrh r0, [r6, 0x12]
adds r0, 0x1
strh r0, [r6, 0x12]
_08077254:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08077260: .4byte gSprites
_08077264: .4byte sub_8077268
thumb_func_end sub_80771E4
thumb_func_start sub_8077268
sub_8077268: @ 8077268
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x2E]
subs r0, 0x1
strh r0, [r3, 0x2E]
lsls r0, 16
cmp r0, 0
bne _08077292
ldr r2, _08077298 @ =gTasks
movs r0, 0x30
ldrsh r1, [r3, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0x12]
subs r1, 0x1
strh r1, [r0, 0x12]
adds r0, r3, 0
bl obj_delete_but_dont_free_vram
_08077292:
pop {r0}
bx r0
.align 2, 0
_08077298: .4byte gTasks
thumb_func_end sub_8077268
thumb_func_start sub_807729C
sub_807729C: @ 807729C
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080772D0 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080772D4
movs r0, 0x5
b _080772D6
.align 2, 0
_080772D0: .4byte gBattleAnimAttacker
_080772D4:
ldr r0, _080772E8 @ =0x0000fff6
_080772D6:
strh r0, [r5, 0x2E]
ldr r0, _080772EC @ =0x0000ffd8
strh r0, [r5, 0x30]
ldr r0, _080772F0 @ =sub_80772F4
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080772E8: .4byte 0x0000fff6
_080772EC: .4byte 0x0000ffd8
_080772F0: .4byte sub_80772F4
thumb_func_end sub_807729C
thumb_func_start sub_80772F4
sub_80772F4: @ 80772F4
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
ldrh r5, [r4, 0x30]
ldrh r2, [r4, 0x34]
adds r0, r5, r2
strh r0, [r4, 0x34]
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r1, 0xA
bl __divsi3
strh r0, [r4, 0x24]
movs r2, 0x34
ldrsh r0, [r4, r2]
movs r1, 0xA
bl __divsi3
strh r0, [r4, 0x26]
lsls r0, r5, 16
asrs r0, 16
movs r1, 0x14
negs r1, r1
cmp r0, r1
bge _08077330
adds r0, r5, 0x1
strh r0, [r4, 0x30]
_08077330:
movs r1, 0x22
ldrsh r0, [r4, r1]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _08077348
adds r0, r4, 0
bl DestroyAnimSprite
_08077348:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80772F4
thumb_func_start sub_8077350
sub_8077350: @ 8077350
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _08077388 @ =gBattleAnimArgs
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x8]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x32]
ldrh r0, [r5, 0xA]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x36]
ldr r0, _0807738C @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08077390
ldrh r0, [r5, 0x8]
adds r0, 0x1E
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r5, 0xA]
subs r0, 0x14
b _0807739E
.align 2, 0
_08077388: .4byte gBattleAnimArgs
_0807738C: .4byte gBattleAnimTarget
_08077390:
ldrh r0, [r5, 0x8]
subs r0, 0x1E
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r5, 0xA]
subs r0, 0x50
_0807739E:
strh r0, [r4, 0x22]
ldr r0, _080773B4 @ =StartAnimLinearTranslation
str r0, [r4, 0x1C]
ldr r1, _080773B8 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080773B4: .4byte StartAnimLinearTranslation
_080773B8: .4byte DestroyAnimSprite
thumb_func_end sub_8077350
.align 2, 0 @ Don't pad with nop.