summaryrefslogtreecommitdiff
path: root/asm/battle_anim_special.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_anim_special.s')
-rw-r--r--asm/battle_anim_special.s6299
1 files changed, 6299 insertions, 0 deletions
diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s
new file mode 100644
index 000000000..02a1216c6
--- /dev/null
+++ b/asm/battle_anim_special.s
@@ -0,0 +1,6299 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80EEC0C
+sub_80EEC0C: @ 80EEC0C
+ 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
+ str r0, [sp, 0x10]
+ ldr r0, _080EEDB4 @ =gBattleAnimAttacker
+ ldrb r4, [r0]
+ ldr r0, _080EEDB8 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080EEDBC @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r1, _080EEDC0 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080EEDC4 @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080EEDC8 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080EEDCC @ =gUnknown_3004FF0
+ adds r4, r0
+ ldrb r0, [r4]
+ ldr r1, _080EEDD0 @ =gSprites
+ mov r9, r1
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ add r4, r9
+ ldrb r7, [r4, 0x6]
+ ldrh r6, [r4, 0x38]
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080EEDD4 @ =SpriteCallbackDummy
+ bl CreateInvisibleSpriteWithCallback
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x14]
+ ldr r0, _080EEDD4 @ =SpriteCallbackDummy
+ bl CreateInvisibleSpriteWithCallback
+ mov r10, r0
+ mov r2, r10
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ ldrb r1, [r4, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r0, r1
+ movs r1, 0x4
+ mov r8, r1
+ mov r2, r8
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+ lsls r5, r7, 4
+ adds r5, r7
+ lsls r5, 2
+ add r5, r9
+ ldrb r1, [r5, 0x5]
+ adds r0, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ add r1, r9
+ ldrb r2, [r1, 0x5]
+ adds r0, r3, 0
+ ands r0, r2
+ mov r2, r8
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, [sp, 0x14]
+ lsls r6, r0, 4
+ adds r6, r0
+ lsls r6, 2
+ mov r1, r9
+ adds r7, r6, r1
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0x44
+ str r3, [sp, 0x18]
+ bl memcpy
+ mov r2, r10
+ lsls r4, r2, 4
+ add r4, r10
+ lsls r4, 2
+ adds r0, r4, 0
+ add r0, r9
+ mov r8, r0
+ adds r1, r5, 0
+ movs r2, 0x44
+ bl memcpy
+ ldrb r1, [r7, 0x1]
+ ldr r3, [sp, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r7, 0x1]
+ mov r2, r8
+ ldrb r0, [r2, 0x1]
+ ands r3, r0
+ orrs r3, r1
+ strb r3, [r2, 0x1]
+ movs r0, 0x1C
+ add r9, r0
+ add r6, r9
+ ldr r1, _080EEDD4 @ =SpriteCallbackDummy
+ str r1, [r6]
+ add r4, r9
+ str r1, [r4]
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r1, _080EEDE4 @ =gBattle_BG1_X
+ ldrh r0, [r7, 0x20]
+ negs r0, r0
+ adds r0, 0x20
+ strh r0, [r1]
+ ldr r1, _080EEDE8 @ =gBattle_BG1_Y
+ ldrh r0, [r7, 0x22]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r1]
+ ldr r1, _080EEDEC @ =gTasks
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0xA0
+ lsls r1, 2
+ strh r1, [r0, 0xA]
+ mov r1, sp
+ ldrh r1, [r1, 0x14]
+ strh r1, [r0, 0x8]
+ mov r2, r10
+ strh r2, [r0, 0xC]
+ ldr r1, _080EEDF0 @ =sub_80EEDF4
+ str r1, [r0]
+ 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
+_080EEDB4: .4byte gBattleAnimAttacker
+_080EEDB8: .4byte gUnknown_2022984
+_080EEDBC: .4byte gUnknown_2022986
+_080EEDC0: .4byte 0x00003f3f
+_080EEDC4: .4byte 0x00003f3d
+_080EEDC8: .4byte 0x00003f42
+_080EEDCC: .4byte gUnknown_3004FF0
+_080EEDD0: .4byte gSprites
+_080EEDD4: .4byte SpriteCallbackDummy
+_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
+_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
+_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
+_080EEDE4: .4byte gBattle_BG1_X
+_080EEDE8: .4byte gBattle_BG1_Y
+_080EEDEC: .4byte gTasks
+_080EEDF0: .4byte sub_80EEDF4
+ thumb_func_end sub_80EEC0C
+
+ thumb_func_start sub_80EEDF4
+sub_80EEDF4: @ 80EEDF4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _080EEE3C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ mov r8, r0
+ ldr r1, _080EEE40 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r1, [r5, 0xA]
+ ldrh r0, [r5, 0x22]
+ adds r1, r0
+ movs r3, 0
+ strh r1, [r5, 0x22]
+ ldr r2, _080EEE44 @ =gBattle_BG1_Y
+ lsls r0, r1, 16
+ lsrs r0, 24
+ ldrh r4, [r2]
+ adds r0, r4
+ strh r0, [r2]
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r5, 0x22]
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080EEE84
+ cmp r0, 0x1
+ bgt _080EEE48
+ cmp r0, 0
+ beq _080EEE4E
+ b _080EEFA8
+ .align 2, 0
+_080EEE3C: .4byte gBattleAnimAttacker
+_080EEE40: .4byte gTasks
+_080EEE44: .4byte gBattle_BG1_Y
+_080EEE48:
+ cmp r0, 0x2
+ beq _080EEE9C
+ b _080EEFA8
+_080EEE4E:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bgt _080EEE5E
+ b _080EEFA8
+_080EEE5E:
+ strh r3, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ adds r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x20
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x8
+ beq _080EEE82
+ b _080EEFA8
+_080EEE82:
+ b _080EEE94
+_080EEE84:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ beq _080EEE94
+ b _080EEFA8
+_080EEE94:
+ ldrh r0, [r5, 0x26]
+ adds r0, 0x1
+ strh r0, [r5, 0x26]
+ b _080EEFA8
+_080EEE9C:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080EEFA8
+ strh r3, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ subs r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x20
+ ldrsh r4, [r5, r0]
+ cmp r4, 0
+ bne _080EEFA8
+ movs r0, 0
+ bl sub_8073128
+ ldr r0, _080EEFB4 @ =gUnknown_2022984
+ strh r4, [r0]
+ ldr r0, _080EEFB8 @ =gUnknown_2022986
+ strh r4, [r0]
+ ldr r4, _080EEFBC @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080EEF00
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080EEF00:
+ 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
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r4, 0x8
+ ldrsh r1, [r5, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r6, _080EEFC0 @ =gSprites
+ adds r0, r6
+ bl DestroySprite
+ movs r0, 0xC
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetAnimBgAttribute
+ ldr r0, _080EEFC4 @ =gUnknown_3004FF0
+ add r0, r8
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldrb r2, [r1, 0x6]
+ mov r8, r2
+ ldrh r4, [r1, 0x38]
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r3, [r1, 0x5]
+ movs r2, 0xD
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r3
+ movs r5, 0x4
+ orrs r0, r5
+ strb r0, [r1, 0x5]
+ mov r0, r8
+ lsls r1, r0, 4
+ add r1, r8
+ lsls r1, 2
+ adds r1, r6
+ ldrb r3, [r1, 0x5]
+ adds r0, r2, 0
+ ands r0, r3
+ orrs r0, r5
+ strb r0, [r1, 0x5]
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r6
+ ldrb r1, [r0, 0x5]
+ ands r2, r1
+ orrs r2, r5
+ strb r2, [r0, 0x5]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080EEFA8:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EEFB4: .4byte gUnknown_2022984
+_080EEFB8: .4byte gUnknown_2022986
+_080EEFBC: .4byte 0x00003f3f
+_080EEFC0: .4byte gSprites
+_080EEFC4: .4byte gUnknown_3004FF0
+ thumb_func_end sub_80EEDF4
+
+ thumb_func_start sub_80EEFC8
+sub_80EEFC8: @ 80EEFC8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r9, r0
+ adds r7, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r0, _080EF0A0 @ =gUnknown_3004FF0
+ adds r2, r0
+ ldrb r0, [r2]
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ ldr r0, _080EF0A4 @ =gSprites
+ adds r5, r0
+ ldrb r1, [r5, 0x6]
+ mov r10, r1
+ ldrh r4, [r5, 0x38]
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF0A8 @ =0x0000d709
+ bl AllocSpritePalette
+ mov r2, r9
+ strb r0, [r2]
+ ldr r0, _080EF0AC @ =0x0000d70a
+ bl AllocSpritePalette
+ strb r0, [r7]
+ ldrb r0, [r5, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r1, 0x80
+ lsls r1, 1
+ adds r3, r1, 0
+ orrs r0, r3
+ lsls r6, r4, 4
+ adds r6, r4
+ lsls r6, 2
+ ldr r2, _080EF0A4 @ =gSprites
+ adds r6, r2
+ ldrb r4, [r6, 0x5]
+ lsrs r4, 4
+ lsls r4, 4
+ orrs r4, r3
+ lsls r0, 1
+ ldr r1, _080EF0B0 @ =gPlttBufferUnfaded
+ mov r8, r1
+ add r0, r8
+ mov r2, r9
+ ldrb r1, [r2]
+ lsls r1, 4
+ adds r1, r3, r1
+ movs r2, 0x20
+ str r3, [sp]
+ bl LoadPalette
+ lsls r4, 1
+ add r4, r8
+ ldrb r0, [r7]
+ lsls r0, 4
+ ldr r3, [sp]
+ adds r3, r0
+ adds r0, r4, 0
+ adds r1, r3, 0
+ movs r2, 0x20
+ bl LoadPalette
+ mov r0, r9
+ ldrb r1, [r0]
+ lsls r1, 4
+ ldrb r2, [r5, 0x5]
+ movs r3, 0xF
+ adds r0, r3, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ mov r2, r10
+ lsls r1, r2, 4
+ add r1, r10
+ lsls r1, 2
+ ldr r0, _080EF0A4 @ =gSprites
+ adds r1, r0
+ mov r0, r9
+ ldrb r2, [r0]
+ lsls r2, 4
+ ldrb r4, [r1, 0x5]
+ adds r0, r3, 0
+ ands r0, r4
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ ldrb r0, [r7]
+ lsls r0, 4
+ ldrb r1, [r6, 0x5]
+ ands r3, r1
+ orrs r3, r0
+ strb r3, [r6, 0x5]
+ 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
+_080EF0A0: .4byte gUnknown_3004FF0
+_080EF0A4: .4byte gSprites
+_080EF0A8: .4byte 0x0000d709
+_080EF0AC: .4byte 0x0000d70a
+_080EF0B0: .4byte gPlttBufferUnfaded
+ thumb_func_end sub_80EEFC8
+
+ thumb_func_start sub_80EF0B4
+sub_80EF0B4: @ 80EF0B4
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, sp
+ adds r1, 0x1
+ ldr r0, _080EF0DC @ =gBattleAnimAttacker
+ ldrb r2, [r0]
+ mov r0, sp
+ bl sub_80EEFC8
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF0DC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80EF0B4
+
+ thumb_func_start sub_80EF0E0
+sub_80EF0E0: @ 80EF0E0
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080EF168 @ =gUnknown_3004FF0
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _080EF16C @ =gSprites
+ mov r8, r1
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ add r5, r8
+ ldrb r0, [r5, 0x6]
+ mov r9, r0
+ ldrh r6, [r5, 0x38]
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080EF170 @ =0x0000d709
+ bl FreeSpritePaletteByTag
+ ldr r0, _080EF174 @ =0x0000d70a
+ bl FreeSpritePaletteByTag
+ ldr r0, _080EF178 @ =0x0000d6ff
+ bl IndexOfSpritePaletteTag
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF17C @ =0x0000d704
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsls r4, 4
+ ldrb r2, [r5, 0x5]
+ movs r3, 0xF
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r4
+ strb r1, [r5, 0x5]
+ mov r1, r9
+ lsls r2, r1, 4
+ add r2, r9
+ lsls r2, 2
+ add r2, r8
+ ldrb r5, [r2, 0x5]
+ adds r1, r3, 0
+ ands r1, r5
+ orrs r1, r4
+ strb r1, [r2, 0x5]
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ add r1, r8
+ lsrs r0, 20
+ ldrb r2, [r1, 0x5]
+ ands r3, r2
+ orrs r3, r0
+ strb r3, [r1, 0x5]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF168: .4byte gUnknown_3004FF0
+_080EF16C: .4byte gSprites
+_080EF170: .4byte 0x0000d709
+_080EF174: .4byte 0x0000d70a
+_080EF178: .4byte 0x0000d6ff
+_080EF17C: .4byte 0x0000d704
+ thumb_func_end sub_80EF0E0
+
+ thumb_func_start sub_80EF180
+sub_80EF180: @ 80EF180
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF19C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80EF0E0
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF19C: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80EF180
+
+ thumb_func_start sub_80EF1A0
+sub_80EF1A0: @ 80EF1A0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080EF1C0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r2, _080EF1C4 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ strh r0, [r1, 0x1C]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r1, 0x1E]
+ ldr r0, _080EF1C8 @ =sub_80EF1CC
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080EF1C0: .4byte gTasks
+_080EF1C4: .4byte gBattleAnimArgs
+_080EF1C8: .4byte sub_80EF1CC
+ thumb_func_end sub_80EF1A0
+
+ thumb_func_start sub_80EF1CC
+sub_80EF1CC: @ 80EF1CC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080EF218 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ movs r6, 0
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080EF28C
+ strh r6, [r4, 0x8]
+ ldr r0, _080EF21C @ =0x0000d709
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r3, 0x1C
+ ldrsh r0, [r4, r3]
+ movs r1, 0x2
+ cmp r0, 0
+ bne _080EF20A
+ movs r1, 0x6
+_080EF20A:
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080EF220
+ cmp r0, 0x1
+ beq _080EF25C
+ b _080EF28C
+ .align 2, 0
+_080EF218: .4byte gTasks
+_080EF21C: .4byte 0x0000d709
+_080EF220:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x2
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080EF232
+ movs r0, 0x10
+ strh r0, [r4, 0xC]
+_080EF232:
+ lsls r0, r2, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2
+ orrs r0, r1
+ ldrb r2, [r4, 0xC]
+ ldr r3, _080EF258 @ =0x00007f74
+ movs r1, 0x1
+ bl BlendPalette
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x10
+ bne _080EF28C
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080EF28C
+ .align 2, 0
+_080EF258: .4byte 0x00007f74
+_080EF25C:
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x2
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080EF26A
+ strh r6, [r4, 0xC]
+_080EF26A:
+ lsls r0, r2, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2
+ orrs r0, r1
+ ldrb r2, [r4, 0xC]
+ ldr r3, _080EF294 @ =0x00007f74
+ movs r1, 0x1
+ bl BlendPalette
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080EF28C
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080EF28C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF294: .4byte 0x00007f74
+ thumb_func_end sub_80EF1CC
+
+ thumb_func_start sub_80EF298
+sub_80EF298: @ 80EF298
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080EF2C4 @ =gBattlerSpriteIds
+ ldr r0, _080EF2C8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r5, [r0]
+ ldr r1, _080EF2CC @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080EF2E6
+ cmp r0, 0x1
+ bgt _080EF2D0
+ cmp r0, 0
+ beq _080EF2D6
+ b _080EF338
+ .align 2, 0
+_080EF2C4: .4byte gBattlerSpriteIds
+_080EF2C8: .4byte gBattleAnimAttacker
+_080EF2CC: .4byte gTasks
+_080EF2D0:
+ cmp r0, 0x2
+ beq _080EF318
+ b _080EF338
+_080EF2D6:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x1C]
+ b _080EF30A
+_080EF2E6:
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x30
+ strh r0, [r4, 0x1C]
+ movs r0, 0x1C
+ ldrsh r2, [r4, r0]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ ldr r0, _080EF314 @ =0x000002cf
+ cmp r1, r0
+ ble _080EF338
+_080EF30A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080EF338
+ .align 2, 0
+_080EF314: .4byte 0x000002cf
+_080EF318:
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080EF340 @ =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]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080EF338:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF340: .4byte gSprites
+ thumb_func_end sub_80EF298
+
+ thumb_func_start sub_80EF344
+sub_80EF344: @ 80EF344
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080EF37C @ =gBattlerSpriteIds
+ ldr r4, _080EF380 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r1, r0, r1
+ ldrb r1, [r1]
+ mov r9, r1
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080EF38C
+ ldr r1, _080EF384 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080EF388 @ =gPlayerParty
+ b _080EF39C
+ .align 2, 0
+_080EF37C: .4byte gBattlerSpriteIds
+_080EF380: .4byte gBattleAnimAttacker
+_080EF384: .4byte gBattlerPartyIndexes
+_080EF388: .4byte gPlayerParty
+_080EF38C:
+ ldr r1, _080EF3CC @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080EF3D0 @ =gEnemyParty
+_080EF39C:
+ adds r0, r1
+ movs r1, 0x26
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r2, _080EF3D4 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r6, r0, r2
+ movs r0, 0x8
+ ldrsh r7, [r6, r0]
+ cmp r7, 0
+ beq _080EF3D8
+ cmp r7, 0x1
+ beq _080EF458
+ b _080EF482
+ .align 2, 0
+_080EF3CC: .4byte gBattlerPartyIndexes
+_080EF3D0: .4byte gEnemyParty
+_080EF3D4: .4byte gTasks
+_080EF3D8:
+ ldr r5, _080EF450 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ adds r1, r0, 0
+ lsls r1, 24
+ ldr r2, _080EF454 @ =gSprites
+ mov r3, r9
+ lsls r0, r3, 4
+ add r0, r9
+ lsls r0, 2
+ adds r0, r2
+ ldrb r2, [r0, 0x5]
+ lsls r2, 28
+ lsrs r2, 30
+ adds r0, 0x43
+ ldrb r3, [r0]
+ movs r0, 0x80
+ lsls r0, 22
+ adds r1, r0
+ lsrs r1, 24
+ mov r0, r8
+ str r0, [sp]
+ adds r0, r4, 0
+ bl LaunchBallStarsTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x1C]
+ str r7, [sp]
+ str r7, [sp, 0x4]
+ str r7, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r2, r0, 0
+ ldrb r1, [r5]
+ movs r0, 0
+ mov r3, r8
+ bl LaunchBallFadeMonTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x1E]
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _080EF482
+ .align 2, 0
+_080EF450: .4byte gBattleAnimAttacker
+_080EF454: .4byte gSprites
+_080EF458:
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0
+ bne _080EF482
+ movs r3, 0x1E
+ ldrsh r0, [r6, r3]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0
+ bne _080EF482
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080EF482:
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80EF344
+
+ thumb_func_start sub_80EF490
+sub_80EF490: @ 80EF490
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF4B4 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ bl LoadBallGfx
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF4B4: .4byte gUnknown_2023D68
+ thumb_func_end sub_80EF490
+
+ thumb_func_start sub_80EF4B8
+sub_80EF4B8: @ 80EF4B8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF4DC @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ bl FreeBallGfx
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF4DC: .4byte gUnknown_2023D68
+ thumb_func_end sub_80EF4B8
+
+ thumb_func_start sub_80EF4E0
+sub_80EF4E0: @ 80EF4E0
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080EF4FC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x5
+ beq _080EF504
+ cmp r0, 0x6
+ beq _080EF514
+ ldr r1, _080EF500 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080EF518
+ .align 2, 0
+_080EF4FC: .4byte gUnknown_2024018
+_080EF500: .4byte gBattleAnimArgs
+_080EF504:
+ ldr r1, _080EF50C @ =gBattleAnimArgs
+ ldr r0, _080EF510 @ =0x0000ffff
+ b _080EF518
+ .align 2, 0
+_080EF50C: .4byte gBattleAnimArgs
+_080EF510: .4byte 0x0000ffff
+_080EF514:
+ ldr r1, _080EF524 @ =gBattleAnimArgs
+ ldr r0, _080EF528 @ =0x0000fffe
+_080EF518:
+ strh r0, [r1, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF524: .4byte gBattleAnimArgs
+_080EF528: .4byte 0x0000fffe
+ thumb_func_end sub_80EF4E0
+
+ thumb_func_start ItemIdToBallId
+ItemIdToBallId: @ 80EF52C
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r0, 0xB
+ bhi _080EF5A4
+ lsls r0, 2
+ ldr r1, _080EF544 @ =_080EF548
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080EF544: .4byte _080EF548
+ .align 2, 0
+_080EF548:
+ .4byte _080EF578
+ .4byte _080EF57C
+ .4byte _080EF580
+ .4byte _080EF5A4
+ .4byte _080EF584
+ .4byte _080EF588
+ .4byte _080EF58C
+ .4byte _080EF590
+ .4byte _080EF594
+ .4byte _080EF598
+ .4byte _080EF59C
+ .4byte _080EF5A0
+_080EF578:
+ movs r0, 0x4
+ b _080EF5A6
+_080EF57C:
+ movs r0, 0x3
+ b _080EF5A6
+_080EF580:
+ movs r0, 0x1
+ b _080EF5A6
+_080EF584:
+ movs r0, 0x2
+ b _080EF5A6
+_080EF588:
+ movs r0, 0x5
+ b _080EF5A6
+_080EF58C:
+ movs r0, 0x6
+ b _080EF5A6
+_080EF590:
+ movs r0, 0x7
+ b _080EF5A6
+_080EF594:
+ movs r0, 0x8
+ b _080EF5A6
+_080EF598:
+ movs r0, 0x9
+ b _080EF5A6
+_080EF59C:
+ movs r0, 0xA
+ b _080EF5A6
+_080EF5A0:
+ movs r0, 0xB
+ b _080EF5A6
+_080EF5A4:
+ movs r0, 0
+_080EF5A6:
+ pop {r1}
+ bx r1
+ thumb_func_end ItemIdToBallId
+
+ thumb_func_start sub_80EF5AC
+sub_80EF5AC: @ 80EF5AC
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ mov r10, r0
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _080EF674 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080EF678 @ =gUnknown_82606F4
+ adds r0, r1
+ movs r1, 0x20
+ movs r2, 0x50
+ movs r3, 0x1D
+ bl CreateSprite
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, _080EF67C @ =gSprites
+ mov r9, r1
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ adds r6, r4, r1
+ movs r0, 0x22
+ strh r0, [r6, 0x2E]
+ ldr r2, _080EF680 @ =gBattleAnimTarget
+ mov r8, r2
+ ldrb r0, [r2]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x30]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ strh r0, [r6, 0x32]
+ mov r0, r9
+ adds r0, 0x1C
+ adds r4, r0
+ ldr r0, _080EF684 @ =sub_80EF8C0
+ str r0, [r4]
+ ldr r0, _080EF688 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r3, [r0, 0x8]
+ ldr r1, _080EF68C @ =gBattlerSpriteIds
+ mov r2, r8
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r9
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ lsls r1, 29
+ lsrs r1, 31
+ lsls r1, 1
+ ldrb r2, [r3, 0x9]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x9]
+ ldr r1, _080EF690 @ =gTasks
+ mov r2, r10
+ lsls r0, r2, 2
+ add r0, r10
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r1, _080EF694 @ =sub_80EF698
+ str r1, [r0]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF674: .4byte gUnknown_2023D68
+_080EF678: .4byte gUnknown_82606F4
+_080EF67C: .4byte gSprites
+_080EF680: .4byte gBattleAnimTarget
+_080EF684: .4byte sub_80EF8C0
+_080EF688: .4byte gUnknown_2024018
+_080EF68C: .4byte gBattlerSpriteIds
+_080EF690: .4byte gTasks
+_080EF694: .4byte sub_80EF698
+ thumb_func_end sub_80EF5AC
+
+ thumb_func_start sub_80EF698
+sub_80EF698: @ 80EF698
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _080EF6C8 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ ldr r2, _080EF6CC @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x2E]
+ ldr r0, _080EF6D0 @ =0x0000ffff
+ cmp r1, r0
+ bne _080EF6C2
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080EF6C2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF6C8: .4byte gTasks
+_080EF6CC: .4byte gSprites
+_080EF6D0: .4byte 0x0000ffff
+ thumb_func_end sub_80EF698
+
+ thumb_func_start sub_80EF6D4
+sub_80EF6D4: @ 80EF6D4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _080EF6F4 @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080EF6F8
+ movs r5, 0x1C
+ movs r6, 0xB
+ b _080EF708
+ .align 2, 0
+_080EF6F4: .4byte gBattleTypeFlags
+_080EF6F8:
+ movs r5, 0x17
+ movs r6, 0xB
+ ldr r0, _080EF7C4 @ =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x1
+ bne _080EF708
+ movs r6, 0xD
+_080EF708:
+ ldr r0, _080EF7C8 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807685C
+ adds r3, r0, 0
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080EF7CC @ =gUnknown_82606F4
+ adds r0, r1
+ movs r1, 0x20
+ orrs r5, r1
+ movs r1, 0x50
+ orrs r6, r1
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl CreateSprite
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _080EF7D0 @ =gSprites
+ mov r9, r0
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ adds r6, r4, r0
+ movs r0, 0x22
+ strh r0, [r6, 0x2E]
+ ldr r1, _080EF7D4 @ =gBattleAnimTarget
+ mov r8, r1
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x30]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ strh r0, [r6, 0x32]
+ movs r0, 0x1C
+ add r9, r0
+ add r4, r9
+ ldr r0, _080EF7D8 @ =SpriteCallbackDummy
+ str r0, [r4]
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080EF7DC @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldr r1, _080EF7E0 @ =sub_8012354
+ str r1, [r0]
+ ldr r1, _080EF7E4 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r1, _080EF7E8 @ =sub_80EF7EC
+ str r1, [r0]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF7C4: .4byte gSaveBlock2Ptr
+_080EF7C8: .4byte gUnknown_2023D68
+_080EF7CC: .4byte gUnknown_82606F4
+_080EF7D0: .4byte gSprites
+_080EF7D4: .4byte gBattleAnimTarget
+_080EF7D8: .4byte SpriteCallbackDummy
+_080EF7DC: .4byte gBattlerSpriteIds
+_080EF7E0: .4byte sub_8012354
+_080EF7E4: .4byte gTasks
+_080EF7E8: .4byte sub_80EF7EC
+ thumb_func_end sub_80EF6D4
+
+ thumb_func_start sub_80EF7EC
+sub_80EF7EC: @ 80EF7EC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _080EF84C @ =gSprites
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080EF850 @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080EF846
+ movs r0, 0x36
+ movs r1, 0
+ bl PlaySE12WithPanning
+ ldr r0, _080EF854 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r6, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080EF858 @ =sub_80EF8C0
+ str r1, [r0]
+ ldr r0, _080EF85C @ =sub_80EF864
+ movs r1, 0xA
+ bl CreateTask
+ ldr r0, _080EF860 @ =sub_80EF698
+ str r0, [r4]
+_080EF846:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF84C: .4byte gSprites
+_080EF850: .4byte gBattlerSpriteIds
+_080EF854: .4byte gTasks
+_080EF858: .4byte sub_80EF8C0
+_080EF85C: .4byte sub_80EF864
+_080EF860: .4byte sub_80EF698
+ thumb_func_end sub_80EF7EC
+
+ thumb_func_start sub_80EF864
+sub_80EF864: @ 80EF864
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _080EF8B8 @ =gSprites
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r4, _080EF8BC @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 27
+ cmp r0, 0
+ bge _080EF8B0
+ movs r0, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0
+ bl StartSpriteAnim
+ adds r0, r5, 0
+ bl DestroyTask
+_080EF8B0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF8B8: .4byte gSprites
+_080EF8BC: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80EF864
+
+ thumb_func_start sub_80EF8C0
+sub_80EF8C0: @ 80EF8C0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x32]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ strh r2, [r4, 0x36]
+ ldr r0, _080EF8E8 @ =0x0000ffd8
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080EF8EC @ =sub_80EF8F0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF8E8: .4byte 0x0000ffd8
+_080EF8EC: .4byte sub_80EF8F0
+ thumb_func_end sub_80EF8C0
+
+ thumb_func_start sub_80EF8F0
+sub_80EF8F0: @ 80EF8F0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080EF99E
+ ldr r0, _080EF914 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x5
+ bne _080EF91C
+ ldr r0, _080EF918 @ =sub_80F0478
+ str r0, [r4, 0x1C]
+ b _080EF99E
+ .align 2, 0
+_080EF914: .4byte gUnknown_2024018
+_080EF918: .4byte sub_80F0478
+_080EF91C:
+ cmp r0, 0x6
+ bne _080EF92C
+ ldr r0, _080EF928 @ =sub_80F052C
+ str r0, [r4, 0x1C]
+ b _080EF99E
+ .align 2, 0
+_080EF928: .4byte sub_80F052C
+_080EF92C:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ 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, 0x24]
+ strh r1, [r4, 0x26]
+ adds r1, r4, 0
+ adds r1, 0x2E
+ movs r2, 0
+ adds r0, r4, 0
+ adds r0, 0x3C
+_080EF954:
+ strh r2, [r0]
+ subs r0, 0x2
+ cmp r0, r1
+ bge _080EF954
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldr r0, _080EF9A8 @ =sub_80EF9B4
+ str r0, [r4, 0x1C]
+ ldr r0, _080EF9AC @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xB
+ bgt _080EF99E
+ cmp r5, 0
+ blt _080EF99E
+ ldrh r0, [r4, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ str r5, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl LaunchBallStarsTask
+ ldr r0, _080EF9B0 @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0
+ movs r2, 0xE
+ adds r3, r5, 0
+ bl LaunchBallFadeMonTask
+_080EF99E:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF9A8: .4byte sub_80EF9B4
+_080EF9AC: .4byte gUnknown_2023D68
+_080EF9B0: .4byte gBattleAnimTarget
+ thumb_func_end sub_80EF8F0
+
+ thumb_func_start sub_80EF9B4
+sub_80EF9B4: @ 80EF9B4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080EF9F0
+ ldr r0, _080EF9F8 @ =TaskDummy
+ movs r1, 0x32
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x38]
+ ldr r0, _080EF9FC @ =sub_80EFA0C
+ str r0, [r4, 0x1C]
+ ldr r2, _080EFA00 @ =gSprites
+ ldr r1, _080EFA04 @ =gBattlerSpriteIds
+ ldr r0, _080EFA08 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x30]
+_080EF9F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF9F8: .4byte TaskDummy
+_080EF9FC: .4byte sub_80EFA0C
+_080EFA00: .4byte gSprites
+_080EFA04: .4byte gBattlerSpriteIds
+_080EFA08: .4byte gBattleAnimTarget
+ thumb_func_end sub_80EF9B4
+
+ thumb_func_start sub_80EFA0C
+sub_80EFA0C: @ 80EFA0C
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ ldr r1, _080EFA50 @ =gBattlerSpriteIds
+ ldr r0, _080EFA54 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r4, [r0]
+ ldrh r0, [r7, 0x38]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080EFA58 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB
+ bne _080EFA3E
+ movs r0, 0x35
+ bl PlaySE
+_080EFA3E:
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080EFAB4
+ cmp r0, 0x1
+ bgt _080EFA5C
+ cmp r0, 0
+ beq _080EFA62
+ b _080EFB20
+ .align 2, 0
+_080EFA50: .4byte gBattlerSpriteIds
+_080EFA54: .4byte gBattleAnimTarget
+_080EFA58: .4byte gTasks
+_080EFA5C:
+ cmp r0, 0x2
+ beq _080EFAF8
+ b _080EFB20
+_080EFA62:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x1C]
+ ldr r1, _080EFAA4 @ =gUnknown_3005424
+ movs r0, 0x1C
+ str r0, [r1]
+ ldr r2, _080EFAA8 @ =gUnknown_300542C
+ ldr r1, _080EFAAC @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ ldrh r0, [r7, 0x26]
+ ldrh r7, [r7, 0x22]
+ adds r0, r7
+ subs r1, r0
+ strh r1, [r2]
+ ldr r4, _080EFAB0 @ =gUnknown_3005428
+ ldrh r0, [r2]
+ lsls r0, 8
+ movs r1, 0x1C
+ bl __udivsi3
+ strh r0, [r4]
+ strh r0, [r5, 0xC]
+ b _080EFB12
+ .align 2, 0
+_080EFAA4: .4byte gUnknown_3005424
+_080EFAA8: .4byte gUnknown_300542C
+_080EFAAC: .4byte gSprites
+_080EFAB0: .4byte gUnknown_3005428
+_080EFAB4:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x20
+ strh r0, [r5, 0x1C]
+ movs r0, 0x1C
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0xC]
+ ldrh r1, [r5, 0xE]
+ adds r0, r1
+ strh r0, [r5, 0xE]
+ ldr r0, _080EFAF0 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ negs r0, r0
+ asrs r0, 8
+ strh r0, [r1, 0x26]
+ movs r0, 0x1C
+ ldrsh r1, [r5, r0]
+ ldr r0, _080EFAF4 @ =0x0000047f
+ cmp r1, r0
+ ble _080EFB48
+ b _080EFB12
+ .align 2, 0
+_080EFAF0: .4byte gSprites
+_080EFAF4: .4byte 0x0000047f
+_080EFAF8:
+ adds r0, r4, 0
+ bl sub_8075980
+ ldr r1, _080EFB1C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080EFB12:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080EFB48
+ .align 2, 0
+_080EFB1C: .4byte gSprites
+_080EFB20:
+ ldr r0, _080EFB50 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0xA
+ ble _080EFB48
+ adds r0, r6, 0
+ bl DestroyTask
+ adds r0, r7, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ movs r0, 0
+ strh r0, [r7, 0x38]
+ ldr r0, _080EFB54 @ =sub_80EFB58
+ str r0, [r7, 0x1C]
+_080EFB48:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFB50: .4byte gTasks
+_080EFB54: .4byte sub_80EFB58
+ thumb_func_end sub_80EFA0C
+
+ thumb_func_start sub_80EFB58
+sub_80EFB58: @ 80EFB58
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080EFB92
+ movs r1, 0
+ strh r1, [r4, 0x34]
+ movs r0, 0x28
+ strh r0, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ movs r0, 0
+ movs r1, 0x28
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0x36
+ ldrsh r1, [r4, r0]
+ movs r0, 0
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldr r0, _080EFB98 @ =sub_80EFB9C
+ str r0, [r4, 0x1C]
+_080EFB92:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFB98: .4byte sub_80EFB9C
+ thumb_func_end sub_80EFB58
+
+ thumb_func_start sub_80EFB9C
+sub_80EFB9C: @ 80EFB9C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0
+ beq _080EFBB2
+ cmp r1, 0x1
+ beq _080EFC26
+ b _080EFC52
+_080EFBB2:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ adds r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ adds r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x3F
+ ble _080EFC52
+ ldrh r0, [r4, 0x36]
+ subs r0, 0xA
+ strh r0, [r4, 0x36]
+ ldr r1, _080EFBFC @ =0x00000101
+ adds r0, r2, r1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 24
+ cmp r0, 0x4
+ bne _080EFBEE
+ movs r5, 0x1
+_080EFBEE:
+ cmp r0, 0x2
+ beq _080EFC0E
+ cmp r0, 0x2
+ bgt _080EFC00
+ cmp r0, 0x1
+ beq _080EFC06
+ b _080EFC1E
+ .align 2, 0
+_080EFBFC: .4byte 0x00000101
+_080EFC00:
+ cmp r0, 0x3
+ beq _080EFC16
+ b _080EFC1E
+_080EFC06:
+ movs r0, 0x31
+ bl PlaySE
+ b _080EFC52
+_080EFC0E:
+ movs r0, 0x32
+ bl PlaySE
+ b _080EFC52
+_080EFC16:
+ movs r0, 0x33
+ bl PlaySE
+ b _080EFC52
+_080EFC1E:
+ movs r0, 0x34
+ bl PlaySE
+ b _080EFC52
+_080EFC26:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ subs r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ subs r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ cmp r1, 0
+ bgt _080EFC52
+ strh r5, [r4, 0x38]
+ ldr r0, _080EFC80 @ =0xffffff00
+ ands r0, r2
+ strh r0, [r4, 0x34]
+_080EFC52:
+ cmp r5, 0
+ beq _080EFC96
+ movs r5, 0
+ strh r5, [r4, 0x34]
+ movs r0, 0x40
+ movs r1, 0x28
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x26]
+ ldr r0, _080EFC84 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0
+ bne _080EFC8C
+ strh r5, [r4, 0x38]
+ ldr r0, _080EFC88 @ =sub_80EFF80
+ str r0, [r4, 0x1C]
+ b _080EFC96
+ .align 2, 0
+_080EFC80: .4byte 0xffffff00
+_080EFC84: .4byte gUnknown_2024018
+_080EFC88: .4byte sub_80EFF80
+_080EFC8C:
+ ldr r0, _080EFC9C @ =sub_80EFCA0
+ str r0, [r4, 0x1C]
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ strh r5, [r4, 0x38]
+_080EFC96:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFC9C: .4byte sub_80EFCA0
+ thumb_func_end sub_80EFB9C
+
+ thumb_func_start sub_80EFCA0
+sub_80EFCA0: @ 80EFCA0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFCDC
+ strh r5, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r0, _080EFCE4 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ strh r5, [r0, 0xC]
+ ldr r0, _080EFCE8 @ =sub_80EFCEC
+ str r0, [r4, 0x1C]
+ movs r0, 0x17
+ bl PlaySE
+_080EFCDC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFCE4: .4byte gUnknown_2024018
+_080EFCE8: .4byte sub_80EFCEC
+ thumb_func_end sub_80EFCA0
+
+ thumb_func_start sub_80EFCEC
+sub_80EFCEC: @ 80EFCEC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0x6
+ bls _080EFCFC
+ b _080EFF34
+_080EFCFC:
+ lsls r0, r1, 2
+ ldr r1, _080EFD08 @ =_080EFD0C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080EFD08: .4byte _080EFD0C
+ .align 2, 0
+_080EFD0C:
+ .4byte _080EFD28
+ .4byte _080EFD7A
+ .4byte _080EFDC0
+ .4byte _080EFE20
+ .4byte _080EFE70
+ .4byte _080EFED4
+ .4byte _080EFF34
+_080EFD28:
+ ldr r1, _080EFD4C @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFD50
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFD56
+ .align 2, 0
+_080EFD4C: .4byte gUnknown_2024018
+_080EFD50:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFD56:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xE
+ bhi _080EFD78
+ b _080EFF7A
+_080EFD78:
+ b _080EFE10
+_080EFD7A:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080EFE2C
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFDB6
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl ChangeSpriteAffineAnim
+ b _080EFF7A
+_080EFDB6:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _080EFF7A
+_080EFDC0:
+ ldr r1, _080EFDE4 @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFDE8
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFDEE
+ .align 2, 0
+_080EFDE4: .4byte gUnknown_2024018
+_080EFDE8:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFDEE:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0xC
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x18
+ bhi _080EFE10
+ b _080EFF7A
+_080EFE10:
+ ldr r0, [r6]
+ ldr r0, [r0, 0x8]
+ strh r3, [r0, 0xC]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ strh r3, [r4, 0x38]
+ b _080EFF7A
+_080EFE20:
+ ldrh r0, [r4, 0x38]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x38]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080EFE3A
+_080EFE2C:
+ adds r0, r4, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ b _080EFF7A
+_080EFE3A:
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFE68
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl ChangeSpriteAffineAnim
+ b _080EFE70
+_080EFE68:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_080EFE70:
+ ldr r1, _080EFE94 @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFE98
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFE9E
+ .align 2, 0
+_080EFE94: .4byte gUnknown_2024018
+_080EFE98:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFE9E:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x8
+ bls _080EFF7A
+ ldr r0, [r6]
+ ldr r0, [r0, 0x8]
+ strh r3, [r0, 0xC]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ strh r3, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ b _080EFF7A
+_080EFED4:
+ movs r6, 0x80
+ lsls r6, 1
+ adds r0, r6, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r1, r0, 24
+ ldr r0, _080EFF04 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r1, r0
+ bne _080EFF0C
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080EFF08 @ =sub_80EFF80
+ str r0, [r4, 0x1C]
+ b _080EFF7A
+ .align 2, 0
+_080EFF04: .4byte gUnknown_2024018
+_080EFF08: .4byte sub_80EFF80
+_080EFF0C:
+ cmp r0, 0x4
+ bne _080EFF20
+ cmp r1, 0x3
+ bne _080EFF20
+ ldr r0, _080EFF1C @ =sub_80EFFA4
+ str r0, [r4, 0x1C]
+ b _080EFF26
+ .align 2, 0
+_080EFF1C: .4byte sub_80EFFA4
+_080EFF20:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+_080EFF26:
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ b _080EFF7A
+_080EFF34:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFF7A
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r1, [r4, 0x34]
+ ldr r0, _080EFF68 @ =0xffffff00
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl StartSpriteAffineAnim
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFF6C
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ b _080EFF74
+ .align 2, 0
+_080EFF68: .4byte 0xffffff00
+_080EFF6C:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080EFF74:
+ movs r0, 0x17
+ bl PlaySE
+_080EFF7A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80EFCEC
+
+ thumb_func_start sub_80EFF80
+sub_80EFF80: @ 80EFF80
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x38]
+ adds r0, 0x1
+ strh r0, [r1, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFF9A
+ movs r0, 0
+ strh r0, [r1, 0x38]
+ ldr r0, _080EFFA0 @ =sub_80F02B0
+ str r0, [r1, 0x1C]
+_080EFF9A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFFA0: .4byte sub_80F02B0
+ thumb_func_end sub_80EFF80
+
+ thumb_func_start sub_80EFFA4
+sub_80EFFA4: @ 80EFFA4
+ adds r3, r0, 0
+ adds r3, 0x2C
+ ldrb r1, [r3]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r3]
+ ldr r1, _080EFFC0 @ =sub_80EFFC4
+ str r1, [r0, 0x1C]
+ movs r1, 0
+ strh r1, [r0, 0x34]
+ strh r1, [r0, 0x36]
+ strh r1, [r0, 0x38]
+ bx lr
+ .align 2, 0
+_080EFFC0: .4byte sub_80EFFC4
+ thumb_func_end sub_80EFFA4
+
+ thumb_func_start sub_80EFFC4
+sub_80EFFC4: @ 80EFFC4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r7, _080F0004 @ =gBattleAnimTarget
+ ldrh r0, [r6, 0x36]
+ adds r0, 0x1
+ movs r1, 0
+ mov r8, r1
+ strh r0, [r6, 0x36]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0x28
+ bne _080F0008
+ movs r0, 0xF7
+ bl PlaySE
+ ldrb r1, [r6, 0x5]
+ lsrs r1, 4
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r1
+ movs r1, 0x6
+ movs r2, 0
+ bl BlendPalettes
+ adds r0, r6, 0
+ bl sub_80F01B8
+ b _080F0088
+ .align 2, 0
+_080F0004: .4byte gBattleAnimTarget
+_080F0008:
+ cmp r1, 0x3C
+ bne _080F0026
+ ldrb r1, [r6, 0x5]
+ lsrs r1, 4
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r1
+ mov r1, r8
+ str r1, [sp]
+ movs r1, 0x2
+ movs r2, 0x6
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _080F0088
+_080F0026:
+ cmp r1, 0x5F
+ bne _080F004C
+ ldr r0, _080F0044 @ =gUnknown_2024005
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+ bl m4aMPlayAllStop
+ ldr r0, _080F0048 @ =0x0000013f
+ bl PlaySE
+ b _080F0088
+ .align 2, 0
+_080F0044: .4byte gUnknown_2024005
+_080F0048: .4byte 0x0000013f
+_080F004C:
+ ldr r0, _080F0094 @ =0x0000013b
+ cmp r1, r0
+ bne _080F0088
+ ldr r5, _080F0098 @ =gSprites
+ ldr r4, _080F009C @ =gBattlerSpriteIds
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r1, [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
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ mov r0, r8
+ strh r0, [r6, 0x2E]
+ ldr r0, _080F00A0 @ =sub_80F00A4
+ str r0, [r6, 0x1C]
+_080F0088:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0094: .4byte 0x0000013b
+_080F0098: .4byte gSprites
+_080F009C: .4byte gBattlerSpriteIds
+_080F00A0: .4byte sub_80F00A4
+ thumb_func_end sub_80EFFC4
+
+ thumb_func_start sub_80F00A4
+sub_80F00A4: @ 80F00A4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080F0110
+ cmp r0, 0x1
+ bgt _080F00BC
+ cmp r0, 0
+ beq _080F00C2
+ b _080F0156
+_080F00BC:
+ cmp r0, 0x2
+ beq _080F0142
+ b _080F0156
+_080F00C2:
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, [r4, 0x14]
+ ldrh r0, [r0, 0x2]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r1, 0x1
+ lsls r1, r0
+ ldr r0, _080F010C @ =0x00007fff
+ str r0, [sp]
+ adds r0, r1, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _080F014E
+ .align 2, 0
+_080F010C: .4byte 0x00007fff
+_080F0110:
+ ldrh r0, [r4, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080F017C
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x32]
+ adds r2, 0x1
+ strh r2, [r4, 0x32]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080F017C
+ b _080F014E
+_080F0142:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080F014E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080F017C
+_080F0156:
+ ldr r0, _080F0184 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080F017C
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ strh r5, [r4, 0x2E]
+ ldr r0, _080F0188 @ =sub_80F018C
+ str r0, [r4, 0x1C]
+_080F017C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0184: .4byte gPaletteFade
+_080F0188: .4byte sub_80F018C
+ thumb_func_end sub_80F00A4
+
+ thumb_func_start sub_80F018C
+sub_80F018C: @ 80F018C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080F01A4
+ ldr r0, _080F01A0 @ =0x0000ffff
+ strh r0, [r4, 0x2E]
+ b _080F01B0
+ .align 2, 0
+_080F01A0: .4byte 0x0000ffff
+_080F01A4:
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F01B0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F018C
+
+ thumb_func_start sub_80F01B8
+sub_80F01B8: @ 80F01B8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ adds r1, r6, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080F01D8
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ b _080F01E0
+_080F01D8:
+ movs r0, 0
+ mov r8, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_080F01E0:
+ movs r0, 0x4
+ bl sub_80F05B4
+ movs r7, 0
+ ldr r2, _080F0264 @ =gSprites
+ mov r9, r2
+ movs r0, 0x1C
+ add r0, r9
+ mov r10, r0
+_080F01F2:
+ movs r2, 0x20
+ ldrsh r1, [r6, r2]
+ movs r0, 0x22
+ ldrsh r2, [r6, r0]
+ ldr r0, _080F0268 @ =gUnknown_840C104
+ mov r3, r8
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080F024E
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ mov r2, r9
+ adds r5, r4, r2
+ movs r0, 0x18
+ strh r0, [r5, 0x2E]
+ ldr r0, _080F026C @ =gUnknown_840BF3C
+ lsls r1, r7, 2
+ adds r1, r0
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ ldrh r2, [r6, 0x20]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+ ldrsb r0, [r1, r0]
+ ldrh r2, [r6, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ ldrsb r0, [r1, r0]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ add r4, r10
+ ldr r0, _080F0270 @ =sub_80F0278
+ str r0, [r4]
+ ldr r0, _080F0274 @ =gUnknown_840C068
+ ldrb r1, [r0, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_080F024E:
+ adds r7, 0x1
+ cmp r7, 0x2
+ bls _080F01F2
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0264: .4byte gSprites
+_080F0268: .4byte gUnknown_840C104
+_080F026C: .4byte gUnknown_840BF3C
+_080F0270: .4byte sub_80F0278
+_080F0274: .4byte gUnknown_840C068
+ thumb_func_end sub_80F01B8
+
+ thumb_func_start sub_80F0278
+sub_80F0278: @ 80F0278
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F02A8
+ adds r0, r4, 0
+ bl DestroySprite
+_080F02A8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0278
+
+ thumb_func_start sub_80F02B0
+sub_80F02B0: @ 80F02B0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ ldr r0, _080F0364 @ =sub_80F0378
+ str r0, [r4, 0x1C]
+ ldr r0, _080F0368 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xB
+ bgt _080F0302
+ cmp r5, 0
+ blt _080F0302
+ ldrh r0, [r4, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ str r5, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl LaunchBallStarsTask
+ ldr r0, _080F036C @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0x1
+ movs r2, 0xE
+ adds r3, r5, 0
+ bl LaunchBallFadeMonTask
+_080F0302:
+ ldr r6, _080F0370 @ =gSprites
+ ldr r5, _080F0374 @ =gBattlerSpriteIds
+ ldr r4, _080F036C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl AnimateSprite
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x80
+ lsls r1, 5
+ strh r1, [r0, 0x30]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0364: .4byte sub_80F0378
+_080F0368: .4byte gUnknown_2023D68
+_080F036C: .4byte gBattleAnimTarget
+_080F0370: .4byte gSprites
+_080F0374: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80F02B0
+
+ thumb_func_start sub_80F0378
+sub_80F0378: @ 80F0378
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ movs r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0396
+ adds r2, r7, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080F0396:
+ ldr r4, _080F03C4 @ =gSprites
+ ldr r3, _080F03C8 @ =gBattlerSpriteIds
+ ldr r2, _080F03CC @ =gBattleAnimTarget
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _080F03D0
+ adds r0, r1, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ movs r5, 0x1
+ b _080F03F0
+ .align 2, 0
+_080F03C4: .4byte gSprites
+_080F03C8: .4byte gBattlerSpriteIds
+_080F03CC: .4byte gBattleAnimTarget
+_080F03D0:
+ ldr r6, _080F045C @ =0xfffffee0
+ adds r0, r6, 0
+ ldrh r6, [r1, 0x30]
+ adds r0, r6
+ strh r0, [r1, 0x30]
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r1, 0x26]
+_080F03F0:
+ adds r0, r7, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0456
+ cmp r5, 0
+ beq _080F0456
+ ldr r4, _080F0460 @ =gSprites
+ ldr r3, _080F0464 @ =gBattlerSpriteIds
+ ldr r2, _080F0468 @ =gBattleAnimTarget
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r6, 0
+ movs r5, 0
+ strh r5, [r0, 0x26]
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ ldr r0, _080F046C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ lsls r1, 30
+ adds r2, 0x3E
+ lsrs r1, 31
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ strh r5, [r7, 0x2E]
+ ldr r0, _080F0470 @ =sub_80F018C
+ str r0, [r7, 0x1C]
+ ldr r0, _080F0474 @ =gUnknown_2024005
+ strb r6, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F0456:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F045C: .4byte 0xfffffee0
+_080F0460: .4byte gSprites
+_080F0464: .4byte gBattlerSpriteIds
+_080F0468: .4byte gBattleAnimTarget
+_080F046C: .4byte gUnknown_2024018
+_080F0470: .4byte sub_80F018C
+_080F0474: .4byte gUnknown_2024005
+ thumb_func_end sub_80F0378
+
+ thumb_func_start sub_80F0478
+sub_80F0478: @ 80F0478
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x24]
+ ldrh r1, [r2, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r2, 0x20]
+ ldrh r0, [r2, 0x26]
+ ldrh r3, [r2, 0x22]
+ adds r0, r3
+ strh r0, [r2, 0x22]
+ strh r1, [r2, 0x26]
+ strh r1, [r2, 0x24]
+ ldr r4, _080F04B0 @ =sub_80F04B4
+ movs r3, 0
+ movs r1, 0x5
+ adds r0, r2, 0
+ adds r0, 0x38
+_080F049C:
+ strh r3, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080F049C
+ str r4, [r2, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F04B0: .4byte sub_80F04B4
+ thumb_func_end sub_80F0478
+
+ thumb_func_start sub_80F04B4
+sub_80F04B4: @ 80F04B4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x80
+ lsls r0, 4
+ adds r2, r0, 0
+ ldrh r1, [r4, 0x2E]
+ adds r2, r1
+ movs r0, 0xD0
+ lsls r0, 3
+ adds r3, r0, 0
+ ldrh r1, [r4, 0x30]
+ adds r3, r1
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r4, 0x2E]
+ ands r3, r0
+ strh r3, [r4, 0x30]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ cmp r0, 0xA0
+ bgt _080F050A
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r1, 0x8
+ negs r1, r1
+ cmp r0, r1
+ bge _080F051E
+_080F050A:
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080F0524 @ =sub_80F018C
+ str r0, [r4, 0x1C]
+ ldr r1, _080F0528 @ =gUnknown_2024005
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F051E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0524: .4byte sub_80F018C
+_080F0528: .4byte gUnknown_2024005
+ thumb_func_end sub_80F04B4
+
+ thumb_func_start sub_80F052C
+sub_80F052C: @ 80F052C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ movs r0, 0
+ strh r1, [r4, 0x20]
+ ldrh r2, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r2, r3
+ strh r2, [r4, 0x22]
+ strh r0, [r4, 0x26]
+ strh r0, [r4, 0x24]
+ movs r0, 0x22
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ subs r1, 0x8
+ strh r1, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ movs r0, 0x90
+ strh r0, [r4, 0x36]
+ movs r0, 0x20
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ adds r0, r4, 0
+ bl sub_80750C8
+ ldr r0, _080F0570 @ =sub_80F0574
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0570: .4byte sub_80F0574
+ thumb_func_end sub_80F052C
+
+ thumb_func_start sub_80F0574
+sub_80F0574: @ 80F0574
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80750C8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080F0590
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ cmp r0, 0x40
+ ble _080F05A4
+_080F0590:
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080F05AC @ =sub_80F018C
+ str r0, [r4, 0x1C]
+ ldr r0, _080F05B0 @ =gUnknown_2024005
+ strb r1, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F05A4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F05AC: .4byte sub_80F018C
+_080F05B0: .4byte gUnknown_2024005
+ thumb_func_end sub_80F0574
+
+ thumb_func_start sub_80F05B4
+sub_80F05B4: @ 80F05B4
+ push {r4,r5,lr}
+ lsls r0, 24
+ ldr r1, _080F05E0 @ =gUnknown_840BF48
+ lsrs r5, r0, 21
+ adds r4, r5, r1
+ ldrh r0, [r4, 0x6]
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ ldr r1, _080F05E4 @ =0xffff0000
+ cmp r0, r1
+ bne _080F05DA
+ adds r0, r4, 0
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F05E8 @ =gUnknown_840BFA8
+ adds r0, r5, r0
+ bl LoadCompressedSpritePaletteUsingHeap
+_080F05DA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F05E0: .4byte gUnknown_840BF48
+_080F05E4: .4byte 0xffff0000
+_080F05E8: .4byte gUnknown_840BFA8
+ thumb_func_end sub_80F05B4
+
+ thumb_func_start LaunchBallStarsTask
+LaunchBallStarsTask: @ 80F05EC
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ adds r6, r0, 0
+ mov r8, r1
+ mov r9, r2
+ mov r10, r3
+ ldr r5, [sp, 0x1C]
+ lsls r6, 24
+ lsrs r6, 24
+ mov r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ mov r0, r10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ lsls r5, 24
+ lsrs r5, 24
+ adds r0, r5, 0
+ bl sub_80F05B4
+ ldr r1, _080F066C @ =gUnknown_840C074
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x5
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _080F0670 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ strh r6, [r0, 0xA]
+ mov r1, r8
+ strh r1, [r0, 0xC]
+ mov r1, r9
+ strh r1, [r0, 0xE]
+ mov r1, r10
+ strh r1, [r0, 0x10]
+ strh r5, [r0, 0x26]
+ movs r0, 0xF
+ bl PlaySE
+ adds r0, r4, 0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080F066C: .4byte gUnknown_840C074
+_080F0670: .4byte gTasks
+ thumb_func_end LaunchBallStarsTask
+
+ thumb_func_start sub_80F0674
+sub_80F0674: @ 80F0674
+ push {lr}
+ ldr r0, _080F0698 @ =gMain
+ ldr r1, _080F069C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0692
+ ldr r0, _080F06A0 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x8]
+ ldrb r0, [r1, 0xA]
+ adds r0, 0x1
+ strb r0, [r1, 0xA]
+_080F0692:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0698: .4byte gMain
+_080F069C: .4byte 0x00000439
+_080F06A0: .4byte gUnknown_2024018
+ thumb_func_end sub_80F0674
+
+ thumb_func_start sub_80F06A4
+sub_80F06A4: @ 80F06A4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F0780 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r2, 0x8
+ ldrsh r0, [r6, r2]
+ adds r2, r1, 0
+ cmp r0, 0xF
+ bgt _080F079C
+ ldrb r1, [r6, 0xA]
+ ldrb r2, [r6, 0xC]
+ ldrb r4, [r6, 0xE]
+ mov r9, r4
+ ldrb r3, [r6, 0x10]
+ ldr r4, [sp]
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ ldr r4, _080F0784 @ =gUnknown_840C0A4
+ adds r0, r4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ cmp r0, 0x40
+ beq _080F0740
+ bl sub_80F0674
+ mov r0, r10
+ lsls r4, r0, 4
+ add r4, r10
+ lsls r4, 2
+ ldr r5, _080F0788 @ =gSprites
+ adds r7, r4, r5
+ ldr r0, _080F078C @ =gUnknown_840C068
+ ldr r1, [sp]
+ adds r0, r1, r0
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ bl StartSpriteAnim
+ adds r5, 0x1C
+ adds r4, r5
+ ldr r0, _080F0790 @ =sub_80F07BC
+ str r0, [r4]
+ movs r0, 0x3
+ mov r2, r9
+ ands r2, r0
+ lsls r2, 2
+ ldrb r1, [r7, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r7, 0x5]
+ ldrb r0, [r6, 0x8]
+ cmp r0, 0x7
+ bls _080F073C
+ subs r0, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+_080F073C:
+ lsls r0, 5
+ strh r0, [r7, 0x2E]
+_080F0740:
+ ldr r0, _080F0780 @ =gTasks
+ mov r4, r8
+ lsls r1, r4, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x8
+ ldrsh r1, [r1, r2]
+ adds r2, r0, 0
+ cmp r1, 0xF
+ bne _080F079C
+ ldr r0, _080F0794 @ =gMain
+ ldr r4, _080F0798 @ =0x00000439
+ adds r0, r4
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0776
+ ldr r0, _080F0788 @ =gSprites
+ mov r2, r10
+ lsls r1, r2, 4
+ add r1, r10
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0776:
+ mov r0, r8
+ bl DestroyTask
+ b _080F07AC
+ .align 2, 0
+_080F0780: .4byte gTasks
+_080F0784: .4byte gUnknown_840C0A4
+_080F0788: .4byte gSprites
+_080F078C: .4byte gUnknown_840C068
+_080F0790: .4byte sub_80F07BC
+_080F0794: .4byte gMain
+_080F0798: .4byte 0x00000439
+_080F079C:
+ mov r4, r8
+ lsls r0, r4, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x8]
+ adds r1, 0x1
+ strh r1, [r0, 0x8]
+_080F07AC:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F06A4
+
+ thumb_func_start sub_80F07BC
+sub_80F07BC: @ 80F07BC
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1, 0x30]
+ movs r3, 0x30
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080F07D4
+ ldr r0, _080F07D0 @ =sub_80F07DC
+ str r0, [r1, 0x1C]
+ b _080F07D8
+ .align 2, 0
+_080F07D0: .4byte sub_80F07DC
+_080F07D4:
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x30]
+_080F07D8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F07BC
+
+ thumb_func_start sub_80F07DC
+sub_80F07DC: @ 80F07DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x2
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x32
+ bne _080F0810
+ adds r0, r4, 0
+ bl sub_80F1198
+_080F0810:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F07DC
+
+ thumb_func_start sub_80F0818
+sub_80F0818: @ 80F0818
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F08FC @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0900 @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F085E:
+ ldr r0, _080F0904 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F08BE
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0908 @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F090C @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0910 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0xA
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+_080F08BE:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F085E
+ ldr r0, _080F0914 @ =gMain
+ ldr r1, _080F0918 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F08E6
+ ldr r0, _080F0900 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F08E6:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F08FC: .4byte gTasks
+_080F0900: .4byte gSprites
+_080F0904: .4byte gUnknown_840C0A4
+_080F0908: .4byte gUnknown_840C068
+_080F090C: .4byte gSprites + 0x1C
+_080F0910: .4byte sub_80F0D5C
+_080F0914: .4byte gMain
+_080F0918: .4byte 0x00000439
+ thumb_func_end sub_80F0818
+
+ thumb_func_start sub_80F091C
+sub_80F091C: @ 80F091C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F0A00 @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0A04 @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F0962:
+ ldr r0, _080F0A08 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F09C2
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0A0C @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0A10 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0A14 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0xA
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ movs r0, 0x2
+ strh r0, [r5, 0x3A]
+_080F09C2:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0962
+ ldr r0, _080F0A18 @ =gMain
+ ldr r1, _080F0A1C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F09EA
+ ldr r0, _080F0A04 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F09EA:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0A00: .4byte gTasks
+_080F0A04: .4byte gSprites
+_080F0A08: .4byte gUnknown_840C0A4
+_080F0A0C: .4byte gUnknown_840C068
+_080F0A10: .4byte gSprites + 0x1C
+_080F0A14: .4byte sub_80F0D5C
+_080F0A18: .4byte gMain
+_080F0A1C: .4byte 0x00000439
+ thumb_func_end sub_80F091C
+
+ thumb_func_start sub_80F0A20
+sub_80F0A20: @ 80F0A20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F0B00 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F0B04 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F0B08 @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F0A66:
+ ldr r0, _080F0B0C @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0AC2
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0B10 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0B14 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x4
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0AC2:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0A66
+ ldr r0, _080F0B18 @ =gMain
+ ldr r1, _080F0B1C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0AEA
+ ldr r0, _080F0B04 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0AEA:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0B00: .4byte gTasks
+_080F0B04: .4byte gSprites
+_080F0B08: .4byte gUnknown_840C068
+_080F0B0C: .4byte gUnknown_840C0A4
+_080F0B10: .4byte gSprites + 0x1C
+_080F0B14: .4byte sub_80F0D5C
+_080F0B18: .4byte gMain
+_080F0B1C: .4byte 0x00000439
+ thumb_func_end sub_80F0A20
+
+ thumb_func_start sub_80F0B20
+sub_80F0B20: @ 80F0B20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F0C08 @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0C0C @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F0B66:
+ ldr r0, _080F0C10 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0BCA
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0C14 @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0C18 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0C1C @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r7
+ strh r0, [r5, 0x2E]
+ movs r0, 0x5
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0BCA:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x9
+ bls _080F0B66
+ ldr r0, _080F0C20 @ =gMain
+ ldr r1, _080F0C24 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0BF2
+ ldr r0, _080F0C0C @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0BF2:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0C08: .4byte gTasks
+_080F0C0C: .4byte gSprites
+_080F0C10: .4byte gUnknown_840C0A4
+_080F0C14: .4byte gUnknown_840C068
+_080F0C18: .4byte gSprites + 0x1C
+_080F0C1C: .4byte sub_80F0D5C
+_080F0C20: .4byte gMain
+_080F0C24: .4byte 0x00000439
+ thumb_func_end sub_80F0B20
+
+ thumb_func_start sub_80F0C28
+sub_80F0C28: @ 80F0C28
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F0C54 @ =gTasks
+ lsls r2, r0, 2
+ adds r0, r2, r0
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r1, [r3, 0x16]
+ movs r4, 0x16
+ ldrsh r0, [r3, r4]
+ cmp r0, 0
+ beq _080F0C58
+ subs r0, r1, 0x1
+ strh r0, [r3, 0x16]
+ b _080F0D2A
+ .align 2, 0
+_080F0C54: .4byte gTasks
+_080F0C58:
+ ldrh r0, [r3, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r3, 0xA]
+ str r1, [sp]
+ ldrb r4, [r3, 0xC]
+ str r4, [sp, 0x4]
+ ldrb r1, [r3, 0xE]
+ str r1, [sp, 0x8]
+ ldrb r3, [r3, 0x10]
+ str r3, [sp, 0xC]
+ movs r7, 0
+ str r2, [sp, 0x14]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 3
+ str r1, [sp, 0x10]
+ ldr r3, _080F0D3C @ =gSprites
+ mov r9, r3
+ ldr r1, _080F0D40 @ =gUnknown_840C068
+ adds r0, r1
+ mov r10, r0
+_080F0C84:
+ ldr r0, _080F0D44 @ =gUnknown_840C0A4
+ ldr r4, [sp, 0x10]
+ adds r0, r4, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0CE0
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r0, r9
+ adds r5, r4, r0
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0D48 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0D4C @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x8
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0CE0:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0C84
+ ldr r0, _080F0D50 @ =gTasks
+ ldr r1, [sp, 0x14]
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x8
+ strh r0, [r1, 0x16]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0x2
+ bne _080F0D2A
+ ldr r0, _080F0D54 @ =gMain
+ ldr r4, _080F0D58 @ =0x00000439
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0D24
+ ldr r0, _080F0D3C @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0D24:
+ mov r0, r8
+ bl DestroyTask
+_080F0D2A:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0D3C: .4byte gSprites
+_080F0D40: .4byte gUnknown_840C068
+_080F0D44: .4byte gUnknown_840C0A4
+_080F0D48: .4byte gSprites + 0x1C
+_080F0D4C: .4byte sub_80F0D5C
+_080F0D50: .4byte gTasks
+_080F0D54: .4byte gMain
+_080F0D58: .4byte 0x00000439
+ thumb_func_end sub_80F0C28
+
+ thumb_func_start sub_80F0D5C
+sub_80F0D5C: @ 80F0D5C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x2E]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ ldrh r2, [r4, 0x30]
+ adds r0, r2
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F0DAC
+ adds r0, r4, 0
+ bl sub_80F1198
+_080F0DAC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0D5C
+
+ thumb_func_start sub_80F0DB4
+sub_80F0DB4: @ 80F0DB4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F0E90 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F0E94 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F0E98 @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F0DFA:
+ ldr r0, _080F0E9C @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0E52
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0EA0 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0EA4 @ =sub_80F0EB0
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r7
+ strh r0, [r5, 0x2E]
+_080F0E52:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0xB
+ bls _080F0DFA
+ ldr r0, _080F0EA8 @ =gMain
+ ldr r1, _080F0EAC @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0E7A
+ ldr r0, _080F0E94 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0E7A:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0E90: .4byte gTasks
+_080F0E94: .4byte gSprites
+_080F0E98: .4byte gUnknown_840C068
+_080F0E9C: .4byte gUnknown_840C0A4
+_080F0EA0: .4byte gSprites + 0x1C
+_080F0EA4: .4byte sub_80F0EB0
+_080F0EA8: .4byte gMain
+_080F0EAC: .4byte 0x00000439
+ thumb_func_end sub_80F0DB4
+
+ thumb_func_start sub_80F0EB0
+sub_80F0EB0: @ 80F0EB0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ adds r0, r4, 0
+ bl Sin
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl Cos
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x6
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F0F08
+ adds r0, r5, 0
+ bl sub_80F1198
+_080F0F08:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0EB0
+
+ thumb_func_start sub_80F0F10
+sub_80F0F10: @ 80F0F10
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ ldr r0, _080F0FC4 @ =gTasks
+ ldr r2, [sp]
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp, 0x4]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x8]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0xC]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0x10]
+ movs r3, 0
+ mov r8, r3
+ mov r1, r9
+ lsls r0, r1, 1
+ add r0, r9
+ lsls r0, 3
+ str r0, [sp, 0x14]
+_080F0F54:
+ movs r7, 0
+ movs r2, 0x1
+ add r2, r8
+ mov r10, r2
+_080F0F5C:
+ ldr r0, _080F0FC8 @ =gUnknown_840C0A4
+ ldr r3, [sp, 0x14]
+ adds r0, r3, r0
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ ldr r3, [sp, 0x10]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0FE4
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ ldr r0, _080F0FCC @ =gSprites
+ adds r5, r4, r0
+ ldr r0, _080F0FD0 @ =gUnknown_840C068
+ add r0, r9
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r1, _080F0FD4 @ =gSprites + 0x1C
+ adds r4, r1
+ ldr r0, _080F0FD8 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r1, [sp, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r2, r3, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x8
+ strh r0, [r5, 0x36]
+ mov r0, r8
+ cmp r0, 0
+ bne _080F0FDC
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ movs r0, 0x1
+ b _080F0FE2
+ .align 2, 0
+_080F0FC4: .4byte gTasks
+_080F0FC8: .4byte gUnknown_840C0A4
+_080F0FCC: .4byte gSprites
+_080F0FD0: .4byte gUnknown_840C068
+_080F0FD4: .4byte gSprites + 0x1C
+_080F0FD8: .4byte sub_80F0D5C
+_080F0FDC:
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ movs r0, 0x2
+_080F0FE2:
+ strh r0, [r5, 0x3A]
+_080F0FE4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0F5C
+ mov r1, r10
+ lsls r0, r1, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x1
+ bls _080F0F54
+ ldr r0, _080F1030 @ =gMain
+ ldr r2, _080F1034 @ =0x00000439
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F1018
+ ldr r0, _080F1038 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F1018:
+ ldr r0, [sp]
+ bl DestroyTask
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1030: .4byte gMain
+_080F1034: .4byte 0x00000439
+_080F1038: .4byte gSprites
+ thumb_func_end sub_80F0F10
+
+ thumb_func_start sub_80F103C
+sub_80F103C: @ 80F103C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F1114 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F1118 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F111C @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F1082:
+ ldr r0, _080F1120 @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F10D4
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F1124 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F1128 @ =sub_80F1134
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+_080F10D4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F1082
+ ldr r0, _080F112C @ =gMain
+ ldr r1, _080F1130 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F10FC
+ ldr r0, _080F1118 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F10FC:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1114: .4byte gTasks
+_080F1118: .4byte gSprites
+_080F111C: .4byte gUnknown_840C068
+_080F1120: .4byte gUnknown_840C0A4
+_080F1124: .4byte gSprites + 0x1C
+_080F1128: .4byte sub_80F1134
+_080F112C: .4byte gMain
+_080F1130: .4byte 0x00000439
+ thumb_func_end sub_80F103C
+
+ thumb_func_start sub_80F1134
+sub_80F1134: @ 80F1134
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ ldrh r1, [r5, 0x2E]
+ movs r0, 0x3F
+ ands r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ bl Sin
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl Cos
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F1190
+ adds r0, r5, 0
+ bl sub_80F1198
+_080F1190:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F1134
+
+ thumb_func_start sub_80F1198
+sub_80F1198: @ 80F1198
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ ldr r0, _080F11BC @ =gMain
+ ldr r1, _080F11C0 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F11C4
+ movs r1, 0x3C
+ ldrsh r0, [r7, r1]
+ cmp r0, 0x1
+ bne _080F11F6
+ adds r0, r7, 0
+ bl DestroySpriteAndFreeResources
+ b _080F1212
+ .align 2, 0
+_080F11BC: .4byte gMain
+_080F11C0: .4byte 0x00000439
+_080F11C4:
+ ldr r2, _080F1200 @ =gUnknown_2024018
+ ldr r0, [r2]
+ ldr r1, [r0, 0x8]
+ ldrb r0, [r1, 0xA]
+ subs r0, 0x1
+ strb r0, [r1, 0xA]
+ ldr r0, [r2]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ bne _080F120C
+ movs r6, 0
+ ldr r5, _080F1204 @ =gUnknown_840BF48
+ ldr r4, _080F1208 @ =gUnknown_840BFA8
+_080F11E0:
+ ldrh r0, [r5, 0x6]
+ bl FreeSpriteTilesByTag
+ ldrh r0, [r4, 0x4]
+ bl FreeSpritePaletteByTag
+ adds r5, 0x8
+ adds r4, 0x8
+ adds r6, 0x1
+ cmp r6, 0xB
+ ble _080F11E0
+_080F11F6:
+ adds r0, r7, 0
+ bl DestroySprite
+ b _080F1212
+ .align 2, 0
+_080F1200: .4byte gUnknown_2024018
+_080F1204: .4byte gUnknown_840BF48
+_080F1208: .4byte gUnknown_840BFA8
+_080F120C:
+ adds r0, r7, 0
+ bl DestroySprite
+_080F1212:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F1198
+
+ thumb_func_start LaunchBallFadeMonTask
+LaunchBallFadeMonTask: @ 80F1218
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ mov r9, r2
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r3, 24
+ lsrs r7, r3, 24
+ ldr r0, _080F127C @ =sub_80F12E0
+ movs r1, 0x5
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F1280 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r5, r0, r1
+ strh r7, [r5, 0x26]
+ strh r6, [r5, 0xE]
+ mov r0, r9
+ strh r0, [r5, 0x1C]
+ mov r1, r9
+ lsrs r0, r1, 16
+ strh r0, [r5, 0x1E]
+ cmp r4, 0
+ bne _080F1288
+ lsls r0, r6, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r0, r2
+ lsrs r0, 16
+ ldr r2, _080F1284 @ =gUnknown_840C1C4
+ lsls r1, r7, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalette
+ movs r0, 0x1
+ strh r0, [r5, 0xA]
+ b _080F12AE
+ .align 2, 0
+_080F127C: .4byte sub_80F12E0
+_080F1280: .4byte gTasks
+_080F1284: .4byte gUnknown_840C1C4
+_080F1288:
+ lsls r0, r6, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r0, 16
+ ldr r2, _080F12D0 @ =gUnknown_840C1C4
+ lsls r1, r7, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0x10
+ bl BlendPalette
+ movs r0, 0x10
+ strh r0, [r5, 0x8]
+ ldr r0, _080F12D4 @ =0x0000ffff
+ strh r0, [r5, 0xA]
+ ldr r0, _080F12D8 @ =sub_80F1370
+ str r0, [r5]
+_080F12AE:
+ ldr r0, _080F12DC @ =0x00007fff
+ str r0, [sp]
+ mov r0, r9
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ mov r0, r8
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080F12D0: .4byte gUnknown_840C1C4
+_080F12D4: .4byte 0x0000ffff
+_080F12D8: .4byte sub_80F1370
+_080F12DC: .4byte 0x00007fff
+ thumb_func_end LaunchBallFadeMonTask
+
+ thumb_func_start sub_80F12E0
+sub_80F12E0: @ 80F12E0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080F1330 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x10
+ bgt _080F1338
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r0, r2
+ lsrs r0, 16
+ ldrb r2, [r4, 0x8]
+ ldr r3, _080F1334 @ =gUnknown_840C1C4
+ lsls r1, 1
+ adds r1, r3
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x8]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080F1360
+ .align 2, 0
+_080F1330: .4byte gTasks
+_080F1334: .4byte gUnknown_840C1C4
+_080F1338:
+ ldr r0, _080F1368 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F1360
+ ldrh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ lsls r1, 16
+ orrs r0, r1
+ ldr r1, _080F136C @ =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ adds r0, r5, 0
+ bl DestroyTask
+_080F1360:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1368: .4byte gPaletteFade
+_080F136C: .4byte 0x00007fff
+ thumb_func_end sub_80F12E0
+
+ thumb_func_start sub_80F1370
+sub_80F1370: @ 80F1370
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080F13B0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F13A8
+ ldr r0, _080F13B4 @ =gTasks
+ lsls r4, r2, 2
+ adds r4, r2
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ lsls r1, 16
+ orrs r0, r1
+ ldr r1, _080F13B8 @ =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, _080F13BC @ =sub_80F13C0
+ str r0, [r4]
+_080F13A8:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F13B0: .4byte gPaletteFade
+_080F13B4: .4byte gTasks
+_080F13B8: .4byte 0x00007fff
+_080F13BC: .4byte sub_80F13C0
+ thumb_func_end sub_80F1370
+
+ thumb_func_start sub_80F13C0
+sub_80F13C0: @ 80F13C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080F140C @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x10
+ bgt _080F1414
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 20
+ movs r3, 0x80
+ lsls r3, 17
+ adds r0, r3
+ lsrs r0, 16
+ ldrb r2, [r4, 0x8]
+ ldr r3, _080F1410 @ =gUnknown_840C1C4
+ lsls r1, 1
+ adds r1, r3
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x8]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080F141A
+ .align 2, 0
+_080F140C: .4byte gTasks
+_080F1410: .4byte gUnknown_840C1C4
+_080F1414:
+ adds r0, r2, 0
+ bl DestroyTask
+_080F141A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F13C0
+
+ thumb_func_start sub_80F1420
+sub_80F1420: @ 80F1420
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _080F1454 @ =gBattlerSpriteIds
+ ldr r3, _080F1458 @ =gBattleAnimAttacker
+ ldrb r2, [r3]
+ adds r0, r2, r0
+ ldrb r6, [r0]
+ ldr r1, _080F145C @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080F14F8
+ cmp r0, 0x1
+ bgt _080F1460
+ cmp r0, 0
+ beq _080F1466
+ b _080F15BA
+ .align 2, 0
+_080F1454: .4byte gBattlerSpriteIds
+_080F1458: .4byte gBattleAnimAttacker
+_080F145C: .4byte gTasks
+_080F1460:
+ cmp r0, 0x2
+ beq _080F150A
+ b _080F15BA
+_080F1466:
+ ldr r0, _080F14A0 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1E]
+ movs r2, 0xA0
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r4, [r5, 0x8]
+ adds r0, r4
+ strh r0, [r5, 0x8]
+ ldrb r0, [r3]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F14A8
+ ldr r2, _080F14A4 @ =gSprites
+ lsls r3, r6, 4
+ adds r1, r3, r6
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+ adds r4, r3, 0
+ b _080F14C0
+ .align 2, 0
+_080F14A0: .4byte gBattleAnimArgs
+_080F14A4: .4byte gSprites
+_080F14A8:
+ ldr r3, _080F14F0 @ =gSprites
+ lsls r4, r6, 4
+ adds r2, r4, r6
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r5, 0x8]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+_080F14C0:
+ ldr r1, _080F14F4 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrb r0, [r3, 0x8]
+ strh r0, [r3, 0x8]
+ adds r0, r4, r6
+ lsls r0, 2
+ adds r0, r2
+ movs r2, 0x20
+ ldrsh r1, [r0, r2]
+ movs r4, 0x24
+ ldrsh r0, [r0, r4]
+ adds r1, r0
+ adds r1, 0x20
+ movs r0, 0x98
+ lsls r0, 1
+ cmp r1, r0
+ bls _080F15BA
+ ldrh r0, [r3, 0x1C]
+ adds r0, 0x1
+ strh r0, [r3, 0x1C]
+ b _080F15BA
+ .align 2, 0
+_080F14F0: .4byte gSprites
+_080F14F4: .4byte gTasks
+_080F14F8:
+ ldrb r1, [r5, 0x1E]
+ adds r0, r2, 0
+ adds r2, r6, 0
+ bl LoadBattleMonGfxAndAnimate
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ b _080F15BA
+_080F150A:
+ movs r1, 0xA0
+ lsls r1, 3
+ adds r0, r1, 0
+ ldrh r2, [r5, 0x8]
+ adds r0, r2
+ strh r0, [r5, 0x8]
+ ldrb r0, [r3]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F1540
+ ldr r0, _080F153C @ =gSprites
+ lsls r3, r6, 4
+ adds r2, r3, r6
+ lsls r2, 2
+ adds r2, r0
+ ldrh r1, [r5, 0x8]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r4, r3, 0
+ b _080F1558
+ .align 2, 0
+_080F153C: .4byte gSprites
+_080F1540:
+ ldr r0, _080F158C @ =gSprites
+ lsls r2, r6, 4
+ adds r1, r2, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ adds r4, r2, 0
+_080F1558:
+ ldr r1, _080F1590 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ strh r1, [r0, 0x8]
+ ldr r0, _080F1594 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ beq _080F1598
+ ldr r0, _080F158C @ =gSprites
+ adds r1, r4, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r4, 0x24
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bgt _080F15AE
+ movs r0, 0
+ strh r0, [r1, 0x24]
+ b _080F15B4
+ .align 2, 0
+_080F158C: .4byte gSprites
+_080F1590: .4byte gTasks
+_080F1594: .4byte gBattleAnimAttacker
+_080F1598:
+ ldr r0, _080F15C4 @ =gSprites
+ adds r1, r4, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r3, 0x24
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ blt _080F15AE
+ strh r2, [r1, 0x24]
+ movs r4, 0x1
+ mov r8, r4
+_080F15AE:
+ mov r0, r8
+ cmp r0, 0
+ beq _080F15BA
+_080F15B4:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080F15BA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F15C4: .4byte gSprites
+ thumb_func_end sub_80F1420
+
+ thumb_func_start sub_80F15C8
+sub_80F15C8: @ 80F15C8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080F15EC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080F1644
+ cmp r0, 0x1
+ bgt _080F15F0
+ cmp r0, 0
+ beq _080F15F6
+ b _080F16B4
+ .align 2, 0
+_080F15EC: .4byte gTasks
+_080F15F0:
+ cmp r0, 0x2
+ beq _080F167E
+ b _080F16B4
+_080F15F6:
+ ldr r0, _080F1610 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F1618
+ ldr r1, _080F1614 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ b _080F1620
+ .align 2, 0
+_080F1610: .4byte gBattleAnimAttacker
+_080F1614: .4byte 0x00003f42
+_080F1618:
+ ldr r1, _080F163C @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+_080F1620:
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, _080F1640 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _080F16B4
+ .align 2, 0
+_080F163C: .4byte 0x00003f44
+_080F1640: .4byte gTasks
+_080F1644:
+ ldrh r0, [r4, 0xA]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080F16B4
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0x8]
+ adds r2, 0x1
+ strh r2, [r4, 0x8]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080F16B4
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x1
+ strh r0, [r4, 0x26]
+ b _080F16B4
+_080F167E:
+ ldr r1, _080F16BC @ =gBattlerSpriteIds
+ ldr r4, _080F16C0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r2, _080F16C4 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x4]
+ lsls r1, 22
+ lsrs r1, 17
+ ldr r0, _080F16C8 @ =0x06010000
+ adds r1, r0
+ movs r2, 0x80
+ lsls r2, 4
+ movs r0, 0
+ movs r3, 0x1
+ bl RequestDma3Fill
+ ldrb r0, [r4]
+ bl ClearBehindSubstituteBit
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080F16B4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F16BC: .4byte gBattlerSpriteIds
+_080F16C0: .4byte gBattleAnimAttacker
+_080F16C4: .4byte gSprites
+_080F16C8: .4byte 0x06010000
+ thumb_func_end sub_80F15C8
+
+ thumb_func_start sub_80F16CC
+sub_80F16CC: @ 80F16CC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F16F4 @ =gBattleAnimArgs
+ ldr r1, _080F16F8 @ =gUnknown_2024018
+ ldr r2, [r1]
+ ldr r1, _080F16FC @ =gBattleAnimAttacker
+ ldrb r1, [r1]
+ ldr r2, [r2]
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ lsls r1, 29
+ lsrs r1, 31
+ strh r1, [r3, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F16F4: .4byte gBattleAnimArgs
+_080F16F8: .4byte gUnknown_2024018
+_080F16FC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80F16CC
+
+ thumb_func_start sub_80F1700
+sub_80F1700: @ 80F1700
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080F1718 @ =gBattleAnimTarget
+ ldr r1, _080F171C @ =gUnknown_2023D6E
+ ldrb r1, [r1]
+ strb r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1718: .4byte gBattleAnimTarget
+_080F171C: .4byte gUnknown_2023D6E
+ thumb_func_end sub_80F1700
+
+ thumb_func_start sub_80F1720
+sub_80F1720: @ 80F1720
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r1, 0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _080F17DC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl GetMonData
+ adds r5, r0, 0
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetMonData
+ adds r4, r0, 0
+ adds r0, r6, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F17F8
+ lsrs r0, r5, 16
+ ldr r7, _080F17E0 @ =0x0000ffff
+ ands r5, r7
+ eors r0, r5
+ lsrs r1, r4, 16
+ eors r0, r1
+ ands r4, r7
+ eors r0, r4
+ cmp r0, 0x7
+ bhi _080F177E
+ movs r0, 0x1
+ mov r8, r0
+_080F177E:
+ mov r0, r8
+ cmp r0, 0
+ beq _080F17F8
+ ldr r0, _080F17E4 @ =0x000027f9
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r7
+ bne _080F179E
+ ldr r0, _080F17E8 @ =gUnknown_83AD350
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F17EC @ =gUnknown_83ADC58
+ bl LoadCompressedSpritePaletteUsingHeap
+_080F179E:
+ ldr r5, _080F17F0 @ =sub_80F181C
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F17F4 @ =gTasks
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 3
+ adds r2, r3
+ movs r4, 0
+ strh r6, [r2, 0x8]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r3
+ strh r6, [r1, 0x8]
+ strh r4, [r2, 0xA]
+ movs r0, 0x1
+ strh r0, [r1, 0xA]
+ b _080F180E
+ .align 2, 0
+_080F17DC: .4byte gUnknown_2024018
+_080F17E0: .4byte 0x0000ffff
+_080F17E4: .4byte 0x000027f9
+_080F17E8: .4byte gUnknown_83AD350
+_080F17EC: .4byte gUnknown_83ADC58
+_080F17F0: .4byte sub_80F181C
+_080F17F4: .4byte gTasks
+_080F17F8:
+ ldr r0, _080F1818 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x1]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+_080F180E:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1818: .4byte gUnknown_2024018
+ thumb_func_end sub_80F1720
+
+ thumb_func_start sub_80F181C
+sub_80F181C: @ 80F181C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080F1844 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x22]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3B
+ bgt _080F1848
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x22]
+ b _080F19C0
+ .align 2, 0
+_080F1844: .4byte gTasks
+_080F1848:
+ ldr r0, _080F189C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ beq _080F1856
+ b _080F19C0
+_080F1856:
+ ldrh r0, [r4, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x1C]
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ cmp r1, 0
+ beq _080F186A
+ b _080F19C0
+_080F186A:
+ ldrb r0, [r4, 0x8]
+ mov r8, r0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, r8
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080F18A4
+ ldr r0, _080F18A0 @ =gUnknown_83FF168
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _080F1906
+ .align 2, 0
+_080F189C: .4byte gUnknown_2024018
+_080F18A0: .4byte gUnknown_83FF168
+_080F18A4:
+ cmp r0, 0
+ blt _080F18D8
+ cmp r0, 0x3
+ bgt _080F18D8
+ ldr r0, _080F18D0 @ =gUnknown_83FF180
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080F18D4 @ =gSprites
+ lsls r2, r5, 4
+ adds r2, r5
+ lsls r2, 2
+ adds r2, r0
+ ldrh r3, [r2, 0x4]
+ lsls r1, r3, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ b _080F18F8
+ .align 2, 0
+_080F18D0: .4byte gUnknown_83FF180
+_080F18D4: .4byte gSprites
+_080F18D8:
+ ldr r0, _080F1930 @ =gUnknown_83FF180
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080F1934 @ =gSprites
+ lsls r2, r5, 4
+ adds r2, r5
+ lsls r2, 2
+ adds r2, r0
+ ldrh r3, [r2, 0x4]
+ lsls r1, r3, 22
+ lsrs r1, 22
+ adds r1, 0x5
+_080F18F8:
+ ldr r4, _080F1938 @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080F193C @ =0xfffffc00
+ ands r0, r3
+ orrs r0, r1
+ strh r0, [r2, 0x4]
+_080F1906:
+ ldr r2, _080F1940 @ =gTasks
+ lsls r1, r7, 2
+ adds r0, r1, r7
+ lsls r0, 3
+ adds r6, r0, r2
+ movs r2, 0xA
+ ldrsh r0, [r6, r2]
+ mov r9, r1
+ cmp r0, 0
+ bne _080F1948
+ ldr r1, _080F1934 @ =gSprites
+ lsls r2, r5, 4
+ adds r0, r2, r5
+ lsls r0, 2
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080F1944 @ =sub_80F1A2C
+ str r1, [r0]
+ adds r4, r2, 0
+ b _080F1990
+ .align 2, 0
+_080F1930: .4byte gUnknown_83FF180
+_080F1934: .4byte gSprites
+_080F1938: .4byte 0x000003ff
+_080F193C: .4byte 0xfffffc00
+_080F1940: .4byte gTasks
+_080F1944: .4byte sub_80F1A2C
+_080F1948:
+ ldr r3, _080F19CC @ =gSprites
+ lsls r4, r5, 4
+ adds r1, r4, r5
+ lsls r1, 2
+ adds r0, r3, 0
+ adds r0, 0x1C
+ adds r0, r1, r0
+ ldr r2, _080F19D0 @ =sub_80F1A80
+ str r2, [r0]
+ adds r1, r3
+ ldr r0, _080F19D4 @ =0x0000ffe0
+ strh r0, [r1, 0x24]
+ movs r0, 0x20
+ strh r0, [r1, 0x26]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ movs r1, 0x1E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080F1990
+ mov r0, r8
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0x3F
+ cmp r0, 0
+ bne _080F1986
+ movs r1, 0xC0
+_080F1986:
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x5F
+ bl PlaySE12WithPanning
+_080F1990:
+ ldr r1, _080F19CC @ =gSprites
+ adds r0, r4, r5
+ lsls r0, 2
+ adds r0, r1
+ strh r7, [r0, 0x2E]
+ ldr r1, _080F19D8 @ =gTasks
+ mov r2, r9
+ adds r0, r2, r7
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ cmp r5, 0x40
+ beq _080F19B4
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+_080F19B4:
+ movs r4, 0x1E
+ ldrsh r0, [r1, r4]
+ cmp r0, 0x5
+ bne _080F19C0
+ ldr r0, _080F19DC @ =sub_80F19E0
+ str r0, [r1]
+_080F19C0:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F19CC: .4byte gSprites
+_080F19D0: .4byte sub_80F1A80
+_080F19D4: .4byte 0x0000ffe0
+_080F19D8: .4byte gTasks
+_080F19DC: .4byte sub_80F19E0
+ thumb_func_end sub_80F181C
+
+ thumb_func_start sub_80F19E0
+sub_80F19E0: @ 80F19E0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r0, 0
+ ldr r1, _080F1A24 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r2, 0x20
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080F1A20
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ bne _080F1A1A
+ ldrb r1, [r1, 0x8]
+ ldr r0, _080F1A28 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r2, [r0, 0x4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x1]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+_080F1A1A:
+ adds r0, r3, 0
+ bl DestroyTask
+_080F1A20:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1A24: .4byte gTasks
+_080F1A28: .4byte gUnknown_2024018
+ thumb_func_end sub_80F19E0
+
+ thumb_func_start sub_80F1A2C
+sub_80F1A2C: @ 80F1A2C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x18
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x18
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xC
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080F1A76
+ ldr r2, _080F1A7C @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x20]
+ subs r1, 0x1
+ strh r1, [r0, 0x20]
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F1A76:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1A7C: .4byte gTasks
+ thumb_func_end sub_80F1A2C
+
+ thumb_func_start sub_80F1A80
+sub_80F1A80: @ 80F1A80
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ bgt _080F1A94
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080F1AD6
+_080F1A94:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r1, [r4, 0x24]
+ adds r1, 0x5
+ strh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ subs r0, 0x5
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x20
+ ble _080F1AD6
+ ldr r2, _080F1ADC @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x20]
+ subs r1, 0x1
+ strh r1, [r0, 0x20]
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F1AD6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1ADC: .4byte gTasks
+ thumb_func_end sub_80F1A80
+
+ thumb_func_start sub_80F1AE0
+sub_80F1AE0: @ 80F1AE0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080F1B08 @ =gUnknown_83AD470
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F1B0C @ =gUnknown_83ADD78
+ bl LoadCompressedSpritePaletteUsingHeap
+ ldr r0, _080F1B10 @ =0x0000281d
+ bl IndexOfSpritePaletteTag
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1B08: .4byte gUnknown_83AD470
+_080F1B0C: .4byte gUnknown_83ADD78
+_080F1B10: .4byte 0x0000281d
+ thumb_func_end sub_80F1AE0
+
+ thumb_func_start sub_80F1B14
+sub_80F1B14: @ 80F1B14
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, _080F1B38 @ =0x0000281d
+ adds r0, r5, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r5, 0
+ bl FreeSpritePaletteByTag
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1B38: .4byte 0x0000281d
+ thumb_func_end sub_80F1B14
+
+ thumb_func_start sub_80F1B3C
+sub_80F1B3C: @ 80F1B3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r5, _080F1BB0 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5, 0x4]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x6]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ ldr r0, _080F1BB4 @ =0x0000ffe0
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r2, _080F1BB8 @ =gSprites
+ ldr r1, _080F1BBC @ =gBattlerSpriteIds
+ ldr r0, _080F1BC0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _080F1BC4 @ =sub_8012354
+ str r1, [r0]
+ ldr r0, _080F1BC8 @ =sub_80F1BCC
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1BB0: .4byte gBattleAnimArgs
+_080F1BB4: .4byte 0x0000ffe0
+_080F1BB8: .4byte gSprites
+_080F1BBC: .4byte gBattlerSpriteIds
+_080F1BC0: .4byte gBattleAnimAttacker
+_080F1BC4: .4byte sub_8012354
+_080F1BC8: .4byte sub_80F1BCC
+ thumb_func_end sub_80F1B3C
+
+ thumb_func_start sub_80F1BCC
+sub_80F1BCC: @ 80F1BCC
+ push {lr}
+ adds r3, r0, 0
+ ldr r2, _080F1BF4 @ =gSprites
+ ldr r1, _080F1BF8 @ =gBattlerSpriteIds
+ ldr r0, _080F1BFC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080F1BF0
+ ldr r0, _080F1C00 @ =sub_80F1C04
+ str r0, [r3, 0x1C]
+_080F1BF0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1BF4: .4byte gSprites
+_080F1BF8: .4byte gBattlerSpriteIds
+_080F1BFC: .4byte gBattleAnimAttacker
+_080F1C00: .4byte sub_80F1C04
+ thumb_func_end sub_80F1BCC
+
+ thumb_func_start sub_80F1C04
+sub_80F1C04: @ 80F1C04
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F1C26
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080F1C2C @ =sub_80F1C30
+ str r0, [r4, 0x1C]
+_080F1C26:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1C2C: .4byte sub_80F1C30
+ thumb_func_end sub_80F1C04
+
+ thumb_func_start sub_80F1C30
+sub_80F1C30: @ 80F1C30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080F1C80 @ =gSprites
+ ldr r3, _080F1C84 @ =gBattlerSpriteIds
+ ldr r2, _080F1C88 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 27
+ cmp r0, 0
+ bge _080F1C78
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080F1C78
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ movs r1, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080F1C78:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1C80: .4byte gSprites
+_080F1C84: .4byte gBattlerSpriteIds
+_080F1C88: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80F1C30
+
+ thumb_func_start sub_80F1C8C
+sub_80F1C8C: @ 80F1C8C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080F1CA4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080F1CA8
+ cmp r0, 0x1
+ beq _080F1CBC
+ b _080F1CD0
+ .align 2, 0
+_080F1CA4: .4byte gBattleAnimArgs
+_080F1CA8:
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CB8 @ =gBattleAnimAttacker
+ strb r0, [r1]
+ movs r0, 0x1
+ b _080F1CC8
+ .align 2, 0
+_080F1CB8: .4byte gBattleAnimAttacker
+_080F1CBC:
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CDC @ =gBattleAnimAttacker
+ strb r0, [r1]
+ movs r0, 0
+_080F1CC8:
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CE0 @ =gBattleAnimTarget
+ strb r0, [r1]
+_080F1CD0:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1CDC: .4byte gBattleAnimAttacker
+_080F1CE0: .4byte gBattleAnimTarget
+ thumb_func_end sub_80F1C8C
+
+ thumb_func_start sub_80F1CE4
+sub_80F1CE4: @ 80F1CE4
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080F1CF8 @ =gUnknown_2023E82
+ ldrb r0, [r2, 0x5]
+ cmp r0, 0x2
+ bls _080F1D00
+ ldr r1, _080F1CFC @ =gBattleAnimArgs
+ movs r0, 0
+ b _080F1D04
+ .align 2, 0
+_080F1CF8: .4byte gUnknown_2023E82
+_080F1CFC: .4byte gBattleAnimArgs
+_080F1D00:
+ ldr r1, _080F1D10 @ =gBattleAnimArgs
+ ldrb r0, [r2, 0x5]
+_080F1D04:
+ strh r0, [r1, 0xE]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1D10: .4byte gBattleAnimArgs
+ thumb_func_end sub_80F1CE4
+
+ thumb_func_start sub_80F1D14
+sub_80F1D14: @ 80F1D14
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080F1D2C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrh r1, [r0]
+ cmp r1, 0x53
+ bne _080F1D34
+ ldr r1, _080F1D30 @ =gBattleAnimArgs
+ movs r0, 0x1
+ b _080F1D6C
+ .align 2, 0
+_080F1D2C: .4byte gUnknown_2024018
+_080F1D30: .4byte gBattleAnimArgs
+_080F1D34:
+ cmp r1, 0xFA
+ bne _080F1D44
+ ldr r1, _080F1D40 @ =gBattleAnimArgs
+ movs r0, 0x2
+ b _080F1D6C
+ .align 2, 0
+_080F1D40: .4byte gBattleAnimArgs
+_080F1D44:
+ cmp r1, 0x80
+ bne _080F1D54
+ ldr r1, _080F1D50 @ =gBattleAnimArgs
+ movs r0, 0x3
+ b _080F1D6C
+ .align 2, 0
+_080F1D50: .4byte gBattleAnimArgs
+_080F1D54:
+ movs r0, 0xA4
+ lsls r0, 1
+ cmp r1, r0
+ bne _080F1D68
+ ldr r1, _080F1D64 @ =gBattleAnimArgs
+ movs r0, 0x4
+ b _080F1D6C
+ .align 2, 0
+_080F1D64: .4byte gBattleAnimArgs
+_080F1D68:
+ ldr r1, _080F1D78 @ =gBattleAnimArgs
+ movs r0, 0
+_080F1D6C:
+ strh r0, [r1]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1D78: .4byte gBattleAnimArgs
+ thumb_func_end sub_80F1D14
+
+ thumb_func_start sub_80F1D7C
+sub_80F1D7C: @ 80F1D7C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F1DA0 @ =gBattleAnimAttacker
+ ldr r1, _080F1DA4 @ =gUnknown_2024018
+ ldr r2, [r1]
+ ldr r1, [r2, 0x8]
+ ldrh r1, [r1]
+ strb r1, [r3]
+ ldr r3, _080F1DA8 @ =gBattleAnimTarget
+ ldr r1, [r2, 0x8]
+ ldrh r1, [r1]
+ lsrs r1, 8
+ strb r1, [r3]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1DA0: .4byte gBattleAnimAttacker
+_080F1DA4: .4byte gUnknown_2024018
+_080F1DA8: .4byte gBattleAnimTarget
+ thumb_func_end sub_80F1D7C
+
+ .align 2, 0 @ Don't pad with nop.