	.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 InitSpritePosToAnimAttacker
	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 @ =DestroySpriteAndMatrix
	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 DestroySpriteAndMatrix
	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 InitSpritePosToAnimAttacker
	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 InitSpritePosToAnimAttacker
	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 InitAnimLinearTranslation
	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 AnimTranslateLinear
	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 InitSpritePosToAnimTarget
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 InitAnimFastLinearTranslationWithSpeed
	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 AnimFastTranslateLinear
	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 InitSpritePosToAnimAttacker
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 @ =WaitAnimForDuration
	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 WaitAnimForDuration
_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 @ =WaitAnimForDuration
	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 WaitAnimForDuration
_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 InitSpritePosToAnimTarget
	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 GetBattlerSpriteBGPriority
	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 GetBattlerSpriteBGPriority
	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 GetBattlerSpriteBGPriorityRank
	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 InitSpritePosToAnimAttacker
	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 InitAnimLinearTranslation
	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 AnimTranslateLinear
	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 InitSpritePosToAnimAttacker
	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 InitAnimLinearTranslation
	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 AnimTranslateLinear
	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 InitSpritePosToAnimAttacker
	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 SetAverageBattlerPositions
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 AnimMoveTwisterParticle
AnimMoveTwisterParticle: @ 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 SetAverageBattlerPositions
_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 AnimMoveTwisterParticle

	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 GetBattlerSpriteBGPriority
	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 GetBattlerSpriteBGPriority
	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 InitSpritePosToAnimTarget
	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 GetAnimBattlerSpriteId
	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 GetAnimBattlerSpriteId
	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 GetAnimBattlerSpriteId
	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 GetAnimBattlerSpriteId
	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 SetBattlerSpriteYOffsetFromYScale
	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 GetAnimBattlerSpriteId
	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 @ =InitAndRunAnimFastLinearTranslation
	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 InitAndRunAnimFastLinearTranslation
_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 InitSpritePosToAnimAttacker
	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 InitSpritePosToAnimTarget
	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 InitSpritePosToAnimTarget
	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 BattleAnimAdjustPanning
	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 BattleAnimAdjustPanning
	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 GetBattlerSpriteCoordAttr
	strh r0, [r5, 0x1C]
	ldrb r0, [r4]
	movs r1, 0
	bl GetBattlerSpriteCoordAttr
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 TranslateAnimHorizontalArc
	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 TranslateAnimHorizontalArc
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 InitAnimArcTranslation
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 InitAnimArcTranslation
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 InitAnimArcTranslation
	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 TranslateAnimHorizontalArc
	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 GetBattlerSpriteBGPriority
	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 GetAnimBattlerSpriteId
_080A411A:
	adds r0, r6, 0
	bl GetBattlerSpriteBGPriority
	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 DestroySpriteAndMatrix
_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 ArcTan2Neg
	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 TrySetSpriteRotScale
	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 DestroySpriteAndMatrix
_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 @ =RunStoredCallbackWhenAnimEnds
	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 RunStoredCallbackWhenAnimEnds
_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 SetAnimSpriteInitialXOffset
	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 @ =DestroySpriteAndMatrix
	adds r0, r4, 0
	bl StoreSpriteCallbackInData6
	ldr r0, _080A44DC @ =TranslateSpriteLinearAndFlicker
	str r0, [r4, 0x1C]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A44D4: .4byte gBattleAnimArgs
_080A44D8: .4byte DestroySpriteAndMatrix
_080A44DC: .4byte TranslateSpriteLinearAndFlicker
	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 @ =WaitAnimForDuration
	str r0, [r4, 0x1C]
_080A4728:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A4730: .4byte DestroyAnimSprite
_080A4734: .4byte WaitAnimForDuration
	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 GetBattlerSpriteCoord2
	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 GetBattlerSpriteCoord2
	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 GetBattlerSpriteBGPriority
	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 GetBattlerSpriteBGPriority
	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 @ =DestroyAnimSpriteAndDisableBlend
	str r0, [r4, 0x1C]
_080A4AC2:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_080A4AC8: .4byte DestroyAnimSpriteAndDisableBlend
	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 SetSpriteCoordsToAnimAttackerCoords
_080A4D20:
	movs r0, 0
	ldrsh r1, [r5, r0]
	adds r0, r4, 0
	bl SetAnimSpriteInitialXOffset
	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 @ =TranslateSpriteLinearFixedPoint
	str r0, [r4, 0x1C]
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_080A4D50: .4byte gBattleAnimArgs
_080A4D54: .4byte DestroyAnimSprite
_080A4D58: .4byte TranslateSpriteLinearFixedPoint
	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 SetAverageBattlerPositions
	movs r2, 0
	ldrsh r1, [r4, r2]
	adds r0, r5, 0
	bl SetAnimSpriteInitialXOffset
	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 SetAnimSpriteInitialXOffset
_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 @ =TranslateSpriteLinearFixedPoint
	str r0, [r5, 0x1C]
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_080A4E34: .4byte gBattleAnimArgs
_080A4E38: .4byte DestroyAnimSprite
_080A4E3C: .4byte TranslateSpriteLinearFixedPoint
	thumb_func_end sub_80A4D5C

	thumb_func_start sub_80A4E40
sub_80A4E40: @ 80A4E40
	push {r4,lr}
	adds r4, r0, 0
	bl SetSpriteCoordsToAnimAttackerCoords
	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 SetSpriteCoordsToAnimAttackerCoords
	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 DestroySpriteAndMatrix
_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 @ =WaitAnimForDuration
	str r1, [r0, 0x1C]
	ldr r1, _080A4FD0 @ =sub_80A4FD4
	bl StoreSpriteCallbackInData6
	pop {r0}
	bx r0
	.align 2, 0
_080A4FCC: .4byte WaitAnimForDuration
_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 @ =WaitAnimForDuration
	str r0, [r5, 0x1C]
	ldr r1, _080A5000 @ =sub_80A4FD4
	adds r0, r5, 0
	bl StoreSpriteCallbackInData6
	b _080A506A
	.align 2, 0
_080A4FFC: .4byte WaitAnimForDuration
_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 BattleAnimAdjustPanning
	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 @ =WaitAnimForDuration
	str r0, [r2, 0x1C]
	ldr r1, _080A50A8 @ =sub_80A50B8
	adds r0, r2, 0
	bl StoreSpriteCallbackInData6
	b _080A50B0
	.align 2, 0
_080A50A4: .4byte WaitAnimForDuration
_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 @ =WaitAnimForDuration
	str r0, [r5, 0x1C]
	ldr r1, _080A50DC @ =sub_80A5174
	adds r0, r5, 0
	bl StoreSpriteCallbackInData6
	b _080A5160
	.align 2, 0
_080A50D8: .4byte WaitAnimForDuration
_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 BattleAnimAdjustPanning
	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 SetBattlerSpriteYOffsetFromRotation
	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 SetBattlerSpriteYOffsetFromRotation
	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 SetBattlerSpriteYOffsetFromRotation
	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 SetBattlerSpriteYOffsetFromRotation
	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 SetBattlerSpriteYOffsetFromRotation
	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 SetBattlerSpriteYOffsetFromRotation
	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 @ =RunStoredCallbackWhenAnimEnds
	str r0, [r5, 0x1C]
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_080A599C: .4byte gBattleAnimTarget
_080A59A0: .4byte sub_80A5A8C
_080A59A4: .4byte RunStoredCallbackWhenAnimEnds
	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 @ =RunStoredCallbackWhenAnimEnds
	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 RunStoredCallbackWhenAnimEnds
	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 @ =TranslateSpriteLinear
	str r0, [r4, 0x1C]
_080A5A6E:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A5A74: .4byte sub_80A5A7C
_080A5A78: .4byte TranslateSpriteLinear
	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 BattleAnimAdjustPanning
	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 InitSpritePosToAnimTarget
	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 StorePointerInVars
	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 LoadPointerFromVars
	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 GetAnimBattlerSpriteId
	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 CloneBattlerSpriteWithBlend
	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 GetBattlerSpriteBGPriorityRank
	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 GetBattlerSpriteBGPriorityRank
	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 @ =RunStoredCallbackWhenAnimEnds
	str r0, [r4, 0x1C]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A65E0: .4byte DestroyAnimSprite
_080A65E4: .4byte RunStoredCallbackWhenAnimEnds
	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 SetSpriteCoordsToAnimAttackerCoords
	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 DestroySpriteAndMatrix
	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 DestroySpriteAndMatrix
_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 @ =WaitAnimForDuration
	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 WaitAnimForDuration
_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 SetSpriteCoordsToAnimAttackerCoords
	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 InitAnimLinearTranslation
	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 AnimTranslateLinear
	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 GetBattlerSpriteCoordAttr
	adds r0, 0x8
	b _080A6B36
_080A6B2C:
	adds r0, r5, 0
	movs r1, 0x4
	bl GetBattlerSpriteCoordAttr
	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 GetBattlerSpriteCoordAttr
	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 @ =RunStoredCallbackWhenAnimEnds
	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 RunStoredCallbackWhenAnimEnds
	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 @ =RunStoredCallbackWhenAnimEnds
	str r0, [r4, 0x1C]
_080A6BF8:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A6C00: .4byte DestroyAnimSprite
_080A6C04: .4byte RunStoredCallbackWhenAnimEnds
	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 @ =RunStoredCallbackWhenAffineAnimEnds
	str r0, [r4, 0x1C]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A6C44: .4byte gBattleAnimTarget
_080A6C48: .4byte sub_80A6C50
_080A6C4C: .4byte RunStoredCallbackWhenAffineAnimEnds
	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 @ =DestroySpriteAndMatrix
	adds r0, r4, 0
	bl StoreSpriteCallbackInData6
	ldr r0, _080A6C80 @ =RunStoredCallbackWhenAffineAnimEnds
	str r0, [r4, 0x1C]
_080A6C76:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A6C7C: .4byte DestroySpriteAndMatrix
_080A6C80: .4byte RunStoredCallbackWhenAffineAnimEnds
	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 GetBattlerSpriteCoordAttr
	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 @ =RunStoredCallbackWhenAffineAnimEnds
	str r0, [r4, 0x1C]
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_080A6CF4: .4byte gBattleAnimTarget
_080A6CF8: .4byte sub_80A6D00
_080A6CFC: .4byte RunStoredCallbackWhenAffineAnimEnds
	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 @ =RunStoredCallbackWhenAnimEnds
	str r0, [r4, 0x1C]
_080A6E1E:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080A6E24: .4byte sub_80A6E2C
_080A6E28: .4byte RunStoredCallbackWhenAnimEnds
	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.
