.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80A5C6C sub_80A5C6C: @ 80A5C6C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 lsrs r4, r1, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A5C8A cmp r4, 0x3 bne _080A5C8A cmp r5, 0x3 bne _080A5C8A movs r4, 0x1 _080A5C8A: cmp r4, 0x4 bhi _080A5D00 lsls r0, r4, 2 ldr r1, =_080A5C9C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080A5C9C: .4byte _080A5CB0 .4byte _080A5CD8 .4byte _080A5CB0 .4byte _080A5D00 .4byte _080A5D00 _080A5CB0: ldr r4, =gUnknown_08525F58 adds r0, r5, 0 bl GetBankIdentity lsls r0, 24 lsrs r0, 22 ldr r1, =gBattleTypeFlags ldr r1, [r1] movs r2, 0x1 ands r1, r2 lsls r1, 4 adds r0, r1 adds r0, r4 ldrb r0, [r0] b _080A5DB0 .pool _080A5CD8: ldr r4, =gUnknown_08525F58 adds r0, r5, 0 bl GetBankIdentity lsls r0, 24 lsrs r0, 22 ldr r1, =gBattleTypeFlags ldr r1, [r1] movs r2, 0x1 ands r1, r2 lsls r1, 4 adds r0, r1 adds r0, r4 ldrb r0, [r0, 0x1] b _080A5DB0 .pool _080A5D00: bl IsContest lsls r0, 24 cmp r0, 0 beq _080A5D28 ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A5D24 ldrh r1, [r2, 0x2] b _080A5D9A .pool _080A5D24: ldrh r1, [r2] b _080A5D9A _080A5D28: adds r0, r5, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A5D60 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A5D98 ldr r1, =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty b _080A5D7E .pool _080A5D60: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A5D98 ldr r1, =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty _080A5D7E: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r1, r0, 16 b _080A5D9A .pool _080A5D98: ldrh r1, [r1, 0x2] _080A5D9A: cmp r4, 0x3 bne _080A5DA4 adds r0, r5, 0 movs r2, 0x1 b _080A5DA8 _080A5DA4: adds r0, r5, 0 movs r2, 0 _080A5DA8: bl sub_80A600C lsls r0, 24 lsrs r0, 24 _080A5DB0: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80A5C6C thumb_func_start sub_80A5DB8 sub_80A5DB8: @ 80A5DB8 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 16 lsrs r5, r1, 16 adds r0, r4, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A5DDA bl IsContest lsls r0, 24 cmp r0, 0 bne _080A5DDA b _080A5EC8 _080A5DDA: cmp r5, 0xC9 bne _080A5E90 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A5E04 ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A5E00 ldr r2, [r2, 0x10] b _080A5E42 .pool _080A5E00: ldr r2, [r2, 0x8] b _080A5E42 _080A5E04: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r4, 2 adds r0, r1, r0 ldrh r0, [r0, 0x2] cmp r0, 0 bne _080A5E3C ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0 bl GetMonData adds r2, r0, 0 b _080A5E42 .pool _080A5E3C: ldr r0, =gTransformedPersonalities adds r0, r1, r0 ldr r2, [r0] _080A5E42: movs r0, 0xC0 lsls r0, 18 ands r0, r2 lsrs r0, 18 movs r1, 0xC0 lsls r1, 10 ands r1, r2 lsrs r1, 12 orrs r0, r1 movs r1, 0xC0 lsls r1, 2 ands r1, r2 lsrs r1, 6 orrs r0, r1 movs r1, 0x3 ands r1, r2 orrs r0, r1 movs r1, 0x1C bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _080A5E7C adds r0, r5, 0 b _080A5E86 .pool _080A5E7C: movs r1, 0xCE lsls r1, 1 adds r0, r1 lsls r0, 16 lsrs r0, 16 _080A5E86: ldr r1, =gUnknown_083021D8 lsls r0, 2 b _080A5F90 .pool _080A5E90: ldr r0, =0x00000181 cmp r5, r0 bne _080A5EB0 ldr r0, =gUnknown_08525F8C ldr r1, =gBattleMonForms adds r1, r4, r1 ldrb r1, [r1] adds r1, r0 ldrb r0, [r1] b _080A5F94 .pool _080A5EB0: movs r0, 0xCE lsls r0, 1 cmp r5, r0 bls _080A5EC0 ldr r0, =gUnknown_083021D8 b _080A5F92 .pool _080A5EC0: ldr r1, =gUnknown_083021D8 b _080A5F8E .pool _080A5EC8: cmp r5, 0xC9 bne _080A5F58 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r4, 2 adds r0, r1, r0 ldrh r0, [r0, 0x2] cmp r0, 0 bne _080A5F04 ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 movs r1, 0 bl GetMonData adds r2, r0, 0 b _080A5F0A .pool _080A5F04: ldr r0, =gTransformedPersonalities adds r0, r1, r0 ldr r2, [r0] _080A5F0A: movs r0, 0xC0 lsls r0, 18 ands r0, r2 lsrs r0, 18 movs r1, 0xC0 lsls r1, 10 ands r1, r2 lsrs r1, 12 orrs r0, r1 movs r1, 0xC0 lsls r1, 2 ands r1, r2 lsrs r1, 6 orrs r0, r1 movs r1, 0x3 ands r1, r2 orrs r0, r1 movs r1, 0x1C bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _080A5F44 adds r0, r5, 0 b _080A5F4E .pool _080A5F44: movs r1, 0xCE lsls r1, 1 adds r0, r1 lsls r0, 16 lsrs r0, 16 _080A5F4E: ldr r1, =gMonFrontPicCoords lsls r0, 2 b _080A5F90 .pool _080A5F58: ldr r0, =0x00000181 cmp r5, r0 bne _080A5F7C ldr r0, =gCastformFrontSpriteCoords ldr r1, =gBattleMonForms adds r1, r4, r1 ldrb r1, [r1] lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] b _080A5F94 .pool _080A5F7C: movs r0, 0xCE lsls r0, 1 cmp r5, r0 bls _080A5F8C ldr r0, =gMonFrontPicCoords b _080A5F92 .pool _080A5F8C: ldr r1, =gMonFrontPicCoords _080A5F8E: lsls r0, r5, 2 _080A5F90: adds r0, r1 _080A5F92: ldrb r0, [r0, 0x1] _080A5F94: pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end sub_80A5DB8 thumb_func_start sub_80A5FA0 sub_80A5FA0: @ 80A5FA0 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 adds r7, r4, 0 movs r5, 0 adds r0, r6, 0 bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A5FFE bl IsContest lsls r0, 24 cmp r0, 0 bne _080A5FFE ldr r0, =0x00000181 cmp r4, r0 bne _080A5FE8 ldr r0, =gUnknown_08525F88 ldr r1, =gBattleMonForms adds r1, r6, r1 ldrb r1, [r1] adds r1, r0 ldrb r5, [r1] b _080A5FFE .pool _080A5FE8: movs r0, 0xCE lsls r0, 1 cmp r4, r0 bls _080A5FF8 ldr r0, =gEnemyMonElevation b _080A5FFC .pool _080A5FF8: ldr r0, =gEnemyMonElevation adds r0, r7, r0 _080A5FFC: ldrb r5, [r0] _080A5FFE: adds r0, r5, 0 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_80A5FA0 thumb_func_start sub_80A600C sub_80A600C: @ 80A600C push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r5, r1, 16 lsls r2, 24 lsrs r7, r2, 24 adds r0, r6, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A6030 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A603E _080A6030: adds r0, r6, 0 adds r1, r5, 0 bl sub_80A5DB8 lsls r0, 24 lsrs r4, r0, 24 b _080A605C _080A603E: adds r0, r6, 0 adds r1, r5, 0 bl sub_80A5DB8 lsls r0, 24 lsrs r4, r0, 24 adds r0, r6, 0 adds r1, r5, 0 bl sub_80A5FA0 lsls r0, 24 lsrs r0, 24 subs r0, r4, r0 lsls r0, 16 lsrs r4, r0, 16 _080A605C: adds r0, r6, 0 bl GetBankIdentity ldr r3, =gUnknown_08525F58 lsls r0, 24 lsrs r0, 22 ldr r1, =gBattleTypeFlags ldr r1, [r1] movs r2, 0x1 ands r1, r2 lsls r1, 4 adds r0, r1 adds r0, r3 ldrb r0, [r0, 0x1] adds r0, r4 lsls r0, 24 lsrs r4, r0, 24 cmp r7, 0 beq _080A609C adds r0, r6, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A6096 adds r0, r4, 0 adds r0, 0x8 lsls r0, 24 lsrs r4, r0, 24 _080A6096: cmp r4, 0x68 bls _080A609C movs r4, 0x68 _080A609C: adds r0, r4, 0 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_80A600C thumb_func_start sub_80A60AC sub_80A60AC: @ 80A60AC push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r5, r1, 24 movs r0, 0xFD lsls r0, 24 adds r1, r0 lsrs r1, 24 cmp r1, 0x1 bhi _080A6126 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A60E8 ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A60E4 ldrh r1, [r2, 0x2] b _080A610E .pool _080A60E4: ldrh r1, [r2] b _080A610E _080A60E8: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A610C ldr r1, =gAnimSpeciesByBanks lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] b _080A610E .pool _080A610C: ldrh r1, [r1, 0x2] _080A610E: cmp r5, 0x3 bne _080A611C adds r0, r4, 0 movs r2, 0x1 bl sub_80A600C b _080A612E _080A611C: adds r0, r4, 0 movs r2, 0 bl sub_80A600C b _080A612E _080A6126: adds r0, r4, 0 adds r1, r5, 0 bl sub_80A5C6C _080A612E: lsls r0, 24 lsrs r0, 24 pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80A60AC thumb_func_start GetBankSpriteDefault_Y GetBankSpriteDefault_Y: @ 80A6138 push {lr} lsls r0, 24 lsrs r0, 24 movs r1, 0x4 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end GetBankSpriteDefault_Y thumb_func_start GetSubstituteSpriteDefault_Y GetSubstituteSpriteDefault_Y: @ 80A614C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A6170 adds r0, r4, 0 movs r1, 0x1 bl sub_80A5C6C lsls r0, 24 lsrs r0, 8 movs r1, 0x80 lsls r1, 13 b _080A6180 _080A6170: adds r0, r4, 0 movs r1, 0x1 bl sub_80A5C6C lsls r0, 24 lsrs r0, 8 movs r1, 0x88 lsls r1, 13 _080A6180: adds r0, r1 lsrs r0, 16 lsls r0, 24 lsrs r0, 24 pop {r4} pop {r1} bx r1 thumb_func_end GetSubstituteSpriteDefault_Y thumb_func_start sub_80A6190 sub_80A6190: @ 80A6190 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 movs r1, 0x1 bl sub_80A5C6C lsls r0, 24 lsrs r6, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A6238 adds r0, r5, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A61E4 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A621C ldr r1, =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty b _080A6202 .pool _080A61E4: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A621C ldr r1, =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty _080A6202: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 b _080A621E .pool _080A621C: ldrh r4, [r1, 0x2] _080A621E: adds r0, r5, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A6238 adds r0, r5, 0 adds r1, r4, 0 bl sub_80A5FA0 subs r0, r6, r0 lsls r0, 24 lsrs r6, r0, 24 _080A6238: adds r0, r6, 0 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80A6190 thumb_func_start GetAnimBankSpriteId GetAnimBankSpriteId: @ 80A6240 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 cmp r0, 0 bne _080A6268 ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl IsBankSpritePresent lsls r0, 24 cmp r0, 0 beq _080A62B6 ldr r1, =gBankSpriteIds ldrb r0, [r4] b _080A62C6 .pool _080A6268: cmp r0, 0x1 bne _080A6288 ldr r4, =gAnimBankTarget ldrb r0, [r4] bl IsBankSpritePresent lsls r0, 24 cmp r0, 0 beq _080A62B6 ldr r1, =gBankSpriteIds ldrb r0, [r4] b _080A62C6 .pool _080A6288: cmp r1, 0x2 bne _080A62A4 ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r4, 0x2 eors r0, r4 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A62B6 b _080A62C0 .pool _080A62A4: ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r4, 0x2 eors r0, r4 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080A62C0 _080A62B6: movs r0, 0xFF b _080A62CA .pool _080A62C0: ldr r1, =gBankSpriteIds ldrb r0, [r5] eors r0, r4 _080A62C6: adds r0, r1 ldrb r0, [r0] _080A62CA: pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end GetAnimBankSpriteId thumb_func_start StoreSpriteCallbackInData6 StoreSpriteCallbackInData6: @ 80A62D4 strh r1, [r0, 0x3A] lsrs r1, 16 strh r1, [r0, 0x3C] bx lr thumb_func_end StoreSpriteCallbackInData6 thumb_func_start sub_80A62DC sub_80A62DC: @ 80A62DC ldrh r2, [r0, 0x3A] movs r3, 0x3C ldrsh r1, [r0, r3] lsls r1, 16 orrs r2, r1 str r2, [r0, 0x1C] bx lr thumb_func_end sub_80A62DC thumb_func_start sub_80A62EC sub_80A62EC: @ 80A62EC push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A6340 movs r2, 0x2E ldrsh r0, [r4, r2] movs r2, 0x30 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x2E] adds r1, r0, r2 strh r1, [r4, 0x2E] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xFF ble _080A632C ldr r2, =0xffffff00 b _080A6334 .pool _080A632C: cmp r0, 0 bge _080A6338 movs r2, 0x80 lsls r2, 1 _080A6334: adds r0, r1, r2 strh r0, [r4, 0x2E] _080A6338: ldrh r0, [r4, 0x34] subs r0, 0x1 strh r0, [r4, 0x34] b _080A6346 _080A6340: adds r0, r4, 0 bl sub_80A62DC _080A6346: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A62EC thumb_func_start sub_80A634C sub_80A634C: @ 80A634C push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A63BC movs r2, 0x2E ldrsh r0, [r4, r2] ldrh r1, [r4, 0x38] lsls r1, 16 asrs r1, 24 ldrh r2, [r4, 0x30] adds r1, r2 lsls r1, 16 asrs r1, 16 bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] ldrh r1, [r4, 0x38] lsls r1, 16 asrs r1, 24 ldrh r2, [r4, 0x30] adds r1, r2 lsls r1, 16 asrs r1, 16 bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x2E] adds r1, r0, r2 strh r1, [r4, 0x2E] ldrh r0, [r4, 0x36] ldrh r2, [r4, 0x38] adds r0, r2 strh r0, [r4, 0x38] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xFF ble _080A63A8 ldr r2, =0xffffff00 b _080A63B0 .pool _080A63A8: cmp r0, 0 bge _080A63B4 movs r2, 0x80 lsls r2, 1 _080A63B0: adds r0, r1, r2 strh r0, [r4, 0x2E] _080A63B4: ldrh r0, [r4, 0x34] subs r0, 0x1 strh r0, [r4, 0x34] b _080A63C2 _080A63BC: adds r0, r4, 0 bl sub_80A62DC _080A63C2: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A634C thumb_func_start sub_80A63C8 sub_80A63C8: @ 80A63C8 push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A6444 movs r2, 0x2E ldrsh r0, [r4, r2] movs r2, 0x30 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x36 ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x2E] adds r1, r0, r2 strh r1, [r4, 0x2E] ldrh r0, [r4, 0x38] ldrh r2, [r4, 0x36] adds r0, r2 strh r0, [r4, 0x36] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xFF ble _080A6410 ldr r2, =0xffffff00 b _080A6418 .pool _080A6410: cmp r0, 0 bge _080A641C movs r2, 0x80 lsls r2, 1 _080A6418: adds r0, r1, r2 strh r0, [r4, 0x2E] _080A641C: ldrh r1, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] cmp r0, 0xFF ble _080A6430 ldr r2, =0xffffff00 b _080A6438 .pool _080A6430: cmp r0, 0 bge _080A643C movs r2, 0x80 lsls r2, 1 _080A6438: adds r0, r1, r2 strh r0, [r4, 0x36] _080A643C: ldrh r0, [r4, 0x34] subs r0, 0x1 strh r0, [r4, 0x34] b _080A644A _080A6444: adds r0, r4, 0 bl sub_80A62DC _080A644A: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A63C8 thumb_func_start sub_80A6450 sub_80A6450: @ 80A6450 push {r4,lr} adds r4, r0, 0 movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A64A4 movs r2, 0x2E ldrsh r0, [r4, r2] movs r2, 0x30 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x36 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x2E] adds r1, r0, r2 strh r1, [r4, 0x2E] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xFF ble _080A6490 ldr r2, =0xffffff00 b _080A6498 .pool _080A6490: cmp r0, 0 bge _080A649C movs r2, 0x80 lsls r2, 1 _080A6498: adds r0, r1, r2 strh r0, [r4, 0x2E] _080A649C: ldrh r0, [r4, 0x34] subs r0, 0x1 strh r0, [r4, 0x34] b _080A64AA _080A64A4: adds r0, r4, 0 bl sub_80A62DC _080A64AA: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6450 thumb_func_start sub_80A64B0 sub_80A64B0: @ 80A64B0 push {lr} adds r1, r0, 0 ldrh r2, [r1, 0x2E] movs r3, 0x2E ldrsh r0, [r1, r3] cmp r0, 0 ble _080A64C4 subs r0, r2, 0x1 strh r0, [r1, 0x2E] b _080A64CA _080A64C4: adds r0, r1, 0 bl sub_80A62DC _080A64CA: pop {r0} bx r0 thumb_func_end sub_80A64B0 thumb_func_start sub_80A64D0 sub_80A64D0: @ 80A64D0 push {r4,lr} adds r4, r0, 0 bl sub_80A64EC ldr r1, =sub_80A653C str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A64D0 thumb_func_start sub_80A64EC sub_80A64EC: @ 80A64EC push {r4,r5,lr} adds r4, r0, 0 movs r0, 0x30 ldrsh r1, [r4, r0] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r1, r0 ble _080A6502 ldrh r0, [r4, 0x2E] negs r0, r0 strh r0, [r4, 0x2E] _080A6502: movs r1, 0x32 ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] subs r0, r1 ldrh r5, [r4, 0x2E] movs r2, 0x2E ldrsh r1, [r4, r2] bl __divsi3 cmp r0, 0 bge _080A651C negs r0, r0 _080A651C: strh r0, [r4, 0x2E] movs r1, 0x36 ldrsh r0, [r4, r1] movs r2, 0x34 ldrsh r1, [r4, r2] subs r0, r1 movs r2, 0x2E ldrsh r1, [r4, r2] bl __divsi3 strh r0, [r4, 0x32] strh r5, [r4, 0x30] pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A64EC thumb_func_start sub_80A653C sub_80A653C: @ 80A653C push {lr} adds r1, r0, 0 ldrh r2, [r1, 0x2E] movs r3, 0x2E ldrsh r0, [r1, r3] cmp r0, 0 ble _080A6560 subs r0, r2, 0x1 strh r0, [r1, 0x2E] ldrh r0, [r1, 0x30] ldrh r2, [r1, 0x24] adds r0, r2 strh r0, [r1, 0x24] ldrh r0, [r1, 0x32] ldrh r3, [r1, 0x26] adds r0, r3 strh r0, [r1, 0x26] b _080A6566 _080A6560: adds r0, r1, 0 bl sub_80A62DC _080A6566: pop {r0} bx r0 thumb_func_end sub_80A653C thumb_func_start sub_80A656C sub_80A656C: @ 80A656C push {lr} adds r2, r0, 0 ldrh r1, [r2, 0x2E] movs r3, 0x2E ldrsh r0, [r2, r3] cmp r0, 0 ble _080A659C subs r0, r1, 0x1 strh r0, [r2, 0x2E] ldrh r0, [r2, 0x30] ldrh r1, [r2, 0x34] adds r0, r1 strh r0, [r2, 0x34] ldrh r1, [r2, 0x32] ldrh r3, [r2, 0x36] adds r1, r3 strh r1, [r2, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r2, 0x24] lsls r1, 16 asrs r1, 24 strh r1, [r2, 0x26] b _080A65A2 _080A659C: adds r0, r2, 0 bl sub_80A62DC _080A65A2: pop {r0} bx r0 thumb_func_end sub_80A656C thumb_func_start sub_80A65A8 sub_80A65A8: @ 80A65A8 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080A65D8 subs r0, r1, 0x1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x34] adds r0, r1 strh r0, [r4, 0x34] ldrh r1, [r4, 0x32] ldrh r2, [r4, 0x36] adds r1, r2 strh r1, [r4, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] lsls r1, 16 asrs r1, 24 strh r1, [r4, 0x26] b _080A65DE _080A65D8: adds r0, r4, 0 bl sub_80A62DC _080A65DE: adds r0, r4, 0 bl sub_80D30DC pop {r4} pop {r0} bx r0 thumb_func_end sub_80A65A8 thumb_func_start sub_80A65EC sub_80A65EC: @ 80A65EC push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x30] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x34] ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] ldr r0, =sub_80A64D0 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A65EC thumb_func_start sub_80A6630 sub_80A6630: @ 80A6630 push {r4,lr} adds r3, r0, 0 ldrh r1, [r3, 0x2E] movs r2, 0x2E ldrsh r0, [r3, r2] cmp r0, 0 ble _080A6674 subs r0, r1, 0x1 strh r0, [r3, 0x2E] ldr r2, =gSprites movs r4, 0x34 ldrsh r1, [r3, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0x30] ldrh r4, [r0, 0x24] adds r1, r4 strh r1, [r0, 0x24] movs r0, 0x34 ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r3, 0x32] ldrh r2, [r0, 0x26] adds r1, r2 strh r1, [r0, 0x26] b _080A667A .pool _080A6674: adds r0, r3, 0 bl sub_80A62DC _080A667A: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6630 thumb_func_start sub_80A6680 sub_80A6680: @ 80A6680 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080A66D0 subs r0, r1, 0x1 strh r0, [r4, 0x2E] ldrh r1, [r4, 0x30] ldrh r0, [r4, 0x34] adds r1, r0 strh r1, [r4, 0x34] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x36] adds r0, r2 strh r0, [r4, 0x36] ldr r3, =gSprites movs r0, 0x38 ldrsh r2, [r4, r0] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r3 lsls r1, 16 asrs r1, 24 strh r1, [r0, 0x24] movs r1, 0x38 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 ldrh r0, [r4, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r1, 0x26] b _080A66D6 .pool _080A66D0: adds r0, r4, 0 bl sub_80A62DC _080A66D6: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6680 thumb_func_start sub_80A66DC sub_80A66DC: @ 80A66DC push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080A673E subs r0, r1, 0x1 strh r0, [r4, 0x2E] ldrh r1, [r4, 0x32] lsls r0, r1, 16 asrs r0, 24 strh r0, [r4, 0x24] ldrh r0, [r4, 0x30] adds r1, r0 strh r1, [r4, 0x32] ldrh r1, [r4, 0x36] lsls r0, r1, 16 asrs r0, 24 strh r0, [r4, 0x26] ldrh r0, [r4, 0x34] adds r1, r0 strh r1, [r4, 0x36] movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x38 ldrsh r1, [r4, r2] bl __modsi3 cmp r0, 0 bne _080A6744 movs r1, 0x38 ldrsh r0, [r4, r1] cmp r0, 0 beq _080A6744 adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsls r0, r2, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _080A6744 _080A673E: adds r0, r4, 0 bl sub_80A62DC _080A6744: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A66DC thumb_func_start move_anim_8074EE0 move_anim_8074EE0: @ 80A674C push {r4,lr} adds r4, r0, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroyAnimSprite pop {r4} pop {r0} bx r0 thumb_func_end move_anim_8074EE0 thumb_func_start sub_80A6760 sub_80A6760: @ 80A6760 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x30] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x34] ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] ldr r0, =sub_80A64D0 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A6760 thumb_func_start sub_80A67A4 sub_80A67A4: @ 80A67A4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x38] bl ResetPaletteStructByUid adds r0, r4, 0 bl move_anim_8074EE0 pop {r4} pop {r0} bx r0 thumb_func_end sub_80A67A4 thumb_func_start sub_80A67BC sub_80A67BC: @ 80A67BC push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080A67D2 adds r0, r2, 0 bl sub_80A62DC _080A67D2: pop {r0} bx r0 thumb_func_end sub_80A67BC thumb_func_start sub_80A67D8 sub_80A67D8: @ 80A67D8 push {lr} adds r2, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080A67EE adds r0, r2, 0 bl sub_80A62DC _080A67EE: pop {r0} bx r0 thumb_func_end sub_80A67D8 thumb_func_start sub_80A67F4 sub_80A67F4: @ 80A67F4 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_80A67F4 thumb_func_start sub_80A6814 sub_80A6814: @ 80A6814 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6814 thumb_func_start sub_80A6838 sub_80A6838: @ 80A6838 push {r4,r5,lr} adds r5, r0, 0 ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A6838 thumb_func_start sub_80A6864 sub_80A6864: @ 80A6864 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 lsls r1, 16 lsrs r5, r1, 16 mov r8, r5 ldr r7, =gAnimBankAttacker ldrb r0, [r7] movs r1, 0 bl sub_80A5C6C lsls r0, 24 lsrs r6, r0, 24 ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 cmp r6, r0 bhi _080A68B0 cmp r6, r0 bcs _080A68A4 lsls r0, r5, 16 b _080A68C0 .pool _080A68A4: ldrb r0, [r7] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A68BC _080A68B0: ldrh r1, [r4, 0x20] lsls r0, r5, 16 asrs r0, 16 subs r1, r0 strh r1, [r4, 0x20] b _080A68C8 _080A68BC: mov r1, r8 lsls r0, r1, 16 _080A68C0: asrs r0, 16 ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] _080A68C8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80A6864 thumb_func_start sub_80A68D4 sub_80A68D4: @ 80A68D4 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] movs r5, 0 strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 movs r0, 0x2E ldrsh r1, [r4, r0] movs r0, 0x80 lsls r0, 8 bl __divsi3 strh r0, [r4, 0x3A] strh r5, [r4, 0x3C] pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A68D4 thumb_func_start sub_80A6900 sub_80A6900: @ 80A6900 push {r4,lr} adds r4, r0, 0 bl sub_80A6F3C lsls r0, 24 cmp r0, 0 bne _080A692C ldrh r0, [r4, 0x3A] ldrh r1, [r4, 0x3C] adds r0, r1 strh r0, [r4, 0x3C] lsls r0, 16 lsrs r0, 24 movs r2, 0x38 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] movs r0, 0 b _080A692E _080A692C: movs r0, 0x1 _080A692E: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A6900 thumb_func_start sub_80A6934 sub_80A6934: @ 80A6934 push {r4,lr} adds r4, r0, 0 bl sub_80A6F3C lsls r0, 24 cmp r0, 0 bne _080A6960 ldrh r0, [r4, 0x3A] ldrh r1, [r4, 0x3C] adds r0, r1 strh r0, [r4, 0x3C] lsls r0, 16 lsrs r0, 24 movs r2, 0x38 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r0, 0 b _080A6962 _080A6960: movs r0, 0x1 _080A6962: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A6934 thumb_func_start oamt_add_pos2_onto_pos1 oamt_add_pos2_onto_pos1: @ 80A6968 ldrh r1, [r0, 0x24] ldrh r2, [r0, 0x20] adds r1, r2 movs r2, 0 strh r1, [r0, 0x20] ldrh r1, [r0, 0x26] ldrh r3, [r0, 0x22] adds r1, r3 strh r1, [r0, 0x22] strh r2, [r0, 0x24] strh r2, [r0, 0x26] bx lr thumb_func_end oamt_add_pos2_onto_pos1 thumb_func_start sub_80A6980 sub_80A6980: @ 80A6980 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 cmp r1, 0 bne _080A69A8 ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A60AC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 bl sub_80A60AC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] _080A69A8: ldr r4, =gBattleAnimArgs movs r0, 0 ldrsh r1, [r4, r0] adds r0, r5, 0 bl sub_80A6864 ldrh r0, [r4, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x22] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A6980 thumb_func_start sub_80A69CC sub_80A69CC: @ 80A69CC push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 cmp r1, 0 bne _080A69F0 ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A60AC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 b _080A6A04 .pool _080A69F0: ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A60AC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 _080A6A04: bl sub_80A60AC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldr r4, =gBattleAnimArgs movs r0, 0 ldrsh r1, [r4, r0] adds r0, r5, 0 bl sub_80A6864 ldrh r0, [r4, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x22] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A69CC thumb_func_start GetBankSide GetBankSide: @ 80A6A30 lsls r0, 24 lsrs r0, 24 ldr r1, =gBanksByIdentity adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 bx lr .pool thumb_func_end GetBankSide thumb_func_start GetBankIdentity GetBankIdentity: @ 80A6A44 lsls r0, 24 lsrs r0, 24 ldr r1, =gBanksByIdentity adds r0, r1 ldrb r0, [r0] bx lr .pool thumb_func_end GetBankIdentity thumb_func_start GetBankByIdentity GetBankByIdentity: @ 80A6A54 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 movs r1, 0 ldr r0, =gNoOfAllBanks ldrb r2, [r0] cmp r1, r2 bcs _080A6A7E ldr r4, =gBanksByIdentity ldrb r0, [r4] cmp r0, r3 beq _080A6A7E _080A6A6C: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r2 bcs _080A6A7E adds r0, r1, r4 ldrb r0, [r0] cmp r0, r3 bne _080A6A6C _080A6A7E: adds r0, r1, 0 pop {r4} pop {r1} bx r1 .pool thumb_func_end GetBankByIdentity thumb_func_start IsBankSpritePresent IsBankSpritePresent: @ 80A6A90 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A6ABC ldr r0, =gAnimBankAttacker ldrb r0, [r0] cmp r0, r4 beq _080A6B0A ldr r0, =gAnimBankTarget ldrb r0, [r0] cmp r0, r4 beq _080A6B0A b _080A6B18 .pool _080A6ABC: ldr r0, =gBanksByIdentity adds r0, r4, r0 ldrb r0, [r0] cmp r0, 0xFF beq _080A6B18 adds r0, r4, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A6AF0 ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty b _080A6AFE .pool _080A6AF0: ldr r1, =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty _080A6AFE: adds r0, r1 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080A6B18 _080A6B0A: movs r0, 0x1 b _080A6B1A .pool _080A6B18: movs r0, 0 _080A6B1A: pop {r4,r5} pop {r1} bx r1 thumb_func_end IsBankSpritePresent thumb_func_start IsDoubleBattle IsDoubleBattle: @ 80A6B20 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 bx lr .pool thumb_func_end IsDoubleBattle thumb_func_start sub_80A6B30 sub_80A6B30: @ 80A6B30 push {r4,lr} adds r4, r0, 0 bl IsContest lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080A6B64 ldr r0, =gUnknown_0202305C ldr r0, [r0] str r0, [r4] ldr r0, =gUnknown_02023060 ldr r0, [r0] str r0, [r4, 0x4] movs r1, 0 movs r0, 0xE strb r0, [r4, 0x8] movs r0, 0x1 strb r0, [r4, 0x9] strh r1, [r4, 0xA] b _080A6B7E .pool _080A6B64: ldr r0, =gUnknown_0202305C ldr r0, [r0] str r0, [r4] ldr r0, =gUnknown_02023060 ldr r0, [r0] str r0, [r4, 0x4] movs r0, 0x8 strb r0, [r4, 0x8] movs r0, 0x1 strb r0, [r4, 0x9] movs r0, 0x80 lsls r0, 2 strh r0, [r4, 0xA] _080A6B7E: strh r1, [r4, 0xC] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A6B30 thumb_func_start sub_80A6B90 sub_80A6B90: @ 80A6B90 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 bl IsContest lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080A6BC4 ldr r0, =gUnknown_0202305C ldr r0, [r0] str r0, [r4] ldr r0, =gUnknown_02023060 ldr r0, [r0] str r0, [r4, 0x4] movs r1, 0 movs r0, 0xE strb r0, [r4, 0x8] movs r0, 0x1 strb r0, [r4, 0x9] strh r1, [r4, 0xA] b _080A6BEA .pool _080A6BC4: cmp r5, 0x1 bne _080A6BD0 adds r0, r4, 0 bl sub_80A6B30 b _080A6BEC _080A6BD0: ldr r0, =gUnknown_0202305C ldr r0, [r0] str r0, [r4] ldr r0, =gUnknown_02023060 ldr r0, [r0] str r0, [r4, 0x4] movs r0, 0x9 strb r0, [r4, 0x8] movs r0, 0x2 strb r0, [r4, 0x9] movs r0, 0xC0 lsls r0, 2 strh r0, [r4, 0xA] _080A6BEA: strh r1, [r4, 0xC] _080A6BEC: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A6B90 thumb_func_start sub_80A6BFC sub_80A6BFC: @ 80A6BFC push {r4,r5,lr} adds r4, r0, 0 ldr r0, =gUnknown_0202305C ldr r0, [r0] str r0, [r4] ldr r0, =gUnknown_02023060 ldr r0, [r0] str r0, [r4, 0x4] bl IsContest lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 beq _080A6C30 movs r0, 0 movs r1, 0xE strb r1, [r4, 0x8] movs r1, 0x1 strb r1, [r4, 0x9] strh r0, [r4, 0xA] strh r0, [r4, 0xC] b _080A6C60 .pool _080A6C30: ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A8364 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x1 bne _080A6C50 movs r0, 0x8 strb r0, [r4, 0x8] strb r1, [r4, 0x9] movs r0, 0x80 lsls r0, 2 b _080A6C5C .pool _080A6C50: movs r0, 0x9 strb r0, [r4, 0x8] movs r0, 0x2 strb r0, [r4, 0x9] movs r0, 0xC0 lsls r0, 2 _080A6C5C: strh r0, [r4, 0xA] strh r5, [r4, 0xC] _080A6C60: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A6BFC thumb_func_start sub_80A6C68 sub_80A6C68: @ 80A6C68 push {lr} sub sp, 0x20 adds r1, r0, 0 add r0, sp, 0xC bl sub_80A6B90 movs r0, 0 str r0, [sp, 0x1C] add r0, sp, 0x1C ldr r1, [sp, 0xC] ldr r2, =0x05000800 bl CpuSet add r0, sp, 0xC ldrb r0, [r0, 0x9] ldr r1, [sp, 0xC] movs r2, 0x80 lsls r2, 6 add r3, sp, 0xC ldrh r3, [r3, 0xA] bl LoadBgTiles add r0, sp, 0xC ldrb r0, [r0, 0x9] movs r1, 0x20 str r1, [sp] movs r1, 0x40 str r1, [sp, 0x4] movs r1, 0x11 str r1, [sp, 0x8] movs r1, 0 movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect add r0, sp, 0xC ldrb r0, [r0, 0x9] bl CopyBgTilemapBufferToVram add sp, 0x20 pop {r0} bx r0 .pool thumb_func_end sub_80A6C68 thumb_func_start sub_80A6CC0 sub_80A6CC0: @ 80A6CC0 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x4 adds r5, r0, 0 mov r8, r1 adds r6, r2, 0 movs r0, 0 str r0, [sp] ldr r4, =gUnknown_0202305C ldr r1, [r4] ldr r2, =0x05000800 mov r0, sp bl CpuSet ldr r1, [r4] mov r0, r8 bl LZDecompressWram lsls r5, 24 lsrs r5, 24 ldr r1, [r4] movs r2, 0x80 lsls r2, 6 lsls r6, 16 lsrs r6, 16 adds r0, r5, 0 adds r3, r6, 0 bl LoadBgTiles add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80A6CC0 thumb_func_start sub_80A6D10 sub_80A6D10: @ 80A6D10 push {r4,r5,lr} sub sp, 0xC adds r4, r0, 0 adds r5, r1, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x20 str r0, [sp] movs r0, 0x40 str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0 movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect adds r0, r4, 0 adds r1, r5, 0 movs r2, 0 movs r3, 0 bl CopyToBgTilemapBuffer add sp, 0xC pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A6D10 thumb_func_start sub_80A6D48 sub_80A6D48: @ 80A6D48 push {r4,lr} adds r4, r0, 0 bl sub_80A6D10 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl CopyBgTilemapBufferToVram pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6D48 thumb_func_start sub_80A6D60 sub_80A6D60: @ 80A6D60 push {r4,r5,lr} adds r4, r0, 0 adds r5, r2, 0 ldrb r0, [r4, 0x9] bl sub_80A6D10 bl IsContest lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080A6D86 ldrb r0, [r4, 0x8] ldr r1, [r4, 0x4] lsls r3, r5, 24 lsrs r3, 24 movs r2, 0 bl sub_80A4720 _080A6D86: ldrb r0, [r4, 0x9] bl CopyBgTilemapBufferToVram pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A6D60 thumb_func_start sub_80A6D94 sub_80A6D94: @ 80A6D94 push {lr} bl IsContest lsls r0, 24 cmp r0, 0 bne _080A6DA4 movs r0, 0x2 b _080A6DA6 _080A6DA4: movs r0, 0x1 _080A6DA6: pop {r1} bx r1 thumb_func_end sub_80A6D94 thumb_func_start sub_80A6DAC sub_80A6DAC: @ 80A6DAC push {lr} lsls r0, 24 cmp r0, 0 beq _080A6DBE bl IsContest lsls r0, 24 cmp r0, 0 beq _080A6DD4 _080A6DBE: movs r0, 0x3 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x3 movs r1, 0x1 movs r2, 0x1 bl SetAnimBgAttribute b _080A6DE8 _080A6DD4: movs r0, 0x3 movs r1, 0 movs r2, 0x1 bl SetAnimBgAttribute movs r0, 0x3 movs r1, 0x1 movs r2, 0 bl SetAnimBgAttribute _080A6DE8: pop {r0} bx r0 thumb_func_end sub_80A6DAC thumb_func_start sub_80A6DEC sub_80A6DEC: @ 80A6DEC push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl sub_80A6E14 ldr r1, =sub_80A65A8 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A6DEC thumb_func_start sub_80A6E14 sub_80A6E14: @ 80A6E14 push {r4-r6,lr} adds r5, r0, 0 ldrh r0, [r5, 0x32] ldrh r1, [r5, 0x30] subs r0, r1 ldrh r4, [r5, 0x36] ldrh r1, [r5, 0x34] subs r4, r1 lsls r4, 24 lsrs r4, 16 lsls r0, 24 asrs r0, 16 movs r2, 0x2E ldrsh r1, [r5, r2] bl __divsi3 movs r6, 0 strh r0, [r5, 0x30] lsls r4, 16 asrs r4, 16 movs r0, 0x2E ldrsh r1, [r5, r0] adds r0, r4, 0 bl __divsi3 strh r0, [r5, 0x32] strh r6, [r5, 0x36] strh r6, [r5, 0x34] pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80A6E14 thumb_func_start obj_translate_based_on_private_1_2_3_4 obj_translate_based_on_private_1_2_3_4: @ 80A6E54 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 movs r0, 0x32 ldrsh r1, [r7, r0] movs r2, 0x30 ldrsh r0, [r7, r2] subs r1, r0 movs r3, 0x36 ldrsh r2, [r7, r3] movs r3, 0x34 ldrsh r0, [r7, r3] subs r2, r0 lsrs r0, r1, 31 mov r8, r0 lsrs r3, r2, 31 mov r9, r3 cmp r1, 0 bge _080A6E80 negs r1, r1 _080A6E80: lsls r0, r1, 24 lsrs r6, r0, 16 adds r0, r2, 0 cmp r0, 0 bge _080A6E8C negs r0, r0 _080A6E8C: lsls r0, 24 lsrs r5, r0, 16 movs r0, 0x2E ldrsh r4, [r7, r0] adds r0, r6, 0 adds r1, r4, 0 bl __divsi3 lsls r0, 16 lsrs r6, r0, 16 adds r0, r5, 0 adds r1, r4, 0 bl __divsi3 lsls r0, 16 lsrs r5, r0, 16 mov r2, r8 cmp r2, 0 beq _080A6EB8 movs r0, 0x1 orrs r6, r0 b _080A6EBC _080A6EB8: ldr r0, =0x0000fffe ands r6, r0 _080A6EBC: mov r3, r9 cmp r3, 0 beq _080A6ECC movs r0, 0x1 orrs r5, r0 b _080A6ED0 .pool _080A6ECC: ldr r0, =0x0000fffe ands r5, r0 _080A6ED0: movs r0, 0 strh r6, [r7, 0x30] strh r5, [r7, 0x32] strh r0, [r7, 0x36] strh r0, [r7, 0x34] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end obj_translate_based_on_private_1_2_3_4 thumb_func_start sub_80A6EEC sub_80A6EEC: @ 80A6EEC push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 ldr r1, =sub_80A6F98 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A6EEC thumb_func_start sub_80A6F14 sub_80A6F14: @ 80A6F14 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 ldr r1, =sub_80A6FB4 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A6F14 thumb_func_start sub_80A6F3C sub_80A6F3C: @ 80A6F3C push {r4-r6,lr} adds r2, r0, 0 movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0 bne _080A6F4C movs r0, 0x1 b _080A6F90 _080A6F4C: ldrh r1, [r2, 0x30] ldrh r4, [r2, 0x32] ldrh r6, [r2, 0x34] ldrh r5, [r2, 0x36] adds r0, r6, r1 lsls r3, r0, 16 lsrs r6, r3, 16 adds r0, r5, r4 lsls r0, 16 lsrs r5, r0, 16 movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _080A6F6E lsrs r0, r3, 24 negs r0, r0 b _080A6F70 _080A6F6E: lsrs r0, r3, 24 _080A6F70: strh r0, [r2, 0x24] movs r0, 0x1 ands r4, r0 cmp r4, 0 beq _080A6F80 lsrs r0, r5, 8 negs r0, r0 b _080A6F82 _080A6F80: lsrs r0, r5, 8 _080A6F82: strh r0, [r2, 0x26] strh r6, [r2, 0x34] strh r5, [r2, 0x36] ldrh r0, [r2, 0x2E] subs r0, 0x1 strh r0, [r2, 0x2E] movs r0, 0 _080A6F90: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80A6F3C thumb_func_start sub_80A6F98 sub_80A6F98: @ 80A6F98 push {r4,lr} adds r4, r0, 0 bl sub_80A6F3C lsls r0, 24 cmp r0, 0 beq _080A6FAC adds r0, r4, 0 bl sub_80A62DC _080A6FAC: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6F98 thumb_func_start sub_80A6FB4 sub_80A6FB4: @ 80A6FB4 push {r4,lr} adds r4, r0, 0 bl sub_8039E9C adds r0, r4, 0 bl sub_80A6F3C lsls r0, 24 cmp r0, 0 beq _080A6FCE adds r0, r4, 0 bl sub_80A62DC _080A6FCE: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6FB4 thumb_func_start sub_80A6FD4 sub_80A6FD4: @ 80A6FD4 push {r4,lr} adds r4, r0, 0 movs r0, 0x32 ldrsh r1, [r4, r0] movs r2, 0x30 ldrsh r0, [r4, r2] subs r0, r1, r0 cmp r0, 0 bge _080A6FE8 negs r0, r0 _080A6FE8: lsls r0, 8 movs r2, 0x2E ldrsh r1, [r4, r2] bl __divsi3 strh r0, [r4, 0x2E] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 pop {r4} pop {r0} bx r0 thumb_func_end sub_80A6FD4 thumb_func_start sub_80A7000 sub_80A7000: @ 80A7000 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl sub_80A6FD4 ldr r1, =sub_80A6F98 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A7000 thumb_func_start sub_80A7028 sub_80A7028: @ 80A7028 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 movs r0, 0x32 ldrsh r1, [r7, r0] movs r2, 0x30 ldrsh r0, [r7, r2] subs r1, r0 movs r3, 0x36 ldrsh r2, [r7, r3] movs r3, 0x34 ldrsh r0, [r7, r3] subs r2, r0 lsrs r0, r1, 31 mov r8, r0 lsrs r3, r2, 31 mov r9, r3 cmp r1, 0 bge _080A7054 negs r1, r1 _080A7054: lsls r0, r1, 20 lsrs r6, r0, 16 adds r0, r2, 0 cmp r0, 0 bge _080A7060 negs r0, r0 _080A7060: lsls r0, 20 lsrs r5, r0, 16 movs r0, 0x2E ldrsh r4, [r7, r0] adds r0, r6, 0 adds r1, r4, 0 bl __divsi3 lsls r0, 16 lsrs r6, r0, 16 adds r0, r5, 0 adds r1, r4, 0 bl __divsi3 lsls r0, 16 lsrs r5, r0, 16 mov r2, r8 cmp r2, 0 beq _080A708C movs r0, 0x1 orrs r6, r0 b _080A7090 _080A708C: ldr r0, =0x0000fffe ands r6, r0 _080A7090: mov r3, r9 cmp r3, 0 beq _080A70A0 movs r0, 0x1 orrs r5, r0 b _080A70A4 .pool _080A70A0: ldr r0, =0x0000fffe ands r5, r0 _080A70A4: movs r0, 0 strh r6, [r7, 0x30] strh r5, [r7, 0x32] strh r0, [r7, 0x36] strh r0, [r7, 0x34] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A7028 thumb_func_start sub_80A70C0 sub_80A70C0: @ 80A70C0 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl sub_80A7028 ldr r1, =sub_80A7144 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A70C0 thumb_func_start sub_80A70E8 sub_80A70E8: @ 80A70E8 push {r4-r6,lr} adds r2, r0, 0 movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0 bne _080A70F8 movs r0, 0x1 b _080A713C _080A70F8: ldrh r1, [r2, 0x30] ldrh r4, [r2, 0x32] ldrh r6, [r2, 0x34] ldrh r5, [r2, 0x36] adds r0, r6, r1 lsls r3, r0, 16 lsrs r6, r3, 16 adds r0, r5, r4 lsls r0, 16 lsrs r5, r0, 16 movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _080A711A lsrs r0, r3, 20 negs r0, r0 b _080A711C _080A711A: lsrs r0, r3, 20 _080A711C: strh r0, [r2, 0x24] movs r0, 0x1 ands r4, r0 cmp r4, 0 beq _080A712C lsrs r0, r5, 4 negs r0, r0 b _080A712E _080A712C: lsrs r0, r5, 4 _080A712E: strh r0, [r2, 0x26] strh r6, [r2, 0x34] strh r5, [r2, 0x36] ldrh r0, [r2, 0x2E] subs r0, 0x1 strh r0, [r2, 0x2E] movs r0, 0 _080A713C: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80A70E8 thumb_func_start sub_80A7144 sub_80A7144: @ 80A7144 push {r4,lr} adds r4, r0, 0 bl sub_80A70E8 lsls r0, 24 cmp r0, 0 beq _080A7158 adds r0, r4, 0 bl sub_80A62DC _080A7158: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A7144 thumb_func_start sub_80A7160 sub_80A7160: @ 80A7160 push {r4,lr} adds r4, r0, 0 movs r0, 0x32 ldrsh r1, [r4, r0] movs r2, 0x30 ldrsh r0, [r4, r2] subs r0, r1, r0 cmp r0, 0 bge _080A7174 negs r0, r0 _080A7174: lsls r0, 4 movs r2, 0x2E ldrsh r1, [r4, r2] bl __divsi3 strh r0, [r4, 0x2E] adds r0, r4, 0 bl sub_80A7028 pop {r4} pop {r0} bx r0 thumb_func_end sub_80A7160 thumb_func_start sub_80A718C sub_80A718C: @ 80A718C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 bl sub_80A7160 ldr r1, =sub_80A7144 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A718C thumb_func_start obj_id_set_rotscale obj_id_set_rotscale: @ 80A71B4 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 16 lsls r3, 16 lsrs r3, 16 ldr r5, =0xffff0000 lsls r2, 16 lsrs r1, 16 orrs r1, r2 str r1, [sp] ldr r0, [sp, 0x4] ands r0, r5 orrs r0, r3 str r0, [sp, 0x4] bl sub_80A7238 lsls r0, 24 cmp r0, 0 beq _080A71F0 mov r0, sp ldrh r0, [r0] negs r0, r0 lsls r0, 16 lsrs r0, 16 ldr r1, [sp] ands r1, r5 orrs r1, r0 str r1, [sp] _080A71F0: ldr r1, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x3] lsls r4, 26 lsrs r4, 27 add r5, sp, 0x8 mov r0, sp adds r1, r5, 0 movs r2, 0x1 movs r3, 0x2 bl ObjAffineSet ldr r0, =gOamMatrices lsls r4, 3 adds r4, r0 ldrh r0, [r5] strh r0, [r4] ldrh r0, [r5, 0x2] strh r0, [r4, 0x2] ldrh r0, [r5, 0x4] strh r0, [r4, 0x4] ldrh r0, [r5, 0x6] strh r0, [r4, 0x6] add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end obj_id_set_rotscale thumb_func_start sub_80A7238 sub_80A7238: @ 80A7238 push {r4,lr} bl IsContest lsls r0, 24 cmp r0, 0 beq _080A7268 ldr r4, =gSprites movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 movs r2, 0x32 ldrsh r0, [r1, r2] cmp r0, 0xC9 beq _080A7268 movs r0, 0x1 b _080A726A .pool _080A7268: movs r0, 0 _080A726A: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A7238 thumb_func_start sub_80A7270 sub_80A7270: @ 80A7270 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsrs r1, 24 mov r8, r1 ldr r1, =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r4, r0, r1 ldrh r0, [r4, 0x2E] lsls r0, 24 lsrs r7, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A72A6 adds r0, r7, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A72B4 _080A72A6: adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _080A72B4: ldr r1, =gSprites lsls r4, r6, 4 adds r0, r4, r6 lsls r0, 2 adds r5, r0, r1 movs r0, 0x3 mov r1, r8 ands r1, r0 lsls r1, 2 ldrb r2, [r5, 0x1] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x1] adds r2, r5, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] bl IsContest lsls r0, 24 cmp r0, 0 bne _080A7312 ldrb r0, [r5, 0x1] lsls r0, 30 cmp r0, 0 bne _080A7312 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r7, 1 adds r0, r7 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x6] movs r0, 0x1F ands r1, r0 lsls r1, 1 ldrb r2, [r5, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x3] _080A7312: ldr r1, =gSprites adds r0, r4, r6 lsls r0, 2 adds r0, r1 ldrb r3, [r0, 0x1] movs r1, 0x3 orrs r3, r1 strb r3, [r0, 0x1] lsrs r1, r3, 6 ldrb r2, [r0, 0x3] lsrs r2, 6 lsls r3, 30 lsrs r3, 30 bl CalcCenterToCornerVec pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A7270 thumb_func_start sub_80A7344 sub_80A7344: @ 80A7344 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r2, 0x80 lsls r2, 1 adds r0, r4, 0 adds r1, r2, 0 movs r3, 0 bl obj_id_set_rotscale ldr r1, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r2, [r0, 0x1] movs r1, 0x4 negs r1, r1 ands r1, r2 movs r2, 0x1 orrs r1, r2 movs r2, 0xD negs r2, r2 ands r1, r2 strb r1, [r0, 0x1] adds r3, r0, 0 adds r3, 0x2C ldrb r2, [r3] movs r1, 0x7F ands r1, r2 strb r1, [r3] ldrb r3, [r0, 0x1] lsrs r1, r3, 6 ldrb r2, [r0, 0x3] lsrs r2, 6 lsls r3, 30 lsrs r3, 30 bl CalcCenterToCornerVec pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A7344 thumb_func_start sub_80A73A0 sub_80A73A0: @ 80A73A0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r2, r1, r2 ldrb r0, [r2, 0x3] lsls r0, 26 lsrs r0, 27 ldr r1, =gOamMatrices lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x4] movs r3, 0x4 ldrsh r0, [r0, r3] cmp r0, 0 bge _080A73CC negs r0, r0 lsls r0, 16 lsrs r1, r0, 16 _080A73CC: lsls r0, r1, 16 asrs r0, 19 strh r0, [r2, 0x26] pop {r0} bx r0 .pool thumb_func_end sub_80A73A0 thumb_func_start sub_80A73E0 sub_80A73E0: @ 80A73E0 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r4, r0, 0 ldr r0, [sp, 0x28] lsls r1, 24 lsrs r6, r1, 24 lsls r2, 16 lsrs r5, r2, 16 lsls r3, 16 lsrs r7, r3, 16 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080A7486 adds r0, r4, 0 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] cmp r6, 0 beq _080A742E ldrb 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 _080A742E: ldr r6, =0xffff0000 lsls r0, r7, 16 orrs r5, r0 str r5, [sp] ldr r0, [sp, 0x4] ands r0, r6 mov r1, r8 orrs r0, r1 str r0, [sp, 0x4] bl sub_80A7238 lsls r0, 24 cmp r0, 0 beq _080A745C mov r0, sp ldrh r0, [r0] negs r0, r0 lsls r0, 16 lsrs r0, 16 ldr r1, [sp] ands r1, r6 orrs r1, r0 str r1, [sp] _080A745C: ldrb r4, [r4, 0x3] lsls r4, 26 lsrs r4, 27 add r5, sp, 0x8 mov r0, sp adds r1, r5, 0 movs r2, 0x1 movs r3, 0x2 bl ObjAffineSet ldr r0, =gOamMatrices lsls r4, 3 adds r4, r0 ldrh r0, [r5] strh r0, [r4] ldrh r0, [r5, 0x2] strh r0, [r4, 0x2] ldrh r0, [r5, 0x4] strh r0, [r4, 0x4] ldrh r0, [r5, 0x6] strh r0, [r4, 0x6] _080A7486: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A73E0 thumb_func_start sub_80A749C sub_80A749C: @ 80A749C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r3, 0x80 lsls r3, 1 movs r0, 0 str r0, [sp] adds r0, r4, 0 movs r1, 0x1 adds r2, r3, 0 bl sub_80A73E0 adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldrb 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 add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_80A749C thumb_func_start sub_80A74DC sub_80A74DC: @ 80A74DC push {lr} lsls r0, 16 asrs r0, 16 lsls r1, 16 asrs r1, 16 bl ArcTan2 lsls r0, 16 lsrs r0, 16 pop {r1} bx r1 thumb_func_end sub_80A74DC thumb_func_start sub_80A74F4 sub_80A74F4: @ 80A74F4 push {lr} lsls r0, 16 asrs r0, 16 lsls r1, 16 asrs r1, 16 bl sub_80A74DC lsls r0, 16 negs r0, r0 lsrs r0, 16 pop {r1} bx r1 thumb_func_end sub_80A74F4 thumb_func_start sub_80A750C sub_80A750C: @ 80A750C push {r4-r7,lr} lsls r1, 24 lsls r0, 20 lsrs r0, 16 cmp r1, 0 bne _080A7588 ldr r2, =gPlttBufferUnfaded ldr r1, =gPlttBufferFaded lsls r0, 1 adds r4, r0, r1 adds r5, r0, r2 movs r6, 0xF _080A7524: ldr r0, [r5] lsls r2, r0, 27 lsrs r2, 27 lsls r1, r0, 22 lsrs r1, 27 adds r2, r1 lsls r0, 17 lsrs r0, 27 adds r0, r2 movs r1, 0x3 bl __udivsi3 lsls r0, 16 lsrs r0, 16 movs r1, 0x1F ands r0, r1 ldrb r1, [r4] movs r3, 0x20 negs r3, r3 adds r2, r3, 0 ands r1, r2 orrs r1, r0 strb r1, [r4] lsls r3, r0, 5 ldrh r1, [r4] ldr r7, =0xfffffc1f adds r2, r7, 0 ands r1, r2 orrs r1, r3 strh r1, [r4] lsls r0, 2 ldrb r1, [r4, 0x1] movs r3, 0x7D negs r3, r3 adds r2, r3, 0 ands r1, r2 orrs r1, r0 strb r1, [r4, 0x1] adds r4, 0x2 adds r5, 0x2 subs r6, 0x1 cmp r6, 0 bge _080A7524 b _080A7598 .pool _080A7588: lsls r1, r0, 1 ldr r0, =gPlttBufferUnfaded adds r0, r1, r0 ldr r2, =gPlttBufferFaded adds r1, r2 ldr r2, =0x04000008 bl CpuSet _080A7598: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A750C thumb_func_start sub_80A75AC sub_80A75AC: @ 80A75AC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r4, [sp, 0x28] ldr r5, [sp, 0x2C] ldr r6, [sp, 0x30] lsls r0, 24 lsls r1, 24 lsrs r7, r1, 24 lsls r2, 24 lsrs r2, 24 mov r8, r2 lsls r3, 24 lsrs r3, 24 mov r9, r3 lsls r4, 24 lsrs r4, 24 mov r10, r4 lsls r5, 24 lsrs r5, 24 str r5, [sp] lsls r6, 24 lsrs r6, 24 str r6, [sp, 0x4] movs r4, 0 cmp r0, 0 beq _080A7602 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A75F6 movs r4, 0xE b _080A7602 _080A75F6: bl sub_80A6D94 lsls r0, 24 lsrs r0, 24 movs r4, 0x1 lsls r4, r0 _080A7602: cmp r7, 0 beq _080A7614 ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A7614: mov r0, r8 cmp r0, 0 beq _080A7628 ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A7628: mov r0, r9 cmp r0, 0 beq _080A764E ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r5, 0x2 eors r0, r5 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A764E ldrb r0, [r6] eors r0, r5 adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A764E: mov r0, r10 cmp r0, 0 beq _080A7674 ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r5, 0x2 eors r0, r5 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7674 ldrb r0, [r6] eors r0, r5 adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A7674: ldr r0, [sp] cmp r0, 0 beq _080A769A bl IsContest lsls r0, 24 cmp r0, 0 bne _080A7694 movs r0, 0x80 lsls r0, 1 b _080A7698 .pool _080A7694: movs r0, 0x80 lsls r0, 7 _080A7698: orrs r4, r0 _080A769A: ldr r0, [sp, 0x4] cmp r0, 0 beq _080A76B0 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A76B0 movs r0, 0x80 lsls r0, 2 orrs r4, r0 _080A76B0: adds r0, r4, 0 add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80A75AC thumb_func_start sub_80A76C4 sub_80A76C4: @ 80A76C4 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 lsrs r6, r1, 24 lsls r2, 24 lsrs r7, r2, 24 lsls r3, 24 lsrs r3, 24 mov r8, r3 movs r4, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A76F2 cmp r5, 0 beq _080A77A0 movs r4, 0x80 lsls r4, 11 b _080A77A0 _080A76F2: cmp r5, 0 beq _080A771A movs r0, 0 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A771A movs r0, 0 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r4, 0x1 lsls r4, r0 _080A771A: cmp r6, 0 beq _080A7746 movs r0, 0x2 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7746 movs r0, 0x2 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A7746: cmp r7, 0 beq _080A7772 movs r0, 0x1 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7772 movs r0, 0x1 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A7772: mov r0, r8 cmp r0, 0 beq _080A77A0 movs r0, 0x3 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A77A0 movs r0, 0x3 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 orrs r4, r0 _080A77A0: adds r0, r4, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80A76C4 thumb_func_start sub_80A77AC sub_80A77AC: @ 80A77AC lsls r0, 24 lsrs r0, 24 bx lr thumb_func_end sub_80A77AC thumb_func_start sub_80A77B4 sub_80A77B4: @ 80A77B4 push {lr} lsls r0, 24 lsrs r0, 24 bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end sub_80A77B4 thumb_func_start sub_80A77C8 sub_80A77C8: @ 80A77C8 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080A7806 ldr r2, =gBattleAnimArgs movs r3, 0x6 ldrsh r0, [r2, r3] movs r1, 0 cmp r0, 0 bne _080A77E2 movs r1, 0x1 _080A77E2: movs r3, 0x4 ldrsh r0, [r2, r3] cmp r0, 0 bne _080A77F8 adds r0, r4, 0 bl sub_80A69CC b _080A77FE .pool _080A77F8: adds r0, r4, 0 bl sub_80A6980 _080A77FE: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080A781A _080A7806: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x30 ands r0, r1 cmp r0, 0 beq _080A781A adds r0, r4, 0 bl move_anim_8074EE0 _080A781A: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A77C8 thumb_func_start sub_80A7820 sub_80A7820: @ 80A7820 push {r4-r7,lr} adds r5, r0, 0 ldr r6, =gBattleAnimArgs movs r1, 0xA ldrsh r0, [r6, r1] movs r1, 0xFF lsls r1, 8 ands r0, r1 movs r1, 0 cmp r0, 0 bne _080A7838 movs r1, 0x1 _080A7838: ldrb r0, [r6, 0xA] movs r7, 0x1 cmp r0, 0 bne _080A7842 movs r7, 0x3 _080A7842: adds r0, r5, 0 bl sub_80A69CC ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A785C ldrh r0, [r6, 0x4] negs r0, r0 strh r0, [r6, 0x4] _080A785C: ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] adds r0, r1 strh r0, [r5, 0x32] ldrb r0, [r4] adds r1, r7, 0 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] adds r0, r6 strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A7820 thumb_func_start sub_80A78AC sub_80A78AC: @ 80A78AC push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A78CC ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] _080A78CC: ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] adds r0, r1 strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] adds r0, r1 strh r0, [r6, 0x36] ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] adds r0, r6, 0 bl sub_80A68D4 ldr r0, =sub_80A791C str r0, [r6, 0x1C] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80A78AC thumb_func_start sub_80A791C sub_80A791C: @ 80A791C push {r4,lr} adds r4, r0, 0 bl sub_80A6900 lsls r0, 24 cmp r0, 0 beq _080A7930 adds r0, r4, 0 bl DestroyAnimSprite _080A7930: pop {r4} pop {r0} bx r0 thumb_func_end sub_80A791C thumb_func_start sub_80A7938 sub_80A7938: @ 80A7938 push {r4-r7,lr} adds r5, r0, 0 ldr r0, =gBattleAnimArgs movs r2, 0xC ldrsh r1, [r0, r2] cmp r1, 0 bne _080A7950 movs r4, 0x1 movs r7, 0x3 b _080A7954 .pool _080A7950: movs r4, 0 movs r7, 0x1 _080A7954: movs r1, 0xA ldrsh r0, [r0, r1] cmp r0, 0 bne _080A796C adds r0, r5, 0 adds r1, r4, 0 bl sub_80A69CC ldr r0, =gAnimBankAttacker b _080A7976 .pool _080A796C: adds r0, r5, 0 adds r1, r4, 0 bl sub_80A6980 ldr r0, =gAnimBankTarget _080A7976: ldrb r6, [r0] ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A798E ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] _080A798E: adds r0, r5, 0 adds r1, r4, 0 bl sub_80A6980 ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r5, 0x2E] adds r0, r6, 0 movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r2, [r4, 0x4] adds r0, r2 strh r0, [r5, 0x32] adds r0, r6, 0 adds r1, r7, 0 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A7938 thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode duplicate_obj_of_side_rel2move_in_transparent_mode: @ 80A79E8 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 bl GetAnimBankSpriteId lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _080A7A52 movs r6, 0 ldr r2, =gSprites lsls r0, r1, 4 adds r0, r1 lsls r1, r0, 2 _080A7A04: lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r4, r0, r2 adds r5, r4, 0 adds r5, 0x3E ldrb r0, [r5] lsls r0, 31 cmp r0, 0 bne _080A7A48 adds r0, r4, 0 adds r1, r2 movs r2, 0x44 bl memcpy ldrb r1, [r4, 0x1] movs r2, 0xD negs r2, r2 adds r0, r2, 0 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4, 0x1] ldrb r0, [r5] adds r2, 0x8 adds r1, r2, 0 ands r0, r1 strb r0, [r5] lsls r0, r6, 16 asrs r0, 16 b _080A7A56 .pool _080A7A48: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0x3F bls _080A7A04 _080A7A52: movs r0, 0x1 negs r0, r0 _080A7A56: pop {r4-r6} pop {r1} bx r1 thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode thumb_func_start obj_delete_but_dont_free_vram obj_delete_but_dont_free_vram: @ 80A7A5C push {lr} adds r3, r0, 0 adds r3, 0x3F ldrb r1, [r3] movs r2, 0x40 orrs r1, r2 strb r1, [r3] bl DestroySprite pop {r0} bx r0 thumb_func_end obj_delete_but_dont_free_vram thumb_func_start sub_80A7A74 sub_80A7A74: @ 80A7A74 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 movs r3, 0 ldr r2, =gBattleAnimArgs movs r0, 0x4 ldrsh r1, [r2, r0] movs r4, 0 ldrsh r0, [r2, r4] cmp r1, r0 ble _080A7A8E movs r3, 0x1 _080A7A8E: cmp r1, r0 bge _080A7A94 ldr r3, =0x0000ffff _080A7A94: movs r0, 0x6 ldrsh r1, [r2, r0] movs r4, 0x2 ldrsh r0, [r2, r4] cmp r1, r0 ble _080A7AA2 movs r6, 0x1 _080A7AA2: cmp r1, r0 bge _080A7AA8 ldr r6, =0x0000ffff _080A7AA8: ldr r0, =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r0 movs r1, 0 strh r1, [r4, 0x8] ldrh r0, [r2, 0x8] strh r0, [r4, 0xA] strh r1, [r4, 0xC] ldrh r0, [r2] strh r0, [r4, 0xE] ldrh r0, [r2, 0x2] strh r0, [r4, 0x10] strh r3, [r4, 0x12] strh r6, [r4, 0x14] ldrh r0, [r2, 0x4] strh r0, [r4, 0x16] ldrh r0, [r2, 0x6] strh r0, [r4, 0x18] ldrh r1, [r2, 0x2] lsls r1, 8 ldrh r0, [r2] orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldr r0, =sub_80A7AFC str r0, [r4] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80A7A74 thumb_func_start sub_80A7AFC sub_80A7AFC: @ 80A7AFC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] lsls r0, 16 asrs r0, 16 movs r2, 0xA ldrsh r1, [r4, r2] cmp r0, r1 ble _080A7B90 movs r0, 0 strh r0, [r4, 0x8] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080A7B4C ldrh r2, [r4, 0xE] movs r3, 0xE ldrsh r1, [r4, r3] movs r3, 0x16 ldrsh r0, [r4, r3] cmp r1, r0 beq _080A7B60 ldrh r0, [r4, 0x12] adds r0, r2, r0 strh r0, [r4, 0xE] b _080A7B60 .pool _080A7B4C: ldrh r2, [r4, 0x10] movs r0, 0x10 ldrsh r1, [r4, r0] movs r3, 0x18 ldrsh r0, [r4, r3] cmp r1, r0 beq _080A7B60 ldrh r0, [r4, 0x14] adds r0, r2, r0 strh r0, [r4, 0x10] _080A7B60: ldrh r1, [r4, 0x10] lsls r1, 8 ldrh r0, [r4, 0xE] orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r0, 0xE ldrsh r1, [r4, r0] movs r2, 0x16 ldrsh r0, [r4, r2] cmp r1, r0 bne _080A7B90 movs r3, 0x10 ldrsh r1, [r4, r3] movs r2, 0x18 ldrsh r0, [r4, r2] cmp r1, r0 bne _080A7B90 adds r0, r5, 0 bl DestroyAnimVisualTask _080A7B90: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A7AFC thumb_func_start sub_80A7B98 sub_80A7B98: @ 80A7B98 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gBattleAnimArgs ldrb r0, [r0] bl GetAnimBankSpriteId lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0xFF bne _080A7BBC adds r0, r4, 0 bl DestroyAnimVisualTask b _080A7BE2 .pool _080A7BBC: ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r2, =gSprites lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r1, r2 ldrb r1, [r1, 0x5] lsrs r1, 4 lsls r1, 4 ldr r3, =0x00000101 adds r2, r3, 0 adds r1, r2 strh r1, [r0, 0x8] bl sub_80A7BF4 _080A7BE2: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A7B98 thumb_func_start sub_80A7BF4 sub_80A7BF4: @ 80A7BF4 ldr r3, =gBattleAnimArgs ldrh r1, [r3, 0x2] movs r2, 0 strh r1, [r0, 0xA] strh r2, [r0, 0xC] ldrh r1, [r3, 0x4] strh r1, [r0, 0xE] strh r2, [r0, 0x10] ldrh r1, [r3, 0x6] strh r1, [r0, 0x12] strh r2, [r0, 0x14] ldrh r1, [r3, 0x8] strh r1, [r0, 0x16] ldr r1, =sub_80A7C1C str r1, [r0] bx lr .pool thumb_func_end sub_80A7BF4 thumb_func_start sub_80A7C1C sub_80A7C1C: @ 80A7C1C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 asrs r0, 16 movs r2, 0x12 ldrsh r1, [r4, r2] cmp r0, r1 blt _080A7CAC movs r0, 0 strh r0, [r4, 0x10] movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 bne _080A7C78 ldrh r2, [r4, 0xC] adds r2, 0x1 strh r2, [r4, 0xC] ldrh r0, [r4, 0x8] lsls r2, 24 lsrs r2, 24 ldrh r3, [r4, 0xA] movs r1, 0xF bl BlendPalette movs r2, 0xC ldrsh r1, [r4, r2] movs r2, 0xE ldrsh r0, [r4, r2] cmp r1, r0 bne _080A7CAC movs r0, 0x1 strh r0, [r4, 0x14] b _080A7CAC .pool _080A7C78: ldrh r2, [r4, 0xC] subs r2, 0x1 strh r2, [r4, 0xC] ldrh r0, [r4, 0x8] lsls r2, 24 lsrs r2, 24 ldrh r3, [r4, 0xA] movs r1, 0xF bl BlendPalette movs r0, 0xC ldrsh r1, [r4, r0] cmp r1, 0 bne _080A7CAC ldrh r0, [r4, 0x16] subs r0, 0x1 strh r0, [r4, 0x16] lsls r0, 16 cmp r0, 0 beq _080A7CA6 strh r1, [r4, 0x10] strh r1, [r4, 0x14] b _080A7CAC _080A7CA6: adds r0, r5, 0 bl DestroyAnimVisualTask _080A7CAC: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A7C1C thumb_func_start sub_80A7CB4 sub_80A7CB4: @ 80A7CB4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gBattleAnimArgs ldrh r0, [r0] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF bne _080A7CD8 adds r0, r4, 0 bl DestroyAnimVisualTask b _080A7CEE .pool _080A7CD8: ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 lsls r1, r2, 4 ldr r2, =0x00000101 adds r1, r2 strh r1, [r0, 0x8] bl sub_80A7BF4 _080A7CEE: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A7CB4 thumb_func_start sub_80A7CFC sub_80A7CFC: @ 80A7CFC push {r4,lr} adds r3, r0, 0 adds r4, r1, 0 lsls r4, 24 lsrs r4, 24 movs r1, 0 strh r1, [r3, 0x16] strh r1, [r3, 0x18] strh r1, [r3, 0x1A] strh r4, [r3, 0x26] movs r0, 0x80 lsls r0, 1 strh r0, [r3, 0x1C] strh r0, [r3, 0x1E] strh r1, [r3, 0x20] adds r0, r3, 0 adds r0, 0x22 adds r3, 0x24 adds r1, r3, 0 bl sub_80A8048 adds r0, r4, 0 movs r1, 0 bl sub_80A7270 pop {r4} pop {r0} bx r0 thumb_func_end sub_80A7CFC thumb_func_start sub_80A7D34 sub_80A7D34: @ 80A7D34 push {r4-r6,lr} adds r4, r0, 0 ldr r5, =gUnknown_02038444 movs r1, 0x22 ldrsh r0, [r4, r1] movs r2, 0x24 ldrsh r1, [r4, r2] bl sub_80A8050 movs r3, 0x16 ldrsh r1, [r4, r3] lsls r1, 3 adds r1, r0, r1 str r1, [r5] movs r6, 0 ldrsh r2, [r1, r6] ldr r0, =0x00007ffe cmp r2, r0 beq _080A7DDC cmp r2, r0 bgt _080A7E3C subs r0, 0x1 cmp r2, r0 beq _080A7DE2 ldrb r0, [r1, 0x5] cmp r0, 0 bne _080A7D82 ldrh r0, [r1] strh r0, [r4, 0x1C] ldrh r0, [r1, 0x2] strh r0, [r4, 0x1E] ldrb r0, [r1, 0x4] strh r0, [r4, 0x20] ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] adds r0, r1, 0 adds r0, 0x8 str r0, [r5] _080A7D82: ldr r1, [r5] ldrh r0, [r1] ldrh r2, [r4, 0x1C] adds r0, r2 strh r0, [r4, 0x1C] ldrh r0, [r1, 0x2] ldrh r3, [r4, 0x1E] adds r0, r3 strh r0, [r4, 0x1E] ldrh r0, [r4, 0x20] ldrb r1, [r1, 0x4] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r6, 0x1C ldrsh r1, [r4, r6] movs r3, 0x1E ldrsh r2, [r4, r3] ldrh r3, [r4, 0x20] bl obj_id_set_rotscale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A7E6C ldrh r0, [r4, 0x18] adds r0, 0x1 strh r0, [r4, 0x18] lsls r0, 16 asrs r0, 16 ldr r1, [r5] ldrb r1, [r1, 0x5] cmp r0, r1 blt _080A7E62 movs r0, 0 strh r0, [r4, 0x18] b _080A7E34 .pool _080A7DDC: ldrh r0, [r1, 0x2] strh r0, [r4, 0x16] b _080A7E62 _080A7DE2: ldrh r2, [r1, 0x2] movs r6, 0x2 ldrsh r0, [r1, r6] cmp r0, 0 beq _080A7E34 ldrh r1, [r4, 0x1A] movs r3, 0x1A ldrsh r0, [r4, r3] cmp r0, 0 beq _080A7E02 subs r0, r1, 0x1 strh r0, [r4, 0x1A] lsls r0, 16 cmp r0, 0 bne _080A7E04 b _080A7E34 _080A7E02: strh r2, [r4, 0x1A] _080A7E04: movs r6, 0x16 ldrsh r0, [r4, r6] cmp r0, 0 beq _080A7E62 ldr r3, =gUnknown_02038444 ldr r5, =0x00007ffd _080A7E10: ldrh r2, [r4, 0x16] subs r1, r2, 0x1 strh r1, [r4, 0x16] ldr r0, [r3] subs r0, 0x8 str r0, [r3] movs r6, 0 ldrsh r0, [r0, r6] cmp r0, r5 beq _080A7E60 lsls r0, r1, 16 cmp r0, 0 bne _080A7E10 b _080A7E62 .pool _080A7E34: ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] b _080A7E62 _080A7E3C: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x26] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A7344 movs r0, 0 b _080A7E64 .pool _080A7E60: strh r2, [r4, 0x16] _080A7E62: movs r0, 0x1 _080A7E64: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80A7D34 thumb_func_start sub_80A7E6C sub_80A7E6C: @ 80A7E6C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl sub_80A7F18 lsls r0, 16 lsrs r0, 15 movs r1, 0x40 subs r5, r1, r0 ldr r1, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r4, r0, r1 ldrb r1, [r4, 0x3] lsls r1, 26 lsrs r1, 27 lsls r0, r5, 8 ldr r2, =gOamMatrices lsls r1, 3 adds r1, r2 movs r2, 0x6 ldrsh r1, [r1, r2] bl __divsi3 cmp r0, 0x80 ble _080A7EA8 movs r0, 0x80 _080A7EA8: subs r0, r5, r0 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x26] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A7E6C thumb_func_start sub_80A7EC0 sub_80A7EC0: @ 80A7EC0 push {r4,r5,lr} adds r4, r0, 0 adds r0, r1, 0 lsls r4, 24 lsrs r4, 24 lsls r0, 24 lsrs r0, 24 bl sub_80A7F18 lsls r0, 16 lsrs r0, 15 movs r1, 0x40 subs r5, r1, r0 ldr r1, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r4, r0, r1 ldrb r1, [r4, 0x3] lsls r1, 26 lsrs r1, 27 lsls r0, r5, 8 ldr r2, =gOamMatrices lsls r1, 3 adds r1, r2 movs r2, 0x6 ldrsh r1, [r1, r2] bl __divsi3 cmp r0, 0x80 ble _080A7F00 movs r0, 0x80 _080A7F00: subs r0, r5, r0 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r4, 0x26] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A7EC0 thumb_func_start sub_80A7F18 sub_80A7F18: @ 80A7F18 push {r4-r7,lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r1, =gBankSpriteIds ldr r7, =0x00000181 ldr r0, =gBattleMonForms adds r6, r5, r0 _080A7F38: adds r0, r4, r1 ldrb r0, [r0] cmp r0, r2 beq _080A7F42 b _080A8034 _080A7F42: bl IsContest lsls r0, 24 cmp r0, 0 beq _080A7F78 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r2, [r0] ldr r1, =gUnknown_083021D8 lsls r0, r2, 2 adds r0, r1 ldrb r0, [r0, 0x1] b _080A8042 .pool _080A7F78: lsls r0, r4, 24 lsrs r0, 24 bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A7FD8 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A7FC0 ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r2, r0, 16 b _080A7FC2 .pool _080A7FC0: ldrh r2, [r1, 0x2] _080A7FC2: cmp r2, r7 bne _080A7FD0 ldr r0, =gUnknown_08525F8C b _080A8018 .pool _080A7FD0: ldr r0, =gUnknown_083021D8 b _080A8026 .pool _080A7FD8: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r1, r0, r1 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A8010 ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r2, r0, 16 b _080A8012 .pool _080A8010: ldrh r2, [r1, 0x2] _080A8012: cmp r2, r7 bne _080A8024 ldr r0, =gUnknown_08525F88 _080A8018: ldrb r1, [r6] adds r1, r0 ldrb r0, [r1] b _080A8042 .pool _080A8024: ldr r0, =gMonFrontPicCoords _080A8026: lsls r1, r2, 2 adds r1, r0 ldrb r0, [r1, 0x1] b _080A8042 .pool _080A8034: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x3 bhi _080A8040 b _080A7F38 _080A8040: movs r0, 0x40 _080A8042: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80A7F18 thumb_func_start sub_80A8048 sub_80A8048: @ 80A8048 strh r2, [r0] asrs r2, 16 strh r2, [r1] bx lr thumb_func_end sub_80A8048 thumb_func_start sub_80A8050 sub_80A8050: @ 80A8050 lsls r0, 16 lsrs r0, 16 lsls r1, 16 orrs r0, r1 bx lr thumb_func_end sub_80A8050 thumb_func_start sub_80A805C sub_80A805C: @ 80A805C push {r4-r6,lr} mov r6, r8 push {r6} mov r8, r0 adds r5, r3, 0 ldr r0, [sp, 0x14] ldr r4, [sp, 0x18] ldr r6, [sp, 0x1C] lsls r1, 24 lsrs r1, 24 lsls r2, 16 lsrs r2, 16 lsls r5, 16 lsrs r5, 16 lsls r0, 16 lsrs r0, 16 lsls r4, 16 lsrs r4, 16 lsls r6, 16 lsrs r6, 16 mov r3, r8 strh r6, [r3, 0x18] strh r1, [r3, 0x26] strh r2, [r3, 0x1A] strh r5, [r3, 0x1C] strh r0, [r3, 0x22] strh r4, [r3, 0x24] lsls r0, 16 asrs r0, 16 lsls r2, 16 asrs r2, 16 subs r0, r2 adds r1, r6, 0 bl __divsi3 mov r1, r8 strh r0, [r1, 0x1E] lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 subs r4, r5 adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 mov r3, r8 strh r0, [r3, 0x20] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80A805C thumb_func_start sub_80A80C8 sub_80A80C8: @ 80A80C8 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x18] movs r2, 0x18 ldrsh r0, [r4, r2] cmp r0, 0 bne _080A80DA movs r0, 0 b _080A8136 _080A80DA: subs r0, r1, 0x1 strh r0, [r4, 0x18] lsls r0, 16 cmp r0, 0 beq _080A80F4 ldrh r0, [r4, 0x1E] ldrh r3, [r4, 0x1A] adds r0, r3 strh r0, [r4, 0x1A] ldrh r0, [r4, 0x20] ldrh r1, [r4, 0x1C] adds r0, r1 b _080A80FA _080A80F4: ldrh r0, [r4, 0x22] strh r0, [r4, 0x1A] ldrh r0, [r4, 0x24] _080A80FA: strh r0, [r4, 0x1C] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r2, 0x1A ldrsh r1, [r4, r2] movs r3, 0x1C ldrsh r2, [r4, r3] movs r3, 0 bl obj_id_set_rotscale movs r0, 0x18 ldrsh r3, [r4, r0] cmp r3, 0 beq _080A8124 ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 bl sub_80A7E6C b _080A8134 _080A8124: ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r3, [r0, 0x26] _080A8134: ldrb r0, [r4, 0x18] _080A8136: pop {r4} pop {r1} bx r1 .pool thumb_func_end sub_80A80C8 thumb_func_start sub_80A8140 sub_80A8140: @ 80A8140 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gAnimFriendship ldrb r0, [r0] movs r1, 0 cmp r0, 0x1E bls _080A815E movs r1, 0x1 cmp r0, 0x64 bls _080A815E movs r1, 0x3 cmp r0, 0xC8 bhi _080A815E movs r1, 0x2 _080A815E: ldr r0, =gBattleAnimArgs strh r1, [r0, 0xE] adds r0, r2, 0 bl DestroyAnimVisualTask pop {r0} bx r0 .pool thumb_func_end sub_80A8140 thumb_func_start sub_80A8174 sub_80A8174: @ 80A8174 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r4, r0, 24 adds r7, r4, 0 ldr r6, =gAnimBankTarget ldrb r0, [r6] bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A81B4 ldr r2, =gSprites ldr r1, =gBankSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x3 adds r2, r4, 0 ands r2, r0 lsls r2, 2 ldrb r3, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0x5] _080A81B4: ldr r0, =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A81EC ldr r2, =gSprites ldr r1, =gBankSpriteIds mov r3, r8 ldrb r0, [r3] adds r0, r1 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x3 adds r2, r4, 0 ands r2, r0 lsls r2, 2 ldrb r3, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0x5] _080A81EC: ldrb r0, [r6] movs r5, 0x2 eors r0, r5 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8224 ldr r2, =gSprites ldr r1, =gBankSpriteIds ldrb r0, [r6] eors r0, r5 adds r0, r1 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x3 adds r2, r4, 0 ands r2, r0 lsls r2, 2 ldrb r3, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0x5] _080A8224: mov r1, r8 ldrb r0, [r1] eors r0, r5 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A825C ldr r2, =gSprites ldr r1, =gBankSpriteIds mov r3, r8 ldrb r0, [r3] eors r0, r5 adds r0, r1 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x3 ands r7, r0 lsls r3, r7, 2 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] _080A825C: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A8174 thumb_func_start sub_80A8278 sub_80A8278: @ 80A8278 push {r4-r6,lr} movs r5, 0 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r5, r0 bge _080A82D2 ldr r6, =gSprites _080A8286: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A82C8 adds r0, r4, 0 bl sub_80A82E4 ldr r3, =gBankSpriteIds adds r3, r5, r3 ldrb r2, [r3] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r6 adds r1, 0x43 strb r0, [r1] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r2, [r0, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r2, r1 movs r1, 0x8 orrs r2, r1 strb r2, [r0, 0x5] _080A82C8: adds r5, 0x1 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r5, r0 blt _080A8286 _080A82D2: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80A8278 thumb_func_start sub_80A82E4 sub_80A82E4: @ 80A82E4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A8300 cmp r4, 0x2 bne _080A82FC movs r0, 0x1E b _080A8320 _080A82FC: movs r0, 0x28 b _080A8320 _080A8300: adds r0, r4, 0 bl GetBankIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x1E cmp r0, 0 beq _080A831E movs r1, 0x14 cmp r0, 0x2 beq _080A831E movs r1, 0x32 cmp r0, 0x1 bne _080A831E movs r1, 0x28 _080A831E: adds r0, r1, 0 _080A8320: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A82E4 thumb_func_start sub_80A8328 sub_80A8328: @ 80A8328 push {r4,lr} lsls r0, 24 lsrs r0, 24 bl GetBankIdentity lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A8344 movs r0, 0x2 b _080A835C _080A8344: cmp r4, 0 beq _080A834C cmp r4, 0x3 bne _080A8350 _080A834C: movs r0, 0x2 b _080A8352 _080A8350: movs r0, 0x1 _080A8352: movs r1, 0x4 bl sub_8118140 lsls r0, 24 lsrs r0, 24 _080A835C: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A8328 thumb_func_start sub_80A8364 sub_80A8364: @ 80A8364 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A838A adds r0, r4, 0 bl GetBankIdentity lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _080A8386 cmp r0, 0x3 bne _080A838A _080A8386: movs r0, 0x2 b _080A838C _080A838A: movs r0, 0x1 _080A838C: pop {r4} pop {r1} bx r1 thumb_func_end sub_80A8364 thumb_func_start sub_80A8394 sub_80A8394: @ 80A8394 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 ldr r4, [sp, 0x30] ldr r5, [sp, 0x34] ldr r6, [sp, 0x38] mov r8, r6 lsls r0, 16 lsrs r6, r0, 16 lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r2, 24 lsrs r7, r2, 24 lsls r3, 16 lsrs r3, 16 mov r10, r3 lsls r4, 16 lsrs r4, 16 str r4, [sp, 0x4] lsls r5, 24 lsrs r5, 24 str r5, [sp, 0x8] lsls r0, r7, 3 ldr r1, =gUnknown_08525FC0 adds r0, r1 bl LoadSpriteSheet lsls r0, 16 lsrs r0, 16 str r0, [sp, 0xC] ldr r1, =gUnknown_08525F90 lsls r0, r7, 1 adds r0, r7 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x2] bl AllocSpritePalette lsls r0, 24 lsrs r5, r0, 24 ldr r4, =gMonSpritesGfxPtr ldr r0, [r4] cmp r0, 0 beq _080A8412 movs r1, 0xBE lsls r1, 1 adds r0, r1 ldr r0, [r0] cmp r0, 0 bne _080A8412 movs r0, 0x80 lsls r0, 6 bl AllocZeroed ldr r1, [r4] movs r2, 0xBE lsls r2, 1 adds r1, r2 str r0, [r1] _080A8412: mov r3, r9 cmp r3, 0 bne _080A84B0 adds r0, r6, 0 ldr r1, [sp, 0x3C] mov r2, r8 bl GetFrontSpritePalFromSpeciesAndPersonality lsls r1, r5, 20 movs r2, 0x80 lsls r2, 17 adds r1, r2 lsrs r1, 16 movs r2, 0x20 bl LoadCompressedPalette ldr r3, [sp, 0x44] cmp r3, 0x1 beq _080A845E ldr r0, [sp, 0x40] lsls r1, r0, 24 lsrs r1, 24 movs r0, 0x5 bl sub_80688F8 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080A845E ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r2, [sp, 0x40] lsls r0, r2, 2 adds r0, r1 ldrh r0, [r0, 0x2] cmp r0, 0 beq _080A8488 _080A845E: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r3, 0xBE lsls r3, 1 adds r1, r3 ldr r1, [r1] movs r2, 0x1 b _080A850A .pool _080A8488: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 adds r1, r2 ldr r1, [r1] movs r2, 0x1 str r2, [sp] adds r2, r6, 0 mov r3, r8 bl LoadSpecialPokePic_2 b _080A8540 .pool _080A84B0: adds r0, r6, 0 ldr r1, [sp, 0x3C] mov r2, r8 bl GetFrontSpritePalFromSpeciesAndPersonality lsls r1, r5, 20 movs r3, 0x80 lsls r3, 17 adds r1, r3 lsrs r1, 16 movs r2, 0x20 bl LoadCompressedPalette ldr r0, [sp, 0x44] cmp r0, 0x1 beq _080A84F6 ldr r2, [sp, 0x40] lsls r1, r2, 24 lsrs r1, 24 movs r0, 0x5 bl sub_80688F8 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080A84F6 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r3, [sp, 0x40] lsls r0, r3, 2 adds r0, r1 ldrh r2, [r0, 0x2] cmp r2, 0 beq _080A8524 _080A84F6: lsls r0, r6, 3 ldr r1, =gMonBackPicTable adds r0, r1 ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 adds r1, r2 ldr r1, [r1] movs r2, 0 _080A850A: str r2, [sp] adds r2, r6, 0 mov r3, r8 bl LoadSpecialPokePic_DontHandleDeoxys b _080A8540 .pool _080A8524: lsls r0, r6, 3 ldr r1, =gMonBackPicTable adds r0, r1 ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r3, 0xBE lsls r3, 1 adds r1, r3 ldr r1, [r1] str r2, [sp] adds r2, r6, 0 mov r3, r8 bl LoadSpecialPokePic_2 _080A8540: ldr r5, =gMonSpritesGfxPtr ldr r0, [r5] movs r4, 0xBE lsls r4, 1 adds r0, r4 ldr r0, [r0] ldr r2, [sp, 0xC] lsls r1, r2, 5 ldr r3, =0x06010000 adds r1, r3 movs r2, 0x80 lsls r2, 4 movs r3, 0x1 bl RequestDma3Copy ldr r0, [r5] adds r0, r4 ldr r0, [r0] bl Free ldr r0, [r5] adds r0, r4 movs r1, 0 str r1, [r0] mov r0, r9 cmp r0, 0 bne _080A85A0 lsls r0, r7, 1 adds r0, r7 lsls r0, 3 ldr r1, =gUnknown_08525F90 adds r0, r1 mov r2, r10 lsls r1, r2, 16 asrs r1, 16 ldr r3, =gMonFrontPicCoords b _080A85B2 .pool _080A85A0: lsls r0, r7, 1 adds r0, r7 lsls r0, 3 ldr r1, =gUnknown_08525F90 adds r0, r1 mov r2, r10 lsls r1, r2, 16 asrs r1, 16 ldr r3, =gUnknown_083021D8 _080A85B2: lsls r2, r6, 2 adds r2, r3 ldrb r2, [r2, 0x1] ldr r3, [sp, 0x4] adds r2, r3 lsls r2, 16 asrs r2, 16 ldr r3, [sp, 0x8] bl CreateSprite lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A85EE ldr r3, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r1, r3, 0 adds r1, 0x10 adds r1, r0, r1 ldr r2, =gUnknown_082FF6C0 str r2, [r1] adds r0, r3 movs r1, 0 bl StartSpriteAffineAnim _080A85EE: adds r0, r4, 0 add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_80A8394 thumb_func_start sub_80A8610 sub_80A8610: @ 80A8610 push {lr} bl DestroySpriteAndFreeResources pop {r0} bx r0 thumb_func_end sub_80A8610 thumb_func_start sub_80A861C sub_80A861C: @ 80A861C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 24 lsrs r1, 24 mov r9, r1 bl IsContest lsls r0, 24 cmp r0, 0 beq _080A86C4 ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080A8654 ldrh r7, [r2, 0x2] ldr r2, [r2, 0x10] b _080A8658 .pool _080A8654: ldrh r7, [r2] ldr r2, [r2, 0x8] _080A8658: cmp r7, 0xC9 bne _080A86A4 movs r0, 0xC0 lsls r0, 18 ands r0, r2 lsrs r0, 18 movs r1, 0xC0 lsls r1, 10 ands r1, r2 lsrs r1, 12 orrs r0, r1 movs r1, 0xC0 lsls r1, 2 ands r1, r2 lsrs r1, 6 orrs r0, r1 movs r1, 0x3 ands r1, r2 orrs r0, r1 movs r1, 0x1C bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _080A8690 movs r0, 0xC9 b _080A869A _080A8690: movs r1, 0xCE lsls r1, 1 adds r0, r1 lsls r0, 16 lsrs r0, 16 _080A869A: lsls r1, r0, 2 ldr r0, =gUnknown_083021D8 b _080A8864 .pool _080A86A4: ldr r0, =0x00000181 cmp r7, r0 bne _080A86AC b _080A8834 _080A86AC: movs r0, 0xCE lsls r0, 1 cmp r7, r0 bhi _080A877C lsls r1, r7, 2 ldr r0, =gUnknown_083021D8 b _080A8864 .pool _080A86C4: mov r0, r8 bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A8790 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 lsls r2, r1, 2 adds r1, r2, r0 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A871C ldr r0, =gBattlePartyID mov r1, r8 lsls r4, r1, 1 adds r4, r0 ldrh r0, [r4] movs r6, 0x64 muls r0, r6 ldr r5, =gPlayerParty adds r0, r5 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r7, r0, 16 ldrh r0, [r4] muls r0, r6 adds r0, r5 movs r1, 0 bl GetMonData adds r2, r0, 0 b _080A8724 .pool _080A871C: ldrh r7, [r1, 0x2] ldr r0, =gTransformedPersonalities adds r0, r2, r0 ldr r2, [r0] _080A8724: cmp r7, 0xC9 bne _080A8774 movs r0, 0xC0 lsls r0, 18 ands r0, r2 lsrs r0, 18 movs r1, 0xC0 lsls r1, 10 ands r1, r2 lsrs r1, 12 orrs r0, r1 movs r1, 0xC0 lsls r1, 2 ands r1, r2 lsrs r1, 6 orrs r0, r1 movs r1, 0x3 ands r1, r2 orrs r0, r1 movs r1, 0x1C bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _080A8760 movs r0, 0xC9 b _080A876A .pool _080A8760: movs r1, 0xCE lsls r1, 1 adds r0, r1 lsls r0, 16 lsrs r0, 16 _080A876A: lsls r1, r0, 2 ldr r0, =gUnknown_083021D8 b _080A8864 .pool _080A8774: movs r0, 0xCE lsls r0, 1 cmp r7, r0 bls _080A8784 _080A877C: ldr r4, =gUnknown_083021D8 b _080A8866 .pool _080A8784: lsls r1, r7, 2 ldr r0, =gUnknown_083021D8 b _080A8864 .pool _080A8790: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 lsls r2, r1, 2 adds r1, r2, r0 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A87DC ldr r0, =gBattlePartyID mov r1, r8 lsls r4, r1, 1 adds r4, r0 ldrh r0, [r4] movs r6, 0x64 muls r0, r6 ldr r5, =gEnemyParty adds r0, r5 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r7, r0, 16 ldrh r0, [r4] muls r0, r6 adds r0, r5 movs r1, 0 bl GetMonData adds r2, r0, 0 b _080A87E4 .pool _080A87DC: ldrh r7, [r1, 0x2] ldr r0, =gTransformedPersonalities adds r0, r2, r0 ldr r2, [r0] _080A87E4: cmp r7, 0xC9 bne _080A882E movs r0, 0xC0 lsls r0, 18 ands r0, r2 lsrs r0, 18 movs r1, 0xC0 lsls r1, 10 ands r1, r2 lsrs r1, 12 orrs r0, r1 movs r1, 0xC0 lsls r1, 2 ands r1, r2 lsrs r1, 6 orrs r0, r1 movs r1, 0x3 ands r1, r2 orrs r0, r1 movs r1, 0x1C bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _080A8820 movs r0, 0xC9 b _080A882A .pool _080A8820: movs r1, 0xCE lsls r1, 1 adds r0, r1 lsls r0, 16 lsrs r0, 16 _080A882A: lsls r1, r0, 2 b _080A8862 _080A882E: ldr r0, =0x00000181 cmp r7, r0 bne _080A8850 _080A8834: ldr r0, =gBattleMonForms add r0, r8 ldrb r0, [r0] lsls r0, 2 ldr r1, =gCastformFrontSpriteCoords adds r4, r0, r1 b _080A8866 .pool _080A8850: movs r0, 0xCE lsls r0, 1 cmp r7, r0 bls _080A8860 ldr r4, =gMonFrontPicCoords b _080A8866 .pool _080A8860: lsls r1, r7, 2 _080A8862: ldr r0, =gMonFrontPicCoords _080A8864: adds r4, r1, r0 _080A8866: mov r0, r9 cmp r0, 0x6 bhi _080A8916 lsls r0, 2 ldr r1, =_080A8880 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080A8880: .4byte _080A889C .4byte _080A88A6 .4byte _080A88D2 .4byte _080A88EA .4byte _080A88AE .4byte _080A88C0 .4byte _080A8902 _080A889C: ldrb r1, [r4] movs r0, 0xF ands r0, r1 lsls r0, 3 b _080A8918 _080A88A6: ldrb r0, [r4] lsrs r0, 4 lsls r0, 3 b _080A8918 _080A88AE: mov r0, r8 movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrb r1, [r4] lsrs r1, 4 b _080A88E4 _080A88C0: mov r0, r8 movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrb r1, [r4] lsrs r1, 4 b _080A88FC _080A88D2: mov r0, r8 movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrb r2, [r4] movs r1, 0xF ands r1, r2 _080A88E4: lsls r1, 2 subs r0, r1 b _080A8918 _080A88EA: mov r0, r8 movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 ldrb r2, [r4] movs r1, 0xF ands r1, r2 _080A88FC: lsls r1, 2 adds r0, r1 b _080A8918 _080A8902: mov r0, r8 movs r1, 0x1 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 adds r0, 0x1F ldrb r1, [r4, 0x1] subs r0, r1 b _080A8918 _080A8916: movs r0, 0 _080A8918: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80A861C thumb_func_start sub_80A8924 sub_80A8924: @ 80A8924 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r9, r2 mov r10, r3 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 cmp r1, 0 bne _080A8942 movs r5, 0 movs r6, 0x1 b _080A8946 _080A8942: movs r5, 0x2 movs r6, 0x3 _080A8946: adds r0, r4, 0 adds r1, r5, 0 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 mov r8, r0 adds r0, r4, 0 adds r1, r6, 0 bl sub_80A5C6C lsls r0, 24 lsrs r7, r0, 24 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A8998 bl IsContest lsls r0, 24 cmp r0, 0 bne _080A8998 movs r0, 0x2 eors r4, r0 adds r0, r4, 0 adds r1, r5, 0 bl sub_80A5C6C lsls r0, 24 lsrs r5, r0, 24 adds r0, r4, 0 adds r1, r6, 0 bl sub_80A5C6C lsls r0, 24 lsrs r3, r0, 24 mov r0, r8 lsls r1, r0, 16 lsls r2, r7, 16 b _080A89A4 _080A8998: mov r0, r8 lsls r1, r0, 16 lsrs r5, r1, 16 lsls r0, r7, 16 lsrs r3, r0, 16 adds r2, r0, 0 _080A89A4: asrs r0, r1, 16 adds r0, r5 asrs r0, 1 mov r1, r9 strh r0, [r1] asrs r0, r2, 16 adds r0, r3 asrs r0, 1 mov r1, r10 strh r0, [r1] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80A8924 thumb_func_start sub_80A89C8 sub_80A89C8: @ 80A89C8 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} sub sp, 0x4 lsls r6, r1, 24 lsrs r6, 24 ldr r0, =SpriteCallbackDummy mov r10, r0 bl CreateInvisibleSpriteWithCallback mov r8, r0 mov r0, r8 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r0, =gSprites mov r9, r0 mov r0, r8 lsls r3, r0, 4 add r3, r8 lsls r3, 2 mov r0, r9 adds r5, r3, r0 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 add r4, r9 adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x44 str r3, [sp] bl memcpy adds r2, r5, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x40 orrs r0, r1 strb r0, [r2] ldrb r2, [r5, 0x5] movs r1, 0xD negs r1, r1 adds r0, r1, 0 ands r0, r2 strb r0, [r5, 0x5] ldrb r0, [r5, 0x1] ands r1, r0 movs r0, 0x8 orrs r1, r0 strb r1, [r5, 0x1] ldrh r1, [r4, 0x4] lsls r1, 22 lsrs r1, 22 ldrh r2, [r5, 0x4] ldr r0, =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] movs r0, 0x1C add r9, r0 ldr r3, [sp] add r3, r9 mov r0, r10 str r0, [r3] mov r0, r8 add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r1} bx r1 .pool thumb_func_end sub_80A89C8 thumb_func_start sub_80A8A6C sub_80A8A6C: @ 80A8A6C push {r4,lr} adds r4, r0, 0 bl sub_80A6838 ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A8AAC ldr r2, =gBattleAnimArgs ldrh r0, [r4, 0x20] ldrh r1, [r2] subs r0, r1 strh r0, [r4, 0x20] ldrh r0, [r2, 0x6] negs r0, r0 strh r0, [r2, 0x6] adds r3, r4, 0 adds r3, 0x3F ldrb r0, [r3] movs r1, 0x1 orrs r0, r1 strb r0, [r3] adds r1, r2, 0 b _080A8AB6 .pool _080A8AAC: ldr r1, =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] _080A8AB6: ldrh r0, [r1, 0x2] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x6] strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x34] ldrh r0, [r1, 0xA] strh r0, [r4, 0x38] ldr r1, =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A66DC str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A8A6C thumb_func_start sub_80A8AEC sub_80A8AEC: @ 80A8AEC push {r4,lr} adds r4, r0, 0 ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A8B1C ldr r2, =gBattleAnimArgs ldrh r0, [r4, 0x20] ldrh r1, [r2] subs r0, r1 strh r0, [r4, 0x20] movs r1, 0x6 ldrsh r0, [r2, r1] negs r0, r0 strh r0, [r2, 0x6] adds r1, r2, 0 b _080A8B26 .pool _080A8B1C: ldr r1, =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] _080A8B26: ldrh r0, [r1, 0x2] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] ldrh r0, [r1, 0x6] strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x34] ldrh r0, [r1, 0xA] strh r0, [r4, 0x38] ldrb r1, [r1, 0xC] adds r0, r4, 0 bl StartSpriteAnim ldr r1, =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A66DC str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A8AEC thumb_func_start sub_80A8B64 sub_80A8B64: @ 80A8B64 push {r4,lr} adds r4, r0, 0 bl sub_80A6838 ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080A8B90 ldr r0, =gBattleAnimArgs ldrh r1, [r4, 0x20] ldrh r2, [r0] subs r1, r2 strh r1, [r4, 0x20] b _080A8B9C .pool _080A8B90: ldr r1, =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] adds r0, r1, 0 _080A8B9C: ldrh r0, [r0, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80A8B64 thumb_func_start sub_80A8BC4 sub_80A8BC4: @ 80A8BC4 push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks adds r5, r1, r0 movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r6, 0 strh r0, [r5, 0x8] ldr r7, =gAnimBankAttacker ldrb r0, [r7] bl GetBankSide lsls r0, 24 movs r1, 0x8 cmp r0, 0 beq _080A8BF8 movs r0, 0x8 negs r0, r0 adds r1, r0, 0 _080A8BF8: strh r1, [r5, 0xA] strh r6, [r5, 0xC] strh r6, [r5, 0xE] ldr r4, =gSprites movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r0, 0x24] ldrh r2, [r5, 0x8] subs r1, r2 strh r1, [r0, 0x24] ldr r0, =0x00002771 bl AllocSpritePalette lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x10] strh r6, [r5, 0x12] movs r1, 0x10 ldrsh r0, [r5, r1] adds r0, 0x10 lsls r0, 20 lsrs r6, r0, 16 movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r0, [r0, 0x5] lsrs r0, 4 adds r0, 0x10 lsls r4, r0, 4 ldrb r0, [r7] bl sub_80A82E4 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] cmp r0, 0x14 beq _080A8C54 cmp r0, 0x28 bne _080A8C68 _080A8C54: movs r0, 0x2 b _080A8C6A .pool _080A8C68: movs r0, 0x3 _080A8C6A: strh r0, [r5, 0x14] lsls r0, r4, 1 ldr r1, =gPlttBufferUnfaded adds r0, r1 lsls r1, r6, 1 ldr r2, =gPlttBufferFaded adds r1, r2 ldr r2, =0x04000008 bl CpuSet ldr r0, =gBattleAnimArgs ldrb r2, [r0, 0x2] ldrh r3, [r0] adds r0, r6, 0 movs r1, 0x10 bl BlendPalette ldr r0, =sub_80A8CAC str r0, [r5] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A8BC4 thumb_func_start sub_80A8CAC sub_80A8CAC: @ 80A8CAC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080A8D10 cmp r0, 0x1 bgt _080A8CD4 cmp r0, 0 beq _080A8CDA b _080A8D6C .pool _080A8CD4: cmp r0, 0x2 beq _080A8D58 b _080A8D6C _080A8CDA: adds r0, r4, 0 adds r1, r5, 0 bl sub_80A8D78 ldr r2, =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0xA] ldrh r2, [r0, 0x24] adds r1, r2 strh r1, [r0, 0x24] ldrh r1, [r4, 0xE] adds r0, r1, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _080A8D6C strh r1, [r4, 0xE] b _080A8D4A .pool _080A8D10: adds r0, r4, 0 adds r1, r5, 0 bl sub_80A8D78 ldr r3, =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r1, [r0, 0x24] ldrh r2, [r4, 0xA] subs r1, r2 strh r1, [r0, 0x24] ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r2, r0, 16 cmp r2, 0 bne _080A8D6C movs r1, 0x8 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 strh r2, [r1, 0x24] _080A8D4A: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] b _080A8D6C .pool _080A8D58: movs r2, 0x12 ldrsh r0, [r4, r2] cmp r0, 0 bne _080A8D6C ldr r0, =0x00002771 bl FreeSpritePaletteByTag adds r0, r5, 0 bl DestroyAnimVisualTask _080A8D6C: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A8CAC thumb_func_start sub_80A8D78 sub_80A8D78: @ 80A8D78 push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r0, 0 lsls r1, 24 lsrs r1, 24 mov r8, r1 movs r0, 0 bl duplicate_obj_of_side_rel2move_in_transparent_mode lsls r0, 16 lsrs r7, r0, 16 asrs r0, 16 cmp r0, 0 blt _080A8DE8 ldr r5, =gSprites lsls r4, r0, 4 adds r4, r0 lsls r4, 2 adds r3, r4, r5 movs r0, 0x3 ldrb r1, [r6, 0x14] ands r1, r0 lsls r1, 2 ldrb r2, [r3, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x5] ldrb r1, [r6, 0x10] lsls r1, 4 movs r2, 0xF ands r0, r2 orrs r0, r1 strb r0, [r3, 0x5] movs r0, 0x8 strh r0, [r3, 0x2E] mov r0, r8 strh r0, [r3, 0x30] strh r7, [r3, 0x32] movs r0, 0x8 ldrsh r1, [r6, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrh r0, [r0, 0x24] strh r0, [r3, 0x24] adds r5, 0x1C adds r4, r5 ldr r0, =sub_80A8DFC str r0, [r4] ldrh r0, [r6, 0x12] adds r0, 0x1 strh r0, [r6, 0x12] _080A8DE8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80A8D78 thumb_func_start sub_80A8DFC sub_80A8DFC: @ 80A8DFC push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x2E] subs r0, 0x1 strh r0, [r3, 0x2E] lsls r0, 16 cmp r0, 0 bne _080A8E26 ldr r2, =gTasks movs r0, 0x30 ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x12] subs r1, 0x1 strh r1, [r0, 0x12] adds r0, r3, 0 bl obj_delete_but_dont_free_vram _080A8E26: pop {r0} bx r0 .pool thumb_func_end sub_80A8DFC thumb_func_start sub_80A8E30 sub_80A8E30: @ 80A8E30 push {r4,r5,lr} adds r5, r0, 0 ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A8E68 movs r0, 0x5 b _080A8E6A .pool _080A8E68: ldr r0, =0x0000fff6 _080A8E6A: strh r0, [r5, 0x2E] ldr r0, =0x0000ffd8 strh r0, [r5, 0x30] ldr r0, =sub_80A8E88 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A8E30 thumb_func_start sub_80A8E88 sub_80A8E88: @ 80A8E88 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] ldrh r5, [r4, 0x30] ldrh r2, [r4, 0x34] adds r0, r5, r2 strh r0, [r4, 0x34] movs r1, 0x32 ldrsh r0, [r4, r1] movs r1, 0xA bl __divsi3 strh r0, [r4, 0x24] movs r2, 0x34 ldrsh r0, [r4, r2] movs r1, 0xA bl __divsi3 strh r0, [r4, 0x26] lsls r0, r5, 16 asrs r0, 16 movs r1, 0x14 negs r1, r1 cmp r0, r1 bge _080A8EC4 adds r0, r5, 0x1 strh r0, [r4, 0x30] _080A8EC4: movs r1, 0x22 ldrsh r0, [r4, r1] movs r2, 0x26 ldrsh r1, [r4, r2] adds r0, r1 movs r1, 0x20 negs r1, r1 cmp r0, r1 bge _080A8EDC adds r0, r4, 0 bl DestroyAnimSprite _080A8EDC: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80A8E88 thumb_func_start sub_80A8EE4 sub_80A8EE4: @ 80A8EE4 push {r4,r5,lr} adds r4, r0, 0 ldr r5, =gBattleAnimArgs ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] ldrh r0, [r5, 0x8] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x32] ldrh r0, [r5, 0xA] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x36] ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A8F24 ldrh r0, [r5, 0x8] adds r0, 0x1E ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r5, 0xA] subs r0, 0x14 b _080A8F32 .pool _080A8F24: ldrh r0, [r5, 0x8] subs r0, 0x1E ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r5, 0xA] subs r0, 0x50 _080A8F32: strh r0, [r4, 0x22] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80A8EE4 .align 2, 0 @ Don't pad with nop.