.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.