pokefirered/asm/battle_anim_effects_3.s

12858 lines
214 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80DE2C0
sub_80DE2C0: @ 80DE2C0
push {lr}
adds r2, r0, 0
ldr r1, _080DE2E4 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r3, [r2, 0x20]
adds r0, r3
strh r0, [r2, 0x20]
ldrh r0, [r1, 0x2]
ldrh r3, [r2, 0x22]
adds r0, r3
strh r0, [r2, 0x22]
movs r3, 0x6
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080DE2E8
ldrh r0, [r1, 0x4]
b _080DE2EC
.align 2, 0
_080DE2E4: .4byte gBattleAnimArgs
_080DE2E8:
ldrh r0, [r1, 0x4]
negs r0, r0
_080DE2EC:
strh r0, [r2, 0x2E]
ldrh r0, [r1, 0x8]
strh r0, [r2, 0x30]
ldr r0, _080DE2FC @ =sub_80DE300
str r0, [r2, 0x1C]
pop {r0}
bx r0
.align 2, 0
_080DE2FC: .4byte sub_80DE300
thumb_func_end sub_80DE2C0
thumb_func_start sub_80DE300
sub_80DE300: @ 80DE300
push {lr}
adds r3, r0, 0
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0
ble _080DE340
ldrh r1, [r3, 0x32]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r3, 0x24]
ldrh r0, [r3, 0x2E]
adds r1, r0
strh r1, [r3, 0x32]
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
b _080DE346
_080DE340:
adds r0, r3, 0
bl DestroyAnimSprite
_080DE346:
pop {r0}
bx r0
thumb_func_end sub_80DE300
thumb_func_start sub_80DE34C
sub_80DE34C: @ 80DE34C
push {r4-r6,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldr r6, _080DE398 @ =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 8
movs r0, 0x80
lsls r0, 12
adds r4, r0
asrs r4, 16
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r1, r0, 0
lsls r1, 24
lsrs r1, 8
movs r0, 0x80
lsls r0, 12
adds r1, r0
asrs r1, 16
adds r0, r4, 0
movs r2, 0
bl sub_804A76C
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DE398: .4byte gBattleAnimTarget
thumb_func_end sub_80DE34C
thumb_func_start sub_80DE39C
sub_80DE39C: @ 80DE39C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x5A
strh r0, [r4, 0x2E]
ldr r0, _080DE3D8 @ =sub_8074C44
str r0, [r4, 0x1C]
movs r0, 0x7
strh r0, [r4, 0x30]
ldr r1, _080DE3DC @ =sub_80DE3E0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r0, [r4, 0x30]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE3D8: .4byte sub_8074C44
_080DE3DC: .4byte sub_80DE3E0
thumb_func_end sub_80DE39C
thumb_func_start sub_80DE3E0
sub_80DE3E0: @ 80DE3E0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x30]
subs r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bge _080DE414
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080DE41C @ =sub_80DE420
str r0, [r4, 0x1C]
_080DE414:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE41C: .4byte sub_80DE420
thumb_func_end sub_80DE3E0
thumb_func_start sub_80DE420
sub_80DE420: @ 80DE420
push {r4,lr}
adds r4, r0, 0
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DE420
thumb_func_start sub_80DE440
sub_80DE440: @ 80DE440
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
ldr r4, _080DE4CC @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
adds r0, r5, 0
movs r1, 0x1
bl sub_8075114
ldrh r0, [r5, 0x20]
subs r0, r7
lsls r0, 16
asrs r0, 16
ldrh r1, [r5, 0x22]
subs r1, r6
lsls r1, 16
asrs r1, 16
bl sub_8075B30
lsls r0, 16
movs r1, 0xC0
lsls r1, 23
adds r0, r1
lsrs r4, r0, 16
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080DE49E
movs r1, 0x80
lsls r1, 7
adds r0, r4, r1
lsls r0, 16
lsrs r4, r0, 16
_080DE49E:
movs r3, 0x80
lsls r3, 1
str r4, [sp]
adds r0, r5, 0
movs r1, 0
adds r2, r3, 0
bl sub_8075A1C
ldr r0, _080DE4D0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
strh r7, [r5, 0x32]
strh r6, [r5, 0x36]
ldr r0, _080DE4D4 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080DE4D8 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DE4CC: .4byte gBattleAnimTarget
_080DE4D0: .4byte gBattleAnimArgs
_080DE4D4: .4byte StartAnimLinearTranslation
_080DE4D8: .4byte DestroyAnimSprite
thumb_func_end sub_80DE440
thumb_func_start sub_80DE4DC
sub_80DE4DC: @ 80DE4DC
push {r4,lr}
adds r4, r0, 0
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x4
strh r0, [r4, 0x2E]
ldr r0, _080DE504 @ =sub_80DE508
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE504: .4byte sub_80DE508
thumb_func_end sub_80DE4DC
thumb_func_start sub_80DE508
sub_80DE508: @ 80DE508
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080DE52E
ldrh r0, [r4, 0x2E]
subs r0, 0x1
b _080DE532
_080DE52E:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
_080DE532:
strh r0, [r4, 0x2E]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0xF
beq _080DE540
cmp r0, 0x4
bne _080DE548
_080DE540:
ldrh r0, [r4, 0x30]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x30]
_080DE548:
ldrh r0, [r4, 0x32]
adds r1, r0, 0x1
strh r1, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x46
ble _080DE58C
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
movs r0, 0
strh r0, [r4, 0x32]
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r0, _080DE594 @ =sub_80DE598
str r0, [r4, 0x1C]
_080DE58C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE594: .4byte sub_80DE598
thumb_func_end sub_80DE508
thumb_func_start sub_80DE598
sub_80DE598: @ 80DE598
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x32]
adds r1, r0, 0x1
strh r1, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
ble _080DE5D4
adds r2, r3, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
adds r0, r3, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080DE5D4
ldr r0, _080DE5D8 @ =sub_80DE5DC
str r0, [r3, 0x1C]
_080DE5D4:
pop {r0}
bx r0
.align 2, 0
_080DE5D8: .4byte sub_80DE5DC
thumb_func_end sub_80DE598
thumb_func_start sub_80DE5DC
sub_80DE5DC: @ 80DE5DC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0x6
bhi _080DE634
lsls r0, 2
ldr r1, _080DE5F4 @ =_080DE5F8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080DE5F4: .4byte _080DE5F8
.align 2, 0
_080DE5F8:
.4byte _080DE614
.4byte _080DE614
.4byte _080DE61E
.4byte _080DE61E
.4byte _080DE62C
.4byte _080DE62C
.4byte _080DE634
_080DE614:
movs r1, 0
movs r0, 0x1
strh r0, [r4, 0x24]
strh r1, [r4, 0x26]
b _080DE63C
_080DE61E:
ldr r0, _080DE628 @ =0x0000ffff
strh r0, [r4, 0x24]
movs r0, 0
b _080DE63A
.align 2, 0
_080DE628: .4byte 0x0000ffff
_080DE62C:
movs r0, 0
strh r0, [r4, 0x24]
movs r0, 0x1
b _080DE63A
_080DE634:
movs r0, 0
strh r0, [r4, 0x24]
ldr r0, _080DE680 @ =0x0000ffff
_080DE63A:
strh r0, [r4, 0x26]
_080DE63C:
ldrh r0, [r4, 0x34]
adds r0, 0x1
movs r2, 0
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _080DE64E
strh r2, [r4, 0x34]
_080DE64E:
ldrh r0, [r4, 0x36]
adds r1, r0, 0x1
strh r1, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080DE678
movs r0, 0x10
strh r0, [r4, 0x2E]
strh r2, [r4, 0x30]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r4, 0x2E]
movs r0, 0x52
bl SetGpuReg
ldr r0, _080DE684 @ =sub_80DE688
str r0, [r4, 0x1C]
_080DE678:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE680: .4byte 0x0000ffff
_080DE684: .4byte sub_80DE688
thumb_func_end sub_80DE5DC
thumb_func_start sub_80DE688
sub_80DE688: @ 80DE688
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x30]
adds r1, r0, 0x1
strh r1, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080DE6B8
ldrh r0, [r4, 0x2E]
subs r0, 0x1
movs r1, 0
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
_080DE6B8:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DE6CC
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_080DE6CC:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bge _080DE6EA
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
_080DE6EA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DE688
thumb_func_start sub_80DE6F0
sub_80DE6F0: @ 80DE6F0
lsls r0, 24
lsrs r0, 24
ldr r2, _080DE70C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _080DE710 @ =sub_80DE718
str r0, [r1]
ldr r1, _080DE714 @ =gUnknown_2037EE2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
bx lr
.align 2, 0
_080DE70C: .4byte gTasks
_080DE710: .4byte sub_80DE718
_080DE714: .4byte gUnknown_2037EE2
thumb_func_end sub_80DE6F0
thumb_func_start sub_80DE718
sub_80DE718: @ 80DE718
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r4, r0, 24
bl sub_8075454
lsls r0, 24
lsrs r6, r0, 24
ldr r7, _080DE7A4 @ =gTasks
lsls r5, r4, 2
adds r1, r5, r4
lsls r1, 3
adds r1, r7
ldrh r0, [r1, 0x12]
adds r0, 0x1
strh r0, [r1, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080DE788
ldr r0, _080DE7A8 @ =gPlttBufferFaded
lsls r2, r6, 4
adds r1, r2, 0
adds r1, 0xB
lsls r1, 1
adds r1, r0
ldrh r3, [r1]
mov r8, r3
movs r3, 0xA
mov r9, r7
adds r7, r5, 0
mov r12, r0
adds r5, r2, 0
lsls r0, r6, 5
add r0, r12
adds r2, r0, 0
adds r2, 0x14
_080DE766:
ldrh r0, [r2]
strh r0, [r1]
subs r2, 0x2
subs r1, 0x2
subs r3, 0x1
cmp r3, 0
bgt _080DE766
adds r0, r5, 0x1
lsls r0, 1
add r0, r12
movs r1, 0
mov r2, r8
strh r2, [r0]
adds r0, r7, r4
lsls r0, 3
add r0, r9
strh r1, [r0, 0x12]
_080DE788:
ldr r0, _080DE7AC @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080DE7B0 @ =0x0000ffff
cmp r1, r0
bne _080DE798
adds r0, r4, 0
bl DestroyTask
_080DE798:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DE7A4: .4byte gTasks
_080DE7A8: .4byte gPlttBufferFaded
_080DE7AC: .4byte gBattleAnimArgs
_080DE7B0: .4byte 0x0000ffff
thumb_func_end sub_80DE718
thumb_func_start sub_80DE7B4
sub_80DE7B4: @ 80DE7B4
lsls r0, 24
lsrs r0, 24
ldr r2, _080DE7D0 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _080DE7D4 @ =sub_80DE7DC
str r0, [r1]
ldr r1, _080DE7D8 @ =gUnknown_2037EE2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
bx lr
.align 2, 0
_080DE7D0: .4byte gTasks
_080DE7D4: .4byte sub_80DE7DC
_080DE7D8: .4byte gUnknown_2037EE2
thumb_func_end sub_80DE7B4
thumb_func_start sub_80DE7DC
sub_80DE7DC: @ 80DE7DC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
bl sub_8075454
lsls r0, 24
lsrs r7, r0, 24
ldr r5, _080DE89C @ =gTasks
mov r0, r8
lsls r3, r0, 2
adds r1, r3, r0
lsls r1, 3
adds r1, r5
ldrh r0, [r1, 0x12]
adds r0, 0x1
strh r0, [r1, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080DE87E
ldr r0, _080DE8A0 @ =gPlttBufferFaded
lsls r2, r7, 4
adds r1, r2, 0
adds r1, 0xB
lsls r1, 1
adds r1, r0
ldrh r6, [r1]
movs r4, 0xA
mov r10, r3
mov r9, r0
adds r5, r2, 0
ldr r2, _080DE8A4 @ =gPlttBufferUnfaded
mov r12, r2
lsls r0, r7, 5
add r0, r9
adds r3, r0, 0
adds r3, 0x14
_080DE830:
ldrh r0, [r3]
strh r0, [r1]
subs r3, 0x2
subs r1, 0x2
subs r4, 0x1
cmp r4, 0
bgt _080DE830
adds r0, r5, 0x1
lsls r0, 1
add r0, r9
strh r6, [r0]
adds r1, r5, 0
adds r1, 0xB
lsls r1, 1
add r1, r12
ldrh r6, [r1]
movs r4, 0xA
lsls r0, r7, 5
add r0, r12
adds r2, r0, 0
adds r2, 0x14
_080DE85A:
ldrh r0, [r2]
strh r0, [r1]
subs r2, 0x2
subs r1, 0x2
subs r4, 0x1
cmp r4, 0
bgt _080DE85A
adds r0, r5, 0x1
lsls r0, 1
add r0, r12
movs r1, 0
strh r6, [r0]
mov r0, r10
add r0, r8
lsls r0, 3
ldr r2, _080DE89C @ =gTasks
adds r0, r2
strh r1, [r0, 0x12]
_080DE87E:
ldr r0, _080DE8A8 @ =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, _080DE8AC @ =0x0000ffff
cmp r1, r0
bne _080DE88E
mov r0, r8
bl DestroyTask
_080DE88E:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DE89C: .4byte gTasks
_080DE8A0: .4byte gPlttBufferFaded
_080DE8A4: .4byte gPlttBufferUnfaded
_080DE8A8: .4byte gBattleAnimArgs
_080DE8AC: .4byte 0x0000ffff
thumb_func_end sub_80DE7DC
thumb_func_start sub_80DE8B0
sub_80DE8B0: @ 80DE8B0
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080DE914 @ =gBattleAnimTarget
ldrb r0, [r0]
mov r5, sp
adds r5, 0x2
movs r1, 0
mov r2, sp
adds r3, r5, 0
bl sub_8076D9C
ldr r0, _080DE918 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080DE8E4
ldr r1, _080DE91C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080DE8E4:
ldr r1, _080DE91C @ =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
mov r2, sp
ldrh r0, [r1, 0x4]
ldrh r2, [r2]
adds r0, r2
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x6]
ldrh r5, [r5]
adds r0, r5
strh r0, [r4, 0x36]
ldr r0, _080DE920 @ =0x0000ffce
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_8075068
ldr r0, _080DE924 @ =sub_80DE928
str r0, [r4, 0x1C]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DE914: .4byte gBattleAnimTarget
_080DE918: .4byte gBattleAnimAttacker
_080DE91C: .4byte gBattleAnimArgs
_080DE920: .4byte 0x0000ffce
_080DE924: .4byte sub_80DE928
thumb_func_end sub_80DE8B0
thumb_func_start sub_80DE928
sub_80DE928: @ 80DE928
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080DE94A
movs r1, 0
movs r0, 0x1E
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
ldr r0, _080DE950 @ =sub_8074C44
str r0, [r4, 0x1C]
ldr r1, _080DE954 @ =sub_80DE958
adds r0, r4, 0
bl StoreSpriteCallbackInData6
_080DE94A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE950: .4byte sub_8074C44
_080DE954: .4byte sub_80DE958
thumb_func_end sub_80DE928
thumb_func_start sub_80DE958
sub_80DE958: @ 80DE958
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080DE984
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
_080DE984:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
bne _080DE998
adds r0, r3, 0
bl DestroyAnimSprite
_080DE998:
pop {r0}
bx r0
thumb_func_end sub_80DE958
thumb_func_start sub_80DE99C
sub_80DE99C: @ 80DE99C
push {r4,r5,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r5, _080DE9CC @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl sub_8074FF8
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r0, _080DE9D0 @ =sub_8074F6C
str r0, [r4, 0x1C]
ldr r1, _080DE9D4 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DE9CC: .4byte gBattleAnimArgs
_080DE9D0: .4byte sub_8074F6C
_080DE9D4: .4byte DestroyAnimSprite
thumb_func_end sub_80DE99C
thumb_func_start sub_80DE9D8
sub_80DE9D8: @ 80DE9D8
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DEA38
adds r0, r4, 0
bl sub_8074FCC
ldr r5, _080DEA14 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r5, r2]
adds r0, r4, 0
bl sub_8074FF8
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080DEA2C
ldr r0, _080DEA18 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080DEA1C
ldrh r0, [r5, 0x4]
b _080DEA32
.align 2, 0
_080DEA14: .4byte gBattleAnimArgs
_080DEA18: .4byte gBattleAnimAttacker
_080DEA1C:
movs r1, 0x4
ldrsh r0, [r5, r1]
negs r0, r0
strh r0, [r4, 0x30]
movs r2, 0x6
ldrsh r0, [r5, r2]
negs r0, r0
b _080DEA36
_080DEA2C:
movs r1, 0x4
ldrsh r0, [r5, r1]
negs r0, r0
_080DEA32:
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x6]
_080DEA36:
strh r0, [r4, 0x32]
_080DEA38:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
movs r2, 0x2E
ldrsh r1, [r4, r2]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
movs r3, 0xFF
ldrh r1, [r4, 0x30]
ldrh r2, [r4, 0x34]
adds r1, r2
strh r1, [r4, 0x34]
ldrh r1, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r1, r2
strh r1, [r4, 0x36]
movs r2, 0x34
ldrsh r1, [r4, r2]
lsrs r2, r1, 31
adds r1, r2
asrs r1, 1
strh r1, [r4, 0x24]
ands r0, r3
movs r1, 0x5
bl Sin
movs r2, 0x36
ldrsh r1, [r4, r2]
lsrs r2, r1, 31
adds r1, r2
asrs r1, 1
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF0
bls _080DEA90
adds r0, r4, 0
bl DestroyAnimSprite
_080DEA90:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DE9D8
thumb_func_start sub_80DEA98
sub_80DEA98: @ 80DEA98
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DEAAE
adds r0, r2, 0
bl DestroyAnimSprite
_080DEAAE:
pop {r0}
bx r0
thumb_func_end sub_80DEA98
thumb_func_start sub_80DEAB4
sub_80DEAB4: @ 80DEAB4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080DEAD0 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080DEAD8
ldr r1, _080DEAD4 @ =gBattleAnimArgs
movs r0, 0
b _080DEADC
.align 2, 0
_080DEAD0: .4byte gBattleAnimTarget
_080DEAD4: .4byte gBattleAnimArgs
_080DEAD8:
ldr r1, _080DEAEC @ =gBattleAnimArgs
movs r0, 0x1
_080DEADC:
strh r0, [r1, 0xE]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DEAEC: .4byte gBattleAnimArgs
thumb_func_end sub_80DEAB4
thumb_func_start sub_80DEAF0
sub_80DEAF0: @ 80DEAF0
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080DEB04 @ =gAnimMoveDmg
ldr r0, [r0]
cmp r0, 0
ble _080DEB0C
ldr r1, _080DEB08 @ =gBattleAnimArgs
movs r0, 0
b _080DEB10
.align 2, 0
_080DEB04: .4byte gAnimMoveDmg
_080DEB08: .4byte gBattleAnimArgs
_080DEB0C:
ldr r1, _080DEB1C @ =gBattleAnimArgs
movs r0, 0x1
_080DEB10:
strh r0, [r1, 0xE]
adds r0, r2, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080DEB1C: .4byte gBattleAnimArgs
thumb_func_end sub_80DEAF0
thumb_func_start sub_80DEB20
sub_80DEB20: @ 80DEB20
push {r4,r5,lr}
adds r5, r0, 0
ldr r1, _080DEB7C @ =0x00001f3f
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r0, _080DEB80 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r4, _080DEB84 @ =gUnknown_2022986
strh r1, [r4]
movs r0, 0x40
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x44
bl SetGpuReg
adds r0, r5, 0
movs r1, 0
bl sub_8075114
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x8
orrs r0, r1
strb r0, [r5, 0x1]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080DEB88 @ =sub_80DEB8C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DEB7C: .4byte 0x00001f3f
_080DEB80: .4byte gUnknown_2022984
_080DEB84: .4byte gUnknown_2022986
_080DEB88: .4byte sub_80DEB8C
thumb_func_end sub_80DEB20
thumb_func_start sub_80DEB8C
sub_80DEB8C: @ 80DEB8C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x5
bhi _080DEC4C
lsls r0, 2
ldr r1, _080DEBA4 @ =_080DEBA8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080DEBA4: .4byte _080DEBA8
.align 2, 0
_080DEBA8:
.4byte _080DEBC0
.4byte _080DEBDE
.4byte _080DEBFE
.4byte _080DEBDE
.4byte _080DEC1E
.4byte _080DEC2E
_080DEBC0:
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
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080DEC4C
b _080DEC26
_080DEBDE:
ldrh r0, [r4, 0x30]
adds r0, 0x75
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x15
bne _080DEC4C
movs r0, 0
strh r0, [r4, 0x32]
b _080DEC26
_080DEBFE:
ldrh r0, [r4, 0x30]
subs r0, 0x75
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x29
bne _080DEC4C
movs r0, 0
strh r0, [r4, 0x32]
b _080DEC26
_080DEC1E:
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
_080DEC26:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080DEC4C
_080DEC2E:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080DEC4C
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080DEC54 @ =sub_80DEC58
str r0, [r4, 0x1C]
_080DEC4C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DEC54: .4byte sub_80DEC58
thumb_func_end sub_80DEB8C
thumb_func_start sub_80DEC58
sub_80DEC58: @ 80DEC58
push {r4,lr}
adds r4, r0, 0
ldr r1, _080DEC8C @ =0x00003f3f
movs r0, 0x4A
bl SetGpuReg
movs r0, 0
bl GetGpuReg
adds r1, r0, 0
movs r2, 0x80
lsls r2, 8
adds r0, r2, 0
eors r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DEC8C: .4byte 0x00003f3f
thumb_func_end sub_80DEC58
thumb_func_start sub_80DEC90
sub_80DEC90: @ 80DEC90
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080DED04 @ =gBattleAnimArgs
movs r1, 0x6
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DECBC
ldr r4, _080DED08 @ =gBattleAnimAttacker
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]
_080DECBC:
ldrh r0, [r6]
ldrh r2, [r5, 0x20]
adds r0, r2
movs r3, 0
strh r0, [r5, 0x20]
ldrh r0, [r6, 0x2]
ldrh r4, [r5, 0x22]
adds r0, r4
strh r0, [r5, 0x22]
ldrh r2, [r5, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r4, _080DED0C @ =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, _080DED10 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
movs r1, 0x4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DED18
ldrb r1, [r5, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r5, 0x3]
ldr r0, _080DED14 @ =0x0000fff4
strh r0, [r5, 0x24]
movs r0, 0x2
b _080DED1E
.align 2, 0
_080DED04: .4byte gBattleAnimArgs
_080DED08: .4byte gBattleAnimAttacker
_080DED0C: .4byte 0x000003ff
_080DED10: .4byte 0xfffffc00
_080DED14: .4byte 0x0000fff4
_080DED18:
movs r0, 0xC
strh r0, [r5, 0x24]
ldr r0, _080DED3C @ =0x0000fffe
_080DED1E:
strh r0, [r5, 0x30]
ldr r1, _080DED40 @ =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x2E]
movs r2, 0x34
ldrsh r0, [r5, r2]
cmp r0, 0xFF
beq _080DED32
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x34]
_080DED32:
ldr r0, _080DED44 @ =sub_80DED48
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DED3C: .4byte 0x0000fffe
_080DED40: .4byte gBattleAnimArgs
_080DED44: .4byte sub_80DED48
thumb_func_end sub_80DEC90
thumb_func_start sub_80DED48
sub_80DED48: @ 80DED48
push {r4,lr}
adds r4, r0, 0
ldrh r2, [r4, 0x32]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DED86
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
bne _080DEDA6
adds r0, r2, 0x1
strh r0, [r4, 0x32]
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DEDA6
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xD7
bl PlaySE1WithPanning
b _080DEDA6
_080DED86:
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x30]
subs r0, r1
strh r0, [r4, 0x24]
movs r1, 0x24
ldrsh r0, [r4, r1]
cmp r0, 0
bge _080DED98
negs r0, r0
_080DED98:
cmp r0, 0xC
bne _080DEDA6
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
subs r0, r2, 0x1
strh r0, [r4, 0x32]
_080DEDA6:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DEDB4
adds r0, r4, 0
bl DestroyAnimSprite
_080DEDB4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DED48
thumb_func_start sub_80DEDBC
sub_80DEDBC: @ 80DEDBC
push {lr}
ldrb r2, [r0, 0x1]
movs r1, 0xD
negs r1, r1
ands r1, r2
movs r2, 0x8
orrs r1, r2
strb r1, [r0, 0x1]
movs r1, 0xFF
strh r1, [r0, 0x34]
bl sub_80DEC90
pop {r0}
bx r0
thumb_func_end sub_80DEDBC
thumb_func_start sub_80DEDD8
sub_80DEDD8: @ 80DEDD8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080DEE2C
ldr r1, _080DEE14 @ =0x00001f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080DEE18 @ =gUnknown_2022988
ldr r2, _080DEE1C @ =0x000098f0
adds r0, r2, 0
strh r0, [r1]
ldr r1, _080DEE20 @ =gUnknown_202298A
movs r0, 0xA0
strh r0, [r1]
ldr r0, _080DEE24 @ =gUnknown_2022984
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
ldr r0, _080DEE28 @ =gUnknown_2022986
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
b _080DEE5C
.align 2, 0
_080DEE14: .4byte 0x00001f3f
_080DEE18: .4byte gUnknown_2022988
_080DEE1C: .4byte 0x000098f0
_080DEE20: .4byte gUnknown_202298A
_080DEE24: .4byte gUnknown_2022984
_080DEE28: .4byte gUnknown_2022986
_080DEE2C:
ldr r1, _080DEE68 @ =0x00001f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080DEE6C @ =gUnknown_2022988
movs r0, 0xF0
strh r0, [r1]
ldr r4, _080DEE70 @ =gUnknown_202298A
ldr r1, _080DEE74 @ =0x000078a0
adds r0, r1, 0
strh r0, [r4]
movs r0, 0x42
movs r1, 0xF0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x46
bl SetGpuReg
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
_080DEE5C:
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DEE68: .4byte 0x00001f3f
_080DEE6C: .4byte gUnknown_2022988
_080DEE70: .4byte gUnknown_202298A
_080DEE74: .4byte 0x000078a0
thumb_func_end sub_80DEDD8
thumb_func_start sub_80DEE78
sub_80DEE78: @ 80DEE78
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080DEEB0 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r0, _080DEEB4 @ =gUnknown_2022988
movs r1, 0
strh r1, [r0]
ldr r0, _080DEEB8 @ =gUnknown_202298A
strh r1, [r0]
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080DEEA4
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl ClearGpuRegBits
_080DEEA4:
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DEEB0: .4byte 0x00003f3f
_080DEEB4: .4byte gUnknown_2022988
_080DEEB8: .4byte gUnknown_202298A
thumb_func_end sub_80DEE78
thumb_func_start sub_80DEEBC
sub_80DEEBC: @ 80DEEBC
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080DEED0 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DEED8
ldr r4, _080DEED4 @ =gBattleAnimAttacker
b _080DEEDA
.align 2, 0
_080DEED0: .4byte gBattleAnimArgs
_080DEED4: .4byte gBattleAnimAttacker
_080DEED8:
ldr r4, _080DEF2C @ =gBattleAnimTarget
_080DEEDA:
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
adds r0, r6
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r2, _080DEF30 @ =gBattleAnimArgs
ldrh r0, [r2, 0x4]
strh r0, [r5, 0x26]
movs r3, 0
lsls r0, 16
asrs r0, 16
ldrh r4, [r2, 0x6]
movs r6, 0x6
ldrsh r1, [r2, r6]
cmp r0, r1
ble _080DEF12
movs r3, 0x1
_080DEF12:
strh r3, [r5, 0x2E]
movs r0, 0
strh r0, [r5, 0x30]
ldrh r0, [r2, 0x8]
strh r0, [r5, 0x32]
ldrh r0, [r2, 0xA]
strh r0, [r5, 0x34]
strh r4, [r5, 0x36]
ldr r0, _080DEF34 @ =sub_80DEF38
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DEF2C: .4byte gBattleAnimTarget
_080DEF30: .4byte gBattleAnimArgs
_080DEF34: .4byte sub_80DEF38
thumb_func_end sub_80DEEBC
thumb_func_start sub_80DEF38
sub_80DEF38: @ 80DEF38
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x32]
ldrh r1, [r2, 0x30]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r2, 0x30]
ldr r1, _080DEF80 @ =gSineTable
movs r3, 0x30
ldrsh r0, [r2, r3]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x34]
ldrh r3, [r2, 0x26]
adds r1, r0, r3
strh r1, [r2, 0x26]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
beq _080DEF84
lsls r0, r1, 16
asrs r0, 16
movs r3, 0x36
ldrsh r1, [r2, r3]
cmp r0, r1
bge _080DEF96
adds r0, r2, 0
bl DestroyAnimSprite
b _080DEF96
.align 2, 0
_080DEF80: .4byte gSineTable
_080DEF84:
lsls r0, r1, 16
asrs r0, 16
movs r3, 0x36
ldrsh r1, [r2, r3]
cmp r0, r1
ble _080DEF96
adds r0, r2, 0
bl DestroyAnimSprite
_080DEF96:
pop {r0}
bx r0
thumb_func_end sub_80DEF38
thumb_func_start sub_80DEF9C
sub_80DEF9C: @ 80DEF9C
push {r4-r7,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080DEFBC @ =gTasks
adds r5, r1, r0
ldr r0, _080DEFC0 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DEFC8
ldr r4, _080DEFC4 @ =gBattleAnimAttacker
b _080DEFCA
.align 2, 0
_080DEFBC: .4byte gTasks
_080DEFC0: .4byte gBattleAnimArgs
_080DEFC4: .4byte gBattleAnimAttacker
_080DEFC8:
ldr r4, _080DF010 @ =gBattleAnimTarget
_080DEFCA:
ldrb r0, [r4]
bl sub_807492C
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
bl sub_80768B0
lsls r0, 24
lsrs r7, r0, 24
adds r0, r6, 0
adds r1, r0, 0
adds r1, 0x24
movs r2, 0
strh r1, [r5, 0x8]
strh r1, [r5, 0xA]
subs r0, 0x21
strh r0, [r5, 0xC]
cmp r0, 0
bge _080DEFF4
strh r2, [r5, 0xC]
_080DEFF4:
ldrh r0, [r5, 0x8]
strh r0, [r5, 0xE]
movs r0, 0x8
strh r0, [r5, 0x10]
ldr r1, _080DF014 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x12]
strh r2, [r5, 0x14]
strh r2, [r5, 0x16]
cmp r7, 0x1
bne _080DF01C
ldr r0, _080DF018 @ =gBattle_BG1_X
b _080DF01E
.align 2, 0
_080DF010: .4byte gBattleAnimTarget
_080DF014: .4byte gBattleAnimArgs
_080DF018: .4byte gBattle_BG1_X
_080DF01C:
ldr r0, _080DF03C @ =gBattle_BG2_X
_080DF01E:
ldrh r2, [r0]
strh r2, [r5, 0x18]
adds r3, r2, 0
adds r3, 0xF0
strh r3, [r5, 0x1A]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x1C]
movs r4, 0x4
ldrsh r0, [r1, r4]
cmp r0, 0
bne _080DF040
strh r3, [r5, 0x1E]
ldrh r3, [r5, 0x18]
b _080DF044
.align 2, 0
_080DF03C: .4byte gBattle_BG2_X
_080DF040:
strh r2, [r5, 0x1E]
ldrh r3, [r5, 0x1A]
_080DF044:
movs r0, 0
strh r0, [r5, 0x26]
ldrh r1, [r5, 0xC]
lsls r2, r1, 16
asrs r1, r2, 16
movs r6, 0xE
ldrsh r0, [r5, r6]
cmp r1, r0
bgt _080DF07A
ldr r4, _080DF084 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r4
mov r12, r0
_080DF060:
asrs r2, 16
lsls r1, r2, 1
adds r0, r1, r4
strh r3, [r0]
add r1, r12
strh r3, [r1]
adds r2, 0x1
lsls r2, 16
asrs r1, r2, 16
movs r6, 0xE
ldrsh r0, [r5, r6]
cmp r1, r0
ble _080DF060
_080DF07A:
cmp r7, 0x1
bne _080DF08C
ldr r0, _080DF088 @ =0x04000014
b _080DF08E
.align 2, 0
_080DF084: .4byte gScanlineEffectRegBuffers
_080DF088: .4byte 0x04000014
_080DF08C:
ldr r0, _080DF0B8 @ =0x04000018
_080DF08E:
str r0, [sp]
ldr r0, _080DF0BC @ =0xa2600001
str r0, [sp, 0x4]
mov r1, sp
movs r2, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r2, [r0, 0x9]
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
bl ScanlineEffect_SetParams
ldr r0, _080DF0C0 @ =sub_80DF0C4
str r0, [r5]
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DF0B8: .4byte 0x04000018
_080DF0BC: .4byte 0xa2600001
_080DF0C0: .4byte sub_80DF0C4
thumb_func_end sub_80DEF9C
thumb_func_start sub_80DF0C4
sub_80DF0C4: @ 80DF0C4
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, _080DF114 @ =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0x8]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0xC]
movs r3, 0xC
ldrsh r1, [r4, r3]
cmp r0, r1
bge _080DF0EC
strh r2, [r4, 0x8]
_080DF0EC:
ldrh r1, [r4, 0x10]
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080DF118
ldrh r0, [r4, 0xA]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0xC]
movs r3, 0xC
ldrsh r1, [r4, r3]
cmp r0, r1
bge _080DF11C
strh r2, [r4, 0xA]
movs r0, 0x1
strh r0, [r4, 0x26]
b _080DF11C
.align 2, 0
_080DF114: .4byte gTasks
_080DF118:
subs r0, r1, 0x1
strh r0, [r4, 0x10]
_080DF11C:
ldrh r0, [r4, 0x14]
adds r0, 0x1
strh r0, [r4, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080DF148
movs r0, 0
strh r0, [r4, 0x14]
movs r1, 0
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080DF13A
movs r1, 0x1
_080DF13A:
strh r1, [r4, 0x16]
cmp r1, 0
beq _080DF144
ldrh r0, [r4, 0x18]
b _080DF146
_080DF144:
ldrh r0, [r4, 0x1A]
_080DF146:
strh r0, [r4, 0x20]
_080DF148:
ldrh r1, [r4, 0x8]
lsls r3, r1, 16
asrs r1, r3, 16
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r1, r0
bge _080DF17C
ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_080DF15E:
asrs r3, 16
lsls r1, r3, 1
adds r2, r1, r5
ldrh r0, [r4, 0x20]
strh r0, [r2]
adds r1, r6
ldrh r0, [r4, 0x20]
strh r0, [r1]
adds r3, 0x1
lsls r3, 16
asrs r1, r3, 16
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r1, r0
blt _080DF15E
_080DF17C:
ldrh r1, [r4, 0xA]
lsls r3, r1, 16
asrs r1, r3, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r1, r0
bgt _080DF1B0
ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_080DF192:
asrs r3, 16
lsls r1, r3, 1
adds r2, r1, r5
ldrh r0, [r4, 0x1E]
strh r0, [r2]
adds r1, r6
ldrh r0, [r4, 0x1E]
strh r0, [r1]
adds r3, 0x1
lsls r3, 16
asrs r1, r3, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r1, r0
ble _080DF192
_080DF1B0:
movs r3, 0x26
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080DF1CC
movs r1, 0x1C
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080DF1C6
ldr r1, _080DF1D8 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080DF1C6:
adds r0, r7, 0
bl DestroyAnimVisualTask
_080DF1CC:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DF1D4: .4byte gScanlineEffectRegBuffers
_080DF1D8: .4byte gScanlineEffect
thumb_func_end sub_80DF0C4
thumb_func_start sub_80DF1DC
sub_80DF1DC: @ 80DF1DC
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080DF230 @ =gTasks
adds r4, r0
movs r5, 0
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
ldr r6, _080DF234 @ =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xC]
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xE]
movs r0, 0x20
strh r0, [r4, 0x10]
ldr r0, _080DF238 @ =0x0000ffec
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
ldr r0, _080DF23C @ =sub_80DF240
str r0, [r4]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DF230: .4byte gTasks
_080DF234: .4byte gBattleAnimAttacker
_080DF238: .4byte 0x0000ffec
_080DF23C: .4byte sub_80DF240
thumb_func_end sub_80DF1DC
thumb_func_start sub_80DF240
sub_80DF240: @ 80DF240
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080DF26C @ =gTasks
adds r6, r0, r1
movs r1, 0x8
ldrsh r0, [r6, r1]
cmp r0, 0x5
bls _080DF260
b _080DF41A
_080DF260:
lsls r0, 2
ldr r1, _080DF270 @ =_080DF274
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080DF26C: .4byte gTasks
_080DF270: .4byte _080DF274
.align 2, 0
_080DF274:
.4byte _080DF28C
.4byte _080DF34C
.4byte _080DF37A
.4byte _080DF38E
.4byte _080DF3A4
.4byte _080DF40C
_080DF28C:
movs r0, 0xC
ldrsh r2, [r6, r0]
ldrh r1, [r6, 0xA]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080DF2A2
movs r1, 0x10
ldrsh r0, [r6, r1]
subs r0, r2, r0
b _080DF2A8
_080DF2A2:
movs r1, 0x10
ldrsh r0, [r6, r1]
adds r0, r2, r0
_080DF2A8:
lsls r0, 16
lsrs r1, r0, 16
ldrh r2, [r6, 0x12]
ldrh r0, [r6, 0xE]
adds r2, r0
ldr r0, _080DF33C @ =gUnknown_83E398C
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
ldrb r4, [r6, 0xA]
movs r3, 0x6
subs r3, r4
lsls r3, 24
lsrs r3, 24
bl CreateSprite
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xB3
bl PlaySE12WithPanning
cmp r4, 0x40
beq _080DF30C
ldr r5, _080DF340 @ =gSprites
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r3, r1, r5
ldrh r0, [r6, 0xA]
movs r2, 0x1
ands r2, r0
adds r3, 0x3F
ldrb r4, [r3]
movs r0, 0x2
negs r0, r0
ands r0, r4
orrs r0, r2
strb r0, [r3]
adds r5, 0x1C
adds r1, r5
ldr r0, _080DF344 @ =SpriteCallbackDummy
str r0, [r1]
_080DF30C:
ldrh r1, [r6, 0xA]
movs r4, 0x1
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _080DF324
ldrh r0, [r6, 0x10]
subs r0, 0x6
strh r0, [r6, 0x10]
ldrh r0, [r6, 0x12]
subs r0, 0x6
strh r0, [r6, 0x12]
_080DF324:
ldrh r1, [r6, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF348 @ =gUnknown_83FF080
adds r0, r6, 0
bl sub_80762D0
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
strh r4, [r6, 0x8]
b _080DF41A
.align 2, 0
_080DF33C: .4byte gUnknown_83E398C
_080DF340: .4byte gSprites
_080DF344: .4byte SpriteCallbackDummy
_080DF348: .4byte gUnknown_83FF080
_080DF34C:
adds r0, r6, 0
bl sub_8076308
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080DF41A
movs r2, 0xA
ldrsh r1, [r6, r2]
cmp r1, 0x6
bne _080DF36C
movs r0, 0x8
strh r0, [r6, 0x14]
movs r0, 0x3
strh r0, [r6, 0x8]
b _080DF41A
_080DF36C:
cmp r1, 0x2
bgt _080DF372
movs r0, 0xA
_080DF372:
strh r0, [r6, 0x14]
movs r0, 0x2
strh r0, [r6, 0x8]
b _080DF41A
_080DF37A:
ldrh r0, [r6, 0x14]
movs r2, 0x14
ldrsh r1, [r6, r2]
cmp r1, 0
beq _080DF38A
subs r0, 0x1
strh r0, [r6, 0x14]
b _080DF41A
_080DF38A:
strh r1, [r6, 0x8]
b _080DF41A
_080DF38E:
ldrh r1, [r6, 0x14]
movs r2, 0x14
ldrsh r0, [r6, r2]
cmp r0, 0
beq _080DF39E
subs r0, r1, 0x1
strh r0, [r6, 0x14]
b _080DF41A
_080DF39E:
movs r0, 0x4
strh r0, [r6, 0x8]
b _080DF41A
_080DF3A4:
movs r5, 0
movs r7, 0
ldr r3, _080DF400 @ =gSprites
movs r0, 0x1C
adds r0, r3
mov r8, r0
_080DF3B0:
lsls r0, r5, 4
adds r0, r5
lsls r4, r0, 2
adds r0, r3, 0
adds r0, 0x14
adds r0, r4, r0
ldr r1, [r0]
ldr r0, _080DF404 @ =gUnknown_83E398C
cmp r1, r0
bne _080DF3EC
adds r0, r4, r3
strh r2, [r0, 0x2E]
movs r1, 0x6
strh r1, [r0, 0x30]
movs r1, 0x2
str r2, [sp]
str r3, [sp, 0x4]
bl StartSpriteAnim
mov r0, r8
adds r1, r4, r0
ldr r0, _080DF408 @ =sub_80DF428
str r0, [r1]
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
ldr r2, [sp]
ldr r3, [sp, 0x4]
cmp r7, 0x6
beq _080DF3F6
_080DF3EC:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3F
bls _080DF3B0
_080DF3F6:
strh r7, [r6, 0x14]
movs r0, 0x5
strh r0, [r6, 0x8]
b _080DF41A
.align 2, 0
_080DF400: .4byte gSprites
_080DF404: .4byte gUnknown_83E398C
_080DF408: .4byte sub_80DF428
_080DF40C:
movs r1, 0x14
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DF41A
adds r0, r2, 0
bl DestroyAnimVisualTask
_080DF41A:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80DF240
thumb_func_start sub_80DF428
sub_80DF428: @ 80DF428
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DF45C
ldr r3, _080DF464 @ =gTasks
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x2E
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
_080DF45C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DF464: .4byte gTasks
thumb_func_end sub_80DF428
thumb_func_start sub_80DF468
sub_80DF468: @ 80DF468
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080DF47C
adds r0, r5, 0
movs r1, 0
bl sub_8075160
_080DF47C:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
bgt _080DF4AE
ldrh r0, [r5, 0x2E]
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _080DF4A0
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
b _080DF4AC
_080DF4A0:
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
_080DF4AC:
strb r0, [r2]
_080DF4AE:
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0x1E
ble _080DF4C4
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_080DF4C4:
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x3D
bne _080DF510
ldr r1, _080DF518 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrh r0, [r5, 0x24]
ldrh r2, [r5, 0x20]
adds r0, r2
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, 0x24]
strh r1, [r5, 0x26]
movs r0, 0x14
strh r0, [r5, 0x2E]
ldr r4, _080DF51C @ =gBattleAnimTarget
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, _080DF520 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
_080DF510:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DF518: .4byte DestroyAnimSprite
_080DF51C: .4byte gBattleAnimTarget
_080DF520: .4byte StartAnimLinearTranslation
thumb_func_end sub_80DF468
thumb_func_start sub_80DF524
sub_80DF524: @ 80DF524
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080DF544 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080DF548
cmp r0, 0x1
beq _080DF568
b _080DF57A
.align 2, 0
_080DF544: .4byte gTasks
_080DF548:
movs r0, 0
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF564 @ =gUnknown_83FF130
adds r0, r4, 0
bl sub_80762D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080DF57A
.align 2, 0
_080DF564: .4byte gUnknown_83FF130
_080DF568:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080DF57A
adds r0, r5, 0
bl DestroyAnimVisualTask
_080DF57A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DF524
thumb_func_start sub_80DF580
sub_80DF580: @ 80DF580
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080DF5E0
cmp r0, 0x1
bgt _080DF5A0
cmp r0, 0
beq _080DF5AA
b _080DF682
_080DF5A0:
cmp r0, 0x2
beq _080DF610
cmp r0, 0x3
beq _080DF664
b _080DF682
_080DF5AA:
ldr r4, _080DF5DC @ =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]
adds r0, r6, 0
movs r1, 0
bl PrepareBattlerSpriteForRotScale
movs r0, 0x80
lsls r0, 1
strh r0, [r5, 0x30]
strh r0, [r5, 0x32]
b _080DF658
.align 2, 0
_080DF5DC: .4byte gBattleAnimAttacker
_080DF5E0:
ldrh r0, [r5, 0x30]
adds r0, 0x60
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
subs r0, 0x1A
strh r0, [r5, 0x32]
movs r2, 0x30
ldrsh r1, [r5, r2]
movs r0, 0x32
ldrsh r2, [r5, r0]
adds r0, r6, 0
movs r3, 0
bl SetSpriteRotScale
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080DF610
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
_080DF610:
ldrh r0, [r5, 0x30]
adds r0, 0x60
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
adds r0, 0x30
strh r0, [r5, 0x32]
movs r2, 0x30
ldrsh r1, [r5, r2]
movs r0, 0x32
ldrsh r2, [r5, r0]
adds r0, r6, 0
movs r3, 0
bl SetSpriteRotScale
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _080DF682
movs r0, 0
strh r0, [r5, 0x34]
ldr r1, _080DF660 @ =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r1
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
adds r0, r6, 0
bl ResetSpriteRotScale
_080DF658:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080DF682
.align 2, 0
_080DF660: .4byte gSprites
_080DF664:
ldrh r0, [r5, 0x26]
subs r0, 0x6
strh r0, [r5, 0x26]
movs r1, 0x22
ldrsh r0, [r5, r1]
movs r2, 0x26
ldrsh r1, [r5, r2]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _080DF682
adds r0, r5, 0
bl DestroyAnimSprite
_080DF682:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80DF580
thumb_func_start sub_80DF688
sub_80DF688: @ 80DF688
push {r4,lr}
adds r4, r0, 0
ldr r0, _080DF6A0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080DF6A8
ldr r0, _080DF6A4 @ =0x0000fff0
b _080DF6AC
.align 2, 0
_080DF6A0: .4byte gBattleAnimAttacker
_080DF6A4: .4byte 0x0000fff0
_080DF6A8:
movs r0, 0x80
lsls r0, 1
_080DF6AC:
strh r0, [r4, 0x20]
movs r0, 0
strh r0, [r4, 0x22]
ldr r0, _080DF6BC @ =sub_80DF6C0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DF6BC: .4byte sub_80DF6C0
thumb_func_end sub_80DF688
thumb_func_start sub_80DF6C0
sub_80DF6C0: @ 80DF6C0
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x48
strh r0, [r4, 0x2E]
ldr r0, _080DF6E0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080DF6E4
ldrh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 20
b _080DF6EC
.align 2, 0
_080DF6E0: .4byte gBattleAnimAttacker
_080DF6E4:
ldrh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 20
negs r0, r0
_080DF6EC:
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r0, 0x10
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r5, r0, r1
strh r5, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
movs r1, 0x3
bl __modsi3
lsls r0, 16
cmp r0, 0
bne _080DF738
ldr r0, _080DF758 @ =gUnknown_83FF180
ldrh r1, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r1, r2
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x22]
adds r2, r5
lsls r2, 16
asrs r2, 16
adds r3, r4, 0
adds r3, 0x43
ldrb r3, [r3]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
bl CreateSpriteAndAnimate
_080DF738:
movs r1, 0x20
ldrsh r0, [r4, r1]
movs r2, 0x24
ldrsh r1, [r4, r2]
adds r0, r1
adds r0, 0x20
movs r1, 0x98
lsls r1, 1
cmp r0, r1
bls _080DF752
adds r0, r4, 0
bl DestroyAnimSprite
_080DF752:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DF758: .4byte gUnknown_83FF180
thumb_func_end sub_80DF6C0
thumb_func_start sub_80DF75C
sub_80DF75C: @ 80DF75C
push {r4,lr}
adds r4, r0, 0
bl Random
movs r1, 0x3
ands r0, r1
cmp r0, 0
bne _080DF776
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x4
b _080DF77E
_080DF776:
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x5
_080DF77E:
ldr r3, _080DF7B0 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080DF7B4 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
bl Random
movs r1, 0x7
ands r0, r1
adds r1, r0, 0
cmp r1, 0x3
ble _080DF7A0
negs r0, r1
lsls r0, 24
lsrs r0, 24
_080DF7A0:
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x26]
ldr r0, _080DF7B8 @ =sub_80DF7BC
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DF7B0: .4byte 0x000003ff
_080DF7B4: .4byte 0xfffffc00
_080DF7B8: .4byte sub_80DF7BC
thumb_func_end sub_80DF75C
thumb_func_start sub_80DF7BC
sub_80DF7BC: @ 80DF7BC
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, 0x1D
bgt _080DF7FE
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _080DF832
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
movs r0, 0
b _080DF830
_080DF7FE:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x2
bne _080DF814
adds r2, r3, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_080DF814:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x3
bne _080DF82C
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080DF844 @ =0x0000ffff
strh r0, [r3, 0x30]
_080DF82C:
ldrh r0, [r3, 0x30]
adds r0, 0x1
_080DF830:
strh r0, [r3, 0x30]
_080DF832:
movs r1, 0x2E
ldrsh r0, [r3, r1]
cmp r0, 0x3C
ble _080DF840
adds r0, r3, 0
bl DestroySprite
_080DF840:
pop {r0}
bx r0
.align 2, 0
_080DF844: .4byte 0x0000ffff
thumb_func_end sub_80DF7BC
thumb_func_start sub_80DF848
sub_80DF848: @ 80DF848
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080DF880 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DF888
movs r0, 0
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF884 @ =gUnknown_83FF198
adds r0, r4, 0
bl sub_80762D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080DF89A
.align 2, 0
_080DF880: .4byte gTasks
_080DF884: .4byte gUnknown_83FF198
_080DF888:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080DF89A
adds r0, r5, 0
bl DestroyAnimVisualTask
_080DF89A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DF848
thumb_func_start sub_80DF8A0
sub_80DF8A0: @ 80DF8A0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080DF8D8 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DF8E0
movs r0, 0
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF8DC @ =gUnknown_83FF1C0
adds r0, r4, 0
bl sub_80762D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080DF8F2
.align 2, 0
_080DF8D8: .4byte gTasks
_080DF8DC: .4byte gUnknown_83FF1C0
_080DF8E0:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080DF8F2
adds r0, r5, 0
bl DestroyAnimVisualTask
_080DF8F2:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DF8A0
thumb_func_start sub_80DF8F8
sub_80DF8F8: @ 80DF8F8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080DF90A
cmp r0, 0x1
beq _080DF934
b _080DF95C
_080DF90A:
adds r0, r4, 0
movs r1, 0
bl sub_8075160
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
ldr r0, _080DF930 @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080DF95C
.align 2, 0
_080DF930: .4byte gBattleAnimAttacker
_080DF934:
ldrh r2, [r4, 0x30]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x26]
subs r0, r1
strh r0, [r4, 0x26]
subs r2, 0x60
strh r2, [r4, 0x30]
movs r2, 0x22
ldrsh r0, [r4, r2]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
movs r2, 0x32
ldrsh r1, [r4, r2]
cmp r0, r1
ble _080DF95C
adds r0, r4, 0
bl DestroyAnimSprite
_080DF95C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DF8F8
thumb_func_start sub_80DF964
sub_80DF964: @ 80DF964
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080DF99C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DF9A4
movs r0, 0
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF9A0 @ =gUnknown_83FF210
adds r0, r4, 0
bl sub_80762D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080DF9B6
.align 2, 0
_080DF99C: .4byte gTasks
_080DF9A0: .4byte gUnknown_83FF210
_080DF9A4:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080DF9B6
adds r0, r5, 0
bl DestroyAnimVisualTask
_080DF9B6:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DF964
thumb_func_start sub_80DF9BC
sub_80DF9BC: @ 80DF9BC
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080DF9E4 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r3, r1, 0
cmp r0, 0x4
bls _080DF9DA
b _080DFBCE
_080DF9DA:
lsls r0, 2
ldr r1, _080DF9E8 @ =_080DF9EC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080DF9E4: .4byte gTasks
_080DF9E8: .4byte _080DF9EC
.align 2, 0
_080DF9EC:
.4byte _080DFA00
.4byte _080DFA4C
.4byte _080DFA86
.4byte _080DFB1C
.4byte _080DFB58
_080DFA00:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
ldr r0, _080DFA24 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080DFA28
movs r0, 0x1
movs r1, 0x2
movs r2, 0x1
bl SetAnimBgAttribute
b _080DFA32
.align 2, 0
_080DFA24: .4byte gBattleAnimAttacker
_080DFA28:
movs r0, 0x2
movs r1, 0x2
movs r2, 0x1
bl SetAnimBgAttribute
_080DFA32:
ldr r0, _080DFA44 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _080DFA48 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r1, 0x1C]
b _080DFB00
.align 2, 0
_080DFA44: .4byte gTasks
_080DFA48: .4byte gBattleAnimArgs
_080DFA4C:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r5, r0, r3
ldrh r0, [r5, 0xC]
adds r1, r0, 0x1
strh r1, [r5, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bgt _080DFA64
b _080DFBCE
_080DFA64:
movs r0, 0
strh r0, [r5, 0xC]
ldrh r0, [r5, 0xA]
adds r0, 0x1
strh r0, [r5, 0xA]
ldrh r4, [r5, 0xA]
lsls r1, r4, 4
orrs r1, r4
lsls r1, 16
lsrs r1, 16
movs r0, 0x4C
bl SetGpuReg
cmp r4, 0xF
beq _080DFA84
b _080DFBCE
_080DFA84:
b _080DFB50
_080DFA86:
ldr r6, _080DFAB4 @ =gBattleAnimAttacker
ldrb r0, [r6]
ldr r1, _080DFAB8 @ =gBattleAnimTarget
ldrb r1, [r1]
lsls r4, r5, 2
adds r2, r4, r5
lsls r2, 3
adds r2, r3
ldrb r2, [r2, 0x1C]
bl HandleSpeciesGfxDataChange
ldrb r1, [r6]
mov r0, sp
bl sub_8075300
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080DFABC
movs r1, 0
b _080DFAC6
.align 2, 0
_080DFAB4: .4byte gBattleAnimAttacker
_080DFAB8: .4byte gBattleAnimTarget
_080DFABC:
ldrb r0, [r6]
bl GetBattlerPosition
lsls r0, 24
lsrs r1, r0, 24
_080DFAC6:
ldr r0, _080DFB08 @ =gMonSpritesGfxPtr
ldr r2, [r0]
lsls r0, r1, 2
adds r2, 0x4
adds r2, r0
ldr r1, _080DFB0C @ =gBattleMonForms
ldr r0, _080DFB10 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r1, 11
ldr r0, [r2]
adds r0, r1
ldr r1, [sp]
ldr r2, _080DFB14 @ =0x04000200
bl CpuSet
ldr r1, [sp]
movs r2, 0x80
lsls r2, 4
mov r0, sp
ldrh r3, [r0, 0xA]
movs r0, 0x1
bl LoadBgTiles
ldr r0, _080DFB18 @ =gTasks
adds r1, r4, r5
lsls r1, 3
adds r1, r0
_080DFB00:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _080DFBCE
.align 2, 0
_080DFB08: .4byte gMonSpritesGfxPtr
_080DFB0C: .4byte gBattleMonForms
_080DFB10: .4byte gBattleAnimAttacker
_080DFB14: .4byte 0x04000200
_080DFB18: .4byte gTasks
_080DFB1C:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r5, r0, r3
ldrh r0, [r5, 0xC]
adds r1, r0, 0x1
strh r1, [r5, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080DFBCE
movs r0, 0
strh r0, [r5, 0xC]
ldrh r0, [r5, 0xA]
subs r0, 0x1
strh r0, [r5, 0xA]
ldrh r4, [r5, 0xA]
lsls r1, r4, 4
orrs r1, r4
lsls r1, 16
lsrs r1, 16
movs r0, 0x4C
bl SetGpuReg
cmp r4, 0
bne _080DFBCE
_080DFB50:
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
b _080DFBCE
_080DFB58:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
ldr r0, _080DFB7C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080DFB80
movs r0, 0x1
movs r1, 0x2
movs r2, 0
bl SetAnimBgAttribute
b _080DFB8A
.align 2, 0
_080DFB7C: .4byte gBattleAnimAttacker
_080DFB80:
movs r0, 0x2
movs r1, 0x2
movs r2, 0
bl SetAnimBgAttribute
_080DFB8A:
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080DFBC8
ldr r4, _080DFBD8 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080DFBC8
ldr r0, _080DFBDC @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
movs r2, 0x1C
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080DFBC8
ldrb r0, [r4]
ldr r1, _080DFBE0 @ =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r2, [r1]
lsls r1, r0, 2
adds r1, r2
ldrh r1, [r1, 0x2]
bl SetBattlerShadowSpriteCallback
_080DFBC8:
adds r0, r5, 0
bl DestroyAnimVisualTask
_080DFBCE:
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DFBD8: .4byte gBattleAnimAttacker
_080DFBDC: .4byte gTasks
_080DFBE0: .4byte gBattleSpritesDataPtr
thumb_func_end sub_80DF9BC
thumb_func_start c3_80DFBE4
c3_80DFBE4: @ 80DFBE4
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, _080DFC14 @ =gBattleAnimArgs
ldr r3, _080DFC18 @ =gSprites
ldr r2, _080DFC1C @ =gBattlerSpriteIds
ldr r1, _080DFC20 @ =gBattleAnimAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r3
adds r1, 0x3E
ldrb r1, [r1]
lsls r1, 29
lsrs r1, 31
strh r1, [r4, 0xE]
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DFC14: .4byte gBattleAnimArgs
_080DFC18: .4byte gSprites
_080DFC1C: .4byte gBattlerSpriteIds
_080DFC20: .4byte gBattleAnimAttacker
thumb_func_end c3_80DFBE4
thumb_func_start sub_80DFC24
sub_80DFC24: @ 80DFC24
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080DFC48 @ =gBattleAnimAttacker
ldrb r0, [r0]
ldr r1, _080DFC4C @ =gBattleAnimTarget
ldrb r1, [r1]
movs r2, 0x1
bl HandleSpeciesGfxDataChange
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DFC48: .4byte gBattleAnimAttacker
_080DFC4C: .4byte gBattleAnimTarget
thumb_func_end sub_80DFC24
thumb_func_start sub_80DFC50
sub_80DFC50: @ 80DFC50
push {r4,lr}
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080DFC78 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r2, r1, 0
cmp r0, 0x4
bls _080DFC6E
b _080DFECA
_080DFC6E:
lsls r0, 2
ldr r1, _080DFC7C @ =_080DFC80
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080DFC78: .4byte gTasks
_080DFC7C: .4byte _080DFC80
.align 2, 0
_080DFC80:
.4byte _080DFC94
.4byte _080DFD90
.4byte _080DFDE0
.4byte _080DFE4A
.4byte _080DFE7E
_080DFC94:
ldr r1, _080DFD18 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080DFCCE
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
_080DFCCE:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
bl sub_807543C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080DFD30
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
ldr r1, _080DFD28 @ =gBattle_BG1_X
ldr r3, _080DFD2C @ =0x0000ffc8
b _080DFD58
.align 2, 0
_080DFD18: .4byte 0x00003f42
_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
_080DFD28: .4byte gBattle_BG1_X
_080DFD2C: .4byte 0x0000ffc8
_080DFD30:
ldr r0, _080DFD48 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080DFD54
ldr r1, _080DFD4C @ =gBattle_BG1_X
ldr r2, _080DFD50 @ =0x0000ff79
adds r0, r2, 0
b _080DFD5A
.align 2, 0
_080DFD48: .4byte gBattleAnimAttacker
_080DFD4C: .4byte gBattle_BG1_X
_080DFD50: .4byte 0x0000ff79
_080DFD54:
ldr r1, _080DFD80 @ =gBattle_BG1_X
ldr r3, _080DFD84 @ =0x0000fff6
_080DFD58:
adds r0, r3, 0
_080DFD5A:
strh r0, [r1]
ldr r1, _080DFD88 @ =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
ldr r0, _080DFD8C @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldr r0, _080DFD80 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
ldr r0, _080DFD88 @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
ldrh r0, [r1, 0x8]
adds r0, 0x1
b _080DFE66
.align 2, 0
_080DFD80: .4byte gBattle_BG1_X
_080DFD84: .4byte 0x0000fff6
_080DFD88: .4byte gBattle_BG1_Y
_080DFD8C: .4byte gTasks
_080DFD90:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0x10]
adds r1, r0, 0x1
strh r1, [r4, 0x10]
lsls r0, 16
cmp r0, 0
bgt _080DFDA6
b _080DFECA
_080DFDA6:
movs r0, 0
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _080DFDBC
movs r0, 0xC
strh r0, [r4, 0xA]
_080DFDBC:
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0xC
bne _080DFECA
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080DFECA
_080DFDE0:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bge _080DFDF8
movs r0, 0
strh r0, [r4, 0xA]
_080DFDF8:
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080DFECA
ldr r2, _080DFE3C @ =gBattle_BG1_X
ldr r1, _080DFE40 @ =gUnknown_83FF240
movs r3, 0xC
ldrsh r0, [r4, r3]
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r2]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080DFE44
strh r0, [r4, 0x8]
b _080DFECA
.align 2, 0
_080DFE3C: .4byte gBattle_BG1_X
_080DFE40: .4byte gUnknown_83FF240
_080DFE44:
movs r0, 0x3
strh r0, [r4, 0x8]
b _080DFECA
_080DFE4A:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r0, [r1, 0xE]
adds r0, 0x1
strh r0, [r1, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080DFECA
movs r0, 0
strh r0, [r1, 0xE]
movs r0, 0x1
_080DFE66:
strh r0, [r1, 0x8]
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xDD
bl PlaySE12WithPanning
b _080DFECA
_080DFE7E:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_8075358
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080DFEA0
movs r0, 0x1
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
_080DFEA0:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
ldr r0, _080DFED4 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
ldr r0, _080DFED8 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimVisualTask
_080DFECA:
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DFED4: .4byte gBattle_BG1_X
_080DFED8: .4byte gBattle_BG1_Y
thumb_func_end sub_80DFC50
thumb_func_start sub_80DFEDC
sub_80DFEDC: @ 80DFEDC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r7, r0, 0
bl Random
lsls r0, 16
movs r1, 0xFC
lsls r1, 14
ands r1, r0
lsrs r5, r1, 16
adds r1, r5, 0
cmp r1, 0x1F
ble _080DFF06
movs r0, 0x20
subs r0, r1
lsls r0, 16
lsrs r5, r0, 16
_080DFF06:
ldr r4, _080E0000 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r5
strh r0, [r7, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
strh r0, [r7, 0x22]
ldr r1, _080E0004 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r7, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r7, 0x32]
ldr r4, _080E0008 @ =gUnknown_83FF26C
movs r0, 0x20
ldrsh r1, [r7, r0]
movs r0, 0x22
ldrsh r2, [r7, r0]
adds r5, r7, 0
adds r5, 0x43
ldrb r3, [r5]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
bl CreateSprite
mov r9, r0
mov r1, r9
lsls r1, 24
lsrs r1, 24
mov r9, r1
movs r0, 0x20
ldrsh r1, [r7, r0]
movs r0, 0x22
ldrsh r2, [r7, r0]
ldrb r3, [r5]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
bl CreateSprite
mov r8, r0
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
mov r0, r9
lsls r2, r0, 4
add r2, r9
lsls r2, 2
ldr r1, _080E000C @ =gSprites
mov r10, r1
adds r5, r2, r1
adds r0, r5, 0
movs r1, 0x1
str r2, [sp]
bl StartSpriteAnim
mov r0, r8
lsls r6, r0, 4
add r6, r8
lsls r6, 2
mov r1, r10
adds r4, r6, r1
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
ldr r1, _080E0004 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x32]
ldrh r0, [r1]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x32]
ldr r0, _080E0010 @ =0x0000ffff
strh r0, [r5, 0x3C]
movs r0, 0x1
negs r0, r0
strh r0, [r4, 0x3C]
adds r5, 0x3E
ldrb r0, [r5]
movs r1, 0x4
orrs r0, r1
strb r0, [r5]
adds r4, 0x3E
ldrb r0, [r4]
orrs r0, r1
strb r0, [r4]
movs r0, 0x1C
add r10, r0
ldr r2, [sp]
add r2, r10
ldr r0, _080E0014 @ =sub_80E0128
str r0, [r2]
add r6, r10
str r0, [r6]
mov r1, r9
strh r1, [r7, 0x3A]
mov r0, r8
strh r0, [r7, 0x3C]
ldr r0, _080E0018 @ =sub_80E001C
str r0, [r7, 0x1C]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E0000: .4byte gBattleAnimAttacker
_080E0004: .4byte gBattleAnimArgs
_080E0008: .4byte gUnknown_83FF26C
_080E000C: .4byte gSprites
_080E0010: .4byte 0x0000ffff
_080E0014: .4byte sub_80E0128
_080E0018: .4byte sub_80E001C
thumb_func_end sub_80DFEDC
thumb_func_start sub_80E001C
sub_80E001C: @ 80E001C
push {lr}
adds r3, r0, 0
ldrh r2, [r3, 0x32]
ldrh r0, [r3, 0x34]
adds r2, r0
lsls r0, r2, 16
asrs r0, 24
ldrh r1, [r3, 0x26]
subs r1, r0
strh r1, [r3, 0x26]
movs r0, 0xFF
ands r2, r0
strh r2, [r3, 0x34]
movs r2, 0x36
ldrsh r0, [r3, r2]
cmp r0, 0
bne _080E006A
lsls r0, r1, 16
asrs r0, 16
movs r1, 0x8
negs r1, r1
cmp r0, r1
bge _080E006A
ldr r2, _080E00C4 @ =gSprites
movs r0, 0x3A
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldrh r0, [r3, 0x36]
adds r0, 0x1
strh r0, [r3, 0x36]
_080E006A:
movs r1, 0x36
ldrsh r0, [r3, r1]
cmp r0, 0x1
bne _080E009E
movs r2, 0x26
ldrsh r1, [r3, r2]
movs r0, 0x10
negs r0, r0
cmp r1, r0
bge _080E009E
ldr r2, _080E00C4 @ =gSprites
movs r0, 0x3C
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldrh r0, [r3, 0x36]
adds r0, 0x1
strh r0, [r3, 0x36]
_080E009E:
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080E00C0
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080E00C8 @ =sub_80E00CC
str r0, [r3, 0x1C]
_080E00C0:
pop {r0}
bx r0
.align 2, 0
_080E00C4: .4byte gSprites
_080E00C8: .4byte sub_80E00CC
thumb_func_end sub_80E001C
thumb_func_start sub_80E00CC
sub_80E00CC: @ 80E00CC
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _080E0120 @ =gSprites
movs r0, 0x3A
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r3, r0, 2
adds r6, r5, 0
adds r6, 0x1C
adds r0, r3, r6
ldr r2, [r0]
ldr r0, _080E0124 @ =SpriteCallbackDummy
cmp r2, r0
bne _080E0118
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
ldr r0, [r1]
cmp r0, r2
bne _080E0118
adds r0, r3, r5
bl DestroySprite
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
adds r0, r4, 0
bl DestroyAnimSprite
_080E0118:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E0120: .4byte gSprites
_080E0124: .4byte SpriteCallbackDummy
thumb_func_end sub_80E00CC
thumb_func_start sub_80E0128
sub_80E0128: @ 80E0128
push {lr}
adds r3, r0, 0
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080E0174
ldrh r2, [r3, 0x32]
ldrh r1, [r3, 0x34]
adds r2, r1
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r3, 0x26]
subs r0, r1
strh r0, [r3, 0x26]
movs r0, 0xFF
ands r2, r0
strh r2, [r3, 0x34]
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080E0174
mov r1, r12
ldrb r0, [r1]
movs r1, 0x4
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldr r0, _080E0178 @ =SpriteCallbackDummy
str r0, [r3, 0x1C]
_080E0174:
pop {r0}
bx r0
.align 2, 0
_080E0178: .4byte SpriteCallbackDummy
thumb_func_end sub_80E0128
thumb_func_start sub_80E017C
sub_80E017C: @ 80E017C
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080E01A4 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r4, r1, 0
cmp r0, 0x5
bls _080E019A
b _080E0476
_080E019A:
lsls r0, 2
ldr r1, _080E01A8 @ =_080E01AC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E01A4: .4byte gTasks
_080E01A8: .4byte _080E01AC
.align 2, 0
_080E01AC:
.4byte _080E01C4
.4byte _080E0304
.4byte _080E038C
.4byte _080E03C2
.4byte _080E03F0
.4byte _080E042A
_080E01C4:
ldr r1, _080E0248 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r1, _080E024C @ =0x00000d03
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080E01FC
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
_080E01FC:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
bl sub_807543C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080E0264
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
ldr r1, _080E025C @ =gBattle_BG1_X
ldr r3, _080E0260 @ =0x0000ffc8
adds r0, r3, 0
b _080E02CE
.align 2, 0
_080E0248: .4byte 0x00003f42
_080E024C: .4byte 0x00000d03
_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
_080E025C: .4byte gBattle_BG1_X
_080E0260: .4byte 0x0000ffc8
_080E0264:
ldr r0, _080E02A4 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerPosition
lsls r0, 24
lsrs r4, r0, 24
bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E02B8
ldr r1, _080E02A8 @ =gBattle_BG1_X
cmp r4, 0x1
bne _080E0288
ldr r2, _080E02AC @ =0x0000ff65
adds r0, r2, 0
strh r0, [r1]
_080E0288:
cmp r4, 0x3
bne _080E0292
ldr r3, _080E02B0 @ =0x0000ff8d
adds r0, r3, 0
strh r0, [r1]
_080E0292:
cmp r4, 0
bne _080E029A
movs r0, 0xE
strh r0, [r1]
_080E029A:
cmp r4, 0x2
bne _080E02D0
ldr r1, _080E02A8 @ =gBattle_BG1_X
ldr r2, _080E02B4 @ =0x0000ffec
b _080E02CC
.align 2, 0
_080E02A4: .4byte gBattleAnimTarget
_080E02A8: .4byte gBattle_BG1_X
_080E02AC: .4byte 0x0000ff65
_080E02B0: .4byte 0x0000ff8d
_080E02B4: .4byte 0x0000ffec
_080E02B8:
cmp r4, 0x1
bne _080E02C4
ldr r1, _080E02F0 @ =gBattle_BG1_X
ldr r3, _080E02F4 @ =0x0000ff79
adds r0, r3, 0
strh r0, [r1]
_080E02C4:
cmp r4, 0
bne _080E02D0
ldr r1, _080E02F0 @ =gBattle_BG1_X
ldr r2, _080E02F8 @ =0x0000fff6
_080E02CC:
adds r0, r2, 0
_080E02CE:
strh r0, [r1]
_080E02D0:
ldr r1, _080E02FC @ =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
ldr r0, _080E0300 @ =gTasks
lsls r1, r6, 2
adds r1, r6
lsls r1, 3
adds r1, r0
ldr r0, _080E02F0 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
ldr r0, _080E02FC @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
b _080E0384
.align 2, 0
_080E02F0: .4byte gBattle_BG1_X
_080E02F4: .4byte 0x0000ff79
_080E02F8: .4byte 0x0000fff6
_080E02FC: .4byte gBattle_BG1_Y
_080E0300: .4byte gTasks
_080E0304:
ldr r1, _080E0338 @ =gTasks
lsls r4, r6, 2
adds r0, r4, r6
lsls r0, 3
adds r5, r0, r1
movs r0, 0
strh r0, [r5, 0xE]
ldr r0, _080E033C @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E0348
ldr r2, _080E0340 @ =gBattle_BG1_X
ldr r1, _080E0344 @ =gUnknown_83FF284
movs r3, 0xC
ldrsh r0, [r5, r3]
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
ldrh r5, [r5, 0x1C]
adds r0, r5
b _080E035A
.align 2, 0
_080E0338: .4byte gTasks
_080E033C: .4byte gBattleAnimTarget
_080E0340: .4byte gBattle_BG1_X
_080E0344: .4byte gUnknown_83FF284
_080E0348:
ldr r2, _080E0378 @ =gBattle_BG1_X
ldr r1, _080E037C @ =gUnknown_83FF284
movs r3, 0xC
ldrsh r0, [r5, r3]
adds r0, r1
movs r1, 0
ldrsb r1, [r0, r1]
ldrh r0, [r5, 0x1C]
subs r0, r1
_080E035A:
strh r0, [r2]
ldr r0, _080E0380 @ =gTasks
adds r1, r4, r6
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0xC]
adds r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080E0384
strh r0, [r1, 0x8]
b _080E0476
.align 2, 0
_080E0378: .4byte gBattle_BG1_X
_080E037C: .4byte gUnknown_83FF284
_080E0380: .4byte gTasks
_080E0384:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _080E0476
_080E038C:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bgt _080E03A6
movs r0, 0x5
strh r0, [r4, 0xA]
_080E03A6:
ldrh r1, [r4, 0xA]
lsls r1, 8
movs r0, 0x3
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x5
bne _080E0476
b _080E03E2
_080E03C2:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r1, [r4, 0xE]
adds r1, 0x1
strh r1, [r4, 0xE]
lsls r1, 16
asrs r1, 16
ldr r2, _080E03EC @ =gUnknown_83FF288
movs r3, 0xC
ldrsh r0, [r4, r3]
adds r0, r2
ldrb r0, [r0]
cmp r1, r0
ble _080E0476
_080E03E2:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E0476
.align 2, 0
_080E03EC: .4byte gUnknown_83FF288
_080E03F0:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
ble _080E040A
movs r0, 0xD
strh r0, [r4, 0xA]
_080E040A:
ldrh r1, [r4, 0xA]
lsls r1, 8
movs r0, 0x3
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0xD
bne _080E0476
movs r0, 0x1
strh r0, [r4, 0x8]
b _080E0476
_080E042A:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_8075358
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080E044C
movs r0, 0x1
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
_080E044C:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
ldr r0, _080E0480 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
ldr r0, _080E0484 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r6, 0
bl DestroyAnimVisualTask
_080E0476:
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E0480: .4byte gBattle_BG1_X
_080E0484: .4byte gBattle_BG1_Y
thumb_func_end sub_80E017C
thumb_func_start sub_80E0488
sub_80E0488: @ 80E0488
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080E04C0 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E04C8
movs r0, 0
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080E04C4 @ =gUnknown_83FF290
adds r0, r4, 0
bl sub_80762D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E04DA
.align 2, 0
_080E04C0: .4byte gTasks
_080E04C4: .4byte gUnknown_83FF290
_080E04C8:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080E04DA
adds r0, r5, 0
bl DestroyAnimVisualTask
_080E04DA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E0488
thumb_func_start sub_80E04E0
sub_80E04E0: @ 80E04E0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r2, 0x2E
ldrsh r1, [r4, r2]
cmp r1, 0
bne _080E04FE
adds r0, r4, 0
movs r1, 0
bl sub_8075160
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080E0552
_080E04FE:
adds r0, 0x1
strh r0, [r4, 0x2E]
cmp r1, 0x14
ble _080E0552
ldrh r0, [r4, 0x30]
adds r0, 0xA0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
adds r0, 0x80
strh r0, [r4, 0x32]
ldr r0, _080E052C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080E0530
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
negs r0, r0
b _080E0536
.align 2, 0
_080E052C: .4byte gBattleAnimAttacker
_080E0530:
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
_080E0536:
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
lsls r0, 16
asrs r0, 16
cmp r0, 0x40
ble _080E0552
adds r0, r4, 0
bl DestroyAnimSprite
_080E0552:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E04E0
thumb_func_start sub_80E0558
sub_80E0558: @ 80E0558
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080E057C @ =gTasks
adds r4, r0, r1
ldr r5, _080E0580 @ =gBattleAnimArgs
movs r1, 0x2
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E0584
adds r0, r2, 0
bl DestroyAnimVisualTask
b _080E0618
.align 2, 0
_080E057C: .4byte gTasks
_080E0580: .4byte gBattleAnimArgs
_080E0584:
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0
bge _080E0590
movs r0, 0
strh r0, [r5, 0x4]
_080E0590:
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0x2
ble _080E059C
movs r0, 0x2
strh r0, [r5, 0x4]
_080E059C:
movs r0, 0
strh r0, [r4, 0x8]
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
movs r0, 0x4
ldrsh r1, [r5, r0]
lsls r1, 1
movs r0, 0x8
subs r0, r1
strh r0, [r4, 0xE]
movs r1, 0x4
ldrsh r0, [r5, r1]
lsls r0, 7
movs r1, 0x80
lsls r1, 1
adds r0, r1
strh r0, [r4, 0x10]
ldrh r0, [r5, 0x4]
adds r0, 0x2
strh r0, [r4, 0x12]
ldrh r0, [r5, 0x2]
subs r0, 0x1
strh r0, [r4, 0x14]
ldrb r0, [r5]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E05E8
ldr r0, _080E05E4 @ =gBattleAnimAttacker
b _080E05EA
.align 2, 0
_080E05E4: .4byte gBattleAnimAttacker
_080E05E8:
ldr r0, _080E0620 @ =gBattleAnimTarget
_080E05EA:
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E0608
movs r1, 0x10
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x10]
movs r1, 0x12
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x12]
_080E0608:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl PrepareBattlerSpriteForRotScale
ldr r0, _080E0624 @ =sub_80E0628
str r0, [r4]
_080E0618:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E0620: .4byte gBattleAnimTarget
_080E0624: .4byte sub_80E0628
thumb_func_end sub_80E0558
thumb_func_start sub_80E0628
sub_80E0628: @ 80E0628
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080E064C @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r6, [r4, r0]
cmp r6, 0x1
beq _080E06B0
cmp r6, 0x1
bgt _080E0650
cmp r6, 0
beq _080E065C
b _080E0788
.align 2, 0
_080E064C: .4byte gTasks
_080E0650:
cmp r6, 0x2
beq _080E0708
cmp r6, 0x3
bne _080E065A
b _080E0778
_080E065A:
b _080E0788
_080E065C:
ldr r2, _080E06AC @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x12]
ldrh r2, [r0, 0x24]
adds r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r4, 0xC]
ldrh r1, [r4, 0x10]
subs r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r0, r1
blt _080E0788
strh r6, [r4, 0xA]
b _080E0770
.align 2, 0
_080E06AC: .4byte gSprites
_080E06B0:
ldr r2, _080E0704 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x24]
ldrh r2, [r4, 0x12]
subs r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r4, 0x10]
ldrh r1, [r4, 0xC]
adds r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
lsls r1, 16
asrs r1, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
lsls r0, 1
cmp r1, r0
blt _080E0788
movs r0, 0
strh r0, [r4, 0xA]
b _080E0770
.align 2, 0
_080E0704: .4byte gSprites
_080E0708:
ldr r2, _080E076C @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x12]
ldrh r2, [r0, 0x24]
adds r1, r2
movs r5, 0
strh r1, [r0, 0x24]
ldrh r0, [r4, 0xC]
ldrh r1, [r4, 0x10]
subs r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r0, r1
blt _080E0788
ldrh r1, [r4, 0x14]
movs r2, 0x14
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080E0770
subs r0, r1, 0x1
strh r0, [r4, 0x14]
strh r5, [r4, 0xA]
strh r5, [r4, 0x8]
b _080E0788
.align 2, 0
_080E076C: .4byte gSprites
_080E0770:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E0788
_080E0778:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl ResetSpriteRotScale
adds r0, r5, 0
bl DestroyAnimVisualTask
_080E0788:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E0628
thumb_func_start sub_80E0790
sub_80E0790: @ 80E0790
push {r4,lr}
adds r4, r0, 0
ldr r0, _080E07AC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080E07B4
strh r0, [r4, 0x20]
ldr r1, _080E07B0 @ =gBattleAnimArgs
ldrh r0, [r1]
b _080E07BE
.align 2, 0
_080E07AC: .4byte gBattleAnimAttacker
_080E07B0: .4byte gBattleAnimArgs
_080E07B4:
movs r0, 0xF0
strh r0, [r4, 0x20]
ldr r1, _080E07D8 @ =gBattleAnimArgs
ldrh r0, [r1]
subs r0, 0x1E
_080E07BE:
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldrb r1, [r1, 0x2]
adds r0, r4, 0
bl StartSpriteAnim
ldr r0, _080E07DC @ =sub_80E07E0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E07D8: .4byte gBattleAnimArgs
_080E07DC: .4byte sub_80E07E0
thumb_func_end sub_80E0790
thumb_func_start sub_80E07E0
sub_80E07E0: @ 80E07E0
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x3
strh r0, [r4, 0x2E]
ldr r0, _080E0820 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E0824
ldrh r1, [r4, 0x20]
adds r1, 0x5
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x22]
subs r0, 0x1
strh r0, [r4, 0x22]
lsls r1, 16
asrs r1, 16
cmp r1, 0xF0
ble _080E0812
adds r0, r4, 0
bl DestroyAnimSprite
_080E0812:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
ands r0, r1
movs r1, 0x10
bl Sin
b _080E0848
.align 2, 0
_080E0820: .4byte gBattleAnimAttacker
_080E0824:
ldrh r1, [r4, 0x20]
subs r1, 0x5
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x22]
adds r0, 0x1
strh r0, [r4, 0x22]
lsls r1, 16
cmp r1, 0
bge _080E083C
adds r0, r4, 0
bl DestroyAnimSprite
_080E083C:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
ands r0, r1
movs r1, 0x10
bl Cos
_080E0848:
strh r0, [r4, 0x26]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E07E0
thumb_func_start sub_80E0850
sub_80E0850: @ 80E0850
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080E0898 @ =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
strh r0, [r4, 0xE]
movs r0, 0x20
strh r0, [r4, 0x20]
movs r0, 0x40
strh r0, [r4, 0x22]
movs r0, 0x80
lsls r0, 4
strh r0, [r4, 0x24]
ldr r0, _080E089C @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
movs r1, 0
bl PrepareBattlerSpriteForRotScale
ldr r0, _080E08A0 @ =sub_80E08A4
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E0898: .4byte gTasks
_080E089C: .4byte gBattleAnimArgs
_080E08A0: .4byte sub_80E08A4
thumb_func_end sub_80E0850
thumb_func_start sub_80E08A4
sub_80E08A4: @ 80E08A4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080E08D0 @ =gTasks
adds r7, r0, r1
movs r1, 0x8
ldrsh r0, [r7, r1]
mov r8, r0
cmp r0, 0x1
beq _080E0940
cmp r0, 0x1
bgt _080E08D4
cmp r0, 0
beq _080E08DC
b _080E09BA
.align 2, 0
_080E08D0: .4byte gTasks
_080E08D4:
mov r2, r8
cmp r2, 0x2
beq _080E09A8
b _080E09BA
_080E08DC:
movs r3, 0x80
lsls r3, 2
adds r0, r3, 0
ldrh r1, [r7, 0xC]
adds r2, r0, r1
strh r2, [r7, 0xC]
lsls r0, r2, 16
asrs r0, 16
ldrh r3, [r7, 0x24]
mov r8, r3
movs r3, 0x24
ldrsh r1, [r7, r3]
cmp r0, r1
blt _080E09BA
mov r0, r8
subs r5, r0, r2
lsls r5, 16
asrs r5, 16
adds r6, r1, 0
lsls r6, 1
adds r0, r5, 0
adds r1, r6, 0
bl __divsi3
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
adds r1, r6, 0
bl __modsi3
lsls r0, 16
lsrs r0, 16
lsls r4, 16
asrs r4, 16
movs r1, 0x1
ands r4, r1
cmp r4, 0
bne _080E0934
lsls r0, 16
asrs r0, 16
mov r2, r8
subs r0, r2, r0
b _080E0992
_080E0934:
lsls r0, 16
asrs r0, 16
mov r3, r8
subs r0, r3
strh r0, [r7, 0xC]
b _080E09BA
_080E0940:
ldr r1, _080E0998 @ =0xfffffe00
adds r0, r1, 0
ldrh r2, [r7, 0xC]
adds r1, r0, r2
strh r1, [r7, 0xC]
movs r3, 0xC
ldrsh r0, [r7, r3]
movs r2, 0x24
ldrsh r6, [r7, r2]
cmn r0, r6
bgt _080E09BA
ldrh r3, [r7, 0x24]
mov r9, r3
mov r0, r9
subs r4, r0, r1
lsls r4, 16
asrs r4, 16
lsls r6, 1
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
adds r1, r6, 0
bl __modsi3
lsls r0, 16
lsrs r2, r0, 16
mov r1, r8
ands r1, r5
lsls r0, r1, 16
asrs r1, r0, 16
cmp r1, 0
bne _080E099C
lsls r0, r2, 16
asrs r0, 16
mov r2, r9
subs r0, r2
_080E0992:
strh r0, [r7, 0xC]
strh r1, [r7, 0x8]
b _080E09BA
.align 2, 0
_080E0998: .4byte 0xfffffe00
_080E099C:
lsls r0, r2, 16
asrs r0, 16
mov r3, r9
subs r0, r3, r0
strh r0, [r7, 0xC]
b _080E09BA
_080E09A8:
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
bl ResetSpriteRotScale
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080E0A30
_080E09BA:
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r7, 0xC]
adds r1, r2, 0
bl SetSpriteRotScale
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80759DC
ldr r2, _080E0A28 @ =gSprites
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0xC
ldrsh r0, [r7, r2]
cmp r0, 0
bge _080E09EE
adds r0, 0x3F
_080E09EE:
asrs r0, 6
negs r0, r0
strh r0, [r1, 0x24]
ldrh r0, [r7, 0xA]
adds r0, 0x1
strh r0, [r7, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080E0A30
ldrh r1, [r7, 0x20]
movs r3, 0x20
ldrsh r0, [r7, r3]
cmp r0, 0
beq _080E0A2C
subs r0, r1, 0x1
strh r0, [r7, 0x20]
ldrh r0, [r7, 0x24]
ldrh r1, [r7, 0x22]
subs r0, r1
strh r0, [r7, 0x24]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
bgt _080E0A30
movs r0, 0x10
strh r0, [r7, 0x24]
b _080E0A30
.align 2, 0
_080E0A28: .4byte gSprites
_080E0A2C:
movs r0, 0x2
strh r0, [r7, 0x8]
_080E0A30:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E08A4
thumb_func_start sub_80E0A3C
sub_80E0A3C: @ 80E0A3C
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E0A9C
ldr r6, _080E0A94 @ =gBattleAnimArgs
movs r2, 0x4
ldrsh r0, [r6, r2]
cmp r0, 0
bne _080E0A70
ldr r4, _080E0A98 @ =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]
_080E0A70:
ldrh r0, [r6]
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x20]
ldrh r1, [r6, 0x2]
ldrh r2, [r5, 0x22]
adds r0, r1, r2
strh r0, [r5, 0x22]
movs r0, 0x80
strh r0, [r5, 0x30]
movs r0, 0xC0
lsls r0, 2
strh r0, [r5, 0x32]
strh r1, [r5, 0x34]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080E0AFA
.align 2, 0
_080E0A94: .4byte gBattleAnimArgs
_080E0A98: .4byte gBattleAnimAttacker
_080E0A9C:
ldrh r1, [r5, 0x30]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r2, [r5, 0x26]
adds r0, r2
strh r0, [r5, 0x26]
movs r2, 0x36
ldrsh r0, [r5, r2]
adds r4, r1, 0
cmp r0, 0
bne _080E0ADA
movs r0, 0x26
ldrsh r1, [r5, r0]
movs r2, 0x34
ldrsh r0, [r5, r2]
cmn r1, r0
ble _080E0ADA
movs r0, 0x1
strh r0, [r5, 0x36]
movs r1, 0x32
ldrsh r0, [r5, r1]
negs r0, r0
movs r1, 0x3
bl __divsi3
lsls r0, 1
strh r0, [r5, 0x32]
_080E0ADA:
adds r0, r4, 0
adds r0, 0xC0
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
adds r0, 0x80
strh r0, [r5, 0x32]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080E0AFA
adds r0, r5, 0
bl DestroyAnimSprite
_080E0AFA:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E0A3C
thumb_func_start sub_80E0B00
sub_80E0B00: @ 80E0B00
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldr r1, _080E0B30 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r2, r0, r1
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080E0C0C
ldr r0, _080E0B34 @ =gBattleAnimArgs
movs r3, 0
ldrsh r1, [r0, r3]
mov r8, r0
cmp r1, 0
bne _080E0B3C
ldr r0, _080E0B38 @ =gBattleAnimAttacker
b _080E0B3E
.align 2, 0
_080E0B30: .4byte gTasks
_080E0B34: .4byte gBattleAnimArgs
_080E0B38: .4byte gBattleAnimAttacker
_080E0B3C:
ldr r0, _080E0B78 @ =gBattleAnimTarget
_080E0B3E:
ldrb r0, [r0]
strh r0, [r2, 0x1E]
mov r1, r8
ldrb r0, [r1]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080E0B7C @ =gTasks
lsls r4, r7, 2
adds r0, r4, r7
lsls r0, 3
adds r6, r0, r1
strh r5, [r6, 0x1C]
adds r0, r5, 0
movs r1, 0
bl PrepareBattlerSpriteForRotScale
mov r2, r8
movs r3, 0x2
ldrsh r0, [r2, r3]
cmp r0, 0x1
beq _080E0BA0
cmp r0, 0x1
bgt _080E0B80
cmp r0, 0
beq _080E0B88
lsls r2, r5, 4
b _080E0BE8
.align 2, 0
_080E0B78: .4byte gBattleAnimTarget
_080E0B7C: .4byte gTasks
_080E0B80:
cmp r0, 0x2
beq _080E0BAA
lsls r2, r5, 4
b _080E0BE8
_080E0B88:
movs r2, 0xA0
lsls r2, 1
adds r0, r5, 0
movs r1, 0xE0
movs r3, 0
bl SetSpriteRotScale
adds r0, r5, 0
bl sub_8076440
lsls r2, r5, 4
b _080E0BE8
_080E0BA0:
movs r2, 0x98
lsls r2, 1
movs r3, 0xF0
lsls r3, 4
b _080E0BB2
_080E0BAA:
movs r2, 0x98
lsls r2, 1
movs r3, 0xF1
lsls r3, 8
_080E0BB2:
adds r0, r5, 0
movs r1, 0xD0
bl SetSpriteRotScale
adds r0, r5, 0
bl sub_8076440
bl IsContest
lsls r0, 24
cmp r0, 0
bne _080E0BD8
ldrb r0, [r6, 0x1E]
bl GetBattlerSide
lsls r0, 24
lsls r2, r5, 4
cmp r0, 0
bne _080E0BE8
_080E0BD8:
ldr r0, _080E0C04 @ =gSprites
lsls r2, r5, 4
adds r1, r2, r5
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x26]
adds r0, 0x10
strh r0, [r1, 0x26]
_080E0BE8:
ldr r1, _080E0C04 @ =gSprites
adds r0, r2, r5
lsls r0, 2
adds r0, r1
movs r1, 0x2
strh r1, [r0, 0x24]
ldr r0, _080E0C08 @ =gTasks
adds r1, r4, r7
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _080E0C58
.align 2, 0
_080E0C04: .4byte gSprites
_080E0C08: .4byte gTasks
_080E0C0C:
ldrb r5, [r2, 0x1C]
ldrh r0, [r2, 0xC]
adds r0, 0x1
movs r4, 0
strh r0, [r2, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080E0C30
strh r4, [r2, 0xC]
ldr r0, _080E0C64 @ =gSprites
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x24]
negs r0, r0
strh r0, [r1, 0x24]
_080E0C30:
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
bne _080E0C58
adds r0, r5, 0
bl ResetSpriteRotScale
ldr r1, _080E0C64 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
strh r4, [r0, 0x24]
strh r4, [r0, 0x26]
adds r0, r7, 0
bl DestroyAnimVisualTask
_080E0C58:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E0C64: .4byte gSprites
thumb_func_end sub_80E0B00
thumb_func_start sub_80E0C68
sub_80E0C68: @ 80E0C68
push {r4,r5,lr}
adds r4, r0, 0
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xC
bl __umodsi3
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, r0
ldr r3, _080E0CB4 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080E0CB8 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
bl Random
ldr r5, _080E0CBC @ =0x000001ff
ands r5, r0
bl Random
movs r1, 0xFF
ands r1, r0
movs r0, 0x1
ands r0, r5
cmp r0, 0
beq _080E0CC0
movs r2, 0xBC
lsls r2, 3
adds r0, r5, r2
b _080E0CC8
.align 2, 0
_080E0CB4: .4byte 0x000003ff
_080E0CB8: .4byte 0xfffffc00
_080E0CBC: .4byte 0x000001ff
_080E0CC0:
movs r3, 0xBC
lsls r3, 3
adds r0, r3, 0
subs r0, r5
_080E0CC8:
strh r0, [r4, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080E0CDA
movs r2, 0x90
lsls r2, 3
adds r0, r1, r2
b _080E0CE2
_080E0CDA:
movs r3, 0x90
lsls r3, 3
adds r0, r3, 0
subs r0, r1
_080E0CE2:
strh r0, [r4, 0x30]
ldr r0, _080E0CF4 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r4, 0x32]
lsls r0, 16
cmp r0, 0
bne _080E0CFC
ldr r0, _080E0CF8 @ =0x0000fff8
b _080E0CFE
.align 2, 0
_080E0CF4: .4byte gBattleAnimArgs
_080E0CF8: .4byte 0x0000fff8
_080E0CFC:
movs r0, 0xF8
_080E0CFE:
strh r0, [r4, 0x20]
movs r0, 0x68
strh r0, [r4, 0x22]
ldr r0, _080E0D10 @ =sub_80E0D14
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E0D10: .4byte sub_80E0D14
thumb_func_end sub_80E0C68
thumb_func_start sub_80E0D14
sub_80E0D14: @ 80E0D14
push {r4,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E0D2C
ldrh r3, [r4, 0x2E]
lsls r0, r3, 16
asrs r0, 24
ldrh r1, [r4, 0x24]
adds r0, r1
b _080E0D36
_080E0D2C:
ldrh r3, [r4, 0x2E]
lsls r1, r3, 16
asrs r1, 24
ldrh r0, [r4, 0x24]
subs r0, r1
_080E0D36:
strh r0, [r4, 0x24]
ldrh r2, [r4, 0x30]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x26]
subs r0, r1
strh r0, [r4, 0x26]
adds r0, r3, 0
subs r0, 0x16
strh r0, [r4, 0x2E]
adds r1, r2, 0
subs r1, 0x30
strh r1, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bge _080E0D5A
movs r0, 0
strh r0, [r4, 0x2E]
_080E0D5A:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _080E0D6E
adds r0, r4, 0
bl DestroyAnimSprite
_080E0D6E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E0D14
thumb_func_start sub_80E0D74
sub_80E0D74: @ 80E0D74
push {r4,r5,lr}
adds r5, r0, 0
ldr r1, _080E0DD8 @ =0x00001f3f
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r0, _080E0DDC @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r4, _080E0DE0 @ =gUnknown_2022986
strh r1, [r4]
movs r0, 0x40
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x44
bl SetGpuReg
ldr r0, _080E0DE4 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
adds r0, r5, 0
movs r1, 0
bl sub_8075114
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x8
orrs r0, r1
strb r0, [r5, 0x1]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080E0DE8 @ =sub_80E0DEC
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E0DD8: .4byte 0x00001f3f
_080E0DDC: .4byte gUnknown_2022984
_080E0DE0: .4byte gUnknown_2022986
_080E0DE4: .4byte gBattleAnimArgs
_080E0DE8: .4byte sub_80E0DEC
thumb_func_end sub_80E0D74
thumb_func_start sub_80E0DEC
sub_80E0DEC: @ 80E0DEC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080E0E2A
cmp r0, 0x1
bgt _080E0E02
cmp r0, 0
beq _080E0E0C
b _080E0E8A
_080E0E02:
cmp r0, 0x2
beq _080E0E40
cmp r0, 0x3
beq _080E0E62
b _080E0E8A
_080E0E0C:
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
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080E0E8A
b _080E0E5A
_080E0E2A:
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bne _080E0E8A
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
b _080E0E5A
_080E0E40:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080E0E8A
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_080E0E5A:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
b _080E0E8A
_080E0E62:
ldr r1, _080E0E90 @ =0x00003f3f
movs r0, 0x4A
bl SetGpuReg
movs r0, 0
bl GetGpuReg
adds r1, r0, 0
movs r2, 0x80
lsls r2, 8
adds r0, r2, 0
eors r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0
bl SetGpuReg
adds r0, r4, 0
bl DestroyAnimSprite
_080E0E8A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E0E90: .4byte 0x00003f3f
thumb_func_end sub_80E0DEC
thumb_func_start sub_80E0E94
sub_80E0E94: @ 80E0E94
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080E0ED0 @ =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, _080E0ED4 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
ldr r1, _080E0ED8 @ =sub_80E0EDC
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E0ED0: .4byte gBattleAnimAttacker
_080E0ED4: .4byte gBattleAnimArgs
_080E0ED8: .4byte sub_80E0EDC
thumb_func_end sub_80E0E94
thumb_func_start sub_80E0EDC
sub_80E0EDC: @ 80E0EDC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x32]
lsls r1, 16
asrs r1, 24
bl Sin
strh r0, [r4, 0x24]
movs r2, 0x30
ldrsh r0, [r4, r2]
ldrh r1, [r4, 0x34]
lsls r1, 16
asrs r1, 24
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r0, 0x9
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
lsls r1, r0, 16
cmp r0, 0x3F
bls _080E0F16
asrs r0, r1, 16
cmp r0, 0xC3
ble _080E0F28
_080E0F16:
ldr r0, _080E0F24 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
subs r0, 0x1
b _080E0F32
.align 2, 0
_080E0F24: .4byte gBattleAnimAttacker
_080E0F28:
ldr r0, _080E0F74 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
adds r0, 0x1
_080E0F32:
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
movs r3, 0x38
ldrsh r2, [r4, r3]
cmp r2, 0
bne _080E0F78
movs r1, 0x80
lsls r1, 3
adds r0, r1, 0
ldrh r3, [r4, 0x32]
adds r0, r3
strh r0, [r4, 0x32]
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r3, [r4, 0x34]
adds r0, r3
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
movs r3, 0x2E
ldrsh r1, [r4, r3]
cmp r0, r1
bne _080E0FA8
strh r2, [r4, 0x36]
movs r0, 0x1
strh r0, [r4, 0x38]
b _080E0FA8
.align 2, 0
_080E0F74: .4byte gBattleAnimAttacker
_080E0F78:
cmp r2, 0x1
bne _080E0FA8
ldr r1, _080E0FB0 @ =0xfffffc00
adds r0, r1, 0
ldrh r2, [r4, 0x32]
adds r0, r2
strh r0, [r4, 0x32]
ldr r3, _080E0FB4 @ =0xffffff00
adds r0, r3, 0
ldrh r1, [r4, 0x34]
adds r0, r1
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
movs r2, 0x2E
ldrsh r1, [r4, r2]
cmp r0, r1
bne _080E0FA8
adds r0, r4, 0
bl DestroyAnimSprite
_080E0FA8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E0FB0: .4byte 0xfffffc00
_080E0FB4: .4byte 0xffffff00
thumb_func_end sub_80E0EDC
thumb_func_start sub_80E0FB8
sub_80E0FB8: @ 80E0FB8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x18]
movs r0, 0
bl GetAnimBankSpriteId
ldr r0, _080E1040 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080E107C
movs r0, 0
str r0, [sp, 0x1C]
ldr r6, _080E1044 @ =gBattlerPartyIndexes
ldr r4, _080E1048 @ =gBattleAnimTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r7, _080E104C @ =gPlayerParty
adds r0, r7
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
movs r1, 0x1
bl GetMonData
mov r9, r0
ldr r0, _080E1050 @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080E1074
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E1054
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
b _080E1062
.align 2, 0
_080E1040: .4byte gBattleAnimAttacker
_080E1044: .4byte gBattlerPartyIndexes
_080E1048: .4byte gBattleAnimTarget
_080E104C: .4byte gPlayerParty
_080E1050: .4byte gBattleSpritesDataPtr
_080E1054:
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
ldr r1, _080E1070 @ =gEnemyParty
adds r0, r1
_080E1062:
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _080E1076
.align 2, 0
_080E1070: .4byte gEnemyParty
_080E1074:
ldrh r6, [r1, 0x2]
_080E1076:
movs r1, 0x14
mov r8, r1
b _080E1112
_080E107C:
movs r2, 0x1
str r2, [sp, 0x1C]
ldr r6, _080E10E0 @ =gBattlerPartyIndexes
ldr r4, _080E10E4 @ =gBattleAnimTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r7, _080E10E8 @ =gEnemyParty
adds r0, r7
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
movs r1, 0x1
bl GetMonData
mov r9, r0
ldr r0, _080E10EC @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080E110C
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E10F4
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
ldr r1, _080E10F0 @ =gPlayerParty
adds r0, r1
b _080E1100
.align 2, 0
_080E10E0: .4byte gBattlerPartyIndexes
_080E10E4: .4byte gBattleAnimTarget
_080E10E8: .4byte gEnemyParty
_080E10EC: .4byte gBattleSpritesDataPtr
_080E10F0: .4byte gPlayerParty
_080E10F4:
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
_080E1100:
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _080E110E
_080E110C:
ldrh r6, [r1, 0x2]
_080E110E:
ldr r3, _080E11FC @ =0x0000ffec
mov r8, r3
_080E1112:
ldr r0, _080E1200 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_8076884
lsls r0, 24
lsrs r7, r0, 24
ldr r5, _080E1200 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
mov r2, r8
lsls r1, r2, 16
asrs r1, 16
adds r4, r1
lsls r4, 16
asrs r4, 16
lsrs r0, 24
str r0, [sp]
movs r0, 0x5
str r0, [sp, 0x4]
mov r3, r10
str r3, [sp, 0x8]
mov r0, r9
str r0, [sp, 0xC]
ldr r0, _080E1204 @ =gBattleAnimTarget
ldrb r0, [r0]
str r0, [sp, 0x10]
movs r0, 0x1
str r0, [sp, 0x14]
adds r0, r6, 0
ldr r1, [sp, 0x1C]
movs r2, 0
adds r3, r4, 0
bl sub_80768D0
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
ldr r0, _080E1208 @ =gSprites
lsls r5, r6, 4
adds r5, r6
lsls r5, 2
adds r5, r0
movs r0, 0x3
ands r7, r0
lsls r7, 2
mov r8, r7
ldrb r0, [r5, 0x5]
movs r4, 0xD
negs r4, r4
adds r1, r4, 0
ands r1, r0
mov r2, r8
orrs r1, r2
strb r1, [r5, 0x5]
ldrb r2, [r5, 0x1]
adds r0, r4, 0
ands r0, r2
movs r2, 0x4
orrs r0, r2
strb r0, [r5, 0x1]
ldr r0, _080E120C @ =0x00007fff
lsrs r1, 4
lsls r1, 4
movs r3, 0x80
lsls r3, 1
adds r2, r3, 0
orrs r1, r2
movs r2, 0x20
bl FillPalette
ldrb r0, [r5, 0x5]
ands r4, r0
mov r0, r8
orrs r4, r0
strb r4, [r5, 0x5]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldr r0, _080E1210 @ =gTasks
ldr r1, [sp, 0x18]
lsls r4, r1, 2
adds r4, r1
lsls r4, 3
adds r4, r0
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
strh r6, [r4, 0x8]
ldr r0, _080E1214 @ =sub_80E1218
str r0, [r4]
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E11FC: .4byte 0x0000ffec
_080E1200: .4byte gBattleAnimAttacker
_080E1204: .4byte gBattleAnimTarget
_080E1208: .4byte gSprites
_080E120C: .4byte 0x00007fff
_080E1210: .4byte gTasks
_080E1214: .4byte sub_80E1218
thumb_func_end sub_80E0FB8
thumb_func_start sub_80E1218
sub_80E1218: @ 80E1218
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080E126C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
ldrh r0, [r4, 0x1C]
adds r1, r0, 0x1
strh r1, [r4, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E1266
movs r0, 0
strh r0, [r4, 0x1C]
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, 0xA
bne _080E1266
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x1C]
strh r0, [r4, 0x1E]
ldr r0, _080E1270 @ =sub_80E1274
str r0, [r4]
_080E1266:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E126C: .4byte gTasks
_080E1270: .4byte sub_80E1274
thumb_func_end sub_80E1218
thumb_func_start sub_80E1274
sub_80E1274: @ 80E1274
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
ldr r2, _080E12EC @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r5, r1, r2
ldrb r2, [r5, 0x8]
ldrh r0, [r5, 0x1C]
subs r0, 0x10
movs r4, 0
strh r0, [r5, 0x1C]
ldrh r0, [r5, 0x1E]
adds r0, 0x80
strh r0, [r5, 0x1E]
ldr r1, _080E12F0 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r6, r0, r1
ldrb r2, [r6, 0x1]
lsls r1, r2, 30
lsrs r1, 30
movs r0, 0x2
orrs r1, r0
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r6, 0x1]
movs r0, 0x1C
ldrsh r2, [r5, r0]
movs r0, 0x1E
ldrsh r3, [r5, r0]
str r4, [sp]
adds r0, r6, 0
movs r1, 0x1
bl sub_8075A1C
ldrh r0, [r5, 0x20]
adds r0, 0x1
strh r0, [r5, 0x20]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _080E12E2
adds r0, r6, 0
bl sub_8075AD8
adds r0, r6, 0
bl sub_8076B20
ldr r0, _080E12F4 @ =sub_8074FA8
str r0, [r5]
_080E12E2:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E12EC: .4byte gTasks
_080E12F0: .4byte gSprites
_080E12F4: .4byte sub_8074FA8
thumb_func_end sub_80E1274
thumb_func_start sub_80E12F8
sub_80E12F8: @ 80E12F8
push {r4-r7,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080E1318 @ =gTasks
adds r4, r1, r0
ldr r0, _080E131C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E1324
ldr r0, _080E1320 @ =gBattleAnimAttacker
b _080E1326
.align 2, 0
_080E1318: .4byte gTasks
_080E131C: .4byte gBattleAnimArgs
_080E1320: .4byte gBattleAnimAttacker
_080E1324:
ldr r0, _080E13A4 @ =gBattleAnimTarget
_080E1326:
ldrb r5, [r0]
movs r6, 0
strh r6, [r4, 0x8]
strh r6, [r4, 0xA]
strh r6, [r4, 0xC]
movs r0, 0x10
strh r0, [r4, 0xE]
strh r6, [r4, 0x10]
strh r5, [r4, 0x12]
movs r0, 0x20
strh r0, [r4, 0x14]
strh r6, [r4, 0x16]
movs r0, 0x18
strh r0, [r4, 0x18]
adds r0, r5, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E1358
movs r1, 0x18
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x18]
_080E1358:
adds r0, r5, 0
bl sub_807492C
lsls r0, 24
lsrs r0, 24
subs r0, 0x22
strh r0, [r4, 0x22]
cmp r0, 0
bge _080E136C
strh r6, [r4, 0x22]
_080E136C:
ldrh r0, [r4, 0x22]
adds r0, 0x42
strh r0, [r4, 0x24]
ldr r0, _080E13A8 @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
adds r0, r5, 0
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E13BC
ldr r0, _080E13AC @ =0x04000014
str r0, [sp]
ldr r1, _080E13B0 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r0, _080E13B4 @ =gBattle_BG1_X
ldrh r5, [r0]
ldr r0, _080E13B8 @ =gBattle_BG1_Y
b _080E13CE
.align 2, 0
_080E13A4: .4byte gBattleAnimTarget
_080E13A8: .4byte gBattleAnimArgs
_080E13AC: .4byte 0x04000014
_080E13B0: .4byte 0x00003f42
_080E13B4: .4byte gBattle_BG1_X
_080E13B8: .4byte gBattle_BG1_Y
_080E13BC:
ldr r0, _080E1434 @ =0x04000018
str r0, [sp]
ldr r1, _080E1438 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
ldr r0, _080E143C @ =gBattle_BG2_X
ldrh r5, [r0]
ldr r0, _080E1440 @ =gBattle_BG2_Y
_080E13CE:
ldrh r3, [r0]
movs r7, 0
movs r2, 0
ldr r6, _080E1444 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r6
mov r12, r0
_080E13DE:
lsls r2, 16
asrs r2, 16
lsls r1, r2, 1
adds r0, r1, r6
strh r5, [r0]
add r1, r12
strh r5, [r1]
adds r0, r2, 0x1
lsls r0, 1
adds r1, r0, r6
strh r3, [r1]
add r0, r12
strh r3, [r0]
lsls r0, r7, 16
movs r1, 0x80
lsls r1, 9
adds r0, r1
adds r2, 0x2
lsls r2, 16
lsrs r2, 16
lsrs r7, r0, 16
asrs r0, 16
cmp r0, 0x9F
ble _080E13DE
ldr r0, _080E1448 @ =0xa6600001
str r0, [sp, 0x4]
mov r1, sp
movs r2, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r2, [r0, 0x9]
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
bl ScanlineEffect_SetParams
ldr r0, _080E144C @ =sub_80E1450
str r0, [r4]
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E1434: .4byte 0x04000018
_080E1438: .4byte 0x00003f44
_080E143C: .4byte gBattle_BG2_X
_080E1440: .4byte gBattle_BG2_Y
_080E1444: .4byte gScanlineEffectRegBuffers
_080E1448: .4byte 0xa6600001
_080E144C: .4byte sub_80E1450
thumb_func_end sub_80E12F8
thumb_func_start sub_80E1450
sub_80E1450: @ 80E1450
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080E1484 @ =gTasks
adds r6, r0, r1
ldrb r0, [r6, 0x12]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E1490
ldr r0, _080E1488 @ =gBattle_BG1_X
ldrh r0, [r0]
str r0, [sp, 0x4]
ldr r0, _080E148C @ =gBattle_BG1_Y
b _080E1498
.align 2, 0
_080E1484: .4byte gTasks
_080E1488: .4byte gBattle_BG1_X
_080E148C: .4byte gBattle_BG1_Y
_080E1490:
ldr r0, _080E14B0 @ =gBattle_BG2_X
ldrh r0, [r0]
str r0, [sp, 0x4]
ldr r0, _080E14B4 @ =gBattle_BG2_Y
_080E1498:
ldrh r0, [r0]
str r0, [sp, 0x8]
movs r1, 0x8
ldrsh r0, [r6, r1]
cmp r0, 0x1
bne _080E14A6
b _080E1684
_080E14A6:
cmp r0, 0x1
bgt _080E14B8
cmp r0, 0
beq _080E14C6
b _080E16F4
.align 2, 0
_080E14B0: .4byte gBattle_BG2_X
_080E14B4: .4byte gBattle_BG2_Y
_080E14B8:
cmp r0, 0x2
bne _080E14BE
b _080E16A4
_080E14BE:
cmp r0, 0x3
bne _080E14C4
b _080E16EE
_080E14C4:
b _080E16F4
_080E14C6:
movs r2, 0x24
ldrsh r0, [r6, r2]
lsls r0, 17
lsrs r5, r0, 16
movs r3, 0
str r3, [sp]
mov r9, r3
movs r4, 0
ldrh r0, [r6, 0xA]
adds r0, 0x2
movs r1, 0xFF
ands r0, r1
strh r0, [r6, 0xA]
ldrh r7, [r6, 0xA]
mov r8, r7
movs r0, 0x14
ldrsh r1, [r6, r0]
movs r0, 0xFC
lsls r0, 3
bl __divsi3
strh r0, [r6, 0x1A]
movs r1, 0x16
ldrsh r0, [r6, r1]
lsls r0, 1
movs r2, 0x1A
ldrsh r1, [r6, r2]
bl __divsi3
negs r0, r0
strh r0, [r6, 0x1C]
ldrh r0, [r6, 0x16]
strh r0, [r6, 0x1E]
lsls r0, 16
asrs r0, 21
lsls r0, 16
lsrs r7, r0, 16
strh r7, [r6, 0x20]
ldrh r2, [r6, 0x24]
lsls r3, r2, 16
mov r12, r3
asrs r1, r3, 16
movs r3, 0x22
ldrsh r0, [r6, r3]
cmp r1, r0
ble _080E15E6
ldr r0, _080E163C @ =gScanlineEffect
mov r10, r0
ldr r1, [sp, 0x4]
lsls r0, r1, 16
asrs r0, 16
str r0, [sp, 0x10]
ldr r2, [sp, 0x8]
lsls r0, r2, 16
asrs r0, 16
str r0, [sp, 0xC]
_080E1536:
lsls r5, 16
asrs r5, 16
adds r2, r5, 0x1
lsls r2, 1
mov r3, r10
ldrb r1, [r3, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
ldr r0, _080E1640 @ =gScanlineEffectRegBuffers
adds r2, r0
lsls r4, 16
asrs r4, 16
mov r1, r9
lsls r0, r1, 16
asrs r0, 16
subs r0, r4, r0
ldr r3, [sp, 0xC]
adds r0, r3, r0
strh r0, [r2]
lsls r3, r5, 1
mov r0, r10
ldrb r1, [r0, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r3, r0
ldr r1, _080E1640 @ =gScanlineEffectRegBuffers
adds r3, r1
lsls r1, r7, 16
asrs r1, 16
ldr r2, [sp, 0x10]
adds r1, r2, r1
mov r7, r8
lsls r2, r7, 16
asrs r2, 16
lsls r0, r2, 1
ldr r7, _080E1644 @ =gSineTable
adds r0, r7
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
adds r1, r0
strh r1, [r3]
adds r2, 0xA
mov r8, r2
movs r0, 0xFF
mov r1, r8
ands r1, r0
mov r8, r1
ldrh r0, [r6, 0x1C]
ldrh r2, [r6, 0x1E]
adds r0, r2
strh r0, [r6, 0x1E]
lsls r0, 16
asrs r0, 21
lsls r0, 16
lsrs r7, r0, 16
strh r7, [r6, 0x20]
adds r4, 0x1
lsls r4, 16
lsrs r4, 16
subs r5, 0x2
lsls r5, 16
lsrs r5, 16
ldr r3, [sp]
lsls r0, r3, 16
asrs r0, 16
ldrh r1, [r6, 0x14]
adds r0, r1
lsls r0, 16
lsrs r2, r0, 16
str r2, [sp]
asrs r0, 21
lsls r0, 16
lsrs r0, 16
mov r9, r0
ldr r0, _080E1648 @ =0xffff0000
add r0, r12
lsrs r2, r0, 16
lsls r3, r2, 16
mov r12, r3
asrs r1, r3, 16
movs r3, 0x22
ldrsh r0, [r6, r3]
cmp r1, r0
bgt _080E1536
_080E15E6:
lsls r1, r2, 17
cmp r1, 0
blt _080E1612
ldr r4, _080E1640 @ =gScanlineEffectRegBuffers
ldr r7, [sp, 0x4]
lsls r0, r7, 16
asrs r0, 16
adds r3, r0, 0
adds r3, 0xF0
movs r0, 0xF0
lsls r0, 3
adds r5, r4, r0
_080E15FE:
asrs r2, r1, 16
lsls r1, r2, 1
adds r0, r1, r4
strh r3, [r0]
adds r1, r5
strh r3, [r1]
subs r2, 0x2
lsls r1, r2, 16
cmp r1, 0
bge _080E15FE
_080E1612:
ldrh r0, [r6, 0x14]
adds r0, 0x1
strh r0, [r6, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3F
ble _080E167A
movs r0, 0x40
strh r0, [r6, 0x14]
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080E164C
ldrh r0, [r6, 0xE]
subs r0, 0x1
strh r0, [r6, 0xE]
b _080E1652
.align 2, 0
_080E163C: .4byte gScanlineEffect
_080E1640: .4byte gScanlineEffectRegBuffers
_080E1644: .4byte gSineTable
_080E1648: .4byte 0xffff0000
_080E164C:
ldrh r0, [r6, 0x10]
adds r0, 0x1
strh r0, [r6, 0x10]
_080E1652:
ldrh r1, [r6, 0x10]
lsls r1, 8
ldrh r0, [r6, 0xE]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xE
ldrsh r1, [r6, r2]
cmp r1, 0
bne _080E16F4
movs r3, 0x10
ldrsh r0, [r6, r3]
cmp r0, 0x10
bne _080E16F4
strh r1, [r6, 0xC]
strh r1, [r6, 0xE]
b _080E16E6
_080E167A:
ldrh r0, [r6, 0x18]
ldrh r7, [r6, 0x16]
adds r0, r7
strh r0, [r6, 0x16]
b _080E16F4
_080E1684:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _080E16F4
ldr r1, _080E16A0 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0
strh r0, [r6, 0xC]
b _080E16E6
.align 2, 0
_080E16A0: .4byte gScanlineEffect
_080E16A4:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080E16BA
ldrh r0, [r6, 0xE]
adds r0, 0x1
strh r0, [r6, 0xE]
b _080E16C0
_080E16BA:
ldrh r0, [r6, 0x10]
subs r0, 0x1
strh r0, [r6, 0x10]
_080E16C0:
ldrh r1, [r6, 0x10]
lsls r1, 8
ldrh r0, [r6, 0xE]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xE
ldrsh r0, [r6, r1]
cmp r0, 0x10
bne _080E16F4
movs r2, 0x10
ldrsh r0, [r6, r2]
cmp r0, 0
bne _080E16F4
strh r0, [r6, 0xC]
strh r0, [r6, 0xE]
_080E16E6:
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
b _080E16F4
_080E16EE:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080E16F4:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E1450
thumb_func_start sub_80E1704
sub_80E1704: @ 80E1704
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080E173C @ =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
ldr r0, _080E1740 @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E1744 @ =gUnknown_83FF3D0
adds r0, r4, 0
bl sub_80762D0
ldr r0, _080E1748 @ =sub_80E174C
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E173C: .4byte gTasks
_080E1740: .4byte gBattleAnimArgs
_080E1744: .4byte gUnknown_83FF3D0
_080E1748: .4byte sub_80E174C
thumb_func_end sub_80E1704
thumb_func_start sub_80E174C
sub_80E174C: @ 80E174C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r2, _080E17A4 @ =gTasks
adds r3, r0, r2
ldrh r0, [r3, 0x8]
adds r1, r0, 0x1
movs r5, 0
strh r1, [r3, 0x8]
subs r0, 0x14
lsls r0, 16
lsrs r0, 16
adds r6, r2, 0
cmp r0, 0x16
bhi _080E17B0
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E17C0
strh r5, [r3, 0xA]
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
movs r5, 0x1
ands r0, r5
cmp r0, 0
bne _080E17B0
ldr r2, _080E17A8 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _080E17AC @ =0x0000ffff
strh r1, [r0, 0x24]
b _080E17C0
.align 2, 0
_080E17A4: .4byte gTasks
_080E17A8: .4byte gSprites
_080E17AC: .4byte 0x0000ffff
_080E17B0:
ldr r2, _080E17E0 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
_080E17C0:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r6
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080E17D8
adds r0, r4, 0
bl DestroyAnimVisualTask
_080E17D8:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E17E0: .4byte gSprites
thumb_func_end sub_80E174C
thumb_func_start sub_80E17E4
sub_80E17E4: @ 80E17E4
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r5, r2, 0
adds r0, r3, 0
ldr r4, [sp, 0x14]
ldr r6, [sp, 0x18]
lsls r1, 16
lsrs r1, 16
lsls r5, 16
lsrs r5, 16
lsls r4, 16
lsrs r4, 16
lsls r6, 16
lsrs r6, 16
mov r2, r8
strh r1, [r2, 0x20]
strh r5, [r2, 0x22]
lsls r1, 16
asrs r1, 16
lsls r2, r1, 4
mov r3, r8
strh r2, [r3, 0x36]
lsls r5, 16
asrs r5, 16
lsls r2, r5, 4
strh r2, [r3, 0x38]
lsls r0, 16
asrs r0, 16
subs r0, r1
lsls r0, 4
adds r1, r6, 0
bl __divsi3
mov r1, r8
strh r0, [r1, 0x3A]
lsls r4, 16
asrs r4, 16
subs r4, r5
lsls r4, 4
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
mov r2, r8
strh r0, [r2, 0x3C]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E17E4
thumb_func_start sub_80E184C
sub_80E184C: @ 80E184C
ldrh r1, [r0, 0x3A]
ldrh r2, [r0, 0x36]
adds r1, r2
strh r1, [r0, 0x36]
ldrh r2, [r0, 0x3C]
ldrh r3, [r0, 0x38]
adds r2, r3
strh r2, [r0, 0x38]
lsls r1, 16
asrs r1, 20
strh r1, [r0, 0x20]
lsls r2, 16
asrs r2, 20
strh r2, [r0, 0x22]
bx lr
thumb_func_end sub_80E184C
thumb_func_start sub_80E186C
sub_80E186C: @ 80E186C
push {r4-r6,lr}
sub sp, 0x8
adds r4, r0, 0
ldrh r6, [r4, 0x20]
ldrh r5, [r4, 0x22]
bl sub_8074FCC
ldr r0, _080E18B4 @ =gBattleAnimArgs
ldrb r1, [r0]
adds r0, r4, 0
bl StartSpriteAffineAnim
movs r0, 0x20
ldrsh r1, [r4, r0]
movs r0, 0x22
ldrsh r2, [r4, r0]
lsls r6, 16
asrs r6, 16
lsls r5, 16
asrs r5, 16
str r5, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
adds r0, r4, 0
adds r3, r6, 0
bl sub_80E17E4
movs r0, 0
strh r0, [r4, 0x2E]
ldr r0, _080E18B8 @ =sub_80E18BC
str r0, [r4, 0x1C]
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E18B4: .4byte gBattleAnimArgs
_080E18B8: .4byte sub_80E18BC
thumb_func_end sub_80E186C
thumb_func_start sub_80E18BC
sub_80E18BC: @ 80E18BC
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
movs r0, 0x2E
ldrsh r4, [r5, r0]
lsls r4, 3
movs r0, 0xFF
ands r4, r0
adds r0, r5, 0
bl sub_80E184C
adds r0, r4, 0
movs r1, 0x8
bl Sin
strh r0, [r5, 0x26]
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x3A
ble _080E1922
ldrh r0, [r5, 0x30]
adds r0, 0x1
strh r0, [r5, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E1922
movs r0, 0
strh r0, [r5, 0x30]
ldrh r1, [r5, 0x32]
adds r1, 0x1
strh r1, [r5, 0x32]
movs r0, 0x1
ands r1, r0
adds r3, r5, 0
adds r3, 0x3E
lsls r1, 2
ldrb r2, [r3]
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r1, 0x32
ldrsh r0, [r5, r1]
cmp r0, 0x3
ble _080E1922
adds r0, r5, 0
bl move_anim_8074EE0
_080E1922:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E18BC
thumb_func_start sub_80E1928
sub_80E1928: @ 80E1928
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080E1980 @ =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r5, 0x2E]
ldrb r1, [r6]
adds r0, r5, 0
bl StartSpriteAffineAnim
ldr r0, _080E1984 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080E194E
ldrh r0, [r6, 0x2]
negs r0, r0
strh r0, [r6, 0x2]
_080E194E:
ldr r4, _080E1988 @ =gBattleAnimAttacker
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]
ldr r0, _080E198C @ =sub_80B1D3C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E1980: .4byte gBattleAnimArgs
_080E1984: .4byte gBattleAnimTarget
_080E1988: .4byte gBattleAnimAttacker
_080E198C: .4byte sub_80B1D3C
thumb_func_end sub_80E1928
thumb_func_start sub_80E1990
sub_80E1990: @ 80E1990
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r5, r0, 24
movs r7, 0
ldr r2, _080E19E0 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x8]
subs r0, 0x1
strh r0, [r3, 0x8]
movs r1, 0x14
ldrsh r0, [r3, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r8, r2
cmp r0, 0
beq _080E1A12
ldrh r0, [r3, 0xA]
subs r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080E1A12
movs r2, 0x1A
ldrsh r0, [r3, r2]
cmp r0, 0
bne _080E19E4
ldrh r0, [r3, 0x10]
strh r0, [r3, 0x1A]
negs r0, r0
strh r0, [r3, 0x10]
b _080E19E6
.align 2, 0
_080E19E0: .4byte gTasks
_080E19E4:
strh r7, [r3, 0x1A]
_080E19E6:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
mov r2, r8
adds r1, r0, r2
movs r2, 0x1C
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080E1A02
ldrh r0, [r1, 0x12]
strh r0, [r1, 0x1C]
negs r0, r0
strh r0, [r1, 0x12]
b _080E1A06
_080E1A02:
movs r0, 0
strh r0, [r1, 0x1C]
_080E1A06:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
add r0, r8
ldrh r1, [r0, 0x22]
strh r1, [r0, 0xA]
_080E1A12:
lsls r2, r5, 2
adds r0, r2, r5
lsls r0, 3
mov r1, r8
adds r4, r0, r1
ldrh r6, [r4, 0x16]
ldrh r7, [r4, 0x18]
movs r1, 0xC
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r12, r2
cmp r0, 0
beq _080E1A50
ldr r3, _080E1A4C @ =gSprites
movs r2, 0x26
ldrsh r0, [r4, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
lsrs r2, r6, 8
ldrh r0, [r4, 0x1A]
subs r0, r2
strh r0, [r1, 0x24]
adds r2, r3, 0
b _080E1A66
.align 2, 0
_080E1A4C: .4byte gSprites
_080E1A50:
ldr r2, _080E1A94 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
lsrs r1, r6, 8
ldrh r4, [r4, 0x1A]
adds r1, r4
strh r1, [r0, 0x24]
_080E1A66:
mov r1, r12
adds r0, r1, r5
lsls r0, 3
mov r1, r8
adds r4, r0, r1
movs r1, 0xE
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _080E1A98
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r2, r7, 8
ldrh r0, [r4, 0x1C]
subs r0, r2
b _080E1AAA
.align 2, 0
_080E1A94: .4byte gSprites
_080E1A98:
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r0, r7, 8
ldrh r4, [r4, 0x1C]
adds r0, r4
_080E1AAA:
strh r0, [r1, 0x26]
mov r2, r12
adds r0, r2, r5
lsls r0, 3
add r0, r8
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0
bgt _080E1ACA
adds r0, r5, 0
bl DestroyTask
ldr r1, _080E1AD4 @ =gUnknown_2037EE2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
_080E1ACA:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E1AD4: .4byte gUnknown_2037EE2
thumb_func_end sub_80E1990
thumb_func_start sub_80E1AD8
sub_80E1AD8: @ 80E1AD8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
movs r7, 0
ldr r2, _080E1B2C @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x8]
subs r0, 0x1
strh r0, [r3, 0x8]
movs r1, 0x14
ldrsh r0, [r3, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r8, r2
cmp r0, 0
beq _080E1B5E
ldrh r0, [r3, 0xA]
subs r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080E1B5E
movs r2, 0x1A
ldrsh r0, [r3, r2]
cmp r0, 0
bne _080E1B30
ldrh r0, [r3, 0x10]
strh r0, [r3, 0x1A]
negs r0, r0
strh r0, [r3, 0x10]
b _080E1B32
.align 2, 0
_080E1B2C: .4byte gTasks
_080E1B30:
strh r7, [r3, 0x1A]
_080E1B32:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
mov r2, r8
adds r1, r0, r2
movs r2, 0x1C
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080E1B4E
ldrh r0, [r1, 0x12]
strh r0, [r1, 0x1C]
negs r0, r0
strh r0, [r1, 0x12]
b _080E1B52
_080E1B4E:
movs r0, 0
strh r0, [r1, 0x1C]
_080E1B52:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
add r0, r8
ldrh r1, [r0, 0x22]
strh r1, [r0, 0xA]
_080E1B5E:
lsls r3, r6, 2
adds r0, r3, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
ldrh r2, [r4, 0xC]
ldr r1, _080E1BB0 @ =0x00007fff
adds r0, r1, 0
ands r0, r2
ldrh r2, [r4, 0x16]
adds r0, r2
lsls r5, r0, 16
lsrs r0, r5, 16
mov r9, r0
ldrh r0, [r4, 0xE]
ands r1, r0
ldrh r2, [r4, 0x18]
adds r1, r2
lsls r1, 16
lsrs r7, r1, 16
movs r1, 0xC
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r12, r3
cmp r0, 0
beq _080E1BB8
ldr r3, _080E1BB4 @ =gSprites
movs r2, 0x26
ldrsh r0, [r4, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
lsrs r2, r5, 24
ldrh r0, [r4, 0x1A]
subs r0, r2
strh r0, [r1, 0x24]
adds r2, r3, 0
b _080E1BCE
.align 2, 0
_080E1BB0: .4byte 0x00007fff
_080E1BB4: .4byte gSprites
_080E1BB8:
ldr r2, _080E1BFC @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
lsrs r1, r5, 24
ldrh r4, [r4, 0x1A]
adds r1, r4
strh r1, [r0, 0x24]
_080E1BCE:
mov r1, r12
adds r0, r1, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
movs r1, 0xE
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _080E1C00
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r2, r7, 8
ldrh r0, [r4, 0x1C]
subs r0, r2
b _080E1C12
.align 2, 0
_080E1BFC: .4byte gSprites
_080E1C00:
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r0, r7, 8
ldrh r4, [r4, 0x1C]
adds r0, r4
_080E1C12:
strh r0, [r1, 0x26]
mov r2, r12
adds r0, r2, r6
lsls r0, 3
mov r1, r8
adds r2, r0, r1
mov r0, r9
strh r0, [r2, 0x16]
strh r7, [r2, 0x18]
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0
bgt _080E1C38
movs r0, 0x1E
strh r0, [r2, 0x8]
movs r0, 0
strh r0, [r2, 0x22]
ldr r0, _080E1C44 @ =sub_80E1990
str r0, [r2]
_080E1C38:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E1C44: .4byte sub_80E1990
thumb_func_end sub_80E1AD8
thumb_func_start sub_80E1C48
sub_80E1C48: @ 80E1C48
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _080E1CA8 @ =gTasks
mov r8, r0
lsls r7, r6, 2
adds r0, r7, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
ldr r1, _080E1CAC @ =gBattlerSpriteIds
ldr r2, _080E1CB0 @ =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x26]
ldr r5, _080E1CB4 @ =gBattleAnimArgs
ldrh r0, [r5]
strh r0, [r4, 0x24]
ldrh r0, [r5]
strh r0, [r4, 0x8]
ldrh r0, [r5, 0xC]
strh r0, [r4, 0x22]
movs r3, 0x6
ldrsh r0, [r5, r3]
cmp r0, 0
beq _080E1C8C
ldrh r0, [r4, 0x14]
ldr r3, _080E1CB8 @ =0xffff8000
adds r1, r3, 0
orrs r0, r1
strh r0, [r4, 0x14]
_080E1C8C:
ldrb r0, [r2]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080E1CBC
ldrh r0, [r5, 0x2]
strh r0, [r4, 0xC]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0xE]
mov r3, r8
adds r4, r7, 0
b _080E1D2C
.align 2, 0
_080E1CA8: .4byte gTasks
_080E1CAC: .4byte gBattlerSpriteIds
_080E1CB0: .4byte gBattleAnimAttacker
_080E1CB4: .4byte gBattleAnimArgs
_080E1CB8: .4byte 0xffff8000
_080E1CBC:
movs r7, 0x2
ldrsh r0, [r5, r7]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _080E1CD8
ldrh r1, [r5, 0x2]
ldr r0, _080E1CD4 @ =0x00007fff
ands r0, r1
b _080E1CE0
.align 2, 0
_080E1CD4: .4byte 0x00007fff
_080E1CD8:
ldrh r0, [r5, 0x2]
ldr r2, _080E1D08 @ =0xffff8000
adds r1, r2, 0
orrs r0, r1
_080E1CE0:
strh r0, [r4, 0xC]
ldr r0, _080E1D0C @ =gBattleAnimArgs
movs r3, 0x4
ldrsh r1, [r0, r3]
movs r2, 0x80
lsls r2, 8
ands r1, r2
adds r5, r0, 0
cmp r1, 0
beq _080E1D18
ldr r3, _080E1D10 @ =gTasks
lsls r4, r6, 2
adds r1, r4, r6
lsls r1, 3
adds r1, r3
ldrh r2, [r5, 0x4]
ldr r0, _080E1D14 @ =0x00007fff
ands r0, r2
b _080E1D2A
.align 2, 0
_080E1D08: .4byte 0xffff8000
_080E1D0C: .4byte gBattleAnimArgs
_080E1D10: .4byte gTasks
_080E1D14: .4byte 0x00007fff
_080E1D18:
ldr r3, _080E1D50 @ =gTasks
lsls r4, r6, 2
adds r1, r4, r6
lsls r1, 3
adds r1, r3
ldrh r2, [r5, 0x4]
ldr r7, _080E1D54 @ =0xffff8000
adds r0, r7, 0
orrs r0, r2
_080E1D2A:
strh r0, [r1, 0xE]
_080E1D2C:
adds r0, r4, r6
lsls r0, 3
adds r0, r3
movs r1, 0
strh r1, [r0, 0x18]
strh r1, [r0, 0x16]
ldrh r1, [r5, 0x8]
strh r1, [r0, 0x10]
ldrh r1, [r5, 0xA]
strh r1, [r0, 0x12]
ldr r1, _080E1D58 @ =sub_80E1AD8
str r1, [r0]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E1D50: .4byte gTasks
_080E1D54: .4byte 0xffff8000
_080E1D58: .4byte sub_80E1AD8
thumb_func_end sub_80E1C48
thumb_func_start sub_80E1D5C
sub_80E1D5C: @ 80E1D5C
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080E1D94 @ =gTasks
adds r5, r0, r1
ldr r4, _080E1D98 @ =gBattleAnimArgs
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E1D7C
adds r0, r2, 0
bl DestroyAnimVisualTask
_080E1D7C:
movs r0, 0
strh r0, [r5, 0x8]
strh r0, [r5, 0xA]
strh r0, [r5, 0xC]
ldrh r0, [r4, 0x2]
strh r0, [r5, 0xE]
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E1DA0
ldr r0, _080E1D9C @ =gBattleAnimAttacker
b _080E1DA2
.align 2, 0
_080E1D94: .4byte gTasks
_080E1D98: .4byte gBattleAnimArgs
_080E1D9C: .4byte gBattleAnimAttacker
_080E1DA0:
ldr r0, _080E1DF0 @ =gBattleAnimTarget
_080E1DA2:
ldrb r4, [r0]
adds r0, r4, 0
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
adds r0, r4, 0
bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldr r0, _080E1DF4 @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r5, 0x26]
ldr r2, _080E1DF8 @ =gUnknown_83FF52C
adds r0, r5, 0
bl sub_80762D0
ldr r0, _080E1DFC @ =sub_80E1E00
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E1DF0: .4byte gBattleAnimTarget
_080E1DF4: .4byte gBattleAnimArgs
_080E1DF8: .4byte gUnknown_83FF52C
_080E1DFC: .4byte sub_80E1E00
thumb_func_end sub_80E1D5C
thumb_func_start sub_80E1E00
sub_80E1E00: @ 80E1E00
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080E1E20 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080E1E24
cmp r0, 0x1
beq _080E1E84
b _080E1E92
.align 2, 0
_080E1E20: .4byte gTasks
_080E1E24:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _080E1E3A
adds r0, r5, 0
movs r1, 0x1
bl sub_80E1E98
_080E1E3A:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x12
bne _080E1E4A
adds r0, r5, 0
movs r1, 0
bl sub_80E1E98
_080E1E4A:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080E1E92
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
cmp r0, 0
bne _080E1E6C
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E1E92
_080E1E6C:
strh r1, [r4, 0xA]
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, _080E1E80 @ =gUnknown_83FF52C
adds r0, r4, 0
bl sub_80762D0
b _080E1E92
.align 2, 0
_080E1E80: .4byte gUnknown_83FF52C
_080E1E84:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E1E92
adds r0, r5, 0
bl DestroyAnimVisualTask
_080E1E92:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E1E00
thumb_func_start sub_80E1E98
sub_80E1E98: @ 80E1E98
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xC
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r2, _080E1EBC @ =gTasks
adds r4, r0, r2
cmp r1, 0
bne _080E1EC0
movs r1, 0x12
movs r3, 0xEC
b _080E1EC4
.align 2, 0
_080E1EBC: .4byte gTasks
_080E1EC0:
movs r1, 0x1E
movs r3, 0x14
_080E1EC4:
mov r2, sp
ldrh r0, [r4, 0x10]
subs r0, r1
strh r0, [r2]
ldrh r0, [r4, 0x10]
subs r0, r1
subs r0, 0x4
strh r0, [r2, 0x2]
ldrh r0, [r4, 0x10]
adds r0, r1
strh r0, [r2, 0x4]
ldrh r0, [r4, 0x10]
adds r0, r1
adds r0, 0x4
strh r0, [r2, 0x6]
add r2, sp, 0x8
lsls r1, r3, 24
asrs r1, 24
ldrh r0, [r4, 0x12]
adds r0, r1
strh r0, [r2]
ldrh r0, [r4, 0x12]
adds r0, r1
adds r0, 0x6
strh r0, [r2, 0x2]
movs r5, 0
mov r8, r2
ldr r7, _080E1F68 @ =gSprites
_080E1EFC:
lsls r0, r5, 1
add r0, sp
movs r2, 0
ldrsh r1, [r0, r2]
movs r0, 0x1
ands r0, r5
lsls r0, 1
add r0, r8
movs r3, 0
ldrsh r2, [r0, r3]
ldrb r3, [r4, 0x14]
subs r3, 0x5
lsls r3, 24
lsrs r3, 24
ldr r0, _080E1F6C @ =gUnknown_83FF54C
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080E1F50
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r7
movs r0, 0
strh r0, [r1, 0x2E]
movs r0, 0x2
cmp r5, 0x1
bhi _080E1F3E
movs r2, 0x2
negs r2, r2
adds r0, r2, 0
_080E1F3E:
strh r0, [r1, 0x30]
ldr r0, _080E1F70 @ =0x0000ffff
strh r0, [r1, 0x32]
strh r6, [r1, 0x34]
movs r0, 0x2
strh r0, [r1, 0x36]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
_080E1F50:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x3
bls _080E1EFC
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E1F68: .4byte gSprites
_080E1F6C: .4byte gUnknown_83FF54C
_080E1F70: .4byte 0x0000ffff
thumb_func_end sub_80E1E98
thumb_func_start sub_80E1F74
sub_80E1F74: @ 80E1F74
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x32]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
ble _080E1FBA
ldr r3, _080E1FC0 @ =gTasks
movs r0, 0x36
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x34
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
_080E1FBA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E1FC0: .4byte gTasks
thumb_func_end sub_80E1F74
thumb_func_start sub_80E1FC4
sub_80E1FC4: @ 80E1FC4
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080E200C @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
movs r0, 0
strh r0, [r4, 0x8]
ldr r1, _080E2010 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xA]
ldrb r0, [r1]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080E2014 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x5]
lsrs r0, 4
lsls r0, 4
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
adds r0, r1
strh r0, [r4, 0xC]
ldr r0, _080E2018 @ =sub_80E201C
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E200C: .4byte gTasks
_080E2010: .4byte gBattleAnimArgs
_080E2014: .4byte gSprites
_080E2018: .4byte sub_80E201C
thumb_func_end sub_80E1FC4
thumb_func_start sub_80E201C
sub_80E201C: @ 80E201C
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080E2064 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080E206C
ldrh r0, [r4, 0xC]
ldr r2, _080E2068 @ =gUnknown_83FF564
movs r3, 0x8
ldrsh r1, [r4, r3]
lsls r1, 1
adds r1, r2
ldrh r3, [r1]
movs r1, 0x10
movs r2, 0x8
bl BlendPalette
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x17
ble _080E205C
movs r0, 0
strh r0, [r4, 0x8]
_080E205C:
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
b _080E207E
.align 2, 0
_080E2064: .4byte gTasks
_080E2068: .4byte gUnknown_83FF564
_080E206C:
ldrh r0, [r4, 0xC]
movs r1, 0x10
movs r2, 0
movs r3, 0
bl BlendPalette
adds r0, r5, 0
bl DestroyAnimVisualTask
_080E207E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E201C
thumb_func_start sub_80E2084
sub_80E2084: @ 80E2084
push {lr}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
movs r2, 0xD0
lsls r2, 1
ldr r1, _080E20C0 @ =gBattleAnimAttacker
ldrb r3, [r1]
ldr r1, _080E20C4 @ =gBattleAnimArgs
ldrb r1, [r1]
str r1, [sp]
movs r1, 0xA
str r1, [sp, 0x4]
movs r1, 0x2
str r1, [sp, 0x8]
movs r1, 0x1E
str r1, [sp, 0xC]
ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet
str r1, [sp, 0x10]
ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
str r1, [sp, 0x14]
ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
str r1, [sp, 0x18]
movs r1, 0
bl sub_80BBA20
add sp, 0x1C
pop {r0}
bx r0
.align 2, 0
_080E20C0: .4byte gBattleAnimAttacker
_080E20C4: .4byte gBattleAnimArgs
_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet
_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
thumb_func_end sub_80E2084
thumb_func_start sub_80E20D4
sub_80E20D4: @ 80E20D4
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080E212C @ =gBattleAnimAttacker
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E20F0
ldr r1, _080E2130 @ =gBattleAnimArgs
ldrh r0, [r1]
negs r0, r0
strh r0, [r1]
_080E20F0:
ldrb r0, [r6]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, _080E2130 @ =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 r1, [r4, 0x2]
adds r0, r1
strh r0, [r5, 0x22]
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E2138
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
ldr r0, _080E2134 @ =0x0000fd80
strh r0, [r5, 0x30]
b _080E2160
.align 2, 0
_080E212C: .4byte gBattleAnimAttacker
_080E2130: .4byte gBattleAnimArgs
_080E2134: .4byte 0x0000fd80
_080E2138:
cmp r0, 0x1
bne _080E2152
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x2
orrs r0, r1
strb r0, [r2]
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
strh r0, [r5, 0x30]
b _080E2160
_080E2152:
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
_080E2160:
ldr r0, _080E218C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080E2180
ldrh r0, [r5, 0x2E]
negs r0, r0
strh r0, [r5, 0x2E]
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_080E2180:
ldr r0, _080E2190 @ =sub_80E2194
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E218C: .4byte gBattleAnimAttacker
_080E2190: .4byte sub_80E2194
thumb_func_end sub_80E20D4
thumb_func_start sub_80E2194
sub_80E2194: @ 80E2194
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x3A]
adds r0, r1
strh r0, [r2, 0x3A]
ldrh r1, [r2, 0x30]
ldrh r3, [r2, 0x3C]
adds r1, r3
strh r1, [r2, 0x3C]
lsls r0, 16
asrs r0, 24
strh r0, [r2, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r2, 0x26]
ldrh r0, [r2, 0x38]
adds r0, 0x1
strh r0, [r2, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xE
bne _080E21C8
adds r0, r2, 0
bl DestroyAnimSprite
_080E21C8:
pop {r0}
bx r0
thumb_func_end sub_80E2194
thumb_func_start sub_80E21CC
sub_80E21CC: @ 80E21CC
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080E221C @ =gTasks
adds r6, r1, r0
movs r1, 0
movs r0, 0xC
strh r0, [r6, 0x12]
movs r0, 0x3
strh r0, [r6, 0x14]
strh r1, [r6, 0x16]
ldr r5, _080E2220 @ =gBattleAnimAttacker
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E2224
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_8076B2C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080E2216
adds r0, 0x3
_080E2216:
asrs r0, 2
adds r0, r4, r0
b _080E2248
.align 2, 0
_080E221C: .4byte gTasks
_080E2220: .4byte gBattleAnimAttacker
_080E2224:
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_8076B2C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080E2244
adds r0, 0x3
_080E2244:
asrs r0, 2
subs r0, r4, r0
_080E2248:
strh r0, [r6, 0x1E]
ldr r5, _080E229C @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_8076B2C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080E226C
adds r0, 0x3
_080E226C:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x20]
ldr r4, _080E22A0 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x24]
ldr r0, _080E22A4 @ =sub_80E22A8
str r0, [r6]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E229C: .4byte gBattleAnimAttacker
_080E22A0: .4byte gBattleAnimTarget
_080E22A4: .4byte sub_80E22A8
thumb_func_end sub_80E21CC
thumb_func_start sub_80E22A8
sub_80E22A8: @ 80E22A8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, _080E22D0 @ =gTasks
adds r5, r0, r1
movs r0, 0x8
ldrsh r1, [r5, r0]
cmp r1, 0
beq _080E22D4
cmp r1, 0x1
bne _080E22CC
b _080E23CC
_080E22CC:
b _080E23DA
.align 2, 0
_080E22D0: .4byte gTasks
_080E22D4:
ldrh r0, [r5, 0xA]
adds r0, 0x1
strh r0, [r5, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080E23DA
strh r1, [r5, 0xA]
movs r1, 0x1E
ldrsh r0, [r5, r1]
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r3, 0x22
ldrsh r2, [r5, r3]
movs r4, 0x24
ldrsh r3, [r5, r4]
ldrb r4, [r5, 0x12]
str r4, [sp]
ldrb r4, [r5, 0xC]
str r4, [sp, 0x4]
add r4, sp, 0x10
str r4, [sp, 0x8]
adds r4, 0x2
str r4, [sp, 0xC]
bl sub_80E23E8
movs r6, 0
mov r8, r4
ldr r4, _080E2348 @ =gSprites
_080E230E:
add r0, sp, 0x10
movs r2, 0
ldrsh r1, [r0, r2]
mov r3, r8
movs r0, 0
ldrsh r2, [r3, r0]
ldr r0, _080E234C @ =gUnknown_83FF5CC
movs r3, 0x23
bl CreateSprite
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x40
beq _080E23A2
movs r1, 0x16
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E2362
cmp r6, 0
bne _080E2350
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
negs r0, r0
strh r0, [r1, 0x26]
strh r0, [r1, 0x24]
b _080E238A
.align 2, 0
_080E2348: .4byte gSprites
_080E234C: .4byte gUnknown_83FF5CC
_080E2350:
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x26]
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x24]
b _080E238A
_080E2362:
cmp r6, 0
bne _080E2378
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
negs r0, r0
strh r0, [r1, 0x24]
ldrh r0, [r5, 0x14]
b _080E2388
_080E2378:
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x24]
ldrh r0, [r5, 0x14]
negs r0, r0
_080E2388:
strh r0, [r1, 0x26]
_080E238A:
ldr r1, _080E23C8 @ =gSprites
adds r0, r2, r3
lsls r0, 2
adds r0, r1
movs r1, 0
strh r1, [r0, 0x2E]
strh r7, [r0, 0x30]
movs r1, 0xA
strh r1, [r0, 0x32]
ldrh r0, [r5, 0x1C]
adds r0, 0x1
strh r0, [r5, 0x1C]
_080E23A2:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x1
bls _080E230E
ldrh r2, [r5, 0xC]
movs r3, 0xC
ldrsh r1, [r5, r3]
movs r4, 0x12
ldrsh r0, [r5, r4]
cmp r1, r0
bne _080E23C0
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_080E23C0:
adds r0, r2, 0x1
strh r0, [r5, 0xC]
b _080E23DA
.align 2, 0
_080E23C8: .4byte gSprites
_080E23CC:
movs r1, 0x1C
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E23DA
adds r0, r7, 0
bl DestroyAnimVisualTask
_080E23DA:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E22A8
thumb_func_start sub_80E23E8
sub_80E23E8: @ 80E23E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r4, [sp, 0x28]
ldr r5, [sp, 0x2C]
ldr r6, [sp, 0x30]
mov r9, r6
ldr r6, [sp, 0x34]
mov r10, r6
lsls r0, 16
lsrs r0, 16
mov r12, r0
lsls r1, 16
lsrs r1, 16
str r1, [sp]
lsls r2, 16
lsrs r2, 16
adds r7, r2, 0
lsls r3, 16
lsrs r3, 16
str r3, [sp, 0x4]
lsls r4, 24
lsrs r6, r4, 24
lsls r5, 24
lsrs r5, 24
mov r8, r5
cmp r5, 0
bne _080E2430
mov r2, r9
strh r0, [r2]
mov r6, r10
strh r1, [r6]
b _080E248E
_080E2430:
cmp r5, r6
bcc _080E243E
mov r0, r9
strh r2, [r0]
mov r1, r10
strh r3, [r1]
b _080E248E
_080E243E:
subs r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
mov r2, r12
lsls r1, r2, 16
asrs r1, 16
lsls r5, r1, 8
lsls r0, r7, 16
asrs r0, 16
subs r0, r1
lsls r0, 8
adds r1, r6, 0
bl __divsi3
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r5, r0
ldr r2, [sp]
lsls r1, r2, 16
asrs r1, 16
lsls r4, r1, 8
ldr r2, [sp, 0x4]
lsls r0, r2, 16
asrs r0, 16
subs r0, r1
lsls r0, 8
adds r1, r6, 0
bl __divsi3
mov r6, r8
muls r6, r0
adds r0, r6, 0
adds r4, r0
asrs r5, 8
mov r0, r9
strh r5, [r0]
asrs r4, 8
mov r1, r10
strh r4, [r1]
_080E248E:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E23E8
thumb_func_start sub_80E24A0
sub_80E24A0: @ 80E24A0
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, 0x24
ble _080E24D6
ldr r3, _080E24DC @ =gTasks
movs r0, 0x32
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x30
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
_080E24D6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E24DC: .4byte gTasks
thumb_func_end sub_80E24A0
thumb_func_start sub_80E24E0
sub_80E24E0: @ 80E24E0
push {r4,lr}
adds r4, r0, 0
ldr r1, _080E250C @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x36]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
ldr r1, _080E2510 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080E2514 @ =sub_8075764
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E250C: .4byte gBattleAnimArgs
_080E2510: .4byte DestroyAnimSprite
_080E2514: .4byte sub_8075764
thumb_func_end sub_80E24E0
thumb_func_start sub_80E2518
sub_80E2518: @ 80E2518
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r0, 2
add r0, r9
lsls r0, 3
ldr r1, _080E2638 @ =gTasks
adds r7, r0, r1
ldr r0, _080E263C @ =gBattleAnimAttacker
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x1E]
mov r1, r10
ldrb r0, [r1]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
ldr r0, _080E2640 @ =gBattleAnimTarget
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r4, r0, 0
mov r1, r8
ldrb r0, [r1]
movs r1, 0
bl sub_8076B2C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080E258A
adds r0, 0x3
_080E258A:
asrs r0, 2
adds r0, r4, r0
strh r0, [r7, 0x24]
ldr r4, _080E2644 @ =gUnknown_83FF62C
movs r0, 0x1E
ldrsh r5, [r7, r0]
movs r1, 0x20
ldrsh r6, [r7, r1]
mov r1, r8
ldrb r0, [r1]
bl GetBattlerSpriteSubpriority
adds r3, r0, 0
subs r3, 0x5
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x26]
cmp r0, 0x40
beq _080E2654
ldr r4, _080E2648 @ =gSprites
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x10
strh r1, [r0, 0x2E]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r7, 0x22]
strh r1, [r0, 0x32]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r7, 0x24]
strh r1, [r0, 0x36]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080E264C @ =0x0000ffe0
strh r1, [r0, 0x38]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl sub_8075068
mov r1, r10
ldrb r0, [r1]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E2632
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x1
bl StartSpriteAffineAnim
_080E2632:
ldr r0, _080E2650 @ =sub_80E2668
str r0, [r7]
b _080E265A
.align 2, 0
_080E2638: .4byte gTasks
_080E263C: .4byte gBattleAnimAttacker
_080E2640: .4byte gBattleAnimTarget
_080E2644: .4byte gUnknown_83FF62C
_080E2648: .4byte gSprites
_080E264C: .4byte 0x0000ffe0
_080E2650: .4byte sub_80E2668
_080E2654:
mov r0, r9
bl DestroyAnimVisualTask
_080E265A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E2518
thumb_func_start sub_80E2668
sub_80E2668: @ 80E2668
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080E268C @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _080E26D0
cmp r1, 0x1
bgt _080E2690
cmp r1, 0
beq _080E269A
b _080E276E
.align 2, 0
_080E268C: .4byte gTasks
_080E2690:
cmp r1, 0x2
beq _080E26F4
cmp r1, 0x3
beq _080E2768
b _080E276E
_080E269A:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E276E
strh r1, [r4, 0xA]
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080E26CC @ =gSprites
adds r0, r1
bl AnimateBallThrow
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _080E276E
b _080E275A
.align 2, 0
_080E26CC: .4byte gSprites
_080E26D0:
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080E26F0 @ =gSprites
adds r0, r1
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080E276E
movs r0, 0
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
b _080E275A
.align 2, 0
_080E26F0: .4byte gSprites
_080E26F4:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E276E
movs r0, 0
strh r0, [r4, 0xA]
ldrh r2, [r4, 0xC]
adds r2, 0x1
strh r2, [r4, 0xC]
ldr r5, _080E2764 @ =gSprites
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
movs r0, 0x1
ands r2, r0
adds r1, 0x3E
lsls r2, 2
ldrb r3, [r1]
subs r0, 0x6
ands r0, r3
orrs r0, r2
strb r0, [r1]
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080E276E
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r0, [r0, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
_080E275A:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E276E
.align 2, 0
_080E2764: .4byte gSprites
_080E2768:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080E276E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E2668
thumb_func_start sub_80E2774
sub_80E2774: @ 80E2774
push {r4-r6,lr}
adds r4, r0, 0
ldr r0, _080E2788 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r6, r0, 0
cmp r1, 0
bne _080E2790
ldr r0, _080E278C @ =gBattleAnimAttacker
b _080E2792
.align 2, 0
_080E2788: .4byte gBattleAnimArgs
_080E278C: .4byte gBattleAnimAttacker
_080E2790:
ldr r0, _080E27F8 @ =gBattleAnimTarget
_080E2792:
ldrb r5, [r0]
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r3, _080E27FC @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080E2800 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
adds r1, r6, 0
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x3A]
movs r2, 0x2
ldrsh r0, [r1, r2]
movs r1, 0x1
cmp r0, 0
bne _080E27C0
movs r3, 0x1
negs r3, r3
adds r1, r3, 0
_080E27C0:
strh r1, [r4, 0x3C]
adds r0, r5, 0
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
movs r1, 0x2
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080E2804
ldrb r2, [r4, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
orrs r1, r0
lsls r1, 1
subs r0, 0x47
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x3]
adds r0, r5, 0
movs r1, 0x4
bl sub_8076B2C
subs r0, 0x8
b _080E280E
.align 2, 0
_080E27F8: .4byte gBattleAnimTarget
_080E27FC: .4byte 0x000003ff
_080E2800: .4byte 0xfffffc00
_080E2804:
adds r0, r5, 0
movs r1, 0x5
bl sub_8076B2C
adds r0, 0x8
_080E280E:
strh r0, [r4, 0x20]
ldr r0, _080E281C @ =sub_80E2820
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E281C: .4byte sub_80E2820
thumb_func_end sub_80E2774
thumb_func_start sub_80E2820
sub_80E2820: @ 80E2820
push {lr}
adds r2, r0, 0
movs r0, 0x2E
ldrsh r1, [r2, r0]
cmp r1, 0x1
beq _080E2868
cmp r1, 0x1
bgt _080E2836
cmp r1, 0
beq _080E2840
b _080E28D8
_080E2836:
cmp r1, 0x2
beq _080E2878
cmp r1, 0x3
beq _080E289E
b _080E28D8
_080E2840:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E28D8
strh r1, [r2, 0x30]
ldrh r0, [r2, 0x3C]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x32]
adds r0, 0x1
strh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
bne _080E28D8
b _080E2896
_080E2868:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
bne _080E28D8
b _080E2892
_080E2878:
movs r0, 0x3C
ldrsh r1, [r2, r0]
lsls r1, 2
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _080E28D8
_080E2892:
movs r0, 0
strh r0, [r2, 0x30]
_080E2896:
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
b _080E28D8
_080E289E:
movs r0, 0x3C
ldrsh r1, [r2, r0]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
bne _080E28D8
ldrh r0, [r2, 0x3A]
subs r0, 0x1
strh r0, [r2, 0x3A]
lsls r0, 16
cmp r0, 0
beq _080E28D2
movs r0, 0
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x2E]
subs r0, 0x1
strh r0, [r2, 0x2E]
b _080E28D8
_080E28D2:
adds r0, r2, 0
bl DestroyAnimSprite
_080E28D8:
pop {r0}
bx r0
thumb_func_end sub_80E2820
thumb_func_start sub_80E28DC
sub_80E28DC: @ 80E28DC
push {r4,lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r2, _080E28F4 @ =gBattleAnimArgs
movs r3, 0
ldrsh r0, [r2, r3]
cmp r0, 0
bne _080E28F8
adds r0, r1, 0
bl DestroyAnimVisualTask
b _080E2920
.align 2, 0
_080E28F4: .4byte gBattleAnimArgs
_080E28F8:
ldr r0, _080E2928 @ =gTasks
lsls r4, r1, 2
adds r4, r1
lsls r4, 3
adds r4, r0
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x8]
ldrb r0, [r2]
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E292C @ =gUnknown_83FF65C
adds r0, r4, 0
bl sub_80762D0
ldr r0, _080E2930 @ =sub_80E2934
str r0, [r4]
_080E2920:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E2928: .4byte gTasks
_080E292C: .4byte gUnknown_83FF65C
_080E2930: .4byte sub_80E2934
thumb_func_end sub_80E28DC
thumb_func_start sub_80E2934
sub_80E2934: @ 80E2934
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080E2974 @ =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E298E
movs r0, 0
strh r0, [r4, 0xA]
ldrh r1, [r4, 0xC]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E297C
ldr r2, _080E2978 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2
b _080E298C
.align 2, 0
_080E2974: .4byte gTasks
_080E2978: .4byte gSprites
_080E297C:
ldr r2, _080E29D4 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _080E29D8 @ =0x0000fffe
_080E298C:
strh r1, [r0, 0x24]
_080E298E:
adds r0, r4, 0
bl sub_8076308
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _080E29EA
ldr r2, _080E29D4 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
ldrh r0, [r4, 0x8]
subs r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
cmp r0, 0
beq _080E29E4
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080E29DC @ =gTasks
adds r0, r1
ldrh r1, [r0, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, _080E29E0 @ =gUnknown_83FF65C
bl sub_80762D0
strh r5, [r4, 0xA]
strh r5, [r4, 0xC]
b _080E29EA
.align 2, 0
_080E29D4: .4byte gSprites
_080E29D8: .4byte 0x0000fffe
_080E29DC: .4byte gTasks
_080E29E0: .4byte gUnknown_83FF65C
_080E29E4:
adds r0, r6, 0
bl DestroyAnimVisualTask
_080E29EA:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E2934
thumb_func_start sub_80E29F0
sub_80E29F0: @ 80E29F0
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080E2A04 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E2A0C
ldr r4, _080E2A08 @ =gBattleAnimAttacker
b _080E2A0E
.align 2, 0
_080E2A04: .4byte gBattleAnimArgs
_080E2A08: .4byte gBattleAnimAttacker
_080E2A0C:
ldr r4, _080E2A4C @ =gBattleAnimTarget
_080E2A0E:
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
bl sub_8076B2C
strh r0, [r5, 0x22]
movs r1, 0x22
ldrsh r0, [r5, r1]
cmp r0, 0x7
bgt _080E2A32
movs r0, 0x8
strh r0, [r5, 0x22]
_080E2A32:
movs r2, 0
strh r2, [r5, 0x2E]
ldr r1, _080E2A50 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x30]
strh r2, [r5, 0x32]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x34]
ldr r0, _080E2A54 @ =sub_80E2A58
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E2A4C: .4byte gBattleAnimTarget
_080E2A50: .4byte gBattleAnimArgs
_080E2A54: .4byte sub_80E2A58
thumb_func_end sub_80E29F0
thumb_func_start sub_80E2A58
sub_80E2A58: @ 80E2A58
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
lsls r0, 16
asrs r0, 16
movs r2, 0x30
ldrsh r1, [r3, r2]
cmp r0, r1
blt _080E2AAC
movs r0, 0
strh r0, [r3, 0x2E]
ldrh r1, [r3, 0x32]
adds r1, 0x1
movs r0, 0x1
ands r1, r0
strh r1, [r3, 0x32]
movs r0, 0x3E
adds r0, r3
mov r12, r0
lsls r1, 2
ldrb r2, [r0]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
movs r2, 0x32
ldrsh r0, [r3, r2]
cmp r0, 0
beq _080E2AAC
ldrh r0, [r3, 0x34]
subs r0, 0x1
strh r0, [r3, 0x34]
lsls r0, 16
cmp r0, 0
bne _080E2AAC
adds r0, r3, 0
bl DestroyAnimSprite
_080E2AAC:
pop {r0}
bx r0
thumb_func_end sub_80E2A58
thumb_func_start sub_80E2AB0
sub_80E2AB0: @ 80E2AB0
push {lr}
adds r3, r0, 0
ldr r0, _080E2ADC @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E2AE0
ldrb r2, [r3, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
orrs r1, r0
lsls r1, 1
subs r0, 0x47
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x3]
movs r0, 0x64
strh r0, [r3, 0x20]
movs r0, 0x1
b _080E2AE6
.align 2, 0
_080E2ADC: .4byte gBattleAnimArgs
_080E2AE0:
movs r0, 0x8C
strh r0, [r3, 0x20]
ldr r0, _080E2AF4 @ =0x0000ffff
_080E2AE6:
strh r0, [r3, 0x3C]
movs r0, 0x38
strh r0, [r3, 0x22]
ldr r0, _080E2AF8 @ =sub_80E2AFC
str r0, [r3, 0x1C]
pop {r0}
bx r0
.align 2, 0
_080E2AF4: .4byte 0x0000ffff
_080E2AF8: .4byte sub_80E2AFC
thumb_func_end sub_80E2AB0
thumb_func_start sub_80E2AFC
sub_80E2AFC: @ 80E2AFC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x8
bls _080E2B0A
b _080E2CDC
_080E2B0A:
lsls r0, 2
ldr r1, _080E2B14 @ =_080E2B18
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E2B14: .4byte _080E2B18
.align 2, 0
_080E2B18:
.4byte _080E2B3C
.4byte _080E2B6E
.4byte _080E2B80
.4byte _080E2BC0
.4byte _080E2BD2
.4byte _080E2C10
.4byte _080E2C74
.4byte _080E2C94
.4byte _080E2CBA
_080E2B3C:
movs r3, 0x3C
ldrsh r0, [r4, r3]
lsls r0, 1
ldrh r1, [r4, 0x22]
subs r1, r0
strh r1, [r4, 0x22]
ldrh r2, [r4, 0x30]
movs r0, 0x1
ands r0, r2
cmp r0, 0
beq _080E2B5E
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r1, 1
ldrh r0, [r4, 0x20]
subs r0, r1
strh r0, [r4, 0x20]
_080E2B5E:
adds r0, r2, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
beq _080E2B6C
b _080E2CDC
_080E2B6C:
b _080E2CAE
_080E2B6E:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
beq _080E2B7E
b _080E2CDC
_080E2B7E:
b _080E2CAE
_080E2B80:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r3, 0x3C
ldrsh r1, [r4, r3]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r3, _080E2BBC @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xC
beq _080E2BB8
b _080E2CDC
_080E2BB8:
b _080E2CAE
.align 2, 0
_080E2BBC: .4byte gSineTable
_080E2BC0:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
beq _080E2BD0
b _080E2CDC
_080E2BD0:
b _080E2CAE
_080E2BD2:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 1
adds r1, r0
ldrh r0, [r4, 0x22]
subs r0, r1
strh r0, [r4, 0x22]
ldr r3, _080E2C0C @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xC
bne _080E2CDC
b _080E2CB2
.align 2, 0
_080E2C0C: .4byte gSineTable
_080E2C10:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r3, 0x3C
ldrsh r1, [r4, r3]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r3, _080E2C68 @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xF
bne _080E2C5C
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r3, _080E2C6C @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080E2C70 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
_080E2C5C:
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x12
bne _080E2CDC
b _080E2CAE
.align 2, 0
_080E2C68: .4byte gSineTable
_080E2C6C: .4byte 0x000003ff
_080E2C70: .4byte 0xfffffc00
_080E2C74:
movs r3, 0x3C
ldrsh r0, [r4, r3]
lsls r1, r0, 1
adds r1, r0
lsls r1, 1
ldrh r0, [r4, 0x20]
adds r1, r0
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _080E2CDC
b _080E2CAE
_080E2C94:
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r0, 1
ldrh r3, [r4, 0x20]
adds r0, r3
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080E2CDC
_080E2CAE:
movs r0, 0
strh r0, [r4, 0x30]
_080E2CB2:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080E2CDC
_080E2CBA:
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 1
adds r1, r0
ldrh r0, [r4, 0x20]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080E2CDC
adds r0, r4, 0
bl DestroyAnimSprite
_080E2CDC:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E2AFC
thumb_func_start sub_80E2CE4
sub_80E2CE4: @ 80E2CE4
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080E2D34 @ =gTasks
adds r6, r1, r0
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
bl IsDoubleBattle
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x1
bne _080E2D44
ldr r5, _080E2D38 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r1, [r5]
movs r0, 0x2
eors r0, r1
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
ble _080E2D3C
strh r7, [r6, 0x24]
b _080E2D64
.align 2, 0
_080E2D34: .4byte gTasks
_080E2D38: .4byte gBattleAnimAttacker
_080E2D3C:
ldr r0, _080E2D40 @ =0x0000ffff
b _080E2D62
.align 2, 0
_080E2D40: .4byte 0x0000ffff
_080E2D44:
ldr r0, _080E2D58 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E2D60
ldr r0, _080E2D5C @ =0x0000ffff
b _080E2D62
.align 2, 0
_080E2D58: .4byte gBattleAnimAttacker
_080E2D5C: .4byte 0x0000ffff
_080E2D60:
movs r0, 0x1
_080E2D62:
strh r0, [r6, 0x24]
_080E2D64:
ldr r0, _080E2D70 @ =sub_80E2D74
str r0, [r6]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E2D70: .4byte sub_80E2D74
thumb_func_end sub_80E2CE4
thumb_func_start sub_80E2D74
sub_80E2D74: @ 80E2D74
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080E2D98 @ =gTasks
adds r3, r0, r1
movs r1, 0x8
ldrsh r0, [r3, r1]
cmp r0, 0x8
bls _080E2D8E
b _080E2F08
_080E2D8E:
lsls r0, 2
ldr r1, _080E2D9C @ =_080E2DA0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E2D98: .4byte gTasks
_080E2D9C: .4byte _080E2DA0
.align 2, 0
_080E2DA0:
.4byte _080E2DC4
.4byte _080E2DD6
.4byte _080E2E08
.4byte _080E2E38
.4byte _080E2E5E
.4byte _080E2E88
.4byte _080E2E98
.4byte _080E2EB8
.4byte _080E2EF0
_080E2DC4:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
beq _080E2DD4
b _080E2F08
_080E2DD4:
b _080E2EE0
_080E2DD6:
ldr r2, _080E2E04 @ =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r2, 0x24
ldrsh r0, [r3, r2]
lsls r2, r0, 1
adds r2, r0
ldrh r0, [r1, 0x24]
subs r0, r2
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
beq _080E2E02
b _080E2F08
_080E2E02:
b _080E2EE0
.align 2, 0
_080E2E04: .4byte gSprites
_080E2E08:
ldr r2, _080E2E34 @ =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x24
ldrsh r2, [r3, r0]
lsls r0, r2, 1
adds r0, r2
ldrh r2, [r1, 0x24]
adds r0, r2
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _080E2F08
b _080E2EE0
.align 2, 0
_080E2E34: .4byte gSprites
_080E2E38:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _080E2F08
movs r0, 0
strh r0, [r3, 0xA]
ldrh r1, [r3, 0xC]
movs r2, 0xC
ldrsh r0, [r3, r2]
cmp r0, 0
bne _080E2EE4
adds r0, r1, 0x1
strh r0, [r3, 0xC]
movs r0, 0x1
strh r0, [r3, 0x8]
b _080E2F08
_080E2E5E:
ldr r2, _080E2E84 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r3, 0x24]
ldrh r2, [r0, 0x24]
adds r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080E2F08
b _080E2EE0
.align 2, 0
_080E2E84: .4byte gSprites
_080E2E88:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _080E2F08
b _080E2EE0
_080E2E98:
ldr r2, _080E2EB4 @ =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x24
ldrsh r2, [r3, r0]
lsls r2, 2
ldrh r0, [r1, 0x24]
subs r0, r2
b _080E2ED0
.align 2, 0
_080E2EB4: .4byte gSprites
_080E2EB8:
ldr r2, _080E2EEC @ =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r2, 0x24
ldrsh r0, [r3, r2]
lsls r0, 2
ldrh r2, [r1, 0x24]
adds r0, r2
_080E2ED0:
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080E2F08
_080E2EE0:
movs r0, 0
strh r0, [r3, 0xA]
_080E2EE4:
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
b _080E2F08
.align 2, 0
_080E2EEC: .4byte gSprites
_080E2EF0:
ldr r2, _080E2F10 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
bl DestroyAnimVisualTask
_080E2F08:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E2F10: .4byte gSprites
thumb_func_end sub_80E2D74
thumb_func_start sub_80E2F14
sub_80E2F14: @ 80E2F14
push {r4,lr}
adds r4, r0, 0
ldr r0, _080E2F30 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E2F38
adds r0, r4, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080E2F34 @ =gBattleAnimAttacker
b _080E2F3A
.align 2, 0
_080E2F30: .4byte gBattleAnimArgs
_080E2F34: .4byte gBattleAnimAttacker
_080E2F38:
ldr r0, _080E2F90 @ =gBattleAnimTarget
_080E2F3A:
ldrb r0, [r0]
strh r0, [r4, 0x3C]
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E2F5E
ldrb r0, [r4, 0x3]
movs r1, 0x3F
negs r1, r1
ands r1, r0
movs r0, 0x10
orrs r1, r0
strb r1, [r4, 0x3]
_080E2F5E:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
bl sub_8076884
movs r2, 0x3
ands r2, r0
lsls r2, 2
ldrb r3, [r4, 0x5]
movs r1, 0xD
negs r1, r1
adds r0, r1, 0
ands r0, r3
orrs r0, r2
strb r0, [r4, 0x5]
ldrb r0, [r4, 0x1]
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4, 0x1]
ldr r0, _080E2F94 @ =sub_80E2F98
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E2F90: .4byte gBattleAnimTarget
_080E2F94: .4byte sub_80E2F98
thumb_func_end sub_80E2F14
thumb_func_start sub_80E2F98
sub_80E2F98: @ 80E2F98
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080E2FA6
b _080E3196
_080E2FA6:
lsls r0, 2
ldr r1, _080E2FB0 @ =_080E2FB4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E2FB0: .4byte _080E2FB4
.align 2, 0
_080E2FB4:
.4byte _080E2FC8
.4byte _080E30C8
.4byte _080E3130
.4byte _080E3144
.4byte _080E3190
_080E2FC8:
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0x5
bhi _080E2FF8
lsls r0, 2
ldr r1, _080E2FDC @ =_080E2FE0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E2FDC: .4byte _080E2FE0
.align 2, 0
_080E2FE0:
.4byte _080E2FFC
.4byte _080E3018
.4byte _080E303A
.4byte _080E3056
.4byte _080E2FFC
.4byte _080E307C
_080E2FF8:
movs r0, 0
strh r0, [r4, 0x3A]
_080E2FFC:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
bl sub_8076B2C
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
b _080E3070
_080E3018:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
bl sub_8076B2C
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl sub_8076B2C
adds r0, 0x4
b _080E3076
_080E303A:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
bl sub_8076B2C
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
b _080E3070
_080E3056:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
bl sub_8076B2C
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
_080E3070:
bl sub_8076B2C
subs r0, 0x4
_080E3076:
lsls r0, 16
lsrs r1, r0, 16
b _080E309C
_080E307C:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r1, r0, 24
_080E309C:
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0x4
bne _080E30A8
movs r0, 0x18
b _080E30B2
_080E30A8:
cmp r0, 0x5
bne _080E30B0
movs r0, 0x6
b _080E30B2
_080E30B0:
movs r0, 0xC
_080E30B2:
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
strh r1, [r4, 0x36]
adds r0, r4, 0
bl obj_translate_based_on_private_1_2_3_4
b _080E3188
_080E30C8:
adds r0, r4, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _080E3196
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0x4
beq _080E3100
cmp r0, 0x5
beq _080E3120
ldrh r0, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r0, r2
movs r1, 0
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
strh r1, [r4, 0x26]
strh r1, [r4, 0x24]
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _080E3118
_080E3100:
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
strh r1, [r4, 0x26]
strh r1, [r4, 0x24]
strh r1, [r4, 0x38]
_080E3118:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
b _080E3196
_080E3120:
movs r0, 0
strh r0, [r4, 0x2E]
movs r1, 0x10
strh r1, [r4, 0x30]
strh r0, [r4, 0x32]
movs r0, 0x3
strh r0, [r4, 0x38]
b _080E3196
_080E3130:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080E3196
movs r0, 0
strh r0, [r4, 0x38]
b _080E3196
_080E3144:
ldrh r1, [r4, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E3156
ldrh r0, [r4, 0x30]
subs r0, 0x1
strh r0, [r4, 0x30]
b _080E315C
_080E3156:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
_080E315C:
ldrh r1, [r4, 0x32]
lsls r1, 8
ldrh r0, [r4, 0x30]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x20
bne _080E3196
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_080E3188:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _080E3196
_080E3190:
adds r0, r4, 0
bl DestroyAnimSprite
_080E3196:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E2F98
thumb_func_start sub_80E319C
sub_80E319C: @ 80E319C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
subs r0, r1
movs r2, 0x38
ldrsh r1, [r4, r2]
muls r0, r1
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
adds r5, r0, 0
strh r5, [r4, 0x24]
movs r1, 0x34
ldrsh r0, [r4, r1]
movs r2, 0x30
ldrsh r1, [r4, r2]
subs r0, r1
movs r2, 0x38
ldrsh r1, [r4, r2]
muls r0, r1
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
adds r3, r0, 0
strh r3, [r4, 0x26]
ldrh r1, [r4, 0x38]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E31FA
ldr r0, _080E3218 @ =gUnknown_83FF180
ldrh r1, [r4, 0x20]
adds r1, r5
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x22]
adds r2, r3
lsls r2, 16
asrs r2, 16
movs r3, 0x5
bl CreateSprite
_080E31FA:
movs r0, 0x38
ldrsh r1, [r4, r0]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r1, r0
bne _080E320C
adds r0, r4, 0
bl DestroyAnimSprite
_080E320C:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E3218: .4byte gUnknown_83FF180
thumb_func_end sub_80E319C
thumb_func_start sub_80E321C
sub_80E321C: @ 80E321C
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080E3250 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E3258
ldr r2, _080E3254 @ =gBattleAnimArgs
ldrh r1, [r5, 0x20]
ldrh r0, [r2]
subs r0, r1, r0
strh r0, [r5, 0x2E]
ldrh r0, [r2, 0x4]
subs r1, r0
b _080E3266
.align 2, 0
_080E3250: .4byte gBattleAnimTarget
_080E3254: .4byte gBattleAnimArgs
_080E3258:
ldr r2, _080E328C @ =gBattleAnimArgs
ldrh r1, [r5, 0x20]
ldrh r0, [r2]
adds r0, r1, r0
strh r0, [r5, 0x2E]
ldrh r0, [r2, 0x4]
adds r1, r0
_080E3266:
strh r1, [r5, 0x32]
adds r3, r2, 0
ldrh r1, [r5, 0x22]
ldrh r2, [r3, 0x2]
adds r2, r1, r2
strh r2, [r5, 0x30]
ldrh r0, [r3, 0x6]
adds r1, r0
strh r1, [r5, 0x34]
ldrh r0, [r3, 0x8]
strh r0, [r5, 0x36]
ldrh r0, [r5, 0x2E]
strh r0, [r5, 0x20]
strh r2, [r5, 0x22]
ldr r0, _080E3290 @ =sub_80E319C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E328C: .4byte gBattleAnimArgs
_080E3290: .4byte sub_80E319C
thumb_func_end sub_80E321C
thumb_func_start sub_80E3294
sub_80E3294: @ 80E3294
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
ldr r0, _080E32D8 @ =gTasks
mov r9, r0
lsls r7, r6, 2
adds r0, r7, r6
lsls r0, 3
mov r8, r0
mov r4, r8
add r4, r9
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E32DC
adds r0, r5, 0
movs r1, 0
bl PrepareBattlerSpriteForRotScale
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
b _080E3328
.align 2, 0
_080E32D8: .4byte gTasks
_080E32DC:
cmp r0, 0x1
bne _080E3334
ldrh r0, [r4, 0xA]
adds r0, 0x60
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
subs r0, 0xD
strh r0, [r4, 0xC]
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0xC
ldrsh r2, [r4, r0]
adds r0, r5, 0
movs r3, 0
bl SetSpriteRotScale
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _080E3360
movs r0, 0
strh r0, [r4, 0xE]
adds r0, r5, 0
bl ResetSpriteRotScale
ldr r1, _080E3330 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_080E3328:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E3360
.align 2, 0
_080E3330: .4byte gSprites
_080E3334:
ldr r0, _080E336C @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0
bl LoadBattleMonGfxAndAnimate
adds r3, r7, 0
mov r4, r9
movs r1, 0xF
mov r2, r8
adds r0, r4, r2
adds r0, 0x26
movs r2, 0
_080E334C:
strh r2, [r0]
subs r0, 0x2
subs r1, 0x1
cmp r1, 0
bge _080E334C
adds r0, r3, r6
lsls r0, 3
adds r0, r4
ldr r1, _080E3370 @ =sub_80E3374
str r1, [r0]
_080E3360:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E336C: .4byte gBattleAnimAttacker
_080E3370: .4byte sub_80E3374
thumb_func_end sub_80E3294
thumb_func_start sub_80E3374
sub_80E3374: @ 80E3374
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r3, r0, 24
ldr r1, _080E33A0 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r1
movs r0, 0x8
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080E33D8
cmp r5, 0x1
bgt _080E33A4
cmp r5, 0
beq _080E33AE
b _080E34C6
.align 2, 0
_080E33A0: .4byte gTasks
_080E33A4:
cmp r5, 0x2
beq _080E3444
cmp r5, 0x3
beq _080E3480
b _080E34C6
_080E33AE:
ldr r0, _080E33D0 @ =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r0
ldr r0, _080E33D4 @ =0x0000ff38
strh r0, [r1, 0x26]
movs r0, 0xC8
strh r0, [r1, 0x24]
adds r1, 0x3E
ldrb r2, [r1]
subs r0, 0xCD
ands r0, r2
strb r0, [r1]
strh r5, [r4, 0x1C]
b _080E3472
.align 2, 0
_080E33D0: .4byte gSprites
_080E33D4: .4byte 0x0000ff38
_080E33D8:
ldrh r1, [r4, 0x1C]
adds r1, 0x70
movs r5, 0
strh r1, [r4, 0x1C]
ldr r2, _080E343C @ =gSprites
lsls r0, r3, 4
adds r0, r3
lsls r0, 2
adds r2, r0, r2
lsls r1, 16
asrs r1, 24
ldrh r3, [r2, 0x26]
adds r1, r3
strh r1, [r2, 0x26]
movs r1, 0x22
ldrsh r0, [r2, r1]
movs r3, 0x26
ldrsh r1, [r2, r3]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
blt _080E3408
strh r5, [r2, 0x24]
_080E3408:
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0
ble _080E3412
strh r5, [r2, 0x26]
_080E3412:
movs r3, 0x26
ldrsh r0, [r2, r3]
cmp r0, 0
bne _080E34C6
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x76
bl PlaySE12WithPanning
ldr r1, _080E3440 @ =0xfffff800
adds r0, r1, 0
ldrh r2, [r4, 0x1C]
adds r0, r2
strh r0, [r4, 0x1C]
b _080E3472
.align 2, 0
_080E343C: .4byte gSprites
_080E3440: .4byte 0xfffff800
_080E3444:
ldrh r0, [r4, 0x1C]
subs r0, 0x70
strh r0, [r4, 0x1C]
lsls r0, 16
cmp r0, 0
bge _080E3454
movs r0, 0
strh r0, [r4, 0x1C]
_080E3454:
ldr r0, _080E347C @ =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r0
ldrh r2, [r4, 0x1C]
lsls r2, 16
asrs r2, 24
ldrh r0, [r1, 0x26]
subs r0, r2
strh r0, [r1, 0x26]
movs r3, 0x1C
ldrsh r0, [r4, r3]
cmp r0, 0
bne _080E34C6
_080E3472:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E34C6
.align 2, 0
_080E347C: .4byte gSprites
_080E3480:
ldrh r0, [r4, 0x1C]
adds r0, 0x70
strh r0, [r4, 0x1C]
ldr r2, _080E34CC @ =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r2
lsls r0, 16
asrs r0, 24
ldrh r2, [r1, 0x26]
adds r0, r2
strh r0, [r1, 0x26]
lsls r0, 16
cmp r0, 0
ble _080E34A4
movs r0, 0
strh r0, [r1, 0x26]
_080E34A4:
movs r3, 0x26
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080E34C6
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x76
bl PlaySE12WithPanning
adds r0, r6, 0
bl DestroyAnimVisualTask
_080E34C6:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E34CC: .4byte gSprites
thumb_func_end sub_80E3374
thumb_func_start sub_80E34D0
sub_80E34D0: @ 80E34D0
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080E34F4 @ =gBattleAnimTarget
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E34FC
ldrb r0, [r4]
bl GetBattlerSpriteSubpriority
subs r0, 0x2
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldr r4, _080E34F8 @ =0x0000ff70
b _080E350C
.align 2, 0
_080E34F4: .4byte gBattleAnimTarget
_080E34F8: .4byte 0x0000ff70
_080E34FC:
ldrb r0, [r4]
bl GetBattlerSpriteSubpriority
adds r0, 0x2
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldr r4, _080E3528 @ =0x0000ffa0
_080E350C:
ldr r0, _080E352C @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
strh r4, [r5, 0x26]
ldr r0, _080E3530 @ =sub_80E3534
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E3528: .4byte 0x0000ffa0
_080E352C: .4byte gBattleAnimTarget
_080E3530: .4byte sub_80E3534
thumb_func_end sub_80E34D0
thumb_func_start sub_80E3534
sub_80E3534: @ 80E3534
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080E3542
b _080E365E
_080E3542:
lsls r0, 2
ldr r1, _080E354C @ =_080E3550
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E354C: .4byte _080E3550
.align 2, 0
_080E3550:
.4byte _080E3564
.4byte _080E3588
.4byte _080E35C8
.4byte _080E35F8
.4byte _080E3624
_080E3564:
ldrh r0, [r4, 0x26]
adds r0, 0xA
strh r0, [r4, 0x26]
lsls r0, 16
cmp r0, 0
blt _080E365E
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xC6
bl PlaySE12WithPanning
movs r0, 0
strh r0, [r4, 0x26]
b _080E361C
_080E3588:
ldrh r1, [r4, 0x30]
adds r1, 0x4
movs r5, 0
strh r1, [r4, 0x30]
ldr r2, _080E35C4 @ =gSineTable
movs r3, 0x30
ldrsh r0, [r4, r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
negs r0, r0
strh r0, [r4, 0x26]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _080E365E
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xC6
bl PlaySE12WithPanning
strh r5, [r4, 0x30]
strh r5, [r4, 0x26]
b _080E361C
.align 2, 0
_080E35C4: .4byte gSineTable
_080E35C8:
ldrh r1, [r4, 0x30]
adds r1, 0x6
movs r3, 0
strh r1, [r4, 0x30]
ldr r2, _080E35F4 @ =gSineTable
movs r5, 0x30
ldrsh r0, [r4, r5]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 20
negs r0, r0
strh r0, [r4, 0x26]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _080E365E
strh r3, [r4, 0x30]
strh r3, [r4, 0x26]
b _080E361C
.align 2, 0
_080E35F4: .4byte gSineTable
_080E35F8:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080E365E
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xB9
bl PlaySE12WithPanning
movs r0, 0
strh r0, [r4, 0x30]
_080E361C:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080E365E
_080E3624:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080E365E
movs r0, 0
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x32]
adds r1, 0x1
strh r1, [r4, 0x32]
movs r0, 0x1
ands r1, r0
adds r3, r4, 0
adds r3, 0x3E
lsls r1, 2
ldrb r2, [r3]
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x7
bne _080E365E
adds r0, r4, 0
bl DestroyAnimSprite
_080E365E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E3534
thumb_func_start sub_80E3664
sub_80E3664: @ 80E3664
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r7, r0, 24
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
lsrs r1, r0, 16
str r1, [sp]
asrs r6, r0, 16
cmp r6, 0
blt _080E36A6
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
lsrs r1, r0, 16
mov r9, r1
asrs r1, r0, 16
cmp r1, 0
bge _080E36B4
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
ldr r1, _080E36B0 @ =gSprites
adds r0, r1
bl obj_delete_but_dont_free_vram
_080E36A6:
adds r0, r7, 0
bl DestroyAnimVisualTask
b _080E37BA
.align 2, 0
_080E36B0: .4byte gSprites
_080E36B4:
ldr r4, _080E3744 @ =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r5, r0, r4
ldrh r0, [r5, 0x24]
adds r0, 0x18
movs r1, 0
strh r0, [r5, 0x24]
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r6, r0, r4
ldrh r0, [r6, 0x24]
subs r0, 0x18
strh r0, [r6, 0x24]
strh r1, [r5, 0x2E]
strh r1, [r6, 0x2E]
strh r1, [r5, 0x30]
strh r1, [r6, 0x30]
strh r1, [r5, 0x32]
strh r1, [r6, 0x32]
movs r0, 0x10
strh r0, [r5, 0x34]
ldr r0, _080E3748 @ =0x0000fff0
strh r0, [r6, 0x34]
strh r1, [r5, 0x36]
movs r0, 0x80
strh r0, [r6, 0x36]
movs r0, 0x18
strh r0, [r5, 0x38]
strh r0, [r6, 0x38]
strh r7, [r5, 0x3A]
strh r7, [r6, 0x3A]
strh r1, [r5, 0x3C]
strh r1, [r6, 0x3C]
ldr r2, _080E374C @ =gTasks
lsls r3, r7, 2
adds r0, r3, r7
lsls r0, 3
adds r0, r2
movs r1, 0x2
strh r1, [r0, 0x8]
ldr r0, _080E3750 @ =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, _080E3754 @ =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
mov r12, r4
mov r10, r2
mov r8, r3
cmp r0, 0
bne _080E3758
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r2, r6, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
b _080E376E
.align 2, 0
_080E3744: .4byte gSprites
_080E3748: .4byte 0x0000fff0
_080E374C: .4byte gTasks
_080E3750: .4byte gBattleSpritesDataPtr
_080E3754: .4byte gBattleAnimTarget
_080E3758:
adds r1, r5, 0
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
adds r1, r6, 0
adds r1, 0x3E
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
_080E376E:
mov r1, r9
lsls r0, r1, 16
asrs r0, 16
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
mov r0, r12
adds r4, r2, r0
ldrb r1, [r4, 0x1]
movs r3, 0xD
negs r3, r3
adds r0, r3, 0
ands r0, r1
strb r0, [r4, 0x1]
ldr r1, [sp]
lsls r0, r1, 16
asrs r0, 16
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
mov r0, r12
adds r4, r1, r0
ldrb r0, [r4, 0x1]
ands r3, r0
strb r3, [r4, 0x1]
mov r3, r12
adds r3, 0x1C
adds r2, r3
ldr r0, _080E37CC @ =sub_80E37FC
str r0, [r2]
adds r1, r3
str r0, [r1]
mov r1, r8
adds r0, r1, r7
lsls r0, 3
add r0, r10
ldr r1, _080E37D0 @ =sub_80E37D4
str r1, [r0]
_080E37BA:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E37CC: .4byte sub_80E37FC
_080E37D0: .4byte sub_80E37D4
thumb_func_end sub_80E3664
thumb_func_start sub_80E37D4
sub_80E37D4: @ 80E37D4
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _080E37F8 @ =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r1
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E37F2
adds r0, r2, 0
bl DestroyAnimVisualTask
_080E37F2:
pop {r0}
bx r0
.align 2, 0
_080E37F8: .4byte gTasks
thumb_func_end sub_80E37D4
thumb_func_start sub_80E37FC
sub_80E37FC: @ 80E37FC
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E3846
movs r0, 0
strh r0, [r4, 0x30]
ldr r0, _080E3870 @ =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, _080E3874 @ =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E3846
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsls r1, r2, 29
lsrs r1, 31
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]
_080E3846:
ldrh r0, [r4, 0x34]
ldrh r1, [r4, 0x36]
adds r0, r1
movs r5, 0
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x36]
movs r2, 0x36
ldrsh r0, [r4, r2]
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080E3878
cmp r0, 0x1
beq _080E3890
b _080E38CE
.align 2, 0
_080E3870: .4byte gBattleSpritesDataPtr
_080E3874: .4byte gBattleAnimTarget
_080E3878:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
bne _080E38CE
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080E38CE
_080E3890:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
cmp r0, 0
ble _080E38CE
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x38]
subs r0, 0x2
strh r0, [r4, 0x38]
lsls r0, 16
cmp r0, 0
bge _080E38CE
ldr r3, _080E38D4 @ =gTasks
movs r2, 0x3C
ldrsh r1, [r4, r2]
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 obj_delete_but_dont_free_vram
_080E38CE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E38D4: .4byte gTasks
thumb_func_end sub_80E37FC
thumb_func_start sub_80E38D8
sub_80E38D8: @ 80E38D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r3, _080E3924 @ =gBattleAnimArgs
movs r2, 0
strh r2, [r3, 0xE]
ldr r1, _080E3928 @ =gAnimFriendship
ldrb r0, [r1]
ldrb r1, [r1]
adds r0, r1, 0
subs r0, 0x3D
lsls r0, 24
lsrs r0, 24
adds r2, r1, 0
cmp r0, 0x1E
bhi _080E38FC
movs r0, 0x1
strh r0, [r3, 0xE]
_080E38FC:
adds r0, r2, 0
subs r0, 0x5C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6C
bhi _080E390C
movs r0, 0x2
strh r0, [r3, 0xE]
_080E390C:
lsls r0, r1, 24
lsrs r0, 24
cmp r0, 0xC8
bls _080E3918
movs r0, 0x3
strh r0, [r3, 0xE]
_080E3918:
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E3924: .4byte gBattleAnimArgs
_080E3928: .4byte gAnimFriendship
thumb_func_end sub_80E38D8
thumb_func_start sub_80E392C
sub_80E392C: @ 80E392C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r1, _080E395C @ =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r0, r1
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0x4
bls _080E3952
b _080E3E6C
_080E3952:
lsls r0, 2
ldr r1, _080E3960 @ =_080E3964
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E395C: .4byte gTasks
_080E3960: .4byte _080E3964
.align 2, 0
_080E3964:
.4byte _080E3978
.4byte _080E3A2C
.4byte _080E3BEC
.4byte _080E3D0C
.4byte _080E3D90
_080E3978:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E39C4 @ =gTasks
mov r2, r8
lsls r4, r2, 2
adds r0, r4, r2
lsls r0, 3
adds r6, r0, r1
movs r3, 0x80
lsls r3, 4
adds r0, r3, 0
ldrh r1, [r6, 0xA]
adds r0, r1
strh r0, [r6, 0xA]
ldr r0, _080E39C8 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _080E39D0
ldr r2, _080E39CC @ =gSprites
lsls r3, r7, 4
adds r1, r3, r7
lsls r1, 2
adds r1, r2
ldrh r0, [r6, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r4, [r1, 0x24]
adds r0, r4
strh r0, [r1, 0x24]
b _080E39EA
.align 2, 0
_080E39C4: .4byte gTasks
_080E39C8: .4byte gBattleAnimAttacker
_080E39CC: .4byte gSprites
_080E39D0:
ldr r3, _080E3A24 @ =gSprites
lsls r4, r7, 4
adds r2, r4, r7
lsls r2, 2
adds r2, r3
ldrh r1, [r6, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
adds r2, r3, 0
adds r3, r4, 0
_080E39EA:
ldr r1, _080E3A28 @ =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r4, r0, r1
ldrb r0, [r4, 0xA]
strh r0, [r4, 0xA]
adds r1, r3, r7
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x24]
ldrh r1, [r1, 0x20]
adds r0, r1
lsls r0, 16
movs r1, 0x80
lsls r1, 14
adds r0, r1
movs r1, 0x98
lsls r1, 17
cmp r0, r1
bhi _080E3A16
b _080E3E6C
_080E3A16:
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E3E6C
.align 2, 0
_080E3A24: .4byte gSprites
_080E3A28: .4byte gTasks
_080E3A2C:
ldr r4, _080E3A90 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E3ACC
ldr r7, _080E3A94 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, _080E3A98 @ =gPlayerParty
adds r0, r5
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0x1
bl GetMonData
mov r9, r0
ldr r0, _080E3A9C @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080E3AA0
lsls r0, r2, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
b _080E3AA2
.align 2, 0
_080E3A90: .4byte gBattleAnimAttacker
_080E3A94: .4byte gBattlerPartyIndexes
_080E3A98: .4byte gPlayerParty
_080E3A9C: .4byte gBattleSpritesDataPtr
_080E3AA0:
ldrh r5, [r1, 0x2]
_080E3AA2:
movs r0, 0x1
bl GetAnimBankSpriteId
ldr r2, _080E3AC8 @ =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0x1
lsls r0, 24
lsrs r4, r0, 24
movs r7, 0
movs r6, 0x88
lsls r6, 1
b _080E3B54
.align 2, 0
_080E3AC8: .4byte gSprites
_080E3ACC:
ldr r7, _080E3B24 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, _080E3B28 @ =gEnemyParty
adds r0, r5
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0x1
bl GetMonData
mov r9, r0
ldr r0, _080E3B2C @ =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080E3B30
lsls r0, r2, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
b _080E3B32
.align 2, 0
_080E3B24: .4byte gBattlerPartyIndexes
_080E3B28: .4byte gEnemyParty
_080E3B2C: .4byte gBattleSpritesDataPtr
_080E3B30:
ldrh r5, [r1, 0x2]
_080E3B32:
movs r0, 0x1
bl GetAnimBankSpriteId
ldr r2, _080E3BD0 @ =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0x1
lsls r0, 24
lsrs r4, r0, 24
movs r7, 0x1
ldr r6, _080E3BD4 @ =0x0000ffe0
_080E3B54:
ldr r0, _080E3BD8 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
lsls r3, r6, 16
asrs r3, 16
str r0, [sp]
str r4, [sp, 0x4]
mov r2, r10
str r2, [sp, 0x8]
mov r4, r9
str r4, [sp, 0xC]
ldr r4, _080E3BDC @ =gBattleAnimAttacker
ldrb r0, [r4]
str r0, [sp, 0x10]
movs r0, 0
str r0, [sp, 0x14]
adds r0, r5, 0
adds r1, r7, 0
movs r2, 0
bl sub_80768D0
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080E3BE0 @ =gBattleSpritesDataPtr
ldr r1, [r0]
ldrb r0, [r4]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x2]
cmp r0, 0
beq _080E3BBE
ldr r1, _080E3BD0 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x5]
lsrs r0, 4
lsls r0, 4
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
orrs r0, r1
ldr r3, _080E3BE4 @ =0x00007fff
movs r1, 0x10
movs r2, 0x6
bl BlendPalette
_080E3BBE:
ldr r0, _080E3BE8 @ =gTasks
mov r3, r8
lsls r1, r3, 2
add r1, r8
lsls r1, 3
adds r1, r0
strh r5, [r1, 0x26]
b _080E3D82
.align 2, 0
_080E3BD0: .4byte gSprites
_080E3BD4: .4byte 0x0000ffe0
_080E3BD8: .4byte gBattleAnimTarget
_080E3BDC: .4byte gBattleAnimAttacker
_080E3BE0: .4byte gBattleSpritesDataPtr
_080E3BE4: .4byte 0x00007fff
_080E3BE8: .4byte gTasks
_080E3BEC:
ldr r1, _080E3C38 @ =gTasks
mov r0, r8
lsls r4, r0, 2
adds r0, r4, r0
lsls r0, 3
adds r6, r0, r1
ldrh r0, [r6, 0x26]
lsls r0, 24
lsrs r5, r0, 24
movs r1, 0x80
lsls r1, 4
adds r0, r1, 0
ldrh r2, [r6, 0xA]
adds r0, r2
strh r0, [r6, 0xA]
ldr r0, _080E3C3C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _080E3C44
ldr r3, _080E3C40 @ =gSprites
lsls r4, r5, 4
adds r2, r4, r5
lsls r2, 2
adds r2, r3
ldrh r1, [r6, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
adds r2, r3, 0
adds r3, r4, 0
b _080E3C5A
.align 2, 0
_080E3C38: .4byte gTasks
_080E3C3C: .4byte gBattleAnimAttacker
_080E3C40: .4byte gSprites
_080E3C44:
ldr r2, _080E3CA8 @ =gSprites
lsls r3, r5, 4
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r6, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r4, [r1, 0x24]
adds r0, r4
strh r0, [r1, 0x24]
_080E3C5A:
ldr r1, _080E3CAC @ =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r6, r0, r1
ldrb r0, [r6, 0xA]
strh r0, [r6, 0xA]
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x24]
ldrh r1, [r1, 0x20]
adds r0, r1
lsls r0, 16
lsrs r5, r0, 16
movs r1, 0x24
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080E3CDA
ldr r0, _080E3CB0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E3CB8
lsls r4, r5, 16
asrs r4, 16
ldr r0, _080E3CB4 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bge _080E3CDA
b _080E3CCE
.align 2, 0
_080E3CA8: .4byte gSprites
_080E3CAC: .4byte gTasks
_080E3CB0: .4byte gBattleAnimAttacker
_080E3CB4: .4byte gBattleAnimTarget
_080E3CB8:
lsls r4, r5, 16
asrs r4, 16
ldr r0, _080E3CFC @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
ble _080E3CDA
_080E3CCE:
ldrh r0, [r6, 0x24]
adds r0, 0x1
strh r0, [r6, 0x24]
ldr r1, _080E3D00 @ =gBattleAnimArgs
ldr r0, _080E3D04 @ =0x0000ffff
strh r0, [r1, 0xE]
_080E3CDA:
lsls r0, r5, 16
movs r2, 0x80
lsls r2, 14
adds r0, r2
movs r1, 0x98
lsls r1, 17
cmp r0, r1
bhi _080E3CEC
b _080E3E6C
_080E3CEC:
ldr r0, _080E3D08 @ =gTasks
mov r1, r9
add r1, r8
lsls r1, 3
adds r1, r0
movs r0, 0
strh r0, [r1, 0xA]
b _080E3D82
.align 2, 0
_080E3CFC: .4byte gBattleAnimTarget
_080E3D00: .4byte gBattleAnimArgs
_080E3D04: .4byte 0x0000ffff
_080E3D08: .4byte gTasks
_080E3D0C:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E3D58 @ =gTasks
mov r3, r8
lsls r4, r3, 2
adds r0, r4, r3
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x26]
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r5, _080E3D5C @ =gSprites
adds r0, r5
bl sub_8076B20
ldr r0, _080E3D60 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _080E3D64
lsls r1, r7, 4
adds r1, r7
lsls r1, 2
adds r1, r5
ldrh r0, [r1, 0x20]
negs r0, r0
subs r0, 0x20
strh r0, [r1, 0x24]
b _080E3D78
.align 2, 0
_080E3D58: .4byte gTasks
_080E3D5C: .4byte gSprites
_080E3D60: .4byte gBattleAnimAttacker
_080E3D64:
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r0, r5
ldrh r2, [r0, 0x20]
movs r4, 0x88
lsls r4, 1
adds r1, r4, 0
subs r1, r2
strh r1, [r0, 0x24]
_080E3D78:
ldr r0, _080E3D8C @ =gTasks
mov r1, r9
add r1, r8
lsls r1, 3
adds r1, r0
_080E3D82:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _080E3E6C
.align 2, 0
_080E3D8C: .4byte gTasks
_080E3D90:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E3E04 @ =gTasks
mov r0, r8
lsls r4, r0, 2
adds r0, r4, r0
lsls r0, 3
adds r2, r0, r1
movs r1, 0x80
lsls r1, 4
adds r0, r1, 0
ldrh r3, [r2, 0xA]
adds r0, r3
strh r0, [r2, 0xA]
ldr r0, _080E3E08 @ =gBattleAnimAttacker
mov r10, r0
ldrb r0, [r0]
str r2, [sp, 0x18]
bl GetBattlerSide
lsls r0, 24
mov r9, r4
ldr r2, [sp, 0x18]
cmp r0, 0
bne _080E3E10
ldr r1, _080E3E0C @ =gSprites
lsls r5, r7, 4
adds r0, r5, r7
lsls r0, 2
adds r6, r0, r1
ldrh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r1, [r6, 0x24]
adds r0, r1
strh r0, [r6, 0x24]
movs r2, 0x24
ldrsh r4, [r6, r2]
movs r3, 0x20
ldrsh r0, [r6, r3]
adds r4, r0
mov r1, r10
ldrb r0, [r1]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
cmp r4, r0
blt _080E3E48
movs r2, 0
strh r2, [r6, 0x24]
b _080E3E48
.align 2, 0
_080E3E04: .4byte gTasks
_080E3E08: .4byte gBattleAnimAttacker
_080E3E0C: .4byte gSprites
_080E3E10:
ldr r1, _080E3E7C @ =gSprites
lsls r5, r7, 4
adds r0, r5, r7
lsls r0, 2
adds r6, r0, r1
ldrh r1, [r2, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r6, 0x24]
subs r0, r1
strh r0, [r6, 0x24]
movs r3, 0x24
ldrsh r4, [r6, r3]
movs r1, 0x20
ldrsh r0, [r6, r1]
adds r4, r0
mov r2, r10
ldrb r0, [r2]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
cmp r4, r0
bgt _080E3E48
movs r4, 0
strh r4, [r6, 0x24]
_080E3E48:
ldr r1, _080E3E80 @ =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r0, r1
ldrb r1, [r0, 0xA]
strh r1, [r0, 0xA]
ldr r1, _080E3E7C @ =gSprites
adds r0, r3, r7
lsls r0, 2
adds r0, r1
movs r1, 0x24
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E3E6C
mov r0, r8
bl DestroyAnimVisualTask
_080E3E6C:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E3E7C: .4byte gSprites
_080E3E80: .4byte gTasks
thumb_func_end sub_80E392C
thumb_func_start sub_80E3E84
sub_80E3E84: @ 80E3E84
push {r4,lr}
adds r4, r0, 0
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080E3E96
cmp r0, 0x1
beq _080E3F36
b _080E3FB8
_080E3E96:
ldr r0, _080E3F14 @ =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080E3F28
movs r0, 0x3F
bl sub_8073A44
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x73
bl PlaySE12WithPanning
ldr r0, _080E3F18 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
strh r0, [r4, 0x22]
ldr r0, _080E3F1C @ =0x0000ffe0
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
ldr r0, _080E3F20 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080E3FB8
movs r0, 0x1
bl GetAnimBankSpriteId
ldr r2, _080E3F24 @ =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
b _080E3FB8
.align 2, 0
_080E3F14: .4byte gBattleAnimArgs
_080E3F18: .4byte gBattleAnimTarget
_080E3F1C: .4byte 0x0000ffe0
_080E3F20: .4byte gBattleAnimAttacker
_080E3F24: .4byte gSprites
_080E3F28:
adds r0, r4, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
b _080E3FB8
_080E3F36:
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x30]
adds r0, r2, 0x5
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7F
ble _080E3F6A
movs r1, 0x2E
ldrsh r0, [r4, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
adds r0, r2, 0
subs r0, 0x7A
strh r0, [r4, 0x30]
_080E3F6A:
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
ldr r0, _080E3F94 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E3F98
ldrh r2, [r4, 0x32]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x24]
subs r0, r1
strh r0, [r4, 0x24]
adds r1, r2, 0
b _080E3FA4
.align 2, 0
_080E3F94: .4byte gBattleAnimAttacker
_080E3F98:
ldrh r1, [r4, 0x32]
lsls r0, r1, 16
asrs r0, 24
ldrh r2, [r4, 0x24]
adds r0, r2
strh r0, [r4, 0x24]
_080E3FA4:
movs r0, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0x2
bne _080E3FB8
adds r0, r4, 0
bl DestroyAnimSprite
_080E3FB8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E3E84
thumb_func_start sub_80E3FC0
sub_80E3FC0: @ 80E3FC0
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080E3FE8 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r2, 0x26
ldrsh r0, [r0, r2]
adds r3, r1, 0
cmp r0, 0x4
bls _080E3FDC
b _080E412E
_080E3FDC:
lsls r0, 2
ldr r1, _080E3FEC @ =_080E3FF0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080E3FE8: .4byte gTasks
_080E3FEC: .4byte _080E3FF0
.align 2, 0
_080E3FF0:
.4byte _080E4004
.4byte _080E4054
.4byte _080E40B0
.4byte _080E40C8
.4byte _080E412E
_080E4004:
ldr r0, _080E4048 @ =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r0, _080E404C @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
ldr r1, _080E4050 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
movs r0, 0x6
strh r0, [r1, 0x8]
cmp r5, r2
ble _080E403A
negs r0, r0
strh r0, [r1, 0x8]
_080E403A:
strh r5, [r1, 0xA]
strh r2, [r1, 0xC]
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
b _080E414C
.align 2, 0
_080E4048: .4byte gBattleAnimAttacker
_080E404C: .4byte gBattleAnimTarget
_080E4050: .4byte gTasks
_080E4054:
ldr r1, _080E4090 @ =gBattlerSpriteIds
ldr r0, _080E4094 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, _080E4098 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r1, r0, r1
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r2, r0, r3
ldrh r0, [r2, 0x8]
ldrh r3, [r1, 0x24]
adds r0, r3
strh r0, [r1, 0x24]
movs r3, 0x8
ldrsh r0, [r2, r3]
cmp r0, 0
ble _080E409C
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xC
ldrsh r1, [r2, r3]
b _080E4122
.align 2, 0
_080E4090: .4byte gBattlerSpriteIds
_080E4094: .4byte gBattleAnimAttacker
_080E4098: .4byte gSprites
_080E409C:
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xC
ldrsh r1, [r2, r3]
cmp r0, r1
bgt _080E414C
b _080E4126
_080E40B0:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r3
movs r2, 0x8
ldrsh r1, [r0, r2]
negs r1, r1
strh r1, [r0, 0x8]
ldrh r1, [r0, 0x26]
adds r1, 0x1
strh r1, [r0, 0x26]
b _080E414C
_080E40C8:
ldr r1, _080E4108 @ =gBattlerSpriteIds
ldr r0, _080E410C @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, _080E4110 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r1, r0, r1
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r2, r0, r3
ldrh r0, [r2, 0x8]
ldrh r3, [r1, 0x24]
adds r0, r3
strh r0, [r1, 0x24]
movs r3, 0x8
ldrsh r0, [r2, r3]
cmp r0, 0
bge _080E4114
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xA
ldrsh r1, [r2, r3]
cmp r0, r1
bgt _080E414C
b _080E4126
.align 2, 0
_080E4108: .4byte gBattlerSpriteIds
_080E410C: .4byte gBattleAnimAttacker
_080E4110: .4byte gSprites
_080E4114:
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xA
ldrsh r1, [r2, r3]
_080E4122:
cmp r0, r1
blt _080E414C
_080E4126:
ldrh r0, [r2, 0x26]
adds r0, 0x1
strh r0, [r2, 0x26]
b _080E414C
_080E412E:
ldr r1, _080E4154 @ =gBattlerSpriteIds
ldr r0, _080E4158 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, _080E415C @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
bl DestroyAnimVisualTask
_080E414C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E4154: .4byte gBattlerSpriteIds
_080E4158: .4byte gBattleAnimAttacker
_080E415C: .4byte gSprites
thumb_func_end sub_80E3FC0
thumb_func_start sub_80E4160
sub_80E4160: @ 80E4160
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080E41C8 @ =gTasks
adds r4, r1, r0
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0xE]
ldr r0, _080E41CC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
adds r1, r2, 0
cmp r0, 0
bne _080E4194
movs r1, 0x1
_080E4194:
strh r1, [r4, 0x10]
ldr r2, _080E41D0 @ =gSprites
movs r0, 0xE
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x14]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x20]
strh r0, [r4, 0x12]
strh r5, [r4, 0x1A]
strh r5, [r4, 0x1E]
movs r0, 0x1
strh r0, [r4, 0x1C]
strh r5, [r4, 0x20]
ldr r0, _080E41D4 @ =sub_80E41D8
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E41C8: .4byte gTasks
_080E41CC: .4byte gBattleAnimAttacker
_080E41D0: .4byte gSprites
_080E41D4: .4byte sub_80E41D8
thumb_func_end sub_80E4160
thumb_func_start sub_80E41D8
sub_80E41D8: @ 80E41D8
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080E41FC @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080E4280
cmp r0, 0x1
bgt _080E4200
cmp r0, 0
beq _080E4206
b _080E42D6
.align 2, 0
_080E41FC: .4byte gTasks
_080E4200:
cmp r0, 0x2
beq _080E42D0
b _080E42D6
_080E4206:
ldrh r0, [r4, 0x1E]
adds r0, 0x8
movs r2, 0xFF
ands r0, r2
strh r0, [r4, 0x1E]
ldr r5, _080E4278 @ =gSprites
movs r6, 0xE
ldrsh r0, [r4, r6]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
ldr r3, _080E427C @ =gSineTable
movs r6, 0x1E
ldrsh r0, [r4, r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
strh r0, [r1, 0x24]
ldrh r0, [r4, 0x1A]
adds r0, 0x2
ands r0, r2
strh r0, [r4, 0x1A]
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
movs r6, 0x1A
ldrsh r0, [r4, r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x10]
muls r0, r1
ldrh r1, [r4, 0x12]
adds r0, r1
strh r0, [r2, 0x20]
movs r6, 0x1A
ldrsh r0, [r4, r6]
cmp r0, 0
bne _080E42D6
movs r0, 0xE
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrh r1, [r4, 0x12]
strh r1, [r0, 0x20]
b _080E42C0
.align 2, 0
_080E4278: .4byte gSprites
_080E427C: .4byte gSineTable
_080E4280:
ldrh r0, [r4, 0x1E]
adds r0, 0x8
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x1E]
ldr r3, _080E42C8 @ =gSprites
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldr r2, _080E42CC @ =gSineTable
movs r5, 0x1E
ldrsh r0, [r4, r5]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
strh r0, [r1, 0x24]
movs r6, 0x1E
ldrsh r2, [r4, r6]
cmp r2, 0
bne _080E42D6
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
strh r2, [r1, 0x24]
_080E42C0:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E42D6
.align 2, 0
_080E42C8: .4byte gSprites
_080E42CC: .4byte gSineTable
_080E42D0:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080E42D6:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E41D8
thumb_func_start sub_80E42DC
sub_80E42DC: @ 80E42DC
push {r4,lr}
adds r4, r0, 0
ldr r0, _080E4330 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
ldrh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Sin
strh r0, [r4, 0x26]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080E4322
adds r0, r4, 0
bl DestroyAnimSprite
_080E4322:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E4330: .4byte gBattleAnimTarget
thumb_func_end sub_80E42DC
thumb_func_start sub_80E4334
sub_80E4334: @ 80E4334
push {r4,lr}
adds r4, r0, 0
ldr r0, _080E436C @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080E4378
ldr r2, _080E4370 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r0, _080E4374 @ =0x0000fff5
strh r0, [r4, 0x2E]
movs r0, 0xC0
strh r0, [r4, 0x30]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _080E4392
.align 2, 0
_080E436C: .4byte gBattleAnimTarget
_080E4370: .4byte gBattleAnimArgs
_080E4374: .4byte 0x0000fff5
_080E4378:
movs r0, 0xB
strh r0, [r4, 0x2E]
movs r0, 0xC0
strh r0, [r4, 0x30]
ldr r1, _080E439C @ =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]
_080E4392:
ldr r0, _080E43A0 @ =sub_80E42DC
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E439C: .4byte gBattleAnimArgs
_080E43A0: .4byte sub_80E42DC
thumb_func_end sub_80E4334
thumb_func_start sub_80E43A4
sub_80E43A4: @ 80E43A4
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080E43E8 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
bl sub_8076B2C
strh r0, [r5, 0x22]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
bgt _080E43CE
movs r0, 0x10
strh r0, [r5, 0x22]
_080E43CE:
movs r0, 0
strh r0, [r5, 0x3A]
movs r1, 0x10
strh r1, [r5, 0x3C]
ldr r0, _080E43EC @ =sub_80E43F0
str r0, [r5, 0x1C]
lsls r1, 8
movs r0, 0x52
bl SetGpuReg
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E43E8: .4byte gBattleAnimAttacker
_080E43EC: .4byte sub_80E43F0
thumb_func_end sub_80E43A4
thumb_func_start sub_80E43F0
sub_80E43F0: @ 80E43F0
push {r4,lr}
adds r4, r0, 0
movs r0, 0x32
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _080E4468
cmp r1, 0x1
bgt _080E4406
cmp r1, 0
beq _080E4410
b _080E44E4
_080E4406:
cmp r1, 0x2
beq _080E447E
cmp r1, 0x3
beq _080E44DE
b _080E44E4
_080E4410:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E44E4
strh r1, [r4, 0x2E]
ldrh r1, [r4, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E443A
ldrh r2, [r4, 0x3A]
movs r3, 0x3A
ldrsh r0, [r4, r3]
cmp r0, 0xF
bgt _080E4448
adds r0, r2, 0x1
strh r0, [r4, 0x3A]
b _080E4448
_080E443A:
ldrh r2, [r4, 0x3C]
movs r3, 0x3C
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080E4448
subs r0, r2, 0x1
strh r0, [r4, 0x3C]
_080E4448:
adds r0, r1, 0x1
strh r0, [r4, 0x30]
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, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080E44E4
b _080E44D6
_080E4468:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _080E44E4
strh r1, [r4, 0x2E]
strh r1, [r4, 0x30]
b _080E44D6
_080E447E:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080E44E4
movs r0, 0
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080E44AA
ldrh r2, [r4, 0x3A]
movs r3, 0x3A
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080E44B8
subs r0, r2, 0x1
strh r0, [r4, 0x3A]
b _080E44B8
_080E44AA:
ldrh r2, [r4, 0x3C]
movs r3, 0x3C
ldrsh r0, [r4, r3]
cmp r0, 0xF
bgt _080E44B8
adds r0, r2, 0x1
strh r0, [r4, 0x3C]
_080E44B8:
adds r0, r1, 0x1
strh r0, [r4, 0x30]
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, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080E44E4
_080E44D6:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
b _080E44E4
_080E44DE:
adds r0, r4, 0
bl move_anim_8074EE0
_080E44E4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E43F0
thumb_func_start sub_80E44EC
sub_80E44EC: @ 80E44EC
push {lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r2, _080E4508 @ =gBattleAnimArgs
movs r0, 0
strh r0, [r2, 0xE]
ldr r0, _080E450C @ =gWeatherMoveAnim
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _080E4510
movs r0, 0x1
b _080E4532
.align 2, 0
_080E4508: .4byte gBattleAnimArgs
_080E450C: .4byte gWeatherMoveAnim
_080E4510:
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _080E451C
movs r0, 0x2
b _080E4532
_080E451C:
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _080E4528
movs r0, 0x3
b _080E4532
_080E4528:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080E4534
movs r0, 0x4
_080E4532:
strh r0, [r2, 0xE]
_080E4534:
adds r0, r3, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
thumb_func_end sub_80E44EC
thumb_func_start sub_80E4540
sub_80E4540: @ 80E4540
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080E4578 @ =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
ldr r0, _080E457C @ =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E4580 @ =gUnknown_83FF7A8
adds r0, r4, 0
bl sub_80762D0
ldr r0, _080E4584 @ =sub_80E4588
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E4578: .4byte gTasks
_080E457C: .4byte gBattleAnimArgs
_080E4580: .4byte gUnknown_83FF7A8
_080E4584: .4byte sub_80E4588
thumb_func_end sub_80E4540
thumb_func_start sub_80E4588
sub_80E4588: @ 80E4588
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r2, _080E45E0 @ =gTasks
adds r3, r0, r2
ldrh r0, [r3, 0x8]
adds r1, r0, 0x1
movs r5, 0
strh r1, [r3, 0x8]
subs r0, 0x10
lsls r0, 16
lsrs r0, 16
adds r6, r2, 0
cmp r0, 0x16
bhi _080E45EC
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080E45FC
strh r5, [r3, 0xA]
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
movs r5, 0x1
ands r0, r5
cmp r0, 0
bne _080E45EC
ldr r2, _080E45E4 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _080E45E8 @ =0x0000ffff
strh r1, [r0, 0x24]
b _080E45FC
.align 2, 0
_080E45E0: .4byte gTasks
_080E45E4: .4byte gSprites
_080E45E8: .4byte 0x0000ffff
_080E45EC:
ldr r2, _080E461C @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
_080E45FC:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r6
bl sub_8076308
lsls r0, 24
cmp r0, 0
bne _080E4614
adds r0, r4, 0
bl DestroyAnimVisualTask
_080E4614:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080E461C: .4byte gSprites
thumb_func_end sub_80E4588
.align 2, 0 @ Don't pad with nop.