diff options
Diffstat (limited to 'asm/fire.s')
-rw-r--r-- | asm/fire.s | 2500 |
1 files changed, 2500 insertions, 0 deletions
diff --git a/asm/fire.s b/asm/fire.s new file mode 100644 index 000000000..f4b89300a --- /dev/null +++ b/asm/fire.s @@ -0,0 +1,2500 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80AC90C +sub_80AC90C: @ 80AC90C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AC940 @ =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, _080AC944 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r1, _080AC948 @ =sub_8074AE0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC940: .4byte gBattleAnimArgs +_080AC944: .4byte DestroyAnimSprite +_080AC948: .4byte sub_8074AE0 + thumb_func_end sub_80AC90C + + thumb_func_start sub_80AC94C +sub_80AC94C: @ 80AC94C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AC984 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080AC988 @ =sub_8074D00 + str r0, [r4, 0x1C] + ldr r1, _080AC98C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC984: .4byte gBattleAnimArgs +_080AC988: .4byte sub_8074D00 +_080AC98C: .4byte DestroyAnimSprite + thumb_func_end sub_80AC94C + + thumb_func_start sub_80AC990 +sub_80AC990: @ 80AC990 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080AC9C4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AC9CC + ldr r2, _080AC9C8 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080AC9E2 + .align 2, 0 +_080AC9C4: .4byte gBattleAnimAttacker +_080AC9C8: .4byte gBattleAnimArgs +_080AC9CC: + ldr r1, _080AC9F8 @ =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] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] +_080AC9E2: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080AC9FC @ =sub_80ACA6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC9F8: .4byte gBattleAnimArgs +_080AC9FC: .4byte sub_80ACA6C + thumb_func_end sub_80AC990 + + thumb_func_start sub_80ACA00 +sub_80ACA00: @ 80ACA00 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ACA2C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080ACA34 + ldr r2, _080ACA30 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080ACA4C + .align 2, 0 +_080ACA2C: .4byte gBattleAnimAttacker +_080ACA30: .4byte gBattleAnimArgs +_080ACA34: + ldr r1, _080ACA64 @ =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] + ldrh r0, [r1, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] +_080ACA4C: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080ACA68 @ =sub_80ACA6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACA64: .4byte gBattleAnimArgs +_080ACA68: .4byte sub_80ACA6C + thumb_func_end sub_80ACA00 + + thumb_func_start sub_80ACA6C +sub_80ACA6C: @ 80ACA6C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _080ACA92 + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x34] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] +_080ACA92: + movs r0, 0x2E + ldrsh r1, [r2, r0] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r1, r0 + bne _080ACAA4 + adds r0, r2, 0 + bl move_anim_8074EE0 +_080ACAA4: + pop {r0} + bx r0 + thumb_func_end sub_80ACA6C + + thumb_func_start sub_80ACAA8 +sub_80ACAA8: @ 80ACAA8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080ACACC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080ACAD4 + ldr r0, _080ACAD0 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080ACAE6 + .align 2, 0 +_080ACACC: .4byte gBattleAnimAttacker +_080ACAD0: .4byte gBattleAnimArgs +_080ACAD4: + ldr r0, _080ACB14 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + adds r2, r4, 0 + adds r2, 0x43 + movs r1, 0x8 + strb r1, [r2] +_080ACAE6: + adds r2, r0, 0 + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r2, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r2, 0xA] + strh r0, [r4, 0x34] + ldrh r0, [r2, 0xC] + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldr r0, _080ACB18 @ =sub_80ACB1C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACB14: .4byte gBattleAnimArgs +_080ACB18: .4byte sub_80ACB1C + thumb_func_end sub_80ACAA8 + + thumb_func_start sub_80ACB1C +sub_80ACB1C: @ 80ACB1C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ACBA4 + movs r2, 0x38 + ldrsh r1, [r4, r2] + ldr r0, _080ACB88 @ =0x00002710 + cmp r1, r0 + ble _080ACB3A + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + strb r0, [r1] +_080ACB3A: + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080ACB90 + ldr r2, _080ACB8C @ =0xffffff00 + b _080ACB98 + .align 2, 0 +_080ACB88: .4byte 0x00002710 +_080ACB8C: .4byte 0xffffff00 +_080ACB90: + cmp r0, 0 + bge _080ACB9C + movs r2, 0x80 + lsls r2, 1 +_080ACB98: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_080ACB9C: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _080ACBAA +_080ACBA4: + adds r0, r4, 0 + bl move_anim_8074EE0 +_080ACBAA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACB1C + + thumb_func_start sub_80ACBB0 +sub_80ACBB0: @ 80ACBB0 + push {lr} + movs r1, 0 + strh r1, [r0, 0x20] + strh r1, [r0, 0x22] + movs r1, 0x3C + strh r1, [r0, 0x2E] + movs r1, 0x8C + strh r1, [r0, 0x32] + movs r1, 0x50 + strh r1, [r0, 0x36] + ldr r1, _080ACBD4 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080ACBD8 @ =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080ACBD4: .4byte sub_8075590 +_080ACBD8: .4byte DestroyAnimSprite + thumb_func_end sub_80ACBB0 + + thumb_func_start sub_80ACBDC +sub_80ACBDC: @ 80ACBDC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080ACC34 @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + adds r4, r0, 0 + ldr r0, _080ACC38 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080ACC22 + movs r0, 0x2 + bl GetBattlerAtPosition + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + beq _080ACC1A + movs r0, 0x3 + bl GetBattlerAtPosition + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + bne _080ACC22 +_080ACC1A: + ldr r1, _080ACC3C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080ACC22: + ldr r1, _080ACC40 @ =sub_8075F0C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ACC34: .4byte gBattleAnimAttacker +_080ACC38: .4byte gBattleAnimTarget +_080ACC3C: .4byte gBattleAnimArgs +_080ACC40: .4byte sub_8075F0C + thumb_func_end sub_80ACBDC + + thumb_func_start sub_80ACC44 +sub_80ACC44: @ 80ACC44 + ldr r2, _080ACC58 @ =gBattleAnimArgs + ldrh r1, [r2] + negs r1, r1 + strh r1, [r2] + ldrh r1, [r2, 0x4] + negs r1, r1 + strh r1, [r2, 0x4] + ldr r1, _080ACC5C @ =sub_8075F0C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080ACC58: .4byte gBattleAnimArgs +_080ACC5C: .4byte sub_8075F0C + thumb_func_end sub_80ACC44 + + thumb_func_start sub_80ACC60 +sub_80ACC60: @ 80ACC60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080ACC80 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + movs r1, 0 + strh r0, [r4, 0x3C] + strh r1, [r4, 0x2E] + ldr r0, _080ACC84 @ =sub_80ACC88 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACC80: .4byte gBattleAnimArgs +_080ACC84: .4byte sub_80ACC88 + thumb_func_end sub_80ACC60 + + thumb_func_start sub_80ACC88 +sub_80ACC88: @ 80ACC88 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80ACD7C + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x12 + bne _080ACCD2 + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080ACCD8 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080ACCDC @ =sub_80ACCE0 + str r0, [r5, 0x1C] +_080ACCD2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACCD8: .4byte gBattleAnimTarget +_080ACCDC: .4byte sub_80ACCE0 + thumb_func_end sub_80ACC88 + + thumb_func_start sub_80ACCE0 +sub_80ACCE0: @ 80ACCE0 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080ACD28 + movs r4, 0 + strh r4, [r6, 0x2E] + ldr r5, _080ACD20 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + strh r4, [r6, 0x26] + strh r4, [r6, 0x24] + ldr r1, _080ACD24 @ =sub_80ACD58 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + b _080ACD52 + .align 2, 0 +_080ACD20: .4byte gBattleAnimTarget +_080ACD24: .4byte sub_80ACD58 +_080ACD28: + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl Sin + ldrh r1, [r6, 0x24] + adds r0, r1 + strh r0, [r6, 0x24] + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl Cos + ldrh r1, [r6, 0x26] + adds r0, r1 + strh r0, [r6, 0x26] + ldrh r0, [r6, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3C] +_080ACD52: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80ACCE0 + + thumb_func_start sub_80ACD58 +sub_80ACD58: @ 80ACD58 + push {r4,lr} + adds r4, r0, 0 + bl sub_80ACD7C + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080ACD74 + adds r0, r4, 0 + bl DestroyAnimSprite +_080ACD74: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACD58 + + thumb_func_start sub_80ACD7C +sub_80ACD7C: @ 80ACD7C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACD7C + + thumb_func_start sub_80ACDA8 +sub_80ACDA8: @ 80ACDA8 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080ACDDC @ =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] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldr r1, _080ACDE0 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080ACDE4 @ =sub_8074CD0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACDDC: .4byte gBattleAnimArgs +_080ACDE0: .4byte DestroyAnimSprite +_080ACDE4: .4byte sub_8074CD0 + thumb_func_end sub_80ACDA8 + + thumb_func_start sub_80ACDE8 +sub_80ACDE8: @ 80ACDE8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080ACE1C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080ACE20 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080ACE24 @ =sub_80ACE28 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACE1C: .4byte gBattleAnimArgs +_080ACE20: .4byte sub_8074C44 +_080ACE24: .4byte sub_80ACE28 + thumb_func_end sub_80ACDE8 + + thumb_func_start sub_80ACE28 +sub_80ACE28: @ 80ACE28 + push {lr} + adds r3, r0, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldrh r1, [r0, 0x30] + movs r2, 0 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + ldr r1, _080ACE4C @ =sub_80ACE50 + str r1, [r0, 0x1C] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080ACE4C: .4byte sub_80ACE50 + thumb_func_end sub_80ACE28 + + thumb_func_start sub_80ACE50 +sub_80ACE50: @ 80ACE50 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + adds r0, 0xD0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080ACE9C + adds r0, r4, 0 + bl DestroyAnimSprite +_080ACE9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACE50 + + thumb_func_start sub_80ACEA4 +sub_80ACEA4: @ 80ACEA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080ACF04 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x26] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + ldr r2, _080ACF08 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x10] + ldr r0, _080ACF0C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x12] + strh r5, [r4, 0x14] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldr r0, _080ACF10 @ =sub_80ACF14 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACF04: .4byte gTasks +_080ACF08: .4byte gSprites +_080ACF0C: .4byte gBattleAnimAttacker +_080ACF10: .4byte sub_80ACF14 + thumb_func_end sub_80ACEA4 + + thumb_func_start sub_80ACF14 +sub_80ACF14: @ 80ACF14 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080ACF3C @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080ACF30 + b _080AD1EE +_080ACF30: + lsls r0, 2 + ldr r1, _080ACF40 @ =_080ACF44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ACF3C: .4byte gTasks +_080ACF40: .4byte _080ACF44 + .align 2, 0 +_080ACF44: + .4byte _080ACF60 + .4byte _080ACF86 + .4byte _080AD038 + .4byte _080AD098 + .4byte _080AD0B6 + .4byte _080AD18C + .4byte _080AD1E0 +_080ACF60: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0xE0 + str r0, [sp] + movs r0, 0x80 + lsls r0, 2 + str r0, [sp, 0x4] + movs r0, 0x20 + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_80765D4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080ACF86: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ACFCE + 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 _080ACFBC + ldr r2, _080ACFB8 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + b _080ACFCC + .align 2, 0 +_080ACFB8: .4byte gSprites +_080ACFBC: + ldr r2, _080AD030 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080AD034 @ =0x0000fffd +_080ACFCC: + strh r1, [r0, 0x24] +_080ACFCE: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ACFFC + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080ACFFC + movs r0, 0 + strh r0, [r4, 0xE] + ldr r2, _080AD030 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x1 + strh r1, [r0, 0x22] +_080ACFFC: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080AD00C + b _080AD1EE +_080AD00C: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldr r2, _080AD030 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + b _080AD1D4 + .align 2, 0 +_080AD030: .4byte gSprites +_080AD034: .4byte 0x0000fffd +_080AD038: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080AD048 + b _080AD1EE +_080AD048: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD072 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xF0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 + b _080AD092 +_080AD072: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xC0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 +_080AD092: + movs r0, 0 + strh r0, [r4, 0xA] + b _080AD1D4 +_080AD098: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + cmp r0, 0 + beq _080AD0A6 + b _080AD1EE +_080AD0A6: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + movs r2, 0x6 + bl sub_80AD1F8 + b _080AD1D4 +_080AD0B6: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD104 + 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 _080AD0F0 + ldr r2, _080AD0EC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + b _080AD102 + .align 2, 0 +_080AD0EC: .4byte gSprites +_080AD0F0: + ldr r2, _080AD13C @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 +_080AD102: + strh r1, [r0, 0x26] +_080AD104: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + ble _080AD1EE + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD140 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xF0 + bl sub_80765D4 + b _080AD15E + .align 2, 0 +_080AD13C: .4byte gSprites +_080AD140: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xC0 + bl sub_80765D4 +_080AD15E: + ldrh r1, [r4, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD17C + ldr r2, _080AD188 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] +_080AD17C: + movs r0, 0 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + b _080AD1D4 + .align 2, 0 +_080AD188: .4byte gSprites +_080AD18C: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD1A8 + ldr r2, _080AD1DC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] +_080AD1A8: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080AD1EE + ldr r2, _080AD1DC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x22] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + strh r5, [r4, 0xC] +_080AD1D4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AD1EE + .align 2, 0 +_080AD1DC: .4byte gSprites +_080AD1E0: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AD1EE + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080AD1EE: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80ACF14 + + thumb_func_start sub_80AD1F8 +sub_80AD1F8: @ 80AD1F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + adds r0, r4, 0 + bl sub_80AD374 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r1, _080AD248 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r4, [r0, 0x20] + ldr r0, _080AD24C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AD250 + adds r0, r4, 0 + subs r0, 0xC + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + b _080AD25A + .align 2, 0 +_080AD248: .4byte gSprites +_080AD24C: .4byte gBattleAnimAttacker +_080AD250: + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0xFF +_080AD25A: + movs r6, 0 + movs r5, 0 + lsls r4, 16 + str r4, [sp, 0x8] + mov r1, r9 + lsls r1, 16 + str r1, [sp, 0x4] + ldr r2, _080AD314 @ =gUnknown_83E5E44 + mov r9, r2 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r3, r8 + lsls r3, 1 + mov r10, r3 +_080AD278: + ldr r0, _080AD318 @ =gUnknown_83E5E2C + ldr r2, [sp, 0x8] + asrs r1, r2, 16 + ldr r3, [sp, 0x4] + asrs r2, r3, 16 + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AD2FA + ldr r1, _080AD31C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + lsls r0, r5, 2 + adds r0, 0x40 + adds r1, r0 + ldr r3, _080AD320 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r3, _080AD324 @ =0xfffffc00 + adds r0, r3, 0 + ands r2, r0 + orrs r2, r1 + strh r2, [r4, 0x4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x4 + bls _080AD2C2 + movs r5, 0 +_080AD2C2: + lsls r2, r6, 2 + mov r1, r9 + adds r0, r2, r1 + ldrh r0, [r0] + ldr r3, [sp] + adds r1, r0, 0 + muls r1, r3 + lsls r1, 16 + asrs r1, 16 + ldr r0, _080AD328 @ =gUnknown_83E5E46 + adds r2, r0 + movs r3, 0 + ldrsh r2, [r2, r3] + adds r0, r4, 0 + bl sub_80AD3C8 + strh r7, [r4, 0x3A] + mov r0, r8 + strh r0, [r4, 0x3C] + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + add r0, r10 + ldr r1, _080AD32C @ =gTasks+0x8 + adds r0, r1 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] +_080AD2FA: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x6 + bls _080AD278 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AD314: .4byte gUnknown_83E5E44 +_080AD318: .4byte gUnknown_83E5E2C +_080AD31C: .4byte gSprites +_080AD320: .4byte 0x000003ff +_080AD324: .4byte 0xfffffc00 +_080AD328: .4byte gUnknown_83E5E46 +_080AD32C: .4byte gTasks+0x8 + thumb_func_end sub_80AD1F8 + + thumb_func_start sub_80AD330 +sub_80AD330: @ 80AD330 + push {r4,lr} + adds r4, r0, 0 + bl sub_80AD3E4 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080AD36A + ldr r3, _080AD370 @ =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 +_080AD36A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD370: .4byte gTasks + thumb_func_end sub_80AD330 + + thumb_func_start sub_80AD374 +sub_80AD374: @ 80AD374 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AD3AC @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x26] + ldrh r0, [r1, 0x22] + adds r2, r0 + adds r1, 0x29 + movs r0, 0 + ldrsb r0, [r1, r0] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080AD3B0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AD3B4 + lsls r0, r4, 16 + movs r1, 0x94 + lsls r1, 15 + b _080AD3BA + .align 2, 0 +_080AD3AC: .4byte gSprites +_080AD3B0: .4byte gBattleAnimAttacker +_080AD3B4: + lsls r0, r4, 16 + movs r1, 0xB0 + lsls r1, 14 +_080AD3BA: + adds r0, r1 + lsrs r4, r0, 16 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80AD374 + + thumb_func_start sub_80AD3C8 +sub_80AD3C8: @ 80AD3C8 + movs r3, 0 + strh r3, [r0, 0x2E] + strh r3, [r0, 0x30] + ldrh r3, [r0, 0x20] + lsls r3, 3 + strh r3, [r0, 0x32] + ldrh r3, [r0, 0x22] + lsls r3, 3 + strh r3, [r0, 0x34] + lsls r1, 3 + strh r1, [r0, 0x36] + lsls r2, 3 + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_80AD3C8 + + thumb_func_start sub_80AD3E4 +sub_80AD3E4: @ 80AD3E4 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AD40E + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x30] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + ldrh r3, [r2, 0x34] + adds r0, r3 + strh r0, [r2, 0x34] +_080AD40E: + ldrh r0, [r2, 0x36] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r1, 16 + asrs r3, r1, 19 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080AD444 + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080AD444 + cmp r1, 0x78 + ble _080AD450 +_080AD444: + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080AD450: + pop {r0} + bx r0 + thumb_func_end sub_80AD3E4 + + thumb_func_start sub_80AD454 +sub_80AD454: @ 80AD454 + push {r4,r5,lr} + ldr r3, _080AD498 @ =gBattleAnimArgs + ldrh r1, [r3] + movs r2, 0 + strh r1, [r0, 0x20] + ldrh r1, [r3, 0x2] + strh r1, [r0, 0x22] + strh r2, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x32] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0x3A] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0x3C] + ldrh r4, [r0, 0x4] + lsls r2, r4, 22 + lsrs r2, 22 + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r1, 4 + adds r2, r1 + ldr r3, _080AD49C @ =0x000003ff + adds r1, r3, 0 + ands r2, r1 + ldr r1, _080AD4A0 @ =0xfffffc00 + ands r1, r4 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r1, _080AD4A4 @ =sub_80AD4A8 + str r1, [r0, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD498: .4byte gBattleAnimArgs +_080AD49C: .4byte 0x000003ff +_080AD4A0: .4byte 0xfffffc00 +_080AD4A4: .4byte sub_80AD4A8 + thumb_func_end sub_80AD454 + + thumb_func_start sub_80AD4A8 +sub_80AD4A8: @ 80AD4A8 + push {r4,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _080AD4DA + cmp r0, 0x1 + bgt _080AD4BE + cmp r0, 0 + beq _080AD4C4 + b _080AD538 +_080AD4BE: + cmp r0, 0x2 + beq _080AD4F8 + b _080AD538 +_080AD4C4: + ldrh r1, [r2, 0x3A] + movs r3, 0x3A + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080AD4D4 + subs r0, r1, 0x1 + strh r0, [r2, 0x3A] + b _080AD538 +_080AD4D4: + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080AD4DA: + ldrh r0, [r2, 0x22] + adds r0, 0x8 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + ldrh r3, [r2, 0x3C] + movs r4, 0x3C + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _080AD538 + strh r3, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + b _080AD538 +_080AD4F8: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD524 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD520 + ldr r0, _080AD51C @ =0x0000fffd + b _080AD522 + .align 2, 0 +_080AD51C: .4byte 0x0000fffd +_080AD520: + movs r0, 0x3 +_080AD522: + strh r0, [r2, 0x26] +_080AD524: + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AD538 + adds r0, r2, 0 + bl DestroyAnimSprite +_080AD538: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD4A8 + + thumb_func_start sub_80AD540 +sub_80AD540: @ 80AD540 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AD5B4 + cmp r0, 0x1 + bgt _080AD556 + cmp r0, 0 + beq _080AD55C + b _080AD682 +_080AD556: + cmp r0, 0x2 + beq _080AD612 + b _080AD682 +_080AD55C: + adds r0, r5, 0 + movs r1, 0 + bl sub_8075160 + ldr r4, _080AD584 @ =gBattleAnimArgs + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3C] + ldr r0, _080AD588 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AD58C + movs r0, 0x4 + b _080AD58E + .align 2, 0 +_080AD584: .4byte gBattleAnimArgs +_080AD588: .4byte gBattleAnimAttacker +_080AD58C: + ldr r0, _080AD5AC @ =0x0000fffc +_080AD58E: + strh r0, [r5, 0x36] + ldr r0, _080AD5B0 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080AD60A + .align 2, 0 +_080AD5AC: .4byte 0x0000fffc +_080AD5B0: .4byte gBattleAnimTarget +_080AD5B4: + ldrh r0, [r5, 0x30] + adds r0, 0xC0 + strh r0, [r5, 0x30] + ldr r0, _080AD5D4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AD5D8 + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + b _080AD5DE + .align 2, 0 +_080AD5D4: .4byte gBattleAnimAttacker +_080AD5D8: + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 +_080AD5DE: + strh r0, [r5, 0x26] + movs r2, 0x32 + ldrsh r0, [r5, r2] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080AD682 + movs r0, 0 + strh r0, [r5, 0x34] +_080AD60A: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080AD682 +_080AD612: + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + adds r2, r0, 0 + movs r3, 0 + strh r2, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080AD682 + ldrh r0, [r5, 0x20] + adds r1, r2, r0 + strh r1, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r3, [r5, 0x26] + strh r3, [r5, 0x24] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + ldr r4, _080AD688 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8075678 + ldr r0, _080AD68C @ =sub_80AD690 + str r0, [r5, 0x1C] +_080AD682: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD688: .4byte gBattleAnimTarget +_080AD68C: .4byte sub_80AD690 + thumb_func_end sub_80AD540 + + thumb_func_start sub_80AD690 +sub_80AD690: @ 80AD690 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080AD6E8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x10 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080AD6C6 + cmp r2, 0xC4 + ble _080AD6EE +_080AD6C6: + lsls r0, 16 + cmp r0, 0 + ble _080AD6EE + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AD6EE + ldr r0, _080AD6E4 @ =gUnknown_2037F24 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x89 + bl PlaySE12WithPanning + b _080AD6EE + .align 2, 0 +_080AD6E4: .4byte gUnknown_2037F24 +_080AD6E8: + adds r0, r4, 0 + bl DestroyAnimSprite +_080AD6EE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD690 + + thumb_func_start sub_80AD6F4 +sub_80AD6F4: @ 80AD6F4 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AD70C + ldr r0, _080AD778 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x30] + adds r0, r1, 0x1 + strh r0, [r4, 0x2E] +_080AD70C: + movs r0, 0xC0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0xA0 + strh r0, [r4, 0x36] + movs r2, 0x30 + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 24 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x36] + lsls r1, 16 + asrs r1, 24 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x7 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AD7A8 + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080AD780 + ldr r0, _080AD77C @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + 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 _080AD7C4 + .align 2, 0 +_080AD778: .4byte gBattleAnimArgs +_080AD77C: .4byte gBattleAnimTarget +_080AD780: + ldr r0, _080AD7A4 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + 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] + b _080AD7C4 + .align 2, 0 +_080AD7A4: .4byte gBattleAnimTarget +_080AD7A8: + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080AD7BC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D + b _080AD7C2 +_080AD7BC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F +_080AD7C2: + strb r0, [r1] +_080AD7C4: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080AD7EC + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AD7EC: + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0x1E + bne _080AD7FA + adds r0, r4, 0 + bl DestroyAnimSprite +_080AD7FA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD6F4 + + thumb_func_start sub_80AD800 +sub_80AD800: @ 80AD800 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AD860 @ =gTasks + adds r4, r1, r0 + ldr r0, _080AD864 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AD826 + movs r1, 0x1 +_080AD826: + strh r1, [r4, 0x20] + ldr r0, _080AD868 @ =gBattleAnimTarget + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + movs r0, 0x3 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080AD86C @ =sub_80AD870 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD860: .4byte gTasks +_080AD864: .4byte gBattleAnimAttacker +_080AD868: .4byte gBattleAnimTarget +_080AD86C: .4byte sub_80AD870 + thumb_func_end sub_80AD800 + + thumb_func_start sub_80AD870 +sub_80AD870: @ 80AD870 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AD894 @ =gTasks + adds r2, r0, r1 + movs r0, 0x8 + ldrsh r3, [r2, r0] + cmp r3, 0x1 + beq _080AD938 + cmp r3, 0x1 + bgt _080AD898 + cmp r3, 0 + beq _080AD8A6 + b _080ADA98 + .align 2, 0 +_080AD894: .4byte gTasks +_080AD898: + cmp r3, 0x2 + bne _080AD89E + b _080AD9C0 +_080AD89E: + cmp r3, 0x3 + bne _080AD8A4 + b _080ADA54 +_080AD8A4: + b _080ADA98 +_080AD8A6: + movs r1, 0x20 + ldrsh r0, [r2, r1] + lsls r0, 1 + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD8D8 + strh r3, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD8D4 + movs r0, 0x2 + b _080AD8D6 +_080AD8D4: + ldr r0, _080AD930 @ =0x0000fffe +_080AD8D6: + strh r0, [r2, 0x1E] +_080AD8D8: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080AD91A + ldr r4, _080AD934 @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080AD8EA: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080AD8EA +_080AD91A: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + beq _080AD92A + b _080ADA98 +_080AD92A: + movs r0, 0 + strh r0, [r2, 0x1A] + b _080ADA44 + .align 2, 0 +_080AD930: .4byte 0x0000fffe +_080AD934: .4byte gSprites +_080AD938: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080AD960 + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + ands r0, r3 + lsls r0, 16 + cmp r0, 0 + beq _080AD95C + movs r0, 0x2 + b _080AD95E +_080AD95C: + ldr r0, _080AD9B8 @ =0x0000fffe +_080AD95E: + strh r0, [r2, 0x1E] +_080AD960: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080AD9A2 + ldr r4, _080AD9BC @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080AD972: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080AD972 +_080AD9A2: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x60 + bne _080ADA98 + movs r0, 0 + strh r0, [r2, 0x1A] + b _080ADA44 + .align 2, 0 +_080AD9B8: .4byte 0x0000fffe +_080AD9BC: .4byte gSprites +_080AD9C0: + movs r7, 0x20 + ldrsh r1, [r2, r7] + lsls r1, 1 + ldrh r0, [r2, 0x1C] + subs r0, r1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD9F4 + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD9F0 + strh r3, [r2, 0x1E] + b _080AD9F4 +_080AD9F0: + ldr r0, _080ADA4C @ =0x0000fffe + strh r0, [r2, 0x1E] +_080AD9F4: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080ADA36 + ldr r4, _080ADA50 @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080ADA06: + movs r5, 0xE + ldrsh r0, [r2, r5] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r0, [r0, r7] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080ADA06 +_080ADA36: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080ADA98 +_080ADA44: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080ADA98 + .align 2, 0 +_080ADA4C: .4byte 0x0000fffe +_080ADA50: .4byte gSprites +_080ADA54: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080ADA92 + ldr r6, _080ADAA0 @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 + movs r5, 0 +_080ADA68: + movs r7, 0xE + ldrsh r0, [r2, r7] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r5, [r0, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080ADA68 +_080ADA92: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080ADA98: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADAA0: .4byte gSprites + thumb_func_end sub_80AD870 + + thumb_func_start sub_80ADAA4 +sub_80ADAA4: @ 80ADAA4 + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + ldr r1, _080ADAD4 @ =gBattleAnimArgs + ldrb r2, [r1] + ldrh r3, [r1, 0x2] + movs r1, 0x10 + bl BlendPalette + adds r0, r4, 0 + bl DestroyAnimVisualTask + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADAD4: .4byte gBattleAnimArgs + thumb_func_end sub_80ADAA4 + + thumb_func_start sub_80ADAD8 +sub_80ADAD8: @ 80ADAD8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080ADB30 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x8 + ldrsh r0, [r2, r3] + mov r9, r1 + ldr r4, _080ADB34 @ =gBattleAnimArgs + mov r8, r4 + cmp r0, 0 + bne _080ADB0E + ldrh r0, [r4] + strh r0, [r2, 0xA] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0xC] + ldrh r0, [r4, 0x4] + strh r0, [r2, 0xE] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x10] +_080ADB0E: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + ldr r1, _080ADB38 @ =gBattlerSpriteIds + ldr r0, _080ADB3C @ =gBattleAnimTarget + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + movs r5, 0x10 + ldrsh r0, [r2, r5] + cmp r0, 0 + bne _080ADB44 + ldr r4, _080ADB40 @ =gUnknown_83E5EFC + movs r1, 0x8 + ldrsh r0, [r2, r1] + b _080ADB4A + .align 2, 0 +_080ADB30: .4byte gTasks +_080ADB34: .4byte gBattleAnimArgs +_080ADB38: .4byte gBattlerSpriteIds +_080ADB3C: .4byte gBattleAnimTarget +_080ADB40: .4byte gUnknown_83E5EFC +_080ADB44: + ldr r4, _080ADB90 @ =gUnknown_83E5F0C + movs r3, 0x8 + ldrsh r0, [r2, r3] +_080ADB4A: + movs r1, 0xA + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + adds r0, r4 + ldrb r5, [r0] + lsls r0, r7, 2 + adds r1, r0, r7 + lsls r1, 3 + add r1, r9 + movs r4, 0xE + ldrsh r1, [r1, r4] + mov r12, r0 + cmp r1, 0x1 + bne _080ADB98 + ldr r2, _080ADB94 @ =gSprites + lsls r3, r6, 4 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + mov r10, r0 + mov r0, r8 + movs r4, 0x2 + ldrsh r1, [r0, r4] + lsls r0, r5, 24 + asrs r0, 24 + muls r0, r1 + cmp r0, 0 + bge _080ADB88 + negs r0, r0 +_080ADB88: + mov r5, r10 + strh r0, [r5, 0x26] + b _080ADBB2 + .align 2, 0 +_080ADB90: .4byte gUnknown_83E5F0C +_080ADB94: .4byte gSprites +_080ADB98: + ldr r3, _080ADBE8 @ =gSprites + lsls r4, r6, 4 + adds r2, r4, r6 + lsls r2, 2 + adds r2, r3 + lsls r0, r5, 24 + asrs r0, 24 + mov r5, r8 + ldrh r1, [r5, 0x2] + muls r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 + adds r3, r4, 0 +_080ADBB2: + mov r1, r12 + adds r0, r1, r7 + lsls r0, 3 + add r0, r9 + movs r4, 0x8 + ldrsh r1, [r0, r4] + movs r5, 0xA + ldrsh r0, [r0, r5] + cmp r1, r0 + bne _080ADBD8 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + strh r1, [r0, 0x26] + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080ADBD8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADBE8: .4byte gSprites + thumb_func_end sub_80ADAD8 + + .align 2, 0 @ Don't pad with nop. |