.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80A6E48 sub_80A6E48: @ 80A6E48 push {r4,r5,lr} adds r4, r0, 0 bl SetSpriteCoordsToAnimAttackerCoords ldr r5, _080A6E8C @ =gBattleAnimArgs movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldrh r0, [r5, 0x4] strh r0, [r4, 0x30] ldrh r0, [r5, 0x8] strh r0, [r4, 0x32] ldrh r0, [r5, 0xA] strh r0, [r4, 0x34] ldrh r0, [r5, 0x6] strh r0, [r4, 0x36] ldr r1, _080A6E90 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, _080A6E94 @ =TranslateSpriteInEllipseOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A6E8C: .4byte gBattleAnimArgs _080A6E90: .4byte DestroySpriteAndMatrix _080A6E94: .4byte TranslateSpriteInEllipseOverDuration thumb_func_end sub_80A6E48 thumb_func_start sub_80A6E98 sub_80A6E98: @ 80A6E98 push {r4,lr} adds r4, r0, 0 ldr r0, _080A6EAC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080A6EB4 ldr r0, _080A6EB0 @ =gBattleAnimAttacker b _080A6EB6 .align 2, 0 _080A6EAC: .4byte gBattleAnimArgs _080A6EB0: .4byte gBattleAnimAttacker _080A6EB4: ldr r0, _080A6ED0 @ =gBattleAnimTarget _080A6EB6: ldrb r0, [r0] adds r1, r4, 0 bl sub_80A6B0C movs r0, 0 strh r0, [r4, 0x2E] strh r0, [r4, 0x30] ldr r0, _080A6ED4 @ =sub_80A6ED8 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080A6ED0: .4byte gBattleAnimTarget _080A6ED4: .4byte sub_80A6ED8 thumb_func_end sub_80A6E98 thumb_func_start sub_80A6ED8 sub_80A6ED8: @ 80A6ED8 push {lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x1 beq _080A6F0A cmp r0, 0x1 bgt _080A6EEE cmp r0, 0 beq _080A6EF4 b _080A6F38 _080A6EEE: cmp r0, 0x2 beq _080A6F24 b _080A6F38 _080A6EF4: ldrh r0, [r1, 0x26] subs r0, 0x3 strh r0, [r1, 0x26] ldrh r0, [r1, 0x30] adds r0, 0x1 strh r0, [r1, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _080A6F38 b _080A6F1C _080A6F0A: ldrh r0, [r1, 0x26] adds r0, 0x3 strh r0, [r1, 0x26] ldrh r0, [r1, 0x30] subs r0, 0x1 strh r0, [r1, 0x30] lsls r0, 16 cmp r0, 0 bne _080A6F38 _080A6F1C: ldrh r0, [r1, 0x2E] adds r0, 0x1 strh r0, [r1, 0x2E] b _080A6F38 _080A6F24: ldrh r0, [r1, 0x30] adds r0, 0x1 strh r0, [r1, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x40 bne _080A6F38 adds r0, r1, 0 bl DestroyAnimSprite _080A6F38: pop {r0} bx r0 thumb_func_end sub_80A6ED8 thumb_func_start sub_80A6F3C sub_80A6F3C: @ 80A6F3C push {r4,lr} adds r4, r0, 0 ldr r3, _080A6F88 @ =gSprites movs r0, 0x32 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r1, [r4, 0x30] ldrh r2, [r0, 0x24] adds r1, r2 strh r1, [r0, 0x24] movs r1, 0x30 ldrsh r0, [r4, r1] negs r0, r0 strh r0, [r4, 0x30] movs r0, 0x2E ldrsh r2, [r4, r0] cmp r2, 0 bne _080A6F7A movs r0, 0x32 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 strh r2, [r0, 0x24] adds r0, r4, 0 bl DestroySpriteAndMatrix _080A6F7A: ldrh r0, [r4, 0x2E] subs r0, 0x1 strh r0, [r4, 0x2E] pop {r4} pop {r0} bx r0 .align 2, 0 _080A6F88: .4byte gSprites thumb_func_end sub_80A6F3C thumb_func_start sub_80A6F8C sub_80A6F8C: @ 80A6F8C push {r4-r6,lr} adds r5, r0, 0 ldr r4, _080A6FD4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl 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] ldr r1, _080A6FD8 @ =gBattlerSpriteIds ldr r0, _080A6FDC @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 ldrb r6, [r0] ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A6FE4 ldr r0, _080A6FE0 @ =gBattleAnimArgs ldrh r1, [r5, 0x20] ldrh r2, [r0] subs r1, r2 strh r1, [r5, 0x20] adds r1, r0, 0 b _080A6FEE .align 2, 0 _080A6FD4: .4byte gBattleAnimAttacker _080A6FD8: .4byte gBattlerSpriteIds _080A6FDC: .4byte gBattleAnimTarget _080A6FE0: .4byte gBattleAnimArgs _080A6FE4: ldr r1, _080A7018 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r5, 0x20] adds r0, r2 strh r0, [r5, 0x20] _080A6FEE: ldrh r0, [r1, 0x2] ldrh r2, [r5, 0x22] adds r0, r2 strh r0, [r5, 0x22] ldrh r0, [r1, 0x4] strh r0, [r5, 0x2E] ldrh r0, [r1, 0x6] strh r0, [r5, 0x30] strh r6, [r5, 0x32] ldr r0, _080A701C @ =sub_80A6F3C str r0, [r5, 0x1C] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A7018: .4byte gBattleAnimArgs _080A701C: .4byte sub_80A6F3C thumb_func_end sub_80A6F8C thumb_func_start sub_80A7020 sub_80A7020: @ 80A7020 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r1, _080A704C @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x6] strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x38] ldr r0, _080A7050 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080A7054 @ =sub_80A7058 adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 .align 2, 0 _080A704C: .4byte gBattleAnimArgs _080A7050: .4byte WaitAnimForDuration _080A7054: .4byte sub_80A7058 thumb_func_end sub_80A7020 thumb_func_start sub_80A7058 sub_80A7058: @ 80A7058 push {lr} ldrh r1, [r0, 0x30] strh r1, [r0, 0x2E] ldrh r1, [r0, 0x20] strh r1, [r0, 0x32] ldrh r1, [r0, 0x22] adds r1, 0xF strh r1, [r0, 0x36] ldr r1, _080A7078 @ =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, _080A707C @ =sub_80A7080 bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 _080A7078: .4byte StartAnimLinearTranslation _080A707C: .4byte sub_80A7080 thumb_func_end sub_80A7058 thumb_func_start sub_80A7080 sub_80A7080: @ 80A7080 push {lr} adds r1, r0, 0 ldrh r2, [r1, 0x38] movs r3, 0x38 ldrsh r0, [r1, r3] cmp r0, 0 bne _080A7096 adds r0, r1, 0 bl DestroyAnimSprite b _080A709A _080A7096: subs r0, r2, 0x1 strh r0, [r1, 0x38] _080A709A: pop {r0} bx r0 thumb_func_end sub_80A7080 thumb_func_start sub_80A70A0 sub_80A70A0: @ 80A70A0 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _080A70CC @ =gBattlerSpriteIds ldr r0, _080A70D0 @ =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] movs r1, 0 bl PrepareBattlerSpriteForRotScale ldr r1, _080A70D4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _080A70D8 @ =sub_80A70DC str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _080A70CC: .4byte gBattlerSpriteIds _080A70D0: .4byte gBattleAnimAttacker _080A70D4: .4byte gTasks _080A70D8: .4byte sub_80A70DC thumb_func_end sub_80A70A0 thumb_func_start sub_80A70DC sub_80A70DC: @ 80A70DC push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080A710C @ =gBattlerSpriteIds ldr r0, _080A7110 @ =gBattleAnimAttacker ldrb r0, [r0] adds r1, r0, r1 ldrb r4, [r1] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080A7118 ldr r1, _080A7114 @ =gTasks lsls r2, r5, 2 adds r0, r2, r5 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x8] negs r0, r0 lsls r0, 16 lsrs r3, r0, 16 adds r6, r2, 0 b _080A7126 .align 2, 0 _080A710C: .4byte gBattlerSpriteIds _080A7110: .4byte gBattleAnimAttacker _080A7114: .4byte gTasks _080A7118: ldr r2, _080A7158 @ =gTasks lsls r1, r5, 2 adds r0, r1, r5 lsls r0, 3 adds r0, r2 ldrh r3, [r0, 0x8] adds r6, r1, 0 _080A7126: movs r2, 0x80 lsls r2, 1 adds r0, r4, 0 adds r1, r2, 0 bl SetSpriteRotScale ldr r1, _080A7158 @ =gTasks adds r0, r6, r5 lsls r0, 3 adds r1, r0, r1 movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0 bne _080A7160 ldrh r0, [r1, 0x8] adds r0, 0xB0 strh r0, [r1, 0x8] ldr r1, _080A715C @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrh r1, [r0, 0x26] adds r1, 0x1 b _080A718A .align 2, 0 _080A7158: .4byte gTasks _080A715C: .4byte gSprites _080A7160: cmp r0, 0x1 bne _080A7176 ldrh r0, [r1, 0xE] adds r0, 0x1 strh r0, [r1, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x1E bne _080A71D0 movs r0, 0x2 b _080A71CE _080A7176: ldrh r0, [r1, 0x8] subs r0, 0xB0 strh r0, [r1, 0x8] ldr r1, _080A71C4 @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrh r1, [r0, 0x26] subs r1, 0x1 _080A718A: strh r1, [r0, 0x26] adds r0, r4, 0 bl SetBattlerSpriteYOffsetFromRotation ldr r0, _080A71C8 @ =gTasks adds r1, r6, r5 lsls r1, 3 adds r1, r0 movs r3, 0x8 ldrsh r2, [r1, r3] movs r0, 0xF2 lsls r0, 4 cmp r2, r0 beq _080A71AA cmp r2, 0 bne _080A71D0 _080A71AA: ldrh r2, [r1, 0xA] movs r3, 0xA ldrsh r0, [r1, r3] cmp r0, 0x2 bne _080A71CC adds r0, r4, 0 bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask b _080A71D0 .align 2, 0 _080A71C4: .4byte gSprites _080A71C8: .4byte gTasks _080A71CC: adds r0, r2, 0x1 _080A71CE: strh r0, [r1, 0xA] _080A71D0: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80A70DC thumb_func_start sub_80A71D8 sub_80A71D8: @ 80A71D8 push {r4,r5,lr} adds r4, r0, 0 bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080A71FC @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A7204 ldr r0, _080A7200 @ =gBattleAnimArgs ldrh r1, [r4, 0x20] ldrh r2, [r0] subs r1, r2 strh r1, [r4, 0x20] adds r5, r0, 0 b _080A7210 .align 2, 0 _080A71FC: .4byte gBattleAnimAttacker _080A7200: .4byte gBattleAnimArgs _080A7204: ldr r1, _080A7244 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] adds r5, r1, 0 _080A7210: ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r0, _080A7248 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A724C adds r3, r4, 0 adds r3, 0x3F ldrb r0, [r3] movs r1, 0x1 adds r2, r0, 0 orrs r2, r1 strb r2, [r3] movs r1, 0x4 ldrsh r0, [r5, r1] cmp r0, 0 beq _080A7260 movs r0, 0x2 orrs r2, r0 strb r2, [r3] b _080A7260 .align 2, 0 _080A7244: .4byte gBattleAnimArgs _080A7248: .4byte gBattleAnimAttacker _080A724C: movs r2, 0x4 ldrsh r0, [r5, r2] cmp r0, 0 beq _080A7260 adds r2, r4, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x2 orrs r0, r1 strb r0, [r2] _080A7260: ldr r0, _080A7274 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080A7278 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A7274: .4byte RunStoredCallbackWhenAnimEnds _080A7278: .4byte DestroyAnimSprite thumb_func_end sub_80A71D8 thumb_func_start sub_80A727C sub_80A727C: @ 80A727C push {r4,lr} adds r4, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker ldr r0, _080A7298 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] ldr r1, _080A729C @ =sub_80A72A0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 .align 2, 0 _080A7298: .4byte RunStoredCallbackWhenAffineAnimEnds _080A729C: .4byte sub_80A72A0 thumb_func_end sub_80A727C thumb_func_start sub_80A72A0 sub_80A72A0: @ 80A72A0 push {lr} movs r1, 0x6 strh r1, [r0, 0x2E] ldrh r1, [r0, 0x20] strh r1, [r0, 0x32] ldrh r1, [r0, 0x22] subs r1, 0x20 strh r1, [r0, 0x36] ldr r1, _080A72C0 @ =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, _080A72C4 @ =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 _080A72C0: .4byte StartAnimLinearTranslation _080A72C4: .4byte DestroyAnimSprite thumb_func_end sub_80A72A0 thumb_func_start sub_80A72C8 sub_80A72C8: @ 80A72C8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r5, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A72EC ldr r1, _080A72E8 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] b _080A730E .align 2, 0 _080A72E8: .4byte gBattleAnimArgs _080A72EC: ldr r0, _080A73B4 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A730E ldr r1, _080A73B8 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] ldrh r0, [r1, 0x6] negs r0, r0 strh r0, [r1, 0x6] _080A730E: adds r0, r5, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r4, _080A73BC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 ldr r6, _080A73B8 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r6, 0x4] adds r0, r1 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r6, 0x6] adds r0, r2 lsls r0, 16 lsrs r0, 16 adds r7, r0, 0 ldrh r1, [r5, 0x20] mov r2, r8 lsls r0, r2, 16 asrs r0, 16 subs r0, r1 lsls r0, 16 asrs r0, 16 ldrh r2, [r5, 0x22] lsls r1, r7, 16 asrs r1, 16 subs r1, r2 lsls r1, 16 asrs r1, 16 bl ArcTan2Neg lsls r0, 16 movs r1, 0xF0 lsls r1, 24 adds r0, r1 lsrs r4, r0, 16 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A7380 ldr r2, _080A73C0 @ =0xffffa000 adds r0, r4, r2 lsls r0, 16 lsrs r4, r0, 16 _080A7380: movs r3, 0x80 lsls r3, 1 str r4, [sp] adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 bl TrySetSpriteRotScale ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] mov r0, r8 strh r0, [r5, 0x32] strh r7, [r5, 0x36] ldr r0, _080A73C4 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A73C8 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A73B4: .4byte gBattleAnimAttacker _080A73B8: .4byte gBattleAnimArgs _080A73BC: .4byte gBattleAnimTarget _080A73C0: .4byte 0xffffa000 _080A73C4: .4byte StartAnimLinearTranslation _080A73C8: .4byte DestroyAnimSprite thumb_func_end sub_80A72C8 thumb_func_start sub_80A73CC sub_80A73CC: @ 80A73CC push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x2E] subs r1, r0, 0x1 strh r1, [r3, 0x2E] lsls r0, 16 cmp r0, 0 bgt _080A73F6 ldr r2, _080A73FC @ =gTasks movs r0, 0x3C ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0xA] subs r1, 0x1 strh r1, [r0, 0xA] adds r0, r3, 0 bl DestroySprite _080A73F6: pop {r0} bx r0 .align 2, 0 _080A73FC: .4byte gTasks thumb_func_end sub_80A73CC thumb_func_start sub_80A7400 sub_80A7400: @ 80A7400 push {r4,lr} adds r2, r0, 0 movs r0, 0x3C ldrsh r1, [r2, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, _080A7430 @ =gTasks adds r4, r0, r1 movs r3, 0x2E ldrsh r1, [r2, r3] movs r3, 0x12 ldrsh r0, [r4, r3] cmp r1, r0 ble _080A7434 ldrh r0, [r2, 0x34] ldrh r1, [r2, 0x38] adds r0, r1 strh r0, [r2, 0x38] ldrh r0, [r2, 0x36] ldrh r3, [r2, 0x3A] adds r0, r3 b _080A7442 .align 2, 0 _080A7430: .4byte gTasks _080A7434: ldrh r0, [r2, 0x38] ldrh r1, [r2, 0x34] subs r0, r1 strh r0, [r2, 0x38] ldrh r0, [r2, 0x3A] ldrh r1, [r2, 0x36] subs r0, r1 _080A7442: strh r0, [r2, 0x3A] ldrh r0, [r2, 0x38] ldrh r1, [r2, 0x30] adds r3, r0, r1 strh r3, [r2, 0x30] ldrh r0, [r2, 0x3A] ldrh r1, [r2, 0x32] adds r0, r1 strh r0, [r2, 0x32] ldrh r1, [r4, 0x16] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A7466 lsls r0, r3, 16 lsrs r0, 24 negs r0, r0 b _080A746A _080A7466: lsls r0, r3, 16 lsrs r0, 24 _080A746A: strh r0, [r2, 0x24] ldrh r1, [r4, 0x18] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A747E ldrh r0, [r2, 0x32] lsrs r0, 8 negs r0, r0 b _080A7482 _080A747E: ldrh r0, [r2, 0x32] lsrs r0, 8 _080A7482: strh r0, [r2, 0x26] ldrh r0, [r2, 0x2E] subs r1, r0, 0x1 strh r1, [r2, 0x2E] lsls r0, 16 cmp r0, 0 bgt _080A7498 movs r0, 0x1E strh r0, [r2, 0x2E] ldr r0, _080A74A0 @ =sub_80A73CC str r0, [r2, 0x1C] _080A7498: pop {r4} pop {r0} bx r0 .align 2, 0 _080A74A0: .4byte sub_80A73CC thumb_func_end sub_80A7400 thumb_func_start sub_80A74A4 sub_80A74A4: @ 80A74A4 push {r4-r7,lr} mov r7, r8 push {r7} adds r7, r0, 0 movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, _080A74E8 @ =gTasks adds r6, r0, r1 ldrh r2, [r6, 0x16] movs r1, 0x2 negs r1, r1 adds r0, r1, 0 ands r0, r2 ldrh r3, [r7, 0x30] adds r2, r0, r3 strh r2, [r7, 0x30] ldrh r0, [r6, 0x18] ands r1, r0 ldrh r0, [r7, 0x32] adds r1, r0 strh r1, [r7, 0x32] ldrh r1, [r6, 0x16] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A74EC lsls r0, r2, 16 lsrs r0, 24 negs r0, r0 b _080A74F0 .align 2, 0 _080A74E8: .4byte gTasks _080A74EC: lsls r0, r2, 16 lsrs r0, 24 _080A74F0: strh r0, [r7, 0x24] ldrh r1, [r6, 0x18] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A7504 ldrh r0, [r7, 0x32] lsrs r0, 8 negs r0, r0 b _080A7508 _080A7504: ldrh r0, [r7, 0x32] lsrs r0, 8 _080A7508: strh r0, [r7, 0x26] ldrh r0, [r7, 0x2E] subs r1, r0, 0x1 strh r1, [r7, 0x2E] lsls r0, 16 cmp r0, 0 bgt _080A75D4 movs r4, 0 movs r0, 0x8 strh r0, [r7, 0x2E] movs r0, 0x4 strh r0, [r6, 0x12] movs r0, 0x80 lsls r0, 5 bl sub_80D8B90 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r7, 0x24] ldrh r1, [r7, 0x20] adds r2, r0, r1 strh r2, [r7, 0x20] ldrh r0, [r7, 0x26] ldrh r3, [r7, 0x22] adds r0, r3 strh r0, [r7, 0x22] strh r4, [r7, 0x26] strh r4, [r7, 0x24] ldrh r3, [r6, 0x1E] movs r0, 0x1E ldrsh r1, [r6, r0] lsls r0, r2, 16 asrs r0, 16 cmp r1, r0 blt _080A7552 subs r0, r3, r2 b _080A7554 _080A7552: subs r0, r2, r3 _080A7554: lsls r0, 24 lsrs r4, r0, 16 ldrh r3, [r6, 0x20] movs r0, 0x20 ldrsh r1, [r6, r0] ldrh r2, [r7, 0x22] movs r6, 0x22 ldrsh r0, [r7, r6] cmp r1, r0 blt _080A756C subs r0, r3, r2 b _080A756E _080A756C: subs r0, r2, r3 _080A756E: lsls r0, 24 lsrs r0, 16 mov r8, r0 movs r0, 0 strh r0, [r7, 0x32] strh r0, [r7, 0x30] strh r0, [r7, 0x3A] strh r0, [r7, 0x38] lsls r0, r4, 16 asrs r0, 16 lsls r5, 16 asrs r5, 16 adds r1, r5, 0 bl sub_80D8AA0 adds r4, r0, 0 lsls r4, 16 asrs r4, 16 movs r6, 0xE0 lsls r6, 1 adds r0, r6, 0 bl sub_80D8B90 adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl sub_80D8AA0 strh r0, [r7, 0x34] mov r1, r8 lsls r0, r1, 16 asrs r0, 16 adds r1, r5, 0 bl sub_80D8AA0 adds r4, r0, 0 lsls r4, 16 asrs r4, 16 adds r0, r6, 0 bl sub_80D8B90 adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl sub_80D8AA0 strh r0, [r7, 0x36] ldr r0, _080A75E0 @ =sub_80A7400 str r0, [r7, 0x1C] _080A75D4: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A75E0: .4byte sub_80A7400 thumb_func_end sub_80A74A4 thumb_func_start sub_80A75E4 sub_80A75E4: @ 80A75E4 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, _080A7608 @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 movs r1, 0xA ldrsh r0, [r0, r1] cmp r0, 0 bne _080A7602 adds r0, r2, 0 bl DestroyAnimVisualTask _080A7602: pop {r0} bx r0 .align 2, 0 _080A7608: .4byte gTasks thumb_func_end sub_80A75E4 thumb_func_start sub_80A760C sub_80A760C: @ 80A760C push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 ldr r1, _080A7660 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0x8] subs r1, r0, 0x1 strh r1, [r5, 0x8] lsls r0, 16 cmp r0, 0 bgt _080A76E0 ldr r0, _080A7664 @ =gUnknown_83E3C28 movs r2, 0x1A ldrsh r1, [r5, r2] movs r3, 0x1C ldrsh r2, [r5, r3] ldrb r3, [r5, 0xC] ldrb r4, [r5, 0xA] subs r3, r4 lsls r3, 24 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r12, r0 lsls r0, 4 add r0, r12 lsls r0, 2 ldr r1, _080A7668 @ =gSprites adds r6, r0, r1 movs r1, 0x10 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080A766C cmp r0, 0x2 beq _080A7682 b _080A7690 .align 2, 0 _080A7660: .4byte gTasks _080A7664: .4byte gUnknown_83E3C28 _080A7668: .4byte gSprites _080A766C: ldrb r2, [r6, 0x3] lsls r1, r2, 26 lsrs r1, 27 movs r0, 0x18 orrs r1, r0 lsls r1, 1 subs r0, 0x57 ands r0, r2 orrs r0, r1 strb r0, [r6, 0x3] b _080A7690 _080A7682: ldrb r0, [r6, 0x3] movs r1, 0x3F negs r1, r1 ands r1, r0 movs r0, 0x10 orrs r1, r0 strb r1, [r6, 0x3] _080A7690: ldr r3, _080A76E8 @ =gTasks lsls r2, r7, 2 adds r2, r7 lsls r2, 3 adds r4, r2, r3 ldrh r0, [r4, 0x12] ldrh r1, [r4, 0x14] subs r0, r1 strh r0, [r6, 0x2E] strh r7, [r6, 0x3C] movs r1, 0xA ldrsh r0, [r4, r1] adds r0, 0xD lsls r0, 1 adds r0, r2 adds r3, 0x8 adds r0, r3 mov r2, r12 strh r2, [r0] ldrh r0, [r4, 0xE] strh r0, [r4, 0x8] ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] movs r0, 0x3F negs r0, r0 bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x93 bl PlaySE12WithPanning movs r3, 0xA ldrsh r0, [r4, r3] cmp r0, 0x2 ble _080A76E0 ldr r0, _080A76EC @ =sub_80A75E4 str r0, [r4] _080A76E0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A76E8: .4byte gTasks _080A76EC: .4byte sub_80A75E4 thumb_func_end sub_80A760C thumb_func_start sub_80A76F0 sub_80A76F0: @ 80A76F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 lsls r0, 24 lsrs r7, r0, 24 movs r0, 0 mov r9, r0 movs r5, 0 mov r0, sp mov r1, r9 strh r1, [r0] mov r4, sp adds r4, 0x2 strh r1, [r4] bl IsContest lsls r0, 24 mov r10, r4 cmp r0, 0 beq _080A775C ldr r1, _080A774C @ =gTasks lsls r2, r7, 2 adds r0, r2, r7 lsls r0, 3 adds r0, r1 movs r1, 0x2 strh r1, [r0, 0x10] ldr r3, _080A7750 @ =gBattleAnimArgs ldrh r0, [r3] negs r0, r0 strh r0, [r3] ldrh r1, [r3, 0x4] movs r0, 0x1 ands r0, r1 mov r8, r2 cmp r0, 0 beq _080A7754 movs r0, 0x2 negs r0, r0 ands r0, r1 strh r0, [r3, 0x4] b _080A77B6 .align 2, 0 _080A774C: .4byte gTasks _080A7750: .4byte gBattleAnimArgs _080A7754: movs r0, 0x1 orrs r0, r1 strh r0, [r3, 0x4] b _080A77B6 _080A775C: ldr r1, _080A77A0 @ =gBattlerPositions ldr r0, _080A77A4 @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] movs r3, 0x1 adds r0, r3, 0 ands r0, r1 lsls r2, r7, 2 mov r8, r2 cmp r0, 0 bne _080A77B6 ldr r1, _080A77A8 @ =gTasks adds r0, r2, r7 lsls r0, 3 adds r0, r1 strh r3, [r0, 0x10] ldr r2, _080A77AC @ =gBattleAnimArgs ldrh r0, [r2] negs r0, r0 strh r0, [r2] ldrh r0, [r2, 0x2] negs r0, r0 strh r0, [r2, 0x2] ldrh r1, [r2, 0x4] adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _080A77B0 movs r0, 0x2 negs r0, r0 ands r0, r1 b _080A77B4 .align 2, 0 _080A77A0: .4byte gBattlerPositions _080A77A4: .4byte gBattleAnimTarget _080A77A8: .4byte gTasks _080A77AC: .4byte gBattleAnimArgs _080A77B0: movs r0, 0x1 orrs r0, r1 _080A77B4: strh r0, [r2, 0x4] _080A77B6: ldr r5, _080A7810 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord ldr r1, _080A7814 @ =gTasks mov r3, r8 adds r4, r3, r7 lsls r4, 3 adds r4, r1 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1A] adds r6, r0, 0 ldrb r0, [r5] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] mov r9, r0 ldr r0, _080A7818 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080A7820 ldr r4, _080A781C @ =gBattleAnimTarget ldrb r1, [r4] movs r0, 0x2 eors r0, r1 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7820 ldrb r0, [r4] movs r1, 0 mov r2, sp mov r3, r10 bl SetAverageBattlerPositions b _080A7842 .align 2, 0 _080A7810: .4byte gBattleAnimAttacker _080A7814: .4byte gTasks _080A7818: .4byte gBattleTypeFlags _080A781C: .4byte gBattleAnimTarget _080A7820: mov r5, sp ldr r4, _080A787C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5] ldrb r0, [r4] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r1, r10 strh r0, [r1] _080A7842: mov r4, sp ldr r0, _080A7880 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 mov r2, sp ldr r3, _080A7884 @ =gBattleAnimArgs ldrh r0, [r3] ldrh r2, [r2] adds r0, r2 strh r0, [r1, 0x1E] strh r0, [r4] ldrh r0, [r3, 0x2] mov r3, r10 ldrh r3, [r3] adds r0, r3 strh r0, [r1, 0x20] mov r1, r10 strh r0, [r1] mov r0, sp ldrh r2, [r0] movs r3, 0 ldrsh r0, [r0, r3] adds r1, r6, 0 cmp r0, r1 blt _080A7888 subs r0, r2, r1 b _080A788A .align 2, 0 _080A787C: .4byte gBattleAnimTarget _080A7880: .4byte gTasks _080A7884: .4byte gBattleAnimArgs _080A7888: subs r0, r1, r2 _080A788A: lsls r0, 16 lsrs r0, 16 lsls r4, r0, 16 asrs r4, 16 ldr r5, _080A7900 @ =gBattleAnimArgs ldrh r1, [r5, 0x4] movs r0, 0x2 negs r0, r0 ands r0, r1 lsls r0, 16 asrs r0, 16 bl sub_80D8B90 adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl sub_80D8AA0 ldr r2, _080A7904 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r6, r1, r2 strh r0, [r6, 0x12] movs r1, 0x12 ldrsh r0, [r6, r1] movs r1, 0x80 bl sub_80D8AA0 strh r0, [r6, 0x14] ldrh r0, [r5, 0x4] strh r0, [r6, 0x16] mov r2, r10 ldrh r1, [r2] movs r3, 0 ldrsh r0, [r2, r3] mov r4, r9 cmp r0, r4 blt _080A7908 subs r4, r1, r4 lsls r4, 16 asrs r4, 16 movs r1, 0x12 ldrsh r0, [r6, r1] bl sub_80D8B90 adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl sub_80D8AA0 movs r1, 0x2 negs r1, r1 ands r1, r0 strh r1, [r6, 0x18] b _080A7928 .align 2, 0 _080A7900: .4byte gBattleAnimArgs _080A7904: .4byte gTasks _080A7908: subs r4, r1 lsls r4, 16 asrs r4, 16 movs r2, 0x12 ldrsh r0, [r6, r2] bl sub_80D8B90 adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl sub_80D8AA0 movs r1, 0x1 orrs r0, r1 strh r0, [r6, 0x18] _080A7928: ldr r1, _080A7968 @ =gTasks mov r3, r8 adds r0, r3, r7 lsls r0, 3 adds r5, r0, r1 ldr r4, _080A796C @ =gBattleAnimArgs ldrh r0, [r4, 0x6] strh r0, [r5, 0xE] ldrh r1, [r4, 0x8] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080A7978 movs r0, 0x80 eors r0, r1 strh r0, [r4, 0x8] lsls r0, 16 asrs r0, 16 cmp r0, 0x3F ble _080A79A0 ldr r0, _080A7970 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldr r2, _080A7974 @ =0x0000ffc0 adds r1, r2, 0 ldrh r4, [r4, 0x8] adds r1, r4 adds r0, r1 b _080A79B0 .align 2, 0 _080A7968: .4byte gTasks _080A796C: .4byte gBattleAnimArgs _080A7970: .4byte gBattleAnimTarget _080A7974: .4byte 0x0000ffc0 _080A7978: lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x3F ble _080A79A0 ldr r0, _080A7998 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldr r3, _080A799C @ =0x0000ffc0 adds r1, r3, 0 ldrh r4, [r4, 0x8] adds r1, r4 adds r0, r1 b _080A79B0 .align 2, 0 _080A7998: .4byte gBattleAnimTarget _080A799C: .4byte 0x0000ffc0 _080A79A0: ldr r0, _080A79DC @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x8] subs r0, r1 _080A79B0: strh r0, [r5, 0xC] ldr r0, _080A79E0 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0x2 bgt _080A79C8 movs r0, 0x3 strh r0, [r1, 0xC] _080A79C8: ldr r0, _080A79E4 @ =sub_80A760C str r0, [r1] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A79DC: .4byte gBattleAnimTarget _080A79E0: .4byte gTasks _080A79E4: .4byte sub_80A760C thumb_func_end sub_80A76F0 thumb_func_start sub_80A79E8 sub_80A79E8: @ 80A79E8 push {r4,lr} adds r4, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker ldr r0, _080A7A10 @ =gUnknown_83E3D18 ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 20 movs r1, 0x80 lsls r1, 1 adds r0, r1 strh r0, [r4, 0x2E] ldr r0, _080A7A14 @ =sub_80A7A18 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080A7A10: .4byte gUnknown_83E3D18 _080A7A14: .4byte sub_80A7A18 thumb_func_end sub_80A79E8 thumb_func_start sub_80A7A18 sub_80A7A18: @ 80A7A18 push {r4-r7,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _080A7A7C movs r0, 0 strh r0, [r4, 0x30] ldrh r5, [r4, 0x2E] ldr r1, _080A7A84 @ =gPlttBufferFaded adds r0, r5, 0 adds r0, 0x8 lsls r0, 1 adds r0, r1 ldrh r7, [r0] adds r6, r1, 0 adds r1, r5, 0 adds r1, 0x9 lsls r0, r5, 1 adds r0, r6 adds r2, r0, 0 adds r2, 0x10 movs r3, 0x7 lsls r1, 1 adds r1, r6 _080A7A50: ldrh r0, [r1] strh r0, [r2] adds r1, 0x2 adds r2, 0x2 subs r3, 0x1 cmp r3, 0 bge _080A7A50 adds r0, r5, 0 adds r0, 0xF lsls r0, 1 adds r0, r6 strh r7, [r0] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x18 bne _080A7A7C adds r0, r4, 0 bl DestroyAnimSprite _080A7A7C: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A7A84: .4byte gPlttBufferFaded thumb_func_end sub_80A7A18 thumb_func_start sub_80A7A88 sub_80A7A88: @ 80A7A88 push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r4, _080A7B28 @ =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 ldr r4, _080A7B2C @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4, 0x6] adds r0, r1 lsls r0, 16 lsrs r7, r0, 16 ldr r0, _080A7B30 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A7ACC ldrh r0, [r4, 0x4] negs r0, r0 strh r0, [r4, 0x4] _080A7ACC: lsls r0, r6, 16 asrs r0, 16 ldrh r1, [r4, 0x4] adds r0, r1 lsls r0, 16 ldrh r1, [r5, 0x20] lsrs r6, r0, 16 asrs r0, 16 subs r0, r1 lsls r0, 16 asrs r0, 16 ldrh r2, [r5, 0x22] lsls r1, r7, 16 asrs r1, 16 subs r1, r2 lsls r1, 16 asrs r1, 16 bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 adds r0, r1 lsrs r0, 16 movs r3, 0x80 lsls r3, 1 str r0, [sp] adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 bl TrySetSpriteRotScale ldrh r0, [r4, 0x8] strh r0, [r5, 0x2E] strh r6, [r5, 0x32] strh r7, [r5, 0x36] ldr r0, _080A7B34 @ =sub_80756A4 str r0, [r5, 0x1C] ldr r1, _080A7B38 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A7B28: .4byte gBattleAnimTarget _080A7B2C: .4byte gBattleAnimArgs _080A7B30: .4byte gBattleAnimAttacker _080A7B34: .4byte sub_80756A4 _080A7B38: .4byte DestroyAnimSprite thumb_func_end sub_80A7A88 thumb_func_start sub_80A7B3C sub_80A7B3C: @ 80A7B3C ldr r1, _080A7B4C @ =0x0000fff0 strh r1, [r0, 0x32] ldrh r1, [r0, 0x22] adds r1, 0x8 strh r1, [r0, 0x22] ldr r1, _080A7B50 @ =sub_80A7B54 str r1, [r0, 0x1C] bx lr .align 2, 0 _080A7B4C: .4byte 0x0000fff0 _080A7B50: .4byte sub_80A7B54 thumb_func_end sub_80A7B3C thumb_func_start sub_80A7B54 sub_80A7B54: @ 80A7B54 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x80 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] ldr r0, _080A7BC0 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080A7B78 ldrh r0, [r4, 0x24] negs r0, r0 strh r0, [r4, 0x24] _080A7B78: movs r1, 0x30 ldrsh r0, [r4, r1] movs r2, 0x32 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x5 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x7E ble _080A7BB8 movs r0, 0 strh r0, [r4, 0x30] movs r1, 0x32 ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x32] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _080A7BB8 adds r0, r4, 0 bl DestroyAnimSprite _080A7BB8: pop {r4} pop {r0} bx r0 .align 2, 0 _080A7BC0: .4byte gBattleAnimAttacker thumb_func_end sub_80A7B54 thumb_func_start sub_80A7BC4 sub_80A7BC4: @ 80A7BC4 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker movs r0, 0x14 strh r0, [r4, 0x2E] ldr r5, _080A7C10 @ =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, _080A7C14 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _080A7C18 @ =sub_80A7C1C adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A7C10: .4byte gBattleAnimTarget _080A7C14: .4byte StartAnimLinearTranslation _080A7C18: .4byte sub_80A7C1C thumb_func_end sub_80A7BC4 thumb_func_start sub_80A7C1C sub_80A7C1C: @ 80A7C1C push {r4,lr} adds r4, r0, 0 movs r0, 0x3F bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x9F bl PlaySE12WithPanning ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 movs r1, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] strh r1, [r4, 0x26] strh r1, [r4, 0x24] movs r2, 0 movs r1, 0x7 adds r0, r4, 0 adds r0, 0x3C _080A7C50: strh r2, [r0] subs r0, 0x2 subs r1, 0x1 cmp r1, 0 bge _080A7C50 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x7 ands r0, r1 ldr r2, _080A7C98 @ =0x0000fff4 adds r1, r2, 0 subs r1, r0 strh r1, [r4, 0x3A] bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA0 bl __umodsi3 adds r0, 0xA0 strh r0, [r4, 0x3C] ldr r0, _080A7C9C @ =sub_80A7CA0 str r0, [r4, 0x1C] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] pop {r4} pop {r0} bx r0 .align 2, 0 _080A7C98: .4byte 0x0000fff4 _080A7C9C: .4byte sub_80A7CA0 thumb_func_end sub_80A7C1C thumb_func_start sub_80A7CA0 sub_80A7CA0: @ 80A7CA0 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x3C] ldrh r2, [r4, 0x2E] adds r0, r1, r2 strh r0, [r4, 0x2E] lsls r0, 16 asrs r2, r0, 24 strh r2, [r4, 0x24] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A7CBE negs r0, r2 strh r0, [r4, 0x24] _080A7CBE: movs r1, 0x30 ldrsh r0, [r4, r1] movs r2, 0x3A ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x8 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x7E ble _080A7CFE movs r0, 0 strh r0, [r4, 0x30] movs r1, 0x32 ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x32] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080A7CFE adds r0, r4, 0 bl DestroyAnimSprite _080A7CFE: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A7CA0 thumb_func_start sub_80A7D04 sub_80A7D04: @ 80A7D04 push {r4,lr} adds r4, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker ldr r0, _080A7D54 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080A7D22 ldrh r0, [r4, 0x22] adds r0, 0x10 strh r0, [r4, 0x22] _080A7D22: ldr r1, _080A7D58 @ =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x4] strh r0, [r4, 0x30] ldrh r0, [r1, 0xA] strh r0, [r4, 0x32] ldrh r0, [r1, 0xC] strh r0, [r4, 0x34] ldrh r0, [r1, 0x6] strh r0, [r4, 0x36] ldr r0, _080A7D5C @ =TranslateSpriteInCircleOverDuration str r0, [r4, 0x1C] ldr r1, _080A7D60 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080A7D54: .4byte gBattleAnimAttacker _080A7D58: .4byte gBattleAnimArgs _080A7D5C: .4byte TranslateSpriteInCircleOverDuration _080A7D60: .4byte DestroyAnimSprite thumb_func_end sub_80A7D04 thumb_func_start sub_80A7D64 sub_80A7D64: @ 80A7D64 push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r0, 0 movs r7, 0x20 ldr r4, _080A7DE0 @ =0x0000ffe0 movs r0, 0x10 mov r8, r0 ldr r6, _080A7DE4 @ =0x0000fff0 ldr r0, _080A7DE8 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 beq _080A7D90 adds r7, r4, 0 movs r4, 0x20 mov r8, r6 movs r6, 0x10 adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAnim _080A7D90: lsls r0, r7, 16 asrs r0, 16 ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x20] lsls r0, r4, 16 asrs r0, 16 ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x22] movs r0, 0x6 strh r0, [r5, 0x2E] ldr r4, _080A7DEC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 add r0, r8 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, _080A7DF0 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A7DF4 @ =sub_80A7DF8 adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A7DE0: .4byte 0x0000ffe0 _080A7DE4: .4byte 0x0000fff0 _080A7DE8: .4byte gBattleAnimArgs _080A7DEC: .4byte gBattleAnimTarget _080A7DF0: .4byte StartAnimLinearTranslation _080A7DF4: .4byte sub_80A7DF8 thumb_func_end sub_80A7D64 thumb_func_start sub_80A7DF8 sub_80A7DF8: @ 80A7DF8 push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080A7E0E adds r0, r2, 0 bl DestroyAnimSprite _080A7E0E: pop {r0} bx r0 thumb_func_end sub_80A7DF8 thumb_func_start sub_80A7E14 sub_80A7E14: @ 80A7E14 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r5, r0, 0 movs r0, 0x20 mov r8, r0 ldr r4, _080A7EA8 @ =0x0000ffe0 movs r2, 0x10 mov r9, r2 ldr r6, _080A7EAC @ =0x0000fff0 ldr r7, _080A7EB0 @ =gBattleAnimArgs ldrh r1, [r7] movs r2, 0 ldrsh r0, [r7, r2] cmp r0, 0 beq _080A7E48 mov r8, r4 movs r4, 0x20 mov r9, r6 movs r6, 0x10 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim _080A7E48: mov r0, r8 lsls r1, r0, 16 asrs r1, 16 ldrh r2, [r5, 0x20] adds r1, r2 strh r1, [r5, 0x20] lsls r0, r4, 16 asrs r0, 16 ldrh r2, [r5, 0x22] adds r0, r2 strh r0, [r5, 0x22] movs r0, 0x6 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] ldr r4, _080A7EB4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 add r0, r9 strh r0, [r5, 0x32] ldrh r0, [r5, 0x22] strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x36] adds r0, r5, 0 bl InitAnimLinearTranslation ldrh r0, [r7] strh r0, [r5, 0x38] ldrh r0, [r5, 0x2E] strh r0, [r5, 0x3A] ldr r0, _080A7EB8 @ =sub_80A7EBC str r0, [r5, 0x1C] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A7EA8: .4byte 0x0000ffe0 _080A7EAC: .4byte 0x0000fff0 _080A7EB0: .4byte gBattleAnimArgs _080A7EB4: .4byte gBattleAnimTarget _080A7EB8: .4byte sub_80A7EBC thumb_func_end sub_80A7E14 thumb_func_start sub_80A7EBC sub_80A7EBC: @ 80A7EBC push {r4,lr} adds r4, r0, 0 bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A7F20 adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080A7F20 adds r0, r4, 0 movs r1, 0 bl SeekSpriteAnim adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x40 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 movs r2, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] movs r0, 0x2 strh r0, [r4, 0x24] ldr r0, _080A7F28 @ =0x0000fffe strh r0, [r4, 0x26] ldrh r0, [r4, 0x3A] strh r0, [r4, 0x2E] ldrh r0, [r4, 0x30] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x30] ldrh r0, [r4, 0x32] eors r0, r1 strh r0, [r4, 0x32] strh r2, [r4, 0x36] strh r2, [r4, 0x34] ldr r0, _080A7F2C @ =sub_80A7F30 str r0, [r4, 0x1C] _080A7F20: pop {r4} pop {r0} bx r0 .align 2, 0 _080A7F28: .4byte 0x0000fffe _080A7F2C: .4byte sub_80A7F30 thumb_func_end sub_80A7EBC thumb_func_start sub_80A7F30 sub_80A7F30: @ 80A7F30 push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A7F48 ldrh r0, [r4, 0x24] negs r0, r0 strh r0, [r4, 0x24] ldrh r0, [r4, 0x26] negs r0, r0 strh r0, [r4, 0x26] _080A7F48: ldrh r0, [r4, 0x34] movs r1, 0x1 eors r0, r1 movs r1, 0 strh r0, [r4, 0x34] ldrh r0, [r4, 0x36] adds r0, 0x1 strh r0, [r4, 0x36] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080A7F8A strh r1, [r4, 0x26] strh r1, [r4, 0x24] strh r1, [r4, 0x36] strh r1, [r4, 0x34] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x41 negs r0, r0 ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x38] movs r1, 0x1 eors r1, r0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim ldr r0, _080A7F90 @ =sub_80A7F94 str r0, [r4, 0x1C] _080A7F8A: pop {r4} pop {r0} bx r0 .align 2, 0 _080A7F90: .4byte sub_80A7F94 thumb_func_end sub_80A7F30 thumb_func_start sub_80A7F94 sub_80A7F94: @ 80A7F94 push {r4,lr} adds r4, r0, 0 bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A7FA8 adds r0, r4, 0 bl DestroyAnimSprite _080A7FA8: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A7F94 thumb_func_start sub_80A7FB0 sub_80A7FB0: @ 80A7FB0 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x1 bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 movs r1, 0x1 bl PrepareBattlerSpriteForRotScale adds r0, r4, 0 movs r1, 0xD0 movs r2, 0xD0 movs r3, 0 bl SetSpriteRotScale ldr r1, _080A8008 @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x5] lsrs r0, 4 adds r0, 0x10 movs r1, 0 bl SetGreyscaleOrOriginalPalette ldr r1, _080A800C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r1, 0x50 strh r1, [r0, 0x8] ldr r1, _080A8010 @ =sub_80A8014 str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A8008: .4byte gSprites _080A800C: .4byte gTasks _080A8010: .4byte sub_80A8014 thumb_func_end sub_80A7FB0 thumb_func_start sub_80A8014 sub_80A8014: @ 80A8014 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080A806C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x8] subs r1, 0x1 strh r1, [r0, 0x8] lsls r1, 16 asrs r1, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080A8064 movs r0, 0x1 bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl ResetSpriteRotScale ldr r1, _080A8070 @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x5] lsrs r0, 4 adds r0, 0x10 movs r1, 0x1 bl SetGreyscaleOrOriginalPalette adds r0, r5, 0 bl DestroyAnimVisualTask _080A8064: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A806C: .4byte gTasks _080A8070: .4byte gSprites thumb_func_end sub_80A8014 thumb_func_start sub_80A8074 sub_80A8074: @ 80A8074 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A80C0 @ =gTasks adds r4, r0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0x8] movs r1, 0 bl PrepareBattlerSpriteForRotScale strh r5, [r4, 0xA] strh r5, [r4, 0xC] strh r5, [r4, 0xE] movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x10] strh r5, [r4, 0x12] strh r5, [r4, 0x14] ldr r0, _080A80C4 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x16] ldr r0, _080A80C8 @ =sub_80A80CC str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A80C0: .4byte gTasks _080A80C4: .4byte gBattleAnimAttacker _080A80C8: .4byte sub_80A80CC thumb_func_end sub_80A8074 thumb_func_start sub_80A80CC sub_80A80CC: @ 80A80CC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080A80F0 @ =gTasks adds r4, r0, r1 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x5 bls _080A80E6 b _080A81F6 _080A80E6: lsls r0, 2 ldr r1, _080A80F4 @ =_080A80F8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080A80F0: .4byte gTasks _080A80F4: .4byte _080A80F8 .align 2, 0 _080A80F8: .4byte _080A8110 .4byte _080A8158 .4byte _080A818E .4byte _080A8194 .4byte _080A81A4 .4byte _080A81D8 _080A8110: movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0 beq _080A8120 cmp r0, 0x3 beq _080A8120 cmp r0, 0x6 bne _080A8128 _080A8120: adds r0, r4, 0 adds r1, r5, 0 bl sub_80A8200 _080A8128: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x10] adds r0, 0x28 strh r0, [r4, 0x10] ldrb r0, [r4, 0x8] movs r1, 0x10 ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl SetBattlerSpriteYOffsetFromYScale movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0x20 bne _080A81F6 ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] b _080A81D0 _080A8158: movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 bne _080A81F6 movs r2, 0x12 ldrsh r1, [r4, r2] cmp r1, 0x3 bne _080A816E strh r0, [r4, 0xC] strh r1, [r4, 0xA] b _080A81F6 _080A816E: strh r0, [r4, 0xC] strh r0, [r4, 0xE] movs r2, 0x80 lsls r2, 1 strh r2, [r4, 0x10] ldrb r0, [r4, 0x8] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl SetBattlerSpriteYOffsetFromYScale movs r0, 0x2 strh r0, [r4, 0xA] b _080A81F6 _080A818E: movs r0, 0 strh r0, [r4, 0xA] b _080A81F6 _080A8194: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x20 ble _080A81F6 b _080A81CC _080A81A4: ldrh r0, [r4, 0xC] adds r0, 0x2 strh r0, [r4, 0xC] ldrh r0, [r4, 0x10] subs r0, 0x50 strh r0, [r4, 0x10] ldrb r0, [r4, 0x8] movs r1, 0x10 ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl SetBattlerSpriteYOffsetFromYScale movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0x20 bne _080A81F6 _080A81CC: movs r0, 0 strh r0, [r4, 0xC] _080A81D0: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _080A81F6 _080A81D8: ldrb r0, [r4, 0x8] bl ResetSpriteRotScale ldr r2, _080A81FC @ =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x26] adds r0, r5, 0 bl DestroyAnimVisualTask _080A81F6: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A81FC: .4byte gSprites thumb_func_end sub_80A80CC thumb_func_start sub_80A8200 sub_80A8200: @ 80A8200 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 lsls r1, 24 lsrs r1, 24 mov r9, r1 movs r0, 0 bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r0, 16 mov r8, r0 lsls r0, 16 asrs r4, r0, 16 cmp r4, 0 blt _080A82DA bl AllocOamMatrix lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0xFF bne _080A8244 lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _080A8240 @ =gSprites adds r0, r1 bl obj_delete_but_dont_free_vram b _080A82DA .align 2, 0 _080A8240: .4byte gSprites _080A8244: ldr r5, _080A82E8 @ =gSprites lsls r3, r4, 4 adds r3, r4 lsls r3, 2 adds r4, r3, r5 ldrb r1, [r4, 0x1] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] movs r0, 0x1F ands r6, r0 lsls r2, r6, 1 ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 orrs r0, r2 strb r0, [r4, 0x3] ldrb r0, [r7, 0x16] ldrb r1, [r7, 0xE] subs r0, r1 adds r1, r4, 0 adds r1, 0x43 strb r0, [r1] ldrh r0, [r7, 0xE] adds r0, 0x1 strh r0, [r7, 0xE] ldrh r0, [r7, 0x14] adds r0, 0x1 strh r0, [r7, 0x14] movs r0, 0x10 strh r0, [r4, 0x2E] mov r0, r9 strh r0, [r4, 0x30] movs r0, 0x6 strh r0, [r4, 0x32] adds r5, 0x1C adds r3, r5 ldr r0, _080A82EC @ =sub_80A82F0 str r0, [r3] mov r1, r8 lsls r0, r1, 24 lsrs r0, 24 movs r1, 0x10 ldrsh r2, [r7, r1] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x1] movs r3, 0x4 negs r3, r3 ands r3, r0 movs r0, 0x1 orrs r3, r0 strb r3, [r4, 0x1] lsrs r1, r3, 6 ldrb r2, [r4, 0x3] lsrs r2, 6 lsls r3, 30 lsrs r3, 30 adds r0, r4, 0 bl CalcCenterToCornerVec _080A82DA: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A82E8: .4byte gSprites _080A82EC: .4byte sub_80A82F0 thumb_func_end sub_80A8200 thumb_func_start sub_80A82F0 sub_80A82F0: @ 80A82F0 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] subs r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 cmp r0, 0 bne _080A832E ldr r3, _080A8334 @ =gTasks movs r0, 0x32 ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x30 ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl obj_delete_but_dont_free_vram _080A832E: pop {r4} pop {r0} bx r0 .align 2, 0 _080A8334: .4byte gTasks thumb_func_end sub_80A82F0 thumb_func_start sub_80A8338 sub_80A8338: @ 80A8338 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080A835C @ =gTasks adds r4, r0, r1 ldr r5, _080A8360 @ =gBattleAnimArgs movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0 bne _080A8364 adds r0, r2, 0 bl DestroyAnimVisualTask b _080A838A .align 2, 0 _080A835C: .4byte gTasks _080A8360: .4byte gBattleAnimArgs _080A8364: ldrb r0, [r5] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r2, 0 strh r1, [r4, 0x8] strh r2, [r4, 0xA] ldrh r0, [r5, 0x2] strh r0, [r4, 0xC] strh r2, [r4, 0xE] strh r2, [r4, 0x10] ldr r2, _080A8390 @ =gUnknown_83E3E60 adds r0, r4, 0 bl PrepareAffineAnimInTaskData ldr r0, _080A8394 @ =sub_80A8398 str r0, [r4] _080A838A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A8390: .4byte gUnknown_83E3E60 _080A8394: .4byte sub_80A8398 thumb_func_end sub_80A8338 thumb_func_start sub_80A8398 sub_80A8398: @ 80A8398 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _080A83BC @ =gTasks adds r4, r0, r1 movs r0, 0xA ldrsh r5, [r4, r0] cmp r5, 0x1 beq _080A8400 cmp r5, 0x1 bgt _080A83C0 cmp r5, 0 beq _080A83CA b _080A84A8 .align 2, 0 _080A83BC: .4byte gTasks _080A83C0: cmp r5, 0x2 beq _080A8434 cmp r5, 0x3 beq _080A8464 b _080A84A8 _080A83CA: adds r0, r4, 0 bl RunAffineAnimFromTaskData ldrh r2, [r4, 0x10] adds r2, 0x3 strh r2, [r4, 0x10] ldr r3, _080A83FC @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r1, [r0, 0x26] adds r1, r2 strh r1, [r0, 0x26] ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _080A84A8 strh r5, [r4, 0xE] b _080A845C .align 2, 0 _080A83FC: .4byte gSprites _080A8400: adds r0, r4, 0 bl RunAffineAnimFromTaskData ldr r2, _080A8430 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0x10] ldrh r2, [r0, 0x26] adds r1, r2 strh r1, [r0, 0x26] ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _080A84A8 movs r0, 0 strh r0, [r4, 0xE] b _080A845C .align 2, 0 _080A8430: .4byte gSprites _080A8434: movs r1, 0x10 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A845C ldr r2, _080A8458 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x26] subs r1, 0x2 strh r1, [r0, 0x26] ldrh r0, [r4, 0x10] subs r0, 0x2 strh r0, [r4, 0x10] b _080A84A8 .align 2, 0 _080A8458: .4byte gSprites _080A845C: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _080A84A8 _080A8464: adds r0, r4, 0 bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _080A84A8 ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _080A849C ldr r2, _080A8498 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r5, [r0, 0x26] adds r0, r6, 0 bl DestroyAnimVisualTask b _080A84A8 .align 2, 0 _080A8498: .4byte gSprites _080A849C: ldrb r1, [r4, 0x8] ldr r2, _080A84B0 @ =gUnknown_83E3E60 adds r0, r4, 0 bl PrepareAffineAnimInTaskData strh r5, [r4, 0xA] _080A84A8: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A84B0: .4byte gUnknown_83E3E60 thumb_func_end sub_80A8398 thumb_func_start sub_80A84B4 sub_80A84B4: @ 80A84B4 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A84E4 @ =gTasks adds r4, r0 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A84E8 @ =gUnknown_83E3E80 adds r0, r4, 0 bl PrepareAffineAnimInTaskData ldr r0, _080A84EC @ =sub_80A84F0 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A84E4: .4byte gTasks _080A84E8: .4byte gUnknown_83E3E80 _080A84EC: .4byte sub_80A84F0 thumb_func_end sub_80A84B4 thumb_func_start sub_80A84F0 sub_80A84F0: @ 80A84F0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080A8518 @ =gTasks adds r0, r1 bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080A8510 adds r0, r4, 0 bl DestroyAnimVisualTask _080A8510: pop {r4} pop {r0} bx r0 .align 2, 0 _080A8518: .4byte gTasks thumb_func_end sub_80A84F0 thumb_func_start sub_80A851C sub_80A851C: @ 80A851C push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080A854C @ =gBattleAnimAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080A8550 adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 strh r0, [r4, 0x20] movs r0, 0x40 b _080A856A .align 2, 0 _080A854C: .4byte gBattleAnimAttacker _080A8550: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x20 strh r0, [r4, 0x20] ldr r0, _080A859C @ =0x0000ffc0 _080A856A: strh r0, [r4, 0x30] ldr r0, _080A85A0 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r1, 0 strh r0, [r4, 0x22] movs r0, 0x34 strh r0, [r4, 0x2E] strh r1, [r4, 0x32] strh r1, [r4, 0x34] strh r1, [r4, 0x36] ldr r1, _080A85A4 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, _080A85A8 @ =TranslateSpriteLinearFixedPoint str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A859C: .4byte 0x0000ffc0 _080A85A0: .4byte gBattleAnimAttacker _080A85A4: .4byte DestroyAnimSprite _080A85A8: .4byte TranslateSpriteLinearFixedPoint thumb_func_end sub_80A851C thumb_func_start sub_80A85AC sub_80A85AC: @ 80A85AC push {r4-r6,lr} adds r6, r0, 0 ldr r0, _080A85C0 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080A85C8 ldr r0, _080A85C4 @ =gBattleAnimAttacker b _080A85CA .align 2, 0 _080A85C0: .4byte gBattleAnimArgs _080A85C4: .4byte gBattleAnimAttacker _080A85C8: ldr r0, _080A8628 @ =gBattleAnimTarget _080A85CA: ldrb r5, [r0] adds r0, r5, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A85E4 ldr r1, _080A862C @ =gBattleAnimArgs movs r2, 0x2 ldrsh r0, [r1, r2] negs r0, r0 strh r0, [r1, 0x2] _080A85E4: adds r0, r5, 0 movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A862C @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 strh r0, [r6, 0x20] adds r0, r5, 0 movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x4] adds r0, r4 strh r0, [r6, 0x22] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 bgt _080A8616 movs r0, 0x8 strh r0, [r6, 0x22] _080A8616: ldr r1, _080A8630 @ =DestroySpriteAndMatrix adds r0, r6, 0 bl StoreSpriteCallbackInData6 ldr r0, _080A8634 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r6, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A8628: .4byte gBattleAnimTarget _080A862C: .4byte gBattleAnimArgs _080A8630: .4byte DestroySpriteAndMatrix _080A8634: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80A85AC thumb_func_start sub_80A8638 sub_80A8638: @ 80A8638 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A866C @ =gTasks adds r4, r0 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0 strh r1, [r4, 0x8] strh r0, [r4, 0xA] ldr r2, _080A8670 @ =gUnknown_83E3F1C adds r0, r4, 0 bl PrepareAffineAnimInTaskData ldr r0, _080A8674 @ =sub_80A8678 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A866C: .4byte gTasks _080A8670: .4byte gUnknown_83E3F1C _080A8674: .4byte sub_80A8678 thumb_func_end sub_80A8638 thumb_func_start sub_80A8678 sub_80A8678: @ 80A8678 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080A86A0 @ =gTasks adds r0, r1 bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080A8698 adds r0, r4, 0 bl DestroyAnimVisualTask _080A8698: pop {r4} pop {r0} bx r0 .align 2, 0 _080A86A0: .4byte gTasks thumb_func_end sub_80A8678 thumb_func_start sub_80A86A4 sub_80A86A4: @ 80A86A4 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080A8718 @ =gTasks adds r4, r1, r0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r2, 0 strh r0, [r4, 0x8] strh r2, [r4, 0xA] movs r0, 0x4 strh r0, [r4, 0xC] movs r0, 0x7 strh r0, [r4, 0xE] movs r0, 0x3 strh r0, [r4, 0x10] ldr r3, _080A871C @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x20] strh r0, [r4, 0x12] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x22] strh r0, [r4, 0x14] strh r2, [r4, 0x16] strh r2, [r4, 0x18] movs r0, 0x2 strh r0, [r4, 0x1A] ldr r0, _080A8720 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A870E movs r1, 0xC ldrsh r0, [r4, r1] negs r0, r0 strh r0, [r4, 0xC] _080A870E: ldr r0, _080A8724 @ =sub_80A8728 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A8718: .4byte gTasks _080A871C: .4byte gSprites _080A8720: .4byte gBattleAnimAttacker _080A8724: .4byte sub_80A8728 thumb_func_end sub_80A86A4 thumb_func_start sub_80A8728 sub_80A8728: @ 80A8728 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080A8770 @ =gTasks adds r3, r0, r1 ldrh r0, [r3, 0x16] adds r0, 0x1 strh r0, [r3, 0x16] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080A878E movs r0, 0 strh r0, [r3, 0x16] ldrh r0, [r3, 0x18] adds r0, 0x1 strh r0, [r3, 0x18] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080A8778 ldr r2, _080A8774 @ =gSprites movs r0, 0x8 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0x1A] ldrh r2, [r0, 0x22] adds r1, r2 b _080A878C .align 2, 0 _080A8770: .4byte gTasks _080A8774: .4byte gSprites _080A8778: ldr r2, _080A87A0 @ =gSprites movs r5, 0x8 ldrsh r1, [r3, r5] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x22] ldrh r2, [r3, 0x1A] subs r1, r2 _080A878C: strh r1, [r0, 0x22] _080A878E: movs r1, 0xA ldrsh r0, [r3, r1] cmp r0, 0x1 beq _080A87DC cmp r0, 0x1 bgt _080A87A4 cmp r0, 0 beq _080A87AA b _080A886C .align 2, 0 _080A87A0: .4byte gSprites _080A87A4: cmp r0, 0x2 beq _080A880C b _080A886C _080A87AA: ldr r2, _080A87D8 @ =gSprites movs r5, 0x8 ldrsh r1, [r3, r5] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0xC] ldrh r2, [r0, 0x20] adds r1, r2 strh r1, [r0, 0x20] ldrh r0, [r3, 0xE] subs r0, 0x1 strh r0, [r3, 0xE] lsls r0, 16 cmp r0, 0 bne _080A886C movs r0, 0xE strh r0, [r3, 0xE] movs r0, 0x1 strh r0, [r3, 0xA] b _080A886C .align 2, 0 _080A87D8: .4byte gSprites _080A87DC: ldr r2, _080A8808 @ =gSprites movs r5, 0x8 ldrsh r1, [r3, r5] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x20] ldrh r2, [r3, 0xC] subs r1, r2 strh r1, [r0, 0x20] ldrh r0, [r3, 0xE] subs r0, 0x1 strh r0, [r3, 0xE] lsls r0, 16 cmp r0, 0 bne _080A886C movs r0, 0x7 strh r0, [r3, 0xE] movs r0, 0x2 strh r0, [r3, 0xA] b _080A886C .align 2, 0 _080A8808: .4byte gSprites _080A880C: ldr r2, _080A8844 @ =gSprites movs r0, 0x8 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0xC] ldrh r5, [r0, 0x20] adds r1, r5 strh r1, [r0, 0x20] ldrh r0, [r3, 0xE] subs r0, 0x1 strh r0, [r3, 0xE] lsls r0, 16 asrs r1, r0, 16 cmp r1, 0 bne _080A886C ldrh r0, [r3, 0x10] subs r0, 0x1 strh r0, [r3, 0x10] lsls r0, 16 cmp r0, 0 beq _080A8848 movs r0, 0x7 strh r0, [r3, 0xE] strh r1, [r3, 0xA] b _080A886C .align 2, 0 _080A8844: .4byte gSprites _080A8848: ldrh r1, [r3, 0x18] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A8866 movs r0, 0x8 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x22] ldrh r2, [r3, 0x1A] subs r1, r2 strh r1, [r0, 0x22] _080A8866: adds r0, r4, 0 bl DestroyAnimVisualTask _080A886C: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A8728 thumb_func_start sub_80A8874 sub_80A8874: @ 80A8874 push {r4-r6,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080A88C4 @ =gTasks adds r5, r1, r0 ldr r4, _080A88C8 @ =gBattleAnimTarget ldrb r0, [r4] bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x20 movs r1, 0 strh r0, [r5, 0x8] movs r0, 0x4 strh r0, [r5, 0xA] strh r1, [r5, 0xC] strh r1, [r5, 0xE] strh r1, [r5, 0x10] strh r1, [r5, 0x12] ldrb r0, [r4] bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x26] ldrb r0, [r4] bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A88D4 ldr r0, _080A88CC @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, _080A88D0 @ =0x04000014 b _080A88DC .align 2, 0 _080A88C4: .4byte gTasks _080A88C8: .4byte gBattleAnimTarget _080A88CC: .4byte gBattle_BG1_X _080A88D0: .4byte 0x04000014 _080A88D4: ldr r0, _080A8940 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, _080A8944 @ =0x04000018 _080A88DC: str r0, [sp] ldrh r0, [r5, 0x8] adds r1, r0, 0 subs r1, 0x40 lsls r2, r1, 16 lsls r0, 16 cmp r2, r0 bgt _080A891A ldr r4, _080A8948 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 _080A88F4: asrs r3, r2, 16 cmp r3, 0 blt _080A890C lsls r1, r3, 1 adds r2, r1, r4 ldrh r0, [r5, 0x14] adds r0, 0xF0 strh r0, [r2] adds r1, r6 ldrh r0, [r5, 0x14] adds r0, 0xF0 strh r0, [r1] _080A890C: adds r0, r3, 0x1 lsls r2, r0, 16 asrs r1, r2, 16 movs r3, 0x8 ldrsh r0, [r5, r3] cmp r1, r0 ble _080A88F4 _080A891A: ldr r0, _080A894C @ =0xa2600001 str r0, [sp, 0x4] mov r1, sp movs r2, 0 movs r0, 0x1 strb r0, [r1, 0x8] mov r0, sp strb r2, [r0, 0x9] ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] bl ScanlineEffect_SetParams ldr r0, _080A8950 @ =sub_80A8954 str r0, [r5] add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A8940: .4byte gBattle_BG2_X _080A8944: .4byte 0x04000018 _080A8948: .4byte gScanlineEffectRegBuffers _080A894C: .4byte 0xa2600001 _080A8950: .4byte sub_80A8954 thumb_func_end sub_80A8874 thumb_func_start sub_80A8954 sub_80A8954: @ 80A8954 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080A8974 @ =gTasks adds r3, r0, r1 movs r1, 0x10 ldrsh r0, [r3, r1] cmp r0, 0 beq _080A8978 cmp r0, 0x1 beq _080A898E b _080A8A0E .align 2, 0 _080A8974: .4byte gTasks _080A8978: ldrh r0, [r3, 0x12] adds r0, 0x1 strh r0, [r3, 0x12] lsls r0, 16 asrs r0, 16 cmp r0, 0x14 ble _080A8A0E ldrh r0, [r3, 0x10] adds r0, 0x1 strh r0, [r3, 0x10] b _080A8A0E _080A898E: ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 ble _080A8A0E movs r0, 0 strh r0, [r3, 0xA] ldrh r1, [r3, 0xE] movs r0, 0x3 ands r0, r1 strh r0, [r3, 0xC] ldrh r0, [r3, 0x8] subs r0, r1 strh r0, [r3, 0x12] movs r2, 0xC ldrsh r1, [r3, r2] cmp r1, 0x1 beq _080A89C4 cmp r1, 0x1 ble _080A89CC cmp r1, 0x2 beq _080A89C8 cmp r1, 0x3 beq _080A89C8 b _080A89CC _080A89C4: subs r0, 0x2 b _080A89CA _080A89C8: adds r0, 0x1 _080A89CA: strh r0, [r3, 0x12] _080A89CC: movs r1, 0x12 ldrsh r0, [r3, r1] cmp r0, 0 blt _080A89F0 ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers lsls r0, 1 adds r0, r2 ldrh r1, [r3, 0x14] strh r1, [r0] movs r1, 0x12 ldrsh r0, [r3, r1] lsls r0, 1 movs r1, 0xF0 lsls r1, 3 adds r2, r1 adds r0, r2 ldrh r1, [r3, 0x14] strh r1, [r0] _080A89F0: ldrh r0, [r3, 0xE] adds r0, 0x1 strh r0, [r3, 0xE] lsls r0, 16 asrs r0, 16 movs r2, 0x26 ldrsh r1, [r3, r2] cmp r0, r1 blt _080A8A0E ldr r1, _080A8A18 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] adds r0, r4, 0 bl DestroyAnimVisualTask _080A8A0E: pop {r4} pop {r0} bx r0 .align 2, 0 _080A8A14: .4byte gScanlineEffectRegBuffers _080A8A18: .4byte gScanlineEffect thumb_func_end sub_80A8954 thumb_func_start sub_80A8A1C sub_80A8A1C: @ 80A8A1C push {r4-r6,lr} adds r4, r0, 0 ldr r6, _080A8A70 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 movs r5, 0 strh r0, [r4, 0x20] ldrb r0, [r6] bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x10 strh r0, [r4, 0x22] strh r5, [r4, 0x2E] strh r5, [r4, 0x30] strh r5, [r4, 0x32] movs r0, 0x10 strh r0, [r4, 0x34] strh r5, [r4, 0x36] ldrb r0, [r6] movs r1, 0 bl GetBattlerSpriteCoordAttr adds r0, 0x2 strh r0, [r4, 0x38] movs r0, 0x3F bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x3A] ldr r0, _080A8A74 @ =sub_80A8A78 str r0, [r4, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A8A70: .4byte gBattleAnimTarget _080A8A74: .4byte sub_80A8A78 thumb_func_end sub_80A8A1C thumb_func_start sub_80A8A78 sub_80A8A78: @ 80A8A78 push {r4,lr} adds r4, r0, 0 movs r0, 0x2E ldrsh r1, [r4, r0] cmp r1, 0x1 beq _080A8ADC cmp r1, 0x1 bgt _080A8A8E cmp r1, 0 beq _080A8A94 b _080A8BBC _080A8A8E: cmp r1, 0x2 beq _080A8B6E b _080A8BBC _080A8A94: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080A8ABE strh r1, [r4, 0x32] adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsrs r1, r2, 2 movs r0, 0x1 eors r1, r0 ands r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080A8ABE: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _080A8BBC adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] b _080A8B66 _080A8ADC: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 ble _080A8B22 ldrh r2, [r4, 0x32] movs r3, 0x32 ldrsh r1, [r4, r3] movs r3, 0x38 ldrsh r0, [r4, r3] cmp r1, r0 bge _080A8B22 movs r0, 0 strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] subs r0, 0x1 strh r0, [r4, 0x22] adds r0, r2, 0x1 strh r0, [r4, 0x32] movs r1, 0x32 ldrsh r0, [r4, r1] movs r1, 0xA bl __modsi3 lsls r0, 16 cmp r0, 0 bne _080A8B22 ldrh r1, [r4, 0x3A] lsls r1, 24 asrs r1, 24 movs r0, 0xC6 bl PlaySE12WithPanning _080A8B22: ldrh r0, [r4, 0x34] ldrh r2, [r4, 0x36] adds r1, r0, r2 strh r1, [r4, 0x36] lsls r0, r1, 16 asrs r2, r0, 16 cmp r2, 0x1F ble _080A8B36 movs r0, 0x40 b _080A8B44 _080A8B36: movs r0, 0x20 negs r0, r0 cmp r2, r0 bgt _080A8B50 movs r2, 0x40 negs r2, r2 adds r0, r2, 0 _080A8B44: subs r0, r1 strh r0, [r4, 0x36] movs r3, 0x34 ldrsh r0, [r4, r3] negs r0, r0 strh r0, [r4, 0x34] _080A8B50: ldrh r0, [r4, 0x36] movs r2, 0 strh r0, [r4, 0x24] movs r0, 0x38 ldrsh r1, [r4, r0] movs r3, 0x32 ldrsh r0, [r4, r3] cmp r1, r0 bne _080A8BBC strh r2, [r4, 0x30] strh r2, [r4, 0x32] _080A8B66: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080A8BBC _080A8B6E: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080A8B9A movs r0, 0 strh r0, [r4, 0x32] adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsrs r1, r2, 2 movs r0, 0x1 eors r1, r0 ands r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080A8B9A: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _080A8BBC adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] adds r0, r4, 0 bl DestroyAnimSprite _080A8BBC: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A8A78 thumb_func_start sub_80A8BC4 sub_80A8BC4: @ 80A8BC4 push {r4-r7,lr} sub sp, 0x4 adds r6, r0, 0 movs r5, 0 mov r0, sp strh r5, [r0] mov r1, sp adds r1, 0x2 strh r5, [r1] ldr r0, _080A8BE8 @ =gBattleAnimArgs movs r3, 0x4 ldrsh r2, [r0, r3] adds r7, r1, 0 adds r1, r0, 0 cmp r2, 0 bne _080A8BF0 ldr r0, _080A8BEC @ =gBattleAnimAttacker b _080A8BF2 .align 2, 0 _080A8BE8: .4byte gBattleAnimArgs _080A8BEC: .4byte gBattleAnimAttacker _080A8BF0: ldr r0, _080A8C2C @ =gBattleAnimTarget _080A8BF2: ldrb r5, [r0] ldrb r1, [r1, 0x6] movs r0, 0x1 adds r4, r0, 0 eors r4, r1 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A8C6A movs r1, 0x2 adds r0, r5, 0 eors r0, r1 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8C6A adds r0, r5, 0 adds r1, r4, 0 mov r2, sp adds r3, r7, 0 bl SetAverageBattlerPositions cmp r4, 0 bne _080A8C30 adds r0, r5, 0 movs r1, 0 b _080A8C34 .align 2, 0 _080A8C2C: .4byte gBattleAnimTarget _080A8C30: adds r0, r5, 0 movs r1, 0x2 _080A8C34: bl GetBattlerSpriteCoord lsls r0, 24 lsrs r4, r0, 24 adds r0, r5, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A8C60 ldr r2, _080A8C5C @ =gBattleAnimArgs mov r0, sp ldrh r1, [r0] subs r1, r4 ldrh r0, [r2] subs r1, r0 subs r0, r1 strh r0, [r2] b _080A8C6A .align 2, 0 _080A8C5C: .4byte gBattleAnimArgs _080A8C60: ldr r1, _080A8C7C @ =gBattleAnimArgs mov r0, sp ldrh r0, [r0] subs r0, r4 strh r0, [r1] _080A8C6A: ldr r1, _080A8C80 @ =sub_8075D9C str r1, [r6, 0x1C] adds r0, r6, 0 bl _call_via_r1 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A8C7C: .4byte gBattleAnimArgs _080A8C80: .4byte sub_8075D9C thumb_func_end sub_80A8BC4 thumb_func_start sub_80A8C84 sub_80A8C84: @ 80A8C84 push {r4,lr} adds r4, r0, 0 bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A8C9E adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroyAnimSprite _080A8C9E: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A8C84 thumb_func_start sub_80A8CA4 sub_80A8CA4: @ 80A8CA4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 adds r5, r0, 0 movs r6, 0 mov r0, sp strh r6, [r0] mov r1, sp adds r1, 0x2 strh r6, [r1] ldr r0, _080A8CD0 @ =gBattleAnimArgs movs r2, 0xA ldrsh r0, [r0, r2] cmp r0, 0 bne _080A8CDC ldr r0, _080A8CD4 @ =gBattleAnimAttacker ldrb r7, [r0] ldr r0, _080A8CD8 @ =gBattleAnimTarget b _080A8CE2 .align 2, 0 _080A8CD0: .4byte gBattleAnimArgs _080A8CD4: .4byte gBattleAnimAttacker _080A8CD8: .4byte gBattleAnimTarget _080A8CDC: ldr r0, _080A8CFC @ =gBattleAnimTarget ldrb r7, [r0] ldr r0, _080A8D00 @ =gBattleAnimAttacker _080A8CE2: ldrb r0, [r0] mov r8, r0 ldr r0, _080A8D04 @ =gBattleAnimArgs movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0 bne _080A8D08 movs r0, 0 mov r10, r0 movs r1, 0x1 str r1, [sp, 0x4] b _080A8D10 .align 2, 0 _080A8CFC: .4byte gBattleAnimTarget _080A8D00: .4byte gBattleAnimAttacker _080A8D04: .4byte gBattleAnimArgs _080A8D08: movs r2, 0x2 mov r10, r2 movs r3, 0x3 str r3, [sp, 0x4] _080A8D10: adds r0, r7, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A8D6C adds r0, r7, 0 mov r1, r10 bl GetBattlerSpriteCoord lsls r0, 24 ldr r1, _080A8D50 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r1] adds r0, r1 lsls r0, 16 lsrs r0, 16 mov r9, r0 movs r0, 0x2 mov r4, r8 eors r4, r0 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8D5C ldr r2, _080A8D54 @ =gSprites ldr r0, _080A8D58 @ =gBattlerSpriteIds adds r0, r4, r0 b _080A8DEA .align 2, 0 _080A8D50: .4byte gBattleAnimArgs _080A8D54: .4byte gSprites _080A8D58: .4byte gBattlerSpriteIds _080A8D5C: ldr r2, _080A8D64 @ =gSprites ldr r0, _080A8D68 @ =gBattlerSpriteIds add r0, r8 b _080A8DEA .align 2, 0 _080A8D64: .4byte gSprites _080A8D68: .4byte gBattlerSpriteIds _080A8D6C: adds r0, r7, 0 mov r1, r10 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r1, _080A8DD4 @ =gBattleAnimArgs ldrh r1, [r1] subs r0, r1 lsls r0, 16 lsrs r0, 16 mov r9, r0 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A8DE4 movs r0, 0x2 adds r4, r7, 0 eors r4, r0 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8DE4 ldr r3, _080A8DD8 @ =gSprites ldr r2, _080A8DDC @ =gBattlerSpriteIds adds r0, r7, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r6, r0, r3 adds r2, r4, r2 ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, r0, r3 movs r0, 0x20 ldrsh r1, [r6, r0] movs r3, 0x20 ldrsh r0, [r2, r3] cmp r1, r0 bge _080A8DE0 adds r0, r2, 0 adds r0, 0x43 ldrb r0, [r0] adds r0, 0x1 b _080A8DFA .align 2, 0 _080A8DD4: .4byte gBattleAnimArgs _080A8DD8: .4byte gSprites _080A8DDC: .4byte gBattlerSpriteIds _080A8DE0: adds r0, r6, 0 b _080A8DF4 _080A8DE4: ldr r2, _080A8E40 @ =gSprites ldr r0, _080A8E44 @ =gBattlerSpriteIds adds r0, r7, r0 _080A8DEA: ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 _080A8DF4: adds r0, 0x43 ldrb r0, [r0] subs r0, 0x1 _080A8DFA: adds r1, r5, 0 adds r1, 0x43 strb r0, [r1] adds r0, r7, 0 ldr r1, [sp, 0x4] bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A8E48 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 lsls r0, 16 lsrs r6, r0, 16 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A8E4C movs r1, 0x2 mov r0, r8 eors r0, r1 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8E4C ldrb r1, [r4, 0xC] mov r0, r8 mov r2, sp mov r3, sp adds r3, 0x2 bl SetAverageBattlerPositions b _080A8E6C .align 2, 0 _080A8E40: .4byte gSprites _080A8E44: .4byte gBattlerSpriteIds _080A8E48: .4byte gBattleAnimArgs _080A8E4C: mov r4, sp mov r0, r8 mov r1, r10 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4] mov r0, r8 ldr r1, [sp, 0x4] bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r2, sp strh r0, [r2, 0x2] _080A8E6C: mov r0, r8 bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A8E90 mov r3, sp mov r2, sp ldr r1, _080A8E8C @ =gBattleAnimArgs ldrh r0, [r1, 0x6] ldrh r2, [r2] adds r0, r2 strh r0, [r3] adds r2, r1, 0 b _080A8E9E .align 2, 0 _080A8E8C: .4byte gBattleAnimArgs _080A8E90: mov r3, sp mov r0, sp ldr r2, _080A8EE0 @ =gBattleAnimArgs ldrh r0, [r0] ldrh r1, [r2, 0x6] subs r0, r1 strh r0, [r3] _080A8E9E: ldrh r1, [r2, 0x8] mov r3, sp ldrh r3, [r3, 0x2] adds r1, r3 mov r0, sp strh r1, [r0, 0x2] mov r3, r9 strh r3, [r5, 0x30] strh r3, [r5, 0x20] strh r6, [r5, 0x34] strh r6, [r5, 0x22] ldrh r0, [r0] strh r0, [r5, 0x32] strh r1, [r5, 0x36] ldrh r0, [r2] strh r0, [r5, 0x2E] adds r0, r5, 0 bl InitAnimLinearTranslation ldr r1, _080A8EE4 @ =sub_80A8C84 str r1, [r5, 0x1C] adds r0, r5, 0 bl _call_via_r1 add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A8EE0: .4byte gBattleAnimArgs _080A8EE4: .4byte sub_80A8C84 thumb_func_end sub_80A8CA4 thumb_func_start sub_80A8EE8 sub_80A8EE8: @ 80A8EE8 push {r4,lr} adds r4, r0, 0 ldr r0, _080A8F28 @ =0x000027db bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _080A8F0E lsls r0, 20 ldr r1, _080A8F2C @ =0x01010000 adds r0, r1 lsrs r0, 16 ldr r1, _080A8F30 @ =gBattleAnimArgs ldrb r2, [r1, 0xA] ldrh r3, [r1, 0x8] movs r1, 0xF bl BlendPalette _080A8F0E: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r1, _080A8F34 @ =sub_8075D9C str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080A8F28: .4byte 0x000027db _080A8F2C: .4byte 0x01010000 _080A8F30: .4byte gBattleAnimArgs _080A8F34: .4byte sub_8075D9C thumb_func_end sub_80A8EE8 thumb_func_start sub_80A8F38 sub_80A8F38: @ 80A8F38 push {r4,lr} adds r4, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker ldr r0, _080A8F6C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 movs r1, 0xA0 cmp r0, 0 beq _080A8F54 ldr r1, _080A8F70 @ =0x0000ff60 _080A8F54: movs r0, 0xE0 lsls r0, 2 strh r0, [r4, 0x2E] strh r1, [r4, 0x30] ldr r0, _080A8F74 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x3C] ldr r0, _080A8F78 @ =sub_80A8F7C str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080A8F6C: .4byte gBattleAnimAttacker _080A8F70: .4byte 0x0000ff60 _080A8F74: .4byte gBattleAnimArgs _080A8F78: .4byte sub_80A8F7C thumb_func_end sub_80A8F38 thumb_func_start sub_80A8F7C sub_80A8F7C: @ 80A8F7C push {r4,r5,lr} adds r4, r0, 0 ldrh r2, [r4, 0x2E] lsls r0, r2, 16 asrs r0, 24 ldrh r1, [r4, 0x26] subs r1, r0 movs r5, 0 strh r1, [r4, 0x26] ldrh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] subs r2, 0x20 strh r2, [r4, 0x2E] ldr r0, _080A8FE8 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 movs r1, 0xA0 cmp r0, 0 beq _080A8FAC ldr r1, _080A8FEC @ =0x0000ff60 _080A8FAC: lsls r0, r1, 16 asrs r0, 16 ldrh r1, [r4, 0x30] adds r0, r1 strh r0, [r4, 0x30] ldrh r1, [r4, 0x26] movs r2, 0x26 ldrsh r0, [r4, r2] cmp r0, 0 ble _080A8FE0 ldrh r2, [r4, 0x22] adds r0, r1, r2 strh r0, [r4, 0x22] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] strh r5, [r4, 0x26] strh r5, [r4, 0x24] strh r5, [r4, 0x2E] adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r0, _080A8FF0 @ =sub_80A8FF4 str r0, [r4, 0x1C] _080A8FE0: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A8FE8: .4byte gBattleAnimAttacker _080A8FEC: .4byte 0x0000ff60 _080A8FF0: .4byte sub_80A8FF4 thumb_func_end sub_80A8F7C thumb_func_start sub_80A8FF4 sub_80A8FF4: @ 80A8FF4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r1, r0, 0x1 strh r1, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x13 ble _080A9012 adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAffineAnim ldr r0, _080A9018 @ =sub_80A901C str r0, [r4, 0x1C] _080A9012: pop {r4} pop {r0} bx r0 .align 2, 0 _080A9018: .4byte sub_80A901C thumb_func_end sub_80A8FF4 thumb_func_start sub_80A901C sub_80A901C: @ 80A901C push {r4,lr} adds r4, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080A9082 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim movs r0, 0 strh r0, [r4, 0x2E] movs r1, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 bne _080A9068 ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x10 ldr r3, _080A905C @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080A9060 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] ldr r0, _080A9064 @ =sub_80A9094 b _080A9080 .align 2, 0 _080A905C: .4byte 0x000003ff _080A9060: .4byte 0xfffffc00 _080A9064: .4byte sub_80A9094 _080A9068: ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x20 ldr r3, _080A9088 @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080A908C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] ldr r0, _080A9090 @ =sub_80A911C _080A9080: str r0, [r4, 0x1C] _080A9082: pop {r4} pop {r0} bx r0 .align 2, 0 _080A9088: .4byte 0x000003ff _080A908C: .4byte 0xfffffc00 _080A9090: .4byte sub_80A911C thumb_func_end sub_80A901C thumb_func_start sub_80A9094 sub_80A9094: @ 80A9094 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x26] subs r0, 0x2 strh r0, [r4, 0x26] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 bne _080A90CA movs r0, 0x10 strh r0, [r4, 0x2E] movs r0, 0 strh r0, [r4, 0x30] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldrh r1, [r4, 0x2E] movs r0, 0x52 bl SetGpuReg ldr r0, _080A90D0 @ =sub_80A90D4 str r0, [r4, 0x1C] _080A90CA: pop {r4} pop {r0} bx r0 .align 2, 0 _080A90D0: .4byte sub_80A90D4 thumb_func_end sub_80A9094 thumb_func_start sub_80A90D4 sub_80A90D4: @ 80A90D4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] adds r1, r0, 0x1 strh r1, [r4, 0x30] lsls r0, 16 asrs r0, 16 movs r1, 0x3 bl __modsi3 lsls r0, 16 cmp r0, 0 bne _080A9112 ldrh r1, [r4, 0x2E] subs r1, 0x1 strh r1, [r4, 0x2E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080A9112 ldr r0, _080A9118 @ =sub_80A911C str r0, [r4, 0x1C] _080A9112: pop {r4} pop {r0} bx r0 .align 2, 0 _080A9118: .4byte sub_80A911C thumb_func_end sub_80A90D4 thumb_func_start sub_80A911C sub_80A911C: @ 80A911C push {lr} adds r3, r0, 0 ldr r0, _080A9144 @ =gBattleAnimArgs ldrh r1, [r0, 0xE] ldr r0, _080A9148 @ =0x0000ffff cmp r1, r0 bne _080A9154 adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] movs r1, 0x3C ldrsh r0, [r3, r1] cmp r0, 0 bne _080A9150 ldr r0, _080A914C @ =sub_80A915C b _080A9152 .align 2, 0 _080A9144: .4byte gBattleAnimArgs _080A9148: .4byte 0x0000ffff _080A914C: .4byte sub_80A915C _080A9150: ldr r0, _080A9158 @ =DestroyAnimSprite _080A9152: str r0, [r3, 0x1C] _080A9154: pop {r0} bx r0 .align 2, 0 _080A9158: .4byte DestroyAnimSprite thumb_func_end sub_80A911C thumb_func_start sub_80A915C sub_80A915C: @ 80A915C push {r4,lr} adds r4, r0, 0 movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimSprite pop {r4} pop {r0} bx r0 thumb_func_end sub_80A915C thumb_func_start sub_80A917C sub_80A917C: @ 80A917C push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A91AC @ =gTasks adds r4, r0 movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x8] ldr r2, _080A91B0 @ =gUnknown_83E4128 adds r0, r4, 0 bl PrepareAffineAnimInTaskData ldr r0, _080A91B4 @ =sub_80A91B8 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A91AC: .4byte gTasks _080A91B0: .4byte gUnknown_83E4128 _080A91B4: .4byte sub_80A91B8 thumb_func_end sub_80A917C thumb_func_start sub_80A91B8 sub_80A91B8: @ 80A91B8 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080A9208 @ =gTasks adds r4, r0, r1 adds r0, r4, 0 bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 bne _080A9202 ldr r2, _080A920C @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r3, [r0, 0x26] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] adds r0, r5, 0 bl DestroyAnimVisualTask _080A9202: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A9208: .4byte gTasks _080A920C: .4byte gSprites thumb_func_end sub_80A91B8 thumb_func_start sub_80A9210 sub_80A9210: @ 80A9210 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080A9244 @ =gTasks adds r4, r1, r0 movs r0, 0 strh r0, [r4, 0x8] strh r0, [r4, 0xA] strh r0, [r4, 0xC] strh r0, [r4, 0xE] movs r0, 0x3 strh r0, [r4, 0x20] ldr r0, _080A9248 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080A9250 ldr r0, _080A924C @ =0x0000ffff strh r0, [r4, 0x22] movs r0, 0x8 b _080A9256 .align 2, 0 _080A9244: .4byte gTasks _080A9248: .4byte gBattleAnimTarget _080A924C: .4byte 0x0000ffff _080A9250: movs r0, 0x1 strh r0, [r4, 0x22] ldr r0, _080A9270 @ =0x0000fff8 _080A9256: strh r0, [r4, 0x24] movs r0, 0x1 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] ldr r0, _080A9274 @ =sub_80A9278 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A9270: .4byte 0x0000fff8 _080A9274: .4byte sub_80A9278 thumb_func_end sub_80A9210 thumb_func_start sub_80A9278 sub_80A9278: @ 80A9278 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080A929C @ =gTasks adds r3, r0, r1 movs r0, 0x8 ldrsh r4, [r3, r0] cmp r4, 0x1 beq _080A92CC cmp r4, 0x1 bgt _080A92A0 cmp r4, 0 beq _080A92AA b _080A9392 .align 2, 0 _080A929C: .4byte gTasks _080A92A0: cmp r4, 0x2 beq _080A9348 cmp r4, 0x3 beq _080A9362 b _080A9392 _080A92AA: ldr r2, _080A92C8 @ =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0x24] ldrh r2, [r0, 0x24] adds r1, r2 strh r1, [r0, 0x24] strh r4, [r3, 0xA] strh r4, [r3, 0xC] strh r4, [r3, 0xE] b _080A935A .align 2, 0 _080A92C8: .4byte gSprites _080A92CC: ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080A9392 movs r0, 0 strh r0, [r3, 0xA] ldrh r0, [r3, 0xC] adds r0, 0x1 strh r0, [r3, 0xC] ands r0, r4 lsls r0, 16 cmp r0, 0 beq _080A9304 ldr r2, _080A9300 @ =gSprites movs r4, 0x26 ldrsh r1, [r3, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x24] adds r1, 0x6 b _080A9316 .align 2, 0 _080A9300: .4byte gSprites _080A9304: ldr r2, _080A9344 @ =gSprites movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x24] subs r1, 0x6 _080A9316: strh r1, [r0, 0x24] ldrh r0, [r3, 0xE] adds r0, 0x1 strh r0, [r3, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 ble _080A9392 ldrh r1, [r3, 0xC] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A935A movs r1, 0x26 ldrsh r0, [r3, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x24] subs r0, 0x6 strh r0, [r1, 0x24] b _080A935A .align 2, 0 _080A9344: .4byte gSprites _080A9348: ldrh r0, [r3, 0x20] subs r0, 0x1 strh r0, [r3, 0x20] lsls r0, 16 cmp r0, 0 beq _080A935A movs r0, 0 strh r0, [r3, 0x8] b _080A9392 _080A935A: ldrh r0, [r3, 0x8] adds r0, 0x1 strh r0, [r3, 0x8] b _080A9392 _080A9362: ldr r2, _080A9398 @ =gSprites movs r4, 0x26 ldrsh r1, [r3, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0x22] ldrh r4, [r0, 0x24] adds r1, r4 strh r1, [r0, 0x24] movs r0, 0x26 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x24 ldrsh r0, [r0, r1] cmp r0, 0 bne _080A9392 adds r0, r5, 0 bl DestroyAnimVisualTask _080A9392: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A9398: .4byte gSprites thumb_func_end sub_80A9278 thumb_func_start sub_80A939C sub_80A939C: @ 80A939C push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A93D8 @ =gTasks adds r4, r0 movs r0, 0 strh r0, [r4, 0x8] strh r0, [r4, 0xA] strh r0, [r4, 0xC] strh r0, [r4, 0xE] movs r0, 0x1 strh r0, [r4, 0x10] movs r0, 0xE strh r0, [r4, 0x22] movs r0, 0x2 strh r0, [r4, 0x24] movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] ldr r0, _080A93DC @ =sub_80A93E0 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080A93D8: .4byte gTasks _080A93DC: .4byte sub_80A93E0 thumb_func_end sub_80A939C thumb_func_start sub_80A93E0 sub_80A93E0: @ 80A93E0 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080A9434 @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r2, [r4, r0] cmp r2, 0 bne _080A94A6 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 movs r3, 0x10 ldrsh r1, [r4, r3] cmp r0, r1 ble _080A94A6 strh r2, [r4, 0xA] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080A943C ldr r3, _080A9438 @ =gSprites movs r6, 0x26 ldrsh r1, [r4, r6] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 b _080A9452 .align 2, 0 _080A9434: .4byte gTasks _080A9438: .4byte gSprites _080A943C: ldr r3, _080A9484 @ =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 _080A9452: strb r1, [r0] ldrh r0, [r4, 0xE] adds r0, 0x1 movs r2, 0 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 movs r6, 0x22 ldrsh r1, [r4, r6] cmp r0, r1 blt _080A94A6 ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 asrs r0, 16 movs r6, 0x24 ldrsh r1, [r4, r6] cmp r0, r1 bge _080A9488 strh r2, [r4, 0xA] strh r2, [r4, 0xC] strh r2, [r4, 0xE] b _080A94A6 .align 2, 0 _080A9484: .4byte gSprites _080A9488: movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] adds r0, r5, 0 bl DestroyAnimVisualTask _080A94A6: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80A93E0 thumb_func_start sub_80A94AC sub_80A94AC: @ 80A94AC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080A94FC @ =gTasks adds r4, r0 movs r0, 0 strh r0, [r4, 0x8] movs r1, 0x4 strh r1, [r4, 0xA] strh r0, [r4, 0xC] strh r0, [r4, 0xE] strh r0, [r4, 0x10] strh r0, [r4, 0x12] strh r0, [r4, 0x14] strh r0, [r4, 0x16] strh r0, [r4, 0x18] strh r0, [r4, 0x22] ldr r5, _080A9500 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] ldrb r0, [r5] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] ldr r0, _080A9504 @ =sub_80A9508 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A94FC: .4byte gTasks _080A9500: .4byte gBattleAnimAttacker _080A9504: .4byte sub_80A9508 thumb_func_end sub_80A94AC thumb_func_start sub_80A9508 sub_80A9508: @ 80A9508 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _080A952C @ =gTasks adds r4, r0, r1 movs r0, 0x18 ldrsh r2, [r4, r0] cmp r2, 0x1 beq _080A9574 cmp r2, 0x1 bgt _080A9530 cmp r2, 0 beq _080A9536 b _080A9590 .align 2, 0 _080A952C: .4byte gTasks _080A9530: cmp r2, 0x2 beq _080A958C b _080A9590 _080A9536: ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080A9590 strh r2, [r4, 0x10] ldrh r0, [r4, 0x12] adds r0, 0x1 movs r1, 0x1 ands r0, r1 strh r0, [r4, 0x12] ldrh r0, [r4, 0x14] adds r0, 0x1 strh r0, [r4, 0x14] lsls r0, 16 asrs r0, 16 cmp r0, 0x14 ble _080A9590 movs r1, 0x16 ldrsh r0, [r4, r1] cmp r0, 0 bne _080A956E strh r2, [r4, 0x14] movs r0, 0x1 strh r0, [r4, 0x18] b _080A9590 _080A956E: movs r0, 0x2 strh r0, [r4, 0x18] b _080A9590 _080A9574: movs r1, 0 strh r1, [r4, 0x12] ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 asrs r0, 16 cmp r0, 0x14 ble _080A9590 strh r2, [r4, 0x16] strh r1, [r4, 0x18] b _080A9590 _080A958C: movs r0, 0x1 strh r0, [r4, 0x12] _080A9590: movs r2, 0x8 ldrsh r5, [r4, r2] cmp r5, 0 beq _080A959E cmp r5, 0x1 beq _080A9634 b _080A9642 _080A959E: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 ble _080A9642 strh r5, [r4, 0xA] ldr r0, _080A9628 @ =gUnknown_83E4154 movs r3, 0x24 ldrsh r1, [r4, r3] movs r3, 0x26 ldrsh r2, [r4, r3] movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _080A9642 ldr r0, _080A962C @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r0 strh r6, [r1, 0x2E] movs r0, 0xD strh r0, [r1, 0x30] ldr r2, _080A9630 @ =gUnknown_83E416C movs r3, 0xC ldrsh r0, [r4, r3] lsls r0, 1 adds r0, r2 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 strh r0, [r1, 0x24] movs r3, 0xC ldrsh r0, [r4, r3] lsls r0, 1 adds r2, 0x1 adds r0, r2 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 strh r0, [r1, 0x26] ldrh r0, [r4, 0x22] adds r0, 0x1 strh r0, [r4, 0x22] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 ble _080A9642 strh r5, [r4, 0xC] ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 ble _080A9642 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080A9642 .align 2, 0 _080A9628: .4byte gUnknown_83E4154 _080A962C: .4byte gSprites _080A9630: .4byte gUnknown_83E416C _080A9634: movs r1, 0x22 ldrsh r0, [r4, r1] cmp r0, 0 bne _080A9642 adds r0, r6, 0 bl DestroyAnimVisualTask _080A9642: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80A9508 thumb_func_start sub_80A9648 sub_80A9648: @ 80A9648 push {r4,lr} adds r3, r0, 0 ldr r4, _080A96B0 @ =gTasks movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 movs r1, 0x3E adds r1, r3 mov r12, r1 movs r2, 0x1 ldrb r1, [r0, 0x12] ands r1, r2 lsls r1, 2 mov r0, r12 ldrb r2, [r0] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 mov r1, r12 strb r0, [r1] adds r0, r3, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080A96AA movs r0, 0x30 ldrsh r1, [r3, r0] lsls r1, 1 movs r0, 0x2E ldrsh r2, [r3, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r0, r4, 0 adds r0, 0x8 adds r1, r0 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] adds r0, r3, 0 bl DestroySprite _080A96AA: pop {r4} pop {r0} bx r0 .align 2, 0 _080A96B0: .4byte gTasks thumb_func_end sub_80A9648 thumb_func_start sub_80A96B4 sub_80A96B4: @ 80A96B4 push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r6, r0, 24 ldr r0, _080A9750 @ =0x000027de bl IndexOfSpritePaletteTag mov r1, sp strb r0, [r1] movs r4, 0x1 ldr r0, _080A9754 @ =0x00002710 adds r5, r0, 0 _080A96CC: subs r0, r5, r4 lsls r0, 16 lsrs r0, 16 bl AllocSpritePalette mov r2, sp adds r1, r2, r4 strb r0, [r1] adds r4, 0x1 cmp r4, 0x2 ble _080A96CC movs r0, 0x80 lsls r0, 6 bl AllocZeroed adds r1, r0, 0 ldr r0, _080A9758 @ =gMonSpritesGfxPtr ldr r0, [r0] movs r2, 0xBE lsls r2, 1 adds r0, r2 str r1, [r0] ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette bl LZDecompressWram movs r4, 0 _080A9700: ldr r5, _080A9758 @ =gMonSpritesGfxPtr ldr r0, [r5] movs r1, 0xBE lsls r1, 1 adds r0, r1 lsls r1, r4, 6 ldr r0, [r0] adds r0, r1 mov r2, sp adds r1, r2, r4 ldrb r1, [r1] lsls r1, 20 movs r2, 0x80 lsls r2, 17 adds r1, r2 lsrs r1, 16 movs r2, 0x20 bl LoadPalette adds r4, 0x1 cmp r4, 0x2 ble _080A9700 ldr r0, [r5] movs r4, 0xBE lsls r4, 1 adds r0, r4 ldr r0, [r0] bl Free ldr r0, [r5] adds r0, r4 movs r1, 0 str r1, [r0] adds r0, r6, 0 bl DestroyAnimVisualTask add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A9750: .4byte 0x000027de _080A9754: .4byte 0x00002710 _080A9758: .4byte gMonSpritesGfxPtr _080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette thumb_func_end sub_80A96B4 thumb_func_start sub_80A9760 sub_80A9760: @ 80A9760 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080A9784 @ =gUnknown_83E41C8 movs r4, 0x2 _080A976A: ldrh r0, [r5] bl FreeSpritePaletteByTag adds r5, 0x2 subs r4, 0x1 cmp r4, 0 bge _080A976A adds r0, r6, 0 bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A9784: .4byte gUnknown_83E41C8 thumb_func_end sub_80A9760 thumb_func_start sub_80A9788 sub_80A9788: @ 80A9788 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsls r2, 24 lsrs r3, r2, 24 movs r0, 0x1 ands r3, r0 negs r0, r3 orrs r0, r3 asrs r0, 31 movs r3, 0x20 ands r0, r3 ldrh r4, [r5, 0x4] lsls r3, r4, 22 lsrs r3, 22 lsrs r1, 22 adds r0, r1 adds r3, r0 ldr r1, _080A97DC @ =0x000003ff adds r0, r1, 0 ands r3, r0 ldr r0, _080A97E0 @ =0xfffffc00 ands r0, r4 orrs r0, r3 strh r0, [r5, 0x4] ldr r0, _080A97E4 @ =gUnknown_83E41C8 lsrs r2, 25 lsls r2, 1 adds r2, r0 ldrh r0, [r2] bl IndexOfSpritePaletteTag lsls r0, 4 ldrb r2, [r5, 0x5] movs r1, 0xF ands r1, r2 orrs r1, r0 strb r1, [r5, 0x5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A97DC: .4byte 0x000003ff _080A97E0: .4byte 0xfffffc00 _080A97E4: .4byte gUnknown_83E41C8 thumb_func_end sub_80A9788 thumb_func_start sub_80A97E8 sub_80A97E8: @ 80A97E8 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker ldr r6, _080A9850 @ =gBattleAnimAttacker ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080A9808 ldr r1, _080A9854 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] _080A9808: ldr r4, _080A9854 @ =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r5, 0x2E] ldrb r0, [r6] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] adds r0, r1 strh r0, [r5, 0x32] ldrb r0, [r6] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] adds r0, r1 strh r0, [r5, 0x36] ldr r0, _080A9858 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A985C @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldrb r1, [r4, 0xA] ldrb r2, [r4, 0xC] adds r0, r5, 0 bl sub_80A9788 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A9850: .4byte gBattleAnimAttacker _080A9854: .4byte gBattleAnimArgs _080A9858: .4byte StartAnimLinearTranslation _080A985C: .4byte DestroyAnimSprite thumb_func_end sub_80A97E8 thumb_func_start sub_80A9860 sub_80A9860: @ 80A9860 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080A987A adds r0, r4, 0 movs r1, 0 bl InitSpritePosToAnimAttacker _080A987A: movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x8 bl Sin strh r0, [r4, 0x24] ldrh r2, [r4, 0x32] lsls r0, r2, 16 asrs r0, 24 strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x7 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] subs r2, 0x80 strh r2, [r4, 0x32] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x3C bne _080A98AA adds r0, r4, 0 bl DestroyAnimSprite _080A98AA: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A9860 thumb_func_start sub_80A98B0 sub_80A98B0: @ 80A98B0 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 bl IsContest lsls r0, 24 movs r6, 0xF0 cmp r0, 0 beq _080A98C4 movs r6, 0x98 _080A98C4: movs r5, 0 ldr r1, _080A9918 @ =gBattle_WIN0H strh r6, [r1] ldr r4, _080A991C @ =gBattle_WIN0V movs r0, 0xA0 strh r0, [r4] ldrh r1, [r1] movs r0, 0x40 bl SetGpuReg ldrh r1, [r4] movs r0, 0x44 bl SetGpuReg ldr r1, _080A9920 @ =0x00003f1f movs r0, 0x48 bl SetGpuReg ldr r1, _080A9924 @ =0x00003f3f movs r0, 0x4A bl SetGpuReg movs r0, 0x50 movs r1, 0xC8 bl SetGpuReg movs r0, 0x54 movs r1, 0x10 bl SetGpuReg ldr r1, _080A9928 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 strh r5, [r0, 0x8] strh r6, [r0, 0xA] ldr r1, _080A992C @ =sub_80A9930 str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080A9918: .4byte gBattle_WIN0H _080A991C: .4byte gBattle_WIN0V _080A9920: .4byte 0x00003f1f _080A9924: .4byte 0x00003f3f _080A9928: .4byte gTasks _080A992C: .4byte sub_80A9930 thumb_func_end sub_80A98B0 thumb_func_start sub_80A9930 sub_80A9930: @ 80A9930 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080A9964 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r3, r1, r2 ldrh r0, [r3, 0x8] adds r4, r0, 0 adds r4, 0xD strh r4, [r3, 0x8] ldrh r0, [r3, 0xA] adds r2, r0, 0 subs r2, 0xD strh r2, [r3, 0xA] lsls r1, r4, 16 lsls r0, r2, 16 cmp r1, r0 blt _080A9970 ldr r0, _080A9968 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080A996C @ =sub_80A9984 str r0, [r3] b _080A9978 .align 2, 0 _080A9964: .4byte gTasks _080A9968: .4byte gBattle_WIN0H _080A996C: .4byte sub_80A9984 _080A9970: ldr r1, _080A9980 @ =gBattle_WIN0H lsls r0, r4, 8 orrs r2, r0 strh r2, [r1] _080A9978: pop {r4} pop {r0} bx r0 .align 2, 0 _080A9980: .4byte gBattle_WIN0H thumb_func_end sub_80A9930 thumb_func_start sub_80A9984 sub_80A9984: @ 80A9984 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, _080A99D0 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r1, r0, r1 ldrh r0, [r1, 0x1C] adds r0, 0x1 movs r4, 0 strh r0, [r1, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _080A99D8 movs r0, 0x88 strh r0, [r1, 0x1E] movs r0, 0x50 movs r1, 0x88 bl SetGpuReg str r4, [sp] str r4, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_8075BE8 ldr r2, _080A99D4 @ =0x00007fff movs r1, 0x10 bl BlendPalettes b _080A9A0C .align 2, 0 _080A99D0: .4byte gTasks _080A99D4: .4byte 0x00007fff _080A99D8: cmp r0, 0x4 ble _080A9A0C ldr r0, _080A9A14 @ =gBattle_WIN0H strh r4, [r0] ldr r0, _080A9A18 @ =gBattle_WIN0V strh r4, [r0] ldr r4, _080A9A1C @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg adds r0, r5, 0 bl DestroyAnimVisualTask _080A9A0C: add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A9A14: .4byte gBattle_WIN0H _080A9A18: .4byte gBattle_WIN0V _080A9A1C: .4byte 0x00003f3f thumb_func_end sub_80A9984 thumb_func_start sub_80A9A20 sub_80A9A20: @ 80A9A20 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 movs r0, 0x1 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080A9A70 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080A9A7C movs r0, 0x1 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A9A74 @ =gUnknown_83E4200 adds r0, r5, 0 bl PrepareAffineAnimInTaskData ldr r1, _080A9A78 @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 movs r1, 0x4 strh r1, [r0, 0x24] b _080A9AA4 .align 2, 0 _080A9A70: .4byte gTasks _080A9A74: .4byte gUnknown_83E4200 _080A9A78: .4byte gSprites _080A9A7C: ldr r1, _080A9AAC @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r4, r0, r1 ldrh r0, [r4, 0x24] negs r0, r0 strh r0, [r4, 0x24] adds r0, r5, 0 bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _080A9AA4 strh r0, [r4, 0x24] strh r0, [r4, 0x26] adds r0, r6, 0 bl DestroyAnimVisualTask _080A9AA4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A9AAC: .4byte gSprites thumb_func_end sub_80A9A20 thumb_func_start sub_80A9AB0 sub_80A9AB0: @ 80A9AB0 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 movs r0, 0 bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080A9B00 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080A9B0C movs r0, 0 bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A9B04 @ =gUnknown_83E4200 adds r0, r5, 0 bl PrepareAffineAnimInTaskData ldr r1, _080A9B08 @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 movs r1, 0x4 strh r1, [r0, 0x24] b _080A9B34 .align 2, 0 _080A9B00: .4byte gTasks _080A9B04: .4byte gUnknown_83E4200 _080A9B08: .4byte gSprites _080A9B0C: ldr r1, _080A9B3C @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r4, r0, r1 ldrh r0, [r4, 0x24] negs r0, r0 strh r0, [r4, 0x24] adds r0, r5, 0 bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _080A9B34 strh r0, [r4, 0x24] strh r0, [r4, 0x26] adds r0, r6, 0 bl DestroyAnimVisualTask _080A9B34: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080A9B3C: .4byte gSprites thumb_func_end sub_80A9AB0 thumb_func_start sub_80A9B40 sub_80A9B40: @ 80A9B40 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker movs r0, 0x5F strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldr r5, _080A9B84 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 bl 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 ldr r0, _080A9B88 @ =sub_80A9B8C str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A9B84: .4byte gBattleAnimTarget _080A9B88: .4byte sub_80A9B8C thumb_func_end sub_80A9B40 thumb_func_start sub_80A9B8C sub_80A9B8C: @ 80A9B8C push {r4,lr} adds r4, r0, 0 bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080A9BB6 movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xE bl Sin ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x38] adds r0, 0x4 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] b _080A9BBC _080A9BB6: adds r0, r4, 0 bl DestroyAnimSprite _080A9BBC: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A9B8C thumb_func_start sub_80A9BC4 sub_80A9BC4: @ 80A9BC4 push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x2E] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080A9BE8 ldr r1, _080A9BE4 @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0x30] ldrh r0, [r1, 0x2] strh r0, [r4, 0x32] adds r0, r2, 0x1 strh r0, [r4, 0x2E] b _080A9C44 .align 2, 0 _080A9BE4: .4byte gBattleAnimArgs _080A9BE8: ldrh r0, [r4, 0x30] ldrh r2, [r4, 0x36] adds r0, r2 strh r0, [r4, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] movs r1, 0x34 ldrsh r0, [r4, r1] movs r2, 0x32 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x34] adds r0, 0x3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] cmp r0, 0x64 ble _080A9C36 movs r0, 0x34 ldrsh r1, [r4, r0] lsrs r0, r1, 31 adds r0, r1, r0 asrs r0, 1 lsls r0, 1 subs r1, r0 adds r3, r4, 0 adds r3, 0x3E movs r0, 0x1 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080A9C36: movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x78 ble _080A9C44 adds r0, r4, 0 bl DestroyAnimSprite _080A9C44: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A9BC4 thumb_func_start sub_80A9C4C sub_80A9C4C: @ 80A9C4C push {lr} ldr r2, _080A9C70 @ =gBattleAnimArgs ldrh r1, [r2] strh r1, [r0, 0x20] movs r1, 0xA0 strh r1, [r0, 0x22] ldrh r1, [r2, 0x4] strh r1, [r0, 0x2E] ldrh r1, [r2, 0x2] strh r1, [r0, 0x30] ldr r1, _080A9C74 @ =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, _080A9C78 @ =sub_80A9C7C bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 _080A9C70: .4byte gBattleAnimArgs _080A9C74: .4byte WaitAnimForDuration _080A9C78: .4byte sub_80A9C7C thumb_func_end sub_80A9C4C thumb_func_start sub_80A9C7C sub_80A9C7C: @ 80A9C7C push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] lsls r0, 16 lsrs r0, 24 negs r0, r0 strh r0, [r4, 0x26] movs r1, 0x34 ldrsh r0, [r4, r1] movs r1, 0x4 bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x34] adds r0, 0x3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 lsls r0, 16 asrs r5, r0, 16 cmp r5, 0x48 bgt _080A9CE2 movs r0, 0x34 ldrsh r1, [r4, r0] lsrs r0, r1, 31 adds r0, r1, r0 asrs r0, 1 lsls r0, 1 subs r1, r0 adds r3, r4, 0 adds r3, 0x3E movs r0, 0x1 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] cmp r5, 0x40 bgt _080A9CE2 adds r0, r4, 0 bl DestroyAnimSprite _080A9CE2: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A9C7C thumb_func_start sub_80A9CE8 sub_80A9CE8: @ 80A9CE8 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080A9DA0 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0x3 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9D2A movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute _080A9D2A: ldr r0, _080A9DA4 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r4, _080A9DA8 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 bl SetGpuReg ldrh r1, [r4] movs r0, 0x16 bl SetGpuReg mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet mov r2, sp ldrh r2, [r2, 0xA] bl AnimLoadCompressedBgGfx ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9D88 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80730C0 _080A9D88: ldr r0, _080A9DB8 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _080A9DBC @ =sub_80A9DC0 str r0, [r1] add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080A9DA0: .4byte 0x00003f42 _080A9DA4: .4byte gBattle_BG1_X _080A9DA8: .4byte gBattle_BG1_Y _080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap _080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet _080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette _080A9DB8: .4byte gTasks _080A9DBC: .4byte sub_80A9DC0 thumb_func_end sub_80A9CE8 thumb_func_start sub_80A9DC0 sub_80A9DC0: @ 80A9DC0 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080A9DE8 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x20 ldrsh r0, [r0, r2] adds r2, r1, 0 cmp r0, 0x4 bls _080A9DDE b _080A9F08 _080A9DDE: lsls r0, 2 ldr r1, _080A9DEC @ =_080A9DF0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080A9DE8: .4byte gTasks _080A9DEC: .4byte _080A9DF0 .align 2, 0 _080A9DF0: .4byte _080A9E04 .4byte _080A9E48 .4byte _080A9E6A .4byte _080A9EAE .4byte _080A9ED4 _080A9E04: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0x1C] adds r0, 0x1 movs r5, 0 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080A9F08 strh r5, [r4, 0x1C] ldrh r1, [r4, 0x1E] adds r1, 0x1 strh r1, [r4, 0x1E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x1E ldrsh r0, [r4, r1] cmp r0, 0x10 bne _080A9F08 ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] strh r5, [r4, 0x1E] b _080A9F08 _080A9E48: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r2 ldrh r0, [r1, 0x1E] adds r0, 0x1 strh r0, [r1, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x8D bne _080A9F08 movs r0, 0x10 strh r0, [r1, 0x1E] ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] b _080A9F08 _080A9E6A: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080A9F08 movs r0, 0 strh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] subs r1, 0x1 strh r1, [r4, 0x1E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0x1E ldrsh r1, [r4, r2] cmp r1, 0 bne _080A9F08 ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] strh r1, [r4, 0x1E] b _080A9F08 _080A9EAE: mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] bl sub_8075358 ldr r1, _080A9ED0 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x20] adds r1, 0x1 strh r1, [r0, 0x20] b _080A9F08 .align 2, 0 _080A9ED0: .4byte gTasks _080A9ED4: bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9EE8 movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _080A9EE8: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute adds r0, r4, 0 bl DestroyAnimVisualTask _080A9F08: add sp, 0x10 pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A9DC0 thumb_func_start sub_80A9F10 sub_80A9F10: @ 80A9F10 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080A9F88 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9F52 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute _080A9F52: ldr r0, _080A9F8C @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r4, _080A9F90 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 bl SetGpuReg ldrh r1, [r4] movs r0, 0x16 bl SetGpuReg mov r0, sp bl sub_80752A0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9F98 ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap ldr r1, [sp, 0x4] bl LZDecompressVram b _080A9FC6 .align 2, 0 _080A9F88: .4byte 0x00003f42 _080A9F8C: .4byte gBattle_BG1_X _080A9F90: .4byte gBattle_BG1_Y _080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap _080A9F98: ldr r0, _080A9FB4 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A9FBC mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap bl AnimLoadCompressedBgTilemap b _080A9FC6 .align 2, 0 _080A9FB4: .4byte gBattleAnimTarget _080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap _080A9FBC: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap bl AnimLoadCompressedBgTilemap _080A9FC6: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet mov r2, sp ldrh r2, [r2, 0xA] bl AnimLoadCompressedBgGfx ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9FFA mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80730C0 _080A9FFA: ldr r0, _080AA01C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _080AA020 @ =sub_80AA024 str r0, [r1] add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap _080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet _080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette _080AA01C: .4byte gTasks _080AA020: .4byte sub_80AA024 thumb_func_end sub_80A9F10 thumb_func_start sub_80AA024 sub_80AA024: @ 80AA024 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080AA04C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x20 ldrsh r0, [r0, r2] adds r2, r1, 0 cmp r0, 0x4 bls _080AA042 b _080AA168 _080AA042: lsls r0, 2 ldr r1, _080AA050 @ =_080AA054 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080AA04C: .4byte gTasks _080AA050: .4byte _080AA054 .align 2, 0 _080AA054: .4byte _080AA068 .4byte _080AA0AC .4byte _080AA0CE .4byte _080AA112 .4byte _080AA134 _080AA068: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0x1C] adds r0, 0x1 movs r5, 0 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _080AA168 strh r5, [r4, 0x1C] ldrh r1, [r4, 0x1E] adds r1, 0x1 strh r1, [r4, 0x1E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x1E ldrsh r0, [r4, r1] cmp r0, 0xE bne _080AA168 ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] strh r5, [r4, 0x1E] b _080AA168 _080AA0AC: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r2 ldrh r0, [r1, 0x1E] adds r0, 0x1 strh r0, [r1, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x15 bne _080AA168 movs r0, 0xE strh r0, [r1, 0x1E] ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] b _080AA168 _080AA0CE: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r4, r0, r2 ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _080AA168 movs r0, 0 strh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] subs r1, 0x1 strh r1, [r4, 0x1E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0x1E ldrsh r1, [r4, r2] cmp r1, 0 bne _080AA168 ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] strh r1, [r4, 0x1E] b _080AA168 _080AA112: mov r0, sp bl sub_80752A0 movs r0, 0x1 bl sub_8075358 movs r0, 0x2 bl sub_8075358 ldr r0, _080AA170 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] _080AA134: bl IsContest lsls r0, 24 cmp r0, 0 bne _080AA148 movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _080AA148: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute adds r0, r4, 0 bl DestroyAnimVisualTask _080AA168: add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA170: .4byte gTasks thumb_func_end sub_80AA024 thumb_func_start sub_80AA174 sub_80AA174: @ 80AA174 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080AA1C8 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 bl 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] adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _080AA1CC @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x2] strh r0, [r4, 0x30] ldrb r0, [r5] bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x3C] ldr r1, _080AA1D0 @ =sub_80AA1D4 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA1C8: .4byte gBattleAnimAttacker _080AA1CC: .4byte gBattleAnimArgs _080AA1D0: .4byte sub_80AA1D4 thumb_func_end sub_80AA174 thumb_func_start sub_80AA1D4 sub_80AA1D4: @ 80AA1D4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] subs r0, 0x40 lsls r0, 16 lsrs r0, 16 cmp r0, 0x7F bhi _080AA1EA ldrh r0, [r4, 0x3C] adds r0, 0x1 b _080AA1EE _080AA1EA: ldrh r0, [r4, 0x3C] subs r0, 0x1 _080AA1EE: adds r1, r4, 0 adds r1, 0x43 strb r0, [r1] movs r1, 0x30 ldrsh r0, [r4, r1] ldrh r1, [r4, 0x32] lsls r1, 16 asrs r1, 24 bl Sin strh r0, [r4, 0x24] movs r2, 0x30 ldrsh r0, [r4, r2] ldrh r1, [r4, 0x34] lsls r1, 16 asrs r1, 24 bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x9 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] movs r3, 0x38 ldrsh r2, [r4, r3] cmp r2, 0 beq _080AA260 cmp r2, 0x1 bne _080AA290 ldr r1, _080AA258 @ =0xfffffc00 adds r0, r1, 0 ldrh r2, [r4, 0x32] adds r0, r2 strh r0, [r4, 0x32] ldr r3, _080AA25C @ =0xffffff00 adds r0, r3, 0 ldrh r1, [r4, 0x34] adds r0, r1 strh r0, [r4, 0x34] ldrh r0, [r4, 0x36] adds r0, 0x1 strh r0, [r4, 0x36] lsls r0, 16 asrs r0, 16 movs r2, 0x2E ldrsh r1, [r4, r2] cmp r0, r1 bne _080AA290 movs r0, 0x2 strh r0, [r4, 0x38] b _080AA2A0 .align 2, 0 _080AA258: .4byte 0xfffffc00 _080AA25C: .4byte 0xffffff00 _080AA260: movs r3, 0x80 lsls r3, 3 adds r0, r3, 0 ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 ldrh r1, [r4, 0x34] adds r0, r1 strh r0, [r4, 0x34] ldrh r0, [r4, 0x36] adds r0, 0x1 strh r0, [r4, 0x36] lsls r0, 16 asrs r0, 16 movs r3, 0x2E ldrsh r1, [r4, r3] cmp r0, r1 bne _080AA290 strh r2, [r4, 0x36] movs r0, 0x1 strh r0, [r4, 0x38] _080AA290: ldr r0, _080AA2A8 @ =gBattleAnimArgs ldrh r1, [r0, 0xE] ldr r0, _080AA2AC @ =0x0000ffff cmp r1, r0 bne _080AA2A0 adds r0, r4, 0 bl DestroyAnimSprite _080AA2A0: pop {r4} pop {r0} bx r0 .align 2, 0 _080AA2A8: .4byte gBattleAnimArgs _080AA2AC: .4byte 0x0000ffff thumb_func_end sub_80AA1D4 thumb_func_start sub_80AA2B0 sub_80AA2B0: @ 80AA2B0 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080AA2F8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl 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] ldr r4, _080AA2FC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0xA bl Sin strh r0, [r5, 0x2E] movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0x7 bl Cos strh r0, [r5, 0x30] ldr r0, _080AA300 @ =sub_80AA304 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA2F8: .4byte gBattleAnimAttacker _080AA2FC: .4byte gBattleAnimArgs _080AA300: .4byte sub_80AA304 thumb_func_end sub_80AA2B0 thumb_func_start sub_80AA304 sub_80AA304: @ 80AA304 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x2E] ldrh r1, [r2, 0x24] adds r0, r1 strh r0, [r2, 0x24] ldrh r0, [r2, 0x30] ldrh r3, [r2, 0x26] adds r0, r3 strh r0, [r2, 0x26] movs r1, 0x20 ldrsh r0, [r2, r1] movs r3, 0x24 ldrsh r1, [r2, r3] adds r0, r1 adds r0, 0x10 movs r1, 0x88 lsls r1, 1 cmp r0, r1 bhi _080AA342 movs r0, 0x22 ldrsh r1, [r2, r0] movs r3, 0x26 ldrsh r0, [r2, r3] adds r1, r0 cmp r1, 0xA0 bgt _080AA342 movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _080AA348 _080AA342: adds r0, r2, 0 bl DestroyAnimSprite _080AA348: pop {r0} bx r0 thumb_func_end sub_80AA304 thumb_func_start sub_80AA34C sub_80AA34C: @ 80AA34C push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x2E] ldrh r1, [r2, 0x24] adds r0, r1 strh r0, [r2, 0x24] ldrh r0, [r2, 0x30] ldrh r3, [r2, 0x26] adds r0, r3 strh r0, [r2, 0x26] ldrh r0, [r2, 0x34] adds r1, r0, 0x1 strh r1, [r2, 0x34] lsls r0, 16 asrs r0, 16 movs r3, 0x32 ldrsh r1, [r2, r3] cmp r0, r1 blt _080AA378 adds r0, r2, 0 bl DestroyAnimSprite _080AA378: pop {r0} bx r0 thumb_func_end sub_80AA34C thumb_func_start sub_80AA37C sub_80AA37C: @ 80AA37C push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080AA3C8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl 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] ldr r4, _080AA3CC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0xA bl Sin strh r0, [r5, 0x2E] movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0x7 bl Cos strh r0, [r5, 0x30] ldrh r0, [r4, 0x2] strh r0, [r5, 0x32] ldr r0, _080AA3D0 @ =sub_80AA34C str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA3C8: .4byte gBattleAnimAttacker _080AA3CC: .4byte gBattleAnimArgs _080AA3D0: .4byte sub_80AA34C thumb_func_end sub_80AA37C thumb_func_start sub_80AA3D4 sub_80AA3D4: @ 80AA3D4 push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080AA3EA adds r0, r2, 0 bl DestroyAnimSprite _080AA3EA: pop {r0} bx r0 thumb_func_end sub_80AA3D4 thumb_func_start sub_80AA3F0 sub_80AA3F0: @ 80AA3F0 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r0, _080AA404 @ =sub_80AA3D4 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080AA404: .4byte sub_80AA3D4 thumb_func_end sub_80AA3F0 thumb_func_start sub_80AA408 sub_80AA408: @ 80AA408 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA426 ldr r0, _080AA498 @ =gBattleAnimArgs ldrh r1, [r0] ldrh r2, [r4, 0x20] adds r1, r2 strh r1, [r4, 0x20] ldrh r0, [r0, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] _080AA426: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] movs r2, 0x2E ldrsh r1, [r4, r2] lsls r0, r1, 2 adds r0, r1 lsls r5, r0, 1 movs r0, 0xFF ands r5, r0 adds r0, r5, 0 movs r1, 0x50 bl Sin lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x4F bgt _080AA46A adds r0, r5, 0 movs r1, 0x50 bl Cos movs r2, 0x2E ldrsh r1, [r4, r2] lsrs r2, r1, 31 adds r1, r2 asrs r1, 1 lsls r0, 16 asrs r0, 24 adds r1, r0 strh r1, [r4, 0x26] _080AA46A: movs r0, 0x2E ldrsh r2, [r4, r0] cmp r2, 0x5A ble _080AA488 ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] movs r0, 0x32 ldrsh r1, [r4, r0] lsrs r0, r1, 31 adds r1, r0 asrs r1, 1 ldrh r0, [r4, 0x24] subs r0, r1 strh r0, [r4, 0x24] _080AA488: cmp r2, 0x64 ble _080AA492 adds r0, r4, 0 bl DestroyAnimSprite _080AA492: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA498: .4byte gBattleAnimArgs thumb_func_end sub_80AA408 thumb_func_start sub_80AA49C sub_80AA49C: @ 80AA49C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] movs r1, 0x34 ldrsh r0, [r4, r1] movs r1, 0x5 bl Sin strh r0, [r4, 0x24] movs r1, 0x38 ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x34] adds r0, 0x3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] movs r1, 0x38 ldrsh r0, [r4, r1] cmp r0, 0x14 ble _080AA4F2 adds r1, r0, 0 lsrs r0, r1, 31 adds r0, r1, r0 asrs r0, 1 lsls r0, 1 subs r1, r0 adds r3, r4, 0 adds r3, 0x3E movs r0, 0x1 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080AA4F2: movs r1, 0x38 ldrsh r0, [r4, r1] cmp r0, 0x1E ble _080AA500 adds r0, r4, 0 bl DestroyAnimSprite _080AA500: pop {r4} pop {r0} bx r0 thumb_func_end sub_80AA49C thumb_func_start sub_80AA508 sub_80AA508: @ 80AA508 push {r4,r5,lr} adds r4, r0, 0 ldrh r2, [r4, 0x2E] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA52C ldr r1, _080AA528 @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0x30] ldrh r0, [r1, 0x2] strh r0, [r4, 0x32] adds r0, r2, 0x1 strh r0, [r4, 0x2E] b _080AA580 .align 2, 0 _080AA528: .4byte gBattleAnimArgs _080AA52C: ldrh r0, [r4, 0x30] ldrh r2, [r4, 0x36] adds r0, r2 movs r5, 0 strh r0, [r4, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] movs r1, 0x34 ldrsh r0, [r4, r1] movs r2, 0x32 ldrsh r1, [r4, r2] bl Sin adds r2, r0, 0 strh r2, [r4, 0x26] ldrh r0, [r4, 0x34] adds r0, 0x3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] cmp r0, 0x46 ble _080AA580 ldr r0, _080AA588 @ =sub_80AA49C str r0, [r4, 0x1C] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r1, [r4, 0x22] adds r0, r2, r1 strh r0, [r4, 0x22] strh r5, [r4, 0x24] strh r5, [r4, 0x26] bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xB4 bl __umodsi3 strh r0, [r4, 0x34] _080AA580: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA588: .4byte sub_80AA49C thumb_func_end sub_80AA508 thumb_func_start sub_80AA58C sub_80AA58C: @ 80AA58C push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA5C6 ldr r1, _080AA688 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] ldrh r0, [r1, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim ldr r0, _080AA68C @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 strb r0, [r1] movs r0, 0x1 strh r0, [r4, 0x32] _080AA5C6: ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x2E] adds r0, r2 strh r0, [r4, 0x2E] movs r1, 0x2E ldrsh r0, [r4, r1] lsls r1, r0, 2 adds r0, r1, 0 cmp r1, 0 bge _080AA5DC adds r0, 0xFF _080AA5DC: asrs r0, 8 lsls r0, 8 subs r0, r1, r0 strh r0, [r4, 0x30] lsls r0, 16 cmp r0, 0 bge _080AA5EE movs r0, 0 strh r0, [r4, 0x30] _080AA5EE: movs r0, 0x30 ldrsh r2, [r4, r0] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bge _080AA5FC adds r0, 0x3 _080AA5FC: asrs r0, 2 movs r1, 0x1E subs r1, r0 adds r0, r2, 0 bl Cos strh r0, [r4, 0x24] movs r0, 0x30 ldrsh r2, [r4, r0] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bge _080AA618 adds r0, 0x7 _080AA618: asrs r0, 3 movs r1, 0xA subs r1, r0 adds r0, r2, 0 bl Sin strh r0, [r4, 0x26] movs r2, 0x30 ldrsh r0, [r4, r2] cmp r0, 0x80 ble _080AA63C ldrh r1, [r4, 0x32] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 ble _080AA63C ldr r0, _080AA690 @ =0x0000ffff strh r0, [r4, 0x32] _080AA63C: movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA650 movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 bge _080AA650 movs r0, 0x1 strh r0, [r4, 0x32] _080AA650: ldrh r0, [r4, 0x34] adds r1, r0, 0x1 strh r1, [r4, 0x34] subs r0, 0x9 lsls r0, 16 lsrs r0, 16 cmp r0, 0x46 bls _080AA694 movs r0, 0x2E ldrsh r1, [r4, r0] lsrs r0, r1, 31 adds r0, r1, r0 asrs r0, 1 lsls r0, 1 subs r1, r0 adds r3, r4, 0 adds r3, 0x3E movs r0, 0x1 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _080AA6A2 .align 2, 0 _080AA688: .4byte gBattleAnimArgs _080AA68C: .4byte gBattleAnimTarget _080AA690: .4byte 0x0000ffff _080AA694: adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _080AA6A2: movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x5A ble _080AA6B0 adds r0, r4, 0 bl DestroyAnimSprite _080AA6B0: pop {r4} pop {r0} bx r0 thumb_func_end sub_80AA58C thumb_func_start sub_80AA6B8 sub_80AA6B8: @ 80AA6B8 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA6EC ldr r1, _080AA6E8 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] ldrh r0, [r1, 0x2] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] ldrb r1, [r1, 0x4] adds r0, r4, 0 bl StartSpriteAnim ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080AA700 .align 2, 0 _080AA6E8: .4byte gBattleAnimArgs _080AA6EC: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080AA700 adds r0, r4, 0 bl DestroyAnimSprite _080AA700: pop {r4} pop {r0} bx r0 thumb_func_end sub_80AA6B8 thumb_func_start sub_80AA708 sub_80AA708: @ 80AA708 push {r4,r5,lr} adds r5, r0, 0 ldr r1, _080AA720 @ =gBattleAnimArgs movs r2, 0x4 ldrsh r0, [r1, r2] cmp r0, 0 bne _080AA724 adds r0, r5, 0 bl DestroyAnimSprite b _080AA788 .align 2, 0 _080AA720: .4byte gBattleAnimArgs _080AA724: movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0 bne _080AA734 ldr r4, _080AA730 @ =gBattleAnimAttacker b _080AA736 .align 2, 0 _080AA730: .4byte gBattleAnimAttacker _080AA734: ldr r4, _080AA764 @ =gBattleAnimTarget _080AA736: ldrb r0, [r4] movs r1, 0x2 bl 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] ldr r0, _080AA768 @ =gBattleAnimArgs movs r2, 0x2 ldrsh r1, [r0, r2] adds r2, r0, 0 cmp r1, 0 bne _080AA76C ldrh r0, [r5, 0x20] adds r0, 0x20 b _080AA770 .align 2, 0 _080AA764: .4byte gBattleAnimTarget _080AA768: .4byte gBattleAnimArgs _080AA76C: ldrh r0, [r5, 0x20] subs r0, 0x20 _080AA770: strh r0, [r5, 0x20] ldrh r0, [r2, 0x4] strh r0, [r5, 0x2E] ldrh r1, [r2, 0x2] strh r1, [r5, 0x30] lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080AA790 @ =sub_80AA794 str r0, [r5, 0x1C] _080AA788: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA790: .4byte sub_80AA794 thumb_func_end sub_80AA708 thumb_func_start sub_80AA794 sub_80AA794: @ 80AA794 push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080AA7C4 ldrh r0, [r2, 0x2E] subs r0, 0x1 strh r0, [r2, 0x2E] lsls r0, 16 cmp r0, 0 beq _080AA7BE ldrh r1, [r2, 0x30] lsls r1, 24 lsrs r1, 24 adds r0, r2, 0 bl StartSpriteAnim b _080AA7C4 _080AA7BE: adds r0, r2, 0 bl DestroyAnimSprite _080AA7C4: pop {r0} bx r0 thumb_func_end sub_80AA794 thumb_func_start sub_80AA7C8 sub_80AA7C8: @ 80AA7C8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _080AA7FC @ =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r4, r5, 2 adds r4, r5 lsls r4, 3 ldr r0, _080AA800 @ =gTasks adds r4, r0 ldr r2, _080AA804 @ =gUnknown_83E4410 adds r0, r4, 0 bl PrepareAffineAnimInTaskData ldr r0, _080AA808 @ =sub_80AA80C str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AA7FC: .4byte gBattleAnimArgs _080AA800: .4byte gTasks _080AA804: .4byte gUnknown_83E4410 _080AA808: .4byte sub_80AA80C thumb_func_end sub_80AA7C8 thumb_func_start sub_80AA80C sub_80AA80C: @ 80AA80C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080AA834 @ =gTasks adds r0, r1 bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080AA82C adds r0, r4, 0 bl DestroyAnimVisualTask _080AA82C: pop {r4} pop {r0} bx r0 .align 2, 0 _080AA834: .4byte gTasks thumb_func_end sub_80AA80C thumb_func_start sub_80AA838 sub_80AA838: @ 80AA838 push {r4-r7,lr} adds r5, r0, 0 ldr r0, _080AA84C @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080AA854 ldr r0, _080AA850 @ =gBattleAnimAttacker b _080AA856 .align 2, 0 _080AA84C: .4byte gBattleAnimArgs _080AA850: .4byte gBattleAnimAttacker _080AA854: ldr r0, _080AA8EC @ =gBattleAnimTarget _080AA856: ldrb r6, [r0] adds r0, r6, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080AA870 ldr r1, _080AA8F0 @ =gBattleAnimArgs movs r2, 0x2 ldrsh r0, [r1, r2] negs r0, r0 strh r0, [r1, 0x2] _080AA870: adds r0, r6, 0 movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 ldr r7, _080AA8F0 @ =gBattleAnimArgs lsrs r0, 24 ldrh r3, [r7, 0x2] adds r0, r3 movs r4, 0 strh r0, [r5, 0x20] adds r0, r6, 0 movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r7, 0x4] adds r0, r1 strh r0, [r5, 0x22] strh r4, [r5, 0x2E] ldrh r1, [r5, 0x20] lsls r1, 3 strh r1, [r5, 0x30] lsls r0, 3 strh r0, [r5, 0x32] movs r2, 0x2 ldrsh r0, [r7, r2] lsls r0, 3 cmp r0, 0 bge _080AA8B0 adds r0, 0x7 _080AA8B0: asrs r0, 3 strh r0, [r5, 0x34] movs r3, 0x4 ldrsh r0, [r7, r3] lsls r0, 3 cmp r0, 0 bge _080AA8C0 adds r0, 0x7 _080AA8C0: asrs r0, 3 strh r0, [r5, 0x36] ldrh r2, [r5, 0x4] lsls r1, r2, 22 lsrs r1, 22 movs r3, 0x6 ldrsh r0, [r7, r3] lsls r0, 4 adds r1, r0 ldr r3, _080AA8F4 @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080AA8F8 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] ldr r0, _080AA8FC @ =sub_80AA900 str r0, [r5, 0x1C] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080AA8EC: .4byte gBattleAnimTarget _080AA8F0: .4byte gBattleAnimArgs _080AA8F4: .4byte 0x000003ff _080AA8F8: .4byte 0xfffffc00 _080AA8FC: .4byte sub_80AA900 thumb_func_end sub_80AA838 thumb_func_start sub_80AA900 sub_80AA900: @ 80AA900 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x34] ldrh r1, [r2, 0x30] adds r0, r1 strh r0, [r2, 0x30] ldrh r1, [r2, 0x36] ldrh r3, [r2, 0x32] adds r1, r3 strh r1, [r2, 0x32] lsls r0, 16 asrs r0, 19 strh r0, [r2, 0x20] lsls r1, 16 asrs r1, 19 strh r1, [r2, 0x22] ldrh r0, [r2, 0x2E] adds r0, 0x1 strh r0, [r2, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _080AA934 adds r0, r2, 0 bl DestroyAnimSprite _080AA934: pop {r0} bx r0 thumb_func_end sub_80AA900 thumb_func_start sub_80AA938 sub_80AA938: @ 80AA938 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080AA95A ldr r0, _080AA994 @ =gBattleAnimArgs ldrh r1, [r0] movs r0, 0x78 subs r0, r1 strh r0, [r4, 0x30] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _080AA95A: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 movs r2, 0x30 ldrsh r1, [r4, r2] cmp r0, r1 bne _080AA978 ldrb r0, [r4, 0x5] lsrs r0, 4 adds r0, 0x10 movs r1, 0 bl SetGreyscaleOrOriginalPalette _080AA978: movs r0, 0x2E ldrsh r1, [r4, r0] movs r2, 0x30 ldrsh r0, [r4, r2] adds r0, 0x50 cmp r1, r0 bne _080AA98C adds r0, r4, 0 bl DestroyAnimSprite _080AA98C: pop {r4} pop {r0} bx r0 .align 2, 0 _080AA994: .4byte gBattleAnimArgs thumb_func_end sub_80AA938 thumb_func_start sub_80AA998 sub_80AA998: @ 80AA998 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x2E ldrsh r0, [r6, r1] cmp r0, 0 bne _080AA9C6 movs r5, 0x78 strh r5, [r6, 0x20] ldr r4, _080AAA48 @ =gBattleAnimArgs movs r2, 0 ldrsh r0, [r4, r2] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 subs r0, 0xF strh r0, [r6, 0x22] ldrb r1, [r4, 0x2] adds r0, r6, 0 bl StartSpriteAnim strh r5, [r6, 0x38] ldrh r0, [r4, 0x4] strh r0, [r6, 0x34] _080AA9C6: ldrh r0, [r6, 0x2E] adds r0, 0x1 movs r5, 0 strh r0, [r6, 0x2E] movs r1, 0x2E ldrsh r0, [r6, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r6, 0x30] movs r2, 0x2E ldrsh r0, [r6, r2] lsls r4, r0, 1 adds r4, r0 ldrh r0, [r6, 0x34] adds r4, r0 movs r2, 0xFF ldrh r0, [r6, 0x3A] adds r0, 0xA movs r1, 0xFF ands r0, r1 strh r0, [r6, 0x3A] ands r4, r2 adds r0, r4, 0 movs r1, 0x64 bl Cos strh r0, [r6, 0x24] adds r0, r4, 0 movs r1, 0xA bl Sin adds r4, r0, 0 movs r1, 0x3A ldrsh r0, [r6, r1] movs r1, 0x4 bl Cos ldrh r2, [r6, 0x30] adds r4, r2 adds r0, r4 strh r0, [r6, 0x26] movs r0, 0x2E ldrsh r1, [r6, r0] movs r2, 0x38 ldrsh r0, [r6, r2] cmp r1, r0 ble _080AAA42 ldr r0, _080AAA4C @ =sub_80AAA50 str r0, [r6, 0x1C] strh r5, [r6, 0x2E] adds r0, r6, 0 bl SetSpritePrimaryCoordsFromSecondaryCoords movs r0, 0x5 strh r0, [r6, 0x32] strh r5, [r6, 0x36] strh r5, [r6, 0x34] adds r0, r6, 0 movs r1, 0x1 bl StartSpriteAffineAnim _080AAA42: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080AAA48: .4byte gBattleAnimArgs _080AAA4C: .4byte sub_80AAA50 thumb_func_end sub_80AA998 thumb_func_start sub_80AAA50 sub_80AAA50: @ 80AAA50 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x2E] adds r0, 0x1 strh r0, [r1, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xA ble _080AAA6A movs r0, 0 strh r0, [r1, 0x2E] ldr r0, _080AAA70 @ =sub_80AAA74 str r0, [r1, 0x1C] _080AAA6A: pop {r0} bx r0 .align 2, 0 _080AAA70: .4byte sub_80AAA74 thumb_func_end sub_80AAA50 thumb_func_start sub_80AAA74 sub_80AAA74: @ 80AAA74 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x32] ldrh r2, [r4, 0x34] adds r0, r1, r2 strh r0, [r4, 0x34] strh r0, [r4, 0x26] adds r1, 0x1 strh r1, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x30 ble _080AAA9E lsls r0, r1, 16 cmp r0, 0 ble _080AAA9E ldrh r0, [r4, 0x36] subs r1, r0, 0x5 strh r1, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x36] _080AAA9E: movs r1, 0x36 ldrsh r0, [r4, r1] cmp r0, 0x3 ble _080AAAD0 movs r2, 0x32 ldrsh r1, [r4, r2] lsrs r0, r1, 31 adds r0, r1, r0 asrs r0, 1 lsls r0, 1 subs r1, r0 adds r3, r4, 0 adds r3, 0x3E movs r0, 0x1 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r4, 0 bl DestroyAnimSprite _080AAAD0: movs r1, 0x36 ldrsh r0, [r4, r1] cmp r0, 0x4 bne _080AAADE adds r0, r4, 0 bl DestroyAnimSprite _080AAADE: pop {r4} pop {r0} bx r0 thumb_func_end sub_80AAA74 thumb_func_start sub_80AAAE4 sub_80AAAE4: @ 80AAAE4 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _080AAB28 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080AAB30 ldr r4, _080AAB2C @ =gBattleAnimAttacker ldrb r1, [r4] movs r0, 0x2 eors r0, r1 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080AAB30 ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 adds r3, r5, 0 adds r3, 0x22 movs r1, 0 bl SetAverageBattlerPositions ldrh r0, [r5, 0x22] adds r0, 0x28 strh r0, [r5, 0x22] adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAffineAnim b _080AAB50 .align 2, 0 _080AAB28: .4byte gBattleTypeFlags _080AAB2C: .4byte gBattleAnimAttacker _080AAB30: ldr r4, _080AAB70 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 bl 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 adds r0, 0x28 strh r0, [r5, 0x22] _080AAB50: movs r0, 0xD strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x32] ldrh r0, [r5, 0x22] subs r0, 0x48 strh r0, [r5, 0x36] ldr r0, _080AAB74 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080AAB78 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AAB70: .4byte gBattleAnimAttacker _080AAB74: .4byte StartAnimLinearTranslation _080AAB78: .4byte DestroyAnimSprite thumb_func_end sub_80AAAE4 thumb_func_start sub_80AAB7C sub_80AAB7C: @ 80AAB7C push {lr} lsls r0, 24 lsrs r0, 24 ldr r3, _080AAB98 @ =gBattleAnimArgs ldr r1, _080AAB9C @ =gAnimDisableStructPtr ldr r1, [r1] ldrb r2, [r1, 0x10] movs r1, 0x1 ands r1, r2 strh r1, [r3, 0xE] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080AAB98: .4byte gBattleAnimArgs _080AAB9C: .4byte gAnimDisableStructPtr thumb_func_end sub_80AAB7C thumb_func_start update_fury_cutter_counter_copy update_fury_cutter_counter_copy: @ 80AABA0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080AABB8 @ =gBattleAnimArgs ldr r1, _080AABBC @ =gAnimDisableStructPtr ldr r1, [r1] ldrb r1, [r1, 0x10] strh r1, [r2, 0xE] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080AABB8: .4byte gBattleAnimArgs _080AABBC: .4byte gAnimDisableStructPtr thumb_func_end update_fury_cutter_counter_copy .align 2, 0 @ Don't pad with nop.