.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80B2ECC sub_80B2ECC: @ 80B2ECC push {r4-r7,lr} adds r6, r0, 0 ldr r0, _080B2F84 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B2EE8 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B2EFE _080B2EE8: ldrb r1, [r6, 0x5] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x8 orrs r0, r1 strb r0, [r6, 0x5] adds r1, r6, 0 adds r1, 0x43 movs r0, 0xC8 strb r0, [r1] _080B2EFE: bl IsContest lsls r0, 24 cmp r0, 0 bne _080B2F5A movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r4, r0, 24 adds r7, r4, 0 adds r0, r4, 0 bl sub_80768B0 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 eors r0, r1 negs r1, r0 orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B2F3C adds r0, r4, 0 adds r1, r5, 0 bl sub_8072E48 _080B2F3C: movs r0, 0x2 adds r4, r0, 0 eors r4, r7 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B2F5A movs r0, 0x1 eors r5, r0 adds r0, r4, 0 adds r1, r5, 0 bl sub_8072E48 _080B2F5A: bl IsContest lsls r0, 24 cmp r0, 0 bne _080B2F90 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080B2F90 ldr r0, _080B2F84 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080B2F88 movs r0, 0x48 strh r0, [r6, 0x20] movs r0, 0x50 b _080B2FCA .align 2, 0 _080B2F84: .4byte gBattleAnimAttacker _080B2F88: movs r0, 0xB0 strh r0, [r6, 0x20] movs r0, 0x28 b _080B2FCA _080B2F90: ldr r5, _080B3000 @ =gBattleAnimAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B2FA6 ldr r1, _080B3004 @ =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r1] _080B2FA6: ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080B3004 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4] adds r0, r1 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] adds r0, r4 _080B2FCA: strh r0, [r6, 0x22] bl IsContest lsls r0, 24 cmp r0, 0 beq _080B2FDC ldrh r0, [r6, 0x22] adds r0, 0x9 strh r0, [r6, 0x22] _080B2FDC: ldr r0, _080B3004 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 20 movs r1, 0x80 lsls r1, 1 adds r0, r1 strh r0, [r6, 0x2E] ldr r1, _080B3008 @ =sub_80B300C str r1, [r6, 0x1C] adds r0, r6, 0 bl _call_via_r1 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B3000: .4byte gBattleAnimAttacker _080B3004: .4byte gBattleAnimArgs _080B3008: .4byte sub_80B300C thumb_func_end sub_80B2ECC thumb_func_start sub_80B300C sub_80B300C: @ 80B300C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x34] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0xD bne _080B3038 ldr r0, _080B3034 @ =sub_80B3044 str r0, [r4, 0x1C] b _080B303C .align 2, 0 _080B3034: .4byte sub_80B3044 _080B3038: adds r0, r1, 0x1 strh r0, [r4, 0x34] _080B303C: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B300C thumb_func_start sub_80B3044 sub_80B3044: @ 80B3044 push {r4-r7,lr} adds r3, r0, 0 ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _080B30A2 movs r0, 0 strh r0, [r3, 0x30] ldrh r4, [r3, 0x2E] ldr r1, _080B30A8 @ =gPlttBufferFaded adds r0, r4, 0 adds r0, 0x8 lsls r0, 1 adds r0, r1 ldrh r7, [r0] movs r5, 0x8 adds r6, r1, 0 adds r1, r4, 0x7 lsls r0, r4, 1 adds r0, r6 adds r2, r0, 0 adds r2, 0x10 lsls r1, 1 adds r1, r6 _080B307A: ldrh r0, [r1] strh r0, [r2] subs r1, 0x2 subs r2, 0x2 subs r5, 0x1 cmp r5, 0 bgt _080B307A adds r0, r4, 0x1 lsls r0, 1 adds r0, r6 strh r7, [r0] ldrh r0, [r3, 0x32] adds r0, 0x1 strh r0, [r3, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 bne _080B30A2 ldr r0, _080B30AC @ =sub_80B30B0 str r0, [r3, 0x1C] _080B30A2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B30A8: .4byte gPlttBufferFaded _080B30AC: .4byte sub_80B30B0 thumb_func_end sub_80B3044 thumb_func_start sub_80B30B0 sub_80B30B0: @ 80B30B0 push {r4-r6,lr} adds r5, r0, 0 ldrh r0, [r5, 0x34] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldrh r0, [r5, 0x34] subs r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _080B3156 bl IsContest lsls r0, 24 cmp r0, 0 bne _080B3146 movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B3118 ldr r2, _080B315C @ =gSprites ldr r0, _080B3160 @ =gBattlerSpriteIds adds r0, r4, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] _080B3118: movs r0, 0x2 adds r4, r0, 0 eors r4, r6 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B3146 ldr r2, _080B315C @ =gSprites ldr r0, _080B3160 @ =gBattlerSpriteIds adds r0, r4, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] _080B3146: adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080B3164 @ =sub_80B3168 str r0, [r5, 0x1C] _080B3156: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B315C: .4byte gSprites _080B3160: .4byte gBattlerSpriteIds _080B3164: .4byte sub_80B3168 thumb_func_end sub_80B30B0 thumb_func_start sub_80B3168 sub_80B3168: @ 80B3168 push {r4-r6,lr} adds r6, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 bne _080B31C0 movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 bl sub_80768B0 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 eors r0, r1 negs r1, r0 orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B31A6 adds r0, r5, 0 bl sub_8073128 _080B31A6: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B31C0 movs r0, 0x1 eors r5, r0 adds r0, r5, 0 bl sub_8073128 _080B31C0: ldr r0, _080B31CC @ =DestroyAnimSprite str r0, [r6, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B31CC: .4byte DestroyAnimSprite thumb_func_end sub_80B3168 thumb_func_start sub_80B31D0 sub_80B31D0: @ 80B31D0 push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080B325C ldr r5, _080B321C @ =gBattleAnimArgs movs r1, 0x6 ldrsh r0, [r5, r1] movs r6, 0 cmp r0, 0 bne _080B31EA movs r6, 0x1 _080B31EA: bl IsContest lsls r0, 24 cmp r0, 0 bne _080B3232 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080B3232 ldr r0, _080B3220 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080B3224 ldrh r0, [r5] movs r1, 0x48 subs r1, r0 strh r1, [r4, 0x20] ldrh r0, [r5, 0x2] adds r0, 0x50 strh r0, [r4, 0x22] b _080B3254 .align 2, 0 _080B321C: .4byte gBattleAnimArgs _080B3220: .4byte gBattleAnimAttacker _080B3224: ldrh r0, [r5] adds r0, 0xB0 strh r0, [r4, 0x20] ldrh r0, [r5, 0x2] adds r0, 0x28 strh r0, [r4, 0x22] b _080B3254 _080B3232: ldr r0, _080B3248 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r0, r1] cmp r0, 0 bne _080B324C adds r0, r4, 0 adds r1, r6, 0 bl sub_8075160 b _080B3254 .align 2, 0 _080B3248: .4byte gBattleAnimArgs _080B324C: adds r0, r4, 0 adds r1, r6, 0 bl sub_8075114 _080B3254: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080B3270 _080B325C: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x30 ands r0, r1 cmp r0, 0 beq _080B3270 adds r0, r4, 0 bl move_anim_8074EE0 _080B3270: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80B31D0 thumb_func_start sub_80B3278 sub_80B3278: @ 80B3278 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080B32C0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B32C8 adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAnim ldrh r0, [r5, 0x20] subs r0, 0x28 strh r0, [r5, 0x20] ldrh r0, [r5, 0x22] adds r0, 0xA strh r0, [r5, 0x22] ldr r0, _080B32C4 @ =0x0000ffff b _080B32D6 .align 2, 0 _080B32C0: .4byte gBattleAnimAttacker _080B32C4: .4byte 0x0000ffff _080B32C8: ldrh r0, [r5, 0x20] adds r0, 0x28 strh r0, [r5, 0x20] ldrh r0, [r5, 0x22] subs r0, 0xA strh r0, [r5, 0x22] movs r0, 0x1 _080B32D6: strh r0, [r5, 0x30] ldr r1, _080B32EC @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, _080B32F0 @ =sub_8074F6C str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B32EC: .4byte DestroyAnimSprite _080B32F0: .4byte sub_8074F6C thumb_func_end sub_80B3278 thumb_func_start sub_80B32F4 sub_80B32F4: @ 80B32F4 push {r4-r7,lr} adds r5, r0, 0 ldr r6, _080B3378 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x1 bl sub_8076B2C lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 adds r1, r0 lsls r1, 15 lsrs r4, r1, 16 ldrb r0, [r6] movs r1, 0 bl sub_8076B2C lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 adds r1, r0 asrs r1, 1 negs r1, r1 lsls r1, 16 lsrs r7, r1, 16 ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080B333A lsls r0, r4, 16 negs r0, r0 lsrs r4, r0, 16 _080B333A: ldrb r0, [r6] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r4 strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r7 strh r0, [r5, 0x22] lsls r0, 16 asrs r0, 16 cmp r0, 0xF bgt _080B3366 movs r0, 0x10 strh r0, [r5, 0x22] _080B3366: ldr r1, _080B337C @ =sub_80B3384 adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, _080B3380 @ =sub_8074F6C str r0, [r5, 0x1C] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B3378: .4byte gBattleAnimAttacker _080B337C: .4byte sub_80B3384 _080B3380: .4byte sub_8074F6C thumb_func_end sub_80B32F4 thumb_func_start sub_80B3384 sub_80B3384: @ 80B3384 push {r4,lr} adds r4, r0, 0 ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x1] ldr r0, _080B33B0 @ =gUnknown_83E6FF0 str r0, [r4, 0x10] movs r0, 0 strh r0, [r4, 0x2E] adds r0, r4, 0 bl InitSpriteAffineAnim ldr r0, _080B33B4 @ =sub_80B33B8 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080B33B0: .4byte gUnknown_83E6FF0 _080B33B4: .4byte sub_80B33B8 thumb_func_end sub_80B3384 thumb_func_start sub_80B33B8 sub_80B33B8: @ 80B33B8 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _080B33CA cmp r0, 0x1 beq _080B33F8 b _080B3410 _080B33CA: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080B3410 ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 strb r0, [r4, 0x1] movs r0, 0x12 strh r0, [r4, 0x30] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080B3410 _080B33F8: ldrh r0, [r4, 0x30] subs r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _080B3410 adds r0, r4, 0 bl DestroyAnimSprite _080B3410: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B33B8 thumb_func_start sub_80B3418 sub_80B3418: @ 80B3418 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080B3448 @ =gTasks adds r4, r0 movs r0, 0 bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x8] ldr r2, _080B344C @ =gUnknown_83E700C adds r0, r4, 0 bl sub_80762D0 ldr r0, _080B3450 @ =sub_80B3454 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080B3448: .4byte gTasks _080B344C: .4byte gUnknown_83E700C _080B3450: .4byte sub_80B3454 thumb_func_end sub_80B3418 thumb_func_start sub_80B3454 sub_80B3454: @ 80B3454 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080B347C @ =gTasks adds r0, r1 bl sub_8076308 lsls r0, 24 cmp r0, 0 bne _080B3474 adds r0, r4, 0 bl DestroyAnimVisualTask _080B3474: pop {r4} pop {r0} bx r0 .align 2, 0 _080B347C: .4byte gTasks thumb_func_end sub_80B3454 thumb_func_start sub_80B3480 sub_80B3480: @ 80B3480 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080B34CC @ =gTasks adds r4, r1, r0 movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r1, 0 strh r0, [r4, 0x8] strh r1, [r4, 0xA] strh r1, [r4, 0xC] ldr r0, _080B34D0 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 movs r1, 0x8 cmp r0, 0 beq _080B34B4 movs r1, 0x4 _080B34B4: strh r1, [r4, 0xE] ldrb r1, [r4, 0x8] ldr r2, _080B34D4 @ =gUnknown_83E702C adds r0, r4, 0 bl sub_80762D0 ldr r0, _080B34D8 @ =sub_80B34DC str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080B34CC: .4byte gTasks _080B34D0: .4byte gBattleAnimAttacker _080B34D4: .4byte gUnknown_83E702C _080B34D8: .4byte sub_80B34DC thumb_func_end sub_80B3480 thumb_func_start sub_80B34DC sub_80B34DC: @ 80B34DC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080B34FC @ =gTasks adds r4, r0, r1 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0 beq _080B3500 cmp r0, 0x1 beq _080B351C b _080B357A .align 2, 0 _080B34FC: .4byte gTasks _080B3500: adds r0, r4, 0 bl sub_8076308 ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x13 ble _080B357A ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _080B357A _080B351C: movs r1, 0xE ldrsh r0, [r4, r1] cmp r0, 0 beq _080B3544 ldr r2, _080B3540 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x26] subs r1, 0x8 strh r1, [r0, 0x26] ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] b _080B357A .align 2, 0 _080B3540: .4byte gSprites _080B3544: ldr r3, _080B3580 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0x88 lsls r1, 1 strh r1, [r0, 0x20] ldrb r0, [r4, 0x8] bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _080B357A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B3580: .4byte gSprites thumb_func_end sub_80B34DC thumb_func_start sub_80B3584 sub_80B3584: @ 80B3584 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080B360C @ =gTasks adds r5, r1, r0 movs r1, 0 movs r0, 0x10 strh r0, [r5, 0xE] strh r1, [r5, 0x10] ldr r4, _080B3610 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] ldrb r0, [r4] movs r1, 0x1 bl sub_8076B2C lsls r0, 16 asrs r0, 16 movs r1, 0x3 bl __divsi3 lsls r0, 16 lsrs r6, r0, 16 ldrb r0, [r4] movs r1, 0 bl sub_8076B2C lsls r0, 16 asrs r0, 16 movs r1, 0x3 bl __divsi3 lsls r0, 16 lsrs r0, 16 adds r1, r0, 0 cmp r0, r6 bcs _080B35EE adds r1, r6, 0 _080B35EE: strh r1, [r5, 0x20] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg movs r0, 0x52 movs r1, 0x10 bl SetGpuReg ldr r0, _080B3614 @ =sub_80B3618 str r0, [r5] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B360C: .4byte gTasks _080B3610: .4byte gBattleAnimAttacker _080B3614: .4byte sub_80B3618 thumb_func_end sub_80B3584 thumb_func_start sub_80B3618 sub_80B3618: @ 80B3618 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080B363C @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _080B3718 cmp r1, 0x1 bgt _080B3640 cmp r1, 0 beq _080B364E b _080B379E .align 2, 0 _080B363C: .4byte gTasks _080B3640: cmp r1, 0x2 bne _080B3646 b _080B377A _080B3646: cmp r1, 0x3 bne _080B364C b _080B3788 _080B364C: b _080B379E _080B364E: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 bgt _080B365E b _080B379E _080B365E: strh r1, [r4, 0xA] ldr r0, _080B369C @ =gUnknown_83E7044 movs r2, 0x22 ldrsh r1, [r4, r2] movs r3, 0x24 ldrsh r2, [r4, r3] movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 movs r0, 0xC ldrsh r1, [r4, r0] adds r1, 0x8 lsls r1, 1 adds r0, r4, 0 adds r0, 0x8 adds r0, r1 strh r2, [r0] cmp r2, 0x40 beq _080B3702 movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080B36BC cmp r0, 0x1 bgt _080B36A0 cmp r0, 0 beq _080B36AA b _080B3702 .align 2, 0 _080B369C: .4byte gUnknown_83E7044 _080B36A0: cmp r0, 0x2 beq _080B36D4 cmp r0, 0x3 beq _080B36EC b _080B3702 _080B36AA: ldr r0, _080B36B8 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r0 ldrh r0, [r4, 0x20] b _080B36FA .align 2, 0 _080B36B8: .4byte gSprites _080B36BC: ldr r0, _080B36D0 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r0 ldrh r0, [r4, 0x20] negs r0, r0 strh r0, [r1, 0x24] ldrh r0, [r4, 0x20] b _080B3700 .align 2, 0 _080B36D0: .4byte gSprites _080B36D4: ldr r1, _080B36E8 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 ldrh r1, [r4, 0x20] strh r1, [r0, 0x24] ldrh r1, [r4, 0x20] strh r1, [r0, 0x26] b _080B3702 .align 2, 0 _080B36E8: .4byte gSprites _080B36EC: ldr r0, _080B3714 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r0 ldrh r0, [r4, 0x20] negs r0, r0 _080B36FA: strh r0, [r1, 0x24] ldrh r0, [r4, 0x20] negs r0, r0 _080B3700: strh r0, [r1, 0x26] _080B3702: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _080B379E b _080B377A .align 2, 0 _080B3714: .4byte gSprites _080B3718: ldrh r0, [r4, 0xA] ands r1, r0 cmp r1, 0 beq _080B3728 ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] b _080B372E _080B3728: ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] _080B372E: 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 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x20 bne _080B379E movs r5, 0x8 adds r6, r4, 0 adds r6, 0x8 _080B3754: lsls r0, r5, 1 adds r1, r6, r0 movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0x40 beq _080B3770 adds r1, r0, 0 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _080B3784 @ =gSprites adds r0, r1 bl DestroySprite _080B3770: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0xC bls _080B3754 _080B377A: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080B379E .align 2, 0 _080B3784: .4byte gSprites _080B3788: movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg adds r0, r5, 0 bl DestroyAnimVisualTask _080B379E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80B3618 thumb_func_start sub_80B37A4 sub_80B37A4: @ 80B37A4 push {r4,lr} adds r4, r0, 0 movs r0, 0x30 ldrsh r1, [r4, r0] movs r2, 0x2E ldrsh r0, [r4, r2] subs r0, 0xA cmp r1, r0 ble _080B37CE ldrh r0, [r4, 0x30] movs r1, 0x1 ands r1, r0 adds r3, r4, 0 adds r3, 0x3E lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080B37CE: movs r0, 0x30 ldrsh r1, [r4, r0] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r1, r0 bne _080B37E0 adds r0, r4, 0 bl DestroyAnimSprite _080B37E0: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] pop {r4} pop {r0} bx r0 thumb_func_end sub_80B37A4 thumb_func_start sub_80B37EC sub_80B37EC: @ 80B37EC push {r4-r6,lr} adds r5, r0, 0 ldr r6, _080B3828 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r6, r1] cmp r0, 0 bne _080B3818 ldr r4, _080B382C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] _080B3818: ldrh r0, [r6, 0x2] strh r0, [r5, 0x2E] ldr r0, _080B3830 @ =sub_80B37A4 str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B3828: .4byte gBattleAnimArgs _080B382C: .4byte gBattleAnimAttacker _080B3830: .4byte sub_80B37A4 thumb_func_end sub_80B37EC thumb_func_start sub_80B3834 sub_80B3834: @ 80B3834 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080B3890 @ =gTasks adds r5, r1, r0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B38D8 ldr r0, _080B3894 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0x1 bne _080B38A4 ldr r0, _080B3898 @ =0x0000fff6 strh r0, [r5, 0x1C] ldr r4, _080B389C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x5 bl sub_8076B2C subs r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x2 bl sub_8076B2C adds r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B38A0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_8076B2C subs r0, 0x8 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x2 bl sub_8076B2C adds r0, 0x8 b _080B3962 .align 2, 0 _080B3890: .4byte gTasks _080B3894: .4byte gBattleAnimArgs _080B3898: .4byte 0x0000fff6 _080B389C: .4byte gBattleAnimTarget _080B38A0: .4byte gBattleAnimAttacker _080B38A4: movs r0, 0xA strh r0, [r5, 0x1C] ldr r4, _080B38D0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_8076B2C adds r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x3 bl sub_8076B2C subs r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B38D4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x4 bl sub_8076B2C adds r0, 0x8 b _080B3956 .align 2, 0 _080B38D0: .4byte gBattleAnimAttacker _080B38D4: .4byte gBattleAnimTarget _080B38D8: ldr r0, _080B391C @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0x1 bne _080B392C ldr r0, _080B3920 @ =0x0000fff6 strh r0, [r5, 0x1C] ldr r4, _080B3924 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x4 bl sub_8076B2C adds r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x2 bl sub_8076B2C adds r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B3928 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_8076B2C adds r0, 0x8 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x2 bl sub_8076B2C adds r0, 0x8 b _080B3962 .align 2, 0 _080B391C: .4byte gBattleAnimArgs _080B3920: .4byte 0x0000fff6 _080B3924: .4byte gBattleAnimTarget _080B3928: .4byte gBattleAnimAttacker _080B392C: movs r0, 0xA strh r0, [r5, 0x1C] ldr r4, _080B3974 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_8076B2C subs r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x3 bl sub_8076B2C subs r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B3978 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x5 bl sub_8076B2C subs r0, 0x8 _080B3956: strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x3 bl sub_8076B2C subs r0, 0x8 _080B3962: strh r0, [r5, 0x24] movs r0, 0x6 strh r0, [r5, 0xA] ldr r0, _080B397C @ =sub_80B3980 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B3974: .4byte gBattleAnimAttacker _080B3978: .4byte gBattleAnimTarget _080B397C: .4byte sub_80B3980 thumb_func_end sub_80B3834 thumb_func_start sub_80B3980 sub_80B3980: @ 80B3980 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080B39A0 @ =gTasks adds r5, r0, r1 movs r0, 0x8 ldrsh r1, [r5, r0] cmp r1, 0 beq _080B39A4 cmp r1, 0x1 beq _080B3A18 b _080B3A2C .align 2, 0 _080B39A0: .4byte gTasks _080B39A4: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 ble _080B3A2C strh r1, [r5, 0xA] ldr r0, _080B3A10 @ =gUnknown_83E7114 movs r2, 0x1E ldrsh r1, [r5, r2] movs r3, 0x20 ldrsh r2, [r5, r3] movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _080B39F8 ldr r0, _080B3A14 @ =gSprites lsls r4, r1, 4 adds r4, r1 lsls r4, 2 adds r4, r0 movs r0, 0x10 strh r0, [r4, 0x2E] ldrh r0, [r5, 0x22] strh r0, [r4, 0x32] ldrh r0, [r5, 0x24] strh r0, [r4, 0x36] ldrh r0, [r5, 0x1C] strh r0, [r4, 0x38] adds r0, r4, 0 bl sub_8075068 ldrb r0, [r5, 0xC] movs r1, 0x3 ands r1, r0 adds r0, r4, 0 bl StartSpriteAffineAnim _080B39F8: ldrh r0, [r5, 0xC] adds r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0xC bne _080B3A2C ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080B3A2C .align 2, 0 _080B3A10: .4byte gUnknown_83E7114 _080B3A14: .4byte gSprites _080B3A18: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x11 ble _080B3A2C adds r0, r2, 0 bl DestroyAnimVisualTask _080B3A2C: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80B3980 thumb_func_start sub_80B3A34 sub_80B3A34: @ 80B3A34 push {r4,lr} adds r4, r0, 0 bl AnimateBallThrow lsls r0, 24 cmp r0, 0 beq _080B3A52 ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl DestroySprite _080B3A52: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B3A34 thumb_func_start sub_80B3A58 sub_80B3A58: @ 80B3A58 push {r4-r6,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080B3A90 @ =gTasks adds r4, r1, r0 ldr r0, _080B3A94 @ =gBattleAnimTarget ldrb r0, [r0] bl sub_807492C lsls r0, 24 lsrs r1, r0, 24 adds r0, r1, 0 subs r0, 0x20 strh r0, [r4, 0x24] ldr r0, _080B3A98 @ =gBattleAnimArgs movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0x1 beq _080B3AAE cmp r0, 0x1 bgt _080B3A9C cmp r0, 0 beq _080B3AA2 b _080B3ACA .align 2, 0 _080B3A90: .4byte gTasks _080B3A94: .4byte gBattleAnimTarget _080B3A98: .4byte gBattleAnimArgs _080B3A9C: cmp r0, 0x2 beq _080B3ABA b _080B3ACA _080B3AA2: movs r0, 0x2 strh r0, [r4, 0x1E] movs r0, 0x5 strh r0, [r4, 0x20] movs r0, 0x40 b _080B3AC2 _080B3AAE: movs r0, 0x2 strh r0, [r4, 0x1E] movs r0, 0x5 strh r0, [r4, 0x20] movs r0, 0xC0 b _080B3AC2 _080B3ABA: movs r0, 0x4 strh r0, [r4, 0x1E] strh r0, [r4, 0x20] movs r0, 0 _080B3AC2: strh r0, [r4, 0x22] adds r0, r1, 0 adds r0, 0x20 strh r0, [r4, 0x26] _080B3ACA: movs r1, 0x24 ldrsh r0, [r4, r1] cmp r0, 0 bge _080B3AD6 movs r0, 0 strh r0, [r4, 0x24] _080B3AD6: ldr r0, _080B3AF0 @ =gBattleAnimTarget ldrb r0, [r0] bl sub_80768B0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080B3AFC ldr r0, _080B3AF4 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, _080B3AF8 @ =0x04000014 b _080B3B04 .align 2, 0 _080B3AF0: .4byte gBattleAnimTarget _080B3AF4: .4byte gBattle_BG1_X _080B3AF8: .4byte 0x04000014 _080B3AFC: ldr r0, _080B3B64 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, _080B3B68 @ =0x04000018 _080B3B04: str r0, [sp] ldrh r1, [r4, 0x24] lsls r3, r1, 16 asrs r1, r3, 16 movs r2, 0x24 ldrsh r0, [r4, r2] adds r0, 0x40 cmp r1, r0 bgt _080B3B3E ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 _080B3B1E: asrs r3, 16 lsls r1, r3, 1 adds r2, r1, r5 ldrh r0, [r4, 0x1C] strh r0, [r2] adds r1, r6 ldrh r0, [r4, 0x1C] strh r0, [r1] adds r3, 0x1 lsls r3, 16 asrs r1, r3, 16 movs r2, 0x24 ldrsh r0, [r4, r2] adds r0, 0x40 cmp r1, r0 ble _080B3B1E _080B3B3E: ldr r0, _080B3B70 @ =0xa2600001 str r0, [sp, 0x4] mov r1, sp movs r2, 0 movs r0, 0x1 strb r0, [r1, 0x8] mov r0, sp strb r2, [r0, 0x9] ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] bl ScanlineEffect_SetParams ldr r0, _080B3B74 @ =sub_80B3B78 str r0, [r4] add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B3B64: .4byte gBattle_BG2_X _080B3B68: .4byte 0x04000018 _080B3B6C: .4byte gScanlineEffectRegBuffers _080B3B70: .4byte 0xa2600001 _080B3B74: .4byte sub_80B3B78 thumb_func_end sub_80B3A58 thumb_func_start sub_80B3B78 sub_80B3B78: @ 80B3B78 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080B3BA0 @ =gTasks adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080B3C52 cmp r0, 0x1 bgt _080B3BA4 cmp r0, 0 beq _080B3BAA b _080B3C6A .align 2, 0 _080B3BA0: .4byte gTasks _080B3BA4: cmp r0, 0x2 beq _080B3C64 b _080B3C6A _080B3BAA: ldrh r3, [r5, 0x22] ldrh r4, [r5, 0x24] movs r2, 0x24 ldrsh r1, [r5, r2] movs r2, 0x26 ldrsh r0, [r5, r2] cmp r1, r0 bgt _080B3C42 ldr r0, _080B3BF4 @ =gSineTable mov r9, r0 movs r7, 0x3 ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers mov r12, r1 movs r2, 0xF0 lsls r2, 3 add r2, r12 mov r8, r2 _080B3BCC: lsls r2, r3, 16 asrs r0, r2, 15 add r0, r9 movs r3, 0 ldrsh r0, [r0, r3] movs r3, 0x20 ldrsh r1, [r5, r3] asrs r0, r1 lsls r0, 16 lsrs r1, r0, 16 asrs r3, r0, 16 adds r6, r2, 0 cmp r3, 0 ble _080B3BFC ldrh r1, [r5, 0xA] adds r0, r7, 0 ands r0, r1 adds r0, r3, r0 b _080B3C08 .align 2, 0 _080B3BF4: .4byte gSineTable _080B3BF8: .4byte gScanlineEffectRegBuffers _080B3BFC: cmp r3, 0 bge _080B3C0C ldrh r1, [r5, 0xA] adds r0, r7, 0 ands r0, r1 subs r0, r3, r0 _080B3C08: lsls r0, 16 lsrs r1, r0, 16 _080B3C0C: lsls r2, r4, 16 asrs r2, 16 lsls r3, r2, 1 mov r0, r12 adds r4, r3, r0 ldrh r0, [r5, 0x1C] lsls r1, 16 asrs r1, 16 adds r0, r1, r0 strh r0, [r4] add r3, r8 ldrh r0, [r5, 0x1C] adds r1, r0 strh r1, [r3] asrs r0, r6, 16 ldrh r1, [r5, 0x1E] adds r0, r1 lsls r0, 16 lsrs r3, r0, 16 adds r2, 0x1 lsls r2, 16 lsrs r4, r2, 16 asrs r2, 16 movs r1, 0x26 ldrsh r0, [r5, r1] cmp r2, r0 ble _080B3BCC _080B3C42: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x17 ble _080B3C6A b _080B3C58 _080B3C52: ldr r1, _080B3C60 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B3C58: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080B3C6A .align 2, 0 _080B3C60: .4byte gScanlineEffect _080B3C64: adds r0, r2, 0 bl DestroyAnimVisualTask _080B3C6A: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80B3B78 thumb_func_start sub_80B3C78 sub_80B3C78: @ 80B3C78 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r4, r0, 24 mov r8, r4 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080B3CAC @ =gTasks adds r7, r0, r1 bl AllocOamMatrix lsls r0, 24 lsrs r5, r0, 24 mov r10, r5 adds r6, r5, 0 cmp r6, 0xFF bne _080B3CB0 adds r0, r4, 0 bl DestroyAnimVisualTask b _080B3D5A .align 2, 0 _080B3CAC: .4byte gTasks _080B3CB0: ldr r1, _080B3CD4 @ =gBattleAnimArgs ldrb r0, [r1] bl duplicate_obj_of_side_rel2move_in_transparent_mode lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 asrs r0, 16 cmp r0, 0 bge _080B3CD8 adds r0, r5, 0 bl FreeOamMatrix mov r0, r8 bl DestroyAnimVisualTask b _080B3D5A .align 2, 0 _080B3CD4: .4byte gBattleAnimArgs _080B3CD8: ldr r2, _080B3D68 @ =gSprites lsls r4, r0, 4 adds r4, r0 lsls r4, 2 adds r0, r2, 0 adds r0, 0x1C adds r0, r4, r0 ldr r1, _080B3D6C @ =SpriteCallbackDummy str r1, [r0] adds r4, r2 ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] movs r0, 0x1F ands r6, r0 lsls r2, r6, 1 ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 orrs r0, r2 strb r0, [r4, 0x3] adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] adds r1, r4, 0 adds r1, 0x43 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] mov r1, r9 lsls r0, r1, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale 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 ldr r1, _080B3D70 @ =gBattleAnimArgs ldrb r0, [r1] bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x22] mov r0, r10 strh r0, [r7, 0x24] mov r1, r9 strh r1, [r7, 0x26] ldr r0, _080B3D74 @ =sub_80B3D78 str r0, [r7] _080B3D5A: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B3D68: .4byte gSprites _080B3D6C: .4byte SpriteCallbackDummy _080B3D70: .4byte gBattleAnimArgs _080B3D74: .4byte sub_80B3D78 thumb_func_end sub_80B3C78 thumb_func_start sub_80B3D78 sub_80B3D78: @ 80B3D78 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080B3D9C @ =gTasks adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080B3DFC cmp r0, 0x1 bgt _080B3DA0 cmp r0, 0 beq _080B3DAA b _080B3E7C .align 2, 0 _080B3D9C: .4byte gTasks _080B3DA0: cmp r0, 0x2 beq _080B3E4C cmp r0, 0x3 beq _080B3E6C b _080B3E7C _080B3DAA: ldrh r0, [r4, 0xA] adds r0, 0x4 strh r0, [r4, 0xA] ldr r1, _080B3DF8 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 ldrh r1, [r0] lsls r1, 16 asrs r1, 17 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 subs r0, r1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r1, 0xC ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 bl sub_8076494 movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0x30 bne _080B3E7C b _080B3E5E .align 2, 0 _080B3DF8: .4byte gSineTable _080B3DFC: ldrh r0, [r4, 0xA] subs r0, 0x4 strh r0, [r4, 0xA] ldr r1, _080B3E48 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 ldrh r1, [r0] lsls r1, 16 asrs r1, 17 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 subs r0, r1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 movs r1, 0xC ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 bl sub_8076494 movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 bne _080B3E7C b _080B3E5E .align 2, 0 _080B3E48: .4byte gSineTable _080B3E4C: movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _080B3E68 @ =gSprites adds r0, r1 bl obj_delete_but_dont_free_vram _080B3E5E: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080B3E7C .align 2, 0 _080B3E68: .4byte gSprites _080B3E6C: ldrh r0, [r4, 0x24] lsls r0, 24 lsrs r0, 24 bl FreeOamMatrix adds r0, r5, 0 bl DestroyAnimVisualTask _080B3E7C: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80B3D78 thumb_func_start sub_80B3E84 sub_80B3E84: @ 80B3E84 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080B3EFC cmp r0, 0x1 bgt _080B3E9A cmp r0, 0 beq _080B3EA4 b _080B3FA4 _080B3E9A: cmp r0, 0x2 beq _080B3F2E cmp r0, 0x3 beq _080B3F8E b _080B3FA4 _080B3EA4: ldr r4, _080B3EF8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] bl IsContest lsls r0, 24 cmp r0, 0 beq _080B3ED2 ldrh r0, [r5, 0x22] adds r0, 0xC strh r0, [r5, 0x22] _080B3ED2: movs r0, 0x8 strh r0, [r5, 0x30] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldrh r0, [r5, 0x30] movs r1, 0x10 subs r1, r0 lsls r1, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg b _080B3F26 .align 2, 0 _080B3EF8: .4byte gBattleAnimAttacker _080B3EFC: adds r0, r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080B3FA4 movs r0, 0x40 negs r0, r0 bl sub_8073A44 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xC4 bl PlaySE12WithPanning adds r0, r5, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim _080B3F26: ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] b _080B3FA4 _080B3F2E: ldrh r0, [r5, 0x32] adds r1, r0, 0x1 strh r1, [r5, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080B3F72 movs r0, 0 strh r0, [r5, 0x32] ldrh r1, [r5, 0x30] subs r1, 0x1 strh r1, [r5, 0x30] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x30 ldrsh r0, [r5, r1] cmp r0, 0 bne _080B3F72 ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _080B3F72: movs r0, 0xE0 lsls r0, 2 adds r2, r0, 0 ldrh r1, [r5, 0x34] adds r2, r1 lsls r1, r2, 16 asrs r1, 24 ldrh r0, [r5, 0x26] subs r0, r1 strh r0, [r5, 0x26] movs r0, 0xFF ands r2, r0 strh r2, [r5, 0x34] b _080B3FA4 _080B3F8E: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r5, 0 bl DestroyAnimSprite _080B3FA4: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80B3E84 .align 2, 0 @ Don't pad with nop.