summaryrefslogtreecommitdiff
path: root/asm/dark.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/dark.s')
-rwxr-xr-xasm/dark.s2014
1 files changed, 2014 insertions, 0 deletions
diff --git a/asm/dark.s b/asm/dark.s
new file mode 100755
index 000000000..f4ef9cc1a
--- /dev/null
+++ b/asm/dark.s
@@ -0,0 +1,2014 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ @ dark
+
+ thumb_func_start sub_80DFF1C
+sub_80DFF1C: @ 80DFF1C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080DFF50 @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrb r1, [r5, 0x4]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x32]
+ ldr r0, _080DFF54 @ =sub_80DFF58
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFF50: .4byte gBattleAnimArgs
+_080DFF54: .4byte sub_80DFF58
+ thumb_func_end sub_80DFF1C
+
+ thumb_func_start sub_80DFF58
+sub_80DFF58: @ 80DFF58
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x36]
+ adds r0, r1
+ strh r0, [r2, 0x36]
+ ldrh r1, [r2, 0x30]
+ ldrh r3, [r2, 0x38]
+ adds r1, r3
+ strh r1, [r2, 0x38]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r2, 0x26]
+ ldrh r0, [r2, 0x34]
+ adds r0, 0x1
+ strh r0, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x32
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bne _080DFF8E
+ ldr r0, _080DFF94 @ =sub_80DFF98
+ str r0, [r2, 0x1C]
+_080DFF8E:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFF94: .4byte sub_80DFF98
+ thumb_func_end sub_80DFF58
+
+ thumb_func_start sub_80DFF98
+sub_80DFF98: @ 80DFF98
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x36]
+ ldrh r0, [r3, 0x2E]
+ subs r1, r0
+ strh r1, [r3, 0x36]
+ ldrh r0, [r3, 0x38]
+ ldrh r2, [r3, 0x30]
+ subs r0, r2
+ strh r0, [r3, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r3, 0x24]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r3, 0x26]
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080DFFCA
+ adds r0, r3, 0
+ bl move_anim_8074EE0
+_080DFFCA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DFF98
+
+ thumb_func_start sub_80DFFD0
+sub_80DFFD0: @ 80DFFD0
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, _080DFFE4 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r3, r0, 0
+ cmp r1, 0
+ bne _080DFFEC
+ ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker
+ b _080DFFEE
+ .align 2, 0
+_080DFFE4: .4byte gBattleAnimArgs
+_080DFFE8: .4byte gBattleAnimBankAttacker
+_080DFFEC:
+ ldr r0, _080E001C @ =gBattleAnimBankTarget
+_080DFFEE:
+ ldrb r5, [r0]
+ movs r6, 0x14
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ ldr r7, _080E0020 @ =0x000003ff
+ adds r0, r7, 0
+ ands r1, r0
+ ldr r0, _080E0024 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ movs r1, 0x2
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ beq _080E004C
+ cmp r0, 0x1
+ bgt _080E0028
+ cmp r0, 0
+ beq _080E0032
+ b _080E00A0
+ .align 2, 0
+_080E001C: .4byte gBattleAnimBankTarget
+_080E0020: .4byte 0x000003ff
+_080E0024: .4byte 0xfffffc00
+_080E0028:
+ cmp r0, 0x2
+ beq _080E0066
+ cmp r0, 0x3
+ beq _080E007E
+ b _080E00A0
+_080E0032:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_807A100
+ subs r0, 0x8
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_807A100
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+ b _080E00A0
+_080E004C:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_807A100
+ subs r0, 0xE
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_807A100
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ b _080E00A0
+_080E0066:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_807A100
+ adds r0, 0x8
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_807A100
+ adds r0, 0x8
+ b _080E0094
+_080E007E:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_807A100
+ adds r0, 0xE
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_807A100
+ adds r0, 0x10
+_080E0094:
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ movs r6, 0xEC
+_080E00A0:
+ movs r0, 0x20
+ strh r0, [r4, 0x2E]
+ lsls r0, r6, 24
+ asrs r0, 24
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0xC
+ strh r0, [r4, 0x36]
+ ldr r0, _080E00C8 @ =0x0000fff4
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_80786EC
+ ldr r0, _080E00CC @ =sub_80E00D0
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E00C8: .4byte 0x0000fff4
+_080E00CC: .4byte sub_80E00D0
+ thumb_func_end sub_80DFFD0
+
+ thumb_func_start sub_80E00D0
+sub_80E00D0: @ 80E00D0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078718
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E00E4
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080E00E4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E00D0
+
+ thumb_func_start sub_80E00EC
+sub_80E00EC: @ 80E00EC
+ push {r4-r7,lr}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E0150 @ =gTasks
+ adds r5, r1, r0
+ ldr r4, _080E0154 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1F
+ movs r6, 0
+ strh r0, [r5, 0x16]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_807A100
+ subs r0, 0x7
+ strh r0, [r5, 0x14]
+ ldrh r1, [r5, 0x16]
+ strh r1, [r5, 0x12]
+ strh r0, [r5, 0x10]
+ subs r1, r0
+ lsls r1, 8
+ strh r1, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ subs r1, 0x20
+ strh r1, [r5, 0x24]
+ adds r0, 0x20
+ strh r0, [r5, 0x26]
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E015C
+ ldr r0, _080E0158 @ =0x0000fff4
+ b _080E015E
+ .align 2, 0
+_080E0150: .4byte gTasks
+_080E0154: .4byte gBattleAnimBankAttacker
+_080E0158: .4byte 0x0000fff4
+_080E015C:
+ ldr r0, _080E01A8 @ =0x0000ffc0
+_080E015E:
+ strh r0, [r5, 0x18]
+ ldr r0, _080E01AC @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ cmp r0, 0x1
+ bne _080E01C4
+ add r4, sp, 0xC
+ adds r0, r4, 0
+ bl sub_8078914
+ ldr r0, _080E01B0 @ =gUnknown_030041B4
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ ldr r1, _080E01B4 @ =REG_BLDCNT
+ ldr r2, _080E01B8 @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldrb r1, [r4, 0x8]
+ lsls r1, 4
+ movs r0, 0
+ movs r2, 0x20
+ bl FillPalette
+ ldr r0, _080E01BC @ =REG_BG1VOFS
+ str r0, [sp]
+ movs r7, 0x2
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E01F4
+ ldr r1, _080E01C0 @ =gUnknown_03004288
+ b _080E01EE
+ .align 2, 0
+_080E01A8: .4byte 0x0000ffc0
+_080E01AC: .4byte gBattleAnimBankAttacker
+_080E01B0: .4byte gUnknown_030041B4
+_080E01B4: .4byte REG_BLDCNT
+_080E01B8: .4byte 0x00003f42
+_080E01BC: .4byte REG_BG1VOFS
+_080E01C0: .4byte gUnknown_03004288
+_080E01C4:
+ ldr r0, _080E0278 @ =gUnknown_03004280
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ ldr r1, _080E027C @ =REG_BLDCNT
+ ldr r2, _080E0280 @ =0x00003f44
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r0, 0
+ movs r1, 0x90
+ movs r2, 0x20
+ bl FillPalette
+ ldr r0, _080E0284 @ =REG_BG2VOFS
+ str r0, [sp]
+ movs r7, 0x4
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E01F4
+ ldr r1, _080E0288 @ =gUnknown_030042C0
+_080E01EE:
+ ldrh r0, [r1]
+ adds r0, 0xF0
+ strh r0, [r1]
+_080E01F4:
+ ldr r0, _080E028C @ =0xa2600001
+ str r0, [sp, 0x4]
+ mov r2, sp
+ movs r1, 0
+ movs r0, 0x1
+ strb r0, [r2, 0x8]
+ mov r0, sp
+ strb r1, [r0, 0x9]
+ strh r1, [r5, 0x1E]
+ movs r0, 0x10
+ strh r0, [r5, 0x20]
+ strh r1, [r5, 0x8]
+ strh r1, [r5, 0xA]
+ strh r1, [r5, 0xC]
+ movs r0, 0x3
+ bl sub_80E08CC
+ movs r3, 0
+ ldr r4, _080E0290 @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r4, r0
+_080E0220:
+ lsls r1, r3, 1
+ adds r2, r1, r4
+ ldrh r0, [r5, 0x1C]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r5, 0x1C]
+ strh r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x6F
+ bls _080E0220
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl sub_80895F8
+ ldr r1, _080E0294 @ =REG_WINOUT
+ movs r0, 0x3F
+ eors r7, r0
+ movs r2, 0xFC
+ lsls r2, 6
+ adds r0, r2, 0
+ orrs r7, r0
+ strh r7, [r1]
+ subs r1, 0x2
+ adds r2, 0x3F
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r2, _080E0298 @ =gUnknown_030042C4
+ ldrh r0, [r5, 0x24]
+ lsls r0, 8
+ ldrh r1, [r5, 0x26]
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r1, _080E029C @ =gUnknown_03004240
+ movs r0, 0xA0
+ strh r0, [r1]
+ ldr r0, _080E02A0 @ =sub_80E02A4
+ str r0, [r5]
+ add sp, 0x18
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0278: .4byte gUnknown_03004280
+_080E027C: .4byte REG_BLDCNT
+_080E0280: .4byte 0x00003f44
+_080E0284: .4byte REG_BG2VOFS
+_080E0288: .4byte gUnknown_030042C0
+_080E028C: .4byte 0xa2600001
+_080E0290: .4byte gUnknown_03004DE0
+_080E0294: .4byte REG_WINOUT
+_080E0298: .4byte gUnknown_030042C4
+_080E029C: .4byte gUnknown_03004240
+_080E02A0: .4byte sub_80E02A4
+ thumb_func_end sub_80E00EC
+
+ thumb_func_start sub_80E02A4
+sub_80E02A4: @ 80E02A4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E02C8 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E02BE
+ b _080E03B6
+_080E02BE:
+ lsls r0, 2
+ ldr r1, _080E02CC @ =_080E02D0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E02C8: .4byte gTasks
+_080E02CC: .4byte _080E02D0
+ .align 2, 0
+_080E02D0:
+ .4byte _080E02E4
+ .4byte _080E0344
+ .4byte _080E035E
+ .4byte _080E039C
+ .4byte _080E03B0
+_080E02E4:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E03B6
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0314
+ ldrh r1, [r4, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xC
+ beq _080E0322
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x1E]
+ b _080E0322
+_080E0314:
+ ldrh r1, [r4, 0x20]
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ beq _080E0322
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x20]
+_080E0322:
+ ldr r2, _080E0340 @ =REG_BLDALPHA
+ ldrh r0, [r4, 0x20]
+ lsls r0, 8
+ ldrh r1, [r4, 0x1E]
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xC
+ bne _080E03B6
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ bne _080E03B6
+ b _080E03A2
+ .align 2, 0
+_080E0340: .4byte REG_BLDALPHA
+_080E0344:
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x8
+ strh r0, [r4, 0x10]
+ adds r0, r4, 0
+ bl sub_80E079C
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bge _080E03B6
+ b _080E03A2
+_080E035E:
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x8
+ strh r0, [r4, 0x10]
+ adds r0, r4, 0
+ bl sub_80E079C
+ ldrh r1, [r4, 0x24]
+ adds r1, 0x4
+ strh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ subs r2, r0, 0x4
+ strh r2, [r4, 0x26]
+ lsls r1, 16
+ lsls r0, r2, 16
+ cmp r1, r0
+ blt _080E0380
+ strh r2, [r4, 0x24]
+_080E0380:
+ ldr r3, _080E0398 @ =gUnknown_030042C4
+ ldrh r2, [r4, 0x24]
+ lsls r0, r2, 8
+ ldrh r1, [r4, 0x26]
+ orrs r0, r1
+ strh r0, [r3]
+ lsls r2, 16
+ lsls r1, 16
+ cmp r2, r1
+ bne _080E03B6
+ b _080E03A2
+ .align 2, 0
+_080E0398: .4byte gUnknown_030042C4
+_080E039C:
+ ldr r1, _080E03AC @ =gUnknown_03004DC0
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080E03A2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E03B6
+ .align 2, 0
+_080E03AC: .4byte gUnknown_03004DC0
+_080E03B0:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E03B6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E02A4
+
+ thumb_func_start sub_80E03BC
+sub_80E03BC: @ 80E03BC
+ push {r4-r7,lr}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E03E4 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _080E03D8
+ b _080E05F2
+_080E03D8:
+ lsls r0, 2
+ ldr r1, _080E03E8 @ =_080E03EC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E03E4: .4byte gTasks
+_080E03E8: .4byte _080E03EC
+ .align 2, 0
+_080E03EC:
+ .4byte _080E0400
+ .4byte _080E048C
+ .4byte _080E04D0
+ .4byte _080E053C
+ .4byte _080E05A4
+_080E0400:
+ bl NotInBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E043C
+ ldr r0, _080E042C @ =gUnknown_030042C4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080E0430 @ =gUnknown_03004240
+ strh r1, [r0]
+ ldr r0, _080E0434 @ =REG_WININ
+ ldr r2, _080E0438 @ =0x00003f3f
+ adds r1, r2, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080E05F2
+ .align 2, 0
+_080E042C: .4byte gUnknown_030042C4
+_080E0430: .4byte gUnknown_03004240
+_080E0434: .4byte REG_WININ
+_080E0438: .4byte 0x00003f3f
+_080E043C:
+ ldr r0, _080E045C @ =gBattleAnimBankTarget
+ ldrb r0, [r0]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ cmp r0, 0x1
+ bne _080E046C
+ ldr r1, _080E0460 @ =REG_BLDCNT
+ ldr r2, _080E0464 @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _080E0468 @ =gUnknown_03004288
+ b _080E0476
+ .align 2, 0
+_080E045C: .4byte gBattleAnimBankTarget
+_080E0460: .4byte REG_BLDCNT
+_080E0464: .4byte 0x00003f42
+_080E0468: .4byte gUnknown_03004288
+_080E046C:
+ ldr r1, _080E0480 @ =REG_BLDCNT
+ ldr r2, _080E0484 @ =0x00003f44
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _080E0488 @ =gUnknown_030042C0
+_080E0476:
+ ldrh r0, [r1]
+ adds r0, 0xF0
+ strh r0, [r1]
+ b _080E0590
+ .align 2, 0
+_080E0480: .4byte REG_BLDCNT
+_080E0484: .4byte 0x00003f44
+_080E0488: .4byte gUnknown_030042C0
+_080E048C:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080E04B4
+ mov r0, sp
+ bl sub_8078914
+ ldr r0, _080E04B0 @ =gUnknown_030041B4
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ mov r0, sp
+ ldrb r1, [r0, 0x8]
+ lsls r1, 4
+ movs r0, 0
+ movs r2, 0x20
+ bl FillPalette
+ b _080E04C4
+ .align 2, 0
+_080E04B0: .4byte gUnknown_030041B4
+_080E04B4:
+ ldr r0, _080E04CC @ =gUnknown_03004280
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ movs r0, 0
+ movs r1, 0x90
+ movs r2, 0x20
+ bl FillPalette
+_080E04C4:
+ movs r0, 0x3
+ bl sub_80E08CC
+ b _080E0590
+ .align 2, 0
+_080E04CC: .4byte gUnknown_03004280
+_080E04D0:
+ ldr r4, _080E051C @ =gBattleAnimBankTarget
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1F
+ movs r6, 0
+ strh r0, [r5, 0x16]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_807A100
+ subs r0, 0x7
+ strh r0, [r5, 0x14]
+ ldrh r1, [r5, 0x16]
+ subs r1, r0
+ lsls r1, 8
+ strh r1, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ subs r1, r0, 0x4
+ strh r1, [r5, 0x24]
+ adds r0, 0x4
+ strh r0, [r5, 0x26]
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0524
+ ldr r0, _080E0520 @ =0x0000fff4
+ b _080E0526
+ .align 2, 0
+_080E051C: .4byte gBattleAnimBankTarget
+_080E0520: .4byte 0x0000fff4
+_080E0524:
+ ldr r0, _080E0538 @ =0x0000ffc0
+_080E0526:
+ strh r0, [r5, 0x18]
+ ldrh r0, [r5, 0x18]
+ strh r0, [r5, 0x10]
+ strh r0, [r5, 0x12]
+ movs r0, 0xC
+ strh r0, [r5, 0x1E]
+ movs r0, 0x8
+ strh r0, [r5, 0x20]
+ b _080E0590
+ .align 2, 0
+_080E0538: .4byte 0x0000ffc0
+_080E053C:
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1
+ bne _080E054C
+ ldr r0, _080E0548 @ =REG_BG1VOFS
+ b _080E054E
+ .align 2, 0
+_080E0548: .4byte REG_BG1VOFS
+_080E054C:
+ ldr r0, _080E0598 @ =REG_BG2VOFS
+_080E054E:
+ str r0, [sp, 0xC]
+ movs r3, 0
+ add r4, sp, 0xC
+ ldr r6, _080E059C @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r7, r6, r0
+_080E055C:
+ lsls r1, r3, 1
+ adds r2, r1, r6
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x9F
+ subs r0, r3
+ strh r0, [r2]
+ adds r1, r7
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x9F
+ subs r0, r3
+ strh r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x6F
+ bls _080E055C
+ ldr r1, _080E05A0 @ =0xa2600001
+ str r1, [r4, 0x4]
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r4, 0x8]
+ strb r2, [r4, 0x9]
+ ldr r0, [sp, 0xC]
+ ldr r2, [r4, 0x8]
+ bl sub_80895F8
+_080E0590:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080E05F2
+ .align 2, 0
+_080E0598: .4byte REG_BG2VOFS
+_080E059C: .4byte gUnknown_03004DE0
+_080E05A0: .4byte 0xa2600001
+_080E05A4:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080E05BC
+ ldr r1, _080E05B4 @ =REG_WINOUT
+ ldr r2, _080E05B8 @ =0x00003f3d
+ b _080E05C0
+ .align 2, 0
+_080E05B4: .4byte REG_WINOUT
+_080E05B8: .4byte 0x00003f3d
+_080E05BC:
+ ldr r1, _080E05FC @ =REG_WINOUT
+ ldr r2, _080E0600 @ =0x00003f3b
+_080E05C0:
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _080E0604 @ =REG_WININ
+ ldr r2, _080E0608 @ =0x00003f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r2, _080E060C @ =gUnknown_030042C4
+ ldrh r0, [r5, 0x24]
+ lsls r0, 8
+ ldrh r1, [r5, 0x26]
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r1, _080E0610 @ =gUnknown_03004240
+ movs r0, 0xA0
+ strh r0, [r1]
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ strh r0, [r5, 0xC]
+ ldr r1, _080E0614 @ =REG_BLDALPHA
+ ldr r2, _080E0618 @ =0x0000080c
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _080E061C @ =sub_80E0620
+ str r0, [r5]
+_080E05F2:
+ add sp, 0x18
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E05FC: .4byte REG_WINOUT
+_080E0600: .4byte 0x00003f3b
+_080E0604: .4byte REG_WININ
+_080E0608: .4byte 0x00003f3f
+_080E060C: .4byte gUnknown_030042C4
+_080E0610: .4byte gUnknown_03004240
+_080E0614: .4byte REG_BLDALPHA
+_080E0618: .4byte 0x0000080c
+_080E061C: .4byte sub_80E0620
+ thumb_func_end sub_80E03BC
+
+ thumb_func_start sub_80E0620
+sub_80E0620: @ 80E0620
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E0644 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E063A
+ b _080E0784
+_080E063A:
+ lsls r0, 2
+ ldr r1, _080E0648 @ =_080E064C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E0644: .4byte gTasks
+_080E0648: .4byte _080E064C
+ .align 2, 0
+_080E064C:
+ .4byte _080E0660
+ .4byte _080E068C
+ .4byte _080E06F4
+ .4byte _080E0754
+ .4byte _080E0768
+_080E0660:
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x8
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0x16]
+ movs r3, 0x16
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ blt _080E0676
+ strh r2, [r4, 0x12]
+_080E0676:
+ adds r0, r4, 0
+ bl sub_80E079C
+ movs r0, 0x12
+ ldrsh r1, [r4, r0]
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ beq _080E068A
+ b _080E0784
+_080E068A:
+ b _080E075A
+_080E068C:
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ cmp r0, 0x3F
+ bgt _080E06A8
+ ldrh r0, [r4, 0x24]
+ subs r0, 0x4
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x4
+ strh r0, [r4, 0x26]
+ b _080E06AC
+_080E06A8:
+ movs r0, 0x1
+ strh r0, [r4, 0xA]
+_080E06AC:
+ ldr r2, _080E06F0 @ =gUnknown_030042C4
+ ldrh r0, [r4, 0x24]
+ lsls r0, 8
+ ldrh r1, [r4, 0x26]
+ orrs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x8
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0x14]
+ movs r3, 0x14
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ blt _080E06CE
+ strh r2, [r4, 0x10]
+_080E06CE:
+ adds r0, r4, 0
+ bl sub_80E079C
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080E0784
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080E0784
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080E075A
+ .align 2, 0
+_080E06F0: .4byte gUnknown_030042C4
+_080E06F4:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E0784
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0724
+ ldrh r1, [r4, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080E0732
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x1E]
+ b _080E0732
+_080E0724:
+ ldrh r1, [r4, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080E0732
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x20]
+_080E0732:
+ ldr r2, _080E0750 @ =REG_BLDALPHA
+ ldrh r0, [r4, 0x20]
+ lsls r0, 8
+ ldrh r1, [r4, 0x1E]
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E0784
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x10
+ bne _080E0784
+ b _080E075A
+ .align 2, 0
+_080E0750: .4byte REG_BLDALPHA
+_080E0754:
+ ldr r1, _080E0764 @ =gUnknown_03004DC0
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080E075A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0784
+ .align 2, 0
+_080E0764: .4byte gUnknown_03004DC0
+_080E0768:
+ ldr r0, _080E078C @ =gUnknown_030042C4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080E0790 @ =gUnknown_03004240
+ strh r1, [r0]
+ ldr r0, _080E0794 @ =REG_WININ
+ ldr r3, _080E0798 @ =0x00003f3f
+ adds r1, r3, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E0784:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E078C: .4byte gUnknown_030042C4
+_080E0790: .4byte gUnknown_03004240
+_080E0794: .4byte REG_WININ
+_080E0798: .4byte 0x00003f3f
+ thumb_func_end sub_80E0620
+
+ thumb_func_start sub_80E079C
+sub_80E079C: @ 80E079C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ ldrh r0, [r6, 0x12]
+ ldrh r4, [r6, 0x10]
+ subs r0, r4
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ beq _080E0890
+ movs r2, 0x22
+ ldrsh r0, [r6, r2]
+ bl __divsi3
+ mov r8, r0
+ movs r3, 0x14
+ ldrsh r0, [r6, r3]
+ lsls r5, r0, 8
+ lsls r0, r4, 16
+ movs r4, 0
+ cmp r0, 0
+ ble _080E07FC
+ ldr r0, _080E0888 @ =gUnknown_03004DE0
+ mov r12, r0
+ ldr r7, _080E088C @ =gUnknown_03004DC0
+_080E07D0:
+ lsls r2, r4, 16
+ asrs r2, 16
+ lsls r3, r2, 1
+ ldrb r1, [r7, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r3, r0
+ add r3, r12
+ adds r1, r2, 0
+ subs r1, 0x9F
+ ldrh r0, [r6, 0x1C]
+ subs r0, r1
+ strh r0, [r3]
+ adds r2, 0x1
+ lsls r2, 16
+ lsrs r4, r2, 16
+ asrs r2, 16
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ cmp r2, r0
+ blt _080E07D0
+_080E07FC:
+ ldrh r4, [r6, 0x10]
+ lsls r3, r4, 16
+ asrs r1, r3, 16
+ movs r2, 0x12
+ ldrsh r0, [r6, r2]
+ cmp r1, r0
+ bgt _080E0846
+ ldr r0, _080E0888 @ =gUnknown_03004DE0
+ mov r12, r0
+ ldr r7, _080E088C @ =gUnknown_03004DC0
+_080E0810:
+ asrs r4, r3, 16
+ cmp r4, 0
+ blt _080E0832
+ asrs r1, r5, 8
+ subs r1, r4
+ lsls r3, r4, 1
+ ldrb r2, [r7, 0x14]
+ lsls r0, r2, 4
+ subs r0, r2
+ lsls r0, 7
+ adds r3, r0
+ add r3, r12
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r6, 0x1C]
+ adds r1, r2
+ strh r1, [r3]
+_080E0832:
+ add r5, r8
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r3, r4, 16
+ asrs r1, r3, 16
+ movs r2, 0x12
+ ldrsh r0, [r6, r2]
+ cmp r1, r0
+ ble _080E0810
+_080E0846:
+ movs r3, 0x1C
+ ldrsh r0, [r6, r3]
+ adds r0, 0x9F
+ lsls r2, r4, 16
+ asrs r1, r2, 16
+ subs r5, r0, r1
+ movs r3, 0x16
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ bge _080E08BE
+ ldr r7, _080E0888 @ =gUnknown_03004DE0
+ ldr r4, _080E088C @ =gUnknown_03004DC0
+_080E085E:
+ asrs r3, r2, 16
+ cmp r3, 0
+ blt _080E0876
+ lsls r2, r3, 1
+ ldrb r1, [r4, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r7
+ strh r5, [r2]
+ subs r5, 0x1
+_080E0876:
+ adds r0, r3, 0x1
+ lsls r2, r0, 16
+ asrs r1, r2, 16
+ movs r3, 0x16
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ blt _080E085E
+ b _080E08BE
+ .align 2, 0
+_080E0888: .4byte gUnknown_03004DE0
+_080E088C: .4byte gUnknown_03004DC0
+_080E0890:
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ adds r5, r0, 0
+ adds r5, 0x9F
+ movs r4, 0
+ ldr r3, _080E08C8 @ =gUnknown_03004DE0
+ movs r2, 0xF0
+ lsls r2, 3
+ adds r6, r3, r2
+_080E08A2:
+ lsls r0, r4, 16
+ asrs r0, 16
+ lsls r2, r0, 1
+ adds r1, r2, r3
+ strh r5, [r1]
+ adds r2, r6
+ strh r5, [r2]
+ subs r5, 0x1
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ asrs r0, 16
+ cmp r0, 0x6F
+ ble _080E08A2
+_080E08BE:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E08C8: .4byte gUnknown_03004DE0
+ thumb_func_end sub_80E079C
+
+ thumb_func_start sub_80E08CC
+sub_80E08CC: @ 80E08CC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r4, 0
+ ldr r7, _080E0914 @ =gSprites
+ movs r1, 0x3
+ ands r0, r1
+ lsls r5, r0, 2
+ movs r0, 0xD
+ negs r0, r0
+ adds r6, r0, 0
+_080E08E2:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080E0902
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r7
+ ldrb r0, [r1, 0x5]
+ ands r0, r6
+ orrs r0, r5
+ strb r0, [r1, 0x5]
+_080E0902:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _080E08E2
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0914: .4byte gSprites
+ thumb_func_end sub_80E08CC
+
+ thumb_func_start sub_80E0918
+sub_80E0918: @ 80E0918
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r6, _080E09B8 @ =gBattleAnimBankAttacker
+ ldrb r0, [r6]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ eors r0, r1
+ negs r1, r0
+ orrs r1, r0
+ lsrs r4, r1, 31
+ ldrb r0, [r6]
+ adds r1, r4, 0
+ bl sub_8076034
+ ldr r0, _080E09BC @ =gSprites
+ mov r9, r0
+ ldr r0, _080E09C0 @ =gObjectBankIDs
+ mov r8, r0
+ ldrb r0, [r6]
+ add r0, r8
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ add r1, r9
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r7, 0x5
+ negs r7, r7
+ adds r0, r7, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r0, [r6]
+ movs r5, 0x2
+ eors r0, r5
+ bl IsAnimBankSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E09A2
+ ldrb r0, [r6]
+ eors r0, r5
+ movs r1, 0x1
+ eors r4, r1
+ adds r1, r4, 0
+ bl sub_8076034
+ ldrb r0, [r6]
+ eors r0, r5
+ add r0, r8
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r9
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ adds r1, r7, 0
+ ands r1, r2
+ strb r1, [r0]
+_080E09A2:
+ mov r0, r10
+ bl DestroyAnimVisualTask
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E09B8: .4byte gBattleAnimBankAttacker
+_080E09BC: .4byte gSprites
+_080E09C0: .4byte gObjectBankIDs
+ thumb_func_end sub_80E0918
+
+ thumb_func_start sub_80E09C4
+sub_80E09C4: @ 80E09C4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r4, _080E0A0C @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ eors r0, r1
+ negs r1, r0
+ orrs r1, r0
+ lsrs r5, r1, 31
+ adds r0, r5, 0
+ bl sub_8076464
+ ldrb r1, [r4]
+ movs r0, 0x2
+ eors r0, r1
+ bl IsAnimBankSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0A00
+ movs r0, 0x1
+ eors r5, r0
+ adds r0, r5, 0
+ bl sub_8076464
+_080E0A00:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0A0C: .4byte gBattleAnimBankAttacker
+ thumb_func_end sub_80E09C4
+
+ thumb_func_start sub_80E0A10
+sub_80E0A10: @ 80E0A10
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080E0A40 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrb r1, [r1, 0x4]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _080E0A44 @ =sub_8078600
+ str r0, [r4, 0x1C]
+ ldr r1, _080E0A48 @ =move_anim_8072740
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0A40: .4byte gBattleAnimArgs
+_080E0A44: .4byte sub_8078600
+_080E0A48: .4byte move_anim_8072740
+ thumb_func_end sub_80E0A10
+
+ thumb_func_start sub_80E0A4C
+sub_80E0A4C: @ 80E0A4C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r7, 0
+ ldr r0, _080E0B50 @ =gUnknown_030042C4
+ strh r7, [r0]
+ ldr r0, _080E0B54 @ =gUnknown_03004240
+ strh r7, [r0]
+ ldr r1, _080E0B58 @ =REG_WININ
+ ldr r2, _080E0B5C @ =0x00003f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r3, _080E0B60 @ =0x00003f3d
+ adds r0, r3, 0
+ strh r0, [r1]
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r1, _080E0B64 @ =REG_BLDCNT
+ ldr r2, _080E0B68 @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r3, _080E0B6C @ =0x00000c08
+ adds r0, r3, 0
+ strh r0, [r1]
+ ldr r5, _080E0B70 @ =REG_BG1CNT
+ ldrb r1, [r5]
+ movs r0, 0x4
+ negs r0, r0
+ mov r8, r0
+ ands r0, r1
+ strb r0, [r5]
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0AC4
+ ldrb r0, [r5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r5]
+_080E0AC4:
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0B40
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0B40
+ ldr r4, _080E0B74 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _080E0AF4
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0B40
+_080E0AF4:
+ ldrb r0, [r4]
+ movs r6, 0x2
+ eors r0, r6
+ bl IsAnimBankSpriteVisible
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E0B40
+ ldr r3, _080E0B78 @ =gSprites
+ ldr r1, _080E0B7C @ =gObjectBankIDs
+ ldrb r0, [r4]
+ eors r0, r6
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ ldrb r3, [r2, 0x5]
+ lsls r1, r3, 28
+ lsrs r1, 30
+ subs r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldrb r1, [r5]
+ mov r0, r8
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r5]
+ movs r7, 0x1
+_080E0B40:
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0B84
+ ldr r0, _080E0B80 @ =gSharedMem + 0x19348
+ ldrh r5, [r0]
+ b _080E0BCC
+ .align 2, 0
+_080E0B50: .4byte gUnknown_030042C4
+_080E0B54: .4byte gUnknown_03004240
+_080E0B58: .4byte REG_WININ
+_080E0B5C: .4byte 0x00003f3f
+_080E0B60: .4byte 0x00003f3d
+_080E0B64: .4byte REG_BLDCNT
+_080E0B68: .4byte 0x00003f42
+_080E0B6C: .4byte 0x00000c08
+_080E0B70: .4byte REG_BG1CNT
+_080E0B74: .4byte gBattleAnimBankAttacker
+_080E0B78: .4byte gSprites
+_080E0B7C: .4byte gObjectBankIDs
+_080E0B80: .4byte gSharedMem + 0x19348
+_080E0B84:
+ ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0BB0
+ ldr r1, _080E0BA8 @ =gBattlePartyID
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080E0BAC @ =gEnemyParty
+ b _080E0BC0
+ .align 2, 0
+_080E0BA4: .4byte gBattleAnimBankAttacker
+_080E0BA8: .4byte gBattlePartyID
+_080E0BAC: .4byte gEnemyParty
+_080E0BB0:
+ ldr r1, _080E0C58 @ =gBattlePartyID
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080E0C5C @ =gPlayerParty
+_080E0BC0:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080E0BCC:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080E0C60 @ =gBattleAnimBankAttacker
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_807A4A0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, sp
+ bl sub_8078914
+ ldr r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r2, _080E0C64 @ =0x040000d4
+ add r0, sp, 0xC
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r0, _080E0C68 @ =0x85000400
+ str r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ ldr r0, _080E0C6C @ =gUnknown_08D1D574
+ bl LZDecompressVram
+ ldr r0, _080E0C70 @ =gUnknown_08D1D410
+ ldr r1, [sp]
+ bl LZDecompressVram
+ ldr r0, _080E0C74 @ =gUnknown_08D1D54C
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r2, _080E0C78 @ =gUnknown_030042C0
+ ldr r0, _080E0C7C @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ negs r0, r0
+ adds r0, 0x60
+ strh r0, [r2]
+ ldr r2, _080E0C80 @ =gUnknown_030041B4
+ ldrh r0, [r1, 0x22]
+ negs r0, r0
+ adds r0, 0x20
+ strh r0, [r2]
+ ldrb r0, [r1, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ adds r1, r0, 0
+ ldr r2, _080E0C84 @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080E0C88
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_8079108
+ b _080E0C94
+ .align 2, 0
+_080E0C58: .4byte gBattlePartyID
+_080E0C5C: .4byte gPlayerParty
+_080E0C60: .4byte gBattleAnimBankAttacker
+_080E0C64: .4byte 0x040000d4
+_080E0C68: .4byte 0x85000400
+_080E0C6C: .4byte gUnknown_08D1D574
+_080E0C70: .4byte gUnknown_08D1D410
+_080E0C74: .4byte gUnknown_08D1D54C
+_080E0C78: .4byte gUnknown_030042C0
+_080E0C7C: .4byte gSprites
+_080E0C80: .4byte gUnknown_030041B4
+_080E0C84: .4byte gBattleAnimArgs
+_080E0C88:
+ lsls r0, r1, 4
+ ldrh r3, [r2, 0x4]
+ movs r1, 0x10
+ movs r2, 0xB
+ bl BlendPalette
+_080E0C94:
+ ldr r1, _080E0CC4 @ =gTasks
+ mov r2, r9
+ lsls r0, r2, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r2, _080E0CC8 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0xE]
+ strh r7, [r0, 0x14]
+ ldr r1, _080E0CCC @ =sub_80E0CD0
+ str r1, [r0]
+ add sp, 0x10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0CC4: .4byte gTasks
+_080E0CC8: .4byte gBattleAnimArgs
+_080E0CCC: .4byte sub_80E0CD0
+ thumb_func_end sub_80E0A4C
+
+ thumb_func_start sub_80E0CD0
+sub_80E0CD0: @ 80E0CD0
+ push {r4-r7,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E0DF0 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x4
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ ldr r2, _080E0DF4 @ =gUnknown_030042C0
+ ldrh r3, [r2]
+ subs r1, r3, 0x4
+ strh r1, [r2]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x80
+ bne _080E0DE8
+ strh r5, [r4, 0x1C]
+ adds r0, r3, 0
+ adds r0, 0x7C
+ strh r0, [r2]
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x1
+ strh r0, [r4, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080E0DE8
+ movs r0, 0
+ bl sub_8076464
+ ldr r0, _080E0DF8 @ =gUnknown_030042C4
+ strh r5, [r0]
+ ldr r0, _080E0DFC @ =gUnknown_03004240
+ strh r5, [r0]
+ ldr r0, _080E0E00 @ =REG_WININ
+ ldr r2, _080E0E04 @ =0x00003f3f
+ adds r1, r2, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ bl NotInBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0D40
+ ldr r2, _080E0E08 @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080E0D40:
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ eors r0, r1
+ strh r0, [r2]
+ ldr r0, _080E0E0C @ =REG_BLDCNT
+ strh r5, [r0]
+ adds r0, 0x2
+ strh r5, [r0]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r6, _080E0E10 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldrb r0, [r1, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ adds r1, r0, 0
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080E0D84
+ adds r0, r1, 0
+ movs r1, 0x1
+ bl sub_8079108
+_080E0D84:
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ mov r0, sp
+ bl sub_8078914
+ ldr r2, [sp, 0x4]
+ str r5, [sp, 0xC]
+ ldr r1, _080E0E14 @ =0x040000d4
+ add r0, sp, 0xC
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ ldr r0, _080E0E18 @ =0x85000200
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080E0DE2
+ ldr r2, _080E0E1C @ =gObjectBankIDs
+ ldr r0, _080E0E20 @ =gBattleAnimBankAttacker
+ ldrb r1, [r0]
+ movs r0, 0x2
+ eors r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r6
+ ldrb r3, [r2, 0x5]
+ lsls r1, r3, 28
+ lsrs r1, 30
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+_080E0DE2:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080E0DE8:
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0DF0: .4byte gTasks
+_080E0DF4: .4byte gUnknown_030042C0
+_080E0DF8: .4byte gUnknown_030042C4
+_080E0DFC: .4byte gUnknown_03004240
+_080E0E00: .4byte REG_WININ
+_080E0E04: .4byte 0x00003f3f
+_080E0E08: .4byte REG_BG1CNT
+_080E0E0C: .4byte REG_BLDCNT
+_080E0E10: .4byte gSprites
+_080E0E14: .4byte 0x040000d4
+_080E0E18: .4byte 0x85000200
+_080E0E1C: .4byte gObjectBankIDs
+_080E0E20: .4byte gBattleAnimBankAttacker
+ thumb_func_end sub_80E0CD0
+
+ thumb_func_start sub_80E0E24
+sub_80E0E24: @ 80E0E24
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080E0E44 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r2, r0, 0
+ cmp r1, 0x7
+ bhi _080E0E88
+ lsls r0, r1, 2
+ ldr r1, _080E0E48 @ =_080E0E4C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E0E44: .4byte gBattleAnimArgs
+_080E0E48: .4byte _080E0E4C
+ .align 2, 0
+_080E0E4C:
+ .4byte _080E0E6C
+ .4byte _080E0E6C
+ .4byte _080E0E6C
+ .4byte _080E0E6C
+ .4byte _080E0E78
+ .4byte _080E0E7C
+ .4byte _080E0E80
+ .4byte _080E0E84
+_080E0E6C:
+ ldrb r0, [r2]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r2, r0, 24
+ b _080E0E8A
+_080E0E78:
+ movs r4, 0
+ b _080E0E90
+_080E0E7C:
+ movs r4, 0x2
+ b _080E0E90
+_080E0E80:
+ movs r4, 0x1
+ b _080E0E90
+_080E0E84:
+ movs r4, 0x3
+ b _080E0E90
+_080E0E88:
+ movs r2, 0xFF
+_080E0E8A:
+ movs r0, 0
+ cmp r0, 0
+ beq _080E0EB6
+_080E0E90:
+ adds r0, r4, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl IsAnimBankSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0EB4
+ ldr r0, _080E0EB0 @ =gObjectBankIDs
+ adds r0, r4, r0
+ ldrb r2, [r0]
+ b _080E0EB6
+ .align 2, 0
+_080E0EB0: .4byte gObjectBankIDs
+_080E0EB4:
+ movs r2, 0xFF
+_080E0EB6:
+ cmp r2, 0xFF
+ beq _080E0ED2
+ ldr r1, _080E0EE0 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ ldr r1, _080E0EE4 @ =gBattleAnimArgs
+ ldrb r1, [r1, 0x2]
+ bl sub_8079108
+_080E0ED2:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0EE0: .4byte gSprites
+_080E0EE4: .4byte gBattleAnimArgs
+ thumb_func_end sub_80E0E24
+
+ thumb_func_start sub_80E0EE8
+sub_80E0EE8: @ 80E0EE8
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080E0F14 @ =gUnknown_0202F7C4
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bhi _080E0EFC
+ ldr r1, _080E0F18 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r1, 0xE]
+_080E0EFC:
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080E0F08
+ ldr r1, _080E0F18 @ =gBattleAnimArgs
+ movs r0, 0x1
+ strh r0, [r1, 0xE]
+_080E0F08:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0F14: .4byte gUnknown_0202F7C4
+_080E0F18: .4byte gBattleAnimArgs
+ thumb_func_end sub_80E0EE8
+
+ .align 2, 0 @ Don't pad with nop.