diff options
Diffstat (limited to 'asm/battle_anim_mons.s')
-rw-r--r-- | asm/battle_anim_mons.s | 6343 |
1 files changed, 6343 insertions, 0 deletions
diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s new file mode 100644 index 000000000..aded063d4 --- /dev/null +++ b/asm/battle_anim_mons.s @@ -0,0 +1,6343 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8074480 +sub_8074480: @ 8074480 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0x4 + bhi _08074500 + lsls r0, r4, 2 + ldr r1, _08074498 @ =_0807449C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08074498: .4byte _0807449C + .align 2, 0 +_0807449C: + .4byte _080744B0 + .4byte _080744D8 + .4byte _080744B0 + .4byte _08074500 + .4byte _08074500 +_080744B0: + ldr r4, _080744D0 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744D4 @ =gBattleTypeFlags + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + b _08074588 + .align 2, 0 +_080744D0: .4byte gUnknown_83AE01C +_080744D4: .4byte gBattleTypeFlags +_080744D8: + ldr r4, _080744F8 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744FC @ =gBattleTypeFlags + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x1] + b _08074588 + .align 2, 0 +_080744F8: .4byte gUnknown_83AE01C +_080744FC: .4byte gBattleTypeFlags +_08074500: + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08074538 + ldr r0, _0807452C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074530 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074534 @ =gEnemyParty + b _08074556 + .align 2, 0 +_0807452C: .4byte gUnknown_2024018 +_08074530: .4byte gBattlerPartyIndexes +_08074534: .4byte gEnemyParty +_08074538: + ldr r0, _08074564 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074568 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807456C @ =gPlayerParty +_08074556: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _08074572 + .align 2, 0 +_08074564: .4byte gUnknown_2024018 +_08074568: .4byte gBattlerPartyIndexes +_0807456C: .4byte gPlayerParty +_08074570: + ldrh r1, [r1, 0x2] +_08074572: + cmp r4, 0x3 + bne _0807457C + adds r0, r5, 0 + movs r2, 0x1 + b _08074580 +_0807457C: + adds r0, r5, 0 + movs r2, 0 +_08074580: + bl sub_80747AC + lsls r0, 24 + lsrs r0, 24 +_08074588: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8074480 + + thumb_func_start sub_8074590 +sub_8074590: @ 8074590 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08074674 + cmp r4, 0xC9 + bne _08074638 + ldr r0, _080745D8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080745E4 + ldr r1, _080745DC @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080745E0 @ =gPlayerParty + adds r0, r1 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _080745EA + .align 2, 0 +_080745D8: .4byte gUnknown_2024018 +_080745DC: .4byte gBattlerPartyIndexes +_080745E0: .4byte gPlayerParty +_080745E4: + ldr r0, _08074620 @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080745EA: + 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 _08074624 + adds r0, r7, 0 + b _0807462E + .align 2, 0 +_08074620: .4byte gUnknown_2024008 +_08074624: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_0807462E: + ldr r1, _08074634 @ =gUnknown_8235E6C + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074634: .4byte gUnknown_8235E6C +_08074638: + ldr r0, _0807464C @ =0x00000181 + cmp r4, r0 + bne _08074658 + ldr r0, _08074650 @ =gUnknown_83AE050 + ldr r1, _08074654 @ =gBattleMonForms + adds r1, r5, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r0, [r1] + b _08074740 + .align 2, 0 +_0807464C: .4byte 0x00000181 +_08074650: .4byte gUnknown_83AE050 +_08074654: .4byte gBattleMonForms +_08074658: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074668 + ldr r0, _08074664 @ =gUnknown_8235E6C + b _0807473E + .align 2, 0 +_08074664: .4byte gUnknown_8235E6C +_08074668: + ldr r1, _08074670 @ =gUnknown_8235E6C + lsls r0, r4, 2 + b _0807473C + .align 2, 0 +_08074670: .4byte gUnknown_8235E6C +_08074674: + cmp r4, 0xC9 + bne _08074704 + ldr r0, _080746A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080746B0 + ldr r1, _080746A8 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080746AC @ =gEnemyParty + adds r0, r1 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _080746B6 + .align 2, 0 +_080746A4: .4byte gUnknown_2024018 +_080746A8: .4byte gBattlerPartyIndexes +_080746AC: .4byte gEnemyParty +_080746B0: + ldr r0, _080746EC @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080746B6: + 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 _080746F0 + adds r0, r7, 0 + b _080746FA + .align 2, 0 +_080746EC: .4byte gUnknown_2024008 +_080746F0: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_080746FA: + ldr r1, _08074700 @ =gUnknown_82349CC + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074700: .4byte gUnknown_82349CC +_08074704: + ldr r0, _0807471C @ =0x00000181 + cmp r4, r0 + bne _08074728 + ldr r0, _08074720 @ =gUnknown_83AE03C + ldr r1, _08074724 @ =gBattleMonForms + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08074740 + .align 2, 0 +_0807471C: .4byte 0x00000181 +_08074720: .4byte gUnknown_83AE03C +_08074724: .4byte gBattleMonForms +_08074728: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074738 + ldr r0, _08074734 @ =gUnknown_82349CC + b _0807473E + .align 2, 0 +_08074734: .4byte gUnknown_82349CC +_08074738: + ldr r1, _08074748 @ =gUnknown_82349CC + lsls r0, r7, 2 +_0807473C: + adds r0, r1 +_0807473E: + ldrb r0, [r0, 0x1] +_08074740: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08074748: .4byte gUnknown_82349CC + thumb_func_end sub_8074590 + + thumb_func_start sub_807474C +sub_807474C: @ 807474C + 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 GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807479E + ldr r0, _0807477C @ =0x00000181 + cmp r4, r0 + bne _08074788 + ldr r0, _08074780 @ =gUnknown_83AE04C + ldr r1, _08074784 @ =gBattleMonForms + adds r1, r6, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r5, [r1] + b _0807479E + .align 2, 0 +_0807477C: .4byte 0x00000181 +_08074780: .4byte gUnknown_83AE04C +_08074784: .4byte gBattleMonForms +_08074788: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074798 + ldr r0, _08074794 @ =gUnknown_823A004 + b _0807479C + .align 2, 0 +_08074794: .4byte gUnknown_823A004 +_08074798: + ldr r0, _080747A8 @ =gUnknown_823A004 + adds r0, r7, r0 +_0807479C: + ldrb r5, [r0] +_0807479E: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080747A8: .4byte gUnknown_823A004 + thumb_func_end sub_807474C + + thumb_func_start sub_80747AC +sub_80747AC: @ 80747AC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r7, r2, 24 + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080747D4 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + b _080747F2 +_080747D4: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_807474C + lsls r0, 24 + lsrs r0, 24 + subs r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 +_080747F2: + adds r0, r6, 0 + bl GetBattlerPosition + ldr r3, _0807483C @ =gUnknown_83AE01C + lsls r0, 24 + lsrs r0, 22 + ldr r1, _08074840 @ =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, r5 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r7, 0 + beq _08074832 + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0807482C + adds r0, r4, 0 + adds r0, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 +_0807482C: + cmp r4, 0x68 + bls _08074832 + movs r4, 0x68 +_08074832: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807483C: .4byte gUnknown_83AE01C +_08074840: .4byte gBattleTypeFlags + thumb_func_end sub_80747AC + + thumb_func_start sub_8074844 +sub_8074844: @ 8074844 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r0, 0xFD + lsls r0, 24 + adds r1, r0 + lsrs r1, 24 + cmp r1, 0x1 + bhi _08074896 + ldr r0, _08074874 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807487C + ldr r1, _08074878 @ =gUnknown_2037F1C + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + b _0807487E + .align 2, 0 +_08074874: .4byte gUnknown_2024018 +_08074878: .4byte gUnknown_2037F1C +_0807487C: + ldrh r1, [r1, 0x2] +_0807487E: + cmp r3, 0x3 + bne _0807488C + adds r0, r2, 0 + movs r2, 0x1 + bl sub_80747AC + b _0807489E +_0807488C: + adds r0, r2, 0 + movs r2, 0 + bl sub_80747AC + b _0807489E +_08074896: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8074480 +_0807489E: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8074844 + + thumb_func_start GetBankSpriteDefault_Y +GetBankSpriteDefault_Y: @ 80748A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end GetBankSpriteDefault_Y + + thumb_func_start GetSubstituteSpriteDefault_Y +GetSubstituteSpriteDefault_Y: @ 80748BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080748E0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x80 + lsls r1, 13 + b _080748F0 +_080748E0: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x88 + lsls r1, 13 +_080748F0: + 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_8074900 +sub_8074900: @ 8074900 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807491A + adds r0, r4, 0 + movs r1, 0x1 + b _0807491E +_0807491A: + adds r0, r4, 0 + movs r1, 0x4 +_0807491E: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8074900 + + thumb_func_start sub_807492C +sub_807492C: @ 807492C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08074978 + ldr r0, _0807496C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _08074970 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074974 @ =gEnemyParty + b _08074996 + .align 2, 0 +_0807496C: .4byte gUnknown_2024018 +_08074970: .4byte gBattlerPartyIndexes +_08074974: .4byte gEnemyParty +_08074978: + ldr r0, _080749A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _080749A8 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080749AC @ =gPlayerParty +_08074996: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 + b _080749B2 + .align 2, 0 +_080749A4: .4byte gUnknown_2024018 +_080749A8: .4byte gBattlerPartyIndexes +_080749AC: .4byte gPlayerParty +_080749B0: + ldrh r4, [r1, 0x2] +_080749B2: + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080749CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807474C + subs r0, r6, r0 + lsls r0, 24 + lsrs r6, r0, 24 +_080749CC: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807492C + + thumb_func_start GetAnimBankSpriteId +GetAnimBankSpriteId: @ 80749D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + bne _080749FC + ldr r4, _080749F4 @ =gBattleAnimAttacker + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _080749F8 @ =gBattlerSpriteIds + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_080749F4: .4byte gBattleAnimAttacker +_080749F8: .4byte gBattlerSpriteIds +_080749FC: + cmp r0, 0x1 + bne _08074A1C + ldr r4, _08074A14 @ =gBattleAnimTarget + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _08074A18 @ =gBattlerSpriteIds + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_08074A14: .4byte gBattleAnimTarget +_08074A18: .4byte gBattlerSpriteIds +_08074A1C: + cmp r1, 0x2 + bne _08074A38 + ldr r5, _08074A34 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + b _08074A54 + .align 2, 0 +_08074A34: .4byte gBattleAnimAttacker +_08074A38: + ldr r5, _08074A50 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _08074A54 +_08074A4A: + movs r0, 0xFF + b _08074A5E + .align 2, 0 +_08074A50: .4byte gBattleAnimTarget +_08074A54: + ldr r1, _08074A64 @ =gBattlerSpriteIds + ldrb r0, [r5] + eors r0, r4 +_08074A5A: + adds r0, r1 + ldrb r0, [r0] +_08074A5E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08074A64: .4byte gBattlerSpriteIds + thumb_func_end GetAnimBankSpriteId + + thumb_func_start StoreSpriteCallbackInData6 +StoreSpriteCallbackInData6: @ 8074A68 + strh r1, [r0, 0x3A] + lsrs r1, 16 + strh r1, [r0, 0x3C] + bx lr + thumb_func_end StoreSpriteCallbackInData6 + + thumb_func_start SetCallbackToStoredInData +SetCallbackToStoredInData: @ 8074A70 + 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 SetCallbackToStoredInData + + thumb_func_start sub_8074A80 +sub_8074A80: @ 8074A80 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074AD4 + 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 _08074AC0 + ldr r2, _08074ABC @ =0xffffff00 + b _08074AC8 + .align 2, 0 +_08074ABC: .4byte 0xffffff00 +_08074AC0: + cmp r0, 0 + bge _08074ACC + movs r2, 0x80 + lsls r2, 1 +_08074AC8: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074ACC: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074ADA +_08074AD4: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074ADA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074A80 + + thumb_func_start sub_8074AE0 +sub_8074AE0: @ 8074AE0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074B50 + 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 _08074B3C + ldr r2, _08074B38 @ =0xffffff00 + b _08074B44 + .align 2, 0 +_08074B38: .4byte 0xffffff00 +_08074B3C: + cmp r0, 0 + bge _08074B48 + movs r2, 0x80 + lsls r2, 1 +_08074B44: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074B48: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074B56 +_08074B50: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074B56: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074AE0 + + thumb_func_start sub_8074B5C +sub_8074B5C: @ 8074B5C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074BD8 + 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 _08074BA4 + ldr r2, _08074BA0 @ =0xffffff00 + b _08074BAC + .align 2, 0 +_08074BA0: .4byte 0xffffff00 +_08074BA4: + cmp r0, 0 + bge _08074BB0 + movs r2, 0x80 + lsls r2, 1 +_08074BAC: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074BB0: + ldrh r1, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + ble _08074BC4 + ldr r2, _08074BC0 @ =0xffffff00 + b _08074BCC + .align 2, 0 +_08074BC0: .4byte 0xffffff00 +_08074BC4: + cmp r0, 0 + bge _08074BD0 + movs r2, 0x80 + lsls r2, 1 +_08074BCC: + adds r0, r1, r2 + strh r0, [r4, 0x36] +_08074BD0: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074BDE +_08074BD8: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074BDE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074B5C + + thumb_func_start sub_8074BE4 +sub_8074BE4: @ 8074BE4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074C38 + 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 _08074C24 + ldr r2, _08074C20 @ =0xffffff00 + b _08074C2C + .align 2, 0 +_08074C20: .4byte 0xffffff00 +_08074C24: + cmp r0, 0 + bge _08074C30 + movs r2, 0x80 + lsls r2, 1 +_08074C2C: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074C30: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074C3E +_08074C38: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074C3E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074BE4 + + thumb_func_start sub_8074C44 +sub_8074C44: @ 8074C44 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074C58 + subs r0, r2, 0x1 + strh r0, [r1, 0x2E] + b _08074C5E +_08074C58: + adds r0, r1, 0 + bl SetCallbackToStoredInData +_08074C5E: + pop {r0} + bx r0 + thumb_func_end sub_8074C44 + + thumb_func_start sub_8074C64 +sub_8074C64: @ 8074C64 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074C80 + ldr r1, _08074C7C @ =sub_8074CD0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074C7C: .4byte sub_8074CD0 + thumb_func_end sub_8074C64 + + thumb_func_start sub_8074C80 +sub_8074C80: @ 8074C80 + 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 _08074C96 + ldrh r0, [r4, 0x2E] + negs r0, r0 + strh r0, [r4, 0x2E] +_08074C96: + 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 _08074CB0 + negs r0, r0 +_08074CB0: + 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_8074C80 + + thumb_func_start sub_8074CD0 +sub_8074CD0: @ 8074CD0 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074CF4 + 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 _08074CFA +_08074CF4: + adds r0, r1, 0 + bl SetCallbackToStoredInData +_08074CFA: + pop {r0} + bx r0 + thumb_func_end sub_8074CD0 + + thumb_func_start sub_8074D00 +sub_8074D00: @ 8074D00 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _08074D30 + 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 _08074D36 +_08074D30: + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074D36: + pop {r0} + bx r0 + thumb_func_end sub_8074D00 + + thumb_func_start sub_8074D3C +sub_8074D3C: @ 8074D3C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074D6C + 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 _08074D72 +_08074D6C: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074D72: + adds r0, r4, 0 + bl UpdateMonIconFrame + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074D3C + + thumb_func_start sub_8074D80 +sub_8074D80: @ 8074D80 + 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, _08074DBC @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074DC0 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074DBC: .4byte gBattleAnimTarget +_08074DC0: .4byte sub_8074C64 + thumb_func_end sub_8074D80 + + thumb_func_start sub_8074DC4 +sub_8074DC4: @ 8074DC4 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _08074E08 + subs r0, r1, 0x1 + strh r0, [r3, 0x2E] + ldr r2, _08074E04 @ =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 _08074E0E + .align 2, 0 +_08074E04: .4byte gSprites +_08074E08: + adds r0, r3, 0 + bl SetCallbackToStoredInData +_08074E0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074DC4 + + thumb_func_start sub_8074E14 +sub_8074E14: @ 8074E14 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074E64 + 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, _08074E60 @ =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 _08074E6A + .align 2, 0 +_08074E60: .4byte gSprites +_08074E64: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074E6A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E14 + + thumb_func_start sub_8074E70 +sub_8074E70: @ 8074E70 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074ED2 + 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 _08074ED8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074ED8 + 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 _08074ED8 +_08074ED2: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074ED8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E70 + + thumb_func_start move_anim_8074EE0 +move_anim_8074EE0: @ 8074EE0 + 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_8074EF4 +sub_8074EF4: @ 8074EF4 + 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, _08074F30 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074F34 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074F30: .4byte gBattleAnimAttacker +_08074F34: .4byte sub_8074C64 + thumb_func_end sub_8074EF4 + + thumb_func_start sub_8074F38 +sub_8074F38: @ 8074F38 + 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_8074F38 + + thumb_func_start sub_8074F50 +sub_8074F50: @ 8074F50 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08074F66 + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074F66: + pop {r0} + bx r0 + thumb_func_end sub_8074F50 + + thumb_func_start sub_8074F6C +sub_8074F6C: @ 8074F6C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08074F82 + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074F82: + pop {r0} + bx r0 + thumb_func_end sub_8074F6C + + thumb_func_start sub_8074F88 +sub_8074F88: @ 8074F88 + 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_8074F88 + + thumb_func_start sub_8074FA8 +sub_8074FA8: @ 8074FA8 + 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_8074FA8 + + thumb_func_start sub_8074FCC +sub_8074FCC: @ 8074FCC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08074FF4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074FF4: .4byte gBattleAnimAttacker + thumb_func_end sub_8074FCC + + thumb_func_start sub_8074FF8 +sub_8074FF8: @ 8074FF8 + 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, _08075030 @ =gBattleAnimAttacker + ldrb r0, [r7] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08075034 @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bhi _08075044 + cmp r6, r0 + bcs _08075038 + lsls r0, r5, 16 + b _08075054 + .align 2, 0 +_08075030: .4byte gBattleAnimAttacker +_08075034: .4byte gBattleAnimTarget +_08075038: + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075050 +_08075044: + ldrh r1, [r4, 0x20] + lsls r0, r5, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4, 0x20] + b _0807505C +_08075050: + mov r1, r8 + lsls r0, r1, 16 +_08075054: + asrs r0, 16 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_0807505C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8074FF8 + + thumb_func_start sub_8075068 +sub_8075068: @ 8075068 + 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_8075068 + + thumb_func_start AnimateBallThrow +AnimateBallThrow: @ 8075094 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750C0 + 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 _080750C2 +_080750C0: + movs r0, 0x1 +_080750C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end AnimateBallThrow + + thumb_func_start sub_80750C8 +sub_80750C8: @ 80750C8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750F4 + 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 _080750F6 +_080750F4: + movs r0, 0x1 +_080750F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80750C8 + + thumb_func_start oamt_add_pos2_onto_pos1 +oamt_add_pos2_onto_pos1: @ 80750FC + 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_8075114 +sub_8075114: @ 8075114 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _0807513C + ldr r4, _08075158 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_0807513C: + ldr r4, _0807515C @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08075158: .4byte gBattleAnimTarget +_0807515C: .4byte gBattleAnimArgs + thumb_func_end sub_8075114 + + thumb_func_start sub_8075160 +sub_8075160: @ 8075160 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _08075184 + ldr r4, _08075180 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + b _08075198 + .align 2, 0 +_08075180: .4byte gBattleAnimAttacker +_08075184: + ldr r4, _080751BC @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 +_08075198: + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080751C0 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080751BC: .4byte gBattleAnimAttacker +_080751C0: .4byte gBattleAnimArgs + thumb_func_end sub_8075160 + + thumb_func_start GetBattlerSide +GetBattlerSide: @ 80751C4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751D4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_080751D4: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerSide + + thumb_func_start GetBattlerPosition +GetBattlerPosition: @ 80751D8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751E4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080751E4: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerPosition + + thumb_func_start GetBattlerAtPosition +GetBattlerAtPosition: @ 80751E8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r0, _0807521C @ =gBattlersCount + ldrb r2, [r0] + cmp r1, r2 + bcs _08075212 + ldr r4, _08075220 @ =gUnknown_2023BD6 + ldrb r0, [r4] + cmp r0, r3 + beq _08075212 +_08075200: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _08075212 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _08075200 +_08075212: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807521C: .4byte gBattlersCount +_08075220: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerAtPosition + + thumb_func_start sub_8075224 +sub_8075224: @ 8075224 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + ldr r0, _08075254 @ =gUnknown_2023BD6 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08075288 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075260 + ldr r1, _08075258 @ =gBattlerPartyIndexes + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807525C @ =gEnemyParty + b _0807526E + .align 2, 0 +_08075254: .4byte gUnknown_2023BD6 +_08075258: .4byte gBattlerPartyIndexes +_0807525C: .4byte gEnemyParty +_08075260: + ldr r1, _08075280 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08075284 @ =gPlayerParty +_0807526E: + adds r0, r1 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _08075288 + movs r0, 0x1 + b _0807528A + .align 2, 0 +_08075280: .4byte gBattlerPartyIndexes +_08075284: .4byte gPlayerParty +_08075288: + movs r0, 0 +_0807528A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8075224 + + thumb_func_start sub_8075290 +sub_8075290: @ 8075290 + ldr r0, _0807529C @ =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0807529C: .4byte gBattleTypeFlags + thumb_func_end sub_8075290 + + thumb_func_start sub_80752A0 +sub_80752A0: @ 80752A0 + ldr r1, _080752C0 @ =gUnknown_2022BB8 + ldr r1, [r1] + str r1, [r0] + ldr r1, _080752C4 @ =gUnknown_2022BBC + ldr r1, [r1] + str r1, [r0, 0x4] + movs r2, 0 + movs r1, 0x8 + strb r1, [r0, 0x8] + movs r1, 0x1 + strb r1, [r0, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + bx lr + .align 2, 0 +_080752C0: .4byte gUnknown_2022BB8 +_080752C4: .4byte gUnknown_2022BBC + thumb_func_end sub_80752A0 + + thumb_func_start sub_80752C8 +sub_80752C8: @ 80752C8 + push {lr} + adds r2, r0, 0 + cmp r1, 0x1 + bne _080752D6 + bl sub_80752A0 + b _080752F4 +_080752D6: + ldr r0, _080752F8 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r2] + ldr r0, _080752FC @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r2, 0x4] + movs r1, 0 + movs r0, 0x9 + strb r0, [r2, 0x8] + movs r0, 0x2 + strb r0, [r2, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r2, 0xA] + strh r1, [r2, 0xC] +_080752F4: + pop {r0} + bx r0 + .align 2, 0 +_080752F8: .4byte gUnknown_2022BB8 +_080752FC: .4byte gUnknown_2022BBC + thumb_func_end sub_80752C8 + + thumb_func_start sub_8075300 +sub_8075300: @ 8075300 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08075334 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _08075338 @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r4, 0x4] + ldr r0, _0807533C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bne _08075340 + movs r0, 0 + movs r1, 0x8 + strb r1, [r4, 0x8] + strb r2, [r4, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r4, 0xA] + strh r0, [r4, 0xC] + b _08075352 + .align 2, 0 +_08075334: .4byte gUnknown_2022BB8 +_08075338: .4byte gUnknown_2022BBC +_0807533C: .4byte gBattleAnimAttacker +_08075340: + movs r1, 0 + movs r0, 0x9 + strb r0, [r4, 0x8] + movs r0, 0x2 + strb r0, [r4, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] +_08075352: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075300 + + thumb_func_start sub_8075358 +sub_8075358: @ 8075358 + push {r4,lr} + sub sp, 0x20 + adds r4, r0, 0 + add r0, sp, 0xC + adds r1, r4, 0 + bl sub_80752C8 + movs r0, 0 + str r0, [sp, 0x1C] + add r0, sp, 0x1C + ldr r1, [sp, 0xC] + ldr r2, _080753B0 @ =0x05000800 + bl CpuSet + lsls r4, 24 + lsrs r4, 24 + ldr r1, [sp, 0xC] + movs r2, 0x80 + lsls r2, 6 + add r0, sp, 0xC + ldrh r3, [r0, 0xA] + adds r0, r4, 0 + bl LoadBgTiles + 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 + bl CopyBgTilemapBufferToVram + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080753B0: .4byte 0x05000800 + thumb_func_end sub_8075358 + + thumb_func_start sub_80753B4 +sub_80753B4: @ 80753B4 + 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, _080753FC @ =gUnknown_2022BB8 + ldr r1, [r4] + ldr r2, _08075400 @ =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 + .align 2, 0 +_080753FC: .4byte gUnknown_2022BB8 +_08075400: .4byte 0x05000800 + thumb_func_end sub_80753B4 + + thumb_func_start sub_8075404 +sub_8075404: @ 8075404 + 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_8075404 + + thumb_func_start sub_807543C +sub_807543C: @ 807543C + push {r4,lr} + adds r4, r0, 0 + bl sub_8075404 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl CopyBgTilemapBufferToVram + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807543C + + thumb_func_start sub_8075454 +sub_8075454: @ 8075454 + movs r0, 0x2 + bx lr + thumb_func_end sub_8075454 + + thumb_func_start sub_8075458 +sub_8075458: @ 8075458 + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _08075476 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl SetAnimBgAttribute + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0x1 + bl SetAnimBgAttribute + b _0807548A +_08075476: + movs r0, 0x3 + movs r1, 0 + movs r2, 0x1 + bl SetAnimBgAttribute + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl SetAnimBgAttribute +_0807548A: + pop {r0} + bx r0 + thumb_func_end sub_8075458 + + thumb_func_start sub_8075490 +sub_8075490: @ 8075490 + 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_80754B8 + ldr r1, _080754B4 @ =sub_8074D3C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080754B4: .4byte sub_8074D3C + thumb_func_end sub_8075490 + + thumb_func_start sub_80754B8 +sub_80754B8: @ 80754B8 + 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_80754B8 + + thumb_func_start obj_translate_based_on_private_1_2_3_4 +obj_translate_based_on_private_1_2_3_4: @ 80754F8 + 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 _08075524 + negs r1, r1 +_08075524: + lsls r0, r1, 24 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075530 + negs r0, r0 +_08075530: + 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 _0807555C + movs r0, 0x1 + orrs r6, r0 + b _08075560 +_0807555C: + ldr r0, _0807556C @ =0x0000fffe + ands r6, r0 +_08075560: + mov r3, r9 + cmp r3, 0 + beq _08075570 + movs r0, 0x1 + orrs r5, r0 + b _08075574 + .align 2, 0 +_0807556C: .4byte 0x0000fffe +_08075570: + ldr r0, _0807558C @ =0x0000fffe + ands r5, r0 +_08075574: + 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 + .align 2, 0 +_0807558C: .4byte 0x0000fffe + thumb_func_end obj_translate_based_on_private_1_2_3_4 + + thumb_func_start sub_8075590 +sub_8075590: @ 8075590 + 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, _080755B4 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755B4: .4byte sub_807563C + thumb_func_end sub_8075590 + + thumb_func_start sub_80755B8 +sub_80755B8: @ 80755B8 + 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, _080755DC @ =sub_8075658 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755DC: .4byte sub_8075658 + thumb_func_end sub_80755B8 + + thumb_func_start sub_80755E0 +sub_80755E0: @ 80755E0 + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080755F0 + movs r0, 0x1 + b _08075634 +_080755F0: + 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 _08075612 + lsrs r0, r3, 24 + negs r0, r0 + b _08075614 +_08075612: + lsrs r0, r3, 24 +_08075614: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _08075624 + lsrs r0, r5, 8 + negs r0, r0 + b _08075626 +_08075624: + lsrs r0, r5, 8 +_08075626: + 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 +_08075634: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80755E0 + + thumb_func_start sub_807563C +sub_807563C: @ 807563C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075650 + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08075650: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807563C + + thumb_func_start sub_8075658 +sub_8075658: @ 8075658 + push {r4,lr} + adds r4, r0, 0 + bl sub_801236C + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075672 + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08075672: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075658 + + thumb_func_start sub_8075678 +sub_8075678: @ 8075678 + 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 _0807568C + negs r0, r0 +_0807568C: + 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_8075678 + + thumb_func_start sub_80756A4 +sub_80756A4: @ 80756A4 + 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_8075678 + ldr r1, _080756C8 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080756C8: .4byte sub_807563C + thumb_func_end sub_80756A4 + + thumb_func_start sub_80756CC +sub_80756CC: @ 80756CC + 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 _080756F8 + negs r1, r1 +_080756F8: + lsls r0, r1, 20 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075704 + negs r0, r0 +_08075704: + 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 _08075730 + movs r0, 0x1 + orrs r6, r0 + b _08075734 +_08075730: + ldr r0, _08075740 @ =0x0000fffe + ands r6, r0 +_08075734: + mov r3, r9 + cmp r3, 0 + beq _08075744 + movs r0, 0x1 + orrs r5, r0 + b _08075748 + .align 2, 0 +_08075740: .4byte 0x0000fffe +_08075744: + ldr r0, _08075760 @ =0x0000fffe + ands r5, r0 +_08075748: + 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 + .align 2, 0 +_08075760: .4byte 0x0000fffe + thumb_func_end sub_80756CC + + thumb_func_start sub_8075764 +sub_8075764: @ 8075764 + 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_80756CC + ldr r1, _08075788 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075788: .4byte sub_80757E8 + thumb_func_end sub_8075764 + + thumb_func_start sub_807578C +sub_807578C: @ 807578C + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _0807579C + movs r0, 0x1 + b _080757E0 +_0807579C: + 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 _080757BE + lsrs r0, r3, 20 + negs r0, r0 + b _080757C0 +_080757BE: + lsrs r0, r3, 20 +_080757C0: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _080757D0 + lsrs r0, r5, 4 + negs r0, r0 + b _080757D2 +_080757D0: + lsrs r0, r5, 4 +_080757D2: + 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 +_080757E0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807578C + + thumb_func_start sub_80757E8 +sub_80757E8: @ 80757E8 + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + lsls r0, 24 + cmp r0, 0 + beq _080757FC + adds r0, r4, 0 + bl SetCallbackToStoredInData +_080757FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80757E8 + + thumb_func_start sub_8075804 +sub_8075804: @ 8075804 + 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 _08075818 + negs r0, r0 +_08075818: + lsls r0, 4 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80756CC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075804 + + thumb_func_start sub_8075830 +sub_8075830: @ 8075830 + 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_8075804 + ldr r1, _08075854 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075854: .4byte sub_80757E8 + thumb_func_end sub_8075830 + + thumb_func_start obj_id_set_rotscale +obj_id_set_rotscale: @ 8075858 + 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, _080758D0 @ =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_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075894 + 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] +_08075894: + ldr r1, _080758D4 @ =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, _080758D8 @ =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 + .align 2, 0 +_080758D0: .4byte 0xffff0000 +_080758D4: .4byte gSprites +_080758D8: .4byte gOamMatrices + thumb_func_end obj_id_set_rotscale + + thumb_func_start sub_80758DC +sub_80758DC: @ 80758DC + movs r0, 0 + bx lr + thumb_func_end sub_80758DC + + thumb_func_start sub_80758E0 +sub_80758E0: @ 80758E0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r2, _08075978 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075914 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_08075914: + movs r7, 0x3 + ands r5, r7 + lsls r2, r5, 2 + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + cmp r0, 0 + bne _0807595C + ldr r0, _0807597C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x6] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_0807595C: + ldrb r3, [r4, 0x1] + orrs r3, r7 + strb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl CalcCenterToCornerVec + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075978: .4byte gSprites +_0807597C: .4byte gUnknown_2024018 + thumb_func_end sub_80758E0 + + thumb_func_start sub_8075980 +sub_8075980: @ 8075980 + 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, _080759D8 @ =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 + .align 2, 0 +_080759D8: .4byte gSprites + thumb_func_end sub_8075980 + + thumb_func_start sub_80759DC +sub_80759DC: @ 80759DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08075A14 @ =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, _08075A18 @ =gOamMatrices + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x4] + movs r3, 0x4 + ldrsh r0, [r0, r3] + cmp r0, 0 + bge _08075A08 + negs r0, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_08075A08: + lsls r0, r1, 16 + asrs r0, 19 + strh r0, [r2, 0x26] + pop {r0} + bx r0 + .align 2, 0 +_08075A14: .4byte gSprites +_08075A18: .4byte gOamMatrices + thumb_func_end sub_80759DC + + thumb_func_start sub_8075A1C +sub_8075A1C: @ 8075A1C + 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 _08075AC2 + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + cmp r6, 0 + beq _08075A6A + 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 +_08075A6A: + ldr r6, _08075AD0 @ =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_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075A98 + 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] +_08075A98: + 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, _08075AD4 @ =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] +_08075AC2: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075AD0: .4byte 0xffff0000 +_08075AD4: .4byte gOamMatrices + thumb_func_end sub_8075A1C + + thumb_func_start sub_8075AD8 +sub_8075AD8: @ 8075AD8 + 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_8075A1C + 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_8075AD8 + + thumb_func_start ArcTan2_ +ArcTan2_: @ 8075B18 + 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 ArcTan2_ + + thumb_func_start sub_8075B30 +sub_8075B30: @ 8075B30 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl ArcTan2_ + lsls r0, 16 + negs r0, r0 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8075B30 + + thumb_func_start sub_8075B48 +sub_8075B48: @ 8075B48 + push {r4-r7,lr} + lsls r1, 24 + lsls r0, 20 + lsrs r0, 16 + cmp r1, 0 + bne _08075BC4 + ldr r2, _08075BB8 @ =gPlttBufferUnfaded + ldr r1, _08075BBC @ =gPlttBufferFaded + lsls r0, 1 + adds r4, r0, r1 + adds r5, r0, r2 + movs r6, 0xF +_08075B60: + 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, _08075BC0 @ =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 _08075B60 + b _08075BD4 + .align 2, 0 +_08075BB8: .4byte gPlttBufferUnfaded +_08075BBC: .4byte gPlttBufferFaded +_08075BC0: .4byte 0xfffffc1f +_08075BC4: + lsls r1, r0, 1 + ldr r0, _08075BDC @ =gPlttBufferUnfaded + adds r0, r1, r0 + ldr r2, _08075BE0 @ =gPlttBufferFaded + adds r1, r2 + ldr r2, _08075BE4 @ =0x04000008 + bl CpuSet +_08075BD4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075BDC: .4byte gPlttBufferUnfaded +_08075BE0: .4byte gPlttBufferFaded +_08075BE4: .4byte 0x04000008 + thumb_func_end sub_8075B48 + + thumb_func_start sub_8075BE8 +sub_8075BE8: @ 8075BE8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + ldr r6, [sp, 0x24] + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + lsls r6, 24 + lsrs r6, 24 + mov r9, r6 + movs r4, 0 + cmp r0, 0 + beq _08075C1C + movs r4, 0xE +_08075C1C: + cmp r1, 0 + beq _08075C2E + ldr r0, _08075CB0 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C2E: + cmp r2, 0 + beq _08075C40 + ldr r0, _08075CB4 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C40: + cmp r3, 0 + beq _08075C64 + ldr r6, _08075CB0 @ =gBattleAnimAttacker + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C64 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C64: + cmp r7, 0 + beq _08075C88 + ldr r6, _08075CB4 @ =gBattleAnimTarget + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C88 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C88: + mov r0, r8 + cmp r0, 0 + beq _08075C94 + movs r0, 0x80 + lsls r0, 1 + orrs r4, r0 +_08075C94: + mov r0, r9 + cmp r0, 0 + beq _08075CA0 + movs r0, 0x80 + lsls r0, 2 + orrs r4, r0 +_08075CA0: + adds r0, r4, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08075CB0: .4byte gBattleAnimAttacker +_08075CB4: .4byte gBattleAnimTarget + thumb_func_end sub_8075BE8 + + thumb_func_start sub_8075CB8 +sub_8075CB8: @ 8075CB8 + push {r4-r7,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + movs r4, 0 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r4, 0x1 + lsls r4, r0 +_08075CF2: + cmp r5, 0 + beq _08075D1E + movs r0, 0x2 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D1E + movs r0, 0x2 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D1E: + cmp r6, 0 + beq _08075D4A + movs r0, 0x1 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D4A + movs r0, 0x1 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D4A: + cmp r7, 0 + beq _08075D76 + movs r0, 0x3 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D76 + movs r0, 0x3 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D76: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8075CB8 + + thumb_func_start sub_8075D80 +sub_8075D80: @ 8075D80 + lsls r0, 24 + lsrs r0, 24 + bx lr + thumb_func_end sub_8075D80 + + thumb_func_start sub_8075D88 +sub_8075D88: @ 8075D88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8075D88 + + thumb_func_start sub_8075D9C +sub_8075D9C: @ 8075D9C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08075DDA + ldr r2, _08075DC8 @ =gBattleAnimArgs + movs r3, 0x6 + ldrsh r0, [r2, r3] + movs r1, 0 + cmp r0, 0 + bne _08075DB6 + movs r1, 0x1 +_08075DB6: + movs r3, 0x4 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _08075DCC + adds r0, r4, 0 + bl sub_8075160 + b _08075DD2 + .align 2, 0 +_08075DC8: .4byte gBattleAnimArgs +_08075DCC: + adds r0, r4, 0 + bl sub_8075114 +_08075DD2: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08075DEE +_08075DDA: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _08075DEE + adds r0, r4, 0 + bl move_anim_8074EE0 +_08075DEE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075D9C + + thumb_func_start sub_8075DF4 +sub_8075DF4: @ 8075DF4 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r6, _08075E6C @ =gBattleAnimArgs + movs r1, 0xA + ldrsh r0, [r6, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _08075E0C + movs r1, 0x1 +_08075E0C: + ldrb r0, [r6, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _08075E16 + movs r7, 0x3 +_08075E16: + adds r0, r5, 0 + bl sub_8075160 + ldr r0, _08075E70 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075E30 + ldrh r0, [r6, 0x4] + negs r0, r0 + strh r0, [r6, 0x4] +_08075E30: + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldr r4, _08075E74 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + 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_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _08075E78 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075E7C @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075E6C: .4byte gBattleAnimArgs +_08075E70: .4byte gBattleAnimAttacker +_08075E74: .4byte gBattleAnimTarget +_08075E78: .4byte sub_8075590 +_08075E7C: .4byte DestroyAnimSprite + thumb_func_end sub_8075DF4 + + thumb_func_start sub_8075E80 +sub_8075E80: @ 8075E80 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _08075EE0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075EA0 + ldr r1, _08075EE4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075EA0: + ldr r4, _08075EE4 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _08075EE8 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + 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_8074480 + 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_8075068 + ldr r0, _08075EEC @ =sub_8075EF0 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08075EE0: .4byte gBattleAnimAttacker +_08075EE4: .4byte gBattleAnimArgs +_08075EE8: .4byte gBattleAnimTarget +_08075EEC: .4byte sub_8075EF0 + thumb_func_end sub_8075E80 + + thumb_func_start sub_8075EF0 +sub_8075EF0: @ 8075EF0 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _08075F04 + adds r0, r4, 0 + bl DestroyAnimSprite +_08075F04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075EF0 + + thumb_func_start sub_8075F0C +sub_8075F0C: @ 8075F0C + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _08075F20 @ =gBattleAnimArgs + movs r2, 0xC + ldrsh r1, [r0, r2] + cmp r1, 0 + bne _08075F24 + movs r4, 0x1 + movs r7, 0x3 + b _08075F28 + .align 2, 0 +_08075F20: .4byte gBattleAnimArgs +_08075F24: + movs r4, 0 + movs r7, 0x1 +_08075F28: + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08075F40 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075160 + ldr r0, _08075F3C @ =gBattleAnimAttacker + b _08075F4A + .align 2, 0 +_08075F3C: .4byte gBattleAnimAttacker +_08075F40: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r0, _08075FA8 @ =gBattleAnimTarget +_08075F4A: + ldrb r6, [r0] + ldr r0, _08075FAC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075F62 + ldr r1, _08075FB0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075F62: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r4, _08075FB0 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + 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_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r5, 0x36] + ldr r0, _08075FB4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075FB8 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075FA8: .4byte gBattleAnimTarget +_08075FAC: .4byte gBattleAnimAttacker +_08075FB0: .4byte gBattleAnimArgs +_08075FB4: .4byte sub_8075590 +_08075FB8: .4byte DestroyAnimSprite + thumb_func_end sub_8075F0C + + thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode +duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08076026 + movs r6, 0 + ldr r2, _08076018 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r1, r0, 2 +_08075FD8: + 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 _0807601C + 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 _0807602A + .align 2, 0 +_08076018: .4byte gSprites +_0807601C: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3F + bls _08075FD8 +_08076026: + movs r0, 0x1 + negs r0, r0 +_0807602A: + 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: @ 8076030 + 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_8076048 +sub_8076048: @ 8076048 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + movs r3, 0 + ldr r2, _080760C0 @ =gBattleAnimArgs + movs r0, 0x4 + ldrsh r1, [r2, r0] + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076062 + movs r3, 0x1 +_08076062: + cmp r1, r0 + bge _08076068 + ldr r3, _080760C4 @ =0x0000ffff +_08076068: + movs r0, 0x6 + ldrsh r1, [r2, r0] + movs r4, 0x2 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076076 + movs r6, 0x1 +_08076076: + cmp r1, r0 + bge _0807607C + ldr r6, _080760C4 @ =0x0000ffff +_0807607C: + ldr r0, _080760C8 @ =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, _080760CC @ =sub_80760D0 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080760C0: .4byte gBattleAnimArgs +_080760C4: .4byte 0x0000ffff +_080760C8: .4byte gTasks +_080760CC: .4byte sub_80760D0 + thumb_func_end sub_8076048 + + thumb_func_start sub_80760D0 +sub_80760D0: @ 80760D0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807611C @ =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 _08076164 + 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 _08076120 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r1, [r4, r3] + movs r3, 0x16 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x12] + adds r0, r2, r0 + strh r0, [r4, 0xE] + b _08076134 + .align 2, 0 +_0807611C: .4byte gTasks +_08076120: + ldrh r2, [r4, 0x10] + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r3, 0x18 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x14] + adds r0, r2, r0 + strh r0, [r4, 0x10] +_08076134: + 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 _08076164 + movs r3, 0x10 + ldrsh r1, [r4, r3] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076164 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08076164: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80760D0 + + thumb_func_start sub_807616C +sub_807616C: @ 807616C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0807618C @ =gBattleAnimArgs + ldrb r0, [r0] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08076190 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080761B6 + .align 2, 0 +_0807618C: .4byte gBattleAnimArgs +_08076190: + ldr r1, _080761BC @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080761C0 @ =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, _080761C4 @ =0x00000101 + adds r2, r3, 0 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080761B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080761BC: .4byte gTasks +_080761C0: .4byte gSprites +_080761C4: .4byte 0x00000101 + thumb_func_end sub_807616C + + thumb_func_start sub_80761C8 +sub_80761C8: @ 80761C8 + ldr r3, _080761E8 @ =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, _080761EC @ =sub_80761F0 + str r1, [r0] + bx lr + .align 2, 0 +_080761E8: .4byte gBattleAnimArgs +_080761EC: .4byte sub_80761F0 + thumb_func_end sub_80761C8 + + thumb_func_start sub_80761F0 +sub_80761F0: @ 80761F0 + 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, _08076248 @ =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 _08076280 + movs r0, 0 + strh r0, [r4, 0x10] + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0807624C + 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 _08076280 + movs r0, 0x1 + strh r0, [r4, 0x14] + b _08076280 + .align 2, 0 +_08076248: .4byte gTasks +_0807624C: + 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 _08076280 + ldrh r0, [r4, 0x16] + subs r0, 0x1 + strh r0, [r4, 0x16] + lsls r0, 16 + cmp r0, 0 + beq _0807627A + strh r1, [r4, 0x10] + strh r1, [r4, 0x14] + b _08076280 +_0807627A: + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08076280: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80761F0 + + thumb_func_start sub_8076288 +sub_8076288: @ 8076288 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080762A8 @ =gBattleAnimArgs + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _080762AC + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080762C2 + .align 2, 0 +_080762A8: .4byte gBattleAnimArgs +_080762AC: + ldr r1, _080762C8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + lsls r1, r2, 4 + ldr r2, _080762CC @ =0x00000101 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080762C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080762C8: .4byte gTasks +_080762CC: .4byte 0x00000101 + thumb_func_end sub_8076288 + + thumb_func_start sub_80762D0 +sub_80762D0: @ 80762D0 + 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_80765C0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80758E0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80762D0 + + thumb_func_start sub_8076308 +sub_8076308: @ 8076308 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080763A8 @ =gUnknown_2037F28 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + bl sub_80765C8 + 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, _080763AC @ =0x00007ffe + cmp r2, r0 + beq _080763B0 + cmp r2, r0 + bgt _08076410 + subs r0, 0x1 + cmp r2, r0 + beq _080763B6 + ldrb r0, [r1, 0x5] + cmp r0, 0 + bne _08076356 + 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] +_08076356: + 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_8076440 + 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 _08076436 + movs r0, 0 + strh r0, [r4, 0x18] + b _08076408 + .align 2, 0 +_080763A8: .4byte gUnknown_2037F28 +_080763AC: .4byte 0x00007ffe +_080763B0: + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x16] + b _08076436 +_080763B6: + ldrh r2, [r1, 0x2] + movs r6, 0x2 + ldrsh r0, [r1, r6] + cmp r0, 0 + beq _08076408 + ldrh r1, [r4, 0x1A] + movs r3, 0x1A + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080763D6 + subs r0, r1, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + cmp r0, 0 + bne _080763D8 + b _08076408 +_080763D6: + strh r2, [r4, 0x1A] +_080763D8: + movs r6, 0x16 + ldrsh r0, [r4, r6] + cmp r0, 0 + beq _08076436 + ldr r3, _08076400 @ =gUnknown_2037F28 + ldr r5, _08076404 @ =0x00007ffd +_080763E4: + 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 _08076434 + lsls r0, r1, 16 + cmp r0, 0 + bne _080763E4 + b _08076436 + .align 2, 0 +_08076400: .4byte gUnknown_2037F28 +_08076404: .4byte 0x00007ffd +_08076408: + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + b _08076436 +_08076410: + ldr r2, _08076430 @ =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_8075980 + movs r0, 0 + b _08076438 + .align 2, 0 +_08076430: .4byte gSprites +_08076434: + strh r2, [r4, 0x16] +_08076436: + movs r0, 0x1 +_08076438: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8076308 + + thumb_func_start sub_8076440 +sub_8076440: @ 8076440 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _0807648C @ =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, _08076490 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _0807647C + movs r0, 0x80 +_0807647C: + 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 + .align 2, 0 +_0807648C: .4byte gSprites +_08076490: .4byte gOamMatrices + thumb_func_end sub_8076440 + + thumb_func_start sub_8076494 +sub_8076494: @ 8076494 + 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_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _080764E4 @ =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, _080764E8 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _080764D4 + movs r0, 0x80 +_080764D4: + 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 + .align 2, 0 +_080764E4: .4byte gSprites +_080764E8: .4byte gOamMatrices + thumb_func_end sub_8076494 + + thumb_func_start sub_80764EC +sub_80764EC: @ 80764EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08076548 @ =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, _0807654C @ =gBattlerSpriteIds + ldr r6, _08076550 @ =gBattlerPartyIndexes +_08076508: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, r2 + bne _080765AC + lsls r0, r4, 24 + lsrs r0, 24 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08076568 + ldr r0, _08076554 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807655C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076558 @ =gPlayerParty + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _0807655E + .align 2, 0 +_08076548: .4byte gSprites +_0807654C: .4byte gBattlerSpriteIds +_08076550: .4byte gBattlerPartyIndexes +_08076554: .4byte gUnknown_2024018 +_08076558: .4byte gPlayerParty +_0807655C: + ldrh r1, [r1, 0x2] +_0807655E: + ldr r0, _08076564 @ =gUnknown_8235E6C + b _080765A0 + .align 2, 0 +_08076564: .4byte gUnknown_8235E6C +_08076568: + ldr r0, _08076594 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807659C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076598 @ =gEnemyParty + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _0807659E + .align 2, 0 +_08076594: .4byte gUnknown_2024018 +_08076598: .4byte gEnemyParty +_0807659C: + ldrh r1, [r1, 0x2] +_0807659E: + ldr r0, _080765A8 @ =gUnknown_82349CC +_080765A0: + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _080765B8 + .align 2, 0 +_080765A8: .4byte gUnknown_82349CC +_080765AC: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08076508 + movs r0, 0x40 +_080765B8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80764EC + + thumb_func_start sub_80765C0 +sub_80765C0: @ 80765C0 + strh r2, [r0] + asrs r2, 16 + strh r2, [r1] + bx lr + thumb_func_end sub_80765C0 + + thumb_func_start sub_80765C8 +sub_80765C8: @ 80765C8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + orrs r0, r1 + bx lr + thumb_func_end sub_80765C8 + + thumb_func_start sub_80765D4 +sub_80765D4: @ 80765D4 + 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_80765D4 + + thumb_func_start sub_8076640 +sub_8076640: @ 8076640 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08076652 + movs r0, 0 + b _080766AE +_08076652: + subs r0, r1, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + cmp r0, 0 + beq _0807666C + 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 _08076672 +_0807666C: + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x1A] + ldrh r0, [r4, 0x24] +_08076672: + 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 _0807669C + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + b _080766AC +_0807669C: + ldr r2, _080766B4 @ =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] +_080766AC: + ldrb r0, [r4, 0x18] +_080766AE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080766B4: .4byte gSprites + thumb_func_end sub_8076640 + + thumb_func_start sub_80766B8 +sub_80766B8: @ 80766B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080766E4 @ =gUnknown_2037EFE + ldrb r0, [r0] + movs r1, 0 + cmp r0, 0x1E + bls _080766D6 + movs r1, 0x1 + cmp r0, 0x64 + bls _080766D6 + movs r1, 0x3 + cmp r0, 0xC8 + bhi _080766D6 + movs r1, 0x2 +_080766D6: + ldr r0, _080766E8 @ =gBattleAnimArgs + strh r1, [r0, 0xE] + adds r0, r2, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080766E4: .4byte gUnknown_2037EFE +_080766E8: .4byte gBattleAnimArgs + thumb_func_end sub_80766B8 + + thumb_func_start sub_80766EC +sub_80766EC: @ 80766EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + ldr r6, _080767E0 @ =gBattleAnimTarget + ldrb r0, [r6] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807672C + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + 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] +_0807672C: + ldr r0, _080767EC @ =gBattleAnimAttacker + mov r8, r0 + ldrb r0, [r0] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076764 + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + 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] +_08076764: + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807679C + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + 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] +_0807679C: + mov r1, r8 + ldrb r0, [r1] + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080767D4 + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + 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] +_080767D4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080767E0: .4byte gBattleAnimTarget +_080767E4: .4byte gSprites +_080767E8: .4byte gBattlerSpriteIds +_080767EC: .4byte gBattleAnimAttacker + thumb_func_end sub_80766EC + + thumb_func_start sub_80767F0 +sub_80767F0: @ 80767F0 + push {r4-r6,lr} + movs r5, 0 + ldr r0, _08076850 @ =gBattlersCount + ldrb r0, [r0] + cmp r5, r0 + bge _0807684A + ldr r6, _08076854 @ =gSprites +_080767FE: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076840 + adds r0, r4, 0 + bl sub_807685C + ldr r3, _08076858 @ =gBattlerSpriteIds + 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] +_08076840: + adds r5, 0x1 + ldr r0, _08076850 @ =gBattlersCount + ldrb r0, [r0] + cmp r5, r0 + blt _080767FE +_0807684A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08076850: .4byte gBattlersCount +_08076854: .4byte gSprites +_08076858: .4byte gBattlerSpriteIds + thumb_func_end sub_80767F0 + + thumb_func_start sub_807685C +sub_807685C: @ 807685C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1E + cmp r0, 0 + beq _0807687E + movs r1, 0x14 + cmp r0, 0x2 + beq _0807687E + movs r1, 0x32 + cmp r0, 0x1 + bne _0807687E + movs r1, 0x28 +_0807687E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_807685C + + thumb_func_start sub_8076884 +sub_8076884: @ 8076884 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807689A + cmp r0, 0x3 + bne _0807689E +_0807689A: + movs r0, 0x2 + b _080768A0 +_0807689E: + movs r0, 0x1 +_080768A0: + movs r1, 0x4 + bl sub_80BC30C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8076884 + + thumb_func_start sub_80768B0 +sub_80768B0: @ 80768B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080768C6 + cmp r0, 0x3 + bne _080768CA +_080768C6: + movs r0, 0x2 + b _080768CC +_080768CA: + movs r0, 0x1 +_080768CC: + pop {r1} + bx r1 + thumb_func_end sub_80768B0 + + thumb_func_start sub_80768D0 +sub_80768D0: @ 80768D0 + 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, _080769B0 @ =gUnknown_83AE084 + adds r0, r1 + bl LoadSpriteSheet + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + ldr r1, _080769B4 @ =gUnknown_83AE054 + 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, _080769B8 @ =gMonSpritesGfxPtr + ldr r0, [r4] + cmp r0, 0 + beq _0807694E + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0807694E + movs r0, 0x80 + lsls r0, 6 + bl AllocZeroed + ldr r1, [r4] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + str r0, [r1] +_0807694E: + mov r3, r9 + cmp r3, 0 + bne _080769EC + 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 _0807699A + ldr r0, [sp, 0x40] + lsls r1, r0, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0807699A + ldr r0, _080769BC @ =gUnknown_2024018 + 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 _080769C4 +_0807699A: + lsls r0, r6, 3 + ldr r1, _080769C0 @ =gMonFrontPicTable + adds r0, r1 + ldr r1, _080769B8 @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + ldr r1, [r1] + movs r2, 0x1 + b _08076A46 + .align 2, 0 +_080769B0: .4byte gUnknown_83AE084 +_080769B4: .4byte gUnknown_83AE054 +_080769B8: .4byte gMonSpritesGfxPtr +_080769BC: .4byte gUnknown_2024018 +_080769C0: .4byte gMonFrontPicTable +_080769C4: + lsls r0, r6, 3 + ldr r1, _080769E4 @ =gMonFrontPicTable + adds r0, r1 + ldr r1, _080769E8 @ =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 + b _08076A7C + .align 2, 0 +_080769E4: .4byte gMonFrontPicTable +_080769E8: .4byte gMonSpritesGfxPtr +_080769EC: + 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 _08076A32 + ldr r2, [sp, 0x40] + lsls r1, r2, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08076A32 + ldr r0, _08076A54 @ =gUnknown_2024018 + 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 _08076A60 +_08076A32: + lsls r0, r6, 3 + ldr r1, _08076A58 @ =gMonBackPicTable + adds r0, r1 + ldr r1, _08076A5C @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 +_08076A46: + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl LoadSpecialPokePic_DontHandleDeoxys + b _08076A7C + .align 2, 0 +_08076A54: .4byte gUnknown_2024018 +_08076A58: .4byte gMonBackPicTable +_08076A5C: .4byte gMonSpritesGfxPtr +_08076A60: + lsls r0, r6, 3 + ldr r1, _08076AC8 @ =gMonBackPicTable + adds r0, r1 + ldr r1, _08076ACC @ =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 +_08076A7C: + ldr r5, _08076ACC @ =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, _08076AD0 @ =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 _08076ADC + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076AD4 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076AD8 @ =gUnknown_82349CC + b _08076AEE + .align 2, 0 +_08076AC8: .4byte gMonBackPicTable +_08076ACC: .4byte gMonSpritesGfxPtr +_08076AD0: .4byte 0x06010000 +_08076AD4: .4byte gUnknown_83AE054 +_08076AD8: .4byte gUnknown_82349CC +_08076ADC: + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076B18 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076B1C @ =gUnknown_8235E6C +_08076AEE: + 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 r0, 24 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08076B18: .4byte gUnknown_83AE054 +_08076B1C: .4byte gUnknown_8235E6C + thumb_func_end sub_80768D0 + + thumb_func_start sub_8076B20 +sub_8076B20: @ 8076B20 + push {lr} + bl DestroySpriteAndFreeResources + pop {r0} + bx r0 + thumb_func_end sub_8076B20 + + thumb_func_start sub_8076B2C +sub_8076B2C: @ 8076B2C + 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 GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08076C08 + ldr r0, _08076B88 @ =gUnknown_2024018 + 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 _08076B94 + ldr r0, _08076B8C @ =gBattlerPartyIndexes + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076B90 @ =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 _08076B9C + .align 2, 0 +_08076B88: .4byte gUnknown_2024018 +_08076B8C: .4byte gBattlerPartyIndexes +_08076B90: .4byte gPlayerParty +_08076B94: + ldrh r7, [r1, 0x2] + ldr r0, _08076BD4 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076B9C: + cmp r7, 0xC9 + bne _08076BEC + 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 _08076BD8 + movs r0, 0xC9 + b _08076BE2 + .align 2, 0 +_08076BD4: .4byte gUnknown_2024008 +_08076BD8: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076BE2: + lsls r1, r0, 2 + ldr r0, _08076BE8 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076BE8: .4byte gUnknown_8235E6C +_08076BEC: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076BFC + ldr r4, _08076BF8 @ =gUnknown_8235E6C + b _08076CDE + .align 2, 0 +_08076BF8: .4byte gUnknown_8235E6C +_08076BFC: + lsls r1, r7, 2 + ldr r0, _08076C04 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076C04: .4byte gUnknown_8235E6C +_08076C08: + ldr r0, _08076C48 @ =gUnknown_2024018 + 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 _08076C54 + ldr r0, _08076C4C @ =gBattlerPartyIndexes + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076C50 @ =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 _08076C5C + .align 2, 0 +_08076C48: .4byte gUnknown_2024018 +_08076C4C: .4byte gBattlerPartyIndexes +_08076C50: .4byte gEnemyParty +_08076C54: + ldrh r7, [r1, 0x2] + ldr r0, _08076C94 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076C5C: + cmp r7, 0xC9 + bne _08076CA6 + 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 _08076C98 + movs r0, 0xC9 + b _08076CA2 + .align 2, 0 +_08076C94: .4byte gUnknown_2024008 +_08076C98: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076CA2: + lsls r1, r0, 2 + b _08076CDA +_08076CA6: + ldr r0, _08076CBC @ =0x00000181 + cmp r7, r0 + bne _08076CC8 + ldr r0, _08076CC0 @ =gBattleMonForms + add r0, r8 + ldrb r0, [r0] + lsls r0, 2 + ldr r1, _08076CC4 @ =gUnknown_83AE03C + adds r4, r0, r1 + b _08076CDE + .align 2, 0 +_08076CBC: .4byte 0x00000181 +_08076CC0: .4byte gBattleMonForms +_08076CC4: .4byte gUnknown_83AE03C +_08076CC8: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076CD8 + ldr r4, _08076CD4 @ =gUnknown_82349CC + b _08076CDE + .align 2, 0 +_08076CD4: .4byte gUnknown_82349CC +_08076CD8: + lsls r1, r7, 2 +_08076CDA: + ldr r0, _08076CF0 @ =gUnknown_82349CC +_08076CDC: + adds r4, r1, r0 +_08076CDE: + mov r0, r9 + cmp r0, 0x6 + bhi _08076D8E + lsls r0, 2 + ldr r1, _08076CF4 @ =_08076CF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08076CF0: .4byte gUnknown_82349CC +_08076CF4: .4byte _08076CF8 + .align 2, 0 +_08076CF8: + .4byte _08076D14 + .4byte _08076D1E + .4byte _08076D4A + .4byte _08076D62 + .4byte _08076D26 + .4byte _08076D38 + .4byte _08076D7A +_08076D14: + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + lsls r0, 3 + b _08076D90 +_08076D1E: + ldrb r0, [r4] + lsrs r0, 4 + lsls r0, 3 + b _08076D90 +_08076D26: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D5C +_08076D38: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D74 +_08076D4A: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D5C: + lsls r1, 2 + subs r0, r1 + b _08076D90 +_08076D62: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D74: + lsls r1, 2 + adds r0, r1 + b _08076D90 +_08076D7A: + mov r0, r8 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + ldrb r1, [r4, 0x1] + subs r0, r1 + b _08076D90 +_08076D8E: + movs r0, 0 +_08076D90: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8076B2C + + thumb_func_start sub_8076D9C +sub_8076D9C: @ 8076D9C + 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 _08076DBA + movs r5, 0 + movs r6, 0x1 + b _08076DBE +_08076DBA: + movs r5, 0x2 + movs r6, 0x3 +_08076DBE: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08076E06 + movs r0, 0x2 + eors r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 + mov r0, r8 + lsls r1, r0, 16 + lsls r2, r7, 16 + b _08076E12 +_08076E06: + mov r0, r8 + lsls r1, r0, 16 + lsrs r5, r1, 16 + lsls r0, r7, 16 + lsrs r3, r0, 16 + adds r2, r0, 0 +_08076E12: + 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_8076D9C + + thumb_func_start sub_8076E34 +sub_8076E34: @ 8076E34 + 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, _08076ECC @ =SpriteCallbackDummy + mov r10, r0 + bl CreateInvisibleSpriteWithCallback + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08076ED0 @ =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, _08076ED4 @ =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 + .align 2, 0 +_08076ECC: .4byte SpriteCallbackDummy +_08076ED0: .4byte gSprites +_08076ED4: .4byte 0xfffffc00 + thumb_func_end sub_8076E34 + + thumb_func_start sub_8076ED8 +sub_8076ED8: @ 8076ED8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076F10 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076F18 + ldr r2, _08076F14 @ =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 _08076F22 + .align 2, 0 +_08076F10: .4byte gBattleAnimAttacker +_08076F14: .4byte gBattleAnimArgs +_08076F18: + ldr r1, _08076F4C @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F22: + 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, _08076F50 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _08076F54 @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076F4C: .4byte gBattleAnimArgs +_08076F50: .4byte move_anim_8074EE0 +_08076F54: .4byte sub_8074E70 + thumb_func_end sub_8076ED8 + + thumb_func_start sub_8076F58 +sub_8076F58: @ 8076F58 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08076F80 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076F88 + ldr r2, _08076F84 @ =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 _08076F92 + .align 2, 0 +_08076F80: .4byte gBattleAnimAttacker +_08076F84: .4byte gBattleAnimArgs +_08076F88: + ldr r1, _08076FC4 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F92: + 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, _08076FC8 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _08076FCC @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076FC4: .4byte gBattleAnimArgs +_08076FC8: .4byte move_anim_8074EE0 +_08076FCC: .4byte sub_8074E70 + thumb_func_end sub_8076F58 + + thumb_func_start sub_8076FD0 +sub_8076FD0: @ 8076FD0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076FF4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076FFC + ldr r0, _08076FF8 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _08077008 + .align 2, 0 +_08076FF4: .4byte gBattleAnimAttacker +_08076FF8: .4byte gBattleAnimArgs +_08076FFC: + ldr r1, _08077024 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_08077008: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _08077028 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _0807702C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08077024: .4byte gBattleAnimArgs +_08077028: .4byte sub_8074F6C +_0807702C: .4byte DestroyAnimSprite + thumb_func_end sub_8076FD0 + + thumb_func_start sub_8077030 +sub_8077030: @ 8077030 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080770C4 @ =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, _080770C8 @ =gBattleAnimAttacker + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0x8 + cmp r0, 0 + beq _08077064 + movs r0, 0x8 + negs r0, r0 + adds r1, r0, 0 +_08077064: + strh r1, [r5, 0xA] + strh r6, [r5, 0xC] + strh r6, [r5, 0xE] + ldr r4, _080770CC @ =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, _080770D0 @ =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_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + cmp r0, 0x14 + beq _080770C0 + cmp r0, 0x28 + bne _080770D4 +_080770C0: + movs r0, 0x2 + b _080770D6 + .align 2, 0 +_080770C4: .4byte gTasks +_080770C8: .4byte gBattleAnimAttacker +_080770CC: .4byte gSprites +_080770D0: .4byte 0x00002771 +_080770D4: + movs r0, 0x3 +_080770D6: + strh r0, [r5, 0x14] + lsls r0, r4, 1 + ldr r1, _08077104 @ =gPlttBufferUnfaded + adds r0, r1 + lsls r1, r6, 1 + ldr r2, _08077108 @ =gPlttBufferFaded + adds r1, r2 + ldr r2, _0807710C @ =0x04000008 + bl CpuSet + ldr r0, _08077110 @ =gBattleAnimArgs + ldrb r2, [r0, 0x2] + ldrh r3, [r0] + adds r0, r6, 0 + movs r1, 0x10 + bl BlendPalette + ldr r0, _08077114 @ =sub_8077118 + str r0, [r5] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077104: .4byte gPlttBufferUnfaded +_08077108: .4byte gPlttBufferFaded +_0807710C: .4byte 0x04000008 +_08077110: .4byte gBattleAnimArgs +_08077114: .4byte sub_8077118 + thumb_func_end sub_8077030 + + thumb_func_start sub_8077118 +sub_8077118: @ 8077118 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807713C @ =gTasks + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807717C + cmp r0, 0x1 + bgt _08077140 + cmp r0, 0 + beq _08077146 + b _080771D8 + .align 2, 0 +_0807713C: .4byte gTasks +_08077140: + cmp r0, 0x2 + beq _080771C4 + b _080771D8 +_08077146: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r2, _08077178 @ =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 _080771D8 + strh r1, [r4, 0xE] + b _080771B6 + .align 2, 0 +_08077178: .4byte gSprites +_0807717C: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r3, _080771C0 @ =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 _080771D8 + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + strh r2, [r1, 0x24] +_080771B6: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080771D8 + .align 2, 0 +_080771C0: .4byte gSprites +_080771C4: + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080771D8 + ldr r0, _080771E0 @ =0x00002771 + bl FreeSpritePaletteByTag + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080771D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080771E0: .4byte 0x00002771 + thumb_func_end sub_8077118 + + thumb_func_start sub_80771E4 +sub_80771E4: @ 80771E4 + 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 _08077254 + ldr r5, _08077260 @ =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, _08077264 @ =sub_8077268 + str r0, [r4] + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] +_08077254: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077260: .4byte gSprites +_08077264: .4byte sub_8077268 + thumb_func_end sub_80771E4 + + thumb_func_start sub_8077268 +sub_8077268: @ 8077268 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + subs r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _08077292 + ldr r2, _08077298 @ =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 +_08077292: + pop {r0} + bx r0 + .align 2, 0 +_08077298: .4byte gTasks + thumb_func_end sub_8077268 + + thumb_func_start sub_807729C +sub_807729C: @ 807729C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080772D0 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080772D4 + movs r0, 0x5 + b _080772D6 + .align 2, 0 +_080772D0: .4byte gBattleAnimAttacker +_080772D4: + ldr r0, _080772E8 @ =0x0000fff6 +_080772D6: + strh r0, [r5, 0x2E] + ldr r0, _080772EC @ =0x0000ffd8 + strh r0, [r5, 0x30] + ldr r0, _080772F0 @ =sub_80772F4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080772E8: .4byte 0x0000fff6 +_080772EC: .4byte 0x0000ffd8 +_080772F0: .4byte sub_80772F4 + thumb_func_end sub_807729C + + thumb_func_start sub_80772F4 +sub_80772F4: @ 80772F4 + 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 _08077330 + adds r0, r5, 0x1 + strh r0, [r4, 0x30] +_08077330: + 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 _08077348 + adds r0, r4, 0 + bl DestroyAnimSprite +_08077348: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80772F4 + + thumb_func_start sub_8077350 +sub_8077350: @ 8077350 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _08077388 @ =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, _0807738C @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08077390 + 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 _0807739E + .align 2, 0 +_08077388: .4byte gBattleAnimArgs +_0807738C: .4byte gBattleAnimTarget +_08077390: + 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 +_0807739E: + strh r0, [r4, 0x22] + ldr r0, _080773B4 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080773B8 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080773B4: .4byte sub_8075590 +_080773B8: .4byte DestroyAnimSprite + thumb_func_end sub_8077350 + + .align 2, 0 @ Don't pad with nop. |