diff options
Diffstat (limited to 'asm/flying.s')
-rwxr-xr-x | asm/flying.s | 3058 |
1 files changed, 3058 insertions, 0 deletions
diff --git a/asm/flying.s b/asm/flying.s new file mode 100755 index 000000000..bbb1939a5 --- /dev/null +++ b/asm/flying.s @@ -0,0 +1,3058 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ flying + + thumb_func_start sub_80DA034 +sub_80DA034: @ 80DA034 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8078764 + ldrh r0, [r4, 0x22] + adds r0, 0x14 + strh r0, [r4, 0x22] + movs r0, 0xBF + strh r0, [r4, 0x30] + ldr r1, _080DA058 @ =sub_80DA05C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA058: .4byte sub_80DA05C + thumb_func_end sub_80DA034 + + thumb_func_start sub_80DA05C +sub_80DA05C: @ 80DA05C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x47 + bne _080DA096 + adds r0, r4, 0 + bl move_anim_8072740 +_080DA096: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DA05C + + thumb_func_start sub_80DA09C +sub_80DA09C: @ 80DA09C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080DA0CC @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r1, _080DA0D0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x8] + ldrh r0, [r1] + strh r0, [r4, 0xA] + ldr r0, _080DA0D4 @ =0x00002719 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + ldr r0, _080DA0D8 @ =sub_80DA0DC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA0CC: .4byte gTasks +_080DA0D0: .4byte gBattleAnimArgs +_080DA0D4: .4byte 0x00002719 +_080DA0D8: .4byte sub_80DA0DC + thumb_func_end sub_80DA09C + + thumb_func_start sub_80DA0DC +sub_80DA0DC: @ 80DA0DC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080DA15C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x1C] + adds r1, r0, 0x1 + strh r1, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r4, 0xA + ldrsh r1, [r3, r4] + adds r7, r2, 0 + cmp r0, r1 + bne _080DA13A + movs r0, 0 + strh r0, [r3, 0x1C] + ldrb r0, [r3, 0xC] + ldr r2, _080DA160 @ =gPlttBufferFaded + lsls r0, 4 + movs r3, 0x84 + lsls r3, 1 + adds r1, r0, r3 + lsls r1, 1 + adds r1, r2 + ldrh r6, [r1] + movs r4, 0x7 + mov r12, r0 + ldr r0, _080DA164 @ =0x00000107 + add r0, r12 + lsls r0, 1 + adds r3, r0, r2 +_080DA122: + ldrh r0, [r3] + strh r0, [r1] + subs r3, 0x2 + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bgt _080DA122 + ldr r0, _080DA168 @ =0x00000101 + add r0, r12 + lsls r0, 1 + adds r0, r2 + strh r6, [r0] +_080DA13A: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r7 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080DA154 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DA154: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA15C: .4byte gTasks +_080DA160: .4byte gPlttBufferFaded +_080DA164: .4byte 0x00000107 +_080DA168: .4byte 0x00000101 + thumb_func_end sub_80DA0DC + + thumb_func_start sub_80DA16C +sub_80DA16C: @ 80DA16C + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080DA1D8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA18C + ldr r1, _080DA1DC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080DA18C: + ldr r4, _080DA1DC @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r5, _080DA1E0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080DA1E4 @ =sub_80785E4 + str r0, [r6, 0x1C] + ldr r1, _080DA1E8 @ =sub_80DA1EC + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DA1D8: .4byte gBattleAnimBankAttacker +_080DA1DC: .4byte gBattleAnimArgs +_080DA1E0: .4byte gBattleAnimBankTarget +_080DA1E4: .4byte sub_80785E4 +_080DA1E8: .4byte sub_80DA1EC + thumb_func_end sub_80DA16C + + thumb_func_start sub_80DA1EC +sub_80DA1EC: @ 80DA1EC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080DA200 + adds r0, r4, 0 + bl move_anim_8072740 +_080DA200: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DA1EC + + thumb_func_start sub_80DA208 +sub_80DA208: @ 80DA208 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DA2A4 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA234 + ldr r1, _080DA2A8 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080DA234: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DA24C + ldr r0, _080DA2A8 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080DA24C: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + ldr r2, _080DA2A8 @ =gBattleAnimArgs + ldrh r1, [r2] + ldrh r3, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x20] + lsrs r0, 24 + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x2E] + movs r3, 0xC + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080DA2B0 + ldr r4, _080DA2AC @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080DA2C2 + .align 2, 0 +_080DA2A4: .4byte gBattleAnimBankAttacker +_080DA2A8: .4byte gBattleAnimArgs +_080DA2AC: .4byte gBattleAnimBankTarget +_080DA2B0: + ldr r0, _080DA2F0 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC +_080DA2C2: + ldr r4, _080DA2F4 @ =gBattleAnimArgs + ldrh r0, [r4, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x6] + ldrh r3, [r5, 0x36] + adds r0, r3 + strh r0, [r5, 0x36] + ldr r0, _080DA2F8 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080DA2FC @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl SeekSpriteAnim + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA2F0: .4byte gBattleAnimBankTarget +_080DA2F4: .4byte gBattleAnimArgs +_080DA2F8: .4byte sub_8078B34 +_080DA2FC: .4byte move_anim_8072740 + thumb_func_end sub_80DA208 + + thumb_func_start sub_80DA300 +sub_80DA300: @ 80DA300 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080DA33C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080DA340 @ =sub_80DA348 + str r0, [r4, 0x1C] + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DA344 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA33C: .4byte gBattleAnimArgs +_080DA340: .4byte sub_80DA348 +_080DA344: .4byte gSprites + thumb_func_end sub_80DA300 + + thumb_func_start sub_80DA348 +sub_80DA348: @ 80DA348 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080DA35C + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080DA36E +_080DA35C: + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] +_080DA36E: + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DA386 + adds r0, r2, 0 + bl move_anim_8072740 +_080DA386: + pop {r0} + bx r0 + thumb_func_end sub_80DA348 + + thumb_func_start sub_80DA38C +sub_80DA38C: @ 80DA38C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DA3B4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA3BC + movs r0, 0x88 + lsls r0, 1 + strh r0, [r5, 0x20] + ldr r0, _080DA3B8 @ =0x0000ffe0 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080DA3C2 + .align 2, 0 +_080DA3B4: .4byte gBattleAnimBankAttacker +_080DA3B8: .4byte 0x0000ffe0 +_080DA3BC: + ldr r0, _080DA400 @ =0x0000ffe0 + strh r0, [r5, 0x20] + strh r0, [r5, 0x22] +_080DA3C2: + ldr r0, _080DA404 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080DA408 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080DA40C @ =sub_80DA410 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA400: .4byte 0x0000ffe0 +_080DA404: .4byte gBattleAnimArgs +_080DA408: .4byte gBattleAnimBankTarget +_080DA40C: .4byte sub_80DA410 + thumb_func_end sub_80DA38C + + thumb_func_start sub_80DA410 +sub_80DA410: @ 80DA410 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8078B5C + ldrh r1, [r4, 0x34] + lsrs r0, r1, 8 + cmp r0, 0xC8 + bls _080DA438 + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x24] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] +_080DA438: + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x20 + movs r1, 0x98 + lsls r1, 1 + cmp r0, r1 + bhi _080DA45A + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0xA0 + ble _080DA480 +_080DA45A: + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DA488 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl move_anim_8072740 +_080DA480: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA488: .4byte gSprites + thumb_func_end sub_80DA410 + + thumb_func_start sub_80DA48C +sub_80DA48C: @ 80DA48C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080DA4CC + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DA4BE + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080DA4BE: + adds r0, r4, 0 + bl DestroySprite + ldr r1, _080DA4D4 @ =gAnimVisualTaskCount + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080DA4CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA4D4: .4byte gAnimVisualTaskCount + thumb_func_end sub_80DA48C + + thumb_func_start sub_80DA4D8 +sub_80DA4D8: @ 80DA4D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r5, r7, 0 + adds r5, 0x2E + ldr r0, _080DA4F8 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080DA500 + ldr r0, _080DA4FC @ =gBattleAnimBankAttacker + b _080DA502 + .align 2, 0 +_080DA4F8: .4byte gBattleAnimArgs +_080DA4FC: .4byte gBattleAnimBankAttacker +_080DA500: + ldr r0, _080DA5B0 @ =gBattleAnimBankTarget +_080DA502: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DA518 + ldr r1, _080DA5B4 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080DA518: + adds r0, r6, 0 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080DA5B4 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r7, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + ldrh r1, [r4, 0x2] + lsrs r0, 24 + adds r1, r0, r1 + strh r1, [r7, 0x22] + lsls r1, 8 + strh r1, [r5, 0x8] + ldrh r1, [r4, 0xC] + adds r0, r1 + lsls r0, 1 + ldrh r2, [r5, 0xE] + movs r1, 0x1 + ands r1, r2 + orrs r1, r0 + strh r1, [r5, 0xE] + ldrb r0, [r5] + movs r2, 0x4 + mov r8, r2 + mov r1, r8 + orrs r0, r1 + strb r0, [r5] + ldrh r0, [r4, 0x4] + ldrb r1, [r4, 0x4] + strh r1, [r5, 0x2] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0xA] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x4] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x6] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0xC] + subs r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0x7F + bhi _080DA618 + ldr r0, _080DA5B8 @ =gMain + ldr r2, _080DA5BC @ =0x0000043d + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA5C0 + adds r0, r6, 0 + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r7, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] + b _080DA5D8 + .align 2, 0 +_080DA5B0: .4byte gBattleAnimBankTarget +_080DA5B4: .4byte gBattleAnimArgs +_080DA5B8: .4byte gMain +_080DA5BC: .4byte 0x0000043d +_080DA5C0: + adds r0, r6, 0 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] +_080DA5D8: + ldrb r1, [r5, 0xE] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + strb r0, [r5, 0xE] + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _080DA678 + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r0, r2, 31 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + b _080DA66E +_080DA618: + adds r0, r6, 0 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + ldrb r0, [r5, 0xE] + movs r4, 0x1 + orrs r0, r4 + strb r0, [r5, 0xE] + movs r2, 0x4 + ldrsh r0, [r5, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080DA678 + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + ands r1, r4 + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + mov r1, r8 +_080DA66E: + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] +_080DA678: + ldrh r1, [r5, 0x2] + lsrs r1, 6 + lsls r1, 4 + ldrb r2, [r5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldr r3, _080DA6E4 @ =gSineTable + ldrh r0, [r5, 0x2] + lsls r0, 1 + adds r0, r3 + movs r2, 0 + ldrsh r1, [r0, r2] + ldrb r0, [r5, 0xC] + muls r0, r1 + asrs r0, 8 + strh r0, [r7, 0x24] + ldrb r2, [r7, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r1, 0x24 + ldrsh r0, [r7, r1] + negs r0, r0 + asrs r0, 1 + ldrb r5, [r5, 0xA] + adds r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r4, [r1] + ldr r1, _080DA6E8 @ =gOamMatrices + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r4, [r2, 0x2] + lsls r0, r4, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldr r0, _080DA6EC @ =sub_80DA6F0 + str r0, [r7, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA6E4: .4byte gSineTable +_080DA6E8: .4byte gOamMatrices +_080DA6EC: .4byte sub_80DA6F0 + thumb_func_end sub_80DA4D8 + + thumb_func_start sub_80DA6F0 +sub_80DA6F0: @ 80DA6F0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r6, 0 + movs r0, 0x2E + adds r0, r5 + mov r12, r0 + ldrb r2, [r0] + movs r7, 0x1 + movs r1, 0x1 + mov r9, r1 + mov r0, r9 + ands r0, r2 + cmp r0, 0 + beq _080DA730 + mov r3, r12 + ldrb r0, [r3, 0x1] + adds r1, r0, 0 + adds r1, 0xFF + strb r1, [r3, 0x1] + lsls r0, 24 + cmp r0, 0 + beq _080DA724 + b _080DAD1A +_080DA724: + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DAD1A +_080DA730: + mov r4, r12 + ldrh r0, [r4, 0x2] + lsrs r4, r0, 6 + mov r8, r0 + cmp r4, 0x1 + bne _080DA73E + b _080DA896 +_080DA73E: + cmp r4, 0x1 + bgt _080DA748 + cmp r4, 0 + beq _080DA756 + b _080DAC52 +_080DA748: + cmp r4, 0x2 + bne _080DA74E + b _080DA9C8 +_080DA74E: + cmp r4, 0x3 + bne _080DA754 + b _080DAB0E +_080DA754: + b _080DAC52 +_080DA756: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080DA76C + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r1, r12 + strb r0, [r1] + strb r6, [r1, 0x1] + b _080DA88A +_080DA76C: + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080DA790 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + mov r2, r12 + strb r1, [r2] + strb r6, [r2, 0x1] + b _080DA88A +_080DA790: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DA88A + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r3, r12 + ldrb r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DA87A + ldr r0, _080DA80C @ =gMain + ldr r1, _080DA810 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA82E + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA814 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA868 + .align 2, 0 +_080DA80C: .4byte gMain +_080DA810: .4byte 0x0000043d +_080DA814: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA866 +_080DA82E: + mov r0, r12 + ldrb r1, [r0, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA85C + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + mov r1, r12 + ldrb r2, [r1, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DA87A +_080DA85C: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DA866: + mov r3, r12 +_080DA868: + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] +_080DA87A: + mov r4, r12 + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r0, [r4, 0x2] + mov r8, r0 +_080DA88A: + mov r2, r12 + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + strb r0, [r2] + b _080DAC52 +_080DA896: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0 + bne _080DA8AC + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r3, r12 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DA9BC +_080DA8AC: + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080DA8BE + adds r0, r2, 0 + orrs r0, r7 + mov r4, r12 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080DA9BC +_080DA8BE: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DA9BC + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DA9AC + ldr r0, _080DA940 @ =gMain + ldr r1, _080DA944 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA962 + mov r2, r12 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA948 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r3, r12 + b _080DA978 + .align 2, 0 +_080DA940: .4byte gMain +_080DA944: .4byte 0x0000043d +_080DA948: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA996 +_080DA962: + mov r3, r12 + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA98C + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] +_080DA978: + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] + b _080DA9AC +_080DA98C: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DA996: + mov r0, r12 + ldrb r2, [r0, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] +_080DA9AC: + mov r3, r12 + ldrb r1, [r3] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldrh r4, [r3, 0x2] + mov r8, r4 +_080DA9BC: + mov r1, r12 + ldrb r0, [r1] + movs r1, 0xF + ands r1, r0 + movs r0, 0x10 + b _080DAC4C +_080DA9C8: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080DA9DE + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r3, r12 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DAAFE +_080DA9DE: + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080DA9F0 + adds r0, r2, 0 + orrs r0, r7 + mov r4, r12 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080DAAFE +_080DA9F0: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _080DA9FA + b _080DAAFE +_080DA9FA: + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DAAEC + ldr r0, _080DAA6C @ =gMain + ldr r3, _080DAA70 @ =0x0000043d + adds r0, r3 + ldrb r0, [r0] + ands r4, r0 + cmp r4, 0 + beq _080DAAA4 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAA74 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DAAD8 + .align 2, 0 +_080DAA6C: .4byte gMain +_080DAA70: .4byte 0x0000043d +_080DAA74: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r0, r12 + ldrb r2, [r0, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DAAEC +_080DAAA4: + mov r3, r12 + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAACE + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] + b _080DAAEC +_080DAACE: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DAAD8: + mov r4, r12 + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080DAAEC: + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r2, [r1, 0x2] + mov r8, r2 +_080DAAFE: + mov r3, r12 + ldrb r0, [r3] + movs r1, 0xF + ands r1, r0 + movs r0, 0x20 + orrs r1, r0 + strb r1, [r3] + b _080DAC52 +_080DAB0E: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080DAB20 + movs r0, 0x8 + orrs r0, r2 + mov r4, r12 + strb r0, [r4] + b _080DAC42 +_080DAB20: + lsrs r0, r1, 28 + cmp r0, 0 + bne _080DAB44 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + mov r0, r12 + strb r1, [r0] + strb r6, [r0, 0x1] + b _080DAC42 +_080DAB44: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DAC42 + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DAC32 + ldr r0, _080DABC4 @ =gMain + ldr r3, _080DABC8 @ =0x0000043d + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DABE6 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DABCC + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r0, r12 + ldrb r2, [r0, 0xE] + b _080DAC00 + .align 2, 0 +_080DABC4: .4byte gMain +_080DABC8: .4byte 0x0000043d +_080DABCC: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DAC1E +_080DABE6: + mov r0, r12 + ldrb r1, [r0, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAC14 + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + mov r1, r12 + ldrb r2, [r1, 0xE] +_080DAC00: + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DAC32 +_080DAC14: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DAC1E: + mov r3, r12 + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] +_080DAC32: + mov r4, r12 + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r0, [r4, 0x2] + mov r8, r0 +_080DAC42: + mov r1, r12 + ldrb r0, [r1] + movs r1, 0xF + ands r1, r0 + movs r0, 0x30 +_080DAC4C: + orrs r1, r0 + mov r2, r12 + strb r1, [r2] +_080DAC52: + mov r3, r12 + ldrb r1, [r3] + lsls r1, 30 + lsrs r1, 31 + mov r0, r12 + adds r0, 0xC + adds r0, r1 + ldrb r1, [r0] + ldr r3, _080DACE0 @ =gSineTable + mov r4, r8 + lsls r0, r4, 1 + adds r0, r3 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r4, 0x24 + ldrsh r0, [r5, r4] + negs r0, r0 + asrs r0, 1 + mov r1, r12 + ldrb r1, [r1, 0xA] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r6, [r1] + ldr r1, _080DACE4 @ =gOamMatrices + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r6, [r2, 0x2] + lsls r0, r6, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + mov r2, r12 + ldrh r0, [r2, 0x6] + ldrh r3, [r2, 0x8] + adds r0, r3 + strh r0, [r2, 0x8] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r4, 0x4 + ldrsh r0, [r2, r4] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080DACE8 + ldrh r0, [r2, 0x4] + subs r1, 0x1 + ands r1, r0 + ldrh r0, [r2, 0x2] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0x2] + b _080DACFE + .align 2, 0 +_080DACE0: .4byte gSineTable +_080DACE4: .4byte gOamMatrices +_080DACE8: + mov r1, r12 + ldrh r0, [r1, 0x4] + ldr r1, _080DAD28 @ =0x00007fff + ands r1, r0 + mov r2, r12 + ldrh r2, [r2, 0x2] + adds r1, r2 + movs r0, 0xFF + ands r1, r0 + mov r3, r12 + strh r1, [r3, 0x2] +_080DACFE: + movs r4, 0x22 + ldrsh r1, [r5, r4] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + mov r3, r12 + ldrh r0, [r3, 0xE] + lsrs r0, 1 + cmp r1, r0 + blt _080DAD1A + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080DAD2C @ =sub_80DA48C + str r0, [r5, 0x1C] +_080DAD1A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAD28: .4byte 0x00007fff +_080DAD2C: .4byte sub_80DA48C + thumb_func_end sub_80DA6F0 + + thumb_func_start sub_80DAD30 +sub_80DAD30: @ 80DAD30 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _080DAD78 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldr r5, _080DAD7C @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080DAD80 @ =sub_807941C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DAD78: .4byte gBattleAnimBankTarget +_080DAD7C: .4byte gBattleAnimBankAttacker +_080DAD80: .4byte sub_807941C + thumb_func_end sub_80DAD30 + + thumb_func_start sub_80DAD84 +sub_80DAD84: @ 80DAD84 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r5, _080DADCC @ =gBattleAnimArgs + ldrh r0, [r5] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x34] + ldr r0, _080DADD0 @ =gMain + ldr r1, _080DADD4 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DAE44 + ldr r0, _080DADD8 @ =gBanksBySide + ldr r1, _080DADDC @ =gBattleAnimBankTarget + ldrb r2, [r1] + adds r0, r2, r0 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DADE0 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + b _080DADEE + .align 2, 0 +_080DADCC: .4byte gBattleAnimArgs +_080DADD0: .4byte gMain +_080DADD4: .4byte 0x0000043d +_080DADD8: .4byte gBanksBySide +_080DADDC: .4byte gBattleAnimBankTarget +_080DADE0: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 +_080DADEE: + strh r0, [r4, 0x3C] + ldr r0, _080DAE1C @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080DAE24 + ldr r0, _080DAE20 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080DAE58 + .align 2, 0 +_080DAE1C: .4byte gBattleAnimArgs +_080DAE20: .4byte gBattleAnimBankTarget +_080DAE24: + ldr r0, _080DAE40 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080DAE58 + .align 2, 0 +_080DAE40: .4byte gBattleAnimBankTarget +_080DAE44: + ldr r0, _080DAEFC @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r4, 0x3C] +_080DAE58: + ldr r5, _080DAF00 @ =gSineTable + ldrh r3, [r4, 0x30] + movs r1, 0xFF + ands r1, r3 + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + movs r2, 0 + strh r0, [r4, 0x36] + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r4, 0x38] + strh r2, [r4, 0x3A] + strh r2, [r4, 0x26] + strh r2, [r4, 0x24] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r6, r0, 27 + lsls r3, 16 + lsrs r3, 24 + strh r3, [r4, 0x30] + bl Random + lsls r0, 16 + asrs r7, r0, 16 + movs r0, 0x80 + lsls r0, 8 + ands r0, r7 + cmp r0, 0 + beq _080DAEA2 + ldrh r1, [r4, 0x30] + movs r0, 0xFF + subs r0, r1 + strh r0, [r4, 0x30] +_080DAEA2: + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + ldr r3, _080DAF04 @ =gOamMatrices + lsls r2, r6, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + ldrh r1, [r1] + strh r1, [r2, 0x6] + strh r1, [r2] + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + movs r0, 0x1 + ands r0, r7 + cmp r0, 0 + beq _080DAEF2 + adds r2, r4, 0 + adds r2, 0x2A + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r2] + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] +_080DAEF2: + ldr r0, _080DAF08 @ =sub_80DAF0C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAEFC: .4byte gBattleAnimBankTarget +_080DAF00: .4byte gSineTable +_080DAF04: .4byte gOamMatrices +_080DAF08: .4byte sub_80DAF0C + thumb_func_end sub_80DAD84 + + thumb_func_start sub_80DAF0C +sub_80DAF0C: @ 80DAF0C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x2E + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r1, 0 + mov r8, r1 + movs r7, 0 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080DAFF0 + movs r2, 0x36 + ldrsh r1, [r4, r2] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r6, r0, 8 + strh r6, [r4, 0x24] + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r3, r0, 8 + strh r3, [r4, 0x26] + ldrh r2, [r4, 0x34] + movs r1, 0xFF + adds r0, r1, 0 + ands r0, r2 + ldrh r2, [r4, 0x3A] + adds r0, r2 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + ands r1, r2 + cmp r0, r1 + blt _080DAFF0 + ldrh r0, [r4, 0x20] + adds r0, r6 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + strh r7, [r4, 0x24] + strh r7, [r4, 0x26] + mov r0, sp + adds r1, r5, 0 + movs r2, 0x10 + bl memcpy + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x10 + bl memset + ldrh r0, [r4, 0x22] + lsls r0, 8 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0, 0x6] + lsrs r1, r0, 8 + strh r1, [r5, 0x6] + strh r7, [r5, 0x2] + mov r0, sp + ldrh r0, [r0, 0x2] + strh r0, [r5, 0xA] + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + beq _080DAFC0 + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080DAFB8 + ldr r0, _080DAFB4 @ =0x00008001 + b _080DAFCE + .align 2, 0 +_080DAFB4: .4byte 0x00008001 +_080DAFB8: + ldr r0, _080DAFBC @ =0x00008002 + b _080DAFCE + .align 2, 0 +_080DAFBC: .4byte 0x00008002 +_080DAFC0: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080DAFCC + movs r0, 0x1 + b _080DAFCE +_080DAFCC: + movs r0, 0x2 +_080DAFCE: + strh r0, [r5, 0x4] + mov r0, sp + ldrh r0, [r0, 0x4] + lsrs r0, 8 + strb r0, [r5, 0xC] + subs r0, 0x2 + strb r0, [r5, 0xD] + mov r0, sp + ldrh r1, [r0, 0xE] + lsls r1, 1 + ldrh r2, [r5, 0xE] + movs r0, 0x1 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0xE] + ldr r0, _080DAFFC @ =sub_80DA6F0 + str r0, [r4, 0x1C] +_080DAFF0: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAFFC: .4byte sub_80DA6F0 + thumb_func_end sub_80DAF0C + + thumb_func_start sub_80DB000 +sub_80DB000: @ 80DB000 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DB018 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DB01C + adds r0, r5, 0 + movs r1, 0 + bl sub_80787B0 + b _080DB024 + .align 2, 0 +_080DB018: .4byte gBattleAnimArgs +_080DB01C: + adds r0, r5, 0 + movs r1, 0 + bl sub_8078764 +_080DB024: + ldr r4, _080DB08C @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DB03C + ldr r0, _080DB090 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DB052 +_080DB03C: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080DB058 + ldr r0, _080DB094 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DB058 +_080DB052: + ldrh r0, [r5, 0x20] + adds r0, 0x8 + strh r0, [r5, 0x20] +_080DB058: + ldr r4, _080DB08C @ =gBattleAnimArgs + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl SeekSpriteAnim + ldrh r0, [r5, 0x20] + subs r0, 0x20 + strh r0, [r5, 0x20] + ldr r0, _080DB098 @ =0x00000ccc + strh r0, [r5, 0x30] + ldrh r1, [r4, 0x8] + movs r0, 0xC + adds r2, r0, 0 + muls r2, r1 + adds r0, r2, 0 + ldrh r2, [r5, 0x24] + adds r0, r2 + strh r0, [r5, 0x24] + strh r1, [r5, 0x2E] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080DB09C @ =sub_80DB0A0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB08C: .4byte gBattleAnimArgs +_080DB090: .4byte gBattleAnimBankAttacker +_080DB094: .4byte gBattleAnimBankTarget +_080DB098: .4byte 0x00000ccc +_080DB09C: .4byte sub_80DB0A0 + thumb_func_end sub_80DB000 + + thumb_func_start sub_80DB0A0 +sub_80DB0A0: @ 80DB0A0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080DB0CA + strh r1, [r4, 0x2E] + strh r1, [r4, 0x24] + adds r0, r4, 0 + bl StartSpriteAnim +_080DB0CA: + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080DB0E2 + adds r0, r4, 0 + bl move_anim_8072740 +_080DB0E2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB0A0 + + thumb_func_start sub_80DB0E8 +sub_80DB0E8: @ 80DB0E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080DB180 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r7, r0, r1 + ldrh r0, [r7, 0x8] + movs r1, 0x1F + ands r0, r1 + cmp r0, 0 + bne _080DB162 + ldr r1, _080DB184 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r1, 0x8 + ldrsh r0, [r7, r1] + movs r5, 0xD + negs r5, r5 + adds r1, r5, 0 + bl Sin + ldr r4, _080DB188 @ =gBattleAnimArgs + strh r0, [r4] + movs r1, 0x8 + ldrsh r0, [r7, r1] + adds r1, r5, 0 + bl Cos + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r4, 0x4] + movs r0, 0x3 + strh r0, [r4, 0x6] + ldr r0, _080DB18C @ =gBattleAnimSpriteTemplate_83DB538 + mov r8, r0 + ldr r5, _080DB190 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r0, r8 + adds r1, r4, 0 + movs r3, 0x3 + bl CreateSpriteAndAnimate +_080DB162: + ldrh r0, [r7, 0x8] + adds r0, 0x8 + strh r0, [r7, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080DB176 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080DB176: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB180: .4byte gTasks +_080DB184: .4byte gAnimVisualTaskCount +_080DB188: .4byte gBattleAnimArgs +_080DB18C: .4byte gBattleAnimSpriteTemplate_83DB538 +_080DB190: .4byte gBattleAnimBankTarget + thumb_func_end sub_80DB0E8 + + thumb_func_start sub_80DB194 +sub_80DB194: @ 80DB194 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DB1A6 + cmp r0, 0x1 + beq _080DB1D8 + b _080DB1EC +_080DB1A6: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80787B0 + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB1D4 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DB1EC + .align 2, 0 +_080DB1D4: .4byte gSprites +_080DB1D8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DB1EC + adds r0, r4, 0 + bl move_anim_8072740 +_080DB1EC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB194 + + thumb_func_start sub_80DB1F4 +sub_80DB1F4: @ 80DB1F4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DB22C + cmp r0, 0x1 + bgt _080DB20A + cmp r0, 0 + beq _080DB210 + b _080DB27E +_080DB20A: + cmp r0, 0x2 + beq _080DB240 + b _080DB27E +_080DB210: + ldr r0, _080DB228 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + negs r0, r0 + subs r0, 0x20 + strh r0, [r4, 0x26] + b _080DB238 + .align 2, 0 +_080DB228: .4byte gBattleAnimBankTarget +_080DB22C: + ldrh r0, [r4, 0x26] + adds r0, 0xA + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080DB27E +_080DB238: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DB27E +_080DB240: + ldrh r0, [r4, 0x26] + subs r0, 0xA + strh r0, [r4, 0x26] + movs r2, 0x22 + ldrsh r0, [r4, r2] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DB27E + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB284 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl move_anim_8072740 +_080DB27E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB284: .4byte gSprites + thumb_func_end sub_80DB1F4 + + thumb_func_start sub_80DB288 +sub_80DB288: @ 80DB288 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080DB2C4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080DB2C8 @ =sub_80DB2D0 + str r0, [r4, 0x1C] + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB2CC @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB2C4: .4byte gBattleAnimArgs +_080DB2C8: .4byte sub_80DB2D0 +_080DB2CC: .4byte gSprites + thumb_func_end sub_80DB288 + + thumb_func_start sub_80DB2D0 +sub_80DB2D0: @ 80DB2D0 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080DB2E4 + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080DB328 +_080DB2E4: + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080DB30A + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] + b _080DB328 +_080DB30A: + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x34] + adds r1, r0, 0x1 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080DB328 + ldr r0, _080DB32C @ =sub_80DB330 + str r0, [r2, 0x1C] +_080DB328: + pop {r0} + bx r0 + .align 2, 0 +_080DB32C: .4byte sub_80DB330 + thumb_func_end sub_80DB2D0 + + thumb_func_start sub_80DB330 +sub_80DB330: @ 80DB330 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + adds r0, r1 + strh r0, [r2, 0x26] + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080DB360 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] +_080DB360: + movs r1, 0x26 + ldrsh r0, [r2, r1] + cmp r0, 0 + ble _080DB36E + adds r0, r2, 0 + bl move_anim_8072740 +_080DB36E: + pop {r0} + bx r0 + thumb_func_end sub_80DB330 + + thumb_func_start sub_80DB374 +sub_80DB374: @ 80DB374 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080DB388 + cmp r0, 0x1 + beq _080DB3E0 + b _080DB44C +_080DB388: + ldr r0, _080DB398 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080DB3A0 + ldr r4, _080DB39C @ =gBattleAnimBankAttacker + b _080DB3A2 + .align 2, 0 +_080DB398: .4byte gBattleAnimArgs +_080DB39C: .4byte gBattleAnimBankAttacker +_080DB3A0: + ldr r4, _080DB3DC @ =gBattleAnimBankTarget +_080DB3A2: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + movs r3, 0x80 + lsls r3, 2 + strh r3, [r5, 0x30] + movs r2, 0x80 + lsls r2, 1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + bl sub_8078FDC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DB44C + .align 2, 0 +_080DB3DC: .4byte gBattleAnimBankTarget +_080DB3E0: + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0xB + bgt _080DB3EE + ldrh r0, [r5, 0x30] + subs r0, 0x28 + b _080DB3F2 +_080DB3EE: + ldrh r0, [r5, 0x30] + adds r0, 0x28 +_080DB3F2: + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x32] + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x30 + ldrsh r3, [r5, r0] + str r1, [sp] + adds r0, r5, 0 + bl sub_8078FDC + ldrb r1, [r5, 0x3] + lsls r1, 26 + lsrs r1, 27 + movs r0, 0xF4 + lsls r0, 6 + ldr r2, _080DB454 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0x1 + cmp r1, 0x80 + ble _080DB42C + movs r1, 0x80 +_080DB42C: + movs r0, 0x40 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r1, r0, 1 + strh r1, [r5, 0x26] + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0x18 + bne _080DB44C + adds r0, r5, 0 + bl sub_8079098 + adds r0, r5, 0 + bl move_anim_8072740 +_080DB44C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB454: .4byte gOamMatrices + thumb_func_end sub_80DB374 + + thumb_func_start sub_80DB458 +sub_80DB458: @ 80DB458 + push {r4,r5,lr} + adds r5, r0, 0 + bl Random + ldr r4, _080DB47C @ =0x000001ff + ands r4, r0 + bl Random + movs r1, 0x7F + ands r1, r0 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080DB480 + movs r2, 0xB8 + lsls r2, 2 + adds r0, r4, r2 + b _080DB488 + .align 2, 0 +_080DB47C: .4byte 0x000001ff +_080DB480: + movs r2, 0xB8 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r4 +_080DB488: + strh r0, [r5, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DB49C + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + adds r0, r1, r0 + b _080DB4A4 +_080DB49C: + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r1 +_080DB4A4: + strh r0, [r5, 0x30] + ldr r2, _080DB4CC @ =gBattleAnimArgs + ldrh r0, [r2] + strh r0, [r5, 0x32] + lsls r0, 16 + cmp r0, 0 + beq _080DB4C0 + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] +_080DB4C0: + movs r1, 0x2 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080DB4D4 + ldr r4, _080DB4D0 @ =gBattleAnimBankAttacker + b _080DB4D6 + .align 2, 0 +_080DB4CC: .4byte gBattleAnimArgs +_080DB4D0: .4byte gBattleAnimBankAttacker +_080DB4D4: + ldr r4, _080DB500 @ =gBattleAnimBankTarget +_080DB4D6: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x22] + ldr r0, _080DB504 @ =sub_80DB508 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB500: .4byte gBattleAnimBankTarget +_080DB504: .4byte sub_80DB508 + thumb_func_end sub_80DB458 + + thumb_func_start sub_80DB508 +sub_80DB508: @ 80DB508 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DB520 + ldrh r3, [r4, 0x2E] + lsls r0, r3, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + b _080DB52A +_080DB520: + ldrh r3, [r4, 0x2E] + lsls r1, r3, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 +_080DB52A: + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x30] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + strh r3, [r4, 0x2E] + adds r0, r2, 0 + subs r0, 0x20 + strh r0, [r4, 0x30] + lsls r0, r3, 16 + cmp r0, 0 + bge _080DB54A + movs r0, 0 + strh r0, [r4, 0x2E] +_080DB54A: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080DB55E + adds r0, r4, 0 + bl move_anim_8072740 +_080DB55E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB508 + + thumb_func_start sub_80DB564 +sub_80DB564: @ 80DB564 + movs r1, 0 + strh r1, [r0, 0x3A] + movs r1, 0x40 + strh r1, [r0, 0x3C] + ldr r1, _080DB574 @ =sub_80DB578 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080DB574: .4byte sub_80DB578 + thumb_func_end sub_80DB564 + + thumb_func_start sub_80DB578 +sub_80DB578: @ 80DB578 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080DB58A + cmp r1, 0x1 + beq _080DB5D8 + b _080DB5DE +_080DB58A: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080DB5DE + strh r1, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + 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 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080DB5DE + ldrb r1, [r1] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DB5DE + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080DB5DE +_080DB5D8: + adds r0, r3, 0 + bl move_anim_8072740 +_080DB5DE: + pop {r0} + bx r0 + thumb_func_end sub_80DB578 + + thumb_func_start sub_80DB5E4 +sub_80DB5E4: @ 80DB5E4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + ldrh r4, [r0, 0x20] + ldrh r5, [r0, 0x22] + ldr r6, _080DB698 @ =gBattleAnimBankAttacker + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + mov r2, r8 + strh r6, [r2, 0x22] + ldrh r0, [r2, 0x20] + mov r9, r0 + mov r1, r9 + lsls r0, r1, 4 + strh r0, [r2, 0x36] + lsls r0, r6, 4 + strh r0, [r2, 0x38] + lsls r4, 16 + asrs r4, 16 + movs r1, 0x20 + ldrsh r0, [r2, r1] + subs r0, r4, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3A] + lsls r5, 16 + asrs r5, 16 + movs r1, 0x22 + ldrsh r0, [r2, r1] + subs r0, r5, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3C] + mov r0, r9 + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + subs r5, r6 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80790F0 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + mov r0, r8 + movs r1, 0x1 + adds r2, r3, 0 + bl sub_8078FDC + ldr r0, _080DB69C @ =sub_80DB6A0 + mov r2, r8 + str r0, [r2, 0x1C] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DB698: .4byte gBattleAnimBankAttacker +_080DB69C: .4byte sub_80DB6A0 + thumb_func_end sub_80DB5E4 + + thumb_func_start sub_80DB6A0 +sub_80DB6A0: @ 80DB6A0 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x3C] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x2D + lsls r0, 16 + movs r1, 0xA5 + lsls r1, 17 + cmp r0, r1 + bhi _080DB6DA + adds r1, r3, 0 + cmp r1, 0x9D + bgt _080DB6DA + movs r0, 0x2D + negs r0, r0 + cmp r1, r0 + bge _080DB6E0 +_080DB6DA: + adds r0, r2, 0 + bl move_anim_8074EE0 +_080DB6E0: + pop {r0} + bx r0 + thumb_func_end sub_80DB6A0 + + thumb_func_start unref_sub_80DB6E4 +unref_sub_80DB6E4: @ 80DB6E4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DB714 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DB71C + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB718 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + b _080DB73A + .align 2, 0 +_080DB714: .4byte gBattleAnimArgs +_080DB718: .4byte gSprites +_080DB71C: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB748 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 +_080DB73A: + strb r0, [r1] + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB748: .4byte gSprites + thumb_func_end unref_sub_80DB6E4 + + .align 2, 0 @ Don't pad with nop. |