diff options
Diffstat (limited to 'asm/battle_anim_effects_1.s')
-rw-r--r-- | asm/battle_anim_effects_1.s | 9550 |
1 files changed, 9550 insertions, 0 deletions
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s new file mode 100644 index 000000000..138cc271e --- /dev/null +++ b/asm/battle_anim_effects_1.s @@ -0,0 +1,9550 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80FE840 +sub_80FE840: @ 80FE840 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FE87C + ldrh r0, [r5, 0x8] + negs r0, r0 + b _080FE87E + .pool +_080FE87C: + ldrh r0, [r5, 0x8] +_080FE87E: + strh r0, [r4, 0x34] + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r4, 0x36] + ldr r0, =sub_80FE898 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FE840 + + thumb_func_start sub_80FE898 +sub_80FE898: @ 80FE898 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080FE8D4 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080FE8DA +_080FE8D4: + adds r0, r4, 0 + bl DestroyAnimSprite +_080FE8DA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FE898 + + thumb_func_start sub_80FE8E0 +sub_80FE8E0: @ 80FE8E0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r5, =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r4, 0x1C] + ldr r1, =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FE8E0 + + thumb_func_start sub_80FE930 +sub_80FE930: @ 80FE930 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r5, =gBattleAnimArgs + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, =sub_80A6EEC + 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_80FE930 + + thumb_func_start sub_80FE988 +sub_80FE988: @ 80FE988 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r6, =gBattleAnimArgs + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl InitAnimLinearTranslation + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x38] + ldr r1, =sub_80FE9E4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FE988 + + thumb_func_start sub_80FE9E4 +sub_80FE9E4: @ 80FE9E4 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimLinear + lsls r0, 24 + cmp r0, 0 + beq _080FE9FA + adds r0, r4, 0 + bl DestroySprite + b _080FEA4E +_080FE9FA: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _080FEA14 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A82E4 + adds r0, 0x1 + b _080FEA1E + .pool +_080FEA14: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A82E4 + adds r0, 0x6 +_080FEA1E: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0xF + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080FEA4E: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FE9E4 + + thumb_func_start sub_80FEA58 +sub_80FEA58: @ 80FEA58 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r0, 0x1 + movs r2, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080FEAB2 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + movs r0, 0x6 + strh r0, [r5, 0x8] + ldr r1, =gBattleAnimArgs + movs r0, 0xF + strh r0, [r1] + strh r2, [r1, 0x2] + movs r0, 0x50 + strh r0, [r1, 0x4] + strh r2, [r1, 0x6] + ldr r4, =gUnknown_08592210 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A82E4 + adds r3, r0, 0 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl CreateSpriteAndAnimate +_080FEAB2: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0xF + bne _080FEAC0 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080FEAC0: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEA58 + + thumb_func_start sub_80FEAD8 +sub_80FEAD8: @ 80FEAD8 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r6, =gBattleAnimArgs + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x2E] + ldr r5, =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80A68D4 + ldr r0, =sub_80FEB28 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEAD8 + + thumb_func_start sub_80FEB28 +sub_80FEB28: @ 80FEB28 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _080FEB3C + adds r0, r4, 0 + bl DestroyAnimSprite +_080FEB3C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEB28 + + thumb_func_start sub_80FEB44 +sub_80FEB44: @ 80FEB44 + push {r4,r5,lr} + adds r5, r0, 0 + bl Random2 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x7 + ands r1, r0 + adds r0, r5, 0 + bl StartSpriteAnim + 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] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FEB90 + ldrh r0, [r5, 0x20] + subs r0, 0x14 + b _080FEB94 + .pool +_080FEB90: + ldrh r0, [r5, 0x20] + adds r0, 0x14 +_080FEB94: + strh r0, [r5, 0x20] + bl Random2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + adds r0, 0x40 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80A7160 + bl Random2 + movs r1, 0xFF + ands r1, r0 + strh r1, [r5, 0x38] + adds r0, r5, 0 + adds r0, 0x43 + ldrb r0, [r0] + strh r0, [r5, 0x3A] + ldr r1, =sub_80FEBFC + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEB44 + + thumb_func_start sub_80FEBFC +sub_80FEBFC: @ 80FEBFC + push {r4,lr} + adds r4, r0, 0 + bl sub_80A70E8 + lsls r0, 24 + cmp r0, 0 + beq _080FEC12 + adds r0, r4, 0 + bl DestroyAnimSprite + b _080FEC42 +_080FEC12: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xC + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7E + bgt _080FEC2E + ldrh r0, [r4, 0x3A] + b _080FEC32 +_080FEC2E: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 +_080FEC32: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x18 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080FEC42: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEBFC + + thumb_func_start sub_80FEC48 +sub_80FEC48: @ 80FEC48 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FEC68 + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080FEC68: + ldr r4, =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_80A68D4 + ldr r0, =sub_80FECB8 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEC48 + + thumb_func_start sub_80FECB8 +sub_80FECB8: @ 80FECB8 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _080FECE2 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0xA + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] + ldr r1, =sub_80FECF0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 +_080FECE2: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FECB8 + + thumb_func_start sub_80FECF0 +sub_80FECF0: @ 80FECF0 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FECF0 + + thumb_func_start sub_80FED28 +sub_80FED28: @ 80FED28 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r5, =gBattleAnimArgs + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl StartSpriteAnim + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080FED52 + ldrb r0, [r4, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] +_080FED52: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldr r1, =sub_80FED74 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FED28 + + thumb_func_start sub_80FED74 +sub_80FED74: @ 80FED74 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x32] + adds r1, 0x18 + strh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080FEDC8 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + b _080FEDEC + .pool +_080FEDC8: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8328 + adds r0, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080FEDDC + movs r2, 0x3 +_080FEDDC: + movs r0, 0x3 + ands r2, r0 + lsls r2, 2 + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 +_080FEDEC: + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x30] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080FEE10 + adds r0, r4, 0 + bl DestroyAnimSprite +_080FEE10: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FED74 + + thumb_func_start sub_80FEE1C +sub_80FEE1C: @ 80FEE1C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080FEE36 + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + bne _080FEE3E +_080FEE36: + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080FEE70 +_080FEE3E: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8364 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FEE60 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x3 + bl SetAnimBgAttribute + b _080FEE6A + .pool +_080FEE60: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute +_080FEE6A: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080FEE70: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEE1C + + thumb_func_start sub_80FEE78 +sub_80FEE78: @ 80FEE78 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_80A69CC + ldr r5, =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl InitAnimLinearTranslation + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, =sub_80FEECC + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEE78 + + thumb_func_start sub_80FEECC +sub_80FEECC: @ 80FEECC + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimLinear + lsls r0, 24 + cmp r0, 0 + bne _080FEF38 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080FEF18 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80A82E4 + subs r0, 0x1 + b _080FEF22 + .pool +_080FEF18: + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80A82E4 + adds r0, 0x1 +_080FEF22: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080FEF3E + .pool +_080FEF38: + adds r0, r4, 0 + bl DestroyAnimSprite +_080FEF3E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEECC + + thumb_func_start sub_80FEF44 +sub_80FEF44: @ 80FEF44 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r5, =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl InitAnimLinearTranslation + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, =sub_80FEF98 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEF44 + + thumb_func_start sub_80FEF98 +sub_80FEF98: @ 80FEF98 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimLinear + lsls r0, 24 + cmp r0, 0 + bne _080FEFF0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x3B + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _080FEFD0 + adds r0, r1, 0 + subs r0, 0xBB + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _080FEFE4 +_080FEFD0: + ldrb r2, [r4, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + eors r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_080FEFE4: + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080FEFF6 +_080FEFF0: + adds r0, r4, 0 + bl DestroyAnimSprite +_080FEFF6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEF98 + + thumb_func_start sub_80FEFFC +sub_80FEFFC: @ 80FEFFC + 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] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldr r0, =sub_80FF044 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FEFFC + + thumb_func_start sub_80FF044 +sub_80FF044: @ 80FF044 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x32] + movs r2, 0x32 + ldrsh r3, [r1, r2] + cmp r3, 0 + bne _080FF078 + ldrh r0, [r1, 0x30] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _080FF066 + movs r0, 0x80 + strh r0, [r1, 0x2E] + strh r3, [r1, 0x30] + strh r3, [r1, 0x32] + b _080FF06C +_080FF066: + strh r2, [r1, 0x2E] + strh r2, [r1, 0x30] + strh r2, [r1, 0x32] +_080FF06C: + ldr r0, =sub_80FF090 + str r0, [r1, 0x1C] + b _080FF08C + .pool +_080FF078: + subs r0, 0x1 + strh r0, [r1, 0x32] + ldrh r0, [r1, 0x2E] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] +_080FF08C: + pop {r0} + bx r0 + thumb_func_end sub_80FF044 + + thumb_func_start sub_80FF090 +sub_80FF090: @ 80FF090 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FF0B4 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin + negs r0, r0 + b _080FF0BE + .pool +_080FF0B4: + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin +_080FF0BE: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080FF0DE + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] +_080FF0DE: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080FF0EC + adds r0, r4, 0 + bl DestroyAnimSprite +_080FF0EC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FF090 + + thumb_func_start sub_80FF0F4 +sub_80FF0F4: @ 80FF0F4 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FF114 + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080FF114: + ldr r6, =gBattleAnimArgs + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080FF154 + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + b _080FF174 + .pool +_080FF154: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl SetAverageBattlerPositions + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 +_080FF174: + strh r0, [r5, 0x36] + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80A68D4 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + adds r4, r0, 0 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080FF1AC + movs r0, 0x1 + b _080FF1AE + .pool +_080FF1AC: + movs r0, 0 +_080FF1AE: + strh r0, [r5, 0x2E] + ldr r0, =sub_80FF1C0 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF0F4 + + thumb_func_start sub_80FF1C0 +sub_80FF1C0: @ 80FF1C0 + push {r4-r7,lr} + adds r6, r0, 0 + movs r7, 0 + ldrh r5, [r6, 0x2E] + ldrh r4, [r6, 0x3C] + movs r0, 0x1 + strh r0, [r6, 0x2E] + adds r0, r6, 0 + bl TranslateAnimArc + ldrh r0, [r6, 0x3C] + strh r5, [r6, 0x2E] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0xC8 + ble _080FF1F2 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x37 + bgt _080FF1F2 + ldrh r0, [r6, 0x6] + cmp r0, 0 + bne _080FF1F8 + adds r0, 0x1 + strh r0, [r6, 0x6] +_080FF1F2: + ldrh r0, [r6, 0x6] + cmp r0, 0 + beq _080FF22A +_080FF1F8: + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080FF22A + adds r3, r6, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r6, 0x6] + adds r0, 0x1 + strh r0, [r6, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bne _080FF22A + movs r7, 0x1 +_080FF22A: + movs r2, 0x20 + ldrsh r0, [r6, r2] + movs r2, 0x24 + ldrsh r1, [r6, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080FF254 + movs r0, 0x22 + ldrsh r1, [r6, r0] + movs r2, 0x26 + ldrsh r0, [r6, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080FF254 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080FF256 +_080FF254: + movs r7, 0x1 +_080FF256: + cmp r7, 0 + beq _080FF260 + adds r0, r6, 0 + bl DestroyAnimSprite +_080FF260: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FF1C0 + + thumb_func_start sub_80FF268 +sub_80FF268: @ 80FF268 + push {r4,lr} + adds r4, r0, 0 + bl IsDoubleBattle + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FF28A + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl SetAverageBattlerPositions +_080FF28A: + ldrh r0, [r4, 0x22] + adds r0, 0x20 + strh r0, [r4, 0x22] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x36] + ldr r0, =sub_80FF2BC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF268 + + thumb_func_start sub_80FF2BC +sub_80FF2BC: @ 80FF2BC + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bne _080FF2D2 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + b _080FF2E0 +_080FF2D2: + cmp r0, 0 + ble _080FF2E0 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + subs r0, r1, 0x2 + strh r0, [r4, 0x30] +_080FF2E0: + ldrh r3, [r4, 0x32] + ldrh r5, [r4, 0x38] + adds r2, r3, r5 + strh r2, [r4, 0x38] + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r5, 0x36 + ldrsh r0, [r4, r5] + cmp r1, r0 + bge _080FF2F8 + adds r0, r2, r3 + strh r0, [r4, 0x38] +_080FF2F8: + ldrh r1, [r4, 0x38] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x24] + movs r5, 0x38 + ldrsh r0, [r4, r5] + movs r1, 0x5 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080FF338 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8328 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + b _080FF346 + .pool +_080FF338: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8328 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 +_080FF346: + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080FF36A + adds r0, r4, 0 + bl DestroyAnimSprite +_080FF36A: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF2BC + + thumb_func_start sub_80FF374 +sub_80FF374: @ 80FF374 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_80A6980 + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r4, =gBattleAnimArgs + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAffineAnim + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, =sub_80FF3B0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF374 + + thumb_func_start sub_80FF3B0 +sub_80FF3B0: @ 80FF3B0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, =0x0000ffff + cmp r1, r0 + bne _080FF3DA + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + bl GetAnimBattlerSpriteId + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x2E] + ldr r0, =sub_80FF3EC + str r0, [r4, 0x1C] +_080FF3DA: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF3B0 + + thumb_func_start sub_80FF3EC +sub_80FF3EC: @ 80FF3EC + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl GetAnimBattlerSpriteId + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080FF404 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + b _080FF408 +_080FF404: + ldrh r0, [r4, 0x2E] + subs r0, 0xB +_080FF408: + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080FF424 + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x32] +_080FF424: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080FF452 + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + cmp r0, 0 + ble _080FF44C + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAffineAnim + b _080FF452 +_080FF44C: + adds r0, r4, 0 + bl DestroyAnimSprite +_080FF452: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FF3EC + + thumb_func_start sub_80FF458 +sub_80FF458: @ 80FF458 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 + bl GetAnimBattlerSpriteId + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, =gSprites + mov r10, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + mov r2, r10 + adds r7, r0, r2 + adds r0, r7, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080FF498 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080FF51C + .pool +_080FF498: + adds r0, r1, 0 + movs r1, 0x1 + bl sub_80A7270 + ldr r0, =gTasks + lsls r6, r4, 2 + adds r6, r4 + lsls r6, 3 + adds r6, r0 + ldrb r0, [r7, 0x5] + lsls r0, 28 + lsrs r0, 30 + strh r0, [r6, 0x24] + ldr r0, =gBattleAnimTarget + mov r9, r0 + ldrb r0, [r0] + bl sub_80A8328 + movs r1, 0x3 + mov r8, r1 + mov r1, r8 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r5, 0xD + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + movs r0, 0x3 + bl GetAnimBattlerSpriteId + lsls r0, 24 + lsrs r1, r0, 24 + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + add r4, r10 + ldrb r0, [r4, 0x5] + lsls r0, 28 + lsrs r0, 30 + strh r0, [r6, 0x26] + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x2 + eors r0, r1 + bl sub_80A8328 + mov r1, r8 + ands r1, r0 + lsls r1, 2 + ldrb r0, [r4, 0x5] + ands r5, r0 + orrs r5, r1 + strb r5, [r4, 0x5] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r6, 0x8] + ldrh r0, [r1, 0x2] + strh r0, [r6, 0xA] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r6, 0x1E] + ldr r0, =sub_80FF53C + str r0, [r6] +_080FF51C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF458 + + thumb_func_start sub_80FF53C +sub_80FF53C: @ 80FF53C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl GetAnimBattlerSpriteId + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + ldrh r0, [r4, 0x1C] + adds r1, r0 + strh r1, [r4, 0x1C] + ldr r2, =gSprites + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r2 + lsls r1, 16 + asrs r1, 24 + strh r1, [r5, 0x24] + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080FF586 + ldrh r0, [r5, 0x24] + negs r0, r0 + strh r0, [r5, 0x24] +_080FF586: + ldrh r0, [r4, 0x1E] + adds r0, 0x10 + strh r0, [r4, 0x1E] + movs r0, 0x1E + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + adds r0, r6, 0 + bl sub_80A7E6C + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080FF5B4 + strh r0, [r4, 0x8] + ldr r0, =sub_80FF5CC + str r0, [r4] +_080FF5B4: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF53C + + thumb_func_start sub_80FF5CC +sub_80FF5CC: @ 80FF5CC + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, =0x0000ffff + cmp r1, r0 + bne _080FF660 + ldr r0, =gTasks + lsls r2, r3, 2 + adds r1, r2, r3 + lsls r1, 3 + adds r7, r1, r0 + movs r1, 0x8 + ldrsh r5, [r7, r1] + adds r4, r0, 0 + cmp r5, 0 + bne _080FF674 + movs r0, 0x1 + bl GetAnimBattlerSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80A7344 + ldr r6, =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r6 + strh r5, [r1, 0x24] + strh r5, [r1, 0x26] + movs r5, 0x3 + ldrh r2, [r7, 0x24] + ands r2, r5 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r4, 0xD + negs r4, r4 + adds r0, r4, 0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + movs r0, 0x3 + bl GetAnimBattlerSpriteId + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r0, [r7, 0x26] + ands r0, r5 + lsls r0, 2 + ldrb r2, [r1, 0x5] + ands r4, r2 + orrs r4, r0 + strb r4, [r1, 0x5] + ldrh r0, [r7, 0x8] + adds r0, 0x1 + strh r0, [r7, 0x8] + b _080FF68E + .pool +_080FF660: + ldr r1, =gTasks + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + movs r4, 0x8 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0 + beq _080FF68E +_080FF674: + adds r1, r2, r3 + lsls r1, 3 + adds r1, r4 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080FF68E + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080FF68E: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF5CC + + thumb_func_start sub_80FF698 +sub_80FF698: @ 80FF698 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080FF6AA + cmp r0, 0x1 + beq _080FF704 + b _080FF756 +_080FF6AA: + ldr r6, =gBattleAnimTarget + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080FF6C2 + ldr r1, =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080FF6C2: + 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 r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080FF756 + .pool +_080FF704: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080FF756 + adds r0, r5, 0 + movs r1, 0x1 + bl ChangeSpriteAffineAnim + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldr r4, =gBattleAnimAttacker + 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_80A70C0 + str r0, [r5, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_080FF756: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF698 + + thumb_func_start sub_80FF768 +sub_80FF768: @ 80FF768 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080FF7D4 + 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, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x24] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x26] + ldrb r0, [r4, 0x4] + adds r0, 0x1E + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r4, 0x6] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r2, 0x22 + ldrsh r0, [r5, r2] + movs r2, 0x26 + ldrsh r1, [r5, r2] + adds r0, r1 + cmp r0, 0x78 + ble _080FF7D4 + ldrh r0, [r5, 0x22] + adds r1, r0, 0 + subs r1, 0x78 + ldrh r2, [r5, 0x26] + adds r0, r2 + adds r1, r0 + strh r1, [r5, 0x22] +_080FF7D4: + ldr r0, =sub_80FF8DC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF768 + + thumb_func_start sub_80FF7EC +sub_80FF7EC: @ 80FF7EC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + mov r9, r0 + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r6, =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0x2 + bl GetBattlerSpriteCoord + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + movs r1, 0x3 + bl GetBattlerSpriteCoord + adds r2, r0, 0 + lsls r2, 24 + subs r4, r5 + lsls r4, 16 + lsrs r2, 24 + mov r1, r8 + subs r2, r1 + lsls r2, 16 + lsrs r2, 16 + lsrs r3, r4, 16 + mov r10, r3 + asrs r4, 16 + ldr r6, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + muls r0, r4 + movs r1, 0x64 + str r2, [sp] + bl __divsi3 + adds r5, r0 + mov r3, r9 + strh r5, [r3, 0x20] + ldr r2, [sp] + lsls r0, r2, 16 + asrs r0, 16 + movs r3, 0 + ldrsh r1, [r6, r3] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + add r8, r0 + mov r1, r8 + mov r0, r9 + strh r1, [r0, 0x22] + ldrh r0, [r6, 0x2] + mov r3, r9 + strh r0, [r3, 0x24] + ldrh r0, [r6, 0x4] + strh r0, [r3, 0x26] + ldrb r0, [r6, 0x6] + adds r0, 0x1E + mov r1, r9 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0x8] + mov r0, r9 + bl StartSpriteAnim + ldrh r0, [r6, 0xA] + mov r1, r9 + strh r0, [r1, 0x32] + ldr r0, =sub_80FF8DC + str r0, [r1, 0x1C] + ldr r1, =gUnknown_0203A0F8 + mov r3, r9 + ldrh r0, [r3, 0x20] + strh r0, [r1] + ldrh r0, [r3, 0x22] + strh r0, [r1, 0x2] + mov r0, r10 + strh r0, [r1, 0x4] + ldr r2, [sp] + strh r2, [r1, 0x6] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF7EC + + thumb_func_start sub_80FF8DC +sub_80FF8DC: @ 80FF8DC + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + adds r1, 0x1 + strh r1, [r3, 0x2E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x32 + ldrsh r0, [r3, r2] + subs r0, 0xA + cmp r1, r0 + ble _080FF91C + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + movs r2, 0x3E + adds r2, r3 + mov r12, r2 + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080FF91C: + movs r2, 0x2E + ldrsh r1, [r3, r2] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r1, r0 + ble _080FF92E + adds r0, r3, 0 + bl DestroyAnimSprite +_080FF92E: + pop {r0} + bx r0 + thumb_func_end sub_80FF8DC + + thumb_func_start sub_80FF934 +sub_80FF934: @ 80FF934 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080FF974 + ldr r5, =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + ldr r4, =gBattleAnimArgs + lsrs r0, 24 + ldrh r2, [r4] + adds r0, r2 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x34] +_080FF974: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] + ldrh r1, [r6, 0x30] + muls r0, r1 + strh r0, [r6, 0x24] + movs r2, 0x2E + ldrsh r1, [r6, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r1, 0xFF + ands r0, r1 + movs r2, 0x32 + ldrsh r1, [r6, r2] + bl Sin + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x34 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080FF9AA + adds r0, r6, 0 + bl DestroyAnimSprite +_080FF9AA: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FF934 + + thumb_func_start sub_80FF9B8 +sub_80FF9B8: @ 80FF9B8 + push {r4,r5,lr} + movs r2, 0x20 + ldrsh r4, [r0, r2] + lsls r4, 8 + movs r3, 0x22 + ldrsh r2, [r0, r3] + orrs r4, r2 + movs r5, 0x3A + ldrsh r2, [r0, r5] + lsls r2, 8 + movs r5, 0x3C + ldrsh r3, [r0, r5] + orrs r2, r3 + lsls r1, 8 + strh r4, [r0, 0x38] + strh r2, [r0, 0x3A] + strh r1, [r0, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FF9B8 + + thumb_func_start sub_80FF9E0 +sub_80FF9E0: @ 80FF9E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + ldrh r0, [r0, 0x38] + lsrs r1, r0, 8 + mov r10, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrh r0, [r1, 0x3A] + lsrs r2, r0, 8 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r1, [r1, 0x3C] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + lsrs r6, r0, 16 + movs r3, 0xFF + ands r3, r1 + cmp r2, 0 + bne _080FFA1A + movs r2, 0x20 + negs r2, r2 + b _080FFA22 +_080FFA1A: + cmp r2, 0xFF + bne _080FFA22 + movs r2, 0x88 + lsls r2, 1 +_080FFA22: + mov r0, r9 + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + mov r1, r10 + subs r0, r2, r1 + lsls r5, r3, 16 + asrs r5, 16 + muls r0, r5 + lsls r1, r6, 16 + asrs r7, r1, 16 + adds r1, r7, 0 + bl __divsi3 + adds r6, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + muls r0, r5 + adds r1, r7, 0 + bl __divsi3 + add r6, r10 + mov r1, r8 + strh r6, [r1, 0x20] + add r0, r9 + strh r0, [r1, 0x22] + adds r5, 0x1 + lsls r5, 16 + lsrs r3, r5, 16 + asrs r5, 16 + cmp r5, r7 + beq _080FFA74 + lsls r1, r7, 8 + lsls r0, r3, 16 + asrs r0, 16 + orrs r0, r1 + mov r1, r8 + strh r0, [r1, 0x3C] + movs r0, 0 + b _080FFA76 +_080FFA74: + movs r0, 0x1 +_080FFA76: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FF9E0 + + thumb_func_start sub_80FFA84 +sub_80FFA84: @ 80FFA84 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080FFA98 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080FFA98: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _080FFAAC + adds r0, r4, 0 + bl DestroyAnimSprite +_080FFAAC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FFA84 + + thumb_func_start sub_80FFAB4 +sub_80FFAB4: @ 80FFAB4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080FFADE + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080FFADE: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80FF9E0 + lsls r0, 24 + cmp r0, 0 + beq _080FFB0E + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, =sub_80FFA84 + str r0, [r4, 0x1C] +_080FFB0E: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFAB4 + + thumb_func_start sub_80FFB18 +sub_80FFB18: @ 80FFB18 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_80A69CC + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, =gBattleAnimAttacker + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080FFB68 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80FF9B8 + movs r0, 0x1 + b _080FFB7A + .pool +_080FFB68: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80FF9B8 + movs r0, 0x3 +_080FFB7A: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, =sub_80FFAB4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFB18 + + thumb_func_start sub_80FFB90 +sub_80FFB90: @ 80FFB90 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080FFBBA + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080FFBBA: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80FF9E0 + lsls r0, 24 + cmp r0, 0 + beq _080FFBEC + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + bl DestroyAnimSprite +_080FFBEC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FFB90 + + thumb_func_start sub_80FFBF4 +sub_80FFBF4: @ 80FFBF4 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080FFC38 + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80FF9B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, =sub_80FFAB4 + b _080FFC62 + .pool +_080FFC38: + movs r0, 0xFF + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _080FFC50 + movs r0, 0 + strh r0, [r5, 0x3A] +_080FFC50: + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80FF9B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, =sub_80FFB90 +_080FFC62: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFBF4 + + thumb_func_start sub_80FFC70 +sub_80FFC70: @ 80FFC70 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080FFC8A + adds r0, r4, 0 + movs r1, 0 + bl sub_80A6980 + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x30] +_080FFC8A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + muls r0, r1 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080FFCAA + adds r0, r4, 0 + bl DestroyAnimSprite +_080FFCAA: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFC70 + + thumb_func_start sub_80FFCB4 +sub_80FFCB4: @ 80FFCB4 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_80A6980 + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, =gBattleAnimTarget + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080FFD04 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80FF9B8 + movs r0, 0x1 + b _080FFD16 + .pool +_080FFD04: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80FF9B8 + movs r0, 0x3 +_080FFD16: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, =sub_80FFD2C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFCB4 + + thumb_func_start sub_80FFD2C +sub_80FFD2C: @ 80FFD2C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080FFD56 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080FFD56: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080FFD8A + movs r0, 0x3F + bl BattleAnimAdjustPanning + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x7D + bl PlaySE12WithPanning +_080FFD8A: + adds r0, r4, 0 + bl sub_80FF9E0 + lsls r0, 24 + cmp r0, 0 + beq _080FFDB2 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, =sub_80FFA84 + str r0, [r4, 0x1C] + movs r0, 0x40 + negs r0, r0 + bl BattleAnimAdjustPanning + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x7D + bl PlaySE12WithPanning +_080FFDB2: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFD2C + + thumb_func_start sub_80FFDBC +sub_80FFDBC: @ 80FFDBC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080FFE50 + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080FFDE4 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0x2] + strh r1, [r4, 0x30] + movs r1, 0x78 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080FFE06 + .pool +_080FFDE4: + ldr r0, =gBattleAnimArgs + movs r1, 0x2 + ldrsh r3, [r0, r1] + adds r1, r3, 0 + subs r1, 0x20 + adds r2, r1, 0 + adds r5, r0, 0 + cmp r1, 0 + bge _080FFDFA + adds r2, r3, 0 + adds r2, 0xDF +_080FFDFA: + asrs r0, r2, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + movs r0, 0x46 + strh r0, [r4, 0x20] +_080FFE06: + ldrh r0, [r5] + strh r0, [r4, 0x22] + strh r0, [r4, 0x32] + movs r0, 0x14 + strh r0, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + ldr r0, =sub_80FFE58 + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080FFE48 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080FFE4E + .pool +_080FFE48: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080FFE4E: + strb r0, [r1] +_080FFE50: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FFDBC + + thumb_func_start sub_80FFE58 +sub_80FFE58: @ 80FFE58 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080FFE6A + cmp r0, 0x1 + beq _080FFE9A + b _080FFEBA +_080FFE6A: + ldrh r5, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x4E + ble _080FFE82 + movs r0, 0x1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080FFEBA +_080FFE82: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + adds r0, r5, r0 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x36] + adds r1, 0x3 + strh r1, [r4, 0x36] + strh r0, [r4, 0x22] + b _080FFEBA +_080FFE9A: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080FFEBA + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080FFEBA + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r0, =sub_80FFEC4 + str r0, [r4, 0x1C] +_080FFEBA: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFE58 + + thumb_func_start sub_80FFEC4 +sub_80FFEC4: @ 80FFEC4 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, =gUnknown_08592700 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r3, r0, r1 + adds r0, r5, 0x1 + adds r0, r3, r0 + ldrh r2, [r4, 0x32] + movs r6, 0x32 + ldrsh r1, [r4, r6] + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _080FFF10 + adds r0, r5, 0x2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x7F + bne _080FFEFC + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, =sub_80FFF7C + str r0, [r4, 0x1C] +_080FFEFC: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080FFF76 + .pool +_080FFF10: + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + adds r1, r0, r5 + movs r2, 0 + ldrsb r2, [r1, r2] + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + muls r0, r2 + ldrh r1, [r4, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080FFF5E + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080FFF56 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080FFF5C +_080FFF56: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080FFF5C: + strb r0, [r1] +_080FFF5E: + movs r6, 0x30 + ldrsh r0, [r4, r6] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] +_080FFF76: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80FFEC4 + + thumb_func_start sub_80FFF7C +sub_80FFF7C: @ 80FFF7C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080FFF8E + adds r0, r4, 0 + bl DestroyAnimSprite +_080FFF8E: + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FFF7C + + thumb_func_start sub_80FFFC0 +sub_80FFFC0: @ 80FFFC0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, =gTasks + adds r5, r0, r1 + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + bl sub_80A82E4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + strh r0, [r5, 0x10] + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_80A861C + strh r0, [r5, 0x1C] + ldrb r0, [r4] + movs r1, 0 + bl sub_80A861C + strh r0, [r5, 0x1E] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0x1 + bne _08100028 + movs r1, 0x1 +_08100028: + strh r1, [r5, 0x12] + movs r3, 0x12 + ldrsh r0, [r5, r3] + lsls r0, 6 + movs r1, 0x38 + subs r1, r0 + strh r1, [r5, 0x1A] + ldrh r0, [r5, 0x16] + subs r0, r1 + ldrh r1, [r5, 0x14] + adds r0, r1 + strh r0, [r5, 0x18] + ldr r0, =gUnknown_08592778 + movs r2, 0x18 + ldrsh r1, [r5, r2] + movs r3, 0x1A + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xC] + cmp r0, 0x40 + bne _08100060 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_08100060: + ldr r4, =gSprites + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xA + strh r1, [r0, 0x2E] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x18] + strh r1, [r0, 0x30] + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + movs r1, 0x1C + ldrsh r0, [r5, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r5, r3] + muls r1, r0 + ldrh r0, [r5, 0x14] + subs r0, r1 + strh r0, [r2, 0x32] + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x1A] + strh r1, [r0, 0x34] + movs r1, 0xC + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + movs r2, 0x1E + ldrsh r0, [r5, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r2, [r5, r3] + muls r0, r2 + ldrh r2, [r5, 0x16] + adds r0, r2 + strh r0, [r1, 0x36] + movs r3, 0xC + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8100504 + movs r1, 0xC + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x38] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80A68D4 + ldr r0, =sub_8100128 + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80FFFC0 + + thumb_func_start sub_8100128 +sub_8100128: @ 8100128 + 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 r6, r0, r1 + movs r0, 0xC + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =gSprites + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r5, [r6, r1] + cmp r5, 0x7 + bne _08100150 + b _08100380 +_08100150: + cmp r5, 0x7 + bgt _0810019E + cmp r5, 0x3 + bne _0810015A + b _08100272 +_0810015A: + cmp r5, 0x3 + bgt _08100174 + cmp r5, 0x1 + beq _08100204 + cmp r5, 0x1 + bgt _08100254 + cmp r5, 0 + beq _081001E6 + b _081004FC + .pool +_08100174: + cmp r5, 0x5 + bne _0810017A + b _081002E8 +_0810017A: + cmp r5, 0x5 + ble _08100180 + b _08100362 +_08100180: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + bne _08100196 + b _081004FC +_08100196: + movs r0, 0x5 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_0810019E: + cmp r5, 0xB + bne _081001A4 + b _08100464 +_081001A4: + cmp r5, 0xB + bgt _081001D2 + cmp r5, 0x9 + bne _081001AE + b _081003D2 +_081001AE: + cmp r5, 0x9 + ble _081001B4 + b _08100448 +_081001B4: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + bne _081001CA + b _081004FC +_081001CA: + movs r0, 0x9 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_081001D2: + cmp r5, 0xD + bne _081001D8 + b _081004D6 +_081001D8: + cmp r5, 0xD + bge _081001DE + b _081004B6 +_081001DE: + cmp r5, 0xFF + bne _081001E4 + b _081004E6 +_081001E4: + b _081004FC +_081001E6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + bne _081001FC + b _081004FC +_081001FC: + movs r0, 0x1 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_08100204: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + ldrh r0, [r6, 0x10] + adds r0, 0x2 + strh r0, [r6, 0x10] + strh r5, [r6, 0xE] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_08100254: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + bne _0810026A + b _081004FC +_0810026A: + movs r0, 0x3 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_08100272: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r1, r0 + ldrh r0, [r6, 0x16] + subs r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + movs r0, 0x2 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_081002E8: + ldrh r1, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r1, r3 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x14] + adds r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r2, 0x1E + ldrsh r0, [r6, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x16] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x3 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_08100362: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + bne _08100378 + b _081004FC +_08100378: + movs r0, 0x7 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_08100380: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + adds r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x4 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_081003D2: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r0, r1 + ldrh r3, [r6, 0x16] + adds r0, r3 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + movs r0, 0x5 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_08100448: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _081004FC + movs r0, 0xB + strh r0, [r6, 0x26] + movs r0, 0xFF + b _081004FA +_08100464: + ldrh r2, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r2, r0 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x18] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x1A] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8100504 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x6 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80A68D4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_081004B6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_8100524 + adds r0, r4, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _081004FC + adds r0, r4, 0 + bl DestroySprite + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _081004FA +_081004D6: + movs r1, 0x20 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _081004FC + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _081004FC +_081004E6: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _081004FC + movs r0, 0 + strh r0, [r6, 0xA] + ldrh r0, [r6, 0x26] +_081004FA: + strh r0, [r6, 0x8] +_081004FC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8100128 + + thumb_func_start sub_8100504 +sub_8100504: @ 8100504 + push {lr} + movs r2, 0x8 + movs r3, 0x36 + ldrsh r1, [r0, r3] + movs r3, 0x22 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _0810051A + negs r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_0810051A: + lsls r0, r2, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8100504 + + thumb_func_start sub_8100524 +sub_8100524: @ 8100524 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _081005BA + movs r0, 0 + strh r0, [r6, 0x24] + ldr r0, =gSprites + mov r8, r0 + movs r2, 0xC + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + ldrh r2, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r2, r0 + ldr r0, =gUnknown_08592778 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + ldrb r3, [r6, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081005BA + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + mov r0, r8 + adds r4, r5, r0 + strh r7, [r4, 0x3A] + movs r0, 0xC + strh r0, [r4, 0x3C] + ldr r0, =gTasks + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldrh r2, [r6, 0x22] + movs r0, 0x1 + ands r0, r2 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r6, 0x10] + adds r4, 0x43 + strb r0, [r4] + mov r0, r8 + adds r0, 0x1C + adds r5, r0 + ldr r0, =sub_81005D4 + str r0, [r5] +_081005BA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100524 + + thumb_func_start sub_81005D4 +sub_81005D4: @ 81005D4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08100636 + movs r0, 0 + strh r0, [r4, 0x2E] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _08100636 + ldr r3, =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_08100636: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81005D4 + + thumb_func_start sub_8100640 +sub_8100640: @ 8100640 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810065C + ldr r0, =gBattleAnimAttacker + b _0810065E + .pool +_0810065C: + ldr r0, =gBattleAnimTarget +_0810065E: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08100688 + movs r0, 0 + strh r0, [r4, 0x36] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldr r0, =0x0000fff0 + b _08100698 + .pool +_08100688: + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r4, 0x32] + movs r0, 0x80 + lsls r0, 1 +_08100698: + strh r0, [r4, 0x20] + adds r7, r1, 0 + adds r5, r7, 0 + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x34] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _081006CE + cmp r0, 0x1 + bgt _081006C0 + cmp r0, 0 + beq _081006CA + b _08100738 + .pool +_081006C0: + cmp r0, 0x2 + beq _081006D4 + cmp r0, 0x3 + beq _08100700 + b _08100738 +_081006CA: + ldrh r0, [r5] + b _081006E4 +_081006CE: + ldrh r0, [r5] + strh r0, [r4, 0x22] + b _0810071A +_081006D4: + adds r0, r6, 0 + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5] + adds r0, r5 +_081006E4: + strh r0, [r4, 0x22] + adds r0, r6, 0 + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _08100738 +_08100700: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r7, [r7] + adds r0, r7 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl GetAnimBattlerSpriteId +_0810071A: + adds r0, r6, 0 + bl sub_80A8328 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] +_08100738: + ldr r0, =sub_810074C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100640 + + thumb_func_start sub_810074C +sub_810074C: @ 810074C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x3C + ldrsh r3, [r4, r0] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x30 + ldrsh r2, [r4, r1] + ldr r1, =gSineTable + movs r5, 0x2E + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r2 + asrs r0, 8 + strh r0, [r4, 0x26] + movs r2, 0x32 + ldrsh r0, [r4, r2] + muls r0, r3 + strh r0, [r4, 0x24] + movs r5, 0x34 + ldrsh r0, [r4, r5] + muls r0, r3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _081007A4 + movs r2, 0x24 + ldrsh r0, [r4, r2] + movs r5, 0x20 + ldrsh r1, [r4, r5] + adds r0, r1 + cmp r0, 0xF7 + ble _081007BC + b _081007B6 + .pool +_081007A4: + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bgt _081007BC +_081007B6: + adds r0, r4, 0 + bl move_anim_8074EE0 +_081007BC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810074C + + thumb_func_start sub_81007C4 +sub_81007C4: @ 81007C4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _081007E8 + cmp r0, 0x1 + beq _0810081C + b _08100876 + .pool +_081007E8: + ldr r0, =0x0000274f + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r2, 0x80 + lsls r2, 1 + adds r4, r2, 0 + adds r0, r4 + strh r0, [r5, 0x18] + ldr r0, =0x000027b0 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + adds r0, r4 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _08100876 + .pool +_0810081C: + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x1A] + lsls r0, 16 + cmp r0, 0 + blt _08100876 + strh r7, [r5, 0x1A] + ldrh r0, [r5, 0x18] + ldrb r2, [r5, 0x1C] + ldr r4, =gUnknown_08592878 + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x20] + ldrb r2, [r5, 0x1C] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + bne _08100876 + strh r7, [r5, 0x1C] + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bne _08100876 + strh r7, [r5, 0x1E] +_08100876: + ldr r0, =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0810088A + adds r0, r6, 0 + bl DestroyAnimVisualTask +_0810088A: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81007C4 + + thumb_func_start sub_8100898 +sub_8100898: @ 8100898 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r1, =gBattleAnimArgs + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _081008B4 + adds r0, r6, 0 + bl DestroyAnimSprite + b _0810098E + .pool +_081008B4: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _081008C4 + ldr r4, =gBattleAnimAttacker + b _081008C6 + .pool +_081008C4: + ldr r4, =gBattleAnimTarget +_081008C6: + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0x8] + strh r1, [r6, 0x2E] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r7, r0, 0 + cmp r1, 0 + bne _08100908 + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x20] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x22] + strh r5, [r6, 0x38] + strh r2, [r6, 0x3A] + b _08100918 + .pool +_08100908: + strh r5, [r6, 0x20] + strh r2, [r6, 0x22] + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x38] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x3A] +_08100918: + ldrh r4, [r6, 0x20] + lsls r0, r4, 4 + strh r0, [r6, 0x30] + ldrh r5, [r6, 0x22] + lsls r0, r5, 4 + strh r0, [r6, 0x32] + movs r1, 0x38 + ldrsh r0, [r6, r1] + movs r2, 0x20 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x34] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x22 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x38] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r6, 0x3A] + subs r1, r5 + lsls r1, 16 + asrs r1, 16 + bl ArcTan2Neg + lsls r0, 16 + lsrs r4, r0, 16 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _0810097A + ldr r1, =0xffff8000 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_0810097A: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_80A73E0 + ldr r0, =sub_81009A0 + str r0, [r6, 0x1C] +_0810098E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100898 + + thumb_func_start sub_81009A0 +sub_81009A0: @ 81009A0 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x2E] + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _081009D0 + ldrh r0, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r0, r4 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r4, [r2, 0x32] + adds r1, r4 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x2E] + b _081009D6 +_081009D0: + adds r0, r2, 0 + bl move_anim_8074EE0 +_081009D6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81009A0 + + thumb_func_start sub_81009DC +sub_81009DC: @ 81009DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081009F2 + adds r0, r2, 0 + bl DestroyAnimSprite +_081009F2: + pop {r0} + bx r0 + thumb_func_end sub_81009DC + + thumb_func_start sub_81009F8 +sub_81009F8: @ 81009F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08100A20 + ldr r2, =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + b _08100A2C + .pool +_08100A20: + ldr r0, =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_08100A2C: + 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} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81009F8 + + thumb_func_start sub_8100A50 +sub_8100A50: @ 8100A50 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08100A6A + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim +_08100A6A: + ldr r0, =sub_81009DC + str r0, [r5, 0x1C] + ldr r4, =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_80A6864 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100A50 + + thumb_func_start sub_8100A94 +sub_8100A94: @ 8100A94 + push {r4,lr} + adds r4, r0, 0 + ldr r1, =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldr r1, =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A66DC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100A94 + + thumb_func_start sub_8100AE0 +sub_8100AE0: @ 8100AE0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimTarget + 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] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08100B14 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_08100B14: + ldr r0, =sub_8100CCC + str r0, [r5, 0x1C] + ldr r0, =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _08100B3C + ldrh r0, [r3] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + b _08100B50 + .pool +_08100B3C: + ldrh r0, [r5, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r5, 0x20] + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_08100B50: + ldrh r0, [r3, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldr r1, =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r5, 0x30] + adds r1, r0, r2 + strh r1, [r5, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _08100B7E + negs r0, r1 + strh r0, [r5, 0x30] +_08100B7E: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100AE0 + + thumb_func_start sub_8100B88 +sub_8100B88: @ 8100B88 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _08100BA8 + cmp r0, 0x1 + ble _08100C24 + cmp r0, 0x2 + beq _08100BC8 + b _08100C24 + .pool +_08100BA8: + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + eors r4, r0 + adds r0, r4, 0 + b _08100C34 + .pool +_08100BC8: + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + movs r2, 0x2 + mov r8, r2 + mov r1, r8 + eors r0, r1 + bl IsBattlerSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _08100C3E + ldrb r0, [r5] + mov r2, r8 + eors r0, r2 + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + lsrs r7, r0, 1 + ldrb r0, [r5] + mov r1, r8 + eors r0, r1 + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + lsrs r4, r0, 1 + b _08100C3E + .pool +_08100C24: + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] +_08100C34: + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r4, r0, 24 +_08100C3E: + strh r7, [r6, 0x20] + strh r4, [r6, 0x22] + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08100C56 + ldrh r0, [r6, 0x22] + adds r0, 0x8 + strh r0, [r6, 0x22] +_08100C56: + ldr r0, =sub_8100CCC + str r0, [r6, 0x1C] + ldr r0, =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _08100C7C + ldrh r0, [r3] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + b _08100C90 + .pool +_08100C7C: + ldrh r0, [r6, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r6, 0x20] + adds r2, r6, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_08100C90: + ldrh r0, [r3, 0x2] + ldrh r2, [r6, 0x22] + adds r0, r2 + strh r0, [r6, 0x22] + ldr r1, =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r6, 0x30] + adds r1, r0, r2 + strh r1, [r6, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r6, 0x32] + adds r0, r2 + strh r0, [r6, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r6, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _08100CBE + negs r0, r1 + strh r0, [r6, 0x30] +_08100CBE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100B88 + + thumb_func_start sub_8100CCC +sub_8100CCC: @ 8100CCC + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08100CEE + adds r0, r1, 0 + adds r0, 0x18 + b _08100CF2 +_08100CEE: + adds r0, r1, 0 + subs r0, 0x18 +_08100CF2: + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + subs r0, 0x18 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _08100D28 + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] +_08100D28: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100CCC + + thumb_func_start sub_8100D38 +sub_8100D38: @ 8100D38 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x32] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r0, 0x1 + ble _08100DDC + ldrh r1, [r5, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08100D94 + adds r3, r5, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r3] + ldr r4, =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r3, [r0] + adds r1, r2, 0 + ands r1, r3 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _08100DCA + .pool +_08100D94: + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] +_08100DCA: + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + b _08100DE0 + .pool +_08100DDC: + adds r0, r1, 0x1 + strh r0, [r5, 0x32] +_08100DE0: + movs r1, 0x34 + ldrsh r0, [r5, r1] + cmp r0, 0xA + bne _08100E10 + movs r2, 0x2E + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, =gSprites + adds r0, r4 + bl DestroySprite + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + adds r0, r5, 0 + bl DestroyAnimSprite +_08100E10: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100D38 + + thumb_func_start sub_8100E1C +sub_8100E1C: @ 8100E1C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimArgs + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08100E44 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _08100E4A + .pool +_08100E44: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_08100E4A: + strh r0, [r5, 0x20] + ldr r4, =gBattleAnimArgs + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x34] + ldr r1, =sub_8100E80 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100E1C + + thumb_func_start sub_8100E80 +sub_8100E80: @ 8100E80 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x64 + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _08100EAC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0 + b _08100EB2 +_08100EAC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0xE +_08100EB2: + strb r0, [r1] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x82 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08100EE8 + adds r0, r4, 0 + bl DestroyAnimSprite +_08100EE8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8100E80 + + thumb_func_start sub_8100EF0 +sub_8100EF0: @ 8100EF0 + push {r4-r6,lr} + adds r5, r0, 0 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _08100F06 + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x2] + adds r0, 0x8 + strh r0, [r1, 0x2] +_08100F06: + ldr r6, =gBattleAnimAttacker + ldrb r0, [r6] + movs r1, 0 + bl GetBattlerSpriteCoord2 + 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 GetBattlerSpriteCoord2 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08100F44 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _08100F6C +_08100F44: + ldrb r0, [r6] + bl sub_80A8328 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + b _08100F84 + .pool +_08100F6C: + ldrb r0, [r6] + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] +_08100F84: + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, =0x00002828 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r5, 0x32] + movs r4, 0x10 + movs r0, 0x10 + strh r0, [r5, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + ldrh r0, [r5, 0x3C] + lsls r1, r0, 8 + subs r4, r0 + orrs r1, r4 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + ldr r0, =sub_8100FD4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100EF0 + + thumb_func_start sub_8100FD4 +sub_8100FD4: @ 8100FD4 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x60 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08101032 + movs r0, 0 + strh r0, [r4, 0x30] + ldr r1, =gPlttBufferFaded + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x1 + lsls r0, 1 + adds r0, r1 + ldrh r5, [r0] + movs r2, 0 + adds r6, r1, 0 + adds r3, r6, 0 +_0810100C: + movs r1, 0x32 + ldrsh r0, [r4, r1] + adds r2, 0x1 + adds r0, r2 + lsls r1, r0, 1 + adds r1, r3 + adds r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + cmp r2, 0x5 + ble _0810100C + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x7 + lsls r0, 1 + adds r0, r6 + strh r5, [r0] +_08101032: + ldrh r2, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _0810106C + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _08101080 + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _0810106C + movs r0, 0 + strh r0, [r4, 0x3A] + subs r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg +_0810106C: + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08101080 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _081010C2 + .pool +_08101080: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _081010C2 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _081010C2 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, =sub_80A67F4 + str r0, [r4, 0x1C] +_081010C2: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8100FD4 + + thumb_func_start sub_81010CC +sub_81010CC: @ 81010CC + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, =gBattleAnimTarget + ldrb r0, [r6] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldr r1, =0x0000ffe8 + adds r0, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + strh r5, [r4, 0x3A] + movs r0, 0x10 + strh r0, [r4, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + ldr r0, =sub_8101138 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81010CC + + thumb_func_start sub_8101138 +sub_8101138: @ 8101138 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _08101146 + b _08101290 +_08101146: + lsls r0, 2 + ldr r1, =_08101154 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08101154: + .4byte _08101168 + .4byte _081011CC + .4byte _081011E8 + .4byte _08101266 + .4byte _0810127A +_08101168: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + cmp r0, 0 + bgt _08101176 + b _08101290 +_08101176: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08101198 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _081011A6 + adds r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _081011A6 +_08101198: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _081011A6 + subs r0, r1, 0x1 + strh r0, [r4, 0x3C] +_081011A6: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _08101290 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08101290 + strh r0, [r4, 0x30] + b _08101272 +_081011CC: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _08101290 + movs r0, 0 + strh r0, [r4, 0x30] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _08101272 +_081011E8: + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x4 + bl sub_8101298 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0810120A + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_0810120A: + ldrh r0, [r4, 0x32] + adds r1, r0, 0x1 + strh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x1D + ble _08101290 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08101230 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _0810123E + subs r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _0810123E +_08101230: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _0810123E + adds r0, r1, 0x1 + strh r0, [r4, 0x3C] +_0810123E: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x3A + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _08101290 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _08101290 + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + b _08101272 +_08101266: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_08101272: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08101290 +_0810127A: + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + adds r0, r4, 0 + bl DestroyAnimSprite +_08101290: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101138 + + thumb_func_start sub_8101298 +sub_8101298: @ 8101298 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0xB + bgt _081012AA + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_081012AA: + ldrh r5, [r4, 0x34] + adds r0, r5, 0 + subs r0, 0x12 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + cmp r0, 0x17 + bhi _081012C0 + ldrh r0, [r4, 0x36] + subs r0, 0x2 + strh r0, [r4, 0x36] +_081012C0: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x2F + ble _081012CE + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_081012CE: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0x9 + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl __divsi3 + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bge _081012F4 + movs r1, 0x26 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x26] +_081012F4: + adds r0, r5, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3B + ble _08101304 + movs r0, 0 + strh r0, [r4, 0x34] +_08101304: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101298 + + thumb_func_start sub_810130C +sub_810130C: @ 810130C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08101320 + adds r0, r4, 0 + bl sub_80A6838 +_08101320: + 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] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x32] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A656C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810130C + + thumb_func_start sub_810135C +sub_810135C: @ 810135C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08101378 + ldr r0, =gBattleAnimAttacker + b _0810137A + .pool +_08101378: + ldr r0, =gBattleAnimTarget +_0810137A: + ldrb r6, [r0] + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _081013C4 + movs r1, 0x2 + adds r0, r6, 0 + eors r0, r1 + bl IsBattlerSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _081013C4 + ldr r4, =gBattleAnimArgs + ldrb r1, [r4, 0xC] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + adds r0, r6, 0 + bl SetAverageBattlerPositions + movs r2, 0 + ldrsh r1, [r4, r2] + adds r0, r5, 0 + bl sub_80A6864 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + b _08101414 + .pool +_081013C4: + ldr r4, =gBattleAnimArgs + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _081013E8 + adds r0, r6, 0 + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + b _081013FA + .pool +_081013E8: + adds r0, r6, 0 + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 +_081013FA: + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldr r0, =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_80A6864 +_08101414: + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A656C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810135C + + thumb_func_start sub_8101440 +sub_8101440: @ 8101440 + push {r4,lr} + adds r4, r0, 0 + bl sub_80A6838 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08101474 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + b _0810148E + .pool +_08101474: + ldr r2, =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_0810148E: + ldr r0, =sub_81014A0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101440 + + thumb_func_start sub_81014A0 +sub_81014A0: @ 81014A0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _081014D8 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r0, 0x1E + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r4, 0x26] + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r0, 18 + asrs r0, 16 + movs r1, 0x3 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_081014D8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081014EC + adds r0, r4, 0 + bl DestroyAnimSprite +_081014EC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81014A0 + + thumb_func_start sub_81014F4 +sub_81014F4: @ 81014F4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80A6838 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810152C + 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] + movs r0, 0x1 + strh r0, [r4, 0x34] + b _0810154A + .pool +_0810152C: + ldr r2, =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldr r0, =0x0000ffff + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_0810154A: + ldr r0, =sub_8101560 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81014F4 + + thumb_func_start sub_8101560 +sub_8101560: @ 8101560 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x36 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 1 + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _081015A4 + adds r0, r4, 0 + bl move_anim_8074EE0 +_081015A4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101560 + + thumb_func_start sub_81015AC +sub_81015AC: @ 81015AC + push {lr} + ldrh r1, [r0, 0x20] + subs r1, 0x20 + strh r1, [r0, 0x20] + ldrh r1, [r0, 0x22] + subs r1, 0x20 + strh r1, [r0, 0x22] + movs r1, 0x14 + strh r1, [r0, 0x2E] + ldr r1, =sub_80A64B0 + str r1, [r0, 0x1C] + ldr r1, =sub_81015D4 + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .pool + thumb_func_end sub_81015AC + + thumb_func_start sub_81015D4 +sub_81015D4: @ 81015D4 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r6, [r5, 0x38] + movs r1, 0x1 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _081015EA + cmp r0, 0x1 + beq _08101604 + b _0810166A +_081015EA: + strh r1, [r5, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r5, 0x1C] + ldr r1, =sub_81015D4 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + b _0810166A + .pool +_08101604: + ldrh r3, [r5, 0x24] + ldrh r0, [r5, 0x20] + adds r3, r0 + movs r0, 0 + strh r3, [r5, 0x20] + ldrh r4, [r5, 0x26] + ldrh r1, [r5, 0x22] + adds r4, r1 + strh r4, [r5, 0x22] + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r2, =gUnknown_08592CD0 + lsls r0, r6, 16 + asrs r0, 24 + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + adds r3, r1 + strh r3, [r5, 0x32] + adds r2, 0x1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r4, r0 + strh r4, [r5, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r5, 0x1C] + ldr r1, =sub_8101684 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + movs r0, 0x3F + bl BattleAnimAdjustPanning + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xD2 + bl PlaySE12WithPanning +_0810166A: + ldrh r0, [r5, 0x38] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x38] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81015D4 + + thumb_func_start sub_8101684 +sub_8101684: @ 8101684 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + cmp r0, 0x4 + bne _081016AC + movs r0, 0xA + strh r0, [r2, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r2, 0x1C] + ldr r1, =sub_81016B8 + adds r0, r2, 0 + bl StoreSpriteCallbackInData6 + b _081016B0 + .pool +_081016AC: + ldr r0, =sub_81015D4 + str r0, [r2, 0x1C] +_081016B0: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101684 + + thumb_func_start sub_81016B8 +sub_81016B8: @ 81016B8 + push {r4-r7,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x6] + cmp r1, 0 + bne _081016E0 + movs r0, 0x3 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + strh r1, [r5, 0x32] + ldr r0, =sub_80A64B0 + str r0, [r5, 0x1C] + ldr r1, =sub_8101774 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + b _08101760 + .pool +_081016E0: + ldrh r0, [r5, 0x6] + cmp r0, 0x2 + beq _08101700 + cmp r0, 0x2 + bgt _081016F0 + cmp r0, 0x1 + beq _081016F6 + b _08101714 +_081016F0: + cmp r0, 0x3 + beq _08101708 + b _08101714 +_081016F6: + ldr r6, =0x0000fff8 + adds r7, r6, 0 + b _08101718 + .pool +_08101700: + ldr r7, =0x0000fff8 + b _08101716 + .pool +_08101708: + movs r7, 0x8 + ldr r6, =0x0000fff8 + b _08101718 + .pool +_08101714: + movs r7, 0x8 +_08101716: + movs r6, 0x8 +_08101718: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r5, 0x1C] + ldr r1, =sub_8101820 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_08101760: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81016B8 + + thumb_func_start sub_8101774 +sub_8101774: @ 8101774 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08101794 + ldrh r0, [r4, 0x30] + adds r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _081017A4 + movs r0, 0x10 + b _081017A2 +_08101794: + ldrh r0, [r4, 0x30] + subs r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _081017A4 + movs r0, 0 +_081017A2: + strh r0, [r4, 0x30] +_081017A4: + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80A75AC + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldr r2, =0x00007fff + bl BlendPalettes + movs r3, 0x30 + ldrsh r0, [r4, r3] + cmp r0, 0x10 + bne _0810180C + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ldrb r1, [r4, 0x5] + lsrs r1, 4 + lsls r0, r1, 5 + ldr r2, =gPlttBufferUnfaded + 0x210 + adds r0, r2 + lsls r1, 4 + ldr r3, =0x00000101 + adds r2, r3, 0 + orrs r1, r2 + movs r2, 0x4 + bl LoadPalette + movs r0, 0x3F + bl BattleAnimAdjustPanning + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC0 + bl PlaySE12WithPanning + b _08101814 + .pool +_0810180C: + cmp r0, 0 + bne _08101814 + ldr r0, =sub_8101820 + str r0, [r4, 0x1C] +_08101814: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101774 + + thumb_func_start sub_8101820 +sub_8101820: @ 8101820 + push {lr} + adds r2, r0, 0 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, =0x0000ffff + cmp r1, r0 + bne _08101838 + movs r0, 0 + strh r0, [r2, 0x30] + strh r0, [r2, 0x2E] + ldr r0, =sub_8101848 + str r0, [r2, 0x1C] +_08101838: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101820 + + thumb_func_start sub_8101848 +sub_8101848: @ 8101848 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _0810187C + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810187C: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bne _08101890 + adds r0, r4, 0 + bl DestroyAnimSprite +_08101890: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101848 + + thumb_func_start sub_8101898 +sub_8101898: @ 8101898 + push {r4,lr} + adds r3, r0, 0 + ldr r0, =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r3, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _081018BC + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + b _0810190E + .pool +_081018BC: + cmp r0, 0x2 + bne _081018D8 + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x20 + b _0810190A +_081018D8: + cmp r0, 0x3 + bne _081018F4 + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + b _0810190A +_081018F4: + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 +_0810190A: + orrs r0, r1 + strb r0, [r3, 0x3] +_0810190E: + ldrh r2, [r3, 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, [r3, 0x4] + ldr r1, =sub_81015AC + str r1, [r3, 0x1C] + adds r0, r3, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101898 + + thumb_func_start sub_8101940 +sub_8101940: @ 8101940 + push {lr} + adds r3, r0, 0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + strh r0, [r3, 0x2E] + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _0810197C + cmp r0, 0x1 + bgt _0810196C + cmp r0, 0 + beq _08101972 + b _0810198C + .pool +_0810196C: + cmp r0, 0x2 + beq _08101984 + b _0810198C +_08101972: + ldr r0, =sub_8101998 + b _0810198E + .pool +_0810197C: + ldr r0, =sub_8101A74 + b _0810198E + .pool +_08101984: + ldr r0, =sub_8101AC4 + b _0810198E + .pool +_0810198C: + ldr r0, =sub_8101B84 +_0810198E: + str r0, [r3, 0x1C] + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101940 + + thumb_func_start sub_8101998 +sub_8101998: @ 8101998 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x6 + strh r0, [r4, 0x2E] + ldr r5, =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + beq _081019B6 + movs r1, 0x2 +_081019B6: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, =gBattlerSpriteIds + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, =sub_81019E8 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A6630 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101998 + + thumb_func_start sub_81019E8 +sub_81019E8: @ 81019E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r6, [r5, r0] + cmp r6, 0 + bne _08101A24 + ldr r1, =gBattlerSpriteIds + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + movs r1, 0 + bl sub_80A7270 + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldr r2, =0xfffffd00 + adds r1, r2, 0 + cmp r0, 0 + beq _08101A20 + movs r0, 0xC0 + lsls r0, 2 + adds r1, r0, 0 +_08101A20: + strh r1, [r5, 0x36] + strh r6, [r5, 0x38] +_08101A24: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A73A0 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08101A5E + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, =sub_8101B84 + str r0, [r5, 0x1C] +_08101A5E: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81019E8 + + thumb_func_start sub_8101A74 +sub_8101A74: @ 8101A74 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x4 + strh r0, [r4, 0x2E] + ldr r5, =gBattleAnimAttacker + ldrb r0, [r5] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0x3 + cmp r0, 0 + beq _08101A92 + movs r0, 0x3 + negs r0, r0 + adds r1, r0, 0 +_08101A92: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, =gBattlerSpriteIds + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, =sub_8101B84 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A6630 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101A74 + + thumb_func_start sub_8101AC4 +sub_8101AC4: @ 8101AC4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _08101ADE + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, =sub_8101AE8 + str r0, [r1, 0x1C] +_08101ADE: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101AC4 + + thumb_func_start sub_8101AE8 +sub_8101AE8: @ 8101AE8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08101B38 + ldr r1, =gBattlerSpriteIds + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08101B2C + movs r0, 0xFC + lsls r0, 8 + strh r0, [r5, 0x36] + movs r0, 0xC0 + lsls r0, 4 + b _08101B36 + .pool +_08101B2C: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r5, 0x36] + movs r0, 0xF4 + lsls r0, 8 +_08101B36: + strh r0, [r5, 0x38] +_08101B38: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A73A0 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _08101B78 + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A7344 + ldr r0, =sub_8101B84 + str r0, [r5, 0x1C] +_08101B78: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101AE8 + + thumb_func_start sub_8101B84 +sub_8101B84: @ 8101B84 + push {lr} + bl DestroyAnimSprite + pop {r0} + bx r0 + thumb_func_end sub_8101B84 + + thumb_func_start sub_8101B90 +sub_8101B90: @ 8101B90 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r1, =sub_8101BA0 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8101B90 + + thumb_func_start sub_8101BA0 +sub_8101BA0: @ 8101BA0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _08101BFA + cmp r5, 0x1 + bgt _08101BB6 + cmp r5, 0 + beq _08101BBC + b _08101C8E +_08101BB6: + cmp r5, 0x2 + beq _08101C4C + b _08101C8E +_08101BBC: + strh r5, [r4, 0x30] + ldr r1, =gBattlerSpriteIds + ldr r2, =gBattleAnimAttacker + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x32] + ldrb r0, [r2] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + ldr r2, =0xfffffe00 + adds r1, r2, 0 + cmp r0, 0 + beq _08101BE4 + movs r0, 0x80 + lsls r0, 2 + adds r1, r0, 0 +_08101BE4: + strh r1, [r4, 0x36] + strh r5, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80A7270 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_08101BFA: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A73A0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08101C8E + movs r0, 0 + strh r0, [r4, 0x30] + movs r2, 0x36 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08101C8E + .pool +_08101C4C: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A73A0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08101C8E + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80A7344 + adds r0, r4, 0 + bl DestroyAnimSprite +_08101C8E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101BA0 + + thumb_func_start sub_8101C94 +sub_8101C94: @ 8101C94 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldr r1, =gBattlerSpriteIds + ldr r2, =gBattleAnimAttacker + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + movs r4, 0 + strh r0, [r5, 0x8] + ldrb r0, [r2] + bl GetBattlerSide + lsls r0, 24 + lsrs r2, r0, 24 + strh r2, [r5, 0xA] + strh r4, [r5, 0xC] + ldr r0, =gBattleAnimArgs + movs r3, 0 + ldrsh r1, [r0, r3] + cmp r1, 0 + beq _08101CE8 + cmp r1, 0x1 + beq _08101D04 + adds r0, r6, 0 + bl DestroyAnimVisualTask + b _08101D22 + .pool +_08101CE8: + strh r1, [r5, 0xC] + movs r0, 0x8 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + movs r0, 0x3 + strh r0, [r5, 0x12] + cmp r2, 0 + bne _08101CFC + negs r0, r0 + strh r0, [r5, 0x12] +_08101CFC: + ldr r0, =sub_8101D2C + b _08101D20 + .pool +_08101D04: + movs r0, 0x8 + strh r0, [r5, 0xE] + movs r0, 0xC0 + lsls r0, 3 + strh r0, [r5, 0x10] + movs r1, 0xC0 + strh r1, [r5, 0x12] + cmp r2, 0 + bne _08101D1E + negs r0, r0 + strh r0, [r5, 0x10] + negs r0, r1 + strh r0, [r5, 0x12] +_08101D1E: + ldr r0, =sub_8101EEC +_08101D20: + str r0, [r5] +_08101D22: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101C94 + + thumb_func_start sub_8101D2C +sub_8101D2C: @ 8101D2C + push {r4,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, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _08101D46 + b _08101EE6 +_08101D46: + lsls r0, 2 + ldr r1, =_08101D58 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08101D58: + .4byte _08101D6C + .4byte _08101D9E + .4byte _08101DF8 + .4byte _08101E70 + .4byte _08101EB4 +_08101D6C: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + beq _08101D7C + ldrh r2, [r4, 0x12] + ldrh r3, [r4, 0x10] + adds r2, r3 + b _08101EC2 +_08101D7C: + movs r0, 0x8 + strh r0, [r4, 0xE] + strh r1, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r1, 0xC0 + cmp r0, 0 + bne _08101D92 + movs r2, 0xC0 + negs r2, r2 + adds r1, r2, 0 +_08101D92: + strh r1, [r4, 0x12] + ldrb r0, [r4, 0x8] + movs r1, 0 + bl sub_80A7270 + b _08101EA8 +_08101D9E: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08101DC4 + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_80A73A0 + b _08101ED4 +_08101DC4: + movs r0, 0x8 + strh r0, [r4, 0xE] + ldr r2, =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _08101DEA + movs r1, 0x2 +_08101DEA: + strh r1, [r4, 0x12] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _08101EA8 + .pool +_08101DF8: + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08101E54 + ldrh r1, [r4, 0x14] + movs r3, 0x14 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08101E12 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + b _08101EE6 +_08101E12: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _08101E34 + ldr r2, =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r2, [r4, 0x10] + adds r1, r2 + b _08101E48 + .pool +_08101E34: + ldr r2, =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + ldrh r2, [r4, 0x12] + subs r1, r2 +_08101E48: + strh r1, [r0, 0x24] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _08101ED4 + .pool +_08101E54: + ldr r2, =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x24] + movs r0, 0xC + strh r0, [r4, 0xE] + b _08101EA8 + .pool +_08101E70: + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08101E80 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _08101EE6 +_08101E80: + movs r0, 0x3 + strh r0, [r4, 0xE] + ldr r2, =gSprites + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x8 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _08101EA6 + movs r1, 0x8 +_08101EA6: + strh r1, [r4, 0x12] +_08101EA8: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _08101EE6 + .pool +_08101EB4: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08101EE0 + ldrh r2, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r2, r0 +_08101EC2: + strh r2, [r4, 0x10] + ldr r3, =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x24] +_08101ED4: + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _08101EE6 + .pool +_08101EE0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_08101EE6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101D2C + + thumb_func_start sub_8101EEC +sub_8101EEC: @ 8101EEC + 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, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08101F2C + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl obj_id_set_rotscale + ldrb r0, [r4, 0x8] + bl sub_80A73A0 + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _08101F38 + .pool +_08101F2C: + ldrb r0, [r4, 0x8] + bl sub_80A7344 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08101F38: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101EEC + + thumb_func_start sub_8101F40 +sub_8101F40: @ 8101F40 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08101F5C + ldr r4, =gBattleAnimAttacker + b _08101F5E + .pool +_08101F5C: + ldr r4, =gBattleAnimTarget +_08101F5E: + 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] + movs r0, 0 + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + ldr r1, =sub_810208C + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67D8 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101F40 + + thumb_func_start sub_8101FA8 +sub_8101FA8: @ 8101FA8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldr r1, =0x0000ffd0 + adds r0, r1 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, =sub_8102044 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67D8 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101FA8 + + thumb_func_start sub_8101FF0 +sub_8101FF0: @ 8101FF0 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gBattleAnimArgs + ldr r2, =0x0000ffd0 + adds r0, r2 + ldrh r1, [r1] + adds r0, r1 + movs r6, 0 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + strh r6, [r4, 0x2E] + strh r6, [r4, 0x30] + ldr r0, =sub_810208C + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8101FF0 + + thumb_func_start sub_8102044 +sub_8102044: @ 8102044 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _0810206E + movs r0, 0xC + strh r0, [r4, 0x2E] + movs r0, 0x8 + strh r0, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, =sub_810207C + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A653C + str r0, [r4, 0x1C] +_0810206E: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102044 + + thumb_func_start sub_810207C +sub_810207C: @ 810207C + movs r1, 0 + strh r1, [r0, 0x2E] + strh r1, [r0, 0x30] + ldr r1, =sub_810208C + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_810207C + + thumb_func_start sub_810208C +sub_810208C: @ 810208C + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _081020D4 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _081020D4 + adds r0, r3, 0 + bl DestroyAnimSprite +_081020D4: + pop {r0} + bx r0 + thumb_func_end sub_810208C + + thumb_func_start sub_81020D8 +sub_81020D8: @ 81020D8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _081020F4 + ldr r4, =gBattleAnimAttacker + b _081020F6 + .pool +_081020F4: + ldr r4, =gBattleAnimTarget +_081020F6: + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x6] + strh r0, [r5, 0x30] + ldr r0, =sub_810213C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81020D8 + + thumb_func_start sub_810213C +sub_810213C: @ 810213C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _0810215C + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x22] + subs r0, 0x1 + strh r0, [r2, 0x22] +_0810215C: + ldrh r0, [r2, 0x22] + ldrh r1, [r2, 0x2E] + subs r0, r1 + strh r0, [r2, 0x22] + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08102178 + adds r0, r2, 0 + bl DestroyAnimSprite +_08102178: + pop {r0} + bx r0 + thumb_func_end sub_810213C + + thumb_func_start sub_810217C +sub_810217C: @ 810217C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, =gBattleAnimAttacker + ldrb r0, [r6] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + subs r0, 0xC + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + movs r0, 0x2 + strh r0, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + subs r0, 0x42 + bl BattleAnimAdjustPanning + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x38] + ldr r0, =sub_81021CC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810217C + + thumb_func_start sub_81021CC +sub_81021CC: @ 81021CC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08102238 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0810221E + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0810221E + ldrh r1, [r4, 0x38] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC2 + bl PlaySE12WithPanning +_0810221E: + movs r1, 0 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08102238 + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_08102238: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08102262 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + ble _08102262 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08102262 + adds r0, r4, 0 + bl DestroyAnimSprite +_08102262: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81021CC + + thumb_func_start sub_8102268 +sub_8102268: @ 8102268 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _081022B2 + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + ldr r5, =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x2] + adds r0, r5 + strh r0, [r6, 0x22] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _081022AC + ldrh r0, [r6, 0x22] + adds r0, 0xA + strh r0, [r6, 0x22] +_081022AC: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] +_081022B2: + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, =0x0000ffff + cmp r1, r0 + bne _081022C2 + adds r0, r6, 0 + bl DestroyAnimSprite +_081022C2: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102268 + + thumb_func_start sub_81022D4 +sub_81022D4: @ 81022D4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _08102300 + ldr r1, =gBattleAnimArgs + ldr r0, =0x0000ffff + strh r0, [r1, 0xE] + b _0810233E + .pool +_08102300: + cmp r0, 0x2 + bne _0810230C + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _08102344 +_0810230C: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _08102344 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r2, [r4, 0xA] + adds r2, 0x1 + strh r2, [r4, 0xA] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _08102344 +_0810233E: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_08102344: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81022D4 + + thumb_func_start sub_810234C +sub_810234C: @ 810234C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_80A6980 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, =sub_810237C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810234C + + thumb_func_start sub_810237C +sub_810237C: @ 810237C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _08102390 + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] + b _081023CC +_08102390: + adds r2, r5, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldr r4, =gBattleAnimAttacker + 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] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_081023CC: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810237C + + thumb_func_start sub_81023E0 +sub_81023E0: @ 81023E0 + 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 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _08102428 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _08102428 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08102428: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81023E0 + + thumb_func_start sub_8102434 +sub_8102434: @ 8102434 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + ldr r0, =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcs _08102490 + ldr r6, =gBattleAnimArgs + ldr r5, =gHealthboxSpriteIds +_08102448: + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _08102464 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08102464 + adds r0, r4, r5 + ldrb r0, [r0] + bl SetHealthboxSpriteInvisible +_08102464: + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _08102482 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08102482 + adds r0, r4, r5 + ldrb r0, [r0] + bl SetHealthboxSpriteInvisible +_08102482: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcc _08102448 +_08102490: + adds r0, r7, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102434 + + thumb_func_start sub_81024A8 +sub_81024A8: @ 81024A8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _081024C2 +_081024B2: + ldr r0, =gHealthboxSpriteIds + adds r0, r4, r0 + ldrb r0, [r0] + bl SetHealthboxSpriteVisible + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_081024C2: + ldr r0, =gBattlersCount + ldrb r0, [r0] + cmp r4, r0 + bcc _081024B2 + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81024A8 + + thumb_func_start sub_81024E0 +sub_81024E0: @ 81024E0 + push {r4,lr} + adds r4, r0, 0 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _081024F6 + movs r0, 0x30 + strh r0, [r4, 0x20] + movs r0, 0x28 + b _081024FE +_081024F6: + ldr r0, =gBattleAnimArgs + ldrh r1, [r0] + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_081024FE: + strh r0, [r4, 0x22] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, =sub_8102528 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81024E0 + + thumb_func_start sub_8102528 +sub_8102528: @ 8102528 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0810253A + adds r0, r1, 0 + bl DestroyAnimSprite +_0810253A: + pop {r0} + bx r0 + thumb_func_end sub_8102528 + + thumb_func_start sub_8102540 +sub_8102540: @ 8102540 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + ldr r2, =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r2] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x22] + strh r1, [r4, 0x2E] + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + strh r1, [r4, 0x34] + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r0, =sub_8102584 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102540 + + thumb_func_start sub_8102584 +sub_8102584: @ 8102584 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _081025AE + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r2, [r1, 0x32] + movs r3, 0x32 + ldrsh r0, [r1, r3] + cmp r0, 0x77 + bgt _081025AE + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + adds r0, r2, 0x1 + strh r0, [r1, 0x32] +_081025AE: + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _081025BC + adds r0, r1, 0 + bl DestroyAnimSprite +_081025BC: + pop {r0} + bx r0 + thumb_func_end sub_8102584 + + thumb_func_start sub_81025C0 +sub_81025C0: @ 81025C0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80A75AC + mov r8, r0 + ldr r0, =0x0000ffff + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldr r0, =gTasks + mov r9, r0 + lsls r5, r7, 2 + adds r5, r7 + lsls r5, 3 + adds r6, r5, r0 + strh r4, [r6, 0x8] + strh r4, [r6, 0xA] + strh r4, [r6, 0xC] + strh r1, [r6, 0xE] + strh r4, [r6, 0x10] + strh r4, [r6, 0x12] + strh r4, [r6, 0x14] + movs r0, 0xD + strh r0, [r6, 0x16] + movs r0, 0xE + strh r0, [r6, 0x18] + movs r0, 0xF + strh r0, [r6, 0x1A] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80A76C4 + mov r10, r0 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r0, 0x8 + add r9, r0 + add r5, r9 + adds r0, r5, 0 + adds r0, 0x1C + adds r5, 0x1E + adds r1, r5, 0 + mov r2, r8 + bl sub_80A8048 + ldr r0, =0x000027d2 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x80 + lsls r4, 9 + adds r1, r4, 0 + lsls r1, r0 + mov r0, r10 + orrs r0, r1 + mov r10, r0 + ldr r0, =0x000027d3 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0 + mov r1, r10 + orrs r4, r1 + ldr r0, =0x00007fbb + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, =sub_81026A8 + str r1, [r6] + adds r0, r7, 0 + bl _call_via_r1 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81025C0 + + thumb_func_start sub_81026A8 +sub_81026A8: @ 81026A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _08102794 + cmp r1, 0x1 + bgt _081026D4 + cmp r1, 0 + beq _081026E2 + b _08102832 + .pool +_081026D4: + cmp r1, 0x2 + bne _081026DA + b _081027EC +_081026DA: + cmp r1, 0x3 + bne _081026E0 + b _08102820 +_081026E0: + b _08102832 +_081026E2: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bgt _081026F0 + b _08102832 +_081026F0: + strh r1, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _0810273C + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrh r2, [r4, 0x18] + ldrh r3, [r4, 0x12] + adds r2, r3 + strh r2, [r4, 0x12] + ldrh r1, [r4, 0x1A] + ldrh r5, [r4, 0x14] + adds r1, r5 + strh r1, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r2, 11 + orrs r0, r2 + lsrs r1, 6 + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + b _08102746 +_0810273C: + ldr r7, =0x00007fbb + mov r12, r7 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08102746: + movs r2, 0x1 + movs r3, 0 + movs r1, 0 +_0810274C: + movs r5, 0xE + ldrsh r0, [r4, r5] + ands r0, r2 + lsls r5, r2, 17 + adds r6, r3, 0 + adds r6, 0x10 + adds r1, 0x1 + mov r8, r1 + cmp r0, 0 + beq _08102778 + movs r1, 0x1 + ldr r2, =gPlttBufferFaded +_08102764: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r2 + mov r7, r12 + strh r7, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _08102764 +_08102778: + lsrs r2, r5, 16 + lsls r0, r6, 16 + lsrs r3, r0, 16 + mov r1, r8 + lsls r0, r1, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _0810274C + b _08102832 + .pool +_08102794: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08102832 + movs r2, 0 + ldr r3, =gSprites + movs r5, 0x14 + adds r5, r3 + mov r12, r5 + ldr r7, =gUnknown_08592EBC + mov r8, r7 + ldr r6, =gBattleAnimSpriteTemplate_8592EEC + movs r5, 0x1 +_081027B2: + lsls r0, r2, 4 + adds r0, r2 + lsls r1, r0, 2 + mov r7, r12 + adds r0, r1, r7 + ldr r0, [r0] + cmp r0, r8 + beq _081027C6 + cmp r0, r6 + bne _081027CA +_081027C6: + adds r0, r1, r3 + strh r5, [r0, 0x2E] +_081027CA: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _081027B2 + movs r0, 0 + strh r0, [r4, 0xA] + b _08102814 + .pool +_081027EC: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _08102832 + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + bl sub_80A8050 + ldr r1, =0x00007fbb + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade +_08102814: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _08102832 + .pool +_08102820: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08102832 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_08102832: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81026A8 + + thumb_func_start sub_8102844 +sub_8102844: @ 8102844 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bgt _08102856 + movs r0, 0x2 + strh r0, [r6, 0x4] +_08102856: + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x7F + ble _08102862 + movs r0, 0x7F + strh r0, [r6, 0x4] +_08102862: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x30] + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x2] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r1, [r5, 0x20] + strh r1, [r5, 0x3A] + strh r0, [r5, 0x3C] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _081028D4 + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, =0xffffec00 + b _081028FA + .pool +_081028D4: + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810291C + ldrh r0, [r5, 0x20] + subs r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 5 +_081028FA: + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, =0xfffff600 + bl __divsi3 + strh r0, [r5, 0x38] + b _08102958 + .pool +_0810291C: + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + subs r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, =0xffffec00 + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 4 + bl __divsi3 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 + orrs r0, r1 + strb r0, [r5, 0x3] +_08102958: + ldr r0, =sub_810296C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102844 + + thumb_func_start sub_810296C +sub_810296C: @ 810296C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 23 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _081029A2 + ldrh r0, [r2, 0x3A] + strh r0, [r2, 0x20] + ldrh r0, [r2, 0x3C] + strh r0, [r2, 0x22] +_081029A2: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _081029B0 + adds r0, r2, 0 + bl DestroyAnimSprite +_081029B0: + pop {r0} + bx r0 + thumb_func_end sub_810296C + + thumb_func_start sub_81029B4 +sub_81029B4: @ 81029B4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, =gTasks + adds r6, r0, r1 + movs r0, 0 + bl GetAnimBattlerSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x8] + ldr r0, =0x00002771 + bl AllocSpritePalette + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0xA] + movs r1, 0xA + ldrsh r0, [r6, r1] + lsls r0, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + ldr r2, =gSprites + movs r0, 0x8 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r4, r0, 4 + movs r5, 0x1 + ldr r2, =gPlttBufferUnfaded +_08102A0C: + adds r1, r3, r5 + lsls r1, 1 + adds r1, r2 + adds r0, r4, r5 + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _08102A0C + adds r0, r3, 0 + movs r1, 0x10 + movs r2, 0xB + movs r3, 0 + bl BlendPalette + movs r0, 0 + strh r0, [r6, 0xE] + movs r5, 0 + ldr r7, =gSprites + movs r1, 0x1C + adds r1, r7 + mov r9, r1 + b _08102A88 + .pool +_08102A54: + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r4, r2, r7 + ldrb r1, [r6, 0xA] + lsls r1, 4 + ldrb r3, [r4, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0x5] + movs r0, 0 + strh r0, [r4, 0x2E] + lsls r0, r5, 7 + strh r0, [r4, 0x30] + mov r0, r8 + strh r0, [r4, 0x32] + add r2, r9 + ldr r0, =sub_8102B3C + str r0, [r2] + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08102A88: + cmp r5, 0x1 + bhi _08102A9A + movs r0, 0 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _08102A54 +_08102A9A: + ldr r0, =sub_8102AE0 + str r0, [r6] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80A8364 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08102AC8 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl ClearGpuRegBits + b _08102AD2 + .pool +_08102AC8: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl ClearGpuRegBits +_08102AD2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81029B4 + + thumb_func_start sub_8102AE0 +sub_8102AE0: @ 8102AE0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, =gTasks + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08102B32 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80A8364 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08102B1C + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl SetGpuRegBits + b _08102B26 + .pool +_08102B1C: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl SetGpuRegBits +_08102B26: + ldr r0, =0x00002771 + bl FreeSpritePaletteByTag + adds r0, r4, 0 + bl DestroyAnimVisualTask +_08102B32: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102AE0 + + thumb_func_start sub_8102B3C +sub_8102B3C: @ 8102B3C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08102B58 + movs r0, 0 + strh r0, [r5, 0x34] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_08102B58: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x40 + ble _08102B80 + ldr r2, =gTasks + movs r0, 0x32 + ldrsh r1, [r5, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xE] + subs r1, 0x1 + strh r1, [r0, 0xE] + adds r0, r5, 0 + bl obj_delete_but_dont_free_vram + b _08102BC2 + .pool +_08102B80: + ldr r4, =gSineTable + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0x6 + bl __divsi3 + strh r0, [r5, 0x36] + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0xD + bl __divsi3 + strh r0, [r5, 0x38] + ldrh r1, [r5, 0x30] + adds r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x30] + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + strh r0, [r5, 0x24] +_08102BC2: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102B3C + + thumb_func_start sub_8102BCC +sub_8102BCC: @ 8102BCC + push {r4,lr} + adds r4, r0, 0 + ldr r1, =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67D8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102BCC + + thumb_func_start sub_8102BE8 +sub_8102BE8: @ 8102BE8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r4, =gUnknown_08593020 + ldrh r0, [r4] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + beq _08102C2C + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r5, =gPlttBufferFaded +_08102C14: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r5 + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _08102C14 +_08102C2C: + movs r4, 0x1 + ldr r0, =gUnknown_08593020 + mov r8, r0 +_08102C32: + lsls r0, r4, 1 + adds r0, r4 + lsls r5, r0, 2 + mov r1, r8 + adds r0, r5, r1 + ldrh r0, [r0] + bl AllocSpritePalette + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, 0x1 + mov r12, r4 + cmp r3, 0xFF + beq _08102C7A + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r7, =gPlttBufferFaded + ldr r6, =gUnknown_08593020 + adds r4, r5, 0 +_08102C60: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r7 + lsls r0, r2, 1 + adds r0, r4 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _08102C60 +_08102C7A: + mov r1, r12 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08102C32 + mov r0, r9 + bl DestroyAnimVisualTask + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102BE8 + + thumb_func_start sub_8102CA0 +sub_8102CA0: @ 8102CA0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0x1 + ldr r6, =gUnknown_08593020 +_08102CAA: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r6 + ldrh r0, [r0] + bl FreeSpritePaletteByTag + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08102CAA + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102CA0 + + thumb_func_start sub_8102CD4 +sub_8102CD4: @ 8102CD4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_80A6838 + ldr r4, =gBattleAnimArgs + ldrb r1, [r4] + adds r0, r5, 0 + bl StartSpriteAnim + ldr r2, =gUnknown_08593020 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08102D10 + lsls r2, r0, 4 + ldrb r1, [r5, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] +_08102D10: + ldrh r0, [r4, 0x2] + movs r1, 0 + strh r0, [r5, 0x30] + strh r1, [r5, 0x32] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x34] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _08102D34 + movs r6, 0x30 + movs r3, 0x28 + b _08102D4E + .pool +_08102D34: + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r3, r0, 24 +_08102D4E: + ldrh r0, [r5, 0x20] + lsls r1, r0, 4 + strh r1, [r5, 0x36] + ldrh r1, [r5, 0x22] + lsls r2, r1, 4 + strh r2, [r5, 0x38] + subs r0, r6, r0 + lsls r0, 16 + asrs r0, 16 + subs r1, r3, r1 + lsls r1, 16 + asrs r1, 16 + adds r2, r5, 0 + adds r2, 0x3A + adds r3, r5, 0 + adds r3, 0x3C + movs r4, 0x28 + str r4, [sp] + bl sub_8102D8C + ldr r0, =sub_8102DE4 + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102CD4 + + thumb_func_start sub_8102D8C +sub_8102D8C: @ 8102D8C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r2, 0 + mov r8, r3 + ldr r2, [sp, 0x18] + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r1, r2, 24 + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bge _08102DAE + lsls r0, r1, 24 + negs r0, r0 + lsrs r1, r0, 24 +_08102DAE: + lsls r5, r2, 8 + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0 + bne _08102DC2 + movs r4, 0x1 +_08102DC2: + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + strh r0, [r7] + lsls r0, r6, 16 + asrs r0, 8 + adds r1, r4, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8102D8C + + thumb_func_start sub_8102DE4 +sub_8102DE4: @ 8102DE4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x2E] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r1, r0, r1 + adds r0, r1, 0 + cmp r1, 0 + bge _08102E00 + adds r0, 0xFF +_08102E00: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + ldrh r1, [r4, 0x3A] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + ldrh r2, [r4, 0x3C] + ldrh r3, [r4, 0x38] + adds r2, r3 + strh r2, [r4, 0x38] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x20] + lsls r2, 16 + asrs r2, 20 + strh r2, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xF + bl Sin + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + ldrh r0, [r4, 0x20] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bhi _08102E4E + lsls r0, r2, 16 + asrs r1, r0, 16 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + blt _08102E4E + cmp r1, 0x80 + ble _08102E56 +_08102E4E: + adds r0, r4, 0 + bl move_anim_8074EE0 + b _08102EA6 +_08102E56: + movs r0, 0x34 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _08102EA6 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, r1 + ble _08102EA6 + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08102E7E + strh r5, [r4, 0x30] +_08102E7E: + ldr r2, =gUnknown_08593020 + movs r3, 0x30 + ldrsh r1, [r4, r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08102EA6 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_08102EA6: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102DE4 + + thumb_func_start sub_8102EB0 +sub_8102EB0: @ 8102EB0 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r7, =gBattleAnimAttacker + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08102ECE + ldr r1, =gBattleAnimArgs + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_08102ECE: + ldrb r0, [r7] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + ldr r4, =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + movs r5, 0 + strh r0, [r6, 0x20] + ldrb r0, [r7] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r6, 0x22] + ldrb r1, [r4] + adds r0, r6, 0 + bl StartSpriteAnim + strh r5, [r6, 0x32] + strh r5, [r6, 0x34] + ldrh r0, [r6, 0x20] + lsls r0, 4 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x22] + lsls r0, 4 + strh r0, [r6, 0x38] + movs r1, 0x2 + ldrsh r0, [r4, r1] + lsls r0, 4 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3A] + movs r2, 0x4 + ldrsh r0, [r4, r2] + lsls r0, 7 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3C] + ldr r0, =sub_8102F40 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102EB0 + + thumb_func_start sub_8102F40 +sub_8102F40: @ 8102F40 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x3C] + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x22] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x5 + ble _08102F9E + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08102F9E + ldrh r0, [r4, 0x32] + adds r0, 0x10 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x12 + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x12 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08102F9E + movs r0, 0x1 + strh r0, [r4, 0x34] +_08102F9E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + bne _08102FB2 + adds r0, r4, 0 + bl move_anim_8074EE0 +_08102FB2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8102F40 + + thumb_func_start sub_8102FB8 +sub_8102FB8: @ 8102FB8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _08102FDC + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] + movs r6, 0x10 + b _08102FDE + .pool +_08102FDC: + ldr r6, =0x0000fff0 +_08102FDE: + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x8 + strh r0, [r5, 0x22] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r5, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8102FB8 + + thumb_func_start sub_8103028 +sub_8103028: @ 8103028 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80A6838 + ldrh r0, [r4, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] + ldr r5, =gBattleAnimArgs + ldrb r1, [r5, 0x2] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r2, =gUnknown_08593020 + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08103068 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_08103068: + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x20 + cmp r0, 0 + bne _08103074 + ldr r2, =0x0000ffe0 +_08103074: + movs r0, 0x28 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x20] + strh r1, [r4, 0x30] + lsls r0, r2, 16 + asrs r0, 16 + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + subs r0, 0x28 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl InitAnimLinearTranslation + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x38] + ldr r0, =sub_81030B0 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103028 + + thumb_func_start sub_81030B0 +sub_81030B0: @ 81030B0 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimLinear + lsls r0, 24 + cmp r0, 0 + bne _08103100 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + lsls r0, 16 + lsrs r1, r0, 16 + ldrh r2, [r4, 0x24] + movs r3, 0x24 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _081030DC + lsls r0, r1, 16 + negs r0, r0 + lsrs r1, r0, 16 +_081030DC: + lsls r0, r1, 16 + asrs r0, 16 + adds r0, r2 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + ldrh r3, [r4, 0x26] + adds r0, r3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _08103106 +_08103100: + adds r0, r4, 0 + bl DestroyAnimSprite +_08103106: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81030B0 + + thumb_func_start sub_810310C +sub_810310C: @ 810310C + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810312C + adds r0, r5, 0 + movs r1, 0x5 + bl sub_80A861C + adds r0, 0x8 + b _08103136 +_0810312C: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_80A861C + subs r0, 0x8 +_08103136: + strh r0, [r6, 0x20] + adds r0, r5, 0 + movs r1, 0x3 + bl GetBattlerSpriteCoord + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0 + bl sub_80A861C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _08103158 + adds r0, 0x3 +_08103158: + asrs r0, 2 + subs r0, r4, r0 + strh r0, [r6, 0x22] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810310C + + thumb_func_start sub_8103164 +sub_8103164: @ 8103164 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08103180 + ldr r0, =gBattleAnimAttacker + b _08103182 + .pool +_08103180: + ldr r0, =gBattleAnimTarget +_08103182: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_810310C + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x2] + strh r0, [r5, 0x2E] + adds r0, r1, 0x2 + strh r0, [r5, 0x30] + adds r0, r5, 0 + bl StartSpriteAnim + ldr r1, =sub_81031D0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67D8 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103164 + + thumb_func_start sub_81031D0 +sub_81031D0: @ 81031D0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _081031F8 + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, =sub_80A67D8 + str r0, [r4, 0x1C] +_081031F8: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81031D0 + + thumb_func_start sub_8103208 +sub_8103208: @ 8103208 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08103224 + ldr r0, =gBattleAnimAttacker + b _08103226 + .pool +_08103224: + ldr r0, =gBattleAnimTarget +_08103226: + ldrb r0, [r0] + adds r1, r4, 0 + bl sub_810310C + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r1, =sub_8103250 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67BC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103208 + + thumb_func_start sub_8103250 +sub_8103250: @ 8103250 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _08103276 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r1, =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67BC + str r0, [r4, 0x1C] +_08103276: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103250 + + thumb_func_start sub_8103284 +sub_8103284: @ 8103284 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _081032A0 + ldr r0, =gBattleAnimAttacker + b _081032A2 + .pool +_081032A0: + ldr r0, =gBattleAnimTarget +_081032A2: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80A861C + strh r0, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bgt _081032CA + movs r0, 0xA + strh r0, [r4, 0x22] +_081032CA: + movs r0, 0x1 + strh r0, [r4, 0x2E] + strh r6, [r4, 0x30] + adds r1, r4, 0 + adds r1, 0x43 + ldrb r0, [r1] + strh r0, [r4, 0x32] + ldrb r0, [r1] + adds r0, 0x4 + strh r0, [r4, 0x34] + strh r6, [r4, 0x36] + ldr r1, =sub_8103300 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67BC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103284 + + thumb_func_start sub_8103300 +sub_8103300: @ 8103300 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _08103316 + ldr r0, =sub_8103320 + str r0, [r1, 0x1C] +_08103316: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103300 + + thumb_func_start sub_8103320 +sub_8103320: @ 8103320 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r1, r0, 0x4 + strh r1, [r2, 0x30] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFE + ble _08103352 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _0810334C + strh r0, [r2, 0x24] + ldr r0, =sub_8103250 + str r0, [r2, 0x1C] + b _08103388 + .pool +_0810334C: + movs r0, 0xFF + ands r1, r0 + strh r1, [r2, 0x30] +_08103352: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0x4F + ble _08103362 + ldrh r0, [r2, 0x34] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_08103362: + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0x9F + ble _08103372 + ldrh r0, [r2, 0x32] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_08103372: + ldr r1, =gSineTable + movs r3, 0x30 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + asrs r1, r0, 1 + adds r0, r1 + strh r0, [r2, 0x24] +_08103388: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103320 + + thumb_func_start sub_8103390 +sub_8103390: @ 8103390 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _081033AC + ldr r0, =gBattleAnimAttacker + b _081033AE + .pool +_081033AC: + ldr r0, =gBattleAnimTarget +_081033AE: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_810310C + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _081033D4 + adds r0, r5, 0 + movs r1, 0 + bl StartSpriteAnim + movs r0, 0x2 + b _081033DE + .pool +_081033D4: + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim + movs r0, 0x3 +_081033DE: + strh r0, [r5, 0x2E] + ldr r0, =sub_81033F0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8103390 + + thumb_func_start sub_81033F0 +sub_81033F0: @ 81033F0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _0810341E + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r1, =sub_810342C + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A67D8 + str r0, [r4, 0x1C] +_0810341E: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81033F0 + + thumb_func_start sub_810342C +sub_810342C: @ 810342C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _08103444 + adds r0, r1, 0 + bl DestroyAnimSprite +_08103444: + pop {r0} + bx r0 + thumb_func_end sub_810342C + + .align 2, 0 |