summaryrefslogtreecommitdiff
path: root/asm/current.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/current.s')
-rwxr-xr-xasm/current.s2390
1 files changed, 2390 insertions, 0 deletions
diff --git a/asm/current.s b/asm/current.s
new file mode 100755
index 000000000..ba5f5c842
--- /dev/null
+++ b/asm/current.s
@@ -0,0 +1,2390 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ @ current
+
+ thumb_func_start sub_80D648C
+sub_80D648C: @ 80D648C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r5, _080D6500 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r6, _080D6504 @ =gBattleAnimBankTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x38]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x3C]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, _080D6508 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080D650C @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r1, _080D6510 @ =sub_80D6514
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6500: .4byte gBattleAnimArgs
+_080D6504: .4byte gBattleAnimBankTarget
+_080D6508: .4byte 0x000003ff
+_080D650C: .4byte 0xfffffc00
+_080D6510: .4byte sub_80D6514
+ thumb_func_end sub_80D648C
+
+ thumb_func_start sub_80D6514
+sub_80D6514: @ 80D6514
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078B5C
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D657E
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r2, [r4, 0x3C]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080D6584
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ b _080D6584
+_080D657E:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D6584:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D6514
+
+ thumb_func_start sub_80D658C
+sub_80D658C: @ 80D658C
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x38]
+ subs r0, 0x1
+ strh r0, [r3, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080D65C4
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x36]
+ strh r0, [r3, 0x38]
+_080D65C4:
+ ldrh r0, [r3, 0x34]
+ subs r1, r0, 0x1
+ strh r1, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080D65D6
+ adds r0, r3, 0
+ bl move_anim_8072740
+_080D65D6:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D658C
+
+ thumb_func_start sub_80D65DC
+sub_80D65DC: @ 80D65DC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r0, _080D6644 @ =gMain
+ ldr r1, _080D6648 @ =0x0000043d
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080D65FE
+ ldr r0, _080D664C @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D6606
+_080D65FE:
+ ldr r1, _080D6650 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080D6606:
+ ldr r5, _080D664C @ =gBattleAnimBankTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ ldr r4, _080D6650 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4]
+ strh r0, [r6, 0x34]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r6, 0x36]
+ strh r0, [r6, 0x38]
+ ldr r0, _080D6654 @ =sub_80D658C
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6644: .4byte gMain
+_080D6648: .4byte 0x0000043d
+_080D664C: .4byte gBattleAnimBankTarget
+_080D6650: .4byte gBattleAnimArgs
+_080D6654: .4byte sub_80D658C
+ thumb_func_end sub_80D65DC
+
+ thumb_func_start sub_80D6658
+sub_80D6658: @ 80D6658
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r1, _080D6674 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x2E]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080D667C
+ ldr r0, _080D6678 @ =gBattleAnimBankTarget
+ b _080D667E
+ .align 2, 0
+_080D6674: .4byte gBattleAnimArgs
+_080D6678: .4byte gBattleAnimBankTarget
+_080D667C:
+ ldr r0, _080D670C @ =gBattleAnimBankAttacker
+_080D667E:
+ ldrb r6, [r0]
+ ldr r0, _080D6710 @ =gMain
+ ldr r3, _080D6714 @ =0x0000043d
+ adds r0, r3
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080D669C
+ adds r0, r6, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D66A4
+_080D669C:
+ ldr r1, _080D6718 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080D66A4:
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ ldr r4, _080D6718 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r4, 0x2]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ ldrh r1, [r4, 0xE]
+ ldr r0, _080D671C @ =0x00007fff
+ ands r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r5, 0x3A]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x3C]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, _080D6720 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080D6724 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r1, _080D6728 @ =sub_80D672C
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D670C: .4byte gBattleAnimBankAttacker
+_080D6710: .4byte gMain
+_080D6714: .4byte 0x0000043d
+_080D6718: .4byte gBattleAnimArgs
+_080D671C: .4byte 0x00007fff
+_080D6720: .4byte 0x000003ff
+_080D6724: .4byte 0xfffffc00
+_080D6728: .4byte sub_80D672C
+ thumb_func_end sub_80D6658
+
+ thumb_func_start sub_80D672C
+sub_80D672C: @ 80D672C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _080D6782
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080D6782:
+ ldrh r0, [r4, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080D6794
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D6794:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D672C
+
+ thumb_func_start sub_80D679C
+sub_80D679C: @ 80D679C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8078764
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldr r3, _080D67D8 @ =gBattleAnimArgs
+ movs r5, 0x6
+ ldrsh r0, [r3, r5]
+ lsls r0, 2
+ adds r1, r0
+ ldr r5, _080D67DC @ =0x000003ff
+ adds r0, r5, 0
+ ands r1, r0
+ ldr r0, _080D67E0 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ movs r1, 0x6
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _080D67E4
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ b _080D67F2
+ .align 2, 0
+_080D67D8: .4byte gBattleAnimArgs
+_080D67DC: .4byte 0x000003ff
+_080D67E0: .4byte 0xfffffc00
+_080D67E4:
+ cmp r0, 0x2
+ bne _080D67F6
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x20
+_080D67F2:
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_080D67F6:
+ ldr r0, _080D6810 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080D6814 @ =sub_80782D8
+ str r0, [r4, 0x1C]
+ ldr r1, _080D6818 @ =move_anim_8072740
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6810: .4byte gBattleAnimArgs
+_080D6814: .4byte sub_80782D8
+_080D6818: .4byte move_anim_8072740
+ thumb_func_end sub_80D679C
+
+ thumb_func_start sub_80D681C
+sub_80D681C: @ 80D681C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _080D6864 @ =gBattleAnimBankTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8077ABC
+ ldr r1, _080D6868 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r1
+ lsls r0, 24
+ ldr r5, _080D686C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xC]
+ ldr r0, _080D6870 @ =sub_80D6874
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6864: .4byte gBattleAnimBankTarget
+_080D6868: .4byte gTasks
+_080D686C: .4byte gBattleAnimArgs
+_080D6870: .4byte sub_80D6874
+ thumb_func_end sub_80D681C
+
+ thumb_func_start sub_80D6874
+sub_80D6874: @ 80D6874
+ 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 r9, r0
+ movs r5, 0
+ movs r7, 0
+ ldr r1, _080D68B4 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrb r2, [r0, 0xC]
+ str r2, [sp]
+ ldrh r4, [r0, 0x8]
+ ldrh r6, [r0, 0xA]
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0
+ bne _080D68B8
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0x1
+ movs r1, 0x10
+ mov r12, r1
+ b _080D68C2
+ .align 2, 0
+_080D68B4: .4byte gTasks
+_080D68B8:
+ movs r2, 0x10
+ mov r12, r2
+ movs r3, 0x8
+ mov r8, r3
+ movs r2, 0x4
+_080D68C2:
+ mov r0, r9
+ lsls r1, r0, 2
+ adds r0, r1, r0
+ lsls r0, 3
+ add r0, r10
+ movs r3, 0x1C
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0xA
+ bhi _080D69B8
+ lsls r0, 2
+ ldr r1, _080D68E0 @ =_080D68E4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080D68E0: .4byte _080D68E4
+ .align 2, 0
+_080D68E4:
+ .4byte _080D6910
+ .4byte _080D69B8
+ .4byte _080D6924
+ .4byte _080D69B8
+ .4byte _080D6944
+ .4byte _080D69B8
+ .4byte _080D695A
+ .4byte _080D69B8
+ .4byte _080D697C
+ .4byte _080D69B8
+ .4byte _080D69B0
+_080D6910:
+ ldr r0, _080D6920 @ =gSpriteTemplate_83D9938
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ mov r4, r12
+ lsls r3, r4, 16
+ b _080D6992
+ .align 2, 0
+_080D6920: .4byte gSpriteTemplate_83D9938
+_080D6924:
+ mov r0, r12
+ lsls r3, r0, 17
+ mov r1, r8
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, _080D6940 @ =gSpriteTemplate_83D9938
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _080D6992
+ .align 2, 0
+_080D6940: .4byte gSpriteTemplate_83D9938
+_080D6944:
+ mov r3, r12
+ lsls r0, r3, 16
+ asrs r0, 16
+ lsls r3, r0, 1
+ adds r3, r0
+ lsls r0, r2, 1
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ b _080D6986
+_080D695A:
+ mov r0, r12
+ lsls r3, r0, 18
+ lsls r0, r2, 1
+ adds r0, r2
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, _080D6978 @ =gSpriteTemplate_83D9938
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _080D6992
+ .align 2, 0
+_080D6978: .4byte gSpriteTemplate_83D9938
+_080D697C:
+ mov r1, r12
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r3, r0, 2
+ adds r3, r0
+_080D6986:
+ ldr r0, _080D69AC @ =gSpriteTemplate_83D9938
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ lsls r3, 16
+_080D6992:
+ asrs r3, 16
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ b _080D69B8
+ .align 2, 0
+_080D69AC: .4byte gSpriteTemplate_83D9938
+_080D69B0:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+ b _080D69FC
+_080D69B8:
+ cmp r7, 0
+ beq _080D69EC
+ ldr r4, _080D6A0C @ =gSprites
+ lsls r3, r5, 4
+ adds r3, r5
+ lsls r3, 2
+ adds r0, r3, r4
+ ldrh r5, [r0, 0x4]
+ lsls r2, r5, 22
+ lsrs r2, 22
+ add r2, r8
+ ldr r6, _080D6A10 @ =0x000003ff
+ adds r1, r6, 0
+ ands r2, r1
+ ldr r1, _080D6A14 @ =0xfffffc00
+ ands r1, r5
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ mov r1, sp
+ ldrh r1, [r1]
+ strh r1, [r0, 0x2E]
+ adds r4, 0x1C
+ adds r3, r4
+ ldr r1, [r3]
+ bl _call_via_r1
+_080D69EC:
+ ldr r0, _080D6A18 @ =gTasks
+ mov r1, r10
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x1C]
+ adds r0, 0x1
+ strh r0, [r1, 0x1C]
+_080D69FC:
+ 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
+_080D6A0C: .4byte gSprites
+_080D6A10: .4byte 0x000003ff
+_080D6A14: .4byte 0xfffffc00
+_080D6A18: .4byte gTasks
+ thumb_func_end sub_80D6874
+
+ thumb_func_start sub_80D6A1C
+sub_80D6A1C: @ 80D6A1C
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080D6A3E
+ ldrb r1, [r3, 0x1]
+ movs r2, 0x3F
+ adds r0, r2, 0
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r2, r0
+ strb r2, [r3, 0x3]
+ b _080D6A52
+_080D6A3E:
+ ldrb r2, [r3, 0x1]
+ movs r1, 0x3F
+ adds r0, r1, 0
+ ands r0, r2
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r1, r0
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r3, 0x3]
+_080D6A52:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bne _080D6A66
+ adds r0, r3, 0
+ bl DestroySprite
+_080D6A66:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D6A1C
+
+ thumb_func_start sub_80D6A6C
+sub_80D6A6C: @ 80D6A6C
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, _080D6AD4 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+ ldrh r3, [r4, 0x22]
+ adds r0, r3
+ strh r0, [r4, 0x22]
+ ldr r0, _080D6AD8 @ =gBattleAnimSpriteTemplate_83D9950
+ adds r1, 0x20
+ lsls r1, 16
+ asrs r1, 16
+ movs r7, 0x22
+ ldrsh r2, [r4, r7]
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080D6ADC @ =gSprites
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r6, r2, r3
+ ldrh r5, [r6, 0x4]
+ lsls r1, r5, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r7, _080D6AE0 @ =0x000003ff
+ adds r0, r7, 0
+ ands r1, r0
+ ldr r0, _080D6AE4 @ =0xfffffc00
+ ands r0, r5
+ orrs r0, r1
+ strh r0, [r6, 0x4]
+ ldr r1, _080D6AE8 @ =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ adds r3, 0x1C
+ adds r2, r3
+ ldr r0, _080D6AEC @ =sub_80D6AF0
+ str r0, [r2]
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6AD4: .4byte gBattleAnimArgs
+_080D6AD8: .4byte gBattleAnimSpriteTemplate_83D9950
+_080D6ADC: .4byte gSprites
+_080D6AE0: .4byte 0x000003ff
+_080D6AE4: .4byte 0xfffffc00
+_080D6AE8: .4byte gAnimVisualTaskCount
+_080D6AEC: .4byte sub_80D6AF0
+ thumb_func_end sub_80D6A6C
+
+ thumb_func_start sub_80D6AF0
+sub_80D6AF0: @ 80D6AF0
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080D6B24
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+_080D6B24:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080D6B38
+ adds r0, r3, 0
+ bl move_anim_8072740
+_080D6B38:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D6AF0
+
+ thumb_func_start sub_80D6B3C
+sub_80D6B3C: @ 80D6B3C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080D6B5C @ =gTasks
+ adds r5, r1, r0
+ ldr r0, _080D6B60 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080D6B68
+ ldr r4, _080D6B64 @ =gBattleAnimBankAttacker
+ b _080D6B6A
+ .align 2, 0
+_080D6B5C: .4byte gTasks
+_080D6B60: .4byte gBattleAnimArgs
+_080D6B64: .4byte gBattleAnimBankAttacker
+_080D6B68:
+ ldr r4, _080D6BAC @ =gBattleAnimBankTarget
+_080D6B6A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x26]
+ ldr r2, _080D6BB0 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0x2]
+ movs r1, 0
+ strh r0, [r5, 0x14]
+ strh r1, [r5, 0x16]
+ strh r1, [r5, 0x18]
+ strh r1, [r5, 0x1A]
+ strh r1, [r5, 0x1C]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r5, 0x1E]
+ strh r1, [r5, 0x20]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x22]
+ ldr r0, _080D6BB4 @ =sub_80D6BB8
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6BAC: .4byte gBattleAnimBankTarget
+_080D6BB0: .4byte gBattleAnimArgs
+_080D6BB4: .4byte sub_80D6BB8
+ thumb_func_end sub_80D6B3C
+
+ thumb_func_start sub_80D6BB8
+sub_80D6BB8: @ 80D6BB8
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r2, r6, 0
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080D6CA0 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080D6CB8
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ movs r7, 0
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x22
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ ble _080D6CC6
+ strh r7, [r5, 0x20]
+ ldr r0, _080D6CA4 @ =gSpriteTemplate_83D99B8
+ movs r3, 0x24
+ ldrsh r1, [r5, r3]
+ movs r3, 0x26
+ ldrsh r2, [r5, r3]
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080D6CC6
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _080D6CA8 @ =gSprites
+ adds r4, r0
+ ldr r1, _080D6CAC @ =gUnknown_083D9968
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r3, 0
+ ldrsb r3, [r0, r3]
+ ldrh r0, [r4, 0x20]
+ adds r3, r0
+ strh r3, [r4, 0x20]
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r1, 0x1
+ adds r0, r1
+ movs r2, 0
+ ldrsb r2, [r0, r2]
+ ldrh r0, [r4, 0x22]
+ adds r2, r0
+ strh r2, [r4, 0x22]
+ movs r1, 0x18
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ movs r0, 0x28
+ subs r0, r1
+ strh r0, [r4, 0x2E]
+ strh r3, [r4, 0x30]
+ ldrh r0, [r5, 0x24]
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ ldrh r0, [r5, 0x26]
+ strh r0, [r4, 0x36]
+ strh r6, [r4, 0x38]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r1, _080D6CB0 @ =sub_80D6D00
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ ldr r0, _080D6CB4 @ =sub_8078600
+ str r0, [r4, 0x1C]
+ ldrh r0, [r5, 0x1A]
+ adds r0, 0x1
+ strh r0, [r5, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080D6C70
+ strh r7, [r5, 0x1A]
+_080D6C70:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x1E
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ blt _080D6C92
+ strh r7, [r5, 0x1C]
+ ldrh r1, [r5, 0x18]
+ movs r3, 0x18
+ ldrsh r0, [r5, r3]
+ cmp r0, 0x5
+ bgt _080D6C92
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x18]
+_080D6C92:
+ ldrh r0, [r5, 0x16]
+ adds r0, 0x1
+ strh r0, [r5, 0x16]
+ ldrh r0, [r5, 0x14]
+ subs r0, 0x1
+ strh r0, [r5, 0x14]
+ b _080D6CC6
+ .align 2, 0
+_080D6CA0: .4byte gTasks
+_080D6CA4: .4byte gSpriteTemplate_83D99B8
+_080D6CA8: .4byte gSprites
+_080D6CAC: .4byte gUnknown_083D9968
+_080D6CB0: .4byte sub_80D6D00
+_080D6CB4: .4byte sub_8078600
+_080D6CB8:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D6CC6
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080D6CC6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D6BB8
+
+ thumb_func_start sub_80D6CCC
+sub_80D6CCC: @ 80D6CCC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078B5C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D6CF4
+ ldr r2, _080D6CFC @ =gTasks
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x16]
+ subs r1, 0x1
+ strh r1, [r0, 0x16]
+ adds r0, r4, 0
+ bl DestroySprite
+_080D6CF4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6CFC: .4byte gTasks
+ thumb_func_end sub_80D6CCC
+
+ thumb_func_start sub_80D6D00
+sub_80D6D00: @ 80D6D00
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, _080D6D14 @ =sub_80D6CCC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6D14: .4byte sub_80D6CCC
+ thumb_func_end sub_80D6D00
+
+ thumb_func_start sub_80D6D18
+sub_80D6D18: @ 80D6D18
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080D6D2C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080D6D34
+ ldr r4, _080D6D30 @ =gBattleAnimBankAttacker
+ b _080D6D36
+ .align 2, 0
+_080D6D2C: .4byte gBattleAnimArgs
+_080D6D30: .4byte gBattleAnimBankAttacker
+_080D6D34:
+ ldr r4, _080D6D64 @ =gBattleAnimBankTarget
+_080D6D36:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080D6D68 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData
+ ldr r0, _080D6D6C @ =sub_80785E4
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6D64: .4byte gBattleAnimBankTarget
+_080D6D68: .4byte move_anim_8074EE0
+_080D6D6C: .4byte sub_80785E4
+ thumb_func_end sub_80D6D18
+
+ thumb_func_start sub_80D6D70
+sub_80D6D70: @ 80D6D70
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080D6D84 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080D6D8C
+ ldr r4, _080D6D88 @ =gBattleAnimBankAttacker
+ b _080D6D8E
+ .align 2, 0
+_080D6D84: .4byte gBattleAnimArgs
+_080D6D88: .4byte gBattleAnimBankAttacker
+_080D6D8C:
+ ldr r4, _080D6DC8 @ =gBattleAnimBankTarget
+_080D6D8E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080D6DCC @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x24]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x26]
+ ldr r1, _080D6DD0 @ =move_anim_8072740
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData
+ ldr r0, _080D6DD4 @ =sub_8078600
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6DC8: .4byte gBattleAnimBankTarget
+_080D6DCC: .4byte gBattleAnimArgs
+_080D6DD0: .4byte move_anim_8072740
+_080D6DD4: .4byte sub_8078600
+ thumb_func_end sub_80D6D70
+
+ thumb_func_start sub_80D6DD8
+sub_80D6DD8: @ 80D6DD8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r4, _080D6E30 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x3A]
+ movs r0, 0x10
+ strh r0, [r5, 0x3C]
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080D6E26
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r5, 0x3C]
+_080D6E26:
+ ldr r0, _080D6E34 @ =sub_80D6E38
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6E30: .4byte gBattleAnimBankAttacker
+_080D6E34: .4byte sub_80D6E38
+ thumb_func_end sub_80D6DD8
+
+ thumb_func_start sub_80D6E38
+sub_80D6E38: @ 80D6E38
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080D6E4A
+ cmp r0, 0x1
+ beq _080D6E60
+ b _080D6E90
+_080D6E4A:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x28
+ ble _080D6E90
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080D6E90
+_080D6E60:
+ ldrh r2, [r4, 0x3C]
+ ldrh r1, [r4, 0x20]
+ adds r0, r2, r1
+ strh r0, [r4, 0x20]
+ ldr r3, _080D6E98 @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x24]
+ adds r2, r1
+ strh r2, [r0, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x50
+ lsls r0, 16
+ movs r1, 0xC8
+ lsls r1, 17
+ cmp r0, r1
+ bls _080D6E90
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080D6E90:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D6E98: .4byte gSprites
+ thumb_func_end sub_80D6E38
+
+ thumb_func_start sub_80D6E9C
+sub_80D6E9C: @ 80D6E9C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _080D6EC0 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080D6F30
+ cmp r0, 0x1
+ bgt _080D6EC4
+ cmp r0, 0
+ beq _080D6ED0
+ b _080D7000
+ .align 2, 0
+_080D6EC0: .4byte gTasks
+_080D6EC4:
+ cmp r0, 0x2
+ beq _080D6F8C
+ cmp r0, 0x3
+ bne _080D6ECE
+ b _080D6FE0
+_080D6ECE:
+ b _080D7000
+_080D6ED0:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r5, 0x26]
+ ldr r4, _080D6F04 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D6F0C
+ ldr r0, _080D6F08 @ =0x0000ffe0
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _080D6F12
+ .align 2, 0
+_080D6F04: .4byte gBattleAnimBankAttacker
+_080D6F08: .4byte 0x0000ffe0
+_080D6F0C:
+ movs r0, 0x20
+ strh r0, [r5, 0x24]
+ ldr r0, _080D6F28 @ =0x0000fffe
+_080D6F12:
+ strh r0, [r5, 0x22]
+ ldr r2, _080D6F2C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r5, 0x24]
+ strh r1, [r0, 0x24]
+ b _080D6FD2
+ .align 2, 0
+_080D6F28: .4byte 0x0000fffe
+_080D6F2C: .4byte gSprites
+_080D6F30:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080D7000
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r4, _080D6F88 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r1, [r5, 0x24]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080D6FD2
+ ldrh r2, [r5, 0x22]
+ adds r2, r1, r2
+ strh r2, [r5, 0x24]
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r2, [r0, 0x24]
+ b _080D7000
+ .align 2, 0
+_080D6F88: .4byte gSprites
+_080D6F8C:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080D7000
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r1, _080D6FDC @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080D7000
+_080D6FD2:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080D7000
+ .align 2, 0
+_080D6FDC: .4byte gSprites
+_080D6FE0:
+ ldr r2, _080D7008 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080D7000:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7008: .4byte gSprites
+ thumb_func_end sub_80D6E9C
+
+ thumb_func_start sub_80D700C
+sub_80D700C: @ 80D700C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080D7030 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080D7026
+ b _080D714C
+_080D7026:
+ cmp r0, 0x1
+ bgt _080D7034
+ cmp r0, 0
+ beq _080D703C
+ b _080D718E
+ .align 2, 0
+_080D7030: .4byte gTasks
+_080D7034:
+ cmp r0, 0x2
+ bne _080D703A
+ b _080D7180
+_080D703A:
+ b _080D718E
+_080D703C:
+ ldr r4, _080D707C @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080D7052
+ movs r1, 0x1
+_080D7052:
+ movs r6, 0
+ strh r1, [r5, 0xA]
+ ldr r0, _080D7080 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ adds r3, r0, 0
+ cmp r2, 0
+ beq _080D7088
+ cmp r2, 0x4
+ beq _080D70B0
+ ldrh r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080D70E8
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0xE]
+ ldr r0, _080D7084 @ =0x0000fff0
+ b _080D70F0
+ .align 2, 0
+_080D707C: .4byte gBattleAnimBankAttacker
+_080D7080: .4byte gBattleAnimArgs
+_080D7084: .4byte 0x0000fff0
+_080D7088:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ movs r2, 0xA
+ ldrsh r0, [r5, r2]
+ lsls r0, 7
+ adds r0, 0x78
+ strh r0, [r5, 0x10]
+ b _080D7126
+_080D70B0:
+ movs r0, 0xA
+ ldrsh r1, [r5, r0]
+ lsls r1, 7
+ movs r0, 0x78
+ subs r0, r1
+ strh r0, [r5, 0xE]
+ ldr r4, _080D70E4 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xA
+ ldrsh r1, [r5, r2]
+ lsls r1, 5
+ subs r0, r1
+ strh r0, [r5, 0x10]
+ b _080D7126
+ .align 2, 0
+_080D70E4: .4byte gBattleAnimBankTarget
+_080D70E8:
+ ldr r0, _080D710C @ =0x0000fff0
+ strh r0, [r5, 0xE]
+ movs r0, 0x80
+ lsls r0, 1
+_080D70F0:
+ strh r0, [r5, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080D7110
+ movs r2, 0
+ ldrsh r0, [r3, r2]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 1
+ movs r0, 0x50
+ subs r0, r1
+ strh r0, [r5, 0x12]
+ b _080D7126
+ .align 2, 0
+_080D710C: .4byte 0x0000fff0
+_080D7110:
+ movs r0, 0
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 1
+ adds r0, 0x28
+ strh r0, [r5, 0x12]
+ ldrh r1, [r5, 0xE]
+ ldrh r0, [r5, 0x10]
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+_080D7126:
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bge _080D713C
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r5, 0xA]
+ strh r1, [r5, 0x14]
+ b _080D7178
+_080D713C:
+ ldr r0, _080D7148 @ =0x0000ffff
+ strh r0, [r5, 0xA]
+ movs r0, 0x3
+ strh r0, [r5, 0x14]
+ b _080D7178
+ .align 2, 0
+_080D7148: .4byte 0x0000ffff
+_080D714C:
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080D718E
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80D7194
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D7178
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80D7194
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D718E
+_080D7178:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080D718E
+_080D7180:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D718E
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080D718E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D700C
+
+ thumb_func_start sub_80D7194
+sub_80D7194: @ 80D7194
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ movs r3, 0x12
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080D71CA
+ ldr r1, _080D7224 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ strh r5, [r0, 0x3A]
+ movs r1, 0x7
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_080D71CA:
+ ldrh r1, [r4, 0xA]
+ ldrh r5, [r4, 0x14]
+ adds r0, r1, r5
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080D71DC
+ movs r0, 0x3
+ strh r0, [r4, 0x14]
+_080D71DC:
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ ble _080D71E8
+ movs r0, 0
+ strh r0, [r4, 0x14]
+_080D71E8:
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ lsls r0, 4
+ ldrh r5, [r4, 0xE]
+ adds r2, r0, r5
+ strh r2, [r4, 0xE]
+ lsls r0, r1, 16
+ asrs r3, r0, 16
+ cmp r3, 0x1
+ bne _080D7208
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x10
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ bge _080D721C
+_080D7208:
+ movs r0, 0x1
+ negs r0, r0
+ cmp r3, r0
+ bne _080D7228
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r2, 0x10
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bgt _080D7228
+_080D721C:
+ movs r0, 0x1
+ b _080D722A
+ .align 2, 0
+_080D7220: .4byte gSpriteTemplate_83D9B10
+_080D7224: .4byte gSprites
+_080D7228:
+ movs r0, 0
+_080D722A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80D7194
+
+ thumb_func_start sub_80D7230
+sub_80D7230: @ 80D7230
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080D7270
+ ldr r3, _080D7278 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080D7270:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7278: .4byte gTasks
+ thumb_func_end sub_80D7230
+
+ thumb_func_start sub_80D727C
+sub_80D727C: @ 80D727C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080D728E
+ cmp r0, 0x1
+ beq _080D72C0
+ b _080D72D4
+_080D728E:
+ ldr r4, _080D72BC @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080D72D4
+ .align 2, 0
+_080D72BC: .4byte gBattleAnimBankAttacker
+_080D72C0:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080D72D4
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_080D72D4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D727C
+
+ thumb_func_start sub_80D72DC
+sub_80D72DC: @ 80D72DC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080D7300 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _080D72F6
+ b _080D7468
+_080D72F6:
+ lsls r0, 2
+ ldr r1, _080D7304 @ =_080D7308
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080D7300: .4byte gTasks
+_080D7304: .4byte _080D7308
+ .align 2, 0
+_080D7308:
+ .4byte _080D731C
+ .4byte _080D73AC
+ .4byte _080D73E8
+ .4byte _080D7444
+ .4byte _080D7454
+_080D731C:
+ ldr r4, _080D73A0 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ ldr r0, _080D73A4 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x1C]
+ movs r2, 0x1C
+ ldrsh r0, [r5, r2]
+ movs r2, 0x14
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x5
+ bl __divsi3
+ strh r0, [r5, 0x1A]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, _080D73A8 @ =0x0000ffff
+ strh r0, [r5, 0x12]
+ movs r0, 0xC
+ strh r0, [r5, 0x1E]
+ subs r0, 0x4C
+ bl sub_8076F98
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x20]
+ movs r0, 0x3F
+ bl sub_8076F98
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x24]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ b _080D7466
+ .align 2, 0
+_080D73A0: .4byte gBattleAnimBankAttacker
+_080D73A4: .4byte gBattleAnimBankTarget
+_080D73A8: .4byte 0x0000ffff
+_080D73AC:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080D73DC
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_80D7470
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D73DC
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x5
+ bne _080D73D6
+ movs r0, 0x3
+ b _080D73DA
+_080D73D6:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+_080D73DA:
+ strh r0, [r5, 0x8]
+_080D73DC:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080D7468
+ b _080D745E
+_080D73E8:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080D73F6
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+_080D73F6:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080D7468
+ strh r3, [r5, 0xA]
+ ldrh r1, [r5, 0xC]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080D7422
+ movs r0, 0x4
+ strh r0, [r5, 0x16]
+ movs r0, 0x44
+ strh r0, [r5, 0x18]
+ strh r3, [r5, 0x10]
+ strh r2, [r5, 0x12]
+ b _080D7432
+_080D7422:
+ movs r0, 0x44
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, _080D7440 @ =0x0000ffff
+ strh r0, [r5, 0x12]
+_080D7432:
+ movs r1, 0x1E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080D7464
+ movs r0, 0x4
+ b _080D7466
+ .align 2, 0
+_080D7440: .4byte 0x0000ffff
+_080D7444:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D7468
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080D7468
+_080D7454:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080D7464
+_080D745E:
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+ b _080D7468
+_080D7464:
+ movs r0, 0x1
+_080D7466:
+ strh r0, [r5, 0x8]
+_080D7468:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D72DC
+
+ thumb_func_start sub_80D7470
+sub_80D7470: @ 80D7470
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40
+ movs r2, 0x14
+ ldrsh r1, [r4, r2]
+ movs r3, 0x16
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080D74DC
+ ldr r1, _080D753C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrh r2, [r3, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldrh r6, [r4, 0x10]
+ adds r1, r6
+ ldr r6, _080D7540 @ =0x000003ff
+ adds r0, r6, 0
+ ands r1, r0
+ ldr r0, _080D7544 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r4, 0x12]
+ ldrh r1, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080D74C4
+ movs r0, 0x7
+ strh r0, [r4, 0x10]
+_080D74C4:
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x7
+ ble _080D74D0
+ movs r0, 0
+ strh r0, [r4, 0x10]
+_080D74D0:
+ strh r5, [r3, 0x3A]
+ movs r0, 0x3
+ strh r0, [r3, 0x3C]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+_080D74DC:
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080D74FE
+ movs r5, 0x12
+ ldrsh r0, [r4, r5]
+ cmp r0, 0
+ ble _080D74FE
+ ldrh r1, [r4, 0x26]
+ ldrh r6, [r4, 0x24]
+ adds r1, r6
+ strh r1, [r4, 0x24]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+_080D74FE:
+ movs r0, 0x12
+ ldrsh r3, [r4, r0]
+ ldrh r2, [r4, 0x16]
+ cmp r3, 0
+ bge _080D7514
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x18
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ ble _080D7524
+_080D7514:
+ cmp r3, 0
+ ble _080D7548
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r6, 0x18
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ blt _080D7548
+_080D7524:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x1A]
+ ldrh r1, [r4, 0x14]
+ adds r0, r1
+ strh r0, [r4, 0x14]
+ movs r0, 0x1
+ b _080D7554
+ .align 2, 0
+_080D7538: .4byte gSpriteTemplate_83D9B40
+_080D753C: .4byte gSprites
+_080D7540: .4byte 0x000003ff
+_080D7544: .4byte 0xfffffc00
+_080D7548:
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r0, r2, r0
+ strh r0, [r4, 0x16]
+ movs r0, 0
+_080D7554:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80D7470
+
+ thumb_func_start sub_80D755C
+sub_80D755C: @ 80D755C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080D7592
+ ldr r3, _080D7598 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080D7592:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7598: .4byte gTasks
+ thumb_func_end sub_80D755C
+
+ thumb_func_start sub_80D759C
+sub_80D759C: @ 80D759C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080D75C0 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080D7618
+ cmp r0, 0x1
+ bgt _080D75C4
+ cmp r0, 0
+ beq _080D75CA
+ b _080D764E
+ .align 2, 0
+_080D75C0: .4byte gTasks
+_080D75C4:
+ cmp r0, 0x2
+ beq _080D7640
+ b _080D764E
+_080D75CA:
+ ldr r0, _080D7614 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r5, 0x26]
+ strh r0, [r5, 0x24]
+ cmp r0, 0x10
+ ble _080D75F4
+ adds r2, r0, 0
+_080D75E4:
+ adds r1, r2, 0
+ subs r1, 0x20
+ adds r2, r1, 0
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bgt _080D75E4
+ strh r1, [r5, 0x24]
+_080D75F4:
+ ldr r4, _080D7614 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl sub_8079E90
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x2
+ strh r0, [r5, 0x20]
+ b _080D7638
+ .align 2, 0
+_080D7614: .4byte gBattleAnimBankTarget
+_080D7618:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080D764E
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_80D7654
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D764E
+_080D7638:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080D764E
+_080D7640:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D764E
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080D764E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D759C
+
+ thumb_func_start sub_80D7654
+sub_80D7654: @ 80D7654
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0
+ movs r2, 0x22
+ ldrsh r1, [r4, r2]
+ movs r3, 0x24
+ ldrsh r2, [r4, r3]
+ ldrh r3, [r4, 0x20]
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080D7698
+ ldr r3, _080D76B4 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x1C
+ adds r1, r0, r1
+ ldr r2, _080D76B8 @ =sub_80D76C4
+ str r2, [r1]
+ adds r0, r3
+ strh r5, [r0, 0x3A]
+ movs r1, 0xA
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+_080D7698:
+ ldrh r2, [r4, 0x24]
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080D76BC
+ adds r0, r2, 0
+ adds r0, 0x20
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ b _080D76BE
+ .align 2, 0
+_080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0
+_080D76B4: .4byte gSprites
+_080D76B8: .4byte sub_80D76C4
+_080D76BC:
+ movs r0, 0x1
+_080D76BE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80D7654
+
+ .align 2, 0 @ Don't pad with nop.