pokefirered/asm/battle_anim_effects_1.s

9883 lines
168 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80A22E8
sub_80A22E8: @ 80A22E8
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080A231C @ =gBattleAnimArgs
ldrh r0, [r5]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
ldr r0, _080A2320 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A2324
ldrh r0, [r5, 0x8]
negs r0, r0
b _080A2326
.align 2, 0
_080A231C: .4byte gBattleAnimArgs
_080A2320: .4byte gBattleAnimAttacker
_080A2324:
ldrh r0, [r5, 0x8]
_080A2326:
strh r0, [r4, 0x34]
ldr r0, _080A2338 @ =gBattleAnimArgs
ldrh r0, [r0, 0xA]
strh r0, [r4, 0x36]
ldr r0, _080A233C @ =sub_80A2340
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2338: .4byte gBattleAnimArgs
_080A233C: .4byte sub_80A2340
thumb_func_end sub_80A22E8
thumb_func_start sub_80A2340
sub_80A2340: @ 80A2340
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080A237C
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x32]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r1, r0
strh r1, [r4, 0x32]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r2, 0x34
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x36]
ldrh r1, [r4, 0x38]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
b _080A2382
_080A237C:
adds r0, r4, 0
bl DestroyAnimSprite
_080A2382:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A2340
thumb_func_start sub_80A2388
sub_80A2388: @ 80A2388
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080A23C8 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
ldr r5, _080A23CC @ =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, _080A23D0 @ =StartAnimLinearTranslation
str r0, [r4, 0x1C]
ldr r1, _080A23D4 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A23C8: .4byte gBattleAnimArgs
_080A23CC: .4byte gBattleAnimAttacker
_080A23D0: .4byte StartAnimLinearTranslation
_080A23D4: .4byte move_anim_8074EE0
thumb_func_end sub_80A2388
thumb_func_start sub_80A23D8
sub_80A23D8: @ 80A23D8
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r5, _080A2420 @ =gBattleAnimArgs
ldrb r1, [r5, 0x6]
adds r0, r4, 0
bl StartSpriteAnim
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
ldr r5, _080A2424 @ =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, _080A2428 @ =StartAnimLinearTranslation
str r0, [r4, 0x1C]
ldr r1, _080A242C @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2420: .4byte gBattleAnimArgs
_080A2424: .4byte gBattleAnimTarget
_080A2428: .4byte StartAnimLinearTranslation
_080A242C: .4byte DestroyAnimSprite
thumb_func_end sub_80A23D8
thumb_func_start sub_80A2430
sub_80A2430: @ 80A2430
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r6, _080A2480 @ =gBattleAnimArgs
ldrh r0, [r6, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldr r5, _080A2484 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x38]
ldr r1, _080A2488 @ =sub_80A248C
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2480: .4byte gBattleAnimArgs
_080A2484: .4byte gBattleAnimTarget
_080A2488: .4byte sub_80A248C
thumb_func_end sub_80A2430
thumb_func_start sub_80A248C
sub_80A248C: @ 80A248C
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _080A24A2
adds r0, r4, 0
bl DestroySprite
b _080A24F6
_080A24A2:
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _080A24BC
ldr r0, _080A24B8 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
adds r0, 0x1
b _080A24C6
.align 2, 0
_080A24B8: .4byte gBattleAnimTarget
_080A24BC:
ldr r0, _080A24FC @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
adds r0, 0x6
_080A24C6:
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x5
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xE
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x38]
adds r0, 0xF
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
_080A24F6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A24FC: .4byte gBattleAnimTarget
thumb_func_end sub_80A248C
thumb_func_start sub_80A2500
sub_80A2500: @ 80A2500
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
ldr r1, _080A2570 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r1
ldrh r0, [r5, 0x8]
subs r0, 0x1
movs r2, 0
strh r0, [r5, 0x8]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080A255A
ldrh r0, [r5, 0xA]
adds r0, 0x1
strh r0, [r5, 0xA]
movs r0, 0x6
strh r0, [r5, 0x8]
ldr r1, _080A2574 @ =gBattleAnimArgs
movs r0, 0xF
strh r0, [r1]
strh r2, [r1, 0x2]
movs r0, 0x50
strh r0, [r1, 0x4]
strh r2, [r1, 0x6]
ldr r4, _080A2578 @ =gUnknown_83E2A88
ldr r0, _080A257C @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
adds r3, r0, 0
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl CreateSpriteAndAnimate
_080A255A:
movs r1, 0xA
ldrsh r0, [r5, r1]
cmp r0, 0xF
bne _080A2568
adds r0, r6, 0
bl DestroyAnimVisualTask
_080A2568:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2570: .4byte gTasks
_080A2574: .4byte gBattleAnimArgs
_080A2578: .4byte gUnknown_83E2A88
_080A257C: .4byte gBattleAnimTarget
thumb_func_end sub_80A2500
thumb_func_start sub_80A2580
sub_80A2580: @ 80A2580
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075114
ldr r6, _080A25C4 @ =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x2E]
ldr r5, _080A25C8 @ =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]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_8075068
ldr r0, _080A25CC @ =sub_80A25D0
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A25C4: .4byte gBattleAnimArgs
_080A25C8: .4byte gBattleAnimAttacker
_080A25CC: .4byte sub_80A25D0
thumb_func_end sub_80A2580
thumb_func_start sub_80A25D0
sub_80A25D0: @ 80A25D0
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080A25E4
adds r0, r4, 0
bl DestroyAnimSprite
_080A25E4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A25D0
thumb_func_start sub_80A25EC
sub_80A25EC: @ 80A25EC
push {r4,r5,lr}
adds r5, r0, 0
bl Random
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
movs r0, 0x7
ands r1, r0
adds r0, r5, 0
bl StartSpriteAnim
ldr r4, _080A2634 @ =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
beq _080A2638
ldrh r0, [r5, 0x20]
subs r0, 0x14
b _080A263C
.align 2, 0
_080A2634: .4byte gBattleAnimAttacker
_080A2638:
ldrh r0, [r5, 0x20]
adds r0, 0x14
_080A263C:
strh r0, [r5, 0x20]
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x1F
ands r0, r1
adds r0, 0x40
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
ldr r4, _080A269C @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x22]
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
bl sub_8075804
bl Random
movs r1, 0xFF
ands r1, r0
strh r1, [r5, 0x38]
adds r0, r5, 0
adds r0, 0x43
ldrb r0, [r0]
strh r0, [r5, 0x3A]
ldr r1, _080A26A0 @ =sub_80A26A4
str r1, [r5, 0x1C]
adds r0, r5, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A269C: .4byte gBattleAnimTarget
_080A26A0: .4byte sub_80A26A4
thumb_func_end sub_80A25EC
thumb_func_start sub_80A26A4
sub_80A26A4: @ 80A26A4
push {r4,lr}
adds r4, r0, 0
bl sub_807578C
lsls r0, 24
cmp r0, 0
beq _080A26BA
adds r0, r4, 0
bl DestroyAnimSprite
b _080A26EA
_080A26BA:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xC
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0x7E
bgt _080A26D6
ldrh r0, [r4, 0x3A]
b _080A26DA
_080A26D6:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
_080A26DA:
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrh r0, [r4, 0x38]
adds r0, 0x18
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
_080A26EA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A26A4
thumb_func_start sub_80A26F0
sub_80A26F0: @ 80A26F0
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080A2750 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A2710
ldr r1, _080A2754 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080A2710:
ldr r4, _080A2754 @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
ldr r5, _080A2758 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
adds r0, r1
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x1
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, _080A275C @ =sub_80A2760
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2750: .4byte gBattleAnimAttacker
_080A2754: .4byte gBattleAnimArgs
_080A2758: .4byte gBattleAnimTarget
_080A275C: .4byte sub_80A2760
thumb_func_end sub_80A26F0
thumb_func_start sub_80A2760
sub_80A2760: @ 80A2760
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080A278A
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
movs r0, 0xA
strh r0, [r4, 0x2E]
ldr r0, _080A2790 @ =sub_8074C44
str r0, [r4, 0x1C]
ldr r1, _080A2794 @ =sub_80A2798
adds r0, r4, 0
bl StoreSpriteCallbackInData6
_080A278A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A2790: .4byte sub_8074C44
_080A2794: .4byte sub_80A2798
thumb_func_end sub_80A2760
thumb_func_start sub_80A2798
sub_80A2798: @ 80A2798
push {r4,lr}
adds r4, r0, 0
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
movs r0, 0x3C
strh r0, [r4, 0x2E]
ldr r0, _080A27C8 @ =sub_8074C44
str r0, [r4, 0x1C]
ldr r1, _080A27CC @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A27C8: .4byte sub_8074C44
_080A27CC: .4byte DestroyAnimSprite
thumb_func_end sub_80A2798
thumb_func_start sub_80A27D0
sub_80A27D0: @ 80A27D0
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075114
ldr r5, _080A2814 @ =gBattleAnimArgs
ldrb r1, [r5, 0x8]
adds r0, r4, 0
bl StartSpriteAnim
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080A27FA
ldrb r0, [r4, 0x1]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4, 0x1]
_080A27FA:
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x30]
ldr r1, _080A2818 @ =sub_80A281C
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2814: .4byte gBattleAnimArgs
_080A2818: .4byte sub_80A281C
thumb_func_end sub_80A27D0
thumb_func_start sub_80A281C
sub_80A281C: @ 80A281C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x20
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x3
negs r1, r1
bl Cos
ldrh r1, [r4, 0x32]
adds r1, 0x18
strh r1, [r4, 0x32]
lsls r1, 16
asrs r1, 24
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
subs r0, 0x40
lsls r0, 16
lsrs r0, 16
cmp r0, 0x7F
bhi _080A2870
ldr r0, _080A286C @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
b _080A2894
.align 2, 0
_080A286C: .4byte gBattleAnimTarget
_080A2870:
ldr r0, _080A28C0 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
adds r0, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x3
bls _080A2884
movs r2, 0x3
_080A2884:
movs r0, 0x3
ands r2, r0
lsls r2, 2
ldrb r1, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
_080A2894:
strb r0, [r4, 0x5]
ldrh r0, [r4, 0x30]
adds r0, 0x2
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080A28B8
adds r0, r4, 0
bl DestroyAnimSprite
_080A28B8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A28C0: .4byte gBattleAnimTarget
thumb_func_end sub_80A281C
thumb_func_start sub_80A28C4
sub_80A28C4: @ 80A28C4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A28DE
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080A28E6
_080A28DE:
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080A2918
_080A28E6:
ldr r0, _080A2904 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A2908
movs r0, 0x2
movs r1, 0x4
movs r2, 0x3
bl SetAnimBgAttribute
b _080A2912
.align 2, 0
_080A2904: .4byte gBattleAnimTarget
_080A2908:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
_080A2912:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080A2918:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A28C4
thumb_func_start sub_80A2920
sub_80A2920: @ 80A2920
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0
bl sub_8075160
ldr r5, _080A2968 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldr r0, _080A296C @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
adds r0, r5
strh r0, [r4, 0x36]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
movs r0, 0x40
strh r0, [r4, 0x38]
ldr r1, _080A2970 @ =sub_80A2974
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2968: .4byte gBattleAnimArgs
_080A296C: .4byte gBattleAnimAttacker
_080A2970: .4byte sub_80A2974
thumb_func_end sub_80A2920
thumb_func_start sub_80A2974
sub_80A2974: @ 80A2974
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080A29E0
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x20
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x5
negs r1, r1
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x38]
subs r0, 0x40
lsls r0, 16
lsrs r0, 16
cmp r0, 0x7F
bhi _080A29C0
ldr r0, _080A29BC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
subs r0, 0x1
b _080A29CA
.align 2, 0
_080A29BC: .4byte gBattleAnimAttacker
_080A29C0:
ldr r0, _080A29DC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
adds r0, 0x1
_080A29CA:
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrh r0, [r4, 0x38]
adds r0, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
b _080A29E6
.align 2, 0
_080A29DC: .4byte gBattleAnimAttacker
_080A29E0:
adds r0, r4, 0
bl DestroyAnimSprite
_080A29E6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A2974
thumb_func_start sub_80A29EC
sub_80A29EC: @ 80A29EC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r5, _080A2A34 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldr r0, _080A2A38 @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
adds r0, r5
strh r0, [r4, 0x36]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
movs r0, 0x40
strh r0, [r4, 0x38]
ldr r1, _080A2A3C @ =sub_80A2A40
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2A34: .4byte gBattleAnimArgs
_080A2A38: .4byte gBattleAnimAttacker
_080A2A3C: .4byte sub_80A2A40
thumb_func_end sub_80A29EC
thumb_func_start sub_80A2A40
sub_80A2A40: @ 80A2A40
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080A2A98
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x8
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
ldrh r1, [r4, 0x38]
adds r0, r1, 0
subs r0, 0x3B
lsls r0, 16
lsrs r0, 16
cmp r0, 0x4
bls _080A2A78
adds r0, r1, 0
subs r0, 0xBB
lsls r0, 16
lsrs r0, 16
cmp r0, 0x4
bhi _080A2A8C
_080A2A78:
ldrb r2, [r4, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
eors r1, r0
lsls r1, 1
subs r0, 0x47
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x3]
_080A2A8C:
ldrh r0, [r4, 0x38]
adds r0, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
b _080A2A9E
_080A2A98:
adds r0, r4, 0
bl DestroyAnimSprite
_080A2A9E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A2A40
thumb_func_start sub_80A2AA4
sub_80A2AA4: @ 80A2AA4
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080A2AE0 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
ldr r1, _080A2AE4 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldr r0, _080A2AE8 @ =sub_80A2AEC
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2AE0: .4byte gBattleAnimAttacker
_080A2AE4: .4byte gBattleAnimArgs
_080A2AE8: .4byte sub_80A2AEC
thumb_func_end sub_80A2AA4
thumb_func_start sub_80A2AEC
sub_80A2AEC: @ 80A2AEC
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x32]
movs r2, 0x32
ldrsh r3, [r1, r2]
cmp r3, 0
bne _080A2B20
ldrh r0, [r1, 0x30]
movs r2, 0x1
ands r2, r0
cmp r2, 0
beq _080A2B0E
movs r0, 0x80
strh r0, [r1, 0x2E]
strh r3, [r1, 0x30]
strh r3, [r1, 0x32]
b _080A2B14
_080A2B0E:
strh r2, [r1, 0x2E]
strh r2, [r1, 0x30]
strh r2, [r1, 0x32]
_080A2B14:
ldr r0, _080A2B1C @ =sub_80A2B38
str r0, [r1, 0x1C]
b _080A2B34
.align 2, 0
_080A2B1C: .4byte sub_80A2B38
_080A2B20:
subs r0, 0x1
strh r0, [r1, 0x32]
ldrh r0, [r1, 0x2E]
ldrh r2, [r1, 0x20]
adds r0, r2
strh r0, [r1, 0x20]
ldrh r0, [r1, 0x30]
ldrh r2, [r1, 0x22]
adds r0, r2
strh r0, [r1, 0x22]
_080A2B34:
pop {r0}
bx r0
thumb_func_end sub_80A2AEC
thumb_func_start sub_80A2B38
sub_80A2B38: @ 80A2B38
push {r4,lr}
adds r4, r0, 0
ldr r0, _080A2B58 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A2B5C
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x19
bl Sin
negs r0, r0
b _080A2B66
.align 2, 0
_080A2B58: .4byte gBattleAnimAttacker
_080A2B5C:
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x19
bl Sin
_080A2B66:
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x2E]
adds r0, 0x2
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _080A2B86
ldrh r0, [r4, 0x26]
adds r0, 0x1
strh r0, [r4, 0x26]
_080A2B86:
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x50
ble _080A2B94
adds r0, r4, 0
bl DestroyAnimSprite
_080A2B94:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A2B38
thumb_func_start sub_80A2B9C
sub_80A2B9C: @ 80A2B9C
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080A2BF0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A2BBC
ldr r1, _080A2BF4 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080A2BBC:
ldr r6, _080A2BF4 @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
movs r1, 0xC
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A2BFC
ldr r4, _080A2BF8 @ =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]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
adds r0, r6
b _080A2C1C
.align 2, 0
_080A2BF0: .4byte gBattleAnimAttacker
_080A2BF4: .4byte gBattleAnimArgs
_080A2BF8: .4byte gBattleAnimTarget
_080A2BFC:
ldr r0, _080A2C48 @ =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
bl sub_8076D9C
ldrh r0, [r6, 0x4]
ldrh r1, [r5, 0x32]
adds r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r6, 0x6]
ldrh r1, [r5, 0x36]
adds r0, r1
_080A2C1C:
strh r0, [r5, 0x36]
ldr r0, _080A2C4C @ =gBattleAnimArgs
ldrh r0, [r0, 0xA]
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_8075068
ldr r0, _080A2C50 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
adds r4, r0, 0
ldr r0, _080A2C48 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _080A2C54
movs r0, 0x1
b _080A2C56
.align 2, 0
_080A2C48: .4byte gBattleAnimTarget
_080A2C4C: .4byte gBattleAnimArgs
_080A2C50: .4byte gBattleAnimAttacker
_080A2C54:
movs r0, 0
_080A2C56:
strh r0, [r5, 0x2E]
ldr r0, _080A2C64 @ =sub_80A2C68
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2C64: .4byte sub_80A2C68
thumb_func_end sub_80A2B9C
thumb_func_start sub_80A2C68
sub_80A2C68: @ 80A2C68
push {r4-r7,lr}
adds r6, r0, 0
movs r7, 0
ldrh r5, [r6, 0x2E]
ldrh r4, [r6, 0x3C]
movs r0, 0x1
strh r0, [r6, 0x2E]
adds r0, r6, 0
bl AnimateBallThrow
ldrh r0, [r6, 0x3C]
strh r5, [r6, 0x2E]
lsls r4, 16
asrs r4, 16
cmp r4, 0xC8
ble _080A2C9A
lsls r0, 16
asrs r0, 16
cmp r0, 0x37
bgt _080A2C9A
ldrh r0, [r6, 0x6]
cmp r0, 0
bne _080A2CA0
adds r0, 0x1
strh r0, [r6, 0x6]
_080A2C9A:
ldrh r0, [r6, 0x6]
cmp r0, 0
beq _080A2CD2
_080A2CA0:
movs r1, 0x2E
ldrsh r0, [r6, r1]
cmp r0, 0
beq _080A2CD2
adds r3, r6, 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]
ldrh r0, [r6, 0x6]
adds r0, 0x1
strh r0, [r6, 0x6]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1E
bne _080A2CD2
movs r7, 0x1
_080A2CD2:
movs r2, 0x20
ldrsh r0, [r6, r2]
movs r2, 0x24
ldrsh r1, [r6, r2]
adds r0, r1
adds r0, 0x10
movs r1, 0x88
lsls r1, 1
cmp r0, r1
bhi _080A2CFC
movs r0, 0x22
ldrsh r1, [r6, r0]
movs r2, 0x26
ldrsh r0, [r6, r2]
adds r1, r0
cmp r1, 0xA0
bgt _080A2CFC
movs r0, 0x10
negs r0, r0
cmp r1, r0
bge _080A2CFE
_080A2CFC:
movs r7, 0x1
_080A2CFE:
cmp r7, 0
beq _080A2D08
adds r0, r6, 0
bl DestroyAnimSprite
_080A2D08:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80A2C68
thumb_func_start sub_80A2D10
sub_80A2D10: @ 80A2D10
push {r4,lr}
adds r4, r0, 0
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A2D3C
bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A2D3C
ldr r0, _080A2D64 @ =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
bl sub_8076D9C
_080A2D3C:
ldrh r0, [r4, 0x22]
adds r0, 0x20
strh r0, [r4, 0x22]
ldr r1, _080A2D68 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x34]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x36]
ldr r0, _080A2D6C @ =sub_80A2D70
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A2D64: .4byte gBattleAnimTarget
_080A2D68: .4byte gBattleAnimArgs
_080A2D6C: .4byte sub_80A2D70
thumb_func_end sub_80A2D10
thumb_func_start sub_80A2D70
sub_80A2D70: @ 80A2D70
push {r4,r5,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0xFF
bne _080A2D86
ldrh r0, [r4, 0x22]
subs r0, 0x2
strh r0, [r4, 0x22]
b _080A2D94
_080A2D86:
cmp r0, 0
ble _080A2D94
ldrh r0, [r4, 0x22]
subs r0, 0x2
strh r0, [r4, 0x22]
subs r0, r1, 0x2
strh r0, [r4, 0x30]
_080A2D94:
ldrh r3, [r4, 0x32]
ldrh r5, [r4, 0x38]
adds r2, r3, r5
strh r2, [r4, 0x38]
movs r0, 0x2E
ldrsh r1, [r4, r0]
movs r5, 0x36
ldrsh r0, [r4, r5]
cmp r1, r0
bge _080A2DAC
adds r0, r2, r3
strh r0, [r4, 0x38]
_080A2DAC:
ldrh r1, [r4, 0x38]
movs r0, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r2, 0x34
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x24]
movs r5, 0x38
ldrsh r0, [r4, r5]
movs r1, 0x5
bl Sin
strh r0, [r4, 0x26]
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0x7F
bgt _080A2DEC
ldr r0, _080A2DE8 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
b _080A2DFA
.align 2, 0
_080A2DE8: .4byte gBattleAnimTarget
_080A2DEC:
ldr r0, _080A2E24 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
_080A2DFA:
movs r1, 0x3
ands r0, r1
lsls r0, 2
ldrb r2, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x5]
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bne _080A2E1E
adds r0, r4, 0
bl DestroyAnimSprite
_080A2E1E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2E24: .4byte gBattleAnimTarget
thumb_func_end sub_80A2D70
thumb_func_start sub_80A2E28
sub_80A2E28: @ 80A2E28
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0
bl sub_8075114
adds r2, r5, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r4, _080A2E5C @ =gBattleAnimArgs
ldrb r1, [r4, 0x4]
adds r0, r5, 0
bl StartSpriteAffineAnim
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x3A]
ldrh r0, [r4, 0x6]
strh r0, [r5, 0x3C]
ldr r0, _080A2E60 @ =sub_80A2E64
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2E5C: .4byte gBattleAnimArgs
_080A2E60: .4byte sub_80A2E64
thumb_func_end sub_80A2E28
thumb_func_start sub_80A2E64
sub_80A2E64: @ 80A2E64
push {r4,lr}
adds r4, r0, 0
ldr r0, _080A2E94 @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080A2E98 @ =0x0000ffff
cmp r1, r0
bne _080A2E8E
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
movs r0, 0x1
bl GetAnimBankSpriteId
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x2E]
ldr r0, _080A2E9C @ =sub_80A2EA0
str r0, [r4, 0x1C]
_080A2E8E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A2E94: .4byte gBattleAnimArgs
_080A2E98: .4byte 0x0000ffff
_080A2E9C: .4byte sub_80A2EA0
thumb_func_end sub_80A2E64
thumb_func_start sub_80A2EA0
sub_80A2EA0: @ 80A2EA0
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
bl GetAnimBankSpriteId
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A2EB8
ldrh r0, [r4, 0x2E]
adds r0, 0xB
b _080A2EBC
_080A2EB8:
ldrh r0, [r4, 0x2E]
subs r0, 0xB
_080A2EBC:
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _080A2ED8
movs r0, 0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x32]
_080A2ED8:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080A2F06
ldrh r0, [r4, 0x3C]
subs r0, 0x1
strh r0, [r4, 0x3C]
lsls r0, 16
cmp r0, 0
ble _080A2F00
ldrh r1, [r4, 0x3A]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl StartSpriteAffineAnim
b _080A2F06
_080A2F00:
adds r0, r4, 0
bl DestroyAnimSprite
_080A2F06:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A2EA0
thumb_func_start sub_80A2F0C
sub_80A2F0C: @ 80A2F0C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _080A2F38 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
adds r0, 0x3E
ldrb r0, [r0]
lsls r0, 29
cmp r0, 0
bge _080A2F3C
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080A2F62
.align 2, 0
_080A2F38: .4byte gSprites
_080A2F3C:
adds r0, r2, 0
movs r1, 0x1
bl PrepareBattlerSpriteForRotScale
ldr r1, _080A2F68 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r2, _080A2F6C @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r0, 0x8]
ldrh r1, [r2, 0x2]
strh r1, [r0, 0xA]
movs r1, 0x80
lsls r1, 1
strh r1, [r0, 0x1E]
ldr r1, _080A2F70 @ =sub_80A2F74
str r1, [r0]
_080A2F62:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A2F68: .4byte gTasks
_080A2F6C: .4byte gBattleAnimArgs
_080A2F70: .4byte sub_80A2F74
thumb_func_end sub_80A2F0C
thumb_func_start sub_80A2F74
sub_80A2F74: @ 80A2F74
push {r4-r6,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
ldr r1, _080A2FF4 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r4, r0, r1
ldrh r1, [r4, 0x8]
ldrh r0, [r4, 0x1C]
adds r1, r0
strh r1, [r4, 0x1C]
ldr r2, _080A2FF8 @ =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r5, r0, r2
lsls r1, 16
asrs r1, 24
strh r1, [r5, 0x24]
ldr r0, _080A2FFC @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A2FBE
ldrh r0, [r5, 0x24]
negs r0, r0
strh r0, [r5, 0x24]
_080A2FBE:
ldrh r0, [r4, 0x1E]
adds r0, 0x10
strh r0, [r4, 0x1E]
movs r0, 0x1E
ldrsh r2, [r4, r0]
adds r0, r6, 0
adds r1, r2, 0
movs r3, 0
bl SetSpriteRotScale
adds r0, r6, 0
bl sub_8076440
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0
bne _080A2FEC
strh r0, [r4, 0x8]
ldr r0, _080A3000 @ =sub_80A3004
str r0, [r4]
_080A2FEC:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2FF4: .4byte gTasks
_080A2FF8: .4byte gSprites
_080A2FFC: .4byte gBattleAnimTarget
_080A3000: .4byte sub_80A3004
thumb_func_end sub_80A2F74
thumb_func_start sub_80A3004
sub_80A3004: @ 80A3004
push {r4-r6,lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r0, _080A3050 @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080A3054 @ =0x0000ffff
cmp r1, r0
bne _080A3060
ldr r0, _080A3058 @ =gTasks
lsls r2, r3, 2
adds r1, r2, r3
lsls r1, 3
adds r6, r1, r0
movs r1, 0x8
ldrsh r5, [r6, r1]
adds r4, r0, 0
cmp r5, 0
bne _080A3074
movs r0, 0x1
bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl ResetSpriteRotScale
ldr r1, _080A305C @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
strh r5, [r0, 0x24]
strh r5, [r0, 0x26]
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
b _080A308E
.align 2, 0
_080A3050: .4byte gBattleAnimArgs
_080A3054: .4byte 0x0000ffff
_080A3058: .4byte gTasks
_080A305C: .4byte gSprites
_080A3060:
ldr r1, _080A3094 @ =gTasks
lsls r2, r3, 2
adds r0, r2, r3
lsls r0, 3
adds r0, r1
movs r4, 0x8
ldrsh r0, [r0, r4]
adds r4, r1, 0
cmp r0, 0
beq _080A308E
_080A3074:
adds r1, r2, r3
lsls r1, 3
adds r1, r4
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080A308E
adds r0, r3, 0
bl DestroyAnimVisualTask
_080A308E:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A3094: .4byte gTasks
thumb_func_end sub_80A3004
thumb_func_start sub_80A3098
sub_80A3098: @ 80A3098
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080A30AA
cmp r0, 0x1
beq _080A3104
b _080A3156
_080A30AA:
ldr r6, _080A30FC @ =gBattleAnimTarget
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A30C2
ldr r1, _080A3100 @ =gBattleAnimArgs
movs r2, 0
ldrsh r0, [r1, r2]
negs r0, r0
strh r0, [r1]
_080A30C2:
ldrb r0, [r6]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, _080A3100 @ =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r4]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
adds r0, r4
strh r0, [r5, 0x22]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080A3156
.align 2, 0
_080A30FC: .4byte gBattleAnimTarget
_080A3100: .4byte gBattleAnimArgs
_080A3104:
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080A3156
adds r0, r5, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
movs r0, 0x19
strh r0, [r5, 0x2E]
ldr r4, _080A315C @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
ldr r0, _080A3160 @ =sub_8075764
str r0, [r5, 0x1C]
ldr r1, _080A3164 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080A3156:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A315C: .4byte gBattleAnimAttacker
_080A3160: .4byte sub_8075764
_080A3164: .4byte DestroyAnimSprite
thumb_func_end sub_80A3098
thumb_func_start sub_80A3168
sub_80A3168: @ 80A3168
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080A31D4
ldr r4, _080A31E0 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r4, _080A31E4 @ =gBattleAnimArgs
ldrh r0, [r4]
strh r0, [r5, 0x24]
ldrh r0, [r4, 0x2]
strh r0, [r5, 0x26]
ldrb r0, [r4, 0x4]
adds r0, 0x1E
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r4, 0x6]
adds r0, r5, 0
bl StartSpriteAnim
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
movs r2, 0x22
ldrsh r0, [r5, r2]
movs r2, 0x26
ldrsh r1, [r5, r2]
adds r0, r1
cmp r0, 0x78
ble _080A31D4
ldrh r0, [r5, 0x22]
adds r1, r0, 0
subs r1, 0x78
ldrh r2, [r5, 0x26]
adds r0, r2
adds r1, r0
strh r1, [r5, 0x22]
_080A31D4:
ldr r0, _080A31E8 @ =sub_80A32DC
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A31E0: .4byte gBattleAnimAttacker
_080A31E4: .4byte gBattleAnimArgs
_080A31E8: .4byte sub_80A32DC
thumb_func_end sub_80A3168
thumb_func_start sub_80A31EC
sub_80A31EC: @ 80A31EC
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0x4
mov r9, r0
ldr r4, _080A32C8 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
mov r8, r0
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r6, _080A32CC @ =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r2, r0, 0
lsls r2, 24
subs r4, r5
lsls r4, 16
lsrs r2, 24
mov r1, r8
subs r2, r1
lsls r2, 16
lsrs r2, 16
lsrs r3, r4, 16
mov r10, r3
asrs r4, 16
ldr r6, _080A32D0 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
muls r0, r4
movs r1, 0x64
str r2, [sp]
bl __divsi3
adds r5, r0
mov r3, r9
strh r5, [r3, 0x20]
ldr r2, [sp]
lsls r0, r2, 16
asrs r0, 16
movs r3, 0
ldrsh r1, [r6, r3]
muls r0, r1
movs r1, 0x64
bl __divsi3
add r8, r0
mov r1, r8
mov r0, r9
strh r1, [r0, 0x22]
ldrh r0, [r6, 0x2]
mov r3, r9
strh r0, [r3, 0x24]
ldrh r0, [r6, 0x4]
strh r0, [r3, 0x26]
ldrb r0, [r6, 0x6]
adds r0, 0x1E
mov r1, r9
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r6, 0x8]
mov r0, r9
bl StartSpriteAnim
ldrh r0, [r6, 0xA]
mov r1, r9
strh r0, [r1, 0x32]
ldr r0, _080A32D4 @ =sub_80A32DC
str r0, [r1, 0x1C]
ldr r1, _080A32D8 @ =gUnknown_203999C
mov r3, r9
ldrh r0, [r3, 0x20]
strh r0, [r1]
ldrh r0, [r3, 0x22]
strh r0, [r1, 0x2]
mov r0, r10
strh r0, [r1, 0x4]
ldr r2, [sp]
strh r2, [r1, 0x6]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A32C8: .4byte gBattleAnimAttacker
_080A32CC: .4byte gBattleAnimTarget
_080A32D0: .4byte gBattleAnimArgs
_080A32D4: .4byte sub_80A32DC
_080A32D8: .4byte gUnknown_203999C
thumb_func_end sub_80A31EC
thumb_func_start sub_80A32DC
sub_80A32DC: @ 80A32DC
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x2E]
adds r1, 0x1
strh r1, [r3, 0x2E]
lsls r1, 16
asrs r1, 16
movs r2, 0x32
ldrsh r0, [r3, r2]
subs r0, 0xA
cmp r1, r0
ble _080A331C
movs r0, 0x2E
ldrsh r1, [r3, r0]
lsrs r0, r1, 31
adds r0, r1, r0
asrs r0, 1
lsls r0, 1
subs r1, r0
movs r2, 0x3E
adds r2, r3
mov r12, r2
movs r0, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
_080A331C:
movs r2, 0x2E
ldrsh r1, [r3, r2]
movs r2, 0x32
ldrsh r0, [r3, r2]
cmp r1, r0
ble _080A332E
adds r0, r3, 0
bl DestroyAnimSprite
_080A332E:
pop {r0}
bx r0
thumb_func_end sub_80A32DC
thumb_func_start sub_80A3334
sub_80A3334: @ 80A3334
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x2E
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A3374
ldr r5, _080A33B0 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, _080A33B4 @ =gBattleAnimArgs
lsrs r0, 24
ldrh r2, [r4]
adds r0, r2
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
adds r0, r1
strh r0, [r6, 0x22]
ldrh r0, [r4, 0x4]
strh r0, [r6, 0x30]
ldrh r0, [r4, 0x6]
strh r0, [r6, 0x32]
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x34]
_080A3374:
ldrh r0, [r6, 0x2E]
adds r0, 0x1
strh r0, [r6, 0x2E]
ldrh r1, [r6, 0x30]
muls r0, r1
strh r0, [r6, 0x24]
movs r2, 0x2E
ldrsh r1, [r6, r2]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
movs r1, 0xFF
ands r0, r1
movs r2, 0x32
ldrsh r1, [r6, r2]
bl Sin
strh r0, [r6, 0x26]
movs r0, 0x2E
ldrsh r1, [r6, r0]
movs r2, 0x34
ldrsh r0, [r6, r2]
cmp r1, r0
ble _080A33AA
adds r0, r6, 0
bl DestroyAnimSprite
_080A33AA:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A33B0: .4byte gBattleAnimAttacker
_080A33B4: .4byte gBattleAnimArgs
thumb_func_end sub_80A3334
thumb_func_start sub_80A33B8
sub_80A33B8: @ 80A33B8
push {r4,r5,lr}
movs r2, 0x20
ldrsh r4, [r0, r2]
lsls r4, 8
movs r3, 0x22
ldrsh r2, [r0, r3]
orrs r4, r2
movs r5, 0x3A
ldrsh r2, [r0, r5]
lsls r2, 8
movs r5, 0x3C
ldrsh r3, [r0, r5]
orrs r2, r3
lsls r1, 8
strh r4, [r0, 0x38]
strh r2, [r0, 0x3A]
strh r1, [r0, 0x3C]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A33B8
thumb_func_start sub_80A33E0
sub_80A33E0: @ 80A33E0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r8, r0
ldrh r0, [r0, 0x38]
lsrs r1, r0, 8
mov r10, r1
lsls r0, 24
lsrs r0, 24
mov r9, r0
mov r1, r8
ldrh r0, [r1, 0x3A]
lsrs r2, r0, 8
lsls r0, 24
lsrs r4, r0, 24
ldrh r1, [r1, 0x3C]
lsls r0, r1, 16
asrs r0, 24
lsls r0, 16
lsrs r6, r0, 16
movs r3, 0xFF
ands r3, r1
cmp r2, 0
bne _080A341A
movs r2, 0x20
negs r2, r2
b _080A3422
_080A341A:
cmp r2, 0xFF
bne _080A3422
movs r2, 0x88
lsls r2, 1
_080A3422:
mov r0, r9
subs r4, r0
lsls r4, 16
lsrs r4, 16
mov r1, r10
subs r0, r2, r1
lsls r5, r3, 16
asrs r5, 16
muls r0, r5
lsls r1, r6, 16
asrs r7, r1, 16
adds r1, r7, 0
bl __divsi3
adds r6, r0, 0
lsls r4, 16
asrs r4, 16
adds r0, r4, 0
muls r0, r5
adds r1, r7, 0
bl __divsi3
add r6, r10
mov r1, r8
strh r6, [r1, 0x20]
add r0, r9
strh r0, [r1, 0x22]
adds r5, 0x1
lsls r5, 16
lsrs r3, r5, 16
asrs r5, 16
cmp r5, r7
beq _080A3474
lsls r1, r7, 8
lsls r0, r3, 16
asrs r0, 16
orrs r0, r1
mov r1, r8
strh r0, [r1, 0x3C]
movs r0, 0
b _080A3476
_080A3474:
movs r0, 0x1
_080A3476:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A33E0
thumb_func_start sub_80A3484
sub_80A3484: @ 80A3484
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0xA
bne _080A3498
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_080A3498:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x32
ble _080A34AC
adds r0, r4, 0
bl DestroyAnimSprite
_080A34AC:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A3484
thumb_func_start sub_80A34B4
sub_80A34B4: @ 80A34B4
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
lsls r0, 7
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
ldrh r1, [r4, 0x2E]
adds r1, r0
movs r5, 0
strh r1, [r4, 0x2E]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _080A34DE
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
strh r5, [r4, 0x2E]
_080A34DE:
ldrh r0, [r4, 0x2E]
adds r0, 0x80
lsls r0, 16
asrs r0, 16
movs r1, 0x30
ldrsh r2, [r4, r1]
lsls r2, 3
movs r1, 0x1E
subs r1, r2
lsls r1, 16
asrs r1, 16
bl Sin
strh r0, [r4, 0x26]
adds r0, r4, 0
bl sub_80A33E0
lsls r0, 24
cmp r0, 0
beq _080A350E
strh r5, [r4, 0x26]
strh r5, [r4, 0x2E]
ldr r0, _080A3514 @ =sub_80A3484
str r0, [r4, 0x1C]
_080A350E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A3514: .4byte sub_80A3484
thumb_func_end sub_80A34B4
thumb_func_start sub_80A3518
sub_80A3518: @ 80A3518
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0
bl sub_8075160
ldr r4, _080A3560 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080A3564 @ =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
ldrb r4, [r4]
cmp r0, r4
bne _080A3568
strh r6, [r5, 0x3A]
adds r0, r2, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
adds r0, r5, 0
movs r1, 0x3C
bl sub_80A33B8
movs r0, 0x1
b _080A357A
.align 2, 0
_080A3560: .4byte gBattleAnimTarget
_080A3564: .4byte gBattleAnimAttacker
_080A3568:
strh r6, [r5, 0x3A]
adds r0, r2, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
adds r0, r5, 0
movs r1, 0x3C
bl sub_80A33B8
movs r0, 0x3
_080A357A:
strh r0, [r5, 0x34]
movs r0, 0x3C
strh r0, [r5, 0x36]
ldr r0, _080A358C @ =sub_80A34B4
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A358C: .4byte sub_80A34B4
thumb_func_end sub_80A3518
thumb_func_start sub_80A3590
sub_80A3590: @ 80A3590
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
lsls r0, 7
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
ldrh r1, [r4, 0x2E]
adds r1, r0
movs r5, 0
strh r1, [r4, 0x2E]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _080A35BA
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
strh r5, [r4, 0x2E]
_080A35BA:
ldrh r0, [r4, 0x2E]
adds r0, 0x80
lsls r0, 16
asrs r0, 16
movs r1, 0x30
ldrsh r2, [r4, r1]
lsls r2, 3
movs r1, 0x1E
subs r1, r2
lsls r1, 16
asrs r1, 16
bl Sin
strh r0, [r4, 0x26]
adds r0, r4, 0
bl sub_80A33E0
lsls r0, 24
cmp r0, 0
beq _080A35EC
strh r5, [r4, 0x26]
strh r5, [r4, 0x2E]
adds r0, r4, 0
bl DestroyAnimSprite
_080A35EC:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A3590
thumb_func_start sub_80A35F4
sub_80A35F4: @ 80A35F4
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _080A3630 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080A3638
strh r0, [r5, 0x3A]
adds r0, r6, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
adds r0, r5, 0
movs r1, 0x28
bl sub_80A33B8
movs r0, 0x3
strh r0, [r5, 0x34]
movs r0, 0x3C
strh r0, [r5, 0x36]
ldr r0, _080A3634 @ =sub_80A34B4
b _080A3662
.align 2, 0
_080A3630: .4byte gBattleAnimTarget
_080A3634: .4byte sub_80A34B4
_080A3638:
movs r0, 0xFF
strh r0, [r5, 0x3A]
adds r0, r6, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A3650
movs r0, 0
strh r0, [r5, 0x3A]
_080A3650:
adds r0, r5, 0
movs r1, 0x28
bl sub_80A33B8
movs r0, 0x3
strh r0, [r5, 0x34]
movs r0, 0x3C
strh r0, [r5, 0x36]
ldr r0, _080A366C @ =sub_80A3590
_080A3662:
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A366C: .4byte sub_80A3590
thumb_func_end sub_80A35F4
thumb_func_start sub_80A3670
sub_80A3670: @ 80A3670
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A368A
adds r0, r4, 0
movs r1, 0
bl sub_8075114
ldr r0, _080A36B0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x30]
_080A368A:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
muls r0, r1
strh r0, [r4, 0x26]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080A36AA
adds r0, r4, 0
bl DestroyAnimSprite
_080A36AA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A36B0: .4byte gBattleAnimArgs
thumb_func_end sub_80A3670
thumb_func_start sub_80A36B4
sub_80A36B4: @ 80A36B4
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0
bl sub_8075114
ldr r4, _080A36FC @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080A3700 @ =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
ldrb r4, [r4]
cmp r0, r4
bne _080A3704
strh r6, [r5, 0x3A]
adds r0, r2, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
adds r0, r5, 0
movs r1, 0x3C
bl sub_80A33B8
movs r0, 0x1
b _080A3716
.align 2, 0
_080A36FC: .4byte gBattleAnimAttacker
_080A3700: .4byte gBattleAnimTarget
_080A3704:
strh r6, [r5, 0x3A]
adds r0, r2, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
adds r0, r5, 0
movs r1, 0x3C
bl sub_80A33B8
movs r0, 0x3
_080A3716:
strh r0, [r5, 0x34]
movs r0, 0x3C
strh r0, [r5, 0x36]
ldr r0, _080A3728 @ =sub_80A372C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A3728: .4byte sub_80A372C
thumb_func_end sub_80A36B4
thumb_func_start sub_80A372C
sub_80A372C: @ 80A372C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
lsls r0, 7
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
ldrh r1, [r4, 0x2E]
adds r1, r0
movs r5, 0
strh r1, [r4, 0x2E]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _080A3756
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
strh r5, [r4, 0x2E]
_080A3756:
ldrh r0, [r4, 0x2E]
adds r0, 0x80
lsls r0, 16
asrs r0, 16
movs r1, 0x30
ldrsh r2, [r4, r1]
lsls r2, 3
movs r1, 0x1E
subs r1, r2
lsls r1, 16
asrs r1, 16
bl Sin
strh r0, [r4, 0x26]
lsls r0, 16
cmp r0, 0
bne _080A378A
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x76
bl PlaySE12WithPanning
_080A378A:
adds r0, r4, 0
bl sub_80A33E0
lsls r0, 24
cmp r0, 0
beq _080A37B2
strh r5, [r4, 0x26]
strh r5, [r4, 0x2E]
ldr r0, _080A37B8 @ =sub_80A3484
str r0, [r4, 0x1C]
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x76
bl PlaySE12WithPanning
_080A37B2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A37B8: .4byte sub_80A3484
thumb_func_end sub_80A372C
thumb_func_start sub_80A37BC
sub_80A37BC: @ 80A37BC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A3850
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A37E4
ldr r0, _080A37E0 @ =gBattleAnimArgs
ldrh r1, [r0, 0x2]
strh r1, [r4, 0x30]
movs r1, 0x78
strh r1, [r4, 0x20]
adds r5, r0, 0
b _080A3806
.align 2, 0
_080A37E0: .4byte gBattleAnimArgs
_080A37E4:
ldr r0, _080A3840 @ =gBattleAnimArgs
movs r1, 0x2
ldrsh r3, [r0, r1]
adds r1, r3, 0
subs r1, 0x20
adds r2, r1, 0
adds r5, r0, 0
cmp r1, 0
bge _080A37FA
adds r2, r3, 0
adds r2, 0xDF
_080A37FA:
asrs r0, r2, 8
lsls r0, 8
subs r0, r1, r0
strh r0, [r4, 0x30]
movs r0, 0x46
strh r0, [r4, 0x20]
_080A3806:
ldrh r0, [r5]
strh r0, [r4, 0x22]
strh r0, [r4, 0x32]
movs r0, 0x14
strh r0, [r4, 0x36]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x3C
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Sin
strh r0, [r4, 0x26]
ldr r0, _080A3844 @ =sub_80A3858
str r0, [r4, 0x1C]
ldrh r0, [r4, 0x30]
subs r0, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0xBE
bhi _080A3848
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1F
b _080A384E
.align 2, 0
_080A3840: .4byte gBattleAnimArgs
_080A3844: .4byte sub_80A3858
_080A3848:
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1D
_080A384E:
strb r0, [r1]
_080A3850:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A37BC
thumb_func_start sub_80A3858
sub_80A3858: @ 80A3858
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080A386A
cmp r0, 0x1
beq _080A389A
b _080A38BA
_080A386A:
ldrh r5, [r4, 0x32]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x4E
ble _080A3882
movs r0, 0x1
strh r0, [r4, 0x34]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _080A38BA
_080A3882:
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r1, 0xA
bl __divsi3
adds r0, r5, r0
strh r0, [r4, 0x32]
ldrh r1, [r4, 0x36]
adds r1, 0x3
strh r1, [r4, 0x36]
strh r0, [r4, 0x22]
b _080A38BA
_080A389A:
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080A38BA
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080A38BA
movs r0, 0
strh r0, [r4, 0x2E]
strh r0, [r4, 0x32]
ldr r0, _080A38C0 @ =sub_80A38C4
str r0, [r4, 0x1C]
_080A38BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A38C0: .4byte sub_80A38C4
thumb_func_end sub_80A3858
thumb_func_start sub_80A38C4
sub_80A38C4: @ 80A38C4
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _080A3908 @ =gUnknown_83E2F78
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 1
adds r3, r0, r1
adds r0, r5, 0x1
adds r0, r3, r0
ldrh r2, [r4, 0x32]
movs r6, 0x32
ldrsh r1, [r4, r6]
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r1, r0
bne _080A3910
adds r0, r5, 0x2
adds r0, r3, r0
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0x7F
bne _080A38FC
movs r0, 0
strh r0, [r4, 0x2E]
ldr r0, _080A390C @ =sub_80A397C
str r0, [r4, 0x1C]
_080A38FC:
movs r0, 0
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080A3976
.align 2, 0
_080A3908: .4byte gUnknown_83E2F78
_080A390C: .4byte sub_80A397C
_080A3910:
adds r0, r2, 0x1
strh r0, [r4, 0x32]
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 1
adds r0, r1
adds r1, r0, r5
movs r2, 0
ldrsb r2, [r1, r2]
adds r1, r5, 0x2
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
muls r0, r2
ldrh r1, [r4, 0x30]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A395E
ldrh r0, [r4, 0x30]
subs r0, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0xBE
bhi _080A3956
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1F
b _080A395C
_080A3956:
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1D
_080A395C:
strb r0, [r1]
_080A395E:
movs r6, 0x30
ldrsh r0, [r4, r6]
movs r1, 0x3C
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Sin
strh r0, [r4, 0x26]
_080A3976:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80A38C4
thumb_func_start sub_80A397C
sub_80A397C: @ 80A397C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x14
ble _080A398E
adds r0, r4, 0
bl DestroyAnimSprite
_080A398E:
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsrs r0, r1, 31
adds r0, r1, r0
asrs r0, 1
lsls r0, 1
subs r1, r0
adds r3, r4, 0
adds r3, 0x3E
movs r0, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r3]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A397C
thumb_func_start sub_80A39C0
sub_80A39C0: @ 80A39C0
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080A3B14 @ =gTasks
adds r5, r0, r1
ldr r4, _080A3B18 @ =gBattleAnimTarget
ldrb r0, [r4]
bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
strh r0, [r5, 0x10]
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x16]
ldrb r0, [r4]
movs r1, 0x1
bl sub_8076B2C
strh r0, [r5, 0x1C]
ldrb r0, [r4]
movs r1, 0
bl sub_8076B2C
strh r0, [r5, 0x1E]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
movs r2, 0x1
negs r2, r2
adds r1, r2, 0
cmp r0, 0x1
bne _080A3A28
movs r1, 0x1
_080A3A28:
strh r1, [r5, 0x12]
movs r3, 0x12
ldrsh r0, [r5, r3]
lsls r0, 6
movs r1, 0x38
subs r1, r0
strh r1, [r5, 0x1A]
ldrh r0, [r5, 0x16]
subs r0, r1
ldrh r1, [r5, 0x14]
adds r0, r1
strh r0, [r5, 0x18]
ldr r0, _080A3B1C @ =gUnknown_83E2FF0
movs r2, 0x18
ldrsh r1, [r5, r2]
movs r3, 0x1A
ldrsh r2, [r5, r3]
ldrb r3, [r5, 0x10]
bl CreateSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xC]
cmp r0, 0x40
bne _080A3A60
adds r0, r6, 0
bl DestroyAnimVisualTask
_080A3A60:
ldr r4, _080A3B20 @ =gSprites
movs r0, 0xC
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0xA
strh r1, [r0, 0x2E]
movs r2, 0xC
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r5, 0x18]
strh r1, [r0, 0x30]
movs r3, 0xC
ldrsh r0, [r5, r3]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r4
movs r1, 0x1C
ldrsh r0, [r5, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r1, [r5, r3]
muls r1, r0
ldrh r0, [r5, 0x14]
subs r0, r1
strh r0, [r2, 0x32]
movs r0, 0xC
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r5, 0x1A]
strh r1, [r0, 0x34]
movs r1, 0xC
ldrsh r0, [r5, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
movs r2, 0x1E
ldrsh r0, [r5, r2]
lsrs r2, r0, 31
adds r0, r2
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r2, [r5, r3]
muls r0, r2
ldrh r2, [r5, 0x16]
adds r0, r2
strh r0, [r1, 0x36]
movs r3, 0xC
ldrsh r1, [r5, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl sub_80A3F04
movs r1, 0xC
ldrsh r2, [r5, r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
strh r0, [r1, 0x38]
movs r2, 0xC
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl sub_8075068
ldr r0, _080A3B24 @ =sub_80A3B28
str r0, [r5]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A3B14: .4byte gTasks
_080A3B18: .4byte gBattleAnimTarget
_080A3B1C: .4byte gUnknown_83E2FF0
_080A3B20: .4byte gSprites
_080A3B24: .4byte sub_80A3B28
thumb_func_end sub_80A39C0
thumb_func_start sub_80A3B28
sub_80A3B28: @ 80A3B28
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080A3B6C @ =gTasks
adds r6, r0, r1
movs r0, 0xC
ldrsh r1, [r6, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080A3B70 @ =gSprites
adds r4, r0, r1
movs r1, 0x8
ldrsh r5, [r6, r1]
cmp r5, 0x7
bne _080A3B50
b _080A3D80
_080A3B50:
cmp r5, 0x7
bgt _080A3B9E
cmp r5, 0x3
bne _080A3B5A
b _080A3C72
_080A3B5A:
cmp r5, 0x3
bgt _080A3B74
cmp r5, 0x1
beq _080A3C04
cmp r5, 0x1
bgt _080A3C54
cmp r5, 0
beq _080A3BE6
b _080A3EFC
.align 2, 0
_080A3B6C: .4byte gTasks
_080A3B70: .4byte gSprites
_080A3B74:
cmp r5, 0x5
bne _080A3B7A
b _080A3CE8
_080A3B7A:
cmp r5, 0x5
ble _080A3B80
b _080A3D62
_080A3B80:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _080A3B96
b _080A3EFC
_080A3B96:
movs r0, 0x5
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3B9E:
cmp r5, 0xB
bne _080A3BA4
b _080A3E64
_080A3BA4:
cmp r5, 0xB
bgt _080A3BD2
cmp r5, 0x9
bne _080A3BAE
b _080A3DD2
_080A3BAE:
cmp r5, 0x9
ble _080A3BB4
b _080A3E48
_080A3BB4:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _080A3BCA
b _080A3EFC
_080A3BCA:
movs r0, 0x9
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3BD2:
cmp r5, 0xD
bne _080A3BD8
b _080A3ED6
_080A3BD8:
cmp r5, 0xD
bge _080A3BDE
b _080A3EB6
_080A3BDE:
cmp r5, 0xFF
bne _080A3BE4
b _080A3EE6
_080A3BE4:
b _080A3EFC
_080A3BE6:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _080A3BFC
b _080A3EFC
_080A3BFC:
movs r0, 0x1
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3C04:
ldrh r2, [r4, 0x24]
ldrh r3, [r4, 0x20]
adds r2, r3
movs r0, 0
strh r2, [r4, 0x20]
ldrh r1, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r1, r3
strh r1, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r2, [r4, 0x30]
ldrh r0, [r6, 0x14]
strh r0, [r4, 0x32]
strh r1, [r4, 0x34]
ldrh r0, [r6, 0x16]
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
ldrh r0, [r6, 0x10]
adds r0, 0x2
strh r0, [r6, 0x10]
strh r5, [r6, 0xE]
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3C54:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _080A3C6A
b _080A3EFC
_080A3C6A:
movs r0, 0x3
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3C72:
ldrh r1, [r4, 0x24]
ldrh r0, [r4, 0x20]
adds r1, r0
movs r0, 0
strh r1, [r4, 0x20]
ldrh r2, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r2, r3
strh r2, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r1, 0x1C
ldrsh r0, [r6, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r1, [r6, r3]
muls r1, r0
ldrh r0, [r6, 0x14]
subs r0, r1
strh r0, [r4, 0x32]
strh r2, [r4, 0x34]
movs r1, 0x1E
ldrsh r0, [r6, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r2, 0x12
ldrsh r1, [r6, r2]
muls r1, r0
ldrh r0, [r6, 0x16]
subs r0, r1
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
movs r0, 0x2
strh r0, [r6, 0xE]
ldrh r0, [r6, 0x10]
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3CE8:
ldrh r1, [r4, 0x24]
ldrh r3, [r4, 0x20]
adds r1, r3
movs r0, 0
strh r1, [r4, 0x20]
ldrh r2, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r2, r3
strh r2, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r1, 0x1C
ldrsh r0, [r6, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r1, [r6, r3]
muls r0, r1
ldrh r1, [r6, 0x14]
adds r0, r1
strh r0, [r4, 0x32]
strh r2, [r4, 0x34]
movs r2, 0x1E
ldrsh r0, [r6, r2]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r1, [r6, r3]
muls r0, r1
ldrh r1, [r6, 0x16]
adds r0, r1
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
ldrh r1, [r6, 0x10]
subs r1, 0x2
strh r1, [r6, 0x10]
movs r0, 0x3
strh r0, [r6, 0xE]
adds r0, r4, 0
adds r0, 0x43
strb r1, [r0]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3D62:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _080A3D78
b _080A3EFC
_080A3D78:
movs r0, 0x7
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3D80:
ldrh r2, [r4, 0x24]
ldrh r3, [r4, 0x20]
adds r2, r3
movs r0, 0
strh r2, [r4, 0x20]
ldrh r1, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r1, r3
strh r1, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r2, [r4, 0x30]
ldrh r0, [r6, 0x14]
strh r0, [r4, 0x32]
strh r1, [r4, 0x34]
ldrh r0, [r6, 0x16]
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
ldrh r1, [r6, 0x10]
adds r1, 0x2
strh r1, [r6, 0x10]
movs r0, 0x4
strh r0, [r6, 0xE]
adds r0, r4, 0
adds r0, 0x43
strb r1, [r0]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3DD2:
ldrh r1, [r4, 0x24]
ldrh r0, [r4, 0x20]
adds r1, r0
movs r0, 0
strh r1, [r4, 0x20]
ldrh r2, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r2, r3
strh r2, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r1, 0x1C
ldrsh r0, [r6, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r3, 0x12
ldrsh r1, [r6, r3]
muls r1, r0
ldrh r0, [r6, 0x14]
subs r0, r1
strh r0, [r4, 0x32]
strh r2, [r4, 0x34]
movs r1, 0x1E
ldrsh r0, [r6, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0xA
movs r2, 0x12
ldrsh r1, [r6, r2]
muls r0, r1
ldrh r3, [r6, 0x16]
adds r0, r3
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
movs r0, 0x5
strh r0, [r6, 0xE]
ldrh r0, [r6, 0x10]
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3E48:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080A3EFC
movs r0, 0xB
strh r0, [r6, 0x26]
movs r0, 0xFF
b _080A3EFA
_080A3E64:
ldrh r2, [r4, 0x24]
ldrh r0, [r4, 0x20]
adds r2, r0
movs r0, 0
strh r2, [r4, 0x20]
ldrh r1, [r4, 0x26]
ldrh r3, [r4, 0x22]
adds r1, r3
strh r1, [r4, 0x22]
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
movs r0, 0xA
strh r0, [r4, 0x2E]
strh r2, [r4, 0x30]
ldrh r0, [r6, 0x18]
strh r0, [r4, 0x32]
strh r1, [r4, 0x34]
ldrh r0, [r6, 0x1A]
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_80A3F04
strh r0, [r4, 0x38]
ldrh r1, [r6, 0x10]
subs r1, 0x2
strh r1, [r6, 0x10]
movs r0, 0x6
strh r0, [r6, 0xE]
adds r0, r4, 0
adds r0, 0x43
strb r1, [r0]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
bl sub_8075068
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3EB6:
adds r0, r6, 0
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080A3EFC
adds r0, r4, 0
bl DestroySprite
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
_080A3ED6:
movs r1, 0x20
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A3EFC
adds r0, r2, 0
bl DestroyAnimVisualTask
b _080A3EFC
_080A3EE6:
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080A3EFC
movs r0, 0
strh r0, [r6, 0xA]
ldrh r0, [r6, 0x26]
_080A3EFA:
strh r0, [r6, 0x8]
_080A3EFC:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80A3B28
thumb_func_start sub_80A3F04
sub_80A3F04: @ 80A3F04
push {lr}
movs r2, 0x8
movs r3, 0x36
ldrsh r1, [r0, r3]
movs r3, 0x22
ldrsh r0, [r0, r3]
cmp r1, r0
bge _080A3F1A
negs r0, r2
lsls r0, 16
lsrs r2, r0, 16
_080A3F1A:
lsls r0, r2, 16
asrs r0, 16
pop {r1}
bx r1
thumb_func_end sub_80A3F04
thumb_func_start sub_80A3F24
sub_80A3F24: @ 80A3F24
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
lsls r1, 24
lsrs r7, r1, 24
ldrh r0, [r6, 0x24]
adds r0, 0x1
strh r0, [r6, 0x24]
lsls r0, 16
cmp r0, 0
ble _080A3FBA
movs r0, 0
strh r0, [r6, 0x24]
ldr r0, _080A3FC4 @ =gSprites
mov r8, r0
movs r2, 0xC
ldrsh r1, [r6, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
ldrh r1, [r0, 0x24]
ldrh r2, [r0, 0x20]
adds r1, r2
ldrh r2, [r0, 0x26]
ldrh r0, [r0, 0x22]
adds r2, r0
ldr r0, _080A3FC8 @ =gUnknown_83E2FF0
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
ldrb r3, [r6, 0x10]
bl CreateSprite
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _080A3FBA
lsls r5, r0, 4
adds r5, r0
lsls r5, 2
mov r0, r8
adds r4, r5, r0
strh r7, [r4, 0x3A]
movs r0, 0xC
strh r0, [r4, 0x3C]
ldr r0, _080A3FCC @ =gTasks
lsls r1, r7, 2
adds r1, r7
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x20]
adds r0, 0x1
strh r0, [r1, 0x20]
ldrh r2, [r6, 0x22]
movs r0, 0x1
ands r0, r2
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x22]
adds r0, 0x1
strh r0, [r1, 0x22]
ldrb r1, [r6, 0xE]
adds r0, r4, 0
bl StartSpriteAnim
ldrh r0, [r6, 0x10]
adds r4, 0x43
strb r0, [r4]
mov r0, r8
adds r0, 0x1C
adds r5, r0
ldr r0, _080A3FD0 @ =sub_80A3FD4
str r0, [r5]
_080A3FBA:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A3FC4: .4byte gSprites
_080A3FC8: .4byte gUnknown_83E2FF0
_080A3FCC: .4byte gTasks
_080A3FD0: .4byte sub_80A3FD4
thumb_func_end sub_80A3F24
thumb_func_start sub_80A3FD4
sub_80A3FD4: @ 80A3FD4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A4036
movs r0, 0
strh r0, [r4, 0x2E]
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]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080A4036
ldr r3, _080A403C @ =gTasks
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x3A
ldrsh r2, [r4, r0]
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r1, r0
adds r3, 0x8
adds r1, r3
ldrh r0, [r1]
subs r0, 0x1
strh r0, [r1]
adds r0, r4, 0
bl DestroySprite
_080A4036:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A403C: .4byte gTasks
thumb_func_end sub_80A3FD4
thumb_func_start sub_80A4040
sub_80A4040: @ 80A4040
push {r4-r7,lr}
adds r4, r0, 0
ldr r0, _080A4054 @ =gBattleAnimArgs
movs r1, 0xC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A405C
ldr r0, _080A4058 @ =gBattleAnimAttacker
b _080A405E
.align 2, 0
_080A4054: .4byte gBattleAnimArgs
_080A4058: .4byte gBattleAnimAttacker
_080A405C:
ldr r0, _080A407C @ =gBattleAnimTarget
_080A405E:
ldrb r6, [r0]
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A4088
movs r0, 0
strh r0, [r4, 0x36]
ldr r1, _080A4080 @ =gBattleAnimArgs
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x32]
ldr r0, _080A4084 @ =0x0000fff0
b _080A4098
.align 2, 0
_080A407C: .4byte gBattleAnimTarget
_080A4080: .4byte gBattleAnimArgs
_080A4084: .4byte 0x0000fff0
_080A4088:
movs r0, 0x1
strh r0, [r4, 0x36]
ldr r1, _080A40BC @ =gBattleAnimArgs
ldrh r0, [r1, 0x6]
negs r0, r0
strh r0, [r4, 0x32]
movs r0, 0x80
lsls r0, 1
_080A4098:
strh r0, [r4, 0x20]
adds r7, r1, 0
adds r5, r7, 0
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x34]
movs r1, 0xA
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080A40CE
cmp r0, 0x1
bgt _080A40C0
cmp r0, 0
beq _080A40CA
b _080A4138
.align 2, 0
_080A40BC: .4byte gBattleAnimArgs
_080A40C0:
cmp r0, 0x2
beq _080A40D4
cmp r0, 0x3
beq _080A4100
b _080A4138
_080A40CA:
ldrh r0, [r5]
b _080A40E4
_080A40CE:
ldrh r0, [r5]
strh r0, [r4, 0x22]
b _080A411A
_080A40D4:
adds r0, r6, 0
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5]
adds r0, r5
_080A40E4:
strh r0, [r4, 0x22]
adds r0, r6, 0
bl sub_8076884
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
b _080A4138
_080A4100:
ldr r0, _080A4144 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r7, [r7]
adds r0, r7
strh r0, [r4, 0x22]
movs r0, 0x1
bl GetAnimBankSpriteId
_080A411A:
adds r0, r6, 0
bl sub_8076884
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
movs r1, 0x3
ands r0, r1
lsls r0, 2
ldrb r2, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x5]
_080A4138:
ldr r0, _080A4148 @ =sub_80A414C
str r0, [r4, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A4144: .4byte gBattleAnimTarget
_080A4148: .4byte sub_80A414C
thumb_func_end sub_80A4040
thumb_func_start sub_80A414C
sub_80A414C: @ 80A414C
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x3C
ldrsh r3, [r4, r0]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
movs r1, 0x30
ldrsh r2, [r4, r1]
ldr r1, _080A41A0 @ =gSineTable
movs r5, 0x2E
ldrsh r0, [r4, r5]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
muls r0, r2
asrs r0, 8
strh r0, [r4, 0x26]
movs r2, 0x32
ldrsh r0, [r4, r2]
muls r0, r3
strh r0, [r4, 0x24]
movs r5, 0x34
ldrsh r0, [r4, r5]
muls r0, r3
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
movs r1, 0x36
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A41A4
movs r2, 0x24
ldrsh r0, [r4, r2]
movs r5, 0x20
ldrsh r1, [r4, r5]
adds r0, r1
cmp r0, 0xF7
ble _080A41BC
b _080A41B6
.align 2, 0
_080A41A0: .4byte gSineTable
_080A41A4:
movs r1, 0x24
ldrsh r0, [r4, r1]
movs r2, 0x20
ldrsh r1, [r4, r2]
adds r0, r1
movs r1, 0x10
negs r1, r1
cmp r0, r1
bgt _080A41BC
_080A41B6:
adds r0, r4, 0
bl move_anim_8074EE0
_080A41BC:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A414C
thumb_func_start sub_80A41C4
sub_80A41C4: @ 80A41C4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080A41E4 @ =gTasks
adds r5, r0, r1
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080A41E8
cmp r0, 0x1
beq _080A421C
b _080A4276
.align 2, 0
_080A41E4: .4byte gTasks
_080A41E8:
ldr r0, _080A4214 @ =0x0000274f
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 20
movs r2, 0x80
lsls r2, 1
adds r4, r2, 0
adds r0, r4
strh r0, [r5, 0x18]
ldr r0, _080A4218 @ =0x000027b0
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 20
adds r0, r4
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
b _080A4276
.align 2, 0
_080A4214: .4byte 0x0000274f
_080A4218: .4byte 0x000027b0
_080A421C:
ldrh r0, [r5, 0x1A]
adds r0, 0x1
movs r7, 0
strh r0, [r5, 0x1A]
lsls r0, 16
cmp r0, 0
blt _080A4276
strh r7, [r5, 0x1A]
ldrh r0, [r5, 0x18]
ldrb r2, [r5, 0x1C]
ldr r4, _080A4290 @ =gUnknown_83E30F0
movs r3, 0x1E
ldrsh r1, [r5, r3]
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
movs r1, 0x10
bl BlendPalette
ldrh r0, [r5, 0x20]
ldrb r2, [r5, 0x1C]
movs r3, 0x1E
ldrsh r1, [r5, r3]
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
movs r1, 0x10
bl BlendPalette
ldrh r0, [r5, 0x1C]
adds r0, 0x1
strh r0, [r5, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x11
bne _080A4276
strh r7, [r5, 0x1C]
ldrh r0, [r5, 0x1E]
adds r0, 0x1
strh r0, [r5, 0x1E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
bne _080A4276
strh r7, [r5, 0x1E]
_080A4276:
ldr r0, _080A4294 @ =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A428A
adds r0, r6, 0
bl DestroyAnimVisualTask
_080A428A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A4290: .4byte gUnknown_83E30F0
_080A4294: .4byte gBattleAnimArgs
thumb_func_end sub_80A41C4
thumb_func_start sub_80A4298
sub_80A4298: @ 80A4298
push {r4-r7,lr}
sub sp, 0x4
adds r6, r0, 0
ldr r1, _080A42B0 @ =gBattleAnimArgs
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080A42B4
adds r0, r6, 0
bl DestroyAnimSprite
b _080A438E
.align 2, 0
_080A42B0: .4byte gBattleAnimArgs
_080A42B4:
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080A42C4
ldr r4, _080A42C0 @ =gBattleAnimAttacker
b _080A42C6
.align 2, 0
_080A42C0: .4byte gBattleAnimAttacker
_080A42C4:
ldr r4, _080A4300 @ =gBattleAnimTarget
_080A42C6:
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080A4304 @ =gBattleAnimArgs
ldrh r1, [r0, 0x8]
strh r1, [r6, 0x2E]
movs r3, 0x2
ldrsh r1, [r0, r3]
adds r7, r0, 0
cmp r1, 0
bne _080A4308
ldrh r0, [r7, 0x4]
adds r0, r5
strh r0, [r6, 0x20]
ldrh r0, [r7, 0x6]
adds r0, r2
strh r0, [r6, 0x22]
strh r5, [r6, 0x38]
strh r2, [r6, 0x3A]
b _080A4318
.align 2, 0
_080A4300: .4byte gBattleAnimTarget
_080A4304: .4byte gBattleAnimArgs
_080A4308:
strh r5, [r6, 0x20]
strh r2, [r6, 0x22]
ldrh r0, [r7, 0x4]
adds r0, r5
strh r0, [r6, 0x38]
ldrh r0, [r7, 0x6]
adds r0, r2
strh r0, [r6, 0x3A]
_080A4318:
ldrh r4, [r6, 0x20]
lsls r0, r4, 4
strh r0, [r6, 0x30]
ldrh r5, [r6, 0x22]
lsls r0, r5, 4
strh r0, [r6, 0x32]
movs r1, 0x38
ldrsh r0, [r6, r1]
movs r2, 0x20
ldrsh r1, [r6, r2]
subs r0, r1
lsls r0, 4
movs r3, 0x8
ldrsh r1, [r7, r3]
bl __divsi3
strh r0, [r6, 0x34]
movs r1, 0x3A
ldrsh r0, [r6, r1]
movs r2, 0x22
ldrsh r1, [r6, r2]
subs r0, r1
lsls r0, 4
movs r3, 0x8
ldrsh r1, [r7, r3]
bl __divsi3
strh r0, [r6, 0x36]
ldrh r0, [r6, 0x38]
subs r0, r4
lsls r0, 16
asrs r0, 16
ldrh r1, [r6, 0x3A]
subs r1, r5
lsls r1, 16
asrs r1, 16
bl sub_8075B30
lsls r0, 16
lsrs r4, r0, 16
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A437A
ldr r1, _080A4398 @ =0xffff8000
adds r0, r4, r1
lsls r0, 16
lsrs r4, r0, 16
_080A437A:
movs r3, 0x80
lsls r3, 1
str r4, [sp]
adds r0, r6, 0
movs r1, 0
adds r2, r3, 0
bl sub_8075A1C
ldr r0, _080A439C @ =sub_80A43A0
str r0, [r6, 0x1C]
_080A438E:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A4398: .4byte 0xffff8000
_080A439C: .4byte sub_80A43A0
thumb_func_end sub_80A4298
thumb_func_start sub_80A43A0
sub_80A43A0: @ 80A43A0
push {r4,lr}
adds r2, r0, 0
ldrh r3, [r2, 0x2E]
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
beq _080A43D0
ldrh r0, [r2, 0x34]
ldrh r4, [r2, 0x30]
adds r0, r4
strh r0, [r2, 0x30]
ldrh r1, [r2, 0x36]
ldrh r4, [r2, 0x32]
adds r1, r4
strh r1, [r2, 0x32]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r2, 0x22]
subs r0, r3, 0x1
strh r0, [r2, 0x2E]
b _080A43D6
_080A43D0:
adds r0, r2, 0
bl move_anim_8074EE0
_080A43D6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A43A0
thumb_func_start sub_80A43DC
sub_80A43DC: @ 80A43DC
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080A43F2
adds r0, r2, 0
bl DestroyAnimSprite
_080A43F2:
pop {r0}
bx r0
thumb_func_end sub_80A43DC
thumb_func_start sub_80A43F8
sub_80A43F8: @ 80A43F8
push {r4,lr}
adds r4, r0, 0
ldr r0, _080A4418 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A4420
ldr r2, _080A441C @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
b _080A442C
.align 2, 0
_080A4418: .4byte gBattleAnimAttacker
_080A441C: .4byte gBattleAnimArgs
_080A4420:
ldr r0, _080A4444 @ =gBattleAnimArgs
ldrh r1, [r0]
ldrh r2, [r4, 0x20]
adds r1, r2
strh r1, [r4, 0x20]
ldrh r0, [r0, 0x2]
_080A442C:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r0, _080A4448 @ =sub_8074F6C
str r0, [r4, 0x1C]
ldr r1, _080A444C @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A4444: .4byte gBattleAnimArgs
_080A4448: .4byte sub_8074F6C
_080A444C: .4byte DestroyAnimSprite
thumb_func_end sub_80A43F8
thumb_func_start sub_80A4450
sub_80A4450: @ 80A4450
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080A4488 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A446A
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
_080A446A:
ldr r0, _080A448C @ =sub_80A43DC
str r0, [r5, 0x1C]
ldr r4, _080A4490 @ =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
_080A4488: .4byte gBattleAnimAttacker
_080A448C: .4byte sub_80A43DC
_080A4490: .4byte gBattleAnimArgs
thumb_func_end sub_80A4450
thumb_func_start sub_80A4494
sub_80A4494: @ 80A4494
push {r4,lr}
adds r4, r0, 0
ldr r1, _080A44D4 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
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 StartSpriteAffineAnim
ldr r1, _080A44D8 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A44DC @ =sub_8074E70
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A44D4: .4byte gBattleAnimArgs
_080A44D8: .4byte move_anim_8074EE0
_080A44DC: .4byte sub_8074E70
thumb_func_end sub_80A4494
thumb_func_start sub_80A44E0
sub_80A44E0: @ 80A44E0
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080A4530 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A4514
ldrh r0, [r5, 0x22]
adds r0, 0x8
strh r0, [r5, 0x22]
_080A4514:
ldr r0, _080A4534 @ =sub_80A46CC
str r0, [r5, 0x1C]
ldr r0, _080A4538 @ =gBattleAnimArgs
movs r2, 0x4
ldrsh r1, [r0, r2]
adds r3, r0, 0
cmp r1, 0
bne _080A453C
ldrh r0, [r3]
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x20]
b _080A4550
.align 2, 0
_080A4530: .4byte gBattleAnimTarget
_080A4534: .4byte sub_80A46CC
_080A4538: .4byte gBattleAnimArgs
_080A453C:
ldrh r0, [r5, 0x20]
ldrh r1, [r3]
subs r0, r1
strh r0, [r5, 0x20]
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_080A4550:
ldrh r0, [r3, 0x2]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
ldr r1, _080A4584 @ =0xfffffc00
adds r0, r1, 0
ldrh r2, [r5, 0x30]
adds r1, r0, r2
strh r1, [r5, 0x30]
movs r2, 0x80
lsls r2, 3
adds r0, r2, 0
ldrh r2, [r5, 0x32]
adds r0, r2
strh r0, [r5, 0x32]
ldrh r0, [r3, 0x4]
strh r0, [r5, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080A457E
negs r0, r1
strh r0, [r5, 0x30]
_080A457E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A4584: .4byte 0xfffffc00
thumb_func_end sub_80A44E0
thumb_func_start sub_80A4588
sub_80A4588: @ 80A4588
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
ldr r0, _080A45A4 @ =gBattleAnimArgs
movs r1, 0x6
ldrsh r0, [r0, r1]
cmp r0, 0x1
beq _080A45A8
cmp r0, 0x1
ble _080A4624
cmp r0, 0x2
beq _080A45C8
b _080A4624
.align 2, 0
_080A45A4: .4byte gBattleAnimArgs
_080A45A8:
ldr r5, _080A45C4 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
eors r4, r0
adds r0, r4, 0
b _080A4634
.align 2, 0
_080A45C4: .4byte gBattleAnimTarget
_080A45C8:
ldr r5, _080A4620 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r5]
movs r2, 0x2
mov r8, r2
mov r1, r8
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A463E
ldrb r0, [r5]
mov r2, r8
eors r0, r2
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r7
lsrs r7, r0, 1
ldrb r0, [r5]
mov r1, r8
eors r0, r1
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r4
lsrs r4, r0, 1
b _080A463E
.align 2, 0
_080A4620: .4byte gBattleAnimTarget
_080A4624:
ldr r4, _080A4670 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r4]
_080A4634:
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r4, r0, 24
_080A463E:
strh r7, [r6, 0x20]
strh r4, [r6, 0x22]
ldr r0, _080A4670 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A4656
ldrh r0, [r6, 0x22]
adds r0, 0x8
strh r0, [r6, 0x22]
_080A4656:
ldr r0, _080A4674 @ =sub_80A46CC
str r0, [r6, 0x1C]
ldr r0, _080A4678 @ =gBattleAnimArgs
movs r2, 0x4
ldrsh r1, [r0, r2]
adds r3, r0, 0
cmp r1, 0
bne _080A467C
ldrh r0, [r3]
ldrh r1, [r6, 0x20]
adds r0, r1
strh r0, [r6, 0x20]
b _080A4690
.align 2, 0
_080A4670: .4byte gBattleAnimTarget
_080A4674: .4byte sub_80A46CC
_080A4678: .4byte gBattleAnimArgs
_080A467C:
ldrh r0, [r6, 0x20]
ldrh r1, [r3]
subs r0, r1
strh r0, [r6, 0x20]
adds r2, r6, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_080A4690:
ldrh r0, [r3, 0x2]
ldrh r2, [r6, 0x22]
adds r0, r2
strh r0, [r6, 0x22]
ldr r1, _080A46C8 @ =0xfffffc00
adds r0, r1, 0
ldrh r2, [r6, 0x30]
adds r1, r0, r2
strh r1, [r6, 0x30]
movs r2, 0x80
lsls r2, 3
adds r0, r2, 0
ldrh r2, [r6, 0x32]
adds r0, r2
strh r0, [r6, 0x32]
ldrh r0, [r3, 0x4]
strh r0, [r6, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080A46BE
negs r0, r1
strh r0, [r6, 0x30]
_080A46BE:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A46C8: .4byte 0xfffffc00
thumb_func_end sub_80A4588
thumb_func_start sub_80A46CC
sub_80A46CC: @ 80A46CC
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
ldrh r2, [r4, 0x34]
adds r0, r1, r2
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
movs r2, 0x38
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080A46EE
adds r0, r1, 0
adds r0, 0x18
b _080A46F2
_080A46EE:
adds r0, r1, 0
subs r0, 0x18
_080A46F2:
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
subs r0, 0x18
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
bne _080A4728
ldr r1, _080A4730 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
movs r0, 0x3
strh r0, [r4, 0x2E]
ldr r0, _080A4734 @ =sub_8074C44
str r0, [r4, 0x1C]
_080A4728:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A4730: .4byte DestroyAnimSprite
_080A4734: .4byte sub_8074C44
thumb_func_end sub_80A46CC
thumb_func_start sub_80A4738
sub_80A4738: @ 80A4738
push {r4,r5,lr}
adds r5, r0, 0
ldrh r1, [r5, 0x32]
movs r2, 0x32
ldrsh r0, [r5, r2]
cmp r0, 0x1
ble _080A47DC
ldrh r1, [r5, 0x34]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080A4794
adds r3, r5, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x5
negs r2, r2
adds r0, r2, 0
ands r0, r1
strb r0, [r3]
ldr r4, _080A4790 @ =gSprites
movs r0, 0x2E
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
adds r0, 0x3E
ldrb r3, [r0]
adds r1, r2, 0
ands r1, r3
strb r1, [r0]
movs r0, 0x30
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
adds r0, 0x3E
ldrb r1, [r0]
ands r2, r1
strb r2, [r0]
b _080A47CA
.align 2, 0
_080A4790: .4byte gSprites
_080A4794:
adds r1, r5, 0
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldr r3, _080A47D8 @ =gSprites
movs r0, 0x2E
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r2
strb r1, [r0]
movs r0, 0x30
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r2
strb r1, [r0]
_080A47CA:
movs r0, 0
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
b _080A47E0
.align 2, 0
_080A47D8: .4byte gSprites
_080A47DC:
adds r0, r1, 0x1
strh r0, [r5, 0x32]
_080A47E0:
movs r1, 0x34
ldrsh r0, [r5, r1]
cmp r0, 0xA
bne _080A4810
movs r2, 0x2E
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080A4818 @ =gSprites
adds r0, r4
bl DestroySprite
movs r0, 0x30
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
adds r0, r5, 0
bl DestroyAnimSprite
_080A4810:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A4818: .4byte gSprites
thumb_func_end sub_80A4738
thumb_func_start sub_80A481C
sub_80A481C: @ 80A481C
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080A483C @ =gBattleAnimArgs
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
ldr r0, _080A4840 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A4844
ldrh r0, [r5, 0x20]
ldrh r1, [r4]
subs r0, r1
b _080A484A
.align 2, 0
_080A483C: .4byte gBattleAnimArgs
_080A4840: .4byte gBattleAnimAttacker
_080A4844:
ldrh r0, [r4]
ldrh r1, [r5, 0x20]
adds r0, r1
_080A484A:
strh r0, [r5, 0x20]
ldr r4, _080A4878 @ =gBattleAnimArgs
ldrb r1, [r4, 0xA]
adds r0, r5, 0
bl StartSpriteAnim
ldrh r0, [r4, 0x6]
negs r0, r0
strh r0, [r5, 0x30]
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x34]
ldr r1, _080A487C @ =sub_80A4880
str r1, [r5, 0x1C]
adds r0, r5, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A4878: .4byte gBattleAnimArgs
_080A487C: .4byte sub_80A4880
thumb_func_end sub_80A481C
thumb_func_start sub_80A4880
sub_80A4880: @ 80A4880
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x64
bl Cos
strh r0, [r4, 0x24]
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r1, 0x14
bl Sin
strh r0, [r4, 0x26]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x7F
bgt _080A48AC
adds r1, r4, 0
adds r1, 0x43
movs r0, 0
b _080A48B2
_080A48AC:
adds r1, r4, 0
adds r1, 0x43
movs r0, 0xE
_080A48B2:
strb r0, [r1]
ldrh r0, [r4, 0x30]
ldrh r2, [r4, 0x2E]
adds r0, r2
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x38]
adds r0, 0x82
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
movs r2, 0x34
ldrsh r1, [r4, r2]
cmp r0, r1
bne _080A48E8
adds r0, r4, 0
bl DestroyAnimSprite
_080A48E8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A4880
thumb_func_start sub_80A48F0
sub_80A48F0: @ 80A48F0
push {r4-r6,lr}
adds r5, r0, 0
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4906
ldr r1, _080A4964 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
adds r0, 0x8
strh r0, [r1, 0x2]
_080A4906:
ldr r6, _080A4968 @ =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0
bl sub_8074844
lsls r0, 24
ldr r4, _080A4964 @ =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r4]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
bl sub_8074844
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
adds r0, r4
strh r0, [r5, 0x22]
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A4944
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A496C
_080A4944:
ldrb r0, [r6]
bl sub_8076884
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
movs r1, 0x3
ands r0, r1
lsls r0, 2
ldrb r2, [r5, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x5]
b _080A4984
.align 2, 0
_080A4964: .4byte gBattleAnimArgs
_080A4968: .4byte gBattleAnimAttacker
_080A496C:
ldrb r0, [r6]
bl sub_8076884
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
_080A4984:
ldr r0, _080A49C8 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
ldr r0, _080A49CC @ =0x00002828
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 20
movs r1, 0x80
lsls r1, 1
adds r0, r1
strh r0, [r5, 0x32]
movs r4, 0x10
movs r0, 0x10
strh r0, [r5, 0x3C]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r0, [r5, 0x3C]
lsls r1, r0, 8
subs r4, r0
orrs r1, r4
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r0, _080A49D0 @ =sub_80A49D4
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A49C8: .4byte gBattleAnimArgs
_080A49CC: .4byte 0x00002828
_080A49D0: .4byte sub_80A49D4
thumb_func_end sub_80A48F0
thumb_func_start sub_80A49D4
sub_80A49D4: @ 80A49D4
push {r4-r6,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x38]
adds r0, 0x60
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 24
negs r0, r0
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A4A32
movs r0, 0
strh r0, [r4, 0x30]
ldr r1, _080A4A7C @ =gPlttBufferFaded
movs r2, 0x32
ldrsh r0, [r4, r2]
adds r0, 0x1
lsls r0, 1
adds r0, r1
ldrh r5, [r0]
movs r2, 0
adds r6, r1, 0
adds r3, r6, 0
_080A4A0C:
movs r1, 0x32
ldrsh r0, [r4, r1]
adds r2, 0x1
adds r0, r2
lsls r1, r0, 1
adds r1, r3
adds r0, 0x1
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strh r0, [r1]
cmp r2, 0x5
ble _080A4A0C
movs r2, 0x32
ldrsh r0, [r4, r2]
adds r0, 0x7
lsls r0, 1
adds r0, r6
strh r5, [r0]
_080A4A32:
ldrh r2, [r4, 0x3C]
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0x6
ble _080A4A6C
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
ble _080A4A80
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A4A6C
movs r0, 0
strh r0, [r4, 0x3A]
subs r2, 0x1
strh r2, [r4, 0x3C]
lsls r1, r2, 8
movs r0, 0x10
subs r0, r2
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
_080A4A6C:
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080A4A80
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
b _080A4AC2
.align 2, 0
_080A4A7C: .4byte gPlttBufferFaded
_080A4A80:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A4AC2
movs r0, 0
strh r0, [r4, 0x3A]
ldrh r2, [r4, 0x3C]
adds r2, 0x1
strh r2, [r4, 0x3C]
lsls r1, r2, 8
movs r0, 0x10
subs r0, r2
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080A4AC2
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080A4AC8 @ =sub_8074F88
str r0, [r4, 0x1C]
_080A4AC2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A4AC8: .4byte sub_8074F88
thumb_func_end sub_80A49D4
thumb_func_start sub_80A4ACC
sub_80A4ACC: @ 80A4ACC
push {r4-r6,lr}
adds r4, r0, 0
ldr r6, _080A4B2C @ =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, _080A4B30 @ =0x0000ffe8
adds r0, r1
strh r0, [r4, 0x22]
strh r5, [r4, 0x2E]
strh r5, [r4, 0x30]
strh r5, [r4, 0x32]
strh r5, [r4, 0x34]
strh r5, [r4, 0x36]
strh r5, [r4, 0x3A]
movs r0, 0x10
strh r0, [r4, 0x3C]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r4, 0x3C]
lsls r1, 8
ldrh r0, [r4, 0x3A]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r0, _080A4B34 @ =sub_80A4B38
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A4B2C: .4byte gBattleAnimTarget
_080A4B30: .4byte 0x0000ffe8
_080A4B34: .4byte sub_80A4B38
thumb_func_end sub_80A4ACC
thumb_func_start sub_80A4B38
sub_80A4B38: @ 80A4B38
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080A4B46
b _080A4C90
_080A4B46:
lsls r0, 2
ldr r1, _080A4B50 @ =_080A4B54
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A4B50: .4byte _080A4B54
.align 2, 0
_080A4B54:
.4byte _080A4B68
.4byte _080A4BCC
.4byte _080A4BE8
.4byte _080A4C66
.4byte _080A4C7A
_080A4B68:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
cmp r0, 0
bgt _080A4B76
b _080A4C90
_080A4B76:
movs r0, 0
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080A4B98
ldrh r1, [r4, 0x3A]
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080A4BA6
adds r0, r1, 0x1
strh r0, [r4, 0x3A]
b _080A4BA6
_080A4B98:
ldrh r1, [r4, 0x3C]
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080A4BA6
subs r0, r1, 0x1
strh r0, [r4, 0x3C]
_080A4BA6:
ldrh r1, [r4, 0x3C]
lsls r1, 8
ldrh r0, [r4, 0x3A]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080A4C90
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080A4C90
strh r0, [r4, 0x30]
b _080A4C72
_080A4BCC:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080A4C90
movs r0, 0
strh r0, [r4, 0x30]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _080A4C72
_080A4BE8:
adds r0, r4, 0
movs r1, 0x10
movs r2, 0x4
bl sub_80A4C98
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080A4C0A
movs r0, 0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x22]
adds r0, 0x1
strh r0, [r4, 0x22]
_080A4C0A:
ldrh r0, [r4, 0x32]
adds r1, r0, 0x1
strh r1, [r4, 0x32]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x1D
ble _080A4C90
movs r0, 0x1
ands r1, r0
cmp r1, 0
beq _080A4C30
ldrh r1, [r4, 0x3A]
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080A4C3E
subs r0, r1, 0x1
strh r0, [r4, 0x3A]
b _080A4C3E
_080A4C30:
ldrh r1, [r4, 0x3C]
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080A4C3E
adds r0, r1, 0x1
strh r0, [r4, 0x3C]
_080A4C3E:
ldrh r1, [r4, 0x3C]
lsls r1, 8
ldrh r0, [r4, 0x3A]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r0, 0x3A
ldrsh r1, [r4, r0]
cmp r1, 0
bne _080A4C90
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0x10
bne _080A4C90
strh r1, [r4, 0x30]
strh r1, [r4, 0x32]
b _080A4C72
_080A4C66:
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_080A4C72:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080A4C90
_080A4C7A:
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
_080A4C90:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A4B38
thumb_func_start sub_80A4C98
sub_80A4C98: @ 80A4C98
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0xB
bgt _080A4CAA
ldrh r0, [r4, 0x36]
adds r0, 0x2
strh r0, [r4, 0x36]
_080A4CAA:
ldrh r5, [r4, 0x34]
adds r0, r5, 0
subs r0, 0x12
lsls r0, 16
lsrs r0, 16
adds r1, r5, 0
cmp r0, 0x17
bhi _080A4CC0
ldrh r0, [r4, 0x36]
subs r0, 0x2
strh r0, [r4, 0x36]
_080A4CC0:
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x2F
ble _080A4CCE
ldrh r0, [r4, 0x36]
adds r0, 0x2
strh r0, [r4, 0x36]
_080A4CCE:
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r1, 0x9
bl __divsi3
strh r0, [r4, 0x24]
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r1, 0xE
bl __divsi3
strh r0, [r4, 0x26]
lsls r0, 16
cmp r0, 0
bge _080A4CF4
movs r1, 0x26
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x26]
_080A4CF4:
adds r0, r5, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3B
ble _080A4D04
movs r0, 0
strh r0, [r4, 0x34]
_080A4D04:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A4C98
thumb_func_start sub_80A4D0C
sub_80A4D0C: @ 80A4D0C
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080A4D50 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080A4D20
adds r0, r4, 0
bl sub_8074FCC
_080A4D20:
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl sub_8074FF8
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r5, 0xA]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x32]
ldr r1, _080A4D54 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A4D58 @ =sub_8074D00
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A4D50: .4byte gBattleAnimArgs
_080A4D54: .4byte DestroyAnimSprite
_080A4D58: .4byte sub_8074D00
thumb_func_end sub_80A4D0C
thumb_func_start sub_80A4D5C
sub_80A4D5C: @ 80A4D5C
push {r4-r6,lr}
adds r5, r0, 0
ldr r0, _080A4D70 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A4D78
ldr r0, _080A4D74 @ =gBattleAnimAttacker
b _080A4D7A
.align 2, 0
_080A4D70: .4byte gBattleAnimArgs
_080A4D74: .4byte gBattleAnimAttacker
_080A4D78:
ldr r0, _080A4DBC @ =gBattleAnimTarget
_080A4D7A:
ldrb r6, [r0]
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080A4DC4
movs r1, 0x2
adds r0, r6, 0
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A4DC4
ldr r4, _080A4DC0 @ =gBattleAnimArgs
ldrb r1, [r4, 0xC]
adds r2, r5, 0
adds r2, 0x20
adds r3, r5, 0
adds r3, 0x22
adds r0, r6, 0
bl sub_8076D9C
movs r2, 0
ldrsh r1, [r4, r2]
adds r0, r5, 0
bl sub_8074FF8
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
b _080A4E14
.align 2, 0
_080A4DBC: .4byte gBattleAnimTarget
_080A4DC0: .4byte gBattleAnimArgs
_080A4DC4:
ldr r4, _080A4DE4 @ =gBattleAnimArgs
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080A4DE8
adds r0, r6, 0
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x1
b _080A4DFA
.align 2, 0
_080A4DE4: .4byte gBattleAnimArgs
_080A4DE8:
adds r0, r6, 0
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
_080A4DFA:
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
adds r0, r4
strh r0, [r5, 0x22]
ldr r0, _080A4E34 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r0, r5, 0
bl sub_8074FF8
_080A4E14:
ldr r1, _080A4E34 @ =gBattleAnimArgs
ldrh r0, [r1, 0xA]
strh r0, [r5, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x32]
ldr r1, _080A4E38 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A4E3C @ =sub_8074D00
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A4E34: .4byte gBattleAnimArgs
_080A4E38: .4byte DestroyAnimSprite
_080A4E3C: .4byte sub_8074D00
thumb_func_end sub_80A4D5C
thumb_func_start sub_80A4E40
sub_80A4E40: @ 80A4E40
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _080A4E6C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A4E74
ldr r0, _080A4E70 @ =gBattleAnimArgs
ldrh r1, [r0]
ldrh r2, [r4, 0x20]
adds r1, r2
strh r1, [r4, 0x20]
ldrh r0, [r0, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
b _080A4E8E
.align 2, 0
_080A4E6C: .4byte gBattleAnimAttacker
_080A4E70: .4byte gBattleAnimArgs
_080A4E74:
ldr r2, _080A4E98 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_080A4E8E:
ldr r0, _080A4E9C @ =sub_80A4EA0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A4E98: .4byte gBattleAnimArgs
_080A4E9C: .4byte sub_80A4EA0
thumb_func_end sub_80A4E40
thumb_func_start sub_80A4EA0
sub_80A4EA0: @ 80A4EA0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _080A4ED8
movs r0, 0x2E
ldrsh r1, [r4, r0]
movs r0, 0x1E
subs r0, r1
movs r1, 0x3
bl __divsi3
strh r0, [r4, 0x26]
movs r1, 0x30
ldrsh r0, [r4, r1]
lsls r0, 18
asrs r0, 16
movs r1, 0x3
bl Sin
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
_080A4ED8:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080A4EEC
adds r0, r4, 0
bl DestroyAnimSprite
_080A4EEC:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A4EA0
thumb_func_start sub_80A4EF4
sub_80A4EF4: @ 80A4EF4
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _080A4F24 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A4F2C
ldr r1, _080A4F28 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
movs r0, 0x1
strh r0, [r4, 0x34]
b _080A4F4A
.align 2, 0
_080A4F24: .4byte gBattleAnimAttacker
_080A4F28: .4byte gBattleAnimArgs
_080A4F2C:
ldr r2, _080A4F54 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldr r0, _080A4F58 @ =0x0000ffff
strh r0, [r4, 0x34]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_080A4F4A:
ldr r0, _080A4F5C @ =sub_80A4F60
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A4F54: .4byte gBattleAnimArgs
_080A4F58: .4byte 0x0000ffff
_080A4F5C: .4byte sub_80A4F60
thumb_func_end sub_80A4EF4
thumb_func_start sub_80A4F60
sub_80A4F60: @ 80A4F60
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x28
bl __divsi3
negs r0, r0
strh r0, [r4, 0x26]
movs r2, 0x36
ldrsh r0, [r4, r2]
movs r1, 0xA
bl __divsi3
strh r0, [r4, 0x24]
movs r1, 0x34
ldrsh r0, [r4, r1]
lsls r0, 1
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
ldrh r0, [r4, 0x30]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
ble _080A4FA4
adds r0, r4, 0
bl move_anim_8074EE0
_080A4FA4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A4F60
thumb_func_start sub_80A4FAC
sub_80A4FAC: @ 80A4FAC
push {lr}
ldrh r1, [r0, 0x20]
subs r1, 0x20
strh r1, [r0, 0x20]
ldrh r1, [r0, 0x22]
subs r1, 0x20
strh r1, [r0, 0x22]
movs r1, 0x14
strh r1, [r0, 0x2E]
ldr r1, _080A4FCC @ =sub_8074C44
str r1, [r0, 0x1C]
ldr r1, _080A4FD0 @ =sub_80A4FD4
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_080A4FCC: .4byte sub_8074C44
_080A4FD0: .4byte sub_80A4FD4
thumb_func_end sub_80A4FAC
thumb_func_start sub_80A4FD4
sub_80A4FD4: @ 80A4FD4
push {r4-r6,lr}
adds r5, r0, 0
ldrh r6, [r5, 0x38]
movs r1, 0x1
adds r0, r1, 0
ands r0, r6
cmp r0, 0
beq _080A4FEA
cmp r0, 0x1
beq _080A5004
b _080A506A
_080A4FEA:
strh r1, [r5, 0x2E]
ldr r0, _080A4FFC @ =sub_8074C44
str r0, [r5, 0x1C]
ldr r1, _080A5000 @ =sub_80A4FD4
adds r0, r5, 0
bl StoreSpriteCallbackInData6
b _080A506A
.align 2, 0
_080A4FFC: .4byte sub_8074C44
_080A5000: .4byte sub_80A4FD4
_080A5004:
ldrh r3, [r5, 0x24]
ldrh r0, [r5, 0x20]
adds r3, r0
movs r0, 0
strh r3, [r5, 0x20]
ldrh r4, [r5, 0x26]
ldrh r1, [r5, 0x22]
adds r4, r1
strh r4, [r5, 0x22]
strh r0, [r5, 0x26]
strh r0, [r5, 0x24]
movs r0, 0x8
strh r0, [r5, 0x2E]
ldr r2, _080A5078 @ =gUnknown_83E3548
lsls r0, r6, 16
asrs r0, 24
lsls r0, 1
adds r1, r0, r2
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
adds r3, r1
strh r3, [r5, 0x32]
adds r2, 0x1
adds r0, r2
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
adds r4, r0
strh r4, [r5, 0x36]
ldr r0, _080A507C @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080A5080 @ =sub_80A5084
adds r0, r5, 0
bl StoreSpriteCallbackInData6
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r1, [r5, 0x38]
adds r0, r1
strh r0, [r5, 0x38]
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xCB
bl PlaySE12WithPanning
_080A506A:
ldrh r0, [r5, 0x38]
movs r1, 0x1
eors r0, r1
strh r0, [r5, 0x38]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5078: .4byte gUnknown_83E3548
_080A507C: .4byte StartAnimLinearTranslation
_080A5080: .4byte sub_80A5084
thumb_func_end sub_80A4FD4
thumb_func_start sub_80A5084
sub_80A5084: @ 80A5084
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x38]
lsls r0, 16
asrs r0, 24
cmp r0, 0x4
bne _080A50AC
movs r0, 0xA
strh r0, [r2, 0x2E]
ldr r0, _080A50A4 @ =sub_8074C44
str r0, [r2, 0x1C]
ldr r1, _080A50A8 @ =sub_80A50B8
adds r0, r2, 0
bl StoreSpriteCallbackInData6
b _080A50B0
.align 2, 0
_080A50A4: .4byte sub_8074C44
_080A50A8: .4byte sub_80A50B8
_080A50AC:
ldr r0, _080A50B4 @ =sub_80A4FD4
str r0, [r2, 0x1C]
_080A50B0:
pop {r0}
bx r0
.align 2, 0
_080A50B4: .4byte sub_80A4FD4
thumb_func_end sub_80A5084
thumb_func_start sub_80A50B8
sub_80A50B8: @ 80A50B8
push {r4-r7,lr}
adds r5, r0, 0
ldrh r1, [r5, 0x6]
cmp r1, 0
bne _080A50E0
movs r0, 0x3
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
strh r1, [r5, 0x32]
ldr r0, _080A50D8 @ =sub_8074C44
str r0, [r5, 0x1C]
ldr r1, _080A50DC @ =sub_80A5174
adds r0, r5, 0
bl StoreSpriteCallbackInData6
b _080A5160
.align 2, 0
_080A50D8: .4byte sub_8074C44
_080A50DC: .4byte sub_80A5174
_080A50E0:
ldrh r0, [r5, 0x6]
cmp r0, 0x2
beq _080A5100
cmp r0, 0x2
bgt _080A50F0
cmp r0, 0x1
beq _080A50F6
b _080A5114
_080A50F0:
cmp r0, 0x3
beq _080A5108
b _080A5114
_080A50F6:
ldr r6, _080A50FC @ =0x0000fff8
adds r7, r6, 0
b _080A5118
.align 2, 0
_080A50FC: .4byte 0x0000fff8
_080A5100:
ldr r7, _080A5104 @ =0x0000fff8
b _080A5116
.align 2, 0
_080A5104: .4byte 0x0000fff8
_080A5108:
movs r7, 0x8
ldr r6, _080A5110 @ =0x0000fff8
b _080A5118
.align 2, 0
_080A5110: .4byte 0x0000fff8
_080A5114:
movs r7, 0x8
_080A5116:
movs r6, 0x8
_080A5118:
ldrh r0, [r5, 0x24]
ldrh r1, [r5, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x26]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
strh r1, [r5, 0x26]
strh r1, [r5, 0x24]
movs r0, 0x6
strh r0, [r5, 0x2E]
ldr r4, _080A5168 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r7
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
strh r0, [r5, 0x36]
ldr r0, _080A516C @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080A5170 @ =sub_80A5220
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080A5160:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A5168: .4byte gBattleAnimTarget
_080A516C: .4byte StartAnimLinearTranslation
_080A5170: .4byte sub_80A5220
thumb_func_end sub_80A50B8
thumb_func_start sub_80A5174
sub_80A5174: @ 80A5174
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A5194
ldrh r0, [r4, 0x30]
adds r0, 0x3
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
ble _080A51A4
movs r0, 0x10
b _080A51A2
_080A5194:
ldrh r0, [r4, 0x30]
subs r0, 0x3
strh r0, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bge _080A51A4
movs r0, 0
_080A51A2:
strh r0, [r4, 0x30]
_080A51A4:
movs r0, 0x1
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x1
movs r2, 0x1
movs r3, 0x1
bl sub_8075BE8
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldr r2, _080A5200 @ =0x00007fff
bl BlendPalettes
movs r3, 0x30
ldrsh r0, [r4, r3]
cmp r0, 0x10
bne _080A520C
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
ldrb r1, [r4, 0x5]
lsrs r1, 4
lsls r0, r1, 5
ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210
adds r0, r2
lsls r1, 4
ldr r3, _080A5208 @ =0x00000101
adds r2, r3, 0
orrs r1, r2
movs r2, 0x4
bl LoadPalette
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xB9
bl PlaySE12WithPanning
b _080A5214
.align 2, 0
_080A5200: .4byte 0x00007fff
_080A5204: .4byte gPlttBufferUnfaded + 0x210
_080A5208: .4byte 0x00000101
_080A520C:
cmp r0, 0
bne _080A5214
ldr r0, _080A521C @ =sub_80A5220
str r0, [r4, 0x1C]
_080A5214:
add sp, 0xC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A521C: .4byte sub_80A5220
thumb_func_end sub_80A5174
thumb_func_start sub_80A5220
sub_80A5220: @ 80A5220
push {lr}
adds r2, r0, 0
ldr r0, _080A523C @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080A5240 @ =0x0000ffff
cmp r1, r0
bne _080A5238
movs r0, 0
strh r0, [r2, 0x30]
strh r0, [r2, 0x2E]
ldr r0, _080A5244 @ =sub_80A5248
str r0, [r2, 0x1C]
_080A5238:
pop {r0}
bx r0
.align 2, 0
_080A523C: .4byte gBattleAnimArgs
_080A5240: .4byte 0x0000ffff
_080A5244: .4byte sub_80A5248
thumb_func_end sub_80A5220
thumb_func_start sub_80A5248
sub_80A5248: @ 80A5248
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x3
bl __modsi3
lsls r0, 16
cmp r0, 0
bne _080A527C
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
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]
_080A527C:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x8
bne _080A5290
adds r0, r4, 0
bl DestroyAnimSprite
_080A5290:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A5248
thumb_func_start sub_80A5298
sub_80A5298: @ 80A5298
push {r4,lr}
adds r3, r0, 0
ldr r0, _080A52B8 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r3, 0x6]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080A52BC
ldrh r0, [r3, 0x20]
subs r0, 0x18
strh r0, [r3, 0x20]
ldrh r0, [r3, 0x22]
subs r0, 0x18
strh r0, [r3, 0x22]
b _080A530E
.align 2, 0
_080A52B8: .4byte gBattleAnimArgs
_080A52BC:
cmp r0, 0x2
bne _080A52D8
ldrh r0, [r3, 0x20]
subs r0, 0x18
strh r0, [r3, 0x20]
ldrh r0, [r3, 0x22]
adds r0, 0x18
strh r0, [r3, 0x22]
ldrb r1, [r3, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x20
b _080A530A
_080A52D8:
cmp r0, 0x3
bne _080A52F4
ldrh r0, [r3, 0x20]
adds r0, 0x18
strh r0, [r3, 0x20]
ldrh r0, [r3, 0x22]
subs r0, 0x18
strh r0, [r3, 0x22]
ldrb r1, [r3, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x10
b _080A530A
_080A52F4:
ldrh r0, [r3, 0x20]
adds r0, 0x18
strh r0, [r3, 0x20]
ldrh r0, [r3, 0x22]
adds r0, 0x18
strh r0, [r3, 0x22]
ldrb r1, [r3, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x30
_080A530A:
orrs r0, r1
strb r0, [r3, 0x3]
_080A530E:
ldrh r2, [r3, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r4, _080A5334 @ =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, _080A5338 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r3, 0x4]
ldr r1, _080A533C @ =sub_80A4FAC
str r1, [r3, 0x1C]
adds r0, r3, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A5334: .4byte 0x000003ff
_080A5338: .4byte 0xfffffc00
_080A533C: .4byte sub_80A4FAC
thumb_func_end sub_80A5298
thumb_func_start sub_80A5340
sub_80A5340: @ 80A5340
push {lr}
adds r3, r0, 0
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
movs r0, 0
strh r0, [r3, 0x2E]
ldr r0, _080A5368 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x1
beq _080A537C
cmp r0, 0x1
bgt _080A536C
cmp r0, 0
beq _080A5372
b _080A538C
.align 2, 0
_080A5368: .4byte gBattleAnimArgs
_080A536C:
cmp r0, 0x2
beq _080A5384
b _080A538C
_080A5372:
ldr r0, _080A5378 @ =sub_80A5398
b _080A538E
.align 2, 0
_080A5378: .4byte sub_80A5398
_080A537C:
ldr r0, _080A5380 @ =sub_80A5474
b _080A538E
.align 2, 0
_080A5380: .4byte sub_80A5474
_080A5384:
ldr r0, _080A5388 @ =sub_80A54C4
b _080A538E
.align 2, 0
_080A5388: .4byte sub_80A54C4
_080A538C:
ldr r0, _080A5394 @ =sub_80A5584
_080A538E:
str r0, [r3, 0x1C]
pop {r0}
bx r0
.align 2, 0
_080A5394: .4byte sub_80A5584
thumb_func_end sub_80A5340
thumb_func_start sub_80A5398
sub_80A5398: @ 80A5398
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x6
strh r0, [r4, 0x2E]
ldr r5, _080A53D8 @ =gBattleAnimAttacker
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
movs r2, 0x2
negs r2, r2
adds r1, r2, 0
cmp r0, 0
beq _080A53B6
movs r1, 0x2
_080A53B6:
strh r1, [r4, 0x30]
movs r0, 0
strh r0, [r4, 0x32]
ldr r1, _080A53DC @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x34]
ldr r1, _080A53E0 @ =sub_80A53E8
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A53E4 @ =TranslateMonSpriteLinear
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A53D8: .4byte gBattleAnimAttacker
_080A53DC: .4byte gBattlerSpriteIds
_080A53E0: .4byte sub_80A53E8
_080A53E4: .4byte TranslateMonSpriteLinear
thumb_func_end sub_80A5398
thumb_func_start sub_80A53E8
sub_80A53E8: @ 80A53E8
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0x2E
ldrsh r6, [r5, r0]
cmp r6, 0
bne _080A5424
ldr r1, _080A5464 @ =gBattlerSpriteIds
ldr r4, _080A5468 @ =gBattleAnimAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
strh r0, [r5, 0x34]
movs r1, 0
bl PrepareBattlerSpriteForRotScale
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
ldr r2, _080A546C @ =0xfffffd00
adds r1, r2, 0
cmp r0, 0
beq _080A5420
movs r0, 0xC0
lsls r0, 2
adds r1, r0, 0
_080A5420:
strh r1, [r5, 0x36]
strh r6, [r5, 0x38]
_080A5424:
ldrh r0, [r5, 0x36]
ldrh r1, [r5, 0x38]
adds r0, r1
strh r0, [r5, 0x38]
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r5, 0x38]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080A545E
movs r0, 0
strh r0, [r5, 0x2E]
ldr r0, _080A5470 @ =sub_80A5584
str r0, [r5, 0x1C]
_080A545E:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5464: .4byte gBattlerSpriteIds
_080A5468: .4byte gBattleAnimAttacker
_080A546C: .4byte 0xfffffd00
_080A5470: .4byte sub_80A5584
thumb_func_end sub_80A53E8
thumb_func_start sub_80A5474
sub_80A5474: @ 80A5474
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x4
strh r0, [r4, 0x2E]
ldr r5, _080A54B4 @ =gBattleAnimAttacker
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
movs r1, 0x3
cmp r0, 0
beq _080A5492
movs r0, 0x3
negs r0, r0
adds r1, r0, 0
_080A5492:
strh r1, [r4, 0x30]
movs r0, 0
strh r0, [r4, 0x32]
ldr r1, _080A54B8 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x34]
ldr r1, _080A54BC @ =sub_80A5584
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A54C0 @ =TranslateMonSpriteLinear
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A54B4: .4byte gBattleAnimAttacker
_080A54B8: .4byte gBattlerSpriteIds
_080A54BC: .4byte sub_80A5584
_080A54C0: .4byte TranslateMonSpriteLinear
thumb_func_end sub_80A5474
thumb_func_start sub_80A54C4
sub_80A54C4: @ 80A54C4
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080A54DE
movs r0, 0
strh r0, [r1, 0x2E]
ldr r0, _080A54E4 @ =sub_80A54E8
str r0, [r1, 0x1C]
_080A54DE:
pop {r0}
bx r0
.align 2, 0
_080A54E4: .4byte sub_80A54E8
thumb_func_end sub_80A54C4
thumb_func_start sub_80A54E8
sub_80A54E8: @ 80A54E8
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080A5538
ldr r1, _080A5524 @ =gBattlerSpriteIds
ldr r4, _080A5528 @ =gBattleAnimAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
strh r0, [r5, 0x34]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A552C
movs r0, 0xFC
lsls r0, 8
strh r0, [r5, 0x36]
movs r0, 0xC0
lsls r0, 4
b _080A5536
.align 2, 0
_080A5524: .4byte gBattlerSpriteIds
_080A5528: .4byte gBattleAnimAttacker
_080A552C:
movs r0, 0x80
lsls r0, 3
strh r0, [r5, 0x36]
movs r0, 0xF4
lsls r0, 8
_080A5536:
strh r0, [r5, 0x38]
_080A5538:
ldrh r0, [r5, 0x36]
ldrh r1, [r5, 0x38]
adds r0, r1
strh r0, [r5, 0x38]
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r5, 0x38]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080A5578
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
bl ResetSpriteRotScale
ldr r0, _080A5580 @ =sub_80A5584
str r0, [r5, 0x1C]
_080A5578:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A5580: .4byte sub_80A5584
thumb_func_end sub_80A54E8
thumb_func_start sub_80A5584
sub_80A5584: @ 80A5584
push {lr}
bl DestroyAnimSprite
pop {r0}
bx r0
thumb_func_end sub_80A5584
thumb_func_start sub_80A5590
sub_80A5590: @ 80A5590
movs r1, 0
strh r1, [r0, 0x2E]
ldr r1, _080A559C @ =sub_80A55A0
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_080A559C: .4byte sub_80A55A0
thumb_func_end sub_80A5590
thumb_func_start sub_80A55A0
sub_80A55A0: @ 80A55A0
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080A55FA
cmp r5, 0x1
bgt _080A55B6
cmp r5, 0
beq _080A55BC
b _080A568E
_080A55B6:
cmp r5, 0x2
beq _080A564C
b _080A568E
_080A55BC:
strh r5, [r4, 0x30]
ldr r1, _080A5640 @ =gBattlerSpriteIds
ldr r2, _080A5644 @ =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x32]
ldrb r0, [r2]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x34]
ldr r2, _080A5648 @ =0xfffffe00
adds r1, r2, 0
cmp r0, 0
beq _080A55E4
movs r0, 0x80
lsls r0, 2
adds r1, r0, 0
_080A55E4:
strh r1, [r4, 0x36]
strh r5, [r4, 0x38]
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl PrepareBattlerSpriteForRotScale
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
_080A55FA:
ldrh r0, [r4, 0x36]
ldrh r1, [r4, 0x38]
adds r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0x38]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080A568E
movs r0, 0
strh r0, [r4, 0x30]
movs r2, 0x36
ldrsh r0, [r4, r2]
negs r0, r0
strh r0, [r4, 0x36]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080A568E
.align 2, 0
_080A5640: .4byte gBattlerSpriteIds
_080A5644: .4byte gBattleAnimAttacker
_080A5648: .4byte 0xfffffe00
_080A564C:
ldrh r0, [r4, 0x36]
ldrh r1, [r4, 0x38]
adds r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0x38]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080A568E
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
bl ResetSpriteRotScale
adds r0, r4, 0
bl DestroyAnimSprite
_080A568E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A55A0
thumb_func_start sub_80A5694
sub_80A5694: @ 80A5694
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080A56D8 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r1
ldr r1, _080A56DC @ =gBattlerSpriteIds
ldr r2, _080A56E0 @ =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
movs r4, 0
strh r0, [r5, 0x8]
ldrb r0, [r2]
bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
strh r2, [r5, 0xA]
strh r4, [r5, 0xC]
ldr r0, _080A56E4 @ =gBattleAnimArgs
movs r3, 0
ldrsh r1, [r0, r3]
cmp r1, 0
beq _080A56E8
cmp r1, 0x1
beq _080A5704
adds r0, r6, 0
bl DestroyAnimVisualTask
b _080A5722
.align 2, 0
_080A56D8: .4byte gTasks
_080A56DC: .4byte gBattlerSpriteIds
_080A56E0: .4byte gBattleAnimAttacker
_080A56E4: .4byte gBattleAnimArgs
_080A56E8:
strh r1, [r5, 0xC]
movs r0, 0x8
strh r0, [r5, 0xE]
strh r1, [r5, 0x10]
movs r0, 0x3
strh r0, [r5, 0x12]
cmp r2, 0
bne _080A56FC
negs r0, r0
strh r0, [r5, 0x12]
_080A56FC:
ldr r0, _080A5700 @ =sub_80A572C
b _080A5720
.align 2, 0
_080A5700: .4byte sub_80A572C
_080A5704:
movs r0, 0x8
strh r0, [r5, 0xE]
movs r0, 0xC0
lsls r0, 3
strh r0, [r5, 0x10]
movs r1, 0xC0
strh r1, [r5, 0x12]
cmp r2, 0
bne _080A571E
negs r0, r0
strh r0, [r5, 0x10]
negs r0, r1
strh r0, [r5, 0x12]
_080A571E:
ldr r0, _080A5728 @ =sub_80A58EC
_080A5720:
str r0, [r5]
_080A5722:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5728: .4byte sub_80A58EC
thumb_func_end sub_80A5694
thumb_func_start sub_80A572C
sub_80A572C: @ 80A572C
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080A5750 @ =gTasks
adds r4, r0, r1
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080A5746
b _080A58E6
_080A5746:
lsls r0, 2
ldr r1, _080A5754 @ =_080A5758
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A5750: .4byte gTasks
_080A5754: .4byte _080A5758
.align 2, 0
_080A5758:
.4byte _080A576C
.4byte _080A579E
.4byte _080A57F8
.4byte _080A5870
.4byte _080A58B4
_080A576C:
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r1, 0
beq _080A577C
ldrh r2, [r4, 0x12]
ldrh r3, [r4, 0x10]
adds r2, r3
b _080A58C2
_080A577C:
movs r0, 0x8
strh r0, [r4, 0xE]
strh r1, [r4, 0x10]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r1, 0xC0
cmp r0, 0
bne _080A5792
movs r2, 0xC0
negs r2, r2
adds r1, r2, 0
_080A5792:
strh r1, [r4, 0x12]
ldrb r0, [r4, 0x8]
movs r1, 0
bl PrepareBattlerSpriteForRotScale
b _080A58A8
_080A579E:
movs r3, 0xE
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080A57C4
ldrh r0, [r4, 0x12]
ldrh r1, [r4, 0x10]
adds r0, r1
strh r0, [r4, 0x10]
ldrb r0, [r4, 0x8]
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0x10]
adds r1, r2, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
bl sub_80759DC
b _080A58D4
_080A57C4:
movs r0, 0x8
strh r0, [r4, 0xE]
ldr r2, _080A57F4 @ =gSprites
movs r3, 0x8
ldrsh r1, [r4, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x24]
strh r0, [r4, 0x10]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0x2
negs r2, r2
adds r1, r2, 0
cmp r0, 0
bne _080A57EA
movs r1, 0x2
_080A57EA:
strh r1, [r4, 0x12]
movs r0, 0x1
strh r0, [r4, 0x14]
b _080A58A8
.align 2, 0
_080A57F4: .4byte gSprites
_080A57F8:
ldrh r2, [r4, 0xE]
movs r3, 0xE
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080A5854
ldrh r1, [r4, 0x14]
movs r3, 0x14
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080A5812
subs r0, r1, 0x1
strh r0, [r4, 0x14]
b _080A58E6
_080A5812:
movs r0, 0x1
ands r0, r2
cmp r0, 0
beq _080A5834
ldr r2, _080A5830 @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x12]
ldrh r2, [r4, 0x10]
adds r1, r2
b _080A5848
.align 2, 0
_080A5830: .4byte gSprites
_080A5834:
ldr r2, _080A5850 @ =gSprites
movs r3, 0x8
ldrsh r1, [r4, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x10]
ldrh r2, [r4, 0x12]
subs r1, r2
_080A5848:
strh r1, [r0, 0x24]
movs r0, 0x1
strh r0, [r4, 0x14]
b _080A58D4
.align 2, 0
_080A5850: .4byte gSprites
_080A5854:
ldr r2, _080A586C @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x10]
strh r1, [r0, 0x24]
movs r0, 0xC
strh r0, [r4, 0xE]
b _080A58A8
.align 2, 0
_080A586C: .4byte gSprites
_080A5870:
ldrh r1, [r4, 0xE]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080A5880
subs r0, r1, 0x1
strh r0, [r4, 0xE]
b _080A58E6
_080A5880:
movs r0, 0x3
strh r0, [r4, 0xE]
ldr r2, _080A58B0 @ =gSprites
movs r3, 0x8
ldrsh r1, [r4, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x24]
strh r0, [r4, 0x10]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0x8
negs r2, r2
adds r1, r2, 0
cmp r0, 0
bne _080A58A6
movs r1, 0x8
_080A58A6:
strh r1, [r4, 0x12]
_080A58A8:
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
b _080A58E6
.align 2, 0
_080A58B0: .4byte gSprites
_080A58B4:
movs r3, 0xE
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080A58E0
ldrh r2, [r4, 0x12]
ldrh r0, [r4, 0x10]
adds r2, r0
_080A58C2:
strh r2, [r4, 0x10]
ldr r3, _080A58DC @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r2, [r0, 0x24]
_080A58D4:
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
b _080A58E6
.align 2, 0
_080A58DC: .4byte gSprites
_080A58E0:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080A58E6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A572C
thumb_func_start sub_80A58EC
sub_80A58EC: @ 80A58EC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080A5928 @ =gTasks
adds r4, r0, r1
movs r1, 0xE
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080A592C
ldrh r0, [r4, 0x10]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0x10]
ldrb r0, [r4, 0x8]
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0x10]
adds r1, r2, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
bl sub_80759DC
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
b _080A5938
.align 2, 0
_080A5928: .4byte gTasks
_080A592C:
ldrb r0, [r4, 0x8]
bl ResetSpriteRotScale
adds r0, r5, 0
bl DestroyAnimVisualTask
_080A5938:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A58EC
thumb_func_start sub_80A5940
sub_80A5940: @ 80A5940
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080A5954 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A595C
ldr r4, _080A5958 @ =gBattleAnimAttacker
b _080A595E
.align 2, 0
_080A5954: .4byte gBattleAnimArgs
_080A5958: .4byte gBattleAnimAttacker
_080A595C:
ldr r4, _080A599C @ =gBattleAnimTarget
_080A595E:
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
adds r0, r6
strh r0, [r5, 0x22]
movs r0, 0
strh r0, [r5, 0x2E]
strh r0, [r5, 0x30]
ldr r1, _080A59A0 @ =sub_80A5A8C
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A59A4 @ =sub_8074F6C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A599C: .4byte gBattleAnimTarget
_080A59A0: .4byte sub_80A5A8C
_080A59A4: .4byte sub_8074F6C
thumb_func_end sub_80A5940
thumb_func_start sub_80A59A8
sub_80A59A8: @ 80A59A8
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080A59E0 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, _080A59E4 @ =0x0000ffd0
adds r0, r1
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
ldr r1, _080A59E8 @ =sub_80A5A44
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A59EC @ =sub_8074F6C
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A59E0: .4byte gBattleAnimTarget
_080A59E4: .4byte 0x0000ffd0
_080A59E8: .4byte sub_80A5A44
_080A59EC: .4byte sub_8074F6C
thumb_func_end sub_80A59A8
thumb_func_start sub_80A59F0
sub_80A59F0: @ 80A59F0
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _080A5A34 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, _080A5A38 @ =gBattleAnimArgs
ldr r2, _080A5A3C @ =0x0000ffd0
adds r0, r2
ldrh r1, [r1]
adds r0, r1
movs r6, 0
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
strh r6, [r4, 0x2E]
strh r6, [r4, 0x30]
ldr r0, _080A5A40 @ =sub_80A5A8C
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5A34: .4byte gBattleAnimTarget
_080A5A38: .4byte gBattleAnimArgs
_080A5A3C: .4byte 0x0000ffd0
_080A5A40: .4byte sub_80A5A8C
thumb_func_end sub_80A59F0
thumb_func_start sub_80A5A44
sub_80A5A44: @ 80A5A44
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080A5A6E
movs r0, 0xC
strh r0, [r4, 0x2E]
movs r0, 0x8
strh r0, [r4, 0x30]
movs r0, 0
strh r0, [r4, 0x32]
ldr r1, _080A5A74 @ =sub_80A5A7C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A5A78 @ =sub_8074CD0
str r0, [r4, 0x1C]
_080A5A6E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A5A74: .4byte sub_80A5A7C
_080A5A78: .4byte sub_8074CD0
thumb_func_end sub_80A5A44
thumb_func_start sub_80A5A7C
sub_80A5A7C: @ 80A5A7C
movs r1, 0
strh r1, [r0, 0x2E]
strh r1, [r0, 0x30]
ldr r1, _080A5A88 @ =sub_80A5A8C
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_080A5A88: .4byte sub_80A5A8C
thumb_func_end sub_80A5A7C
thumb_func_start sub_80A5A8C
sub_80A5A8C: @ 80A5A8C
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A5AD4
movs r0, 0
strh r0, [r3, 0x2E]
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsrs r1, r2, 2
movs r0, 0x1
eors r1, r0
ands r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080A5AD4
adds r0, r3, 0
bl DestroyAnimSprite
_080A5AD4:
pop {r0}
bx r0
thumb_func_end sub_80A5A8C
thumb_func_start sub_80A5AD8
sub_80A5AD8: @ 80A5AD8
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080A5AEC @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A5AF4
ldr r4, _080A5AF0 @ =gBattleAnimAttacker
b _080A5AF6
.align 2, 0
_080A5AEC: .4byte gBattleAnimArgs
_080A5AF0: .4byte gBattleAnimAttacker
_080A5AF4:
ldr r4, _080A5B30 @ =gBattleAnimTarget
_080A5AF6:
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
adds r0, r6
strh r0, [r5, 0x22]
movs r0, 0
strh r0, [r5, 0x2E]
ldr r0, _080A5B34 @ =gBattleAnimArgs
ldrh r0, [r0, 0x6]
strh r0, [r5, 0x30]
ldr r0, _080A5B38 @ =sub_80A5B3C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5B30: .4byte gBattleAnimTarget
_080A5B34: .4byte gBattleAnimArgs
_080A5B38: .4byte sub_80A5B3C
thumb_func_end sub_80A5AD8
thumb_func_start sub_80A5B3C
sub_80A5B3C: @ 80A5B3C
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
movs r3, 0x30
ldrsh r1, [r2, r3]
cmp r0, r1
ble _080A5B5C
movs r0, 0
strh r0, [r2, 0x2E]
ldrh r0, [r2, 0x22]
subs r0, 0x1
strh r0, [r2, 0x22]
_080A5B5C:
ldrh r0, [r2, 0x22]
ldrh r1, [r2, 0x2E]
subs r0, r1
strh r0, [r2, 0x22]
adds r0, r2, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080A5B78
adds r0, r2, 0
bl DestroyAnimSprite
_080A5B78:
pop {r0}
bx r0
thumb_func_end sub_80A5B3C
thumb_func_start sub_80A5B7C
sub_80A5B7C: @ 80A5B7C
push {r4-r6,lr}
adds r4, r0, 0
ldr r6, _080A5BC4 @ =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0xC
strh r0, [r4, 0x22]
strh r5, [r4, 0x2E]
movs r0, 0x2
strh r0, [r4, 0x30]
strh r5, [r4, 0x32]
strh r5, [r4, 0x34]
strh r5, [r4, 0x36]
subs r0, 0x42
bl sub_8073A44
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x38]
ldr r0, _080A5BC8 @ =sub_80A5BCC
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5BC4: .4byte gBattleAnimAttacker
_080A5BC8: .4byte sub_80A5BCC
thumb_func_end sub_80A5B7C
thumb_func_start sub_80A5BCC
sub_80A5BCC: @ 80A5BCC
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
movs r2, 0x30
ldrsh r1, [r4, r2]
cmp r0, r1
blt _080A5C38
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsrs r1, r2, 2
movs r0, 0x1
eors r1, r0
ands r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r1, 0x4
ands r0, r1
cmp r0, 0
bne _080A5C1E
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _080A5C1E
ldrh r1, [r4, 0x38]
lsls r1, 24
asrs r1, 24
movs r0, 0xBB
bl PlaySE12WithPanning
_080A5C1E:
movs r1, 0
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A5C38
strh r1, [r4, 0x32]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
_080A5C38:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080A5C62
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x10
ble _080A5C62
adds r0, r4, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080A5C62
adds r0, r4, 0
bl DestroyAnimSprite
_080A5C62:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A5BCC
thumb_func_start sub_80A5C68
sub_80A5C68: @ 80A5C68
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x2E
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080A5CB2
ldr r4, _080A5CC8 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r5, _080A5CCC @ =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r5]
adds r0, r1
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x2]
adds r0, r5
strh r0, [r6, 0x22]
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5CAC
ldrh r0, [r6, 0x22]
adds r0, 0xA
strh r0, [r6, 0x22]
_080A5CAC:
ldrh r0, [r6, 0x2E]
adds r0, 0x1
strh r0, [r6, 0x2E]
_080A5CB2:
ldr r0, _080A5CCC @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080A5CD0 @ =0x0000ffff
cmp r1, r0
bne _080A5CC2
adds r0, r6, 0
bl DestroyAnimSprite
_080A5CC2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A5CC8: .4byte gBattleAnimAttacker
_080A5CCC: .4byte gBattleAnimArgs
_080A5CD0: .4byte 0x0000ffff
thumb_func_end sub_80A5C68
thumb_func_start sub_80A5CD4
sub_80A5CD4: @ 80A5CD4
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _080A5CF4 @ =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r4, r0, r1
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080A5D00
ldr r1, _080A5CF8 @ =gBattleAnimArgs
ldr r0, _080A5CFC @ =0x0000ffff
strh r0, [r1, 0xE]
b _080A5D3E
.align 2, 0
_080A5CF4: .4byte gTasks
_080A5CF8: .4byte gBattleAnimArgs
_080A5CFC: .4byte 0x0000ffff
_080A5D00:
cmp r0, 0x2
bne _080A5D0C
adds r0, r2, 0
bl DestroyAnimVisualTask
b _080A5D44
_080A5D0C:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080A5D44
movs r0, 0
strh r0, [r4, 0x8]
ldrh r2, [r4, 0xA]
adds r2, 0x1
strh r2, [r4, 0xA]
lsls r1, r2, 8
movs r0, 0x10
subs r0, r2
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080A5D44
_080A5D3E:
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
_080A5D44:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A5CD4
thumb_func_start sub_80A5D4C
sub_80A5D4C: @ 80A5D4C
push {r4,lr}
adds r4, r0, 0
movs r1, 0
bl sub_8075114
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
ldr r0, _080A5D74 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
ldr r0, _080A5D78 @ =sub_80A5D7C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A5D74: .4byte gBattleAnimArgs
_080A5D78: .4byte sub_80A5D7C
thumb_func_end sub_80A5D4C
thumb_func_start sub_80A5D7C
sub_80A5D7C: @ 80A5D7C
push {r4,r5,lr}
adds r5, r0, 0
ldrh r1, [r5, 0x2E]
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0
beq _080A5D90
subs r0, r1, 0x1
strh r0, [r5, 0x2E]
b _080A5DCC
_080A5D90:
adds r2, r5, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x41
negs r0, r0
ands r0, r1
strb r0, [r2]
movs r0, 0x1E
strh r0, [r5, 0x2E]
ldr r4, _080A5DD4 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
ldr r0, _080A5DD8 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080A5DDC @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080A5DCC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A5DD4: .4byte gBattleAnimAttacker
_080A5DD8: .4byte StartAnimLinearTranslation
_080A5DDC: .4byte DestroyAnimSprite
thumb_func_end sub_80A5D7C
thumb_func_start sub_80A5DE0
sub_80A5DE0: @ 80A5DE0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080A5E30 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080A5E28
movs r0, 0
strh r0, [r4, 0x8]
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080A5E28
adds r0, r5, 0
bl DestroyAnimVisualTask
_080A5E28:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A5E30: .4byte gTasks
thumb_func_end sub_80A5DE0
thumb_func_start sub_80A5E34
sub_80A5E34: @ 80A5E34
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
movs r4, 0
ldr r0, _080A5E9C @ =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcs _080A5E90
ldr r6, _080A5EA0 @ =gBattleAnimArgs
ldr r5, _080A5EA4 @ =gHealthboxSpriteIds
_080A5E48:
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x1
bne _080A5E64
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A5E64
adds r0, r4, r5
ldrb r0, [r0]
bl SetHealthboxSpriteInvisible
_080A5E64:
movs r1, 0x2
ldrsh r0, [r6, r1]
cmp r0, 0x1
bne _080A5E82
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A5E82
adds r0, r4, r5
ldrb r0, [r0]
bl SetHealthboxSpriteInvisible
_080A5E82:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080A5E9C @ =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcc _080A5E48
_080A5E90:
adds r0, r7, 0
bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A5E9C: .4byte gBattlersCount
_080A5EA0: .4byte gBattleAnimArgs
_080A5EA4: .4byte gHealthboxSpriteIds
thumb_func_end sub_80A5E34
thumb_func_start sub_80A5EA8
sub_80A5EA8: @ 80A5EA8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
b _080A5EC2
_080A5EB2:
ldr r0, _080A5ED8 @ =gHealthboxSpriteIds
adds r0, r4, r0
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
_080A5EC2:
ldr r0, _080A5EDC @ =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcc _080A5EB2
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A5ED8: .4byte gHealthboxSpriteIds
_080A5EDC: .4byte gBattlersCount
thumb_func_end sub_80A5EA8
thumb_func_start sub_80A5EE0
sub_80A5EE0: @ 80A5EE0
push {r4,lr}
adds r4, r0, 0
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5EF6
movs r0, 0x30
strh r0, [r4, 0x20]
movs r0, 0x28
b _080A5EFE
_080A5EF6:
ldr r0, _080A5F20 @ =gBattleAnimArgs
ldrh r1, [r0]
strh r1, [r4, 0x20]
ldrh r0, [r0, 0x2]
_080A5EFE:
strh r0, [r4, 0x22]
ldrb r1, [r4, 0x1]
movs r0, 0x3F
ands r0, r1
strb r0, [r4, 0x1]
ldrb r0, [r4, 0x3]
movs r1, 0xC0
orrs r0, r1
strb r0, [r4, 0x3]
movs r0, 0
strh r0, [r4, 0x2E]
ldr r0, _080A5F24 @ =sub_80A5F28
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A5F20: .4byte gBattleAnimArgs
_080A5F24: .4byte sub_80A5F28
thumb_func_end sub_80A5EE0
thumb_func_start sub_80A5F28
sub_80A5F28: @ 80A5F28
push {lr}
adds r1, r0, 0
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080A5F3A
adds r0, r1, 0
bl DestroyAnimSprite
_080A5F3A:
pop {r0}
bx r0
thumb_func_end sub_80A5F28
thumb_func_start sub_80A5F40
sub_80A5F40: @ 80A5F40
push {r4,lr}
adds r4, r0, 0
ldr r0, _080A5F78 @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r2, _080A5F7C @ =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r2]
adds r0, r1
movs r1, 0
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x22]
strh r1, [r4, 0x2E]
strh r1, [r4, 0x30]
strh r1, [r4, 0x32]
strh r1, [r4, 0x34]
movs r0, 0x1
strh r0, [r4, 0x36]
ldr r0, _080A5F80 @ =sub_80A5F84
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A5F78: .4byte gBattleAnimAttacker
_080A5F7C: .4byte gBattleAnimArgs
_080A5F80: .4byte sub_80A5F84
thumb_func_end sub_80A5F40
thumb_func_start sub_80A5F84
sub_80A5F84: @ 80A5F84
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A5FAE
movs r0, 0
strh r0, [r1, 0x30]
ldrh r2, [r1, 0x32]
movs r3, 0x32
ldrsh r0, [r1, r3]
cmp r0, 0x77
bgt _080A5FAE
ldrh r0, [r1, 0x22]
adds r0, 0x1
strh r0, [r1, 0x22]
adds r0, r2, 0x1
strh r0, [r1, 0x32]
_080A5FAE:
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080A5FBC
adds r0, r1, 0
bl DestroyAnimSprite
_080A5FBC:
pop {r0}
bx r0
thumb_func_end sub_80A5F84
thumb_func_start sub_80A5FC0
sub_80A5FC0: @ 80A5FC0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
lsls r0, 24
lsrs r7, r0, 24
movs r4, 0
str r4, [sp]
str r4, [sp, 0x4]
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_8075BE8
mov r8, r0
ldr r0, _080A6090 @ =0x0000ffff
mov r1, r8
ands r1, r0
mov r8, r1
ldr r0, _080A6094 @ =gTasks
mov r9, r0
lsls r5, r7, 2
adds r5, r7
lsls r5, 3
adds r6, r5, r0
strh r4, [r6, 0x8]
strh r4, [r6, 0xA]
strh r4, [r6, 0xC]
strh r1, [r6, 0xE]
strh r4, [r6, 0x10]
strh r4, [r6, 0x12]
strh r4, [r6, 0x14]
movs r0, 0xD
strh r0, [r6, 0x16]
movs r0, 0xE
strh r0, [r6, 0x18]
movs r0, 0xF
strh r0, [r6, 0x1A]
movs r0, 0x1
movs r1, 0x1
movs r2, 0x1
movs r3, 0x1
bl sub_8075CB8
mov r10, r0
mov r1, r8
orrs r1, r0
mov r8, r1
movs r0, 0x8
add r9, r0
add r5, r9
adds r0, r5, 0
adds r0, 0x1C
adds r5, 0x1E
adds r1, r5, 0
mov r2, r8
bl sub_80765C0
ldr r0, _080A6098 @ =0x000027d2
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
movs r4, 0x80
lsls r4, 9
adds r1, r4, 0
lsls r1, r0
mov r0, r10
orrs r0, r1
mov r10, r0
ldr r0, _080A609C @ =0x000027d3
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
lsls r4, r0
mov r1, r10
orrs r4, r1
ldr r0, _080A60A0 @ =0x00007fbb
str r0, [sp]
adds r0, r4, 0
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, _080A60A4 @ =sub_80A60A8
str r1, [r6]
adds r0, r7, 0
bl _call_via_r1
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A6090: .4byte 0x0000ffff
_080A6094: .4byte gTasks
_080A6098: .4byte 0x000027d2
_080A609C: .4byte 0x000027d3
_080A60A0: .4byte 0x00007fbb
_080A60A4: .4byte sub_80A60A8
thumb_func_end sub_80A5FC0
thumb_func_start sub_80A60A8
sub_80A60A8: @ 80A60A8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080A60D0 @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _080A6194
cmp r1, 0x1
bgt _080A60D4
cmp r1, 0
beq _080A60E2
b _080A6232
.align 2, 0
_080A60D0: .4byte gTasks
_080A60D4:
cmp r1, 0x2
bne _080A60DA
b _080A61EC
_080A60DA:
cmp r1, 0x3
bne _080A60E0
b _080A6220
_080A60E0:
b _080A6232
_080A60E2:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bgt _080A60F0
b _080A6232
_080A60F0:
strh r1, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
bgt _080A613C
ldrh r0, [r4, 0x16]
ldrh r1, [r4, 0x10]
adds r0, r1
strh r0, [r4, 0x10]
ldrh r2, [r4, 0x18]
ldrh r3, [r4, 0x12]
adds r2, r3
strh r2, [r4, 0x12]
ldrh r1, [r4, 0x1A]
ldrh r5, [r4, 0x14]
adds r1, r5
strh r1, [r4, 0x14]
lsls r0, 16
asrs r0, 19
lsls r0, 16
lsrs r0, 16
lsls r2, 16
asrs r2, 19
lsls r2, 16
lsls r1, 16
asrs r1, 19
lsls r1, 16
lsrs r2, 11
orrs r0, r2
lsrs r1, 6
orrs r0, r1
lsls r0, 16
lsrs r0, 16
mov r12, r0
b _080A6146
_080A613C:
ldr r7, _080A618C @ =0x00007fbb
mov r12, r7
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080A6146:
movs r2, 0x1
movs r3, 0
movs r1, 0
_080A614C:
movs r5, 0xE
ldrsh r0, [r4, r5]
ands r0, r2
lsls r5, r2, 17
adds r6, r3, 0
adds r6, 0x10
adds r1, 0x1
mov r8, r1
cmp r0, 0
beq _080A6178
movs r1, 0x1
ldr r2, _080A6190 @ =gPlttBufferFaded
_080A6164:
adds r0, r3, r1
lsls r0, 1
adds r0, r2
mov r7, r12
strh r7, [r0]
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0xF
bls _080A6164
_080A6178:
lsrs r2, r5, 16
lsls r0, r6, 16
lsrs r3, r0, 16
mov r1, r8
lsls r0, r1, 16
lsrs r1, r0, 16
cmp r1, 0xF
bls _080A614C
b _080A6232
.align 2, 0
_080A618C: .4byte 0x00007fbb
_080A6190: .4byte gPlttBufferFaded
_080A6194:
ldr r0, _080A61DC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080A6232
movs r2, 0
ldr r3, _080A61E0 @ =gSprites
movs r5, 0x14
adds r5, r3
mov r12, r5
ldr r7, _080A61E4 @ =gUnknown_83E3734
mov r8, r7
ldr r6, _080A61E8 @ =gUnknown_83E3764
movs r5, 0x1
_080A61B2:
lsls r0, r2, 4
adds r0, r2
lsls r1, r0, 2
mov r7, r12
adds r0, r1, r7
ldr r0, [r0]
cmp r0, r8
beq _080A61C6
cmp r0, r6
bne _080A61CA
_080A61C6:
adds r0, r1, r3
strh r5, [r0, 0x2E]
_080A61CA:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x3F
bls _080A61B2
movs r0, 0
strh r0, [r4, 0xA]
b _080A6214
.align 2, 0
_080A61DC: .4byte gPaletteFade
_080A61E0: .4byte gSprites
_080A61E4: .4byte gUnknown_83E3734
_080A61E8: .4byte gUnknown_83E3764
_080A61EC:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _080A6232
movs r1, 0x24
ldrsh r0, [r4, r1]
movs r2, 0x26
ldrsh r1, [r4, r2]
bl sub_80765C8
ldr r1, _080A621C @ =0x00007fbb
str r1, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
_080A6214:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080A6232
.align 2, 0
_080A621C: .4byte 0x00007fbb
_080A6220:
ldr r0, _080A6240 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080A6232
adds r0, r2, 0
bl DestroyAnimVisualTask
_080A6232:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A6240: .4byte gPaletteFade
thumb_func_end sub_80A60A8
thumb_func_start sub_80A6244
sub_80A6244: @ 80A6244
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080A62C8 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r6, r1]
cmp r0, 0x1
bgt _080A6256
movs r0, 0x2
strh r0, [r6, 0x4]
_080A6256:
movs r1, 0x4
ldrsh r0, [r6, r1]
cmp r0, 0x7F
ble _080A6262
movs r0, 0x7F
strh r0, [r6, 0x4]
_080A6262:
movs r0, 0
strh r0, [r5, 0x2E]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x30]
ldr r4, _080A62CC @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
adds r0, r6
strh r0, [r5, 0x22]
ldrh r1, [r5, 0x20]
strh r1, [r5, 0x3A]
strh r0, [r5, 0x3C]
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A62D4
ldrb r1, [r5, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r5, 0x3]
ldrh r0, [r5, 0x20]
adds r0, 0x28
strh r0, [r5, 0x20]
ldrh r4, [r5, 0x22]
adds r4, 0x14
strh r4, [r5, 0x22]
lsls r0, 7
strh r0, [r5, 0x32]
movs r0, 0x30
ldrsh r1, [r5, r0]
ldr r0, _080A62D0 @ =0xffffec00
b _080A62FA
.align 2, 0
_080A62C8: .4byte gBattleAnimArgs
_080A62CC: .4byte gBattleAnimTarget
_080A62D0: .4byte 0xffffec00
_080A62D4:
ldr r0, _080A6314 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A631C
ldrh r0, [r5, 0x20]
subs r0, 0x28
strh r0, [r5, 0x20]
ldrh r4, [r5, 0x22]
adds r4, 0x14
strh r4, [r5, 0x22]
lsls r0, 7
strh r0, [r5, 0x32]
movs r0, 0x30
ldrsh r1, [r5, r0]
movs r0, 0xA0
lsls r0, 5
_080A62FA:
bl __divsi3
strh r0, [r5, 0x34]
lsls r4, 7
strh r4, [r5, 0x36]
movs r0, 0x30
ldrsh r1, [r5, r0]
ldr r0, _080A6318 @ =0xfffff600
bl __divsi3
strh r0, [r5, 0x38]
b _080A6358
.align 2, 0
_080A6314: .4byte gBattleAnimAttacker
_080A6318: .4byte 0xfffff600
_080A631C:
ldrh r0, [r5, 0x20]
adds r0, 0x28
strh r0, [r5, 0x20]
ldrh r4, [r5, 0x22]
subs r4, 0x14
strh r4, [r5, 0x22]
lsls r0, 7
strh r0, [r5, 0x32]
movs r0, 0x30
ldrsh r1, [r5, r0]
ldr r0, _080A6364 @ =0xffffec00
bl __divsi3
strh r0, [r5, 0x34]
lsls r4, 7
strh r4, [r5, 0x36]
movs r0, 0x30
ldrsh r1, [r5, r0]
movs r0, 0xA0
lsls r0, 4
bl __divsi3
strh r0, [r5, 0x38]
ldrb r1, [r5, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x30
orrs r0, r1
strb r0, [r5, 0x3]
_080A6358:
ldr r0, _080A6368 @ =sub_80A636C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A6364: .4byte 0xffffec00
_080A6368: .4byte sub_80A636C
thumb_func_end sub_80A6244
thumb_func_start sub_80A636C
sub_80A636C: @ 80A636C
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x34]
ldrh r1, [r2, 0x32]
adds r0, r1
strh r0, [r2, 0x32]
ldrh r1, [r2, 0x38]
ldrh r3, [r2, 0x36]
adds r1, r3
strh r1, [r2, 0x36]
lsls r0, 16
asrs r0, 23
strh r0, [r2, 0x20]
lsls r1, 16
asrs r1, 23
strh r1, [r2, 0x22]
ldrh r0, [r2, 0x30]
subs r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080A63A2
ldrh r0, [r2, 0x3A]
strh r0, [r2, 0x20]
ldrh r0, [r2, 0x3C]
strh r0, [r2, 0x22]
_080A63A2:
movs r1, 0x30
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080A63B0
adds r0, r2, 0
bl DestroyAnimSprite
_080A63B0:
pop {r0}
bx r0
thumb_func_end sub_80A636C
thumb_func_start sub_80A63B4
sub_80A63B4: @ 80A63B4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r0, 2
add r0, r8
lsls r0, 3
ldr r1, _080A6444 @ =gTasks
adds r6, r0, r1
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x8]
ldr r0, _080A6448 @ =0x00002771
bl AllocSpritePalette
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0xA]
movs r1, 0xA
ldrsh r0, [r6, r1]
lsls r0, 20
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r3, r0, 16
ldr r2, _080A644C @ =gSprites
movs r0, 0x8
ldrsh r1, [r6, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x5]
lsrs r0, 4
adds r0, 0x10
lsls r4, r0, 4
movs r5, 0x1
ldr r2, _080A6450 @ =gPlttBufferUnfaded
_080A640C:
adds r1, r3, r5
lsls r1, 1
adds r1, r2
adds r0, r4, r5
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strh r0, [r1]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0xF
bls _080A640C
adds r0, r3, 0
movs r1, 0x10
movs r2, 0xB
movs r3, 0
bl BlendPalette
movs r0, 0
strh r0, [r6, 0xE]
movs r5, 0
ldr r7, _080A644C @ =gSprites
movs r1, 0x1C
adds r1, r7
mov r9, r1
b _080A6488
.align 2, 0
_080A6444: .4byte gTasks
_080A6448: .4byte 0x00002771
_080A644C: .4byte gSprites
_080A6450: .4byte gPlttBufferUnfaded
_080A6454:
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r4, r2, r7
ldrb r1, [r6, 0xA]
lsls r1, 4
ldrb r3, [r4, 0x5]
movs r0, 0xF
ands r0, r3
orrs r0, r1
strb r0, [r4, 0x5]
movs r0, 0
strh r0, [r4, 0x2E]
lsls r0, r5, 7
strh r0, [r4, 0x30]
mov r0, r8
strh r0, [r4, 0x32]
add r2, r9
ldr r0, _080A64BC @ =sub_80A653C
str r0, [r2]
ldrh r0, [r6, 0xE]
adds r0, 0x1
strh r0, [r6, 0xE]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_080A6488:
cmp r5, 0x1
bhi _080A649A
movs r0, 0
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080A6454
_080A649A:
ldr r0, _080A64C0 @ =sub_80A64E0
str r0, [r6]
ldr r0, _080A64C4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A64C8
movs r1, 0x80
lsls r1, 2
movs r0, 0
bl ClearGpuRegBits
b _080A64D2
.align 2, 0
_080A64BC: .4byte sub_80A653C
_080A64C0: .4byte sub_80A64E0
_080A64C4: .4byte gBattleAnimAttacker
_080A64C8:
movs r1, 0x80
lsls r1, 3
movs r0, 0
bl ClearGpuRegBits
_080A64D2:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80A63B4
thumb_func_start sub_80A64E0
sub_80A64E0: @ 80A64E0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080A6514 @ =gTasks
adds r0, r1
movs r1, 0xE
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A6532
ldr r0, _080A6518 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A651C
movs r1, 0x80
lsls r1, 2
movs r0, 0
bl SetGpuRegBits
b _080A6526
.align 2, 0
_080A6514: .4byte gTasks
_080A6518: .4byte gBattleAnimAttacker
_080A651C:
movs r1, 0x80
lsls r1, 3
movs r0, 0
bl SetGpuRegBits
_080A6526:
ldr r0, _080A6538 @ =0x00002771
bl FreeSpritePaletteByTag
adds r0, r4, 0
bl DestroyAnimVisualTask
_080A6532:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A6538: .4byte 0x00002771
thumb_func_end sub_80A64E0
thumb_func_start sub_80A653C
sub_80A653C: @ 80A653C
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080A6558
movs r0, 0
strh r0, [r5, 0x34]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
_080A6558:
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x40
ble _080A6580
ldr r2, _080A657C @ =gTasks
movs r0, 0x32
ldrsh r1, [r5, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0xE]
subs r1, 0x1
strh r1, [r0, 0xE]
adds r0, r5, 0
bl obj_delete_but_dont_free_vram
b _080A65C2
.align 2, 0
_080A657C: .4byte gTasks
_080A6580:
ldr r4, _080A65C8 @ =gSineTable
movs r1, 0x2E
ldrsh r0, [r5, r1]
lsls r0, 1
adds r0, r4
movs r2, 0
ldrsh r0, [r0, r2]
movs r1, 0x6
bl __divsi3
strh r0, [r5, 0x36]
movs r1, 0x2E
ldrsh r0, [r5, r1]
lsls r0, 1
adds r0, r4
movs r2, 0
ldrsh r0, [r0, r2]
movs r1, 0xD
bl __divsi3
strh r0, [r5, 0x38]
ldrh r1, [r5, 0x30]
adds r1, r0
movs r0, 0xFF
ands r1, r0
strh r1, [r5, 0x30]
movs r1, 0x30
ldrsh r0, [r5, r1]
movs r2, 0x36
ldrsh r1, [r5, r2]
bl Sin
strh r0, [r5, 0x24]
_080A65C2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A65C8: .4byte gSineTable
thumb_func_end sub_80A653C
thumb_func_start sub_80A65CC
sub_80A65CC: @ 80A65CC
push {r4,lr}
adds r4, r0, 0
ldr r1, _080A65E0 @ =DestroyAnimSprite
bl StoreSpriteCallbackInData6
ldr r0, _080A65E4 @ =sub_8074F6C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A65E0: .4byte DestroyAnimSprite
_080A65E4: .4byte sub_8074F6C
thumb_func_end sub_80A65CC
thumb_func_start sub_80A65E8
sub_80A65E8: @ 80A65E8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r4, _080A6698 @ =gUnknown_83E3898
ldrh r0, [r4]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
beq _080A662C
lsls r0, r3, 20
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r3, r0, 16
movs r2, 0x1
ldr r5, _080A669C @ =gPlttBufferFaded
_080A6614:
adds r1, r3, r2
lsls r1, 1
adds r1, r5
lsls r0, r2, 1
adds r0, r4
ldrh r0, [r0]
strh r0, [r1]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0x5
bls _080A6614
_080A662C:
movs r4, 0x1
ldr r0, _080A6698 @ =gUnknown_83E3898
mov r8, r0
_080A6632:
lsls r0, r4, 1
adds r0, r4
lsls r5, r0, 2
mov r1, r8
adds r0, r5, r1
ldrh r0, [r0]
bl AllocSpritePalette
lsls r0, 24
lsrs r3, r0, 24
adds r4, 0x1
mov r12, r4
cmp r3, 0xFF
beq _080A667A
lsls r0, r3, 20
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r3, r0, 16
movs r2, 0x1
ldr r7, _080A669C @ =gPlttBufferFaded
ldr r6, _080A6698 @ =gUnknown_83E3898
adds r4, r5, 0
_080A6660:
adds r1, r3, r2
lsls r1, 1
adds r1, r7
lsls r0, r2, 1
adds r0, r4
adds r0, r6
ldrh r0, [r0]
strh r0, [r1]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0x5
bls _080A6660
_080A667A:
mov r1, r12
lsls r0, r1, 16
lsrs r4, r0, 16
cmp r4, 0x3
bls _080A6632
mov r0, r9
bl DestroyAnimVisualTask
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A6698: .4byte gUnknown_83E3898
_080A669C: .4byte gPlttBufferFaded
thumb_func_end sub_80A65E8
thumb_func_start sub_80A66A0
sub_80A66A0: @ 80A66A0
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0x1
ldr r6, _080A66D0 @ =gUnknown_83E3898
_080A66AA:
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
adds r0, r6
ldrh r0, [r0]
bl FreeSpritePaletteByTag
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x3
bls _080A66AA
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A66D0: .4byte gUnknown_83E3898
thumb_func_end sub_80A66A0
thumb_func_start sub_80A66D4
sub_80A66D4: @ 80A66D4
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
bl sub_8074FCC
ldr r4, _080A672C @ =gBattleAnimArgs
ldrb r1, [r4]
adds r0, r5, 0
bl StartSpriteAnim
ldr r2, _080A6730 @ =gUnknown_83E3898
movs r0, 0x2
ldrsh r1, [r4, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080A6710
lsls r2, r0, 4
ldrb r1, [r5, 0x5]
movs r0, 0xF
ands r0, r1
orrs r0, r2
strb r0, [r5, 0x5]
_080A6710:
ldrh r0, [r4, 0x2]
movs r1, 0
strh r0, [r5, 0x30]
strh r1, [r5, 0x32]
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x34]
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A6734
movs r6, 0x30
movs r3, 0x28
b _080A674E
.align 2, 0
_080A672C: .4byte gBattleAnimArgs
_080A6730: .4byte gUnknown_83E3898
_080A6734:
ldr r4, _080A6784 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r3, r0, 24
_080A674E:
ldrh r0, [r5, 0x20]
lsls r1, r0, 4
strh r1, [r5, 0x36]
ldrh r1, [r5, 0x22]
lsls r2, r1, 4
strh r2, [r5, 0x38]
subs r0, r6, r0
lsls r0, 16
asrs r0, 16
subs r1, r3, r1
lsls r1, 16
asrs r1, 16
adds r2, r5, 0
adds r2, 0x3A
adds r3, r5, 0
adds r3, 0x3C
movs r4, 0x28
str r4, [sp]
bl sub_80A678C
ldr r0, _080A6788 @ =sub_80A67E4
str r0, [r5, 0x1C]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A6784: .4byte gBattleAnimTarget
_080A6788: .4byte sub_80A67E4
thumb_func_end sub_80A66D4
thumb_func_start sub_80A678C
sub_80A678C: @ 80A678C
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r2, 0
mov r8, r3
ldr r2, [sp, 0x18]
lsls r1, 16
lsrs r6, r1, 16
lsls r2, 24
lsrs r1, r2, 24
lsls r0, 16
asrs r2, r0, 16
cmp r2, 0
bge _080A67AE
lsls r0, r1, 24
negs r0, r0
lsrs r1, r0, 24
_080A67AE:
lsls r5, r2, 8
lsls r1, 24
asrs r1, 24
adds r0, r5, 0
bl __divsi3
adds r4, r0, 0
cmp r4, 0
bne _080A67C2
movs r4, 0x1
_080A67C2:
adds r0, r5, 0
adds r1, r4, 0
bl __divsi3
strh r0, [r7]
lsls r0, r6, 16
asrs r0, 8
adds r1, r4, 0
bl __divsi3
mov r1, r8
strh r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80A678C
thumb_func_start sub_80A67E4
sub_80A67E4: @ 80A67E4
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
movs r5, 0
strh r0, [r4, 0x2E]
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r1, r0, r1
adds r0, r1, 0
cmp r1, 0
bge _080A6800
adds r0, 0xFF
_080A6800:
asrs r0, 8
lsls r0, 8
subs r0, r1, r0
ldrh r1, [r4, 0x3A]
ldrh r2, [r4, 0x36]
adds r1, r2
strh r1, [r4, 0x36]
ldrh r2, [r4, 0x3C]
ldrh r3, [r4, 0x38]
adds r2, r3
strh r2, [r4, 0x38]
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x20]
lsls r2, 16
asrs r2, 20
strh r2, [r4, 0x22]
lsls r0, 16
asrs r0, 16
movs r1, 0xF
bl Sin
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
ldrh r0, [r4, 0x20]
adds r0, 0x10
lsls r0, 16
movs r1, 0x88
lsls r1, 17
cmp r0, r1
bhi _080A684E
lsls r0, r2, 16
asrs r1, r0, 16
movs r0, 0x10
negs r0, r0
cmp r1, r0
blt _080A684E
cmp r1, 0x80
ble _080A6856
_080A684E:
adds r0, r4, 0
bl move_anim_8074EE0
b _080A68A6
_080A6856:
movs r0, 0x34
ldrsh r1, [r4, r0]
cmp r1, 0
beq _080A68A6
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, r1
ble _080A68A6
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080A687E
strh r5, [r4, 0x30]
_080A687E:
ldr r2, _080A68AC @ =gUnknown_83E3898
movs r3, 0x30
ldrsh r1, [r4, r3]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080A68A6
lsls r2, r0, 4
ldrb r1, [r4, 0x5]
movs r0, 0xF
ands r0, r1
orrs r0, r2
strb r0, [r4, 0x5]
_080A68A6:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A68AC: .4byte gUnknown_83E3898
thumb_func_end sub_80A67E4
thumb_func_start sub_80A68B0
sub_80A68B0: @ 80A68B0
push {r4-r7,lr}
adds r6, r0, 0
ldr r7, _080A6934 @ =gBattleAnimAttacker
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080A68CE
ldr r1, _080A6938 @ =gBattleAnimArgs
movs r2, 0x2
ldrsh r0, [r1, r2]
negs r0, r0
strh r0, [r1, 0x2]
_080A68CE:
ldrb r0, [r7]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, _080A6938 @ =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r4, 0x2]
adds r0, r1
movs r5, 0
strh r0, [r6, 0x20]
ldrb r0, [r7]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
adds r0, r2
strh r0, [r6, 0x22]
ldrb r1, [r4]
adds r0, r6, 0
bl StartSpriteAnim
strh r5, [r6, 0x32]
strh r5, [r6, 0x34]
ldrh r0, [r6, 0x20]
lsls r0, 4
strh r0, [r6, 0x36]
ldrh r0, [r6, 0x22]
lsls r0, 4
strh r0, [r6, 0x38]
movs r1, 0x2
ldrsh r0, [r4, r1]
lsls r0, 4
movs r1, 0x5
bl __divsi3
strh r0, [r6, 0x3A]
movs r2, 0x4
ldrsh r0, [r4, r2]
lsls r0, 7
movs r1, 0x5
bl __divsi3
strh r0, [r6, 0x3C]
ldr r0, _080A693C @ =sub_80A6940
str r0, [r6, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A6934: .4byte gBattleAnimAttacker
_080A6938: .4byte gBattleAnimArgs
_080A693C: .4byte sub_80A6940
thumb_func_end sub_80A68B0
thumb_func_start sub_80A6940
sub_80A6940: @ 80A6940
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x3A]
ldrh r1, [r4, 0x36]
adds r0, r1
strh r0, [r4, 0x36]
ldrh r1, [r4, 0x3C]
ldrh r2, [r4, 0x38]
adds r1, r2
strh r1, [r4, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x22]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x5
ble _080A699E
movs r2, 0x34
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080A699E
ldrh r0, [r4, 0x32]
adds r0, 0x10
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r1, 0x12
bl Cos
strh r0, [r4, 0x24]
movs r2, 0x32
ldrsh r0, [r4, r2]
movs r1, 0x12
bl Sin
strh r0, [r4, 0x26]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080A699E
movs r0, 0x1
strh r0, [r4, 0x34]
_080A699E:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x30
bne _080A69B2
adds r0, r4, 0
bl move_anim_8074EE0
_080A69B2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A6940
thumb_func_start sub_80A69B8
sub_80A69B8: @ 80A69B8
push {r4-r6,lr}
adds r5, r0, 0
ldr r0, _080A69D8 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x1
bne _080A69DC
ldrb r0, [r5, 0x3]
movs r1, 0x3F
negs r1, r1
ands r1, r0
movs r0, 0x10
orrs r1, r0
strb r1, [r5, 0x3]
movs r6, 0x10
b _080A69DE
.align 2, 0
_080A69D8: .4byte gBattleAnimArgs
_080A69DC:
ldr r6, _080A6A18 @ =0x0000fff0
_080A69DE:
ldr r4, _080A6A1C @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x8
strh r0, [r5, 0x22]
movs r0, 0x8
strh r0, [r5, 0x2E]
ldr r0, _080A6A20 @ =sub_8074C44
str r0, [r5, 0x1C]
ldr r1, _080A6A24 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A6A18: .4byte 0x0000fff0
_080A6A1C: .4byte gBattleAnimAttacker
_080A6A20: .4byte sub_8074C44
_080A6A24: .4byte DestroyAnimSprite
thumb_func_end sub_80A69B8
thumb_func_start sub_80A6A28
sub_80A6A28: @ 80A6A28
push {r4,r5,lr}
adds r4, r0, 0
bl sub_8074FCC
ldrh r0, [r4, 0x22]
adds r0, 0x8
strh r0, [r4, 0x22]
ldr r5, _080A6AA0 @ =gBattleAnimArgs
ldrb r1, [r5, 0x2]
adds r0, r4, 0
bl StartSpriteAnim
ldr r2, _080A6AA4 @ =gUnknown_83E3898
movs r0, 0x4
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080A6A68
lsls r2, r0, 4
ldrb r1, [r4, 0x5]
movs r0, 0xF
ands r0, r1
orrs r0, r2
strb r0, [r4, 0x5]
_080A6A68:
movs r1, 0
ldrsh r0, [r5, r1]
movs r2, 0x20
cmp r0, 0
bne _080A6A74
ldr r2, _080A6AA8 @ =0x0000ffe0
_080A6A74:
movs r0, 0x28
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x20]
strh r1, [r4, 0x30]
lsls r0, r2, 16
asrs r0, 16
adds r0, r1
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
subs r0, 0x28
strh r0, [r4, 0x36]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x38]
ldr r0, _080A6AAC @ =sub_80A6AB0
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A6AA0: .4byte gBattleAnimArgs
_080A6AA4: .4byte gUnknown_83E3898
_080A6AA8: .4byte 0x0000ffe0
_080A6AAC: .4byte sub_80A6AB0
thumb_func_end sub_80A6A28
thumb_func_start sub_80A6AB0
sub_80A6AB0: @ 80A6AB0
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080A6B00
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x8
bl Sin
lsls r0, 16
lsrs r1, r0, 16
ldrh r2, [r4, 0x24]
movs r3, 0x24
ldrsh r0, [r4, r3]
cmp r0, 0
bge _080A6ADC
lsls r0, r1, 16
negs r0, r0
lsrs r1, r0, 16
_080A6ADC:
lsls r0, r1, 16
asrs r0, 16
adds r0, r2
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x4
bl Sin
ldrh r3, [r4, 0x26]
adds r0, r3
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x38]
adds r0, 0x8
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
b _080A6B06
_080A6B00:
adds r0, r4, 0
bl DestroyAnimSprite
_080A6B06:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80A6AB0
thumb_func_start sub_80A6B0C
sub_80A6B0C: @ 80A6B0C
push {r4-r6,lr}
adds r6, r1, 0
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A6B2C
adds r0, r5, 0
movs r1, 0x5
bl sub_8076B2C
adds r0, 0x8
b _080A6B36
_080A6B2C:
adds r0, r5, 0
movs r1, 0x4
bl sub_8076B2C
subs r0, 0x8
_080A6B36:
strh r0, [r6, 0x20]
adds r0, r5, 0
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r4, r0, 0
adds r0, r5, 0
movs r1, 0
bl sub_8076B2C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080A6B58
adds r0, 0x3
_080A6B58:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x22]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80A6B0C
thumb_func_start sub_80A6B64
sub_80A6B64: @ 80A6B64
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080A6B78 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A6B80
ldr r0, _080A6B7C @ =gBattleAnimAttacker
b _080A6B82
.align 2, 0
_080A6B78: .4byte gBattleAnimArgs
_080A6B7C: .4byte gBattleAnimAttacker
_080A6B80:
ldr r0, _080A6BC0 @ =gBattleAnimTarget
_080A6B82:
ldrb r4, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80A6B0C
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
negs r1, r0
orrs r1, r0
lsrs r1, 31
ldr r0, _080A6BC4 @ =gBattleAnimArgs
ldrh r0, [r0, 0x2]
strh r0, [r5, 0x2E]
adds r0, r1, 0x2
strh r0, [r5, 0x30]
adds r0, r5, 0
bl StartSpriteAnim
ldr r1, _080A6BC8 @ =sub_80A6BD0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A6BCC @ =sub_8074F6C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A6BC0: .4byte gBattleAnimTarget
_080A6BC4: .4byte gBattleAnimArgs
_080A6BC8: .4byte sub_80A6BD0
_080A6BCC: .4byte sub_8074F6C
thumb_func_end sub_80A6B64
thumb_func_start sub_80A6BD0
sub_80A6BD0: @ 80A6BD0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bne _080A6BF8
ldr r1, _080A6C00 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl StartSpriteAnim
ldr r0, _080A6C04 @ =sub_8074F6C
str r0, [r4, 0x1C]
_080A6BF8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A6C00: .4byte DestroyAnimSprite
_080A6C04: .4byte sub_8074F6C
thumb_func_end sub_80A6BD0
thumb_func_start sub_80A6C08
sub_80A6C08: @ 80A6C08
push {r4,lr}
adds r4, r0, 0
ldr r0, _080A6C1C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A6C24
ldr r0, _080A6C20 @ =gBattleAnimAttacker
b _080A6C26
.align 2, 0
_080A6C1C: .4byte gBattleAnimArgs
_080A6C20: .4byte gBattleAnimAttacker
_080A6C24:
ldr r0, _080A6C44 @ =gBattleAnimTarget
_080A6C26:
ldrb r0, [r0]
adds r1, r4, 0
bl sub_80A6B0C
movs r0, 0
strh r0, [r4, 0x2E]
ldr r1, _080A6C48 @ =sub_80A6C50
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A6C4C @ =sub_8074F50
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A6C44: .4byte gBattleAnimTarget
_080A6C48: .4byte sub_80A6C50
_080A6C4C: .4byte sub_8074F50
thumb_func_end sub_80A6C08
thumb_func_start sub_80A6C50
sub_80A6C50: @ 80A6C50
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
ble _080A6C76
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
ldr r1, _080A6C7C @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A6C80 @ =sub_8074F50
str r0, [r4, 0x1C]
_080A6C76:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A6C7C: .4byte move_anim_8074EE0
_080A6C80: .4byte sub_8074F50
thumb_func_end sub_80A6C50
thumb_func_start sub_80A6C84
sub_80A6C84: @ 80A6C84
push {r4-r6,lr}
adds r4, r0, 0
ldr r0, _080A6C98 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A6CA0
ldr r0, _080A6C9C @ =gBattleAnimAttacker
b _080A6CA2
.align 2, 0
_080A6C98: .4byte gBattleAnimArgs
_080A6C9C: .4byte gBattleAnimAttacker
_080A6CA0:
ldr r0, _080A6CF4 @ =gBattleAnimTarget
_080A6CA2:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
bl sub_8076B2C
strh r0, [r4, 0x22]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bgt _080A6CCA
movs r0, 0xA
strh r0, [r4, 0x22]
_080A6CCA:
movs r0, 0x1
strh r0, [r4, 0x2E]
strh r6, [r4, 0x30]
adds r1, r4, 0
adds r1, 0x43
ldrb r0, [r1]
strh r0, [r4, 0x32]
ldrb r0, [r1]
adds r0, 0x4
strh r0, [r4, 0x34]
strh r6, [r4, 0x36]
ldr r1, _080A6CF8 @ =sub_80A6D00
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A6CFC @ =sub_8074F50
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A6CF4: .4byte gBattleAnimTarget
_080A6CF8: .4byte sub_80A6D00
_080A6CFC: .4byte sub_8074F50
thumb_func_end sub_80A6C84
thumb_func_start sub_80A6D00
sub_80A6D00: @ 80A6D00
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x36]
adds r0, 0x1
strh r0, [r1, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _080A6D16
ldr r0, _080A6D1C @ =sub_80A6D20
str r0, [r1, 0x1C]
_080A6D16:
pop {r0}
bx r0
.align 2, 0
_080A6D1C: .4byte sub_80A6D20
thumb_func_end sub_80A6D00
thumb_func_start sub_80A6D20
sub_80A6D20: @ 80A6D20
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x30]
adds r1, r0, 0x4
strh r1, [r2, 0x30]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFE
ble _080A6D52
ldrh r0, [r2, 0x2E]
subs r0, 0x1
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0
bne _080A6D4C
strh r0, [r2, 0x24]
ldr r0, _080A6D48 @ =sub_80A6C50
str r0, [r2, 0x1C]
b _080A6D88
.align 2, 0
_080A6D48: .4byte sub_80A6C50
_080A6D4C:
movs r0, 0xFF
ands r1, r0
strh r1, [r2, 0x30]
_080A6D52:
movs r1, 0x30
ldrsh r0, [r2, r1]
cmp r0, 0x4F
ble _080A6D62
ldrh r0, [r2, 0x34]
adds r1, r2, 0
adds r1, 0x43
strb r0, [r1]
_080A6D62:
movs r3, 0x30
ldrsh r0, [r2, r3]
cmp r0, 0x9F
ble _080A6D72
ldrh r0, [r2, 0x32]
adds r1, r2, 0
adds r1, 0x43
strb r0, [r1]
_080A6D72:
ldr r1, _080A6D8C @ =gSineTable
movs r3, 0x30
ldrsh r0, [r2, r3]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
asrs r1, r0, 1
adds r0, r1
strh r0, [r2, 0x24]
_080A6D88:
pop {r0}
bx r0
.align 2, 0
_080A6D8C: .4byte gSineTable
thumb_func_end sub_80A6D20
thumb_func_start sub_80A6D90
sub_80A6D90: @ 80A6D90
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080A6DA4 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A6DAC
ldr r0, _080A6DA8 @ =gBattleAnimAttacker
b _080A6DAE
.align 2, 0
_080A6DA4: .4byte gBattleAnimArgs
_080A6DA8: .4byte gBattleAnimAttacker
_080A6DAC:
ldr r0, _080A6DD0 @ =gBattleAnimTarget
_080A6DAE:
ldrb r4, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80A6B0C
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A6DD4
adds r0, r5, 0
movs r1, 0
bl StartSpriteAnim
movs r0, 0x2
b _080A6DDE
.align 2, 0
_080A6DD0: .4byte gBattleAnimTarget
_080A6DD4:
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
movs r0, 0x3
_080A6DDE:
strh r0, [r5, 0x2E]
ldr r0, _080A6DEC @ =sub_80A6DF0
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A6DEC: .4byte sub_80A6DF0
thumb_func_end sub_80A6D90
thumb_func_start sub_80A6DF0
sub_80A6DF0: @ 80A6DF0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
ble _080A6E1E
movs r0, 0
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x2E]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl StartSpriteAnim
ldr r1, _080A6E24 @ =sub_80A6E2C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080A6E28 @ =sub_8074F6C
str r0, [r4, 0x1C]
_080A6E1E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A6E24: .4byte sub_80A6E2C
_080A6E28: .4byte sub_8074F6C
thumb_func_end sub_80A6DF0
thumb_func_start sub_80A6E2C
sub_80A6E2C: @ 80A6E2C
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080A6E44
adds r0, r1, 0
bl DestroyAnimSprite
_080A6E44:
pop {r0}
bx r0
thumb_func_end sub_80A6E2C
.align 2, 0 @ Don't pad with nop.