diff options
author | garak <garakmon@gmail.com> | 2019-05-23 16:31:12 -0400 |
---|---|---|
committer | garak <garakmon@gmail.com> | 2019-05-23 16:31:12 -0400 |
commit | 2f336c05bfc1c28db81d85a74056305e42a32fff (patch) | |
tree | bce4bb9cac06c9d5213f7ac10b071806eb678cd6 | |
parent | 4ea6dcc4ab7808826d27204b6043b318b1c25dd4 (diff) |
split battle anim effects 1 and 2, fire, water, and electric
-rw-r--r-- | asm/battle_anim_80A22E8.s | 26738 | ||||
-rw-r--r-- | asm/battle_anim_effects_1.s | 9882 | ||||
-rw-r--r-- | asm/battle_anim_effects_2.s | 7946 | ||||
-rw-r--r-- | asm/electric.s | 2675 | ||||
-rw-r--r-- | asm/fire.s | 2500 | ||||
-rw-r--r-- | asm/water.s | 3775 | ||||
-rw-r--r-- | ld_script.txt | 5 |
7 files changed, 26783 insertions, 26738 deletions
diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s index fda553750..18e22078e 100644 --- a/asm/battle_anim_80A22E8.s +++ b/asm/battle_anim_80A22E8.s @@ -5,26744 +5,6 @@ .text - thumb_func_start sub_80A22E8 -sub_80A22E8: @ 80A22E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A231C @ =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] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080A2320 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2324 - ldrh r0, [r5, 0x8] - negs r0, r0 - b _080A2326 - .align 2, 0 -_080A231C: .4byte gBattleAnimArgs -_080A2320: .4byte gBattleAnimAttacker -_080A2324: - ldrh r0, [r5, 0x8] -_080A2326: - strh r0, [r4, 0x34] - ldr r0, _080A2338 @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r4, 0x36] - ldr r0, _080A233C @ =sub_80A2340 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2338: .4byte gBattleAnimArgs -_080A233C: .4byte sub_80A2340 - thumb_func_end sub_80A22E8 - - thumb_func_start sub_80A2340 -sub_80A2340: @ 80A2340 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A237C - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A2382 -_080A237C: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2382: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2340 - - thumb_func_start sub_80A2388 -sub_80A2388: @ 80A2388 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _080A23C8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080A23CC @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A23D0 @ =sub_8075590 - str r0, [r4, 0x1C] - ldr r1, _080A23D4 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A23C8: .4byte gBattleAnimArgs -_080A23CC: .4byte gBattleAnimAttacker -_080A23D0: .4byte sub_8075590 -_080A23D4: .4byte move_anim_8074EE0 - thumb_func_end sub_80A2388 - - thumb_func_start sub_80A23D8 -sub_80A23D8: @ 80A23D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r5, _080A2420 @ =gBattleAnimArgs - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080A2424 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A2428 @ =sub_8075590 - str r0, [r4, 0x1C] - ldr r1, _080A242C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2420: .4byte gBattleAnimArgs -_080A2424: .4byte gBattleAnimTarget -_080A2428: .4byte sub_8075590 -_080A242C: .4byte DestroyAnimSprite - thumb_func_end sub_80A23D8 - - thumb_func_start sub_80A2430 -sub_80A2430: @ 80A2430 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r6, _080A2480 @ =gBattleAnimArgs - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080A2484 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x38] - ldr r1, _080A2488 @ =sub_80A248C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2480: .4byte gBattleAnimArgs -_080A2484: .4byte gBattleAnimTarget -_080A2488: .4byte sub_80A248C - thumb_func_end sub_80A2430 - - thumb_func_start sub_80A248C -sub_80A248C: @ 80A248C - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080A24A2 - adds r0, r4, 0 - bl DestroySprite - b _080A24F6 -_080A24A2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - ble _080A24BC - ldr r0, _080A24B8 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - adds r0, 0x1 - b _080A24C6 - .align 2, 0 -_080A24B8: .4byte gBattleAnimTarget -_080A24BC: - ldr r0, _080A24FC @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - adds r0, 0x6 -_080A24C6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0xF - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080A24F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A24FC: .4byte gBattleAnimTarget - thumb_func_end sub_80A248C - - thumb_func_start sub_80A2500 -sub_80A2500: @ 80A2500 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080A2570 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r0, 0x1 - movs r2, 0 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080A255A - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - movs r0, 0x6 - strh r0, [r5, 0x8] - ldr r1, _080A2574 @ =gBattleAnimArgs - movs r0, 0xF - strh r0, [r1] - strh r2, [r1, 0x2] - movs r0, 0x50 - strh r0, [r1, 0x4] - strh r2, [r1, 0x6] - ldr r4, _080A2578 @ =gUnknown_83E2A88 - ldr r0, _080A257C @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl CreateSpriteAndAnimate -_080A255A: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0xF - bne _080A2568 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A2568: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2570: .4byte gTasks -_080A2574: .4byte gBattleAnimArgs -_080A2578: .4byte gUnknown_83E2A88 -_080A257C: .4byte gBattleAnimTarget - thumb_func_end sub_80A2500 - - thumb_func_start sub_80A2580 -sub_80A2580: @ 80A2580 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075114 - ldr r6, _080A25C4 @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x2E] - ldr r5, _080A25C8 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_8075068 - ldr r0, _080A25CC @ =sub_80A25D0 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A25C4: .4byte gBattleAnimArgs -_080A25C8: .4byte gBattleAnimAttacker -_080A25CC: .4byte sub_80A25D0 - thumb_func_end sub_80A2580 - - thumb_func_start sub_80A25D0 -sub_80A25D0: @ 80A25D0 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080A25E4 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A25E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A25D0 - - thumb_func_start sub_80A25EC -sub_80A25EC: @ 80A25EC - push {r4,r5,lr} - adds r5, r0, 0 - bl Random - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x7 - ands r1, r0 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r4, _080A2634 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2638 - ldrh r0, [r5, 0x20] - subs r0, 0x14 - b _080A263C - .align 2, 0 -_080A2634: .4byte gBattleAnimAttacker -_080A2638: - ldrh r0, [r5, 0x20] - adds r0, 0x14 -_080A263C: - strh r0, [r5, 0x20] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - adds r0, 0x40 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080A269C @ =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_8075804 - bl Random - movs r1, 0xFF - ands r1, r0 - strh r1, [r5, 0x38] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - strh r0, [r5, 0x3A] - ldr r1, _080A26A0 @ =sub_80A26A4 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A269C: .4byte gBattleAnimTarget -_080A26A0: .4byte sub_80A26A4 - thumb_func_end sub_80A25EC - - thumb_func_start sub_80A26A4 -sub_80A26A4: @ 80A26A4 - push {r4,lr} - adds r4, r0, 0 - bl sub_807578C - lsls r0, 24 - cmp r0, 0 - beq _080A26BA - adds r0, r4, 0 - bl DestroyAnimSprite - b _080A26EA -_080A26BA: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xC - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7E - bgt _080A26D6 - ldrh r0, [r4, 0x3A] - b _080A26DA -_080A26D6: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 -_080A26DA: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x18 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080A26EA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A26A4 - - thumb_func_start sub_80A26F0 -sub_80A26F0: @ 80A26F0 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _080A2750 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2710 - ldr r1, _080A2754 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A2710: - ldr r4, _080A2754 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080A2758 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_8075068 - ldr r0, _080A275C @ =sub_80A2760 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2750: .4byte gBattleAnimAttacker -_080A2754: .4byte gBattleAnimArgs -_080A2758: .4byte gBattleAnimTarget -_080A275C: .4byte sub_80A2760 - thumb_func_end sub_80A26F0 - - thumb_func_start sub_80A2760 -sub_80A2760: @ 80A2760 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080A278A - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA - strh r0, [r4, 0x2E] - ldr r0, _080A2790 @ =sub_8074C44 - str r0, [r4, 0x1C] - ldr r1, _080A2794 @ =sub_80A2798 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080A278A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2790: .4byte sub_8074C44 -_080A2794: .4byte sub_80A2798 - thumb_func_end sub_80A2760 - - thumb_func_start sub_80A2798 -sub_80A2798: @ 80A2798 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3C - strh r0, [r4, 0x2E] - ldr r0, _080A27C8 @ =sub_8074C44 - str r0, [r4, 0x1C] - ldr r1, _080A27CC @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A27C8: .4byte sub_8074C44 -_080A27CC: .4byte DestroyAnimSprite - thumb_func_end sub_80A2798 - - thumb_func_start sub_80A27D0 -sub_80A27D0: @ 80A27D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075114 - ldr r5, _080A2814 @ =gBattleAnimArgs - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAnim - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080A27FA - ldrb r0, [r4, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] -_080A27FA: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldr r1, _080A2818 @ =sub_80A281C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2814: .4byte gBattleAnimArgs -_080A2818: .4byte sub_80A281C - thumb_func_end sub_80A27D0 - - thumb_func_start sub_80A281C -sub_80A281C: @ 80A281C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x32] - adds r1, 0x18 - strh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080A2870 - ldr r0, _080A286C @ =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 - b _080A2894 - .align 2, 0 -_080A286C: .4byte gBattleAnimTarget -_080A2870: - ldr r0, _080A28C0 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_8076884 - adds r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080A2884 - movs r2, 0x3 -_080A2884: - movs r0, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 -_080A2894: - strb r0, [r4, 0x5] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - 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 _080A28B8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A28B8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A28C0: .4byte gBattleAnimTarget - thumb_func_end sub_80A281C - - thumb_func_start sub_80A28C4 -sub_80A28C4: @ 80A28C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A28DE - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - bne _080A28E6 -_080A28DE: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080A2918 -_080A28E6: - ldr r0, _080A2904 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A2908 - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - b _080A2912 - .align 2, 0 -_080A2904: .4byte gBattleAnimTarget -_080A2908: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A2912: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A2918: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A28C4 - - thumb_func_start sub_80A2920 -sub_80A2920: @ 80A2920 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r5, _080A2968 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080A296C @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080A2970 @ =sub_80A2974 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2968: .4byte gBattleAnimArgs -_080A296C: .4byte gBattleAnimAttacker -_080A2970: .4byte sub_80A2974 - thumb_func_end sub_80A2920 - - thumb_func_start sub_80A2974 -sub_80A2974: @ 80A2974 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080A29E0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - 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 _080A29C0 - ldr r0, _080A29BC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - subs r0, 0x1 - b _080A29CA - .align 2, 0 -_080A29BC: .4byte gBattleAnimAttacker -_080A29C0: - ldr r0, _080A29DC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - adds r0, 0x1 -_080A29CA: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A29E6 - .align 2, 0 -_080A29DC: .4byte gBattleAnimAttacker -_080A29E0: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A29E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2974 - - thumb_func_start sub_80A29EC -sub_80A29EC: @ 80A29EC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r5, _080A2A34 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080A2A38 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080A2A3C @ =sub_80A2A40 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2A34: .4byte gBattleAnimArgs -_080A2A38: .4byte gBattleAnimAttacker -_080A2A3C: .4byte sub_80A2A40 - thumb_func_end sub_80A29EC - - thumb_func_start sub_80A2A40 -sub_80A2A40: @ 80A2A40 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080A2A98 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r1, [r4, 0x38] - adds r0, r1, 0 - subs r0, 0x3B - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bls _080A2A78 - adds r0, r1, 0 - subs r0, 0xBB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _080A2A8C -_080A2A78: - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - eors r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_080A2A8C: - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A2A9E -_080A2A98: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2A9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2A40 - - thumb_func_start sub_80A2AA4 -sub_80A2AA4: @ 80A2AA4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A2AE0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080A2AE4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldr r0, _080A2AE8 @ =sub_80A2AEC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2AE0: .4byte gBattleAnimAttacker -_080A2AE4: .4byte gBattleAnimArgs -_080A2AE8: .4byte sub_80A2AEC - thumb_func_end sub_80A2AA4 - - thumb_func_start sub_80A2AEC -sub_80A2AEC: @ 80A2AEC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x32] - movs r2, 0x32 - ldrsh r3, [r1, r2] - cmp r3, 0 - bne _080A2B20 - ldrh r0, [r1, 0x30] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _080A2B0E - movs r0, 0x80 - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] - strh r3, [r1, 0x32] - b _080A2B14 -_080A2B0E: - strh r2, [r1, 0x2E] - strh r2, [r1, 0x30] - strh r2, [r1, 0x32] -_080A2B14: - ldr r0, _080A2B1C @ =sub_80A2B38 - str r0, [r1, 0x1C] - b _080A2B34 - .align 2, 0 -_080A2B1C: .4byte sub_80A2B38 -_080A2B20: - subs r0, 0x1 - strh r0, [r1, 0x32] - ldrh r0, [r1, 0x2E] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] -_080A2B34: - pop {r0} - bx r0 - thumb_func_end sub_80A2AEC - - thumb_func_start sub_80A2B38 -sub_80A2B38: @ 80A2B38 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A2B58 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2B5C - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin - negs r0, r0 - b _080A2B66 - .align 2, 0 -_080A2B58: .4byte gBattleAnimAttacker -_080A2B5C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin -_080A2B66: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A2B86 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] -_080A2B86: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080A2B94 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2B94: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2B38 - - thumb_func_start sub_80A2B9C -sub_80A2B9C: @ 80A2B9C - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _080A2BF0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2BBC - ldr r1, _080A2BF4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A2BBC: - ldr r6, _080A2BF4 @ =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A2BFC - ldr r4, _080A2BF8 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - 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_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - b _080A2C1C - .align 2, 0 -_080A2BF0: .4byte gBattleAnimAttacker -_080A2BF4: .4byte gBattleAnimArgs -_080A2BF8: .4byte gBattleAnimTarget -_080A2BFC: - ldr r0, _080A2C48 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_8076D9C - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 -_080A2C1C: - strh r0, [r5, 0x36] - ldr r0, _080A2C4C @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_8075068 - ldr r0, _080A2C50 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, _080A2C48 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080A2C54 - movs r0, 0x1 - b _080A2C56 - .align 2, 0 -_080A2C48: .4byte gBattleAnimTarget -_080A2C4C: .4byte gBattleAnimArgs -_080A2C50: .4byte gBattleAnimAttacker -_080A2C54: - movs r0, 0 -_080A2C56: - strh r0, [r5, 0x2E] - ldr r0, _080A2C64 @ =sub_80A2C68 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2C64: .4byte sub_80A2C68 - thumb_func_end sub_80A2B9C - - thumb_func_start sub_80A2C68 -sub_80A2C68: @ 80A2C68 - push {r4-r7,lr} - adds r6, r0, 0 - movs r7, 0 - ldrh r5, [r6, 0x2E] - ldrh r4, [r6, 0x3C] - movs r0, 0x1 - strh r0, [r6, 0x2E] - adds r0, r6, 0 - bl AnimateBallThrow - ldrh r0, [r6, 0x3C] - strh r5, [r6, 0x2E] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0xC8 - ble _080A2C9A - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x37 - bgt _080A2C9A - ldrh r0, [r6, 0x6] - cmp r0, 0 - bne _080A2CA0 - adds r0, 0x1 - strh r0, [r6, 0x6] -_080A2C9A: - ldrh r0, [r6, 0x6] - cmp r0, 0 - beq _080A2CD2 -_080A2CA0: - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080A2CD2 - adds r3, r6, 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] - ldrh r0, [r6, 0x6] - adds r0, 0x1 - strh r0, [r6, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bne _080A2CD2 - movs r7, 0x1 -_080A2CD2: - movs r2, 0x20 - ldrsh r0, [r6, r2] - movs r2, 0x24 - ldrsh r1, [r6, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080A2CFC - movs r0, 0x22 - ldrsh r1, [r6, r0] - movs r2, 0x26 - ldrsh r0, [r6, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080A2CFC - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080A2CFE -_080A2CFC: - movs r7, 0x1 -_080A2CFE: - cmp r7, 0 - beq _080A2D08 - adds r0, r6, 0 - bl DestroyAnimSprite -_080A2D08: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A2C68 - - thumb_func_start sub_80A2D10 -sub_80A2D10: @ 80A2D10 - push {r4,lr} - adds r4, r0, 0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A2D3C - bl sub_8075290 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A2D3C - ldr r0, _080A2D64 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_8076D9C -_080A2D3C: - ldrh r0, [r4, 0x22] - adds r0, 0x20 - strh r0, [r4, 0x22] - ldr r1, _080A2D68 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x36] - ldr r0, _080A2D6C @ =sub_80A2D70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2D64: .4byte gBattleAnimTarget -_080A2D68: .4byte gBattleAnimArgs -_080A2D6C: .4byte sub_80A2D70 - thumb_func_end sub_80A2D10 - - thumb_func_start sub_80A2D70 -sub_80A2D70: @ 80A2D70 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bne _080A2D86 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - b _080A2D94 -_080A2D86: - cmp r0, 0 - ble _080A2D94 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - subs r0, r1, 0x2 - strh r0, [r4, 0x30] -_080A2D94: - ldrh r3, [r4, 0x32] - ldrh r5, [r4, 0x38] - adds r2, r3, r5 - strh r2, [r4, 0x38] - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r5, 0x36 - ldrsh r0, [r4, r5] - cmp r1, r0 - bge _080A2DAC - adds r0, r2, r3 - strh r0, [r4, 0x38] -_080A2DAC: - ldrh r1, [r4, 0x38] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r5, 0x38 - ldrsh r0, [r4, r5] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080A2DEC - ldr r0, _080A2DE8 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_8076884 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - b _080A2DFA - .align 2, 0 -_080A2DE8: .4byte gBattleAnimTarget -_080A2DEC: - ldr r0, _080A2E24 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_8076884 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 -_080A2DFA: - 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] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A2E1E - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2E1E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2E24: .4byte gBattleAnimTarget - thumb_func_end sub_80A2D70 - - thumb_func_start sub_80A2E28 -sub_80A2E28: @ 80A2E28 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8075114 - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r4, _080A2E5C @ =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x3C] - ldr r0, _080A2E60 @ =sub_80A2E64 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2E5C: .4byte gBattleAnimArgs -_080A2E60: .4byte sub_80A2E64 - thumb_func_end sub_80A2E28 - - thumb_func_start sub_80A2E64 -sub_80A2E64: @ 80A2E64 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A2E94 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A2E98 @ =0x0000ffff - cmp r1, r0 - bne _080A2E8E - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - bl GetAnimBankSpriteId - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x2E] - ldr r0, _080A2E9C @ =sub_80A2EA0 - str r0, [r4, 0x1C] -_080A2E8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2E94: .4byte gBattleAnimArgs -_080A2E98: .4byte 0x0000ffff -_080A2E9C: .4byte sub_80A2EA0 - thumb_func_end sub_80A2E64 - - thumb_func_start sub_80A2EA0 -sub_80A2EA0: @ 80A2EA0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl GetAnimBankSpriteId - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A2EB8 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - b _080A2EBC -_080A2EB8: - ldrh r0, [r4, 0x2E] - subs r0, 0xB -_080A2EBC: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080A2ED8 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x32] -_080A2ED8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A2F06 - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - cmp r0, 0 - ble _080A2F00 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAffineAnim - b _080A2F06 -_080A2F00: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2F06: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2EA0 - - thumb_func_start sub_80A2F0C -sub_80A2F0C: @ 80A2F0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A2F38 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080A2F3C - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080A2F62 - .align 2, 0 -_080A2F38: .4byte gSprites -_080A2F3C: - adds r0, r2, 0 - movs r1, 0x1 - bl sub_80758E0 - ldr r1, _080A2F68 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, _080A2F6C @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x8] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xA] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0x1E] - ldr r1, _080A2F70 @ =sub_80A2F74 - str r1, [r0] -_080A2F62: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2F68: .4byte gTasks -_080A2F6C: .4byte gBattleAnimArgs -_080A2F70: .4byte sub_80A2F74 - thumb_func_end sub_80A2F0C - - thumb_func_start sub_80A2F74 -sub_80A2F74: @ 80A2F74 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080A2FF4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - ldrh r0, [r4, 0x1C] - adds r1, r0 - strh r1, [r4, 0x1C] - ldr r2, _080A2FF8 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r2 - lsls r1, 16 - asrs r1, 24 - strh r1, [r5, 0x24] - ldr r0, _080A2FFC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2FBE - ldrh r0, [r5, 0x24] - negs r0, r0 - strh r0, [r5, 0x24] -_080A2FBE: - ldrh r0, [r4, 0x1E] - adds r0, 0x10 - strh r0, [r4, 0x1E] - movs r0, 0x1E - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - adds r0, r6, 0 - bl sub_8076440 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080A2FEC - strh r0, [r4, 0x8] - ldr r0, _080A3000 @ =sub_80A3004 - str r0, [r4] -_080A2FEC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2FF4: .4byte gTasks -_080A2FF8: .4byte gSprites -_080A2FFC: .4byte gBattleAnimTarget -_080A3000: .4byte sub_80A3004 - thumb_func_end sub_80A2F74 - - thumb_func_start sub_80A3004 -sub_80A3004: @ 80A3004 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080A3050 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A3054 @ =0x0000ffff - cmp r1, r0 - bne _080A3060 - ldr r0, _080A3058 @ =gTasks - lsls r2, r3, 2 - adds r1, r2, r3 - lsls r1, 3 - adds r6, r1, r0 - movs r1, 0x8 - ldrsh r5, [r6, r1] - adds r4, r0, 0 - cmp r5, 0 - bne _080A3074 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8075980 - ldr r1, _080A305C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x24] - strh r5, [r0, 0x26] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080A308E - .align 2, 0 -_080A3050: .4byte gBattleAnimArgs -_080A3054: .4byte 0x0000ffff -_080A3058: .4byte gTasks -_080A305C: .4byte gSprites -_080A3060: - ldr r1, _080A3094 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - movs r4, 0x8 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _080A308E -_080A3074: - adds r1, r2, r3 - lsls r1, 3 - adds r1, r4 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080A308E - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080A308E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3094: .4byte gTasks - thumb_func_end sub_80A3004 - - thumb_func_start sub_80A3098 -sub_80A3098: @ 80A3098 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A30AA - cmp r0, 0x1 - beq _080A3104 - b _080A3156 -_080A30AA: - ldr r6, _080A30FC @ =gBattleAnimTarget - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A30C2 - ldr r1, _080A3100 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_080A30C2: - ldrb r0, [r6] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A3100 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080A3156 - .align 2, 0 -_080A30FC: .4byte gBattleAnimTarget -_080A3100: .4byte gBattleAnimArgs -_080A3104: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A3156 - adds r0, r5, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - movs r0, 0x19 - strh r0, [r5, 0x2E] - ldr r4, _080A315C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080A3160 @ =sub_8075764 - str r0, [r5, 0x1C] - ldr r1, _080A3164 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A3156: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A315C: .4byte gBattleAnimAttacker -_080A3160: .4byte sub_8075764 -_080A3164: .4byte DestroyAnimSprite - thumb_func_end sub_80A3098 - - thumb_func_start sub_80A3168 -sub_80A3168: @ 80A3168 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A31D4 - ldr r4, _080A31E0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080A31E4 @ =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x24] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x26] - ldrb r0, [r4, 0x4] - adds r0, 0x1E - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r4, 0x6] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r2, 0x22 - ldrsh r0, [r5, r2] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - cmp r0, 0x78 - ble _080A31D4 - ldrh r0, [r5, 0x22] - adds r1, r0, 0 - subs r1, 0x78 - ldrh r2, [r5, 0x26] - adds r0, r2 - adds r1, r0 - strh r1, [r5, 0x22] -_080A31D4: - ldr r0, _080A31E8 @ =sub_80A32DC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A31E0: .4byte gBattleAnimAttacker -_080A31E4: .4byte gBattleAnimArgs -_080A31E8: .4byte sub_80A32DC - thumb_func_end sub_80A3168 - - thumb_func_start sub_80A31EC -sub_80A31EC: @ 80A31EC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - mov r9, r0 - ldr r4, _080A32C8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r6, _080A32CC @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8074480 - adds r2, r0, 0 - lsls r2, 24 - subs r4, r5 - lsls r4, 16 - lsrs r2, 24 - mov r1, r8 - subs r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsrs r3, r4, 16 - mov r10, r3 - asrs r4, 16 - ldr r6, _080A32D0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - muls r0, r4 - movs r1, 0x64 - str r2, [sp] - bl __divsi3 - adds r5, r0 - mov r3, r9 - strh r5, [r3, 0x20] - ldr r2, [sp] - lsls r0, r2, 16 - asrs r0, 16 - movs r3, 0 - ldrsh r1, [r6, r3] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - add r8, r0 - mov r1, r8 - mov r0, r9 - strh r1, [r0, 0x22] - ldrh r0, [r6, 0x2] - mov r3, r9 - strh r0, [r3, 0x24] - ldrh r0, [r6, 0x4] - strh r0, [r3, 0x26] - ldrb r0, [r6, 0x6] - adds r0, 0x1E - mov r1, r9 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0x8] - mov r0, r9 - bl StartSpriteAnim - ldrh r0, [r6, 0xA] - mov r1, r9 - strh r0, [r1, 0x32] - ldr r0, _080A32D4 @ =sub_80A32DC - str r0, [r1, 0x1C] - ldr r1, _080A32D8 @ =gUnknown_203999C - mov r3, r9 - ldrh r0, [r3, 0x20] - strh r0, [r1] - ldrh r0, [r3, 0x22] - strh r0, [r1, 0x2] - mov r0, r10 - strh r0, [r1, 0x4] - ldr r2, [sp] - strh r2, [r1, 0x6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A32C8: .4byte gBattleAnimAttacker -_080A32CC: .4byte gBattleAnimTarget -_080A32D0: .4byte gBattleAnimArgs -_080A32D4: .4byte sub_80A32DC -_080A32D8: .4byte gUnknown_203999C - thumb_func_end sub_80A31EC - - thumb_func_start sub_80A32DC -sub_80A32DC: @ 80A32DC - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - adds r1, 0x1 - strh r1, [r3, 0x2E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x32 - ldrsh r0, [r3, r2] - subs r0, 0xA - cmp r1, r0 - ble _080A331C - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - movs r2, 0x3E - adds r2, r3 - mov r12, r2 - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080A331C: - movs r2, 0x2E - ldrsh r1, [r3, r2] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r1, r0 - ble _080A332E - adds r0, r3, 0 - bl DestroyAnimSprite -_080A332E: - pop {r0} - bx r0 - thumb_func_end sub_80A32DC - - thumb_func_start sub_80A3334 -sub_80A3334: @ 80A3334 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A3374 - ldr r5, _080A33B0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A33B4 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r2, [r4] - adds r0, r2 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x30] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x34] -_080A3374: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] - ldrh r1, [r6, 0x30] - muls r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x2E - ldrsh r1, [r6, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0xFF - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080A33AA - adds r0, r6, 0 - bl DestroyAnimSprite -_080A33AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A33B0: .4byte gBattleAnimAttacker -_080A33B4: .4byte gBattleAnimArgs - thumb_func_end sub_80A3334 - - thumb_func_start sub_80A33B8 -sub_80A33B8: @ 80A33B8 - push {r4,r5,lr} - movs r2, 0x20 - ldrsh r4, [r0, r2] - lsls r4, 8 - movs r3, 0x22 - ldrsh r2, [r0, r3] - orrs r4, r2 - movs r5, 0x3A - ldrsh r2, [r0, r5] - lsls r2, 8 - movs r5, 0x3C - ldrsh r3, [r0, r5] - orrs r2, r3 - lsls r1, 8 - strh r4, [r0, 0x38] - strh r2, [r0, 0x3A] - strh r1, [r0, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A33B8 - - thumb_func_start sub_80A33E0 -sub_80A33E0: @ 80A33E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - ldrh r0, [r0, 0x38] - lsrs r1, r0, 8 - mov r10, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r1, r8 - ldrh r0, [r1, 0x3A] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r1, [r1, 0x3C] - lsls r0, r1, 16 - asrs r0, 24 - lsls r0, 16 - lsrs r6, r0, 16 - movs r3, 0xFF - ands r3, r1 - cmp r2, 0 - bne _080A341A - movs r2, 0x20 - negs r2, r2 - b _080A3422 -_080A341A: - cmp r2, 0xFF - bne _080A3422 - movs r2, 0x88 - lsls r2, 1 -_080A3422: - mov r0, r9 - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r10 - subs r0, r2, r1 - lsls r5, r3, 16 - asrs r5, 16 - muls r0, r5 - lsls r1, r6, 16 - asrs r7, r1, 16 - adds r1, r7, 0 - bl __divsi3 - adds r6, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r5 - adds r1, r7, 0 - bl __divsi3 - add r6, r10 - mov r1, r8 - strh r6, [r1, 0x20] - add r0, r9 - strh r0, [r1, 0x22] - adds r5, 0x1 - lsls r5, 16 - lsrs r3, r5, 16 - asrs r5, 16 - cmp r5, r7 - beq _080A3474 - lsls r1, r7, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r1 - mov r1, r8 - strh r0, [r1, 0x3C] - movs r0, 0 - b _080A3476 -_080A3474: - movs r0, 0x1 -_080A3476: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A33E0 - - thumb_func_start sub_80A3484 -sub_80A3484: @ 80A3484 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080A3498 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080A3498: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _080A34AC - adds r0, r4, 0 - bl DestroyAnimSprite -_080A34AC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A3484 - - thumb_func_start sub_80A34B4 -sub_80A34B4: @ 80A34B4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A34DE - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A34DE: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A350E - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080A3514 @ =sub_80A3484 - str r0, [r4, 0x1C] -_080A350E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A3514: .4byte sub_80A3484 - thumb_func_end sub_80A34B4 - - thumb_func_start sub_80A3518 -sub_80A3518: @ 80A3518 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r4, _080A3560 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A3564 @ =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080A3568 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x1 - b _080A357A - .align 2, 0 -_080A3560: .4byte gBattleAnimTarget -_080A3564: .4byte gBattleAnimAttacker -_080A3568: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x3 -_080A357A: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A358C @ =sub_80A34B4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A358C: .4byte sub_80A34B4 - thumb_func_end sub_80A3518 - - thumb_func_start sub_80A3590 -sub_80A3590: @ 80A3590 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A35BA - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A35BA: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A35EC - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - bl DestroyAnimSprite -_080A35EC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A3590 - - thumb_func_start sub_80A35F4 -sub_80A35F4: @ 80A35F4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080A3630 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A3638 - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80A33B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A3634 @ =sub_80A34B4 - b _080A3662 - .align 2, 0 -_080A3630: .4byte gBattleAnimTarget -_080A3634: .4byte sub_80A34B4 -_080A3638: - movs r0, 0xFF - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A3650 - movs r0, 0 - strh r0, [r5, 0x3A] -_080A3650: - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80A33B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A366C @ =sub_80A3590 -_080A3662: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A366C: .4byte sub_80A3590 - thumb_func_end sub_80A35F4 - - thumb_func_start sub_80A3670 -sub_80A3670: @ 80A3670 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A368A - adds r0, r4, 0 - movs r1, 0 - bl sub_8075114 - ldr r0, _080A36B0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x30] -_080A368A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - muls r0, r1 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A36AA - adds r0, r4, 0 - bl DestroyAnimSprite -_080A36AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A36B0: .4byte gBattleAnimArgs - thumb_func_end sub_80A3670 - - thumb_func_start sub_80A36B4 -sub_80A36B4: @ 80A36B4 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8075114 - ldr r4, _080A36FC @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A3700 @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080A3704 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x1 - b _080A3716 - .align 2, 0 -_080A36FC: .4byte gBattleAnimAttacker -_080A3700: .4byte gBattleAnimTarget -_080A3704: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x3 -_080A3716: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A3728 @ =sub_80A372C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3728: .4byte sub_80A372C - thumb_func_end sub_80A36B4 - - thumb_func_start sub_80A372C -sub_80A372C: @ 80A372C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A3756 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A3756: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bne _080A378A - movs r0, 0x3F - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_080A378A: - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A37B2 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080A37B8 @ =sub_80A3484 - str r0, [r4, 0x1C] - movs r0, 0x40 - negs r0, r0 - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_080A37B2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A37B8: .4byte sub_80A3484 - thumb_func_end sub_80A372C - - thumb_func_start sub_80A37BC -sub_80A37BC: @ 80A37BC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A3850 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A37E4 - ldr r0, _080A37E0 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - strh r1, [r4, 0x30] - movs r1, 0x78 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080A3806 - .align 2, 0 -_080A37E0: .4byte gBattleAnimArgs -_080A37E4: - ldr r0, _080A3840 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r3, [r0, r1] - adds r1, r3, 0 - subs r1, 0x20 - adds r2, r1, 0 - adds r5, r0, 0 - cmp r1, 0 - bge _080A37FA - adds r2, r3, 0 - adds r2, 0xDF -_080A37FA: - asrs r0, r2, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - movs r0, 0x46 - strh r0, [r4, 0x20] -_080A3806: - ldrh r0, [r5] - strh r0, [r4, 0x22] - strh r0, [r4, 0x32] - movs r0, 0x14 - strh r0, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - ldr r0, _080A3844 @ =sub_80A3858 - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080A3848 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080A384E - .align 2, 0 -_080A3840: .4byte gBattleAnimArgs -_080A3844: .4byte sub_80A3858 -_080A3848: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080A384E: - strb r0, [r1] -_080A3850: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A37BC - - thumb_func_start sub_80A3858 -sub_80A3858: @ 80A3858 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A386A - cmp r0, 0x1 - beq _080A389A - b _080A38BA -_080A386A: - ldrh r5, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x4E - ble _080A3882 - movs r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080A38BA -_080A3882: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - adds r0, r5, r0 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x36] - adds r1, 0x3 - strh r1, [r4, 0x36] - strh r0, [r4, 0x22] - b _080A38BA -_080A389A: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A38BA - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A38BA - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x32] - ldr r0, _080A38C0 @ =sub_80A38C4 - str r0, [r4, 0x1C] -_080A38BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A38C0: .4byte sub_80A38C4 - thumb_func_end sub_80A3858 - - thumb_func_start sub_80A38C4 -sub_80A38C4: @ 80A38C4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080A3908 @ =gUnknown_83E2F78 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r3, r0, r1 - adds r0, r5, 0x1 - adds r0, r3, r0 - ldrh r2, [r4, 0x32] - movs r6, 0x32 - ldrsh r1, [r4, r6] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080A3910 - adds r0, r5, 0x2 - adds r0, r3, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x7F - bne _080A38FC - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080A390C @ =sub_80A397C - str r0, [r4, 0x1C] -_080A38FC: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A3976 - .align 2, 0 -_080A3908: .4byte gUnknown_83E2F78 -_080A390C: .4byte sub_80A397C -_080A3910: - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - adds r1, r0, r5 - movs r2, 0 - ldrsb r2, [r1, r2] - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - muls r0, r2 - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A395E - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080A3956 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080A395C -_080A3956: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080A395C: - strb r0, [r1] -_080A395E: - movs r6, 0x30 - ldrsh r0, [r4, r6] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] -_080A3976: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A38C4 - - thumb_func_start sub_80A397C -sub_80A397C: @ 80A397C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080A398E - adds r0, r4, 0 - bl DestroyAnimSprite -_080A398E: - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A397C - - thumb_func_start sub_80A39C0 -sub_80A39C0: @ 80A39C0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A3B14 @ =gTasks - adds r5, r0, r1 - ldr r4, _080A3B18 @ =gBattleAnimTarget - ldrb r0, [r4] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - strh r0, [r5, 0x10] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8076B2C - strh r0, [r5, 0x1C] - ldrb r0, [r4] - movs r1, 0 - bl sub_8076B2C - strh r0, [r5, 0x1E] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0x1 - bne _080A3A28 - movs r1, 0x1 -_080A3A28: - strh r1, [r5, 0x12] - movs r3, 0x12 - ldrsh r0, [r5, r3] - lsls r0, 6 - movs r1, 0x38 - subs r1, r0 - strh r1, [r5, 0x1A] - ldrh r0, [r5, 0x16] - subs r0, r1 - ldrh r1, [r5, 0x14] - adds r0, r1 - strh r0, [r5, 0x18] - ldr r0, _080A3B1C @ =gUnknown_83E2FF0 - movs r2, 0x18 - ldrsh r1, [r5, r2] - movs r3, 0x1A - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xC] - cmp r0, 0x40 - bne _080A3A60 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A3A60: - ldr r4, _080A3B20 @ =gSprites - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA - strh r1, [r0, 0x2E] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x18] - strh r1, [r0, 0x30] - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - movs r1, 0x1C - ldrsh r0, [r5, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r5, r3] - muls r1, r0 - ldrh r0, [r5, 0x14] - subs r0, r1 - strh r0, [r2, 0x32] - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x1A] - strh r1, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x1E - ldrsh r0, [r5, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r2, [r5, r3] - muls r0, r2 - ldrh r2, [r5, 0x16] - adds r0, r2 - strh r0, [r1, 0x36] - movs r3, 0xC - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_80A3F04 - movs r1, 0xC - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x38] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_8075068 - ldr r0, _080A3B24 @ =sub_80A3B28 - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3B14: .4byte gTasks -_080A3B18: .4byte gBattleAnimTarget -_080A3B1C: .4byte gUnknown_83E2FF0 -_080A3B20: .4byte gSprites -_080A3B24: .4byte sub_80A3B28 - thumb_func_end sub_80A39C0 - - thumb_func_start sub_80A3B28 -sub_80A3B28: @ 80A3B28 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A3B6C @ =gTasks - adds r6, r0, r1 - movs r0, 0xC - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A3B70 @ =gSprites - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r5, [r6, r1] - cmp r5, 0x7 - bne _080A3B50 - b _080A3D80 -_080A3B50: - cmp r5, 0x7 - bgt _080A3B9E - cmp r5, 0x3 - bne _080A3B5A - b _080A3C72 -_080A3B5A: - cmp r5, 0x3 - bgt _080A3B74 - cmp r5, 0x1 - beq _080A3C04 - cmp r5, 0x1 - bgt _080A3C54 - cmp r5, 0 - beq _080A3BE6 - b _080A3EFC - .align 2, 0 -_080A3B6C: .4byte gTasks -_080A3B70: .4byte gSprites -_080A3B74: - cmp r5, 0x5 - bne _080A3B7A - b _080A3CE8 -_080A3B7A: - cmp r5, 0x5 - ble _080A3B80 - b _080A3D62 -_080A3B80: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - bne _080A3B96 - b _080A3EFC -_080A3B96: - movs r0, 0x5 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3B9E: - cmp r5, 0xB - bne _080A3BA4 - b _080A3E64 -_080A3BA4: - cmp r5, 0xB - bgt _080A3BD2 - cmp r5, 0x9 - bne _080A3BAE - b _080A3DD2 -_080A3BAE: - cmp r5, 0x9 - ble _080A3BB4 - b _080A3E48 -_080A3BB4: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - bne _080A3BCA - b _080A3EFC -_080A3BCA: - movs r0, 0x9 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3BD2: - cmp r5, 0xD - bne _080A3BD8 - b _080A3ED6 -_080A3BD8: - cmp r5, 0xD - bge _080A3BDE - b _080A3EB6 -_080A3BDE: - cmp r5, 0xFF - bne _080A3BE4 - b _080A3EE6 -_080A3BE4: - b _080A3EFC -_080A3BE6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - bne _080A3BFC - b _080A3EFC -_080A3BFC: - movs r0, 0x1 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3C04: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r0, [r6, 0x10] - adds r0, 0x2 - strh r0, [r6, 0x10] - strh r5, [r6, 0xE] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3C54: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - bne _080A3C6A - b _080A3EFC -_080A3C6A: - movs r0, 0x3 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3C72: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r1, r0 - ldrh r0, [r6, 0x16] - subs r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - movs r0, 0x2 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3CE8: - ldrh r1, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r1, r3 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r2, 0x1E - ldrsh r0, [r6, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x16] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x3 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3D62: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - bne _080A3D78 - b _080A3EFC -_080A3D78: - movs r0, 0x7 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3D80: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - adds r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x4 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3DD2: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r0, r1 - ldrh r3, [r6, 0x16] - adds r0, r3 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - movs r0, 0x5 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3E48: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080A3EFC - movs r0, 0xB - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3E64: - ldrh r2, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r2, r0 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x18] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x1A] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x6 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_8075068 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3EB6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080A3EFC - adds r0, r4, 0 - bl DestroySprite - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3ED6: - movs r1, 0x20 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A3EFC - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A3EFC -_080A3EE6: - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A3EFC - movs r0, 0 - strh r0, [r6, 0xA] - ldrh r0, [r6, 0x26] -_080A3EFA: - strh r0, [r6, 0x8] -_080A3EFC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A3B28 - - thumb_func_start sub_80A3F04 -sub_80A3F04: @ 80A3F04 - push {lr} - movs r2, 0x8 - movs r3, 0x36 - ldrsh r1, [r0, r3] - movs r3, 0x22 - ldrsh r0, [r0, r3] - cmp r1, r0 - bge _080A3F1A - negs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 -_080A3F1A: - lsls r0, r2, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80A3F04 - - thumb_func_start sub_80A3F24 -sub_80A3F24: @ 80A3F24 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _080A3FBA - movs r0, 0 - strh r0, [r6, 0x24] - ldr r0, _080A3FC4 @ =gSprites - mov r8, r0 - movs r2, 0xC - ldrsh r1, [r6, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - ldrh r2, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r2, r0 - ldr r0, _080A3FC8 @ =gUnknown_83E2FF0 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r3, [r6, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080A3FBA - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - mov r0, r8 - adds r4, r5, r0 - strh r7, [r4, 0x3A] - movs r0, 0xC - strh r0, [r4, 0x3C] - ldr r0, _080A3FCC @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldrh r2, [r6, 0x22] - movs r0, 0x1 - ands r0, r2 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r6, 0x10] - adds r4, 0x43 - strb r0, [r4] - mov r0, r8 - adds r0, 0x1C - adds r5, r0 - ldr r0, _080A3FD0 @ =sub_80A3FD4 - str r0, [r5] -_080A3FBA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A3FC4: .4byte gSprites -_080A3FC8: .4byte gUnknown_83E2FF0 -_080A3FCC: .4byte gTasks -_080A3FD0: .4byte sub_80A3FD4 - thumb_func_end sub_80A3F24 - - thumb_func_start sub_80A3FD4 -sub_80A3FD4: @ 80A3FD4 - 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, 0x1 - ble _080A4036 - movs r0, 0 - strh r0, [r4, 0x2E] - 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] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A4036 - ldr r3, _080A403C @ =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 -_080A4036: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A403C: .4byte gTasks - thumb_func_end sub_80A3FD4 - - thumb_func_start sub_80A4040 -sub_80A4040: @ 80A4040 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080A4054 @ =gBattleAnimArgs - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A405C - ldr r0, _080A4058 @ =gBattleAnimAttacker - b _080A405E - .align 2, 0 -_080A4054: .4byte gBattleAnimArgs -_080A4058: .4byte gBattleAnimAttacker -_080A405C: - ldr r0, _080A407C @ =gBattleAnimTarget -_080A405E: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4088 - movs r0, 0 - strh r0, [r4, 0x36] - ldr r1, _080A4080 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x32] - ldr r0, _080A4084 @ =0x0000fff0 - b _080A4098 - .align 2, 0 -_080A407C: .4byte gBattleAnimTarget -_080A4080: .4byte gBattleAnimArgs -_080A4084: .4byte 0x0000fff0 -_080A4088: - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r1, _080A40BC @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r4, 0x32] - movs r0, 0x80 - lsls r0, 1 -_080A4098: - strh r0, [r4, 0x20] - adds r7, r1, 0 - adds r5, r7, 0 - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x34] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A40CE - cmp r0, 0x1 - bgt _080A40C0 - cmp r0, 0 - beq _080A40CA - b _080A4138 - .align 2, 0 -_080A40BC: .4byte gBattleAnimArgs -_080A40C0: - cmp r0, 0x2 - beq _080A40D4 - cmp r0, 0x3 - beq _080A4100 - b _080A4138 -_080A40CA: - ldrh r0, [r5] - b _080A40E4 -_080A40CE: - ldrh r0, [r5] - strh r0, [r4, 0x22] - b _080A411A -_080A40D4: - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5] - adds r0, r5 -_080A40E4: - strh r0, [r4, 0x22] - adds r0, r6, 0 - 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 _080A4138 -_080A4100: - ldr r0, _080A4144 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r7, [r7] - adds r0, r7 - strh r0, [r4, 0x22] - movs r0, 0x1 - bl GetAnimBankSpriteId -_080A411A: - adds r0, r6, 0 - 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] -_080A4138: - ldr r0, _080A4148 @ =sub_80A414C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4144: .4byte gBattleAnimTarget -_080A4148: .4byte sub_80A414C - thumb_func_end sub_80A4040 - - thumb_func_start sub_80A414C -sub_80A414C: @ 80A414C - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x3C - ldrsh r3, [r4, r0] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x30 - ldrsh r2, [r4, r1] - ldr r1, _080A41A0 @ =gSineTable - movs r5, 0x2E - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - muls r0, r2 - asrs r0, 8 - strh r0, [r4, 0x26] - movs r2, 0x32 - ldrsh r0, [r4, r2] - muls r0, r3 - strh r0, [r4, 0x24] - movs r5, 0x34 - ldrsh r0, [r4, r5] - muls r0, r3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A41A4 - movs r2, 0x24 - ldrsh r0, [r4, r2] - movs r5, 0x20 - ldrsh r1, [r4, r5] - adds r0, r1 - cmp r0, 0xF7 - ble _080A41BC - b _080A41B6 - .align 2, 0 -_080A41A0: .4byte gSineTable -_080A41A4: - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x20 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bgt _080A41BC -_080A41B6: - adds r0, r4, 0 - bl move_anim_8074EE0 -_080A41BC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A414C - - thumb_func_start sub_80A41C4 -sub_80A41C4: @ 80A41C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A41E4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A41E8 - cmp r0, 0x1 - beq _080A421C - b _080A4276 - .align 2, 0 -_080A41E4: .4byte gTasks -_080A41E8: - ldr r0, _080A4214 @ =0x0000274f - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r2, 0x80 - lsls r2, 1 - adds r4, r2, 0 - adds r0, r4 - strh r0, [r5, 0x18] - ldr r0, _080A4218 @ =0x000027b0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - adds r0, r4 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080A4276 - .align 2, 0 -_080A4214: .4byte 0x0000274f -_080A4218: .4byte 0x000027b0 -_080A421C: - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x1A] - lsls r0, 16 - cmp r0, 0 - blt _080A4276 - strh r7, [r5, 0x1A] - ldrh r0, [r5, 0x18] - ldrb r2, [r5, 0x1C] - ldr r4, _080A4290 @ =gUnknown_83E30F0 - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x20] - ldrb r2, [r5, 0x1C] - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x11 - bne _080A4276 - strh r7, [r5, 0x1C] - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bne _080A4276 - strh r7, [r5, 0x1E] -_080A4276: - ldr r0, _080A4294 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A428A - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A428A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4290: .4byte gUnknown_83E30F0 -_080A4294: .4byte gBattleAnimArgs - thumb_func_end sub_80A41C4 - - thumb_func_start sub_80A4298 -sub_80A4298: @ 80A4298 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, _080A42B0 @ =gBattleAnimArgs - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A42B4 - adds r0, r6, 0 - bl DestroyAnimSprite - b _080A438E - .align 2, 0 -_080A42B0: .4byte gBattleAnimArgs -_080A42B4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080A42C4 - ldr r4, _080A42C0 @ =gBattleAnimAttacker - b _080A42C6 - .align 2, 0 -_080A42C0: .4byte gBattleAnimAttacker -_080A42C4: - ldr r4, _080A4300 @ =gBattleAnimTarget -_080A42C6: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A4304 @ =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r6, 0x2E] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r7, r0, 0 - cmp r1, 0 - bne _080A4308 - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x20] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x22] - strh r5, [r6, 0x38] - strh r2, [r6, 0x3A] - b _080A4318 - .align 2, 0 -_080A4300: .4byte gBattleAnimTarget -_080A4304: .4byte gBattleAnimArgs -_080A4308: - strh r5, [r6, 0x20] - strh r2, [r6, 0x22] - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x38] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x3A] -_080A4318: - ldrh r4, [r6, 0x20] - lsls r0, r4, 4 - strh r0, [r6, 0x30] - ldrh r5, [r6, 0x22] - lsls r0, r5, 4 - strh r0, [r6, 0x32] - movs r1, 0x38 - ldrsh r0, [r6, r1] - movs r2, 0x20 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x34] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x22 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x38] - subs r0, r4 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r6, 0x3A] - subs r1, r5 - lsls r1, 16 - asrs r1, 16 - bl sub_8075B30 - lsls r0, 16 - lsrs r4, r0, 16 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A437A - ldr r1, _080A4398 @ =0xffff8000 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080A437A: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r6, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8075A1C - ldr r0, _080A439C @ =sub_80A43A0 - str r0, [r6, 0x1C] -_080A438E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4398: .4byte 0xffff8000 -_080A439C: .4byte sub_80A43A0 - thumb_func_end sub_80A4298 - - thumb_func_start sub_80A43A0 -sub_80A43A0: @ 80A43A0 - push {r4,lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _080A43D0 - ldrh r0, [r2, 0x34] - ldrh r4, [r2, 0x30] - adds r0, r4 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r4, [r2, 0x32] - adds r1, r4 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r2, 0x22] - subs r0, r3, 0x1 - strh r0, [r2, 0x2E] - b _080A43D6 -_080A43D0: - adds r0, r2, 0 - bl move_anim_8074EE0 -_080A43D6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A43A0 - - thumb_func_start sub_80A43DC -sub_80A43DC: @ 80A43DC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A43F2 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A43F2: - pop {r0} - bx r0 - thumb_func_end sub_80A43DC - - thumb_func_start sub_80A43F8 -sub_80A43F8: @ 80A43F8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A4418 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4420 - ldr r2, _080A441C @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - b _080A442C - .align 2, 0 -_080A4418: .4byte gBattleAnimAttacker -_080A441C: .4byte gBattleAnimArgs -_080A4420: - ldr r0, _080A4444 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_080A442C: - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080A4448 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldr r1, _080A444C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4444: .4byte gBattleAnimArgs -_080A4448: .4byte sub_8074F6C -_080A444C: .4byte DestroyAnimSprite - thumb_func_end sub_80A43F8 - - thumb_func_start sub_80A4450 -sub_80A4450: @ 80A4450 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A4488 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A446A - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A446A: - ldr r0, _080A448C @ =sub_80A43DC - str r0, [r5, 0x1C] - ldr r4, _080A4490 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4488: .4byte gBattleAnimAttacker -_080A448C: .4byte sub_80A43DC -_080A4490: .4byte gBattleAnimArgs - thumb_func_end sub_80A4450 - - thumb_func_start sub_80A4494 -sub_80A4494: @ 80A4494 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080A44D4 @ =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, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldrb r1, [r1, 0xC] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldr r1, _080A44D8 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A44DC @ =sub_8074E70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A44D4: .4byte gBattleAnimArgs -_080A44D8: .4byte move_anim_8074EE0 -_080A44DC: .4byte sub_8074E70 - thumb_func_end sub_80A4494 - - thumb_func_start sub_80A44E0 -sub_80A44E0: @ 80A44E0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080A4530 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4514 - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] -_080A4514: - ldr r0, _080A4534 @ =sub_80A46CC - str r0, [r5, 0x1C] - ldr r0, _080A4538 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080A453C - ldrh r0, [r3] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - b _080A4550 - .align 2, 0 -_080A4530: .4byte gBattleAnimTarget -_080A4534: .4byte sub_80A46CC -_080A4538: .4byte gBattleAnimArgs -_080A453C: - ldrh r0, [r5, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r5, 0x20] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080A4550: - ldrh r0, [r3, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldr r1, _080A4584 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r5, 0x30] - adds r1, r0, r2 - strh r1, [r5, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A457E - negs r0, r1 - strh r0, [r5, 0x30] -_080A457E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4584: .4byte 0xfffffc00 - thumb_func_end sub_80A44E0 - - thumb_func_start sub_80A4588 -sub_80A4588: @ 80A4588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r0, _080A45A4 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080A45A8 - cmp r0, 0x1 - ble _080A4624 - cmp r0, 0x2 - beq _080A45C8 - b _080A4624 - .align 2, 0 -_080A45A4: .4byte gBattleAnimArgs -_080A45A8: - ldr r5, _080A45C4 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - eors r4, r0 - adds r0, r4, 0 - b _080A4634 - .align 2, 0 -_080A45C4: .4byte gBattleAnimTarget -_080A45C8: - ldr r5, _080A4620 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - movs r2, 0x2 - mov r8, r2 - mov r1, r8 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A463E - ldrb r0, [r5] - mov r2, r8 - eors r0, r2 - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - lsrs r7, r0, 1 - ldrb r0, [r5] - mov r1, r8 - eors r0, r1 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - lsrs r4, r0, 1 - b _080A463E - .align 2, 0 -_080A4620: .4byte gBattleAnimTarget -_080A4624: - ldr r4, _080A4670 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] -_080A4634: - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r4, r0, 24 -_080A463E: - strh r7, [r6, 0x20] - strh r4, [r6, 0x22] - ldr r0, _080A4670 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4656 - ldrh r0, [r6, 0x22] - adds r0, 0x8 - strh r0, [r6, 0x22] -_080A4656: - ldr r0, _080A4674 @ =sub_80A46CC - str r0, [r6, 0x1C] - ldr r0, _080A4678 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080A467C - ldrh r0, [r3] - ldrh r1, [r6, 0x20] - adds r0, r1 - strh r0, [r6, 0x20] - b _080A4690 - .align 2, 0 -_080A4670: .4byte gBattleAnimTarget -_080A4674: .4byte sub_80A46CC -_080A4678: .4byte gBattleAnimArgs -_080A467C: - ldrh r0, [r6, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r6, 0x20] - adds r2, r6, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080A4690: - ldrh r0, [r3, 0x2] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r6, 0x22] - ldr r1, _080A46C8 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r6, 0x30] - adds r1, r0, r2 - strh r1, [r6, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r6, 0x32] - adds r0, r2 - strh r0, [r6, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r6, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A46BE - negs r0, r1 - strh r0, [r6, 0x30] -_080A46BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A46C8: .4byte 0xfffffc00 - thumb_func_end sub_80A4588 - - thumb_func_start sub_80A46CC -sub_80A46CC: @ 80A46CC - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A46EE - adds r0, r1, 0 - adds r0, 0x18 - b _080A46F2 -_080A46EE: - adds r0, r1, 0 - subs r0, 0x18 -_080A46F2: - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - subs r0, 0x18 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080A4728 - ldr r1, _080A4730 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - movs r0, 0x3 - strh r0, [r4, 0x2E] - ldr r0, _080A4734 @ =sub_8074C44 - str r0, [r4, 0x1C] -_080A4728: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4730: .4byte DestroyAnimSprite -_080A4734: .4byte sub_8074C44 - thumb_func_end sub_80A46CC - - thumb_func_start sub_80A4738 -sub_80A4738: @ 80A4738 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x32] - movs r2, 0x32 - ldrsh r0, [r5, r2] - cmp r0, 0x1 - ble _080A47DC - ldrh r1, [r5, 0x34] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4794 - adds r3, r5, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r3] - ldr r4, _080A4790 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r3, [r0] - adds r1, r2, 0 - ands r1, r3 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - b _080A47CA - .align 2, 0 -_080A4790: .4byte gSprites -_080A4794: - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r3, _080A47D8 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] -_080A47CA: - movs r0, 0 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - b _080A47E0 - .align 2, 0 -_080A47D8: .4byte gSprites -_080A47DC: - adds r0, r1, 0x1 - strh r0, [r5, 0x32] -_080A47E0: - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0xA - bne _080A4810 - movs r2, 0x2E - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080A4818 @ =gSprites - adds r0, r4 - bl DestroySprite - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - adds r0, r5, 0 - bl DestroyAnimSprite -_080A4810: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4818: .4byte gSprites - thumb_func_end sub_80A4738 - - thumb_func_start sub_80A481C -sub_80A481C: @ 80A481C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080A483C @ =gBattleAnimArgs - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080A4840 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4844 - ldrh r0, [r5, 0x20] - ldrh r1, [r4] - subs r0, r1 - b _080A484A - .align 2, 0 -_080A483C: .4byte gBattleAnimArgs -_080A4840: .4byte gBattleAnimAttacker -_080A4844: - ldrh r0, [r4] - ldrh r1, [r5, 0x20] - adds r0, r1 -_080A484A: - strh r0, [r5, 0x20] - ldr r4, _080A4878 @ =gBattleAnimArgs - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x34] - ldr r1, _080A487C @ =sub_80A4880 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4878: .4byte gBattleAnimArgs -_080A487C: .4byte sub_80A4880 - thumb_func_end sub_80A481C - - thumb_func_start sub_80A4880 -sub_80A4880: @ 80A4880 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080A48AC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0 - b _080A48B2 -_080A48AC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0xE -_080A48B2: - strb r0, [r1] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x82 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080A48E8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A48E8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4880 - - thumb_func_start sub_80A48F0 -sub_80A48F0: @ 80A48F0 - push {r4-r6,lr} - adds r5, r0, 0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A4906 - ldr r1, _080A4964 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - adds r0, 0x8 - strh r0, [r1, 0x2] -_080A4906: - ldr r6, _080A4968 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0 - bl sub_8074844 - lsls r0, 24 - ldr r4, _080A4964 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4944 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A496C -_080A4944: - ldrb r0, [r6] - bl sub_8076884 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - b _080A4984 - .align 2, 0 -_080A4964: .4byte gBattleAnimArgs -_080A4968: .4byte gBattleAnimAttacker -_080A496C: - ldrb r0, [r6] - 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] -_080A4984: - ldr r0, _080A49C8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080A49CC @ =0x00002828 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r5, 0x32] - movs r4, 0x10 - movs r0, 0x10 - strh r0, [r5, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r5, 0x3C] - lsls r1, r0, 8 - subs r4, r0 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A49D0 @ =sub_80A49D4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A49C8: .4byte gBattleAnimArgs -_080A49CC: .4byte 0x00002828 -_080A49D0: .4byte sub_80A49D4 - thumb_func_end sub_80A48F0 - - thumb_func_start sub_80A49D4 -sub_80A49D4: @ 80A49D4 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x60 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4A32 - movs r0, 0 - strh r0, [r4, 0x30] - ldr r1, _080A4A7C @ =gPlttBufferFaded - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - movs r2, 0 - adds r6, r1, 0 - adds r3, r6, 0 -_080A4A0C: - movs r1, 0x32 - ldrsh r0, [r4, r1] - adds r2, 0x1 - adds r0, r2 - lsls r1, r0, 1 - adds r1, r3 - adds r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - cmp r2, 0x5 - ble _080A4A0C - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x7 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_080A4A32: - ldrh r2, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x6 - ble _080A4A6C - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _080A4A80 - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4A6C - movs r0, 0 - strh r0, [r4, 0x3A] - subs r2, 0x1 - strh r2, [r4, 0x3C] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_080A4A6C: - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4A80 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080A4AC2 - .align 2, 0 -_080A4A7C: .4byte gPlttBufferFaded -_080A4A80: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4AC2 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r2, 0x1 - strh r2, [r4, 0x3C] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A4AC2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080A4AC8 @ =sub_8074F88 - str r0, [r4, 0x1C] -_080A4AC2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4AC8: .4byte sub_8074F88 - thumb_func_end sub_80A49D4 - - thumb_func_start sub_80A4ACC -sub_80A4ACC: @ 80A4ACC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A4B2C @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A4B30 @ =0x0000ffe8 - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - strh r5, [r4, 0x3A] - movs r0, 0x10 - strh r0, [r4, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A4B34 @ =sub_80A4B38 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4B2C: .4byte gBattleAnimTarget -_080A4B30: .4byte 0x0000ffe8 -_080A4B34: .4byte sub_80A4B38 - thumb_func_end sub_80A4ACC - - thumb_func_start sub_80A4B38 -sub_80A4B38: @ 80A4B38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080A4B46 - b _080A4C90 -_080A4B46: - lsls r0, 2 - ldr r1, _080A4B50 @ =_080A4B54 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A4B50: .4byte _080A4B54 - .align 2, 0 -_080A4B54: - .4byte _080A4B68 - .4byte _080A4BCC - .4byte _080A4BE8 - .4byte _080A4C66 - .4byte _080A4C7A -_080A4B68: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bgt _080A4B76 - b _080A4C90 -_080A4B76: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4B98 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080A4BA6 - adds r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080A4BA6 -_080A4B98: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4BA6 - subs r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080A4BA6: - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A4C90 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A4C90 - strh r0, [r4, 0x30] - b _080A4C72 -_080A4BCC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A4C90 - movs r0, 0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080A4C72 -_080A4BE8: - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x4 - bl sub_80A4C98 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A4C0A - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080A4C0A: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080A4C90 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080A4C30 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4C3E - subs r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080A4C3E -_080A4C30: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080A4C3E - adds r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080A4C3E: - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x3A - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _080A4C90 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _080A4C90 - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - b _080A4C72 -_080A4C66: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080A4C72: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A4C90 -_080A4C7A: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080A4C90: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4B38 - - thumb_func_start sub_80A4C98 -sub_80A4C98: @ 80A4C98 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0xB - bgt _080A4CAA - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080A4CAA: - ldrh r5, [r4, 0x34] - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - cmp r0, 0x17 - bhi _080A4CC0 - ldrh r0, [r4, 0x36] - subs r0, 0x2 - strh r0, [r4, 0x36] -_080A4CC0: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x2F - ble _080A4CCE - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080A4CCE: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0x9 - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bge _080A4CF4 - movs r1, 0x26 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x26] -_080A4CF4: - adds r0, r5, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3B - ble _080A4D04 - movs r0, 0 - strh r0, [r4, 0x34] -_080A4D04: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A4C98 - - thumb_func_start sub_80A4D0C -sub_80A4D0C: @ 80A4D0C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A4D50 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A4D20 - adds r0, r4, 0 - bl sub_8074FCC -_080A4D20: - 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, 0xA] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldr r1, _080A4D54 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A4D58 @ =sub_8074D00 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4D50: .4byte gBattleAnimArgs -_080A4D54: .4byte DestroyAnimSprite -_080A4D58: .4byte sub_8074D00 - thumb_func_end sub_80A4D0C - - thumb_func_start sub_80A4D5C -sub_80A4D5C: @ 80A4D5C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080A4D70 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A4D78 - ldr r0, _080A4D74 @ =gBattleAnimAttacker - b _080A4D7A - .align 2, 0 -_080A4D70: .4byte gBattleAnimArgs -_080A4D74: .4byte gBattleAnimAttacker -_080A4D78: - ldr r0, _080A4DBC @ =gBattleAnimTarget -_080A4D7A: - ldrb r6, [r0] - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _080A4DC4 - movs r1, 0x2 - adds r0, r6, 0 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A4DC4 - ldr r4, _080A4DC0 @ =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - adds r0, r6, 0 - bl sub_8076D9C - movs r2, 0 - ldrsh r1, [r4, r2] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - b _080A4E14 - .align 2, 0 -_080A4DBC: .4byte gBattleAnimTarget -_080A4DC0: .4byte gBattleAnimArgs -_080A4DC4: - ldr r4, _080A4DE4 @ =gBattleAnimArgs - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A4DE8 - adds r0, r6, 0 - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - b _080A4DFA - .align 2, 0 -_080A4DE4: .4byte gBattleAnimArgs -_080A4DE8: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 -_080A4DFA: - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldr r0, _080A4E34 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8074FF8 -_080A4E14: - ldr r1, _080A4E34 @ =gBattleAnimArgs - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x32] - ldr r1, _080A4E38 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A4E3C @ =sub_8074D00 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4E34: .4byte gBattleAnimArgs -_080A4E38: .4byte DestroyAnimSprite -_080A4E3C: .4byte sub_8074D00 - thumb_func_end sub_80A4D5C - - thumb_func_start sub_80A4E40 -sub_80A4E40: @ 80A4E40 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _080A4E6C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4E74 - ldr r0, _080A4E70 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - b _080A4E8E - .align 2, 0 -_080A4E6C: .4byte gBattleAnimAttacker -_080A4E70: .4byte gBattleAnimArgs -_080A4E74: - ldr r2, _080A4E98 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A4E8E: - ldr r0, _080A4E9C @ =sub_80A4EA0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4E98: .4byte gBattleAnimArgs -_080A4E9C: .4byte sub_80A4EA0 - thumb_func_end sub_80A4E40 - - thumb_func_start sub_80A4EA0 -sub_80A4EA0: @ 80A4EA0 - 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, 0x1E - ble _080A4ED8 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x1E - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r4, 0x26] - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 18 - asrs r0, 16 - movs r1, 0x3 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080A4ED8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A4EEC - adds r0, r4, 0 - bl DestroyAnimSprite -_080A4EEC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4EA0 - - thumb_func_start sub_80A4EF4 -sub_80A4EF4: @ 80A4EF4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _080A4F24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4F2C - ldr r1, _080A4F28 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x1 - strh r0, [r4, 0x34] - b _080A4F4A - .align 2, 0 -_080A4F24: .4byte gBattleAnimAttacker -_080A4F28: .4byte gBattleAnimArgs -_080A4F2C: - ldr r2, _080A4F54 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldr r0, _080A4F58 @ =0x0000ffff - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080A4F4A: - ldr r0, _080A4F5C @ =sub_80A4F60 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4F54: .4byte gBattleAnimArgs -_080A4F58: .4byte 0x0000ffff -_080A4F5C: .4byte sub_80A4F60 - thumb_func_end sub_80A4EF4 - - thumb_func_start sub_80A4F60 -sub_80A4F60: @ 80A4F60 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080A4FA4 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080A4FA4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4F60 - - thumb_func_start sub_80A4FAC -sub_80A4FAC: @ 80A4FAC - push {lr} - ldrh r1, [r0, 0x20] - subs r1, 0x20 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x22] - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldr r1, _080A4FCC @ =sub_8074C44 - str r1, [r0, 0x1C] - ldr r1, _080A4FD0 @ =sub_80A4FD4 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A4FCC: .4byte sub_8074C44 -_080A4FD0: .4byte sub_80A4FD4 - thumb_func_end sub_80A4FAC - - thumb_func_start sub_80A4FD4 -sub_80A4FD4: @ 80A4FD4 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r6, [r5, 0x38] - movs r1, 0x1 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _080A4FEA - cmp r0, 0x1 - beq _080A5004 - b _080A506A -_080A4FEA: - strh r1, [r5, 0x2E] - ldr r0, _080A4FFC @ =sub_8074C44 - str r0, [r5, 0x1C] - ldr r1, _080A5000 @ =sub_80A4FD4 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080A506A - .align 2, 0 -_080A4FFC: .4byte sub_8074C44 -_080A5000: .4byte sub_80A4FD4 -_080A5004: - ldrh r3, [r5, 0x24] - ldrh r0, [r5, 0x20] - adds r3, r0 - movs r0, 0 - strh r3, [r5, 0x20] - ldrh r4, [r5, 0x26] - ldrh r1, [r5, 0x22] - adds r4, r1 - strh r4, [r5, 0x22] - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r2, _080A5078 @ =gUnknown_83E3548 - lsls r0, r6, 16 - asrs r0, 24 - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r3, r1 - strh r3, [r5, 0x32] - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r4, r0 - strh r4, [r5, 0x36] - ldr r0, _080A507C @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A5080 @ =sub_80A5084 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - movs r0, 0x3F - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCB - bl PlaySE12WithPanning -_080A506A: - ldrh r0, [r5, 0x38] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x38] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5078: .4byte gUnknown_83E3548 -_080A507C: .4byte sub_8075590 -_080A5080: .4byte sub_80A5084 - thumb_func_end sub_80A4FD4 - - thumb_func_start sub_80A5084 -sub_80A5084: @ 80A5084 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _080A50AC - movs r0, 0xA - strh r0, [r2, 0x2E] - ldr r0, _080A50A4 @ =sub_8074C44 - str r0, [r2, 0x1C] - ldr r1, _080A50A8 @ =sub_80A50B8 - adds r0, r2, 0 - bl StoreSpriteCallbackInData6 - b _080A50B0 - .align 2, 0 -_080A50A4: .4byte sub_8074C44 -_080A50A8: .4byte sub_80A50B8 -_080A50AC: - ldr r0, _080A50B4 @ =sub_80A4FD4 - str r0, [r2, 0x1C] -_080A50B0: - pop {r0} - bx r0 - .align 2, 0 -_080A50B4: .4byte sub_80A4FD4 - thumb_func_end sub_80A5084 - - thumb_func_start sub_80A50B8 -sub_80A50B8: @ 80A50B8 - push {r4-r7,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x6] - cmp r1, 0 - bne _080A50E0 - movs r0, 0x3 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r5, 0x32] - ldr r0, _080A50D8 @ =sub_8074C44 - str r0, [r5, 0x1C] - ldr r1, _080A50DC @ =sub_80A5174 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080A5160 - .align 2, 0 -_080A50D8: .4byte sub_8074C44 -_080A50DC: .4byte sub_80A5174 -_080A50E0: - ldrh r0, [r5, 0x6] - cmp r0, 0x2 - beq _080A5100 - cmp r0, 0x2 - bgt _080A50F0 - cmp r0, 0x1 - beq _080A50F6 - b _080A5114 -_080A50F0: - cmp r0, 0x3 - beq _080A5108 - b _080A5114 -_080A50F6: - ldr r6, _080A50FC @ =0x0000fff8 - adds r7, r6, 0 - b _080A5118 - .align 2, 0 -_080A50FC: .4byte 0x0000fff8 -_080A5100: - ldr r7, _080A5104 @ =0x0000fff8 - b _080A5116 - .align 2, 0 -_080A5104: .4byte 0x0000fff8 -_080A5108: - movs r7, 0x8 - ldr r6, _080A5110 @ =0x0000fff8 - b _080A5118 - .align 2, 0 -_080A5110: .4byte 0x0000fff8 -_080A5114: - movs r7, 0x8 -_080A5116: - movs r6, 0x8 -_080A5118: - 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] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080A5168 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080A516C @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A5170 @ =sub_80A5220 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A5160: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A5168: .4byte gBattleAnimTarget -_080A516C: .4byte sub_8075590 -_080A5170: .4byte sub_80A5220 - thumb_func_end sub_80A50B8 - - thumb_func_start sub_80A5174 -sub_80A5174: @ 80A5174 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A5194 - ldrh r0, [r4, 0x30] - adds r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A51A4 - movs r0, 0x10 - b _080A51A2 -_080A5194: - ldrh r0, [r4, 0x30] - subs r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080A51A4 - movs r0, 0 -_080A51A2: - strh r0, [r4, 0x30] -_080A51A4: - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8075BE8 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A5200 @ =0x00007fff - bl BlendPalettes - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _080A520C - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - lsls r0, r1, 5 - ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210 - adds r0, r2 - lsls r1, 4 - ldr r3, _080A5208 @ =0x00000101 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x4 - bl LoadPalette - movs r0, 0x3F - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xB9 - bl PlaySE12WithPanning - b _080A5214 - .align 2, 0 -_080A5200: .4byte 0x00007fff -_080A5204: .4byte gPlttBufferUnfaded + 0x210 -_080A5208: .4byte 0x00000101 -_080A520C: - cmp r0, 0 - bne _080A5214 - ldr r0, _080A521C @ =sub_80A5220 - str r0, [r4, 0x1C] -_080A5214: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A521C: .4byte sub_80A5220 - thumb_func_end sub_80A5174 - - thumb_func_start sub_80A5220 -sub_80A5220: @ 80A5220 - push {lr} - adds r2, r0, 0 - ldr r0, _080A523C @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A5240 @ =0x0000ffff - cmp r1, r0 - bne _080A5238 - movs r0, 0 - strh r0, [r2, 0x30] - strh r0, [r2, 0x2E] - ldr r0, _080A5244 @ =sub_80A5248 - str r0, [r2, 0x1C] -_080A5238: - pop {r0} - bx r0 - .align 2, 0 -_080A523C: .4byte gBattleAnimArgs -_080A5240: .4byte 0x0000ffff -_080A5244: .4byte sub_80A5248 - thumb_func_end sub_80A5220 - - thumb_func_start sub_80A5248 -sub_80A5248: @ 80A5248 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A527C - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - 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] -_080A527C: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bne _080A5290 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A5290: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5248 - - thumb_func_start sub_80A5298 -sub_80A5298: @ 80A5298 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080A52B8 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r3, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A52BC - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - b _080A530E - .align 2, 0 -_080A52B8: .4byte gBattleAnimArgs -_080A52BC: - cmp r0, 0x2 - bne _080A52D8 - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x20 - b _080A530A -_080A52D8: - cmp r0, 0x3 - bne _080A52F4 - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - b _080A530A -_080A52F4: - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 -_080A530A: - orrs r0, r1 - strb r0, [r3, 0x3] -_080A530E: - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, _080A5334 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080A5338 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldr r1, _080A533C @ =sub_80A4FAC - str r1, [r3, 0x1C] - adds r0, r3, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5334: .4byte 0x000003ff -_080A5338: .4byte 0xfffffc00 -_080A533C: .4byte sub_80A4FAC - thumb_func_end sub_80A5298 - - thumb_func_start sub_80A5340 -sub_80A5340: @ 80A5340 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - strh r0, [r3, 0x2E] - ldr r0, _080A5368 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080A537C - cmp r0, 0x1 - bgt _080A536C - cmp r0, 0 - beq _080A5372 - b _080A538C - .align 2, 0 -_080A5368: .4byte gBattleAnimArgs -_080A536C: - cmp r0, 0x2 - beq _080A5384 - b _080A538C -_080A5372: - ldr r0, _080A5378 @ =sub_80A5398 - b _080A538E - .align 2, 0 -_080A5378: .4byte sub_80A5398 -_080A537C: - ldr r0, _080A5380 @ =sub_80A5474 - b _080A538E - .align 2, 0 -_080A5380: .4byte sub_80A5474 -_080A5384: - ldr r0, _080A5388 @ =sub_80A54C4 - b _080A538E - .align 2, 0 -_080A5388: .4byte sub_80A54C4 -_080A538C: - ldr r0, _080A5394 @ =sub_80A5584 -_080A538E: - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080A5394: .4byte sub_80A5584 - thumb_func_end sub_80A5340 - - thumb_func_start sub_80A5398 -sub_80A5398: @ 80A5398 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x6 - strh r0, [r4, 0x2E] - ldr r5, _080A53D8 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - beq _080A53B6 - movs r1, 0x2 -_080A53B6: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A53DC @ =gUnknown_2023D44 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080A53E0 @ =sub_80A53E8 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A53E4 @ =sub_8074DC4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A53D8: .4byte gBattleAnimAttacker -_080A53DC: .4byte gUnknown_2023D44 -_080A53E0: .4byte sub_80A53E8 -_080A53E4: .4byte sub_8074DC4 - thumb_func_end sub_80A5398 - - thumb_func_start sub_80A53E8 -sub_80A53E8: @ 80A53E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0x2E - ldrsh r6, [r5, r0] - cmp r6, 0 - bne _080A5424 - ldr r1, _080A5464 @ =gUnknown_2023D44 - ldr r4, _080A5468 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - movs r1, 0 - bl sub_80758E0 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldr r2, _080A546C @ =0xfffffd00 - adds r1, r2, 0 - cmp r0, 0 - beq _080A5420 - movs r0, 0xC0 - lsls r0, 2 - adds r1, r0, 0 -_080A5420: - strh r1, [r5, 0x36] - strh r6, [r5, 0x38] -_080A5424: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A545E - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080A5470 @ =sub_80A5584 - str r0, [r5, 0x1C] -_080A545E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5464: .4byte gUnknown_2023D44 -_080A5468: .4byte gBattleAnimAttacker -_080A546C: .4byte 0xfffffd00 -_080A5470: .4byte sub_80A5584 - thumb_func_end sub_80A53E8 - - thumb_func_start sub_80A5474 -sub_80A5474: @ 80A5474 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r5, _080A54B4 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080A5492 - movs r0, 0x3 - negs r0, r0 - adds r1, r0, 0 -_080A5492: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A54B8 @ =gUnknown_2023D44 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080A54BC @ =sub_80A5584 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A54C0 @ =sub_8074DC4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A54B4: .4byte gBattleAnimAttacker -_080A54B8: .4byte gUnknown_2023D44 -_080A54BC: .4byte sub_80A5584 -_080A54C0: .4byte sub_8074DC4 - thumb_func_end sub_80A5474 - - thumb_func_start sub_80A54C4 -sub_80A54C4: @ 80A54C4 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A54DE - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080A54E4 @ =sub_80A54E8 - str r0, [r1, 0x1C] -_080A54DE: - pop {r0} - bx r0 - .align 2, 0 -_080A54E4: .4byte sub_80A54E8 - thumb_func_end sub_80A54C4 - - thumb_func_start sub_80A54E8 -sub_80A54E8: @ 80A54E8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A5538 - ldr r1, _080A5524 @ =gUnknown_2023D44 - ldr r4, _080A5528 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A552C - movs r0, 0xFC - lsls r0, 8 - strh r0, [r5, 0x36] - movs r0, 0xC0 - lsls r0, 4 - b _080A5536 - .align 2, 0 -_080A5524: .4byte gUnknown_2023D44 -_080A5528: .4byte gBattleAnimAttacker -_080A552C: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r5, 0x36] - movs r0, 0xF4 - lsls r0, 8 -_080A5536: - strh r0, [r5, 0x38] -_080A5538: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A5578 - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_8075980 - ldr r0, _080A5580 @ =sub_80A5584 - str r0, [r5, 0x1C] -_080A5578: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5580: .4byte sub_80A5584 - thumb_func_end sub_80A54E8 - - thumb_func_start sub_80A5584 -sub_80A5584: @ 80A5584 - push {lr} - bl DestroyAnimSprite - pop {r0} - bx r0 - thumb_func_end sub_80A5584 - - thumb_func_start sub_80A5590 -sub_80A5590: @ 80A5590 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _080A559C @ =sub_80A55A0 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A559C: .4byte sub_80A55A0 - thumb_func_end sub_80A5590 - - thumb_func_start sub_80A55A0 -sub_80A55A0: @ 80A55A0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080A55FA - cmp r5, 0x1 - bgt _080A55B6 - cmp r5, 0 - beq _080A55BC - b _080A568E -_080A55B6: - cmp r5, 0x2 - beq _080A564C - b _080A568E -_080A55BC: - strh r5, [r4, 0x30] - ldr r1, _080A5640 @ =gUnknown_2023D44 - ldr r2, _080A5644 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x32] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldr r2, _080A5648 @ =0xfffffe00 - adds r1, r2, 0 - cmp r0, 0 - beq _080A55E4 - movs r0, 0x80 - lsls r0, 2 - adds r1, r0, 0 -_080A55E4: - strh r1, [r4, 0x36] - strh r5, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80758E0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_080A55FA: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A568E - movs r0, 0 - strh r0, [r4, 0x30] - movs r2, 0x36 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A568E - .align 2, 0 -_080A5640: .4byte gUnknown_2023D44 -_080A5644: .4byte gBattleAnimAttacker -_080A5648: .4byte 0xfffffe00 -_080A564C: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A568E - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_8075980 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A568E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A55A0 - - thumb_func_start sub_80A5694 -sub_80A5694: @ 80A5694 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080A56D8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldr r1, _080A56DC @ =gUnknown_2023D44 - ldr r2, _080A56E0 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r5, 0x8] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - strh r2, [r5, 0xA] - strh r4, [r5, 0xC] - ldr r0, _080A56E4 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - beq _080A56E8 - cmp r1, 0x1 - beq _080A5704 - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080A5722 - .align 2, 0 -_080A56D8: .4byte gTasks -_080A56DC: .4byte gUnknown_2023D44 -_080A56E0: .4byte gBattleAnimAttacker -_080A56E4: .4byte gBattleAnimArgs -_080A56E8: - strh r1, [r5, 0xC] - movs r0, 0x8 - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] - movs r0, 0x3 - strh r0, [r5, 0x12] - cmp r2, 0 - bne _080A56FC - negs r0, r0 - strh r0, [r5, 0x12] -_080A56FC: - ldr r0, _080A5700 @ =sub_80A572C - b _080A5720 - .align 2, 0 -_080A5700: .4byte sub_80A572C -_080A5704: - movs r0, 0x8 - strh r0, [r5, 0xE] - movs r0, 0xC0 - lsls r0, 3 - strh r0, [r5, 0x10] - movs r1, 0xC0 - strh r1, [r5, 0x12] - cmp r2, 0 - bne _080A571E - negs r0, r0 - strh r0, [r5, 0x10] - negs r0, r1 - strh r0, [r5, 0x12] -_080A571E: - ldr r0, _080A5728 @ =sub_80A58EC -_080A5720: - str r0, [r5] -_080A5722: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5728: .4byte sub_80A58EC - thumb_func_end sub_80A5694 - - thumb_func_start sub_80A572C -sub_80A572C: @ 80A572C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A5750 @ =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080A5746 - b _080A58E6 -_080A5746: - lsls r0, 2 - ldr r1, _080A5754 @ =_080A5758 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A5750: .4byte gTasks -_080A5754: .4byte _080A5758 - .align 2, 0 -_080A5758: - .4byte _080A576C - .4byte _080A579E - .4byte _080A57F8 - .4byte _080A5870 - .4byte _080A58B4 -_080A576C: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _080A577C - ldrh r2, [r4, 0x12] - ldrh r3, [r4, 0x10] - adds r2, r3 - b _080A58C2 -_080A577C: - movs r0, 0x8 - strh r0, [r4, 0xE] - strh r1, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0xC0 - cmp r0, 0 - bne _080A5792 - movs r2, 0xC0 - negs r2, r2 - adds r1, r2, 0 -_080A5792: - strh r1, [r4, 0x12] - ldrb r0, [r4, 0x8] - movs r1, 0 - bl sub_80758E0 - b _080A58A8 -_080A579E: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A57C4 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80759DC - b _080A58D4 -_080A57C4: - movs r0, 0x8 - strh r0, [r4, 0xE] - ldr r2, _080A57F4 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080A57EA - movs r1, 0x2 -_080A57EA: - strh r1, [r4, 0x12] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080A58A8 - .align 2, 0 -_080A57F4: .4byte gSprites -_080A57F8: - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A5854 - ldrh r1, [r4, 0x14] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A5812 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - b _080A58E6 -_080A5812: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080A5834 - ldr r2, _080A5830 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r4, 0x10] - adds r1, r2 - b _080A5848 - .align 2, 0 -_080A5830: .4byte gSprites -_080A5834: - ldr r2, _080A5850 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r4, 0x12] - subs r1, r2 -_080A5848: - strh r1, [r0, 0x24] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080A58D4 - .align 2, 0 -_080A5850: .4byte gSprites -_080A5854: - ldr r2, _080A586C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - strh r1, [r0, 0x24] - movs r0, 0xC - strh r0, [r4, 0xE] - b _080A58A8 - .align 2, 0 -_080A586C: .4byte gSprites -_080A5870: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080A5880 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _080A58E6 -_080A5880: - movs r0, 0x3 - strh r0, [r4, 0xE] - ldr r2, _080A58B0 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x8 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080A58A6 - movs r1, 0x8 -_080A58A6: - strh r1, [r4, 0x12] -_080A58A8: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080A58E6 - .align 2, 0 -_080A58B0: .4byte gSprites -_080A58B4: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A58E0 - ldrh r2, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r2, r0 -_080A58C2: - strh r2, [r4, 0x10] - ldr r3, _080A58DC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] -_080A58D4: - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080A58E6 - .align 2, 0 -_080A58DC: .4byte gSprites -_080A58E0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A58E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A572C - - thumb_func_start sub_80A58EC -sub_80A58EC: @ 80A58EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A5928 @ =gTasks - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A592C - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80759DC - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080A5938 - .align 2, 0 -_080A5928: .4byte gTasks -_080A592C: - ldrb r0, [r4, 0x8] - bl sub_8075980 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A5938: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A58EC - - thumb_func_start sub_80A5940 -sub_80A5940: @ 80A5940 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A5954 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A595C - ldr r4, _080A5958 @ =gBattleAnimAttacker - b _080A595E - .align 2, 0 -_080A5954: .4byte gBattleAnimArgs -_080A5958: .4byte gBattleAnimAttacker -_080A595C: - ldr r4, _080A599C @ =gBattleAnimTarget -_080A595E: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldr r1, _080A59A0 @ =sub_80A5A8C - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A59A4 @ =sub_8074F6C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A599C: .4byte gBattleAnimTarget -_080A59A0: .4byte sub_80A5A8C -_080A59A4: .4byte sub_8074F6C - thumb_func_end sub_80A5940 - - thumb_func_start sub_80A59A8 -sub_80A59A8: @ 80A59A8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A59E0 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A59E4 @ =0x0000ffd0 - adds r0, r1 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080A59E8 @ =sub_80A5A44 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A59EC @ =sub_8074F6C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A59E0: .4byte gBattleAnimTarget -_080A59E4: .4byte 0x0000ffd0 -_080A59E8: .4byte sub_80A5A44 -_080A59EC: .4byte sub_8074F6C - thumb_func_end sub_80A59A8 - - thumb_func_start sub_80A59F0 -sub_80A59F0: @ 80A59F0 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080A5A34 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A5A38 @ =gBattleAnimArgs - ldr r2, _080A5A3C @ =0x0000ffd0 - adds r0, r2 - ldrh r1, [r1] - adds r0, r1 - movs r6, 0 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - strh r6, [r4, 0x2E] - strh r6, [r4, 0x30] - ldr r0, _080A5A40 @ =sub_80A5A8C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5A34: .4byte gBattleAnimTarget -_080A5A38: .4byte gBattleAnimArgs -_080A5A3C: .4byte 0x0000ffd0 -_080A5A40: .4byte sub_80A5A8C - thumb_func_end sub_80A59F0 - - thumb_func_start sub_80A5A44 -sub_80A5A44: @ 80A5A44 - 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, 0x8 - ble _080A5A6E - movs r0, 0xC - strh r0, [r4, 0x2E] - movs r0, 0x8 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A5A74 @ =sub_80A5A7C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A5A78 @ =sub_8074CD0 - str r0, [r4, 0x1C] -_080A5A6E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5A74: .4byte sub_80A5A7C -_080A5A78: .4byte sub_8074CD0 - thumb_func_end sub_80A5A44 - - thumb_func_start sub_80A5A7C -sub_80A5A7C: @ 80A5A7C - movs r1, 0 - strh r1, [r0, 0x2E] - strh r1, [r0, 0x30] - ldr r1, _080A5A88 @ =sub_80A5A8C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A5A88: .4byte sub_80A5A8C - thumb_func_end sub_80A5A7C - - thumb_func_start sub_80A5A8C -sub_80A5A8C: @ 80A5A8C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5AD4 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A5AD4 - adds r0, r3, 0 - bl DestroyAnimSprite -_080A5AD4: - pop {r0} - bx r0 - thumb_func_end sub_80A5A8C - - thumb_func_start sub_80A5AD8 -sub_80A5AD8: @ 80A5AD8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A5AEC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A5AF4 - ldr r4, _080A5AF0 @ =gBattleAnimAttacker - b _080A5AF6 - .align 2, 0 -_080A5AEC: .4byte gBattleAnimArgs -_080A5AF0: .4byte gBattleAnimAttacker -_080A5AF4: - ldr r4, _080A5B30 @ =gBattleAnimTarget -_080A5AF6: - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080A5B34 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x30] - ldr r0, _080A5B38 @ =sub_80A5B3C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5B30: .4byte gBattleAnimTarget -_080A5B34: .4byte gBattleAnimArgs -_080A5B38: .4byte sub_80A5B3C - thumb_func_end sub_80A5AD8 - - thumb_func_start sub_80A5B3C -sub_80A5B3C: @ 80A5B3C - 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, 0x30 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _080A5B5C - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x22] - subs r0, 0x1 - strh r0, [r2, 0x22] -_080A5B5C: - ldrh r0, [r2, 0x22] - ldrh r1, [r2, 0x2E] - subs r0, r1 - strh r0, [r2, 0x22] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A5B78 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A5B78: - pop {r0} - bx r0 - thumb_func_end sub_80A5B3C - - thumb_func_start sub_80A5B7C -sub_80A5B7C: @ 80A5B7C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A5BC4 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0xC - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - movs r0, 0x2 - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - subs r0, 0x42 - bl sub_8073A44 - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, _080A5BC8 @ =sub_80A5BCC - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5BC4: .4byte gBattleAnimAttacker -_080A5BC8: .4byte sub_80A5BCC - thumb_func_end sub_80A5B7C - - thumb_func_start sub_80A5BCC -sub_80A5BCC: @ 80A5BCC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080A5C38 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080A5C1E - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A5C1E - ldrh r1, [r4, 0x38] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xBB - bl PlaySE12WithPanning -_080A5C1E: - movs r1, 0 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5C38 - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080A5C38: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A5C62 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - ble _080A5C62 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080A5C62 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A5C62: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5BCC - - thumb_func_start sub_80A5C68 -sub_80A5C68: @ 80A5C68 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A5CB2 - ldr r4, _080A5CC8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - ldr r5, _080A5CCC @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x2] - adds r0, r5 - strh r0, [r6, 0x22] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A5CAC - ldrh r0, [r6, 0x22] - adds r0, 0xA - strh r0, [r6, 0x22] -_080A5CAC: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] -_080A5CB2: - ldr r0, _080A5CCC @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A5CD0 @ =0x0000ffff - cmp r1, r0 - bne _080A5CC2 - adds r0, r6, 0 - bl DestroyAnimSprite -_080A5CC2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5CC8: .4byte gBattleAnimAttacker -_080A5CCC: .4byte gBattleAnimArgs -_080A5CD0: .4byte 0x0000ffff - thumb_func_end sub_80A5C68 - - thumb_func_start sub_80A5CD4 -sub_80A5CD4: @ 80A5CD4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A5CF4 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080A5D00 - ldr r1, _080A5CF8 @ =gBattleAnimArgs - ldr r0, _080A5CFC @ =0x0000ffff - strh r0, [r1, 0xE] - b _080A5D3E - .align 2, 0 -_080A5CF4: .4byte gTasks -_080A5CF8: .4byte gBattleAnimArgs -_080A5CFC: .4byte 0x0000ffff -_080A5D00: - cmp r0, 0x2 - bne _080A5D0C - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A5D44 -_080A5D0C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A5D44 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r2, [r4, 0xA] - adds r2, 0x1 - strh r2, [r4, 0xA] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A5D44 -_080A5D3E: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080A5D44: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5CD4 - - thumb_func_start sub_80A5D4C -sub_80A5D4C: @ 80A5D4C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075114 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080A5D74 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080A5D78 @ =sub_80A5D7C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5D74: .4byte gBattleAnimArgs -_080A5D78: .4byte sub_80A5D7C - thumb_func_end sub_80A5D4C - - thumb_func_start sub_80A5D7C -sub_80A5D7C: @ 80A5D7C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080A5D90 - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] - b _080A5DCC -_080A5D90: - adds r2, r5, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldr r4, _080A5DD4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080A5DD8 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A5DDC @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A5DCC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5DD4: .4byte gBattleAnimAttacker -_080A5DD8: .4byte sub_8075590 -_080A5DDC: .4byte DestroyAnimSprite - thumb_func_end sub_80A5D7C - - thumb_func_start sub_80A5DE0 -sub_80A5DE0: @ 80A5DE0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A5E30 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A5E28 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A5E28 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A5E28: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5E30: .4byte gTasks - thumb_func_end sub_80A5DE0 - - thumb_func_start sub_80A5E34 -sub_80A5E34: @ 80A5E34 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r0, _080A5E9C @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcs _080A5E90 - ldr r6, _080A5EA0 @ =gBattleAnimArgs - ldr r5, _080A5EA4 @ =gUnknown_3004FF0 -_080A5E48: - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080A5E64 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A5E64 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_080A5E64: - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080A5E82 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A5E82 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_080A5E82: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A5E9C @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _080A5E48 -_080A5E90: - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A5E9C: .4byte gBattlersCount -_080A5EA0: .4byte gBattleAnimArgs -_080A5EA4: .4byte gUnknown_3004FF0 - thumb_func_end sub_80A5E34 - - thumb_func_start sub_80A5EA8 -sub_80A5EA8: @ 80A5EA8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _080A5EC2 -_080A5EB2: - ldr r0, _080A5ED8 @ =gUnknown_3004FF0 - adds r0, r4, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080A5EC2: - ldr r0, _080A5EDC @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _080A5EB2 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5ED8: .4byte gUnknown_3004FF0 -_080A5EDC: .4byte gBattlersCount - thumb_func_end sub_80A5EA8 - - thumb_func_start sub_80A5EE0 -sub_80A5EE0: @ 80A5EE0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A5EF6 - movs r0, 0x30 - strh r0, [r4, 0x20] - movs r0, 0x28 - b _080A5EFE -_080A5EF6: - ldr r0, _080A5F20 @ =gBattleAnimArgs - ldrh r1, [r0] - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_080A5EFE: - strh r0, [r4, 0x22] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080A5F24 @ =sub_80A5F28 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5F20: .4byte gBattleAnimArgs -_080A5F24: .4byte sub_80A5F28 - thumb_func_end sub_80A5EE0 - - thumb_func_start sub_80A5F28 -sub_80A5F28: @ 80A5F28 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080A5F3A - adds r0, r1, 0 - bl DestroyAnimSprite -_080A5F3A: - pop {r0} - bx r0 - thumb_func_end sub_80A5F28 - - thumb_func_start sub_80A5F40 -sub_80A5F40: @ 80A5F40 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A5F78 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r2, _080A5F7C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r2] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x22] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r0, _080A5F80 @ =sub_80A5F84 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5F78: .4byte gBattleAnimAttacker -_080A5F7C: .4byte gBattleAnimArgs -_080A5F80: .4byte sub_80A5F84 - thumb_func_end sub_80A5F40 - - thumb_func_start sub_80A5F84 -sub_80A5F84: @ 80A5F84 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5FAE - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r2, [r1, 0x32] - movs r3, 0x32 - ldrsh r0, [r1, r3] - cmp r0, 0x77 - bgt _080A5FAE - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - adds r0, r2, 0x1 - strh r0, [r1, 0x32] -_080A5FAE: - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080A5FBC - adds r0, r1, 0 - bl DestroyAnimSprite -_080A5FBC: - pop {r0} - bx r0 - thumb_func_end sub_80A5F84 - - thumb_func_start sub_80A5FC0 -sub_80A5FC0: @ 80A5FC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - mov r8, r0 - ldr r0, _080A6090 @ =0x0000ffff - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldr r0, _080A6094 @ =gTasks - mov r9, r0 - lsls r5, r7, 2 - adds r5, r7 - lsls r5, 3 - adds r6, r5, r0 - strh r4, [r6, 0x8] - strh r4, [r6, 0xA] - strh r4, [r6, 0xC] - strh r1, [r6, 0xE] - strh r4, [r6, 0x10] - strh r4, [r6, 0x12] - strh r4, [r6, 0x14] - movs r0, 0xD - strh r0, [r6, 0x16] - movs r0, 0xE - strh r0, [r6, 0x18] - movs r0, 0xF - strh r0, [r6, 0x1A] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8075CB8 - mov r10, r0 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r0, 0x8 - add r9, r0 - add r5, r9 - adds r0, r5, 0 - adds r0, 0x1C - adds r5, 0x1E - adds r1, r5, 0 - mov r2, r8 - bl sub_80765C0 - ldr r0, _080A6098 @ =0x000027d2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x80 - lsls r4, 9 - adds r1, r4, 0 - lsls r1, r0 - mov r0, r10 - orrs r0, r1 - mov r10, r0 - ldr r0, _080A609C @ =0x000027d3 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0 - mov r1, r10 - orrs r4, r1 - ldr r0, _080A60A0 @ =0x00007fbb - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080A60A4 @ =sub_80A60A8 - str r1, [r6] - adds r0, r7, 0 - bl _call_via_r1 - 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 -_080A6090: .4byte 0x0000ffff -_080A6094: .4byte gTasks -_080A6098: .4byte 0x000027d2 -_080A609C: .4byte 0x000027d3 -_080A60A0: .4byte 0x00007fbb -_080A60A4: .4byte sub_80A60A8 - thumb_func_end sub_80A5FC0 - - thumb_func_start sub_80A60A8 -sub_80A60A8: @ 80A60A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A60D0 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080A6194 - cmp r1, 0x1 - bgt _080A60D4 - cmp r1, 0 - beq _080A60E2 - b _080A6232 - .align 2, 0 -_080A60D0: .4byte gTasks -_080A60D4: - cmp r1, 0x2 - bne _080A60DA - b _080A61EC -_080A60DA: - cmp r1, 0x3 - bne _080A60E0 - b _080A6220 -_080A60E0: - b _080A6232 -_080A60E2: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bgt _080A60F0 - b _080A6232 -_080A60F0: - strh r1, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080A613C - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r2, [r4, 0x18] - ldrh r3, [r4, 0x12] - adds r2, r3 - strh r2, [r4, 0x12] - ldrh r1, [r4, 0x1A] - ldrh r5, [r4, 0x14] - adds r1, r5 - strh r1, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r2, 11 - orrs r0, r2 - lsrs r1, 6 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - b _080A6146 -_080A613C: - ldr r7, _080A618C @ =0x00007fbb - mov r12, r7 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080A6146: - movs r2, 0x1 - movs r3, 0 - movs r1, 0 -_080A614C: - movs r5, 0xE - ldrsh r0, [r4, r5] - ands r0, r2 - lsls r5, r2, 17 - adds r6, r3, 0 - adds r6, 0x10 - adds r1, 0x1 - mov r8, r1 - cmp r0, 0 - beq _080A6178 - movs r1, 0x1 - ldr r2, _080A6190 @ =gPlttBufferFaded -_080A6164: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r2 - mov r7, r12 - strh r7, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080A6164 -_080A6178: - lsrs r2, r5, 16 - lsls r0, r6, 16 - lsrs r3, r0, 16 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080A614C - b _080A6232 - .align 2, 0 -_080A618C: .4byte 0x00007fbb -_080A6190: .4byte gPlttBufferFaded -_080A6194: - ldr r0, _080A61DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A6232 - movs r2, 0 - ldr r3, _080A61E0 @ =gSprites - movs r5, 0x14 - adds r5, r3 - mov r12, r5 - ldr r7, _080A61E4 @ =gUnknown_83E3734 - mov r8, r7 - ldr r6, _080A61E8 @ =gUnknown_83E3764 - movs r5, 0x1 -_080A61B2: - lsls r0, r2, 4 - adds r0, r2 - lsls r1, r0, 2 - mov r7, r12 - adds r0, r1, r7 - ldr r0, [r0] - cmp r0, r8 - beq _080A61C6 - cmp r0, r6 - bne _080A61CA -_080A61C6: - adds r0, r1, r3 - strh r5, [r0, 0x2E] -_080A61CA: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3F - bls _080A61B2 - movs r0, 0 - strh r0, [r4, 0xA] - b _080A6214 - .align 2, 0 -_080A61DC: .4byte gPaletteFade -_080A61E0: .4byte gSprites -_080A61E4: .4byte gUnknown_83E3734 -_080A61E8: .4byte gUnknown_83E3764 -_080A61EC: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080A6232 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - bl sub_80765C8 - ldr r1, _080A621C @ =0x00007fbb - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080A6214: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080A6232 - .align 2, 0 -_080A621C: .4byte 0x00007fbb -_080A6220: - ldr r0, _080A6240 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A6232 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A6232: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6240: .4byte gPaletteFade - thumb_func_end sub_80A60A8 - - thumb_func_start sub_80A6244 -sub_80A6244: @ 80A6244 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A62C8 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bgt _080A6256 - movs r0, 0x2 - strh r0, [r6, 0x4] -_080A6256: - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x7F - ble _080A6262 - movs r0, 0x7F - strh r0, [r6, 0x4] -_080A6262: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x30] - ldr r4, _080A62CC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x22] - ldrh r1, [r5, 0x20] - strh r1, [r5, 0x3A] - strh r0, [r5, 0x3C] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A62D4 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A62D0 @ =0xffffec00 - b _080A62FA - .align 2, 0 -_080A62C8: .4byte gBattleAnimArgs -_080A62CC: .4byte gBattleAnimTarget -_080A62D0: .4byte 0xffffec00 -_080A62D4: - ldr r0, _080A6314 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A631C - ldrh r0, [r5, 0x20] - subs r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 5 -_080A62FA: - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A6318 @ =0xfffff600 - bl __divsi3 - strh r0, [r5, 0x38] - b _080A6358 - .align 2, 0 -_080A6314: .4byte gBattleAnimAttacker -_080A6318: .4byte 0xfffff600 -_080A631C: - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - subs r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A6364 @ =0xffffec00 - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 4 - bl __divsi3 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 - orrs r0, r1 - strb r0, [r5, 0x3] -_080A6358: - ldr r0, _080A6368 @ =sub_80A636C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6364: .4byte 0xffffec00 -_080A6368: .4byte sub_80A636C - thumb_func_end sub_80A6244 - - thumb_func_start sub_80A636C -sub_80A636C: @ 80A636C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 23 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A63A2 - ldrh r0, [r2, 0x3A] - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x3C] - strh r0, [r2, 0x22] -_080A63A2: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080A63B0 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A63B0: - pop {r0} - bx r0 - thumb_func_end sub_80A636C - - thumb_func_start sub_80A63B4 -sub_80A63B4: @ 80A63B4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080A6444 @ =gTasks - adds r6, r0, r1 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x8] - ldr r0, _080A6448 @ =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0xA] - movs r1, 0xA - ldrsh r0, [r6, r1] - lsls r0, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - ldr r2, _080A644C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - movs r5, 0x1 - ldr r2, _080A6450 @ =gPlttBufferUnfaded -_080A640C: - adds r1, r3, r5 - lsls r1, 1 - adds r1, r2 - adds r0, r4, r5 - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080A640C - adds r0, r3, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0 - bl BlendPalette - movs r0, 0 - strh r0, [r6, 0xE] - movs r5, 0 - ldr r7, _080A644C @ =gSprites - movs r1, 0x1C - adds r1, r7 - mov r9, r1 - b _080A6488 - .align 2, 0 -_080A6444: .4byte gTasks -_080A6448: .4byte 0x00002771 -_080A644C: .4byte gSprites -_080A6450: .4byte gPlttBufferUnfaded -_080A6454: - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r4, r2, r7 - ldrb r1, [r6, 0xA] - lsls r1, 4 - ldrb r3, [r4, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - lsls r0, r5, 7 - strh r0, [r4, 0x30] - mov r0, r8 - strh r0, [r4, 0x32] - add r2, r9 - ldr r0, _080A64BC @ =sub_80A653C - str r0, [r2] - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080A6488: - cmp r5, 0x1 - bhi _080A649A - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A6454 -_080A649A: - ldr r0, _080A64C0 @ =sub_80A64E0 - str r0, [r6] - ldr r0, _080A64C4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A64C8 - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl ClearGpuRegBits - b _080A64D2 - .align 2, 0 -_080A64BC: .4byte sub_80A653C -_080A64C0: .4byte sub_80A64E0 -_080A64C4: .4byte gBattleAnimAttacker -_080A64C8: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl ClearGpuRegBits -_080A64D2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A63B4 - - thumb_func_start sub_80A64E0 -sub_80A64E0: @ 80A64E0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A6514 @ =gTasks - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6532 - ldr r0, _080A6518 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A651C - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl SetGpuRegBits - b _080A6526 - .align 2, 0 -_080A6514: .4byte gTasks -_080A6518: .4byte gBattleAnimAttacker -_080A651C: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl SetGpuRegBits -_080A6526: - ldr r0, _080A6538 @ =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A6532: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6538: .4byte 0x00002771 - thumb_func_end sub_80A64E0 - - thumb_func_start sub_80A653C -sub_80A653C: @ 80A653C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A6558 - movs r0, 0 - strh r0, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080A6558: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x40 - ble _080A6580 - ldr r2, _080A657C @ =gTasks - movs r0, 0x32 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xE] - subs r1, 0x1 - strh r1, [r0, 0xE] - adds r0, r5, 0 - bl obj_delete_but_dont_free_vram - b _080A65C2 - .align 2, 0 -_080A657C: .4byte gTasks -_080A6580: - ldr r4, _080A65C8 @ =gSineTable - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x6 - bl __divsi3 - strh r0, [r5, 0x36] - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xD - bl __divsi3 - strh r0, [r5, 0x38] - ldrh r1, [r5, 0x30] - adds r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x30] - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] -_080A65C2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A65C8: .4byte gSineTable - thumb_func_end sub_80A653C - - thumb_func_start sub_80A65CC -sub_80A65CC: @ 80A65CC - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080A65E0 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - ldr r0, _080A65E4 @ =sub_8074F6C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A65E0: .4byte DestroyAnimSprite -_080A65E4: .4byte sub_8074F6C - thumb_func_end sub_80A65CC - - thumb_func_start sub_80A65E8 -sub_80A65E8: @ 80A65E8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _080A6698 @ =gUnknown_83E3898 - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _080A662C - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r5, _080A669C @ =gPlttBufferFaded -_080A6614: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r5 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080A6614 -_080A662C: - movs r4, 0x1 - ldr r0, _080A6698 @ =gUnknown_83E3898 - mov r8, r0 -_080A6632: - lsls r0, r4, 1 - adds r0, r4 - lsls r5, r0, 2 - mov r1, r8 - adds r0, r5, r1 - ldrh r0, [r0] - bl AllocSpritePalette - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, 0x1 - mov r12, r4 - cmp r3, 0xFF - beq _080A667A - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r7, _080A669C @ =gPlttBufferFaded - ldr r6, _080A6698 @ =gUnknown_83E3898 - adds r4, r5, 0 -_080A6660: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r7 - lsls r0, r2, 1 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080A6660 -_080A667A: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080A6632 - mov r0, r9 - bl DestroyAnimVisualTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6698: .4byte gUnknown_83E3898 -_080A669C: .4byte gPlttBufferFaded - thumb_func_end sub_80A65E8 - - thumb_func_start sub_80A66A0 -sub_80A66A0: @ 80A66A0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0x1 - ldr r6, _080A66D0 @ =gUnknown_83E3898 -_080A66AA: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrh r0, [r0] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080A66AA - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A66D0: .4byte gUnknown_83E3898 - thumb_func_end sub_80A66A0 - - thumb_func_start sub_80A66D4 -sub_80A66D4: @ 80A66D4 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_8074FCC - ldr r4, _080A672C @ =gBattleAnimArgs - ldrb r1, [r4] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r2, _080A6730 @ =gUnknown_83E3898 - movs r0, 0x2 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A6710 - lsls r2, r0, 4 - ldrb r1, [r5, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] -_080A6710: - ldrh r0, [r4, 0x2] - movs r1, 0 - strh r0, [r5, 0x30] - strh r1, [r5, 0x32] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x34] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A6734 - movs r6, 0x30 - movs r3, 0x28 - b _080A674E - .align 2, 0 -_080A672C: .4byte gBattleAnimArgs -_080A6730: .4byte gUnknown_83E3898 -_080A6734: - ldr r4, _080A6784 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r3, r0, 24 -_080A674E: - ldrh r0, [r5, 0x20] - lsls r1, r0, 4 - strh r1, [r5, 0x36] - ldrh r1, [r5, 0x22] - lsls r2, r1, 4 - strh r2, [r5, 0x38] - subs r0, r6, r0 - lsls r0, 16 - asrs r0, 16 - subs r1, r3, r1 - lsls r1, 16 - asrs r1, 16 - adds r2, r5, 0 - adds r2, 0x3A - adds r3, r5, 0 - adds r3, 0x3C - movs r4, 0x28 - str r4, [sp] - bl sub_80A678C - ldr r0, _080A6788 @ =sub_80A67E4 - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6784: .4byte gBattleAnimTarget -_080A6788: .4byte sub_80A67E4 - thumb_func_end sub_80A66D4 - - thumb_func_start sub_80A678C -sub_80A678C: @ 80A678C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r2, 0 - mov r8, r3 - ldr r2, [sp, 0x18] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r1, r2, 24 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bge _080A67AE - lsls r0, r1, 24 - negs r0, r0 - lsrs r1, r0, 24 -_080A67AE: - lsls r5, r2, 8 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bne _080A67C2 - movs r4, 0x1 -_080A67C2: - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r7] - lsls r0, r6, 16 - asrs r0, 8 - adds r1, r4, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A678C - - thumb_func_start sub_80A67E4 -sub_80A67E4: @ 80A67E4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x2E] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r1, r0, r1 - adds r0, r1, 0 - cmp r1, 0 - bge _080A6800 - adds r0, 0xFF -_080A6800: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - ldrh r1, [r4, 0x3A] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - ldrh r2, [r4, 0x3C] - ldrh r3, [r4, 0x38] - adds r2, r3 - strh r2, [r4, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xF - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - ldrh r0, [r4, 0x20] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bhi _080A684E - lsls r0, r2, 16 - asrs r1, r0, 16 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - blt _080A684E - cmp r1, 0x80 - ble _080A6856 -_080A684E: - adds r0, r4, 0 - bl move_anim_8074EE0 - b _080A68A6 -_080A6856: - movs r0, 0x34 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _080A68A6 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, r1 - ble _080A68A6 - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A687E - strh r5, [r4, 0x30] -_080A687E: - ldr r2, _080A68AC @ =gUnknown_83E3898 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A68A6 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080A68A6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A68AC: .4byte gUnknown_83E3898 - thumb_func_end sub_80A67E4 - - thumb_func_start sub_80A68B0 -sub_80A68B0: @ 80A68B0 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r7, _080A6934 @ =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A68CE - ldr r1, _080A6938 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080A68CE: - ldrb r0, [r7] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A6938 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r7] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r6, 0x22] - ldrb r1, [r4] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x32] - strh r5, [r6, 0x34] - ldrh r0, [r6, 0x20] - lsls r0, 4 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x22] - lsls r0, 4 - strh r0, [r6, 0x38] - movs r1, 0x2 - ldrsh r0, [r4, r1] - lsls r0, 4 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3A] - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r0, 7 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3C] - ldr r0, _080A693C @ =sub_80A6940 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6934: .4byte gBattleAnimAttacker -_080A6938: .4byte gBattleAnimArgs -_080A693C: .4byte sub_80A6940 - thumb_func_end sub_80A68B0 - - thumb_func_start sub_80A6940 -sub_80A6940: @ 80A6940 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - ble _080A699E - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A699E - ldrh r0, [r4, 0x32] - adds r0, 0x10 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0x12 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x32 - ldrsh r0, [r4, r2] - movs r1, 0x12 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A699E - movs r0, 0x1 - strh r0, [r4, 0x34] -_080A699E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - bne _080A69B2 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080A69B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6940 - - thumb_func_start sub_80A69B8 -sub_80A69B8: @ 80A69B8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080A69D8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _080A69DC - ldrb r0, [r5, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r5, 0x3] - movs r6, 0x10 - b _080A69DE - .align 2, 0 -_080A69D8: .4byte gBattleAnimArgs -_080A69DC: - ldr r6, _080A6A18 @ =0x0000fff0 -_080A69DE: - ldr r4, _080A6A1C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x8 - strh r0, [r5, 0x22] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r0, _080A6A20 @ =sub_8074C44 - str r0, [r5, 0x1C] - ldr r1, _080A6A24 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6A18: .4byte 0x0000fff0 -_080A6A1C: .4byte gBattleAnimAttacker -_080A6A20: .4byte sub_8074C44 -_080A6A24: .4byte DestroyAnimSprite - thumb_func_end sub_80A69B8 - - thumb_func_start sub_80A6A28 -sub_80A6A28: @ 80A6A28 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] - ldr r5, _080A6AA0 @ =gBattleAnimArgs - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r2, _080A6AA4 @ =gUnknown_83E3898 - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A6A68 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080A6A68: - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x20 - cmp r0, 0 - bne _080A6A74 - ldr r2, _080A6AA8 @ =0x0000ffe0 -_080A6A74: - movs r0, 0x28 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x20] - strh r1, [r4, 0x30] - lsls r0, r2, 16 - asrs r0, 16 - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - subs r0, 0x28 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x38] - ldr r0, _080A6AAC @ =sub_80A6AB0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6AA0: .4byte gBattleAnimArgs -_080A6AA4: .4byte gUnknown_83E3898 -_080A6AA8: .4byte 0x0000ffe0 -_080A6AAC: .4byte sub_80A6AB0 - thumb_func_end sub_80A6A28 - - thumb_func_start sub_80A6AB0 -sub_80A6AB0: @ 80A6AB0 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080A6B00 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r4, 0x24] - movs r3, 0x24 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080A6ADC - lsls r0, r1, 16 - negs r0, r0 - lsrs r1, r0, 16 -_080A6ADC: - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r2 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A6B06 -_080A6B00: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A6B06: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6AB0 - - thumb_func_start sub_80A6B0C -sub_80A6B0C: @ 80A6B0C - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A6B2C - adds r0, r5, 0 - movs r1, 0x5 - bl sub_8076B2C - adds r0, 0x8 - b _080A6B36 -_080A6B2C: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_8076B2C - subs r0, 0x8 -_080A6B36: - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8074480 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0 - bl sub_8076B2C - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A6B58 - adds r0, 0x3 -_080A6B58: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A6B0C - - thumb_func_start sub_80A6B64 -sub_80A6B64: @ 80A6B64 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A6B78 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6B80 - ldr r0, _080A6B7C @ =gBattleAnimAttacker - b _080A6B82 - .align 2, 0 -_080A6B78: .4byte gBattleAnimArgs -_080A6B7C: .4byte gBattleAnimAttacker -_080A6B80: - ldr r0, _080A6BC0 @ =gBattleAnimTarget -_080A6B82: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A6B0C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - ldr r0, _080A6BC4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - strh r0, [r5, 0x2E] - adds r0, r1, 0x2 - strh r0, [r5, 0x30] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, _080A6BC8 @ =sub_80A6BD0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6BCC @ =sub_8074F6C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6BC0: .4byte gBattleAnimTarget -_080A6BC4: .4byte gBattleAnimArgs -_080A6BC8: .4byte sub_80A6BD0 -_080A6BCC: .4byte sub_8074F6C - thumb_func_end sub_80A6B64 - - thumb_func_start sub_80A6BD0 -sub_80A6BD0: @ 80A6BD0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A6BF8 - ldr r1, _080A6C00 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080A6C04 @ =sub_8074F6C - str r0, [r4, 0x1C] -_080A6BF8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C00: .4byte DestroyAnimSprite -_080A6C04: .4byte sub_8074F6C - thumb_func_end sub_80A6BD0 - - thumb_func_start sub_80A6C08 -sub_80A6C08: @ 80A6C08 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A6C1C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6C24 - ldr r0, _080A6C20 @ =gBattleAnimAttacker - b _080A6C26 - .align 2, 0 -_080A6C1C: .4byte gBattleAnimArgs -_080A6C20: .4byte gBattleAnimAttacker -_080A6C24: - ldr r0, _080A6C44 @ =gBattleAnimTarget -_080A6C26: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80A6B0C - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r1, _080A6C48 @ =sub_80A6C50 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6C4C @ =sub_8074F50 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C44: .4byte gBattleAnimTarget -_080A6C48: .4byte sub_80A6C50 -_080A6C4C: .4byte sub_8074F50 - thumb_func_end sub_80A6C08 - - thumb_func_start sub_80A6C50 -sub_80A6C50: @ 80A6C50 - 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, 0x10 - ble _080A6C76 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080A6C7C @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6C80 @ =sub_8074F50 - str r0, [r4, 0x1C] -_080A6C76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C7C: .4byte move_anim_8074EE0 -_080A6C80: .4byte sub_8074F50 - thumb_func_end sub_80A6C50 - - thumb_func_start sub_80A6C84 -sub_80A6C84: @ 80A6C84 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _080A6C98 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6CA0 - ldr r0, _080A6C9C @ =gBattleAnimAttacker - b _080A6CA2 - .align 2, 0 -_080A6C98: .4byte gBattleAnimArgs -_080A6C9C: .4byte gBattleAnimAttacker -_080A6CA0: - ldr r0, _080A6CF4 @ =gBattleAnimTarget -_080A6CA2: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8076B2C - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bgt _080A6CCA - movs r0, 0xA - strh r0, [r4, 0x22] -_080A6CCA: - movs r0, 0x1 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - adds r1, r4, 0 - adds r1, 0x43 - ldrb r0, [r1] - strh r0, [r4, 0x32] - ldrb r0, [r1] - adds r0, 0x4 - strh r0, [r4, 0x34] - strh r6, [r4, 0x36] - ldr r1, _080A6CF8 @ =sub_80A6D00 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6CFC @ =sub_8074F50 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6CF4: .4byte gBattleAnimTarget -_080A6CF8: .4byte sub_80A6D00 -_080A6CFC: .4byte sub_8074F50 - thumb_func_end sub_80A6C84 - - thumb_func_start sub_80A6D00 -sub_80A6D00: @ 80A6D00 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x36] - adds r0, 0x1 - strh r0, [r1, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080A6D16 - ldr r0, _080A6D1C @ =sub_80A6D20 - str r0, [r1, 0x1C] -_080A6D16: - pop {r0} - bx r0 - .align 2, 0 -_080A6D1C: .4byte sub_80A6D20 - thumb_func_end sub_80A6D00 - - thumb_func_start sub_80A6D20 -sub_80A6D20: @ 80A6D20 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0x4 - strh r1, [r2, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFE - ble _080A6D52 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080A6D4C - strh r0, [r2, 0x24] - ldr r0, _080A6D48 @ =sub_80A6C50 - str r0, [r2, 0x1C] - b _080A6D88 - .align 2, 0 -_080A6D48: .4byte sub_80A6C50 -_080A6D4C: - movs r0, 0xFF - ands r1, r0 - strh r1, [r2, 0x30] -_080A6D52: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0x4F - ble _080A6D62 - ldrh r0, [r2, 0x34] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080A6D62: - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0x9F - ble _080A6D72 - ldrh r0, [r2, 0x32] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080A6D72: - ldr r1, _080A6D8C @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - asrs r1, r0, 1 - adds r0, r1 - strh r0, [r2, 0x24] -_080A6D88: - pop {r0} - bx r0 - .align 2, 0 -_080A6D8C: .4byte gSineTable - thumb_func_end sub_80A6D20 - - thumb_func_start sub_80A6D90 -sub_80A6D90: @ 80A6D90 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A6DA4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6DAC - ldr r0, _080A6DA8 @ =gBattleAnimAttacker - b _080A6DAE - .align 2, 0 -_080A6DA4: .4byte gBattleAnimArgs -_080A6DA8: .4byte gBattleAnimAttacker -_080A6DAC: - ldr r0, _080A6DD0 @ =gBattleAnimTarget -_080A6DAE: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A6B0C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A6DD4 - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x2 - b _080A6DDE - .align 2, 0 -_080A6DD0: .4byte gBattleAnimTarget -_080A6DD4: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3 -_080A6DDE: - strh r0, [r5, 0x2E] - ldr r0, _080A6DEC @ =sub_80A6DF0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6DEC: .4byte sub_80A6DF0 - thumb_func_end sub_80A6D90 - - thumb_func_start sub_80A6DF0 -sub_80A6DF0: @ 80A6DF0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080A6E1E - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, _080A6E24 @ =sub_80A6E2C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6E28 @ =sub_8074F6C - str r0, [r4, 0x1C] -_080A6E1E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6E24: .4byte sub_80A6E2C -_080A6E28: .4byte sub_8074F6C - thumb_func_end sub_80A6DF0 - - thumb_func_start sub_80A6E2C -sub_80A6E2C: @ 80A6E2C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A6E44 - adds r0, r1, 0 - bl DestroyAnimSprite -_080A6E44: - pop {r0} - bx r0 - thumb_func_end sub_80A6E2C - - thumb_func_start sub_80A6E48 -sub_80A6E48: @ 80A6E48 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r5, _080A6E8C @ =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, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x36] - ldr r1, _080A6E90 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, _080A6E94 @ =sub_8074BE4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6E8C: .4byte gBattleAnimArgs -_080A6E90: .4byte move_anim_8074EE0 -_080A6E94: .4byte sub_8074BE4 - thumb_func_end sub_80A6E48 - - thumb_func_start sub_80A6E98 -sub_80A6E98: @ 80A6E98 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A6EAC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6EB4 - ldr r0, _080A6EB0 @ =gBattleAnimAttacker - b _080A6EB6 - .align 2, 0 -_080A6EAC: .4byte gBattleAnimArgs -_080A6EB0: .4byte gBattleAnimAttacker -_080A6EB4: - ldr r0, _080A6ED0 @ =gBattleAnimTarget -_080A6EB6: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80A6B0C - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x30] - ldr r0, _080A6ED4 @ =sub_80A6ED8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6ED0: .4byte gBattleAnimTarget -_080A6ED4: .4byte sub_80A6ED8 - thumb_func_end sub_80A6E98 - - thumb_func_start sub_80A6ED8 -sub_80A6ED8: @ 80A6ED8 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080A6F0A - cmp r0, 0x1 - bgt _080A6EEE - cmp r0, 0 - beq _080A6EF4 - b _080A6F38 -_080A6EEE: - cmp r0, 0x2 - beq _080A6F24 - b _080A6F38 -_080A6EF4: - ldrh r0, [r1, 0x26] - subs r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080A6F38 - b _080A6F1C -_080A6F0A: - ldrh r0, [r1, 0x26] - adds r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080A6F38 -_080A6F1C: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _080A6F38 -_080A6F24: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080A6F38 - adds r0, r1, 0 - bl DestroyAnimSprite -_080A6F38: - pop {r0} - bx r0 - thumb_func_end sub_80A6ED8 - - thumb_func_start sub_80A6F3C -sub_80A6F3C: @ 80A6F3C - push {r4,lr} - adds r4, r0, 0 - ldr r3, _080A6F88 @ =gSprites - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r4, 0x30] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A6F7A - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] - adds r0, r4, 0 - bl move_anim_8074EE0 -_080A6F7A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6F88: .4byte gSprites - thumb_func_end sub_80A6F3C - - thumb_func_start sub_80A6F8C -sub_80A6F8C: @ 80A6F8C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080A6FD4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080A6FD8 @ =gUnknown_2023D44 - ldr r0, _080A6FDC @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6FE4 - ldr r0, _080A6FE0 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r5, 0x20] - adds r1, r0, 0 - b _080A6FEE - .align 2, 0 -_080A6FD4: .4byte gBattleAnimAttacker -_080A6FD8: .4byte gUnknown_2023D44 -_080A6FDC: .4byte gBattleAnimTarget -_080A6FE0: .4byte gBattleAnimArgs -_080A6FE4: - ldr r1, _080A7018 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080A6FEE: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - strh r6, [r5, 0x32] - ldr r0, _080A701C @ =sub_80A6F3C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A7018: .4byte gBattleAnimArgs -_080A701C: .4byte sub_80A6F3C - thumb_func_end sub_80A6F8C - - thumb_func_start sub_80A7020 -sub_80A7020: @ 80A7020 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r1, _080A704C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x38] - ldr r0, _080A7050 @ =sub_8074C44 - str r0, [r4, 0x1C] - ldr r1, _080A7054 @ =sub_80A7058 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A704C: .4byte gBattleAnimArgs -_080A7050: .4byte sub_8074C44 -_080A7054: .4byte sub_80A7058 - thumb_func_end sub_80A7020 - - thumb_func_start sub_80A7058 -sub_80A7058: @ 80A7058 - push {lr} - ldrh r1, [r0, 0x30] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0xF - strh r1, [r0, 0x36] - ldr r1, _080A7078 @ =sub_8075590 - str r1, [r0, 0x1C] - ldr r1, _080A707C @ =sub_80A7080 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A7078: .4byte sub_8075590 -_080A707C: .4byte sub_80A7080 - thumb_func_end sub_80A7058 - - thumb_func_start sub_80A7080 -sub_80A7080: @ 80A7080 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x38] - movs r3, 0x38 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080A7096 - adds r0, r1, 0 - bl DestroyAnimSprite - b _080A709A -_080A7096: - subs r0, r2, 0x1 - strh r0, [r1, 0x38] -_080A709A: - pop {r0} - bx r0 - thumb_func_end sub_80A7080 - - thumb_func_start sub_80A70A0 -sub_80A70A0: @ 80A70A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080A70CC @ =gUnknown_2023D44 - ldr r0, _080A70D0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_80758E0 - ldr r1, _080A70D4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080A70D8 @ =sub_80A70DC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A70CC: .4byte gUnknown_2023D44 -_080A70D0: .4byte gBattleAnimAttacker -_080A70D4: .4byte gTasks -_080A70D8: .4byte sub_80A70DC - thumb_func_end sub_80A70A0 - - thumb_func_start sub_80A70DC -sub_80A70DC: @ 80A70DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A710C @ =gUnknown_2023D44 - ldr r0, _080A7110 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r4, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7118 - ldr r1, _080A7114 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r6, r2, 0 - b _080A7126 - .align 2, 0 -_080A710C: .4byte gUnknown_2023D44 -_080A7110: .4byte gBattleAnimAttacker -_080A7114: .4byte gTasks -_080A7118: - ldr r2, _080A7158 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - ldrh r3, [r0, 0x8] - adds r6, r1, 0 -_080A7126: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - bl obj_id_set_rotscale - ldr r1, _080A7158 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A7160 - ldrh r0, [r1, 0x8] - adds r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A715C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - adds r1, 0x1 - b _080A718A - .align 2, 0 -_080A7158: .4byte gTasks -_080A715C: .4byte gSprites -_080A7160: - cmp r0, 0x1 - bne _080A7176 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bne _080A71D0 - movs r0, 0x2 - b _080A71CE -_080A7176: - ldrh r0, [r1, 0x8] - subs r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A71C4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - subs r1, 0x1 -_080A718A: - strh r1, [r0, 0x26] - adds r0, r4, 0 - bl sub_80759DC - ldr r0, _080A71C8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r2, [r1, r3] - movs r0, 0xF2 - lsls r0, 4 - cmp r2, r0 - beq _080A71AA - cmp r2, 0 - bne _080A71D0 -_080A71AA: - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bne _080A71CC - adds r0, r4, 0 - bl sub_8075980 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080A71D0 - .align 2, 0 -_080A71C4: .4byte gSprites -_080A71C8: .4byte gTasks -_080A71CC: - adds r0, r2, 0x1 -_080A71CE: - strh r0, [r1, 0xA] -_080A71D0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A70DC - - thumb_func_start sub_80A71D8 -sub_80A71D8: @ 80A71D8 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _080A71FC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7204 - ldr r0, _080A7200 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080A7210 - .align 2, 0 -_080A71FC: .4byte gBattleAnimAttacker -_080A7200: .4byte gBattleAnimArgs -_080A7204: - ldr r1, _080A7244 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r5, r1, 0 -_080A7210: - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080A7248 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A724C - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - adds r2, r0, 0 - orrs r2, r1 - strb r2, [r3] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A7260 - movs r0, 0x2 - orrs r2, r0 - strb r2, [r3] - b _080A7260 - .align 2, 0 -_080A7244: .4byte gBattleAnimArgs -_080A7248: .4byte gBattleAnimAttacker -_080A724C: - movs r2, 0x4 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080A7260 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_080A7260: - ldr r0, _080A7274 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldr r1, _080A7278 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7274: .4byte sub_8074F6C -_080A7278: .4byte DestroyAnimSprite - thumb_func_end sub_80A71D8 - - thumb_func_start sub_80A727C -sub_80A727C: @ 80A727C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r0, _080A7298 @ =sub_8074F50 - str r0, [r4, 0x1C] - ldr r1, _080A729C @ =sub_80A72A0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7298: .4byte sub_8074F50 -_080A729C: .4byte sub_80A72A0 - thumb_func_end sub_80A727C - - thumb_func_start sub_80A72A0 -sub_80A72A0: @ 80A72A0 - push {lr} - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x36] - ldr r1, _080A72C0 @ =sub_8075590 - str r1, [r0, 0x1C] - ldr r1, _080A72C4 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A72C0: .4byte sub_8075590 -_080A72C4: .4byte DestroyAnimSprite - thumb_func_end sub_80A72A0 - - thumb_func_start sub_80A72C8 -sub_80A72C8: @ 80A72C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A72EC - ldr r1, _080A72E8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080A730E - .align 2, 0 -_080A72E8: .4byte gBattleAnimArgs -_080A72EC: - ldr r0, _080A73B4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A730E - ldr r1, _080A73B8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080A730E: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r4, _080A73BC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r6, _080A73B8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - ldrh r1, [r5, 0x20] - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_8075B30 - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 16 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A7380 - ldr r2, _080A73C0 @ =0xffffa000 - adds r0, r4, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_080A7380: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8075A1C - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - mov r0, r8 - strh r0, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A73C4 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A73C8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A73B4: .4byte gBattleAnimAttacker -_080A73B8: .4byte gBattleAnimArgs -_080A73BC: .4byte gBattleAnimTarget -_080A73C0: .4byte 0xffffa000 -_080A73C4: .4byte sub_8075590 -_080A73C8: .4byte DestroyAnimSprite - thumb_func_end sub_80A72C8 - - thumb_func_start sub_80A73CC -sub_80A73CC: @ 80A73CC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A73F6 - ldr r2, _080A73FC @ =gTasks - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - adds r0, r3, 0 - bl DestroySprite -_080A73F6: - pop {r0} - bx r0 - .align 2, 0 -_080A73FC: .4byte gTasks - thumb_func_end sub_80A73CC - - thumb_func_start sub_80A7400 -sub_80A7400: @ 80A7400 - push {r4,lr} - adds r2, r0, 0 - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A7430 @ =gTasks - adds r4, r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - ble _080A7434 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x38] - adds r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x36] - ldrh r3, [r2, 0x3A] - adds r0, r3 - b _080A7442 - .align 2, 0 -_080A7430: .4byte gTasks -_080A7434: - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x34] - subs r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - subs r0, r1 -_080A7442: - strh r0, [r2, 0x3A] - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x30] - adds r3, r0, r1 - strh r3, [r2, 0x30] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r4, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7466 - lsls r0, r3, 16 - lsrs r0, 24 - negs r0, r0 - b _080A746A -_080A7466: - lsls r0, r3, 16 - lsrs r0, 24 -_080A746A: - strh r0, [r2, 0x24] - ldrh r1, [r4, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A747E - ldrh r0, [r2, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7482 -_080A747E: - ldrh r0, [r2, 0x32] - lsrs r0, 8 -_080A7482: - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - subs r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A7498 - movs r0, 0x1E - strh r0, [r2, 0x2E] - ldr r0, _080A74A0 @ =sub_80A73CC - str r0, [r2, 0x1C] -_080A7498: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A74A0: .4byte sub_80A73CC - thumb_func_end sub_80A7400 - - thumb_func_start sub_80A74A4 -sub_80A74A4: @ 80A74A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A74E8 @ =gTasks - adds r6, r0, r1 - ldrh r2, [r6, 0x16] - movs r1, 0x2 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - ldrh r3, [r7, 0x30] - adds r2, r0, r3 - strh r2, [r7, 0x30] - ldrh r0, [r6, 0x18] - ands r1, r0 - ldrh r0, [r7, 0x32] - adds r1, r0 - strh r1, [r7, 0x32] - ldrh r1, [r6, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A74EC - lsls r0, r2, 16 - lsrs r0, 24 - negs r0, r0 - b _080A74F0 - .align 2, 0 -_080A74E8: .4byte gTasks -_080A74EC: - lsls r0, r2, 16 - lsrs r0, 24 -_080A74F0: - strh r0, [r7, 0x24] - ldrh r1, [r6, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7504 - ldrh r0, [r7, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7508 -_080A7504: - ldrh r0, [r7, 0x32] - lsrs r0, 8 -_080A7508: - strh r0, [r7, 0x26] - ldrh r0, [r7, 0x2E] - subs r1, r0, 0x1 - strh r1, [r7, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A75D4 - movs r4, 0 - movs r0, 0x8 - strh r0, [r7, 0x2E] - movs r0, 0x4 - strh r0, [r6, 0x12] - movs r0, 0x80 - lsls r0, 5 - bl sub_80D8B90 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r2, r0, r1 - strh r2, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r3, [r7, 0x22] - adds r0, r3 - strh r0, [r7, 0x22] - strh r4, [r7, 0x26] - strh r4, [r7, 0x24] - ldrh r3, [r6, 0x1E] - movs r0, 0x1E - ldrsh r1, [r6, r0] - lsls r0, r2, 16 - asrs r0, 16 - cmp r1, r0 - blt _080A7552 - subs r0, r3, r2 - b _080A7554 -_080A7552: - subs r0, r2, r3 -_080A7554: - lsls r0, 24 - lsrs r4, r0, 16 - ldrh r3, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r7, 0x22] - movs r6, 0x22 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _080A756C - subs r0, r3, r2 - b _080A756E -_080A756C: - subs r0, r2, r3 -_080A756E: - lsls r0, 24 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - strh r0, [r7, 0x32] - strh r0, [r7, 0x30] - strh r0, [r7, 0x3A] - strh r0, [r7, 0x38] - lsls r0, r4, 16 - asrs r0, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r6, 0xE0 - lsls r6, 1 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x34] - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x36] - ldr r0, _080A75E0 @ =sub_80A7400 - str r0, [r7, 0x1C] -_080A75D4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A75E0: .4byte sub_80A7400 - thumb_func_end sub_80A74A4 - - thumb_func_start sub_80A75E4 -sub_80A75E4: @ 80A75E4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A7608 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A7602 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A7602: - pop {r0} - bx r0 - .align 2, 0 -_080A7608: .4byte gTasks - thumb_func_end sub_80A75E4 - - thumb_func_start sub_80A760C -sub_80A760C: @ 80A760C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080A7660 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r1, r0, 0x1 - strh r1, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bgt _080A76E0 - ldr r0, _080A7664 @ =gUnknown_83E3C28 - movs r2, 0x1A - ldrsh r1, [r5, r2] - movs r3, 0x1C - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0xC] - ldrb r4, [r5, 0xA] - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r0, 4 - add r0, r12 - lsls r0, 2 - ldr r1, _080A7668 @ =gSprites - adds r6, r0, r1 - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A766C - cmp r0, 0x2 - beq _080A7682 - b _080A7690 - .align 2, 0 -_080A7660: .4byte gTasks -_080A7664: .4byte gUnknown_83E3C28 -_080A7668: .4byte gSprites -_080A766C: - ldrb r2, [r6, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x3] - b _080A7690 -_080A7682: - ldrb r0, [r6, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r6, 0x3] -_080A7690: - ldr r3, _080A76E8 @ =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r4, r2, r3 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x14] - subs r0, r1 - strh r0, [r6, 0x2E] - strh r7, [r6, 0x3C] - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r0, 0xD - lsls r0, 1 - adds r0, r2 - adds r3, 0x8 - adds r0, r3 - mov r2, r12 - strh r2, [r0] - ldrh r0, [r4, 0xE] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0x3F - negs r0, r0 - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x93 - bl PlaySE12WithPanning - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0x2 - ble _080A76E0 - ldr r0, _080A76EC @ =sub_80A75E4 - str r0, [r4] -_080A76E0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A76E8: .4byte gTasks -_080A76EC: .4byte sub_80A75E4 - thumb_func_end sub_80A760C - - thumb_func_start sub_80A76F0 -sub_80A76F0: @ 80A76F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r9, r0 - movs r5, 0 - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r4, sp - adds r4, 0x2 - strh r1, [r4] - bl sub_8073788 - lsls r0, 24 - mov r10, r4 - cmp r0, 0 - beq _080A775C - ldr r1, _080A774C @ =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r3, _080A7750 @ =gBattleAnimArgs - ldrh r0, [r3] - negs r0, r0 - strh r0, [r3] - ldrh r1, [r3, 0x4] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080A7754 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 - .align 2, 0 -_080A774C: .4byte gTasks -_080A7750: .4byte gBattleAnimArgs -_080A7754: - movs r0, 0x1 - orrs r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 -_080A775C: - ldr r1, _080A77A0 @ =gUnknown_2023BD6 - ldr r0, _080A77A4 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0 - bne _080A77B6 - ldr r1, _080A77A8 @ =gTasks - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x10] - ldr r2, _080A77AC @ =gBattleAnimArgs - ldrh r0, [r2] - negs r0, r0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - negs r0, r0 - strh r0, [r2, 0x2] - ldrh r1, [r2, 0x4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080A77B0 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _080A77B4 - .align 2, 0 -_080A77A0: .4byte gUnknown_2023BD6 -_080A77A4: .4byte gBattleAnimTarget -_080A77A8: .4byte gTasks -_080A77AC: .4byte gBattleAnimArgs -_080A77B0: - movs r0, 0x1 - orrs r0, r1 -_080A77B4: - strh r0, [r2, 0x4] -_080A77B6: - ldr r5, _080A7810 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - ldr r1, _080A7814 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - adds r6, r0, 0 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - mov r9, r0 - ldr r0, _080A7818 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7820 - ldr r4, _080A781C @ =gBattleAnimTarget - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A7820 - ldrb r0, [r4] - movs r1, 0 - mov r2, sp - mov r3, r10 - bl sub_8076D9C - b _080A7842 - .align 2, 0 -_080A7810: .4byte gBattleAnimAttacker -_080A7814: .4byte gTasks -_080A7818: .4byte gBattleTypeFlags -_080A781C: .4byte gBattleAnimTarget -_080A7820: - mov r5, sp - ldr r4, _080A787C @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - strh r0, [r1] -_080A7842: - mov r4, sp - ldr r0, _080A7880 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - mov r2, sp - ldr r3, _080A7884 @ =gBattleAnimArgs - ldrh r0, [r3] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r1, 0x1E] - strh r0, [r4] - ldrh r0, [r3, 0x2] - mov r3, r10 - ldrh r3, [r3] - adds r0, r3 - strh r0, [r1, 0x20] - mov r1, r10 - strh r0, [r1] - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - cmp r0, r1 - blt _080A7888 - subs r0, r2, r1 - b _080A788A - .align 2, 0 -_080A787C: .4byte gBattleAnimTarget -_080A7880: .4byte gTasks -_080A7884: .4byte gBattleAnimArgs -_080A7888: - subs r0, r1, r2 -_080A788A: - lsls r0, 16 - lsrs r0, 16 - lsls r4, r0, 16 - asrs r4, 16 - ldr r5, _080A7900 @ =gBattleAnimArgs - ldrh r1, [r5, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - ldr r2, _080A7904 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r6, r1, r2 - strh r0, [r6, 0x12] - movs r1, 0x12 - ldrsh r0, [r6, r1] - movs r1, 0x80 - bl sub_80D8AA0 - strh r0, [r6, 0x14] - ldrh r0, [r5, 0x4] - strh r0, [r6, 0x16] - mov r2, r10 - ldrh r1, [r2] - movs r3, 0 - ldrsh r0, [r2, r3] - mov r4, r9 - cmp r0, r4 - blt _080A7908 - subs r4, r1, r4 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x12 - ldrsh r0, [r6, r1] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - strh r1, [r6, 0x18] - b _080A7928 - .align 2, 0 -_080A7900: .4byte gBattleAnimArgs -_080A7904: .4byte gTasks -_080A7908: - subs r4, r1 - lsls r4, 16 - asrs r4, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r6, 0x18] -_080A7928: - ldr r1, _080A7968 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r4, _080A796C @ =gBattleAnimArgs - ldrh r0, [r4, 0x6] - strh r0, [r5, 0xE] - ldrh r1, [r4, 0x8] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080A7978 - movs r0, 0x80 - eors r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7970 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A7974 @ =0x0000ffc0 - adds r1, r2, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7968: .4byte gTasks -_080A796C: .4byte gBattleAnimArgs -_080A7970: .4byte gBattleAnimTarget -_080A7974: .4byte 0x0000ffc0 -_080A7978: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7998 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080A799C @ =0x0000ffc0 - adds r1, r3, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7998: .4byte gBattleAnimTarget -_080A799C: .4byte 0x0000ffc0 -_080A79A0: - ldr r0, _080A79DC @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x8] - subs r0, r1 -_080A79B0: - strh r0, [r5, 0xC] - ldr r0, _080A79E0 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _080A79C8 - movs r0, 0x3 - strh r0, [r1, 0xC] -_080A79C8: - ldr r0, _080A79E4 @ =sub_80A760C - str r0, [r1] - 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 -_080A79DC: .4byte gBattleAnimTarget -_080A79E0: .4byte gTasks -_080A79E4: .4byte sub_80A760C - thumb_func_end sub_80A76F0 - - thumb_func_start sub_80A79E8 -sub_80A79E8: @ 80A79E8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r0, _080A7A10 @ =gUnknown_83E3D18 - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x2E] - ldr r0, _080A7A14 @ =sub_80A7A18 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7A10: .4byte gUnknown_83E3D18 -_080A7A14: .4byte sub_80A7A18 - thumb_func_end sub_80A79E8 - - thumb_func_start sub_80A7A18 -sub_80A7A18: @ 80A7A18 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7A7C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r5, [r4, 0x2E] - ldr r1, _080A7A84 @ =gPlttBufferFaded - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - adds r6, r1, 0 - adds r1, r5, 0 - adds r1, 0x9 - lsls r0, r5, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - movs r3, 0x7 - lsls r1, 1 - adds r1, r6 -_080A7A50: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080A7A50 - adds r0, r5, 0 - adds r0, 0xF - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _080A7A7C - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7A7C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7A84: .4byte gPlttBufferFaded - thumb_func_end sub_80A7A18 - - thumb_func_start sub_80A7A88 -sub_80A7A88: @ 80A7A88 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r4, _080A7B28 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A7B2C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _080A7B30 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7ACC - ldrh r0, [r4, 0x4] - negs r0, r0 - strh r0, [r4, 0x4] -_080A7ACC: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - ldrh r1, [r5, 0x20] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_8075B30 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8075A1C - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - strh r6, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A7B34 @ =sub_80756A4 - str r0, [r5, 0x1C] - ldr r1, _080A7B38 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7B28: .4byte gBattleAnimTarget -_080A7B2C: .4byte gBattleAnimArgs -_080A7B30: .4byte gBattleAnimAttacker -_080A7B34: .4byte sub_80756A4 -_080A7B38: .4byte DestroyAnimSprite - thumb_func_end sub_80A7A88 - - thumb_func_start sub_80A7B3C -sub_80A7B3C: @ 80A7B3C - ldr r1, _080A7B4C @ =0x0000fff0 - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, _080A7B50 @ =sub_80A7B54 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A7B4C: .4byte 0x0000fff0 -_080A7B50: .4byte sub_80A7B54 - thumb_func_end sub_80A7B3C - - thumb_func_start sub_80A7B54 -sub_80A7B54: @ 80A7B54 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldr r0, _080A7BC0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7B78 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_080A7B78: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7BB8 - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7BB8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7BB8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7BC0: .4byte gBattleAnimAttacker - thumb_func_end sub_80A7B54 - - thumb_func_start sub_80A7BC4 -sub_80A7BC4: @ 80A7BC4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080A7C10 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A7C14 @ =sub_8075590 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080A7C18 @ =sub_80A7C1C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7C10: .4byte gBattleAnimTarget -_080A7C14: .4byte sub_8075590 -_080A7C18: .4byte sub_80A7C1C - thumb_func_end sub_80A7BC4 - - thumb_func_start sub_80A7C1C -sub_80A7C1C: @ 80A7C1C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3F - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x9F - bl PlaySE12WithPanning - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - movs r2, 0 - movs r1, 0x7 - adds r0, r4, 0 - adds r0, 0x3C -_080A7C50: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080A7C50 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r2, _080A7C98 @ =0x0000fff4 - adds r1, r2, 0 - subs r1, r0 - strh r1, [r4, 0x3A] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA0 - bl __umodsi3 - adds r0, 0xA0 - strh r0, [r4, 0x3C] - ldr r0, _080A7C9C @ =sub_80A7CA0 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7C98: .4byte 0x0000fff4 -_080A7C9C: .4byte sub_80A7CA0 - thumb_func_end sub_80A7C1C - - thumb_func_start sub_80A7CA0 -sub_80A7CA0: @ 80A7CA0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x2E] - adds r0, r1, r2 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 24 - strh r2, [r4, 0x24] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7CBE - negs r0, r2 - strh r0, [r4, 0x24] -_080A7CBE: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7CFE - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A7CFE - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7CFE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7CA0 - - thumb_func_start sub_80A7D04 -sub_80A7D04: @ 80A7D04 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r0, _080A7D54 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7D22 - ldrh r0, [r4, 0x22] - adds r0, 0x10 - strh r0, [r4, 0x22] -_080A7D22: - ldr r1, _080A7D58 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080A7D5C @ =sub_8074A80 - str r0, [r4, 0x1C] - ldr r1, _080A7D60 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7D54: .4byte gBattleAnimAttacker -_080A7D58: .4byte gBattleAnimArgs -_080A7D5C: .4byte sub_8074A80 -_080A7D60: .4byte DestroyAnimSprite - thumb_func_end sub_80A7D04 - - thumb_func_start sub_80A7D64 -sub_80A7D64: @ 80A7D64 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r7, 0x20 - ldr r4, _080A7DE0 @ =0x0000ffe0 - movs r0, 0x10 - mov r8, r0 - ldr r6, _080A7DE4 @ =0x0000fff0 - ldr r0, _080A7DE8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080A7D90 - adds r7, r4, 0 - movs r4, 0x20 - mov r8, r6 - movs r6, 0x10 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A7D90: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080A7DEC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - add r0, r8 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080A7DF0 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A7DF4 @ =sub_80A7DF8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7DE0: .4byte 0x0000ffe0 -_080A7DE4: .4byte 0x0000fff0 -_080A7DE8: .4byte gBattleAnimArgs -_080A7DEC: .4byte gBattleAnimTarget -_080A7DF0: .4byte sub_8075590 -_080A7DF4: .4byte sub_80A7DF8 - thumb_func_end sub_80A7D64 - - thumb_func_start sub_80A7DF8 -sub_80A7DF8: @ 80A7DF8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7E0E - adds r0, r2, 0 - bl DestroyAnimSprite -_080A7E0E: - pop {r0} - bx r0 - thumb_func_end sub_80A7DF8 - - thumb_func_start sub_80A7E14 -sub_80A7E14: @ 80A7E14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x20 - mov r8, r0 - ldr r4, _080A7EA8 @ =0x0000ffe0 - movs r2, 0x10 - mov r9, r2 - ldr r6, _080A7EAC @ =0x0000fff0 - ldr r7, _080A7EB0 @ =gBattleAnimArgs - ldrh r1, [r7] - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - beq _080A7E48 - mov r8, r4 - movs r4, 0x20 - mov r9, r6 - movs r6, 0x10 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_080A7E48: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080A7EB4 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - add r0, r9 - 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 - adds r0, r6 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r7] - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x3A] - ldr r0, _080A7EB8 @ =sub_80A7EBC - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7EA8: .4byte 0x0000ffe0 -_080A7EAC: .4byte 0x0000fff0 -_080A7EB0: .4byte gBattleAnimArgs -_080A7EB4: .4byte gBattleAnimTarget -_080A7EB8: .4byte sub_80A7EBC - thumb_func_end sub_80A7E14 - - thumb_func_start sub_80A7EBC -sub_80A7EBC: @ 80A7EBC - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - ldr r0, _080A7F28 @ =0x0000fffe - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - eors r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x36] - strh r2, [r4, 0x34] - ldr r0, _080A7F2C @ =sub_80A7F30 - str r0, [r4, 0x1C] -_080A7F20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F28: .4byte 0x0000fffe -_080A7F2C: .4byte sub_80A7F30 - thumb_func_end sub_80A7EBC - - thumb_func_start sub_80A7F30 -sub_80A7F30: @ 80A7F30 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A7F48 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_080A7F48: - ldrh r0, [r4, 0x34] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080A7F8A - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - movs r1, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080A7F90 @ =sub_80A7F94 - str r0, [r4, 0x1C] -_080A7F8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F90: .4byte sub_80A7F94 - thumb_func_end sub_80A7F30 - - thumb_func_start sub_80A7F94 -sub_80A7F94: @ 80A7F94 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080A7FA8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7FA8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7F94 - - thumb_func_start sub_80A7FB0 -sub_80A7FB0: @ 80A7FB0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80758E0 - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0xD0 - movs r3, 0 - bl obj_id_set_rotscale - ldr r1, _080A8008 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_8075B48 - ldr r1, _080A800C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x50 - strh r1, [r0, 0x8] - ldr r1, _080A8010 @ =sub_80A8014 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8008: .4byte gSprites -_080A800C: .4byte gTasks -_080A8010: .4byte sub_80A8014 - thumb_func_end sub_80A7FB0 - - thumb_func_start sub_80A8014 -sub_80A8014: @ 80A8014 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A806C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A8064 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8075980 - ldr r1, _080A8070 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0x1 - bl sub_8075B48 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A8064: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A806C: .4byte gTasks -_080A8070: .4byte gSprites - thumb_func_end sub_80A8014 - - thumb_func_start sub_80A8074 -sub_80A8074: @ 80A8074 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A80C0 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x8] - movs r1, 0 - bl sub_80758E0 - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0x14] - ldr r0, _080A80C4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r0, _080A80C8 @ =sub_80A80CC - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A80C0: .4byte gTasks -_080A80C4: .4byte gBattleAnimAttacker -_080A80C8: .4byte sub_80A80CC - thumb_func_end sub_80A8074 - - thumb_func_start sub_80A80CC -sub_80A80CC: @ 80A80CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A80F0 @ =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080A80E6 - b _080A81F6 -_080A80E6: - lsls r0, 2 - ldr r1, _080A80F4 @ =_080A80F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A80F0: .4byte gTasks -_080A80F4: .4byte _080A80F8 - .align 2, 0 -_080A80F8: - .4byte _080A8110 - .4byte _080A8158 - .4byte _080A818E - .4byte _080A8194 - .4byte _080A81A4 - .4byte _080A81D8 -_080A8110: - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080A8120 - cmp r0, 0x3 - beq _080A8120 - cmp r0, 0x6 - bne _080A8128 -_080A8120: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A8200 -_080A8128: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x28 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8076440 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - b _080A81D0 -_080A8158: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A81F6 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r1, 0x3 - bne _080A816E - strh r0, [r4, 0xC] - strh r1, [r4, 0xA] - b _080A81F6 -_080A816E: - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r4, 0x10] - ldrb r0, [r4, 0x8] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8076440 - movs r0, 0x2 - strh r0, [r4, 0xA] - b _080A81F6 -_080A818E: - movs r0, 0 - strh r0, [r4, 0xA] - b _080A81F6 -_080A8194: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _080A81F6 - b _080A81CC -_080A81A4: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - subs r0, 0x50 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8076440 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 -_080A81CC: - movs r0, 0 - strh r0, [r4, 0xC] -_080A81D0: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A81F6 -_080A81D8: - ldrb r0, [r4, 0x8] - bl sub_8075980 - ldr r2, _080A81FC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A81F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A81FC: .4byte gSprites - thumb_func_end sub_80A80CC - - thumb_func_start sub_80A8200 -sub_80A8200: @ 80A8200 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _080A82DA - bl AllocOamMatrix - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xFF - bne _080A8244 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080A8240 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - b _080A82DA - .align 2, 0 -_080A8240: .4byte gSprites -_080A8244: - ldr r5, _080A82E8 @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r4, r3, r5 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrb r0, [r7, 0x16] - ldrb r1, [r7, 0xE] - subs r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r7, 0xE] - adds r0, 0x1 - strh r0, [r7, 0xE] - ldrh r0, [r7, 0x14] - adds r0, 0x1 - strh r0, [r7, 0x14] - movs r0, 0x10 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - movs r0, 0x6 - strh r0, [r4, 0x32] - adds r5, 0x1C - adds r3, r5 - ldr r0, _080A82EC @ =sub_80A82F0 - str r0, [r3] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x10 - ldrsh r2, [r7, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x1] - movs r3, 0x4 - negs r3, r3 - ands r3, r0 - movs r0, 0x1 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_080A82DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A82E8: .4byte gSprites -_080A82EC: .4byte sub_80A82F0 - thumb_func_end sub_80A8200 - - thumb_func_start sub_80A82F0 -sub_80A82F0: @ 80A82F0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A832E - ldr r3, _080A8334 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - 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 obj_delete_but_dont_free_vram -_080A832E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8334: .4byte gTasks - thumb_func_end sub_80A82F0 - - thumb_func_start sub_80A8338 -sub_80A8338: @ 80A8338 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A835C @ =gTasks - adds r4, r0, r1 - ldr r5, _080A8360 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A8364 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A838A - .align 2, 0 -_080A835C: .4byte gTasks -_080A8360: .4byte gBattleAnimArgs -_080A8364: - ldrb r0, [r5] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r1, [r4, 0x8] - strh r2, [r4, 0xA] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - strh r2, [r4, 0xE] - strh r2, [r4, 0x10] - ldr r2, _080A8390 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl sub_80762D0 - ldr r0, _080A8394 @ =sub_80A8398 - str r0, [r4] -_080A838A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8390: .4byte gUnknown_83E3E60 -_080A8394: .4byte sub_80A8398 - thumb_func_end sub_80A8338 - - thumb_func_start sub_80A8398 -sub_80A8398: @ 80A8398 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A83BC @ =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080A8400 - cmp r5, 0x1 - bgt _080A83C0 - cmp r5, 0 - beq _080A83CA - b _080A84A8 - .align 2, 0 -_080A83BC: .4byte gTasks -_080A83C0: - cmp r5, 0x2 - beq _080A8434 - cmp r5, 0x3 - beq _080A8464 - b _080A84A8 -_080A83CA: - adds r0, r4, 0 - bl sub_8076308 - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, _080A83FC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - strh r5, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A83FC: .4byte gSprites -_080A8400: - adds r0, r4, 0 - bl sub_8076308 - ldr r2, _080A8430 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - movs r0, 0 - strh r0, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A8430: .4byte gSprites -_080A8434: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A845C - ldr r2, _080A8458 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _080A84A8 - .align 2, 0 -_080A8458: .4byte gSprites -_080A845C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A84A8 -_080A8464: - adds r0, r4, 0 - bl sub_8076308 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080A84A8 - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080A849C - ldr r2, _080A8498 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080A84A8 - .align 2, 0 -_080A8498: .4byte gSprites -_080A849C: - ldrb r1, [r4, 0x8] - ldr r2, _080A84B0 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl sub_80762D0 - strh r5, [r4, 0xA] -_080A84A8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A84B0: .4byte gUnknown_83E3E60 - thumb_func_end sub_80A8398 - - thumb_func_start sub_80A84B4 -sub_80A84B4: @ 80A84B4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A84E4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A84E8 @ =gUnknown_83E3E80 - adds r0, r4, 0 - bl sub_80762D0 - ldr r0, _080A84EC @ =sub_80A84F0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A84E4: .4byte gTasks -_080A84E8: .4byte gUnknown_83E3E80 -_080A84EC: .4byte sub_80A84F0 - thumb_func_end sub_80A84B4 - - thumb_func_start sub_80A84F0 -sub_80A84F0: @ 80A84F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8518 @ =gTasks - adds r0, r1 - bl sub_8076308 - lsls r0, 24 - cmp r0, 0 - bne _080A8510 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8518: .4byte gTasks - thumb_func_end sub_80A84F0 - - thumb_func_start sub_80A851C -sub_80A851C: @ 80A851C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A854C @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A8550 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080A856A - .align 2, 0 -_080A854C: .4byte gBattleAnimAttacker -_080A8550: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, _080A859C @ =0x0000ffc0 -_080A856A: - strh r0, [r4, 0x30] - ldr r0, _080A85A0 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, _080A85A4 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A85A8 @ =sub_8074D00 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A859C: .4byte 0x0000ffc0 -_080A85A0: .4byte gBattleAnimAttacker -_080A85A4: .4byte DestroyAnimSprite -_080A85A8: .4byte sub_8074D00 - thumb_func_end sub_80A851C - - thumb_func_start sub_80A85AC -sub_80A85AC: @ 80A85AC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080A85C0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A85C8 - ldr r0, _080A85C4 @ =gBattleAnimAttacker - b _080A85CA - .align 2, 0 -_080A85C0: .4byte gBattleAnimArgs -_080A85C4: .4byte gBattleAnimAttacker -_080A85C8: - ldr r0, _080A8628 @ =gBattleAnimTarget -_080A85CA: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A85E4 - ldr r1, _080A862C @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080A85E4: - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A862C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _080A8616 - movs r0, 0x8 - strh r0, [r6, 0x22] -_080A8616: - ldr r1, _080A8630 @ =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A8634 @ =sub_8074F50 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8628: .4byte gBattleAnimTarget -_080A862C: .4byte gBattleAnimArgs -_080A8630: .4byte move_anim_8074EE0 -_080A8634: .4byte sub_8074F50 - thumb_func_end sub_80A85AC - - thumb_func_start sub_80A8638 -sub_80A8638: @ 80A8638 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A866C @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, _080A8670 @ =gUnknown_83E3F1C - adds r0, r4, 0 - bl sub_80762D0 - ldr r0, _080A8674 @ =sub_80A8678 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A866C: .4byte gTasks -_080A8670: .4byte gUnknown_83E3F1C -_080A8674: .4byte sub_80A8678 - thumb_func_end sub_80A8638 - - thumb_func_start sub_80A8678 -sub_80A8678: @ 80A8678 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A86A0 @ =gTasks - adds r0, r1 - bl sub_8076308 - lsls r0, 24 - cmp r0, 0 - bne _080A8698 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8698: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A86A0: .4byte gTasks - thumb_func_end sub_80A8678 - - thumb_func_start sub_80A86A4 -sub_80A86A4: @ 80A86A4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A8718 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, _080A871C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, _080A8720 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A870E - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_080A870E: - ldr r0, _080A8724 @ =sub_80A8728 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8718: .4byte gTasks -_080A871C: .4byte gSprites -_080A8720: .4byte gBattleAnimAttacker -_080A8724: .4byte sub_80A8728 - thumb_func_end sub_80A86A4 - - thumb_func_start sub_80A8728 -sub_80A8728: @ 80A8728 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8770 @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A878E - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8778 - ldr r2, _080A8774 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _080A878C - .align 2, 0 -_080A8770: .4byte gTasks -_080A8774: .4byte gSprites -_080A8778: - ldr r2, _080A87A0 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_080A878C: - strh r1, [r0, 0x22] -_080A878E: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080A87DC - cmp r0, 0x1 - bgt _080A87A4 - cmp r0, 0 - beq _080A87AA - b _080A886C - .align 2, 0 -_080A87A0: .4byte gSprites -_080A87A4: - cmp r0, 0x2 - beq _080A880C - b _080A886C -_080A87AA: - ldr r2, _080A87D8 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A87D8: .4byte gSprites -_080A87DC: - ldr r2, _080A8808 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8808: .4byte gSprites -_080A880C: - ldr r2, _080A8844 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080A886C - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080A8848 - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8844: .4byte gSprites -_080A8848: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8866 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_080A8866: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A886C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A8728 - - thumb_func_start sub_80A8874 -sub_80A8874: @ 80A8874 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A88C4 @ =gTasks - adds r5, r1, r0 - ldr r4, _080A88C8 @ =gBattleAnimTarget - ldrb r0, [r4] - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl sub_8076B2C - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A88D4 - ldr r0, _080A88CC @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A88D0 @ =0x04000014 - b _080A88DC - .align 2, 0 -_080A88C4: .4byte gTasks -_080A88C8: .4byte gBattleAnimTarget -_080A88CC: .4byte gBattle_BG1_X -_080A88D0: .4byte 0x04000014 -_080A88D4: - ldr r0, _080A8940 @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A8944 @ =0x04000018 -_080A88DC: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _080A891A - ldr r4, _080A8948 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080A88F4: - asrs r3, r2, 16 - cmp r3, 0 - blt _080A890C - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_080A890C: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _080A88F4 -_080A891A: - ldr r0, _080A894C @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _080A8950 @ =sub_80A8954 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8940: .4byte gBattle_BG2_X -_080A8944: .4byte 0x04000018 -_080A8948: .4byte gScanlineEffectRegBuffers -_080A894C: .4byte 0xa2600001 -_080A8950: .4byte sub_80A8954 - thumb_func_end sub_80A8874 - - thumb_func_start sub_80A8954 -sub_80A8954: @ 80A8954 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8974 @ =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080A8978 - cmp r0, 0x1 - beq _080A898E - b _080A8A0E - .align 2, 0 -_080A8974: .4byte gTasks -_080A8978: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A8A0E - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _080A8A0E -_080A898E: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8A0E - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _080A89C4 - cmp r1, 0x1 - ble _080A89CC - cmp r1, 0x2 - beq _080A89C8 - cmp r1, 0x3 - beq _080A89C8 - b _080A89CC -_080A89C4: - subs r0, 0x2 - b _080A89CA -_080A89C8: - adds r0, 0x1 -_080A89CA: - strh r0, [r3, 0x12] -_080A89CC: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _080A89F0 - ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_080A89F0: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080A8A0E - ldr r1, _080A8A18 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8A0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8A14: .4byte gScanlineEffectRegBuffers -_080A8A18: .4byte gScanlineEffect - thumb_func_end sub_80A8954 - - thumb_func_start sub_80A8A1C -sub_80A8A1C: @ 80A8A1C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A8A70 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl sub_8076B2C - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl sub_8073A44 - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, _080A8A74 @ =sub_80A8A78 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8A70: .4byte gBattleAnimTarget -_080A8A74: .4byte sub_80A8A78 - thumb_func_end sub_80A8A1C - - thumb_func_start sub_80A8A78 -sub_80A8A78: @ 80A8A78 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080A8ADC - cmp r1, 0x1 - bgt _080A8A8E - cmp r1, 0 - beq _080A8A94 - b _080A8BBC -_080A8A8E: - cmp r1, 0x2 - beq _080A8B6E - b _080A8BBC -_080A8A94: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8ABE - strh r1, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8ABE: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - b _080A8B66 -_080A8ADC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8B22 - ldrh r2, [r4, 0x32] - movs r3, 0x32 - ldrsh r1, [r4, r3] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080A8B22 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A8B22 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning -_080A8B22: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - adds r1, r0, r2 - strh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0x1F - ble _080A8B36 - movs r0, 0x40 - b _080A8B44 -_080A8B36: - movs r0, 0x20 - negs r0, r0 - cmp r2, r0 - bgt _080A8B50 - movs r2, 0x40 - negs r2, r2 - adds r0, r2, 0 -_080A8B44: - subs r0, r1 - strh r0, [r4, 0x36] - movs r3, 0x34 - ldrsh r0, [r4, r3] - negs r0, r0 - strh r0, [r4, 0x34] -_080A8B50: - ldrh r0, [r4, 0x36] - movs r2, 0 - strh r0, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080A8BBC - strh r2, [r4, 0x30] - strh r2, [r4, 0x32] -_080A8B66: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A8BBC -_080A8B6E: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8B9A - movs r0, 0 - strh r0, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8B9A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - bl DestroyAnimSprite -_080A8BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8A78 - - thumb_func_start sub_80A8BC4 -sub_80A8BC4: @ 80A8BC4 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - movs r5, 0 - mov r0, sp - strh r5, [r0] - mov r1, sp - adds r1, 0x2 - strh r5, [r1] - ldr r0, _080A8BE8 @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r2, [r0, r3] - adds r7, r1, 0 - adds r1, r0, 0 - cmp r2, 0 - bne _080A8BF0 - ldr r0, _080A8BEC @ =gBattleAnimAttacker - b _080A8BF2 - .align 2, 0 -_080A8BE8: .4byte gBattleAnimArgs -_080A8BEC: .4byte gBattleAnimAttacker -_080A8BF0: - ldr r0, _080A8C2C @ =gBattleAnimTarget -_080A8BF2: - ldrb r5, [r0] - ldrb r1, [r1, 0x6] - movs r0, 0x1 - adds r4, r0, 0 - eors r4, r1 - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl sub_8076D9C - cmp r4, 0 - bne _080A8C30 - adds r0, r5, 0 - movs r1, 0 - b _080A8C34 - .align 2, 0 -_080A8C2C: .4byte gBattleAnimTarget -_080A8C30: - adds r0, r5, 0 - movs r1, 0x2 -_080A8C34: - bl sub_8074480 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8C60 - ldr r2, _080A8C5C @ =gBattleAnimArgs - mov r0, sp - ldrh r1, [r0] - subs r1, r4 - ldrh r0, [r2] - subs r1, r0 - subs r0, r1 - strh r0, [r2] - b _080A8C6A - .align 2, 0 -_080A8C5C: .4byte gBattleAnimArgs -_080A8C60: - ldr r1, _080A8C7C @ =gBattleAnimArgs - mov r0, sp - ldrh r0, [r0] - subs r0, r4 - strh r0, [r1] -_080A8C6A: - ldr r1, _080A8C80 @ =sub_8075D9C - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8C7C: .4byte gBattleAnimArgs -_080A8C80: .4byte sub_8075D9C - thumb_func_end sub_80A8BC4 - - thumb_func_start sub_80A8C84 -sub_80A8C84: @ 80A8C84 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080A8C9E - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite -_080A8C9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8C84 - - thumb_func_start sub_80A8CA4 -sub_80A8CA4: @ 80A8CA4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - movs r6, 0 - mov r0, sp - strh r6, [r0] - mov r1, sp - adds r1, 0x2 - strh r6, [r1] - ldr r0, _080A8CD0 @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080A8CDC - ldr r0, _080A8CD4 @ =gBattleAnimAttacker - ldrb r7, [r0] - ldr r0, _080A8CD8 @ =gBattleAnimTarget - b _080A8CE2 - .align 2, 0 -_080A8CD0: .4byte gBattleAnimArgs -_080A8CD4: .4byte gBattleAnimAttacker -_080A8CD8: .4byte gBattleAnimTarget -_080A8CDC: - ldr r0, _080A8CFC @ =gBattleAnimTarget - ldrb r7, [r0] - ldr r0, _080A8D00 @ =gBattleAnimAttacker -_080A8CE2: - ldrb r0, [r0] - mov r8, r0 - ldr r0, _080A8D04 @ =gBattleAnimArgs - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080A8D08 - movs r0, 0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x4] - b _080A8D10 - .align 2, 0 -_080A8CFC: .4byte gBattleAnimTarget -_080A8D00: .4byte gBattleAnimAttacker -_080A8D04: .4byte gBattleAnimArgs -_080A8D08: - movs r2, 0x2 - mov r10, r2 - movs r3, 0x3 - str r3, [sp, 0x4] -_080A8D10: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8D6C - adds r0, r7, 0 - mov r1, r10 - bl sub_8074480 - lsls r0, 24 - ldr r1, _080A8D50 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r0, 0x2 - mov r4, r8 - eors r4, r0 - adds r0, r4, 0 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A8D5C - ldr r2, _080A8D54 @ =gSprites - ldr r0, _080A8D58 @ =gUnknown_2023D44 - adds r0, r4, r0 - b _080A8DEA - .align 2, 0 -_080A8D50: .4byte gBattleAnimArgs -_080A8D54: .4byte gSprites -_080A8D58: .4byte gUnknown_2023D44 -_080A8D5C: - ldr r2, _080A8D64 @ =gSprites - ldr r0, _080A8D68 @ =gUnknown_2023D44 - add r0, r8 - b _080A8DEA - .align 2, 0 -_080A8D64: .4byte gSprites -_080A8D68: .4byte gUnknown_2023D44 -_080A8D6C: - adds r0, r7, 0 - mov r1, r10 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A8DD4 @ =gBattleAnimArgs - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A8DE4 - movs r0, 0x2 - adds r4, r7, 0 - eors r4, r0 - adds r0, r4, 0 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A8DE4 - ldr r3, _080A8DD8 @ =gSprites - ldr r2, _080A8DDC @ =gUnknown_2023D44 - adds r0, r7, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r3 - adds r2, r4, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080A8DE0 - adds r0, r2, 0 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 - b _080A8DFA - .align 2, 0 -_080A8DD4: .4byte gBattleAnimArgs -_080A8DD8: .4byte gSprites -_080A8DDC: .4byte gUnknown_2023D44 -_080A8DE0: - adds r0, r6, 0 - b _080A8DF4 -_080A8DE4: - ldr r2, _080A8E40 @ =gSprites - ldr r0, _080A8E44 @ =gUnknown_2023D44 - adds r0, r7, r0 -_080A8DEA: - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_080A8DF4: - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 -_080A8DFA: - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r7, 0 - ldr r1, [sp, 0x4] - bl sub_8074480 - lsls r0, 24 - ldr r4, _080A8E48 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A8E4C - movs r1, 0x2 - mov r0, r8 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080A8E4C - ldrb r1, [r4, 0xC] - mov r0, r8 - mov r2, sp - mov r3, sp - adds r3, 0x2 - bl sub_8076D9C - b _080A8E6C - .align 2, 0 -_080A8E40: .4byte gSprites -_080A8E44: .4byte gUnknown_2023D44 -_080A8E48: .4byte gBattleAnimArgs -_080A8E4C: - mov r4, sp - mov r0, r8 - mov r1, r10 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - mov r0, r8 - ldr r1, [sp, 0x4] - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - mov r2, sp - strh r0, [r2, 0x2] -_080A8E6C: - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8E90 - mov r3, sp - mov r2, sp - ldr r1, _080A8E8C @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r3] - adds r2, r1, 0 - b _080A8E9E - .align 2, 0 -_080A8E8C: .4byte gBattleAnimArgs -_080A8E90: - mov r3, sp - mov r0, sp - ldr r2, _080A8EE0 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - subs r0, r1 - strh r0, [r3] -_080A8E9E: - ldrh r1, [r2, 0x8] - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - mov r0, sp - strh r1, [r0, 0x2] - mov r3, r9 - strh r3, [r5, 0x30] - strh r3, [r5, 0x20] - strh r6, [r5, 0x34] - strh r6, [r5, 0x22] - ldrh r0, [r0] - strh r0, [r5, 0x32] - strh r1, [r5, 0x36] - ldrh r0, [r2] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080A8EE4 @ =sub_80A8C84 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8EE0: .4byte gBattleAnimArgs -_080A8EE4: .4byte sub_80A8C84 - thumb_func_end sub_80A8CA4 - - thumb_func_start sub_80A8EE8 -sub_80A8EE8: @ 80A8EE8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A8F28 @ =0x000027db - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A8F0E - lsls r0, 20 - ldr r1, _080A8F2C @ =0x01010000 - adds r0, r1 - lsrs r0, 16 - ldr r1, _080A8F30 @ =gBattleAnimArgs - ldrb r2, [r1, 0xA] - ldrh r3, [r1, 0x8] - movs r1, 0xF - bl BlendPalette -_080A8F0E: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080A8F34 @ =sub_8075D9C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F28: .4byte 0x000027db -_080A8F2C: .4byte 0x01010000 -_080A8F30: .4byte gBattleAnimArgs -_080A8F34: .4byte sub_8075D9C - thumb_func_end sub_80A8EE8 - - thumb_func_start sub_80A8F38 -sub_80A8F38: @ 80A8F38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r0, _080A8F6C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8F54 - ldr r1, _080A8F70 @ =0x0000ff60 -_080A8F54: - movs r0, 0xE0 - lsls r0, 2 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080A8F74 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080A8F78 @ =sub_80A8F7C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F6C: .4byte gBattleAnimAttacker -_080A8F70: .4byte 0x0000ff60 -_080A8F74: .4byte gBattleAnimArgs -_080A8F78: .4byte sub_80A8F7C - thumb_func_end sub_80A8F38 - - thumb_func_start sub_80A8F7C -sub_80A8F7C: @ 80A8F7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - subs r1, r0 - movs r5, 0 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - subs r2, 0x20 - strh r2, [r4, 0x2E] - ldr r0, _080A8FE8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8FAC - ldr r1, _080A8FEC @ =0x0000ff60 -_080A8FAC: - lsls r0, r1, 16 - asrs r0, 16 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x26] - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A8FE0 - ldrh r2, [r4, 0x22] - adds r0, r1, r2 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080A8FF0 @ =sub_80A8FF4 - str r0, [r4, 0x1C] -_080A8FE0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8FE8: .4byte gBattleAnimAttacker -_080A8FEC: .4byte 0x0000ff60 -_080A8FF0: .4byte sub_80A8FF4 - thumb_func_end sub_80A8F7C - - thumb_func_start sub_80A8FF4 -sub_80A8FF4: @ 80A8FF4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080A9012 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080A9018 @ =sub_80A901C - str r0, [r4, 0x1C] -_080A9012: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9018: .4byte sub_80A901C - thumb_func_end sub_80A8FF4 - - thumb_func_start sub_80A901C -sub_80A901C: @ 80A901C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A9082 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9068 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080A905C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A9060 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9064 @ =sub_80A9094 - b _080A9080 - .align 2, 0 -_080A905C: .4byte 0x000003ff -_080A9060: .4byte 0xfffffc00 -_080A9064: .4byte sub_80A9094 -_080A9068: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r3, _080A9088 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A908C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9090 @ =sub_80A911C -_080A9080: - str r0, [r4, 0x1C] -_080A9082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9088: .4byte 0x000003ff -_080A908C: .4byte 0xfffffc00 -_080A9090: .4byte sub_80A911C - thumb_func_end sub_80A901C - - thumb_func_start sub_80A9094 -sub_80A9094: @ 80A9094 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x26] - subs r0, 0x2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080A90CA - movs r0, 0x10 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A90D0 @ =sub_80A90D4 - str r0, [r4, 0x1C] -_080A90CA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A90D0: .4byte sub_80A90D4 - thumb_func_end sub_80A9094 - - thumb_func_start sub_80A90D4 -sub_80A90D4: @ 80A90D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A9112 - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9112 - ldr r0, _080A9118 @ =sub_80A911C - str r0, [r4, 0x1C] -_080A9112: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9118: .4byte sub_80A911C - thumb_func_end sub_80A90D4 - - thumb_func_start sub_80A911C -sub_80A911C: @ 80A911C - push {lr} - adds r3, r0, 0 - ldr r0, _080A9144 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A9148 @ =0x0000ffff - cmp r1, r0 - bne _080A9154 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x3C - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080A9150 - ldr r0, _080A914C @ =sub_80A915C - b _080A9152 - .align 2, 0 -_080A9144: .4byte gBattleAnimArgs -_080A9148: .4byte 0x0000ffff -_080A914C: .4byte sub_80A915C -_080A9150: - ldr r0, _080A9158 @ =DestroyAnimSprite -_080A9152: - str r0, [r3, 0x1C] -_080A9154: - pop {r0} - bx r0 - .align 2, 0 -_080A9158: .4byte DestroyAnimSprite - thumb_func_end sub_80A911C - - thumb_func_start sub_80A915C -sub_80A915C: @ 80A915C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A915C - - thumb_func_start sub_80A917C -sub_80A917C: @ 80A917C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A91AC @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, _080A91B0 @ =gUnknown_83E4128 - adds r0, r4, 0 - bl sub_80762D0 - ldr r0, _080A91B4 @ =sub_80A91B8 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A91AC: .4byte gTasks -_080A91B0: .4byte gUnknown_83E4128 -_080A91B4: .4byte sub_80A91B8 - thumb_func_end sub_80A917C - - thumb_func_start sub_80A91B8 -sub_80A91B8: @ 80A91B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9208 @ =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_8076308 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080A9202 - ldr r2, _080A920C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9202: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9208: .4byte gTasks -_080A920C: .4byte gSprites - thumb_func_end sub_80A91B8 - - thumb_func_start sub_80A9210 -sub_80A9210: @ 80A9210 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A9244 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, _080A9248 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A9250 - ldr r0, _080A924C @ =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _080A9256 - .align 2, 0 -_080A9244: .4byte gTasks -_080A9248: .4byte gBattleAnimTarget -_080A924C: .4byte 0x0000ffff -_080A9250: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, _080A9270 @ =0x0000fff8 -_080A9256: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9274 @ =sub_80A9278 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9270: .4byte 0x0000fff8 -_080A9274: .4byte sub_80A9278 - thumb_func_end sub_80A9210 - - thumb_func_start sub_80A9278 -sub_80A9278: @ 80A9278 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A929C @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _080A92CC - cmp r4, 0x1 - bgt _080A92A0 - cmp r4, 0 - beq _080A92AA - b _080A9392 - .align 2, 0 -_080A929C: .4byte gTasks -_080A92A0: - cmp r4, 0x2 - beq _080A9348 - cmp r4, 0x3 - beq _080A9362 - b _080A9392 -_080A92AA: - ldr r2, _080A92C8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _080A935A - .align 2, 0 -_080A92C8: .4byte gSprites -_080A92CC: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9392 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _080A9304 - ldr r2, _080A9300 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _080A9316 - .align 2, 0 -_080A9300: .4byte gSprites -_080A9304: - ldr r2, _080A9344 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_080A9316: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9392 - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A935A - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _080A935A - .align 2, 0 -_080A9344: .4byte gSprites -_080A9348: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _080A935A - movs r0, 0 - strh r0, [r3, 0x8] - b _080A9392 -_080A935A: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080A9392 -_080A9362: - ldr r2, _080A9398 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A9392 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9392: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9398: .4byte gSprites - thumb_func_end sub_80A9278 - - thumb_func_start sub_80A939C -sub_80A939C: @ 80A939C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A93D8 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A93DC @ =sub_80A93E0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A93D8: .4byte gTasks -_080A93DC: .4byte sub_80A93E0 - thumb_func_end sub_80A939C - - thumb_func_start sub_80A93E0 -sub_80A93E0: @ 80A93E0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9434 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A94A6 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _080A94A6 - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A943C - ldr r3, _080A9438 @ =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _080A9452 - .align 2, 0 -_080A9434: .4byte gTasks -_080A9438: .4byte gSprites -_080A943C: - ldr r3, _080A9484 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080A9452: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080A94A6 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _080A9488 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _080A94A6 - .align 2, 0 -_080A9484: .4byte gSprites -_080A9488: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A94A6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A93E0 - - thumb_func_start sub_80A94AC -sub_80A94AC: @ 80A94AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A94FC @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, _080A9500 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9504 @ =sub_80A9508 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A94FC: .4byte gTasks -_080A9500: .4byte gBattleAnimAttacker -_080A9504: .4byte sub_80A9508 - thumb_func_end sub_80A94AC - - thumb_func_start sub_80A9508 -sub_80A9508: @ 80A9508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A952C @ =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080A9574 - cmp r2, 0x1 - bgt _080A9530 - cmp r2, 0 - beq _080A9536 - b _080A9590 - .align 2, 0 -_080A952C: .4byte gTasks -_080A9530: - cmp r2, 0x2 - beq _080A958C - b _080A9590 -_080A9536: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9590 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A956E - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _080A9590 -_080A956E: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _080A9590 -_080A9574: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _080A9590 -_080A958C: - movs r0, 0x1 - strh r0, [r4, 0x12] -_080A9590: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _080A959E - cmp r5, 0x1 - beq _080A9634 - b _080A9642 -_080A959E: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9642 - strh r5, [r4, 0xA] - ldr r0, _080A9628 @ =gUnknown_83E4154 - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080A9642 - ldr r0, _080A962C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, _080A9630 @ =gUnknown_83E416C - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A9642 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A9642 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080A9642 - .align 2, 0 -_080A9628: .4byte gUnknown_83E4154 -_080A962C: .4byte gSprites -_080A9630: .4byte gUnknown_83E416C -_080A9634: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9642 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9642: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A9508 - - thumb_func_start sub_80A9648 -sub_80A9648: @ 80A9648 - push {r4,lr} - adds r3, r0, 0 - ldr r4, _080A96B0 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A96AA - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_080A96AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A96B0: .4byte gTasks - thumb_func_end sub_80A9648 - - thumb_func_start sub_80A96B4 -sub_80A96B4: @ 80A96B4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080A9750 @ =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r4, 0x1 - ldr r0, _080A9754 @ =0x00002710 - adds r5, r0, 0 -_080A96CC: - subs r0, r5, r4 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x2 - ble _080A96CC - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - adds r1, r0, 0 - ldr r0, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - str r1, [r0] - ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette - bl LZDecompressWram - movs r4, 0 -_080A9700: - ldr r5, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r5] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - lsls r1, r4, 6 - ldr r0, [r0] - adds r0, r1 - mov r2, sp - adds r1, r2, r4 - ldrb r1, [r1] - lsls r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1 - cmp r4, 0x2 - ble _080A9700 - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9750: .4byte 0x000027de -_080A9754: .4byte 0x00002710 -_080A9758: .4byte gMonSpritesGfxPtr -_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette - thumb_func_end sub_80A96B4 - - thumb_func_start sub_80A9760 -sub_80A9760: @ 80A9760 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080A9784 @ =gUnknown_83E41C8 - movs r4, 0x2 -_080A976A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A976A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9784: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9760 - - thumb_func_start sub_80A9788 -sub_80A9788: @ 80A9788 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, _080A97DC @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, _080A97E0 @ =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, _080A97E4 @ =gUnknown_83E41C8 - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A97DC: .4byte 0x000003ff -_080A97E0: .4byte 0xfffffc00 -_080A97E4: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9788 - - thumb_func_start sub_80A97E8 -sub_80A97E8: @ 80A97E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8075160 - ldr r6, _080A9850 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A9808 - ldr r1, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A9808: - ldr r4, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, _080A9858 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080A985C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_80A9788 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9850: .4byte gBattleAnimAttacker -_080A9854: .4byte gBattleAnimArgs -_080A9858: .4byte sub_8075590 -_080A985C: .4byte DestroyAnimSprite - thumb_func_end sub_80A97E8 - - thumb_func_start sub_80A9860 -sub_80A9860: @ 80A9860 - 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, 0x1 - bne _080A987A - adds r0, r4, 0 - movs r1, 0 - bl sub_8075160 -_080A987A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _080A98AA - adds r0, r4, 0 - bl DestroyAnimSprite -_080A98AA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9860 - - thumb_func_start sub_80A98B0 -sub_80A98B0: @ 80A98B0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - bl sub_8073788 - lsls r0, 24 - movs r6, 0xF0 - cmp r0, 0 - beq _080A98C4 - movs r6, 0x98 -_080A98C4: - movs r5, 0 - ldr r1, _080A9918 @ =gUnknown_2022984 - strh r6, [r1] - ldr r4, _080A991C @ =gUnknown_2022986 - movs r0, 0xA0 - strh r0, [r4] - ldrh r1, [r1] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r1, _080A9920 @ =0x00003f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080A9924 @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xC8 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x10 - bl SetGpuReg - ldr r1, _080A9928 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, _080A992C @ =sub_80A9930 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A9918: .4byte gUnknown_2022984 -_080A991C: .4byte gUnknown_2022986 -_080A9920: .4byte 0x00003f1f -_080A9924: .4byte 0x00003f3f -_080A9928: .4byte gTasks -_080A992C: .4byte sub_80A9930 - thumb_func_end sub_80A98B0 - - thumb_func_start sub_80A9930 -sub_80A9930: @ 80A9930 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A9964 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080A9970 - ldr r0, _080A9968 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080A996C @ =sub_80A9984 - str r0, [r3] - b _080A9978 - .align 2, 0 -_080A9964: .4byte gTasks -_080A9968: .4byte gUnknown_2022984 -_080A996C: .4byte sub_80A9984 -_080A9970: - ldr r1, _080A9980 @ =gUnknown_2022984 - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_080A9978: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9980: .4byte gUnknown_2022984 - thumb_func_end sub_80A9930 - - thumb_func_start sub_80A9984 -sub_80A9984: @ 80A9984 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080A99D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080A99D8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - movs r0, 0x50 - movs r1, 0x88 - bl SetGpuReg - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - ldr r2, _080A99D4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _080A9A0C - .align 2, 0 -_080A99D0: .4byte gTasks -_080A99D4: .4byte 0x00007fff -_080A99D8: - cmp r0, 0x4 - ble _080A9A0C - ldr r0, _080A9A14 @ =gUnknown_2022984 - strh r4, [r0] - ldr r0, _080A9A18 @ =gUnknown_2022986 - strh r4, [r0] - ldr r4, _080A9A1C @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9A0C: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9A14: .4byte gUnknown_2022984 -_080A9A18: .4byte gUnknown_2022986 -_080A9A1C: .4byte 0x00003f3f - thumb_func_end sub_80A9984 - - thumb_func_start sub_80A9A20 -sub_80A9A20: @ 80A9A20 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9A70 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9A7C - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9A74 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl sub_80762D0 - ldr r1, _080A9A78 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9AA4 - .align 2, 0 -_080A9A70: .4byte gTasks -_080A9A74: .4byte gUnknown_83E4200 -_080A9A78: .4byte gSprites -_080A9A7C: - ldr r1, _080A9AAC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_8076308 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9AA4 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9AA4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9AAC: .4byte gSprites - thumb_func_end sub_80A9A20 - - thumb_func_start sub_80A9AB0 -sub_80A9AB0: @ 80A9AB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9B00 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9B0C - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9B04 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl sub_80762D0 - ldr r1, _080A9B08 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9B34 - .align 2, 0 -_080A9B00: .4byte gTasks -_080A9B04: .4byte gUnknown_83E4200 -_080A9B08: .4byte gSprites -_080A9B0C: - ldr r1, _080A9B3C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_8076308 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9B34 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9B34: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9B3C: .4byte gSprites - thumb_func_end sub_80A9AB0 - - thumb_func_start sub_80A9B40 -sub_80A9B40: @ 80A9B40 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080A9B84 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080A9B88 @ =sub_80A9B8C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9B84: .4byte gBattleAnimTarget -_080A9B88: .4byte sub_80A9B8C - thumb_func_end sub_80A9B40 - - thumb_func_start sub_80A9B8C -sub_80A9B8C: @ 80A9B8C - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080A9BB6 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A9BBC -_080A9BB6: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9B8C - - thumb_func_start sub_80A9BC4 -sub_80A9BC4: @ 80A9BC4 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9BE8 - ldr r1, _080A9BE4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080A9C44 - .align 2, 0 -_080A9BE4: .4byte gBattleAnimArgs -_080A9BE8: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _080A9C36 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A9C36: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080A9C44 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9C44: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9BC4 - - thumb_func_start sub_80A9C4C -sub_80A9C4C: @ 80A9C4C - push {lr} - ldr r2, _080A9C70 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, _080A9C74 @ =sub_8074C44 - str r1, [r0, 0x1C] - ldr r1, _080A9C78 @ =sub_80A9C7C - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A9C70: .4byte gBattleAnimArgs -_080A9C74: .4byte sub_8074C44 -_080A9C78: .4byte sub_80A9C7C - thumb_func_end sub_80A9C4C - - thumb_func_start sub_80A9C7C -sub_80A9C7C: @ 80A9C7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _080A9CE2 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _080A9CE2 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9CE2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9C7C - - thumb_func_start sub_80A9CE8 -sub_80A9CE8: @ 80A9CE8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9DA0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A9D2A - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9D2A: - ldr r0, _080A9DA4 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9DA8 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap - bl sub_807543C - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A9D88 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9D88: - ldr r0, _080A9DB8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080A9DBC @ =sub_80A9DC0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9DA0: .4byte 0x00003f42 -_080A9DA4: .4byte gBattle_BG1_X -_080A9DA8: .4byte gBattle_BG1_Y -_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap -_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet -_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette -_080A9DB8: .4byte gTasks -_080A9DBC: .4byte sub_80A9DC0 - thumb_func_end sub_80A9CE8 - - thumb_func_start sub_80A9DC0 -sub_80A9DC0: @ 80A9DC0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9DE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080A9DDE - b _080A9F08 -_080A9DDE: - lsls r0, 2 - ldr r1, _080A9DEC @ =_080A9DF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A9DE8: .4byte gTasks -_080A9DEC: .4byte _080A9DF0 - .align 2, 0 -_080A9DF0: - .4byte _080A9E04 - .4byte _080A9E48 - .4byte _080A9E6A - .4byte _080A9EAE - .4byte _080A9ED4 -_080A9E04: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080A9F08 -_080A9E48: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _080A9F08 - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080A9F08 -_080A9E6A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080A9F08 -_080A9EAE: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - ldr r1, _080A9ED0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x20] - adds r1, 0x1 - strh r1, [r0, 0x20] - b _080A9F08 - .align 2, 0 -_080A9ED0: .4byte gTasks -_080A9ED4: - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A9EE8 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080A9EE8: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A9F08: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9DC0 - - thumb_func_start sub_80A9F10 -sub_80A9F10: @ 80A9F10 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9F88 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080A9F52 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9F52: - ldr r0, _080A9F8C @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9F90 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A9F98 - ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080A9FC6 - .align 2, 0 -_080A9F88: .4byte 0x00003f42 -_080A9F8C: .4byte gBattle_BG1_X -_080A9F90: .4byte gBattle_BG1_Y -_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap -_080A9F98: - ldr r0, _080A9FB4 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A9FBC - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap - bl sub_807543C - b _080A9FC6 - .align 2, 0 -_080A9FB4: .4byte gBattleAnimTarget -_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap -_080A9FBC: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap - bl sub_807543C -_080A9FC6: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080A9FFA - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9FFA: - ldr r0, _080AA01C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AA020 @ =sub_80AA024 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap -_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet -_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette -_080AA01C: .4byte gTasks -_080AA020: .4byte sub_80AA024 - thumb_func_end sub_80A9F10 - - thumb_func_start sub_80AA024 -sub_80AA024: @ 80AA024 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AA04C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080AA042 - b _080AA168 -_080AA042: - lsls r0, 2 - ldr r1, _080AA050 @ =_080AA054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AA04C: .4byte gTasks -_080AA050: .4byte _080AA054 - .align 2, 0 -_080AA054: - .4byte _080AA068 - .4byte _080AA0AC - .4byte _080AA0CE - .4byte _080AA112 - .4byte _080AA134 -_080AA068: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xE - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080AA168 -_080AA0AC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080AA168 - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080AA168 -_080AA0CE: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080AA168 -_080AA112: - mov r0, sp - bl sub_80752A0 - movs r0, 0x1 - bl sub_8075358 - movs r0, 0x2 - bl sub_8075358 - ldr r0, _080AA170 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080AA134: - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AA148 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080AA148: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA168: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA170: .4byte gTasks - thumb_func_end sub_80AA024 - - thumb_func_start sub_80AA174 -sub_80AA174: @ 80AA174 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080AA1C8 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080AA1CC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, _080AA1D0 @ =sub_80AA1D4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA1C8: .4byte gBattleAnimAttacker -_080AA1CC: .4byte gBattleAnimArgs -_080AA1D0: .4byte sub_80AA1D4 - thumb_func_end sub_80AA174 - - thumb_func_start sub_80AA1D4 -sub_80AA1D4: @ 80AA1D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080AA1EA - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _080AA1EE -_080AA1EA: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_080AA1EE: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _080AA260 - cmp r2, 0x1 - bne _080AA290 - ldr r1, _080AA258 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080AA25C @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA290 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _080AA2A0 - .align 2, 0 -_080AA258: .4byte 0xfffffc00 -_080AA25C: .4byte 0xffffff00 -_080AA260: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080AA290 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_080AA290: - ldr r0, _080AA2A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080AA2AC @ =0x0000ffff - cmp r1, r0 - bne _080AA2A0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA2A0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA2A8: .4byte gBattleAnimArgs -_080AA2AC: .4byte 0x0000ffff - thumb_func_end sub_80AA1D4 - - thumb_func_start sub_80AA2B0 -sub_80AA2B0: @ 80AA2B0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA2F8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080AA2FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, _080AA300 @ =sub_80AA304 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA2F8: .4byte gBattleAnimAttacker -_080AA2FC: .4byte gBattleAnimArgs -_080AA300: .4byte sub_80AA304 - thumb_func_end sub_80AA2B0 - - thumb_func_start sub_80AA304 -sub_80AA304: @ 80AA304 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080AA342 - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _080AA342 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080AA348 -_080AA342: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA348: - pop {r0} - bx r0 - thumb_func_end sub_80AA304 - - thumb_func_start sub_80AA34C -sub_80AA34C: @ 80AA34C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080AA378 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA378: - pop {r0} - bx r0 - thumb_func_end sub_80AA34C - - thumb_func_start sub_80AA37C -sub_80AA37C: @ 80AA37C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA3C8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080AA3CC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, _080AA3D0 @ =sub_80AA34C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA3C8: .4byte gBattleAnimAttacker -_080AA3CC: .4byte gBattleAnimArgs -_080AA3D0: .4byte sub_80AA34C - thumb_func_end sub_80AA37C - - thumb_func_start sub_80AA3D4 -sub_80AA3D4: @ 80AA3D4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA3EA - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA3EA: - pop {r0} - bx r0 - thumb_func_end sub_80AA3D4 - - thumb_func_start sub_80AA3F0 -sub_80AA3F0: @ 80AA3F0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _080AA404 @ =sub_80AA3D4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA404: .4byte sub_80AA3D4 - thumb_func_end sub_80AA3F0 - - thumb_func_start sub_80AA408 -sub_80AA408: @ 80AA408 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA426 - ldr r0, _080AA498 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080AA426: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _080AA46A - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_080AA46A: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _080AA488 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_080AA488: - cmp r2, 0x64 - ble _080AA492 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA492: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA498: .4byte gBattleAnimArgs - thumb_func_end sub_80AA408 - - thumb_func_start sub_80AA49C -sub_80AA49C: @ 80AA49C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080AA4F2 - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080AA4F2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _080AA500 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA500: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA49C - - thumb_func_start sub_80AA508 -sub_80AA508: @ 80AA508 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA52C - ldr r1, _080AA528 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080AA580 - .align 2, 0 -_080AA528: .4byte gBattleAnimArgs -_080AA52C: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _080AA580 - ldr r0, _080AA588 @ =sub_80AA49C - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_080AA580: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA588: .4byte sub_80AA49C - thumb_func_end sub_80AA508 - - thumb_func_start sub_80AA58C -sub_80AA58C: @ 80AA58C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA5C6 - ldr r1, _080AA688 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _080AA68C @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_807685C - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA5C6: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _080AA5DC - adds r0, 0xFF -_080AA5DC: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080AA5EE - movs r0, 0 - strh r0, [r4, 0x30] -_080AA5EE: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA5FC - adds r0, 0x3 -_080AA5FC: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA618 - adds r0, 0x7 -_080AA618: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _080AA63C - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080AA63C - ldr r0, _080AA690 @ =0x0000ffff - strh r0, [r4, 0x32] -_080AA63C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA650 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080AA650 - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA650: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _080AA694 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080AA6A2 - .align 2, 0 -_080AA688: .4byte gBattleAnimArgs -_080AA68C: .4byte gBattleAnimTarget -_080AA690: .4byte 0x0000ffff -_080AA694: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080AA6A2: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _080AA6B0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA6B0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA58C - - thumb_func_start sub_80AA6B8 -sub_80AA6B8: @ 80AA6B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA6EC - ldr r1, _080AA6E8 @ =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 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080AA700 - .align 2, 0 -_080AA6E8: .4byte gBattleAnimArgs -_080AA6EC: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA700 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA700: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA6B8 - - thumb_func_start sub_80AA708 -sub_80AA708: @ 80AA708 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080AA720 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA724 - adds r0, r5, 0 - bl DestroyAnimSprite - b _080AA788 - .align 2, 0 -_080AA720: .4byte gBattleAnimArgs -_080AA724: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA734 - ldr r4, _080AA730 @ =gBattleAnimAttacker - b _080AA736 - .align 2, 0 -_080AA730: .4byte gBattleAnimAttacker -_080AA734: - ldr r4, _080AA764 @ =gBattleAnimTarget -_080AA736: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080AA768 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080AA76C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080AA770 - .align 2, 0 -_080AA764: .4byte gBattleAnimTarget -_080AA768: .4byte gBattleAnimArgs -_080AA76C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080AA770: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080AA790 @ =sub_80AA794 - str r0, [r5, 0x1C] -_080AA788: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA790: .4byte sub_80AA794 - thumb_func_end sub_80AA708 - - thumb_func_start sub_80AA794 -sub_80AA794: @ 80AA794 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA7C4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080AA7BE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080AA7C4 -_080AA7BE: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA7C4: - pop {r0} - bx r0 - thumb_func_end sub_80AA794 - - thumb_func_start sub_80AA7C8 -sub_80AA7C8: @ 80AA7C8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080AA7FC @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080AA800 @ =gTasks - adds r4, r0 - ldr r2, _080AA804 @ =gUnknown_83E4410 - adds r0, r4, 0 - bl sub_80762D0 - ldr r0, _080AA808 @ =sub_80AA80C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA7FC: .4byte gBattleAnimArgs -_080AA800: .4byte gTasks -_080AA804: .4byte gUnknown_83E4410 -_080AA808: .4byte sub_80AA80C - thumb_func_end sub_80AA7C8 - - thumb_func_start sub_80AA80C -sub_80AA80C: @ 80AA80C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080AA834 @ =gTasks - adds r0, r1 - bl sub_8076308 - lsls r0, 24 - cmp r0, 0 - bne _080AA82C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA82C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA834: .4byte gTasks - thumb_func_end sub_80AA80C - - thumb_func_start sub_80AA838 -sub_80AA838: @ 80AA838 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080AA84C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AA854 - ldr r0, _080AA850 @ =gBattleAnimAttacker - b _080AA856 - .align 2, 0 -_080AA84C: .4byte gBattleAnimArgs -_080AA850: .4byte gBattleAnimAttacker -_080AA854: - ldr r0, _080AA8EC @ =gBattleAnimTarget -_080AA856: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AA870 - ldr r1, _080AA8F0 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080AA870: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r7, _080AA8F0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _080AA8B0 - adds r0, 0x7 -_080AA8B0: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _080AA8C0 - adds r0, 0x7 -_080AA8C0: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, _080AA8F4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080AA8F8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080AA8FC @ =sub_80AA900 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AA8EC: .4byte gBattleAnimTarget -_080AA8F0: .4byte gBattleAnimArgs -_080AA8F4: .4byte 0x000003ff -_080AA8F8: .4byte 0xfffffc00 -_080AA8FC: .4byte sub_80AA900 - thumb_func_end sub_80AA838 - - thumb_func_start sub_80AA900 -sub_80AA900: @ 80AA900 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080AA934 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA934: - pop {r0} - bx r0 - thumb_func_end sub_80AA900 - - thumb_func_start sub_80AA938 -sub_80AA938: @ 80AA938 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA95A - ldr r0, _080AA994 @ =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080AA95A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA978 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_8075B48 -_080AA978: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _080AA98C - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA98C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA994: .4byte gBattleAnimArgs - thumb_func_end sub_80AA938 - - thumb_func_start sub_80AA998 -sub_80AA998: @ 80AA998 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080AA9C6 - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, _080AAA48 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_080AA9C6: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080AAA42 - ldr r0, _080AAA4C @ =sub_80AAA50 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl oamt_add_pos2_onto_pos1 - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080AAA42: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AAA48: .4byte gBattleAnimArgs -_080AAA4C: .4byte sub_80AAA50 - thumb_func_end sub_80AA998 - - thumb_func_start sub_80AAA50 -sub_80AAA50: @ 80AAA50 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080AAA6A - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080AAA70 @ =sub_80AAA74 - str r0, [r1, 0x1C] -_080AAA6A: - pop {r0} - bx r0 - .align 2, 0 -_080AAA70: .4byte sub_80AAA74 - thumb_func_end sub_80AAA50 - - thumb_func_start sub_80AAA74 -sub_80AAA74: @ 80AAA74 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080AAA9E - lsls r0, r1, 16 - cmp r0, 0 - ble _080AAA9E - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_080AAA9E: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080AAAD0 - movs r2, 0x32 - ldrsh r1, [r4, r2] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAAD0: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080AAADE - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAADE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AAA74 - - thumb_func_start sub_80AAAE4 -sub_80AAAE4: @ 80AAAE4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080AAB28 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AAB30 - ldr r4, _080AAB2C @ =gBattleAnimAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080AAB30 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_8076D9C - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080AAB50 - .align 2, 0 -_080AAB28: .4byte gBattleTypeFlags -_080AAB2C: .4byte gBattleAnimAttacker -_080AAB30: - ldr r4, _080AAB70 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 - strh r0, [r5, 0x22] -_080AAB50: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, _080AAB74 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _080AAB78 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AAB70: .4byte gBattleAnimAttacker -_080AAB74: .4byte sub_8075590 -_080AAB78: .4byte DestroyAnimSprite - thumb_func_end sub_80AAAE4 - - thumb_func_start sub_80AAB7C -sub_80AAB7C: @ 80AAB7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AAB98 @ =gBattleAnimArgs - ldr r1, _080AAB9C @ =gUnknown_2037EE4 - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AAB98: .4byte gBattleAnimArgs -_080AAB9C: .4byte gUnknown_2037EE4 - thumb_func_end sub_80AAB7C - - thumb_func_start update_fury_cutter_counter_copy -update_fury_cutter_counter_copy: @ 80AABA0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AABB8 @ =gBattleAnimArgs - ldr r1, _080AABBC @ =gUnknown_2037EE4 - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AABB8: .4byte gBattleAnimArgs -_080AABBC: .4byte gUnknown_2037EE4 - thumb_func_end update_fury_cutter_counter_copy - - thumb_func_start sub_80AABC0 -sub_80AABC0: @ 80AABC0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080AAC48 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AABE8 - ldr r1, _080AAC4C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r5, 0xA] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0xC] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0xE] -_080AABE8: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r2, 0x8 - ldrsh r0, [r5, r2] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl __modsi3 - cmp r0, 0x1 - bne _080AAC30 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x50 - bl __umodsi3 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080AAC50 @ =gUnknown_83E5898 - adds r1, r4, 0 - movs r3, 0x4 - bl CreateSprite -_080AAC30: - movs r0, 0x8 - ldrsh r1, [r5, r0] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _080AAC42 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080AAC42: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AAC48: .4byte gTasks -_080AAC4C: .4byte gBattleAnimArgs -_080AAC50: .4byte gUnknown_83E5898 - thumb_func_end sub_80AABC0 - - thumb_func_start sub_80AAC54 -sub_80AAC54: @ 80AAC54 - ldr r1, _080AAC5C @ =sub_80AAC60 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080AAC5C: .4byte sub_80AAC60 - thumb_func_end sub_80AAC54 - - thumb_func_start sub_80AAC60 -sub_80AAC60: @ 80AAC60 - 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, 0xD - bgt _080AAC7E - ldrh r0, [r2, 0x24] - adds r0, 0x1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x26] - adds r0, 0x4 - strh r0, [r2, 0x26] -_080AAC7E: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AAC92 - adds r0, r2, 0 - bl DestroySprite -_080AAC92: - pop {r0} - bx r0 - thumb_func_end sub_80AAC60 - - thumb_func_start sub_80AAC98 -sub_80AAC98: @ 80AAC98 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r5, _080AACC0 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080AACC8 - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080AACC4 @ =gBattleAnimArgs - ldrh r1, [r4] - subs r0, r1 - b _080AACDA - .align 2, 0 -_080AACC0: .4byte gBattleAnimAttacker -_080AACC4: .4byte gBattleAnimArgs -_080AACC8: - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080AADA0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 -_080AACDA: - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r6, 0x22] - adds r2, r6, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080AADA4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080AAD10 - ldr r1, _080AADA0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080AAD10: - ldr r5, _080AADA0 @ =gBattleAnimArgs - ldrh r0, [r5, 0xC] - strh r0, [r6, 0x2E] - ldrh r0, [r6, 0x20] - strh r0, [r6, 0x30] - ldr r4, _080AADA8 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x32] - ldrh r0, [r6, 0x22] - strh r0, [r6, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080AADAC @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - strh r4, [r6, 0x38] - ldrb r0, [r5, 0x8] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Sin - ldrh r1, [r6, 0x20] - subs r1, r0 - strh r1, [r6, 0x20] - ldrb r0, [r5, 0x8] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl Cos - ldrh r1, [r6, 0x22] - subs r1, r0 - strh r1, [r6, 0x22] - ldr r0, _080AADB0 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r5, 0x4] - strh r0, [r1, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r1, 0x30] - ldrh r0, [r5, 0xA] - strh r0, [r1, 0x32] - ldrb r0, [r5, 0x8] - lsls r0, 8 - strh r0, [r1, 0x34] - ldrh r0, [r5, 0xC] - strh r0, [r1, 0x36] - ldr r1, _080AADB4 @ =sub_80AADB8 - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AADA0: .4byte gBattleAnimArgs -_080AADA4: .4byte gBattleAnimAttacker -_080AADA8: .4byte gBattleAnimTarget -_080AADAC: .4byte SpriteCallbackDummy -_080AADB0: .4byte gSprites -_080AADB4: .4byte sub_80AADB8 - thumb_func_end sub_80AAC98 - - thumb_func_start sub_80AADB8 -sub_80AADB8: @ 80AADB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r1, [r5, 0x38] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080AAE20 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r7, r0, r2 - ldrh r4, [r7, 0x36] - lsls r4, 24 - lsrs r4, 24 - ldrh r0, [r7, 0x34] - mov r8, r0 - movs r0, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl sub_80755E0 - mov r1, r8 - lsrs r6, r1, 8 - movs r0, 0x2E - ldrsh r1, [r7, r0] - adds r0, r6, 0 - bl Sin - ldrh r1, [r5, 0x24] - adds r0, r1 - strh r0, [r5, 0x24] - movs r0, 0x30 - ldrsh r1, [r7, r0] - adds r0, r6, 0 - bl Cos - ldrh r1, [r5, 0x26] - adds r0, r1 - strh r0, [r5, 0x26] - ldrh r0, [r7, 0x32] - mov r1, r8 - adds r1, r0 - strh r1, [r7, 0x34] - subs r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - cmp r4, 0 - beq _080AAE24 - strh r4, [r7, 0x36] - b _080AAE2E - .align 2, 0 -_080AAE20: .4byte gSprites -_080AAE24: - ldr r0, _080AAE3C @ =sub_80AAE40 - str r0, [r5, 0x1C] - adds r0, r7, 0 - bl DestroySprite -_080AAE2E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AAE3C: .4byte sub_80AAE40 - thumb_func_end sub_80AADB8 - - thumb_func_start sub_80AAE40 -sub_80AAE40: @ 80AAE40 - push {lr} - adds r3, r0, 0 - adds r3, 0x2C - ldrb r2, [r3] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - strb r1, [r3] - ldr r1, _080AAE60 @ =sub_8074F6C - str r1, [r0, 0x1C] - ldr r1, _080AAE64 @ =sub_80AAE68 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080AAE60: .4byte sub_8074F6C -_080AAE64: .4byte sub_80AAE68 - thumb_func_end sub_80AAE40 - - thumb_func_start sub_80AAE68 -sub_80AAE68: @ 80AAE68 - push {lr} - movs r1, 0xA - strh r1, [r0, 0x2E] - ldr r1, _080AAE7C @ =sub_8074C44 - str r1, [r0, 0x1C] - ldr r1, _080AAE80 @ =move_anim_8074EE0 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080AAE7C: .4byte sub_8074C44 -_080AAE80: .4byte move_anim_8074EE0 - thumb_func_end sub_80AAE68 - - thumb_func_start sub_80AAE84 -sub_80AAE84: @ 80AAE84 - push {r4-r7,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _080AAEAC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080AAEB4 - ldr r1, _080AAEB0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r1, 0 - b _080AAEBA - .align 2, 0 -_080AAEAC: .4byte gBattleAnimAttacker -_080AAEB0: .4byte gBattleAnimArgs -_080AAEB4: - ldr r0, _080AAF10 @ =gBattleAnimArgs - ldrh r6, [r0, 0x4] - adds r7, r0, 0 -_080AAEBA: - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080AAF14 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - 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 - ldrh r7, [r7, 0x6] - adds r0, r7 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080AAF18 @ =sub_80AAF1C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AAF10: .4byte gBattleAnimArgs -_080AAF14: .4byte gBattleAnimTarget -_080AAF18: .4byte sub_80AAF1C - thumb_func_end sub_80AAE84 - - thumb_func_start sub_80AAF1C -sub_80AAF1C: @ 80AAF1C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080AAF58 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080AAF5C @ =0x0000ffff - cmp r1, r0 - bne _080AAF3E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] -_080AAF3E: - adds r0, r4, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080AAF50 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAF50: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AAF58: .4byte gBattleAnimArgs -_080AAF5C: .4byte 0x0000ffff - thumb_func_end sub_80AAF1C - - thumb_func_start sub_80AAF60 -sub_80AAF60: @ 80AAF60 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080AAF94 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r0, _080AAF98 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x8] - ldr r0, _080AAF9C @ =0x0000279c - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080AAFA0 @ =sub_80AAFA4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AAF94: .4byte gTasks -_080AAF98: .4byte gBattleAnimArgs -_080AAF9C: .4byte 0x0000279c -_080AAFA0: .4byte sub_80AAFA4 - thumb_func_end sub_80AAF60 - - thumb_func_start sub_80AAFA4 -sub_80AAFA4: @ 80AAFA4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AB01C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0x3 - bne _080AAFF6 - movs r0, 0 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080AB020 @ =gPlttBufferFaded - lsls r0, r5, 1 - adds r0, r1 - ldrh r6, [r0] - adds r7, r1, 0 - adds r3, r0, 0x2 - movs r1, 0x6 - adds r2, r0, 0 -_080AAFE0: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080AAFE0 - adds r0, r5, 0x7 - lsls r0, 1 - adds r0, r7 - strh r6, [r0] -_080AAFF6: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r1, r0 - bne _080AB016 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AB016: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB01C: .4byte gTasks -_080AB020: .4byte gPlttBufferFaded - thumb_func_end sub_80AAFA4 - - thumb_func_start sub_80AB024 -sub_80AB024: @ 80AB024 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_8075160 - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080AB08C @ =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 - movs r0, 0x2E - ldrsh r1, [r5, r0] - movs r0, 0xD2 - lsls r0, 8 - bl __divsi3 - strh r0, [r5, 0x38] - ldr r0, _080AB090 @ =gBattleAnimArgs - ldrh r2, [r0, 0x6] - strh r2, [r5, 0x3C] - ldrh r1, [r0, 0xE] - movs r3, 0xE - ldrsh r0, [r0, r3] - cmp r0, 0x7F - ble _080AB094 - adds r0, r1, 0 - subs r0, 0x7F - lsls r0, 8 - strh r0, [r5, 0x3A] - negs r0, r2 - strh r0, [r5, 0x3C] - b _080AB098 - .align 2, 0 -_080AB08C: .4byte gBattleAnimTarget -_080AB090: .4byte gBattleAnimArgs -_080AB094: - lsls r0, r1, 8 - strh r0, [r5, 0x3A] -_080AB098: - ldr r1, _080AB0A8 @ =sub_80AB0AC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AB0A8: .4byte sub_80AB0AC - thumb_func_end sub_80AB024 - - thumb_func_start sub_80AB0AC -sub_80AB0AC: @ 80AB0AC - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080AB0C0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AB0C0: - ldrh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 24 - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x3A - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - adds r0, r1 - asrs r0, 8 - cmp r0, 0x7F - ble _080AB0F0 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - negs r0, r0 - strh r0, [r4, 0x3C] - b _080AB0F8 -_080AB0F0: - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x3A] - adds r0, r1 - strh r0, [r4, 0x3A] -_080AB0F8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AB0AC - - thumb_func_start sub_80AB100 -sub_80AB100: @ 80AB100 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AB120 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r3, _080AB124 @ =gBattleAnimArgs - ldrh r0, [r3] - movs r2, 0 - strh r0, [r1, 0x8] - strh r2, [r3, 0xE] - ldr r0, _080AB128 @ =sub_80AB12C - str r0, [r1] - bx lr - .align 2, 0 -_080AB120: .4byte gTasks -_080AB124: .4byte gBattleAnimArgs -_080AB128: .4byte sub_80AB12C - thumb_func_end sub_80AB100 - - thumb_func_start sub_80AB12C -sub_80AB12C: @ 80AB12C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080AB160 @ =gBattleAnimArgs - ldrh r0, [r2, 0xE] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0xE] - ldr r1, _080AB164 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bne _080AB15A - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080AB15A: - pop {r0} - bx r0 - .align 2, 0 -_080AB160: .4byte gBattleAnimArgs -_080AB164: .4byte gTasks - thumb_func_end sub_80AB12C - - thumb_func_start sub_80AB168 -sub_80AB168: @ 80AB168 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r7, _080AB1B4 @ =gBattleAnimAttacker - ldrb r0, [r7] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r7] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r6, _080AB1B8 @ =0x0000fff6 - strh r6, [r4, 0x26] - ldrb r0, [r7] - bl sub_807685C - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AB1C2 - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080AB1BC - movs r0, 0xA - strh r0, [r4, 0x24] - b _080AB1C4 - .align 2, 0 -_080AB1B4: .4byte gBattleAnimAttacker -_080AB1B8: .4byte 0x0000fff6 -_080AB1BC: - strh r6, [r4, 0x24] - subs r0, r5, 0x2 - b _080AB1C6 -_080AB1C2: - strh r6, [r4, 0x24] -_080AB1C4: - adds r0, r5, 0x2 -_080AB1C6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r0, _080AB1D8 @ =sub_80AB1DC - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB1D8: .4byte sub_80AB1DC - thumb_func_end sub_80AB168 - - thumb_func_start sub_80AB1DC -sub_80AB1DC: @ 80AB1DC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080AB1F2 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AB1F2: - pop {r0} - bx r0 - thumb_func_end sub_80AB1DC - - thumb_func_start sub_80AB1F8 -sub_80AB1F8: @ 80AB1F8 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r5, _080AB2B8 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, _080AB2BC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080AB242 - ldr r4, _080AB2C0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - beq _080AB23A - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AB242 -_080AB23A: - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] -_080AB242: - ldr r5, _080AB2C0 @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0 - cmp r0, 0 - bne _080AB256 - movs r1, 0x1 -_080AB256: - ldrb r0, [r5, 0xA] - movs r7, 0x1 - cmp r0, 0 - bne _080AB260 - movs r7, 0x3 -_080AB260: - adds r0, r6, 0 - bl sub_8075160 - ldr r0, _080AB2B8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080AB27A - ldrh r0, [r5, 0x4] - negs r0, r0 - strh r0, [r5, 0x4] -_080AB27A: - ldrh r0, [r5, 0x8] - strh r0, [r6, 0x2E] - ldr r4, _080AB2BC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r4] - adds r1, r7, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r6, 0x36] - ldr r0, _080AB2C4 @ =sub_8075590 - str r0, [r6, 0x1C] - ldr r1, _080AB2C8 @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB2B8: .4byte gBattleAnimAttacker -_080AB2BC: .4byte gBattleAnimTarget -_080AB2C0: .4byte gBattleAnimArgs -_080AB2C4: .4byte sub_8075590 -_080AB2C8: .4byte DestroyAnimSprite - thumb_func_end sub_80AB1F8 - - thumb_func_start sub_80AB2CC -sub_80AB2CC: @ 80AB2CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075114 - ldr r0, _080AB2FC @ =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r4, 0x2E] - ldrh r0, [r0, 0x4] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - adds r1, r0 - strh r1, [r4, 0x36] - ldr r0, _080AB300 @ =sub_8075590 - str r0, [r4, 0x1C] - ldr r1, _080AB304 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AB2FC: .4byte gBattleAnimArgs -_080AB300: .4byte sub_8075590 -_080AB304: .4byte DestroyAnimSprite - thumb_func_end sub_80AB2CC - - thumb_func_start sub_80AB308 -sub_80AB308: @ 80AB308 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080AB320 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080AB324 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8075114 - b _080AB32C - .align 2, 0 -_080AB320: .4byte gBattleAnimArgs -_080AB324: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8075160 -_080AB32C: - ldr r0, _080AB33C @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080AB340 @ =sub_80AB344 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AB33C: .4byte gBattleAnimArgs -_080AB340: .4byte sub_80AB344 - thumb_func_end sub_80AB308 - - thumb_func_start sub_80AB344 -sub_80AB344: @ 80AB344 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080AB384 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AB384: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AB344 - - thumb_func_start sub_80AB38C -sub_80AB38C: @ 80AB38C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, _080AB3FC @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl SetAnimBgAttribute - mov r0, sp - bl sub_80752A0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AB418 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080AB400 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AB408 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap - bl sub_807543C - b _080AB42E - .align 2, 0 -_080AB3FC: .4byte 0x00003f42 -_080AB400: .4byte gBattleAnimAttacker -_080AB404: .4byte gFile_graphics_unknown_unknown_E81D14_tilemap -_080AB408: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap - bl sub_807543C - b _080AB42E - .align 2, 0 -_080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap -_080AB418: - ldr r0, _080AB458 @ =gFile_graphics_unknown_unknown_E822B8_tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0x1 - bl sub_80730C0 -_080AB42E: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080AB460 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AB468 - ldr r0, _080AB464 @ =gFile_graphics_battle_anims_backgrounds_water_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080AB476 - .align 2, 0 -_080AB458: .4byte gFile_graphics_unknown_unknown_E822B8_tilemap -_080AB45C: .4byte gFile_graphics_battle_anims_backgrounds_water_sheet -_080AB460: .4byte gBattleAnimArgs -_080AB464: .4byte gFile_graphics_battle_anims_backgrounds_water_palette -_080AB468: - ldr r0, _080AB4E0 @ =gFile_graphics_battle_anims_backgrounds_water_muddy_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080AB476: - ldr r0, _080AB4E4 @ =sub_80AB79C - ldr r4, _080AB4E8 @ =gTasks - mov r2, r10 - lsls r5, r2, 2 - adds r1, r5, r2 - lsls r1, 3 - adds r6, r1, r4 - ldrb r1, [r6, 0x7] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - mov r9, r0 - mov r1, r8 - strh r1, [r6, 0x26] - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r7, r0, r4 - mov r0, r9 - strh r0, [r7, 0x8] - movs r0, 0x80 - lsls r0, 5 - strh r0, [r7, 0xA] - strh r0, [r7, 0xC] - bl sub_8073788 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080AB4F8 - ldr r1, _080AB4EC @ =0x0000ffb0 - adds r0, r1, 0 - ldr r2, _080AB4F0 @ =gBattle_BG1_X - strh r0, [r2] - adds r1, 0x20 - adds r0, r1, 0 - ldr r2, _080AB4F4 @ =gBattle_BG1_Y - strh r0, [r2] - movs r0, 0x2 - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - mov r0, r9 - strh r0, [r7, 0xE] - b _080AB552 - .align 2, 0 -_080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette -_080AB4E4: .4byte sub_80AB79C -_080AB4E8: .4byte gTasks -_080AB4EC: .4byte 0x0000ffb0 -_080AB4F0: .4byte gBattle_BG1_X -_080AB4F4: .4byte gBattle_BG1_Y -_080AB4F8: - ldr r0, _080AB528 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bne _080AB53C - ldr r2, _080AB52C @ =0x0000ff20 - adds r0, r2, 0 - ldr r2, _080AB530 @ =gBattle_BG1_X - strh r0, [r2] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldr r2, _080AB534 @ =gBattle_BG1_Y - strh r0, [r2] - movs r0, 0x2 - strh r0, [r6, 0x8] - ldr r0, _080AB538 @ =0x0000ffff - strh r0, [r6, 0xA] - strh r1, [r7, 0xE] - b _080AB552 - .align 2, 0 -_080AB528: .4byte gBattleAnimAttacker -_080AB52C: .4byte 0x0000ff20 -_080AB530: .4byte gBattle_BG1_X -_080AB534: .4byte gBattle_BG1_Y -_080AB538: .4byte 0x0000ffff -_080AB53C: - ldr r0, _080AB584 @ =gBattle_BG1_X - strh r4, [r0] - ldr r1, _080AB588 @ =0x0000ffd0 - adds r0, r1, 0 - ldr r2, _080AB58C @ =gBattle_BG1_Y - strh r0, [r2] - ldr r0, _080AB590 @ =0x0000fffe - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r7, 0xE] -_080AB552: - ldr r0, _080AB584 @ =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r2, _080AB58C @ =gBattle_BG1_Y - ldrh r1, [r2] - movs r0, 0x16 - bl SetGpuReg - ldr r1, _080AB594 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AB598 - movs r0, 0x30 - strh r0, [r1, 0x10] - movs r0, 0x70 - b _080AB59C - .align 2, 0 -_080AB584: .4byte gBattle_BG1_X -_080AB588: .4byte 0x0000ffd0 -_080AB58C: .4byte gBattle_BG1_Y -_080AB590: .4byte 0x0000fffe -_080AB594: .4byte gTasks -_080AB598: - movs r0, 0 - strh r0, [r1, 0x10] -_080AB59C: - strh r0, [r1, 0x12] - ldr r1, _080AB5C0 @ =gTasks - mov r2, r10 - adds r0, r5, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x14] - ldr r1, _080AB5C4 @ =sub_80AB5C8 - str r1, [r0] - 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 -_080AB5C0: .4byte gTasks -_080AB5C4: .4byte sub_80AB5C8 - thumb_func_end sub_80AB38C - - thumb_func_start sub_80AB5C8 -sub_80AB5C8: @ 80AB5C8 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080AB6F4 @ =gBattle_BG1_X - ldr r2, _080AB6F8 @ =gBattle_BG1_Y - ldr r0, _080AB6FC @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x8] - ldrh r3, [r1] - adds r0, r3 - strh r0, [r1] - ldrh r0, [r4, 0xA] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - mov r0, sp - bl sub_80752A0 - ldrh r0, [r4, 0xA] - ldrh r3, [r4, 0xC] - adds r0, r3 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080AB65C - ldr r1, _080AB700 @ =gPlttBufferFaded - mov r0, sp - ldrb r0, [r0, 0x8] - lsls r0, 4 - adds r0, 0x7 - lsls r0, 1 - adds r0, r1 - ldrh r6, [r0] - movs r2, 0x6 - adds r7, r1, 0 - adds r3, r7, 0 - mov r4, sp -_080AB622: - ldrb r0, [r4, 0x8] - lsls r0, 4 - adds r1, r2, 0x1 - adds r0, r1 - lsls r1, r0, 1 - adds r1, r3 - subs r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080AB622 - mov r0, sp - ldrb r0, [r0, 0x8] - lsls r0, 4 - adds r0, 0x1 - lsls r0, 1 - adds r0, r7 - strh r6, [r0] - ldr r1, _080AB6FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x12] -_080AB65C: - ldr r1, _080AB6FC @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0x14] - adds r0, 0x1 - strh r0, [r3, 0x14] - lsls r0, 16 - asrs r0, 16 - adds r4, r1, 0 - adds r6, r2, 0 - cmp r0, 0x1 - ble _080AB6CA - movs r0, 0 - strh r0, [r3, 0x14] - ldrh r0, [r3, 0xE] - adds r2, r0, 0x1 - strh r2, [r3, 0xE] - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xD - bgt _080AB6A6 - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x10 - subs r0, r2 - lsls r0, 8 - orrs r2, r0 - strh r2, [r1, 0xA] - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] -_080AB6A6: - movs r1, 0xE - ldrsh r0, [r3, r1] - cmp r0, 0x36 - ble _080AB6CA - ldrh r2, [r3, 0x10] - subs r2, 0x1 - strh r2, [r3, 0x10] - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x10 - subs r0, r2 - lsls r0, 8 - orrs r2, r0 - strh r2, [r1, 0xA] -_080AB6CA: - adds r0, r6, r5 - lsls r0, 3 - adds r2, r0, r4 - movs r3, 0x26 - ldrsh r1, [r2, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldrh r0, [r0, 0xA] - movs r3, 0x1F - ands r3, r0 - cmp r3, 0 - bne _080AB6EC - strh r3, [r2, 0x8] - ldr r0, _080AB704 @ =sub_80AB708 - str r0, [r2] -_080AB6EC: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB6F4: .4byte gBattle_BG1_X -_080AB6F8: .4byte gBattle_BG1_Y -_080AB6FC: .4byte gTasks -_080AB700: .4byte gPlttBufferFaded -_080AB704: .4byte sub_80AB708 - thumb_func_end sub_80AB5C8 - - thumb_func_start sub_80AB708 -sub_80AB708: @ 80AB708 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r7, _080AB740 @ =gBattle_BG1_X - ldr r0, _080AB744 @ =gBattle_BG1_Y - mov r8, r0 - ldr r6, _080AB748 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r6 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AB74C - movs r0, 0x1 - bl sub_8075358 - movs r0, 0x2 - bl sub_8075358 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080AB78E - .align 2, 0 -_080AB740: .4byte gBattle_BG1_X -_080AB744: .4byte gBattle_BG1_Y -_080AB748: .4byte gTasks -_080AB74C: - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AB760 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080AB760: - movs r0, 0 - strh r0, [r7] - mov r1, r8 - strh r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldr r1, _080AB798 @ =0x0000ffff - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080AB78E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB798: .4byte 0x0000ffff - thumb_func_end sub_80AB708 - - thumb_func_start sub_80AB79C -sub_80AB79C: @ 80AB79C - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080AB7C4 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080AB7B8 - b _080AB8F0 -_080AB7B8: - cmp r0, 0x1 - bgt _080AB7C8 - cmp r0, 0 - beq _080AB7D0 - b _080ABA66 - .align 2, 0 -_080AB7C4: .4byte gTasks -_080AB7C8: - cmp r0, 0x2 - bne _080AB7CE - b _080AB9BC -_080AB7CE: - b _080ABA66 -_080AB7D0: - movs r3, 0 - movs r2, 0x10 - ldrsh r0, [r4, r2] - ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers - mov r12, r1 - cmp r3, r0 - bge _080AB80E - mov r7, r12 - movs r5, 0xF0 - lsls r5, 3 - add r5, r12 - ldr r6, _080AB8A4 @ =0x0000ffff -_080AB7E8: - lsls r2, r3, 16 - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r7 - adds r1, r5 - ldrh r0, [r4, 0xC] - strh r0, [r1] - ldrh r1, [r4, 0xC] - adds r0, r6, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r3, r2, 16 - asrs r2, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r2, r0 - blt _080AB7E8 -_080AB80E: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080AB848 - ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 - ldr r7, _080AB8A4 @ =0x0000ffff -_080AB826: - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r5 - adds r1, r6 - ldrh r0, [r4, 0xA] - strh r0, [r1] - ldrh r1, [r4, 0xA] - adds r0, r7, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080AB826 -_080AB848: - ldrh r3, [r4, 0x12] - lsls r2, r3, 16 - asrs r0, r2, 16 - cmp r0, 0x9F - bgt _080AB87E - ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 - ldr r7, _080AB8A4 @ =0x0000ffff -_080AB85C: - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r5 - adds r1, r6 - ldrh r0, [r4, 0xC] - strh r0, [r1] - ldrh r1, [r4, 0xC] - adds r0, r7, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r3, r2, 16 - lsls r2, r3, 16 - asrs r0, r2, 16 - cmp r0, 0x9F - ble _080AB85C -_080AB87E: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AB8A8 - lsls r0, r3, 16 - asrs r0, 15 - mov r3, r12 - adds r2, r0, r3 - movs r1, 0xF0 - lsls r1, 3 - add r1, r12 - adds r0, r1 - ldrh r1, [r4, 0xA] - strh r1, [r0] - ldrh r0, [r4, 0xA] - b _080AB8BE - .align 2, 0 -_080AB8A0: .4byte gScanlineEffectRegBuffers -_080AB8A4: .4byte 0x0000ffff -_080AB8A8: - lsls r0, r3, 16 - asrs r0, 15 - mov r1, r12 - adds r2, r0, r1 - movs r1, 0xF0 - lsls r1, 3 - add r1, r12 - adds r0, r1 - ldrh r1, [r4, 0xC] - strh r1, [r0] - ldrh r0, [r4, 0xC] -_080AB8BE: - strh r0, [r2] - ldr r0, _080AB8E8 @ =0x04000052 - str r0, [sp] - ldr r0, _080AB8EC @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080ABA66 - .align 2, 0 -_080AB8E8: .4byte 0x04000052 -_080AB8EC: .4byte 0xa2600001 -_080AB8F0: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080AB908 - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bgt _080AB91C - strh r1, [r4, 0x10] - b _080AB916 -_080AB908: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6F - ble _080AB91C -_080AB916: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080AB91C: - movs r3, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bge _080AB950 - ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers - ldr r5, _080AB9B8 @ =gScanlineEffect -_080AB92A: - lsls r1, r3, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldrb r2, [r5, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - adds r3, r6 - ldrh r0, [r4, 0xC] - strh r0, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r3, r1, 16 - asrs r1, 16 - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080AB92A -_080AB950: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080AB984 - ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers - ldr r5, _080AB9B8 @ =gScanlineEffect -_080AB962: - asrs r3, r2, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xA] - strh r0, [r2] - adds r3, 0x1 - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080AB962 -_080AB984: - ldrh r3, [r4, 0x12] - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080ABA66 - ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers - ldr r5, _080AB9B8 @ =gScanlineEffect -_080AB992: - asrs r3, r1, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080AB992 - b _080ABA66 - .align 2, 0 -_080AB9B4: .4byte gScanlineEffectRegBuffers -_080AB9B8: .4byte gScanlineEffect -_080AB9BC: - movs r3, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bge _080AB9F0 - ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers - ldr r5, _080ABA74 @ =gScanlineEffect -_080AB9CA: - lsls r1, r3, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldrb r2, [r5, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - adds r3, r6 - ldrh r0, [r4, 0xC] - strh r0, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r3, r1, 16 - asrs r1, 16 - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080AB9CA -_080AB9F0: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080ABA24 - ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers - ldr r5, _080ABA74 @ =gScanlineEffect -_080ABA02: - asrs r3, r2, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xA] - strh r0, [r2] - adds r3, 0x1 - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080ABA02 -_080ABA24: - ldrh r3, [r4, 0x12] - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080ABA50 - ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers - ldr r5, _080ABA74 @ =gScanlineEffect -_080ABA32: - asrs r3, r1, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080ABA32 -_080ABA50: - movs r0, 0x26 - ldrsh r1, [r4, r0] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080ABA66 - bl ScanlineEffect_Stop - adds r0, r7, 0 - bl DestroyTask -_080ABA66: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ABA70: .4byte gScanlineEffectRegBuffers -_080ABA74: .4byte gScanlineEffect - thumb_func_end sub_80AB79C - - thumb_func_start sub_80ABA78 -sub_80ABA78: @ 80ABA78 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r3, _080ABACC @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080ABAD0 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8075114 - 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, _080ABAD4 @ =0x000001ff - ands r1, r0 - adds r0, r1, 0 - cmp r0, 0xFF - ble _080ABABE - subs r0, r6, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_080ABABE: - strh r5, [r4, 0x30] - strh r1, [r4, 0x32] - ldr r0, _080ABAD8 @ =sub_80ABADC - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ABACC: .4byte 0x000003ff -_080ABAD0: .4byte 0xfffffc00 -_080ABAD4: .4byte 0x000001ff -_080ABAD8: .4byte sub_80ABADC - thumb_func_end sub_80ABA78 - - thumb_func_start sub_80ABADC -sub_80ABADC: @ 80ABADC - 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 _080ABB00 - lsls r0, r3, 16 - asrs r0, 24 - negs r0, r0 - b _080ABB04 -_080ABB00: - lsls r0, r3, 16 - asrs r0, 24 -_080ABB04: - 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 _080ABB22 - adds r0, r2, 0 - bl DestroyAnimSprite -_080ABB22: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ABADC - - thumb_func_start sub_80ABB28 -sub_80ABB28: @ 80ABB28 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080ABB78 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r2, _080ABB7C @ =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, 0x12] - bl sub_80ABDC8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80758E0 - ldr r0, _080ABB80 @ =sub_80ABB84 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ABB78: .4byte gTasks -_080ABB7C: .4byte gSprites -_080ABB80: .4byte sub_80ABB84 - thumb_func_end sub_80ABB28 - - thumb_func_start sub_80ABB84 -sub_80ABB84: @ 80ABB84 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080ABBAC @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bls _080ABBA0 - b _080ABDBE -_080ABBA0: - lsls r0, 2 - ldr r1, _080ABBB0 @ =_080ABBB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ABBAC: .4byte gTasks -_080ABBB0: .4byte _080ABBB4 - .align 2, 0 -_080ABBB4: - .4byte _080ABBD4 - .4byte _080ABBFA - .4byte _080ABC8C - .4byte _080ABCC2 - .4byte _080ABCD6 - .4byte _080ABCE4 - .4byte _080ABD64 - .4byte _080ABDB0 -_080ABBD4: - 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] -_080ABBFA: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080ABC56 - movs r0, 0 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080ABC44 - ldr r2, _080ABC40 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strh r1, [r0, 0x24] - 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] - b _080ABC56 - .align 2, 0 -_080ABC40: .4byte gSprites -_080ABC44: - ldr r2, _080ABC84 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080ABC88 @ =0x0000fffd - strh r1, [r0, 0x24] -_080ABC56: - adds r0, r4, 0 - bl sub_8076640 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080ABC66 - b _080ABDBE -_080ABC66: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076440 - ldr r2, _080ABC84 @ =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, 0xE] - b _080ABDA0 - .align 2, 0 -_080ABC84: .4byte gSprites -_080ABC88: .4byte 0x0000fffd -_080ABC8C: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080ABC9C - b _080ABDBE -_080ABC9C: - 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, 0xE0 - str r0, [sp, 0x4] - movs r0, 0x8 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r2, 0xE0 - bl sub_80765D4 - movs r0, 0 - strh r0, [r4, 0xE] - b _080ABDA2 -_080ABCC2: - adds r0, r4, 0 - bl sub_8076640 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080ABDBE - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - b _080ABDA2 -_080ABCD6: - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80ABE4C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080ABCE4: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080ABDBE - movs r0, 0 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080ABD1C - ldr r2, _080ABD18 @ =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, 0x2 - b _080ABD2E - .align 2, 0 -_080ABD18: .4byte gSprites -_080ABD1C: - ldr r2, _080ABD60 @ =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, 0x2 -_080ABD2E: - strh r1, [r0, 0x26] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080ABDBE - 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, 0xE0 - bl sub_80765D4 - movs r0, 0 - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - b _080ABDA2 - .align 2, 0 -_080ABD60: .4byte gSprites -_080ABD64: - ldr r6, _080ABDAC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] - adds r0, r4, 0 - bl sub_8076640 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080ABDBE - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8075980 - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0x12] - strh r1, [r0, 0x22] -_080ABDA0: - strh r5, [r4, 0x10] -_080ABDA2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080ABDBE - .align 2, 0 -_080ABDAC: .4byte gSprites -_080ABDB0: - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080ABDBE - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080ABDBE: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80ABB84 - - thumb_func_start sub_80ABDC8 -sub_80ABDC8: @ 80ABDC8 - push {r4,r5,lr} - ldr r4, _080ABDEC @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080ABDFC - ldr r1, _080ABDF0 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080ABDF4 @ =gPlayerParty - b _080ABE0C - .align 2, 0 -_080ABDEC: .4byte gBattleAnimAttacker -_080ABDF0: .4byte gBattlerPartyIndexes -_080ABDF4: .4byte gPlayerParty -_080ABDF8: - adds r0, r2, 0 - b _080ABE3E -_080ABDFC: - ldr r1, _080ABE44 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080ABE48 @ =gEnemyParty -_080ABE0C: - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - lsrs r4, 18 - movs r2, 0 -_080ABE2A: - adds r1, r2, 0x1 - adds r0, r4, 0 - muls r0, r1 - cmp r3, r0 - blt _080ABDF8 - lsls r0, r1, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080ABE2A - movs r0, 0x3 -_080ABE3E: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080ABE44: .4byte gBattlerPartyIndexes -_080ABE48: .4byte gEnemyParty - thumb_func_end sub_80ABDC8 - - thumb_func_start sub_80ABE4C -sub_80ABE4C: @ 80ABE4C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - ldr r4, _080ABF54 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0xAC - ldrb r0, [r4] - bl sub_807685C - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - ldrh r1, [r7, 0xA] - movs r0, 0x4 - subs r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bgt _080ABE9C - movs r1, 0x1 -_080ABE9C: - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r1, 16 - mov r10, r8 - mov r9, r6 - mov r1, r10 - lsls r1, 4 - str r1, [sp, 0xC] - mov r1, r9 - lsls r1, 4 - str r1, [sp, 0x10] - asrs r0, 16 - mov r8, r0 -_080ABEB6: - ldr r0, _080ABF58 @ =gUnknown_83E5AE0 - mov r1, r10 - mov r2, r9 - ldr r3, [sp, 0x8] - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - lsls r6, r5, 16 - cmp r2, 0x40 - beq _080ABF1E - ldr r1, _080ABF5C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r5, r0, r1 - mov r0, sp - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x30] - mov r1, sp - ldrh r1, [r1, 0xC] - strh r1, [r5, 0x32] - mov r0, sp - ldrh r0, [r0, 0x10] - strh r0, [r5, 0x34] - asrs r4, r6, 16 - adds r0, r4, 0 - movs r1, 0x40 - bl Cos - strh r0, [r5, 0x36] - adds r0, r4, 0 - movs r1, 0x40 - bl Sin - strh r0, [r5, 0x38] - mov r1, sp - ldrh r1, [r1] - strh r1, [r5, 0x3A] - movs r0, 0x2 - strh r0, [r5, 0x3C] - ldrh r1, [r7, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080ABF18 - adds r0, r5, 0 - bl sub_80ABF60 -_080ABF18: - ldrh r0, [r7, 0xC] - adds r0, 0x1 - strh r0, [r7, 0xC] -_080ABF1E: - mov r1, r8 - lsls r0, r1, 1 - asrs r1, r6, 16 - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r5, r0, 16 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r0, 16 - add r0, r8 - lsls r0, 16 - lsrs r1, r0, 16 - str r1, [sp, 0x4] - asrs r0, 16 - cmp r0, 0x13 - ble _080ABEB6 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ABF54: .4byte gBattleAnimAttacker -_080ABF58: .4byte gUnknown_83E5AE0 -_080ABF5C: .4byte gSprites - thumb_func_end sub_80ABE4C - - thumb_func_start sub_80ABF60 -sub_80ABF60: @ 80ABF60 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080ABF72 - cmp r0, 0x1 - beq _080ABFA8 - b _080AC002 -_080ABF72: - movs r2, 0x30 - ldrsh r0, [r4, r2] - movs r1, 0x6 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x36] - adds r1, r0 - strh r1, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_080ABFA8: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x38] - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r2, r1, 20 - strh r2, [r4, 0x22] - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _080ABFDE - adds r1, r2, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080ABFDE - cmp r1, 0x78 - ble _080AC002 -_080ABFDE: - ldr r3, _080AC008 @ =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 -_080AC002: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AC008: .4byte gTasks - thumb_func_end sub_80ABF60 - - thumb_func_start sub_80AC00C -sub_80AC00C: @ 80AC00C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080AC03C @ =gTasks - adds r4, r1, r0 - bl sub_80ABDC8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - ldr r0, _080AC040 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080AC044 - movs r0, 0x88 - strh r0, [r4, 0x10] - movs r0, 0x28 - b _080AC04A - .align 2, 0 -_080AC03C: .4byte gTasks -_080AC040: .4byte gBattleAnimAttacker -_080AC044: - movs r0, 0x10 - strh r0, [r4, 0x10] - movs r0, 0x50 -_080AC04A: - strh r0, [r4, 0x14] - movs r0, 0x62 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x31 - strh r0, [r4, 0x16] - movs r0, 0xA - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x5 - strh r0, [r4, 0x20] - ldr r0, _080AC06C @ =sub_80AC070 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AC06C: .4byte sub_80AC070 - thumb_func_end sub_80AC00C - - thumb_func_start sub_80AC070 -sub_80AC070: @ 80AC070 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r7, _080AC094 @ =gTasks - adds r4, r0, r7 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - beq _080AC098 - cmp r2, 0x1 - beq _080AC148 - b _080AC156 - .align 2, 0 -_080AC094: .4byte gTasks -_080AC098: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080AC0AE - strh r2, [r4, 0xC] - adds r0, r4, 0 - bl sub_80AC160 -_080AC0AE: - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080AC128 - movs r2, 0x22 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080AC128 - ldr r5, _080AC13C @ =gBattleAnimArgs - movs r1, 0x1 - mov r8, r1 - mov r2, r8 - strh r2, [r5] - strh r0, [r5, 0x2] - movs r0, 0xC - strh r0, [r5, 0x4] - ldr r6, _080AC140 @ =sub_80B94B4 - adds r0, r6, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080AC0F8 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r7 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - ldr r1, _080AC144 @ =gUnknown_2037EE2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080AC0F8: - movs r0, 0x3 - strh r0, [r5] - adds r0, r6, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080AC124 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r7 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - ldr r1, _080AC144 @ =gUnknown_2037EE2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080AC124: - mov r0, r8 - strh r0, [r4, 0x22] -_080AC128: - movs r2, 0x1E - ldrsh r1, [r4, r2] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080AC156 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080AC156 - .align 2, 0 -_080AC13C: .4byte gBattleAnimArgs -_080AC140: .4byte sub_80B94B4 -_080AC144: .4byte gUnknown_2037EE2 -_080AC148: - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080AC156 - adds r0, r1, 0 - bl DestroyAnimVisualTask -_080AC156: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AC070 - - thumb_func_start sub_80AC160 -sub_80AC160: @ 80AC160 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _080AC1EC @ =gSineTable - movs r2, 0x18 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x3 - asrs r0, 4 - ldrh r2, [r4, 0x14] - adds r0, r2 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080AC1F0 @ =gUnknown_83E5AE0 - movs r2, 0x16 - ldrsh r1, [r4, r2] - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080AC1BA - ldr r3, _080AC1F4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _080AC1F8 @ =sub_80AC204 - str r2, [r1] - adds r0, r3 - strh r5, [r0, 0x38] - strh r6, [r0, 0x3A] - movs r1, 0x9 - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] -_080AC1BA: - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x18] - adds r0, 0x27 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x18] - movs r0, 0x16 - ldrsh r1, [r4, r0] - ldr r0, _080AC1FC @ =0x41c64e6d - muls r0, r1 - ldr r1, _080AC200 @ =0x00003039 - adds r0, r1 - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl __modsi3 - ldrh r1, [r4, 0x10] - adds r1, r0 - strh r1, [r4, 0x16] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AC1EC: .4byte gSineTable -_080AC1F0: .4byte gUnknown_83E5AE0 -_080AC1F4: .4byte gSprites -_080AC1F8: .4byte sub_80AC204 -_080AC1FC: .4byte 0x41c64e6d -_080AC200: .4byte 0x00003039 - thumb_func_end sub_80AC160 - - thumb_func_start sub_80AC204 -sub_80AC204: @ 80AC204 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AC29A - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x38 - ldrsh r1, [r5, r2] - cmp r0, r1 - blt _080AC29A - ldr r2, _080AC2A0 @ =gTasks - movs r3, 0x3A - ldrsh r1, [r5, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x1C] - ldr r0, _080AC2A4 @ =gUnknown_83E7C38 - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x30] - cmp r0, 0x40 - beq _080AC294 - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080AC2A8 @ =gSprites - adds r0, r4 - movs r1, 0x3 - bl StartSpriteAffineAnim - movs r2, 0x30 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x3A] - strh r1, [r0, 0x3A] - movs r3, 0x30 - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x3C] - strh r1, [r0, 0x3C] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080AC2AC @ =sub_80AC2B0 - str r1, [r0] -_080AC294: - adds r0, r5, 0 - bl DestroySprite -_080AC29A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AC2A0: .4byte gTasks -_080AC2A4: .4byte gUnknown_83E7C38 -_080AC2A8: .4byte gSprites -_080AC2AC: .4byte sub_80AC2B0 - thumb_func_end sub_80AC204 - - thumb_func_start sub_80AC2B0 -sub_80AC2B0: @ 80AC2B0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080AC31C - movs r0, 0 - strh r0, [r4, 0x30] - 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] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _080AC31C - ldr r3, _080AC324 @ =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 -_080AC31C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AC324: .4byte gTasks - thumb_func_end sub_80AC2B0 - - thumb_func_start sub_80AC328 -sub_80AC328: @ 80AC328 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080AC3AC @ =gTasks - adds r5, r1, r0 - ldr r4, _080AC3B0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0xE] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080AC36C - movs r1, 0x1 -_080AC36C: - strh r1, [r5, 0x16] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080AC380 - movs r1, 0x16 - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r5, 0x16] -_080AC380: - movs r2, 0x16 - ldrsh r0, [r5, r2] - lsls r0, 3 - ldrh r1, [r5, 0xE] - adds r0, r1 - strh r0, [r5, 0x12] - movs r2, 0x16 - ldrsh r1, [r5, r2] - lsls r1, 3 - ldrh r0, [r5, 0x10] - subs r0, r1 - strh r0, [r5, 0x14] - ldr r0, _080AC3B4 @ =0x0000ffe0 - strh r0, [r5, 0x1A] - strh r6, [r5, 0xA] - strh r6, [r5, 0x8] - ldr r0, _080AC3B8 @ =sub_80AC3BC - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AC3AC: .4byte gTasks -_080AC3B0: .4byte gBattleAnimAttacker -_080AC3B4: .4byte 0x0000ffe0 -_080AC3B8: .4byte sub_80AC3BC - thumb_func_end sub_80AC328 - - thumb_func_start sub_80AC3BC -sub_80AC3BC: @ 80AC3BC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080AC3E0 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bls _080AC3D6 - b _080AC4F6 -_080AC3D6: - lsls r0, 2 - ldr r1, _080AC3E4 @ =_080AC3E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AC3E0: .4byte gTasks -_080AC3E4: .4byte _080AC3E8 - .align 2, 0 -_080AC3E8: - .4byte _080AC404 - .4byte _080AC414 - .4byte _080AC42E - .4byte _080AC470 - .4byte _080AC492 - .4byte _080AC4C0 - .4byte _080AC4E6 -_080AC404: - adds r0, r4, 0 - bl sub_80AC504 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080AC4FC - b _080AC4EE -_080AC414: - adds r0, r4, 0 - bl sub_80AC504 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080AC4FC - movs r0, 0 - strh r0, [r4, 0xA] - b _080AC4EE -_080AC42E: - adds r0, r4, 0 - bl sub_80AC504 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x12] - adds r1, r0 - movs r2, 0 - strh r1, [r4, 0x12] - adds r1, 0x10 - lsls r1, 16 - movs r0, 0x88 - lsls r0, 17 - cmp r1, r0 - bls _080AC4FC - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080AC46C - movs r0, 0x1 - strh r0, [r4, 0x22] - movs r0, 0x6 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - b _080AC4FC -_080AC46C: - strh r2, [r4, 0xA] - b _080AC4EE -_080AC470: - adds r0, r4, 0 - bl sub_80AC504 - movs r0, 0x16 - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x14] - subs r0, r1 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080AC4FC - b _080AC4EE -_080AC492: - adds r0, r4, 0 - bl sub_80AC504 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x12] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bls _080AC4FC - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0xA] - b _080AC4EE -_080AC4C0: - adds r0, r4, 0 - bl sub_80AC504 - movs r0, 0x16 - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x14] - subs r0, r1 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080AC4FC - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080AC4FC -_080AC4E6: - movs r1, 0x18 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AC4FC -_080AC4EE: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080AC4FC -_080AC4F6: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080AC4FC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AC3BC - - thumb_func_start sub_80AC504 -sub_80AC504: @ 80AC504 - push {r4-r6,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080AC55E - movs r0, 0 - strh r0, [r6, 0xC] - ldr r0, _080AC564 @ =gUnknown_83E5AE0 - movs r2, 0xE - ldrsh r1, [r6, r2] - movs r3, 0x10 - ldrsh r2, [r6, r3] - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080AC55E - ldr r5, _080AC568 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r0, r4, r5 - movs r1, 0x10 - strh r1, [r0, 0x2E] - ldrh r1, [r6, 0x12] - strh r1, [r0, 0x32] - ldrh r1, [r6, 0x14] - strh r1, [r0, 0x36] - ldrh r1, [r6, 0x1A] - strh r1, [r0, 0x38] - bl sub_8075068 - adds r5, 0x1C - adds r4, r5 - ldr r0, _080AC56C @ =sub_80AC570 - str r0, [r4] - ldrh r0, [r6, 0x18] - adds r0, 0x1 - strh r0, [r6, 0x18] -_080AC55E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AC564: .4byte gUnknown_83E5AE0 -_080AC568: .4byte gSprites -_080AC56C: .4byte sub_80AC570 - thumb_func_end sub_80AC504 - - thumb_func_start sub_80AC570 -sub_80AC570: @ 80AC570 - push {r4-r6,lr} - adds r6, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080AC5CA - ldrh r0, [r6, 0x24] - ldrh r1, [r6, 0x20] - adds r0, r1 - strh r0, [r6, 0x20] - ldrh r0, [r6, 0x26] - ldrh r1, [r6, 0x22] - adds r0, r1 - strh r0, [r6, 0x22] - movs r0, 0x6 - strh r0, [r6, 0x2E] - bl Random - movs r4, 0x1F - adds r1, r4, 0 - ands r1, r0 - ldr r5, _080AC5D0 @ =0x0000fff0 - adds r1, r5 - ldrh r0, [r6, 0x20] - adds r1, r0 - strh r1, [r6, 0x32] - bl Random - ands r4, r0 - adds r4, r5 - ldrh r1, [r6, 0x22] - adds r4, r1 - strh r4, [r6, 0x36] - bl Random - movs r1, 0x7 - ands r1, r0 - mvns r1, r1 - strh r1, [r6, 0x38] - adds r0, r6, 0 - bl sub_8075068 - ldr r0, _080AC5D4 @ =sub_80AC5D8 - str r0, [r6, 0x1C] -_080AC5CA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AC5D0: .4byte 0x0000fff0 -_080AC5D4: .4byte sub_80AC5D8 - thumb_func_end sub_80AC570 - - thumb_func_start sub_80AC5D8 -sub_80AC5D8: @ 80AC5D8 - push {r4-r6,lr} - adds r5, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080AC614 - movs r4, 0 - ldr r6, _080AC61C @ =gTasks -_080AC5EA: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r6 - ldr r1, [r2] - ldr r0, _080AC620 @ =sub_80AC3BC - cmp r1, r0 - bne _080AC60A - movs r0, 0x1 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0x18] - subs r0, 0x1 - strh r0, [r2, 0x18] - adds r0, r5, 0 - bl DestroySprite -_080AC60A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _080AC5EA -_080AC614: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AC61C: .4byte gTasks -_080AC620: .4byte sub_80AC3BC - thumb_func_end sub_80AC5D8 - - thumb_func_start sub_80AC624 -sub_80AC624: @ 80AC624 - ldr r2, _080AC644 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x6] - strh r1, [r0, 0x30] - ldrh r1, [r2, 0x8] - strh r1, [r0, 0x32] - ldrh r1, [r2, 0xA] - strh r1, [r0, 0x34] - ldr r1, _080AC648 @ =sub_80AC64C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080AC644: .4byte gBattleAnimArgs -_080AC648: .4byte sub_80AC64C - thumb_func_end sub_80AC624 - - thumb_func_start sub_80AC64C -sub_80AC64C: @ 80AC64C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x2E] - subs r0, r1 - strh r0, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x38] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080AC690 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AC690: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AC64C - - thumb_func_start sub_80AC698 -sub_80AC698: @ 80AC698 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 23 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080AC6D0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080AC6D0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AC698 - - thumb_func_start sub_80AC6D8 -sub_80AC6D8: @ 80AC6D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r5, _080AC714 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x30] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldr r1, _080AC718 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080AC71C @ =sub_80AC720 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AC714: .4byte gBattleAnimTarget -_080AC718: .4byte gBattleAnimArgs -_080AC71C: .4byte sub_80AC720 - thumb_func_end sub_80AC6D8 - - thumb_func_start sub_80AC720 -sub_80AC720: @ 80AC720 - push {r4-r6,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x20 - ldrsh r0, [r4, r2] - subs r6, r1, r0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x22 - ldrsh r0, [r4, r2] - subs r5, r1, r0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - muls r0, r6 - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - muls r0, r5 - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AC778 - movs r0, 0 - strh r0, [r4, 0x38] - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80AC798 -_080AC778: - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080AC78A - adds r0, r4, 0 - bl DestroyAnimSprite -_080AC78A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80AC720 - - thumb_func_start sub_80AC798 -sub_80AC798: @ 80AC798 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r4, r1, 0 - adds r5, r2, 0 - movs r2, 0x2E - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - lsls r1, 15 - lsrs r1, 16 - str r1, [sp] - ldrh r1, [r0, 0x24] - ldrh r3, [r0, 0x20] - adds r1, r3 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r0, r5, r0 - subs r0, 0x5 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl Random - negs r4, r4 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r4, r0 - subs r4, 0x5 - lsls r4, 16 - lsrs r7, r4, 16 - movs r6, 0 - mov r0, r8 - lsls r0, 16 - mov r8, r0 - mov r1, r10 - lsls r1, 16 - str r1, [sp, 0xC] - ldr r2, [sp] - lsls r2, 16 - str r2, [sp, 0x10] - asrs r1, 16 - lsls r0, r7, 16 - asrs r5, r0, 16 - str r0, [sp, 0x14] - negs r3, r5 - str r3, [sp, 0x4] - asrs r0, r2, 16 - adds r1, r0 - lsls r1, 16 - mov r10, r1 -_080AC826: - ldr r0, _080AC868 @ =gUnknown_83E5B88 - mov r2, r8 - asrs r1, r2, 16 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0x82 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080AC86C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r1 - movs r0, 0x14 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - ldr r0, _080AC870 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - cmp r5, 0 - bge _080AC874 - mov r1, sp - ldrh r1, [r1, 0x4] - strh r1, [r4, 0x32] - b _080AC876 - .align 2, 0 -_080AC868: .4byte gUnknown_83E5B88 -_080AC86C: .4byte gSprites -_080AC870: .4byte gBattleAnimAttacker -_080AC874: - strh r7, [r4, 0x32] -_080AC876: - lsls r0, r6, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - lsrs r6, r0, 16 - cmp r0, 0 - ble _080AC826 - movs r6, 0 - ldr r3, [sp, 0xC] - asrs r1, r3, 16 - ldr r0, [sp, 0x14] - asrs r5, r0, 16 - negs r2, r5 - str r2, [sp, 0x8] - ldr r3, [sp, 0x10] - asrs r0, r3, 16 - subs r1, r0 - lsls r1, 16 - mov r10, r1 -_080AC89C: - ldr r0, _080AC8E0 @ =gUnknown_83E5B88 - mov r2, r8 - asrs r1, r2, 16 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0x82 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080AC8E4 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r1 - movs r0, 0x14 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - ldr r0, _080AC8E8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - cmp r5, 0 - ble _080AC8EC - mov r1, sp - ldrh r1, [r1, 0x8] - strh r1, [r4, 0x32] - b _080AC8EE - .align 2, 0 -_080AC8E0: .4byte gUnknown_83E5B88 -_080AC8E4: .4byte gSprites -_080AC8E8: .4byte gBattleAnimAttacker -_080AC8EC: - strh r7, [r4, 0x32] -_080AC8EE: - lsls r0, r6, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - lsrs r6, r0, 16 - cmp r0, 0 - ble _080AC89C - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AC798 - - 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 @ =gUnknown_2023D44 - 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 gUnknown_2023D44 -_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 - - thumb_func_start sub_80ADBEC -sub_80ADBEC: @ 80ADBEC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080ADC0C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080ADC14 - ldr r0, _080ADC10 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080ADC20 - .align 2, 0 -_080ADC0C: .4byte gBattleAnimAttacker -_080ADC10: .4byte gBattleAnimArgs -_080ADC14: - ldr r1, _080ADC34 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_080ADC20: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080ADC38 @ =sub_80ADC3C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC34: .4byte gBattleAnimArgs -_080ADC38: .4byte sub_80ADC3C - thumb_func_end sub_80ADBEC - - thumb_func_start sub_80ADC3C -sub_80ADC3C: @ 80ADC3C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080ADC52 - adds r0, r2, 0 - bl DestroyAnimSprite -_080ADC52: - pop {r0} - bx r0 - thumb_func_end sub_80ADC3C - - thumb_func_start sub_80ADC58 -sub_80ADC58: @ 80ADC58 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080ADC78 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080ADC80 - ldr r0, _080ADC7C @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r4, 0x20] - b _080ADC8A - .align 2, 0 -_080ADC78: .4byte gBattleAnimAttacker -_080ADC7C: .4byte gBattleAnimArgs -_080ADC80: - ldr r0, _080ADC94 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_080ADC8A: - ldr r0, _080ADC98 @ =sub_80ADC9C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC94: .4byte gBattleAnimArgs -_080ADC98: .4byte sub_80ADC9C - thumb_func_end sub_80ADC58 - - thumb_func_start sub_80ADC9C -sub_80ADC9C: @ 80ADC9C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080ADCB2 - adds r0, r2, 0 - bl move_anim_8074EE0 -_080ADCB2: - pop {r0} - bx r0 - thumb_func_end sub_80ADC9C - - thumb_func_start sub_80ADCB8 -sub_80ADCB8: @ 80ADCB8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080ADCFC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080ADD00 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080ADD08 - ldr r2, _080ADD04 @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x22] - b _080ADD1C - .align 2, 0 -_080ADCFC: .4byte gBattleAnimTarget -_080ADD00: .4byte gBattleAnimAttacker -_080ADD04: .4byte gBattleAnimArgs -_080ADD08: - ldr r0, _080ADD40 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - ldrh r1, [r0, 0x2] - ldrh r2, [r5, 0x22] - adds r1, r2 - strh r1, [r5, 0x22] - adds r2, r0, 0 -_080ADD1C: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x34] - ldr r1, _080ADD44 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080ADD48 @ =sub_8074A80 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ADD40: .4byte gBattleAnimArgs -_080ADD44: .4byte move_anim_8074EE0 -_080ADD48: .4byte sub_8074A80 - thumb_func_end sub_80ADCB8 - - thumb_func_start sub_80ADD4C -sub_80ADD4C: @ 80ADD4C - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080ADD64 @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080ADDC4 - cmp r0, 0x1 - bgt _080ADD68 - cmp r0, 0 - beq _080ADD72 - b _080ADDC4 - .align 2, 0 -_080ADD64: .4byte gBattleAnimArgs -_080ADD68: - cmp r0, 0x2 - beq _080ADD7C - cmp r0, 0x3 - beq _080ADDA0 - b _080ADDC4 -_080ADD72: - ldr r0, _080ADD78 @ =gBattleAnimAttacker - b _080ADDC6 - .align 2, 0 -_080ADD78: .4byte gBattleAnimAttacker -_080ADD7C: - ldr r4, _080ADD94 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r6, 0x2 - eors r0, r6 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - bne _080ADD98 - ldrb r4, [r4] - b _080ADDC8 - .align 2, 0 -_080ADD94: .4byte gBattleAnimAttacker -_080ADD98: - ldrb r0, [r4] - adds r4, r6, 0 - eors r4, r0 - b _080ADDC8 -_080ADDA0: - ldr r0, _080ADDBC @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r4, 0x2 - eors r0, r4 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080ADDC4 - ldr r0, _080ADDC0 @ =gBattleAnimTarget - ldrb r0, [r0] - eors r4, r0 - b _080ADDC8 - .align 2, 0 -_080ADDBC: .4byte gBattleAnimAttacker -_080ADDC0: .4byte gBattleAnimTarget -_080ADDC4: - ldr r0, _080ADDE8 @ =gBattleAnimTarget -_080ADDC6: - ldrb r4, [r0] -_080ADDC8: - ldr r0, _080ADDEC @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080ADDF0 - adds r0, r4, 0 - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x1 - b _080ADE02 - .align 2, 0 -_080ADDE8: .4byte gBattleAnimTarget -_080ADDEC: .4byte gBattleAnimArgs -_080ADDF0: - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x3 -_080ADE02: - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r7, _080ADEA0 @ =gSineTable - ldr r6, _080ADEA4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x24] - movs r1, 0 - ldrsh r0, [r6, r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x26] - ldrh r1, [r6, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080ADE66 - adds r0, r4, 0 - bl sub_8076884 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] -_080ADE66: - ldrb r2, [r5, 0x3] - lsls r2, 26 - lsrs r2, 27 - movs r0, 0x4 - ldrsh r1, [r6, r0] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - ldr r3, _080ADEA8 @ =gOamMatrices - lsls r2, 3 - adds r2, r3 - adds r1, 0x40 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - strh r1, [r2, 0x6] - strh r1, [r2] - strh r0, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r2, 0x4] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldr r0, _080ADEAC @ =sub_80B1D3C - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ADEA0: .4byte gSineTable -_080ADEA4: .4byte gBattleAnimArgs -_080ADEA8: .4byte gOamMatrices -_080ADEAC: .4byte sub_80B1D3C - thumb_func_end sub_80ADD4C - - thumb_func_start sub_80ADEB0 -sub_80ADEB0: @ 80ADEB0 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r5, _080ADF24 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r6, _080ADF28 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x38] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x3A] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x3C] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, _080ADF2C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080ADF30 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r1, _080ADF34 @ =sub_80ADF38 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADF24: .4byte gBattleAnimArgs -_080ADF28: .4byte gBattleAnimTarget -_080ADF2C: .4byte 0x000003ff -_080ADF30: .4byte 0xfffffc00 -_080ADF34: .4byte sub_80ADF38 - thumb_func_end sub_80ADEB0 - - thumb_func_start sub_80ADF38 -sub_80ADF38: @ 80ADF38 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080ADFA2 - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080ADFA8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080ADFA8 -_080ADFA2: - adds r0, r4, 0 - bl DestroyAnimSprite -_080ADFA8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ADF38 - - thumb_func_start sub_80ADFB0 -sub_80ADFB0: @ 80ADFB0 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x38] - subs r0, 0x1 - strh r0, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080ADFE8 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x36] - strh r0, [r3, 0x38] -_080ADFE8: - ldrh r0, [r3, 0x34] - subs r1, r0, 0x1 - strh r1, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bgt _080ADFFA - adds r0, r3, 0 - bl DestroyAnimSprite -_080ADFFA: - pop {r0} - bx r0 - thumb_func_end sub_80ADFB0 - - thumb_func_start sub_80AE000 -sub_80AE000: @ 80AE000 - push {r4-r6,lr} - adds r6, r0, 0 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AE01C - ldr r0, _080AE060 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080AE024 -_080AE01C: - ldr r1, _080AE064 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_080AE024: - ldr r5, _080AE060 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080AE064 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4] - strh r0, [r6, 0x34] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x36] - strh r0, [r6, 0x38] - ldr r0, _080AE068 @ =sub_80ADFB0 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AE060: .4byte gBattleAnimTarget -_080AE064: .4byte gBattleAnimArgs -_080AE068: .4byte sub_80ADFB0 - thumb_func_end sub_80AE000 - - thumb_func_start sub_80AE06C -sub_80AE06C: @ 80AE06C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r1, _080AE088 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x2E] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080AE090 - ldr r0, _080AE08C @ =gBattleAnimTarget - b _080AE092 - .align 2, 0 -_080AE088: .4byte gBattleAnimArgs -_080AE08C: .4byte gBattleAnimTarget -_080AE090: - ldr r0, _080AE118 @ =gBattleAnimAttacker -_080AE092: - ldrb r6, [r0] - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _080AE0AA - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080AE0B2 -_080AE0AA: - ldr r1, _080AE11C @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080AE0B2: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - ldr r4, _080AE11C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r4] - adds r0, r3 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r1, [r4, 0xE] - ldr r0, _080AE120 @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x38] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x3C] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, _080AE124 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080AE128 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r1, _080AE12C @ =sub_80AE130 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AE118: .4byte gBattleAnimAttacker -_080AE11C: .4byte gBattleAnimArgs -_080AE120: .4byte 0x00007fff -_080AE124: .4byte 0x000003ff -_080AE128: .4byte 0xfffffc00 -_080AE12C: .4byte sub_80AE130 - thumb_func_end sub_80AE06C - - thumb_func_start sub_80AE130 -sub_80AE130: @ 80AE130 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _080AE186 - 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] -_080AE186: - ldrh r0, [r4, 0x2E] - subs r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080AE198 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AE198: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AE130 - - thumb_func_start sub_80AE1A0 -sub_80AE1A0: @ 80AE1A0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8075114 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldr r3, _080AE1DC @ =gBattleAnimArgs - movs r5, 0x6 - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r1, r0 - ldr r5, _080AE1E0 @ =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, _080AE1E4 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - movs r1, 0x6 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080AE1E8 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - b _080AE1F6 - .align 2, 0 -_080AE1DC: .4byte gBattleAnimArgs -_080AE1E0: .4byte 0x000003ff -_080AE1E4: .4byte 0xfffffc00 -_080AE1E8: - cmp r0, 0x2 - bne _080AE1FA - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x20 -_080AE1F6: - orrs r1, r0 - strb r1, [r4, 0x3] -_080AE1FA: - ldr r0, _080AE214 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080AE218 @ =sub_8074C44 - str r0, [r4, 0x1C] - ldr r1, _080AE21C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AE214: .4byte gBattleAnimArgs -_080AE218: .4byte sub_8074C44 -_080AE21C: .4byte DestroyAnimSprite - thumb_func_end sub_80AE1A0 - - thumb_func_start sub_80AE220 -sub_80AE220: @ 80AE220 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080AE268 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl sub_8074480 - ldr r1, _080AE26C @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - ldr r5, _080AE270 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r4, 0x8] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldr r0, _080AE274 @ =sub_80AE278 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AE268: .4byte gBattleAnimTarget -_080AE26C: .4byte gTasks -_080AE270: .4byte gBattleAnimArgs -_080AE274: .4byte sub_80AE278 - thumb_func_end sub_80AE220 - - thumb_func_start sub_80AE278 -sub_80AE278: @ 80AE278 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r5, 0 - movs r7, 0 - ldr r1, _080AE2B8 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrb r2, [r0, 0xC] - str r2, [sp] - ldrh r4, [r0, 0x8] - ldrh r6, [r0, 0xA] - movs r3, 0xC - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0 - bne _080AE2BC - movs r0, 0 - mov r8, r0 - movs r2, 0x1 - movs r1, 0x10 - mov r12, r1 - b _080AE2C6 - .align 2, 0 -_080AE2B8: .4byte gTasks -_080AE2BC: - movs r2, 0x10 - mov r12, r2 - movs r3, 0x8 - mov r8, r3 - movs r2, 0x4 -_080AE2C6: - mov r0, r9 - lsls r1, r0, 2 - adds r0, r1, r0 - lsls r0, 3 - add r0, r10 - movs r3, 0x1C - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0xA - bhi _080AE3BC - lsls r0, 2 - ldr r1, _080AE2E4 @ =_080AE2E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AE2E4: .4byte _080AE2E8 - .align 2, 0 -_080AE2E8: - .4byte _080AE314 - .4byte _080AE3BC - .4byte _080AE328 - .4byte _080AE3BC - .4byte _080AE348 - .4byte _080AE3BC - .4byte _080AE35E - .4byte _080AE3BC - .4byte _080AE380 - .4byte _080AE3BC - .4byte _080AE3B4 -_080AE314: - ldr r0, _080AE324 @ =gUnknown_83E60A0 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - mov r4, r12 - lsls r3, r4, 16 - b _080AE396 - .align 2, 0 -_080AE324: .4byte gUnknown_83E60A0 -_080AE328: - mov r0, r12 - lsls r3, r0, 17 - mov r1, r8 - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080AE344 @ =gUnknown_83E60A0 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _080AE396 - .align 2, 0 -_080AE344: .4byte gUnknown_83E60A0 -_080AE348: - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - lsls r3, r0, 1 - adds r3, r0 - lsls r0, r2, 1 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - b _080AE38A -_080AE35E: - mov r0, r12 - lsls r3, r0, 18 - lsls r0, r2, 1 - adds r0, r2 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080AE37C @ =gUnknown_83E60A0 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _080AE396 - .align 2, 0 -_080AE37C: .4byte gUnknown_83E60A0 -_080AE380: - mov r1, r12 - lsls r0, r1, 16 - asrs r0, 16 - lsls r3, r0, 2 - adds r3, r0 -_080AE38A: - ldr r0, _080AE3B0 @ =gUnknown_83E60A0 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - lsls r3, 16 -_080AE396: - asrs r3, 16 - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - b _080AE3BC - .align 2, 0 -_080AE3B0: .4byte gUnknown_83E60A0 -_080AE3B4: - mov r0, r9 - bl DestroyAnimVisualTask - b _080AE400 -_080AE3BC: - cmp r7, 0 - beq _080AE3F0 - ldr r4, _080AE410 @ =gSprites - lsls r3, r5, 4 - adds r3, r5 - lsls r3, 2 - adds r0, r3, r4 - ldrh r5, [r0, 0x4] - lsls r2, r5, 22 - lsrs r2, 22 - add r2, r8 - ldr r6, _080AE414 @ =0x000003ff - adds r1, r6, 0 - ands r2, r1 - ldr r1, _080AE418 @ =0xfffffc00 - ands r1, r5 - orrs r1, r2 - strh r1, [r0, 0x4] - mov r1, sp - ldrh r1, [r1] - strh r1, [r0, 0x2E] - adds r4, 0x1C - adds r3, r4 - ldr r1, [r3] - bl _call_via_r1 -_080AE3F0: - ldr r0, _080AE41C @ =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] -_080AE400: - 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 -_080AE410: .4byte gSprites -_080AE414: .4byte 0x000003ff -_080AE418: .4byte 0xfffffc00 -_080AE41C: .4byte gTasks - thumb_func_end sub_80AE278 - - thumb_func_start sub_80AE420 -sub_80AE420: @ 80AE420 - push {lr} - adds r3, r0, 0 - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080AE442 - ldrb r1, [r3, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r2, r0 - strb r2, [r3, 0x3] - b _080AE456 -_080AE442: - ldrb r2, [r3, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r1, r0 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r3, 0x3] -_080AE456: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _080AE46A - adds r0, r3, 0 - bl DestroySprite -_080AE46A: - pop {r0} - bx r0 - thumb_func_end sub_80AE420 - - thumb_func_start sub_80AE470 -sub_80AE470: @ 80AE470 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080AE4D8 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - ldr r0, _080AE4DC @ =gUnknown_83E60B8 - adds r1, 0x20 - lsls r1, 16 - asrs r1, 16 - movs r7, 0x22 - ldrsh r2, [r4, r7] - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AE4E0 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r6, r2, r3 - ldrh r5, [r6, 0x4] - lsls r1, r5, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r7, _080AE4E4 @ =0x000003ff - adds r0, r7, 0 - ands r1, r0 - ldr r0, _080AE4E8 @ =0xfffffc00 - ands r0, r5 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, _080AE4EC @ =gUnknown_2037EE2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r3, 0x1C - adds r2, r3 - ldr r0, _080AE4F0 @ =sub_80AE4F4 - str r0, [r2] - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE4D8: .4byte gBattleAnimArgs -_080AE4DC: .4byte gUnknown_83E60B8 -_080AE4E0: .4byte gSprites -_080AE4E4: .4byte 0x000003ff -_080AE4E8: .4byte 0xfffffc00 -_080AE4EC: .4byte gUnknown_2037EE2 -_080AE4F0: .4byte sub_80AE4F4 - thumb_func_end sub_80AE470 - - thumb_func_start sub_80AE4F4 -sub_80AE4F4: @ 80AE4F4 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080AE528 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080AE528: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080AE53C - adds r0, r3, 0 - bl DestroyAnimSprite -_080AE53C: - pop {r0} - bx r0 - thumb_func_end sub_80AE4F4 - - thumb_func_start sub_80AE540 -sub_80AE540: @ 80AE540 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080AE560 @ =gTasks - adds r5, r1, r0 - ldr r0, _080AE564 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AE56C - ldr r4, _080AE568 @ =gBattleAnimAttacker - b _080AE56E - .align 2, 0 -_080AE560: .4byte gTasks -_080AE564: .4byte gBattleAnimArgs -_080AE568: .4byte gBattleAnimAttacker -_080AE56C: - ldr r4, _080AE5B0 @ =gBattleAnimTarget -_080AE56E: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x26] - ldr r2, _080AE5B4 @ =gBattleAnimArgs - ldrh r0, [r2, 0x2] - movs r1, 0 - strh r0, [r5, 0x14] - strh r1, [r5, 0x16] - strh r1, [r5, 0x18] - strh r1, [r5, 0x1A] - strh r1, [r5, 0x1C] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x1E] - strh r1, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x22] - ldr r0, _080AE5B8 @ =sub_80AE5BC - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AE5B0: .4byte gBattleAnimTarget -_080AE5B4: .4byte gBattleAnimArgs -_080AE5B8: .4byte sub_80AE5BC - thumb_func_end sub_80AE540 - - thumb_func_start sub_80AE5BC -sub_80AE5BC: @ 80AE5BC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r2, r6, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080AE6A4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080AE6BC - ldrh r0, [r5, 0x20] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x22 - ldrsh r1, [r5, r2] - cmp r0, r1 - ble _080AE6CA - strh r7, [r5, 0x20] - ldr r0, _080AE6A8 @ =gUnknown_83E6120 - movs r3, 0x24 - ldrsh r1, [r5, r3] - movs r3, 0x26 - ldrsh r2, [r5, r3] - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080AE6CA - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _080AE6AC @ =gSprites - adds r4, r0 - ldr r1, _080AE6B0 @ =gUnknown_83E60D0 - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r0, [r4, 0x20] - adds r3, r0 - strh r3, [r4, 0x20] - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - movs r2, 0 - ldrsb r2, [r0, r2] - ldrh r0, [r4, 0x22] - adds r2, r0 - strh r2, [r4, 0x22] - movs r1, 0x18 - ldrsh r0, [r5, r1] - lsls r1, r0, 2 - adds r1, r0 - movs r0, 0x28 - subs r0, r1 - strh r0, [r4, 0x2E] - strh r3, [r4, 0x30] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - ldrh r0, [r5, 0x26] - strh r0, [r4, 0x36] - strh r6, [r4, 0x38] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080AE6B4 @ =sub_80AE704 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080AE6B8 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - strh r0, [r5, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080AE674 - strh r7, [r5, 0x1A] -_080AE674: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1E - ldrsh r1, [r5, r2] - cmp r0, r1 - blt _080AE696 - strh r7, [r5, 0x1C] - ldrh r1, [r5, 0x18] - movs r3, 0x18 - ldrsh r0, [r5, r3] - cmp r0, 0x5 - bgt _080AE696 - adds r0, r1, 0x1 - strh r0, [r5, 0x18] -_080AE696: - ldrh r0, [r5, 0x16] - adds r0, 0x1 - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x14] - subs r0, 0x1 - strh r0, [r5, 0x14] - b _080AE6CA - .align 2, 0 -_080AE6A4: .4byte gTasks -_080AE6A8: .4byte gUnknown_83E6120 -_080AE6AC: .4byte gSprites -_080AE6B0: .4byte gUnknown_83E60D0 -_080AE6B4: .4byte sub_80AE704 -_080AE6B8: .4byte sub_8074F6C -_080AE6BC: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AE6CA - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080AE6CA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AE5BC - - thumb_func_start sub_80AE6D0 -sub_80AE6D0: @ 80AE6D0 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _080AE6F8 - ldr r2, _080AE700 @ =gTasks - movs r0, 0x38 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x16] - subs r1, 0x1 - strh r1, [r0, 0x16] - adds r0, r4, 0 - bl DestroySprite -_080AE6F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AE700: .4byte gTasks - thumb_func_end sub_80AE6D0 - - thumb_func_start sub_80AE704 -sub_80AE704: @ 80AE704 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080AE718 @ =sub_80AE6D0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AE718: .4byte sub_80AE6D0 - thumb_func_end sub_80AE704 - - thumb_func_start sub_80AE71C -sub_80AE71C: @ 80AE71C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080AE730 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AE738 - ldr r4, _080AE734 @ =gBattleAnimAttacker - b _080AE73A - .align 2, 0 -_080AE730: .4byte gBattleAnimArgs -_080AE734: .4byte gBattleAnimAttacker -_080AE738: - ldr r4, _080AE768 @ =gBattleAnimTarget -_080AE73A: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080AE76C @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080AE770 @ =sub_8074F50 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AE768: .4byte gBattleAnimTarget -_080AE76C: .4byte move_anim_8074EE0 -_080AE770: .4byte sub_8074F50 - thumb_func_end sub_80AE71C - - thumb_func_start sub_80AE774 -sub_80AE774: @ 80AE774 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080AE788 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AE790 - ldr r4, _080AE78C @ =gBattleAnimAttacker - b _080AE792 - .align 2, 0 -_080AE788: .4byte gBattleAnimArgs -_080AE78C: .4byte gBattleAnimAttacker -_080AE790: - ldr r4, _080AE7CC @ =gBattleAnimTarget -_080AE792: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080AE7D0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x24] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x26] - ldr r1, _080AE7D4 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080AE7D8 @ =sub_8074F6C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AE7CC: .4byte gBattleAnimTarget -_080AE7D0: .4byte gBattleAnimArgs -_080AE7D4: .4byte DestroyAnimSprite -_080AE7D8: .4byte sub_8074F6C - thumb_func_end sub_80AE774 - - thumb_func_start sub_80AE7DC -sub_80AE7DC: @ 80AE7DC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r4, _080AE834 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - movs r0, 0x10 - strh r0, [r5, 0x3C] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AE82A - movs r1, 0x3C - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r5, 0x3C] -_080AE82A: - ldr r0, _080AE838 @ =sub_80AE83C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AE834: .4byte gBattleAnimAttacker -_080AE838: .4byte sub_80AE83C - thumb_func_end sub_80AE7DC - - thumb_func_start sub_80AE83C -sub_80AE83C: @ 80AE83C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080AE84E - cmp r0, 0x1 - beq _080AE864 - b _080AE894 -_080AE84E: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _080AE894 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080AE894 -_080AE864: - ldrh r2, [r4, 0x3C] - ldrh r1, [r4, 0x20] - adds r0, r2, r1 - strh r0, [r4, 0x20] - ldr r3, _080AE89C @ =gSprites - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - adds r2, r1 - strh r2, [r0, 0x24] - ldrh r0, [r4, 0x20] - adds r0, 0x50 - lsls r0, 16 - movs r1, 0xC8 - lsls r1, 17 - cmp r0, r1 - bls _080AE894 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080AE894: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AE89C: .4byte gSprites - thumb_func_end sub_80AE83C - - thumb_func_start sub_80AE8A0 -sub_80AE8A0: @ 80AE8A0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080AE8C4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080AE934 - cmp r0, 0x1 - bgt _080AE8C8 - cmp r0, 0 - beq _080AE8D4 - b _080AEA04 - .align 2, 0 -_080AE8C4: .4byte gTasks -_080AE8C8: - cmp r0, 0x2 - beq _080AE990 - cmp r0, 0x3 - bne _080AE8D2 - b _080AE9E4 -_080AE8D2: - b _080AEA04 -_080AE8D4: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0x26] - ldr r4, _080AE908 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080AE910 - ldr r0, _080AE90C @ =0x0000ffe0 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _080AE916 - .align 2, 0 -_080AE908: .4byte gBattleAnimAttacker -_080AE90C: .4byte 0x0000ffe0 -_080AE910: - movs r0, 0x20 - strh r0, [r5, 0x24] - ldr r0, _080AE92C @ =0x0000fffe -_080AE916: - strh r0, [r5, 0x22] - ldr r2, _080AE930 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r5, 0x24] - strh r1, [r0, 0x24] - b _080AE9D6 - .align 2, 0 -_080AE92C: .4byte 0x0000fffe -_080AE930: .4byte gSprites -_080AE934: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080AEA04 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r4, _080AE98C @ =gSprites - movs r1, 0x26 - ldrsh r0, [r5, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r1, [r5, 0x24] - movs r2, 0x24 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080AE9D6 - ldrh r2, [r5, 0x22] - adds r2, r1, r2 - strh r2, [r5, 0x24] - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - b _080AEA04 - .align 2, 0 -_080AE98C: .4byte gSprites -_080AE990: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080AEA04 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r1, _080AE9E0 @ =gSprites - movs r2, 0x26 - ldrsh r0, [r5, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080AEA04 -_080AE9D6: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080AEA04 - .align 2, 0 -_080AE9E0: .4byte gSprites -_080AE9E4: - ldr r2, _080AEA0C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080AEA04: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AEA0C: .4byte gSprites - thumb_func_end sub_80AE8A0 - - thumb_func_start sub_80AEA10 -sub_80AEA10: @ 80AEA10 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080AEA34 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080AEA2A - b _080AEB50 -_080AEA2A: - cmp r0, 0x1 - bgt _080AEA38 - cmp r0, 0 - beq _080AEA40 - b _080AEB92 - .align 2, 0 -_080AEA34: .4byte gTasks -_080AEA38: - cmp r0, 0x2 - bne _080AEA3E - b _080AEB84 -_080AEA3E: - b _080AEB92 -_080AEA40: - ldr r4, _080AEA80 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080AEA56 - movs r1, 0x1 -_080AEA56: - movs r6, 0 - strh r1, [r5, 0xA] - ldr r0, _080AEA84 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r2, [r0, r1] - adds r3, r0, 0 - cmp r2, 0 - beq _080AEA8C - cmp r2, 0x4 - beq _080AEAB4 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AEAEC - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0xE] - ldr r0, _080AEA88 @ =0x0000fff0 - b _080AEAF4 - .align 2, 0 -_080AEA80: .4byte gBattleAnimAttacker -_080AEA84: .4byte gBattleAnimArgs -_080AEA88: .4byte 0x0000fff0 -_080AEA8C: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 7 - adds r0, 0x78 - strh r0, [r5, 0x10] - b _080AEB2A -_080AEAB4: - movs r0, 0xA - ldrsh r1, [r5, r0] - lsls r1, 7 - movs r0, 0x78 - subs r0, r1 - strh r0, [r5, 0xE] - ldr r4, _080AEAE8 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xA - ldrsh r1, [r5, r2] - lsls r1, 5 - subs r0, r1 - strh r0, [r5, 0x10] - b _080AEB2A - .align 2, 0 -_080AEAE8: .4byte gBattleAnimTarget -_080AEAEC: - ldr r0, _080AEB10 @ =0x0000fff0 - strh r0, [r5, 0xE] - movs r0, 0x80 - lsls r0, 1 -_080AEAF4: - strh r0, [r5, 0x10] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080AEB14 - movs r2, 0 - ldrsh r0, [r3, r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0x50 - subs r0, r1 - strh r0, [r5, 0x12] - b _080AEB2A - .align 2, 0 -_080AEB10: .4byte 0x0000fff0 -_080AEB14: - movs r0, 0 - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x28 - strh r0, [r5, 0x12] - ldrh r1, [r5, 0xE] - ldrh r0, [r5, 0x10] - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] -_080AEB2A: - movs r2, 0xE - ldrsh r1, [r5, r2] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _080AEB40 - movs r1, 0 - movs r0, 0x1 - strh r0, [r5, 0xA] - strh r1, [r5, 0x14] - b _080AEB7C -_080AEB40: - ldr r0, _080AEB4C @ =0x0000ffff - strh r0, [r5, 0xA] - movs r0, 0x3 - strh r0, [r5, 0x14] - b _080AEB7C - .align 2, 0 -_080AEB4C: .4byte 0x0000ffff -_080AEB50: - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - cmp r0, 0 - ble _080AEB92 - movs r0, 0 - strh r0, [r5, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AEB98 - lsls r0, 24 - cmp r0, 0 - bne _080AEB7C - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AEB98 - lsls r0, 24 - cmp r0, 0 - beq _080AEB92 -_080AEB7C: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080AEB92 -_080AEB84: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AEB92 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AEB92: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80AEA10 - - thumb_func_start sub_80AEB98 -sub_80AEB98: @ 80AEB98 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080AEC24 @ =gUnknown_83E6278 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r3, 0x12 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080AEBCE - ldr r1, _080AEC28 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x3A] - movs r1, 0x7 - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] -_080AEBCE: - ldrh r1, [r4, 0xA] - ldrh r5, [r4, 0x14] - adds r0, r1, r5 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bge _080AEBE0 - movs r0, 0x3 - strh r0, [r4, 0x14] -_080AEBE0: - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - ble _080AEBEC - movs r0, 0 - strh r0, [r4, 0x14] -_080AEBEC: - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 4 - ldrh r5, [r4, 0xE] - adds r2, r0, r5 - strh r2, [r4, 0xE] - lsls r0, r1, 16 - asrs r3, r0, 16 - cmp r3, 0x1 - bne _080AEC0C - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x10 - ldrsh r1, [r4, r5] - cmp r0, r1 - bge _080AEC20 -_080AEC0C: - movs r0, 0x1 - negs r0, r0 - cmp r3, r0 - bne _080AEC2C - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - cmp r0, r1 - bgt _080AEC2C -_080AEC20: - movs r0, 0x1 - b _080AEC2E - .align 2, 0 -_080AEC24: .4byte gUnknown_83E6278 -_080AEC28: .4byte gSprites -_080AEC2C: - movs r0, 0 -_080AEC2E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80AEB98 - - thumb_func_start sub_80AEC34 -sub_80AEC34: @ 80AEC34 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080AEC74 - ldr r3, _080AEC7C @ =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 -_080AEC74: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AEC7C: .4byte gTasks - thumb_func_end sub_80AEC34 - - thumb_func_start sub_80AEC80 -sub_80AEC80: @ 80AEC80 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080AEC92 - cmp r0, 0x1 - beq _080AECC4 - b _080AECD8 -_080AEC92: - ldr r4, _080AECC0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080AECD8 - .align 2, 0 -_080AECC0: .4byte gBattleAnimAttacker -_080AECC4: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080AECD8 - adds r0, r5, 0 - bl move_anim_8074EE0 -_080AECD8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80AEC80 - - thumb_func_start sub_80AECE0 -sub_80AECE0: @ 80AECE0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080AED04 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _080AECFA - b _080AEE6C -_080AECFA: - lsls r0, 2 - ldr r1, _080AED08 @ =_080AED0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AED04: .4byte gTasks -_080AED08: .4byte _080AED0C - .align 2, 0 -_080AED0C: - .4byte _080AED20 - .4byte _080AEDB0 - .4byte _080AEDEC - .4byte _080AEE48 - .4byte _080AEE58 -_080AED20: - ldr r4, _080AEDA4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - ldr r0, _080AEDA8 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x1C] - movs r2, 0x1C - ldrsh r0, [r5, r2] - movs r2, 0x14 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x5 - bl __divsi3 - strh r0, [r5, 0x1A] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, _080AEDAC @ =0x0000ffff - strh r0, [r5, 0x12] - movs r0, 0xC - strh r0, [r5, 0x1E] - subs r0, 0x4C - bl sub_8073A44 - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x20] - movs r0, 0x3F - bl sub_8073A44 - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x22] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x24] - movs r1, 0x22 - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - b _080AEE6A - .align 2, 0 -_080AEDA4: .4byte gBattleAnimAttacker -_080AEDA8: .4byte gBattleAnimTarget -_080AEDAC: .4byte 0x0000ffff -_080AEDB0: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - cmp r0, 0 - ble _080AEDE0 - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_80AEE74 - lsls r0, 24 - cmp r0, 0 - beq _080AEDE0 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bne _080AEDDA - movs r0, 0x3 - b _080AEDDE -_080AEDDA: - ldrh r0, [r5, 0x8] - adds r0, 0x1 -_080AEDDE: - strh r0, [r5, 0x8] -_080AEDE0: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080AEE6C - b _080AEE62 -_080AEDEC: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080AEDFA - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] -_080AEDFA: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - movs r3, 0 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080AEE6C - strh r3, [r5, 0xA] - ldrh r1, [r5, 0xC] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080AEE26 - movs r0, 0x4 - strh r0, [r5, 0x16] - movs r0, 0x44 - strh r0, [r5, 0x18] - strh r3, [r5, 0x10] - strh r2, [r5, 0x12] - b _080AEE36 -_080AEE26: - movs r0, 0x44 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, _080AEE44 @ =0x0000ffff - strh r0, [r5, 0x12] -_080AEE36: - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080AEE68 - movs r0, 0x4 - b _080AEE6A - .align 2, 0 -_080AEE44: .4byte 0x0000ffff -_080AEE48: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AEE6C - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080AEE6C -_080AEE58: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080AEE68 -_080AEE62: - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] - b _080AEE6C -_080AEE68: - movs r0, 0x1 -_080AEE6A: - strh r0, [r5, 0x8] -_080AEE6C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80AECE0 - - thumb_func_start sub_80AEE74 -sub_80AEE74: @ 80AEE74 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080AEF3C @ =gUnknown_83E62A8 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r3, 0x16 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080AEEE0 - ldr r1, _080AEF40 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldrh r6, [r4, 0x10] - adds r1, r6 - ldr r6, _080AEF44 @ =0x000003ff - adds r0, r6, 0 - ands r1, r0 - ldr r0, _080AEF48 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _080AEEC8 - movs r0, 0x7 - strh r0, [r4, 0x10] -_080AEEC8: - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0x7 - ble _080AEED4 - movs r0, 0 - strh r0, [r4, 0x10] -_080AEED4: - strh r5, [r3, 0x3A] - movs r0, 0x3 - strh r0, [r3, 0x3C] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_080AEEE0: - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080AEF02 - movs r5, 0x12 - ldrsh r0, [r4, r5] - cmp r0, 0 - ble _080AEF02 - ldrh r1, [r4, 0x26] - ldrh r6, [r4, 0x24] - adds r1, r6 - strh r1, [r4, 0x24] - lsls r1, 24 - asrs r1, 24 - movs r0, 0x6F - bl PlaySE12WithPanning -_080AEF02: - movs r0, 0x12 - ldrsh r3, [r4, r0] - ldrh r2, [r4, 0x16] - cmp r3, 0 - bge _080AEF18 - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x18 - ldrsh r1, [r4, r5] - cmp r0, r1 - ble _080AEF28 -_080AEF18: - cmp r3, 0 - ble _080AEF4C - lsls r0, r2, 16 - asrs r0, 16 - movs r6, 0x18 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080AEF4C -_080AEF28: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x1A] - ldrh r1, [r4, 0x14] - adds r0, r1 - strh r0, [r4, 0x14] - movs r0, 0x1 - b _080AEF58 - .align 2, 0 -_080AEF3C: .4byte gUnknown_83E62A8 -_080AEF40: .4byte gSprites -_080AEF44: .4byte 0x000003ff -_080AEF48: .4byte 0xfffffc00 -_080AEF4C: - movs r3, 0x12 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, r2, r0 - strh r0, [r4, 0x16] - movs r0, 0 -_080AEF58: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80AEE74 - - thumb_func_start sub_80AEF60 -sub_80AEF60: @ 80AEF60 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080AEF96 - ldr r3, _080AEF9C @ =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 -_080AEF96: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AEF9C: .4byte gTasks - thumb_func_end sub_80AEF60 - - thumb_func_start sub_80AEFA0 -sub_80AEFA0: @ 80AEFA0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080AEFC4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080AF01C - cmp r0, 0x1 - bgt _080AEFC8 - cmp r0, 0 - beq _080AEFCE - b _080AF052 - .align 2, 0 -_080AEFC4: .4byte gTasks -_080AEFC8: - cmp r0, 0x2 - beq _080AF044 - b _080AF052 -_080AEFCE: - ldr r0, _080AF018 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - cmp r0, 0x10 - ble _080AEFF8 - adds r2, r0, 0 -_080AEFE8: - adds r1, r2, 0 - subs r1, 0x20 - adds r2, r1, 0 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x10 - bgt _080AEFE8 - strh r1, [r5, 0x24] -_080AEFF8: - ldr r4, _080AF018 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x2 - strh r0, [r5, 0x20] - b _080AF03C - .align 2, 0 -_080AF018: .4byte gBattleAnimTarget -_080AF01C: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080AF052 - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_80AF058 - lsls r0, 24 - cmp r0, 0 - beq _080AF052 -_080AF03C: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080AF052 -_080AF044: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080AF052 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080AF052: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80AEFA0 - thumb_func_start sub_80AF058 sub_80AF058: @ 80AF058 push {r4,r5,lr} diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s new file mode 100644 index 000000000..d9df7add2 --- /dev/null +++ b/asm/battle_anim_effects_1.s @@ -0,0 +1,9882 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A22E8 +sub_80A22E8: @ 80A22E8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A231C @ =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] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080A2320 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2324 + ldrh r0, [r5, 0x8] + negs r0, r0 + b _080A2326 + .align 2, 0 +_080A231C: .4byte gBattleAnimArgs +_080A2320: .4byte gBattleAnimAttacker +_080A2324: + ldrh r0, [r5, 0x8] +_080A2326: + strh r0, [r4, 0x34] + ldr r0, _080A2338 @ =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r4, 0x36] + ldr r0, _080A233C @ =sub_80A2340 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2338: .4byte gBattleAnimArgs +_080A233C: .4byte sub_80A2340 + thumb_func_end sub_80A22E8 + + thumb_func_start sub_80A2340 +sub_80A2340: @ 80A2340 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A237C + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A2382 +_080A237C: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A2382: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2340 + + thumb_func_start sub_80A2388 +sub_80A2388: @ 80A2388 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A23C8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080A23CC @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A23D0 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080A23D4 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A23C8: .4byte gBattleAnimArgs +_080A23CC: .4byte gBattleAnimAttacker +_080A23D0: .4byte sub_8075590 +_080A23D4: .4byte move_anim_8074EE0 + thumb_func_end sub_80A2388 + + thumb_func_start sub_80A23D8 +sub_80A23D8: @ 80A23D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080A2420 @ =gBattleAnimArgs + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080A2424 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A2428 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080A242C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2420: .4byte gBattleAnimArgs +_080A2424: .4byte gBattleAnimTarget +_080A2428: .4byte sub_8075590 +_080A242C: .4byte DestroyAnimSprite + thumb_func_end sub_80A23D8 + + thumb_func_start sub_80A2430 +sub_80A2430: @ 80A2430 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r6, _080A2480 @ =gBattleAnimArgs + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080A2484 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x38] + ldr r1, _080A2488 @ =sub_80A248C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2480: .4byte gBattleAnimArgs +_080A2484: .4byte gBattleAnimTarget +_080A2488: .4byte sub_80A248C + thumb_func_end sub_80A2430 + + thumb_func_start sub_80A248C +sub_80A248C: @ 80A248C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A24A2 + adds r0, r4, 0 + bl DestroySprite + b _080A24F6 +_080A24A2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _080A24BC + ldr r0, _080A24B8 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x1 + b _080A24C6 + .align 2, 0 +_080A24B8: .4byte gBattleAnimTarget +_080A24BC: + ldr r0, _080A24FC @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x6 +_080A24C6: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0xF + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080A24F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A24FC: .4byte gBattleAnimTarget + thumb_func_end sub_80A248C + + thumb_func_start sub_80A2500 +sub_80A2500: @ 80A2500 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080A2570 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r0, 0x1 + movs r2, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080A255A + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + movs r0, 0x6 + strh r0, [r5, 0x8] + ldr r1, _080A2574 @ =gBattleAnimArgs + movs r0, 0xF + strh r0, [r1] + strh r2, [r1, 0x2] + movs r0, 0x50 + strh r0, [r1, 0x4] + strh r2, [r1, 0x6] + ldr r4, _080A2578 @ =gUnknown_83E2A88 + ldr r0, _080A257C @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + adds r3, r0, 0 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl CreateSpriteAndAnimate +_080A255A: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0xF + bne _080A2568 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A2568: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2570: .4byte gTasks +_080A2574: .4byte gBattleAnimArgs +_080A2578: .4byte gUnknown_83E2A88 +_080A257C: .4byte gBattleAnimTarget + thumb_func_end sub_80A2500 + + thumb_func_start sub_80A2580 +sub_80A2580: @ 80A2580 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r6, _080A25C4 @ =gBattleAnimArgs + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x2E] + ldr r5, _080A25C8 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080A25CC @ =sub_80A25D0 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A25C4: .4byte gBattleAnimArgs +_080A25C8: .4byte gBattleAnimAttacker +_080A25CC: .4byte sub_80A25D0 + thumb_func_end sub_80A2580 + + thumb_func_start sub_80A25D0 +sub_80A25D0: @ 80A25D0 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080A25E4 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A25E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A25D0 + + thumb_func_start sub_80A25EC +sub_80A25EC: @ 80A25EC + push {r4,r5,lr} + adds r5, r0, 0 + bl Random + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x7 + ands r1, r0 + adds r0, r5, 0 + bl StartSpriteAnim + ldr r4, _080A2634 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2638 + ldrh r0, [r5, 0x20] + subs r0, 0x14 + b _080A263C + .align 2, 0 +_080A2634: .4byte gBattleAnimAttacker +_080A2638: + ldrh r0, [r5, 0x20] + adds r0, 0x14 +_080A263C: + strh r0, [r5, 0x20] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + adds r0, 0x40 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080A269C @ =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_8075804 + bl Random + movs r1, 0xFF + ands r1, r0 + strh r1, [r5, 0x38] + adds r0, r5, 0 + adds r0, 0x43 + ldrb r0, [r0] + strh r0, [r5, 0x3A] + ldr r1, _080A26A0 @ =sub_80A26A4 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A269C: .4byte gBattleAnimTarget +_080A26A0: .4byte sub_80A26A4 + thumb_func_end sub_80A25EC + + thumb_func_start sub_80A26A4 +sub_80A26A4: @ 80A26A4 + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + lsls r0, 24 + cmp r0, 0 + beq _080A26BA + adds r0, r4, 0 + bl DestroyAnimSprite + b _080A26EA +_080A26BA: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xC + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7E + bgt _080A26D6 + ldrh r0, [r4, 0x3A] + b _080A26DA +_080A26D6: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 +_080A26DA: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x18 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080A26EA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A26A4 + + thumb_func_start sub_80A26F0 +sub_80A26F0: @ 80A26F0 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A2750 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2710 + ldr r1, _080A2754 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A2710: + ldr r4, _080A2754 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080A2758 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _080A275C @ =sub_80A2760 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2750: .4byte gBattleAnimAttacker +_080A2754: .4byte gBattleAnimArgs +_080A2758: .4byte gBattleAnimTarget +_080A275C: .4byte sub_80A2760 + thumb_func_end sub_80A26F0 + + thumb_func_start sub_80A2760 +sub_80A2760: @ 80A2760 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080A278A + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0xA + strh r0, [r4, 0x2E] + ldr r0, _080A2790 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A2794 @ =sub_80A2798 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 +_080A278A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2790: .4byte sub_8074C44 +_080A2794: .4byte sub_80A2798 + thumb_func_end sub_80A2760 + + thumb_func_start sub_80A2798 +sub_80A2798: @ 80A2798 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, _080A27C8 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A27CC @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A27C8: .4byte sub_8074C44 +_080A27CC: .4byte DestroyAnimSprite + thumb_func_end sub_80A2798 + + thumb_func_start sub_80A27D0 +sub_80A27D0: @ 80A27D0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r5, _080A2814 @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl StartSpriteAnim + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080A27FA + ldrb r0, [r4, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] +_080A27FA: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldr r1, _080A2818 @ =sub_80A281C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2814: .4byte gBattleAnimArgs +_080A2818: .4byte sub_80A281C + thumb_func_end sub_80A27D0 + + thumb_func_start sub_80A281C +sub_80A281C: @ 80A281C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x32] + adds r1, 0x18 + strh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080A2870 + ldr r0, _080A286C @ =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 + b _080A2894 + .align 2, 0 +_080A286C: .4byte gBattleAnimTarget +_080A2870: + ldr r0, _080A28C0 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + adds r0, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080A2884 + movs r2, 0x3 +_080A2884: + movs r0, 0x3 + ands r2, r0 + lsls r2, 2 + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 +_080A2894: + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x30] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + 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 _080A28B8 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A28B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A28C0: .4byte gBattleAnimTarget + thumb_func_end sub_80A281C + + thumb_func_start sub_80A28C4 +sub_80A28C4: @ 80A28C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A28DE + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080A28E6 +_080A28DE: + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080A2918 +_080A28E6: + ldr r0, _080A2904 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A2908 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x3 + bl SetAnimBgAttribute + b _080A2912 + .align 2, 0 +_080A2904: .4byte gBattleAnimTarget +_080A2908: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute +_080A2912: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A2918: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A28C4 + + thumb_func_start sub_80A2920 +sub_80A2920: @ 80A2920 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r5, _080A2968 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080A296C @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080A2970 @ =sub_80A2974 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2968: .4byte gBattleAnimArgs +_080A296C: .4byte gBattleAnimAttacker +_080A2970: .4byte sub_80A2974 + thumb_func_end sub_80A2920 + + thumb_func_start sub_80A2974 +sub_80A2974: @ 80A2974 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A29E0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + 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 _080A29C0 + ldr r0, _080A29BC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + b _080A29CA + .align 2, 0 +_080A29BC: .4byte gBattleAnimAttacker +_080A29C0: + ldr r0, _080A29DC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x1 +_080A29CA: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A29E6 + .align 2, 0 +_080A29DC: .4byte gBattleAnimAttacker +_080A29E0: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A29E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2974 + + thumb_func_start sub_80A29EC +sub_80A29EC: @ 80A29EC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080A2A34 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080A2A38 @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080A2A3C @ =sub_80A2A40 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2A34: .4byte gBattleAnimArgs +_080A2A38: .4byte gBattleAnimAttacker +_080A2A3C: .4byte sub_80A2A40 + thumb_func_end sub_80A29EC + + thumb_func_start sub_80A2A40 +sub_80A2A40: @ 80A2A40 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A2A98 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x3B + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _080A2A78 + adds r0, r1, 0 + subs r0, 0xBB + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _080A2A8C +_080A2A78: + ldrb r2, [r4, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + eors r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_080A2A8C: + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A2A9E +_080A2A98: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A2A9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2A40 + + thumb_func_start sub_80A2AA4 +sub_80A2AA4: @ 80A2AA4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A2AE0 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080A2AE4 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldr r0, _080A2AE8 @ =sub_80A2AEC + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2AE0: .4byte gBattleAnimAttacker +_080A2AE4: .4byte gBattleAnimArgs +_080A2AE8: .4byte sub_80A2AEC + thumb_func_end sub_80A2AA4 + + thumb_func_start sub_80A2AEC +sub_80A2AEC: @ 80A2AEC + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x32] + movs r2, 0x32 + ldrsh r3, [r1, r2] + cmp r3, 0 + bne _080A2B20 + ldrh r0, [r1, 0x30] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _080A2B0E + movs r0, 0x80 + strh r0, [r1, 0x2E] + strh r3, [r1, 0x30] + strh r3, [r1, 0x32] + b _080A2B14 +_080A2B0E: + strh r2, [r1, 0x2E] + strh r2, [r1, 0x30] + strh r2, [r1, 0x32] +_080A2B14: + ldr r0, _080A2B1C @ =sub_80A2B38 + str r0, [r1, 0x1C] + b _080A2B34 + .align 2, 0 +_080A2B1C: .4byte sub_80A2B38 +_080A2B20: + subs r0, 0x1 + strh r0, [r1, 0x32] + ldrh r0, [r1, 0x2E] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] +_080A2B34: + pop {r0} + bx r0 + thumb_func_end sub_80A2AEC + + thumb_func_start sub_80A2B38 +sub_80A2B38: @ 80A2B38 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A2B58 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2B5C + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin + negs r0, r0 + b _080A2B66 + .align 2, 0 +_080A2B58: .4byte gBattleAnimAttacker +_080A2B5C: + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin +_080A2B66: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A2B86 + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] +_080A2B86: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080A2B94 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A2B94: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2B38 + + thumb_func_start sub_80A2B9C +sub_80A2B9C: @ 80A2B9C + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A2BF0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2BBC + ldr r1, _080A2BF4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A2BBC: + ldr r6, _080A2BF4 @ =gBattleAnimArgs + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A2BFC + ldr r4, _080A2BF8 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + 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_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + b _080A2C1C + .align 2, 0 +_080A2BF0: .4byte gBattleAnimAttacker +_080A2BF4: .4byte gBattleAnimArgs +_080A2BF8: .4byte gBattleAnimTarget +_080A2BFC: + ldr r0, _080A2C48 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 +_080A2C1C: + strh r0, [r5, 0x36] + ldr r0, _080A2C4C @ =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080A2C50 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + adds r4, r0, 0 + ldr r0, _080A2C48 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080A2C54 + movs r0, 0x1 + b _080A2C56 + .align 2, 0 +_080A2C48: .4byte gBattleAnimTarget +_080A2C4C: .4byte gBattleAnimArgs +_080A2C50: .4byte gBattleAnimAttacker +_080A2C54: + movs r0, 0 +_080A2C56: + strh r0, [r5, 0x2E] + ldr r0, _080A2C64 @ =sub_80A2C68 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2C64: .4byte sub_80A2C68 + thumb_func_end sub_80A2B9C + + thumb_func_start sub_80A2C68 +sub_80A2C68: @ 80A2C68 + push {r4-r7,lr} + adds r6, r0, 0 + movs r7, 0 + ldrh r5, [r6, 0x2E] + ldrh r4, [r6, 0x3C] + movs r0, 0x1 + strh r0, [r6, 0x2E] + adds r0, r6, 0 + bl AnimateBallThrow + ldrh r0, [r6, 0x3C] + strh r5, [r6, 0x2E] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0xC8 + ble _080A2C9A + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x37 + bgt _080A2C9A + ldrh r0, [r6, 0x6] + cmp r0, 0 + bne _080A2CA0 + adds r0, 0x1 + strh r0, [r6, 0x6] +_080A2C9A: + ldrh r0, [r6, 0x6] + cmp r0, 0 + beq _080A2CD2 +_080A2CA0: + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080A2CD2 + adds r3, r6, 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] + ldrh r0, [r6, 0x6] + adds r0, 0x1 + strh r0, [r6, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bne _080A2CD2 + movs r7, 0x1 +_080A2CD2: + movs r2, 0x20 + ldrsh r0, [r6, r2] + movs r2, 0x24 + ldrsh r1, [r6, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080A2CFC + movs r0, 0x22 + ldrsh r1, [r6, r0] + movs r2, 0x26 + ldrsh r0, [r6, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080A2CFC + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080A2CFE +_080A2CFC: + movs r7, 0x1 +_080A2CFE: + cmp r7, 0 + beq _080A2D08 + adds r0, r6, 0 + bl DestroyAnimSprite +_080A2D08: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A2C68 + + thumb_func_start sub_80A2D10 +sub_80A2D10: @ 80A2D10 + push {r4,lr} + adds r4, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A2D3C + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A2D3C + ldr r0, _080A2D64 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_8076D9C +_080A2D3C: + ldrh r0, [r4, 0x22] + adds r0, 0x20 + strh r0, [r4, 0x22] + ldr r1, _080A2D68 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x36] + ldr r0, _080A2D6C @ =sub_80A2D70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2D64: .4byte gBattleAnimTarget +_080A2D68: .4byte gBattleAnimArgs +_080A2D6C: .4byte sub_80A2D70 + thumb_func_end sub_80A2D10 + + thumb_func_start sub_80A2D70 +sub_80A2D70: @ 80A2D70 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bne _080A2D86 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + b _080A2D94 +_080A2D86: + cmp r0, 0 + ble _080A2D94 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + subs r0, r1, 0x2 + strh r0, [r4, 0x30] +_080A2D94: + ldrh r3, [r4, 0x32] + ldrh r5, [r4, 0x38] + adds r2, r3, r5 + strh r2, [r4, 0x38] + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r5, 0x36 + ldrsh r0, [r4, r5] + cmp r1, r0 + bge _080A2DAC + adds r0, r2, r3 + strh r0, [r4, 0x38] +_080A2DAC: + ldrh r1, [r4, 0x38] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x24] + movs r5, 0x38 + ldrsh r0, [r4, r5] + movs r1, 0x5 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080A2DEC + ldr r0, _080A2DE8 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + b _080A2DFA + .align 2, 0 +_080A2DE8: .4byte gBattleAnimTarget +_080A2DEC: + ldr r0, _080A2E24 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 +_080A2DFA: + 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] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A2E1E + adds r0, r4, 0 + bl DestroyAnimSprite +_080A2E1E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2E24: .4byte gBattleAnimTarget + thumb_func_end sub_80A2D70 + + thumb_func_start sub_80A2E28 +sub_80A2E28: @ 80A2E28 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075114 + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r4, _080A2E5C @ =gBattleAnimArgs + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAffineAnim + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080A2E60 @ =sub_80A2E64 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2E5C: .4byte gBattleAnimArgs +_080A2E60: .4byte sub_80A2E64 + thumb_func_end sub_80A2E28 + + thumb_func_start sub_80A2E64 +sub_80A2E64: @ 80A2E64 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A2E94 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080A2E98 @ =0x0000ffff + cmp r1, r0 + bne _080A2E8E + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + bl GetAnimBankSpriteId + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x2E] + ldr r0, _080A2E9C @ =sub_80A2EA0 + str r0, [r4, 0x1C] +_080A2E8E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2E94: .4byte gBattleAnimArgs +_080A2E98: .4byte 0x0000ffff +_080A2E9C: .4byte sub_80A2EA0 + thumb_func_end sub_80A2E64 + + thumb_func_start sub_80A2EA0 +sub_80A2EA0: @ 80A2EA0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl GetAnimBankSpriteId + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A2EB8 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + b _080A2EBC +_080A2EB8: + ldrh r0, [r4, 0x2E] + subs r0, 0xB +_080A2EBC: + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080A2ED8 + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x32] +_080A2ED8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A2F06 + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + cmp r0, 0 + ble _080A2F00 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAffineAnim + b _080A2F06 +_080A2F00: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A2F06: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2EA0 + + thumb_func_start sub_80A2F0C +sub_80A2F0C: @ 80A2F0C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A2F38 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080A2F3C + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080A2F62 + .align 2, 0 +_080A2F38: .4byte gSprites +_080A2F3C: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_80758E0 + ldr r1, _080A2F68 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080A2F6C @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x8] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xA] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r0, 0x1E] + ldr r1, _080A2F70 @ =sub_80A2F74 + str r1, [r0] +_080A2F62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2F68: .4byte gTasks +_080A2F6C: .4byte gBattleAnimArgs +_080A2F70: .4byte sub_80A2F74 + thumb_func_end sub_80A2F0C + + thumb_func_start sub_80A2F74 +sub_80A2F74: @ 80A2F74 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080A2FF4 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + ldrh r0, [r4, 0x1C] + adds r1, r0 + strh r1, [r4, 0x1C] + ldr r2, _080A2FF8 @ =gSprites + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r2 + lsls r1, 16 + asrs r1, 24 + strh r1, [r5, 0x24] + ldr r0, _080A2FFC @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A2FBE + ldrh r0, [r5, 0x24] + negs r0, r0 + strh r0, [r5, 0x24] +_080A2FBE: + ldrh r0, [r4, 0x1E] + adds r0, 0x10 + strh r0, [r4, 0x1E] + movs r0, 0x1E + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + adds r0, r6, 0 + bl sub_8076440 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080A2FEC + strh r0, [r4, 0x8] + ldr r0, _080A3000 @ =sub_80A3004 + str r0, [r4] +_080A2FEC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2FF4: .4byte gTasks +_080A2FF8: .4byte gSprites +_080A2FFC: .4byte gBattleAnimTarget +_080A3000: .4byte sub_80A3004 + thumb_func_end sub_80A2F74 + + thumb_func_start sub_80A3004 +sub_80A3004: @ 80A3004 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _080A3050 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080A3054 @ =0x0000ffff + cmp r1, r0 + bne _080A3060 + ldr r0, _080A3058 @ =gTasks + lsls r2, r3, 2 + adds r1, r2, r3 + lsls r1, 3 + adds r6, r1, r0 + movs r1, 0x8 + ldrsh r5, [r6, r1] + adds r4, r0, 0 + cmp r5, 0 + bne _080A3074 + movs r0, 0x1 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8075980 + ldr r1, _080A305C @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x24] + strh r5, [r0, 0x26] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080A308E + .align 2, 0 +_080A3050: .4byte gBattleAnimArgs +_080A3054: .4byte 0x0000ffff +_080A3058: .4byte gTasks +_080A305C: .4byte gSprites +_080A3060: + ldr r1, _080A3094 @ =gTasks + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + movs r4, 0x8 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0 + beq _080A308E +_080A3074: + adds r1, r2, r3 + lsls r1, 3 + adds r1, r4 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080A308E + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080A308E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3094: .4byte gTasks + thumb_func_end sub_80A3004 + + thumb_func_start sub_80A3098 +sub_80A3098: @ 80A3098 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A30AA + cmp r0, 0x1 + beq _080A3104 + b _080A3156 +_080A30AA: + ldr r6, _080A30FC @ =gBattleAnimTarget + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A30C2 + ldr r1, _080A3100 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080A30C2: + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A3100 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080A3156 + .align 2, 0 +_080A30FC: .4byte gBattleAnimTarget +_080A3100: .4byte gBattleAnimArgs +_080A3104: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A3156 + adds r0, r5, 0 + movs r1, 0x1 + bl ChangeSpriteAffineAnim + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldr r4, _080A315C @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080A3160 @ =sub_8075764 + str r0, [r5, 0x1C] + ldr r1, _080A3164 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_080A3156: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A315C: .4byte gBattleAnimAttacker +_080A3160: .4byte sub_8075764 +_080A3164: .4byte DestroyAnimSprite + thumb_func_end sub_80A3098 + + thumb_func_start sub_80A3168 +sub_80A3168: @ 80A3168 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A31D4 + ldr r4, _080A31E0 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080A31E4 @ =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x24] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x26] + ldrb r0, [r4, 0x4] + adds r0, 0x1E + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r4, 0x6] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r2, 0x22 + ldrsh r0, [r5, r2] + movs r2, 0x26 + ldrsh r1, [r5, r2] + adds r0, r1 + cmp r0, 0x78 + ble _080A31D4 + ldrh r0, [r5, 0x22] + adds r1, r0, 0 + subs r1, 0x78 + ldrh r2, [r5, 0x26] + adds r0, r2 + adds r1, r0 + strh r1, [r5, 0x22] +_080A31D4: + ldr r0, _080A31E8 @ =sub_80A32DC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A31E0: .4byte gBattleAnimAttacker +_080A31E4: .4byte gBattleAnimArgs +_080A31E8: .4byte sub_80A32DC + thumb_func_end sub_80A3168 + + thumb_func_start sub_80A31EC +sub_80A31EC: @ 80A31EC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + mov r9, r0 + ldr r4, _080A32C8 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r6, _080A32CC @ =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + subs r4, r5 + lsls r4, 16 + lsrs r2, 24 + mov r1, r8 + subs r2, r1 + lsls r2, 16 + lsrs r2, 16 + lsrs r3, r4, 16 + mov r10, r3 + asrs r4, 16 + ldr r6, _080A32D0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + muls r0, r4 + movs r1, 0x64 + str r2, [sp] + bl __divsi3 + adds r5, r0 + mov r3, r9 + strh r5, [r3, 0x20] + ldr r2, [sp] + lsls r0, r2, 16 + asrs r0, 16 + movs r3, 0 + ldrsh r1, [r6, r3] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + add r8, r0 + mov r1, r8 + mov r0, r9 + strh r1, [r0, 0x22] + ldrh r0, [r6, 0x2] + mov r3, r9 + strh r0, [r3, 0x24] + ldrh r0, [r6, 0x4] + strh r0, [r3, 0x26] + ldrb r0, [r6, 0x6] + adds r0, 0x1E + mov r1, r9 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0x8] + mov r0, r9 + bl StartSpriteAnim + ldrh r0, [r6, 0xA] + mov r1, r9 + strh r0, [r1, 0x32] + ldr r0, _080A32D4 @ =sub_80A32DC + str r0, [r1, 0x1C] + ldr r1, _080A32D8 @ =gUnknown_203999C + mov r3, r9 + ldrh r0, [r3, 0x20] + strh r0, [r1] + ldrh r0, [r3, 0x22] + strh r0, [r1, 0x2] + mov r0, r10 + strh r0, [r1, 0x4] + ldr r2, [sp] + strh r2, [r1, 0x6] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A32C8: .4byte gBattleAnimAttacker +_080A32CC: .4byte gBattleAnimTarget +_080A32D0: .4byte gBattleAnimArgs +_080A32D4: .4byte sub_80A32DC +_080A32D8: .4byte gUnknown_203999C + thumb_func_end sub_80A31EC + + thumb_func_start sub_80A32DC +sub_80A32DC: @ 80A32DC + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + adds r1, 0x1 + strh r1, [r3, 0x2E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x32 + ldrsh r0, [r3, r2] + subs r0, 0xA + cmp r1, r0 + ble _080A331C + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + movs r2, 0x3E + adds r2, r3 + mov r12, r2 + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080A331C: + movs r2, 0x2E + ldrsh r1, [r3, r2] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r1, r0 + ble _080A332E + adds r0, r3, 0 + bl DestroyAnimSprite +_080A332E: + pop {r0} + bx r0 + thumb_func_end sub_80A32DC + + thumb_func_start sub_80A3334 +sub_80A3334: @ 80A3334 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A3374 + ldr r5, _080A33B0 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A33B4 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r2, [r4] + adds r0, r2 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x34] +_080A3374: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] + ldrh r1, [r6, 0x30] + muls r0, r1 + strh r0, [r6, 0x24] + movs r2, 0x2E + ldrsh r1, [r6, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r1, 0xFF + ands r0, r1 + movs r2, 0x32 + ldrsh r1, [r6, r2] + bl Sin + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x34 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080A33AA + adds r0, r6, 0 + bl DestroyAnimSprite +_080A33AA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A33B0: .4byte gBattleAnimAttacker +_080A33B4: .4byte gBattleAnimArgs + thumb_func_end sub_80A3334 + + thumb_func_start sub_80A33B8 +sub_80A33B8: @ 80A33B8 + push {r4,r5,lr} + movs r2, 0x20 + ldrsh r4, [r0, r2] + lsls r4, 8 + movs r3, 0x22 + ldrsh r2, [r0, r3] + orrs r4, r2 + movs r5, 0x3A + ldrsh r2, [r0, r5] + lsls r2, 8 + movs r5, 0x3C + ldrsh r3, [r0, r5] + orrs r2, r3 + lsls r1, 8 + strh r4, [r0, 0x38] + strh r2, [r0, 0x3A] + strh r1, [r0, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A33B8 + + thumb_func_start sub_80A33E0 +sub_80A33E0: @ 80A33E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + ldrh r0, [r0, 0x38] + lsrs r1, r0, 8 + mov r10, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrh r0, [r1, 0x3A] + lsrs r2, r0, 8 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r1, [r1, 0x3C] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + lsrs r6, r0, 16 + movs r3, 0xFF + ands r3, r1 + cmp r2, 0 + bne _080A341A + movs r2, 0x20 + negs r2, r2 + b _080A3422 +_080A341A: + cmp r2, 0xFF + bne _080A3422 + movs r2, 0x88 + lsls r2, 1 +_080A3422: + mov r0, r9 + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + mov r1, r10 + subs r0, r2, r1 + lsls r5, r3, 16 + asrs r5, 16 + muls r0, r5 + lsls r1, r6, 16 + asrs r7, r1, 16 + adds r1, r7, 0 + bl __divsi3 + adds r6, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + muls r0, r5 + adds r1, r7, 0 + bl __divsi3 + add r6, r10 + mov r1, r8 + strh r6, [r1, 0x20] + add r0, r9 + strh r0, [r1, 0x22] + adds r5, 0x1 + lsls r5, 16 + lsrs r3, r5, 16 + asrs r5, 16 + cmp r5, r7 + beq _080A3474 + lsls r1, r7, 8 + lsls r0, r3, 16 + asrs r0, 16 + orrs r0, r1 + mov r1, r8 + strh r0, [r1, 0x3C] + movs r0, 0 + b _080A3476 +_080A3474: + movs r0, 0x1 +_080A3476: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A33E0 + + thumb_func_start sub_80A3484 +sub_80A3484: @ 80A3484 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080A3498 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080A3498: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _080A34AC + adds r0, r4, 0 + bl DestroyAnimSprite +_080A34AC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A3484 + + thumb_func_start sub_80A34B4 +sub_80A34B4: @ 80A34B4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A34DE + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A34DE: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A350E + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080A3514 @ =sub_80A3484 + str r0, [r4, 0x1C] +_080A350E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A3514: .4byte sub_80A3484 + thumb_func_end sub_80A34B4 + + thumb_func_start sub_80A3518 +sub_80A3518: @ 80A3518 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r4, _080A3560 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A3564 @ =gBattleAnimAttacker + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080A3568 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x1 + b _080A357A + .align 2, 0 +_080A3560: .4byte gBattleAnimTarget +_080A3564: .4byte gBattleAnimAttacker +_080A3568: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x3 +_080A357A: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A358C @ =sub_80A34B4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A358C: .4byte sub_80A34B4 + thumb_func_end sub_80A3518 + + thumb_func_start sub_80A3590 +sub_80A3590: @ 80A3590 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A35BA + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A35BA: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A35EC + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + bl DestroyAnimSprite +_080A35EC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A3590 + + thumb_func_start sub_80A35F4 +sub_80A35F4: @ 80A35F4 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080A3630 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A3638 + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80A33B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A3634 @ =sub_80A34B4 + b _080A3662 + .align 2, 0 +_080A3630: .4byte gBattleAnimTarget +_080A3634: .4byte sub_80A34B4 +_080A3638: + movs r0, 0xFF + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A3650 + movs r0, 0 + strh r0, [r5, 0x3A] +_080A3650: + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80A33B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A366C @ =sub_80A3590 +_080A3662: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A366C: .4byte sub_80A3590 + thumb_func_end sub_80A35F4 + + thumb_func_start sub_80A3670 +sub_80A3670: @ 80A3670 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A368A + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 + ldr r0, _080A36B0 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x30] +_080A368A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + muls r0, r1 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A36AA + adds r0, r4, 0 + bl DestroyAnimSprite +_080A36AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A36B0: .4byte gBattleAnimArgs + thumb_func_end sub_80A3670 + + thumb_func_start sub_80A36B4 +sub_80A36B4: @ 80A36B4 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075114 + ldr r4, _080A36FC @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A3700 @ =gBattleAnimTarget + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080A3704 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x1 + b _080A3716 + .align 2, 0 +_080A36FC: .4byte gBattleAnimAttacker +_080A3700: .4byte gBattleAnimTarget +_080A3704: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x3 +_080A3716: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A3728 @ =sub_80A372C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3728: .4byte sub_80A372C + thumb_func_end sub_80A36B4 + + thumb_func_start sub_80A372C +sub_80A372C: @ 80A372C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A3756 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A3756: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080A378A + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl PlaySE12WithPanning +_080A378A: + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A37B2 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080A37B8 @ =sub_80A3484 + str r0, [r4, 0x1C] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl PlaySE12WithPanning +_080A37B2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A37B8: .4byte sub_80A3484 + thumb_func_end sub_80A372C + + thumb_func_start sub_80A37BC +sub_80A37BC: @ 80A37BC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A3850 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A37E4 + ldr r0, _080A37E0 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + strh r1, [r4, 0x30] + movs r1, 0x78 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080A3806 + .align 2, 0 +_080A37E0: .4byte gBattleAnimArgs +_080A37E4: + ldr r0, _080A3840 @ =gBattleAnimArgs + movs r1, 0x2 + ldrsh r3, [r0, r1] + adds r1, r3, 0 + subs r1, 0x20 + adds r2, r1, 0 + adds r5, r0, 0 + cmp r1, 0 + bge _080A37FA + adds r2, r3, 0 + adds r2, 0xDF +_080A37FA: + asrs r0, r2, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + movs r0, 0x46 + strh r0, [r4, 0x20] +_080A3806: + ldrh r0, [r5] + strh r0, [r4, 0x22] + strh r0, [r4, 0x32] + movs r0, 0x14 + strh r0, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + ldr r0, _080A3844 @ =sub_80A3858 + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080A3848 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080A384E + .align 2, 0 +_080A3840: .4byte gBattleAnimArgs +_080A3844: .4byte sub_80A3858 +_080A3848: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080A384E: + strb r0, [r1] +_080A3850: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A37BC + + thumb_func_start sub_80A3858 +sub_80A3858: @ 80A3858 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A386A + cmp r0, 0x1 + beq _080A389A + b _080A38BA +_080A386A: + ldrh r5, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x4E + ble _080A3882 + movs r0, 0x1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080A38BA +_080A3882: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + adds r0, r5, r0 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x36] + adds r1, 0x3 + strh r1, [r4, 0x36] + strh r0, [r4, 0x22] + b _080A38BA +_080A389A: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A38BA + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A38BA + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r0, _080A38C0 @ =sub_80A38C4 + str r0, [r4, 0x1C] +_080A38BA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A38C0: .4byte sub_80A38C4 + thumb_func_end sub_80A3858 + + thumb_func_start sub_80A38C4 +sub_80A38C4: @ 80A38C4 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080A3908 @ =gUnknown_83E2F78 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r3, r0, r1 + adds r0, r5, 0x1 + adds r0, r3, r0 + ldrh r2, [r4, 0x32] + movs r6, 0x32 + ldrsh r1, [r4, r6] + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _080A3910 + adds r0, r5, 0x2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x7F + bne _080A38FC + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080A390C @ =sub_80A397C + str r0, [r4, 0x1C] +_080A38FC: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A3976 + .align 2, 0 +_080A3908: .4byte gUnknown_83E2F78 +_080A390C: .4byte sub_80A397C +_080A3910: + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + adds r1, r0, r5 + movs r2, 0 + ldrsb r2, [r1, r2] + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + muls r0, r2 + ldrh r1, [r4, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A395E + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080A3956 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080A395C +_080A3956: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080A395C: + strb r0, [r1] +_080A395E: + movs r6, 0x30 + ldrsh r0, [r4, r6] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] +_080A3976: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A38C4 + + thumb_func_start sub_80A397C +sub_80A397C: @ 80A397C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080A398E + adds r0, r4, 0 + bl DestroyAnimSprite +_080A398E: + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A397C + + thumb_func_start sub_80A39C0 +sub_80A39C0: @ 80A39C0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A3B14 @ =gTasks + adds r5, r0, r1 + ldr r4, _080A3B18 @ =gBattleAnimTarget + ldrb r0, [r4] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + strh r0, [r5, 0x10] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8076B2C + strh r0, [r5, 0x1C] + ldrb r0, [r4] + movs r1, 0 + bl sub_8076B2C + strh r0, [r5, 0x1E] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0x1 + bne _080A3A28 + movs r1, 0x1 +_080A3A28: + strh r1, [r5, 0x12] + movs r3, 0x12 + ldrsh r0, [r5, r3] + lsls r0, 6 + movs r1, 0x38 + subs r1, r0 + strh r1, [r5, 0x1A] + ldrh r0, [r5, 0x16] + subs r0, r1 + ldrh r1, [r5, 0x14] + adds r0, r1 + strh r0, [r5, 0x18] + ldr r0, _080A3B1C @ =gUnknown_83E2FF0 + movs r2, 0x18 + ldrsh r1, [r5, r2] + movs r3, 0x1A + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xC] + cmp r0, 0x40 + bne _080A3A60 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A3A60: + ldr r4, _080A3B20 @ =gSprites + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xA + strh r1, [r0, 0x2E] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x18] + strh r1, [r0, 0x30] + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + movs r1, 0x1C + ldrsh r0, [r5, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r5, r3] + muls r1, r0 + ldrh r0, [r5, 0x14] + subs r0, r1 + strh r0, [r2, 0x32] + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x1A] + strh r1, [r0, 0x34] + movs r1, 0xC + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + movs r2, 0x1E + ldrsh r0, [r5, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r2, [r5, r3] + muls r0, r2 + ldrh r2, [r5, 0x16] + adds r0, r2 + strh r0, [r1, 0x36] + movs r3, 0xC + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80A3F04 + movs r1, 0xC + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x38] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8075068 + ldr r0, _080A3B24 @ =sub_80A3B28 + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3B14: .4byte gTasks +_080A3B18: .4byte gBattleAnimTarget +_080A3B1C: .4byte gUnknown_83E2FF0 +_080A3B20: .4byte gSprites +_080A3B24: .4byte sub_80A3B28 + thumb_func_end sub_80A39C0 + + thumb_func_start sub_80A3B28 +sub_80A3B28: @ 80A3B28 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A3B6C @ =gTasks + adds r6, r0, r1 + movs r0, 0xC + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080A3B70 @ =gSprites + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r5, [r6, r1] + cmp r5, 0x7 + bne _080A3B50 + b _080A3D80 +_080A3B50: + cmp r5, 0x7 + bgt _080A3B9E + cmp r5, 0x3 + bne _080A3B5A + b _080A3C72 +_080A3B5A: + cmp r5, 0x3 + bgt _080A3B74 + cmp r5, 0x1 + beq _080A3C04 + cmp r5, 0x1 + bgt _080A3C54 + cmp r5, 0 + beq _080A3BE6 + b _080A3EFC + .align 2, 0 +_080A3B6C: .4byte gTasks +_080A3B70: .4byte gSprites +_080A3B74: + cmp r5, 0x5 + bne _080A3B7A + b _080A3CE8 +_080A3B7A: + cmp r5, 0x5 + ble _080A3B80 + b _080A3D62 +_080A3B80: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + bne _080A3B96 + b _080A3EFC +_080A3B96: + movs r0, 0x5 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3B9E: + cmp r5, 0xB + bne _080A3BA4 + b _080A3E64 +_080A3BA4: + cmp r5, 0xB + bgt _080A3BD2 + cmp r5, 0x9 + bne _080A3BAE + b _080A3DD2 +_080A3BAE: + cmp r5, 0x9 + ble _080A3BB4 + b _080A3E48 +_080A3BB4: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + bne _080A3BCA + b _080A3EFC +_080A3BCA: + movs r0, 0x9 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3BD2: + cmp r5, 0xD + bne _080A3BD8 + b _080A3ED6 +_080A3BD8: + cmp r5, 0xD + bge _080A3BDE + b _080A3EB6 +_080A3BDE: + cmp r5, 0xFF + bne _080A3BE4 + b _080A3EE6 +_080A3BE4: + b _080A3EFC +_080A3BE6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + bne _080A3BFC + b _080A3EFC +_080A3BFC: + movs r0, 0x1 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3C04: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r0, [r6, 0x10] + adds r0, 0x2 + strh r0, [r6, 0x10] + strh r5, [r6, 0xE] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3C54: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + bne _080A3C6A + b _080A3EFC +_080A3C6A: + movs r0, 0x3 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3C72: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r1, r0 + ldrh r0, [r6, 0x16] + subs r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + movs r0, 0x2 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3CE8: + ldrh r1, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r1, r3 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x14] + adds r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r2, 0x1E + ldrsh r0, [r6, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x16] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x3 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3D62: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + bne _080A3D78 + b _080A3EFC +_080A3D78: + movs r0, 0x7 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3D80: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + adds r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x4 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3DD2: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r0, r1 + ldrh r3, [r6, 0x16] + adds r0, r3 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + movs r0, 0x5 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3E48: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080A3EFC + movs r0, 0xB + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3E64: + ldrh r2, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r2, r0 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x18] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x1A] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x6 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3EB6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080A3EFC + adds r0, r4, 0 + bl DestroySprite + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3ED6: + movs r1, 0x20 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A3EFC + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080A3EFC +_080A3EE6: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A3EFC + movs r0, 0 + strh r0, [r6, 0xA] + ldrh r0, [r6, 0x26] +_080A3EFA: + strh r0, [r6, 0x8] +_080A3EFC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A3B28 + + thumb_func_start sub_80A3F04 +sub_80A3F04: @ 80A3F04 + push {lr} + movs r2, 0x8 + movs r3, 0x36 + ldrsh r1, [r0, r3] + movs r3, 0x22 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _080A3F1A + negs r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_080A3F1A: + lsls r0, r2, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80A3F04 + + thumb_func_start sub_80A3F24 +sub_80A3F24: @ 80A3F24 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _080A3FBA + movs r0, 0 + strh r0, [r6, 0x24] + ldr r0, _080A3FC4 @ =gSprites + mov r8, r0 + movs r2, 0xC + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + ldrh r2, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r2, r0 + ldr r0, _080A3FC8 @ =gUnknown_83E2FF0 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + ldrb r3, [r6, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080A3FBA + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + mov r0, r8 + adds r4, r5, r0 + strh r7, [r4, 0x3A] + movs r0, 0xC + strh r0, [r4, 0x3C] + ldr r0, _080A3FCC @ =gTasks + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldrh r2, [r6, 0x22] + movs r0, 0x1 + ands r0, r2 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r6, 0x10] + adds r4, 0x43 + strb r0, [r4] + mov r0, r8 + adds r0, 0x1C + adds r5, r0 + ldr r0, _080A3FD0 @ =sub_80A3FD4 + str r0, [r5] +_080A3FBA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3FC4: .4byte gSprites +_080A3FC8: .4byte gUnknown_83E2FF0 +_080A3FCC: .4byte gTasks +_080A3FD0: .4byte sub_80A3FD4 + thumb_func_end sub_80A3F24 + + thumb_func_start sub_80A3FD4 +sub_80A3FD4: @ 80A3FD4 + 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, 0x1 + ble _080A4036 + movs r0, 0 + strh r0, [r4, 0x2E] + 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] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A4036 + ldr r3, _080A403C @ =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 +_080A4036: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A403C: .4byte gTasks + thumb_func_end sub_80A3FD4 + + thumb_func_start sub_80A4040 +sub_80A4040: @ 80A4040 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080A4054 @ =gBattleAnimArgs + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A405C + ldr r0, _080A4058 @ =gBattleAnimAttacker + b _080A405E + .align 2, 0 +_080A4054: .4byte gBattleAnimArgs +_080A4058: .4byte gBattleAnimAttacker +_080A405C: + ldr r0, _080A407C @ =gBattleAnimTarget +_080A405E: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A4088 + movs r0, 0 + strh r0, [r4, 0x36] + ldr r1, _080A4080 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080A4084 @ =0x0000fff0 + b _080A4098 + .align 2, 0 +_080A407C: .4byte gBattleAnimTarget +_080A4080: .4byte gBattleAnimArgs +_080A4084: .4byte 0x0000fff0 +_080A4088: + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r1, _080A40BC @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r4, 0x32] + movs r0, 0x80 + lsls r0, 1 +_080A4098: + strh r0, [r4, 0x20] + adds r7, r1, 0 + adds r5, r7, 0 + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x34] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080A40CE + cmp r0, 0x1 + bgt _080A40C0 + cmp r0, 0 + beq _080A40CA + b _080A4138 + .align 2, 0 +_080A40BC: .4byte gBattleAnimArgs +_080A40C0: + cmp r0, 0x2 + beq _080A40D4 + cmp r0, 0x3 + beq _080A4100 + b _080A4138 +_080A40CA: + ldrh r0, [r5] + b _080A40E4 +_080A40CE: + ldrh r0, [r5] + strh r0, [r4, 0x22] + b _080A411A +_080A40D4: + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5] + adds r0, r5 +_080A40E4: + strh r0, [r4, 0x22] + adds r0, r6, 0 + 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 _080A4138 +_080A4100: + ldr r0, _080A4144 @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r7, [r7] + adds r0, r7 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl GetAnimBankSpriteId +_080A411A: + adds r0, r6, 0 + 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] +_080A4138: + ldr r0, _080A4148 @ =sub_80A414C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4144: .4byte gBattleAnimTarget +_080A4148: .4byte sub_80A414C + thumb_func_end sub_80A4040 + + thumb_func_start sub_80A414C +sub_80A414C: @ 80A414C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x3C + ldrsh r3, [r4, r0] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x30 + ldrsh r2, [r4, r1] + ldr r1, _080A41A0 @ =gSineTable + movs r5, 0x2E + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r2 + asrs r0, 8 + strh r0, [r4, 0x26] + movs r2, 0x32 + ldrsh r0, [r4, r2] + muls r0, r3 + strh r0, [r4, 0x24] + movs r5, 0x34 + ldrsh r0, [r4, r5] + muls r0, r3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A41A4 + movs r2, 0x24 + ldrsh r0, [r4, r2] + movs r5, 0x20 + ldrsh r1, [r4, r5] + adds r0, r1 + cmp r0, 0xF7 + ble _080A41BC + b _080A41B6 + .align 2, 0 +_080A41A0: .4byte gSineTable +_080A41A4: + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bgt _080A41BC +_080A41B6: + adds r0, r4, 0 + bl move_anim_8074EE0 +_080A41BC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A414C + + thumb_func_start sub_80A41C4 +sub_80A41C4: @ 80A41C4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A41E4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A41E8 + cmp r0, 0x1 + beq _080A421C + b _080A4276 + .align 2, 0 +_080A41E4: .4byte gTasks +_080A41E8: + ldr r0, _080A4214 @ =0x0000274f + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r2, 0x80 + lsls r2, 1 + adds r4, r2, 0 + adds r0, r4 + strh r0, [r5, 0x18] + ldr r0, _080A4218 @ =0x000027b0 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + adds r0, r4 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080A4276 + .align 2, 0 +_080A4214: .4byte 0x0000274f +_080A4218: .4byte 0x000027b0 +_080A421C: + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x1A] + lsls r0, 16 + cmp r0, 0 + blt _080A4276 + strh r7, [r5, 0x1A] + ldrh r0, [r5, 0x18] + ldrb r2, [r5, 0x1C] + ldr r4, _080A4290 @ =gUnknown_83E30F0 + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x20] + ldrb r2, [r5, 0x1C] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + bne _080A4276 + strh r7, [r5, 0x1C] + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bne _080A4276 + strh r7, [r5, 0x1E] +_080A4276: + ldr r0, _080A4294 @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A428A + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A428A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4290: .4byte gUnknown_83E30F0 +_080A4294: .4byte gBattleAnimArgs + thumb_func_end sub_80A41C4 + + thumb_func_start sub_80A4298 +sub_80A4298: @ 80A4298 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r1, _080A42B0 @ =gBattleAnimArgs + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A42B4 + adds r0, r6, 0 + bl DestroyAnimSprite + b _080A438E + .align 2, 0 +_080A42B0: .4byte gBattleAnimArgs +_080A42B4: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080A42C4 + ldr r4, _080A42C0 @ =gBattleAnimAttacker + b _080A42C6 + .align 2, 0 +_080A42C0: .4byte gBattleAnimAttacker +_080A42C4: + ldr r4, _080A4300 @ =gBattleAnimTarget +_080A42C6: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A4304 @ =gBattleAnimArgs + ldrh r1, [r0, 0x8] + strh r1, [r6, 0x2E] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r7, r0, 0 + cmp r1, 0 + bne _080A4308 + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x20] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x22] + strh r5, [r6, 0x38] + strh r2, [r6, 0x3A] + b _080A4318 + .align 2, 0 +_080A4300: .4byte gBattleAnimTarget +_080A4304: .4byte gBattleAnimArgs +_080A4308: + strh r5, [r6, 0x20] + strh r2, [r6, 0x22] + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x38] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x3A] +_080A4318: + ldrh r4, [r6, 0x20] + lsls r0, r4, 4 + strh r0, [r6, 0x30] + ldrh r5, [r6, 0x22] + lsls r0, r5, 4 + strh r0, [r6, 0x32] + movs r1, 0x38 + ldrsh r0, [r6, r1] + movs r2, 0x20 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x34] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x22 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x38] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r6, 0x3A] + subs r1, r5 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A437A + ldr r1, _080A4398 @ =0xffff8000 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080A437A: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldr r0, _080A439C @ =sub_80A43A0 + str r0, [r6, 0x1C] +_080A438E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4398: .4byte 0xffff8000 +_080A439C: .4byte sub_80A43A0 + thumb_func_end sub_80A4298 + + thumb_func_start sub_80A43A0 +sub_80A43A0: @ 80A43A0 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x2E] + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080A43D0 + ldrh r0, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r0, r4 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r4, [r2, 0x32] + adds r1, r4 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x2E] + b _080A43D6 +_080A43D0: + adds r0, r2, 0 + bl move_anim_8074EE0 +_080A43D6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A43A0 + + thumb_func_start sub_80A43DC +sub_80A43DC: @ 80A43DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A43F2 + adds r0, r2, 0 + bl DestroyAnimSprite +_080A43F2: + pop {r0} + bx r0 + thumb_func_end sub_80A43DC + + thumb_func_start sub_80A43F8 +sub_80A43F8: @ 80A43F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A4418 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A4420 + ldr r2, _080A441C @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + b _080A442C + .align 2, 0 +_080A4418: .4byte gBattleAnimAttacker +_080A441C: .4byte gBattleAnimArgs +_080A4420: + ldr r0, _080A4444 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_080A442C: + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080A4448 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080A444C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4444: .4byte gBattleAnimArgs +_080A4448: .4byte sub_8074F6C +_080A444C: .4byte DestroyAnimSprite + thumb_func_end sub_80A43F8 + + thumb_func_start sub_80A4450 +sub_80A4450: @ 80A4450 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A4488 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A446A + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080A446A: + ldr r0, _080A448C @ =sub_80A43DC + str r0, [r5, 0x1C] + ldr r4, _080A4490 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4488: .4byte gBattleAnimAttacker +_080A448C: .4byte sub_80A43DC +_080A4490: .4byte gBattleAnimArgs + thumb_func_end sub_80A4450 + + thumb_func_start sub_80A4494 +sub_80A4494: @ 80A4494 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080A44D4 @ =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, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldr r1, _080A44D8 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A44DC @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A44D4: .4byte gBattleAnimArgs +_080A44D8: .4byte move_anim_8074EE0 +_080A44DC: .4byte sub_8074E70 + thumb_func_end sub_80A4494 + + thumb_func_start sub_80A44E0 +sub_80A44E0: @ 80A44E0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080A4530 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A4514 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_080A4514: + ldr r0, _080A4534 @ =sub_80A46CC + str r0, [r5, 0x1C] + ldr r0, _080A4538 @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080A453C + ldrh r0, [r3] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + b _080A4550 + .align 2, 0 +_080A4530: .4byte gBattleAnimTarget +_080A4534: .4byte sub_80A46CC +_080A4538: .4byte gBattleAnimArgs +_080A453C: + ldrh r0, [r5, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r5, 0x20] + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080A4550: + ldrh r0, [r3, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldr r1, _080A4584 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r5, 0x30] + adds r1, r0, r2 + strh r1, [r5, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A457E + negs r0, r1 + strh r0, [r5, 0x30] +_080A457E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4584: .4byte 0xfffffc00 + thumb_func_end sub_80A44E0 + + thumb_func_start sub_80A4588 +sub_80A4588: @ 80A4588 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, _080A45A4 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080A45A8 + cmp r0, 0x1 + ble _080A4624 + cmp r0, 0x2 + beq _080A45C8 + b _080A4624 + .align 2, 0 +_080A45A4: .4byte gBattleAnimArgs +_080A45A8: + ldr r5, _080A45C4 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + eors r4, r0 + adds r0, r4, 0 + b _080A4634 + .align 2, 0 +_080A45C4: .4byte gBattleAnimTarget +_080A45C8: + ldr r5, _080A4620 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + movs r2, 0x2 + mov r8, r2 + mov r1, r8 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A463E + ldrb r0, [r5] + mov r2, r8 + eors r0, r2 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + lsrs r7, r0, 1 + ldrb r0, [r5] + mov r1, r8 + eors r0, r1 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + lsrs r4, r0, 1 + b _080A463E + .align 2, 0 +_080A4620: .4byte gBattleAnimTarget +_080A4624: + ldr r4, _080A4670 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] +_080A4634: + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 +_080A463E: + strh r7, [r6, 0x20] + strh r4, [r6, 0x22] + ldr r0, _080A4670 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A4656 + ldrh r0, [r6, 0x22] + adds r0, 0x8 + strh r0, [r6, 0x22] +_080A4656: + ldr r0, _080A4674 @ =sub_80A46CC + str r0, [r6, 0x1C] + ldr r0, _080A4678 @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080A467C + ldrh r0, [r3] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + b _080A4690 + .align 2, 0 +_080A4670: .4byte gBattleAnimTarget +_080A4674: .4byte sub_80A46CC +_080A4678: .4byte gBattleAnimArgs +_080A467C: + ldrh r0, [r6, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r6, 0x20] + adds r2, r6, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080A4690: + ldrh r0, [r3, 0x2] + ldrh r2, [r6, 0x22] + adds r0, r2 + strh r0, [r6, 0x22] + ldr r1, _080A46C8 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r6, 0x30] + adds r1, r0, r2 + strh r1, [r6, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r6, 0x32] + adds r0, r2 + strh r0, [r6, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r6, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A46BE + negs r0, r1 + strh r0, [r6, 0x30] +_080A46BE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A46C8: .4byte 0xfffffc00 + thumb_func_end sub_80A4588 + + thumb_func_start sub_80A46CC +sub_80A46CC: @ 80A46CC + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A46EE + adds r0, r1, 0 + adds r0, 0x18 + b _080A46F2 +_080A46EE: + adds r0, r1, 0 + subs r0, 0x18 +_080A46F2: + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + subs r0, 0x18 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080A4728 + ldr r1, _080A4730 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldr r0, _080A4734 @ =sub_8074C44 + str r0, [r4, 0x1C] +_080A4728: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4730: .4byte DestroyAnimSprite +_080A4734: .4byte sub_8074C44 + thumb_func_end sub_80A46CC + + thumb_func_start sub_80A4738 +sub_80A4738: @ 80A4738 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x32] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r0, 0x1 + ble _080A47DC + ldrh r1, [r5, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A4794 + adds r3, r5, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r3] + ldr r4, _080A4790 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r3, [r0] + adds r1, r2, 0 + ands r1, r3 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _080A47CA + .align 2, 0 +_080A4790: .4byte gSprites +_080A4794: + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _080A47D8 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] +_080A47CA: + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + b _080A47E0 + .align 2, 0 +_080A47D8: .4byte gSprites +_080A47DC: + adds r0, r1, 0x1 + strh r0, [r5, 0x32] +_080A47E0: + movs r1, 0x34 + ldrsh r0, [r5, r1] + cmp r0, 0xA + bne _080A4810 + movs r2, 0x2E + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080A4818 @ =gSprites + adds r0, r4 + bl DestroySprite + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + adds r0, r5, 0 + bl DestroyAnimSprite +_080A4810: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4818: .4byte gSprites + thumb_func_end sub_80A4738 + + thumb_func_start sub_80A481C +sub_80A481C: @ 80A481C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080A483C @ =gBattleAnimArgs + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080A4840 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A4844 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080A484A + .align 2, 0 +_080A483C: .4byte gBattleAnimArgs +_080A4840: .4byte gBattleAnimAttacker +_080A4844: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080A484A: + strh r0, [r5, 0x20] + ldr r4, _080A4878 @ =gBattleAnimArgs + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080A487C @ =sub_80A4880 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4878: .4byte gBattleAnimArgs +_080A487C: .4byte sub_80A4880 + thumb_func_end sub_80A481C + + thumb_func_start sub_80A4880 +sub_80A4880: @ 80A4880 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x64 + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080A48AC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0 + b _080A48B2 +_080A48AC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0xE +_080A48B2: + strb r0, [r1] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x82 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080A48E8 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A48E8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4880 + + thumb_func_start sub_80A48F0 +sub_80A48F0: @ 80A48F0 + push {r4-r6,lr} + adds r5, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A4906 + ldr r1, _080A4964 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + adds r0, 0x8 + strh r0, [r1, 0x2] +_080A4906: + ldr r6, _080A4968 @ =gBattleAnimAttacker + ldrb r0, [r6] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + ldr r4, _080A4964 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A4944 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A496C +_080A4944: + ldrb r0, [r6] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + b _080A4984 + .align 2, 0 +_080A4964: .4byte gBattleAnimArgs +_080A4968: .4byte gBattleAnimAttacker +_080A496C: + ldrb r0, [r6] + 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] +_080A4984: + ldr r0, _080A49C8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080A49CC @ =0x00002828 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r5, 0x32] + movs r4, 0x10 + movs r0, 0x10 + strh r0, [r5, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + ldrh r0, [r5, 0x3C] + lsls r1, r0, 8 + subs r4, r0 + orrs r1, r4 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + ldr r0, _080A49D0 @ =sub_80A49D4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A49C8: .4byte gBattleAnimArgs +_080A49CC: .4byte 0x00002828 +_080A49D0: .4byte sub_80A49D4 + thumb_func_end sub_80A48F0 + + thumb_func_start sub_80A49D4 +sub_80A49D4: @ 80A49D4 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x60 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4A32 + movs r0, 0 + strh r0, [r4, 0x30] + ldr r1, _080A4A7C @ =gPlttBufferFaded + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x1 + lsls r0, 1 + adds r0, r1 + ldrh r5, [r0] + movs r2, 0 + adds r6, r1, 0 + adds r3, r6, 0 +_080A4A0C: + movs r1, 0x32 + ldrsh r0, [r4, r1] + adds r2, 0x1 + adds r0, r2 + lsls r1, r0, 1 + adds r1, r3 + adds r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + cmp r2, 0x5 + ble _080A4A0C + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x7 + lsls r0, 1 + adds r0, r6 + strh r5, [r0] +_080A4A32: + ldrh r2, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _080A4A6C + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _080A4A80 + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4A6C + movs r0, 0 + strh r0, [r4, 0x3A] + subs r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg +_080A4A6C: + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4A80 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080A4AC2 + .align 2, 0 +_080A4A7C: .4byte gPlttBufferFaded +_080A4A80: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4AC2 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A4AC2 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080A4AC8 @ =sub_8074F88 + str r0, [r4, 0x1C] +_080A4AC2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4AC8: .4byte sub_8074F88 + thumb_func_end sub_80A49D4 + + thumb_func_start sub_80A4ACC +sub_80A4ACC: @ 80A4ACC + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A4B2C @ =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A4B30 @ =0x0000ffe8 + adds r0, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + strh r5, [r4, 0x3A] + movs r0, 0x10 + strh r0, [r4, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + ldr r0, _080A4B34 @ =sub_80A4B38 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4B2C: .4byte gBattleAnimTarget +_080A4B30: .4byte 0x0000ffe8 +_080A4B34: .4byte sub_80A4B38 + thumb_func_end sub_80A4ACC + + thumb_func_start sub_80A4B38 +sub_80A4B38: @ 80A4B38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080A4B46 + b _080A4C90 +_080A4B46: + lsls r0, 2 + ldr r1, _080A4B50 @ =_080A4B54 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A4B50: .4byte _080A4B54 + .align 2, 0 +_080A4B54: + .4byte _080A4B68 + .4byte _080A4BCC + .4byte _080A4BE8 + .4byte _080A4C66 + .4byte _080A4C7A +_080A4B68: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + cmp r0, 0 + bgt _080A4B76 + b _080A4C90 +_080A4B76: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A4B98 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080A4BA6 + adds r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _080A4BA6 +_080A4B98: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4BA6 + subs r0, r1, 0x1 + strh r0, [r4, 0x3C] +_080A4BA6: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A4C90 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A4C90 + strh r0, [r4, 0x30] + b _080A4C72 +_080A4BCC: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A4C90 + movs r0, 0 + strh r0, [r4, 0x30] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080A4C72 +_080A4BE8: + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x4 + bl sub_80A4C98 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A4C0A + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080A4C0A: + ldrh r0, [r4, 0x32] + adds r1, r0, 0x1 + strh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x1D + ble _080A4C90 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080A4C30 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4C3E + subs r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _080A4C3E +_080A4C30: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080A4C3E + adds r0, r1, 0x1 + strh r0, [r4, 0x3C] +_080A4C3E: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x3A + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _080A4C90 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080A4C90 + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + b _080A4C72 +_080A4C66: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080A4C72: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A4C90 +_080A4C7A: + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + adds r0, r4, 0 + bl DestroyAnimSprite +_080A4C90: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4B38 + + thumb_func_start sub_80A4C98 +sub_80A4C98: @ 80A4C98 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0xB + bgt _080A4CAA + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_080A4CAA: + ldrh r5, [r4, 0x34] + adds r0, r5, 0 + subs r0, 0x12 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + cmp r0, 0x17 + bhi _080A4CC0 + ldrh r0, [r4, 0x36] + subs r0, 0x2 + strh r0, [r4, 0x36] +_080A4CC0: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x2F + ble _080A4CCE + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_080A4CCE: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0x9 + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl __divsi3 + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bge _080A4CF4 + movs r1, 0x26 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x26] +_080A4CF4: + adds r0, r5, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3B + ble _080A4D04 + movs r0, 0 + strh r0, [r4, 0x34] +_080A4D04: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A4C98 + + thumb_func_start sub_80A4D0C +sub_80A4D0C: @ 80A4D0C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A4D50 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A4D20 + adds r0, r4, 0 + bl sub_8074FCC +_080A4D20: + 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, 0xA] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x32] + ldr r1, _080A4D54 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A4D58 @ =sub_8074D00 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4D50: .4byte gBattleAnimArgs +_080A4D54: .4byte DestroyAnimSprite +_080A4D58: .4byte sub_8074D00 + thumb_func_end sub_80A4D0C + + thumb_func_start sub_80A4D5C +sub_80A4D5C: @ 80A4D5C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080A4D70 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A4D78 + ldr r0, _080A4D74 @ =gBattleAnimAttacker + b _080A4D7A + .align 2, 0 +_080A4D70: .4byte gBattleAnimArgs +_080A4D74: .4byte gBattleAnimAttacker +_080A4D78: + ldr r0, _080A4DBC @ =gBattleAnimTarget +_080A4D7A: + ldrb r6, [r0] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080A4DC4 + movs r1, 0x2 + adds r0, r6, 0 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A4DC4 + ldr r4, _080A4DC0 @ =gBattleAnimArgs + ldrb r1, [r4, 0xC] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + adds r0, r6, 0 + bl sub_8076D9C + movs r2, 0 + ldrsh r1, [r4, r2] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + b _080A4E14 + .align 2, 0 +_080A4DBC: .4byte gBattleAnimTarget +_080A4DC0: .4byte gBattleAnimArgs +_080A4DC4: + ldr r4, _080A4DE4 @ =gBattleAnimArgs + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A4DE8 + adds r0, r6, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + b _080A4DFA + .align 2, 0 +_080A4DE4: .4byte gBattleAnimArgs +_080A4DE8: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 +_080A4DFA: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldr r0, _080A4E34 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_8074FF8 +_080A4E14: + ldr r1, _080A4E34 @ =gBattleAnimArgs + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + ldr r1, _080A4E38 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A4E3C @ =sub_8074D00 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4E34: .4byte gBattleAnimArgs +_080A4E38: .4byte DestroyAnimSprite +_080A4E3C: .4byte sub_8074D00 + thumb_func_end sub_80A4D5C + + thumb_func_start sub_80A4E40 +sub_80A4E40: @ 80A4E40 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A4E6C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A4E74 + ldr r0, _080A4E70 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + b _080A4E8E + .align 2, 0 +_080A4E6C: .4byte gBattleAnimAttacker +_080A4E70: .4byte gBattleAnimArgs +_080A4E74: + ldr r2, _080A4E98 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080A4E8E: + ldr r0, _080A4E9C @ =sub_80A4EA0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4E98: .4byte gBattleAnimArgs +_080A4E9C: .4byte sub_80A4EA0 + thumb_func_end sub_80A4E40 + + thumb_func_start sub_80A4EA0 +sub_80A4EA0: @ 80A4EA0 + 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, 0x1E + ble _080A4ED8 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r0, 0x1E + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r4, 0x26] + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r0, 18 + asrs r0, 16 + movs r1, 0x3 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080A4ED8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A4EEC + adds r0, r4, 0 + bl DestroyAnimSprite +_080A4EEC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4EA0 + + thumb_func_start sub_80A4EF4 +sub_80A4EF4: @ 80A4EF4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A4F24 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A4F2C + ldr r1, _080A4F28 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x1 + strh r0, [r4, 0x34] + b _080A4F4A + .align 2, 0 +_080A4F24: .4byte gBattleAnimAttacker +_080A4F28: .4byte gBattleAnimArgs +_080A4F2C: + ldr r2, _080A4F54 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldr r0, _080A4F58 @ =0x0000ffff + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080A4F4A: + ldr r0, _080A4F5C @ =sub_80A4F60 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4F54: .4byte gBattleAnimArgs +_080A4F58: .4byte 0x0000ffff +_080A4F5C: .4byte sub_80A4F60 + thumb_func_end sub_80A4EF4 + + thumb_func_start sub_80A4F60 +sub_80A4F60: @ 80A4F60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x36 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 1 + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080A4FA4 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080A4FA4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4F60 + + thumb_func_start sub_80A4FAC +sub_80A4FAC: @ 80A4FAC + push {lr} + ldrh r1, [r0, 0x20] + subs r1, 0x20 + strh r1, [r0, 0x20] + ldrh r1, [r0, 0x22] + subs r1, 0x20 + strh r1, [r0, 0x22] + movs r1, 0x14 + strh r1, [r0, 0x2E] + ldr r1, _080A4FCC @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080A4FD0 @ =sub_80A4FD4 + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080A4FCC: .4byte sub_8074C44 +_080A4FD0: .4byte sub_80A4FD4 + thumb_func_end sub_80A4FAC + + thumb_func_start sub_80A4FD4 +sub_80A4FD4: @ 80A4FD4 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r6, [r5, 0x38] + movs r1, 0x1 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _080A4FEA + cmp r0, 0x1 + beq _080A5004 + b _080A506A +_080A4FEA: + strh r1, [r5, 0x2E] + ldr r0, _080A4FFC @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A5000 @ =sub_80A4FD4 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + b _080A506A + .align 2, 0 +_080A4FFC: .4byte sub_8074C44 +_080A5000: .4byte sub_80A4FD4 +_080A5004: + ldrh r3, [r5, 0x24] + ldrh r0, [r5, 0x20] + adds r3, r0 + movs r0, 0 + strh r3, [r5, 0x20] + ldrh r4, [r5, 0x26] + ldrh r1, [r5, 0x22] + adds r4, r1 + strh r4, [r5, 0x22] + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r2, _080A5078 @ =gUnknown_83E3548 + lsls r0, r6, 16 + asrs r0, 24 + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + adds r3, r1 + strh r3, [r5, 0x32] + adds r2, 0x1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r4, r0 + strh r4, [r5, 0x36] + ldr r0, _080A507C @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5080 @ =sub_80A5084 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xCB + bl PlaySE12WithPanning +_080A506A: + ldrh r0, [r5, 0x38] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x38] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5078: .4byte gUnknown_83E3548 +_080A507C: .4byte sub_8075590 +_080A5080: .4byte sub_80A5084 + thumb_func_end sub_80A4FD4 + + thumb_func_start sub_80A5084 +sub_80A5084: @ 80A5084 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + cmp r0, 0x4 + bne _080A50AC + movs r0, 0xA + strh r0, [r2, 0x2E] + ldr r0, _080A50A4 @ =sub_8074C44 + str r0, [r2, 0x1C] + ldr r1, _080A50A8 @ =sub_80A50B8 + adds r0, r2, 0 + bl StoreSpriteCallbackInData6 + b _080A50B0 + .align 2, 0 +_080A50A4: .4byte sub_8074C44 +_080A50A8: .4byte sub_80A50B8 +_080A50AC: + ldr r0, _080A50B4 @ =sub_80A4FD4 + str r0, [r2, 0x1C] +_080A50B0: + pop {r0} + bx r0 + .align 2, 0 +_080A50B4: .4byte sub_80A4FD4 + thumb_func_end sub_80A5084 + + thumb_func_start sub_80A50B8 +sub_80A50B8: @ 80A50B8 + push {r4-r7,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x6] + cmp r1, 0 + bne _080A50E0 + movs r0, 0x3 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + strh r1, [r5, 0x32] + ldr r0, _080A50D8 @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A50DC @ =sub_80A5174 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + b _080A5160 + .align 2, 0 +_080A50D8: .4byte sub_8074C44 +_080A50DC: .4byte sub_80A5174 +_080A50E0: + ldrh r0, [r5, 0x6] + cmp r0, 0x2 + beq _080A5100 + cmp r0, 0x2 + bgt _080A50F0 + cmp r0, 0x1 + beq _080A50F6 + b _080A5114 +_080A50F0: + cmp r0, 0x3 + beq _080A5108 + b _080A5114 +_080A50F6: + ldr r6, _080A50FC @ =0x0000fff8 + adds r7, r6, 0 + b _080A5118 + .align 2, 0 +_080A50FC: .4byte 0x0000fff8 +_080A5100: + ldr r7, _080A5104 @ =0x0000fff8 + b _080A5116 + .align 2, 0 +_080A5104: .4byte 0x0000fff8 +_080A5108: + movs r7, 0x8 + ldr r6, _080A5110 @ =0x0000fff8 + b _080A5118 + .align 2, 0 +_080A5110: .4byte 0x0000fff8 +_080A5114: + movs r7, 0x8 +_080A5116: + movs r6, 0x8 +_080A5118: + 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] + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080A5168 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _080A516C @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5170 @ =sub_80A5220 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_080A5160: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5168: .4byte gBattleAnimTarget +_080A516C: .4byte sub_8075590 +_080A5170: .4byte sub_80A5220 + thumb_func_end sub_80A50B8 + + thumb_func_start sub_80A5174 +sub_80A5174: @ 80A5174 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A5194 + ldrh r0, [r4, 0x30] + adds r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A51A4 + movs r0, 0x10 + b _080A51A2 +_080A5194: + ldrh r0, [r4, 0x30] + subs r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080A51A4 + movs r0, 0 +_080A51A2: + strh r0, [r4, 0x30] +_080A51A4: + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8075BE8 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A5200 @ =0x00007fff + bl BlendPalettes + movs r3, 0x30 + ldrsh r0, [r4, r3] + cmp r0, 0x10 + bne _080A520C + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ldrb r1, [r4, 0x5] + lsrs r1, 4 + lsls r0, r1, 5 + ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210 + adds r0, r2 + lsls r1, 4 + ldr r3, _080A5208 @ =0x00000101 + adds r2, r3, 0 + orrs r1, r2 + movs r2, 0x4 + bl LoadPalette + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xB9 + bl PlaySE12WithPanning + b _080A5214 + .align 2, 0 +_080A5200: .4byte 0x00007fff +_080A5204: .4byte gPlttBufferUnfaded + 0x210 +_080A5208: .4byte 0x00000101 +_080A520C: + cmp r0, 0 + bne _080A5214 + ldr r0, _080A521C @ =sub_80A5220 + str r0, [r4, 0x1C] +_080A5214: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A521C: .4byte sub_80A5220 + thumb_func_end sub_80A5174 + + thumb_func_start sub_80A5220 +sub_80A5220: @ 80A5220 + push {lr} + adds r2, r0, 0 + ldr r0, _080A523C @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080A5240 @ =0x0000ffff + cmp r1, r0 + bne _080A5238 + movs r0, 0 + strh r0, [r2, 0x30] + strh r0, [r2, 0x2E] + ldr r0, _080A5244 @ =sub_80A5248 + str r0, [r2, 0x1C] +_080A5238: + pop {r0} + bx r0 + .align 2, 0 +_080A523C: .4byte gBattleAnimArgs +_080A5240: .4byte 0x0000ffff +_080A5244: .4byte sub_80A5248 + thumb_func_end sub_80A5220 + + thumb_func_start sub_80A5248 +sub_80A5248: @ 80A5248 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A527C + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + 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] +_080A527C: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bne _080A5290 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A5290: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5248 + + thumb_func_start sub_80A5298 +sub_80A5298: @ 80A5298 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _080A52B8 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r3, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A52BC + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + b _080A530E + .align 2, 0 +_080A52B8: .4byte gBattleAnimArgs +_080A52BC: + cmp r0, 0x2 + bne _080A52D8 + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x20 + b _080A530A +_080A52D8: + cmp r0, 0x3 + bne _080A52F4 + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + b _080A530A +_080A52F4: + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 +_080A530A: + orrs r0, r1 + strb r0, [r3, 0x3] +_080A530E: + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r4, _080A5334 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080A5338 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldr r1, _080A533C @ =sub_80A4FAC + str r1, [r3, 0x1C] + adds r0, r3, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5334: .4byte 0x000003ff +_080A5338: .4byte 0xfffffc00 +_080A533C: .4byte sub_80A4FAC + thumb_func_end sub_80A5298 + + thumb_func_start sub_80A5340 +sub_80A5340: @ 80A5340 + push {lr} + adds r3, r0, 0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + strh r0, [r3, 0x2E] + ldr r0, _080A5368 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080A537C + cmp r0, 0x1 + bgt _080A536C + cmp r0, 0 + beq _080A5372 + b _080A538C + .align 2, 0 +_080A5368: .4byte gBattleAnimArgs +_080A536C: + cmp r0, 0x2 + beq _080A5384 + b _080A538C +_080A5372: + ldr r0, _080A5378 @ =sub_80A5398 + b _080A538E + .align 2, 0 +_080A5378: .4byte sub_80A5398 +_080A537C: + ldr r0, _080A5380 @ =sub_80A5474 + b _080A538E + .align 2, 0 +_080A5380: .4byte sub_80A5474 +_080A5384: + ldr r0, _080A5388 @ =sub_80A54C4 + b _080A538E + .align 2, 0 +_080A5388: .4byte sub_80A54C4 +_080A538C: + ldr r0, _080A5394 @ =sub_80A5584 +_080A538E: + str r0, [r3, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_080A5394: .4byte sub_80A5584 + thumb_func_end sub_80A5340 + + thumb_func_start sub_80A5398 +sub_80A5398: @ 80A5398 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x6 + strh r0, [r4, 0x2E] + ldr r5, _080A53D8 @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + beq _080A53B6 + movs r1, 0x2 +_080A53B6: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A53DC @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, _080A53E0 @ =sub_80A53E8 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A53E4 @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A53D8: .4byte gBattleAnimAttacker +_080A53DC: .4byte gUnknown_2023D44 +_080A53E0: .4byte sub_80A53E8 +_080A53E4: .4byte sub_8074DC4 + thumb_func_end sub_80A5398 + + thumb_func_start sub_80A53E8 +sub_80A53E8: @ 80A53E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r6, [r5, r0] + cmp r6, 0 + bne _080A5424 + ldr r1, _080A5464 @ =gUnknown_2023D44 + ldr r4, _080A5468 @ =gBattleAnimAttacker + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + movs r1, 0 + bl sub_80758E0 + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldr r2, _080A546C @ =0xfffffd00 + adds r1, r2, 0 + cmp r0, 0 + beq _080A5420 + movs r0, 0xC0 + lsls r0, 2 + adds r1, r0, 0 +_080A5420: + strh r1, [r5, 0x36] + strh r6, [r5, 0x38] +_080A5424: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A545E + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080A5470 @ =sub_80A5584 + str r0, [r5, 0x1C] +_080A545E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5464: .4byte gUnknown_2023D44 +_080A5468: .4byte gBattleAnimAttacker +_080A546C: .4byte 0xfffffd00 +_080A5470: .4byte sub_80A5584 + thumb_func_end sub_80A53E8 + + thumb_func_start sub_80A5474 +sub_80A5474: @ 80A5474 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x4 + strh r0, [r4, 0x2E] + ldr r5, _080A54B4 @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0x3 + cmp r0, 0 + beq _080A5492 + movs r0, 0x3 + negs r0, r0 + adds r1, r0, 0 +_080A5492: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A54B8 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, _080A54BC @ =sub_80A5584 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A54C0 @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A54B4: .4byte gBattleAnimAttacker +_080A54B8: .4byte gUnknown_2023D44 +_080A54BC: .4byte sub_80A5584 +_080A54C0: .4byte sub_8074DC4 + thumb_func_end sub_80A5474 + + thumb_func_start sub_80A54C4 +sub_80A54C4: @ 80A54C4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A54DE + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _080A54E4 @ =sub_80A54E8 + str r0, [r1, 0x1C] +_080A54DE: + pop {r0} + bx r0 + .align 2, 0 +_080A54E4: .4byte sub_80A54E8 + thumb_func_end sub_80A54C4 + + thumb_func_start sub_80A54E8 +sub_80A54E8: @ 80A54E8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A5538 + ldr r1, _080A5524 @ =gUnknown_2023D44 + ldr r4, _080A5528 @ =gBattleAnimAttacker + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A552C + movs r0, 0xFC + lsls r0, 8 + strh r0, [r5, 0x36] + movs r0, 0xC0 + lsls r0, 4 + b _080A5536 + .align 2, 0 +_080A5524: .4byte gUnknown_2023D44 +_080A5528: .4byte gBattleAnimAttacker +_080A552C: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r5, 0x36] + movs r0, 0xF4 + lsls r0, 8 +_080A5536: + strh r0, [r5, 0x38] +_080A5538: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A5578 + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + ldr r0, _080A5580 @ =sub_80A5584 + str r0, [r5, 0x1C] +_080A5578: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5580: .4byte sub_80A5584 + thumb_func_end sub_80A54E8 + + thumb_func_start sub_80A5584 +sub_80A5584: @ 80A5584 + push {lr} + bl DestroyAnimSprite + pop {r0} + bx r0 + thumb_func_end sub_80A5584 + + thumb_func_start sub_80A5590 +sub_80A5590: @ 80A5590 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r1, _080A559C @ =sub_80A55A0 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A559C: .4byte sub_80A55A0 + thumb_func_end sub_80A5590 + + thumb_func_start sub_80A55A0 +sub_80A55A0: @ 80A55A0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080A55FA + cmp r5, 0x1 + bgt _080A55B6 + cmp r5, 0 + beq _080A55BC + b _080A568E +_080A55B6: + cmp r5, 0x2 + beq _080A564C + b _080A568E +_080A55BC: + strh r5, [r4, 0x30] + ldr r1, _080A5640 @ =gUnknown_2023D44 + ldr r2, _080A5644 @ =gBattleAnimAttacker + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x32] + ldrb r0, [r2] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + ldr r2, _080A5648 @ =0xfffffe00 + adds r1, r2, 0 + cmp r0, 0 + beq _080A55E4 + movs r0, 0x80 + lsls r0, 2 + adds r1, r0, 0 +_080A55E4: + strh r1, [r4, 0x36] + strh r5, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080A55FA: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A568E + movs r0, 0 + strh r0, [r4, 0x30] + movs r2, 0x36 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A568E + .align 2, 0 +_080A5640: .4byte gUnknown_2023D44 +_080A5644: .4byte gBattleAnimAttacker +_080A5648: .4byte 0xfffffe00 +_080A564C: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A568E + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A568E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A55A0 + + thumb_func_start sub_80A5694 +sub_80A5694: @ 80A5694 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080A56D8 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldr r1, _080A56DC @ =gUnknown_2023D44 + ldr r2, _080A56E0 @ =gBattleAnimAttacker + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + movs r4, 0 + strh r0, [r5, 0x8] + ldrb r0, [r2] + bl GetBattlerSide + lsls r0, 24 + lsrs r2, r0, 24 + strh r2, [r5, 0xA] + strh r4, [r5, 0xC] + ldr r0, _080A56E4 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r1, [r0, r3] + cmp r1, 0 + beq _080A56E8 + cmp r1, 0x1 + beq _080A5704 + adds r0, r6, 0 + bl DestroyAnimVisualTask + b _080A5722 + .align 2, 0 +_080A56D8: .4byte gTasks +_080A56DC: .4byte gUnknown_2023D44 +_080A56E0: .4byte gBattleAnimAttacker +_080A56E4: .4byte gBattleAnimArgs +_080A56E8: + strh r1, [r5, 0xC] + movs r0, 0x8 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + movs r0, 0x3 + strh r0, [r5, 0x12] + cmp r2, 0 + bne _080A56FC + negs r0, r0 + strh r0, [r5, 0x12] +_080A56FC: + ldr r0, _080A5700 @ =sub_80A572C + b _080A5720 + .align 2, 0 +_080A5700: .4byte sub_80A572C +_080A5704: + movs r0, 0x8 + strh r0, [r5, 0xE] + movs r0, 0xC0 + lsls r0, 3 + strh r0, [r5, 0x10] + movs r1, 0xC0 + strh r1, [r5, 0x12] + cmp r2, 0 + bne _080A571E + negs r0, r0 + strh r0, [r5, 0x10] + negs r0, r1 + strh r0, [r5, 0x12] +_080A571E: + ldr r0, _080A5728 @ =sub_80A58EC +_080A5720: + str r0, [r5] +_080A5722: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5728: .4byte sub_80A58EC + thumb_func_end sub_80A5694 + + thumb_func_start sub_80A572C +sub_80A572C: @ 80A572C + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A5750 @ =gTasks + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080A5746 + b _080A58E6 +_080A5746: + lsls r0, 2 + ldr r1, _080A5754 @ =_080A5758 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A5750: .4byte gTasks +_080A5754: .4byte _080A5758 + .align 2, 0 +_080A5758: + .4byte _080A576C + .4byte _080A579E + .4byte _080A57F8 + .4byte _080A5870 + .4byte _080A58B4 +_080A576C: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + beq _080A577C + ldrh r2, [r4, 0x12] + ldrh r3, [r4, 0x10] + adds r2, r3 + b _080A58C2 +_080A577C: + movs r0, 0x8 + strh r0, [r4, 0xE] + strh r1, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r1, 0xC0 + cmp r0, 0 + bne _080A5792 + movs r2, 0xC0 + negs r2, r2 + adds r1, r2, 0 +_080A5792: + strh r1, [r4, 0x12] + ldrb r0, [r4, 0x8] + movs r1, 0 + bl sub_80758E0 + b _080A58A8 +_080A579E: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A57C4 + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_80759DC + b _080A58D4 +_080A57C4: + movs r0, 0x8 + strh r0, [r4, 0xE] + ldr r2, _080A57F4 @ =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080A57EA + movs r1, 0x2 +_080A57EA: + strh r1, [r4, 0x12] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _080A58A8 + .align 2, 0 +_080A57F4: .4byte gSprites +_080A57F8: + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A5854 + ldrh r1, [r4, 0x14] + movs r3, 0x14 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A5812 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + b _080A58E6 +_080A5812: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080A5834 + ldr r2, _080A5830 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r2, [r4, 0x10] + adds r1, r2 + b _080A5848 + .align 2, 0 +_080A5830: .4byte gSprites +_080A5834: + ldr r2, _080A5850 @ =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + ldrh r2, [r4, 0x12] + subs r1, r2 +_080A5848: + strh r1, [r0, 0x24] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _080A58D4 + .align 2, 0 +_080A5850: .4byte gSprites +_080A5854: + ldr r2, _080A586C @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x24] + movs r0, 0xC + strh r0, [r4, 0xE] + b _080A58A8 + .align 2, 0 +_080A586C: .4byte gSprites +_080A5870: + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080A5880 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080A58E6 +_080A5880: + movs r0, 0x3 + strh r0, [r4, 0xE] + ldr r2, _080A58B0 @ =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x8 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080A58A6 + movs r1, 0x8 +_080A58A6: + strh r1, [r4, 0x12] +_080A58A8: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080A58E6 + .align 2, 0 +_080A58B0: .4byte gSprites +_080A58B4: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A58E0 + ldrh r2, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r2, r0 +_080A58C2: + strh r2, [r4, 0x10] + ldr r3, _080A58DC @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x24] +_080A58D4: + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080A58E6 + .align 2, 0 +_080A58DC: .4byte gSprites +_080A58E0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080A58E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A572C + + thumb_func_start sub_80A58EC +sub_80A58EC: @ 80A58EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A5928 @ =gTasks + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A592C + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_80759DC + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080A5938 + .align 2, 0 +_080A5928: .4byte gTasks +_080A592C: + ldrb r0, [r4, 0x8] + bl sub_8075980 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A5938: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A58EC + + thumb_func_start sub_80A5940 +sub_80A5940: @ 80A5940 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A5954 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A595C + ldr r4, _080A5958 @ =gBattleAnimAttacker + b _080A595E + .align 2, 0 +_080A5954: .4byte gBattleAnimArgs +_080A5958: .4byte gBattleAnimAttacker +_080A595C: + ldr r4, _080A599C @ =gBattleAnimTarget +_080A595E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + movs r0, 0 + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + ldr r1, _080A59A0 @ =sub_80A5A8C + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A59A4 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A599C: .4byte gBattleAnimTarget +_080A59A0: .4byte sub_80A5A8C +_080A59A4: .4byte sub_8074F6C + thumb_func_end sub_80A5940 + + thumb_func_start sub_80A59A8 +sub_80A59A8: @ 80A59A8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A59E0 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A59E4 @ =0x0000ffd0 + adds r0, r1 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080A59E8 @ =sub_80A5A44 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A59EC @ =sub_8074F6C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A59E0: .4byte gBattleAnimTarget +_080A59E4: .4byte 0x0000ffd0 +_080A59E8: .4byte sub_80A5A44 +_080A59EC: .4byte sub_8074F6C + thumb_func_end sub_80A59A8 + + thumb_func_start sub_80A59F0 +sub_80A59F0: @ 80A59F0 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080A5A34 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A5A38 @ =gBattleAnimArgs + ldr r2, _080A5A3C @ =0x0000ffd0 + adds r0, r2 + ldrh r1, [r1] + adds r0, r1 + movs r6, 0 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + strh r6, [r4, 0x2E] + strh r6, [r4, 0x30] + ldr r0, _080A5A40 @ =sub_80A5A8C + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5A34: .4byte gBattleAnimTarget +_080A5A38: .4byte gBattleAnimArgs +_080A5A3C: .4byte 0x0000ffd0 +_080A5A40: .4byte sub_80A5A8C + thumb_func_end sub_80A59F0 + + thumb_func_start sub_80A5A44 +sub_80A5A44: @ 80A5A44 + 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, 0x8 + ble _080A5A6E + movs r0, 0xC + strh r0, [r4, 0x2E] + movs r0, 0x8 + strh r0, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A5A74 @ =sub_80A5A7C + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A5A78 @ =sub_8074CD0 + str r0, [r4, 0x1C] +_080A5A6E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5A74: .4byte sub_80A5A7C +_080A5A78: .4byte sub_8074CD0 + thumb_func_end sub_80A5A44 + + thumb_func_start sub_80A5A7C +sub_80A5A7C: @ 80A5A7C + movs r1, 0 + strh r1, [r0, 0x2E] + strh r1, [r0, 0x30] + ldr r1, _080A5A88 @ =sub_80A5A8C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A5A88: .4byte sub_80A5A8C + thumb_func_end sub_80A5A7C + + thumb_func_start sub_80A5A8C +sub_80A5A8C: @ 80A5A8C + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5AD4 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A5AD4 + adds r0, r3, 0 + bl DestroyAnimSprite +_080A5AD4: + pop {r0} + bx r0 + thumb_func_end sub_80A5A8C + + thumb_func_start sub_80A5AD8 +sub_80A5AD8: @ 80A5AD8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A5AEC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A5AF4 + ldr r4, _080A5AF0 @ =gBattleAnimAttacker + b _080A5AF6 + .align 2, 0 +_080A5AEC: .4byte gBattleAnimArgs +_080A5AF0: .4byte gBattleAnimAttacker +_080A5AF4: + ldr r4, _080A5B30 @ =gBattleAnimTarget +_080A5AF6: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080A5B34 @ =gBattleAnimArgs + ldrh r0, [r0, 0x6] + strh r0, [r5, 0x30] + ldr r0, _080A5B38 @ =sub_80A5B3C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5B30: .4byte gBattleAnimTarget +_080A5B34: .4byte gBattleAnimArgs +_080A5B38: .4byte sub_80A5B3C + thumb_func_end sub_80A5AD8 + + thumb_func_start sub_80A5B3C +sub_80A5B3C: @ 80A5B3C + 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, 0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _080A5B5C + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x22] + subs r0, 0x1 + strh r0, [r2, 0x22] +_080A5B5C: + ldrh r0, [r2, 0x22] + ldrh r1, [r2, 0x2E] + subs r0, r1 + strh r0, [r2, 0x22] + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A5B78 + adds r0, r2, 0 + bl DestroyAnimSprite +_080A5B78: + pop {r0} + bx r0 + thumb_func_end sub_80A5B3C + + thumb_func_start sub_80A5B7C +sub_80A5B7C: @ 80A5B7C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A5BC4 @ =gBattleAnimAttacker + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0xC + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + movs r0, 0x2 + strh r0, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + subs r0, 0x42 + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x38] + ldr r0, _080A5BC8 @ =sub_80A5BCC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5BC4: .4byte gBattleAnimAttacker +_080A5BC8: .4byte sub_80A5BCC + thumb_func_end sub_80A5B7C + + thumb_func_start sub_80A5BCC +sub_80A5BCC: @ 80A5BCC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080A5C38 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080A5C1E + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A5C1E + ldrh r1, [r4, 0x38] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xBB + bl PlaySE12WithPanning +_080A5C1E: + movs r1, 0 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5C38 + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080A5C38: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A5C62 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + ble _080A5C62 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080A5C62 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A5C62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5BCC + + thumb_func_start sub_80A5C68 +sub_80A5C68: @ 80A5C68 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A5CB2 + ldr r4, _080A5CC8 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r5, _080A5CCC @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x2] + adds r0, r5 + strh r0, [r6, 0x22] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A5CAC + ldrh r0, [r6, 0x22] + adds r0, 0xA + strh r0, [r6, 0x22] +_080A5CAC: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] +_080A5CB2: + ldr r0, _080A5CCC @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080A5CD0 @ =0x0000ffff + cmp r1, r0 + bne _080A5CC2 + adds r0, r6, 0 + bl DestroyAnimSprite +_080A5CC2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5CC8: .4byte gBattleAnimAttacker +_080A5CCC: .4byte gBattleAnimArgs +_080A5CD0: .4byte 0x0000ffff + thumb_func_end sub_80A5C68 + + thumb_func_start sub_80A5CD4 +sub_80A5CD4: @ 80A5CD4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A5CF4 @ =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080A5D00 + ldr r1, _080A5CF8 @ =gBattleAnimArgs + ldr r0, _080A5CFC @ =0x0000ffff + strh r0, [r1, 0xE] + b _080A5D3E + .align 2, 0 +_080A5CF4: .4byte gTasks +_080A5CF8: .4byte gBattleAnimArgs +_080A5CFC: .4byte 0x0000ffff +_080A5D00: + cmp r0, 0x2 + bne _080A5D0C + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080A5D44 +_080A5D0C: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A5D44 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r2, [r4, 0xA] + adds r2, 0x1 + strh r2, [r4, 0xA] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A5D44 +_080A5D3E: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_080A5D44: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5CD4 + + thumb_func_start sub_80A5D4C +sub_80A5D4C: @ 80A5D4C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075114 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080A5D74 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080A5D78 @ =sub_80A5D7C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5D74: .4byte gBattleAnimArgs +_080A5D78: .4byte sub_80A5D7C + thumb_func_end sub_80A5D4C + + thumb_func_start sub_80A5D7C +sub_80A5D7C: @ 80A5D7C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080A5D90 + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] + b _080A5DCC +_080A5D90: + adds r2, r5, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldr r4, _080A5DD4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080A5DD8 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5DDC @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_080A5DCC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5DD4: .4byte gBattleAnimAttacker +_080A5DD8: .4byte sub_8075590 +_080A5DDC: .4byte DestroyAnimSprite + thumb_func_end sub_80A5D7C + + thumb_func_start sub_80A5DE0 +sub_80A5DE0: @ 80A5DE0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A5E30 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A5E28 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A5E28 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A5E28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5E30: .4byte gTasks + thumb_func_end sub_80A5DE0 + + thumb_func_start sub_80A5E34 +sub_80A5E34: @ 80A5E34 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + ldr r0, _080A5E9C @ =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcs _080A5E90 + ldr r6, _080A5EA0 @ =gBattleAnimArgs + ldr r5, _080A5EA4 @ =gUnknown_3004FF0 +_080A5E48: + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _080A5E64 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A5E64 + adds r0, r4, r5 + ldrb r0, [r0] + bl SetHealthboxSpriteInvisible +_080A5E64: + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _080A5E82 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A5E82 + adds r0, r4, r5 + ldrb r0, [r0] + bl SetHealthboxSpriteInvisible +_080A5E82: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A5E9C @ =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcc _080A5E48 +_080A5E90: + adds r0, r7, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5E9C: .4byte gBattlersCount +_080A5EA0: .4byte gBattleAnimArgs +_080A5EA4: .4byte gUnknown_3004FF0 + thumb_func_end sub_80A5E34 + + thumb_func_start sub_80A5EA8 +sub_80A5EA8: @ 80A5EA8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _080A5EC2 +_080A5EB2: + ldr r0, _080A5ED8 @ =gUnknown_3004FF0 + adds r0, r4, r0 + ldrb r0, [r0] + bl SetHealthboxSpriteVisible + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080A5EC2: + ldr r0, _080A5EDC @ =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcc _080A5EB2 + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5ED8: .4byte gUnknown_3004FF0 +_080A5EDC: .4byte gBattlersCount + thumb_func_end sub_80A5EA8 + + thumb_func_start sub_80A5EE0 +sub_80A5EE0: @ 80A5EE0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A5EF6 + movs r0, 0x30 + strh r0, [r4, 0x20] + movs r0, 0x28 + b _080A5EFE +_080A5EF6: + ldr r0, _080A5F20 @ =gBattleAnimArgs + ldrh r1, [r0] + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_080A5EFE: + strh r0, [r4, 0x22] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080A5F24 @ =sub_80A5F28 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5F20: .4byte gBattleAnimArgs +_080A5F24: .4byte sub_80A5F28 + thumb_func_end sub_80A5EE0 + + thumb_func_start sub_80A5F28 +sub_80A5F28: @ 80A5F28 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080A5F3A + adds r0, r1, 0 + bl DestroyAnimSprite +_080A5F3A: + pop {r0} + bx r0 + thumb_func_end sub_80A5F28 + + thumb_func_start sub_80A5F40 +sub_80A5F40: @ 80A5F40 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A5F78 @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r2, _080A5F7C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r2] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x22] + strh r1, [r4, 0x2E] + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + strh r1, [r4, 0x34] + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r0, _080A5F80 @ =sub_80A5F84 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5F78: .4byte gBattleAnimAttacker +_080A5F7C: .4byte gBattleAnimArgs +_080A5F80: .4byte sub_80A5F84 + thumb_func_end sub_80A5F40 + + thumb_func_start sub_80A5F84 +sub_80A5F84: @ 80A5F84 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5FAE + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r2, [r1, 0x32] + movs r3, 0x32 + ldrsh r0, [r1, r3] + cmp r0, 0x77 + bgt _080A5FAE + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + adds r0, r2, 0x1 + strh r0, [r1, 0x32] +_080A5FAE: + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080A5FBC + adds r0, r1, 0 + bl DestroyAnimSprite +_080A5FBC: + pop {r0} + bx r0 + thumb_func_end sub_80A5F84 + + thumb_func_start sub_80A5FC0 +sub_80A5FC0: @ 80A5FC0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + mov r8, r0 + ldr r0, _080A6090 @ =0x0000ffff + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldr r0, _080A6094 @ =gTasks + mov r9, r0 + lsls r5, r7, 2 + adds r5, r7 + lsls r5, 3 + adds r6, r5, r0 + strh r4, [r6, 0x8] + strh r4, [r6, 0xA] + strh r4, [r6, 0xC] + strh r1, [r6, 0xE] + strh r4, [r6, 0x10] + strh r4, [r6, 0x12] + strh r4, [r6, 0x14] + movs r0, 0xD + strh r0, [r6, 0x16] + movs r0, 0xE + strh r0, [r6, 0x18] + movs r0, 0xF + strh r0, [r6, 0x1A] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8075CB8 + mov r10, r0 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r0, 0x8 + add r9, r0 + add r5, r9 + adds r0, r5, 0 + adds r0, 0x1C + adds r5, 0x1E + adds r1, r5, 0 + mov r2, r8 + bl sub_80765C0 + ldr r0, _080A6098 @ =0x000027d2 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x80 + lsls r4, 9 + adds r1, r4, 0 + lsls r1, r0 + mov r0, r10 + orrs r0, r1 + mov r10, r0 + ldr r0, _080A609C @ =0x000027d3 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0 + mov r1, r10 + orrs r4, r1 + ldr r0, _080A60A0 @ =0x00007fbb + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, _080A60A4 @ =sub_80A60A8 + str r1, [r6] + adds r0, r7, 0 + bl _call_via_r1 + 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 +_080A6090: .4byte 0x0000ffff +_080A6094: .4byte gTasks +_080A6098: .4byte 0x000027d2 +_080A609C: .4byte 0x000027d3 +_080A60A0: .4byte 0x00007fbb +_080A60A4: .4byte sub_80A60A8 + thumb_func_end sub_80A5FC0 + + thumb_func_start sub_80A60A8 +sub_80A60A8: @ 80A60A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A60D0 @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080A6194 + cmp r1, 0x1 + bgt _080A60D4 + cmp r1, 0 + beq _080A60E2 + b _080A6232 + .align 2, 0 +_080A60D0: .4byte gTasks +_080A60D4: + cmp r1, 0x2 + bne _080A60DA + b _080A61EC +_080A60DA: + cmp r1, 0x3 + bne _080A60E0 + b _080A6220 +_080A60E0: + b _080A6232 +_080A60E2: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bgt _080A60F0 + b _080A6232 +_080A60F0: + strh r1, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080A613C + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrh r2, [r4, 0x18] + ldrh r3, [r4, 0x12] + adds r2, r3 + strh r2, [r4, 0x12] + ldrh r1, [r4, 0x1A] + ldrh r5, [r4, 0x14] + adds r1, r5 + strh r1, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r2, 11 + orrs r0, r2 + lsrs r1, 6 + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + b _080A6146 +_080A613C: + ldr r7, _080A618C @ =0x00007fbb + mov r12, r7 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080A6146: + movs r2, 0x1 + movs r3, 0 + movs r1, 0 +_080A614C: + movs r5, 0xE + ldrsh r0, [r4, r5] + ands r0, r2 + lsls r5, r2, 17 + adds r6, r3, 0 + adds r6, 0x10 + adds r1, 0x1 + mov r8, r1 + cmp r0, 0 + beq _080A6178 + movs r1, 0x1 + ldr r2, _080A6190 @ =gPlttBufferFaded +_080A6164: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r2 + mov r7, r12 + strh r7, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _080A6164 +_080A6178: + lsrs r2, r5, 16 + lsls r0, r6, 16 + lsrs r3, r0, 16 + mov r1, r8 + lsls r0, r1, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _080A614C + b _080A6232 + .align 2, 0 +_080A618C: .4byte 0x00007fbb +_080A6190: .4byte gPlttBufferFaded +_080A6194: + ldr r0, _080A61DC @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A6232 + movs r2, 0 + ldr r3, _080A61E0 @ =gSprites + movs r5, 0x14 + adds r5, r3 + mov r12, r5 + ldr r7, _080A61E4 @ =gUnknown_83E3734 + mov r8, r7 + ldr r6, _080A61E8 @ =gUnknown_83E3764 + movs r5, 0x1 +_080A61B2: + lsls r0, r2, 4 + adds r0, r2 + lsls r1, r0, 2 + mov r7, r12 + adds r0, r1, r7 + ldr r0, [r0] + cmp r0, r8 + beq _080A61C6 + cmp r0, r6 + bne _080A61CA +_080A61C6: + adds r0, r1, r3 + strh r5, [r0, 0x2E] +_080A61CA: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _080A61B2 + movs r0, 0 + strh r0, [r4, 0xA] + b _080A6214 + .align 2, 0 +_080A61DC: .4byte gPaletteFade +_080A61E0: .4byte gSprites +_080A61E4: .4byte gUnknown_83E3734 +_080A61E8: .4byte gUnknown_83E3764 +_080A61EC: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _080A6232 + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + bl sub_80765C8 + ldr r1, _080A621C @ =0x00007fbb + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade +_080A6214: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080A6232 + .align 2, 0 +_080A621C: .4byte 0x00007fbb +_080A6220: + ldr r0, _080A6240 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A6232 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080A6232: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6240: .4byte gPaletteFade + thumb_func_end sub_80A60A8 + + thumb_func_start sub_80A6244 +sub_80A6244: @ 80A6244 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A62C8 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bgt _080A6256 + movs r0, 0x2 + strh r0, [r6, 0x4] +_080A6256: + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x7F + ble _080A6262 + movs r0, 0x7F + strh r0, [r6, 0x4] +_080A6262: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x30] + ldr r4, _080A62CC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x2] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r1, [r5, 0x20] + strh r1, [r5, 0x3A] + strh r0, [r5, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A62D4 + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A62D0 @ =0xffffec00 + b _080A62FA + .align 2, 0 +_080A62C8: .4byte gBattleAnimArgs +_080A62CC: .4byte gBattleAnimTarget +_080A62D0: .4byte 0xffffec00 +_080A62D4: + ldr r0, _080A6314 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A631C + ldrh r0, [r5, 0x20] + subs r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 5 +_080A62FA: + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A6318 @ =0xfffff600 + bl __divsi3 + strh r0, [r5, 0x38] + b _080A6358 + .align 2, 0 +_080A6314: .4byte gBattleAnimAttacker +_080A6318: .4byte 0xfffff600 +_080A631C: + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + subs r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A6364 @ =0xffffec00 + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 4 + bl __divsi3 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 + orrs r0, r1 + strb r0, [r5, 0x3] +_080A6358: + ldr r0, _080A6368 @ =sub_80A636C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6364: .4byte 0xffffec00 +_080A6368: .4byte sub_80A636C + thumb_func_end sub_80A6244 + + thumb_func_start sub_80A636C +sub_80A636C: @ 80A636C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 23 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A63A2 + ldrh r0, [r2, 0x3A] + strh r0, [r2, 0x20] + ldrh r0, [r2, 0x3C] + strh r0, [r2, 0x22] +_080A63A2: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080A63B0 + adds r0, r2, 0 + bl DestroyAnimSprite +_080A63B0: + pop {r0} + bx r0 + thumb_func_end sub_80A636C + + thumb_func_start sub_80A63B4 +sub_80A63B4: @ 80A63B4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _080A6444 @ =gTasks + adds r6, r0, r1 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x8] + ldr r0, _080A6448 @ =0x00002771 + bl AllocSpritePalette + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0xA] + movs r1, 0xA + ldrsh r0, [r6, r1] + lsls r0, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + ldr r2, _080A644C @ =gSprites + movs r0, 0x8 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r4, r0, 4 + movs r5, 0x1 + ldr r2, _080A6450 @ =gPlttBufferUnfaded +_080A640C: + adds r1, r3, r5 + lsls r1, 1 + adds r1, r2 + adds r0, r4, r5 + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _080A640C + adds r0, r3, 0 + movs r1, 0x10 + movs r2, 0xB + movs r3, 0 + bl BlendPalette + movs r0, 0 + strh r0, [r6, 0xE] + movs r5, 0 + ldr r7, _080A644C @ =gSprites + movs r1, 0x1C + adds r1, r7 + mov r9, r1 + b _080A6488 + .align 2, 0 +_080A6444: .4byte gTasks +_080A6448: .4byte 0x00002771 +_080A644C: .4byte gSprites +_080A6450: .4byte gPlttBufferUnfaded +_080A6454: + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r4, r2, r7 + ldrb r1, [r6, 0xA] + lsls r1, 4 + ldrb r3, [r4, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0x5] + movs r0, 0 + strh r0, [r4, 0x2E] + lsls r0, r5, 7 + strh r0, [r4, 0x30] + mov r0, r8 + strh r0, [r4, 0x32] + add r2, r9 + ldr r0, _080A64BC @ =sub_80A653C + str r0, [r2] + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080A6488: + cmp r5, 0x1 + bhi _080A649A + movs r0, 0 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080A6454 +_080A649A: + ldr r0, _080A64C0 @ =sub_80A64E0 + str r0, [r6] + ldr r0, _080A64C4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A64C8 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl ClearGpuRegBits + b _080A64D2 + .align 2, 0 +_080A64BC: .4byte sub_80A653C +_080A64C0: .4byte sub_80A64E0 +_080A64C4: .4byte gBattleAnimAttacker +_080A64C8: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl ClearGpuRegBits +_080A64D2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A63B4 + + thumb_func_start sub_80A64E0 +sub_80A64E0: @ 80A64E0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A6514 @ =gTasks + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6532 + ldr r0, _080A6518 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A651C + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl SetGpuRegBits + b _080A6526 + .align 2, 0 +_080A6514: .4byte gTasks +_080A6518: .4byte gBattleAnimAttacker +_080A651C: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl SetGpuRegBits +_080A6526: + ldr r0, _080A6538 @ =0x00002771 + bl FreeSpritePaletteByTag + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A6532: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6538: .4byte 0x00002771 + thumb_func_end sub_80A64E0 + + thumb_func_start sub_80A653C +sub_80A653C: @ 80A653C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A6558 + movs r0, 0 + strh r0, [r5, 0x34] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_080A6558: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x40 + ble _080A6580 + ldr r2, _080A657C @ =gTasks + movs r0, 0x32 + ldrsh r1, [r5, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xE] + subs r1, 0x1 + strh r1, [r0, 0xE] + adds r0, r5, 0 + bl obj_delete_but_dont_free_vram + b _080A65C2 + .align 2, 0 +_080A657C: .4byte gTasks +_080A6580: + ldr r4, _080A65C8 @ =gSineTable + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0x6 + bl __divsi3 + strh r0, [r5, 0x36] + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0xD + bl __divsi3 + strh r0, [r5, 0x38] + ldrh r1, [r5, 0x30] + adds r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x30] + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + strh r0, [r5, 0x24] +_080A65C2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A65C8: .4byte gSineTable + thumb_func_end sub_80A653C + + thumb_func_start sub_80A65CC +sub_80A65CC: @ 80A65CC + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080A65E0 @ =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + ldr r0, _080A65E4 @ =sub_8074F6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A65E0: .4byte DestroyAnimSprite +_080A65E4: .4byte sub_8074F6C + thumb_func_end sub_80A65CC + + thumb_func_start sub_80A65E8 +sub_80A65E8: @ 80A65E8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r4, _080A6698 @ =gUnknown_83E3898 + ldrh r0, [r4] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + beq _080A662C + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r5, _080A669C @ =gPlttBufferFaded +_080A6614: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r5 + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _080A6614 +_080A662C: + movs r4, 0x1 + ldr r0, _080A6698 @ =gUnknown_83E3898 + mov r8, r0 +_080A6632: + lsls r0, r4, 1 + adds r0, r4 + lsls r5, r0, 2 + mov r1, r8 + adds r0, r5, r1 + ldrh r0, [r0] + bl AllocSpritePalette + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, 0x1 + mov r12, r4 + cmp r3, 0xFF + beq _080A667A + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r7, _080A669C @ =gPlttBufferFaded + ldr r6, _080A6698 @ =gUnknown_83E3898 + adds r4, r5, 0 +_080A6660: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r7 + lsls r0, r2, 1 + adds r0, r4 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _080A6660 +_080A667A: + mov r1, r12 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080A6632 + mov r0, r9 + bl DestroyAnimVisualTask + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6698: .4byte gUnknown_83E3898 +_080A669C: .4byte gPlttBufferFaded + thumb_func_end sub_80A65E8 + + thumb_func_start sub_80A66A0 +sub_80A66A0: @ 80A66A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0x1 + ldr r6, _080A66D0 @ =gUnknown_83E3898 +_080A66AA: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r6 + ldrh r0, [r0] + bl FreeSpritePaletteByTag + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080A66AA + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A66D0: .4byte gUnknown_83E3898 + thumb_func_end sub_80A66A0 + + thumb_func_start sub_80A66D4 +sub_80A66D4: @ 80A66D4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_8074FCC + ldr r4, _080A672C @ =gBattleAnimArgs + ldrb r1, [r4] + adds r0, r5, 0 + bl StartSpriteAnim + ldr r2, _080A6730 @ =gUnknown_83E3898 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A6710 + lsls r2, r0, 4 + ldrb r1, [r5, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] +_080A6710: + ldrh r0, [r4, 0x2] + movs r1, 0 + strh r0, [r5, 0x30] + strh r1, [r5, 0x32] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x34] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A6734 + movs r6, 0x30 + movs r3, 0x28 + b _080A674E + .align 2, 0 +_080A672C: .4byte gBattleAnimArgs +_080A6730: .4byte gUnknown_83E3898 +_080A6734: + ldr r4, _080A6784 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 +_080A674E: + ldrh r0, [r5, 0x20] + lsls r1, r0, 4 + strh r1, [r5, 0x36] + ldrh r1, [r5, 0x22] + lsls r2, r1, 4 + strh r2, [r5, 0x38] + subs r0, r6, r0 + lsls r0, 16 + asrs r0, 16 + subs r1, r3, r1 + lsls r1, 16 + asrs r1, 16 + adds r2, r5, 0 + adds r2, 0x3A + adds r3, r5, 0 + adds r3, 0x3C + movs r4, 0x28 + str r4, [sp] + bl sub_80A678C + ldr r0, _080A6788 @ =sub_80A67E4 + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6784: .4byte gBattleAnimTarget +_080A6788: .4byte sub_80A67E4 + thumb_func_end sub_80A66D4 + + thumb_func_start sub_80A678C +sub_80A678C: @ 80A678C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r2, 0 + mov r8, r3 + ldr r2, [sp, 0x18] + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r1, r2, 24 + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bge _080A67AE + lsls r0, r1, 24 + negs r0, r0 + lsrs r1, r0, 24 +_080A67AE: + lsls r5, r2, 8 + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0 + bne _080A67C2 + movs r4, 0x1 +_080A67C2: + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + strh r0, [r7] + lsls r0, r6, 16 + asrs r0, 8 + adds r1, r4, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A678C + + thumb_func_start sub_80A67E4 +sub_80A67E4: @ 80A67E4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x2E] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r1, r0, r1 + adds r0, r1, 0 + cmp r1, 0 + bge _080A6800 + adds r0, 0xFF +_080A6800: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + ldrh r1, [r4, 0x3A] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + ldrh r2, [r4, 0x3C] + ldrh r3, [r4, 0x38] + adds r2, r3 + strh r2, [r4, 0x38] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x20] + lsls r2, 16 + asrs r2, 20 + strh r2, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xF + bl Sin + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + ldrh r0, [r4, 0x20] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bhi _080A684E + lsls r0, r2, 16 + asrs r1, r0, 16 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + blt _080A684E + cmp r1, 0x80 + ble _080A6856 +_080A684E: + adds r0, r4, 0 + bl move_anim_8074EE0 + b _080A68A6 +_080A6856: + movs r0, 0x34 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _080A68A6 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, r1 + ble _080A68A6 + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A687E + strh r5, [r4, 0x30] +_080A687E: + ldr r2, _080A68AC @ =gUnknown_83E3898 + movs r3, 0x30 + ldrsh r1, [r4, r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A68A6 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_080A68A6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A68AC: .4byte gUnknown_83E3898 + thumb_func_end sub_80A67E4 + + thumb_func_start sub_80A68B0 +sub_80A68B0: @ 80A68B0 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r7, _080A6934 @ =gBattleAnimAttacker + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A68CE + ldr r1, _080A6938 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080A68CE: + ldrb r0, [r7] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A6938 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + movs r5, 0 + strh r0, [r6, 0x20] + ldrb r0, [r7] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r6, 0x22] + ldrb r1, [r4] + adds r0, r6, 0 + bl StartSpriteAnim + strh r5, [r6, 0x32] + strh r5, [r6, 0x34] + ldrh r0, [r6, 0x20] + lsls r0, 4 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x22] + lsls r0, 4 + strh r0, [r6, 0x38] + movs r1, 0x2 + ldrsh r0, [r4, r1] + lsls r0, 4 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3A] + movs r2, 0x4 + ldrsh r0, [r4, r2] + lsls r0, 7 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3C] + ldr r0, _080A693C @ =sub_80A6940 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6934: .4byte gBattleAnimAttacker +_080A6938: .4byte gBattleAnimArgs +_080A693C: .4byte sub_80A6940 + thumb_func_end sub_80A68B0 + + thumb_func_start sub_80A6940 +sub_80A6940: @ 80A6940 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x3C] + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x22] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x5 + ble _080A699E + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A699E + ldrh r0, [r4, 0x32] + adds r0, 0x10 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x12 + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x12 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A699E + movs r0, 0x1 + strh r0, [r4, 0x34] +_080A699E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + bne _080A69B2 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080A69B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A6940 + + thumb_func_start sub_80A69B8 +sub_80A69B8: @ 80A69B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080A69D8 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080A69DC + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] + movs r6, 0x10 + b _080A69DE + .align 2, 0 +_080A69D8: .4byte gBattleAnimArgs +_080A69DC: + ldr r6, _080A6A18 @ =0x0000fff0 +_080A69DE: + ldr r4, _080A6A1C @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x8 + strh r0, [r5, 0x22] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r0, _080A6A20 @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A6A24 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6A18: .4byte 0x0000fff0 +_080A6A1C: .4byte gBattleAnimAttacker +_080A6A20: .4byte sub_8074C44 +_080A6A24: .4byte DestroyAnimSprite + thumb_func_end sub_80A69B8 + + thumb_func_start sub_80A6A28 +sub_80A6A28: @ 80A6A28 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldrh r0, [r4, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] + ldr r5, _080A6AA0 @ =gBattleAnimArgs + ldrb r1, [r5, 0x2] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r2, _080A6AA4 @ =gUnknown_83E3898 + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A6A68 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_080A6A68: + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x20 + cmp r0, 0 + bne _080A6A74 + ldr r2, _080A6AA8 @ =0x0000ffe0 +_080A6A74: + movs r0, 0x28 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x20] + strh r1, [r4, 0x30] + lsls r0, r2, 16 + asrs r0, 16 + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + subs r0, 0x28 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x38] + ldr r0, _080A6AAC @ =sub_80A6AB0 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6AA0: .4byte gBattleAnimArgs +_080A6AA4: .4byte gUnknown_83E3898 +_080A6AA8: .4byte 0x0000ffe0 +_080A6AAC: .4byte sub_80A6AB0 + thumb_func_end sub_80A6A28 + + thumb_func_start sub_80A6AB0 +sub_80A6AB0: @ 80A6AB0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A6B00 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + lsls r0, 16 + lsrs r1, r0, 16 + ldrh r2, [r4, 0x24] + movs r3, 0x24 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _080A6ADC + lsls r0, r1, 16 + negs r0, r0 + lsrs r1, r0, 16 +_080A6ADC: + lsls r0, r1, 16 + asrs r0, 16 + adds r0, r2 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + ldrh r3, [r4, 0x26] + adds r0, r3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A6B06 +_080A6B00: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A6B06: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A6AB0 + + thumb_func_start sub_80A6B0C +sub_80A6B0C: @ 80A6B0C + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A6B2C + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8076B2C + adds r0, 0x8 + b _080A6B36 +_080A6B2C: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8076B2C + subs r0, 0x8 +_080A6B36: + strh r0, [r6, 0x20] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080A6B58 + adds r0, 0x3 +_080A6B58: + asrs r0, 2 + subs r0, r4, r0 + strh r0, [r6, 0x22] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A6B0C + + thumb_func_start sub_80A6B64 +sub_80A6B64: @ 80A6B64 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A6B78 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6B80 + ldr r0, _080A6B7C @ =gBattleAnimAttacker + b _080A6B82 + .align 2, 0 +_080A6B78: .4byte gBattleAnimArgs +_080A6B7C: .4byte gBattleAnimAttacker +_080A6B80: + ldr r0, _080A6BC0 @ =gBattleAnimTarget +_080A6B82: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A6B0C + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + ldr r0, _080A6BC4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x2] + strh r0, [r5, 0x2E] + adds r0, r1, 0x2 + strh r0, [r5, 0x30] + adds r0, r5, 0 + bl StartSpriteAnim + ldr r1, _080A6BC8 @ =sub_80A6BD0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A6BCC @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6BC0: .4byte gBattleAnimTarget +_080A6BC4: .4byte gBattleAnimArgs +_080A6BC8: .4byte sub_80A6BD0 +_080A6BCC: .4byte sub_8074F6C + thumb_func_end sub_80A6B64 + + thumb_func_start sub_80A6BD0 +sub_80A6BD0: @ 80A6BD0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A6BF8 + ldr r1, _080A6C00 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080A6C04 @ =sub_8074F6C + str r0, [r4, 0x1C] +_080A6BF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C00: .4byte DestroyAnimSprite +_080A6C04: .4byte sub_8074F6C + thumb_func_end sub_80A6BD0 + + thumb_func_start sub_80A6C08 +sub_80A6C08: @ 80A6C08 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A6C1C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6C24 + ldr r0, _080A6C20 @ =gBattleAnimAttacker + b _080A6C26 + .align 2, 0 +_080A6C1C: .4byte gBattleAnimArgs +_080A6C20: .4byte gBattleAnimAttacker +_080A6C24: + ldr r0, _080A6C44 @ =gBattleAnimTarget +_080A6C26: + ldrb r0, [r0] + adds r1, r4, 0 + bl sub_80A6B0C + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r1, _080A6C48 @ =sub_80A6C50 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A6C4C @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C44: .4byte gBattleAnimTarget +_080A6C48: .4byte sub_80A6C50 +_080A6C4C: .4byte sub_8074F50 + thumb_func_end sub_80A6C08 + + thumb_func_start sub_80A6C50 +sub_80A6C50: @ 80A6C50 + 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, 0x10 + ble _080A6C76 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r1, _080A6C7C @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A6C80 @ =sub_8074F50 + str r0, [r4, 0x1C] +_080A6C76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C7C: .4byte move_anim_8074EE0 +_080A6C80: .4byte sub_8074F50 + thumb_func_end sub_80A6C50 + + thumb_func_start sub_80A6C84 +sub_80A6C84: @ 80A6C84 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _080A6C98 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6CA0 + ldr r0, _080A6C9C @ =gBattleAnimAttacker + b _080A6CA2 + .align 2, 0 +_080A6C98: .4byte gBattleAnimArgs +_080A6C9C: .4byte gBattleAnimAttacker +_080A6CA0: + ldr r0, _080A6CF4 @ =gBattleAnimTarget +_080A6CA2: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + strh r0, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bgt _080A6CCA + movs r0, 0xA + strh r0, [r4, 0x22] +_080A6CCA: + movs r0, 0x1 + strh r0, [r4, 0x2E] + strh r6, [r4, 0x30] + adds r1, r4, 0 + adds r1, 0x43 + ldrb r0, [r1] + strh r0, [r4, 0x32] + ldrb r0, [r1] + adds r0, 0x4 + strh r0, [r4, 0x34] + strh r6, [r4, 0x36] + ldr r1, _080A6CF8 @ =sub_80A6D00 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A6CFC @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6CF4: .4byte gBattleAnimTarget +_080A6CF8: .4byte sub_80A6D00 +_080A6CFC: .4byte sub_8074F50 + thumb_func_end sub_80A6C84 + + thumb_func_start sub_80A6D00 +sub_80A6D00: @ 80A6D00 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080A6D16 + ldr r0, _080A6D1C @ =sub_80A6D20 + str r0, [r1, 0x1C] +_080A6D16: + pop {r0} + bx r0 + .align 2, 0 +_080A6D1C: .4byte sub_80A6D20 + thumb_func_end sub_80A6D00 + + thumb_func_start sub_80A6D20 +sub_80A6D20: @ 80A6D20 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r1, r0, 0x4 + strh r1, [r2, 0x30] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFE + ble _080A6D52 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080A6D4C + strh r0, [r2, 0x24] + ldr r0, _080A6D48 @ =sub_80A6C50 + str r0, [r2, 0x1C] + b _080A6D88 + .align 2, 0 +_080A6D48: .4byte sub_80A6C50 +_080A6D4C: + movs r0, 0xFF + ands r1, r0 + strh r1, [r2, 0x30] +_080A6D52: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0x4F + ble _080A6D62 + ldrh r0, [r2, 0x34] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_080A6D62: + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0x9F + ble _080A6D72 + ldrh r0, [r2, 0x32] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_080A6D72: + ldr r1, _080A6D8C @ =gSineTable + movs r3, 0x30 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + asrs r1, r0, 1 + adds r0, r1 + strh r0, [r2, 0x24] +_080A6D88: + pop {r0} + bx r0 + .align 2, 0 +_080A6D8C: .4byte gSineTable + thumb_func_end sub_80A6D20 + + thumb_func_start sub_80A6D90 +sub_80A6D90: @ 80A6D90 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A6DA4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6DAC + ldr r0, _080A6DA8 @ =gBattleAnimAttacker + b _080A6DAE + .align 2, 0 +_080A6DA4: .4byte gBattleAnimArgs +_080A6DA8: .4byte gBattleAnimAttacker +_080A6DAC: + ldr r0, _080A6DD0 @ =gBattleAnimTarget +_080A6DAE: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A6B0C + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A6DD4 + adds r0, r5, 0 + movs r1, 0 + bl StartSpriteAnim + movs r0, 0x2 + b _080A6DDE + .align 2, 0 +_080A6DD0: .4byte gBattleAnimTarget +_080A6DD4: + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim + movs r0, 0x3 +_080A6DDE: + strh r0, [r5, 0x2E] + ldr r0, _080A6DEC @ =sub_80A6DF0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6DEC: .4byte sub_80A6DF0 + thumb_func_end sub_80A6D90 + + thumb_func_start sub_80A6DF0 +sub_80A6DF0: @ 80A6DF0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _080A6E1E + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r1, _080A6E24 @ =sub_80A6E2C + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A6E28 @ =sub_8074F6C + str r0, [r4, 0x1C] +_080A6E1E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6E24: .4byte sub_80A6E2C +_080A6E28: .4byte sub_8074F6C + thumb_func_end sub_80A6DF0 + + thumb_func_start sub_80A6E2C +sub_80A6E2C: @ 80A6E2C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A6E44 + adds r0, r1, 0 + bl DestroyAnimSprite +_080A6E44: + pop {r0} + bx r0 + thumb_func_end sub_80A6E2C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s new file mode 100644 index 000000000..3f3a083a3 --- /dev/null +++ b/asm/battle_anim_effects_2.s @@ -0,0 +1,7946 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A6E48 +sub_80A6E48: @ 80A6E48 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r5, _080A6E8C @ =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, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x34] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x36] + ldr r1, _080A6E90 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r1, _080A6E94 @ =sub_8074BE4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6E8C: .4byte gBattleAnimArgs +_080A6E90: .4byte move_anim_8074EE0 +_080A6E94: .4byte sub_8074BE4 + thumb_func_end sub_80A6E48 + + thumb_func_start sub_80A6E98 +sub_80A6E98: @ 80A6E98 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A6EAC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6EB4 + ldr r0, _080A6EB0 @ =gBattleAnimAttacker + b _080A6EB6 + .align 2, 0 +_080A6EAC: .4byte gBattleAnimArgs +_080A6EB0: .4byte gBattleAnimAttacker +_080A6EB4: + ldr r0, _080A6ED0 @ =gBattleAnimTarget +_080A6EB6: + ldrb r0, [r0] + adds r1, r4, 0 + bl sub_80A6B0C + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x30] + ldr r0, _080A6ED4 @ =sub_80A6ED8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6ED0: .4byte gBattleAnimTarget +_080A6ED4: .4byte sub_80A6ED8 + thumb_func_end sub_80A6E98 + + thumb_func_start sub_80A6ED8 +sub_80A6ED8: @ 80A6ED8 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _080A6F0A + cmp r0, 0x1 + bgt _080A6EEE + cmp r0, 0 + beq _080A6EF4 + b _080A6F38 +_080A6EEE: + cmp r0, 0x2 + beq _080A6F24 + b _080A6F38 +_080A6EF4: + ldrh r0, [r1, 0x26] + subs r0, 0x3 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080A6F38 + b _080A6F1C +_080A6F0A: + ldrh r0, [r1, 0x26] + adds r0, 0x3 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080A6F38 +_080A6F1C: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _080A6F38 +_080A6F24: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x40 + bne _080A6F38 + adds r0, r1, 0 + bl DestroyAnimSprite +_080A6F38: + pop {r0} + bx r0 + thumb_func_end sub_80A6ED8 + + thumb_func_start sub_80A6F3C +sub_80A6F3C: @ 80A6F3C + push {r4,lr} + adds r4, r0, 0 + ldr r3, _080A6F88 @ =gSprites + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r4, 0x30] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x30] + movs r0, 0x2E + ldrsh r2, [r4, r0] + cmp r2, 0 + bne _080A6F7A + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x24] + adds r0, r4, 0 + bl move_anim_8074EE0 +_080A6F7A: + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6F88: .4byte gSprites + thumb_func_end sub_80A6F3C + + thumb_func_start sub_80A6F8C +sub_80A6F8C: @ 80A6F8C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080A6FD4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080A6FD8 @ =gUnknown_2023D44 + ldr r0, _080A6FDC @ =gBattleAnimTarget + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A6FE4 + ldr r0, _080A6FE0 @ =gBattleAnimArgs + ldrh r1, [r5, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r5, 0x20] + adds r1, r0, 0 + b _080A6FEE + .align 2, 0 +_080A6FD4: .4byte gBattleAnimAttacker +_080A6FD8: .4byte gUnknown_2023D44 +_080A6FDC: .4byte gBattleAnimTarget +_080A6FE0: .4byte gBattleAnimArgs +_080A6FE4: + ldr r1, _080A7018 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] +_080A6FEE: + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + strh r6, [r5, 0x32] + ldr r0, _080A701C @ =sub_80A6F3C + str r0, [r5, 0x1C] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A7018: .4byte gBattleAnimArgs +_080A701C: .4byte sub_80A6F3C + thumb_func_end sub_80A6F8C + + thumb_func_start sub_80A7020 +sub_80A7020: @ 80A7020 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080A704C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x38] + ldr r0, _080A7050 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A7054 @ =sub_80A7058 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A704C: .4byte gBattleAnimArgs +_080A7050: .4byte sub_8074C44 +_080A7054: .4byte sub_80A7058 + thumb_func_end sub_80A7020 + + thumb_func_start sub_80A7058 +sub_80A7058: @ 80A7058 + push {lr} + ldrh r1, [r0, 0x30] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + adds r1, 0xF + strh r1, [r0, 0x36] + ldr r1, _080A7078 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080A707C @ =sub_80A7080 + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080A7078: .4byte sub_8075590 +_080A707C: .4byte sub_80A7080 + thumb_func_end sub_80A7058 + + thumb_func_start sub_80A7080 +sub_80A7080: @ 80A7080 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x38] + movs r3, 0x38 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080A7096 + adds r0, r1, 0 + bl DestroyAnimSprite + b _080A709A +_080A7096: + subs r0, r2, 0x1 + strh r0, [r1, 0x38] +_080A709A: + pop {r0} + bx r0 + thumb_func_end sub_80A7080 + + thumb_func_start sub_80A70A0 +sub_80A70A0: @ 80A70A0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080A70CC @ =gUnknown_2023D44 + ldr r0, _080A70D0 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_80758E0 + ldr r1, _080A70D4 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080A70D8 @ =sub_80A70DC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A70CC: .4byte gUnknown_2023D44 +_080A70D0: .4byte gBattleAnimAttacker +_080A70D4: .4byte gTasks +_080A70D8: .4byte sub_80A70DC + thumb_func_end sub_80A70A0 + + thumb_func_start sub_80A70DC +sub_80A70DC: @ 80A70DC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A710C @ =gUnknown_2023D44 + ldr r0, _080A7110 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r4, [r1] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A7118 + ldr r1, _080A7114 @ =gTasks + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x8] + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 + adds r6, r2, 0 + b _080A7126 + .align 2, 0 +_080A710C: .4byte gUnknown_2023D44 +_080A7110: .4byte gBattleAnimAttacker +_080A7114: .4byte gTasks +_080A7118: + ldr r2, _080A7158 @ =gTasks + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r0, r2 + ldrh r3, [r0, 0x8] + adds r6, r1, 0 +_080A7126: + movs r2, 0x80 + lsls r2, 1 + adds r0, r4, 0 + adds r1, r2, 0 + bl obj_id_set_rotscale + ldr r1, _080A7158 @ =gTasks + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A7160 + ldrh r0, [r1, 0x8] + adds r0, 0xB0 + strh r0, [r1, 0x8] + ldr r1, _080A715C @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x26] + adds r1, 0x1 + b _080A718A + .align 2, 0 +_080A7158: .4byte gTasks +_080A715C: .4byte gSprites +_080A7160: + cmp r0, 0x1 + bne _080A7176 + ldrh r0, [r1, 0xE] + adds r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + bne _080A71D0 + movs r0, 0x2 + b _080A71CE +_080A7176: + ldrh r0, [r1, 0x8] + subs r0, 0xB0 + strh r0, [r1, 0x8] + ldr r1, _080A71C4 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x26] + subs r1, 0x1 +_080A718A: + strh r1, [r0, 0x26] + adds r0, r4, 0 + bl sub_80759DC + ldr r0, _080A71C8 @ =gTasks + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r2, [r1, r3] + movs r0, 0xF2 + lsls r0, 4 + cmp r2, r0 + beq _080A71AA + cmp r2, 0 + bne _080A71D0 +_080A71AA: + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x2 + bne _080A71CC + adds r0, r4, 0 + bl sub_8075980 + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080A71D0 + .align 2, 0 +_080A71C4: .4byte gSprites +_080A71C8: .4byte gTasks +_080A71CC: + adds r0, r2, 0x1 +_080A71CE: + strh r0, [r1, 0xA] +_080A71D0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A70DC + + thumb_func_start sub_80A71D8 +sub_80A71D8: @ 80A71D8 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A71FC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A7204 + ldr r0, _080A7200 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080A7210 + .align 2, 0 +_080A71FC: .4byte gBattleAnimAttacker +_080A7200: .4byte gBattleAnimArgs +_080A7204: + ldr r1, _080A7244 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r5, r1, 0 +_080A7210: + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080A7248 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A724C + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x1 + adds r2, r0, 0 + orrs r2, r1 + strb r2, [r3] + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A7260 + movs r0, 0x2 + orrs r2, r0 + strb r2, [r3] + b _080A7260 + .align 2, 0 +_080A7244: .4byte gBattleAnimArgs +_080A7248: .4byte gBattleAnimAttacker +_080A724C: + movs r2, 0x4 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080A7260 + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] +_080A7260: + ldr r0, _080A7274 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080A7278 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7274: .4byte sub_8074F6C +_080A7278: .4byte DestroyAnimSprite + thumb_func_end sub_80A71D8 + + thumb_func_start sub_80A727C +sub_80A727C: @ 80A727C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7298 @ =sub_8074F50 + str r0, [r4, 0x1C] + ldr r1, _080A729C @ =sub_80A72A0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7298: .4byte sub_8074F50 +_080A729C: .4byte sub_80A72A0 + thumb_func_end sub_80A727C + + thumb_func_start sub_80A72A0 +sub_80A72A0: @ 80A72A0 + push {lr} + movs r1, 0x6 + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + subs r1, 0x20 + strh r1, [r0, 0x36] + ldr r1, _080A72C0 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080A72C4 @ =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080A72C0: .4byte sub_8075590 +_080A72C4: .4byte DestroyAnimSprite + thumb_func_end sub_80A72A0 + + thumb_func_start sub_80A72C8 +sub_80A72C8: @ 80A72C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A72EC + ldr r1, _080A72E8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + b _080A730E + .align 2, 0 +_080A72E8: .4byte gBattleAnimArgs +_080A72EC: + ldr r0, _080A73B4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A730E + ldr r1, _080A73B8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080A730E: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080A73BC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r6, _080A73B8 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x6] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + adds r7, r0, 0 + ldrh r1, [r5, 0x20] + mov r2, r8 + lsls r0, r2, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xF0 + lsls r1, 24 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A7380 + ldr r2, _080A73C0 @ =0xffffa000 + adds r0, r4, r2 + lsls r0, 16 + lsrs r4, r0, 16 +_080A7380: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r5, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + mov r0, r8 + strh r0, [r5, 0x32] + strh r7, [r5, 0x36] + ldr r0, _080A73C4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A73C8 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A73B4: .4byte gBattleAnimAttacker +_080A73B8: .4byte gBattleAnimArgs +_080A73BC: .4byte gBattleAnimTarget +_080A73C0: .4byte 0xffffa000 +_080A73C4: .4byte sub_8075590 +_080A73C8: .4byte DestroyAnimSprite + thumb_func_end sub_80A72C8 + + thumb_func_start sub_80A73CC +sub_80A73CC: @ 80A73CC + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + subs r1, r0, 0x1 + strh r1, [r3, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A73F6 + ldr r2, _080A73FC @ =gTasks + movs r0, 0x3C + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xA] + subs r1, 0x1 + strh r1, [r0, 0xA] + adds r0, r3, 0 + bl DestroySprite +_080A73F6: + pop {r0} + bx r0 + .align 2, 0 +_080A73FC: .4byte gTasks + thumb_func_end sub_80A73CC + + thumb_func_start sub_80A7400 +sub_80A7400: @ 80A7400 + push {r4,lr} + adds r2, r0, 0 + movs r0, 0x3C + ldrsh r1, [r2, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080A7430 @ =gTasks + adds r4, r0, r1 + movs r3, 0x2E + ldrsh r1, [r2, r3] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _080A7434 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x38] + adds r0, r1 + strh r0, [r2, 0x38] + ldrh r0, [r2, 0x36] + ldrh r3, [r2, 0x3A] + adds r0, r3 + b _080A7442 + .align 2, 0 +_080A7430: .4byte gTasks +_080A7434: + ldrh r0, [r2, 0x38] + ldrh r1, [r2, 0x34] + subs r0, r1 + strh r0, [r2, 0x38] + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x36] + subs r0, r1 +_080A7442: + strh r0, [r2, 0x3A] + ldrh r0, [r2, 0x38] + ldrh r1, [r2, 0x30] + adds r3, r0, r1 + strh r3, [r2, 0x30] + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r4, 0x16] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7466 + lsls r0, r3, 16 + lsrs r0, 24 + negs r0, r0 + b _080A746A +_080A7466: + lsls r0, r3, 16 + lsrs r0, 24 +_080A746A: + strh r0, [r2, 0x24] + ldrh r1, [r4, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A747E + ldrh r0, [r2, 0x32] + lsrs r0, 8 + negs r0, r0 + b _080A7482 +_080A747E: + ldrh r0, [r2, 0x32] + lsrs r0, 8 +_080A7482: + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + subs r1, r0, 0x1 + strh r1, [r2, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A7498 + movs r0, 0x1E + strh r0, [r2, 0x2E] + ldr r0, _080A74A0 @ =sub_80A73CC + str r0, [r2, 0x1C] +_080A7498: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A74A0: .4byte sub_80A73CC + thumb_func_end sub_80A7400 + + thumb_func_start sub_80A74A4 +sub_80A74A4: @ 80A74A4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080A74E8 @ =gTasks + adds r6, r0, r1 + ldrh r2, [r6, 0x16] + movs r1, 0x2 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + ldrh r3, [r7, 0x30] + adds r2, r0, r3 + strh r2, [r7, 0x30] + ldrh r0, [r6, 0x18] + ands r1, r0 + ldrh r0, [r7, 0x32] + adds r1, r0 + strh r1, [r7, 0x32] + ldrh r1, [r6, 0x16] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A74EC + lsls r0, r2, 16 + lsrs r0, 24 + negs r0, r0 + b _080A74F0 + .align 2, 0 +_080A74E8: .4byte gTasks +_080A74EC: + lsls r0, r2, 16 + lsrs r0, 24 +_080A74F0: + strh r0, [r7, 0x24] + ldrh r1, [r6, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7504 + ldrh r0, [r7, 0x32] + lsrs r0, 8 + negs r0, r0 + b _080A7508 +_080A7504: + ldrh r0, [r7, 0x32] + lsrs r0, 8 +_080A7508: + strh r0, [r7, 0x26] + ldrh r0, [r7, 0x2E] + subs r1, r0, 0x1 + strh r1, [r7, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A75D4 + movs r4, 0 + movs r0, 0x8 + strh r0, [r7, 0x2E] + movs r0, 0x4 + strh r0, [r6, 0x12] + movs r0, 0x80 + lsls r0, 5 + bl sub_80D8B90 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r7, 0x24] + ldrh r1, [r7, 0x20] + adds r2, r0, r1 + strh r2, [r7, 0x20] + ldrh r0, [r7, 0x26] + ldrh r3, [r7, 0x22] + adds r0, r3 + strh r0, [r7, 0x22] + strh r4, [r7, 0x26] + strh r4, [r7, 0x24] + ldrh r3, [r6, 0x1E] + movs r0, 0x1E + ldrsh r1, [r6, r0] + lsls r0, r2, 16 + asrs r0, 16 + cmp r1, r0 + blt _080A7552 + subs r0, r3, r2 + b _080A7554 +_080A7552: + subs r0, r2, r3 +_080A7554: + lsls r0, 24 + lsrs r4, r0, 16 + ldrh r3, [r6, 0x20] + movs r0, 0x20 + ldrsh r1, [r6, r0] + ldrh r2, [r7, 0x22] + movs r6, 0x22 + ldrsh r0, [r7, r6] + cmp r1, r0 + blt _080A756C + subs r0, r3, r2 + b _080A756E +_080A756C: + subs r0, r2, r3 +_080A756E: + lsls r0, 24 + lsrs r0, 16 + mov r8, r0 + movs r0, 0 + strh r0, [r7, 0x32] + strh r0, [r7, 0x30] + strh r0, [r7, 0x3A] + strh r0, [r7, 0x38] + lsls r0, r4, 16 + asrs r0, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r5, 0 + bl sub_80D8AA0 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + movs r6, 0xE0 + lsls r6, 1 + adds r0, r6, 0 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + strh r0, [r7, 0x34] + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + adds r1, r5, 0 + bl sub_80D8AA0 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r6, 0 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + strh r0, [r7, 0x36] + ldr r0, _080A75E0 @ =sub_80A7400 + str r0, [r7, 0x1C] +_080A75D4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A75E0: .4byte sub_80A7400 + thumb_func_end sub_80A74A4 + + thumb_func_start sub_80A75E4 +sub_80A75E4: @ 80A75E4 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A7608 @ =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A7602 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080A7602: + pop {r0} + bx r0 + .align 2, 0 +_080A7608: .4byte gTasks + thumb_func_end sub_80A75E4 + + thumb_func_start sub_80A760C +sub_80A760C: @ 80A760C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080A7660 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r1, r0, 0x1 + strh r1, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bgt _080A76E0 + ldr r0, _080A7664 @ =gUnknown_83E3C28 + movs r2, 0x1A + ldrsh r1, [r5, r2] + movs r3, 0x1C + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0xC] + ldrb r4, [r5, 0xA] + subs r3, r4 + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r0, 4 + add r0, r12 + lsls r0, 2 + ldr r1, _080A7668 @ =gSprites + adds r6, r0, r1 + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080A766C + cmp r0, 0x2 + beq _080A7682 + b _080A7690 + .align 2, 0 +_080A7660: .4byte gTasks +_080A7664: .4byte gUnknown_83E3C28 +_080A7668: .4byte gSprites +_080A766C: + ldrb r2, [r6, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x3] + b _080A7690 +_080A7682: + ldrb r0, [r6, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r6, 0x3] +_080A7690: + ldr r3, _080A76E8 @ =gTasks + lsls r2, r7, 2 + adds r2, r7 + lsls r2, 3 + adds r4, r2, r3 + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x14] + subs r0, r1 + strh r0, [r6, 0x2E] + strh r7, [r6, 0x3C] + movs r1, 0xA + ldrsh r0, [r4, r1] + adds r0, 0xD + lsls r0, 1 + adds r0, r2 + adds r3, 0x8 + adds r0, r3 + mov r2, r12 + strh r2, [r0] + ldrh r0, [r4, 0xE] + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r0, 0x3F + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x93 + bl PlaySE12WithPanning + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0x2 + ble _080A76E0 + ldr r0, _080A76EC @ =sub_80A75E4 + str r0, [r4] +_080A76E0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A76E8: .4byte gTasks +_080A76EC: .4byte sub_80A75E4 + thumb_func_end sub_80A760C + + thumb_func_start sub_80A76F0 +sub_80A76F0: @ 80A76F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r9, r0 + movs r5, 0 + mov r0, sp + mov r1, r9 + strh r1, [r0] + mov r4, sp + adds r4, 0x2 + strh r1, [r4] + bl sub_8073788 + lsls r0, 24 + mov r10, r4 + cmp r0, 0 + beq _080A775C + ldr r1, _080A774C @ =gTasks + lsls r2, r7, 2 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + movs r1, 0x2 + strh r1, [r0, 0x10] + ldr r3, _080A7750 @ =gBattleAnimArgs + ldrh r0, [r3] + negs r0, r0 + strh r0, [r3] + ldrh r1, [r3, 0x4] + movs r0, 0x1 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _080A7754 + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strh r0, [r3, 0x4] + b _080A77B6 + .align 2, 0 +_080A774C: .4byte gTasks +_080A7750: .4byte gBattleAnimArgs +_080A7754: + movs r0, 0x1 + orrs r0, r1 + strh r0, [r3, 0x4] + b _080A77B6 +_080A775C: + ldr r1, _080A77A0 @ =gUnknown_2023BD6 + ldr r0, _080A77A4 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + lsls r2, r7, 2 + mov r8, r2 + cmp r0, 0 + bne _080A77B6 + ldr r1, _080A77A8 @ =gTasks + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + strh r3, [r0, 0x10] + ldr r2, _080A77AC @ =gBattleAnimArgs + ldrh r0, [r2] + negs r0, r0 + strh r0, [r2] + ldrh r0, [r2, 0x2] + negs r0, r0 + strh r0, [r2, 0x2] + ldrh r1, [r2, 0x4] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080A77B0 + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + b _080A77B4 + .align 2, 0 +_080A77A0: .4byte gUnknown_2023BD6 +_080A77A4: .4byte gBattleAnimTarget +_080A77A8: .4byte gTasks +_080A77AC: .4byte gBattleAnimArgs +_080A77B0: + movs r0, 0x1 + orrs r0, r1 +_080A77B4: + strh r0, [r2, 0x4] +_080A77B6: + ldr r5, _080A7810 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + ldr r1, _080A7814 @ =gTasks + mov r3, r8 + adds r4, r3, r7 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + adds r6, r0, 0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + mov r9, r0 + ldr r0, _080A7818 @ =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7820 + ldr r4, _080A781C @ =gBattleAnimTarget + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A7820 + ldrb r0, [r4] + movs r1, 0 + mov r2, sp + mov r3, r10 + bl sub_8076D9C + b _080A7842 + .align 2, 0 +_080A7810: .4byte gBattleAnimAttacker +_080A7814: .4byte gTasks +_080A7818: .4byte gBattleTypeFlags +_080A781C: .4byte gBattleAnimTarget +_080A7820: + mov r5, sp + ldr r4, _080A787C @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r1, r10 + strh r0, [r1] +_080A7842: + mov r4, sp + ldr r0, _080A7880 @ =gTasks + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + mov r2, sp + ldr r3, _080A7884 @ =gBattleAnimArgs + ldrh r0, [r3] + ldrh r2, [r2] + adds r0, r2 + strh r0, [r1, 0x1E] + strh r0, [r4] + ldrh r0, [r3, 0x2] + mov r3, r10 + ldrh r3, [r3] + adds r0, r3 + strh r0, [r1, 0x20] + mov r1, r10 + strh r0, [r1] + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r0, [r0, r3] + adds r1, r6, 0 + cmp r0, r1 + blt _080A7888 + subs r0, r2, r1 + b _080A788A + .align 2, 0 +_080A787C: .4byte gBattleAnimTarget +_080A7880: .4byte gTasks +_080A7884: .4byte gBattleAnimArgs +_080A7888: + subs r0, r1, r2 +_080A788A: + lsls r0, 16 + lsrs r0, 16 + lsls r4, r0, 16 + asrs r4, 16 + ldr r5, _080A7900 @ =gBattleAnimArgs + ldrh r1, [r5, 0x4] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + lsls r0, 16 + asrs r0, 16 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + ldr r2, _080A7904 @ =gTasks + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r6, r1, r2 + strh r0, [r6, 0x12] + movs r1, 0x12 + ldrsh r0, [r6, r1] + movs r1, 0x80 + bl sub_80D8AA0 + strh r0, [r6, 0x14] + ldrh r0, [r5, 0x4] + strh r0, [r6, 0x16] + mov r2, r10 + ldrh r1, [r2] + movs r3, 0 + ldrsh r0, [r2, r3] + mov r4, r9 + cmp r0, r4 + blt _080A7908 + subs r4, r1, r4 + lsls r4, 16 + asrs r4, 16 + movs r1, 0x12 + ldrsh r0, [r6, r1] + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + movs r1, 0x2 + negs r1, r1 + ands r1, r0 + strh r1, [r6, 0x18] + b _080A7928 + .align 2, 0 +_080A7900: .4byte gBattleAnimArgs +_080A7904: .4byte gTasks +_080A7908: + subs r4, r1 + lsls r4, 16 + asrs r4, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r6, 0x18] +_080A7928: + ldr r1, _080A7968 @ =gTasks + mov r3, r8 + adds r0, r3, r7 + lsls r0, 3 + adds r5, r0, r1 + ldr r4, _080A796C @ =gBattleAnimArgs + ldrh r0, [r4, 0x6] + strh r0, [r5, 0xE] + ldrh r1, [r4, 0x8] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080A7978 + movs r0, 0x80 + eors r0, r1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _080A79A0 + ldr r0, _080A7970 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A7974 @ =0x0000ffc0 + adds r1, r2, 0 + ldrh r4, [r4, 0x8] + adds r1, r4 + adds r0, r1 + b _080A79B0 + .align 2, 0 +_080A7968: .4byte gTasks +_080A796C: .4byte gBattleAnimArgs +_080A7970: .4byte gBattleAnimTarget +_080A7974: .4byte 0x0000ffc0 +_080A7978: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _080A79A0 + ldr r0, _080A7998 @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080A799C @ =0x0000ffc0 + adds r1, r3, 0 + ldrh r4, [r4, 0x8] + adds r1, r4 + adds r0, r1 + b _080A79B0 + .align 2, 0 +_080A7998: .4byte gBattleAnimTarget +_080A799C: .4byte 0x0000ffc0 +_080A79A0: + ldr r0, _080A79DC @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x8] + subs r0, r1 +_080A79B0: + strh r0, [r5, 0xC] + ldr r0, _080A79E0 @ =gTasks + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0x2 + bgt _080A79C8 + movs r0, 0x3 + strh r0, [r1, 0xC] +_080A79C8: + ldr r0, _080A79E4 @ =sub_80A760C + str r0, [r1] + 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 +_080A79DC: .4byte gBattleAnimTarget +_080A79E0: .4byte gTasks +_080A79E4: .4byte sub_80A760C + thumb_func_end sub_80A76F0 + + thumb_func_start sub_80A79E8 +sub_80A79E8: @ 80A79E8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7A10 @ =gUnknown_83E3D18 + ldrh r0, [r0, 0x2] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0x2E] + ldr r0, _080A7A14 @ =sub_80A7A18 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7A10: .4byte gUnknown_83E3D18 +_080A7A14: .4byte sub_80A7A18 + thumb_func_end sub_80A79E8 + + thumb_func_start sub_80A7A18 +sub_80A7A18: @ 80A7A18 + push {r4-r7,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080A7A7C + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r5, [r4, 0x2E] + ldr r1, _080A7A84 @ =gPlttBufferFaded + adds r0, r5, 0 + adds r0, 0x8 + lsls r0, 1 + adds r0, r1 + ldrh r7, [r0] + adds r6, r1, 0 + adds r1, r5, 0 + adds r1, 0x9 + lsls r0, r5, 1 + adds r0, r6 + adds r2, r0, 0 + adds r2, 0x10 + movs r3, 0x7 + lsls r1, 1 + adds r1, r6 +_080A7A50: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080A7A50 + adds r0, r5, 0 + adds r0, 0xF + lsls r0, 1 + adds r0, r6 + strh r7, [r0] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + bne _080A7A7C + adds r0, r4, 0 + bl DestroyAnimSprite +_080A7A7C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7A84: .4byte gPlttBufferFaded + thumb_func_end sub_80A7A18 + + thumb_func_start sub_80A7A88 +sub_80A7A88: @ 80A7A88 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080A7B28 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A7B2C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _080A7B30 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A7ACC + ldrh r0, [r4, 0x4] + negs r0, r0 + strh r0, [r4, 0x4] +_080A7ACC: + lsls r0, r6, 16 + asrs r0, 16 + ldrh r1, [r4, 0x4] + adds r0, r1 + lsls r0, 16 + ldrh r1, [r5, 0x20] + lsrs r6, r0, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + strh r6, [r5, 0x32] + strh r7, [r5, 0x36] + ldr r0, _080A7B34 @ =sub_80756A4 + str r0, [r5, 0x1C] + ldr r1, _080A7B38 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7B28: .4byte gBattleAnimTarget +_080A7B2C: .4byte gBattleAnimArgs +_080A7B30: .4byte gBattleAnimAttacker +_080A7B34: .4byte sub_80756A4 +_080A7B38: .4byte DestroyAnimSprite + thumb_func_end sub_80A7A88 + + thumb_func_start sub_80A7B3C +sub_80A7B3C: @ 80A7B3C + ldr r1, _080A7B4C @ =0x0000fff0 + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + adds r1, 0x8 + strh r1, [r0, 0x22] + ldr r1, _080A7B50 @ =sub_80A7B54 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A7B4C: .4byte 0x0000fff0 +_080A7B50: .4byte sub_80A7B54 + thumb_func_end sub_80A7B3C + + thumb_func_start sub_80A7B54 +sub_80A7B54: @ 80A7B54 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldr r0, _080A7BC0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A7B78 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] +_080A7B78: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x5 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7E + ble _080A7BB8 + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080A7BB8 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A7BB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7BC0: .4byte gBattleAnimAttacker + thumb_func_end sub_80A7B54 + + thumb_func_start sub_80A7BC4 +sub_80A7BC4: @ 80A7BC4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080A7C10 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A7C14 @ =sub_8075590 + str r0, [r4, 0x1C] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080A7C18 @ =sub_80A7C1C + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7C10: .4byte gBattleAnimTarget +_080A7C14: .4byte sub_8075590 +_080A7C18: .4byte sub_80A7C1C + thumb_func_end sub_80A7BC4 + + thumb_func_start sub_80A7C1C +sub_80A7C1C: @ 80A7C1C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x9F + bl PlaySE12WithPanning + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + movs r2, 0 + movs r1, 0x7 + adds r0, r4, 0 + adds r0, 0x3C +_080A7C50: + strh r2, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A7C50 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x7 + ands r0, r1 + ldr r2, _080A7C98 @ =0x0000fff4 + adds r1, r2, 0 + subs r1, r0 + strh r1, [r4, 0x3A] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA0 + bl __umodsi3 + adds r0, 0xA0 + strh r0, [r4, 0x3C] + ldr r0, _080A7C9C @ =sub_80A7CA0 + str r0, [r4, 0x1C] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7C98: .4byte 0x0000fff4 +_080A7C9C: .4byte sub_80A7CA0 + thumb_func_end sub_80A7C1C + + thumb_func_start sub_80A7CA0 +sub_80A7CA0: @ 80A7CA0 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x3C] + ldrh r2, [r4, 0x2E] + adds r0, r1, r2 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r2, r0, 24 + strh r2, [r4, 0x24] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7CBE + negs r0, r2 + strh r0, [r4, 0x24] +_080A7CBE: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x8 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7E + ble _080A7CFE + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A7CFE + adds r0, r4, 0 + bl DestroyAnimSprite +_080A7CFE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A7CA0 + + thumb_func_start sub_80A7D04 +sub_80A7D04: @ 80A7D04 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7D54 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A7D22 + ldrh r0, [r4, 0x22] + adds r0, 0x10 + strh r0, [r4, 0x22] +_080A7D22: + ldr r1, _080A7D58 @ =gBattleAnimArgs + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0xC] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldr r0, _080A7D5C @ =sub_8074A80 + str r0, [r4, 0x1C] + ldr r1, _080A7D60 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7D54: .4byte gBattleAnimAttacker +_080A7D58: .4byte gBattleAnimArgs +_080A7D5C: .4byte sub_8074A80 +_080A7D60: .4byte DestroyAnimSprite + thumb_func_end sub_80A7D04 + + thumb_func_start sub_80A7D64 +sub_80A7D64: @ 80A7D64 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r7, 0x20 + ldr r4, _080A7DE0 @ =0x0000ffe0 + movs r0, 0x10 + mov r8, r0 + ldr r6, _080A7DE4 @ =0x0000fff0 + ldr r0, _080A7DE8 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080A7D90 + adds r7, r4, 0 + movs r4, 0x20 + mov r8, r6 + movs r6, 0x10 + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080A7D90: + lsls r0, r7, 16 + asrs r0, 16 + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080A7DEC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + add r0, r8 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _080A7DF0 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A7DF4 @ =sub_80A7DF8 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7DE0: .4byte 0x0000ffe0 +_080A7DE4: .4byte 0x0000fff0 +_080A7DE8: .4byte gBattleAnimArgs +_080A7DEC: .4byte gBattleAnimTarget +_080A7DF0: .4byte sub_8075590 +_080A7DF4: .4byte sub_80A7DF8 + thumb_func_end sub_80A7D64 + + thumb_func_start sub_80A7DF8 +sub_80A7DF8: @ 80A7DF8 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A7E0E + adds r0, r2, 0 + bl DestroyAnimSprite +_080A7E0E: + pop {r0} + bx r0 + thumb_func_end sub_80A7DF8 + + thumb_func_start sub_80A7E14 +sub_80A7E14: @ 80A7E14 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r0, 0x20 + mov r8, r0 + ldr r4, _080A7EA8 @ =0x0000ffe0 + movs r2, 0x10 + mov r9, r2 + ldr r6, _080A7EAC @ =0x0000fff0 + ldr r7, _080A7EB0 @ =gBattleAnimArgs + ldrh r1, [r7] + movs r2, 0 + ldrsh r0, [r7, r2] + cmp r0, 0 + beq _080A7E48 + mov r8, r4 + movs r4, 0x20 + mov r9, r6 + movs r6, 0x10 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_080A7E48: + mov r0, r8 + lsls r1, r0, 16 + asrs r1, 16 + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + movs r0, 0x6 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + ldr r4, _080A7EB4 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + add r0, r9 + 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 + adds r0, r6 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r7] + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x2E] + strh r0, [r5, 0x3A] + ldr r0, _080A7EB8 @ =sub_80A7EBC + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7EA8: .4byte 0x0000ffe0 +_080A7EAC: .4byte 0x0000fff0 +_080A7EB0: .4byte gBattleAnimArgs +_080A7EB4: .4byte gBattleAnimTarget +_080A7EB8: .4byte sub_80A7EBC + thumb_func_end sub_80A7E14 + + thumb_func_start sub_80A7EBC +sub_80A7EBC: @ 80A7EBC + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A7F20 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A7F20 + adds r0, r4, 0 + movs r1, 0 + bl SeekSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r2, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x2 + strh r0, [r4, 0x24] + ldr r0, _080A7F28 @ =0x0000fffe + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + eors r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x36] + strh r2, [r4, 0x34] + ldr r0, _080A7F2C @ =sub_80A7F30 + str r0, [r4, 0x1C] +_080A7F20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7F28: .4byte 0x0000fffe +_080A7F2C: .4byte sub_80A7F30 + thumb_func_end sub_80A7EBC + + thumb_func_start sub_80A7F30 +sub_80A7F30: @ 80A7F30 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A7F48 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + negs r0, r0 + strh r0, [r4, 0x26] +_080A7F48: + ldrh r0, [r4, 0x34] + movs r1, 0x1 + eors r0, r1 + movs r1, 0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080A7F8A + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x36] + strh r1, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + movs r1, 0x1 + eors r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080A7F90 @ =sub_80A7F94 + str r0, [r4, 0x1C] +_080A7F8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7F90: .4byte sub_80A7F94 + thumb_func_end sub_80A7F30 + + thumb_func_start sub_80A7F94 +sub_80A7F94: @ 80A7F94 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A7FA8 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A7FA8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A7F94 + + thumb_func_start sub_80A7FB0 +sub_80A7FB0: @ 80A7FB0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80758E0 + adds r0, r4, 0 + movs r1, 0xD0 + movs r2, 0xD0 + movs r3, 0 + bl obj_id_set_rotscale + ldr r1, _080A8008 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0 + bl sub_8075B48 + ldr r1, _080A800C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x50 + strh r1, [r0, 0x8] + ldr r1, _080A8010 @ =sub_80A8014 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8008: .4byte gSprites +_080A800C: .4byte gTasks +_080A8010: .4byte sub_80A8014 + thumb_func_end sub_80A7FB0 + + thumb_func_start sub_80A8014 +sub_80A8014: @ 80A8014 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A806C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + asrs r1, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A8064 + movs r0, 0x1 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8075980 + ldr r1, _080A8070 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0x1 + bl sub_8075B48 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A8064: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A806C: .4byte gTasks +_080A8070: .4byte gSprites + thumb_func_end sub_80A8014 + + thumb_func_start sub_80A8074 +sub_80A8074: @ 80A8074 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A80C0 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x8] + movs r1, 0 + bl sub_80758E0 + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x10] + strh r5, [r4, 0x12] + strh r5, [r4, 0x14] + ldr r0, _080A80C4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x16] + ldr r0, _080A80C8 @ =sub_80A80CC + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A80C0: .4byte gTasks +_080A80C4: .4byte gBattleAnimAttacker +_080A80C8: .4byte sub_80A80CC + thumb_func_end sub_80A8074 + + thumb_func_start sub_80A80CC +sub_80A80CC: @ 80A80CC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A80F0 @ =gTasks + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080A80E6 + b _080A81F6 +_080A80E6: + lsls r0, 2 + ldr r1, _080A80F4 @ =_080A80F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A80F0: .4byte gTasks +_080A80F4: .4byte _080A80F8 + .align 2, 0 +_080A80F8: + .4byte _080A8110 + .4byte _080A8158 + .4byte _080A818E + .4byte _080A8194 + .4byte _080A81A4 + .4byte _080A81D8 +_080A8110: + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080A8120 + cmp r0, 0x3 + beq _080A8120 + cmp r0, 0x6 + bne _080A8128 +_080A8120: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A8200 +_080A8128: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x28 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r1, 0x10 + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x20 + bne _080A81F6 + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + b _080A81D0 +_080A8158: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A81F6 + movs r2, 0x12 + ldrsh r1, [r4, r2] + cmp r1, 0x3 + bne _080A816E + strh r0, [r4, 0xC] + strh r1, [r4, 0xA] + b _080A81F6 +_080A816E: + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r2, 0x80 + lsls r2, 1 + strh r2, [r4, 0x10] + ldrb r0, [r4, 0x8] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r0, 0x2 + strh r0, [r4, 0xA] + b _080A81F6 +_080A818E: + movs r0, 0 + strh r0, [r4, 0xA] + b _080A81F6 +_080A8194: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + ble _080A81F6 + b _080A81CC +_080A81A4: + ldrh r0, [r4, 0xC] + adds r0, 0x2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + subs r0, 0x50 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r1, 0x10 + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x20 + bne _080A81F6 +_080A81CC: + movs r0, 0 + strh r0, [r4, 0xC] +_080A81D0: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080A81F6 +_080A81D8: + ldrb r0, [r4, 0x8] + bl sub_8075980 + ldr r2, _080A81FC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x26] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A81F6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A81FC: .4byte gSprites + thumb_func_end sub_80A80CC + + thumb_func_start sub_80A8200 +sub_80A8200: @ 80A8200 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r0, 0 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r0, 16 + asrs r4, r0, 16 + cmp r4, 0 + blt _080A82DA + bl AllocOamMatrix + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xFF + bne _080A8244 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _080A8240 @ =gSprites + adds r0, r1 + bl obj_delete_but_dont_free_vram + b _080A82DA + .align 2, 0 +_080A8240: .4byte gSprites +_080A8244: + ldr r5, _080A82E8 @ =gSprites + lsls r3, r4, 4 + adds r3, r4 + lsls r3, 2 + adds r4, r3, r5 + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1F + ands r6, r0 + lsls r2, r6, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + ldrb r0, [r7, 0x16] + ldrb r1, [r7, 0xE] + subs r0, r1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r7, 0xE] + adds r0, 0x1 + strh r0, [r7, 0xE] + ldrh r0, [r7, 0x14] + adds r0, 0x1 + strh r0, [r7, 0x14] + movs r0, 0x10 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + movs r0, 0x6 + strh r0, [r4, 0x32] + adds r5, 0x1C + adds r3, r5 + ldr r0, _080A82EC @ =sub_80A82F0 + str r0, [r3] + mov r1, r8 + lsls r0, r1, 24 + lsrs r0, 24 + movs r1, 0x10 + ldrsh r2, [r7, r1] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x1] + movs r3, 0x4 + negs r3, r3 + ands r3, r0 + movs r0, 0x1 + orrs r3, r0 + strb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl CalcCenterToCornerVec +_080A82DA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A82E8: .4byte gSprites +_080A82EC: .4byte sub_80A82F0 + thumb_func_end sub_80A8200 + + thumb_func_start sub_80A82F0 +sub_80A82F0: @ 80A82F0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A832E + ldr r3, _080A8334 @ =gTasks + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x30 + 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 obj_delete_but_dont_free_vram +_080A832E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8334: .4byte gTasks + thumb_func_end sub_80A82F0 + + thumb_func_start sub_80A8338 +sub_80A8338: @ 80A8338 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A835C @ =gTasks + adds r4, r0, r1 + ldr r5, _080A8360 @ =gBattleAnimArgs + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A8364 + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080A838A + .align 2, 0 +_080A835C: .4byte gTasks +_080A8360: .4byte gBattleAnimArgs +_080A8364: + ldrb r0, [r5] + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r4, 0x8] + strh r2, [r4, 0xA] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0xC] + strh r2, [r4, 0xE] + strh r2, [r4, 0x10] + ldr r2, _080A8390 @ =gUnknown_83E3E60 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A8394 @ =sub_80A8398 + str r0, [r4] +_080A838A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8390: .4byte gUnknown_83E3E60 +_080A8394: .4byte sub_80A8398 + thumb_func_end sub_80A8338 + + thumb_func_start sub_80A8398 +sub_80A8398: @ 80A8398 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A83BC @ =gTasks + adds r4, r0, r1 + movs r0, 0xA + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080A8400 + cmp r5, 0x1 + bgt _080A83C0 + cmp r5, 0 + beq _080A83CA + b _080A84A8 + .align 2, 0 +_080A83BC: .4byte gTasks +_080A83C0: + cmp r5, 0x2 + beq _080A8434 + cmp r5, 0x3 + beq _080A8464 + b _080A84A8 +_080A83CA: + adds r0, r4, 0 + bl sub_8076308 + ldrh r2, [r4, 0x10] + adds r2, 0x3 + strh r2, [r4, 0x10] + ldr r3, _080A83FC @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A84A8 + strh r5, [r4, 0xE] + b _080A845C + .align 2, 0 +_080A83FC: .4byte gSprites +_080A8400: + adds r0, r4, 0 + bl sub_8076308 + ldr r2, _080A8430 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + ldrh r2, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A84A8 + movs r0, 0 + strh r0, [r4, 0xE] + b _080A845C + .align 2, 0 +_080A8430: .4byte gSprites +_080A8434: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A845C + ldr r2, _080A8458 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0x10] + subs r0, 0x2 + strh r0, [r4, 0x10] + b _080A84A8 + .align 2, 0 +_080A8458: .4byte gSprites +_080A845C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080A84A8 +_080A8464: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080A84A8 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _080A849C + ldr r2, _080A8498 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask + b _080A84A8 + .align 2, 0 +_080A8498: .4byte gSprites +_080A849C: + ldrb r1, [r4, 0x8] + ldr r2, _080A84B0 @ =gUnknown_83E3E60 + adds r0, r4, 0 + bl sub_80762D0 + strh r5, [r4, 0xA] +_080A84A8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A84B0: .4byte gUnknown_83E3E60 + thumb_func_end sub_80A8398 + + thumb_func_start sub_80A84B4 +sub_80A84B4: @ 80A84B4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A84E4 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A84E8 @ =gUnknown_83E3E80 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A84EC @ =sub_80A84F0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A84E4: .4byte gTasks +_080A84E8: .4byte gUnknown_83E3E80 +_080A84EC: .4byte sub_80A84F0 + thumb_func_end sub_80A84B4 + + thumb_func_start sub_80A84F0 +sub_80A84F0: @ 80A84F0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8518 @ =gTasks + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080A8510 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A8510: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8518: .4byte gTasks + thumb_func_end sub_80A84F0 + + thumb_func_start sub_80A851C +sub_80A851C: @ 80A851C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A854C @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A8550 + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnim + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r4, 0x20] + movs r0, 0x40 + b _080A856A + .align 2, 0 +_080A854C: .4byte gBattleAnimAttacker +_080A8550: + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x20 + strh r0, [r4, 0x20] + ldr r0, _080A859C @ =0x0000ffc0 +_080A856A: + strh r0, [r4, 0x30] + ldr r0, _080A85A0 @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + strh r0, [r4, 0x22] + movs r0, 0x34 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x32] + strh r1, [r4, 0x34] + strh r1, [r4, 0x36] + ldr r1, _080A85A4 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A85A8 @ =sub_8074D00 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A859C: .4byte 0x0000ffc0 +_080A85A0: .4byte gBattleAnimAttacker +_080A85A4: .4byte DestroyAnimSprite +_080A85A8: .4byte sub_8074D00 + thumb_func_end sub_80A851C + + thumb_func_start sub_80A85AC +sub_80A85AC: @ 80A85AC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080A85C0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A85C8 + ldr r0, _080A85C4 @ =gBattleAnimAttacker + b _080A85CA + .align 2, 0 +_080A85C0: .4byte gBattleAnimArgs +_080A85C4: .4byte gBattleAnimAttacker +_080A85C8: + ldr r0, _080A8628 @ =gBattleAnimTarget +_080A85CA: + ldrb r5, [r0] + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A85E4 + ldr r1, _080A862C @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080A85E4: + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A862C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x4] + adds r0, r4 + strh r0, [r6, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bgt _080A8616 + movs r0, 0x8 + strh r0, [r6, 0x22] +_080A8616: + ldr r1, _080A8630 @ =move_anim_8074EE0 + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080A8634 @ =sub_8074F50 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8628: .4byte gBattleAnimTarget +_080A862C: .4byte gBattleAnimArgs +_080A8630: .4byte move_anim_8074EE0 +_080A8634: .4byte sub_8074F50 + thumb_func_end sub_80A85AC + + thumb_func_start sub_80A8638 +sub_80A8638: @ 80A8638 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A866C @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + strh r1, [r4, 0x8] + strh r0, [r4, 0xA] + ldr r2, _080A8670 @ =gUnknown_83E3F1C + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A8674 @ =sub_80A8678 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A866C: .4byte gTasks +_080A8670: .4byte gUnknown_83E3F1C +_080A8674: .4byte sub_80A8678 + thumb_func_end sub_80A8638 + + thumb_func_start sub_80A8678 +sub_80A8678: @ 80A8678 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A86A0 @ =gTasks + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080A8698 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A8698: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A86A0: .4byte gTasks + thumb_func_end sub_80A8678 + + thumb_func_start sub_80A86A4 +sub_80A86A4: @ 80A86A4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A8718 @ =gTasks + adds r4, r1, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + strh r0, [r4, 0x8] + strh r2, [r4, 0xA] + movs r0, 0x4 + strh r0, [r4, 0xC] + movs r0, 0x7 + strh r0, [r4, 0xE] + movs r0, 0x3 + strh r0, [r4, 0x10] + ldr r3, _080A871C @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x20] + strh r0, [r4, 0x12] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x14] + strh r2, [r4, 0x16] + strh r2, [r4, 0x18] + movs r0, 0x2 + strh r0, [r4, 0x1A] + ldr r0, _080A8720 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A870E + movs r1, 0xC + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0xC] +_080A870E: + ldr r0, _080A8724 @ =sub_80A8728 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8718: .4byte gTasks +_080A871C: .4byte gSprites +_080A8720: .4byte gBattleAnimAttacker +_080A8724: .4byte sub_80A8728 + thumb_func_end sub_80A86A4 + + thumb_func_start sub_80A8728 +sub_80A8728: @ 80A8728 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8770 @ =gTasks + adds r3, r0, r1 + ldrh r0, [r3, 0x16] + adds r0, 0x1 + strh r0, [r3, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A878E + movs r0, 0 + strh r0, [r3, 0x16] + ldrh r0, [r3, 0x18] + adds r0, 0x1 + strh r0, [r3, 0x18] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A8778 + ldr r2, _080A8774 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x1A] + ldrh r2, [r0, 0x22] + adds r1, r2 + b _080A878C + .align 2, 0 +_080A8770: .4byte gTasks +_080A8774: .4byte gSprites +_080A8778: + ldr r2, _080A87A0 @ =gSprites + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + ldrh r2, [r3, 0x1A] + subs r1, r2 +_080A878C: + strh r1, [r0, 0x22] +_080A878E: + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _080A87DC + cmp r0, 0x1 + bgt _080A87A4 + cmp r0, 0 + beq _080A87AA + b _080A886C + .align 2, 0 +_080A87A0: .4byte gSprites +_080A87A4: + cmp r0, 0x2 + beq _080A880C + b _080A886C +_080A87AA: + ldr r2, _080A87D8 @ =gSprites + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0xC] + ldrh r2, [r0, 0x20] + adds r1, r2 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080A886C + movs r0, 0xE + strh r0, [r3, 0xE] + movs r0, 0x1 + strh r0, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A87D8: .4byte gSprites +_080A87DC: + ldr r2, _080A8808 @ =gSprites + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x20] + ldrh r2, [r3, 0xC] + subs r1, r2 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080A886C + movs r0, 0x7 + strh r0, [r3, 0xE] + movs r0, 0x2 + strh r0, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A8808: .4byte gSprites +_080A880C: + ldr r2, _080A8844 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0xC] + ldrh r5, [r0, 0x20] + adds r1, r5 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _080A886C + ldrh r0, [r3, 0x10] + subs r0, 0x1 + strh r0, [r3, 0x10] + lsls r0, 16 + cmp r0, 0 + beq _080A8848 + movs r0, 0x7 + strh r0, [r3, 0xE] + strh r1, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A8844: .4byte gSprites +_080A8848: + ldrh r1, [r3, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A8866 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + ldrh r2, [r3, 0x1A] + subs r1, r2 + strh r1, [r0, 0x22] +_080A8866: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A886C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A8728 + + thumb_func_start sub_80A8874 +sub_80A8874: @ 80A8874 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A88C4 @ =gTasks + adds r5, r1, r0 + ldr r4, _080A88C8 @ =gBattleAnimTarget + ldrb r0, [r4] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + movs r1, 0 + strh r0, [r5, 0x8] + movs r0, 0x4 + strh r0, [r5, 0xA] + strh r1, [r5, 0xC] + strh r1, [r5, 0xE] + strh r1, [r5, 0x10] + strh r1, [r5, 0x12] + ldrb r0, [r4] + bl sub_8076B2C + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A88D4 + ldr r0, _080A88CC @ =gBattle_BG1_X + ldrh r0, [r0] + strh r0, [r5, 0x14] + ldr r0, _080A88D0 @ =0x04000014 + b _080A88DC + .align 2, 0 +_080A88C4: .4byte gTasks +_080A88C8: .4byte gBattleAnimTarget +_080A88CC: .4byte gBattle_BG1_X +_080A88D0: .4byte 0x04000014 +_080A88D4: + ldr r0, _080A8940 @ =gBattle_BG2_X + ldrh r0, [r0] + strh r0, [r5, 0x14] + ldr r0, _080A8944 @ =0x04000018 +_080A88DC: + str r0, [sp] + ldrh r0, [r5, 0x8] + adds r1, r0, 0 + subs r1, 0x40 + lsls r2, r1, 16 + lsls r0, 16 + cmp r2, r0 + bgt _080A891A + ldr r4, _080A8948 @ =gScanlineEffectRegBuffers + movs r0, 0xF0 + lsls r0, 3 + adds r6, r4, r0 +_080A88F4: + asrs r3, r2, 16 + cmp r3, 0 + blt _080A890C + lsls r1, r3, 1 + adds r2, r1, r4 + ldrh r0, [r5, 0x14] + adds r0, 0xF0 + strh r0, [r2] + adds r1, r6 + ldrh r0, [r5, 0x14] + adds r0, 0xF0 + strh r0, [r1] +_080A890C: + adds r0, r3, 0x1 + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r3, 0x8 + ldrsh r0, [r5, r3] + cmp r1, r0 + ble _080A88F4 +_080A891A: + ldr r0, _080A894C @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl ScanlineEffect_SetParams + ldr r0, _080A8950 @ =sub_80A8954 + str r0, [r5] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8940: .4byte gBattle_BG2_X +_080A8944: .4byte 0x04000018 +_080A8948: .4byte gScanlineEffectRegBuffers +_080A894C: .4byte 0xa2600001 +_080A8950: .4byte sub_80A8954 + thumb_func_end sub_80A8874 + + thumb_func_start sub_80A8954 +sub_80A8954: @ 80A8954 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8974 @ =gTasks + adds r3, r0, r1 + movs r1, 0x10 + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080A8978 + cmp r0, 0x1 + beq _080A898E + b _080A8A0E + .align 2, 0 +_080A8974: .4byte gTasks +_080A8978: + ldrh r0, [r3, 0x12] + adds r0, 0x1 + strh r0, [r3, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A8A0E + ldrh r0, [r3, 0x10] + adds r0, 0x1 + strh r0, [r3, 0x10] + b _080A8A0E +_080A898E: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A8A0E + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r1, [r3, 0xE] + movs r0, 0x3 + ands r0, r1 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x8] + subs r0, r1 + strh r0, [r3, 0x12] + movs r2, 0xC + ldrsh r1, [r3, r2] + cmp r1, 0x1 + beq _080A89C4 + cmp r1, 0x1 + ble _080A89CC + cmp r1, 0x2 + beq _080A89C8 + cmp r1, 0x3 + beq _080A89C8 + b _080A89CC +_080A89C4: + subs r0, 0x2 + b _080A89CA +_080A89C8: + adds r0, 0x1 +_080A89CA: + strh r0, [r3, 0x12] +_080A89CC: + movs r1, 0x12 + ldrsh r0, [r3, r1] + cmp r0, 0 + blt _080A89F0 + ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers + lsls r0, 1 + adds r0, r2 + ldrh r1, [r3, 0x14] + strh r1, [r0] + movs r1, 0x12 + ldrsh r0, [r3, r1] + lsls r0, 1 + movs r1, 0xF0 + lsls r1, 3 + adds r2, r1 + adds r0, r2 + ldrh r1, [r3, 0x14] + strh r1, [r0] +_080A89F0: + ldrh r0, [r3, 0xE] + adds r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x26 + ldrsh r1, [r3, r2] + cmp r0, r1 + blt _080A8A0E + ldr r1, _080A8A18 @ =gScanlineEffect + movs r0, 0x3 + strb r0, [r1, 0x15] + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A8A0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8A14: .4byte gScanlineEffectRegBuffers +_080A8A18: .4byte gScanlineEffect + thumb_func_end sub_80A8954 + + thumb_func_start sub_80A8A1C +sub_80A8A1C: @ 80A8A1C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A8A70 @ =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x10 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + movs r0, 0x10 + strh r0, [r4, 0x34] + strh r5, [r4, 0x36] + ldrb r0, [r6] + movs r1, 0 + bl sub_8076B2C + adds r0, 0x2 + strh r0, [r4, 0x38] + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x3A] + ldr r0, _080A8A74 @ =sub_80A8A78 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8A70: .4byte gBattleAnimTarget +_080A8A74: .4byte sub_80A8A78 + thumb_func_end sub_80A8A1C + + thumb_func_start sub_80A8A78 +sub_80A8A78: @ 80A8A78 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080A8ADC + cmp r1, 0x1 + bgt _080A8A8E + cmp r1, 0 + beq _080A8A94 + b _080A8BBC +_080A8A8E: + cmp r1, 0x2 + beq _080A8B6E + b _080A8BBC +_080A8A94: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A8ABE + strh r1, [r4, 0x32] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A8ABE: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A8BBC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + b _080A8B66 +_080A8ADC: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A8B22 + ldrh r2, [r4, 0x32] + movs r3, 0x32 + ldrsh r1, [r4, r3] + movs r3, 0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080A8B22 + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + subs r0, 0x1 + strh r0, [r4, 0x22] + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A8B22 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC6 + bl PlaySE12WithPanning +_080A8B22: + ldrh r0, [r4, 0x34] + ldrh r2, [r4, 0x36] + adds r1, r0, r2 + strh r1, [r4, 0x36] + lsls r0, r1, 16 + asrs r2, r0, 16 + cmp r2, 0x1F + ble _080A8B36 + movs r0, 0x40 + b _080A8B44 +_080A8B36: + movs r0, 0x20 + negs r0, r0 + cmp r2, r0 + bgt _080A8B50 + movs r2, 0x40 + negs r2, r2 + adds r0, r2, 0 +_080A8B44: + subs r0, r1 + strh r0, [r4, 0x36] + movs r3, 0x34 + ldrsh r0, [r4, r3] + negs r0, r0 + strh r0, [r4, 0x34] +_080A8B50: + ldrh r0, [r4, 0x36] + movs r2, 0 + strh r0, [r4, 0x24] + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r3, 0x32 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080A8BBC + strh r2, [r4, 0x30] + strh r2, [r4, 0x32] +_080A8B66: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A8BBC +_080A8B6E: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A8B9A + movs r0, 0 + strh r0, [r4, 0x32] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A8B9A: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A8BBC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + bl DestroyAnimSprite +_080A8BBC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A8A78 + + thumb_func_start sub_80A8BC4 +sub_80A8BC4: @ 80A8BC4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + movs r5, 0 + mov r0, sp + strh r5, [r0] + mov r1, sp + adds r1, 0x2 + strh r5, [r1] + ldr r0, _080A8BE8 @ =gBattleAnimArgs + movs r3, 0x4 + ldrsh r2, [r0, r3] + adds r7, r1, 0 + adds r1, r0, 0 + cmp r2, 0 + bne _080A8BF0 + ldr r0, _080A8BEC @ =gBattleAnimAttacker + b _080A8BF2 + .align 2, 0 +_080A8BE8: .4byte gBattleAnimArgs +_080A8BEC: .4byte gBattleAnimAttacker +_080A8BF0: + ldr r0, _080A8C2C @ =gBattleAnimTarget +_080A8BF2: + ldrb r5, [r0] + ldrb r1, [r1, 0x6] + movs r0, 0x1 + adds r4, r0, 0 + eors r4, r1 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080A8C6A + movs r1, 0x2 + adds r0, r5, 0 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8C6A + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r7, 0 + bl sub_8076D9C + cmp r4, 0 + bne _080A8C30 + adds r0, r5, 0 + movs r1, 0 + b _080A8C34 + .align 2, 0 +_080A8C2C: .4byte gBattleAnimTarget +_080A8C30: + adds r0, r5, 0 + movs r1, 0x2 +_080A8C34: + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A8C60 + ldr r2, _080A8C5C @ =gBattleAnimArgs + mov r0, sp + ldrh r1, [r0] + subs r1, r4 + ldrh r0, [r2] + subs r1, r0 + subs r0, r1 + strh r0, [r2] + b _080A8C6A + .align 2, 0 +_080A8C5C: .4byte gBattleAnimArgs +_080A8C60: + ldr r1, _080A8C7C @ =gBattleAnimArgs + mov r0, sp + ldrh r0, [r0] + subs r0, r4 + strh r0, [r1] +_080A8C6A: + ldr r1, _080A8C80 @ =sub_8075D9C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8C7C: .4byte gBattleAnimArgs +_080A8C80: .4byte sub_8075D9C + thumb_func_end sub_80A8BC4 + + thumb_func_start sub_80A8C84 +sub_80A8C84: @ 80A8C84 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A8C9E + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroyAnimSprite +_080A8C9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A8C84 + + thumb_func_start sub_80A8CA4 +sub_80A8CA4: @ 80A8CA4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + movs r6, 0 + mov r0, sp + strh r6, [r0] + mov r1, sp + adds r1, 0x2 + strh r6, [r1] + ldr r0, _080A8CD0 @ =gBattleAnimArgs + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080A8CDC + ldr r0, _080A8CD4 @ =gBattleAnimAttacker + ldrb r7, [r0] + ldr r0, _080A8CD8 @ =gBattleAnimTarget + b _080A8CE2 + .align 2, 0 +_080A8CD0: .4byte gBattleAnimArgs +_080A8CD4: .4byte gBattleAnimAttacker +_080A8CD8: .4byte gBattleAnimTarget +_080A8CDC: + ldr r0, _080A8CFC @ =gBattleAnimTarget + ldrb r7, [r0] + ldr r0, _080A8D00 @ =gBattleAnimAttacker +_080A8CE2: + ldrb r0, [r0] + mov r8, r0 + ldr r0, _080A8D04 @ =gBattleAnimArgs + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080A8D08 + movs r0, 0 + mov r10, r0 + movs r1, 0x1 + str r1, [sp, 0x4] + b _080A8D10 + .align 2, 0 +_080A8CFC: .4byte gBattleAnimTarget +_080A8D00: .4byte gBattleAnimAttacker +_080A8D04: .4byte gBattleAnimArgs +_080A8D08: + movs r2, 0x2 + mov r10, r2 + movs r3, 0x3 + str r3, [sp, 0x4] +_080A8D10: + adds r0, r7, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A8D6C + adds r0, r7, 0 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + ldr r1, _080A8D50 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + movs r0, 0x2 + mov r4, r8 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8D5C + ldr r2, _080A8D54 @ =gSprites + ldr r0, _080A8D58 @ =gUnknown_2023D44 + adds r0, r4, r0 + b _080A8DEA + .align 2, 0 +_080A8D50: .4byte gBattleAnimArgs +_080A8D54: .4byte gSprites +_080A8D58: .4byte gUnknown_2023D44 +_080A8D5C: + ldr r2, _080A8D64 @ =gSprites + ldr r0, _080A8D68 @ =gUnknown_2023D44 + add r0, r8 + b _080A8DEA + .align 2, 0 +_080A8D64: .4byte gSprites +_080A8D68: .4byte gUnknown_2023D44 +_080A8D6C: + adds r0, r7, 0 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A8DD4 @ =gBattleAnimArgs + ldrh r1, [r1] + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A8DE4 + movs r0, 0x2 + adds r4, r7, 0 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8DE4 + ldr r3, _080A8DD8 @ =gSprites + ldr r2, _080A8DDC @ =gUnknown_2023D44 + adds r0, r7, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r6, r0, r3 + adds r2, r4, r2 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r3 + movs r0, 0x20 + ldrsh r1, [r6, r0] + movs r3, 0x20 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080A8DE0 + adds r0, r2, 0 + adds r0, 0x43 + ldrb r0, [r0] + adds r0, 0x1 + b _080A8DFA + .align 2, 0 +_080A8DD4: .4byte gBattleAnimArgs +_080A8DD8: .4byte gSprites +_080A8DDC: .4byte gUnknown_2023D44 +_080A8DE0: + adds r0, r6, 0 + b _080A8DF4 +_080A8DE4: + ldr r2, _080A8E40 @ =gSprites + ldr r0, _080A8E44 @ =gUnknown_2023D44 + adds r0, r7, r0 +_080A8DEA: + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 +_080A8DF4: + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 +_080A8DFA: + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + adds r0, r7, 0 + ldr r1, [sp, 0x4] + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A8E48 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A8E4C + movs r1, 0x2 + mov r0, r8 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8E4C + ldrb r1, [r4, 0xC] + mov r0, r8 + mov r2, sp + mov r3, sp + adds r3, 0x2 + bl sub_8076D9C + b _080A8E6C + .align 2, 0 +_080A8E40: .4byte gSprites +_080A8E44: .4byte gUnknown_2023D44 +_080A8E48: .4byte gBattleAnimArgs +_080A8E4C: + mov r4, sp + mov r0, r8 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + mov r0, r8 + ldr r1, [sp, 0x4] + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r2, sp + strh r0, [r2, 0x2] +_080A8E6C: + mov r0, r8 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A8E90 + mov r3, sp + mov r2, sp + ldr r1, _080A8E8C @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + ldrh r2, [r2] + adds r0, r2 + strh r0, [r3] + adds r2, r1, 0 + b _080A8E9E + .align 2, 0 +_080A8E8C: .4byte gBattleAnimArgs +_080A8E90: + mov r3, sp + mov r0, sp + ldr r2, _080A8EE0 @ =gBattleAnimArgs + ldrh r0, [r0] + ldrh r1, [r2, 0x6] + subs r0, r1 + strh r0, [r3] +_080A8E9E: + ldrh r1, [r2, 0x8] + mov r3, sp + ldrh r3, [r3, 0x2] + adds r1, r3 + mov r0, sp + strh r1, [r0, 0x2] + mov r3, r9 + strh r3, [r5, 0x30] + strh r3, [r5, 0x20] + strh r6, [r5, 0x34] + strh r6, [r5, 0x22] + ldrh r0, [r0] + strh r0, [r5, 0x32] + strh r1, [r5, 0x36] + ldrh r0, [r2] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080A8EE4 @ =sub_80A8C84 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8EE0: .4byte gBattleAnimArgs +_080A8EE4: .4byte sub_80A8C84 + thumb_func_end sub_80A8CA4 + + thumb_func_start sub_80A8EE8 +sub_80A8EE8: @ 80A8EE8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A8F28 @ =0x000027db + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A8F0E + lsls r0, 20 + ldr r1, _080A8F2C @ =0x01010000 + adds r0, r1 + lsrs r0, 16 + ldr r1, _080A8F30 @ =gBattleAnimArgs + ldrb r2, [r1, 0xA] + ldrh r3, [r1, 0x8] + movs r1, 0xF + bl BlendPalette +_080A8F0E: + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r1, _080A8F34 @ =sub_8075D9C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8F28: .4byte 0x000027db +_080A8F2C: .4byte 0x01010000 +_080A8F30: .4byte gBattleAnimArgs +_080A8F34: .4byte sub_8075D9C + thumb_func_end sub_80A8EE8 + + thumb_func_start sub_80A8F38 +sub_80A8F38: @ 80A8F38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A8F6C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0xA0 + cmp r0, 0 + beq _080A8F54 + ldr r1, _080A8F70 @ =0x0000ff60 +_080A8F54: + movs r0, 0xE0 + lsls r0, 2 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + ldr r0, _080A8F74 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x3C] + ldr r0, _080A8F78 @ =sub_80A8F7C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8F6C: .4byte gBattleAnimAttacker +_080A8F70: .4byte 0x0000ff60 +_080A8F74: .4byte gBattleAnimArgs +_080A8F78: .4byte sub_80A8F7C + thumb_func_end sub_80A8F38 + + thumb_func_start sub_80A8F7C +sub_80A8F7C: @ 80A8F7C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + subs r1, r0 + movs r5, 0 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + subs r2, 0x20 + strh r2, [r4, 0x2E] + ldr r0, _080A8FE8 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0xA0 + cmp r0, 0 + beq _080A8FAC + ldr r1, _080A8FEC @ =0x0000ff60 +_080A8FAC: + lsls r0, r1, 16 + asrs r0, 16 + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x26] + movs r2, 0x26 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A8FE0 + ldrh r2, [r4, 0x22] + adds r0, r1, r2 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x26] + strh r5, [r4, 0x24] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r0, _080A8FF0 @ =sub_80A8FF4 + str r0, [r4, 0x1C] +_080A8FE0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8FE8: .4byte gBattleAnimAttacker +_080A8FEC: .4byte 0x0000ff60 +_080A8FF0: .4byte sub_80A8FF4 + thumb_func_end sub_80A8F7C + + thumb_func_start sub_80A8FF4 +sub_80A8FF4: @ 80A8FF4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080A9012 + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + ldr r0, _080A9018 @ =sub_80A901C + str r0, [r4, 0x1C] +_080A9012: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9018: .4byte sub_80A901C + thumb_func_end sub_80A8FF4 + + thumb_func_start sub_80A901C +sub_80A901C: @ 80A901C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A9082 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + movs r0, 0 + strh r0, [r4, 0x2E] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9068 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r3, _080A905C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080A9060 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, _080A9064 @ =sub_80A9094 + b _080A9080 + .align 2, 0 +_080A905C: .4byte 0x000003ff +_080A9060: .4byte 0xfffffc00 +_080A9064: .4byte sub_80A9094 +_080A9068: + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x20 + ldr r3, _080A9088 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080A908C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, _080A9090 @ =sub_80A911C +_080A9080: + str r0, [r4, 0x1C] +_080A9082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9088: .4byte 0x000003ff +_080A908C: .4byte 0xfffffc00 +_080A9090: .4byte sub_80A911C + thumb_func_end sub_80A901C + + thumb_func_start sub_80A9094 +sub_80A9094: @ 80A9094 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x26] + subs r0, 0x2 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080A90CA + movs r0, 0x10 + strh r0, [r4, 0x2E] + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + ldrh r1, [r4, 0x2E] + movs r0, 0x52 + bl SetGpuReg + ldr r0, _080A90D0 @ =sub_80A90D4 + str r0, [r4, 0x1C] +_080A90CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A90D0: .4byte sub_80A90D4 + thumb_func_end sub_80A9094 + + thumb_func_start sub_80A90D4 +sub_80A90D4: @ 80A90D4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r1, r0, 0x1 + strh r1, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A9112 + ldrh r1, [r4, 0x2E] + subs r1, 0x1 + strh r1, [r4, 0x2E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9112 + ldr r0, _080A9118 @ =sub_80A911C + str r0, [r4, 0x1C] +_080A9112: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9118: .4byte sub_80A911C + thumb_func_end sub_80A90D4 + + thumb_func_start sub_80A911C +sub_80A911C: @ 80A911C + push {lr} + adds r3, r0, 0 + ldr r0, _080A9144 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080A9148 @ =0x0000ffff + cmp r1, r0 + bne _080A9154 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x3C + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080A9150 + ldr r0, _080A914C @ =sub_80A915C + b _080A9152 + .align 2, 0 +_080A9144: .4byte gBattleAnimArgs +_080A9148: .4byte 0x0000ffff +_080A914C: .4byte sub_80A915C +_080A9150: + ldr r0, _080A9158 @ =DestroyAnimSprite +_080A9152: + str r0, [r3, 0x1C] +_080A9154: + pop {r0} + bx r0 + .align 2, 0 +_080A9158: .4byte DestroyAnimSprite + thumb_func_end sub_80A911C + + thumb_func_start sub_80A915C +sub_80A915C: @ 80A915C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + adds r0, r4, 0 + bl DestroyAnimSprite + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A915C + + thumb_func_start sub_80A917C +sub_80A917C: @ 80A917C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A91AC @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x8] + ldr r2, _080A91B0 @ =gUnknown_83E4128 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A91B4 @ =sub_80A91B8 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A91AC: .4byte gTasks +_080A91B0: .4byte gUnknown_83E4128 +_080A91B4: .4byte sub_80A91B8 + thumb_func_end sub_80A917C + + thumb_func_start sub_80A91B8 +sub_80A91B8: @ 80A91B8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A9208 @ =gTasks + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _080A9202 + ldr r2, _080A920C @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A9202: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9208: .4byte gTasks +_080A920C: .4byte gSprites + thumb_func_end sub_80A91B8 + + thumb_func_start sub_80A9210 +sub_80A9210: @ 80A9210 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A9244 @ =gTasks + adds r4, r1, r0 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r0, 0x3 + strh r0, [r4, 0x20] + ldr r0, _080A9248 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080A9250 + ldr r0, _080A924C @ =0x0000ffff + strh r0, [r4, 0x22] + movs r0, 0x8 + b _080A9256 + .align 2, 0 +_080A9244: .4byte gTasks +_080A9248: .4byte gBattleAnimTarget +_080A924C: .4byte 0x0000ffff +_080A9250: + movs r0, 0x1 + strh r0, [r4, 0x22] + ldr r0, _080A9270 @ =0x0000fff8 +_080A9256: + strh r0, [r4, 0x24] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A9274 @ =sub_80A9278 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9270: .4byte 0x0000fff8 +_080A9274: .4byte sub_80A9278 + thumb_func_end sub_80A9210 + + thumb_func_start sub_80A9278 +sub_80A9278: @ 80A9278 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A929C @ =gTasks + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r4, [r3, r0] + cmp r4, 0x1 + beq _080A92CC + cmp r4, 0x1 + bgt _080A92A0 + cmp r4, 0 + beq _080A92AA + b _080A9392 + .align 2, 0 +_080A929C: .4byte gTasks +_080A92A0: + cmp r4, 0x2 + beq _080A9348 + cmp r4, 0x3 + beq _080A9362 + b _080A9392 +_080A92AA: + ldr r2, _080A92C8 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x24] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + strh r4, [r3, 0xA] + strh r4, [r3, 0xC] + strh r4, [r3, 0xE] + b _080A935A + .align 2, 0 +_080A92C8: .4byte gSprites +_080A92CC: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A9392 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + ands r0, r4 + lsls r0, 16 + cmp r0, 0 + beq _080A9304 + ldr r2, _080A9300 @ =gSprites + movs r4, 0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0x6 + b _080A9316 + .align 2, 0 +_080A9300: .4byte gSprites +_080A9304: + ldr r2, _080A9344 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + subs r1, 0x6 +_080A9316: + strh r1, [r0, 0x24] + ldrh r0, [r3, 0xE] + adds r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080A9392 + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A935A + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x24] + subs r0, 0x6 + strh r0, [r1, 0x24] + b _080A935A + .align 2, 0 +_080A9344: .4byte gSprites +_080A9348: + ldrh r0, [r3, 0x20] + subs r0, 0x1 + strh r0, [r3, 0x20] + lsls r0, 16 + cmp r0, 0 + beq _080A935A + movs r0, 0 + strh r0, [r3, 0x8] + b _080A9392 +_080A935A: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080A9392 +_080A9362: + ldr r2, _080A9398 @ =gSprites + movs r4, 0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x22] + ldrh r4, [r0, 0x24] + adds r1, r4 + strh r1, [r0, 0x24] + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x24 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A9392 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A9392: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9398: .4byte gSprites + thumb_func_end sub_80A9278 + + thumb_func_start sub_80A939C +sub_80A939C: @ 80A939C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A93D8 @ =gTasks + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r0, 0xE + strh r0, [r4, 0x22] + movs r0, 0x2 + strh r0, [r4, 0x24] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A93DC @ =sub_80A93E0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A93D8: .4byte gTasks +_080A93DC: .4byte sub_80A93E0 + thumb_func_end sub_80A939C + + thumb_func_start sub_80A93E0 +sub_80A93E0: @ 80A93E0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A9434 @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r2, [r4, r0] + cmp r2, 0 + bne _080A94A6 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x10 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _080A94A6 + strh r2, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A943C + ldr r3, _080A9438 @ =gSprites + movs r6, 0x26 + ldrsh r1, [r4, r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + b _080A9452 + .align 2, 0 +_080A9434: .4byte gTasks +_080A9438: .4byte gSprites +_080A943C: + ldr r3, _080A9484 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 +_080A9452: + strb r1, [r0] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + movs r2, 0 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x22 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080A94A6 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x24 + ldrsh r1, [r4, r6] + cmp r0, r1 + bge _080A9488 + strh r2, [r4, 0xA] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + b _080A94A6 + .align 2, 0 +_080A9484: .4byte gSprites +_080A9488: + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A94A6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A93E0 + + thumb_func_start sub_80A94AC +sub_80A94AC: @ 80A94AC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A94FC @ =gTasks + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + movs r1, 0x4 + strh r1, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + strh r0, [r4, 0x12] + strh r0, [r4, 0x14] + strh r0, [r4, 0x16] + strh r0, [r4, 0x18] + strh r0, [r4, 0x22] + ldr r5, _080A9500 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A9504 @ =sub_80A9508 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A94FC: .4byte gTasks +_080A9500: .4byte gBattleAnimAttacker +_080A9504: .4byte sub_80A9508 + thumb_func_end sub_80A94AC + + thumb_func_start sub_80A9508 +sub_80A9508: @ 80A9508 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A952C @ =gTasks + adds r4, r0, r1 + movs r0, 0x18 + ldrsh r2, [r4, r0] + cmp r2, 0x1 + beq _080A9574 + cmp r2, 0x1 + bgt _080A9530 + cmp r2, 0 + beq _080A9536 + b _080A9590 + .align 2, 0 +_080A952C: .4byte gTasks +_080A9530: + cmp r2, 0x2 + beq _080A958C + b _080A9590 +_080A9536: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A9590 + strh r2, [r4, 0x10] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + movs r1, 0x1 + ands r0, r1 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x14] + adds r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A9590 + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A956E + strh r2, [r4, 0x14] + movs r0, 0x1 + strh r0, [r4, 0x18] + b _080A9590 +_080A956E: + movs r0, 0x2 + strh r0, [r4, 0x18] + b _080A9590 +_080A9574: + movs r1, 0 + strh r1, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A9590 + strh r2, [r4, 0x16] + strh r1, [r4, 0x18] + b _080A9590 +_080A958C: + movs r0, 0x1 + strh r0, [r4, 0x12] +_080A9590: + movs r2, 0x8 + ldrsh r5, [r4, r2] + cmp r5, 0 + beq _080A959E + cmp r5, 0x1 + beq _080A9634 + b _080A9642 +_080A959E: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080A9642 + strh r5, [r4, 0xA] + ldr r0, _080A9628 @ =gUnknown_83E4154 + movs r3, 0x24 + ldrsh r1, [r4, r3] + movs r3, 0x26 + ldrsh r2, [r4, r3] + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080A9642 + ldr r0, _080A962C @ =gSprites + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + strh r6, [r1, 0x2E] + movs r0, 0xD + strh r0, [r1, 0x30] + ldr r2, _080A9630 @ =gUnknown_83E416C + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0x24] + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r2, 0x1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A9642 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A9642 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080A9642 + .align 2, 0 +_080A9628: .4byte gUnknown_83E4154 +_080A962C: .4byte gSprites +_080A9630: .4byte gUnknown_83E416C +_080A9634: + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9642 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A9642: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A9508 + + thumb_func_start sub_80A9648 +sub_80A9648: @ 80A9648 + push {r4,lr} + adds r3, r0, 0 + ldr r4, _080A96B0 @ =gTasks + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r2, 0x1 + ldrb r1, [r0, 0x12] + ands r1, r2 + lsls r1, 2 + mov r0, r12 + ldrb r2, [r0] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A96AA + movs r0, 0x30 + ldrsh r1, [r3, r0] + lsls r1, 1 + movs r0, 0x2E + ldrsh r2, [r3, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x8 + adds r1, r0 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r3, 0 + bl DestroySprite +_080A96AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A96B0: .4byte gTasks + thumb_func_end sub_80A9648 + + thumb_func_start sub_80A96B4 +sub_80A96B4: @ 80A96B4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080A9750 @ =0x000027de + bl IndexOfSpritePaletteTag + mov r1, sp + strb r0, [r1] + movs r4, 0x1 + ldr r0, _080A9754 @ =0x00002710 + adds r5, r0, 0 +_080A96CC: + subs r0, r5, r4 + lsls r0, 16 + lsrs r0, 16 + bl AllocSpritePalette + mov r2, sp + adds r1, r2, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x2 + ble _080A96CC + movs r0, 0x80 + lsls r0, 6 + bl AllocZeroed + adds r1, r0, 0 + ldr r0, _080A9758 @ =gMonSpritesGfxPtr + ldr r0, [r0] + movs r2, 0xBE + lsls r2, 1 + adds r0, r2 + str r1, [r0] + ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette + bl LZDecompressWram + movs r4, 0 +_080A9700: + ldr r5, _080A9758 @ =gMonSpritesGfxPtr + ldr r0, [r5] + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + lsls r1, r4, 6 + ldr r0, [r0] + adds r0, r1 + mov r2, sp + adds r1, r2, r4 + ldrb r1, [r1] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl LoadPalette + adds r4, 0x1 + cmp r4, 0x2 + ble _080A9700 + ldr r0, [r5] + movs r4, 0xBE + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + bl Free + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + str r1, [r0] + adds r0, r6, 0 + bl DestroyAnimVisualTask + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9750: .4byte 0x000027de +_080A9754: .4byte 0x00002710 +_080A9758: .4byte gMonSpritesGfxPtr +_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette + thumb_func_end sub_80A96B4 + + thumb_func_start sub_80A9760 +sub_80A9760: @ 80A9760 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080A9784 @ =gUnknown_83E41C8 + movs r4, 0x2 +_080A976A: + ldrh r0, [r5] + bl FreeSpritePaletteByTag + adds r5, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080A976A + adds r0, r6, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9784: .4byte gUnknown_83E41C8 + thumb_func_end sub_80A9760 + + thumb_func_start sub_80A9788 +sub_80A9788: @ 80A9788 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsrs r3, r2, 24 + movs r0, 0x1 + ands r3, r0 + negs r0, r3 + orrs r0, r3 + asrs r0, 31 + movs r3, 0x20 + ands r0, r3 + ldrh r4, [r5, 0x4] + lsls r3, r4, 22 + lsrs r3, 22 + lsrs r1, 22 + adds r0, r1 + adds r3, r0 + ldr r1, _080A97DC @ =0x000003ff + adds r0, r1, 0 + ands r3, r0 + ldr r0, _080A97E0 @ =0xfffffc00 + ands r0, r4 + orrs r0, r3 + strh r0, [r5, 0x4] + ldr r0, _080A97E4 @ =gUnknown_83E41C8 + lsrs r2, 25 + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + bl IndexOfSpritePaletteTag + lsls r0, 4 + ldrb r2, [r5, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A97DC: .4byte 0x000003ff +_080A97E0: .4byte 0xfffffc00 +_080A97E4: .4byte gUnknown_83E41C8 + thumb_func_end sub_80A9788 + + thumb_func_start sub_80A97E8 +sub_80A97E8: @ 80A97E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r6, _080A9850 @ =gBattleAnimAttacker + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080A9808 + ldr r1, _080A9854 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A9808: + ldr r4, _080A9854 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldr r0, _080A9858 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A985C @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldrb r1, [r4, 0xA] + ldrb r2, [r4, 0xC] + adds r0, r5, 0 + bl sub_80A9788 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9850: .4byte gBattleAnimAttacker +_080A9854: .4byte gBattleAnimArgs +_080A9858: .4byte sub_8075590 +_080A985C: .4byte DestroyAnimSprite + thumb_func_end sub_80A97E8 + + thumb_func_start sub_80A9860 +sub_80A9860: @ 80A9860 + 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, 0x1 + bne _080A987A + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 +_080A987A: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x32] + lsls r0, r2, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x7 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + subs r2, 0x80 + strh r2, [r4, 0x32] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x3C + bne _080A98AA + adds r0, r4, 0 + bl DestroyAnimSprite +_080A98AA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9860 + + thumb_func_start sub_80A98B0 +sub_80A98B0: @ 80A98B0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8073788 + lsls r0, 24 + movs r6, 0xF0 + cmp r0, 0 + beq _080A98C4 + movs r6, 0x98 +_080A98C4: + movs r5, 0 + ldr r1, _080A9918 @ =gUnknown_2022984 + strh r6, [r1] + ldr r4, _080A991C @ =gUnknown_2022986 + movs r0, 0xA0 + strh r0, [r4] + ldrh r1, [r1] + movs r0, 0x40 + bl SetGpuReg + ldrh r1, [r4] + movs r0, 0x44 + bl SetGpuReg + ldr r1, _080A9920 @ =0x00003f1f + movs r0, 0x48 + bl SetGpuReg + ldr r1, _080A9924 @ =0x00003f3f + movs r0, 0x4A + bl SetGpuReg + movs r0, 0x50 + movs r1, 0xC8 + bl SetGpuReg + movs r0, 0x54 + movs r1, 0x10 + bl SetGpuReg + ldr r1, _080A9928 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + strh r6, [r0, 0xA] + ldr r1, _080A992C @ =sub_80A9930 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A9918: .4byte gUnknown_2022984 +_080A991C: .4byte gUnknown_2022986 +_080A9920: .4byte 0x00003f1f +_080A9924: .4byte 0x00003f3f +_080A9928: .4byte gTasks +_080A992C: .4byte sub_80A9930 + thumb_func_end sub_80A98B0 + + thumb_func_start sub_80A9930 +sub_80A9930: @ 80A9930 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A9964 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r3, r1, r2 + ldrh r0, [r3, 0x8] + adds r4, r0, 0 + adds r4, 0xD + strh r4, [r3, 0x8] + ldrh r0, [r3, 0xA] + adds r2, r0, 0 + subs r2, 0xD + strh r2, [r3, 0xA] + lsls r1, r4, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _080A9970 + ldr r0, _080A9968 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080A996C @ =sub_80A9984 + str r0, [r3] + b _080A9978 + .align 2, 0 +_080A9964: .4byte gTasks +_080A9968: .4byte gUnknown_2022984 +_080A996C: .4byte sub_80A9984 +_080A9970: + ldr r1, _080A9980 @ =gUnknown_2022984 + lsls r0, r4, 8 + orrs r2, r0 + strh r2, [r1] +_080A9978: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9980: .4byte gUnknown_2022984 + thumb_func_end sub_80A9930 + + thumb_func_start sub_80A9984 +sub_80A9984: @ 80A9984 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080A99D0 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + movs r4, 0 + strh r0, [r1, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080A99D8 + movs r0, 0x88 + strh r0, [r1, 0x1E] + movs r0, 0x50 + movs r1, 0x88 + bl SetGpuReg + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + ldr r2, _080A99D4 @ =0x00007fff + movs r1, 0x10 + bl BlendPalettes + b _080A9A0C + .align 2, 0 +_080A99D0: .4byte gTasks +_080A99D4: .4byte 0x00007fff +_080A99D8: + cmp r0, 0x4 + ble _080A9A0C + ldr r0, _080A9A14 @ =gUnknown_2022984 + strh r4, [r0] + ldr r0, _080A9A18 @ =gUnknown_2022986 + strh r4, [r0] + ldr r4, _080A9A1C @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl SetGpuReg + movs r0, 0x4A + adds r1, r4, 0 + bl SetGpuReg + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x54 + movs r1, 0 + bl SetGpuReg + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080A9A0C: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9A14: .4byte gUnknown_2022984 +_080A9A18: .4byte gUnknown_2022986 +_080A9A1C: .4byte 0x00003f3f + thumb_func_end sub_80A9984 + + thumb_func_start sub_80A9A20 +sub_80A9A20: @ 80A9A20 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9A70 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A9A7C + movs r0, 0x1 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A9A74 @ =gUnknown_83E4200 + adds r0, r5, 0 + bl sub_80762D0 + ldr r1, _080A9A78 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + movs r1, 0x4 + strh r1, [r0, 0x24] + b _080A9AA4 + .align 2, 0 +_080A9A70: .4byte gTasks +_080A9A74: .4byte gUnknown_83E4200 +_080A9A78: .4byte gSprites +_080A9A7C: + ldr r1, _080A9AAC @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + adds r0, r5, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A9AA4 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A9AA4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9AAC: .4byte gSprites + thumb_func_end sub_80A9A20 + + thumb_func_start sub_80A9AB0 +sub_80A9AB0: @ 80A9AB0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9B00 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A9B0C + movs r0, 0 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A9B04 @ =gUnknown_83E4200 + adds r0, r5, 0 + bl sub_80762D0 + ldr r1, _080A9B08 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + movs r1, 0x4 + strh r1, [r0, 0x24] + b _080A9B34 + .align 2, 0 +_080A9B00: .4byte gTasks +_080A9B04: .4byte gUnknown_83E4200 +_080A9B08: .4byte gSprites +_080A9B0C: + ldr r1, _080A9B3C @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + adds r0, r5, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A9B34 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080A9B34: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9B3C: .4byte gSprites + thumb_func_end sub_80A9AB0 + + thumb_func_start sub_80A9B40 +sub_80A9B40: @ 80A9B40 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x5F + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080A9B84 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080A9B88 @ =sub_80A9B8C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9B84: .4byte gBattleAnimTarget +_080A9B88: .4byte sub_80A9B8C + thumb_func_end sub_80A9B40 + + thumb_func_start sub_80A9B8C +sub_80A9B8C: @ 80A9B8C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A9BB6 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A9BBC +_080A9BB6: + adds r0, r4, 0 + bl DestroyAnimSprite +_080A9BBC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9B8C + + thumb_func_start sub_80A9BC4 +sub_80A9BC4: @ 80A9BC4 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9BE8 + ldr r1, _080A9BE4 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x32] + adds r0, r2, 0x1 + strh r0, [r4, 0x2E] + b _080A9C44 + .align 2, 0 +_080A9BE4: .4byte gBattleAnimArgs +_080A9BE8: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x64 + ble _080A9C36 + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A9C36: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _080A9C44 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A9C44: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9BC4 + + thumb_func_start sub_80A9C4C +sub_80A9C4C: @ 80A9C4C + push {lr} + ldr r2, _080A9C70 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x20] + movs r1, 0xA0 + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x2E] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x30] + ldr r1, _080A9C74 @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080A9C78 @ =sub_80A9C7C + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080A9C70: .4byte gBattleAnimArgs +_080A9C74: .4byte sub_8074C44 +_080A9C78: .4byte sub_80A9C7C + thumb_func_end sub_80A9C4C + + thumb_func_start sub_80A9C7C +sub_80A9C7C: @ 80A9C7C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + lsls r0, 16 + lsrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + lsls r0, 16 + asrs r5, r0, 16 + cmp r5, 0x48 + bgt _080A9CE2 + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + cmp r5, 0x40 + bgt _080A9CE2 + adds r0, r4, 0 + bl DestroyAnimSprite +_080A9CE2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A9C7C + + thumb_func_start sub_80A9CE8 +sub_80A9CE8: @ 80A9CE8 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A9DA0 @ =0x00003f42 + movs r0, 0x50 + bl SetGpuReg + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x3 + bl SetAnimBgAttribute + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl SetAnimBgAttribute + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9D2A + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl SetAnimBgAttribute +_080A9D2A: + ldr r0, _080A9DA4 @ =gBattle_BG1_X + movs r1, 0 + strh r1, [r0] + ldr r4, _080A9DA8 @ =gBattle_BG1_Y + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl SetGpuReg + ldrh r1, [r4] + movs r0, 0x16 + bl SetGpuReg + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9D88 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080A9D88: + ldr r0, _080A9DB8 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080A9DBC @ =sub_80A9DC0 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9DA0: .4byte 0x00003f42 +_080A9DA4: .4byte gBattle_BG1_X +_080A9DA8: .4byte gBattle_BG1_Y +_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap +_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet +_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette +_080A9DB8: .4byte gTasks +_080A9DBC: .4byte sub_80A9DC0 + thumb_func_end sub_80A9CE8 + + thumb_func_start sub_80A9DC0 +sub_80A9DC0: @ 80A9DC0 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9DE8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080A9DDE + b _080A9F08 +_080A9DDE: + lsls r0, 2 + ldr r1, _080A9DEC @ =_080A9DF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A9DE8: .4byte gTasks +_080A9DEC: .4byte _080A9DF0 + .align 2, 0 +_080A9DF0: + .4byte _080A9E04 + .4byte _080A9E48 + .4byte _080A9E6A + .4byte _080A9EAE + .4byte _080A9ED4 +_080A9E04: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A9F08 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A9F08 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080A9F08 +_080A9E48: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8D + bne _080A9F08 + movs r0, 0x10 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080A9F08 +_080A9E6A: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A9F08 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080A9F08 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080A9F08 +_080A9EAE: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + ldr r1, _080A9ED0 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x20] + adds r1, 0x1 + strh r1, [r0, 0x20] + b _080A9F08 + .align 2, 0 +_080A9ED0: .4byte gTasks +_080A9ED4: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9EE8 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl SetAnimBgAttribute +_080A9EE8: + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080A9F08: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A9DC0 + + thumb_func_start sub_80A9F10 +sub_80A9F10: @ 80A9F10 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A9F88 @ =0x00003f42 + movs r0, 0x50 + bl SetGpuReg + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl SetAnimBgAttribute + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9F52 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl SetAnimBgAttribute +_080A9F52: + ldr r0, _080A9F8C @ =gBattle_BG1_X + movs r1, 0 + strh r1, [r0] + ldr r4, _080A9F90 @ =gBattle_BG1_Y + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl SetGpuReg + ldrh r1, [r4] + movs r0, 0x16 + bl SetGpuReg + mov r0, sp + bl sub_80752A0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9F98 + ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap + ldr r1, [sp, 0x4] + bl LZDecompressVram + b _080A9FC6 + .align 2, 0 +_080A9F88: .4byte 0x00003f42 +_080A9F8C: .4byte gBattle_BG1_X +_080A9F90: .4byte gBattle_BG1_Y +_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap +_080A9F98: + ldr r0, _080A9FB4 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A9FBC + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap + bl sub_807543C + b _080A9FC6 + .align 2, 0 +_080A9FB4: .4byte gBattleAnimTarget +_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap +_080A9FBC: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap + bl sub_807543C +_080A9FC6: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9FFA + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080A9FFA: + ldr r0, _080AA01C @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080AA020 @ =sub_80AA024 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap +_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet +_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette +_080AA01C: .4byte gTasks +_080AA020: .4byte sub_80AA024 + thumb_func_end sub_80A9F10 + + thumb_func_start sub_80AA024 +sub_80AA024: @ 80AA024 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080AA04C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080AA042 + b _080AA168 +_080AA042: + lsls r0, 2 + ldr r1, _080AA050 @ =_080AA054 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AA04C: .4byte gTasks +_080AA050: .4byte _080AA054 + .align 2, 0 +_080AA054: + .4byte _080AA068 + .4byte _080AA0AC + .4byte _080AA0CE + .4byte _080AA112 + .4byte _080AA134 +_080AA068: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080AA168 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xE + bne _080AA168 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080AA168 +_080AA0AC: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080AA168 + movs r0, 0xE + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080AA168 +_080AA0CE: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080AA168 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AA168 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080AA168 +_080AA112: + mov r0, sp + bl sub_80752A0 + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldr r0, _080AA170 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] +_080AA134: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AA148 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl SetAnimBgAttribute +_080AA148: + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080AA168: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA170: .4byte gTasks + thumb_func_end sub_80AA024 + + thumb_func_start sub_80AA174 +sub_80AA174: @ 80AA174 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AA1C8 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080AA1CC @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrb r0, [r5] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x3C] + ldr r1, _080AA1D0 @ =sub_80AA1D4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA1C8: .4byte gBattleAnimAttacker +_080AA1CC: .4byte gBattleAnimArgs +_080AA1D0: .4byte sub_80AA1D4 + thumb_func_end sub_80AA174 + + thumb_func_start sub_80AA1D4 +sub_80AA1D4: @ 80AA1D4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080AA1EA + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + b _080AA1EE +_080AA1EA: + ldrh r0, [r4, 0x3C] + subs r0, 0x1 +_080AA1EE: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl Sin + strh r0, [r4, 0x24] + movs r2, 0x30 + ldrsh r0, [r4, r2] + ldrh r1, [r4, 0x34] + lsls r1, 16 + asrs r1, 24 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x9 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r3, 0x38 + ldrsh r2, [r4, r3] + cmp r2, 0 + beq _080AA260 + cmp r2, 0x1 + bne _080AA290 + ldr r1, _080AA258 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r4, 0x32] + adds r0, r2 + strh r0, [r4, 0x32] + ldr r3, _080AA25C @ =0xffffff00 + adds r0, r3, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x2E + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AA290 + movs r0, 0x2 + strh r0, [r4, 0x38] + b _080AA2A0 + .align 2, 0 +_080AA258: .4byte 0xfffffc00 +_080AA25C: .4byte 0xffffff00 +_080AA260: + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + movs r3, 0x80 + lsls r3, 1 + adds r0, r3, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x2E + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080AA290 + strh r2, [r4, 0x36] + movs r0, 0x1 + strh r0, [r4, 0x38] +_080AA290: + ldr r0, _080AA2A8 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080AA2AC @ =0x0000ffff + cmp r1, r0 + bne _080AA2A0 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA2A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA2A8: .4byte gBattleAnimArgs +_080AA2AC: .4byte 0x0000ffff + thumb_func_end sub_80AA1D4 + + thumb_func_start sub_80AA2B0 +sub_80AA2B0: @ 80AA2B0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080AA2F8 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080AA2FC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl Sin + strh r0, [r5, 0x2E] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x7 + bl Cos + strh r0, [r5, 0x30] + ldr r0, _080AA300 @ =sub_80AA304 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA2F8: .4byte gBattleAnimAttacker +_080AA2FC: .4byte gBattleAnimArgs +_080AA300: .4byte sub_80AA304 + thumb_func_end sub_80AA2B0 + + thumb_func_start sub_80AA304 +sub_80AA304: @ 80AA304 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] + movs r1, 0x20 + ldrsh r0, [r2, r1] + movs r3, 0x24 + ldrsh r1, [r2, r3] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080AA342 + movs r0, 0x22 + ldrsh r1, [r2, r0] + movs r3, 0x26 + ldrsh r0, [r2, r3] + adds r1, r0 + cmp r1, 0xA0 + bgt _080AA342 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AA348 +_080AA342: + adds r0, r2, 0 + bl DestroyAnimSprite +_080AA348: + pop {r0} + bx r0 + thumb_func_end sub_80AA304 + + thumb_func_start sub_80AA34C +sub_80AA34C: @ 80AA34C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r1, r0, 0x1 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _080AA378 + adds r0, r2, 0 + bl DestroyAnimSprite +_080AA378: + pop {r0} + bx r0 + thumb_func_end sub_80AA34C + + thumb_func_start sub_80AA37C +sub_80AA37C: @ 80AA37C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080AA3C8 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080AA3CC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl Sin + strh r0, [r5, 0x2E] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x7 + bl Cos + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x32] + ldr r0, _080AA3D0 @ =sub_80AA34C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA3C8: .4byte gBattleAnimAttacker +_080AA3CC: .4byte gBattleAnimArgs +_080AA3D0: .4byte sub_80AA34C + thumb_func_end sub_80AA37C + + thumb_func_start sub_80AA3D4 +sub_80AA3D4: @ 80AA3D4 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA3EA + adds r0, r2, 0 + bl DestroyAnimSprite +_080AA3EA: + pop {r0} + bx r0 + thumb_func_end sub_80AA3D4 + + thumb_func_start sub_80AA3F0 +sub_80AA3F0: @ 80AA3F0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080AA404 @ =sub_80AA3D4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA404: .4byte sub_80AA3D4 + thumb_func_end sub_80AA3F0 + + thumb_func_start sub_80AA408 +sub_80AA408: @ 80AA408 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA426 + ldr r0, _080AA498 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080AA426: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r5, r0, 1 + movs r0, 0xFF + ands r5, r0 + adds r0, r5, 0 + movs r1, 0x50 + bl Sin + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4F + bgt _080AA46A + adds r0, r5, 0 + movs r1, 0x50 + bl Cos + movs r2, 0x2E + ldrsh r1, [r4, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + lsls r0, 16 + asrs r0, 24 + adds r1, r0 + strh r1, [r4, 0x26] +_080AA46A: + movs r0, 0x2E + ldrsh r2, [r4, r0] + cmp r2, 0x5A + ble _080AA488 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r4, 0x24] + subs r0, r1 + strh r0, [r4, 0x24] +_080AA488: + cmp r2, 0x64 + ble _080AA492 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA492: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA498: .4byte gBattleAnimArgs + thumb_func_end sub_80AA408 + + thumb_func_start sub_80AA49C +sub_80AA49C: @ 80AA49C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080AA4F2 + adds r1, r0, 0 + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AA4F2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x1E + ble _080AA500 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA500: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA49C + + thumb_func_start sub_80AA508 +sub_80AA508: @ 80AA508 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA52C + ldr r1, _080AA528 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x32] + adds r0, r2, 0x1 + strh r0, [r4, 0x2E] + b _080AA580 + .align 2, 0 +_080AA528: .4byte gBattleAnimArgs +_080AA52C: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + movs r5, 0 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + adds r2, r0, 0 + strh r2, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x46 + ble _080AA580 + ldr r0, _080AA588 @ =sub_80AA49C + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r0, r2, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x24] + strh r5, [r4, 0x26] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB4 + bl __umodsi3 + strh r0, [r4, 0x34] +_080AA580: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA588: .4byte sub_80AA49C + thumb_func_end sub_80AA508 + + thumb_func_start sub_80AA58C +sub_80AA58C: @ 80AA58C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA5C6 + ldr r1, _080AA688 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnim + ldr r0, _080AA68C @ =gBattleAnimTarget + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r0, 0x1 + strh r0, [r4, 0x32] +_080AA5C6: + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r0, r2 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r1, r0, 2 + adds r0, r1, 0 + cmp r1, 0 + bge _080AA5DC + adds r0, 0xFF +_080AA5DC: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080AA5EE + movs r0, 0 + strh r0, [r4, 0x30] +_080AA5EE: + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080AA5FC + adds r0, 0x3 +_080AA5FC: + asrs r0, 2 + movs r1, 0x1E + subs r1, r0 + adds r0, r2, 0 + bl Cos + strh r0, [r4, 0x24] + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080AA618 + adds r0, 0x7 +_080AA618: + asrs r0, 3 + movs r1, 0xA + subs r1, r0 + adds r0, r2, 0 + bl Sin + strh r0, [r4, 0x26] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x80 + ble _080AA63C + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080AA63C + ldr r0, _080AA690 @ =0x0000ffff + strh r0, [r4, 0x32] +_080AA63C: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA650 + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _080AA650 + movs r0, 0x1 + strh r0, [r4, 0x32] +_080AA650: + ldrh r0, [r4, 0x34] + adds r1, r0, 0x1 + strh r1, [r4, 0x34] + subs r0, 0x9 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x46 + bls _080AA694 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080AA6A2 + .align 2, 0 +_080AA688: .4byte gBattleAnimArgs +_080AA68C: .4byte gBattleAnimTarget +_080AA690: .4byte 0x0000ffff +_080AA694: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080AA6A2: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x5A + ble _080AA6B0 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA6B0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA58C + + thumb_func_start sub_80AA6B8 +sub_80AA6B8: @ 80AA6B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA6EC + ldr r1, _080AA6E8 @ =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 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080AA700 + .align 2, 0 +_080AA6E8: .4byte gBattleAnimArgs +_080AA6EC: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA700 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA700: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA6B8 + + thumb_func_start sub_80AA708 +sub_80AA708: @ 80AA708 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _080AA720 @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AA724 + adds r0, r5, 0 + bl DestroyAnimSprite + b _080AA788 + .align 2, 0 +_080AA720: .4byte gBattleAnimArgs +_080AA724: + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AA734 + ldr r4, _080AA730 @ =gBattleAnimAttacker + b _080AA736 + .align 2, 0 +_080AA730: .4byte gBattleAnimAttacker +_080AA734: + ldr r4, _080AA764 @ =gBattleAnimTarget +_080AA736: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080AA768 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0 + bne _080AA76C + ldrh r0, [r5, 0x20] + adds r0, 0x20 + b _080AA770 + .align 2, 0 +_080AA764: .4byte gBattleAnimTarget +_080AA768: .4byte gBattleAnimArgs +_080AA76C: + ldrh r0, [r5, 0x20] + subs r0, 0x20 +_080AA770: + strh r0, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x2E] + ldrh r1, [r2, 0x2] + strh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + ldr r0, _080AA790 @ =sub_80AA794 + str r0, [r5, 0x1C] +_080AA788: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA790: .4byte sub_80AA794 + thumb_func_end sub_80AA708 + + thumb_func_start sub_80AA794 +sub_80AA794: @ 80AA794 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA7C4 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + cmp r0, 0 + beq _080AA7BE + ldrh r1, [r2, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl StartSpriteAnim + b _080AA7C4 +_080AA7BE: + adds r0, r2, 0 + bl DestroyAnimSprite +_080AA7C4: + pop {r0} + bx r0 + thumb_func_end sub_80AA794 + + thumb_func_start sub_80AA7C8 +sub_80AA7C8: @ 80AA7C8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080AA7FC @ =gBattleAnimArgs + ldrb r0, [r0] + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080AA800 @ =gTasks + adds r4, r0 + ldr r2, _080AA804 @ =gUnknown_83E4410 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080AA808 @ =sub_80AA80C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA7FC: .4byte gBattleAnimArgs +_080AA800: .4byte gTasks +_080AA804: .4byte gUnknown_83E4410 +_080AA808: .4byte sub_80AA80C + thumb_func_end sub_80AA7C8 + + thumb_func_start sub_80AA80C +sub_80AA80C: @ 80AA80C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AA834 @ =gTasks + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080AA82C + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080AA82C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA834: .4byte gTasks + thumb_func_end sub_80AA80C + + thumb_func_start sub_80AA838 +sub_80AA838: @ 80AA838 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080AA84C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AA854 + ldr r0, _080AA850 @ =gBattleAnimAttacker + b _080AA856 + .align 2, 0 +_080AA84C: .4byte gBattleAnimArgs +_080AA850: .4byte gBattleAnimAttacker +_080AA854: + ldr r0, _080AA8EC @ =gBattleAnimTarget +_080AA856: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AA870 + ldr r1, _080AA8F0 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080AA870: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r7, _080AA8F0 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r3, [r7, 0x2] + adds r0, r3 + movs r4, 0 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r7, 0x4] + adds r0, r1 + strh r0, [r5, 0x22] + strh r4, [r5, 0x2E] + ldrh r1, [r5, 0x20] + lsls r1, 3 + strh r1, [r5, 0x30] + lsls r0, 3 + strh r0, [r5, 0x32] + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 3 + cmp r0, 0 + bge _080AA8B0 + adds r0, 0x7 +_080AA8B0: + asrs r0, 3 + strh r0, [r5, 0x34] + movs r3, 0x4 + ldrsh r0, [r7, r3] + lsls r0, 3 + cmp r0, 0 + bge _080AA8C0 + adds r0, 0x7 +_080AA8C0: + asrs r0, 3 + strh r0, [r5, 0x36] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x6 + ldrsh r0, [r7, r3] + lsls r0, 4 + adds r1, r0 + ldr r3, _080AA8F4 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080AA8F8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080AA8FC @ =sub_80AA900 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AA8EC: .4byte gBattleAnimTarget +_080AA8F0: .4byte gBattleAnimArgs +_080AA8F4: .4byte 0x000003ff +_080AA8F8: .4byte 0xfffffc00 +_080AA8FC: .4byte sub_80AA900 + thumb_func_end sub_80AA838 + + thumb_func_start sub_80AA900 +sub_80AA900: @ 80AA900 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x30] + adds r0, r1 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r3, [r2, 0x32] + adds r1, r3 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 19 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AA934 + adds r0, r2, 0 + bl DestroyAnimSprite +_080AA934: + pop {r0} + bx r0 + thumb_func_end sub_80AA900 + + thumb_func_start sub_80AA938 +sub_80AA938: @ 80AA938 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA95A + ldr r0, _080AA994 @ =gBattleAnimArgs + ldrh r1, [r0] + movs r0, 0x78 + subs r0, r1 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080AA95A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AA978 + ldrb r0, [r4, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0 + bl sub_8075B48 +_080AA978: + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + adds r0, 0x50 + cmp r1, r0 + bne _080AA98C + adds r0, r4, 0 + bl DestroyAnimSprite +_080AA98C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA994: .4byte gBattleAnimArgs + thumb_func_end sub_80AA938 + + thumb_func_start sub_80AA998 +sub_80AA998: @ 80AA998 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AA9C6 + movs r5, 0x78 + strh r5, [r6, 0x20] + ldr r4, _080AAA48 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r4, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0xF + strh r0, [r6, 0x22] + ldrb r1, [r4, 0x2] + adds r0, r6, 0 + bl StartSpriteAnim + strh r5, [r6, 0x38] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x34] +_080AA9C6: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r6, 0x2E] + movs r1, 0x2E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r6, 0x30] + movs r2, 0x2E + ldrsh r0, [r6, r2] + lsls r4, r0, 1 + adds r4, r0 + ldrh r0, [r6, 0x34] + adds r4, r0 + movs r2, 0xFF + ldrh r0, [r6, 0x3A] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3A] + ands r4, r2 + adds r0, r4, 0 + movs r1, 0x64 + bl Cos + strh r0, [r6, 0x24] + adds r0, r4, 0 + movs r1, 0xA + bl Sin + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r1, 0x4 + bl Cos + ldrh r2, [r6, 0x30] + adds r4, r2 + adds r0, r4 + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x38 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080AAA42 + ldr r0, _080AAA4C @ =sub_80AAA50 + str r0, [r6, 0x1C] + strh r5, [r6, 0x2E] + adds r0, r6, 0 + bl oamt_add_pos2_onto_pos1 + movs r0, 0x5 + strh r0, [r6, 0x32] + strh r5, [r6, 0x36] + strh r5, [r6, 0x34] + adds r0, r6, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080AAA42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AAA48: .4byte gBattleAnimArgs +_080AAA4C: .4byte sub_80AAA50 + thumb_func_end sub_80AA998 + + thumb_func_start sub_80AAA50 +sub_80AAA50: @ 80AAA50 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _080AAA6A + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _080AAA70 @ =sub_80AAA74 + str r0, [r1, 0x1C] +_080AAA6A: + pop {r0} + bx r0 + .align 2, 0 +_080AAA70: .4byte sub_80AAA74 + thumb_func_end sub_80AAA50 + + thumb_func_start sub_80AAA74 +sub_80AAA74: @ 80AAA74 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + strh r0, [r4, 0x26] + adds r1, 0x1 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + ble _080AAA9E + lsls r0, r1, 16 + cmp r0, 0 + ble _080AAA9E + ldrh r0, [r4, 0x36] + subs r1, r0, 0x5 + strh r1, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x36] +_080AAA9E: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080AAAD0 + movs r2, 0x32 + ldrsh r1, [r4, r2] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, 0 + bl DestroyAnimSprite +_080AAAD0: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _080AAADE + adds r0, r4, 0 + bl DestroyAnimSprite +_080AAADE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AAA74 + + thumb_func_start sub_80AAAE4 +sub_80AAAE4: @ 80AAAE4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AAB28 @ =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AAB30 + ldr r4, _080AAB2C @ =gBattleAnimAttacker + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080AAB30 + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldrh r0, [r5, 0x22] + adds r0, 0x28 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080AAB50 + .align 2, 0 +_080AAB28: .4byte gBattleTypeFlags +_080AAB2C: .4byte gBattleAnimAttacker +_080AAB30: + ldr r4, _080AAB70 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 + strh r0, [r5, 0x22] +_080AAB50: + movs r0, 0xD + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + subs r0, 0x48 + strh r0, [r5, 0x36] + ldr r0, _080AAB74 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080AAB78 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AAB70: .4byte gBattleAnimAttacker +_080AAB74: .4byte sub_8075590 +_080AAB78: .4byte DestroyAnimSprite + thumb_func_end sub_80AAAE4 + + thumb_func_start sub_80AAB7C +sub_80AAB7C: @ 80AAB7C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080AAB98 @ =gBattleAnimArgs + ldr r1, _080AAB9C @ =gUnknown_2037EE4 + ldr r1, [r1] + ldrb r2, [r1, 0x10] + movs r1, 0x1 + ands r1, r2 + strh r1, [r3, 0xE] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080AAB98: .4byte gBattleAnimArgs +_080AAB9C: .4byte gUnknown_2037EE4 + thumb_func_end sub_80AAB7C + + thumb_func_start update_fury_cutter_counter_copy +update_fury_cutter_counter_copy: @ 80AABA0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AABB8 @ =gBattleAnimArgs + ldr r1, _080AABBC @ =gUnknown_2037EE4 + ldr r1, [r1] + ldrb r1, [r1, 0x10] + strh r1, [r2, 0xE] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080AABB8: .4byte gBattleAnimArgs +_080AABBC: .4byte gUnknown_2037EE4 + thumb_func_end update_fury_cutter_counter_copy + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/electric.s b/asm/electric.s new file mode 100644 index 000000000..187e30b6d --- /dev/null +++ b/asm/electric.s @@ -0,0 +1,2675 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80ADBEC +sub_80ADBEC: @ 80ADBEC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ADC0C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080ADC14 + ldr r0, _080ADC10 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080ADC20 + .align 2, 0 +_080ADC0C: .4byte gBattleAnimAttacker +_080ADC10: .4byte gBattleAnimArgs +_080ADC14: + ldr r1, _080ADC34 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_080ADC20: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080ADC38 @ =sub_80ADC3C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADC34: .4byte gBattleAnimArgs +_080ADC38: .4byte sub_80ADC3C + thumb_func_end sub_80ADBEC + + thumb_func_start sub_80ADC3C +sub_80ADC3C: @ 80ADC3C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080ADC52 + adds r0, r2, 0 + bl DestroyAnimSprite +_080ADC52: + pop {r0} + bx r0 + thumb_func_end sub_80ADC3C + + thumb_func_start sub_80ADC58 +sub_80ADC58: @ 80ADC58 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ADC78 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080ADC80 + ldr r0, _080ADC7C @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r0, [r0] + subs r1, r0 + strh r1, [r4, 0x20] + b _080ADC8A + .align 2, 0 +_080ADC78: .4byte gBattleAnimAttacker +_080ADC7C: .4byte gBattleAnimArgs +_080ADC80: + ldr r0, _080ADC94 @ =gBattleAnimArgs + ldrh r0, [r0] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_080ADC8A: + ldr r0, _080ADC98 @ =sub_80ADC9C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADC94: .4byte gBattleAnimArgs +_080ADC98: .4byte sub_80ADC9C + thumb_func_end sub_80ADC58 + + thumb_func_start sub_80ADC9C +sub_80ADC9C: @ 80ADC9C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080ADCB2 + adds r0, r2, 0 + bl move_anim_8074EE0 +_080ADCB2: + pop {r0} + bx r0 + thumb_func_end sub_80ADC9C + + thumb_func_start sub_80ADCB8 +sub_80ADCB8: @ 80ADCB8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080ADCFC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080ADD00 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080ADD08 + ldr r2, _080ADD04 @ =gBattleAnimArgs + ldrh r0, [r5, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r5, 0x22] + b _080ADD1C + .align 2, 0 +_080ADCFC: .4byte gBattleAnimTarget +_080ADD00: .4byte gBattleAnimAttacker +_080ADD04: .4byte gBattleAnimArgs +_080ADD08: + ldr r0, _080ADD40 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x20] + ldrh r1, [r0, 0x2] + ldrh r2, [r5, 0x22] + adds r1, r2 + strh r1, [r5, 0x22] + adds r2, r0, 0 +_080ADD1C: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x32] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080ADD44 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080ADD48 @ =sub_8074A80 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADD40: .4byte gBattleAnimArgs +_080ADD44: .4byte move_anim_8074EE0 +_080ADD48: .4byte sub_8074A80 + thumb_func_end sub_80ADCB8 + + thumb_func_start sub_80ADD4C +sub_80ADD4C: @ 80ADD4C + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080ADD64 @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080ADDC4 + cmp r0, 0x1 + bgt _080ADD68 + cmp r0, 0 + beq _080ADD72 + b _080ADDC4 + .align 2, 0 +_080ADD64: .4byte gBattleAnimArgs +_080ADD68: + cmp r0, 0x2 + beq _080ADD7C + cmp r0, 0x3 + beq _080ADDA0 + b _080ADDC4 +_080ADD72: + ldr r0, _080ADD78 @ =gBattleAnimAttacker + b _080ADDC6 + .align 2, 0 +_080ADD78: .4byte gBattleAnimAttacker +_080ADD7C: + ldr r4, _080ADD94 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r6, 0x2 + eors r0, r6 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080ADD98 + ldrb r4, [r4] + b _080ADDC8 + .align 2, 0 +_080ADD94: .4byte gBattleAnimAttacker +_080ADD98: + ldrb r0, [r4] + adds r4, r6, 0 + eors r4, r0 + b _080ADDC8 +_080ADDA0: + ldr r0, _080ADDBC @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080ADDC4 + ldr r0, _080ADDC0 @ =gBattleAnimTarget + ldrb r0, [r0] + eors r4, r0 + b _080ADDC8 + .align 2, 0 +_080ADDBC: .4byte gBattleAnimAttacker +_080ADDC0: .4byte gBattleAnimTarget +_080ADDC4: + ldr r0, _080ADDE8 @ =gBattleAnimTarget +_080ADDC6: + ldrb r4, [r0] +_080ADDC8: + ldr r0, _080ADDEC @ =gBattleAnimArgs + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080ADDF0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x1 + b _080ADE02 + .align 2, 0 +_080ADDE8: .4byte gBattleAnimTarget +_080ADDEC: .4byte gBattleAnimArgs +_080ADDF0: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x3 +_080ADE02: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r7, _080ADEA0 @ =gSineTable + ldr r6, _080ADEA4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, 0x40 + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x26] + ldrh r1, [r6, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ADE66 + adds r0, r4, 0 + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] +_080ADE66: + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r0, 0x4 + ldrsh r1, [r6, r0] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + ldr r3, _080ADEA8 @ =gOamMatrices + lsls r2, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + strh r1, [r2, 0x6] + strh r1, [r2] + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x2E] + ldr r0, _080ADEAC @ =sub_80B1D3C + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADEA0: .4byte gSineTable +_080ADEA4: .4byte gBattleAnimArgs +_080ADEA8: .4byte gOamMatrices +_080ADEAC: .4byte sub_80B1D3C + thumb_func_end sub_80ADD4C + + thumb_func_start sub_80ADEB0 +sub_80ADEB0: @ 80ADEB0 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080ADF24 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r6, _080ADF28 @ =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x3A] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x3C] + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080ADF2C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080ADF30 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r1, _080ADF34 @ =sub_80ADF38 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ADF24: .4byte gBattleAnimArgs +_080ADF28: .4byte gBattleAnimTarget +_080ADF2C: .4byte 0x000003ff +_080ADF30: .4byte 0xfffffc00 +_080ADF34: .4byte sub_80ADF38 + thumb_func_end sub_80ADEB0 + + thumb_func_start sub_80ADF38 +sub_80ADF38: @ 80ADF38 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080ADFA2 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080ADFA8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080ADFA8 +_080ADFA2: + adds r0, r4, 0 + bl DestroyAnimSprite +_080ADFA8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ADF38 + + thumb_func_start sub_80ADFB0 +sub_80ADFB0: @ 80ADFB0 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x38] + subs r0, 0x1 + strh r0, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080ADFE8 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x36] + strh r0, [r3, 0x38] +_080ADFE8: + ldrh r0, [r3, 0x34] + subs r1, r0, 0x1 + strh r1, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080ADFFA + adds r0, r3, 0 + bl DestroyAnimSprite +_080ADFFA: + pop {r0} + bx r0 + thumb_func_end sub_80ADFB0 + + thumb_func_start sub_80AE000 +sub_80AE000: @ 80AE000 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AE01C + ldr r0, _080AE060 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AE024 +_080AE01C: + ldr r1, _080AE064 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080AE024: + ldr r5, _080AE060 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AE064 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4] + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x36] + strh r0, [r6, 0x38] + ldr r0, _080AE068 @ =sub_80ADFB0 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE060: .4byte gBattleAnimTarget +_080AE064: .4byte gBattleAnimArgs +_080AE068: .4byte sub_80ADFB0 + thumb_func_end sub_80AE000 + + thumb_func_start sub_80AE06C +sub_80AE06C: @ 80AE06C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r1, _080AE088 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080AE090 + ldr r0, _080AE08C @ =gBattleAnimTarget + b _080AE092 + .align 2, 0 +_080AE088: .4byte gBattleAnimArgs +_080AE08C: .4byte gBattleAnimTarget +_080AE090: + ldr r0, _080AE118 @ =gBattleAnimAttacker +_080AE092: + ldrb r6, [r0] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AE0AA + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AE0B2 +_080AE0AA: + ldr r1, _080AE11C @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080AE0B2: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AE11C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r3, [r4] + adds r0, r3 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + ldr r0, _080AE120 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x3C] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080AE124 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080AE128 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r1, _080AE12C @ =sub_80AE130 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE118: .4byte gBattleAnimAttacker +_080AE11C: .4byte gBattleAnimArgs +_080AE120: .4byte 0x00007fff +_080AE124: .4byte 0x000003ff +_080AE128: .4byte 0xfffffc00 +_080AE12C: .4byte sub_80AE130 + thumb_func_end sub_80AE06C + + thumb_func_start sub_80AE130 +sub_80AE130: @ 80AE130 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080AE186 + 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] +_080AE186: + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080AE198 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AE198: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AE130 + + thumb_func_start sub_80AE1A0 +sub_80AE1A0: @ 80AE1A0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075114 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080AE1DC @ =gBattleAnimArgs + movs r5, 0x6 + ldrsh r0, [r3, r5] + lsls r0, 2 + adds r1, r0 + ldr r5, _080AE1E0 @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _080AE1E4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x6 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + bne _080AE1E8 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + b _080AE1F6 + .align 2, 0 +_080AE1DC: .4byte gBattleAnimArgs +_080AE1E0: .4byte 0x000003ff +_080AE1E4: .4byte 0xfffffc00 +_080AE1E8: + cmp r0, 0x2 + bne _080AE1FA + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x20 +_080AE1F6: + orrs r1, r0 + strb r1, [r4, 0x3] +_080AE1FA: + ldr r0, _080AE214 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080AE218 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080AE21C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE214: .4byte gBattleAnimArgs +_080AE218: .4byte sub_8074C44 +_080AE21C: .4byte DestroyAnimSprite + thumb_func_end sub_80AE1A0 + + thumb_func_start sub_80AE220 +sub_80AE220: @ 80AE220 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080AE268 @ =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + ldr r1, _080AE26C @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + ldr r5, _080AE270 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x8] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldr r0, _080AE274 @ =sub_80AE278 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE268: .4byte gBattleAnimTarget +_080AE26C: .4byte gTasks +_080AE270: .4byte gBattleAnimArgs +_080AE274: .4byte sub_80AE278 + thumb_func_end sub_80AE220 + + thumb_func_start sub_80AE278 +sub_80AE278: @ 80AE278 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r5, 0 + movs r7, 0 + ldr r1, _080AE2B8 @ =gTasks + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrb r2, [r0, 0xC] + str r2, [sp] + ldrh r4, [r0, 0x8] + ldrh r6, [r0, 0xA] + movs r3, 0xC + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0 + bne _080AE2BC + movs r0, 0 + mov r8, r0 + movs r2, 0x1 + movs r1, 0x10 + mov r12, r1 + b _080AE2C6 + .align 2, 0 +_080AE2B8: .4byte gTasks +_080AE2BC: + movs r2, 0x10 + mov r12, r2 + movs r3, 0x8 + mov r8, r3 + movs r2, 0x4 +_080AE2C6: + mov r0, r9 + lsls r1, r0, 2 + adds r0, r1, r0 + lsls r0, 3 + add r0, r10 + movs r3, 0x1C + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0xA + bhi _080AE3BC + lsls r0, 2 + ldr r1, _080AE2E4 @ =_080AE2E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AE2E4: .4byte _080AE2E8 + .align 2, 0 +_080AE2E8: + .4byte _080AE314 + .4byte _080AE3BC + .4byte _080AE328 + .4byte _080AE3BC + .4byte _080AE348 + .4byte _080AE3BC + .4byte _080AE35E + .4byte _080AE3BC + .4byte _080AE380 + .4byte _080AE3BC + .4byte _080AE3B4 +_080AE314: + ldr r0, _080AE324 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + mov r4, r12 + lsls r3, r4, 16 + b _080AE396 + .align 2, 0 +_080AE324: .4byte gUnknown_83E60A0 +_080AE328: + mov r0, r12 + lsls r3, r0, 17 + mov r1, r8 + adds r0, r1, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080AE344 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080AE396 + .align 2, 0 +_080AE344: .4byte gUnknown_83E60A0 +_080AE348: + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + lsls r3, r0, 1 + adds r3, r0 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _080AE38A +_080AE35E: + mov r0, r12 + lsls r3, r0, 18 + lsls r0, r2, 1 + adds r0, r2 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080AE37C @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080AE396 + .align 2, 0 +_080AE37C: .4byte gUnknown_83E60A0 +_080AE380: + mov r1, r12 + lsls r0, r1, 16 + asrs r0, 16 + lsls r3, r0, 2 + adds r3, r0 +_080AE38A: + ldr r0, _080AE3B0 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + lsls r3, 16 +_080AE396: + asrs r3, 16 + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _080AE3BC + .align 2, 0 +_080AE3B0: .4byte gUnknown_83E60A0 +_080AE3B4: + mov r0, r9 + bl DestroyAnimVisualTask + b _080AE400 +_080AE3BC: + cmp r7, 0 + beq _080AE3F0 + ldr r4, _080AE410 @ =gSprites + lsls r3, r5, 4 + adds r3, r5 + lsls r3, 2 + adds r0, r3, r4 + ldrh r5, [r0, 0x4] + lsls r2, r5, 22 + lsrs r2, 22 + add r2, r8 + ldr r6, _080AE414 @ =0x000003ff + adds r1, r6, 0 + ands r2, r1 + ldr r1, _080AE418 @ =0xfffffc00 + ands r1, r5 + orrs r1, r2 + strh r1, [r0, 0x4] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, 0x2E] + adds r4, 0x1C + adds r3, r4 + ldr r1, [r3] + bl _call_via_r1 +_080AE3F0: + ldr r0, _080AE41C @ =gTasks + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + strh r0, [r1, 0x1C] +_080AE400: + 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 +_080AE410: .4byte gSprites +_080AE414: .4byte 0x000003ff +_080AE418: .4byte 0xfffffc00 +_080AE41C: .4byte gTasks + thumb_func_end sub_80AE278 + + thumb_func_start sub_80AE420 +sub_80AE420: @ 80AE420 + push {lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080AE442 + ldrb r1, [r3, 0x1] + movs r2, 0x3F + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r2, r0 + strb r2, [r3, 0x3] + b _080AE456 +_080AE442: + ldrb r2, [r3, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r1, r0 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r3, 0x3] +_080AE456: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bne _080AE46A + adds r0, r3, 0 + bl DestroySprite +_080AE46A: + pop {r0} + bx r0 + thumb_func_end sub_80AE420 + + thumb_func_start sub_80AE470 +sub_80AE470: @ 80AE470 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080AE4D8 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + ldr r0, _080AE4DC @ =gUnknown_83E60B8 + adds r1, 0x20 + lsls r1, 16 + asrs r1, 16 + movs r7, 0x22 + ldrsh r2, [r4, r7] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080AE4E0 @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r6, r2, r3 + ldrh r5, [r6, 0x4] + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r7, _080AE4E4 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080AE4E8 @ =0xfffffc00 + ands r0, r5 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080AE4EC @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + adds r3, 0x1C + adds r2, r3 + ldr r0, _080AE4F0 @ =sub_80AE4F4 + str r0, [r2] + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE4D8: .4byte gBattleAnimArgs +_080AE4DC: .4byte gUnknown_83E60B8 +_080AE4E0: .4byte gSprites +_080AE4E4: .4byte 0x000003ff +_080AE4E8: .4byte 0xfffffc00 +_080AE4EC: .4byte gUnknown_2037EE2 +_080AE4F0: .4byte sub_80AE4F4 + thumb_func_end sub_80AE470 + + thumb_func_start sub_80AE4F4 +sub_80AE4F4: @ 80AE4F4 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080AE528 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080AE528: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080AE53C + adds r0, r3, 0 + bl DestroyAnimSprite +_080AE53C: + pop {r0} + bx r0 + thumb_func_end sub_80AE4F4 + + thumb_func_start sub_80AE540 +sub_80AE540: @ 80AE540 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AE560 @ =gTasks + adds r5, r1, r0 + ldr r0, _080AE564 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE56C + ldr r4, _080AE568 @ =gBattleAnimAttacker + b _080AE56E + .align 2, 0 +_080AE560: .4byte gTasks +_080AE564: .4byte gBattleAnimArgs +_080AE568: .4byte gBattleAnimAttacker +_080AE56C: + ldr r4, _080AE5B0 @ =gBattleAnimTarget +_080AE56E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x26] + ldr r2, _080AE5B4 @ =gBattleAnimArgs + ldrh r0, [r2, 0x2] + movs r1, 0 + strh r0, [r5, 0x14] + strh r1, [r5, 0x16] + strh r1, [r5, 0x18] + strh r1, [r5, 0x1A] + strh r1, [r5, 0x1C] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x1E] + strh r1, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x22] + ldr r0, _080AE5B8 @ =sub_80AE5BC + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE5B0: .4byte gBattleAnimTarget +_080AE5B4: .4byte gBattleAnimArgs +_080AE5B8: .4byte sub_80AE5BC + thumb_func_end sub_80AE540 + + thumb_func_start sub_80AE5BC +sub_80AE5BC: @ 80AE5BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r2, r6, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080AE6A4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AE6BC + ldrh r0, [r5, 0x20] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x22 + ldrsh r1, [r5, r2] + cmp r0, r1 + ble _080AE6CA + strh r7, [r5, 0x20] + ldr r0, _080AE6A8 @ =gUnknown_83E6120 + movs r3, 0x24 + ldrsh r1, [r5, r3] + movs r3, 0x26 + ldrsh r2, [r5, r3] + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080AE6CA + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _080AE6AC @ =gSprites + adds r4, r0 + ldr r1, _080AE6B0 @ =gUnknown_83E60D0 + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, 0x20] + adds r3, r0 + strh r3, [r4, 0x20] + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r4, 0x22] + adds r2, r0 + strh r2, [r4, 0x22] + movs r1, 0x18 + ldrsh r0, [r5, r1] + lsls r1, r0, 2 + adds r1, r0 + movs r0, 0x28 + subs r0, r1 + strh r0, [r4, 0x2E] + strh r3, [r4, 0x30] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + ldrh r0, [r5, 0x26] + strh r0, [r4, 0x36] + strh r6, [r4, 0x38] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080AE6B4 @ =sub_80AE704 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080AE6B8 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + strh r0, [r5, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080AE674 + strh r7, [r5, 0x1A] +_080AE674: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1E + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080AE696 + strh r7, [r5, 0x1C] + ldrh r1, [r5, 0x18] + movs r3, 0x18 + ldrsh r0, [r5, r3] + cmp r0, 0x5 + bgt _080AE696 + adds r0, r1, 0x1 + strh r0, [r5, 0x18] +_080AE696: + ldrh r0, [r5, 0x16] + adds r0, 0x1 + strh r0, [r5, 0x16] + ldrh r0, [r5, 0x14] + subs r0, 0x1 + strh r0, [r5, 0x14] + b _080AE6CA + .align 2, 0 +_080AE6A4: .4byte gTasks +_080AE6A8: .4byte gUnknown_83E6120 +_080AE6AC: .4byte gSprites +_080AE6B0: .4byte gUnknown_83E60D0 +_080AE6B4: .4byte sub_80AE704 +_080AE6B8: .4byte sub_8074F6C +_080AE6BC: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AE6CA + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080AE6CA: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AE5BC + + thumb_func_start sub_80AE6D0 +sub_80AE6D0: @ 80AE6D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AE6F8 + ldr r2, _080AE700 @ =gTasks + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x16] + subs r1, 0x1 + strh r1, [r0, 0x16] + adds r0, r4, 0 + bl DestroySprite +_080AE6F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE700: .4byte gTasks + thumb_func_end sub_80AE6D0 + + thumb_func_start sub_80AE704 +sub_80AE704: @ 80AE704 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r0, _080AE718 @ =sub_80AE6D0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE718: .4byte sub_80AE6D0 + thumb_func_end sub_80AE704 + + thumb_func_start sub_80AE71C +sub_80AE71C: @ 80AE71C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AE730 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE738 + ldr r4, _080AE734 @ =gBattleAnimAttacker + b _080AE73A + .align 2, 0 +_080AE730: .4byte gBattleAnimArgs +_080AE734: .4byte gBattleAnimAttacker +_080AE738: + ldr r4, _080AE768 @ =gBattleAnimTarget +_080AE73A: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080AE76C @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080AE770 @ =sub_8074F50 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE768: .4byte gBattleAnimTarget +_080AE76C: .4byte move_anim_8074EE0 +_080AE770: .4byte sub_8074F50 + thumb_func_end sub_80AE71C + + thumb_func_start sub_80AE774 +sub_80AE774: @ 80AE774 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AE788 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE790 + ldr r4, _080AE78C @ =gBattleAnimAttacker + b _080AE792 + .align 2, 0 +_080AE788: .4byte gBattleAnimArgs +_080AE78C: .4byte gBattleAnimAttacker +_080AE790: + ldr r4, _080AE7CC @ =gBattleAnimTarget +_080AE792: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080AE7D0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x24] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x26] + ldr r1, _080AE7D4 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _080AE7D8 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE7CC: .4byte gBattleAnimTarget +_080AE7D0: .4byte gBattleAnimArgs +_080AE7D4: .4byte DestroyAnimSprite +_080AE7D8: .4byte sub_8074F6C + thumb_func_end sub_80AE774 + + thumb_func_start sub_80AE7DC +sub_80AE7DC: @ 80AE7DC + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r4, _080AE834 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + movs r0, 0x10 + strh r0, [r5, 0x3C] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AE82A + movs r1, 0x3C + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x3C] +_080AE82A: + ldr r0, _080AE838 @ =sub_80AE83C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE834: .4byte gBattleAnimAttacker +_080AE838: .4byte sub_80AE83C + thumb_func_end sub_80AE7DC + + thumb_func_start sub_80AE83C +sub_80AE83C: @ 80AE83C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AE84E + cmp r0, 0x1 + beq _080AE864 + b _080AE894 +_080AE84E: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080AE894 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080AE894 +_080AE864: + ldrh r2, [r4, 0x3C] + ldrh r1, [r4, 0x20] + adds r0, r2, r1 + strh r0, [r4, 0x20] + ldr r3, _080AE89C @ =gSprites + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + adds r2, r1 + strh r2, [r0, 0x24] + ldrh r0, [r4, 0x20] + adds r0, 0x50 + lsls r0, 16 + movs r1, 0xC8 + lsls r1, 17 + cmp r0, r1 + bls _080AE894 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080AE894: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE89C: .4byte gSprites + thumb_func_end sub_80AE83C + + thumb_func_start sub_80AE8A0 +sub_80AE8A0: @ 80AE8A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080AE8C4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AE934 + cmp r0, 0x1 + bgt _080AE8C8 + cmp r0, 0 + beq _080AE8D4 + b _080AEA04 + .align 2, 0 +_080AE8C4: .4byte gTasks +_080AE8C8: + cmp r0, 0x2 + beq _080AE990 + cmp r0, 0x3 + bne _080AE8D2 + b _080AE9E4 +_080AE8D2: + b _080AEA04 +_080AE8D4: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x26] + ldr r4, _080AE908 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AE910 + ldr r0, _080AE90C @ =0x0000ffe0 + strh r0, [r5, 0x24] + movs r0, 0x2 + b _080AE916 + .align 2, 0 +_080AE908: .4byte gBattleAnimAttacker +_080AE90C: .4byte 0x0000ffe0 +_080AE910: + movs r0, 0x20 + strh r0, [r5, 0x24] + ldr r0, _080AE92C @ =0x0000fffe +_080AE916: + strh r0, [r5, 0x22] + ldr r2, _080AE930 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r5, 0x24] + strh r1, [r0, 0x24] + b _080AE9D6 + .align 2, 0 +_080AE92C: .4byte 0x0000fffe +_080AE930: .4byte gSprites +_080AE934: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AEA04 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r4, _080AE98C @ =gSprites + movs r1, 0x26 + ldrsh r0, [r5, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r5, 0x24] + movs r2, 0x24 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AE9D6 + ldrh r2, [r5, 0x22] + adds r2, r1, r2 + strh r2, [r5, 0x24] + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + b _080AEA04 + .align 2, 0 +_080AE98C: .4byte gSprites +_080AE990: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AEA04 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r1, _080AE9E0 @ =gSprites + movs r2, 0x26 + ldrsh r0, [r5, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080AEA04 +_080AE9D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AEA04 + .align 2, 0 +_080AE9E0: .4byte gSprites +_080AE9E4: + ldr r2, _080AEA0C @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080AEA04: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AEA0C: .4byte gSprites + thumb_func_end sub_80AE8A0 + + thumb_func_start sub_80AEA10 +sub_80AEA10: @ 80AEA10 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AEA34 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080AEA2A + b _080AEB50 +_080AEA2A: + cmp r0, 0x1 + bgt _080AEA38 + cmp r0, 0 + beq _080AEA40 + b _080AEB92 + .align 2, 0 +_080AEA34: .4byte gTasks +_080AEA38: + cmp r0, 0x2 + bne _080AEA3E + b _080AEB84 +_080AEA3E: + b _080AEB92 +_080AEA40: + ldr r4, _080AEA80 @ =gBattleAnimAttacker + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AEA56 + movs r1, 0x1 +_080AEA56: + movs r6, 0 + strh r1, [r5, 0xA] + ldr r0, _080AEA84 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r2, [r0, r1] + adds r3, r0, 0 + cmp r2, 0 + beq _080AEA8C + cmp r2, 0x4 + beq _080AEAB4 + ldrh r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AEAEC + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0xE] + ldr r0, _080AEA88 @ =0x0000fff0 + b _080AEAF4 + .align 2, 0 +_080AEA80: .4byte gBattleAnimAttacker +_080AEA84: .4byte gBattleAnimArgs +_080AEA88: .4byte 0x0000fff0 +_080AEA8C: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 7 + adds r0, 0x78 + strh r0, [r5, 0x10] + b _080AEB2A +_080AEAB4: + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r1, 7 + movs r0, 0x78 + subs r0, r1 + strh r0, [r5, 0xE] + ldr r4, _080AEAE8 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xA + ldrsh r1, [r5, r2] + lsls r1, 5 + subs r0, r1 + strh r0, [r5, 0x10] + b _080AEB2A + .align 2, 0 +_080AEAE8: .4byte gBattleAnimTarget +_080AEAEC: + ldr r0, _080AEB10 @ =0x0000fff0 + strh r0, [r5, 0xE] + movs r0, 0x80 + lsls r0, 1 +_080AEAF4: + strh r0, [r5, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080AEB14 + movs r2, 0 + ldrsh r0, [r3, r2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + movs r0, 0x50 + subs r0, r1 + strh r0, [r5, 0x12] + b _080AEB2A + .align 2, 0 +_080AEB10: .4byte 0x0000fff0 +_080AEB14: + movs r0, 0 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x28 + strh r0, [r5, 0x12] + ldrh r1, [r5, 0xE] + ldrh r0, [r5, 0x10] + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] +_080AEB2A: + movs r2, 0xE + ldrsh r1, [r5, r2] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _080AEB40 + movs r1, 0 + movs r0, 0x1 + strh r0, [r5, 0xA] + strh r1, [r5, 0x14] + b _080AEB7C +_080AEB40: + ldr r0, _080AEB4C @ =0x0000ffff + strh r0, [r5, 0xA] + movs r0, 0x3 + strh r0, [r5, 0x14] + b _080AEB7C + .align 2, 0 +_080AEB4C: .4byte 0x0000ffff +_080AEB50: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + cmp r0, 0 + ble _080AEB92 + movs r0, 0 + strh r0, [r5, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80AEB98 + lsls r0, 24 + cmp r0, 0 + bne _080AEB7C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80AEB98 + lsls r0, 24 + cmp r0, 0 + beq _080AEB92 +_080AEB7C: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AEB92 +_080AEB84: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AEB92 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080AEB92: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80AEA10 + + thumb_func_start sub_80AEB98 +sub_80AEB98: @ 80AEB98 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080AEC24 @ =gUnknown_83E6278 + movs r2, 0xE + ldrsh r1, [r4, r2] + movs r3, 0x12 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AEBCE + ldr r1, _080AEC28 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x3A] + movs r1, 0x7 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080AEBCE: + ldrh r1, [r4, 0xA] + ldrh r5, [r4, 0x14] + adds r0, r1, r5 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bge _080AEBE0 + movs r0, 0x3 + strh r0, [r4, 0x14] +_080AEBE0: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + ble _080AEBEC + movs r0, 0 + strh r0, [r4, 0x14] +_080AEBEC: + movs r3, 0xA + ldrsh r0, [r4, r3] + lsls r0, 4 + ldrh r5, [r4, 0xE] + adds r2, r0, r5 + strh r2, [r4, 0xE] + lsls r0, r1, 16 + asrs r3, r0, 16 + cmp r3, 0x1 + bne _080AEC0C + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x10 + ldrsh r1, [r4, r5] + cmp r0, r1 + bge _080AEC20 +_080AEC0C: + movs r0, 0x1 + negs r0, r0 + cmp r3, r0 + bne _080AEC2C + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x10 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _080AEC2C +_080AEC20: + movs r0, 0x1 + b _080AEC2E + .align 2, 0 +_080AEC24: .4byte gUnknown_83E6278 +_080AEC28: .4byte gSprites +_080AEC2C: + movs r0, 0 +_080AEC2E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80AEB98 + + thumb_func_start sub_80AEC34 +sub_80AEC34: @ 80AEC34 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080AEC74 + ldr r3, _080AEC7C @ =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 +_080AEC74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEC7C: .4byte gTasks + thumb_func_end sub_80AEC34 + + thumb_func_start sub_80AEC80 +sub_80AEC80: @ 80AEC80 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AEC92 + cmp r0, 0x1 + beq _080AECC4 + b _080AECD8 +_080AEC92: + ldr r4, _080AECC0 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080AECD8 + .align 2, 0 +_080AECC0: .4byte gBattleAnimAttacker +_080AECC4: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080AECD8 + adds r0, r5, 0 + bl move_anim_8074EE0 +_080AECD8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AEC80 + + thumb_func_start sub_80AECE0 +sub_80AECE0: @ 80AECE0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AED04 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080AECFA + b _080AEE6C +_080AECFA: + lsls r0, 2 + ldr r1, _080AED08 @ =_080AED0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AED04: .4byte gTasks +_080AED08: .4byte _080AED0C + .align 2, 0 +_080AED0C: + .4byte _080AED20 + .4byte _080AEDB0 + .4byte _080AEDEC + .4byte _080AEE48 + .4byte _080AEE58 +_080AED20: + ldr r4, _080AEDA4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + ldr r0, _080AEDA8 @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + movs r2, 0x1C + ldrsh r0, [r5, r2] + movs r2, 0x14 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x5 + bl __divsi3 + strh r0, [r5, 0x1A] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080AEDAC @ =0x0000ffff + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + subs r0, 0x4C + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x20] + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x24] + movs r1, 0x22 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + b _080AEE6A + .align 2, 0 +_080AEDA4: .4byte gBattleAnimAttacker +_080AEDA8: .4byte gBattleAnimTarget +_080AEDAC: .4byte 0x0000ffff +_080AEDB0: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + ble _080AEDE0 + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80AEE74 + lsls r0, 24 + cmp r0, 0 + beq _080AEDE0 + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bne _080AEDDA + movs r0, 0x3 + b _080AEDDE +_080AEDDA: + ldrh r0, [r5, 0x8] + adds r0, 0x1 +_080AEDDE: + strh r0, [r5, 0x8] +_080AEDE0: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEE6C + b _080AEE62 +_080AEDEC: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEDFA + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] +_080AEDFA: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + movs r3, 0 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080AEE6C + strh r3, [r5, 0xA] + ldrh r1, [r5, 0xC] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080AEE26 + movs r0, 0x4 + strh r0, [r5, 0x16] + movs r0, 0x44 + strh r0, [r5, 0x18] + strh r3, [r5, 0x10] + strh r2, [r5, 0x12] + b _080AEE36 +_080AEE26: + movs r0, 0x44 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080AEE44 @ =0x0000ffff + strh r0, [r5, 0x12] +_080AEE36: + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AEE68 + movs r0, 0x4 + b _080AEE6A + .align 2, 0 +_080AEE44: .4byte 0x0000ffff +_080AEE48: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AEE6C + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080AEE6C +_080AEE58: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEE68 +_080AEE62: + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] + b _080AEE6C +_080AEE68: + movs r0, 0x1 +_080AEE6A: + strh r0, [r5, 0x8] +_080AEE6C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AECE0 + + thumb_func_start sub_80AEE74 +sub_80AEE74: @ 80AEE74 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080AEF3C @ =gUnknown_83E62A8 + movs r2, 0x14 + ldrsh r1, [r4, r2] + movs r3, 0x16 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AEEE0 + ldr r1, _080AEF40 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldrh r6, [r4, 0x10] + adds r1, r6 + ldr r6, _080AEF44 @ =0x000003ff + adds r0, r6, 0 + ands r1, r0 + ldr r0, _080AEF48 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _080AEEC8 + movs r0, 0x7 + strh r0, [r4, 0x10] +_080AEEC8: + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x7 + ble _080AEED4 + movs r0, 0 + strh r0, [r4, 0x10] +_080AEED4: + strh r5, [r3, 0x3A] + movs r0, 0x3 + strh r0, [r3, 0x3C] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080AEEE0: + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080AEF02 + movs r5, 0x12 + ldrsh r0, [r4, r5] + cmp r0, 0 + ble _080AEF02 + ldrh r1, [r4, 0x26] + ldrh r6, [r4, 0x24] + adds r1, r6 + strh r1, [r4, 0x24] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x6F + bl PlaySE12WithPanning +_080AEF02: + movs r0, 0x12 + ldrsh r3, [r4, r0] + ldrh r2, [r4, 0x16] + cmp r3, 0 + bge _080AEF18 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x18 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _080AEF28 +_080AEF18: + cmp r3, 0 + ble _080AEF4C + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0x18 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080AEF4C +_080AEF28: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x1A] + ldrh r1, [r4, 0x14] + adds r0, r1 + strh r0, [r4, 0x14] + movs r0, 0x1 + b _080AEF58 + .align 2, 0 +_080AEF3C: .4byte gUnknown_83E62A8 +_080AEF40: .4byte gSprites +_080AEF44: .4byte 0x000003ff +_080AEF48: .4byte 0xfffffc00 +_080AEF4C: + movs r3, 0x12 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r2, r0 + strh r0, [r4, 0x16] + movs r0, 0 +_080AEF58: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80AEE74 + + thumb_func_start sub_80AEF60 +sub_80AEF60: @ 80AEF60 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080AEF96 + ldr r3, _080AEF9C @ =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 +_080AEF96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEF9C: .4byte gTasks + thumb_func_end sub_80AEF60 + + thumb_func_start sub_80AEFA0 +sub_80AEFA0: @ 80AEFA0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AEFC4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AF01C + cmp r0, 0x1 + bgt _080AEFC8 + cmp r0, 0 + beq _080AEFCE + b _080AF052 + .align 2, 0 +_080AEFC4: .4byte gTasks +_080AEFC8: + cmp r0, 0x2 + beq _080AF044 + b _080AF052 +_080AEFCE: + ldr r0, _080AF018 @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + cmp r0, 0x10 + ble _080AEFF8 + adds r2, r0, 0 +_080AEFE8: + adds r1, r2, 0 + subs r1, 0x20 + adds r2, r1, 0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x10 + bgt _080AEFE8 + strh r1, [r5, 0x24] +_080AEFF8: + ldr r4, _080AF018 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r5, 0x20] + b _080AF03C + .align 2, 0 +_080AF018: .4byte gBattleAnimTarget +_080AF01C: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AF052 + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80AF058 + lsls r0, 24 + cmp r0, 0 + beq _080AF052 +_080AF03C: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AF052 +_080AF044: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AF052 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080AF052: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AEFA0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fire.s b/asm/fire.s new file mode 100644 index 000000000..0fb8ea1c1 --- /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 @ =gUnknown_2023D44 + 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 gUnknown_2023D44 +_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. diff --git a/asm/water.s b/asm/water.s new file mode 100644 index 000000000..5518dd33e --- /dev/null +++ b/asm/water.s @@ -0,0 +1,3775 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80AABC0 +sub_80AABC0: @ 80AABC0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080AAC48 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AABE8 + ldr r1, _080AAC4C @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r5, 0xA] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0xC] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0xE] +_080AABE8: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r2, 0x8 + ldrsh r0, [r5, r2] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, 0x1 + bne _080AAC30 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x50 + bl __umodsi3 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080AAC50 @ =gUnknown_83E5898 + adds r1, r4, 0 + movs r3, 0x4 + bl CreateSprite +_080AAC30: + movs r0, 0x8 + ldrsh r1, [r5, r0] + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _080AAC42 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080AAC42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AAC48: .4byte gTasks +_080AAC4C: .4byte gBattleAnimArgs +_080AAC50: .4byte gUnknown_83E5898 + thumb_func_end sub_80AABC0 + + thumb_func_start sub_80AAC54 +sub_80AAC54: @ 80AAC54 + ldr r1, _080AAC5C @ =sub_80AAC60 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080AAC5C: .4byte sub_80AAC60 + thumb_func_end sub_80AAC54 + + thumb_func_start sub_80AAC60 +sub_80AAC60: @ 80AAC60 + 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, 0xD + bgt _080AAC7E + ldrh r0, [r2, 0x24] + adds r0, 0x1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x26] + adds r0, 0x4 + strh r0, [r2, 0x26] +_080AAC7E: + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AAC92 + adds r0, r2, 0 + bl DestroySprite +_080AAC92: + pop {r0} + bx r0 + thumb_func_end sub_80AAC60 + + thumb_func_start sub_80AAC98 +sub_80AAC98: @ 80AAC98 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080AACC0 @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AACC8 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080AACC4 @ =gBattleAnimArgs + ldrh r1, [r4] + subs r0, r1 + b _080AACDA + .align 2, 0 +_080AACC0: .4byte gBattleAnimAttacker +_080AACC4: .4byte gBattleAnimArgs +_080AACC8: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AADA0 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 +_080AACDA: + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r6, 0x22] + adds r2, r6, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AADA4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AAD10 + ldr r1, _080AADA0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080AAD10: + ldr r5, _080AADA0 @ =gBattleAnimArgs + ldrh r0, [r5, 0xC] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r4, _080AADA8 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080AADAC @ =SpriteCallbackDummy + bl CreateInvisibleSpriteWithCallback + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + strh r4, [r6, 0x38] + ldrb r0, [r5, 0x8] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl Sin + ldrh r1, [r6, 0x20] + subs r1, r0 + strh r1, [r6, 0x20] + ldrb r0, [r5, 0x8] + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl Cos + ldrh r1, [r6, 0x22] + subs r1, r0 + strh r1, [r6, 0x22] + ldr r0, _080AADB0 @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r5, 0x4] + strh r0, [r1, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r1, 0x32] + ldrb r0, [r5, 0x8] + lsls r0, 8 + strh r0, [r1, 0x34] + ldrh r0, [r5, 0xC] + strh r0, [r1, 0x36] + ldr r1, _080AADB4 @ =sub_80AADB8 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AADA0: .4byte gBattleAnimArgs +_080AADA4: .4byte gBattleAnimAttacker +_080AADA8: .4byte gBattleAnimTarget +_080AADAC: .4byte SpriteCallbackDummy +_080AADB0: .4byte gSprites +_080AADB4: .4byte sub_80AADB8 + thumb_func_end sub_80AAC98 + + thumb_func_start sub_80AADB8 +sub_80AADB8: @ 80AADB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r1, [r5, 0x38] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080AAE20 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r7, r0, r2 + ldrh r4, [r7, 0x36] + lsls r4, 24 + lsrs r4, 24 + ldrh r0, [r7, 0x34] + mov r8, r0 + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_80755E0 + mov r1, r8 + lsrs r6, r1, 8 + movs r0, 0x2E + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl Sin + ldrh r1, [r5, 0x24] + adds r0, r1 + strh r0, [r5, 0x24] + movs r0, 0x30 + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl Cos + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + ldrh r0, [r7, 0x32] + mov r1, r8 + adds r1, r0 + strh r1, [r7, 0x34] + subs r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0 + beq _080AAE24 + strh r4, [r7, 0x36] + b _080AAE2E + .align 2, 0 +_080AAE20: .4byte gSprites +_080AAE24: + ldr r0, _080AAE3C @ =sub_80AAE40 + str r0, [r5, 0x1C] + adds r0, r7, 0 + bl DestroySprite +_080AAE2E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AAE3C: .4byte sub_80AAE40 + thumb_func_end sub_80AADB8 + + thumb_func_start sub_80AAE40 +sub_80AAE40: @ 80AAE40 + push {lr} + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldr r1, _080AAE60 @ =sub_8074F6C + str r1, [r0, 0x1C] + ldr r1, _080AAE64 @ =sub_80AAE68 + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080AAE60: .4byte sub_8074F6C +_080AAE64: .4byte sub_80AAE68 + thumb_func_end sub_80AAE40 + + thumb_func_start sub_80AAE68 +sub_80AAE68: @ 80AAE68 + push {lr} + movs r1, 0xA + strh r1, [r0, 0x2E] + ldr r1, _080AAE7C @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080AAE80 @ =move_anim_8074EE0 + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080AAE7C: .4byte sub_8074C44 +_080AAE80: .4byte move_anim_8074EE0 + thumb_func_end sub_80AAE68 + + thumb_func_start sub_80AAE84 +sub_80AAE84: @ 80AAE84 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080AAEAC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AAEB4 + ldr r1, _080AAEB0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r7, r1, 0 + b _080AAEBA + .align 2, 0 +_080AAEAC: .4byte gBattleAnimAttacker +_080AAEB0: .4byte gBattleAnimArgs +_080AAEB4: + ldr r0, _080AAF10 @ =gBattleAnimArgs + ldrh r6, [r0, 0x4] + adds r7, r0, 0 +_080AAEBA: + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080AAF14 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + 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 + ldrh r7, [r7, 0x6] + adds r0, r7 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080AAF18 @ =sub_80AAF1C + str r0, [r5, 0x1C] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AAF10: .4byte gBattleAnimArgs +_080AAF14: .4byte gBattleAnimTarget +_080AAF18: .4byte sub_80AAF1C + thumb_func_end sub_80AAE84 + + thumb_func_start sub_80AAF1C +sub_80AAF1C: @ 80AAF1C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AAF58 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080AAF5C @ =0x0000ffff + cmp r1, r0 + bne _080AAF3E + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_080AAF3E: + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AAF50 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AAF50: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAF58: .4byte gBattleAnimArgs +_080AAF5C: .4byte 0x0000ffff + thumb_func_end sub_80AAF1C + + thumb_func_start sub_80AAF60 +sub_80AAF60: @ 80AAF60 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080AAF94 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r0, _080AAF98 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x8] + ldr r0, _080AAF9C @ =0x0000279c + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0xC] + ldr r0, _080AAFA0 @ =sub_80AAFA4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAF94: .4byte gTasks +_080AAF98: .4byte gBattleAnimArgs +_080AAF9C: .4byte 0x0000279c +_080AAFA0: .4byte sub_80AAFA4 + thumb_func_end sub_80AAF60 + + thumb_func_start sub_80AAFA4 +sub_80AAFA4: @ 80AAFA4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080AB01C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x1C] + adds r0, 0x1 + strh r0, [r2, 0x1C] + lsls r0, 16 + asrs r0, 16 + mov r12, r1 + cmp r0, 0x3 + bne _080AAFF6 + movs r0, 0 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r1, _080AB020 @ =gPlttBufferFaded + lsls r0, r5, 1 + adds r0, r1 + ldrh r6, [r0] + adds r7, r1, 0 + adds r3, r0, 0x2 + movs r1, 0x6 + adds r2, r0, 0 +_080AAFE0: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080AAFE0 + adds r0, r5, 0x7 + lsls r0, 1 + adds r0, r7 + strh r6, [r0] +_080AAFF6: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r12 + ldrh r1, [r0, 0x1E] + adds r1, 0x1 + strh r1, [r0, 0x1E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _080AB016 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080AB016: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB01C: .4byte gTasks +_080AB020: .4byte gPlttBufferFaded + thumb_func_end sub_80AAFA4 + + thumb_func_start sub_80AB024 +sub_80AB024: @ 80AB024 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080AB08C @ =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 + movs r0, 0x2E + ldrsh r1, [r5, r0] + movs r0, 0xD2 + lsls r0, 8 + bl __divsi3 + strh r0, [r5, 0x38] + ldr r0, _080AB090 @ =gBattleAnimArgs + ldrh r2, [r0, 0x6] + strh r2, [r5, 0x3C] + ldrh r1, [r0, 0xE] + movs r3, 0xE + ldrsh r0, [r0, r3] + cmp r0, 0x7F + ble _080AB094 + adds r0, r1, 0 + subs r0, 0x7F + lsls r0, 8 + strh r0, [r5, 0x3A] + negs r0, r2 + strh r0, [r5, 0x3C] + b _080AB098 + .align 2, 0 +_080AB08C: .4byte gBattleAnimTarget +_080AB090: .4byte gBattleAnimArgs +_080AB094: + lsls r0, r1, 8 + strh r0, [r5, 0x3A] +_080AB098: + ldr r1, _080AB0A8 @ =sub_80AB0AC + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AB0A8: .4byte sub_80AB0AC + thumb_func_end sub_80AB024 + + thumb_func_start sub_80AB0AC +sub_80AB0AC: @ 80AB0AC + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AB0C0 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AB0C0: + ldrh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + adds r0, r1 + asrs r0, 8 + cmp r0, 0x7F + ble _080AB0F0 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3C] + negs r0, r0 + strh r0, [r4, 0x3C] + b _080AB0F8 +_080AB0F0: + ldrh r0, [r4, 0x38] + ldrh r1, [r4, 0x3A] + adds r0, r1 + strh r0, [r4, 0x3A] +_080AB0F8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AB0AC + + thumb_func_start sub_80AB100 +sub_80AB100: @ 80AB100 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AB120 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r3, _080AB124 @ =gBattleAnimArgs + ldrh r0, [r3] + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r3, 0xE] + ldr r0, _080AB128 @ =sub_80AB12C + str r0, [r1] + bx lr + .align 2, 0 +_080AB120: .4byte gTasks +_080AB124: .4byte gBattleAnimArgs +_080AB128: .4byte sub_80AB12C + thumb_func_end sub_80AB100 + + thumb_func_start sub_80AB12C +sub_80AB12C: @ 80AB12C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080AB160 @ =gBattleAnimArgs + ldrh r0, [r2, 0xE] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0xE] + ldr r1, _080AB164 @ =gTasks + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080AB15A + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080AB15A: + pop {r0} + bx r0 + .align 2, 0 +_080AB160: .4byte gBattleAnimArgs +_080AB164: .4byte gTasks + thumb_func_end sub_80AB12C + + thumb_func_start sub_80AB168 +sub_80AB168: @ 80AB168 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r7, _080AB1B4 @ =gBattleAnimAttacker + ldrb r0, [r7] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r7] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r6, _080AB1B8 @ =0x0000fff6 + strh r6, [r4, 0x26] + ldrb r0, [r7] + bl sub_807685C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB1C2 + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AB1BC + movs r0, 0xA + strh r0, [r4, 0x24] + b _080AB1C4 + .align 2, 0 +_080AB1B4: .4byte gBattleAnimAttacker +_080AB1B8: .4byte 0x0000fff6 +_080AB1BC: + strh r6, [r4, 0x24] + subs r0, r5, 0x2 + b _080AB1C6 +_080AB1C2: + strh r6, [r4, 0x24] +_080AB1C4: + adds r0, r5, 0x2 +_080AB1C6: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r0, _080AB1D8 @ =sub_80AB1DC + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB1D8: .4byte sub_80AB1DC + thumb_func_end sub_80AB168 + + thumb_func_start sub_80AB1DC +sub_80AB1DC: @ 80AB1DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080AB1F2 + adds r0, r2, 0 + bl DestroyAnimSprite +_080AB1F2: + pop {r0} + bx r0 + thumb_func_end sub_80AB1DC + + thumb_func_start sub_80AB1F8 +sub_80AB1F8: @ 80AB1F8 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r5, _080AB2B8 @ =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + adds r4, r0, 0 + ldr r0, _080AB2BC @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080AB242 + ldr r4, _080AB2C0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] + ldrb r0, [r5] + bl GetBattlerPosition + lsls r0, 24 + cmp r0, 0 + beq _080AB23A + ldrb r0, [r5] + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AB242 +_080AB23A: + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] +_080AB242: + ldr r5, _080AB2C0 @ =gBattleAnimArgs + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _080AB256 + movs r1, 0x1 +_080AB256: + ldrb r0, [r5, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _080AB260 + movs r7, 0x3 +_080AB260: + adds r0, r6, 0 + bl sub_8075160 + ldr r0, _080AB2B8 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080AB27A + ldrh r0, [r5, 0x4] + negs r0, r0 + strh r0, [r5, 0x4] +_080AB27A: + ldrh r0, [r5, 0x8] + strh r0, [r6, 0x2E] + ldr r4, _080AB2BC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r6, 0x36] + ldr r0, _080AB2C4 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080AB2C8 @ =DestroyAnimSprite + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB2B8: .4byte gBattleAnimAttacker +_080AB2BC: .4byte gBattleAnimTarget +_080AB2C0: .4byte gBattleAnimArgs +_080AB2C4: .4byte sub_8075590 +_080AB2C8: .4byte DestroyAnimSprite + thumb_func_end sub_80AB1F8 + + thumb_func_start sub_80AB2CC +sub_80AB2CC: @ 80AB2CC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080AB2FC @ =gBattleAnimArgs + ldrh r1, [r0, 0x8] + strh r1, [r4, 0x2E] + ldrh r0, [r0, 0x4] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x36] + ldr r0, _080AB300 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080AB304 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB2FC: .4byte gBattleAnimArgs +_080AB300: .4byte sub_8075590 +_080AB304: .4byte DestroyAnimSprite + thumb_func_end sub_80AB2CC + + thumb_func_start sub_80AB308 +sub_80AB308: @ 80AB308 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AB320 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080AB324 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + b _080AB32C + .align 2, 0 +_080AB320: .4byte gBattleAnimArgs +_080AB324: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 +_080AB32C: + ldr r0, _080AB33C @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x3C] + ldr r0, _080AB340 @ =sub_80AB344 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB33C: .4byte gBattleAnimArgs +_080AB340: .4byte sub_80AB344 + thumb_func_end sub_80AB308 + + thumb_func_start sub_80AB344 +sub_80AB344: @ 80AB344 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x30 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080AB384 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AB384: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AB344 + + thumb_func_start sub_80AB38C +sub_80AB38C: @ 80AB38C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r1, _080AB3FC @ =0x00003f42 + movs r0, 0x50 + bl SetGpuReg + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + bl SetAnimBgAttribute + mov r0, sp + bl sub_80752A0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB418 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl SetAnimBgAttribute + ldr r0, _080AB400 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AB408 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap + bl sub_807543C + b _080AB42E + .align 2, 0 +_080AB3FC: .4byte 0x00003f42 +_080AB400: .4byte gBattleAnimAttacker +_080AB404: .4byte gFile_graphics_unknown_unknown_E81D14_tilemap +_080AB408: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap + bl sub_807543C + b _080AB42E + .align 2, 0 +_080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap +_080AB418: + ldr r0, _080AB458 @ =gFile_graphics_unknown_unknown_E822B8_tilemap + ldr r1, [sp, 0x4] + bl LZDecompressVram + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0x1 + bl sub_80730C0 +_080AB42E: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080AB460 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AB468 + ldr r0, _080AB464 @ =gFile_graphics_battle_anims_backgrounds_water_palette + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + b _080AB476 + .align 2, 0 +_080AB458: .4byte gFile_graphics_unknown_unknown_E822B8_tilemap +_080AB45C: .4byte gFile_graphics_battle_anims_backgrounds_water_sheet +_080AB460: .4byte gBattleAnimArgs +_080AB464: .4byte gFile_graphics_battle_anims_backgrounds_water_palette +_080AB468: + ldr r0, _080AB4E0 @ =gFile_graphics_battle_anims_backgrounds_water_muddy_palette + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette +_080AB476: + ldr r0, _080AB4E4 @ =sub_80AB79C + ldr r4, _080AB4E8 @ =gTasks + mov r2, r10 + lsls r5, r2, 2 + adds r1, r5, r2 + lsls r1, 3 + adds r6, r1, r4 + ldrb r1, [r6, 0x7] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0 + mov r9, r0 + mov r1, r8 + strh r1, [r6, 0x26] + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r7, r0, r4 + mov r0, r9 + strh r0, [r7, 0x8] + movs r0, 0x80 + lsls r0, 5 + strh r0, [r7, 0xA] + strh r0, [r7, 0xC] + bl sub_8073788 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080AB4F8 + ldr r1, _080AB4EC @ =0x0000ffb0 + adds r0, r1, 0 + ldr r2, _080AB4F0 @ =gBattle_BG1_X + strh r0, [r2] + adds r1, 0x20 + adds r0, r1, 0 + ldr r2, _080AB4F4 @ =gBattle_BG1_Y + strh r0, [r2] + movs r0, 0x2 + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + mov r0, r9 + strh r0, [r7, 0xE] + b _080AB552 + .align 2, 0 +_080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette +_080AB4E4: .4byte sub_80AB79C +_080AB4E8: .4byte gTasks +_080AB4EC: .4byte 0x0000ffb0 +_080AB4F0: .4byte gBattle_BG1_X +_080AB4F4: .4byte gBattle_BG1_Y +_080AB4F8: + ldr r0, _080AB528 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _080AB53C + ldr r2, _080AB52C @ =0x0000ff20 + adds r0, r2, 0 + ldr r2, _080AB530 @ =gBattle_BG1_X + strh r0, [r2] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldr r2, _080AB534 @ =gBattle_BG1_Y + strh r0, [r2] + movs r0, 0x2 + strh r0, [r6, 0x8] + ldr r0, _080AB538 @ =0x0000ffff + strh r0, [r6, 0xA] + strh r1, [r7, 0xE] + b _080AB552 + .align 2, 0 +_080AB528: .4byte gBattleAnimAttacker +_080AB52C: .4byte 0x0000ff20 +_080AB530: .4byte gBattle_BG1_X +_080AB534: .4byte gBattle_BG1_Y +_080AB538: .4byte 0x0000ffff +_080AB53C: + ldr r0, _080AB584 @ =gBattle_BG1_X + strh r4, [r0] + ldr r1, _080AB588 @ =0x0000ffd0 + adds r0, r1, 0 + ldr r2, _080AB58C @ =gBattle_BG1_Y + strh r0, [r2] + ldr r0, _080AB590 @ =0x0000fffe + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + strh r4, [r7, 0xE] +_080AB552: + ldr r0, _080AB584 @ =gBattle_BG1_X + ldrh r1, [r0] + movs r0, 0x14 + bl SetGpuReg + ldr r2, _080AB58C @ =gBattle_BG1_Y + ldrh r1, [r2] + movs r0, 0x16 + bl SetGpuReg + ldr r1, _080AB594 @ =gTasks + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AB598 + movs r0, 0x30 + strh r0, [r1, 0x10] + movs r0, 0x70 + b _080AB59C + .align 2, 0 +_080AB584: .4byte gBattle_BG1_X +_080AB588: .4byte 0x0000ffd0 +_080AB58C: .4byte gBattle_BG1_Y +_080AB590: .4byte 0x0000fffe +_080AB594: .4byte gTasks +_080AB598: + movs r0, 0 + strh r0, [r1, 0x10] +_080AB59C: + strh r0, [r1, 0x12] + ldr r1, _080AB5C0 @ =gTasks + mov r2, r10 + adds r0, r5, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x14] + ldr r1, _080AB5C4 @ =sub_80AB5C8 + str r1, [r0] + 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 +_080AB5C0: .4byte gTasks +_080AB5C4: .4byte sub_80AB5C8 + thumb_func_end sub_80AB38C + + thumb_func_start sub_80AB5C8 +sub_80AB5C8: @ 80AB5C8 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080AB6F4 @ =gBattle_BG1_X + ldr r2, _080AB6F8 @ =gBattle_BG1_Y + ldr r0, _080AB6FC @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x8] + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + ldrh r0, [r4, 0xA] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + mov r0, sp + bl sub_80752A0 + ldrh r0, [r4, 0xA] + ldrh r3, [r4, 0xC] + adds r0, r3 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080AB65C + ldr r1, _080AB700 @ =gPlttBufferFaded + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + adds r0, 0x7 + lsls r0, 1 + adds r0, r1 + ldrh r6, [r0] + movs r2, 0x6 + adds r7, r1, 0 + adds r3, r7, 0 + mov r4, sp +_080AB622: + ldrb r0, [r4, 0x8] + lsls r0, 4 + adds r1, r2, 0x1 + adds r0, r1 + lsls r1, r0, 1 + adds r1, r3 + subs r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + subs r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _080AB622 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + adds r0, 0x1 + lsls r0, 1 + adds r0, r7 + strh r6, [r0] + ldr r1, _080AB6FC @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0x12] +_080AB65C: + ldr r1, _080AB6FC @ =gTasks + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0x14] + adds r0, 0x1 + strh r0, [r3, 0x14] + lsls r0, 16 + asrs r0, 16 + adds r4, r1, 0 + adds r6, r2, 0 + cmp r0, 0x1 + ble _080AB6CA + movs r0, 0 + strh r0, [r3, 0x14] + ldrh r0, [r3, 0xE] + adds r2, r0, 0x1 + strh r2, [r3, 0xE] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xD + bgt _080AB6A6 + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] + ldrh r0, [r3, 0x10] + adds r0, 0x1 + strh r0, [r3, 0x10] +_080AB6A6: + movs r1, 0xE + ldrsh r0, [r3, r1] + cmp r0, 0x36 + ble _080AB6CA + ldrh r2, [r3, 0x10] + subs r2, 0x1 + strh r2, [r3, 0x10] + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] +_080AB6CA: + adds r0, r6, r5 + lsls r0, 3 + adds r2, r0, r4 + movs r3, 0x26 + ldrsh r1, [r2, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldrh r0, [r0, 0xA] + movs r3, 0x1F + ands r3, r0 + cmp r3, 0 + bne _080AB6EC + strh r3, [r2, 0x8] + ldr r0, _080AB704 @ =sub_80AB708 + str r0, [r2] +_080AB6EC: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB6F4: .4byte gBattle_BG1_X +_080AB6F8: .4byte gBattle_BG1_Y +_080AB6FC: .4byte gTasks +_080AB700: .4byte gPlttBufferFaded +_080AB704: .4byte sub_80AB708 + thumb_func_end sub_80AB5C8 + + thumb_func_start sub_80AB708 +sub_80AB708: @ 80AB708 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r7, _080AB740 @ =gBattle_BG1_X + ldr r0, _080AB744 @ =gBattle_BG1_Y + mov r8, r0 + ldr r6, _080AB748 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r6 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AB74C + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AB78E + .align 2, 0 +_080AB740: .4byte gBattle_BG1_X +_080AB744: .4byte gBattle_BG1_Y +_080AB748: .4byte gTasks +_080AB74C: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB760 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl SetAnimBgAttribute +_080AB760: + movs r0, 0 + strh r0, [r7] + mov r1, r8 + strh r0, [r1] + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r6 + ldr r1, _080AB798 @ =0x0000ffff + strh r1, [r0, 0x26] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080AB78E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB798: .4byte 0x0000ffff + thumb_func_end sub_80AB708 + + thumb_func_start sub_80AB79C +sub_80AB79C: @ 80AB79C + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080AB7C4 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080AB7B8 + b _080AB8F0 +_080AB7B8: + cmp r0, 0x1 + bgt _080AB7C8 + cmp r0, 0 + beq _080AB7D0 + b _080ABA66 + .align 2, 0 +_080AB7C4: .4byte gTasks +_080AB7C8: + cmp r0, 0x2 + bne _080AB7CE + b _080AB9BC +_080AB7CE: + b _080ABA66 +_080AB7D0: + movs r3, 0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers + mov r12, r1 + cmp r3, r0 + bge _080AB80E + mov r7, r12 + movs r5, 0xF0 + lsls r5, 3 + add r5, r12 + ldr r6, _080AB8A4 @ =0x0000ffff +_080AB7E8: + lsls r2, r3, 16 + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r7 + adds r1, r5 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r6, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080AB7E8 +_080AB80E: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080AB848 + ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080AB8A4 @ =0x0000ffff +_080AB826: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xA] + strh r0, [r1] + ldrh r1, [r4, 0xA] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080AB826 +_080AB848: + ldrh r3, [r4, 0x12] + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + bgt _080AB87E + ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080AB8A4 @ =0x0000ffff +_080AB85C: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + ble _080AB85C +_080AB87E: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AB8A8 + lsls r0, r3, 16 + asrs r0, 15 + mov r3, r12 + adds r2, r0, r3 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xA] + strh r1, [r0] + ldrh r0, [r4, 0xA] + b _080AB8BE + .align 2, 0 +_080AB8A0: .4byte gScanlineEffectRegBuffers +_080AB8A4: .4byte 0x0000ffff +_080AB8A8: + lsls r0, r3, 16 + asrs r0, 15 + mov r1, r12 + adds r2, r0, r1 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xC] + strh r1, [r0] + ldrh r0, [r4, 0xC] +_080AB8BE: + strh r0, [r2] + ldr r0, _080AB8E8 @ =0x04000052 + str r0, [sp] + ldr r0, _080AB8EC @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl ScanlineEffect_SetParams + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080ABA66 + .align 2, 0 +_080AB8E8: .4byte 0x04000052 +_080AB8EC: .4byte 0xa2600001 +_080AB8F0: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AB908 + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bgt _080AB91C + strh r1, [r4, 0x10] + b _080AB916 +_080AB908: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080AB91C +_080AB916: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080AB91C: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080AB950 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect +_080AB92A: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AB92A +_080AB950: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080AB984 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect +_080AB962: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080AB962 +_080AB984: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080ABA66 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect +_080AB992: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080AB992 + b _080ABA66 + .align 2, 0 +_080AB9B4: .4byte gScanlineEffectRegBuffers +_080AB9B8: .4byte gScanlineEffect +_080AB9BC: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080AB9F0 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect +_080AB9CA: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AB9CA +_080AB9F0: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080ABA24 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect +_080ABA02: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080ABA02 +_080ABA24: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080ABA50 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect +_080ABA32: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080ABA32 +_080ABA50: + movs r0, 0x26 + ldrsh r1, [r4, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ABA66 + bl ScanlineEffect_Stop + adds r0, r7, 0 + bl DestroyTask +_080ABA66: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ABA70: .4byte gScanlineEffectRegBuffers +_080ABA74: .4byte gScanlineEffect + thumb_func_end sub_80AB79C + + thumb_func_start sub_80ABA78 +sub_80ABA78: @ 80ABA78 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r3, _080ABACC @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080ABAD0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + 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, _080ABAD4 @ =0x000001ff + ands r1, r0 + adds r0, r1, 0 + cmp r0, 0xFF + ble _080ABABE + subs r0, r6, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_080ABABE: + strh r5, [r4, 0x30] + strh r1, [r4, 0x32] + ldr r0, _080ABAD8 @ =sub_80ABADC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ABACC: .4byte 0x000003ff +_080ABAD0: .4byte 0xfffffc00 +_080ABAD4: .4byte 0x000001ff +_080ABAD8: .4byte sub_80ABADC + thumb_func_end sub_80ABA78 + + thumb_func_start sub_80ABADC +sub_80ABADC: @ 80ABADC + 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 _080ABB00 + lsls r0, r3, 16 + asrs r0, 24 + negs r0, r0 + b _080ABB04 +_080ABB00: + lsls r0, r3, 16 + asrs r0, 24 +_080ABB04: + 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 _080ABB22 + adds r0, r2, 0 + bl DestroyAnimSprite +_080ABB22: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ABADC + + thumb_func_start sub_80ABB28 +sub_80ABB28: @ 80ABB28 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080ABB78 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r2, _080ABB7C @ =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, 0x12] + bl sub_80ABDC8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldr r0, _080ABB80 @ =sub_80ABB84 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ABB78: .4byte gTasks +_080ABB7C: .4byte gSprites +_080ABB80: .4byte sub_80ABB84 + thumb_func_end sub_80ABB28 + + thumb_func_start sub_80ABB84 +sub_80ABB84: @ 80ABB84 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080ABBAC @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bls _080ABBA0 + b _080ABDBE +_080ABBA0: + lsls r0, 2 + ldr r1, _080ABBB0 @ =_080ABBB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ABBAC: .4byte gTasks +_080ABBB0: .4byte _080ABBB4 + .align 2, 0 +_080ABBB4: + .4byte _080ABBD4 + .4byte _080ABBFA + .4byte _080ABC8C + .4byte _080ABCC2 + .4byte _080ABCD6 + .4byte _080ABCE4 + .4byte _080ABD64 + .4byte _080ABDB0 +_080ABBD4: + 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] +_080ABBFA: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ABC56 + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABC44 + ldr r2, _080ABC40 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strh r1, [r0, 0x24] + 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] + b _080ABC56 + .align 2, 0 +_080ABC40: .4byte gSprites +_080ABC44: + ldr r2, _080ABC84 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080ABC88 @ =0x0000fffd + strh r1, [r0, 0x24] +_080ABC56: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080ABC66 + b _080ABDBE +_080ABC66: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldr r2, _080ABC84 @ =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, 0xE] + b _080ABDA0 + .align 2, 0 +_080ABC84: .4byte gSprites +_080ABC88: .4byte 0x0000fffd +_080ABC8C: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080ABC9C + b _080ABDBE +_080ABC9C: + 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, 0xE0 + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 + movs r0, 0 + strh r0, [r4, 0xE] + b _080ABDA2 +_080ABCC2: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080ABDBE + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080ABDA2 +_080ABCD6: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80ABE4C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080ABCE4: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ABDBE + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABD1C + ldr r2, _080ABD18 @ =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, 0x2 + b _080ABD2E + .align 2, 0 +_080ABD18: .4byte gSprites +_080ABD1C: + ldr r2, _080ABD60 @ =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, 0x2 +_080ABD2E: + strh r1, [r0, 0x26] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080ABDBE + 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, 0xE0 + bl sub_80765D4 + movs r0, 0 + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080ABDA2 + .align 2, 0 +_080ABD60: .4byte gSprites +_080ABD64: + ldr r6, _080ABDAC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080ABDBE + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0x12] + strh r1, [r0, 0x22] +_080ABDA0: + strh r5, [r4, 0x10] +_080ABDA2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080ABDBE + .align 2, 0 +_080ABDAC: .4byte gSprites +_080ABDB0: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080ABDBE + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080ABDBE: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80ABB84 + + thumb_func_start sub_80ABDC8 +sub_80ABDC8: @ 80ABDC8 + push {r4,r5,lr} + ldr r4, _080ABDEC @ =gBattleAnimAttacker + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080ABDFC + ldr r1, _080ABDF0 @ =gBattlerPartyIndexes + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080ABDF4 @ =gPlayerParty + b _080ABE0C + .align 2, 0 +_080ABDEC: .4byte gBattleAnimAttacker +_080ABDF0: .4byte gBattlerPartyIndexes +_080ABDF4: .4byte gPlayerParty +_080ABDF8: + adds r0, r2, 0 + b _080ABE3E +_080ABDFC: + ldr r1, _080ABE44 @ =gBattlerPartyIndexes + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080ABE48 @ =gEnemyParty +_080ABE0C: + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x3A + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + adds r0, r5, 0 + movs r1, 0x39 + bl GetMonData + lsls r0, 16 + lsrs r3, r0, 16 + lsrs r4, 18 + movs r2, 0 +_080ABE2A: + adds r1, r2, 0x1 + adds r0, r4, 0 + muls r0, r1 + cmp r3, r0 + blt _080ABDF8 + lsls r0, r1, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _080ABE2A + movs r0, 0x3 +_080ABE3E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080ABE44: .4byte gBattlerPartyIndexes +_080ABE48: .4byte gEnemyParty + thumb_func_end sub_80ABDC8 + + thumb_func_start sub_80ABE4C +sub_80ABE4C: @ 80ABE4C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + ldr r4, _080ABF54 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0xAC + ldrb r0, [r4] + bl sub_807685C + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + ldrh r1, [r7, 0xA] + movs r0, 0x4 + subs r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r0, 0 + bgt _080ABE9C + movs r1, 0x1 +_080ABE9C: + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r1, 16 + mov r10, r8 + mov r9, r6 + mov r1, r10 + lsls r1, 4 + str r1, [sp, 0xC] + mov r1, r9 + lsls r1, 4 + str r1, [sp, 0x10] + asrs r0, 16 + mov r8, r0 +_080ABEB6: + ldr r0, _080ABF58 @ =gUnknown_83E5AE0 + mov r1, r10 + mov r2, r9 + ldr r3, [sp, 0x8] + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + lsls r6, r5, 16 + cmp r2, 0x40 + beq _080ABF1E + ldr r1, _080ABF5C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r1 + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x30] + mov r1, sp + ldrh r1, [r1, 0xC] + strh r1, [r5, 0x32] + mov r0, sp + ldrh r0, [r0, 0x10] + strh r0, [r5, 0x34] + asrs r4, r6, 16 + adds r0, r4, 0 + movs r1, 0x40 + bl Cos + strh r0, [r5, 0x36] + adds r0, r4, 0 + movs r1, 0x40 + bl Sin + strh r0, [r5, 0x38] + mov r1, sp + ldrh r1, [r1] + strh r1, [r5, 0x3A] + movs r0, 0x2 + strh r0, [r5, 0x3C] + ldrh r1, [r7, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABF18 + adds r0, r5, 0 + bl sub_80ABF60 +_080ABF18: + ldrh r0, [r7, 0xC] + adds r0, 0x1 + strh r0, [r7, 0xC] +_080ABF1E: + mov r1, r8 + lsls r0, r1, 1 + asrs r1, r6, 16 + adds r1, r0 + lsls r1, 16 + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r5, r0, 16 + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + asrs r0, 16 + add r0, r8 + lsls r0, 16 + lsrs r1, r0, 16 + str r1, [sp, 0x4] + asrs r0, 16 + cmp r0, 0x13 + ble _080ABEB6 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ABF54: .4byte gBattleAnimAttacker +_080ABF58: .4byte gUnknown_83E5AE0 +_080ABF5C: .4byte gSprites + thumb_func_end sub_80ABE4C + + thumb_func_start sub_80ABF60 +sub_80ABF60: @ 80ABF60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ABF72 + cmp r0, 0x1 + beq _080ABFA8 + b _080AC002 +_080ABF72: + movs r2, 0x30 + ldrsh r0, [r4, r2] + movs r1, 0x6 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r0, [r4, 0x36] + adds r1, r0 + strh r1, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080ABFA8: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r2, r1, 20 + strh r2, [r4, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080ABFDE + adds r1, r2, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080ABFDE + cmp r1, 0x78 + ble _080AC002 +_080ABFDE: + ldr r3, _080AC008 @ =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 +_080AC002: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC008: .4byte gTasks + thumb_func_end sub_80ABF60 + + thumb_func_start sub_80AC00C +sub_80AC00C: @ 80AC00C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AC03C @ =gTasks + adds r4, r1, r0 + bl sub_80ABDC8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldr r0, _080AC040 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080AC044 + movs r0, 0x88 + strh r0, [r4, 0x10] + movs r0, 0x28 + b _080AC04A + .align 2, 0 +_080AC03C: .4byte gTasks +_080AC040: .4byte gBattleAnimAttacker +_080AC044: + movs r0, 0x10 + strh r0, [r4, 0x10] + movs r0, 0x50 +_080AC04A: + strh r0, [r4, 0x14] + movs r0, 0x62 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r0, 0x31 + strh r0, [r4, 0x16] + movs r0, 0xA + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + adds r0, 0x5 + strh r0, [r4, 0x20] + ldr r0, _080AC06C @ =sub_80AC070 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC06C: .4byte sub_80AC070 + thumb_func_end sub_80AC00C + + thumb_func_start sub_80AC070 +sub_80AC070: @ 80AC070 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r7, _080AC094 @ =gTasks + adds r4, r0, r7 + movs r0, 0x8 + ldrsh r2, [r4, r0] + cmp r2, 0 + beq _080AC098 + cmp r2, 0x1 + beq _080AC148 + b _080AC156 + .align 2, 0 +_080AC094: .4byte gTasks +_080AC098: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AC0AE + strh r2, [r4, 0xC] + adds r0, r4, 0 + bl sub_80AC160 +_080AC0AE: + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AC128 + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AC128 + ldr r5, _080AC13C @ =gBattleAnimArgs + movs r1, 0x1 + mov r8, r1 + mov r2, r8 + strh r2, [r5] + strh r0, [r5, 0x2] + movs r0, 0xC + strh r0, [r5, 0x4] + ldr r6, _080AC140 @ =sub_80B94B4 + adds r0, r6, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080AC0F8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080AC0F8: + movs r0, 0x3 + strh r0, [r5] + adds r0, r6, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080AC124 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080AC124: + mov r0, r8 + strh r0, [r4, 0x22] +_080AC128: + movs r2, 0x1E + ldrsh r1, [r4, r2] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AC156 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AC156 + .align 2, 0 +_080AC13C: .4byte gBattleAnimArgs +_080AC140: .4byte sub_80B94B4 +_080AC144: .4byte gUnknown_2037EE2 +_080AC148: + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AC156 + adds r0, r1, 0 + bl DestroyAnimVisualTask +_080AC156: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AC070 + + thumb_func_start sub_80AC160 +sub_80AC160: @ 80AC160 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _080AC1EC @ =gSineTable + movs r2, 0x18 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, 0x3 + asrs r0, 4 + ldrh r2, [r4, 0x14] + adds r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080AC1F0 @ =gUnknown_83E5AE0 + movs r2, 0x16 + ldrsh r1, [r4, r2] + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080AC1BA + ldr r3, _080AC1F4 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080AC1F8 @ =sub_80AC204 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x38] + strh r6, [r0, 0x3A] + movs r1, 0x9 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] +_080AC1BA: + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x18] + adds r0, 0x27 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x18] + movs r0, 0x16 + ldrsh r1, [r4, r0] + ldr r0, _080AC1FC @ =0x41c64e6d + muls r0, r1 + ldr r1, _080AC200 @ =0x00003039 + adds r0, r1 + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r4, 0x10] + adds r1, r0 + strh r1, [r4, 0x16] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC1EC: .4byte gSineTable +_080AC1F0: .4byte gUnknown_83E5AE0 +_080AC1F4: .4byte gSprites +_080AC1F8: .4byte sub_80AC204 +_080AC1FC: .4byte 0x41c64e6d +_080AC200: .4byte 0x00003039 + thumb_func_end sub_80AC160 + + thumb_func_start sub_80AC204 +sub_80AC204: @ 80AC204 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AC29A + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x38 + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080AC29A + ldr r2, _080AC2A0 @ =gTasks + movs r3, 0x3A + ldrsh r1, [r5, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1 + strh r1, [r0, 0x1C] + ldr r0, _080AC2A4 @ =gUnknown_83E7C38 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + movs r3, 0x1 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x30] + cmp r0, 0x40 + beq _080AC294 + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080AC2A8 @ =gSprites + adds r0, r4 + movs r1, 0x3 + bl StartSpriteAffineAnim + movs r2, 0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3A] + strh r1, [r0, 0x3A] + movs r3, 0x30 + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3C] + strh r1, [r0, 0x3C] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080AC2AC @ =sub_80AC2B0 + str r1, [r0] +_080AC294: + adds r0, r5, 0 + bl DestroySprite +_080AC29A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC2A0: .4byte gTasks +_080AC2A4: .4byte gUnknown_83E7C38 +_080AC2A8: .4byte gSprites +_080AC2AC: .4byte sub_80AC2B0 + thumb_func_end sub_80AC204 + + thumb_func_start sub_80AC2B0 +sub_80AC2B0: @ 80AC2B0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AC31C + movs r0, 0 + strh r0, [r4, 0x30] + 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] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080AC31C + ldr r3, _080AC324 @ =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 +_080AC31C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC324: .4byte gTasks + thumb_func_end sub_80AC2B0 + + thumb_func_start sub_80AC328 +sub_80AC328: @ 80AC328 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AC3AC @ =gTasks + adds r5, r1, r0 + ldr r4, _080AC3B0 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AC36C + movs r1, 0x1 +_080AC36C: + strh r1, [r5, 0x16] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080AC380 + movs r1, 0x16 + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x16] +_080AC380: + movs r2, 0x16 + ldrsh r0, [r5, r2] + lsls r0, 3 + ldrh r1, [r5, 0xE] + adds r0, r1 + strh r0, [r5, 0x12] + movs r2, 0x16 + ldrsh r1, [r5, r2] + lsls r1, 3 + ldrh r0, [r5, 0x10] + subs r0, r1 + strh r0, [r5, 0x14] + ldr r0, _080AC3B4 @ =0x0000ffe0 + strh r0, [r5, 0x1A] + strh r6, [r5, 0xA] + strh r6, [r5, 0x8] + ldr r0, _080AC3B8 @ =sub_80AC3BC + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC3AC: .4byte gTasks +_080AC3B0: .4byte gBattleAnimAttacker +_080AC3B4: .4byte 0x0000ffe0 +_080AC3B8: .4byte sub_80AC3BC + thumb_func_end sub_80AC328 + + thumb_func_start sub_80AC3BC +sub_80AC3BC: @ 80AC3BC + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AC3E0 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080AC3D6 + b _080AC4F6 +_080AC3D6: + lsls r0, 2 + ldr r1, _080AC3E4 @ =_080AC3E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AC3E0: .4byte gTasks +_080AC3E4: .4byte _080AC3E8 + .align 2, 0 +_080AC3E8: + .4byte _080AC404 + .4byte _080AC414 + .4byte _080AC42E + .4byte _080AC470 + .4byte _080AC492 + .4byte _080AC4C0 + .4byte _080AC4E6 +_080AC404: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AC4FC + b _080AC4EE +_080AC414: + adds r0, r4, 0 + bl sub_80AC504 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AC4FC + movs r0, 0 + strh r0, [r4, 0xA] + b _080AC4EE +_080AC42E: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + adds r1, r0 + movs r2, 0 + strh r1, [r4, 0x12] + adds r1, 0x10 + lsls r1, 16 + movs r0, 0x88 + lsls r0, 17 + cmp r1, r0 + bls _080AC4FC + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AC46C + movs r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x6 + strh r0, [r4, 0x8] + strh r2, [r4, 0xA] + b _080AC4FC +_080AC46C: + strh r2, [r4, 0xA] + b _080AC4EE +_080AC470: + adds r0, r4, 0 + bl sub_80AC504 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080AC4FC + b _080AC4EE +_080AC492: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x12] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bls _080AC4FC + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0xA] + b _080AC4EE +_080AC4C0: + adds r0, r4, 0 + bl sub_80AC504 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080AC4FC + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080AC4FC +_080AC4E6: + movs r1, 0x18 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AC4FC +_080AC4EE: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AC4FC +_080AC4F6: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080AC4FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC3BC + + thumb_func_start sub_80AC504 +sub_80AC504: @ 80AC504 + push {r4-r6,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AC55E + movs r0, 0 + strh r0, [r6, 0xC] + ldr r0, _080AC564 @ =gUnknown_83E5AE0 + movs r2, 0xE + ldrsh r1, [r6, r2] + movs r3, 0x10 + ldrsh r2, [r6, r3] + movs r3, 0xA + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080AC55E + ldr r5, _080AC568 @ =gSprites + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + movs r1, 0x10 + strh r1, [r0, 0x2E] + ldrh r1, [r6, 0x12] + strh r1, [r0, 0x32] + ldrh r1, [r6, 0x14] + strh r1, [r0, 0x36] + ldrh r1, [r6, 0x1A] + strh r1, [r0, 0x38] + bl sub_8075068 + adds r5, 0x1C + adds r4, r5 + ldr r0, _080AC56C @ =sub_80AC570 + str r0, [r4] + ldrh r0, [r6, 0x18] + adds r0, 0x1 + strh r0, [r6, 0x18] +_080AC55E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC564: .4byte gUnknown_83E5AE0 +_080AC568: .4byte gSprites +_080AC56C: .4byte sub_80AC570 + thumb_func_end sub_80AC504 + + thumb_func_start sub_80AC570 +sub_80AC570: @ 80AC570 + push {r4-r6,lr} + adds r6, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080AC5CA + ldrh r0, [r6, 0x24] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + ldrh r0, [r6, 0x26] + ldrh r1, [r6, 0x22] + adds r0, r1 + strh r0, [r6, 0x22] + movs r0, 0x6 + strh r0, [r6, 0x2E] + bl Random + movs r4, 0x1F + adds r1, r4, 0 + ands r1, r0 + ldr r5, _080AC5D0 @ =0x0000fff0 + adds r1, r5 + ldrh r0, [r6, 0x20] + adds r1, r0 + strh r1, [r6, 0x32] + bl Random + ands r4, r0 + adds r4, r5 + ldrh r1, [r6, 0x22] + adds r4, r1 + strh r4, [r6, 0x36] + bl Random + movs r1, 0x7 + ands r1, r0 + mvns r1, r1 + strh r1, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _080AC5D4 @ =sub_80AC5D8 + str r0, [r6, 0x1C] +_080AC5CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC5D0: .4byte 0x0000fff0 +_080AC5D4: .4byte sub_80AC5D8 + thumb_func_end sub_80AC570 + + thumb_func_start sub_80AC5D8 +sub_80AC5D8: @ 80AC5D8 + push {r4-r6,lr} + adds r5, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080AC614 + movs r4, 0 + ldr r6, _080AC61C @ =gTasks +_080AC5EA: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r6 + ldr r1, [r2] + ldr r0, _080AC620 @ =sub_80AC3BC + cmp r1, r0 + bne _080AC60A + movs r0, 0x1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0x18] + subs r0, 0x1 + strh r0, [r2, 0x18] + adds r0, r5, 0 + bl DestroySprite +_080AC60A: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF + bls _080AC5EA +_080AC614: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC61C: .4byte gTasks +_080AC620: .4byte sub_80AC3BC + thumb_func_end sub_80AC5D8 + + thumb_func_start sub_80AC624 +sub_80AC624: @ 80AC624 + ldr r2, _080AC644 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x20] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x2E] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0x30] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0x32] + ldrh r1, [r2, 0xA] + strh r1, [r0, 0x34] + ldr r1, _080AC648 @ =sub_80AC64C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080AC644: .4byte gBattleAnimArgs +_080AC648: .4byte sub_80AC64C + thumb_func_end sub_80AC624 + + thumb_func_start sub_80AC64C +sub_80AC64C: @ 80AC64C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x2E] + subs r0, r1 + strh r0, [r4, 0x36] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x38] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080AC690 + adds r0, r4, 0 + bl DestroyAnimSprite +_080AC690: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC64C + + thumb_func_start sub_80AC698 +sub_80AC698: @ 80AC698 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 23 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080AC6D0 + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080AC6D0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC698 + + thumb_func_start sub_80AC6D8 +sub_80AC6D8: @ 80AC6D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080AC714 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x30] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldr r1, _080AC718 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldr r0, _080AC71C @ =sub_80AC720 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC714: .4byte gBattleAnimTarget +_080AC718: .4byte gBattleAnimArgs +_080AC71C: .4byte sub_80AC720 + thumb_func_end sub_80AC6D8 + + thumb_func_start sub_80AC720 +sub_80AC720: @ 80AC720 + push {r4-r6,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x20 + ldrsh r0, [r4, r2] + subs r6, r1, r0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x22 + ldrsh r0, [r4, r2] + subs r5, r1, r0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r6 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r5 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AC778 + movs r0, 0 + strh r0, [r4, 0x38] + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80AC798 +_080AC778: + movs r0, 0x34 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080AC78A + adds r0, r4, 0 + bl DestroyAnimSprite +_080AC78A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80AC720 + + thumb_func_start sub_80AC798 +sub_80AC798: @ 80AC798 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r4, r1, 0 + adds r5, r2, 0 + movs r2, 0x2E + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + lsls r1, 15 + lsrs r1, 16 + str r1, [sp] + ldrh r1, [r0, 0x24] + ldrh r3, [r0, 0x20] + adds r1, r3 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r0, r5, r0 + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl Random + negs r4, r4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r4, r0 + subs r4, 0x5 + lsls r4, 16 + lsrs r7, r4, 16 + movs r6, 0 + mov r0, r8 + lsls r0, 16 + mov r8, r0 + mov r1, r10 + lsls r1, 16 + str r1, [sp, 0xC] + ldr r2, [sp] + lsls r2, 16 + str r2, [sp, 0x10] + asrs r1, 16 + lsls r0, r7, 16 + asrs r5, r0, 16 + str r0, [sp, 0x14] + negs r3, r5 + str r3, [sp, 0x4] + asrs r0, r2, 16 + adds r1, r0 + lsls r1, 16 + mov r10, r1 +_080AC826: + ldr r0, _080AC868 @ =gUnknown_83E5B88 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080AC86C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080AC870 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + bge _080AC874 + mov r1, sp + ldrh r1, [r1, 0x4] + strh r1, [r4, 0x32] + b _080AC876 + .align 2, 0 +_080AC868: .4byte gUnknown_83E5B88 +_080AC86C: .4byte gSprites +_080AC870: .4byte gBattleAnimAttacker +_080AC874: + strh r7, [r4, 0x32] +_080AC876: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080AC826 + movs r6, 0 + ldr r3, [sp, 0xC] + asrs r1, r3, 16 + ldr r0, [sp, 0x14] + asrs r5, r0, 16 + negs r2, r5 + str r2, [sp, 0x8] + ldr r3, [sp, 0x10] + asrs r0, r3, 16 + subs r1, r0 + lsls r1, 16 + mov r10, r1 +_080AC89C: + ldr r0, _080AC8E0 @ =gUnknown_83E5B88 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080AC8E4 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080AC8E8 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + ble _080AC8EC + mov r1, sp + ldrh r1, [r1, 0x8] + strh r1, [r4, 0x32] + b _080AC8EE + .align 2, 0 +_080AC8E0: .4byte gUnknown_83E5B88 +_080AC8E4: .4byte gSprites +_080AC8E8: .4byte gBattleAnimAttacker +_080AC8EC: + strh r7, [r4, 0x32] +_080AC8EE: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080AC89C + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AC798 + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 4b7fafa2e..9797487c4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -154,6 +154,11 @@ SECTIONS { asm/field_special_scene.o(.text); asm/safari_zone.o(.text); asm/item_use.o(.text); + asm/battle_anim_effects_1.o(.text); + asm/battle_anim_effects_2.o(.text); + asm/water.o(.text); + asm/fire.o(.text); + asm/electric.o(.text); asm/battle_anim_80A22E8.o(.text); asm/bike.o(.text); asm/easy_chat.o(.text); |