.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_815A0D4 sub_815A0D4: @ 815A0D4 push {lr} adds r2, r0, 0 ldr r1, =gBattleAnimArgs ldrh r0, [r1] ldrh r3, [r2, 0x20] adds r0, r3 strh r0, [r2, 0x20] ldrh r0, [r1, 0x2] ldrh r3, [r2, 0x22] adds r0, r3 strh r0, [r2, 0x22] movs r3, 0x6 ldrsh r0, [r1, r3] cmp r0, 0 bne _0815A0FC ldrh r0, [r1, 0x4] b _0815A100 .pool _0815A0FC: ldrh r0, [r1, 0x4] negs r0, r0 _0815A100: strh r0, [r2, 0x2E] ldrh r0, [r1, 0x8] strh r0, [r2, 0x30] ldr r0, =sub_815A114 str r0, [r2, 0x1C] pop {r0} bx r0 .pool thumb_func_end sub_815A0D4 thumb_func_start sub_815A114 sub_815A114: @ 815A114 push {lr} adds r3, r0, 0 movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0 ble _0815A154 ldrh r1, [r3, 0x32] lsls r0, r1, 16 asrs r0, 24 strh r0, [r3, 0x24] ldrh r0, [r3, 0x2E] adds r1, r0 strh r1, [r3, 0x32] 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, 0x30] subs r0, 0x1 strh r0, [r3, 0x30] b _0815A15A _0815A154: adds r0, r3, 0 bl DestroyAnimSprite _0815A15A: pop {r0} bx r0 thumb_func_end sub_815A114 thumb_func_start sub_815A160 sub_815A160: @ 815A160 push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r6, =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 8 movs r0, 0x80 lsls r0, 12 adds r4, r0 asrs r4, 16 ldrb r0, [r6] movs r1, 0x3 bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 lsrs r1, 8 movs r0, 0x80 lsls r0, 12 adds r1, r0 asrs r1, 16 adds r0, r4, 0 movs r2, 0 bl sub_807521C adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815A160 thumb_func_start sub_815A1B0 sub_815A1B0: @ 815A1B0 push {r4,lr} adds r4, r0, 0 movs r0, 0x5A strh r0, [r4, 0x2E] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] movs r0, 0x7 strh r0, [r4, 0x30] ldr r1, =sub_815A1F4 adds r0, r4, 0 bl StoreSpriteCallbackInData6 movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldrh r0, [r4, 0x30] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A1B0 thumb_func_start sub_815A1F4 sub_815A1F4: @ 815A1F4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldrh r0, [r4, 0x30] subs r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 cmp r0, 0 bge _0815A228 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815A234 str r0, [r4, 0x1C] _0815A228: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A1F4 thumb_func_start sub_815A234 sub_815A234: @ 815A234 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_815A234 thumb_func_start sub_815A254 sub_815A254: @ 815A254 push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 adds r0, r5, 0 movs r1, 0x1 bl sub_80A6980 ldrh r0, [r5, 0x20] subs r0, r7 lsls r0, 16 asrs r0, 16 ldrh r1, [r5, 0x22] subs r1, r6 lsls r1, 16 asrs r1, 16 bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 23 adds r0, r1 lsrs r4, r0, 16 bl IsContest lsls r0, 24 cmp r0, 0 beq _0815A2B2 movs r1, 0x80 lsls r1, 7 adds r0, r4, r1 lsls r0, 16 lsrs r4, r0, 16 _0815A2B2: movs r3, 0x80 lsls r3, 1 str r4, [sp] adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 bl sub_80A73E0 ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r5, 0x2E] strh r7, [r5, 0x32] strh r6, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815A254 thumb_func_start sub_815A2F0 sub_815A2F0: @ 815A2F0 push {r4,lr} adds r4, r0, 0 movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x4 strh r0, [r4, 0x2E] ldr r0, =sub_815A31C str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A2F0 thumb_func_start sub_815A31C sub_815A31C: @ 815A31C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0 beq _0815A342 ldrh r0, [r4, 0x2E] subs r0, 0x1 b _0815A346 _0815A342: ldrh r0, [r4, 0x2E] adds r0, 0x1 _0815A346: strh r0, [r4, 0x2E] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0xF beq _0815A354 cmp r0, 0x4 bne _0815A35C _0815A354: ldrh r0, [r4, 0x30] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x30] _0815A35C: ldrh r0, [r4, 0x32] adds r1, r0, 0x1 strh r1, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x46 ble _0815A3A0 movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim movs r0, 0 strh r0, [r4, 0x32] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] subs r2, 0x12 ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815A3AC str r0, [r4, 0x1C] _0815A3A0: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A31C thumb_func_start sub_815A3AC sub_815A3AC: @ 815A3AC push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x32] adds r1, r0, 0x1 strh r1, [r3, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 ble _0815A3E8 adds r2, r3, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] subs r2, 0x12 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] adds r0, r3, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0815A3E8 ldr r0, =sub_815A3F0 str r0, [r3, 0x1C] _0815A3E8: pop {r0} bx r0 .pool thumb_func_end sub_815A3AC thumb_func_start sub_815A3F0 sub_815A3F0: @ 815A3F0 push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x6 bhi _0815A448 lsls r0, 2 ldr r1, =_0815A40C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815A40C: .4byte _0815A428 .4byte _0815A428 .4byte _0815A432 .4byte _0815A432 .4byte _0815A440 .4byte _0815A440 .4byte _0815A448 _0815A428: movs r1, 0 movs r0, 0x1 strh r0, [r4, 0x24] strh r1, [r4, 0x26] b _0815A450 _0815A432: ldr r0, =0x0000ffff strh r0, [r4, 0x24] movs r0, 0 b _0815A44E .pool _0815A440: movs r0, 0 strh r0, [r4, 0x24] movs r0, 0x1 b _0815A44E _0815A448: movs r0, 0 strh r0, [r4, 0x24] ldr r0, =0x0000ffff _0815A44E: strh r0, [r4, 0x26] _0815A450: ldrh r0, [r4, 0x34] adds r0, 0x1 movs r2, 0 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _0815A462 strh r2, [r4, 0x34] _0815A462: ldrh r0, [r4, 0x36] adds r1, r0, 0x1 strh r1, [r4, 0x36] lsls r0, 16 asrs r0, 16 cmp r0, 0xF ble _0815A48C movs r0, 0x10 strh r0, [r4, 0x2E] strh r2, [r4, 0x30] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldrh r1, [r4, 0x2E] movs r0, 0x52 bl SetGpuReg ldr r0, =sub_815A49C str r0, [r4, 0x1C] _0815A48C: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A3F0 thumb_func_start sub_815A49C sub_815A49C: @ 815A49C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldrh r0, [r4, 0x30] adds r1, r0, 0x1 strh r1, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815A4CC ldrh r0, [r4, 0x2E] subs r0, 0x1 movs r1, 0 strh r0, [r4, 0x2E] strh r1, [r4, 0x30] _0815A4CC: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _0815A4E0 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _0815A4E0: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bge _0815A4FE movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimSprite _0815A4FE: pop {r4} pop {r0} bx r0 thumb_func_end sub_815A49C thumb_func_start sub_815A504 sub_815A504: @ 815A504 lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, =sub_815A52C str r0, [r1] ldr r1, =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] bx lr .pool thumb_func_end sub_815A504 thumb_func_start sub_815A52C sub_815A52C: @ 815A52C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r4, r0, 24 bl sub_80A6D94 lsls r0, 24 lsrs r6, r0, 24 ldr r7, =gTasks lsls r5, r4, 2 adds r1, r5, r4 lsls r1, 3 adds r1, r7 ldrh r0, [r1, 0x12] adds r0, 0x1 strh r0, [r1, 0x12] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _0815A59C ldr r0, =gPlttBufferFaded lsls r2, r6, 4 adds r1, r2, 0 adds r1, 0xB lsls r1, 1 adds r1, r0 ldrh r3, [r1] mov r8, r3 movs r3, 0xA mov r9, r7 adds r7, r5, 0 mov r12, r0 adds r5, r2, 0 lsls r0, r6, 5 add r0, r12 adds r2, r0, 0 adds r2, 0x14 _0815A57A: ldrh r0, [r2] strh r0, [r1] subs r2, 0x2 subs r1, 0x2 subs r3, 0x1 cmp r3, 0 bgt _0815A57A adds r0, r5, 0x1 lsls r0, 1 add r0, r12 movs r1, 0 mov r2, r8 strh r2, [r0] adds r0, r7, r4 lsls r0, 3 add r0, r9 strh r1, [r0, 0x12] _0815A59C: ldr r0, =gBattleAnimArgs ldrh r1, [r0, 0xE] ldr r0, =0x0000ffff cmp r1, r0 bne _0815A5AC adds r0, r4, 0 bl DestroyTask _0815A5AC: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815A52C thumb_func_start sub_815A5C8 sub_815A5C8: @ 815A5C8 lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, =sub_815A5F0 str r0, [r1] ldr r1, =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] bx lr .pool thumb_func_end sub_815A5C8 thumb_func_start sub_815A5F0 sub_815A5F0: @ 815A5F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 bl sub_80A6D94 lsls r0, 24 lsrs r7, r0, 24 ldr r5, =gTasks mov r0, r8 lsls r3, r0, 2 adds r1, r3, r0 lsls r1, 3 adds r1, r5 ldrh r0, [r1, 0x12] adds r0, 0x1 strh r0, [r1, 0x12] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _0815A692 ldr r0, =gPlttBufferFaded lsls r2, r7, 4 adds r1, r2, 0 adds r1, 0xB lsls r1, 1 adds r1, r0 ldrh r6, [r1] movs r4, 0xA mov r10, r3 mov r9, r0 adds r5, r2, 0 ldr r2, =gPlttBufferUnfaded mov r12, r2 lsls r0, r7, 5 add r0, r9 adds r3, r0, 0 adds r3, 0x14 _0815A644: ldrh r0, [r3] strh r0, [r1] subs r3, 0x2 subs r1, 0x2 subs r4, 0x1 cmp r4, 0 bgt _0815A644 adds r0, r5, 0x1 lsls r0, 1 add r0, r9 strh r6, [r0] adds r1, r5, 0 adds r1, 0xB lsls r1, 1 add r1, r12 ldrh r6, [r1] movs r4, 0xA lsls r0, r7, 5 add r0, r12 adds r2, r0, 0 adds r2, 0x14 _0815A66E: ldrh r0, [r2] strh r0, [r1] subs r2, 0x2 subs r1, 0x2 subs r4, 0x1 cmp r4, 0 bgt _0815A66E adds r0, r5, 0x1 lsls r0, 1 add r0, r12 movs r1, 0 strh r6, [r0] mov r0, r10 add r0, r8 lsls r0, 3 ldr r2, =gTasks adds r0, r2 strh r1, [r0, 0x12] _0815A692: ldr r0, =gBattleAnimArgs ldrh r1, [r0, 0xE] ldr r0, =0x0000ffff cmp r1, r0 bne _0815A6A2 mov r0, r8 bl DestroyTask _0815A6A2: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815A5F0 thumb_func_start sub_815A6C4 sub_815A6C4: @ 815A6C4 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x1 bl sub_80A69CC ldr r0, =gBattleAnimTarget ldrb r0, [r0] mov r5, sp adds r5, 0x2 movs r1, 0 mov r2, sp adds r3, r5, 0 bl SetAverageBattlerPositions ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815A6F8 ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] _0815A6F8: ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] mov r2, sp ldrh r0, [r1, 0x4] ldrh r2, [r2] adds r0, r2 strh r0, [r4, 0x32] ldrh r0, [r1, 0x6] ldrh r5, [r5] adds r0, r5 strh r0, [r4, 0x36] ldr r0, =0x0000ffce strh r0, [r4, 0x38] adds r0, r4, 0 bl sub_80A68D4 ldr r0, =sub_815A73C str r0, [r4, 0x1C] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815A6C4 thumb_func_start sub_815A73C sub_815A73C: @ 815A73C push {r4,lr} adds r4, r0, 0 bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0815A75E movs r1, 0 movs r0, 0x1E strh r0, [r4, 0x2E] strh r1, [r4, 0x30] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] ldr r1, =sub_815A76C adds r0, r4, 0 bl StoreSpriteCallbackInData6 _0815A75E: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A73C thumb_func_start sub_815A76C sub_815A76C: @ 815A76C push {lr} adds r3, r0, 0 ldrh r1, [r3, 0x30] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0815A798 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] _0815A798: ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 bne _0815A7AC adds r0, r3, 0 bl DestroyAnimSprite _0815A7AC: pop {r0} bx r0 thumb_func_end sub_815A76C thumb_func_start sub_815A7B0 sub_815A7B0: @ 815A7B0 push {r4,r5,lr} adds r4, r0, 0 bl sub_80A6838 ldr r5, =gBattleAnimArgs movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 bl sub_80A6864 ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815A7B0 thumb_func_start sub_815A7EC sub_815A7EC: @ 815A7EC push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _0815A84C adds r0, r4, 0 bl sub_80A6838 ldr r5, =gBattleAnimArgs movs r2, 0 ldrsh r1, [r5, r2] adds r0, r4, 0 bl sub_80A6864 bl IsContest lsls r0, 24 cmp r0, 0 bne _0815A840 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815A830 ldrh r0, [r5, 0x4] b _0815A846 .pool _0815A830: movs r1, 0x4 ldrsh r0, [r5, r1] negs r0, r0 strh r0, [r4, 0x30] movs r2, 0x6 ldrsh r0, [r5, r2] negs r0, r0 b _0815A84A _0815A840: movs r1, 0x4 ldrsh r0, [r5, r1] negs r0, r0 _0815A846: strh r0, [r4, 0x30] ldrh r0, [r5, 0x6] _0815A84A: strh r0, [r4, 0x32] _0815A84C: 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 r0, 2 movs r3, 0xFF ldrh r1, [r4, 0x30] ldrh r2, [r4, 0x34] adds r1, r2 strh r1, [r4, 0x34] ldrh r1, [r4, 0x32] ldrh r2, [r4, 0x36] adds r1, r2 strh r1, [r4, 0x36] movs r2, 0x34 ldrsh r1, [r4, r2] lsrs r2, r1, 31 adds r1, r2 asrs r1, 1 strh r1, [r4, 0x24] ands r0, r3 movs r1, 0x5 bl Sin movs r2, 0x36 ldrsh r1, [r4, r2] lsrs r2, r1, 31 adds r1, r2 asrs r1, 1 adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 lsls r0, 16 lsrs r0, 16 cmp r0, 0xF0 bls _0815A8A4 adds r0, r4, 0 bl DestroyAnimSprite _0815A8A4: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815A7EC thumb_func_start sub_815A8AC sub_815A8AC: @ 815A8AC push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0815A8C2 adds r0, r2, 0 bl DestroyAnimSprite _0815A8C2: pop {r0} bx r0 thumb_func_end sub_815A8AC thumb_func_start AnimTask_IsTargetPlayerSide AnimTask_IsTargetPlayerSide: @ 815A8C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815A8EC ldr r1, =gBattleAnimArgs movs r0, 0 b _0815A8F0 .pool _0815A8EC: ldr r1, =gBattleAnimArgs movs r0, 0x1 _0815A8F0: strh r0, [r1, 0xE] adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .pool thumb_func_end AnimTask_IsTargetPlayerSide thumb_func_start AnimTask_IsHealingMove AnimTask_IsHealingMove: @ 815A904 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gAnimMoveDmg ldr r0, [r0] cmp r0, 0 ble _0815A920 ldr r1, =gBattleAnimArgs movs r0, 0 b _0815A924 .pool _0815A920: ldr r1, =gBattleAnimArgs movs r0, 0x1 _0815A924: strh r0, [r1, 0xE] adds r0, r2, 0 bl DestroyAnimVisualTask pop {r0} bx r0 .pool thumb_func_end AnimTask_IsHealingMove thumb_func_start sub_815A934 sub_815A934: @ 815A934 push {r4,r5,lr} adds r5, r0, 0 ldr r1, =0x00001f3f movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r4, =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 bl SetGpuReg ldrh r1, [r4] movs r0, 0x44 bl SetGpuReg adds r0, r5, 0 movs r1, 0 bl sub_80A6980 ldrb r1, [r5, 0x1] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x8 orrs r0, r1 strb r0, [r5, 0x1] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815A9A0 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815A934 thumb_func_start sub_815A9A0 sub_815A9A0: @ 815A9A0 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x5 bhi _0815AA60 lsls r0, 2 ldr r1, =_0815A9BC adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815A9BC: .4byte _0815A9D4 .4byte _0815A9F2 .4byte _0815AA12 .4byte _0815A9F2 .4byte _0815AA32 .4byte _0815AA42 _0815A9D4: 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 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0815AA60 b _0815AA3A _0815A9F2: ldrh r0, [r4, 0x30] adds r0, 0x75 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x15 bne _0815AA60 movs r0, 0 strh r0, [r4, 0x32] b _0815AA3A _0815AA12: ldrh r0, [r4, 0x30] subs r0, 0x75 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x29 bne _0815AA60 movs r0, 0 strh r0, [r4, 0x32] b _0815AA3A _0815AA32: adds r0, r4, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim _0815AA3A: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815AA60 _0815AA42: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0815AA60 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815AA6C str r0, [r4, 0x1C] _0815AA60: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815A9A0 thumb_func_start sub_815AA6C sub_815AA6C: @ 815AA6C push {r4,lr} adds r4, r0, 0 ldr r1, =0x00003f3f movs r0, 0x4A bl SetGpuReg movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimSprite pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815AA6C thumb_func_start sub_815AAA4 sub_815AAA4: @ 815AAA4 push {r4-r6,lr} adds r5, r0, 0 ldr r6, =gBattleAnimArgs movs r1, 0x6 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815AAD0 ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] _0815AAD0: ldrh r0, [r6] ldrh r2, [r5, 0x20] adds r0, r2 movs r3, 0 strh r0, [r5, 0x20] ldrh r0, [r6, 0x2] ldrh r4, [r5, 0x22] adds r0, r4 strh r0, [r5, 0x22] ldrh r2, [r5, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x10 ldr r4, =0x000003ff adds r0, r4, 0 ands r1, r0 ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] movs r1, 0x4 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815AB2C ldrb r1, [r5, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x10 orrs r0, r1 strb r0, [r5, 0x3] ldr r0, =0x0000fff4 strh r0, [r5, 0x24] movs r0, 0x2 b _0815AB32 .pool _0815AB2C: movs r0, 0xC strh r0, [r5, 0x24] ldr r0, =0x0000fffe _0815AB32: strh r0, [r5, 0x30] ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] movs r2, 0x34 ldrsh r0, [r5, r2] cmp r0, 0xFF beq _0815AB46 ldrh r0, [r1, 0x4] strh r0, [r5, 0x34] _0815AB46: ldr r0, =sub_815AB5C str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815AAA4 thumb_func_start sub_815AB5C sub_815AB5C: @ 815AB5C push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x32] movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815AB9A ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] lsls r0, 16 cmp r0, 0 bne _0815ABBA adds r0, r2, 0x1 strh r0, [r4, 0x32] movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815ABBA movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xDE bl PlaySE1WithPanning b _0815ABBA _0815AB9A: ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x30] subs r0, r1 strh r0, [r4, 0x24] movs r1, 0x24 ldrsh r0, [r4, r1] cmp r0, 0 bge _0815ABAC negs r0, r0 _0815ABAC: cmp r0, 0xC bne _0815ABBA ldrh r0, [r4, 0x2E] subs r0, 0x1 strh r0, [r4, 0x2E] subs r0, r2, 0x1 strh r0, [r4, 0x32] _0815ABBA: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _0815ABC8 adds r0, r4, 0 bl DestroyAnimSprite _0815ABC8: pop {r4} pop {r0} bx r0 thumb_func_end sub_815AB5C thumb_func_start sub_815ABD0 sub_815ABD0: @ 815ABD0 push {lr} ldrb r2, [r0, 0x1] movs r1, 0xD negs r1, r1 ands r1, r2 movs r2, 0x8 orrs r1, r2 strb r1, [r0, 0x1] movs r1, 0xFF strh r1, [r0, 0x34] bl sub_815AAA4 pop {r0} bx r0 thumb_func_end sub_815ABD0 thumb_func_start sub_815ABEC sub_815ABEC: @ 815ABEC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _0815AC40 ldr r1, =0x00001f3f movs r0, 0x48 bl SetGpuReg ldr r1, =gBattle_WIN1H ldr r2, =0x000098f0 adds r0, r2, 0 strh r0, [r1] ldr r1, =gBattle_WIN1V movs r0, 0xA0 strh r0, [r1] ldr r0, =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg ldr r0, =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg b _0815AC70 .pool _0815AC40: ldr r1, =0x00001f3f movs r0, 0x48 bl SetGpuReg ldr r1, =gBattle_WIN1H movs r0, 0xF0 strh r0, [r1] ldr r4, =gBattle_WIN1V ldr r1, =0x000078a0 adds r0, r1, 0 strh r0, [r4] movs r0, 0x42 movs r1, 0xF0 bl SetGpuReg ldrh r1, [r4] movs r0, 0x46 bl SetGpuReg movs r1, 0x80 lsls r1, 7 movs r0, 0 bl SetGpuRegBits _0815AC70: adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815ABEC thumb_func_start sub_815AC8C sub_815AC8C: @ 815AC8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, =0x00003f3f movs r0, 0x48 bl SetGpuReg ldr r0, =gBattle_WIN1H movs r1, 0 strh r1, [r0] ldr r0, =gBattle_WIN1V strh r1, [r0] bl IsContest lsls r0, 24 cmp r0, 0 bne _0815ACB8 movs r1, 0x80 lsls r1, 7 movs r0, 0 bl ClearGpuRegBits _0815ACB8: adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815AC8C thumb_func_start sub_815ACD0 sub_815ACD0: @ 815ACD0 push {r4-r6,lr} adds r5, r0, 0 ldr r6, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815ACEC ldr r4, =gBattleAnimAttacker b _0815ACEE .pool _0815ACEC: ldr r4, =gBattleAnimTarget _0815ACEE: ldrb r0, [r4] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x2] adds r0, r6 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldr r2, =gBattleAnimArgs ldrh r0, [r2, 0x4] strh r0, [r5, 0x26] movs r3, 0 lsls r0, 16 asrs r0, 16 ldrh r4, [r2, 0x6] movs r6, 0x6 ldrsh r1, [r2, r6] cmp r0, r1 ble _0815AD26 movs r3, 0x1 _0815AD26: strh r3, [r5, 0x2E] movs r0, 0 strh r0, [r5, 0x30] ldrh r0, [r2, 0x8] strh r0, [r5, 0x32] ldrh r0, [r2, 0xA] strh r0, [r5, 0x34] strh r4, [r5, 0x36] ldr r0, =sub_815AD4C str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815ACD0 thumb_func_start sub_815AD4C sub_815AD4C: @ 815AD4C push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x32] ldrh r1, [r2, 0x30] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r2, 0x30] ldr r1, =gSineTable movs r3, 0x30 ldrsh r0, [r2, r3] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsls r0, 16 asrs r0, 20 strh r0, [r2, 0x24] ldrh r0, [r2, 0x34] ldrh r3, [r2, 0x26] adds r1, r0, r3 strh r1, [r2, 0x26] movs r3, 0x2E ldrsh r0, [r2, r3] cmp r0, 0 beq _0815AD98 lsls r0, r1, 16 asrs r0, 16 movs r3, 0x36 ldrsh r1, [r2, r3] cmp r0, r1 bge _0815ADAA adds r0, r2, 0 bl DestroyAnimSprite b _0815ADAA .pool _0815AD98: lsls r0, r1, 16 asrs r0, 16 movs r3, 0x36 ldrsh r1, [r2, r3] cmp r0, r1 ble _0815ADAA adds r0, r2, 0 bl DestroyAnimSprite _0815ADAA: pop {r0} bx r0 thumb_func_end sub_815AD4C thumb_func_start sub_815ADB0 sub_815ADB0: @ 815ADB0 push {r4-r7,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r5, r1, r0 ldr r0, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815ADDC ldr r4, =gBattleAnimAttacker b _0815ADDE .pool _0815ADDC: ldr r4, =gBattleAnimTarget _0815ADDE: ldrb r0, [r4] bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] bl sub_80A8364 lsls r0, 24 lsrs r7, r0, 24 adds r0, r6, 0 adds r1, r0, 0 adds r1, 0x24 movs r2, 0 strh r1, [r5, 0x8] strh r1, [r5, 0xA] subs r0, 0x21 strh r0, [r5, 0xC] cmp r0, 0 bge _0815AE08 strh r2, [r5, 0xC] _0815AE08: ldrh r0, [r5, 0x8] strh r0, [r5, 0xE] movs r0, 0x8 strh r0, [r5, 0x10] ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r5, 0x12] strh r2, [r5, 0x14] strh r2, [r5, 0x16] cmp r7, 0x1 bne _0815AE30 ldr r0, =gBattle_BG1_X b _0815AE32 .pool _0815AE30: ldr r0, =gBattle_BG2_X _0815AE32: ldrh r2, [r0] strh r2, [r5, 0x18] adds r3, r2, 0 adds r3, 0xF0 strh r3, [r5, 0x1A] ldrh r0, [r1, 0x4] strh r0, [r5, 0x1C] movs r4, 0x4 ldrsh r0, [r1, r4] cmp r0, 0 bne _0815AE54 strh r3, [r5, 0x1E] ldrh r3, [r5, 0x18] b _0815AE58 .pool _0815AE54: strh r2, [r5, 0x1E] ldrh r3, [r5, 0x1A] _0815AE58: movs r0, 0 strh r0, [r5, 0x26] ldrh r1, [r5, 0xC] lsls r2, r1, 16 asrs r1, r2, 16 movs r6, 0xE ldrsh r0, [r5, r6] cmp r1, r0 bgt _0815AE8E ldr r4, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r4 mov r12, r0 _0815AE74: asrs r2, 16 lsls r1, r2, 1 adds r0, r1, r4 strh r3, [r0] add r1, r12 strh r3, [r1] adds r2, 0x1 lsls r2, 16 asrs r1, r2, 16 movs r6, 0xE ldrsh r0, [r5, r6] cmp r1, r0 ble _0815AE74 _0815AE8E: cmp r7, 0x1 bne _0815AEA0 ldr r0, =0x04000014 b _0815AEA2 .pool _0815AEA0: ldr r0, =0x04000018 _0815AEA2: str r0, [sp] ldr r0, =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, =sub_815AED8 str r0, [r5] add sp, 0xC pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815ADB0 thumb_func_start sub_815AED8 sub_815AED8: @ 815AED8 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 ldrh r0, [r4, 0x8] ldrh r1, [r4, 0x12] subs r0, r1 strh r0, [r4, 0x8] lsls r0, 16 asrs r0, 16 ldrh r2, [r4, 0xC] movs r3, 0xC ldrsh r1, [r4, r3] cmp r0, r1 bge _0815AF00 strh r2, [r4, 0x8] _0815AF00: ldrh r1, [r4, 0x10] movs r2, 0x10 ldrsh r0, [r4, r2] cmp r0, 0 bne _0815AF2C ldrh r0, [r4, 0xA] ldrh r1, [r4, 0x12] subs r0, r1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 ldrh r2, [r4, 0xC] movs r3, 0xC ldrsh r1, [r4, r3] cmp r0, r1 bge _0815AF30 strh r2, [r4, 0xA] movs r0, 0x1 strh r0, [r4, 0x26] b _0815AF30 .pool _0815AF2C: subs r0, r1, 0x1 strh r0, [r4, 0x10] _0815AF30: ldrh r0, [r4, 0x14] adds r0, 0x1 strh r0, [r4, 0x14] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815AF5C movs r0, 0 strh r0, [r4, 0x14] movs r1, 0 movs r2, 0x16 ldrsh r0, [r4, r2] cmp r0, 0 bne _0815AF4E movs r1, 0x1 _0815AF4E: strh r1, [r4, 0x16] cmp r1, 0 beq _0815AF58 ldrh r0, [r4, 0x18] b _0815AF5A _0815AF58: ldrh r0, [r4, 0x1A] _0815AF5A: strh r0, [r4, 0x20] _0815AF5C: ldrh r1, [r4, 0x8] lsls r3, r1, 16 asrs r1, r3, 16 movs r2, 0xA ldrsh r0, [r4, r2] cmp r1, r0 bge _0815AF90 ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 _0815AF72: asrs r3, 16 lsls r1, r3, 1 adds r2, r1, r5 ldrh r0, [r4, 0x20] strh r0, [r2] adds r1, r6 ldrh r0, [r4, 0x20] strh r0, [r1] adds r3, 0x1 lsls r3, 16 asrs r1, r3, 16 movs r2, 0xA ldrsh r0, [r4, r2] cmp r1, r0 blt _0815AF72 _0815AF90: ldrh r1, [r4, 0xA] lsls r3, r1, 16 asrs r1, r3, 16 movs r2, 0xE ldrsh r0, [r4, r2] cmp r1, r0 bgt _0815AFC4 ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 _0815AFA6: asrs r3, 16 lsls r1, r3, 1 adds r2, r1, r5 ldrh r0, [r4, 0x1E] strh r0, [r2] adds r1, r6 ldrh r0, [r4, 0x1E] strh r0, [r1] adds r3, 0x1 lsls r3, 16 asrs r1, r3, 16 movs r2, 0xE ldrsh r0, [r4, r2] cmp r1, r0 ble _0815AFA6 _0815AFC4: movs r3, 0x26 ldrsh r0, [r4, r3] cmp r0, 0 beq _0815AFE0 movs r1, 0x1C ldrsh r0, [r4, r1] cmp r0, 0 beq _0815AFDA ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0815AFDA: adds r0, r7, 0 bl DestroyAnimVisualTask _0815AFE0: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815AED8 thumb_func_start sub_815AFF0 sub_815AFF0: @ 815AFF0 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, =gTasks adds r4, r0 movs r5, 0 strh r5, [r4, 0x8] strh r5, [r4, 0xA] ldr r6, =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xC] ldrb r0, [r6] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xE] movs r0, 0x20 strh r0, [r4, 0x10] ldr r0, =0x0000ffec strh r0, [r4, 0x12] strh r5, [r4, 0x14] movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] ldr r0, =sub_815B054 str r0, [r4] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815AFF0 thumb_func_start sub_815B054 sub_815B054: @ 815B054 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks adds r6, r0, r1 movs r1, 0x8 ldrsh r0, [r6, r1] cmp r0, 0x5 bls _0815B074 b _0815B22E _0815B074: lsls r0, 2 ldr r1, =_0815B088 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815B088: .4byte _0815B0A0 .4byte _0815B160 .4byte _0815B18E .4byte _0815B1A2 .4byte _0815B1B8 .4byte _0815B220 _0815B0A0: movs r0, 0xC ldrsh r2, [r6, r0] ldrh r1, [r6, 0xA] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0815B0B6 movs r1, 0x10 ldrsh r0, [r6, r1] subs r0, r2, r0 b _0815B0BC _0815B0B6: movs r1, 0x10 ldrsh r0, [r6, r1] adds r0, r2, r0 _0815B0BC: lsls r0, 16 lsrs r1, r0, 16 ldrh r2, [r6, 0x12] ldrh r0, [r6, 0xE] adds r2, r0 ldr r0, =gUnknown_08593114 lsls r1, 16 asrs r1, 16 lsls r2, 16 asrs r2, 16 ldrb r4, [r6, 0xA] movs r3, 0x6 subs r3, r4 lsls r3, 24 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xBA bl PlaySE12WithPanning cmp r4, 0x40 beq _0815B120 ldr r5, =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r3, r1, r5 ldrh r0, [r6, 0xA] movs r2, 0x1 ands r2, r0 adds r3, 0x3F ldrb r4, [r3] movs r0, 0x2 negs r0, r0 ands r0, r4 orrs r0, r2 strb r0, [r3] adds r5, 0x1C adds r1, r5 ldr r0, =SpriteCallbackDummy str r0, [r1] _0815B120: ldrh r1, [r6, 0xA] movs r4, 0x1 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _0815B138 ldrh r0, [r6, 0x10] subs r0, 0x6 strh r0, [r6, 0x10] ldrh r0, [r6, 0x12] subs r0, 0x6 strh r0, [r6, 0x12] _0815B138: ldrh r1, [r6, 0x26] lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE2A0 adds r0, r6, 0 bl sub_80A7CFC ldrh r0, [r6, 0xA] adds r0, 0x1 strh r0, [r6, 0xA] strh r4, [r6, 0x8] b _0815B22E .pool _0815B160: adds r0, r6, 0 bl sub_80A7D34 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0815B22E movs r2, 0xA ldrsh r1, [r6, r2] cmp r1, 0x6 bne _0815B180 movs r0, 0x8 strh r0, [r6, 0x14] movs r0, 0x3 strh r0, [r6, 0x8] b _0815B22E _0815B180: cmp r1, 0x2 bgt _0815B186 movs r0, 0xA _0815B186: strh r0, [r6, 0x14] movs r0, 0x2 strh r0, [r6, 0x8] b _0815B22E _0815B18E: ldrh r0, [r6, 0x14] movs r2, 0x14 ldrsh r1, [r6, r2] cmp r1, 0 beq _0815B19E subs r0, 0x1 strh r0, [r6, 0x14] b _0815B22E _0815B19E: strh r1, [r6, 0x8] b _0815B22E _0815B1A2: ldrh r1, [r6, 0x14] movs r2, 0x14 ldrsh r0, [r6, r2] cmp r0, 0 beq _0815B1B2 subs r0, r1, 0x1 strh r0, [r6, 0x14] b _0815B22E _0815B1B2: movs r0, 0x4 strh r0, [r6, 0x8] b _0815B22E _0815B1B8: movs r5, 0 movs r7, 0 ldr r3, =gSprites movs r0, 0x1C adds r0, r3 mov r8, r0 _0815B1C4: lsls r0, r5, 4 adds r0, r5 lsls r4, r0, 2 adds r0, r3, 0 adds r0, 0x14 adds r0, r4, r0 ldr r1, [r0] ldr r0, =gUnknown_08593114 cmp r1, r0 bne _0815B200 adds r0, r4, r3 strh r2, [r0, 0x2E] movs r1, 0x6 strh r1, [r0, 0x30] movs r1, 0x2 str r2, [sp] str r3, [sp, 0x4] bl StartSpriteAnim mov r0, r8 adds r1, r4, r0 ldr r0, =sub_815B23C str r0, [r1] adds r0, r7, 0x1 lsls r0, 16 lsrs r7, r0, 16 ldr r2, [sp] ldr r3, [sp, 0x4] cmp r7, 0x6 beq _0815B20A _0815B200: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x3F bls _0815B1C4 _0815B20A: strh r7, [r6, 0x14] movs r0, 0x5 strh r0, [r6, 0x8] b _0815B22E .pool _0815B220: movs r1, 0x14 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815B22E adds r0, r2, 0 bl DestroyAnimVisualTask _0815B22E: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815B054 thumb_func_start sub_815B23C sub_815B23C: @ 815B23C push {r4,lr} adds r4, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0815B270 ldr r3, =gTasks movs r0, 0x30 ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x2E 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 _0815B270: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815B23C thumb_func_start sub_815B27C sub_815B27C: @ 815B27C push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 bne _0815B290 adds r0, r5, 0 movs r1, 0 bl sub_80A69CC _0815B290: ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x27 bgt _0815B2C2 ldrh r0, [r5, 0x2E] movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _0815B2B4 adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 b _0815B2C0 _0815B2B4: adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 _0815B2C0: strb r0, [r2] _0815B2C2: movs r2, 0x2E ldrsh r0, [r5, r2] cmp r0, 0x1E ble _0815B2D8 adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _0815B2D8: movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x3D bne _0815B324 ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldrh r0, [r5, 0x24] ldrh r2, [r5, 0x20] adds r0, r2 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, 0x24] strh r1, [r5, 0x26] movs r0, 0x14 strh r0, [r5, 0x2E] ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] _0815B324: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815B27C thumb_func_start sub_815B338 sub_815B338: @ 815B338 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _0815B35C cmp r0, 0x1 beq _0815B37C b _0815B38E .pool _0815B35C: movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE350 adds r0, r4, 0 bl sub_80A7CFC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815B38E .pool _0815B37C: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815B38E adds r0, r5, 0 bl DestroyAnimVisualTask _0815B38E: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815B338 thumb_func_start sub_815B394 sub_815B394: @ 815B394 push {r4-r6,lr} adds r5, r0, 0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x1 beq _0815B3F4 cmp r0, 0x1 bgt _0815B3B4 cmp r0, 0 beq _0815B3BE b _0815B496 _0815B3B4: cmp r0, 0x2 beq _0815B424 cmp r0, 0x3 beq _0815B478 b _0815B496 _0815B3BE: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] adds r0, r6, 0 movs r1, 0 bl sub_80A7270 movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0x30] strh r0, [r5, 0x32] b _0815B46C .pool _0815B3F4: ldrh r0, [r5, 0x30] adds r0, 0x60 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] subs r0, 0x1A strh r0, [r5, 0x32] movs r2, 0x30 ldrsh r1, [r5, r2] movs r0, 0x32 ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 bl obj_id_set_rotscale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _0815B424 ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] _0815B424: ldrh r0, [r5, 0x30] adds r0, 0x60 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] adds r0, 0x30 strh r0, [r5, 0x32] movs r2, 0x30 ldrsh r1, [r5, r2] movs r0, 0x32 ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 bl obj_id_set_rotscale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 bne _0815B496 movs r0, 0 strh r0, [r5, 0x34] ldr r1, =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] adds r0, r6, 0 bl sub_80A7344 _0815B46C: ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] b _0815B496 .pool _0815B478: ldrh r0, [r5, 0x26] subs r0, 0x6 strh r0, [r5, 0x26] movs r1, 0x22 ldrsh r0, [r5, r1] movs r2, 0x26 ldrsh r1, [r5, r2] adds r0, r1 movs r1, 0x20 negs r1, r1 cmp r0, r1 bge _0815B496 adds r0, r5, 0 bl DestroyAnimSprite _0815B496: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_815B394 thumb_func_start sub_815B49C sub_815B49C: @ 815B49C push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815B4BC ldr r0, =0x0000fff0 b _0815B4C0 .pool _0815B4BC: movs r0, 0x80 lsls r0, 1 _0815B4C0: strh r0, [r4, 0x20] movs r0, 0 strh r0, [r4, 0x22] ldr r0, =sub_815B4D4 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815B49C thumb_func_start sub_815B4D4 sub_815B4D4: @ 815B4D4 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x48 strh r0, [r4, 0x2E] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815B4F8 ldrh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 20 b _0815B500 .pool _0815B4F8: ldrh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 20 negs r0, r0 _0815B500: strh r0, [r4, 0x24] ldrh r0, [r4, 0x30] adds r0, 0x10 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 ldrh r1, [r4, 0x26] adds r5, r0, r1 strh r5, [r4, 0x26] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 movs r1, 0x3 bl __modsi3 lsls r0, 16 cmp r0, 0 bne _0815B54C ldr r0, =gUnknown_085CE3A0 ldrh r1, [r4, 0x24] ldrh r2, [r4, 0x20] adds r1, r2 lsls r1, 16 asrs r1, 16 ldrh r2, [r4, 0x22] adds r2, r5 lsls r2, 16 asrs r2, 16 adds r3, r4, 0 adds r3, 0x43 ldrb r3, [r3] adds r3, 0x1 lsls r3, 24 lsrs r3, 24 bl CreateSpriteAndAnimate _0815B54C: movs r1, 0x20 ldrsh r0, [r4, r1] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 adds r0, 0x20 movs r1, 0x98 lsls r1, 1 cmp r0, r1 bls _0815B566 adds r0, r4, 0 bl DestroyAnimSprite _0815B566: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815B4D4 thumb_func_start sub_815B570 sub_815B570: @ 815B570 push {r4,lr} adds r4, r0, 0 bl Random2 movs r1, 0x3 ands r0, r1 cmp r0, 0 bne _0815B58A ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x4 b _0815B592 _0815B58A: ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x5 _0815B592: ldr r3, =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] bl Random2 movs r1, 0x7 ands r0, r1 adds r1, r0, 0 cmp r1, 0x3 ble _0815B5B4 negs r0, r1 lsls r0, 24 lsrs r0, 24 _0815B5B4: lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x26] ldr r0, =sub_815B5D0 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815B570 thumb_func_start sub_815B5D0 sub_815B5D0: @ 815B5D0 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, 0x1D bgt _0815B612 ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _0815B646 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] movs r0, 0 b _0815B644 _0815B612: movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0x2 bne _0815B628 adds r2, r3, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _0815B628: movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0x3 bne _0815B640 adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =0x0000ffff strh r0, [r3, 0x30] _0815B640: ldrh r0, [r3, 0x30] adds r0, 0x1 _0815B644: strh r0, [r3, 0x30] _0815B646: movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0x3C ble _0815B654 adds r0, r3, 0 bl DestroySprite _0815B654: pop {r0} bx r0 .pool thumb_func_end sub_815B5D0 thumb_func_start sub_815B65C sub_815B65C: @ 815B65C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815B69C movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE3B8 adds r0, r4, 0 bl sub_80A7CFC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815B6AE .pool _0815B69C: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815B6AE adds r0, r5, 0 bl DestroyAnimVisualTask _0815B6AE: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815B65C thumb_func_start sub_815B6B4 sub_815B6B4: @ 815B6B4 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815B6F4 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE3E0 adds r0, r4, 0 bl sub_80A7CFC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815B706 .pool _0815B6F4: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815B706 adds r0, r5, 0 bl DestroyAnimVisualTask _0815B706: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815B6B4 thumb_func_start sub_815B70C sub_815B70C: @ 815B70C push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _0815B71E cmp r0, 0x1 beq _0815B748 b _0815B770 _0815B71E: adds r0, r4, 0 movs r1, 0 bl sub_80A69CC movs r0, 0x90 lsls r0, 4 strh r0, [r4, 0x30] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815B770 .pool _0815B748: ldrh r2, [r4, 0x30] lsls r1, r2, 16 asrs r1, 24 ldrh r0, [r4, 0x26] subs r0, r1 strh r0, [r4, 0x26] subs r2, 0x60 strh r2, [r4, 0x30] movs r2, 0x22 ldrsh r0, [r4, r2] movs r2, 0x26 ldrsh r1, [r4, r2] adds r0, r1 movs r2, 0x32 ldrsh r1, [r4, r2] cmp r0, r1 ble _0815B770 adds r0, r4, 0 bl DestroyAnimSprite _0815B770: pop {r4} pop {r0} bx r0 thumb_func_end sub_815B70C thumb_func_start sub_815B778 sub_815B778: @ 815B778 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815B7B8 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE430 adds r0, r4, 0 bl sub_80A7CFC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815B7CA .pool _0815B7B8: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815B7CA adds r0, r5, 0 bl DestroyAnimVisualTask _0815B7CA: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815B778 thumb_func_start sub_815B7D0 sub_815B7D0: @ 815B7D0 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x10 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r3, r1, 0 cmp r0, 0x4 bls _0815B7F6 b _0815BAFC _0815B7F6: lsls r0, 2 ldr r1, =_0815B808 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815B808: .4byte _0815B81C .4byte _0815B86C .4byte _0815B8A8 .4byte _0815BA44 .4byte _0815BA82 _0815B81C: movs r0, 0x4C movs r1, 0 bl SetGpuReg ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815B844 movs r0, 0x1 movs r1, 0x2 movs r2, 0x1 bl SetAnimBgAttribute b _0815B84E .pool _0815B844: movs r0, 0x2 movs r1, 0x2 movs r2, 0x1 bl SetAnimBgAttribute _0815B84E: ldr r0, =gTasks mov r6, r8 lsls r1, r6, 2 add r1, r8 lsls r1, 3 adds r1, r0 ldr r0, =gBattleAnimArgs ldrh r0, [r0] strh r0, [r1, 0x1C] b _0815BA26 .pool _0815B86C: mov r1, r8 lsls r0, r1, 2 add r0, r8 lsls r0, 3 adds r4, r0, r3 ldrh r0, [r4, 0xC] adds r1, r0, 0x1 strh r1, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bgt _0815B886 b _0815BAFC _0815B886: movs r0, 0 strh r0, [r4, 0xC] ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] ldrh r5, [r4, 0xA] lsls r1, r5, 4 orrs r1, r5 lsls r1, 16 lsrs r1, 16 movs r0, 0x4C bl SetGpuReg cmp r5, 0xF beq _0815B8A6 b _0815BAFC _0815B8A6: b _0815BA7A _0815B8A8: ldr r5, =gBattleAnimAttacker ldrb r0, [r5] ldr r1, =gBattleAnimTarget ldrb r1, [r1] mov r2, r8 lsls r4, r2, 2 adds r2, r4, r2 lsls r2, 3 adds r2, r3 ldrb r2, [r2, 0x1C] bl HandleSpeciesGfxDataChange ldrb r1, [r5] mov r0, sp bl sub_80A6BFC bl IsContest lsls r0, 24 mov r9, r4 cmp r0, 0 beq _0815B8E0 movs r1, 0 b _0815B8EA .pool _0815B8E0: ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r1, r0, 24 _0815B8EA: ldr r0, =gMonSpritesGfxPtr ldr r2, [r0] lsls r0, r1, 2 adds r2, 0x4 adds r2, r0 ldr r1, =gBattleMonForms ldr r0, =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r1, 11 ldr r0, [r2] adds r0, r1 ldr r1, [sp] ldr r2, =0x04000200 bl CpuSet ldr r1, [sp] movs r2, 0x80 lsls r2, 4 mov r0, sp ldrh r3, [r0, 0xA] movs r0, 0x1 bl LoadBgTiles bl IsContest lsls r0, 24 cmp r0, 0 beq _0815BA1C ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0, 0x18] ldrh r0, [r0] bl IsSpeciesNotUnown adds r4, r0, 0 ldr r0, [r5] ldr r0, [r0, 0x18] ldrh r0, [r0, 0x2] bl IsSpeciesNotUnown lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _0815B99C ldr r6, [sp, 0x4] movs r5, 0 movs r0, 0x7 mov r12, r0 movs r7, 0 _0815B950: movs r4, 0 adds r3, r7, r6 mov r1, r12 lsls r0, r1, 1 adds r2, r0, r6 _0815B95A: ldrh r1, [r3] ldrh r0, [r2] strh r0, [r3] strh r1, [r2] adds r3, 0x2 subs r2, 0x2 adds r4, 0x1 cmp r4, 0x3 ble _0815B95A movs r2, 0x20 add r12, r2 adds r7, 0x40 adds r5, 0x1 cmp r5, 0x7 ble _0815B950 movs r5, 0 movs r0, 0x80 lsls r0, 3 adds r3, r0, 0 _0815B980: adds r2, r5, 0x1 lsls r0, r5, 6 adds r1, r0, r6 movs r4, 0x7 _0815B988: ldrh r0, [r1] eors r0, r3 strh r0, [r1] adds r1, 0x2 subs r4, 0x1 cmp r4, 0 bge _0815B988 adds r5, r2, 0 cmp r5, 0x7 ble _0815B980 _0815B99C: ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r0, [r0, 0x2] bl IsSpeciesNotUnown lsls r0, 24 cmp r0, 0 beq _0815B9EC ldr r3, =gSprites ldr r4, =gBattlerSpriteIds ldr r2, =gBattleAnimAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r3, 0 adds r1, 0x10 adds r0, r1 ldr r1, =gUnknown_082FF6C0 b _0815BA06 .pool _0815B9EC: ldr r3, =gSprites ldr r4, =gBattlerSpriteIds ldr r2, =gBattleAnimAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r3, 0 adds r1, 0x10 adds r0, r1 ldr r1, =gUnknown_082FF694 _0815BA06: str r1, [r0] ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0 bl StartSpriteAffineAnim _0815BA1C: ldr r0, =gTasks mov r1, r9 add r1, r8 lsls r1, 3 adds r1, r0 _0815BA26: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0815BAFC .pool _0815BA44: mov r1, r8 lsls r0, r1, 2 add r0, r8 lsls r0, 3 adds r4, r0, r3 ldrh r0, [r4, 0xC] adds r1, r0, 0x1 strh r1, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815BAFC movs r0, 0 strh r0, [r4, 0xC] ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] ldrh r5, [r4, 0xA] lsls r1, r5, 4 orrs r1, r5 lsls r1, 16 lsrs r1, 16 movs r0, 0x4C bl SetGpuReg cmp r5, 0 bne _0815BAFC _0815BA7A: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815BAFC _0815BA82: movs r0, 0x4C movs r1, 0 bl SetGpuReg ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815BAAC movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl SetAnimBgAttribute b _0815BAB6 .pool _0815BAAC: movs r0, 0x2 movs r1, 0x2 movs r2, 0 bl SetAnimBgAttribute _0815BAB6: bl IsContest lsls r0, 24 cmp r0, 0 bne _0815BAF6 ldr r4, =gBattleAnimAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815BAF6 ldr r0, =gTasks mov r2, r8 lsls r1, r2, 2 add r1, r8 lsls r1, 3 adds r1, r0 movs r6, 0x1C ldrsh r0, [r1, r6] cmp r0, 0 bne _0815BAF6 ldrb r0, [r4] ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r2, [r1] lsls r1, r0, 2 adds r1, r2 ldrh r1, [r1, 0x2] bl SetBattlerShadowSpriteCallback _0815BAF6: mov r0, r8 bl DestroyAnimVisualTask _0815BAFC: add sp, 0x10 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815B7D0 thumb_func_start sub_815BB18 sub_815BB18: @ 815BB18 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r4, =gBattleAnimArgs ldr r3, =gSprites ldr r2, =gBattlerSpriteIds ldr r1, =gBattleAnimAttacker ldrb r1, [r1] adds r1, r2 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r3 adds r1, 0x3E ldrb r1, [r1] lsls r1, 29 lsrs r1, 31 strh r1, [r4, 0xE] bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815BB18 thumb_func_start sub_815BB58 sub_815BB58: @ 815BB58 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] ldr r1, =gBattleAnimTarget ldrb r1, [r1] movs r2, 0x1 bl HandleSpeciesGfxDataChange adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815BB58 thumb_func_start sub_815BB84 sub_815BB84: @ 815BB84 push {r4,lr} sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r2, r1, 0 cmp r0, 0x4 bls _0815BBA2 b _0815BDF2 _0815BBA2: lsls r0, 2 ldr r1, =_0815BBB4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815BBB4: .4byte _0815BBC8 .4byte _0815BCB8 .4byte _0815BD08 .4byte _0815BD72 .4byte _0815BDA6 _0815BBC8: ldr r1, =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 bne _0815BC02 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute _0815BC02: mov r0, sp bl sub_80A6B30 ldr r1, =gUnknown_08C2A6EC mov r0, sp movs r2, 0 bl sub_80A6D60 bl IsContest lsls r0, 24 cmp r0, 0 beq _0815BC34 ldr r1, =gBattle_BG1_X ldr r3, =0x0000ffc8 b _0815BC5C .pool _0815BC34: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815BC58 ldr r1, =gBattle_BG1_X ldr r2, =0x0000ff79 adds r0, r2, 0 b _0815BC5E .pool _0815BC58: ldr r1, =gBattle_BG1_X ldr r3, =0x0000fff6 _0815BC5C: adds r0, r3, 0 _0815BC5E: strh r0, [r1] ldr r1, =gBattle_BG1_Y movs r0, 0 strh r0, [r1] mov r0, sp ldrb r0, [r0, 0x9] ldr r1, =gUnknown_08C2A634 mov r2, sp ldrh r2, [r2, 0xA] bl sub_80A6CC0 ldr r0, =gUnknown_08C2A6D4 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] ldrh r0, [r1, 0x8] adds r0, 0x1 b _0815BD8E .pool _0815BCB8: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0x10] adds r1, r0, 0x1 strh r1, [r4, 0x10] lsls r0, 16 cmp r0, 0 bgt _0815BCCE b _0815BDF2 _0815BCCE: movs r0, 0 strh r0, [r4, 0x10] ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _0815BCE4 movs r0, 0xC strh r0, [r4, 0xA] _0815BCE4: ldrh r0, [r4, 0xA] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0xC bne _0815BDF2 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815BDF2 _0815BD08: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 cmp r0, 0 bge _0815BD20 movs r0, 0 strh r0, [r4, 0xA] _0815BD20: ldrh r0, [r4, 0xA] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 bne _0815BDF2 ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE460 movs r3, 0xC ldrsh r0, [r4, r3] adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r1, [r4, 0x1C] adds r0, r1 strh r0, [r2] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _0815BD6C strh r0, [r4, 0x8] b _0815BDF2 .pool _0815BD6C: movs r0, 0x3 strh r0, [r4, 0x8] b _0815BDF2 _0815BD72: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r2 ldrh r0, [r1, 0xE] adds r0, 0x1 strh r0, [r1, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _0815BDF2 movs r0, 0 strh r0, [r1, 0xE] movs r0, 0x1 _0815BD8E: strh r0, [r1, 0x8] movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xE4 bl PlaySE12WithPanning b _0815BDF2 _0815BDA6: mov r0, sp bl sub_80A6B30 mov r0, sp ldrb r0, [r0, 0x9] bl sub_80A6C68 bl IsContest lsls r0, 24 cmp r0, 0 bne _0815BDC8 movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _0815BDC8: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimVisualTask _0815BDF2: add sp, 0x10 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815BB84 thumb_func_start sub_815BE04 sub_815BE04: @ 815BE04 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r7, r0, 0 bl Random2 lsls r0, 16 movs r1, 0xFC lsls r1, 14 ands r1, r0 lsrs r5, r1, 16 adds r1, r5, 0 cmp r1, 0x1F ble _0815BE2E movs r0, 0x20 subs r0, r1 lsls r0, 16 lsrs r5, r0, 16 _0815BE2E: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r5 strh r0, [r7, 0x20] ldrb r0, [r4] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 strh r0, [r7, 0x22] ldr r1, =gBattleAnimArgs ldrh r0, [r1] strh r0, [r7, 0x30] ldrh r0, [r1, 0x2] strh r0, [r7, 0x32] ldr r4, =gUnknown_085CE48C movs r0, 0x20 ldrsh r1, [r7, r0] movs r0, 0x22 ldrsh r2, [r7, r0] adds r5, r7, 0 adds r5, 0x43 ldrb r3, [r5] adds r3, 0x1 lsls r3, 24 lsrs r3, 24 adds r0, r4, 0 bl CreateSprite mov r9, r0 mov r1, r9 lsls r1, 24 lsrs r1, 24 mov r9, r1 movs r0, 0x20 ldrsh r1, [r7, r0] movs r0, 0x22 ldrsh r2, [r7, r0] ldrb r3, [r5] adds r3, 0x1 lsls r3, 24 lsrs r3, 24 adds r0, r4, 0 bl CreateSprite mov r8, r0 mov r1, r8 lsls r1, 24 lsrs r1, 24 mov r8, r1 mov r0, r9 lsls r2, r0, 4 add r2, r9 lsls r2, 2 ldr r1, =gSprites mov r10, r1 adds r5, r2, r1 adds r0, r5, 0 movs r1, 0x1 str r2, [sp] bl StartSpriteAnim mov r0, r8 lsls r6, r0, 4 add r6, r8 lsls r6, 2 mov r1, r10 adds r4, r6, r1 adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim ldr r1, =gBattleAnimArgs ldrh r0, [r1] strh r0, [r5, 0x30] ldrh r0, [r1, 0x2] strh r0, [r5, 0x32] ldrh r0, [r1] strh r0, [r4, 0x30] ldrh r0, [r1, 0x2] strh r0, [r4, 0x32] ldr r0, =0x0000ffff strh r0, [r5, 0x3C] movs r0, 0x1 negs r0, r0 strh r0, [r4, 0x3C] adds r5, 0x3E ldrb r0, [r5] movs r1, 0x4 orrs r0, r1 strb r0, [r5] adds r4, 0x3E ldrb r0, [r4] orrs r0, r1 strb r0, [r4] movs r0, 0x1C add r10, r0 ldr r2, [sp] add r2, r10 ldr r0, =sub_815C050 str r0, [r2] add r6, r10 str r0, [r6] mov r1, r9 strh r1, [r7, 0x3A] mov r0, r8 strh r0, [r7, 0x3C] ldr r0, =sub_815BF44 str r0, [r7, 0x1C] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815BE04 thumb_func_start sub_815BF44 sub_815BF44: @ 815BF44 push {lr} adds r3, r0, 0 ldrh r2, [r3, 0x32] ldrh r0, [r3, 0x34] adds r2, r0 lsls r0, r2, 16 asrs r0, 24 ldrh r1, [r3, 0x26] subs r1, r0 strh r1, [r3, 0x26] movs r0, 0xFF ands r2, r0 strh r2, [r3, 0x34] movs r2, 0x36 ldrsh r0, [r3, r2] cmp r0, 0 bne _0815BF92 lsls r0, r1, 16 asrs r0, 16 movs r1, 0x8 negs r1, r1 cmp r0, r1 bge _0815BF92 ldr r2, =gSprites movs r0, 0x3A ldrsh r1, [r3, 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] ldrh r0, [r3, 0x36] adds r0, 0x1 strh r0, [r3, 0x36] _0815BF92: movs r1, 0x36 ldrsh r0, [r3, r1] cmp r0, 0x1 bne _0815BFC6 movs r2, 0x26 ldrsh r1, [r3, r2] movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _0815BFC6 ldr r2, =gSprites movs r0, 0x3C ldrsh r1, [r3, 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] ldrh r0, [r3, 0x36] adds r0, 0x1 strh r0, [r3, 0x36] _0815BFC6: ldrh r0, [r3, 0x30] subs r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0815BFE8 adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815BFF4 str r0, [r3, 0x1C] _0815BFE8: pop {r0} bx r0 .pool thumb_func_end sub_815BF44 thumb_func_start sub_815BFF4 sub_815BFF4: @ 815BFF4 push {r4-r6,lr} adds r4, r0, 0 ldr r5, =gSprites movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r3, r0, 2 adds r6, r5, 0 adds r6, 0x1C adds r0, r3, r6 ldr r2, [r0] ldr r0, =SpriteCallbackDummy cmp r2, r0 bne _0815C040 movs r1, 0x3C ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 ldr r0, [r1] cmp r0, r2 bne _0815C040 adds r0, r3, r5 bl DestroySprite movs r0, 0x3C ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite adds r0, r4, 0 bl DestroyAnimSprite _0815C040: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815BFF4 thumb_func_start sub_815C050 sub_815C050: @ 815C050 push {lr} adds r3, r0, 0 movs r0, 0x3E adds r0, r3 mov r12, r0 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _0815C09C ldrh r2, [r3, 0x32] ldrh r1, [r3, 0x34] adds r2, r1 lsls r1, r2, 16 asrs r1, 24 ldrh r0, [r3, 0x26] subs r0, r1 strh r0, [r3, 0x26] movs r0, 0xFF ands r2, r0 strh r2, [r3, 0x34] ldrh r0, [r3, 0x30] subs r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0815C09C mov r1, r12 ldrb r0, [r1] movs r1, 0x4 orrs r0, r1 mov r1, r12 strb r0, [r1] ldr r0, =SpriteCallbackDummy str r0, [r3, 0x1C] _0815C09C: pop {r0} bx r0 .pool thumb_func_end sub_815C050 thumb_func_start sub_815C0A4 sub_815C0A4: @ 815C0A4 push {r4-r6,lr} sub sp, 0x10 lsls r0, 24 lsrs r6, r0, 24 ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r4, r1, 0 cmp r0, 0x5 bls _0815C0C2 b _0815C396 _0815C0C2: lsls r0, 2 ldr r1, =_0815C0D4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815C0D4: .4byte _0815C0EC .4byte _0815C224 .4byte _0815C2AC .4byte _0815C2E2 .4byte _0815C310 .4byte _0815C34A _0815C0EC: ldr r1, =0x00003f42 movs r0, 0x50 bl SetGpuReg ldr r1, =0x00000d03 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 bne _0815C124 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute _0815C124: mov r0, sp bl sub_80A6B30 ldr r1, =gUnknown_08C2A6EC mov r0, sp movs r2, 0 bl sub_80A6D60 bl IsContest lsls r0, 24 cmp r0, 0 beq _0815C15C ldr r1, =gBattle_BG1_X ldr r3, =0x0000ffc8 adds r0, r3, 0 b _0815C1CA .pool _0815C15C: ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerPosition lsls r0, 24 lsrs r4, r0, 24 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815C1B4 cmp r4, 0x1 bne _0815C180 ldr r1, =gBattle_BG1_X ldr r2, =0x0000ff65 adds r0, r2, 0 strh r0, [r1] _0815C180: cmp r4, 0x3 bne _0815C18C ldr r1, =gBattle_BG1_X ldr r3, =0x0000ff8d adds r0, r3, 0 strh r0, [r1] _0815C18C: cmp r4, 0 bne _0815C196 ldr r1, =gBattle_BG1_X movs r0, 0xE strh r0, [r1] _0815C196: cmp r4, 0x2 bne _0815C1CC ldr r1, =gBattle_BG1_X ldr r2, =0x0000ffec b _0815C1C8 .pool _0815C1B4: cmp r4, 0x1 bne _0815C1C0 ldr r1, =gBattle_BG1_X ldr r3, =0x0000ff79 adds r0, r3, 0 strh r0, [r1] _0815C1C0: cmp r4, 0 bne _0815C1CC ldr r1, =gBattle_BG1_X ldr r2, =0x0000fff6 _0815C1C8: adds r0, r2, 0 _0815C1CA: strh r0, [r1] _0815C1CC: ldr r1, =gBattle_BG1_Y movs r0, 0 strh r0, [r1] mov r0, sp ldrb r0, [r0, 0x9] ldr r1, =gUnknown_08C2A634 mov r2, sp ldrh r2, [r2, 0xA] bl sub_80A6CC0 ldr r0, =gUnknown_08C2A6D4 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] b _0815C2A4 .pool _0815C224: ldr r1, =gTasks lsls r4, r6, 2 adds r0, r4, r6 lsls r0, 3 adds r5, r0, r1 movs r0, 0 strh r0, [r5, 0xE] ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815C268 ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE4A4 movs r3, 0xC ldrsh r0, [r5, r3] adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r5, [r5, 0x1C] adds r0, r5 b _0815C27A .pool _0815C268: ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE4A4 movs r3, 0xC ldrsh r0, [r5, r3] adds r0, r1 movs r1, 0 ldrsb r1, [r0, r1] ldrh r0, [r5, 0x1C] subs r0, r1 _0815C27A: strh r0, [r2] ldr r0, =gTasks adds r1, r4, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xC] adds r0, 0x1 strh r0, [r1, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _0815C2A4 strh r0, [r1, 0x8] b _0815C396 .pool _0815C2A4: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0815C396 _0815C2AC: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r4 ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bgt _0815C2C6 movs r0, 0x5 strh r0, [r4, 0xA] _0815C2C6: ldrh r1, [r4, 0xA] lsls r1, 8 movs r0, 0x3 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x5 bne _0815C396 b _0815C302 _0815C2E2: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r4 ldrh r1, [r4, 0xE] adds r1, 0x1 strh r1, [r4, 0xE] lsls r1, 16 asrs r1, 16 ldr r2, =gUnknown_085CE4A8 movs r3, 0xC ldrsh r0, [r4, r3] adds r0, r2 ldrb r0, [r0] cmp r1, r0 ble _0815C396 _0815C302: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815C396 .pool _0815C310: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r4 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xD ble _0815C32A movs r0, 0xD strh r0, [r4, 0xA] _0815C32A: ldrh r1, [r4, 0xA] lsls r1, 8 movs r0, 0x3 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0xD bne _0815C396 movs r0, 0x1 strh r0, [r4, 0x8] b _0815C396 _0815C34A: mov r0, sp bl sub_80A6B30 mov r0, sp ldrb r0, [r0, 0x9] bl sub_80A6C68 bl IsContest lsls r0, 24 cmp r0, 0 bne _0815C36C movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _0815C36C: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r6, 0 bl DestroyAnimVisualTask _0815C396: add sp, 0x10 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815C0A4 thumb_func_start sub_815C3A8 sub_815C3A8: @ 815C3A8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815C3E8 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE4B0 adds r0, r4, 0 bl sub_80A7CFC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815C3FA .pool _0815C3E8: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815C3FA adds r0, r5, 0 bl DestroyAnimVisualTask _0815C3FA: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815C3A8 thumb_func_start sub_815C400 sub_815C400: @ 815C400 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] movs r2, 0x2E ldrsh r1, [r4, r2] cmp r1, 0 bne _0815C41E adds r0, r4, 0 movs r1, 0 bl sub_80A69CC ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815C472 _0815C41E: adds r0, 0x1 strh r0, [r4, 0x2E] cmp r1, 0x14 ble _0815C472 ldrh r0, [r4, 0x30] adds r0, 0xA0 strh r0, [r4, 0x30] ldrh r0, [r4, 0x32] adds r0, 0x80 strh r0, [r4, 0x32] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815C450 ldrh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 negs r0, r0 b _0815C456 .pool _0815C450: ldrh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 _0815C456: strh r0, [r4, 0x24] ldrh r0, [r4, 0x32] lsls r0, 16 asrs r0, 24 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] lsls r0, 16 asrs r0, 16 cmp r0, 0x40 ble _0815C472 adds r0, r4, 0 bl DestroyAnimSprite _0815C472: pop {r4} pop {r0} bx r0 thumb_func_end sub_815C400 thumb_func_start sub_815C478 sub_815C478: @ 815C478 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 ldr r5, =gBattleAnimArgs movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0 bne _0815C4A4 adds r0, r2, 0 bl DestroyAnimVisualTask b _0815C538 .pool _0815C4A4: movs r1, 0x4 ldrsh r0, [r5, r1] cmp r0, 0 bge _0815C4B0 movs r0, 0 strh r0, [r5, 0x4] _0815C4B0: movs r1, 0x4 ldrsh r0, [r5, r1] cmp r0, 0x2 ble _0815C4BC movs r0, 0x2 strh r0, [r5, 0x4] _0815C4BC: movs r0, 0 strh r0, [r4, 0x8] strh r0, [r4, 0xA] strh r0, [r4, 0xC] movs r0, 0x4 ldrsh r1, [r5, r0] lsls r1, 1 movs r0, 0x8 subs r0, r1 strh r0, [r4, 0xE] movs r1, 0x4 ldrsh r0, [r5, r1] lsls r0, 7 movs r1, 0x80 lsls r1, 1 adds r0, r1 strh r0, [r4, 0x10] ldrh r0, [r5, 0x4] adds r0, 0x2 strh r0, [r4, 0x12] ldrh r0, [r5, 0x2] subs r0, 0x1 strh r0, [r4, 0x14] ldrb r0, [r5] bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0 bne _0815C508 ldr r0, =gBattleAnimAttacker b _0815C50A .pool _0815C508: ldr r0, =gBattleAnimTarget _0815C50A: ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815C528 movs r1, 0x10 ldrsh r0, [r4, r1] negs r0, r0 strh r0, [r4, 0x10] movs r1, 0x12 ldrsh r0, [r4, r1] negs r0, r0 strh r0, [r4, 0x12] _0815C528: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_80A7270 ldr r0, =sub_815C548 str r0, [r4] _0815C538: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815C478 thumb_func_start sub_815C548 sub_815C548: @ 815C548 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r6, [r4, r0] cmp r6, 0x1 beq _0815C5D0 cmp r6, 0x1 bgt _0815C570 cmp r6, 0 beq _0815C57C b _0815C6A8 .pool _0815C570: cmp r6, 0x2 beq _0815C628 cmp r6, 0x3 bne _0815C57A b _0815C698 _0815C57A: b _0815C6A8 _0815C57C: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0x12] ldrh r2, [r0, 0x24] adds r1, r2 strh r1, [r0, 0x24] ldrh r0, [r4, 0xC] ldrh r1, [r4, 0x10] subs r0, r1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 bl obj_id_set_rotscale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A73A0 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 movs r2, 0xE ldrsh r1, [r4, r2] cmp r0, r1 blt _0815C6A8 strh r6, [r4, 0xA] b _0815C690 .pool _0815C5D0: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x24] ldrh r2, [r4, 0x12] subs r1, r2 strh r1, [r0, 0x24] ldrh r0, [r4, 0x10] ldrh r1, [r4, 0xC] adds r0, r1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 bl obj_id_set_rotscale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A73A0 ldrh r1, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0xA] lsls r1, 16 asrs r1, 16 movs r2, 0xE ldrsh r0, [r4, r2] lsls r0, 1 cmp r1, r0 blt _0815C6A8 movs r0, 0 strh r0, [r4, 0xA] b _0815C690 .pool _0815C628: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0x12] ldrh r2, [r0, 0x24] adds r1, r2 movs r5, 0 strh r1, [r0, 0x24] ldrh r0, [r4, 0xC] ldrh r1, [r4, 0x10] subs r0, r1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 bl obj_id_set_rotscale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A73A0 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 movs r2, 0xE ldrsh r1, [r4, r2] cmp r0, r1 blt _0815C6A8 ldrh r1, [r4, 0x14] movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0 beq _0815C690 subs r0, r1, 0x1 strh r0, [r4, 0x14] strh r5, [r4, 0xA] strh r5, [r4, 0x8] b _0815C6A8 .pool _0815C690: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815C6A8 _0815C698: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A7344 adds r0, r5, 0 bl DestroyAnimVisualTask _0815C6A8: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_815C548 thumb_func_start sub_815C6B0 sub_815C6B0: @ 815C6B0 push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0815C6D4 strh r0, [r4, 0x20] ldr r1, =gBattleAnimArgs ldrh r0, [r1] b _0815C6DE .pool _0815C6D4: movs r0, 0xF0 strh r0, [r4, 0x20] ldr r1, =gBattleAnimArgs ldrh r0, [r1] subs r0, 0x1E _0815C6DE: strh r0, [r4, 0x22] ldrh r0, [r1, 0x4] strh r0, [r4, 0x32] ldrb r1, [r1, 0x2] adds r0, r4, 0 bl StartSpriteAnim ldr r0, =sub_815C700 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815C6B0 thumb_func_start sub_815C700 sub_815C700: @ 815C700 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x3 strh r0, [r4, 0x2E] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815C744 ldrh r1, [r4, 0x20] adds r1, 0x5 strh r1, [r4, 0x20] ldrh r0, [r4, 0x22] subs r0, 0x1 strh r0, [r4, 0x22] lsls r1, 16 asrs r1, 16 cmp r1, 0xF0 ble _0815C732 adds r0, r4, 0 bl DestroyAnimSprite _0815C732: ldrh r1, [r4, 0x2E] movs r0, 0xFF ands r0, r1 movs r1, 0x10 bl Sin b _0815C768 .pool _0815C744: ldrh r1, [r4, 0x20] subs r1, 0x5 strh r1, [r4, 0x20] ldrh r0, [r4, 0x22] adds r0, 0x1 strh r0, [r4, 0x22] lsls r1, 16 cmp r1, 0 bge _0815C75C adds r0, r4, 0 bl DestroyAnimSprite _0815C75C: ldrh r1, [r4, 0x2E] movs r0, 0xFF ands r0, r1 movs r1, 0x10 bl Cos _0815C768: strh r0, [r4, 0x26] pop {r4} pop {r0} bx r0 thumb_func_end sub_815C700 thumb_func_start sub_815C770 sub_815C770: @ 815C770 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, =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, 0x20 strh r0, [r4, 0x20] movs r0, 0x40 strh r0, [r4, 0x22] movs r0, 0x80 lsls r0, 4 strh r0, [r4, 0x24] ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] movs r1, 0 bl sub_80A7270 ldr r0, =sub_815C7C4 str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815C770 thumb_func_start sub_815C7C4 sub_815C7C4: @ 815C7C4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks adds r7, r0, r1 movs r1, 0x8 ldrsh r0, [r7, r1] mov r8, r0 cmp r0, 0x1 beq _0815C860 cmp r0, 0x1 bgt _0815C7F4 cmp r0, 0 beq _0815C7FC b _0815C8DA .pool _0815C7F4: mov r2, r8 cmp r2, 0x2 beq _0815C8C8 b _0815C8DA _0815C7FC: movs r3, 0x80 lsls r3, 2 adds r0, r3, 0 ldrh r1, [r7, 0xC] adds r2, r0, r1 strh r2, [r7, 0xC] lsls r0, r2, 16 asrs r0, 16 ldrh r3, [r7, 0x24] mov r8, r3 movs r3, 0x24 ldrsh r1, [r7, r3] cmp r0, r1 blt _0815C8DA mov r0, r8 subs r5, r0, r2 lsls r5, 16 asrs r5, 16 adds r6, r1, 0 lsls r6, 1 adds r0, r5, 0 adds r1, r6, 0 bl __divsi3 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 adds r1, r6, 0 bl __modsi3 lsls r0, 16 lsrs r0, 16 lsls r4, 16 asrs r4, 16 movs r1, 0x1 ands r4, r1 cmp r4, 0 bne _0815C854 lsls r0, 16 asrs r0, 16 mov r2, r8 subs r0, r2, r0 b _0815C8B2 _0815C854: lsls r0, 16 asrs r0, 16 mov r3, r8 subs r0, r3 strh r0, [r7, 0xC] b _0815C8DA _0815C860: ldr r1, =0xfffffe00 adds r0, r1, 0 ldrh r2, [r7, 0xC] adds r1, r0, r2 strh r1, [r7, 0xC] movs r3, 0xC ldrsh r0, [r7, r3] movs r2, 0x24 ldrsh r6, [r7, r2] cmn r0, r6 bgt _0815C8DA ldrh r3, [r7, 0x24] mov r9, r3 mov r0, r9 subs r4, r0, r1 lsls r4, 16 asrs r4, 16 lsls r6, 1 adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 adds r0, r4, 0 adds r1, r6, 0 bl __modsi3 lsls r0, 16 lsrs r2, r0, 16 mov r1, r8 ands r1, r5 lsls r0, r1, 16 asrs r1, r0, 16 cmp r1, 0 bne _0815C8BC lsls r0, r2, 16 asrs r0, 16 mov r2, r9 subs r0, r2 _0815C8B2: strh r0, [r7, 0xC] strh r1, [r7, 0x8] b _0815C8DA .pool _0815C8BC: lsls r0, r2, 16 asrs r0, 16 mov r3, r9 subs r0, r3, r0 strh r0, [r7, 0xC] b _0815C8DA _0815C8C8: ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A7344 adds r0, r4, 0 bl DestroyAnimVisualTask b _0815C950 _0815C8DA: ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 1 ldrh r3, [r7, 0xC] adds r1, r2, 0 bl obj_id_set_rotscale ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A73A0 ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r2 movs r2, 0xC ldrsh r0, [r7, r2] cmp r0, 0 bge _0815C90E adds r0, 0x3F _0815C90E: asrs r0, 6 negs r0, r0 strh r0, [r1, 0x24] ldrh r0, [r7, 0xA] adds r0, 0x1 strh r0, [r7, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 ble _0815C950 ldrh r1, [r7, 0x20] movs r3, 0x20 ldrsh r0, [r7, r3] cmp r0, 0 beq _0815C94C subs r0, r1, 0x1 strh r0, [r7, 0x20] ldrh r0, [r7, 0x24] ldrh r1, [r7, 0x22] subs r0, r1 strh r0, [r7, 0x24] lsls r0, 16 asrs r0, 16 cmp r0, 0xF bgt _0815C950 movs r0, 0x10 strh r0, [r7, 0x24] b _0815C950 .pool _0815C94C: movs r0, 0x2 strh r0, [r7, 0x8] _0815C950: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815C7C4 thumb_func_start sub_815C95C sub_815C95C: @ 815C95C push {r4-r6,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 bne _0815C9BC ldr r6, =gBattleAnimArgs movs r2, 0x4 ldrsh r0, [r6, r2] cmp r0, 0 bne _0815C990 ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] _0815C990: ldrh r0, [r6] ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x20] ldrh r1, [r6, 0x2] ldrh r2, [r5, 0x22] adds r0, r1, r2 strh r0, [r5, 0x22] movs r0, 0x80 strh r0, [r5, 0x30] movs r0, 0xC0 lsls r0, 2 strh r0, [r5, 0x32] strh r1, [r5, 0x34] ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] b _0815CA1A .pool _0815C9BC: ldrh r1, [r5, 0x30] lsls r0, r1, 16 asrs r0, 24 strh r0, [r5, 0x24] ldrh r0, [r5, 0x32] lsls r0, 16 asrs r0, 24 ldrh r2, [r5, 0x26] adds r0, r2 strh r0, [r5, 0x26] movs r2, 0x36 ldrsh r0, [r5, r2] adds r4, r1, 0 cmp r0, 0 bne _0815C9FA movs r0, 0x26 ldrsh r1, [r5, r0] movs r2, 0x34 ldrsh r0, [r5, r2] cmn r1, r0 ble _0815C9FA movs r0, 0x1 strh r0, [r5, 0x36] movs r1, 0x32 ldrsh r0, [r5, r1] negs r0, r0 movs r1, 0x3 bl __divsi3 lsls r0, 1 strh r0, [r5, 0x32] _0815C9FA: adds r0, r4, 0 adds r0, 0xC0 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] adds r0, 0x80 strh r0, [r5, 0x32] adds r0, r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0815CA1A adds r0, r5, 0 bl DestroyAnimSprite _0815CA1A: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_815C95C thumb_func_start sub_815CA20 sub_815CA20: @ 815CA20 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 ldr r1, =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r2, r0, r1 movs r1, 0x8 ldrsh r0, [r2, r1] cmp r0, 0 bne _0815CB2C ldr r0, =gBattleAnimArgs movs r3, 0 ldrsh r1, [r0, r3] mov r8, r0 cmp r1, 0 bne _0815CA5C ldr r0, =gBattleAnimAttacker b _0815CA5E .pool _0815CA5C: ldr r0, =gBattleAnimTarget _0815CA5E: ldrb r0, [r0] strh r0, [r2, 0x1E] mov r1, r8 ldrb r0, [r1] bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gTasks lsls r4, r7, 2 adds r0, r4, r7 lsls r0, 3 adds r6, r0, r1 strh r5, [r6, 0x1C] adds r0, r5, 0 movs r1, 0 bl sub_80A7270 mov r2, r8 movs r3, 0x2 ldrsh r0, [r2, r3] cmp r0, 0x1 beq _0815CAC0 cmp r0, 0x1 bgt _0815CAA0 cmp r0, 0 beq _0815CAA8 lsls r2, r5, 4 b _0815CB08 .pool _0815CAA0: cmp r0, 0x2 beq _0815CACA lsls r2, r5, 4 b _0815CB08 _0815CAA8: movs r2, 0xA0 lsls r2, 1 adds r0, r5, 0 movs r1, 0xE0 movs r3, 0 bl obj_id_set_rotscale adds r0, r5, 0 bl sub_80A7E6C lsls r2, r5, 4 b _0815CB08 _0815CAC0: movs r2, 0x98 lsls r2, 1 movs r3, 0xF0 lsls r3, 4 b _0815CAD2 _0815CACA: movs r2, 0x98 lsls r2, 1 movs r3, 0xF1 lsls r3, 8 _0815CAD2: adds r0, r5, 0 movs r1, 0xD0 bl obj_id_set_rotscale adds r0, r5, 0 bl sub_80A7E6C bl IsContest lsls r0, 24 cmp r0, 0 bne _0815CAF8 ldrb r0, [r6, 0x1E] bl GetBattlerSide lsls r0, 24 lsls r2, r5, 4 cmp r0, 0 bne _0815CB08 _0815CAF8: ldr r0, =gSprites lsls r2, r5, 4 adds r1, r2, r5 lsls r1, 2 adds r1, r0 ldrh r0, [r1, 0x26] adds r0, 0x10 strh r0, [r1, 0x26] _0815CB08: ldr r1, =gSprites adds r0, r2, r5 lsls r0, 2 adds r0, r1 movs r1, 0x2 strh r1, [r0, 0x24] ldr r0, =gTasks adds r1, r4, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0815CB78 .pool _0815CB2C: ldrb r5, [r2, 0x1C] ldrh r0, [r2, 0xC] adds r0, 0x1 movs r4, 0 strh r0, [r2, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _0815CB50 strh r4, [r2, 0xC] ldr r0, =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 ldrh r0, [r1, 0x24] negs r0, r0 strh r0, [r1, 0x24] _0815CB50: ldrh r0, [r2, 0xA] adds r0, 0x1 strh r0, [r2, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xD bne _0815CB78 adds r0, r5, 0 bl sub_80A7344 ldr r1, =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 strh r4, [r0, 0x24] strh r4, [r0, 0x26] adds r0, r7, 0 bl DestroyAnimVisualTask _0815CB78: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815CA20 thumb_func_start sub_815CB88 sub_815CB88: @ 815CB88 push {r4,r5,lr} adds r4, r0, 0 bl Random2 lsls r0, 16 lsrs r0, 16 movs r1, 0xC bl __umodsi3 lsls r0, 24 lsrs r0, 24 ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, r0 ldr r3, =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] bl Random2 ldr r5, =0x000001ff ands r5, r0 bl Random2 movs r1, 0xFF ands r1, r0 movs r0, 0x1 ands r0, r5 cmp r0, 0 beq _0815CBE0 movs r2, 0xBC lsls r2, 3 adds r0, r5, r2 b _0815CBE8 .pool _0815CBE0: movs r3, 0xBC lsls r3, 3 adds r0, r3, 0 subs r0, r5 _0815CBE8: strh r0, [r4, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0815CBFA movs r2, 0x90 lsls r2, 3 adds r0, r1, r2 b _0815CC02 _0815CBFA: movs r3, 0x90 lsls r3, 3 adds r0, r3, 0 subs r0, r1 _0815CC02: strh r0, [r4, 0x30] ldr r0, =gBattleAnimArgs ldrh r0, [r0] strh r0, [r4, 0x32] lsls r0, 16 cmp r0, 0 bne _0815CC1C ldr r0, =0x0000fff8 b _0815CC1E .pool _0815CC1C: movs r0, 0xF8 _0815CC1E: strh r0, [r4, 0x20] movs r0, 0x68 strh r0, [r4, 0x22] ldr r0, =sub_815CC34 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815CB88 thumb_func_start sub_815CC34 sub_815CC34: @ 815CC34 push {r4,lr} adds r4, r0, 0 movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815CC4C ldrh r3, [r4, 0x2E] lsls r0, r3, 16 asrs r0, 24 ldrh r1, [r4, 0x24] adds r0, r1 b _0815CC56 _0815CC4C: ldrh r3, [r4, 0x2E] lsls r1, r3, 16 asrs r1, 24 ldrh r0, [r4, 0x24] subs r0, r1 _0815CC56: strh r0, [r4, 0x24] ldrh r2, [r4, 0x30] lsls r1, r2, 16 asrs r1, 24 ldrh r0, [r4, 0x26] subs r0, r1 strh r0, [r4, 0x26] adds r0, r3, 0 subs r0, 0x16 strh r0, [r4, 0x2E] adds r1, r2, 0 subs r1, 0x30 strh r1, [r4, 0x30] lsls r0, 16 cmp r0, 0 bge _0815CC7A movs r0, 0 strh r0, [r4, 0x2E] _0815CC7A: ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x1F bne _0815CC8E adds r0, r4, 0 bl DestroyAnimSprite _0815CC8E: pop {r4} pop {r0} bx r0 thumb_func_end sub_815CC34 thumb_func_start sub_815CC94 sub_815CC94: @ 815CC94 push {r4,r5,lr} adds r5, r0, 0 ldr r1, =0x00001f3f movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r4, =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 bl SetGpuReg ldrh r1, [r4] movs r0, 0x44 bl SetGpuReg ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r5, 0x2E] adds r0, r5, 0 movs r1, 0 bl sub_80A6980 ldrb r1, [r5, 0x1] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x8 orrs r0, r1 strb r0, [r5, 0x1] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, =sub_815CD0C str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815CC94 thumb_func_start sub_815CD0C sub_815CD0C: @ 815CD0C push {r4,lr} adds r4, r0, 0 movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0815CD4A cmp r0, 0x1 bgt _0815CD22 cmp r0, 0 beq _0815CD2C b _0815CDAA _0815CD22: cmp r0, 0x2 beq _0815CD60 cmp r0, 0x3 beq _0815CD82 b _0815CDAA _0815CD2C: 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 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0815CDAA b _0815CD7A _0815CD4A: ldrh r0, [r4, 0x2E] subs r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 cmp r0, 0 bne _0815CDAA adds r0, r4, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim b _0815CD7A _0815CD60: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0815CDAA adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _0815CD7A: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] b _0815CDAA _0815CD82: ldr r1, =0x00003f3f movs r0, 0x4A bl SetGpuReg movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimSprite _0815CDAA: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815CD0C thumb_func_start sub_815CDB4 sub_815CDB4: @ 815CDB4 push {r4,r5,lr} adds r4, r0, 0 ldr r5, =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] ldr r1, =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x2] strh r0, [r4, 0x30] ldr r1, =sub_815CDFC str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815CDB4 thumb_func_start sub_815CDFC sub_815CDFC: @ 815CDFC 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 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] lsls r1, r0, 16 cmp r0, 0x3F bls _0815CE36 asrs r0, r1, 16 cmp r0, 0xC3 ble _0815CE48 _0815CE36: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 b _0815CE52 .pool _0815CE48: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A82E4 adds r0, 0x1 _0815CE52: adds r1, r4, 0 adds r1, 0x43 strb r0, [r1] movs r3, 0x38 ldrsh r2, [r4, r3] cmp r2, 0 bne _0815CE98 movs r1, 0x80 lsls r1, 3 adds r0, r1, 0 ldrh r3, [r4, 0x32] adds r0, r3 strh r0, [r4, 0x32] movs r1, 0x80 lsls r1, 1 adds r0, r1, 0 ldrh r3, [r4, 0x34] adds r0, r3 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 _0815CEC8 strh r2, [r4, 0x36] movs r0, 0x1 strh r0, [r4, 0x38] b _0815CEC8 .pool _0815CE98: cmp r2, 0x1 bne _0815CEC8 ldr r1, =0xfffffc00 adds r0, r1, 0 ldrh r2, [r4, 0x32] adds r0, r2 strh r0, [r4, 0x32] ldr r3, =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 _0815CEC8 adds r0, r4, 0 bl DestroyAnimSprite _0815CEC8: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815CDFC thumb_func_start sub_815CED8 sub_815CED8: @ 815CED8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x18] movs r0, 0 bl GetAnimBattlerSpriteId bl IsContest lsls r0, 24 cmp r0, 0 beq _0815CF18 movs r0, 0x1 str r0, [sp, 0x1C] ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldr r1, [r0, 0x10] mov r9, r1 ldr r2, [r0, 0xC] mov r8, r2 ldrh r6, [r0, 0x2] movs r3, 0x14 b _0815D058 .pool _0815CF18: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815CFC4 movs r0, 0 str r0, [sp, 0x1C] ldr r6, =gBattlerPartyIndexes ldr r4, =gBattleAnimTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r7, =gPlayerParty adds r0, r7 movs r1, 0 bl GetMonData mov r9, r0 ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r7 movs r1, 0x1 bl GetMonData mov r8, r0 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] lsls r0, r2, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _0815CFBC adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815CF9C ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r7 b _0815CFAA .pool _0815CF9C: ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 ldr r1, =gEnemyParty adds r0, r1 _0815CFAA: movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r6, r0, 16 b _0815CFBE .pool _0815CFBC: ldrh r6, [r1, 0x2] _0815CFBE: movs r1, 0x14 mov r10, r1 b _0815D05A _0815CFC4: movs r2, 0x1 str r2, [sp, 0x1C] ldr r6, =gBattlerPartyIndexes ldr r4, =gBattleAnimTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r7, =gEnemyParty adds r0, r7 movs r1, 0 bl GetMonData mov r9, r0 ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r7 movs r1, 0x1 bl GetMonData mov r8, r0 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] lsls r0, r2, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _0815D054 adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815D03C ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 b _0815D048 .pool _0815D03C: ldrb r0, [r4] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r7 _0815D048: movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r6, r0, 16 b _0815D056 _0815D054: ldrh r6, [r1, 0x2] _0815D056: ldr r3, =0x0000ffec _0815D058: mov r10, r3 _0815D05A: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A8328 lsls r0, 24 lsrs r7, r0, 24 ldr r5, =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 mov r2, r10 lsls r1, r2, 16 asrs r1, 16 adds r4, r1 lsls r4, 16 asrs r4, 16 lsrs r0, 24 str r0, [sp] movs r0, 0x5 str r0, [sp, 0x4] mov r3, r9 str r3, [sp, 0x8] mov r0, r8 str r0, [sp, 0xC] ldr r0, =gBattleAnimTarget ldrb r0, [r0] str r0, [sp, 0x10] movs r0, 0x1 str r0, [sp, 0x14] adds r0, r6, 0 ldr r1, [sp, 0x1C] movs r2, 0 adds r3, r4, 0 bl sub_80A8394 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 ldr r0, =gSprites lsls r5, r6, 4 adds r5, r6 lsls r5, 2 adds r5, r0 movs r0, 0x3 ands r7, r0 lsls r7, 2 mov r8, r7 ldrb r0, [r5, 0x5] movs r4, 0xD negs r4, r4 adds r1, r4, 0 ands r1, r0 mov r2, r8 orrs r1, r2 strb r1, [r5, 0x5] ldrb r2, [r5, 0x1] adds r0, r4, 0 ands r0, r2 movs r2, 0x4 orrs r0, r2 strb r0, [r5, 0x1] ldr r0, =0x00007fff lsrs r1, 4 lsls r1, 4 movs r3, 0x80 lsls r3, 1 adds r2, r3, 0 orrs r1, r2 movs r2, 0x20 bl FillPalette ldrb r0, [r5, 0x5] ands r4, r0 mov r0, r8 orrs r4, r0 strb r4, [r5, 0x5] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldr r0, =gTasks ldr r1, [sp, 0x18] lsls r4, r1, 2 adds r4, r1 lsls r4, 3 adds r4, r0 ldrh r0, [r4, 0xA] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg strh r6, [r4, 0x8] ldr r0, =sub_815D160 str r0, [r4] add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815CED8 thumb_func_start sub_815D160 sub_815D160: @ 815D160 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r0, [r4, 0x1C] adds r1, r0, 0x1 strh r1, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815D1AE movs r0, 0 strh r0, [r4, 0x1C] 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, 0xA bne _0815D1AE movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x1C] strh r0, [r4, 0x1E] ldr r0, =sub_815D1BC str r0, [r4] _0815D1AE: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815D160 thumb_func_start sub_815D1BC sub_815D1BC: @ 815D1BC push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r5, r1, r2 ldrb r2, [r5, 0x8] ldrh r0, [r5, 0x1C] subs r0, 0x10 movs r4, 0 strh r0, [r5, 0x1C] ldrh r0, [r5, 0x1E] adds r0, 0x80 strh r0, [r5, 0x1E] ldr r1, =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r6, r0, r1 ldrb r2, [r6, 0x1] lsls r1, r2, 30 lsrs r1, 30 movs r0, 0x2 orrs r1, r0 subs r0, 0x6 ands r0, r2 orrs r0, r1 strb r0, [r6, 0x1] movs r0, 0x1C ldrsh r2, [r5, r0] movs r0, 0x1E ldrsh r3, [r5, r0] str r4, [sp] adds r0, r6, 0 movs r1, 0x1 bl sub_80A73E0 ldrh r0, [r5, 0x20] adds r0, 0x1 strh r0, [r5, 0x20] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 bne _0815D22A adds r0, r6, 0 bl sub_80A749C adds r0, r6, 0 bl sub_80A8610 ldr r0, =sub_80A6814 str r0, [r5] _0815D22A: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815D1BC thumb_func_start sub_815D240 sub_815D240: @ 815D240 push {r4-r7,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r4, r1, r0 ldr r0, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815D26C ldr r0, =gBattleAnimAttacker b _0815D26E .pool _0815D26C: ldr r0, =gBattleAnimTarget _0815D26E: ldrb r5, [r0] movs r6, 0 strh r6, [r4, 0x8] strh r6, [r4, 0xA] strh r6, [r4, 0xC] movs r0, 0x10 strh r0, [r4, 0xE] strh r6, [r4, 0x10] strh r5, [r4, 0x12] movs r0, 0x20 strh r0, [r4, 0x14] strh r6, [r4, 0x16] movs r0, 0x18 strh r0, [r4, 0x18] adds r0, r5, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815D2A0 movs r1, 0x18 ldrsh r0, [r4, r1] negs r0, r0 strh r0, [r4, 0x18] _0815D2A0: adds r0, r5, 0 bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 subs r0, 0x22 strh r0, [r4, 0x22] cmp r0, 0 bge _0815D2B4 strh r6, [r4, 0x22] _0815D2B4: ldrh r0, [r4, 0x22] adds r0, 0x42 strh r0, [r4, 0x24] ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] adds r0, r5, 0 bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815D304 ldr r0, =0x04000014 str r0, [sp] ldr r1, =0x00003f42 movs r0, 0x50 bl SetGpuReg ldr r0, =gBattle_BG1_X ldrh r5, [r0] ldr r0, =gBattle_BG1_Y b _0815D316 .pool _0815D304: ldr r0, =0x04000018 str r0, [sp] ldr r1, =0x00003f44 movs r0, 0x50 bl SetGpuReg ldr r0, =gBattle_BG2_X ldrh r5, [r0] ldr r0, =gBattle_BG2_Y _0815D316: ldrh r3, [r0] movs r7, 0 movs r2, 0 ldr r6, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r6 mov r12, r0 _0815D326: lsls r2, 16 asrs r2, 16 lsls r1, r2, 1 adds r0, r1, r6 strh r5, [r0] add r1, r12 strh r5, [r1] adds r0, r2, 0x1 lsls r0, 1 adds r1, r0, r6 strh r3, [r1] add r0, r12 strh r3, [r0] lsls r0, r7, 16 movs r1, 0x80 lsls r1, 9 adds r0, r1 adds r2, 0x2 lsls r2, 16 lsrs r2, 16 lsrs r7, r0, 16 asrs r0, 16 cmp r0, 0x9F ble _0815D326 ldr r0, =0xa6600001 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, =sub_815D398 str r0, [r4] add sp, 0xC pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815D240 thumb_func_start sub_815D398 sub_815D398: @ 815D398 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks adds r6, r0, r1 ldrb r0, [r6, 0x12] bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815D3D8 ldr r0, =gBattle_BG1_X ldrh r0, [r0] str r0, [sp, 0x4] ldr r0, =gBattle_BG1_Y b _0815D3E0 .pool _0815D3D8: ldr r0, =gBattle_BG2_X ldrh r0, [r0] str r0, [sp, 0x4] ldr r0, =gBattle_BG2_Y _0815D3E0: ldrh r0, [r0] str r0, [sp, 0x8] movs r1, 0x8 ldrsh r0, [r6, r1] cmp r0, 0x1 bne _0815D3EE b _0815D5CC _0815D3EE: cmp r0, 0x1 bgt _0815D400 cmp r0, 0 beq _0815D40E b _0815D63C .pool _0815D400: cmp r0, 0x2 bne _0815D406 b _0815D5EC _0815D406: cmp r0, 0x3 bne _0815D40C b _0815D636 _0815D40C: b _0815D63C _0815D40E: movs r2, 0x24 ldrsh r0, [r6, r2] lsls r0, 17 lsrs r5, r0, 16 movs r3, 0 str r3, [sp] mov r9, r3 movs r4, 0 ldrh r0, [r6, 0xA] adds r0, 0x2 movs r1, 0xFF ands r0, r1 strh r0, [r6, 0xA] ldrh r7, [r6, 0xA] mov r8, r7 movs r0, 0x14 ldrsh r1, [r6, r0] movs r0, 0xFC lsls r0, 3 bl __divsi3 strh r0, [r6, 0x1A] movs r1, 0x16 ldrsh r0, [r6, r1] lsls r0, 1 movs r2, 0x1A ldrsh r1, [r6, r2] bl __divsi3 negs r0, r0 strh r0, [r6, 0x1C] ldrh r0, [r6, 0x16] strh r0, [r6, 0x1E] lsls r0, 16 asrs r0, 21 lsls r0, 16 lsrs r7, r0, 16 strh r7, [r6, 0x20] ldrh r2, [r6, 0x24] lsls r3, r2, 16 mov r12, r3 asrs r1, r3, 16 movs r3, 0x22 ldrsh r0, [r6, r3] cmp r1, r0 ble _0815D52E ldr r0, =gScanlineEffect mov r10, r0 ldr r1, [sp, 0x4] lsls r0, r1, 16 asrs r0, 16 str r0, [sp, 0x10] ldr r2, [sp, 0x8] lsls r0, r2, 16 asrs r0, 16 str r0, [sp, 0xC] _0815D47E: lsls r5, 16 asrs r5, 16 adds r2, r5, 0x1 lsls r2, 1 mov r3, r10 ldrb r1, [r3, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 adds r2, r0 ldr r0, =gScanlineEffectRegBuffers adds r2, r0 lsls r4, 16 asrs r4, 16 mov r1, r9 lsls r0, r1, 16 asrs r0, 16 subs r0, r4, r0 ldr r3, [sp, 0xC] adds r0, r3, r0 strh r0, [r2] lsls r3, r5, 1 mov r0, r10 ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 adds r3, r0 ldr r1, =gScanlineEffectRegBuffers adds r3, r1 lsls r1, r7, 16 asrs r1, 16 ldr r2, [sp, 0x10] adds r1, r2, r1 mov r7, r8 lsls r2, r7, 16 asrs r2, 16 lsls r0, r2, 1 ldr r7, =gSineTable adds r0, r7 ldrh r0, [r0] lsls r0, 16 asrs r0, 21 adds r1, r0 strh r1, [r3] adds r2, 0xA mov r8, r2 movs r0, 0xFF mov r1, r8 ands r1, r0 mov r8, r1 ldrh r0, [r6, 0x1C] ldrh r2, [r6, 0x1E] adds r0, r2 strh r0, [r6, 0x1E] lsls r0, 16 asrs r0, 21 lsls r0, 16 lsrs r7, r0, 16 strh r7, [r6, 0x20] adds r4, 0x1 lsls r4, 16 lsrs r4, 16 subs r5, 0x2 lsls r5, 16 lsrs r5, 16 ldr r3, [sp] lsls r0, r3, 16 asrs r0, 16 ldrh r1, [r6, 0x14] adds r0, r1 lsls r0, 16 lsrs r2, r0, 16 str r2, [sp] asrs r0, 21 lsls r0, 16 lsrs r0, 16 mov r9, r0 ldr r0, =0xffff0000 add r0, r12 lsrs r2, r0, 16 lsls r3, r2, 16 mov r12, r3 asrs r1, r3, 16 movs r3, 0x22 ldrsh r0, [r6, r3] cmp r1, r0 bgt _0815D47E _0815D52E: lsls r1, r2, 17 cmp r1, 0 blt _0815D55A ldr r4, =gScanlineEffectRegBuffers ldr r7, [sp, 0x4] lsls r0, r7, 16 asrs r0, 16 adds r3, r0, 0 adds r3, 0xF0 movs r0, 0xF0 lsls r0, 3 adds r5, r4, r0 _0815D546: asrs r2, r1, 16 lsls r1, r2, 1 adds r0, r1, r4 strh r3, [r0] adds r1, r5 strh r3, [r1] subs r2, 0x2 lsls r1, r2, 16 cmp r1, 0 bge _0815D546 _0815D55A: ldrh r0, [r6, 0x14] adds r0, 0x1 strh r0, [r6, 0x14] lsls r0, 16 asrs r0, 16 cmp r0, 0x3F ble _0815D5C2 movs r0, 0x40 strh r0, [r6, 0x14] ldrh r0, [r6, 0xC] adds r0, 0x1 strh r0, [r6, 0xC] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0815D594 ldrh r0, [r6, 0xE] subs r0, 0x1 strh r0, [r6, 0xE] b _0815D59A .pool _0815D594: ldrh r0, [r6, 0x10] adds r0, 0x1 strh r0, [r6, 0x10] _0815D59A: ldrh r1, [r6, 0x10] lsls r1, 8 ldrh r0, [r6, 0xE] orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0xE ldrsh r1, [r6, r2] cmp r1, 0 bne _0815D63C movs r3, 0x10 ldrsh r0, [r6, r3] cmp r0, 0x10 bne _0815D63C strh r1, [r6, 0xC] strh r1, [r6, 0xE] b _0815D62E _0815D5C2: ldrh r0, [r6, 0x18] ldrh r7, [r6, 0x16] adds r0, r7 strh r0, [r6, 0x16] b _0815D63C _0815D5CC: ldrh r0, [r6, 0xC] adds r0, 0x1 strh r0, [r6, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _0815D63C ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0 strh r0, [r6, 0xC] b _0815D62E .pool _0815D5EC: ldrh r0, [r6, 0xC] adds r0, 0x1 strh r0, [r6, 0xC] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0815D602 ldrh r0, [r6, 0xE] adds r0, 0x1 strh r0, [r6, 0xE] b _0815D608 _0815D602: ldrh r0, [r6, 0x10] subs r0, 0x1 strh r0, [r6, 0x10] _0815D608: ldrh r1, [r6, 0x10] lsls r1, 8 ldrh r0, [r6, 0xE] orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0xE ldrsh r0, [r6, r1] cmp r0, 0x10 bne _0815D63C movs r2, 0x10 ldrsh r0, [r6, r2] cmp r0, 0 bne _0815D63C strh r0, [r6, 0xC] strh r0, [r6, 0xE] _0815D62E: ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] b _0815D63C _0815D636: adds r0, r4, 0 bl DestroyAnimVisualTask _0815D63C: add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815D398 thumb_func_start sub_815D64C sub_815D64C: @ 815D64C push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, =gTasks adds r4, r0 movs r0, 0 strh r0, [r4, 0x8] ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE5F0 adds r0, r4, 0 bl sub_80A7CFC ldr r0, =sub_815D694 str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815D64C thumb_func_start sub_815D694 sub_815D694: @ 815D694 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r2, =gTasks adds r3, r0, r2 ldrh r0, [r3, 0x8] adds r1, r0, 0x1 movs r5, 0 strh r1, [r3, 0x8] subs r0, 0x14 lsls r0, 16 lsrs r0, 16 adds r6, r2, 0 cmp r0, 0x16 bhi _0815D6F8 ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815D708 strh r5, [r3, 0xA] ldrh r0, [r3, 0xC] adds r0, 0x1 strh r0, [r3, 0xC] movs r5, 0x1 ands r0, r5 cmp r0, 0 bne _0815D6F8 ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, =0x0000ffff strh r1, [r0, 0x24] b _0815D708 .pool _0815D6F8: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r5, [r0, 0x24] _0815D708: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r6 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _0815D720 adds r0, r4, 0 bl DestroyAnimVisualTask _0815D720: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815D694 thumb_func_start sub_815D72C sub_815D72C: @ 815D72C push {r4-r6,lr} mov r6, r8 push {r6} mov r8, r0 adds r5, r2, 0 adds r0, r3, 0 ldr r4, [sp, 0x14] ldr r6, [sp, 0x18] lsls r1, 16 lsrs r1, 16 lsls r5, 16 lsrs r5, 16 lsls r4, 16 lsrs r4, 16 lsls r6, 16 lsrs r6, 16 mov r2, r8 strh r1, [r2, 0x20] strh r5, [r2, 0x22] lsls r1, 16 asrs r1, 16 lsls r2, r1, 4 mov r3, r8 strh r2, [r3, 0x36] lsls r5, 16 asrs r5, 16 lsls r2, r5, 4 strh r2, [r3, 0x38] lsls r0, 16 asrs r0, 16 subs r0, r1 lsls r0, 4 adds r1, r6, 0 bl __divsi3 mov r1, r8 strh r0, [r1, 0x3A] lsls r4, 16 asrs r4, 16 subs r4, r5 lsls r4, 4 adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 mov r2, r8 strh r0, [r2, 0x3C] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_815D72C thumb_func_start sub_815D794 sub_815D794: @ 815D794 ldrh r1, [r0, 0x3A] ldrh r2, [r0, 0x36] adds r1, r2 strh r1, [r0, 0x36] ldrh r2, [r0, 0x3C] ldrh r3, [r0, 0x38] adds r2, r3 strh r2, [r0, 0x38] lsls r1, 16 asrs r1, 20 strh r1, [r0, 0x20] lsls r2, 16 asrs r2, 20 strh r2, [r0, 0x22] bx lr thumb_func_end sub_815D794 thumb_func_start sub_815D7B4 sub_815D7B4: @ 815D7B4 push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 ldrh r6, [r4, 0x20] ldrh r5, [r4, 0x22] bl sub_80A6838 ldr r0, =gBattleAnimArgs ldrb r1, [r0] adds r0, r4, 0 bl StartSpriteAffineAnim movs r0, 0x20 ldrsh r1, [r4, r0] movs r0, 0x22 ldrsh r2, [r4, r0] lsls r6, 16 asrs r6, 16 lsls r5, 16 asrs r5, 16 str r5, [sp] movs r0, 0x40 str r0, [sp, 0x4] adds r0, r4, 0 adds r3, r6, 0 bl sub_815D72C movs r0, 0 strh r0, [r4, 0x2E] ldr r0, =sub_815D804 str r0, [r4, 0x1C] add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815D7B4 thumb_func_start sub_815D804 sub_815D804: @ 815D804 push {r4,r5,lr} adds r5, r0, 0 ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] movs r0, 0x2E ldrsh r4, [r5, r0] lsls r4, 3 movs r0, 0xFF ands r4, r0 adds r0, r5, 0 bl sub_815D794 adds r0, r4, 0 movs r1, 0x8 bl Sin strh r0, [r5, 0x26] movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x3A ble _0815D86A ldrh r0, [r5, 0x30] adds r0, 0x1 strh r0, [r5, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815D86A movs r0, 0 strh r0, [r5, 0x30] ldrh r1, [r5, 0x32] adds r1, 0x1 strh r1, [r5, 0x32] movs r0, 0x1 ands r1, r0 adds r3, r5, 0 adds r3, 0x3E lsls r1, 2 ldrb r2, [r3] subs r0, 0x6 ands r0, r2 orrs r0, r1 strb r0, [r3] movs r1, 0x32 ldrsh r0, [r5, r1] cmp r0, 0x3 ble _0815D86A adds r0, r5, 0 bl move_anim_8074EE0 _0815D86A: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815D804 thumb_func_start sub_815D870 sub_815D870: @ 815D870 push {r4-r6,lr} adds r5, r0, 0 ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x6] strh r0, [r5, 0x2E] ldrb r1, [r6] adds r0, r5, 0 bl StartSpriteAffineAnim ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815D896 ldrh r0, [r6, 0x2] negs r0, r0 strh r0, [r6, 0x2] _0815D896: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x2] adds r0, r1 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x4] adds r0, r6 strh r0, [r5, 0x22] ldr r0, =sub_810E2C8 str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815D870 thumb_func_start sub_815D8D8 sub_815D8D8: @ 815D8D8 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r5, r0, 24 movs r7, 0 ldr r2, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r3, r0, r2 ldrh r0, [r3, 0x8] subs r0, 0x1 strh r0, [r3, 0x8] movs r1, 0x14 ldrsh r0, [r3, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 mov r8, r2 cmp r0, 0 beq _0815D95A ldrh r0, [r3, 0xA] subs r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0815D95A movs r2, 0x1A ldrsh r0, [r3, r2] cmp r0, 0 bne _0815D92C ldrh r0, [r3, 0x10] strh r0, [r3, 0x1A] negs r0, r0 strh r0, [r3, 0x10] b _0815D92E .pool _0815D92C: strh r7, [r3, 0x1A] _0815D92E: lsls r0, r5, 2 adds r0, r5 lsls r0, 3 mov r2, r8 adds r1, r0, r2 movs r2, 0x1C ldrsh r0, [r1, r2] cmp r0, 0 bne _0815D94A ldrh r0, [r1, 0x12] strh r0, [r1, 0x1C] negs r0, r0 strh r0, [r1, 0x12] b _0815D94E _0815D94A: movs r0, 0 strh r0, [r1, 0x1C] _0815D94E: lsls r0, r5, 2 adds r0, r5 lsls r0, 3 add r0, r8 ldrh r1, [r0, 0x22] strh r1, [r0, 0xA] _0815D95A: lsls r2, r5, 2 adds r0, r2, r5 lsls r0, 3 mov r1, r8 adds r4, r0, r1 ldrh r6, [r4, 0x16] ldrh r7, [r4, 0x18] movs r1, 0xC ldrsh r0, [r4, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 mov r12, r2 cmp r0, 0 beq _0815D998 ldr r3, =gSprites movs r2, 0x26 ldrsh r0, [r4, r2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 lsrs r2, r6, 8 ldrh r0, [r4, 0x1A] subs r0, r2 strh r0, [r1, 0x24] adds r2, r3, 0 b _0815D9AE .pool _0815D998: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 lsrs r1, r6, 8 ldrh r4, [r4, 0x1A] adds r1, r4 strh r1, [r0, 0x24] _0815D9AE: mov r1, r12 adds r0, r1, r5 lsls r0, 3 mov r1, r8 adds r4, r0, r1 movs r1, 0xE ldrsh r0, [r4, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0815D9E0 movs r1, 0x26 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 lsrs r2, r7, 8 ldrh r0, [r4, 0x1C] subs r0, r2 b _0815D9F2 .pool _0815D9E0: movs r1, 0x26 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 lsrs r0, r7, 8 ldrh r4, [r4, 0x1C] adds r0, r4 _0815D9F2: strh r0, [r1, 0x26] mov r2, r12 adds r0, r2, r5 lsls r0, 3 add r0, r8 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0 bgt _0815DA12 adds r0, r5, 0 bl DestroyTask ldr r1, =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] _0815DA12: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815D8D8 thumb_func_start sub_815DA20 sub_815DA20: @ 815DA20 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 movs r7, 0 ldr r2, =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r3, r0, r2 ldrh r0, [r3, 0x8] subs r0, 0x1 strh r0, [r3, 0x8] movs r1, 0x14 ldrsh r0, [r3, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 mov r8, r2 cmp r0, 0 beq _0815DAA6 ldrh r0, [r3, 0xA] subs r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0815DAA6 movs r2, 0x1A ldrsh r0, [r3, r2] cmp r0, 0 bne _0815DA78 ldrh r0, [r3, 0x10] strh r0, [r3, 0x1A] negs r0, r0 strh r0, [r3, 0x10] b _0815DA7A .pool _0815DA78: strh r7, [r3, 0x1A] _0815DA7A: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 mov r2, r8 adds r1, r0, r2 movs r2, 0x1C ldrsh r0, [r1, r2] cmp r0, 0 bne _0815DA96 ldrh r0, [r1, 0x12] strh r0, [r1, 0x1C] negs r0, r0 strh r0, [r1, 0x12] b _0815DA9A _0815DA96: movs r0, 0 strh r0, [r1, 0x1C] _0815DA9A: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 add r0, r8 ldrh r1, [r0, 0x22] strh r1, [r0, 0xA] _0815DAA6: lsls r3, r6, 2 adds r0, r3, r6 lsls r0, 3 mov r1, r8 adds r4, r0, r1 ldrh r2, [r4, 0xC] ldr r1, =0x00007fff adds r0, r1, 0 ands r0, r2 ldrh r2, [r4, 0x16] adds r0, r2 lsls r5, r0, 16 lsrs r0, r5, 16 mov r9, r0 ldrh r0, [r4, 0xE] ands r1, r0 ldrh r2, [r4, 0x18] adds r1, r2 lsls r1, 16 lsrs r7, r1, 16 movs r1, 0xC ldrsh r0, [r4, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 mov r12, r3 cmp r0, 0 beq _0815DB00 ldr r3, =gSprites movs r2, 0x26 ldrsh r0, [r4, r2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 lsrs r2, r5, 24 ldrh r0, [r4, 0x1A] subs r0, r2 strh r0, [r1, 0x24] adds r2, r3, 0 b _0815DB16 .pool _0815DB00: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 lsrs r1, r5, 24 ldrh r4, [r4, 0x1A] adds r1, r4 strh r1, [r0, 0x24] _0815DB16: mov r1, r12 adds r0, r1, r6 lsls r0, 3 mov r1, r8 adds r4, r0, r1 movs r1, 0xE ldrsh r0, [r4, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0815DB48 movs r1, 0x26 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 lsrs r2, r7, 8 ldrh r0, [r4, 0x1C] subs r0, r2 b _0815DB5A .pool _0815DB48: movs r1, 0x26 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 lsrs r0, r7, 8 ldrh r4, [r4, 0x1C] adds r0, r4 _0815DB5A: strh r0, [r1, 0x26] mov r2, r12 adds r0, r2, r6 lsls r0, 3 mov r1, r8 adds r2, r0, r1 mov r0, r9 strh r0, [r2, 0x16] strh r7, [r2, 0x18] movs r1, 0x8 ldrsh r0, [r2, r1] cmp r0, 0 bgt _0815DB80 movs r0, 0x1E strh r0, [r2, 0x8] movs r0, 0 strh r0, [r2, 0x22] ldr r0, =sub_815D8D8 str r0, [r2] _0815DB80: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815DA20 thumb_func_start sub_815DB90 sub_815DB90: @ 815DB90 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 ldr r0, =gTasks mov r8, r0 lsls r7, r6, 2 adds r0, r7, r6 lsls r0, 3 mov r1, r8 adds r4, r0, r1 ldr r1, =gBattlerSpriteIds ldr r2, =gBattleAnimAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] strh r0, [r4, 0x26] ldr r5, =gBattleAnimArgs ldrh r0, [r5] strh r0, [r4, 0x24] ldrh r0, [r5] strh r0, [r4, 0x8] ldrh r0, [r5, 0xC] strh r0, [r4, 0x22] movs r3, 0x6 ldrsh r0, [r5, r3] cmp r0, 0 beq _0815DBD4 ldrh r0, [r4, 0x14] ldr r3, =0xffff8000 adds r1, r3, 0 orrs r0, r1 strh r0, [r4, 0x14] _0815DBD4: ldrb r0, [r2] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815DC04 ldrh r0, [r5, 0x2] strh r0, [r4, 0xC] ldrh r0, [r5, 0x4] strh r0, [r4, 0xE] mov r3, r8 adds r4, r7, 0 b _0815DC74 .pool _0815DC04: movs r7, 0x2 ldrsh r0, [r5, r7] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0815DC20 ldrh r1, [r5, 0x2] ldr r0, =0x00007fff ands r0, r1 b _0815DC28 .pool _0815DC20: ldrh r0, [r5, 0x2] ldr r2, =0xffff8000 adds r1, r2, 0 orrs r0, r1 _0815DC28: strh r0, [r4, 0xC] ldr r0, =gBattleAnimArgs movs r3, 0x4 ldrsh r1, [r0, r3] movs r2, 0x80 lsls r2, 8 ands r1, r2 adds r5, r0, 0 cmp r1, 0 beq _0815DC60 ldr r3, =gTasks lsls r4, r6, 2 adds r1, r4, r6 lsls r1, 3 adds r1, r3 ldrh r2, [r5, 0x4] ldr r0, =0x00007fff ands r0, r2 b _0815DC72 .pool _0815DC60: ldr r3, =gTasks lsls r4, r6, 2 adds r1, r4, r6 lsls r1, 3 adds r1, r3 ldrh r2, [r5, 0x4] ldr r7, =0xffff8000 adds r0, r7, 0 orrs r0, r2 _0815DC72: strh r0, [r1, 0xE] _0815DC74: adds r0, r4, r6 lsls r0, 3 adds r0, r3 movs r1, 0 strh r1, [r0, 0x18] strh r1, [r0, 0x16] ldrh r1, [r5, 0x8] strh r1, [r0, 0x10] ldrh r1, [r5, 0xA] strh r1, [r0, 0x12] ldr r1, =sub_815DA20 str r1, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815DB90 thumb_func_start sub_815DCA4 sub_815DCA4: @ 815DCA4 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks adds r5, r0, r1 ldr r4, =gBattleAnimArgs movs r1, 0x2 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815DCC4 adds r0, r2, 0 bl DestroyAnimVisualTask _0815DCC4: movs r0, 0 strh r0, [r5, 0x8] strh r0, [r5, 0xA] strh r0, [r5, 0xC] ldrh r0, [r4, 0x2] strh r0, [r5, 0xE] movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815DCE8 ldr r0, =gBattleAnimAttacker b _0815DCEA .pool _0815DCE8: ldr r0, =gBattleAnimTarget _0815DCEA: ldrb r4, [r0] adds r0, r4, 0 movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x10] adds r0, r4, 0 movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] adds r0, r4, 0 bl sub_80A82E4 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r5, 0x26] ldr r2, =gUnknown_085CE74C adds r0, r5, 0 bl sub_80A7CFC ldr r0, =sub_815DD48 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815DCA4 thumb_func_start sub_815DD48 sub_815DD48: @ 815DD48 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _0815DD6C cmp r0, 0x1 beq _0815DDCC b _0815DDDA .pool _0815DD6C: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _0815DD82 adds r0, r5, 0 movs r1, 0x1 bl sub_815DDE0 _0815DD82: movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x12 bne _0815DD92 adds r0, r5, 0 movs r1, 0 bl sub_815DDE0 _0815DD92: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _0815DDDA ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 cmp r0, 0 bne _0815DDB4 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815DDDA _0815DDB4: strh r1, [r4, 0xA] ldrh r1, [r4, 0x26] lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE74C adds r0, r4, 0 bl sub_80A7CFC b _0815DDDA .pool _0815DDCC: movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0 bne _0815DDDA adds r0, r5, 0 bl DestroyAnimVisualTask _0815DDDA: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815DD48 thumb_func_start sub_815DDE0 sub_815DDE0: @ 815DDE0 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r2, =gTasks adds r4, r0, r2 cmp r1, 0 bne _0815DE08 movs r1, 0x12 movs r3, 0xEC b _0815DE0C .pool _0815DE08: movs r1, 0x1E movs r3, 0x14 _0815DE0C: mov r2, sp ldrh r0, [r4, 0x10] subs r0, r1 strh r0, [r2] ldrh r0, [r4, 0x10] subs r0, r1 subs r0, 0x4 strh r0, [r2, 0x2] ldrh r0, [r4, 0x10] adds r0, r1 strh r0, [r2, 0x4] ldrh r0, [r4, 0x10] adds r0, r1 adds r0, 0x4 strh r0, [r2, 0x6] add r2, sp, 0x8 lsls r1, r3, 24 asrs r1, 24 ldrh r0, [r4, 0x12] adds r0, r1 strh r0, [r2] ldrh r0, [r4, 0x12] adds r0, r1 adds r0, 0x6 strh r0, [r2, 0x2] movs r5, 0 mov r8, r2 ldr r7, =gSprites _0815DE44: lsls r0, r5, 1 add r0, sp movs r2, 0 ldrsh r1, [r0, r2] movs r0, 0x1 ands r0, r5 lsls r0, 1 add r0, r8 movs r3, 0 ldrsh r2, [r0, r3] ldrb r3, [r4, 0x14] subs r3, 0x5 lsls r3, 24 lsrs r3, 24 ldr r0, =gUnknown_085CE76C bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0815DE98 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r7 movs r0, 0 strh r0, [r1, 0x2E] movs r0, 0x2 cmp r5, 0x1 bhi _0815DE86 movs r2, 0x2 negs r2, r2 adds r0, r2, 0 _0815DE86: strh r0, [r1, 0x30] ldr r0, =0x0000ffff strh r0, [r1, 0x32] strh r6, [r1, 0x34] movs r0, 0x2 strh r0, [r1, 0x36] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] _0815DE98: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x3 bls _0815DE44 add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815DDE0 thumb_func_start sub_815DEBC sub_815DEBC: @ 815DEBC push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x32] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 ble _0815DF02 ldr r3, =gTasks movs r0, 0x36 ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x34 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 _0815DF02: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815DEBC thumb_func_start sub_815DF0C sub_815DF0C: @ 815DF0C push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 movs r0, 0 strh r0, [r4, 0x8] ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r4, 0xA] ldrb r0, [r1] bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x5] lsrs r0, 4 lsls r0, 4 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 adds r0, r1 strh r0, [r4, 0xC] ldr r0, =sub_815DF64 str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815DF0C thumb_func_start sub_815DF64 sub_815DF64: @ 815DF64 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0 beq _0815DFB4 ldrh r0, [r4, 0xC] ldr r2, =gUnknown_085CE784 movs r3, 0x8 ldrsh r1, [r4, r3] lsls r1, 1 adds r1, r2 ldrh r3, [r1] movs r1, 0x10 movs r2, 0x8 bl BlendPalette ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] lsls r0, 16 asrs r0, 16 cmp r0, 0x17 ble _0815DFA4 movs r0, 0 strh r0, [r4, 0x8] _0815DFA4: ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] b _0815DFC6 .pool _0815DFB4: ldrh r0, [r4, 0xC] movs r1, 0x10 movs r2, 0 movs r3, 0 bl BlendPalette adds r0, r5, 0 bl DestroyAnimVisualTask _0815DFC6: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815DF64 thumb_func_start sub_815DFCC sub_815DFCC: @ 815DFCC push {lr} sub sp, 0x1C lsls r0, 24 lsrs r0, 24 movs r2, 0xD0 lsls r2, 1 ldr r1, =gBattleAnimAttacker ldrb r3, [r1] ldr r1, =gBattleAnimArgs ldrb r1, [r1] str r1, [sp] movs r1, 0xA str r1, [sp, 0x4] movs r1, 0x2 str r1, [sp, 0x8] movs r1, 0x1E str r1, [sp, 0xC] ldr r1, =gUnknown_08C2DC68 str r1, [sp, 0x10] ldr r1, =gUnknown_08C2DDC4 str r1, [sp, 0x14] ldr r1, =gUnknown_08C2DDA4 str r1, [sp, 0x18] movs r1, 0 bl sub_8117854 add sp, 0x1C pop {r0} bx r0 .pool thumb_func_end sub_815DFCC thumb_func_start sub_815E01C sub_815E01C: @ 815E01C push {r4-r6,lr} adds r5, r0, 0 ldr r6, =gBattleAnimAttacker ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815E038 ldr r1, =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r1] _0815E038: ldrb r0, [r6] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4] adds r0, r1 strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 strh r0, [r5, 0x22] movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815E080 movs r0, 0xA0 lsls r0, 2 strh r0, [r5, 0x2E] ldr r0, =0x0000fd80 strh r0, [r5, 0x30] b _0815E0A8 .pool _0815E080: cmp r0, 0x1 bne _0815E09A adds r2, r5, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x2 orrs r0, r1 strb r0, [r2] movs r0, 0xA0 lsls r0, 2 strh r0, [r5, 0x2E] strh r0, [r5, 0x30] b _0815E0A8 _0815E09A: adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAnim movs r0, 0xA0 lsls r0, 2 strh r0, [r5, 0x2E] _0815E0A8: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815E0C8 ldrh r0, [r5, 0x2E] negs r0, r0 strh r0, [r5, 0x2E] adds r2, r5, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] _0815E0C8: ldr r0, =sub_815E0DC str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815E01C thumb_func_start sub_815E0DC sub_815E0DC: @ 815E0DC push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x2E] ldrh r1, [r2, 0x3A] adds r0, r1 strh r0, [r2, 0x3A] ldrh r1, [r2, 0x30] ldrh r3, [r2, 0x3C] adds r1, r3 strh r1, [r2, 0x3C] lsls r0, 16 asrs r0, 24 strh r0, [r2, 0x24] lsls r1, 16 asrs r1, 24 strh r1, [r2, 0x26] ldrh r0, [r2, 0x38] adds r0, 0x1 strh r0, [r2, 0x38] lsls r0, 16 asrs r0, 16 cmp r0, 0xE bne _0815E110 adds r0, r2, 0 bl DestroyAnimSprite _0815E110: pop {r0} bx r0 thumb_func_end sub_815E0DC thumb_func_start sub_815E114 sub_815E114: @ 815E114 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r6, r1, r0 bl IsContest lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _0815E144 movs r0, 0x8 strh r0, [r6, 0x12] movs r0, 0x3 strh r0, [r6, 0x14] movs r0, 0x1 strh r0, [r6, 0x16] b _0815E14E .pool _0815E144: movs r0, 0xC strh r0, [r6, 0x12] movs r0, 0x3 strh r0, [r6, 0x14] strh r1, [r6, 0x16] _0815E14E: ldr r5, =gBattleAnimAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815E188 ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 bl sub_80A861C lsls r4, 24 lsrs r4, 24 lsls r0, 16 asrs r0, 16 cmp r0, 0 bge _0815E17C adds r0, 0x3 _0815E17C: asrs r0, 2 adds r0, r4, r0 b _0815E1AC .pool _0815E188: ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 bl sub_80A861C lsls r4, 24 lsrs r4, 24 lsls r0, 16 asrs r0, 16 cmp r0, 0 bge _0815E1A8 adds r0, 0x3 _0815E1A8: asrs r0, 2 subs r0, r4, r0 _0815E1AC: strh r0, [r6, 0x1E] ldr r5, =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 bl sub_80A861C lsls r4, 24 lsrs r4, 24 lsls r0, 16 asrs r0, 16 cmp r0, 0 bge _0815E1D0 adds r0, 0x3 _0815E1D0: asrs r0, 2 subs r0, r4, r0 strh r0, [r6, 0x20] ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x22] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x24] ldr r0, =sub_815E20C str r0, [r6] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815E114 thumb_func_start sub_815E20C sub_815E20C: @ 815E20C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x14 lsls r0, 24 lsrs r7, r0, 24 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, =gTasks adds r5, r0, r1 movs r0, 0x8 ldrsh r1, [r5, r0] cmp r1, 0 beq _0815E238 cmp r1, 0x1 bne _0815E230 b _0815E330 _0815E230: b _0815E33E .pool _0815E238: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 ble _0815E33E strh r1, [r5, 0xA] movs r1, 0x1E ldrsh r0, [r5, r1] movs r2, 0x20 ldrsh r1, [r5, r2] movs r3, 0x22 ldrsh r2, [r5, r3] movs r4, 0x24 ldrsh r3, [r5, r4] ldrb r4, [r5, 0x12] str r4, [sp] ldrb r4, [r5, 0xC] str r4, [sp, 0x4] add r4, sp, 0x10 str r4, [sp, 0x8] adds r4, 0x2 str r4, [sp, 0xC] bl sub_815E34C movs r6, 0 mov r8, r4 ldr r4, =gSprites _0815E272: add r0, sp, 0x10 movs r2, 0 ldrsh r1, [r0, r2] mov r3, r8 movs r0, 0 ldrsh r2, [r3, r0] ldr r0, =gUnknown_085CE7EC movs r3, 0x23 bl CreateSprite lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x40 beq _0815E306 movs r1, 0x16 ldrsh r0, [r5, r1] cmp r0, 0 bne _0815E2C6 cmp r6, 0 bne _0815E2B4 lsls r2, r3, 4 adds r1, r2, r3 lsls r1, 2 adds r1, r4 ldrh r0, [r5, 0x14] negs r0, r0 strh r0, [r1, 0x26] strh r0, [r1, 0x24] b _0815E2EE .pool _0815E2B4: lsls r2, r3, 4 adds r1, r2, r3 lsls r1, 2 adds r1, r4 ldrh r0, [r5, 0x14] strh r0, [r1, 0x26] ldrh r0, [r5, 0x14] strh r0, [r1, 0x24] b _0815E2EE _0815E2C6: cmp r6, 0 bne _0815E2DC lsls r2, r3, 4 adds r1, r2, r3 lsls r1, 2 adds r1, r4 ldrh r0, [r5, 0x14] negs r0, r0 strh r0, [r1, 0x24] ldrh r0, [r5, 0x14] b _0815E2EC _0815E2DC: lsls r2, r3, 4 adds r1, r2, r3 lsls r1, 2 adds r1, r4 ldrh r0, [r5, 0x14] strh r0, [r1, 0x24] ldrh r0, [r5, 0x14] negs r0, r0 _0815E2EC: strh r0, [r1, 0x26] _0815E2EE: ldr r1, =gSprites adds r0, r2, r3 lsls r0, 2 adds r0, r1 movs r1, 0 strh r1, [r0, 0x2E] strh r7, [r0, 0x30] movs r1, 0xA strh r1, [r0, 0x32] ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] _0815E306: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x1 bls _0815E272 ldrh r2, [r5, 0xC] movs r3, 0xC ldrsh r1, [r5, r3] movs r4, 0x12 ldrsh r0, [r5, r4] cmp r1, r0 bne _0815E324 ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _0815E324: adds r0, r2, 0x1 strh r0, [r5, 0xC] b _0815E33E .pool _0815E330: movs r1, 0x1C ldrsh r0, [r5, r1] cmp r0, 0 bne _0815E33E adds r0, r7, 0 bl DestroyAnimVisualTask _0815E33E: add sp, 0x14 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815E20C thumb_func_start sub_815E34C sub_815E34C: @ 815E34C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r4, [sp, 0x28] ldr r5, [sp, 0x2C] ldr r6, [sp, 0x30] mov r9, r6 ldr r6, [sp, 0x34] mov r10, r6 lsls r0, 16 lsrs r0, 16 mov r12, r0 lsls r1, 16 lsrs r1, 16 str r1, [sp] lsls r2, 16 lsrs r2, 16 adds r7, r2, 0 lsls r3, 16 lsrs r3, 16 str r3, [sp, 0x4] lsls r4, 24 lsrs r6, r4, 24 lsls r5, 24 lsrs r5, 24 mov r8, r5 cmp r5, 0 bne _0815E394 mov r2, r9 strh r0, [r2] mov r6, r10 strh r1, [r6] b _0815E3F2 _0815E394: cmp r5, r6 bcc _0815E3A2 mov r0, r9 strh r2, [r0] mov r1, r10 strh r3, [r1] b _0815E3F2 _0815E3A2: subs r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 mov r2, r12 lsls r1, r2, 16 asrs r1, 16 lsls r5, r1, 8 lsls r0, r7, 16 asrs r0, 16 subs r0, r1 lsls r0, 8 adds r1, r6, 0 bl __divsi3 mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r5, r0 ldr r2, [sp] lsls r1, r2, 16 asrs r1, 16 lsls r4, r1, 8 ldr r2, [sp, 0x4] lsls r0, r2, 16 asrs r0, 16 subs r0, r1 lsls r0, 8 adds r1, r6, 0 bl __divsi3 mov r6, r8 muls r6, r0 adds r0, r6, 0 adds r4, r0 asrs r5, 8 mov r0, r9 strh r5, [r0] asrs r4, 8 mov r1, r10 strh r4, [r1] _0815E3F2: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815E34C thumb_func_start sub_815E404 sub_815E404: @ 815E404 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, 0x24 ble _0815E43A ldr r3, =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] adds r0, r4, 0 bl DestroySprite _0815E43A: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815E404 thumb_func_start sub_815E444 sub_815E444: @ 815E444 push {r4,lr} adds r4, r0, 0 ldr r1, =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0x20] ldrh r0, [r1, 0x2] strh r0, [r4, 0x22] ldrh r0, [r1, 0x4] strh r0, [r4, 0x32] ldrh r0, [r1, 0x6] strh r0, [r4, 0x36] ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A70C0 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815E444 thumb_func_start sub_815E47C sub_815E47C: @ 815E47C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r9, r0 lsls r0, 2 add r0, r9 lsls r0, 3 ldr r1, =gTasks adds r7, r0, r1 ldr r0, =gBattleAnimAttacker mov r10, r0 ldrb r0, [r0] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x1E] mov r1, r10 ldrb r0, [r1] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x20] ldr r0, =gBattleAnimTarget mov r8, r0 ldrb r0, [r0] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x22] mov r1, r8 ldrb r0, [r1] movs r1, 0x3 bl GetBattlerSpriteCoord adds r4, r0, 0 mov r1, r8 ldrb r0, [r1] movs r1, 0 bl sub_80A861C lsls r4, 24 lsrs r4, 24 lsls r0, 16 asrs r0, 16 cmp r0, 0 bge _0815E4EE adds r0, 0x3 _0815E4EE: asrs r0, 2 adds r0, r4, r0 strh r0, [r7, 0x24] ldr r4, =gUnknown_085CE84C movs r0, 0x1E ldrsh r5, [r7, r0] movs r1, 0x20 ldrsh r6, [r7, r1] mov r1, r8 ldrb r0, [r1] bl sub_80A82E4 adds r3, r0, 0 subs r3, 0x5 lsls r3, 24 lsrs r3, 24 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x26] cmp r0, 0x40 beq _0815E5B8 ldr r4, =gSprites movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x10 strh r1, [r0, 0x2E] movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r7, 0x22] strh r1, [r0, 0x32] movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r7, 0x24] strh r1, [r0, 0x36] movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, =0x0000ffe0 strh r1, [r0, 0x38] movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl sub_80A68D4 mov r1, r10 ldrb r0, [r1] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815E596 movs r0, 0x26 ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x1 bl StartSpriteAffineAnim _0815E596: ldr r0, =sub_815E5CC str r0, [r7] b _0815E5BE .pool _0815E5B8: mov r0, r9 bl DestroyAnimVisualTask _0815E5BE: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_815E47C thumb_func_start sub_815E5CC sub_815E5CC: @ 815E5CC push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _0815E634 cmp r1, 0x1 bgt _0815E5F4 cmp r1, 0 beq _0815E5FE b _0815E6D2 .pool _0815E5F4: cmp r1, 0x2 beq _0815E658 cmp r1, 0x3 beq _0815E6CC b _0815E6D2 _0815E5FE: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815E6D2 strh r1, [r4, 0xA] movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, =gSprites adds r0, r1 bl TranslateAnimArc ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _0815E6D2 b _0815E6BE .pool _0815E634: movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, =gSprites adds r0, r1 bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0815E6D2 movs r0, 0 strh r0, [r4, 0xA] strh r0, [r4, 0xC] b _0815E6BE .pool _0815E658: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815E6D2 movs r0, 0 strh r0, [r4, 0xA] ldrh r2, [r4, 0xC] adds r2, 0x1 strh r2, [r4, 0xC] ldr r5, =gSprites movs r1, 0x26 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 movs r0, 0x1 ands r2, r0 adds r1, 0x3E lsls r2, 2 ldrb r3, [r1] subs r0, 0x6 ands r0, r3 orrs r0, r2 strb r0, [r1] movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0x10 bne _0815E6D2 movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r0, [r0, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite _0815E6BE: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815E6D2 .pool _0815E6CC: adds r0, r2, 0 bl DestroyAnimVisualTask _0815E6D2: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815E5CC thumb_func_start sub_815E6D8 sub_815E6D8: @ 815E6D8 push {r4-r6,lr} adds r4, r0, 0 ldr r0, =gBattleAnimArgs movs r2, 0 ldrsh r1, [r0, r2] adds r6, r0, 0 cmp r1, 0 bne _0815E6F4 ldr r0, =gBattleAnimAttacker b _0815E6F6 .pool _0815E6F4: ldr r0, =gBattleAnimTarget _0815E6F6: ldrb r5, [r0] ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x10 ldr r3, =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] adds r1, r6, 0 ldrh r0, [r1, 0x4] strh r0, [r4, 0x3A] movs r2, 0x2 ldrsh r0, [r1, r2] movs r1, 0x1 cmp r0, 0 bne _0815E724 movs r3, 0x1 negs r3, r3 adds r1, r3, 0 _0815E724: strh r1, [r4, 0x3C] adds r0, r5, 0 movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] movs r1, 0x2 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815E768 ldrb r2, [r4, 0x3] lsls r1, r2, 26 lsrs r1, 27 movs r0, 0x8 orrs r1, r0 lsls r1, 1 subs r0, 0x47 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r5, 0 movs r1, 0x4 bl sub_80A861C subs r0, 0x8 b _0815E772 .pool _0815E768: adds r0, r5, 0 movs r1, 0x5 bl sub_80A861C adds r0, 0x8 _0815E772: strh r0, [r4, 0x20] ldr r0, =sub_815E784 str r0, [r4, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815E6D8 thumb_func_start sub_815E784 sub_815E784: @ 815E784 push {lr} adds r2, r0, 0 movs r0, 0x2E ldrsh r1, [r2, r0] cmp r1, 0x1 beq _0815E7CC cmp r1, 0x1 bgt _0815E79A cmp r1, 0 beq _0815E7A4 b _0815E83C _0815E79A: cmp r1, 0x2 beq _0815E7DC cmp r1, 0x3 beq _0815E802 b _0815E83C _0815E7A4: ldrh r0, [r2, 0x30] adds r0, 0x1 strh r0, [r2, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815E83C strh r1, [r2, 0x30] ldrh r0, [r2, 0x3C] ldrh r1, [r2, 0x24] adds r0, r1 strh r0, [r2, 0x24] ldrh r0, [r2, 0x32] adds r0, 0x1 strh r0, [r2, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0xC bne _0815E83C b _0815E7FA _0815E7CC: ldrh r0, [r2, 0x30] adds r0, 0x1 strh r0, [r2, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 bne _0815E83C b _0815E7F6 _0815E7DC: movs r0, 0x3C ldrsh r1, [r2, r0] lsls r1, 2 ldrh r0, [r2, 0x24] subs r0, r1 strh r0, [r2, 0x24] ldrh r0, [r2, 0x30] adds r0, 0x1 strh r0, [r2, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _0815E83C _0815E7F6: movs r0, 0 strh r0, [r2, 0x30] _0815E7FA: ldrh r0, [r2, 0x2E] adds r0, 0x1 strh r0, [r2, 0x2E] b _0815E83C _0815E802: movs r0, 0x3C ldrsh r1, [r2, r0] lsls r0, r1, 1 adds r0, r1 ldrh r1, [r2, 0x24] adds r0, r1 strh r0, [r2, 0x24] ldrh r0, [r2, 0x30] adds r0, 0x1 strh r0, [r2, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 bne _0815E83C ldrh r0, [r2, 0x3A] subs r0, 0x1 strh r0, [r2, 0x3A] lsls r0, 16 cmp r0, 0 beq _0815E836 movs r0, 0 strh r0, [r2, 0x30] ldrh r0, [r2, 0x2E] subs r0, 0x1 strh r0, [r2, 0x2E] b _0815E83C _0815E836: adds r0, r2, 0 bl DestroyAnimSprite _0815E83C: pop {r0} bx r0 thumb_func_end sub_815E784 thumb_func_start sub_815E840 sub_815E840: @ 815E840 push {r4,lr} lsls r0, 24 lsrs r1, r0, 24 ldr r2, =gBattleAnimArgs movs r3, 0 ldrsh r0, [r2, r3] cmp r0, 0 bne _0815E85C adds r0, r1, 0 bl DestroyAnimVisualTask b _0815E884 .pool _0815E85C: ldr r0, =gTasks lsls r4, r1, 2 adds r4, r1 lsls r4, 3 adds r4, r0 ldrh r0, [r2, 0x2] strh r0, [r4, 0x8] ldrb r0, [r2] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE87C adds r0, r4, 0 bl sub_80A7CFC ldr r0, =sub_815E898 str r0, [r4] _0815E884: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815E840 thumb_func_start sub_815E898 sub_815E898: @ 815E898 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _0815E8F2 movs r0, 0 strh r0, [r4, 0xA] ldrh r1, [r4, 0xC] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0815E8E0 ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 b _0815E8F0 .pool _0815E8E0: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, =0x0000fffe _0815E8F0: strh r1, [r0, 0x24] _0815E8F2: adds r0, r4, 0 bl sub_80A7D34 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _0815E94E ldr r2, =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] ldrh r0, [r4, 0x8] subs r0, 0x1 strh r0, [r4, 0x8] lsls r0, 16 cmp r0, 0 beq _0815E948 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks adds r0, r1 ldrh r1, [r0, 0x26] lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE87C bl sub_80A7CFC strh r5, [r4, 0xA] strh r5, [r4, 0xC] b _0815E94E .pool _0815E948: adds r0, r6, 0 bl DestroyAnimVisualTask _0815E94E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_815E898 thumb_func_start sub_815E954 sub_815E954: @ 815E954 push {r4,r5,lr} adds r5, r0, 0 ldr r0, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815E970 ldr r4, =gBattleAnimAttacker b _0815E972 .pool _0815E970: ldr r4, =gBattleAnimTarget _0815E972: ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x2 bl sub_80A861C strh r0, [r5, 0x22] movs r1, 0x22 ldrsh r0, [r5, r1] cmp r0, 0x7 bgt _0815E996 movs r0, 0x8 strh r0, [r5, 0x22] _0815E996: movs r2, 0 strh r2, [r5, 0x2E] ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r5, 0x30] strh r2, [r5, 0x32] ldrh r0, [r1, 0x4] strh r0, [r5, 0x34] ldr r0, =sub_815E9BC str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815E954 thumb_func_start sub_815E9BC sub_815E9BC: @ 815E9BC push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] lsls r0, 16 asrs r0, 16 movs r2, 0x30 ldrsh r1, [r3, r2] cmp r0, r1 blt _0815EA10 movs r0, 0 strh r0, [r3, 0x2E] ldrh r1, [r3, 0x32] adds r1, 0x1 movs r0, 0x1 ands r1, r0 strh r1, [r3, 0x32] movs r0, 0x3E adds r0, r3 mov r12, r0 lsls r1, 2 ldrb r2, [r0] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 mov r1, r12 strb r0, [r1] movs r2, 0x32 ldrsh r0, [r3, r2] cmp r0, 0 beq _0815EA10 ldrh r0, [r3, 0x34] subs r0, 0x1 strh r0, [r3, 0x34] lsls r0, 16 cmp r0, 0 bne _0815EA10 adds r0, r3, 0 bl DestroyAnimSprite _0815EA10: pop {r0} bx r0 thumb_func_end sub_815E9BC thumb_func_start sub_815EA14 sub_815EA14: @ 815EA14 push {lr} adds r3, r0, 0 ldr r0, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815EA44 ldrb r2, [r3, 0x3] lsls r1, r2, 26 lsrs r1, 27 movs r0, 0x8 orrs r1, r0 lsls r1, 1 subs r0, 0x47 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x3] movs r0, 0x64 strh r0, [r3, 0x20] movs r0, 0x1 b _0815EA4A .pool _0815EA44: movs r0, 0x8C strh r0, [r3, 0x20] ldr r0, =0x0000ffff _0815EA4A: strh r0, [r3, 0x3C] movs r0, 0x38 strh r0, [r3, 0x22] ldr r0, =sub_815EA60 str r0, [r3, 0x1C] pop {r0} bx r0 .pool thumb_func_end sub_815EA14 thumb_func_start sub_815EA60 sub_815EA60: @ 815EA60 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x8 bls _0815EA6E b _0815EC40 _0815EA6E: lsls r0, 2 ldr r1, =_0815EA7C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815EA7C: .4byte _0815EAA0 .4byte _0815EAD2 .4byte _0815EAE4 .4byte _0815EB24 .4byte _0815EB36 .4byte _0815EB74 .4byte _0815EBD8 .4byte _0815EBF8 .4byte _0815EC1E _0815EAA0: movs r3, 0x3C ldrsh r0, [r4, r3] lsls r0, 1 ldrh r1, [r4, 0x22] subs r1, r0 strh r1, [r4, 0x22] ldrh r2, [r4, 0x30] movs r0, 0x1 ands r0, r2 cmp r0, 0 beq _0815EAC2 movs r0, 0x3C ldrsh r1, [r4, r0] lsls r1, 1 ldrh r0, [r4, 0x20] subs r0, r1 strh r0, [r4, 0x20] _0815EAC2: adds r0, r2, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 beq _0815EAD0 b _0815EC40 _0815EAD0: b _0815EC12 _0815EAD2: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 beq _0815EAE2 b _0815EC40 _0815EAE2: b _0815EC12 _0815EAE4: ldrh r2, [r4, 0x30] adds r2, 0x1 strh r2, [r4, 0x30] movs r3, 0x3C ldrsh r1, [r4, r3] lsls r0, r1, 1 adds r0, r1 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r3, =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0] lsls r0, 16 asrs r0, 19 ldrh r1, [r4, 0x3C] muls r0, r1 strh r0, [r4, 0x24] lsls r2, 16 asrs r2, 16 cmp r2, 0xC beq _0815EB1C b _0815EC40 _0815EB1C: b _0815EC12 .pool _0815EB24: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 beq _0815EB34 b _0815EC40 _0815EB34: b _0815EC12 _0815EB36: ldrh r2, [r4, 0x30] adds r2, 0x1 strh r2, [r4, 0x30] movs r1, 0x3C ldrsh r0, [r4, r1] lsls r1, r0, 1 adds r1, r0 ldrh r0, [r4, 0x22] subs r0, r1 strh r0, [r4, 0x22] ldr r3, =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0] lsls r0, 16 asrs r0, 19 ldrh r1, [r4, 0x3C] muls r0, r1 strh r0, [r4, 0x24] lsls r2, 16 asrs r2, 16 cmp r2, 0xC bne _0815EC40 b _0815EC16 .pool _0815EB74: ldrh r2, [r4, 0x30] adds r2, 0x1 strh r2, [r4, 0x30] movs r3, 0x3C ldrsh r1, [r4, r3] lsls r0, r1, 1 adds r0, r1 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r3, =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0] lsls r0, 16 asrs r0, 19 ldrh r1, [r4, 0x3C] muls r0, r1 strh r0, [r4, 0x24] lsls r2, 16 asrs r2, 16 cmp r2, 0xF bne _0815EBC0 ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x10 ldr r3, =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] _0815EBC0: movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x12 bne _0815EC40 b _0815EC12 .pool _0815EBD8: movs r3, 0x3C ldrsh r0, [r4, r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 1 ldrh r0, [r4, 0x20] adds r1, r0 strh r1, [r4, 0x20] ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 bne _0815EC40 b _0815EC12 _0815EBF8: movs r1, 0x3C ldrsh r0, [r4, r1] lsls r0, 1 ldrh r3, [r4, 0x20] adds r0, r3 strh r0, [r4, 0x20] ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _0815EC40 _0815EC12: movs r0, 0 strh r0, [r4, 0x30] _0815EC16: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815EC40 _0815EC1E: movs r1, 0x3C ldrsh r0, [r4, r1] lsls r1, r0, 1 adds r1, r0 ldrh r0, [r4, 0x20] subs r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _0815EC40 adds r0, r4, 0 bl DestroyAnimSprite _0815EC40: pop {r4} pop {r0} bx r0 thumb_func_end sub_815EA60 thumb_func_start sub_815EC48 sub_815EC48: @ 815EC48 push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r6, r1, r0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] bl IsContest lsls r0, 24 cmp r0, 0 bne _0815ECD0 bl IsDoubleBattle lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x1 bne _0815ECB4 ldr r5, =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r1, [r5] movs r0, 0x2 eors r0, r1 movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 ble _0815ECAC strh r7, [r6, 0x24] b _0815ECD4 .pool _0815ECAC: ldr r0, =0x0000ffff b _0815ECD2 .pool _0815ECB4: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815ECD0 ldr r0, =0x0000ffff b _0815ECD2 .pool _0815ECD0: movs r0, 0x1 _0815ECD2: strh r0, [r6, 0x24] _0815ECD4: ldr r0, =sub_815ECE4 str r0, [r6] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815EC48 thumb_func_start sub_815ECE4 sub_815ECE4: @ 815ECE4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks adds r3, r0, r1 movs r1, 0x8 ldrsh r0, [r3, r1] cmp r0, 0x8 bls _0815ECFE b _0815EE78 _0815ECFE: lsls r0, 2 ldr r1, =_0815ED10 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815ED10: .4byte _0815ED34 .4byte _0815ED46 .4byte _0815ED78 .4byte _0815EDA8 .4byte _0815EDCE .4byte _0815EDF8 .4byte _0815EE08 .4byte _0815EE28 .4byte _0815EE60 _0815ED34: ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xD beq _0815ED44 b _0815EE78 _0815ED44: b _0815EE50 _0815ED46: ldr r2, =gSprites movs r1, 0x26 ldrsh r0, [r3, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r2, 0x24 ldrsh r0, [r3, r2] lsls r2, r0, 1 adds r2, r0 ldrh r0, [r1, 0x24] subs r0, r2 strh r0, [r1, 0x24] ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 beq _0815ED72 b _0815EE78 _0815ED72: b _0815EE50 .pool _0815ED78: ldr r2, =gSprites movs r1, 0x26 ldrsh r0, [r3, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x24 ldrsh r2, [r3, r0] lsls r0, r2, 1 adds r0, r2 ldrh r2, [r1, 0x24] adds r0, r2 strh r0, [r1, 0x24] ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _0815EE78 b _0815EE50 .pool _0815EDA8: ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _0815EE78 movs r0, 0 strh r0, [r3, 0xA] ldrh r1, [r3, 0xC] movs r2, 0xC ldrsh r0, [r3, r2] cmp r0, 0 bne _0815EE54 adds r0, r1, 0x1 strh r0, [r3, 0xC] movs r0, 0x1 strh r0, [r3, 0x8] b _0815EE78 _0815EDCE: ldr r2, =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] ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _0815EE78 b _0815EE50 .pool _0815EDF8: ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _0815EE78 b _0815EE50 _0815EE08: ldr r2, =gSprites movs r1, 0x26 ldrsh r0, [r3, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x24 ldrsh r2, [r3, r0] lsls r2, 2 ldrh r0, [r1, 0x24] subs r0, r2 b _0815EE40 .pool _0815EE28: ldr r2, =gSprites movs r1, 0x26 ldrsh r0, [r3, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r2, 0x24 ldrsh r0, [r3, r2] lsls r0, 2 ldrh r2, [r1, 0x24] adds r0, r2 _0815EE40: strh r0, [r1, 0x24] ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _0815EE78 _0815EE50: movs r0, 0 strh r0, [r3, 0xA] _0815EE54: ldrh r0, [r3, 0x8] adds r0, 0x1 strh r0, [r3, 0x8] b _0815EE78 .pool _0815EE60: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x24] adds r0, r4, 0 bl DestroyAnimVisualTask _0815EE78: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815ECE4 thumb_func_start sub_815EE84 sub_815EE84: @ 815EE84 push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815EEA8 adds r0, r4, 0 movs r1, 0x1 bl sub_80A69CC ldr r0, =gBattleAnimAttacker b _0815EEAA .pool _0815EEA8: ldr r0, =gBattleAnimTarget _0815EEAA: ldrb r0, [r0] strh r0, [r4, 0x3C] ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815EECE ldrb r0, [r4, 0x3] movs r1, 0x3F negs r1, r1 ands r1, r0 movs r0, 0x10 orrs r1, r0 strb r1, [r4, 0x3] _0815EECE: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 bl sub_80A8328 movs r2, 0x3 ands r2, r0 lsls r2, 2 ldrb r3, [r4, 0x5] movs r1, 0xD negs r1, r1 adds r0, r1, 0 ands r0, r3 orrs r0, r2 strb r0, [r4, 0x5] ldrb r0, [r4, 0x1] ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4, 0x1] ldr r0, =sub_815EF08 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_815EE84 thumb_func_start sub_815EF08 sub_815EF08: @ 815EF08 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x38 ldrsh r0, [r4, r1] cmp r0, 0x4 bls _0815EF16 b _0815F106 _0815EF16: lsls r0, 2 ldr r1, =_0815EF24 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815EF24: .4byte _0815EF38 .4byte _0815F038 .4byte _0815F0A0 .4byte _0815F0B4 .4byte _0815F100 _0815EF38: movs r2, 0x3A ldrsh r0, [r4, r2] cmp r0, 0x5 bhi _0815EF68 lsls r0, 2 ldr r1, =_0815EF50 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815EF50: .4byte _0815EF6C .4byte _0815EF88 .4byte _0815EFAA .4byte _0815EFC6 .4byte _0815EF6C .4byte _0815EFEC _0815EF68: movs r0, 0 strh r0, [r4, 0x3A] _0815EF6C: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x5 bl sub_80A861C subs r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x3 b _0815EFE0 _0815EF88: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x5 bl sub_80A861C subs r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl sub_80A861C adds r0, 0x4 b _0815EFE6 _0815EFAA: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x4 bl sub_80A861C adds r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x3 b _0815EFE0 _0815EFC6: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x4 bl sub_80A861C adds r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x2 _0815EFE0: bl sub_80A861C subs r0, 0x4 _0815EFE6: lsls r0, 16 lsrs r1, r0, 16 b _0815F00C _0815EFEC: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r1, r0, 24 _0815F00C: movs r2, 0x3A ldrsh r0, [r4, r2] cmp r0, 0x4 bne _0815F018 movs r0, 0x18 b _0815F022 _0815F018: cmp r0, 0x5 bne _0815F020 movs r0, 0x6 b _0815F022 _0815F020: movs r0, 0xC _0815F022: strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] strh r5, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] strh r1, [r4, 0x36] adds r0, r4, 0 bl InitAnimLinearTranslation b _0815F0F8 _0815F038: adds r0, r4, 0 bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0815F106 movs r1, 0x3A ldrsh r0, [r4, r1] cmp r0, 0x4 beq _0815F070 cmp r0, 0x5 beq _0815F090 ldrh r0, [r4, 0x24] ldrh r2, [r4, 0x20] adds r0, r2 movs r1, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] strh r1, [r4, 0x26] strh r1, [r4, 0x24] strh r1, [r4, 0x2E] ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] b _0815F088 _0815F070: 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] strh r1, [r4, 0x38] _0815F088: ldrh r0, [r4, 0x3A] adds r0, 0x1 strh r0, [r4, 0x3A] b _0815F106 _0815F090: movs r0, 0 strh r0, [r4, 0x2E] movs r1, 0x10 strh r1, [r4, 0x30] strh r0, [r4, 0x32] movs r0, 0x3 strh r0, [r4, 0x38] b _0815F106 _0815F0A0: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _0815F106 movs r0, 0 strh r0, [r4, 0x38] b _0815F106 _0815F0B4: ldrh r1, [r4, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0815F0C6 ldrh r0, [r4, 0x30] subs r0, 0x1 strh r0, [r4, 0x30] b _0815F0CC _0815F0C6: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] _0815F0CC: ldrh r1, [r4, 0x32] lsls r1, 8 ldrh r0, [r4, 0x30] orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x20 bne _0815F106 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _0815F0F8: ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] b _0815F106 _0815F100: adds r0, r4, 0 bl DestroyAnimSprite _0815F106: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815EF08 thumb_func_start sub_815F10C sub_815F10C: @ 815F10C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x32 ldrsh r0, [r4, r1] movs r2, 0x2E ldrsh r1, [r4, r2] subs r0, r1 movs r2, 0x38 ldrsh r1, [r4, r2] muls r0, r1 movs r2, 0x36 ldrsh r1, [r4, r2] bl __divsi3 adds r5, r0, 0 strh r5, [r4, 0x24] movs r1, 0x34 ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] subs r0, r1 movs r2, 0x38 ldrsh r1, [r4, r2] muls r0, r1 movs r2, 0x36 ldrsh r1, [r4, r2] bl __divsi3 adds r3, r0, 0 strh r3, [r4, 0x26] ldrh r1, [r4, 0x38] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0815F16A ldr r0, =gUnknown_085CE3A0 ldrh r1, [r4, 0x20] adds r1, r5 lsls r1, 16 asrs r1, 16 ldrh r2, [r4, 0x22] adds r2, r3 lsls r2, 16 asrs r2, 16 movs r3, 0x5 bl CreateSprite _0815F16A: movs r0, 0x38 ldrsh r1, [r4, r0] movs r2, 0x36 ldrsh r0, [r4, r2] cmp r1, r0 bne _0815F17C adds r0, r4, 0 bl DestroyAnimSprite _0815F17C: ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815F10C thumb_func_start sub_815F18C sub_815F18C: @ 815F18C push {r4,r5,lr} adds r5, r0, 0 ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0815F1B8 bl IsContest lsls r0, 24 cmp r0, 0 beq _0815F1D0 _0815F1B8: ldr r2, =gBattleAnimArgs ldrh r1, [r5, 0x20] ldrh r0, [r2] subs r0, r1, r0 strh r0, [r5, 0x2E] ldrh r0, [r2, 0x4] subs r1, r0 b _0815F1DE .pool _0815F1D0: ldr r2, =gBattleAnimArgs ldrh r1, [r5, 0x20] ldrh r0, [r2] adds r0, r1, r0 strh r0, [r5, 0x2E] ldrh r0, [r2, 0x4] adds r1, r0 _0815F1DE: strh r1, [r5, 0x32] adds r3, r2, 0 ldrh r1, [r5, 0x22] ldrh r2, [r3, 0x2] adds r2, r1, r2 strh r2, [r5, 0x30] ldrh r0, [r3, 0x6] adds r1, r0 strh r1, [r5, 0x34] ldrh r0, [r3, 0x8] strh r0, [r5, 0x36] ldrh r0, [r5, 0x2E] strh r0, [r5, 0x20] strh r2, [r5, 0x22] ldr r0, =sub_815F10C str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815F18C thumb_func_start AnimTask_MonToSubstitute AnimTask_MonToSubstitute: @ 815F20C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r5, r0, 24 adds r2, r5, 0 ldr r0, =gTasks mov r9, r0 lsls r7, r6, 2 adds r0, r7, r6 lsls r0, 3 mov r8, r0 mov r4, r8 add r4, r9 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _0815F254 adds r0, r5, 0 movs r1, 0 bl sub_80A7270 movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0xA] strh r0, [r4, 0xC] b _0815F2A0 .pool _0815F254: cmp r0, 0x1 bne _0815F2AC ldrh r0, [r4, 0xA] adds r0, 0x60 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] subs r0, 0xD strh r0, [r4, 0xC] movs r2, 0xA ldrsh r1, [r4, r2] movs r0, 0xC ldrsh r2, [r4, r0] adds r0, r5, 0 movs r3, 0 bl obj_id_set_rotscale ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 bne _0815F310 movs r0, 0 strh r0, [r4, 0xE] adds r0, r5, 0 bl sub_80A7344 ldr r1, =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] _0815F2A0: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815F310 .pool _0815F2AC: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 bl LoadBattleMonGfxAndAnimate bl IsContest lsls r0, 24 cmp r0, 0 beq _0815F2EE ldr r3, =gSprites ldr r2, =gBattlerSpriteIds ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r3, 0 adds r1, 0x10 adds r0, r1 ldr r1, =gUnknown_082FF6C0 str r1, [r0] ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0 bl StartSpriteAffineAnim _0815F2EE: mov r4, r9 adds r3, r7, 0 ldr r5, =sub_815F330 movs r1, 0xF mov r2, r8 adds r0, r4, r2 adds r0, 0x26 movs r2, 0 _0815F2FE: strh r2, [r0] subs r0, 0x2 subs r1, 0x1 cmp r1, 0 bge _0815F2FE adds r0, r3, r6 lsls r0, 3 adds r0, r4 str r5, [r0] _0815F310: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end AnimTask_MonToSubstitute thumb_func_start sub_815F330 sub_815F330: @ 815F330 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r3, r0, 24 ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r1 movs r0, 0x8 ldrsh r5, [r4, r0] cmp r5, 0x1 beq _0815F394 cmp r5, 0x1 bgt _0815F360 cmp r5, 0 beq _0815F36A b _0815F482 .pool _0815F360: cmp r5, 0x2 beq _0815F400 cmp r5, 0x3 beq _0815F43C b _0815F482 _0815F36A: ldr r0, =gSprites lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r1, r0 ldr r0, =0x0000ff38 strh r0, [r1, 0x26] movs r0, 0xC8 strh r0, [r1, 0x24] adds r1, 0x3E ldrb r2, [r1] subs r0, 0xCD ands r0, r2 strb r0, [r1] strh r5, [r4, 0x1C] b _0815F42E .pool _0815F394: ldrh r1, [r4, 0x1C] adds r1, 0x70 movs r5, 0 strh r1, [r4, 0x1C] ldr r2, =gSprites lsls r0, r3, 4 adds r0, r3 lsls r0, 2 adds r2, r0, r2 lsls r1, 16 asrs r1, 24 ldrh r3, [r2, 0x26] adds r1, r3 strh r1, [r2, 0x26] movs r1, 0x22 ldrsh r0, [r2, r1] movs r3, 0x26 ldrsh r1, [r2, r3] adds r0, r1 movs r1, 0x20 negs r1, r1 cmp r0, r1 blt _0815F3C4 strh r5, [r2, 0x24] _0815F3C4: movs r1, 0x26 ldrsh r0, [r2, r1] cmp r0, 0 ble _0815F3CE strh r5, [r2, 0x26] _0815F3CE: movs r3, 0x26 ldrsh r0, [r2, r3] cmp r0, 0 bne _0815F482 movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x7D bl PlaySE12WithPanning ldr r1, =0xfffff800 adds r0, r1, 0 ldrh r2, [r4, 0x1C] adds r0, r2 strh r0, [r4, 0x1C] b _0815F42E .pool _0815F400: ldrh r0, [r4, 0x1C] subs r0, 0x70 strh r0, [r4, 0x1C] lsls r0, 16 cmp r0, 0 bge _0815F410 movs r0, 0 strh r0, [r4, 0x1C] _0815F410: ldr r0, =gSprites lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r1, r0 ldrh r2, [r4, 0x1C] lsls r2, 16 asrs r2, 24 ldrh r0, [r1, 0x26] subs r0, r2 strh r0, [r1, 0x26] movs r3, 0x1C ldrsh r0, [r4, r3] cmp r0, 0 bne _0815F482 _0815F42E: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815F482 .pool _0815F43C: ldrh r0, [r4, 0x1C] adds r0, 0x70 strh r0, [r4, 0x1C] ldr r2, =gSprites lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r1, r2 lsls r0, 16 asrs r0, 24 ldrh r2, [r1, 0x26] adds r0, r2 strh r0, [r1, 0x26] lsls r0, 16 cmp r0, 0 ble _0815F460 movs r0, 0 strh r0, [r1, 0x26] _0815F460: movs r3, 0x26 ldrsh r0, [r1, r3] cmp r0, 0 bne _0815F482 movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x7D bl PlaySE12WithPanning adds r0, r6, 0 bl DestroyAnimVisualTask _0815F482: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_815F330 thumb_func_start sub_815F48C sub_815F48C: @ 815F48C push {r4,r5,lr} adds r5, r0, 0 ldr r4, =gBattleAnimTarget ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815F4B8 ldrb r0, [r4] bl sub_80A82E4 subs r0, 0x2 adds r1, r5, 0 adds r1, 0x43 strb r0, [r1] ldr r4, =0x0000ff70 b _0815F4C8 .pool _0815F4B8: ldrb r0, [r4] bl sub_80A82E4 adds r0, 0x2 adds r1, r5, 0 adds r1, 0x43 strb r0, [r1] ldr r4, =0x0000ffa0 _0815F4C8: ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] strh r4, [r5, 0x26] ldr r0, =sub_815F4F0 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815F48C thumb_func_start sub_815F4F0 sub_815F4F0: @ 815F4F0 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x4 bls _0815F4FE b _0815F61A _0815F4FE: lsls r0, 2 ldr r1, =_0815F50C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815F50C: .4byte _0815F520 .4byte _0815F544 .4byte _0815F584 .4byte _0815F5B4 .4byte _0815F5E0 _0815F520: ldrh r0, [r4, 0x26] adds r0, 0xA strh r0, [r4, 0x26] lsls r0, 16 cmp r0, 0 blt _0815F61A movs r0, 0x3F bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xCD bl PlaySE12WithPanning movs r0, 0 strh r0, [r4, 0x26] b _0815F5D8 _0815F544: ldrh r1, [r4, 0x30] adds r1, 0x4 movs r5, 0 strh r1, [r4, 0x30] ldr r2, =gSineTable movs r3, 0x30 ldrsh r0, [r4, r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsls r0, 16 asrs r0, 19 negs r0, r0 strh r0, [r4, 0x26] lsls r1, 16 asrs r1, 16 cmp r1, 0x7F ble _0815F61A movs r0, 0x3F bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xCD bl PlaySE12WithPanning strh r5, [r4, 0x30] strh r5, [r4, 0x26] b _0815F5D8 .pool _0815F584: ldrh r1, [r4, 0x30] adds r1, 0x6 movs r3, 0 strh r1, [r4, 0x30] ldr r2, =gSineTable movs r5, 0x30 ldrsh r0, [r4, r5] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsls r0, 16 asrs r0, 20 negs r0, r0 strh r0, [r4, 0x26] lsls r1, 16 asrs r1, 16 cmp r1, 0x7F ble _0815F61A strh r3, [r4, 0x30] strh r3, [r4, 0x26] b _0815F5D8 .pool _0815F5B4: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 ble _0815F61A movs r0, 0x3F bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xC0 bl PlaySE12WithPanning movs r0, 0 strh r0, [r4, 0x30] _0815F5D8: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815F61A _0815F5E0: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 ble _0815F61A movs r0, 0 strh r0, [r4, 0x30] ldrh r1, [r4, 0x32] adds r1, 0x1 strh r1, [r4, 0x32] movs r0, 0x1 ands r1, r0 adds r3, r4, 0 adds r3, 0x3E lsls r1, 2 ldrb r2, [r3] subs r0, 0x6 ands r0, r2 orrs r0, r1 strb r0, [r3] movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0x7 bne _0815F61A adds r0, r4, 0 bl DestroyAnimSprite _0815F61A: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_815F4F0 thumb_func_start sub_815F620 sub_815F620: @ 815F620 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 bl IsContest lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0 bne _0815F66E movs r0, 0x1 bl duplicate_obj_of_side_rel2move_in_transparent_mode lsls r0, 16 lsrs r1, r0, 16 mov r10, r1 asrs r6, r0, 16 cmp r6, 0 blt _0815F66E movs r0, 0x1 bl duplicate_obj_of_side_rel2move_in_transparent_mode lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 asrs r1, r0, 16 cmp r1, 0 bge _0815F67C lsls r0, r6, 4 adds r0, r6 lsls r0, 2 ldr r1, =gSprites adds r0, r1 bl obj_delete_but_dont_free_vram _0815F66E: mov r0, r8 bl DestroyAnimVisualTask b _0815F780 .pool _0815F67C: ldr r4, =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r5, r0, r4 ldrh r0, [r5, 0x24] adds r0, 0x18 strh r0, [r5, 0x24] lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r6, r0, r4 ldrh r0, [r6, 0x24] subs r0, 0x18 strh r0, [r6, 0x24] strh r7, [r5, 0x2E] strh r7, [r6, 0x2E] strh r7, [r5, 0x30] strh r7, [r6, 0x30] strh r7, [r5, 0x32] strh r7, [r6, 0x32] movs r0, 0x10 strh r0, [r5, 0x34] ldr r0, =0x0000fff0 strh r0, [r6, 0x34] strh r7, [r5, 0x36] movs r0, 0x80 strh r0, [r6, 0x36] movs r0, 0x18 strh r0, [r5, 0x38] strh r0, [r6, 0x38] mov r0, r8 strh r0, [r5, 0x3A] strh r0, [r6, 0x3A] strh r7, [r5, 0x3C] strh r7, [r6, 0x3C] ldr r2, =gTasks mov r1, r8 lsls r3, r1, 2 adds r0, r3, r1 lsls r0, 3 adds r0, r2 movs r1, 0x2 strh r1, [r0, 0x8] ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gBattleAnimTarget ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 adds r7, r4, 0 mov r12, r3 cmp r0, 0 bne _0815F720 adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] adds r2, r6, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] b _0815F736 .pool _0815F720: adds r1, r5, 0 adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] adds r1, r6, 0 adds r1, 0x3E ldrb r0, [r1] orrs r0, r2 strb r0, [r1] _0815F736: mov r1, r9 lsls r0, r1, 16 asrs r0, 16 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r4, r2, r7 ldrb r1, [r4, 0x1] movs r3, 0xD negs r3, r3 adds r0, r3, 0 ands r0, r1 strb r0, [r4, 0x1] mov r1, r10 lsls r0, r1, 16 asrs r0, 16 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r4, r1, r7 ldrb r0, [r4, 0x1] ands r3, r0 strb r3, [r4, 0x1] adds r3, r7, 0 adds r3, 0x1C adds r2, r3 ldr r0, =sub_815F7C4 str r0, [r2] adds r1, r3 str r0, [r1] mov r0, r12 add r0, r8 lsls r0, 3 ldr r1, =gTasks adds r0, r1 ldr r1, =sub_815F79C str r1, [r0] _0815F780: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815F620 thumb_func_start sub_815F79C sub_815F79C: @ 815F79C push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815F7BA adds r0, r2, 0 bl DestroyAnimVisualTask _0815F7BA: pop {r0} bx r0 .pool thumb_func_end sub_815F79C thumb_func_start sub_815F7C4 sub_815F7C4: @ 815F7C4 push {r4,r5,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 _0815F80E movs r0, 0 strh r0, [r4, 0x30] ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gBattleAnimTarget ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0815F80E adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsls r1, r2, 29 lsrs r1, 31 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] _0815F80E: ldrh r0, [r4, 0x34] ldrh r1, [r4, 0x36] adds r0, r1 movs r5, 0 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] movs r2, 0x38 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _0815F840 cmp r0, 0x1 beq _0815F858 b _0815F896 .pool _0815F840: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x3C bne _0815F896 strh r5, [r4, 0x32] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0815F896 _0815F858: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 cmp r0, 0 ble _0815F896 strh r5, [r4, 0x32] ldrh r0, [r4, 0x38] subs r0, 0x2 strh r0, [r4, 0x38] lsls r0, 16 cmp r0, 0 bge _0815F896 ldr r3, =gTasks movs r2, 0x3C ldrsh r1, [r4, r2] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] adds r0, r4, 0 bl obj_delete_but_dont_free_vram _0815F896: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815F7C4 thumb_func_start AnimTask_GetReturnPowerLevel AnimTask_GetReturnPowerLevel: @ 815F8A0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r3, =gBattleAnimArgs movs r2, 0 strh r2, [r3, 0xE] ldr r1, =gAnimFriendship ldrb r0, [r1] ldrb r1, [r1] adds r0, r1, 0 subs r0, 0x3D lsls r0, 24 lsrs r0, 24 adds r2, r1, 0 cmp r0, 0x1E bhi _0815F8C4 movs r0, 0x1 strh r0, [r3, 0xE] _0815F8C4: adds r0, r2, 0 subs r0, 0x5C lsls r0, 24 lsrs r0, 24 cmp r0, 0x6C bhi _0815F8D4 movs r0, 0x2 strh r0, [r3, 0xE] _0815F8D4: lsls r0, r1, 24 lsrs r0, 24 cmp r0, 0xC8 bls _0815F8E0 movs r0, 0x3 strh r0, [r3, 0xE] _0815F8E0: adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .pool thumb_func_end AnimTask_GetReturnPowerLevel thumb_func_start sub_815F8F4 sub_815F8F4: @ 815F8F4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r0, r1 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0x4 bls _0815F91A b _0815FE68 _0815F91A: lsls r0, 2 ldr r1, =_0815F92C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815F92C: .4byte _0815F940 .4byte _0815F9F4 .4byte _0815FBE8 .4byte _0815FD08 .4byte _0815FD8C _0815F940: movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gTasks mov r2, r8 lsls r4, r2, 2 adds r0, r4, r2 lsls r0, 3 adds r6, r0, r1 movs r3, 0x80 lsls r3, 4 adds r0, r3, 0 ldrh r1, [r6, 0xA] adds r0, r1 strh r0, [r6, 0xA] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 mov r9, r4 cmp r0, 0 bne _0815F998 ldr r2, =gSprites lsls r3, r7, 4 adds r1, r3, r7 lsls r1, 2 adds r1, r2 ldrh r0, [r6, 0xA] lsls r0, 16 asrs r0, 24 ldrh r4, [r1, 0x24] adds r0, r4 strh r0, [r1, 0x24] b _0815F9B2 .pool _0815F998: ldr r3, =gSprites lsls r4, r7, 4 adds r2, r4, r7 lsls r2, 2 adds r2, r3 ldrh r1, [r6, 0xA] lsls r1, 16 asrs r1, 24 ldrh r0, [r2, 0x24] subs r0, r1 strh r0, [r2, 0x24] adds r2, r3, 0 adds r3, r4, 0 _0815F9B2: ldr r1, =gTasks mov r0, r9 add r0, r8 lsls r0, 3 adds r4, r0, r1 ldrb r0, [r4, 0xA] strh r0, [r4, 0xA] adds r1, r3, r7 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x24] ldrh r1, [r1, 0x20] adds r0, r1 lsls r0, 16 movs r1, 0x80 lsls r1, 14 adds r0, r1 movs r1, 0x98 lsls r1, 17 cmp r0, r1 bhi _0815F9DE b _0815FE68 _0815F9DE: movs r0, 0 strh r0, [r4, 0xA] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0815FE68 .pool _0815F9F4: bl IsContest lsls r0, 24 cmp r0, 0 beq _0815FA28 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldr r2, [r0, 0x8] mov r10, r2 ldr r3, [r0, 0xC] mov r9, r3 ldrh r6, [r0] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 lsrs r4, r0, 24 movs r7, 0 b _0815FB4E .pool _0815FA28: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815FAC8 ldr r7, =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r5, =gPlayerParty adds r0, r5 movs r1, 0 bl GetMonData mov r10, r0 ldrb r0, [r4] lsls r0, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0x1 bl GetMonData mov r9, r0 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] lsls r0, r2, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _0815FA9C lsls r0, r2, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r6, r0, 16 b _0815FA9E .pool _0815FA9C: ldrh r6, [r1, 0x2] _0815FA9E: movs r0, 0x1 bl GetAnimBattlerSpriteId ldr r2, =gSprites lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 adds r1, 0x43 ldrb r0, [r1] adds r0, 0x1 lsls r0, 24 lsrs r4, r0, 24 movs r7, 0 movs r5, 0x88 lsls r5, 1 b _0815FB50 .pool _0815FAC8: ldr r7, =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r5, =gEnemyParty adds r0, r5 movs r1, 0 bl GetMonData mov r10, r0 ldrb r0, [r4] lsls r0, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0x1 bl GetMonData mov r9, r0 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] lsls r0, r2, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _0815FB2C lsls r0, r2, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r6, r0, 16 b _0815FB2E .pool _0815FB2C: ldrh r6, [r1, 0x2] _0815FB2E: movs r0, 0x1 bl GetAnimBattlerSpriteId ldr r2, =gSprites lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 adds r1, 0x43 ldrb r0, [r1] subs r0, 0x1 lsls r0, 24 lsrs r4, r0, 24 movs r7, 0x1 _0815FB4E: ldr r5, =0x0000ffe0 _0815FB50: ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 lsls r3, r5, 16 asrs r3, 16 str r0, [sp] str r4, [sp, 0x4] mov r4, r10 str r4, [sp, 0x8] mov r0, r9 str r0, [sp, 0xC] ldr r4, =gBattleAnimAttacker ldrb r0, [r4] str r0, [sp, 0x10] movs r0, 0 str r0, [sp, 0x14] adds r0, r6, 0 adds r1, r7, 0 movs r2, 0 bl sub_80A8394 lsls r0, 24 lsrs r5, r0, 24 ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldrb r0, [r4] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrh r0, [r0, 0x2] cmp r0, 0 beq _0815FBBA ldr r1, =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x5] lsrs r0, 4 lsls r0, 4 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 orrs r0, r1 ldr r3, =0x00007fff movs r1, 0x10 movs r2, 0x6 bl BlendPalette _0815FBBA: ldr r0, =gTasks mov r3, r8 lsls r1, r3, 2 add r1, r8 lsls r1, 3 adds r1, r0 strh r5, [r1, 0x26] b _0815FD7E .pool _0815FBE8: ldr r1, =gTasks mov r0, r8 lsls r4, r0, 2 adds r0, r4, r0 lsls r0, 3 adds r6, r0, r1 ldrh r0, [r6, 0x26] lsls r0, 24 lsrs r5, r0, 24 movs r1, 0x80 lsls r1, 4 adds r0, r1, 0 ldrh r2, [r6, 0xA] adds r0, r2 strh r0, [r6, 0xA] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 mov r9, r4 cmp r0, 0 bne _0815FC40 ldr r3, =gSprites lsls r4, r5, 4 adds r2, r4, r5 lsls r2, 2 adds r2, r3 ldrh r1, [r6, 0xA] lsls r1, 16 asrs r1, 24 ldrh r0, [r2, 0x24] subs r0, r1 strh r0, [r2, 0x24] adds r2, r3, 0 adds r3, r4, 0 b _0815FC56 .pool _0815FC40: ldr r2, =gSprites lsls r3, r5, 4 adds r1, r3, r5 lsls r1, 2 adds r1, r2 ldrh r0, [r6, 0xA] lsls r0, 16 asrs r0, 24 ldrh r4, [r1, 0x24] adds r0, r4 strh r0, [r1, 0x24] _0815FC56: ldr r1, =gTasks mov r0, r9 add r0, r8 lsls r0, 3 adds r6, r0, r1 ldrb r0, [r6, 0xA] strh r0, [r6, 0xA] adds r1, r3, r5 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x24] ldrh r1, [r1, 0x20] adds r0, r1 lsls r0, 16 lsrs r5, r0, 16 movs r1, 0x24 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815FCD6 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815FCB4 lsls r4, r5, 16 asrs r4, 16 ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 bge _0815FCD6 b _0815FCCA .pool _0815FCB4: lsls r4, r5, 16 asrs r4, 16 ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 ble _0815FCD6 _0815FCCA: ldrh r0, [r6, 0x24] adds r0, 0x1 strh r0, [r6, 0x24] ldr r1, =gBattleAnimArgs ldr r0, =0x0000ffff strh r0, [r1, 0xE] _0815FCD6: lsls r0, r5, 16 movs r2, 0x80 lsls r2, 14 adds r0, r2 movs r1, 0x98 lsls r1, 17 cmp r0, r1 bhi _0815FCE8 b _0815FE68 _0815FCE8: ldr r0, =gTasks mov r1, r9 add r1, r8 lsls r1, 3 adds r1, r0 movs r0, 0 strh r0, [r1, 0xA] b _0815FD7E .pool _0815FD08: movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gTasks mov r3, r8 lsls r4, r3, 2 adds r0, r4, r3 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x26] lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 4 adds r0, r5 lsls r0, 2 ldr r5, =gSprites adds r0, r5 bl sub_80A8610 ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 mov r9, r4 cmp r0, 0 bne _0815FD60 lsls r1, r7, 4 adds r1, r7 lsls r1, 2 adds r1, r5 ldrh r0, [r1, 0x20] negs r0, r0 subs r0, 0x20 strh r0, [r1, 0x24] b _0815FD74 .pool _0815FD60: lsls r0, r7, 4 adds r0, r7 lsls r0, 2 adds r0, r5 ldrh r2, [r0, 0x20] movs r4, 0x88 lsls r4, 1 adds r1, r4, 0 subs r1, r2 strh r1, [r0, 0x24] _0815FD74: ldr r0, =gTasks mov r1, r9 add r1, r8 lsls r1, 3 adds r1, r0 _0815FD7E: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0815FE68 .pool _0815FD8C: movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gTasks mov r0, r8 lsls r4, r0, 2 adds r0, r4, r0 lsls r0, 3 adds r2, r0, r1 movs r1, 0x80 lsls r1, 4 adds r0, r1, 0 ldrh r3, [r2, 0xA] adds r0, r3 strh r0, [r2, 0xA] ldr r0, =gBattleAnimAttacker mov r10, r0 ldrb r0, [r0] str r2, [sp, 0x18] bl GetBattlerSide lsls r0, 24 mov r9, r4 ldr r2, [sp, 0x18] cmp r0, 0 bne _0815FE0C ldr r1, =gSprites lsls r5, r7, 4 adds r0, r5, r7 lsls r0, 2 adds r6, r0, r1 ldrh r0, [r2, 0xA] lsls r0, 16 asrs r0, 24 ldrh r1, [r6, 0x24] adds r0, r1 strh r0, [r6, 0x24] movs r2, 0x24 ldrsh r4, [r6, r2] movs r3, 0x20 ldrsh r0, [r6, r3] adds r4, r0 mov r1, r10 ldrb r0, [r1] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r3, r5, 0 cmp r4, r0 blt _0815FE44 movs r2, 0 strh r2, [r6, 0x24] b _0815FE44 .pool _0815FE0C: ldr r1, =gSprites lsls r5, r7, 4 adds r0, r5, r7 lsls r0, 2 adds r6, r0, r1 ldrh r1, [r2, 0xA] lsls r1, 16 asrs r1, 24 ldrh r0, [r6, 0x24] subs r0, r1 strh r0, [r6, 0x24] movs r3, 0x24 ldrsh r4, [r6, r3] movs r1, 0x20 ldrsh r0, [r6, r1] adds r4, r0 mov r2, r10 ldrb r0, [r2] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r3, r5, 0 cmp r4, r0 bgt _0815FE44 movs r4, 0 strh r4, [r6, 0x24] _0815FE44: ldr r1, =gTasks mov r0, r9 add r0, r8 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0xA] strh r1, [r0, 0xA] ldr r1, =gSprites adds r0, r3, r7 lsls r0, 2 adds r0, r1 movs r1, 0x24 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815FE68 mov r0, r8 bl DestroyAnimVisualTask _0815FE68: add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_815F8F4 thumb_func_start sub_815FE80 sub_815FE80: @ 815FE80 push {r4,lr} adds r4, r0, 0 movs r1, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 beq _0815FE92 cmp r0, 0x1 beq _0815FF3A b _0815FFBC _0815FE92: ldr r0, =gBattleAnimArgs movs r2, 0xE ldrsh r1, [r0, r2] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _0815FF2C movs r0, 0x3F bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x7A bl PlaySE12WithPanning ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x10 strh r0, [r4, 0x22] ldr r0, =0x0000ffe0 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0815FFBC bl IsContest lsls r0, 24 cmp r0, 0 bne _0815FFBC movs r0, 0x1 bl GetAnimBattlerSpriteId ldr r2, =gSprites lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 adds r1, 0x43 ldrb r0, [r1] subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 strb r0, [r1] b _0815FFBC .pool _0815FF2C: adds r0, r4, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _0815FFBC _0815FF3A: movs r1, 0x30 ldrsh r0, [r4, r1] movs r2, 0x2E ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x26] ldrh r2, [r4, 0x30] adds r0, r2, 0x5 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x7F ble _0815FF6E movs r1, 0x2E ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] adds r0, r2, 0 subs r0, 0x7A strh r0, [r4, 0x30] _0815FF6E: movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0815FF9C ldrh r2, [r4, 0x32] lsls r1, r2, 16 asrs r1, 24 ldrh r0, [r4, 0x24] subs r0, r1 strh r0, [r4, 0x24] adds r1, r2, 0 b _0815FFA8 .pool _0815FF9C: ldrh r1, [r4, 0x32] lsls r0, r1, 16 asrs r0, 24 ldrh r2, [r4, 0x24] adds r0, r2 strh r0, [r4, 0x24] _0815FFA8: movs r0, 0xFF ands r0, r1 strh r0, [r4, 0x32] movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x2 bne _0815FFBC adds r0, r4, 0 bl DestroyAnimSprite _0815FFBC: pop {r4} pop {r0} bx r0 thumb_func_end sub_815FE80 thumb_func_start sub_815FFC4 sub_815FFC4: @ 815FFC4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x26 ldrsh r0, [r0, r2] adds r3, r1, 0 cmp r0, 0x4 bls _0815FFE0 b _08160132 _0815FFE0: lsls r0, 2 ldr r1, =_0815FFF4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0815FFF4: .4byte _08160008 .4byte _08160058 .4byte _081600B4 .4byte _081600CC .4byte _08160132 _08160008: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r2, r0, 0 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r1 movs r0, 0x6 strh r0, [r1, 0x8] cmp r5, r2 ble _0816003E negs r0, r0 strh r0, [r1, 0x8] _0816003E: strh r5, [r1, 0xA] strh r2, [r1, 0xC] ldrh r0, [r1, 0x26] adds r0, 0x1 strh r0, [r1, 0x26] b _08160150 .pool _08160058: ldr r1, =gBattlerSpriteIds ldr r0, =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] ldr r1, =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r1, r0, r1 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r3 ldrh r0, [r2, 0x8] ldrh r3, [r1, 0x24] adds r0, r3 strh r0, [r1, 0x24] movs r3, 0x8 ldrsh r0, [r2, r3] cmp r0, 0 ble _081600A0 movs r3, 0x20 ldrsh r0, [r1, r3] movs r3, 0x24 ldrsh r1, [r1, r3] adds r0, r1 movs r3, 0xC ldrsh r1, [r2, r3] b _08160126 .pool _081600A0: movs r3, 0x20 ldrsh r0, [r1, r3] movs r3, 0x24 ldrsh r1, [r1, r3] adds r0, r1 movs r3, 0xC ldrsh r1, [r2, r3] cmp r0, r1 bgt _08160150 b _0816012A _081600B4: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r3 movs r2, 0x8 ldrsh r1, [r0, r2] negs r1, r1 strh r1, [r0, 0x8] ldrh r1, [r0, 0x26] adds r1, 0x1 strh r1, [r0, 0x26] b _08160150 _081600CC: ldr r1, =gBattlerSpriteIds ldr r0, =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] ldr r1, =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r1, r0, r1 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r3 ldrh r0, [r2, 0x8] ldrh r3, [r1, 0x24] adds r0, r3 strh r0, [r1, 0x24] movs r3, 0x8 ldrsh r0, [r2, r3] cmp r0, 0 bge _08160118 movs r3, 0x20 ldrsh r0, [r1, r3] movs r3, 0x24 ldrsh r1, [r1, r3] adds r0, r1 movs r3, 0xA ldrsh r1, [r2, r3] cmp r0, r1 bgt _08160150 b _0816012A .pool _08160118: movs r3, 0x20 ldrsh r0, [r1, r3] movs r3, 0x24 ldrsh r1, [r1, r3] adds r0, r1 movs r3, 0xA ldrsh r1, [r2, r3] _08160126: cmp r0, r1 blt _08160150 _0816012A: ldrh r0, [r2, 0x26] adds r0, 0x1 strh r0, [r2, 0x26] b _08160150 _08160132: ldr r1, =gBattlerSpriteIds ldr r0, =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] ldr r1, =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0 strh r1, [r0, 0x24] adds r0, r4, 0 bl DestroyAnimVisualTask _08160150: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_815FFC4 thumb_func_start sub_8160164 sub_8160164: @ 8160164 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r4, r1, r0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0xE] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 movs r2, 0x1 negs r2, r2 adds r1, r2, 0 cmp r0, 0 bne _08160198 movs r1, 0x1 _08160198: strh r1, [r4, 0x10] ldr r2, =gSprites movs r0, 0xE ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x22] strh r0, [r4, 0x14] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x20] strh r0, [r4, 0x12] strh r5, [r4, 0x1A] strh r5, [r4, 0x1E] movs r0, 0x1 strh r0, [r4, 0x1C] strh r5, [r4, 0x20] ldr r0, =sub_81601DC str r0, [r4] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8160164 thumb_func_start sub_81601DC sub_81601DC: @ 81601DC push {r4-r6,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _08160284 cmp r0, 0x1 bgt _08160204 cmp r0, 0 beq _0816020A b _081602DA .pool _08160204: cmp r0, 0x2 beq _081602D4 b _081602DA _0816020A: ldrh r0, [r4, 0x1E] adds r0, 0x8 movs r2, 0xFF ands r0, r2 strh r0, [r4, 0x1E] ldr r5, =gSprites movs r6, 0xE ldrsh r0, [r4, r6] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 ldr r3, =gSineTable movs r6, 0x1E ldrsh r0, [r4, r6] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 16 asrs r0, 21 strh r0, [r1, 0x24] ldrh r0, [r4, 0x1A] adds r0, 0x2 ands r0, r2 strh r0, [r4, 0x1A] movs r1, 0xE ldrsh r0, [r4, r1] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r5 movs r6, 0x1A ldrsh r0, [r4, r6] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 16 asrs r0, 19 ldrh r1, [r4, 0x10] muls r0, r1 ldrh r1, [r4, 0x12] adds r0, r1 strh r0, [r2, 0x20] movs r6, 0x1A ldrsh r0, [r4, r6] cmp r0, 0 bne _081602DA movs r0, 0xE ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrh r1, [r4, 0x12] strh r1, [r0, 0x20] b _081602C4 .pool _08160284: ldrh r0, [r4, 0x1E] adds r0, 0x8 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x1E] ldr r3, =gSprites movs r1, 0xE ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 ldr r2, =gSineTable movs r5, 0x1E ldrsh r0, [r4, r5] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsls r0, 16 asrs r0, 21 strh r0, [r1, 0x24] movs r6, 0x1E ldrsh r2, [r4, r6] cmp r2, 0 bne _081602DA movs r1, 0xE ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 strh r2, [r1, 0x24] _081602C4: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _081602DA .pool _081602D4: adds r0, r2, 0 bl DestroyAnimVisualTask _081602DA: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_81601DC thumb_func_start sub_81602E0 sub_81602E0: @ 81602E0 push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 ldrh r0, [r4, 0x2E] ldrh r1, [r4, 0x30] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x14 bl Cos strh r0, [r4, 0x24] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x14 bl Sin strh r0, [r4, 0x26] adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08160326 adds r0, r4, 0 bl DestroyAnimSprite _08160326: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_81602E0 thumb_func_start sub_8160338 sub_8160338: @ 8160338 push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0816037C ldr r2, =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] ldr r0, =0x0000fff5 strh r0, [r4, 0x2E] movs r0, 0xC0 strh r0, [r4, 0x30] adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim b _08160396 .pool _0816037C: movs r0, 0xB strh r0, [r4, 0x2E] movs r0, 0xC0 strh r0, [r4, 0x30] ldr r1, =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] _08160396: ldr r0, =sub_81602E0 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_8160338 thumb_func_start sub_81603A8 sub_81603A8: @ 81603A8 push {r4,r5,lr} adds r5, r0, 0 ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x2 bl sub_80A861C strh r0, [r5, 0x22] lsls r0, 16 asrs r0, 16 cmp r0, 0xF bgt _081603D2 movs r0, 0x10 strh r0, [r5, 0x22] _081603D2: movs r0, 0 strh r0, [r5, 0x3A] movs r1, 0x10 strh r1, [r5, 0x3C] ldr r0, =sub_81603F4 str r0, [r5, 0x1C] lsls r1, 8 movs r0, 0x52 bl SetGpuReg pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_81603A8 thumb_func_start sub_81603F4 sub_81603F4: @ 81603F4 push {r4,lr} adds r4, r0, 0 movs r0, 0x32 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _0816046C cmp r1, 0x1 bgt _0816040A cmp r1, 0 beq _08160414 b _081604E8 _0816040A: cmp r1, 0x2 beq _08160482 cmp r1, 0x3 beq _081604E2 b _081604E8 _08160414: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _081604E8 strh r1, [r4, 0x2E] ldrh r1, [r4, 0x30] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0816043E ldrh r2, [r4, 0x3A] movs r3, 0x3A ldrsh r0, [r4, r3] cmp r0, 0xF bgt _0816044C adds r0, r2, 0x1 strh r0, [r4, 0x3A] b _0816044C _0816043E: ldrh r2, [r4, 0x3C] movs r3, 0x3C ldrsh r0, [r4, r3] cmp r0, 0 beq _0816044C subs r0, r2, 0x1 strh r0, [r4, 0x3C] _0816044C: adds r0, r1, 0x1 strh r0, [r4, 0x30] 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, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 bne _081604E8 b _081604DA _0816046C: ldrh r0, [r4, 0x2E] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bne _081604E8 strh r1, [r4, 0x2E] strh r1, [r4, 0x30] b _081604DA _08160482: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _081604E8 movs r0, 0 strh r0, [r4, 0x2E] ldrh r1, [r4, 0x30] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _081604AE ldrh r2, [r4, 0x3A] movs r3, 0x3A ldrsh r0, [r4, r3] cmp r0, 0 beq _081604BC subs r0, r2, 0x1 strh r0, [r4, 0x3A] b _081604BC _081604AE: ldrh r2, [r4, 0x3C] movs r3, 0x3C ldrsh r0, [r4, r3] cmp r0, 0xF bgt _081604BC adds r0, r2, 0x1 strh r0, [r4, 0x3C] _081604BC: adds r0, r1, 0x1 strh r0, [r4, 0x30] 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, 0x3C ldrsh r0, [r4, r1] cmp r0, 0x10 bne _081604E8 _081604DA: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] b _081604E8 _081604E2: adds r0, r4, 0 bl move_anim_8074EE0 _081604E8: pop {r4} pop {r0} bx r0 thumb_func_end sub_81603F4 thumb_func_start AnimTask_GetWeather AnimTask_GetWeather: @ 81604F0 push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r2, =gBattleAnimArgs movs r0, 0 strh r0, [r2, 0xE] ldr r0, =gWeatherMoveAnim ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08160514 movs r0, 0x1 b _08160536 .pool _08160514: movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _08160520 movs r0, 0x2 b _08160536 _08160520: movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _0816052C movs r0, 0x3 b _08160536 _0816052C: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08160538 movs r0, 0x4 _08160536: strh r0, [r2, 0xE] _08160538: adds r0, r3, 0 bl DestroyAnimVisualTask pop {r0} bx r0 thumb_func_end AnimTask_GetWeather thumb_func_start sub_8160544 sub_8160544: @ 8160544 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, =gTasks adds r4, r0 movs r0, 0 strh r0, [r4, 0x8] ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE9C8 adds r0, r4, 0 bl sub_80A7CFC ldr r0, =sub_816058C str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_8160544 thumb_func_start sub_816058C sub_816058C: @ 816058C push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r2, =gTasks adds r3, r0, r2 ldrh r0, [r3, 0x8] adds r1, r0, 0x1 movs r5, 0 strh r1, [r3, 0x8] subs r0, 0x10 lsls r0, 16 lsrs r0, 16 adds r6, r2, 0 cmp r0, 0x16 bhi _081605F0 ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 ble _08160600 strh r5, [r3, 0xA] ldrh r0, [r3, 0xC] adds r0, 0x1 strh r0, [r3, 0xC] movs r5, 0x1 ands r0, r5 cmp r0, 0 bne _081605F0 ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, =0x0000ffff strh r1, [r0, 0x24] b _08160600 .pool _081605F0: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r5, [r0, 0x24] _08160600: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r6 bl sub_80A7D34 lsls r0, 24 cmp r0, 0 bne _08160618 adds r0, r4, 0 bl DestroyAnimVisualTask _08160618: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_816058C .align 2, 0 @ Don't pad with nop.