summaryrefslogtreecommitdiff
path: root/asm/ice.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/ice.s')
-rwxr-xr-xasm/ice.s3222
1 files changed, 3222 insertions, 0 deletions
diff --git a/asm/ice.s b/asm/ice.s
new file mode 100755
index 000000000..285b48e1b
--- /dev/null
+++ b/asm/ice.s
@@ -0,0 +1,3222 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ @ ice
+
+ thumb_func_start sub_80D76C4
+sub_80D76C4: @ 80D76C4
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080D76F8
+ ldr r3, _080D7700 @ =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
+_080D76F8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7700: .4byte gTasks
+ thumb_func_end sub_80D76C4
+
+ thumb_func_start sub_80D7704
+sub_80D7704: @ 80D7704
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x7
+ ldr r3, _080D780C @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080D7810 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r4, _080D7814 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r4, _080D7818 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ str r3, [sp]
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080D781C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r1]
+ ldr r3, [sp]
+ adds r0, r3
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x4]
+ mov r4, r9
+ adds r0, r4, r0
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1, 0x2]
+ adds r0, r6
+ strh r0, [r5, 0x34]
+ ldrh r0, [r1, 0x6]
+ mov r7, r8
+ adds r0, r7, r0
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8078314
+ adds r4, 0x20
+ movs r0, 0x98
+ lsls r0, 1
+ mov r12, r0
+ ldr r3, [sp]
+ cmp r4, r12
+ bhi _080D77DE
+ adds r0, r7, 0
+ adds r0, 0x20
+ ldrh r1, [r5, 0x30]
+ ldrh r2, [r5, 0x32]
+ cmp r0, 0xE0
+ bhi _080D77DE
+ adds r4, r1, 0
+ mov r10, r12
+_080D77AA:
+ mov r7, r9
+ lsls r1, r7, 16
+ asrs r1, 16
+ adds r1, r4
+ lsls r1, 16
+ mov r7, r8
+ lsls r0, r7, 16
+ asrs r0, 16
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsrs r0, r1, 16
+ mov r9, r0
+ movs r7, 0x80
+ lsls r7, 14
+ adds r1, r7
+ lsrs r1, 16
+ cmp r1, r10
+ bhi _080D77DE
+ mov r1, r8
+ lsls r0, r1, 16
+ adds r0, r7
+ lsrs r0, 16
+ cmp r0, 0xE0
+ bls _080D77AA
+_080D77DE:
+ ldrh r0, [r5, 0x30]
+ negs r7, r0
+ strh r7, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ negs r4, r0
+ strh r4, [r5, 0x32]
+ lsls r0, r3, 16
+ movs r1, 0x80
+ lsls r1, 14
+ adds r0, r1
+ lsrs r0, 16
+ movs r2, 0x98
+ lsls r2, 1
+ mov r12, r2
+ ldr r1, _080D781C @ =gBattleAnimArgs
+ mov r10, r1
+ cmp r0, r12
+ bhi _080D784A
+ lsls r1, r6, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r1, r2
+ b _080D7842
+ .align 2, 0
+_080D780C: .4byte 0x000003ff
+_080D7810: .4byte 0xfffffc00
+_080D7814: .4byte gBattleAnimBankTarget
+_080D7818: .4byte gBattleAnimBankAttacker
+_080D781C: .4byte gBattleAnimArgs
+_080D7820:
+ lsls r1, r3, 16
+ asrs r1, 16
+ adds r1, r7
+ lsls r1, 16
+ asrs r0, r2, 16
+ adds r0, r4
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsrs r3, r1, 16
+ movs r0, 0x80
+ lsls r0, 14
+ adds r1, r0
+ lsrs r1, 16
+ cmp r1, r12
+ bhi _080D784A
+ lsls r1, r6, 16
+ adds r0, r1, r0
+_080D7842:
+ lsrs r0, 16
+ adds r2, r1, 0
+ cmp r0, 0xE0
+ bls _080D7820
+_080D784A:
+ strh r3, [r5, 0x20]
+ strh r6, [r5, 0x22]
+ mov r1, r10
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ strh r3, [r5, 0x30]
+ mov r2, r9
+ strh r2, [r5, 0x32]
+ strh r6, [r5, 0x34]
+ mov r3, r8
+ strh r3, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8078314
+ mov r7, r10
+ ldrh r0, [r7, 0xA]
+ strh r0, [r5, 0x34]
+ ldrh r0, [r7, 0xC]
+ strh r0, [r5, 0x36]
+ ldr r0, _080D7884 @ =sub_80D7888
+ str r0, [r5, 0x1C]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7884: .4byte sub_80D7888
+ thumb_func_end sub_80D7704
+
+ thumb_func_start sub_80D7888
+sub_80D7888: @ 80D7888
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080D78E0
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x38]
+ adds r1, r2
+ strh r1, [r4, 0x38]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x3A]
+ adds r0, r2
+ strh r0, [r4, 0x3A]
+ strh r1, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x34
+ 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, 0x34
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x3C]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080D78E6
+_080D78E0:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D78E6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D7888
+
+ thumb_func_start sub_80D78EC
+sub_80D78EC: @ 80D78EC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080D7920 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x2E]
+ movs r0, 0x3C
+ strh r0, [r4, 0x30]
+ movs r0, 0x9
+ strh r0, [r4, 0x32]
+ movs r0, 0x1E
+ strh r0, [r4, 0x34]
+ movs r0, 0xFE
+ lsls r0, 8
+ strh r0, [r4, 0x36]
+ ldr r1, _080D7924 @ =move_anim_8072740
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ ldr r1, _080D7928 @ =sub_8078174
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7920: .4byte gBattleAnimArgs
+_080D7924: .4byte move_anim_8072740
+_080D7928: .4byte sub_8078174
+ thumb_func_end sub_80D78EC
+
+ thumb_func_start sub_80D792C
+sub_80D792C: @ 80D792C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r0, _080D7960 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldr r0, _080D7964 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D796C
+ ldr r0, _080D7968 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x32]
+ ldrh r0, [r0, 0x4]
+ subs r1, r0
+ strh r1, [r4, 0x32]
+ b _080D7976
+ .align 2, 0
+_080D7960: .4byte gBattleAnimBankTarget
+_080D7964: .4byte gBattleAnimBankAttacker
+_080D7968: .4byte gBattleAnimArgs
+_080D796C:
+ ldr r0, _080D79A4 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+_080D7976:
+ ldr r0, _080D79A8 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ ldr r1, _080D79A4 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r2, [r1, 0x6]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ ldr r1, _080D79AC @ =move_anim_8072740
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ ldr r0, _080D79B0 @ =sub_8078B34
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D79A4: .4byte gBattleAnimArgs
+_080D79A8: .4byte gBattleAnimBankTarget
+_080D79AC: .4byte move_anim_8072740
+_080D79B0: .4byte sub_8078B34
+ thumb_func_end sub_80D792C
+
+ thumb_func_start sub_80D79B4
+sub_80D79B4: @ 80D79B4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080D79CC @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D79D0
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8078764
+ b _080D7A06
+ .align 2, 0
+_080D79CC: .4byte gBattleAnimArgs
+_080D79D0:
+ ldr r0, _080D7A18 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0x1
+ bl sub_807A3FC
+ ldr r0, _080D7A1C @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D79F6
+ ldrh r0, [r5]
+ negs r0, r0
+ strh r0, [r5]
+_080D79F6:
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_080D7A06:
+ ldr r1, _080D7A20 @ =sub_80D7A28
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ ldr r0, _080D7A24 @ =sub_80785E4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7A18: .4byte gBattleAnimBankTarget
+_080D7A1C: .4byte gBattleAnimBankAttacker
+_080D7A20: .4byte sub_80D7A28
+_080D7A24: .4byte sub_80785E4
+ thumb_func_end sub_80D79B4
+
+ thumb_func_start sub_80D7A28
+sub_80D7A28: @ 80D7A28
+ push {lr}
+ adds r3, r0, 0
+ 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, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080D7A5E
+ adds r0, r3, 0
+ bl move_anim_8074EE0
+_080D7A5E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D7A28
+
+ thumb_func_start sub_80D7A64
+sub_80D7A64: @ 80D7A64
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r6, _080D7AAC @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080D7AB4
+ ldr r4, _080D7AB0 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ b _080D7AC6
+ .align 2, 0
+_080D7AAC: .4byte gBattleAnimArgs
+_080D7AB0: .4byte gBattleAnimBankTarget
+_080D7AB4:
+ ldr r0, _080D7AE0 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_807A3FC
+_080D7AC6:
+ ldr r0, _080D7AE4 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D7AEC
+ ldr r0, _080D7AE8 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x32]
+ ldrh r0, [r0, 0x4]
+ subs r1, r0
+ strh r1, [r5, 0x32]
+ b _080D7AF6
+ .align 2, 0
+_080D7AE0: .4byte gBattleAnimBankTarget
+_080D7AE4: .4byte gBattleAnimBankAttacker
+_080D7AE8: .4byte gBattleAnimArgs
+_080D7AEC:
+ ldr r0, _080D7B94 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+_080D7AF6:
+ adds r7, r5, 0
+ adds r7, 0x2E
+ adds r2, r7, 0
+ mov r1, sp
+ movs r4, 0x7
+_080D7B00:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080D7B00
+ adds r0, r5, 0
+ bl sub_8078D60
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ eors r0, r1
+ strh r0, [r5, 0x32]
+_080D7B22:
+ movs r0, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_8078CE8
+ movs r0, 0x20
+ ldrsh r1, [r5, r0]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ adds r1, 0x10
+ movs r0, 0x88
+ lsls r0, 1
+ cmp r1, r0
+ bhi _080D7B56
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080D7B56
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080D7B22
+_080D7B56:
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ ldr r6, _080D7B98 @ =sub_8078D8C
+ ldr r1, _080D7B9C @ =sub_80D7BA0
+ mov r3, sp
+ adds r2, r7, 0
+ movs r4, 0x7
+_080D7B76:
+ ldrh r0, [r3]
+ strh r0, [r2]
+ adds r3, 0x2
+ adds r2, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080D7B76
+ str r6, [r5, 0x1C]
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7B94: .4byte gBattleAnimArgs
+_080D7B98: .4byte sub_8078D8C
+_080D7B9C: .4byte sub_80D7BA0
+ thumb_func_end sub_80D7A64
+
+ thumb_func_start sub_80D7BA0
+sub_80D7BA0: @ 80D7BA0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r5, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x24]
+ movs r0, 0x80
+ strh r0, [r4, 0x2E]
+ ldr r0, _080D7BFC @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ ldr r1, _080D7C00 @ =0x0000ffec
+ cmp r0, 0
+ beq _080D7BD0
+ movs r1, 0x14
+_080D7BD0:
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x34]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ strh r0, [r4, 0x36]
+ strh r5, [r4, 0x38]
+ ldr r1, _080D7C04 @ =sub_80D7C08
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7BFC: .4byte gBattleAnimBankAttacker
+_080D7C00: .4byte 0x0000ffec
+_080D7C04: .4byte sub_80D7C08
+ thumb_func_end sub_80D7BA0
+
+ thumb_func_start sub_80D7C08
+sub_80D7C08: @ 80D7C08
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080D7C5C @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ ldr r1, _080D7C60 @ =0x0000ffec
+ cmp r0, 0
+ beq _080D7C1E
+ movs r1, 0x14
+_080D7C1E:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1F
+ bgt _080D7C64
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ ldrh r1, [r4, 0x34]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ ldrh r1, [r4, 0x36]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x10
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080D7C82
+ .align 2, 0
+_080D7C5C: .4byte gBattleAnimBankAttacker
+_080D7C60: .4byte 0x0000ffec
+_080D7C64:
+ ldrh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x36]
+ strh r1, [r4, 0x34]
+ ldr r0, _080D7C88 @ =sub_80D7C8C
+ str r0, [r4, 0x1C]
+_080D7C82:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7C88: .4byte sub_80D7C8C
+ thumb_func_end sub_80D7C08
+
+ thumb_func_start sub_80D7C8C
+sub_80D7C8C: @ 80D7C8C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_8078CE8
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080D7CC8
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r1, r0, r1
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ bgt _080D7CC8
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080D7CCE
+_080D7CC8:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D7CCE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D7C8C
+
+ thumb_func_start sub_80D7CD4
+sub_80D7CD4: @ 80D7CD4
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r1, _080D7D18 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080D7D20
+ ldr r4, _080D7D1C @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ b _080D7D32
+ .align 2, 0
+_080D7D18: .4byte gBattleAnimArgs
+_080D7D1C: .4byte gBattleAnimBankTarget
+_080D7D20:
+ ldr r0, _080D7D50 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_807A3FC
+_080D7D32:
+ ldr r0, _080D7D54 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D7D5C
+ ldr r0, _080D7D58 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x32]
+ ldrh r2, [r0, 0x4]
+ subs r1, r2
+ strh r1, [r5, 0x32]
+ adds r1, r0, 0
+ b _080D7D66
+ .align 2, 0
+_080D7D50: .4byte gBattleAnimBankTarget
+_080D7D54: .4byte gBattleAnimBankAttacker
+_080D7D58: .4byte gBattleAnimArgs
+_080D7D5C:
+ ldr r1, _080D7E10 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+_080D7D66:
+ ldrh r0, [r1, 0x6]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8078D60
+ adds r7, r5, 0
+ adds r7, 0x2E
+ adds r2, r7, 0
+ mov r1, sp
+ movs r4, 0x7
+_080D7D7E:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080D7D7E
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ eors r0, r1
+ strh r0, [r5, 0x32]
+_080D7D9A:
+ movs r0, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_8078CE8
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ adds r1, 0x10
+ movs r0, 0x88
+ lsls r0, 1
+ cmp r1, r0
+ bhi _080D7DCE
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080D7DCE
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080D7D9A
+_080D7DCE:
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ ldr r1, _080D7E10 @ =gBattleAnimArgs
+ ldr r6, _080D7E14 @ =sub_80D7E18
+ mov r3, sp
+ adds r2, r7, 0
+ movs r4, 0x7
+_080D7DEE:
+ ldrh r0, [r3]
+ strh r0, [r2]
+ adds r3, 0x2
+ adds r2, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080D7DEE
+ ldrh r0, [r1, 0xA]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r1, 0xC]
+ strh r0, [r5, 0x3A]
+ str r6, [r5, 0x1C]
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D7E10: .4byte gBattleAnimArgs
+_080D7E14: .4byte sub_80D7E18
+ thumb_func_end sub_80D7CD4
+
+ thumb_func_start sub_80D7E18
+sub_80D7E18: @ 80D7E18
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078CE8
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080D7E2C
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+_080D7E2C:
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ 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, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080D7E82
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080D7E7C
+ movs r0, 0x22
+ ldrsh r1, [r4, r0]
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080D7E7C
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080D7E82
+_080D7E7C:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D7E82:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D7E18
+
+ thumb_func_start sub_80D7E88
+sub_80D7E88: @ 80D7E88
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080D7EF4
+ ldr r5, _080D7EA8 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D7EAC
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8078764
+ b _080D7EE2
+ .align 2, 0
+_080D7EA8: .4byte gBattleAnimArgs
+_080D7EAC:
+ ldr r0, _080D7EEC @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_807A3FC
+ ldr r0, _080D7EF0 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D7ED2
+ ldrh r0, [r5]
+ negs r0, r0
+ strh r0, [r5]
+_080D7ED2:
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_080D7EE2:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080D7F08
+ .align 2, 0
+_080D7EEC: .4byte gBattleAnimBankTarget
+_080D7EF0: .4byte gBattleAnimBankAttacker
+_080D7EF4:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080D7F08
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D7F08:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D7E88
+
+ thumb_func_start sub_80D7F10
+sub_80D7F10: @ 80D7F10
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080D7F30 @ =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080D7F80
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080D7F34
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80787B0
+ b _080D7F72
+ .align 2, 0
+_080D7F30: .4byte gBattleAnimArgs
+_080D7F34:
+ ldr r4, _080D7F5C @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_807A3FC
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D7F60
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r6]
+ subs r0, r1
+ b _080D7F66
+ .align 2, 0
+_080D7F5C: .4byte gBattleAnimBankAttacker
+_080D7F60:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080D7F66:
+ strh r0, [r5, 0x20]
+ ldr r0, _080D7F78 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+_080D7F72:
+ ldr r0, _080D7F7C @ =gBattleAnimBankAttacker
+ b _080D7FD0
+ .align 2, 0
+_080D7F78: .4byte gBattleAnimArgs
+_080D7F7C: .4byte gBattleAnimBankAttacker
+_080D7F80:
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080D7F92
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8078764
+ b _080D7FCE
+_080D7F92:
+ ldr r4, _080D7FB8 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_807A3FC
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D7FBC
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r6]
+ subs r0, r1
+ b _080D7FC2
+ .align 2, 0
+_080D7FB8: .4byte gBattleAnimBankTarget
+_080D7FBC:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080D7FC2:
+ strh r0, [r5, 0x20]
+ ldr r0, _080D7FEC @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+_080D7FCE:
+ ldr r0, _080D7FF0 @ =gBattleAnimBankTarget
+_080D7FD0:
+ ldrb r0, [r0]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080D7FEC @ =gBattleAnimArgs
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080D7FE8
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D7FF4
+_080D7FE8:
+ movs r0, 0x20
+ b _080D7FF6
+ .align 2, 0
+_080D7FEC: .4byte gBattleAnimArgs
+_080D7FF0: .4byte gBattleAnimBankTarget
+_080D7FF4:
+ movs r0, 0x40
+_080D7FF6:
+ strh r0, [r5, 0x3A]
+ ldr r0, _080D803C @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D800C
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+_080D800C:
+ ldr r1, _080D8040 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrh r1, [r1, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x40
+ strh r0, [r5, 0x38]
+ ldr r1, _080D8044 @ =sub_80D8048
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D803C: .4byte gBattleAnimBankTarget
+_080D8040: .4byte gBattleAnimArgs
+_080D8044: .4byte sub_80D8048
+ thumb_func_end sub_80D7F10
+
+ thumb_func_start sub_80D8048
+sub_80D8048: @ 80D8048
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078B5C
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D80D2
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3A
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r1, 0x6
+ negs r1, r1
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080D80A4
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8079ED4
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ b _080D80C6
+_080D80A4:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8079ED4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+_080D80C6:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080D80D8
+_080D80D2:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_080D80D8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D8048
+
+ thumb_func_start sub_80D80E0
+sub_80D80E0: @ 80D80E0
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080D81A8 @ =REG_BLDCNT
+ ldr r2, _080D81AC @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r2, 0x80
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r4, _080D81B0 @ =REG_BG1CNT
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D812A
+ ldrb r0, [r4]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4]
+_080D812A:
+ ldr r0, _080D81B4 @ =gUnknown_030042C0
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080D81B8 @ =gUnknown_030041B4
+ strh r1, [r0]
+ ldr r0, _080D81BC @ =REG_BG1HOFS
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ mov r0, sp
+ bl sub_8078914
+ ldr r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r0, _080D81C0 @ =0x040000d4
+ add r2, sp, 0xC
+ str r2, [r0]
+ str r1, [r0, 0x4]
+ ldr r2, _080D81C4 @ =0x85000400
+ str r2, [r0, 0x8]
+ ldr r2, [r0, 0x8]
+ ldr r2, _080D81C8 @ =gWeatherFog1Tiles
+ ldr r3, [sp]
+ str r2, [r0]
+ str r3, [r0, 0x4]
+ ldr r2, _080D81CC @ =0x80000400
+ str r2, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ ldr r0, _080D81D0 @ =gBattleAnimFogTilemap
+ bl LZDecompressVram
+ ldr r0, _080D81D4 @ =gUnknown_083970E8
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadPalette
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8190
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80763FC
+_080D8190:
+ ldr r0, _080D81D8 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080D81DC @ =sub_80D81E0
+ str r0, [r1]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D81A8: .4byte REG_BLDCNT
+_080D81AC: .4byte 0x00003f42
+_080D81B0: .4byte REG_BG1CNT
+_080D81B4: .4byte gUnknown_030042C0
+_080D81B8: .4byte gUnknown_030041B4
+_080D81BC: .4byte REG_BG1HOFS
+_080D81C0: .4byte 0x040000d4
+_080D81C4: .4byte 0x85000400
+_080D81C8: .4byte gWeatherFog1Tiles
+_080D81CC: .4byte 0x80000400
+_080D81D0: .4byte gBattleAnimFogTilemap
+_080D81D4: .4byte gUnknown_083970E8
+_080D81D8: .4byte gTasks
+_080D81DC: .4byte sub_80D81E0
+ thumb_func_end sub_80D80E0
+
+ thumb_func_start sub_80D81E0
+sub_80D81E0: @ 80D81E0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r2, _080D8220 @ =gUnknown_030042C0
+ ldr r1, _080D8224 @ =0x0000ffff
+ adds r0, r1, 0
+ ldrh r4, [r2]
+ adds r0, r4
+ strh r0, [r2]
+ ldr r1, _080D8228 @ =gUnknown_030041B4
+ ldr r3, _080D822C @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r3
+ movs r4, 0x20
+ ldrsh r0, [r0, r4]
+ adds r4, r1, 0
+ cmp r0, 0x4
+ bls _080D8214
+ b _080D83B0
+_080D8214:
+ lsls r0, 2
+ ldr r1, _080D8230 @ =_080D8234
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080D8220: .4byte gUnknown_030042C0
+_080D8224: .4byte 0x0000ffff
+_080D8228: .4byte gUnknown_030041B4
+_080D822C: .4byte gTasks
+_080D8230: .4byte _080D8234
+ .align 2, 0
+_080D8234:
+ .4byte _080D8248
+ .4byte _080D82A0
+ .4byte _080D82C2
+ .4byte _080D8304
+ .4byte _080D838C
+_080D8248:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r3
+ ldrh r0, [r3, 0x1C]
+ adds r0, 0x1
+ movs r4, 0
+ strh r0, [r3, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _080D8262
+ b _080D83B0
+_080D8262:
+ strh r4, [r3, 0x1C]
+ ldrh r0, [r3, 0x1A]
+ adds r0, 0x1
+ strh r0, [r3, 0x1A]
+ ldr r1, _080D8298 @ =gUnknown_083D9D6C
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ adds r0, r1
+ ldrb r1, [r0]
+ strh r1, [r3, 0x1E]
+ ldr r2, _080D829C @ =REG_BLDALPHA
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2]
+ movs r1, 0x1E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x9
+ beq _080D828C
+ b _080D83B0
+_080D828C:
+ ldrh r0, [r3, 0x20]
+ adds r0, 0x1
+ strh r0, [r3, 0x20]
+ strh r4, [r3, 0x1E]
+ b _080D83B0
+ .align 2, 0
+_080D8298: .4byte gUnknown_083D9D6C
+_080D829C: .4byte REG_BLDALPHA
+_080D82A0:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r3
+ ldrh r0, [r3, 0x1E]
+ adds r0, 0x1
+ strh r0, [r3, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x51
+ bne _080D83B0
+ movs r0, 0x9
+ strh r0, [r3, 0x1E]
+ ldrh r0, [r3, 0x20]
+ adds r0, 0x1
+ strh r0, [r3, 0x20]
+ b _080D83B0
+_080D82C2:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r3
+ ldrh r0, [r3, 0x1C]
+ adds r0, 0x1
+ strh r0, [r3, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080D83B0
+ movs r0, 0
+ strh r0, [r3, 0x1C]
+ ldrh r1, [r3, 0x1E]
+ subs r1, 0x1
+ strh r1, [r3, 0x1E]
+ ldr r2, _080D8300 @ =REG_BLDALPHA
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2]
+ movs r2, 0x1E
+ ldrsh r1, [r3, r2]
+ cmp r1, 0
+ bne _080D83B0
+ ldrh r0, [r3, 0x20]
+ adds r0, 0x1
+ strh r0, [r3, 0x20]
+ strh r1, [r3, 0x1E]
+ b _080D83B0
+ .align 2, 0
+_080D8300: .4byte REG_BLDALPHA
+_080D8304:
+ mov r0, sp
+ bl sub_8078914
+ ldr r2, [sp]
+ movs r3, 0x80
+ lsls r3, 6
+ lsls r4, r6, 2
+ mov r10, r4
+ add r5, sp, 0xC
+ movs r7, 0
+ ldr r1, _080D83C0 @ =0x040000d4
+ movs r4, 0x80
+ lsls r4, 5
+ mov r8, r5
+ ldr r0, _080D83C4 @ =0x85000400
+ mov r12, r0
+ movs r0, 0x85
+ lsls r0, 24
+ mov r9, r0
+_080D832A:
+ str r7, [sp, 0xC]
+ mov r0, r8
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ mov r0, r12
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r2, r4
+ subs r3, r4
+ cmp r3, r4
+ bhi _080D832A
+ str r7, [sp, 0xC]
+ str r5, [r1]
+ str r2, [r1, 0x4]
+ lsrs r0, r3, 2
+ mov r2, r9
+ orrs r0, r2
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r0, _080D83C0 @ =0x040000d4
+ str r5, [r0]
+ str r1, [r0, 0x4]
+ ldr r1, _080D83C8 @ =0x85000200
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D8378
+ ldr r2, _080D83CC @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080D8378:
+ ldr r0, _080D83D0 @ =gTasks
+ mov r4, r10
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ ldr r2, _080D83D4 @ =gUnknown_030042C0
+ ldr r4, _080D83D8 @ =gUnknown_030041B4
+_080D838C:
+ movs r1, 0
+ strh r1, [r2]
+ strh r1, [r4]
+ ldr r0, _080D83DC @ =REG_BLDCNT
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ ldr r2, _080D83CC @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080D83B0:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D83C0: .4byte 0x040000d4
+_080D83C4: .4byte 0x85000400
+_080D83C8: .4byte 0x85000200
+_080D83CC: .4byte REG_BG1CNT
+_080D83D0: .4byte gTasks
+_080D83D4: .4byte gUnknown_030042C0
+_080D83D8: .4byte gUnknown_030041B4
+_080D83DC: .4byte REG_BLDCNT
+ thumb_func_end sub_80D81E0
+
+ thumb_func_start sub_80D83E0
+sub_80D83E0: @ 80D83E0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080D840C @ =gBattleAnimBankAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r0, _080D8410 @ =sub_807941C
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D840C: .4byte gBattleAnimBankAttacker
+_080D8410: .4byte sub_807941C
+ thumb_func_end sub_80D83E0
+
+ thumb_func_start sub_80D8414
+sub_80D8414: @ 80D8414
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080D84E0 @ =REG_BLDCNT
+ ldr r2, _080D84E4 @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r2, 0x80
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r4, _080D84E8 @ =REG_BG1CNT
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D845E
+ ldrb r0, [r4]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4]
+_080D845E:
+ ldr r0, _080D84EC @ =gUnknown_030042C0
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080D84F0 @ =gUnknown_030041B4
+ strh r1, [r0]
+ ldr r0, _080D84F4 @ =REG_BG1HOFS
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ mov r0, sp
+ bl sub_8078914
+ ldr r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r0, _080D84F8 @ =0x040000d4
+ add r2, sp, 0xC
+ str r2, [r0]
+ str r1, [r0, 0x4]
+ ldr r2, _080D84FC @ =0x85000400
+ str r2, [r0, 0x8]
+ ldr r2, [r0, 0x8]
+ ldr r2, _080D8500 @ =gWeatherFog1Tiles
+ ldr r3, [sp]
+ str r2, [r0]
+ str r3, [r0, 0x4]
+ ldr r2, _080D8504 @ =0x80000400
+ str r2, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ ldr r0, _080D8508 @ =gBattleAnimFogTilemap
+ bl LZDecompressVram
+ ldr r0, _080D850C @ =gUnknown_083970E8
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadPalette
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D84C4
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80763FC
+_080D84C4:
+ ldr r1, _080D8510 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _080D8514 @ =0x0000ffff
+ strh r1, [r0, 0x26]
+ ldr r1, _080D8518 @ =sub_80D851C
+ str r1, [r0]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D84E0: .4byte REG_BLDCNT
+_080D84E4: .4byte 0x00003f42
+_080D84E8: .4byte REG_BG1CNT
+_080D84EC: .4byte gUnknown_030042C0
+_080D84F0: .4byte gUnknown_030041B4
+_080D84F4: .4byte REG_BG1HOFS
+_080D84F8: .4byte 0x040000d4
+_080D84FC: .4byte 0x85000400
+_080D8500: .4byte gWeatherFog1Tiles
+_080D8504: .4byte 0x80000400
+_080D8508: .4byte gBattleAnimFogTilemap
+_080D850C: .4byte gUnknown_083970E8
+_080D8510: .4byte gTasks
+_080D8514: .4byte 0x0000ffff
+_080D8518: .4byte sub_80D851C
+ thumb_func_end sub_80D8414
+
+ thumb_func_start sub_80D851C
+sub_80D851C: @ 80D851C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r3, _080D8558 @ =gUnknown_030042C0
+ ldr r4, _080D855C @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r4
+ ldrh r0, [r1, 0x26]
+ ldrh r2, [r3]
+ adds r0, r2
+ strh r0, [r3]
+ ldr r2, _080D8560 @ =gUnknown_030041B4
+ movs r5, 0x20
+ ldrsh r0, [r1, r5]
+ cmp r0, 0x4
+ bls _080D854C
+ b _080D86D0
+_080D854C:
+ lsls r0, 2
+ ldr r1, _080D8564 @ =_080D8568
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080D8558: .4byte gUnknown_030042C0
+_080D855C: .4byte gTasks
+_080D8560: .4byte gUnknown_030041B4
+_080D8564: .4byte _080D8568
+ .align 2, 0
+_080D8568:
+ .4byte _080D857C
+ .4byte _080D85C0
+ .4byte _080D85E2
+ .4byte _080D8624
+ .4byte _080D86AC
+_080D857C:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x1
+ strh r0, [r4, 0x1A]
+ ldr r1, _080D85B8 @ =gUnknown_083D9D98
+ movs r2, 0x1A
+ ldrsh r0, [r4, r2]
+ adds r0, r1
+ ldrb r1, [r0]
+ strh r1, [r4, 0x1E]
+ ldr r2, _080D85BC @ =REG_BLDALPHA
+ movs r0, 0x11
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2]
+ movs r5, 0x1E
+ ldrsh r0, [r4, r5]
+ cmp r0, 0x5
+ beq _080D85AC
+ b _080D86D0
+_080D85AC:
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x1E]
+ b _080D86D0
+ .align 2, 0
+_080D85B8: .4byte gUnknown_083D9D98
+_080D85BC: .4byte REG_BLDALPHA
+_080D85C0:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r1, r0, r4
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x51
+ bne _080D86D0
+ movs r0, 0x5
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080D86D0
+_080D85E2:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080D86D0
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ ldr r2, _080D8620 @ =REG_BLDALPHA
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2]
+ movs r0, 0x1E
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ bne _080D86D0
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080D86D0
+ .align 2, 0
+_080D8620: .4byte REG_BLDALPHA
+_080D8624:
+ mov r0, sp
+ bl sub_8078914
+ ldr r2, [sp]
+ movs r3, 0x80
+ lsls r3, 6
+ lsls r1, r6, 2
+ mov r10, r1
+ add r5, sp, 0xC
+ movs r7, 0
+ ldr r1, _080D86E0 @ =0x040000d4
+ movs r4, 0x80
+ lsls r4, 5
+ mov r8, r5
+ ldr r0, _080D86E4 @ =0x85000400
+ mov r12, r0
+ movs r0, 0x85
+ lsls r0, 24
+ mov r9, r0
+_080D864A:
+ str r7, [sp, 0xC]
+ mov r0, r8
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ mov r0, r12
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r2, r4
+ subs r3, r4
+ cmp r3, r4
+ bhi _080D864A
+ str r7, [sp, 0xC]
+ str r5, [r1]
+ str r2, [r1, 0x4]
+ lsrs r0, r3, 2
+ mov r2, r9
+ orrs r0, r2
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r0, _080D86E0 @ =0x040000d4
+ str r5, [r0]
+ str r1, [r0, 0x4]
+ ldr r1, _080D86E8 @ =0x85000200
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080D8698
+ ldr r2, _080D86EC @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080D8698:
+ ldr r0, _080D86F0 @ =gTasks
+ mov r5, r10
+ adds r1, r5, r6
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ ldr r3, _080D86F4 @ =gUnknown_030042C0
+ ldr r2, _080D86F8 @ =gUnknown_030041B4
+_080D86AC:
+ movs r1, 0
+ strh r1, [r3]
+ strh r1, [r2]
+ ldr r0, _080D86FC @ =REG_BLDCNT
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ ldr r2, _080D86EC @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080D86D0:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D86E0: .4byte 0x040000d4
+_080D86E4: .4byte 0x85000400
+_080D86E8: .4byte 0x85000200
+_080D86EC: .4byte REG_BG1CNT
+_080D86F0: .4byte gTasks
+_080D86F4: .4byte gUnknown_030042C0
+_080D86F8: .4byte gUnknown_030041B4
+_080D86FC: .4byte REG_BLDCNT
+ thumb_func_end sub_80D851C
+
+ thumb_func_start sub_80D8700
+sub_80D8700: @ 80D8700
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ ldr r6, _080D87E8 @ =gBattleAnimArgs
+ ldrh r0, [r6]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080D87EC @ =gBattleAnimBankAttacker
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8077ABC
+ adds r4, r0, 0
+ ldr r7, _080D87F0 @ =gBattleAnimBankTarget
+ ldrb r0, [r7]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bcs _080D8734
+ movs r0, 0x80
+ lsls r0, 8
+ strh r0, [r5, 0x3C]
+_080D8734:
+ ldr r3, _080D87F4 @ =gBanksBySide
+ ldrb r0, [r7]
+ adds r0, r3
+ ldrb r1, [r0]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080D8794
+ ldrh r0, [r6, 0x2]
+ negs r0, r0
+ strh r0, [r6, 0x2]
+ ldrh r0, [r6, 0x6]
+ negs r0, r0
+ strh r0, [r6, 0x6]
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8790
+ mov r1, r8
+ ldrb r0, [r1]
+ adds r0, r3
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080D8790
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080D87F8 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+_080D8790:
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+_080D8794:
+ ldr r4, _080D87EC @ =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]
+ ldr r6, _080D87E8 @ =gBattleAnimArgs
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ beq _080D87FC
+ ldrh r0, [r6, 0x2]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x30]
+ ldr r4, _080D87F0 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r6, 0x4]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ b _080D8824
+ .align 2, 0
+_080D87E8: .4byte gBattleAnimArgs
+_080D87EC: .4byte gBattleAnimBankAttacker
+_080D87F0: .4byte gBattleAnimBankTarget
+_080D87F4: .4byte gBanksBySide
+_080D87F8: .4byte gSprites
+_080D87FC:
+ ldrh r0, [r6, 0x2]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x30]
+ ldr r4, _080D886C @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r6, 0x4]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x1
+_080D8824:
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x8]
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ ldrb r0, [r4]
+ bl sub_8079ED4
+ lsls r0, 24
+ lsrs r0, 16
+ ldrh r1, [r5, 0x3C]
+ orrs r0, r1
+ strh r0, [r5, 0x3C]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8858
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+ adds r1, r5, 0
+ adds r1, 0x43
+ movs r0, 0x80
+ strb r0, [r1]
+_080D8858:
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080D8870 @ =sub_80D8874
+ str r0, [r5, 0x1C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D886C: .4byte gBattleAnimBankTarget
+_080D8870: .4byte sub_80D8874
+ thumb_func_end sub_80D8700
+
+ thumb_func_start sub_80D8874
+sub_80D8874: @ 80D8874
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x3C]
+ movs r5, 0xFF
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0x1
+ beq _080D8968
+ cmp r1, 0x1
+ bgt _080D888E
+ cmp r1, 0
+ beq _080D8896
+ b _080D8AD0
+_080D888E:
+ cmp r1, 0x2
+ bne _080D8894
+ b _080D8A94
+_080D8894:
+ b _080D8AD0
+_080D8896:
+ adds r0, r4, 0
+ bl sub_8078B5C
+ ldr r1, _080D88C0 @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ asrs r0, 4
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080D88C4
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x8
+ b _080D88C8
+ .align 2, 0
+_080D88C0: .4byte gSineTable
+_080D88C4:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x8
+_080D88C8:
+ ands r0, r5
+ strh r0, [r4, 0x38]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080D88D6
+ b _080D8AD0
+_080D88D6:
+ movs r5, 0x50
+ strh r5, [r4, 0x2E]
+ ldr r6, _080D8928 @ =gBattleAnimBankTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, 0x1D
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ ldr r0, _080D892C @ =gMain
+ ldr r2, _080D8930 @ =0x0000043d
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8938
+ ldr r1, _080D8934 @ =gBanksBySide
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8938
+ movs r0, 0xCC
+ strh r0, [r4, 0x38]
+ b _080D893A
+ .align 2, 0
+_080D8928: .4byte gBattleAnimBankTarget
+_080D892C: .4byte gMain
+_080D8930: .4byte 0x0000043d
+_080D8934: .4byte gBanksBySide
+_080D8938:
+ strh r5, [r4, 0x38]
+_080D893A:
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ ldr r1, _080D8964 @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ asrs r0, 3
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ b _080D8AD0
+ .align 2, 0
+_080D8964: .4byte gSineTable
+_080D8968:
+ adds r0, r4, 0
+ bl sub_8078B5C
+ ldr r1, _080D89C8 @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ asrs r0, 3
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ negs r0, r0
+ asrs r0, 8
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldr r0, _080D89CC @ =gMain
+ ldr r2, _080D89D0 @ =0x0000043d
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080D89F2
+ ldrh r1, [r4, 0x38]
+ adds r0, r1, 0
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ adds r3, r1, 0
+ cmp r0, 0x7F
+ bhi _080D89D4
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 16
+ asrs r1, 24
+ b _080D89DC
+ .align 2, 0
+_080D89C8: .4byte gSineTable
+_080D89CC: .4byte gMain
+_080D89D0: .4byte 0x0000043d
+_080D89D4:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 16
+ asrs r1, 24
+ adds r1, 0x1
+_080D89DC:
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ adds r0, r3, 0x4
+ b _080D8A12
+_080D89F2:
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080D8A06
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x80
+ b _080D8A0C
+_080D8A06:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x8C
+_080D8A0C:
+ strb r0, [r1]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x4
+_080D8A12:
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bgt _080D8AD0
+ movs r2, 0
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, 0x4
+ strh r0, [r4, 0x36]
+ ldr r0, _080D8A68 @ =gMain
+ ldr r1, _080D8A6C @ =0x0000043d
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8A78
+ ldr r1, _080D8A70 @ =gBanksBySide
+ ldr r0, _080D8A74 @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8A78
+ movs r0, 0x80
+ lsls r0, 1
+ b _080D8A7A
+ .align 2, 0
+_080D8A68: .4byte gMain
+_080D8A6C: .4byte 0x0000043d
+_080D8A70: .4byte gBanksBySide
+_080D8A74: .4byte gBattleAnimBankTarget
+_080D8A78:
+ ldr r0, _080D8A90 @ =0x0000fff0
+_080D8A7A:
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x3C]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ adds r0, r4, 0
+ bl sub_8078BD4
+ b _080D8AD0
+ .align 2, 0
+_080D8A90: .4byte 0x0000fff0
+_080D8A94:
+ adds r0, r4, 0
+ bl sub_8078B5C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8AD0
+ ldrb r0, [r4, 0x1]
+ lsls r0, 30
+ lsrs r0, 30
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080D8AC2
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x1]
+_080D8AC2:
+ adds r0, r4, 0
+ bl DestroySprite
+ ldr r1, _080D8AD8 @ =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080D8AD0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8AD8: .4byte gAnimVisualTaskCount
+ thumb_func_end sub_80D8874
+
+ thumb_func_start sub_80D8ADC
+sub_80D8ADC: @ 80D8ADC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080D8AF0 @ =gTasks
+ adds r1, r0
+ ldr r0, _080D8AF4 @ =sub_80D8AF8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080D8AF0: .4byte gTasks
+_080D8AF4: .4byte sub_80D8AF8
+ thumb_func_end sub_80D8ADC
+
+ thumb_func_start sub_80D8AF8
+sub_80D8AF8: @ 80D8AF8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080D8B1C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080D8B3C
+ cmp r5, 0x1
+ bgt _080D8B20
+ cmp r5, 0
+ beq _080D8B26
+ b _080D8BA0
+ .align 2, 0
+_080D8B1C: .4byte gTasks
+_080D8B20:
+ cmp r5, 0x2
+ beq _080D8B92
+ b _080D8BA0
+_080D8B26:
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080D8BA0
+ strh r5, [r4, 0x10]
+ strh r5, [r4, 0x12]
+ strh r5, [r4, 0xC]
+ b _080D8B78
+_080D8B3C:
+ ldrh r1, [r4, 0x12]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080D8B8C
+ ldrb r0, [r4, 0xE]
+ ldrb r1, [r4, 0xC]
+ movs r3, 0x1
+ bl sub_80D8BA8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8B5C
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+_080D8B5C:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080D8B88
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080D8B80
+_080D8B78:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080D8BA0
+_080D8B80:
+ ldrh r0, [r4, 0x8]
+ subs r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080D8BA0
+_080D8B88:
+ strh r5, [r4, 0x12]
+ b _080D8BA0
+_080D8B8C:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x12]
+ b _080D8BA0
+_080D8B92:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080D8BA0
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080D8BA0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D8AF8
+
+ thumb_func_start sub_80D8BA8
+sub_80D8BA8: @ 80D8BA8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r1, _080D8C20 @ =gUnknown_083D9DC4
+ lsrs r0, 22
+ adds r4, r0, r1
+ ldrb r0, [r4, 0x3]
+ lsls r0, 24
+ asrs r0, 28
+ mov r8, r0
+ cmp r0, 0x2
+ beq _080D8C94
+ ldrh r0, [r4, 0x2]
+ lsls r0, 20
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ bl IsAnimBankSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8C94
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r1, r8
+ cmp r1, 0
+ beq _080D8C24
+ cmp r1, 0x1
+ beq _080D8C5A
+ b _080D8CA6
+ .align 2, 0
+_080D8C20: .4byte gUnknown_083D9DC4
+_080D8C24:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_807A100
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_807A100
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r6, 16
+ asrs r1, 16
+ subs r1, r0
+ b _080D8C8E
+_080D8C5A:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_807A100
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r7, 16
+ asrs r1, 16
+ adds r1, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_807A100
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r6, 16
+ asrs r1, 16
+ adds r1, r0
+_080D8C8E:
+ lsls r1, 16
+ lsrs r6, r1, 16
+ b _080D8CA6
+_080D8C94:
+ ldrh r0, [r4]
+ lsls r0, 22
+ asrs r0, 6
+ lsrs r7, r0, 16
+ ldr r0, [r4]
+ lsls r0, 12
+ asrs r0, 22
+ lsls r0, 16
+ lsrs r6, r0, 16
+_080D8CA6:
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r0, 0x8
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r0
+ ldr r0, _080D8D00 @ =gSpriteTemplate_83D9E3C
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0x8
+ negs r2, r2
+ movs r3, 0x12
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _080D8D08
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ ldr r0, _080D8D04 @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ mov r1, r9
+ bl StartSpriteAffineAnim
+ mov r0, sp
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ strh r7, [r4, 0x34]
+ strh r6, [r4, 0x36]
+ mov r1, r9
+ strh r1, [r4, 0x38]
+ mov r0, sp
+ ldrh r0, [r0]
+ strh r0, [r4, 0x3A]
+ mov r1, r10
+ strh r1, [r4, 0x3C]
+ movs r0, 0x1
+ b _080D8D0A
+ .align 2, 0
+_080D8D00: .4byte gSpriteTemplate_83D9E3C
+_080D8D04: .4byte gSprites
+_080D8D08:
+ movs r0, 0
+_080D8D0A:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80D8BA8
+
+ thumb_func_start sub_80D8D1C
+sub_80D8D1C: @ 80D8D1C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x4
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r2, r1, 0
+ adds r2, 0x8
+ strh r2, [r4, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x34
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080D8D46
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080D8DF6
+_080D8D46:
+ movs r3, 0x2E
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x1
+ bne _080D8DC8
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080D8DC8
+ ldr r0, _080D8DBC @ =gBattleAnimSpriteTemplate_83D9C78
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ movs r3, 0x36
+ ldrsh r2, [r4, r3]
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x2E]
+ cmp r0, 0x40
+ beq _080D8DAA
+ ldr r2, _080D8DC0 @ =gSprites
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r2, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080D8DC4 @ =sub_80D8E00
+ str r1, [r0]
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x3A]
+ strh r1, [r0, 0x3A]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x3C]
+ strh r1, [r0, 0x3C]
+_080D8DAA:
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+ b _080D8DF6
+ .align 2, 0
+_080D8DBC: .4byte gBattleAnimSpriteTemplate_83D9C78
+_080D8DC0: .4byte gSprites
+_080D8DC4: .4byte sub_80D8E00
+_080D8DC8:
+ ldr r3, _080D8DFC @ =gTasks
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080D8DF6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8DFC: .4byte gTasks
+ thumb_func_end sub_80D8D1C
+
+ thumb_func_start sub_80D8E00
+sub_80D8E00: @ 80D8E00
+ 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, 0x14
+ bne _080D8E40
+ ldr r3, _080D8E48 @ =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
+_080D8E40:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8E48: .4byte gTasks
+ thumb_func_end sub_80D8E00
+
+ thumb_func_start unc_080B06FC
+unc_080B06FC: @ 80D8E4C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r0, _080D8ECC @ =gDisableStructMoveAnim
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x11]
+ lsrs r0, r1, 4
+ lsls r1, 28
+ lsrs r1, 28
+ subs r0, r1
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x4
+ bls _080D8E6A
+ movs r1, 0x4
+_080D8E6A:
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r6, _080D8ED0 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080D8ED4 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8E92
+ ldrh r0, [r6, 0x4]
+ negs r0, r0
+ strh r0, [r6, 0x4]
+_080D8E92:
+ ldr r4, _080D8ED8 @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r6, 0xA]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_80786EC
+ ldr r0, _080D8EDC @ =sub_80D8EE0
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8ECC: .4byte gDisableStructMoveAnim
+_080D8ED0: .4byte gBattleAnimArgs
+_080D8ED4: .4byte gBattleAnimBankAttacker
+_080D8ED8: .4byte gBattleAnimBankTarget
+_080D8EDC: .4byte sub_80D8EE0
+ thumb_func_end unc_080B06FC
+
+ thumb_func_start sub_80D8EE0
+sub_80D8EE0: @ 80D8EE0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078718
+ lsls r0, 24
+ cmp r0, 0
+ beq _080D8F02
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, _080D8F08 @ =sub_8078600
+ str r0, [r4, 0x1C]
+ ldr r1, _080D8F0C @ =move_anim_8072740
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+_080D8F02:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8F08: .4byte sub_8078600
+_080D8F0C: .4byte move_anim_8072740
+ thumb_func_end sub_80D8EE0
+
+ thumb_func_start sub_80D8F10
+sub_80D8F10: @ 80D8F10
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r3, _080D8F64 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080D8F68 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8078764
+ bl Random
+ movs r5, 0xFF
+ ands r5, r0
+ movs r0, 0x80
+ lsls r0, 1
+ adds r6, r0, 0
+ orrs r5, r6
+ bl Random
+ ldr r1, _080D8F6C @ =0x000001ff
+ ands r1, r0
+ adds r0, r1, 0
+ cmp r0, 0xFF
+ ble _080D8F56
+ subs r0, r6, r0
+ lsls r0, 16
+ lsrs r1, r0, 16
+_080D8F56:
+ strh r5, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ ldr r0, _080D8F70 @ =sub_80D8F74
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8F64: .4byte 0x000003ff
+_080D8F68: .4byte 0xfffffc00
+_080D8F6C: .4byte 0x000001ff
+_080D8F70: .4byte sub_80D8F74
+ thumb_func_end sub_80D8F10
+
+ thumb_func_start sub_80D8F74
+sub_80D8F74: @ 80D8F74
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x34]
+ adds r3, r0, r1
+ strh r3, [r2, 0x34]
+ ldrh r1, [r2, 0x32]
+ ldrh r4, [r2, 0x36]
+ adds r1, r4
+ strh r1, [r2, 0x36]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080D8F98
+ lsls r0, r3, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080D8F9C
+_080D8F98:
+ lsls r0, r3, 16
+ asrs r0, 24
+_080D8F9C:
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x26]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080D8FBA
+ adds r0, r2, 0
+ bl move_anim_8072740
+_080D8FBA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D8F74
+
+ thumb_func_start sub_80D8FC0
+sub_80D8FC0: @ 80D8FC0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080D8FE8 @ =gBattleAnimArgs
+ ldrb r3, [r1]
+ lsls r3, 1
+ adds r3, r1
+ ldr r1, _080D8FEC @ =gDisableStructMoveAnim
+ ldr r1, [r1]
+ ldrb r1, [r1, 0x11]
+ lsrs r2, r1, 4
+ lsls r1, 28
+ lsrs r1, 28
+ subs r2, r1
+ subs r2, 0x1
+ strh r2, [r3]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D8FE8: .4byte gBattleAnimArgs
+_080D8FEC: .4byte gDisableStructMoveAnim
+ thumb_func_end sub_80D8FC0
+
+ .align 2, 0 @ Don't pad with nop.