.include "constants/gba_constants.inc" .include "include/macros.inc" .syntax unified .text @ current thumb_func_start sub_80D648C sub_80D648C: @ 80D648C push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r5, _080D6500 @ =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldr r6, _080D6504 @ =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] ldrb r0, [r6] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 ldrh r0, [r5, 0x4] strh r0, [r4, 0x38] ldrh r0, [r5, 0xA] strh r0, [r4, 0x3A] ldrh r0, [r5, 0x8] strh r0, [r4, 0x3C] ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 movs r3, 0xC ldrsh r0, [r5, r3] lsls r0, 2 adds r1, r0 ldr r3, _080D6508 @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080D650C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] ldr r1, _080D6510 @ =sub_80D6514 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D6500: .4byte gBattleAnimArgs _080D6504: .4byte gAnimBankTarget _080D6508: .4byte 0x000003ff _080D650C: .4byte 0xfffffc00 _080D6510: .4byte sub_80D6514 thumb_func_end sub_80D648C thumb_func_start sub_80D6514 sub_80D6514: @ 80D6514 push {r4,lr} adds r4, r0, 0 bl sub_8078B5C lsls r0, 24 cmp r0, 0 bne _080D657E movs r1, 0x3C ldrsh r0, [r4, r1] movs r2, 0x38 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r2, 0x3C ldrsh r0, [r4, r2] movs r2, 0x38 ldrsh r1, [r4, r2] bl Cos ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x3A] ldrh r2, [r4, 0x3C] adds r0, r2 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3C] movs r1, 0x3C ldrsh r0, [r4, r1] movs r1, 0x3 bl __modsi3 lsls r0, 16 cmp r0, 0 bne _080D6584 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 _080D6584 _080D657E: adds r0, r4, 0 bl DestroyAnimSprite _080D6584: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D6514 thumb_func_start sub_80D658C sub_80D658C: @ 80D658C push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x38] subs r0, 0x1 strh r0, [r3, 0x38] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _080D65C4 movs r0, 0x3E adds r0, r3 mov r12, r0 ldrb r2, [r0] 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, 0x36] strh r0, [r3, 0x38] _080D65C4: ldrh r0, [r3, 0x34] subs r1, r0, 0x1 strh r1, [r3, 0x34] lsls r0, 16 cmp r0, 0 bgt _080D65D6 adds r0, r3, 0 bl DestroyAnimSprite _080D65D6: pop {r0} bx r0 thumb_func_end sub_80D658C thumb_func_start sub_80D65DC sub_80D65DC: @ 80D65DC push {r4-r6,lr} adds r6, r0, 0 ldr r0, _080D6644 @ =gMain ldr r1, _080D6648 @ =0x0000043d adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080D65FE ldr r0, _080D664C @ =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080D6606 _080D65FE: ldr r1, _080D6650 @ =gBattleAnimArgs ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] _080D6606: ldr r5, _080D664C @ =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl GetBankPosition lsls r0, 24 ldr r4, _080D6650 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] adds r0, r1 strh r0, [r6, 0x22] ldrh r0, [r4] strh r0, [r6, 0x34] ldrh r0, [r4, 0x6] strh r0, [r6, 0x36] strh r0, [r6, 0x38] ldr r0, _080D6654 @ =sub_80D658C str r0, [r6, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D6644: .4byte gMain _080D6648: .4byte 0x0000043d _080D664C: .4byte gAnimBankTarget _080D6650: .4byte gBattleAnimArgs _080D6654: .4byte sub_80D658C thumb_func_end sub_80D65DC thumb_func_start sub_80D6658 sub_80D6658: @ 80D6658 push {r4-r6,lr} adds r5, r0, 0 ldr r1, _080D6674 @ =gBattleAnimArgs ldrh r0, [r1, 0x6] strh r0, [r5, 0x2E] movs r2, 0xE ldrsh r0, [r1, r2] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _080D667C ldr r0, _080D6678 @ =gAnimBankTarget b _080D667E .align 2, 0 _080D6674: .4byte gBattleAnimArgs _080D6678: .4byte gAnimBankTarget _080D667C: ldr r0, _080D670C @ =gAnimBankAttacker _080D667E: ldrb r6, [r0] ldr r0, _080D6710 @ =gMain ldr r3, _080D6714 @ =0x0000043d adds r0, r3 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080D669C adds r0, r6, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080D66A4 _080D669C: ldr r1, _080D6718 @ =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r1] _080D66A4: adds r0, r6, 0 movs r1, 0x2 bl GetBankPosition lsls r0, 24 ldr r4, _080D6718 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4] adds r0, r1 strh r0, [r5, 0x20] adds r0, r6, 0 movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r2, [r4, 0x2] adds r0, r2 strh r0, [r5, 0x22] ldrh r1, [r4, 0xE] ldr r0, _080D671C @ =0x00007fff ands r0, r1 strh r0, [r5, 0x36] ldrh r0, [r4, 0x4] strh r0, [r5, 0x38] ldrh r0, [r4, 0xA] strh r0, [r5, 0x3A] ldrh r0, [r4, 0x8] strh r0, [r5, 0x3C] ldrh r2, [r5, 0x4] lsls r1, r2, 22 lsrs r1, 22 movs r3, 0xC ldrsh r0, [r4, r3] lsls r0, 2 adds r1, r0 ldr r3, _080D6720 @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080D6724 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] ldr r1, _080D6728 @ =sub_80D672C str r1, [r5, 0x1C] adds r0, r5, 0 bl _call_via_r1 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D670C: .4byte gAnimBankAttacker _080D6710: .4byte gMain _080D6714: .4byte 0x0000043d _080D6718: .4byte gBattleAnimArgs _080D671C: .4byte 0x00007fff _080D6720: .4byte 0x000003ff _080D6724: .4byte 0xfffffc00 _080D6728: .4byte sub_80D672C thumb_func_end sub_80D6658 thumb_func_start sub_80D672C sub_80D672C: @ 80D672C push {r4,lr} adds r4, r0, 0 movs r1, 0x3C ldrsh r0, [r4, r1] movs r2, 0x38 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x3C ldrsh r0, [r4, r1] movs r2, 0x38 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x3A] ldrh r1, [r4, 0x3C] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3C] movs r2, 0x3C ldrsh r0, [r4, r2] movs r2, 0x36 ldrsh r1, [r4, r2] bl __modsi3 cmp r0, 0 bne _080D6782 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] _080D6782: ldrh r0, [r4, 0x2E] subs r1, r0, 0x1 strh r1, [r4, 0x2E] lsls r0, 16 cmp r0, 0 bgt _080D6794 adds r0, r4, 0 bl DestroyAnimSprite _080D6794: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D672C thumb_func_start sub_80D679C sub_80D679C: @ 80D679C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 bl sub_8078764 ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 ldr r3, _080D67D8 @ =gBattleAnimArgs movs r5, 0x6 ldrsh r0, [r3, r5] lsls r0, 2 adds r1, r0 ldr r5, _080D67DC @ =0x000003ff adds r0, r5, 0 ands r1, r0 ldr r0, _080D67E0 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] movs r1, 0x6 ldrsh r0, [r3, r1] cmp r0, 0x1 bne _080D67E4 ldrb r0, [r4, 0x3] movs r1, 0x3F negs r1, r1 ands r1, r0 movs r0, 0x10 b _080D67F2 .align 2, 0 _080D67D8: .4byte gBattleAnimArgs _080D67DC: .4byte 0x000003ff _080D67E0: .4byte 0xfffffc00 _080D67E4: cmp r0, 0x2 bne _080D67F6 ldrb r0, [r4, 0x3] movs r1, 0x3F negs r1, r1 ands r1, r0 movs r0, 0x20 _080D67F2: orrs r1, r0 strb r1, [r4, 0x3] _080D67F6: ldr r0, _080D6810 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] ldr r0, _080D6814 @ =sub_80782D8 str r0, [r4, 0x1C] ldr r1, _080D6818 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D6810: .4byte gBattleAnimArgs _080D6814: .4byte sub_80782D8 _080D6818: .4byte DestroyAnimSprite thumb_func_end sub_80D679C thumb_func_start sub_80D681C sub_80D681C: @ 80D681C push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r6, _080D6864 @ =gAnimBankTarget ldrb r0, [r6] movs r1, 0 bl GetBankPosition ldr r1, _080D6868 @ =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r1 lsls r0, 24 ldr r5, _080D686C @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r5] adds r0, r1 strh r0, [r4, 0x8] ldrb r0, [r6] movs r1, 0x1 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r5, 0x2] adds r0, r1 strh r0, [r4, 0xA] ldrh r0, [r5, 0x4] strh r0, [r4, 0xC] ldr r0, _080D6870 @ =sub_80D6874 str r0, [r4] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D6864: .4byte gAnimBankTarget _080D6868: .4byte gTasks _080D686C: .4byte gBattleAnimArgs _080D6870: .4byte sub_80D6874 thumb_func_end sub_80D681C thumb_func_start sub_80D6874 sub_80D6874: @ 80D6874 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r5, 0 movs r7, 0 ldr r1, _080D68B4 @ =gTasks lsls r0, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldrb r2, [r0, 0xC] str r2, [sp] ldrh r4, [r0, 0x8] ldrh r6, [r0, 0xA] movs r3, 0xC ldrsh r0, [r0, r3] mov r10, r1 cmp r0, 0 bne _080D68B8 movs r0, 0 mov r8, r0 movs r2, 0x1 movs r1, 0x10 mov r12, r1 b _080D68C2 .align 2, 0 _080D68B4: .4byte gTasks _080D68B8: movs r2, 0x10 mov r12, r2 movs r3, 0x8 mov r8, r3 movs r2, 0x4 _080D68C2: mov r0, r9 lsls r1, r0, 2 adds r0, r1, r0 lsls r0, 3 add r0, r10 movs r3, 0x1C ldrsh r0, [r0, r3] mov r10, r1 cmp r0, 0xA bhi _080D69B8 lsls r0, 2 ldr r1, _080D68E0 @ =_080D68E4 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080D68E0: .4byte _080D68E4 .align 2, 0 _080D68E4: .4byte _080D6910 .4byte _080D69B8 .4byte _080D6924 .4byte _080D69B8 .4byte _080D6944 .4byte _080D69B8 .4byte _080D695A .4byte _080D69B8 .4byte _080D697C .4byte _080D69B8 .4byte _080D69B0 _080D6910: ldr r0, _080D6920 @ =gSpriteTemplate_83D9938 lsls r1, r4, 16 asrs r1, 16 lsls r2, r6, 16 asrs r2, 16 mov r4, r12 lsls r3, r4, 16 b _080D6992 .align 2, 0 _080D6920: .4byte gSpriteTemplate_83D9938 _080D6924: mov r0, r12 lsls r3, r0, 17 mov r1, r8 adds r0, r1, r2 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _080D6940 @ =gSpriteTemplate_83D9938 lsls r1, r4, 16 asrs r1, 16 lsls r2, r6, 16 asrs r2, 16 b _080D6992 .align 2, 0 _080D6940: .4byte gSpriteTemplate_83D9938 _080D6944: mov r3, r12 lsls r0, r3, 16 asrs r0, 16 lsls r3, r0, 1 adds r3, r0 lsls r0, r2, 1 add r0, r8 lsls r0, 16 lsrs r0, 16 mov r8, r0 b _080D6986 _080D695A: mov r0, r12 lsls r3, r0, 18 lsls r0, r2, 1 adds r0, r2 add r0, r8 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _080D6978 @ =gSpriteTemplate_83D9938 lsls r1, r4, 16 asrs r1, 16 lsls r2, r6, 16 asrs r2, 16 b _080D6992 .align 2, 0 _080D6978: .4byte gSpriteTemplate_83D9938 _080D697C: mov r1, r12 lsls r0, r1, 16 asrs r0, 16 lsls r3, r0, 2 adds r3, r0 _080D6986: ldr r0, _080D69AC @ =gSpriteTemplate_83D9938 lsls r1, r4, 16 asrs r1, 16 lsls r2, r6, 16 asrs r2, 16 lsls r3, 16 _080D6992: asrs r3, 16 adds r2, r3 lsls r2, 16 asrs r2, 16 movs r3, 0x2 bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 b _080D69B8 .align 2, 0 _080D69AC: .4byte gSpriteTemplate_83D9938 _080D69B0: mov r0, r9 bl DestroyAnimVisualTask b _080D69FC _080D69B8: cmp r7, 0 beq _080D69EC ldr r4, _080D6A0C @ =gSprites lsls r3, r5, 4 adds r3, r5 lsls r3, 2 adds r0, r3, r4 ldrh r5, [r0, 0x4] lsls r2, r5, 22 lsrs r2, 22 add r2, r8 ldr r6, _080D6A10 @ =0x000003ff adds r1, r6, 0 ands r2, r1 ldr r1, _080D6A14 @ =0xfffffc00 ands r1, r5 orrs r1, r2 strh r1, [r0, 0x4] mov r1, sp ldrh r1, [r1] strh r1, [r0, 0x2E] adds r4, 0x1C adds r3, r4 ldr r1, [r3] bl _call_via_r1 _080D69EC: ldr r0, _080D6A18 @ =gTasks mov r1, r10 add r1, r9 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x1C] adds r0, 0x1 strh r0, [r1, 0x1C] _080D69FC: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D6A0C: .4byte gSprites _080D6A10: .4byte 0x000003ff _080D6A14: .4byte 0xfffffc00 _080D6A18: .4byte gTasks thumb_func_end sub_80D6874 thumb_func_start sub_80D6A1C sub_80D6A1C: @ 80D6A1C push {lr} adds r3, r0, 0 movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0 bne _080D6A3E ldrb r1, [r3, 0x1] movs r2, 0x3F adds r0, r2, 0 ands r0, r1 movs r1, 0x80 orrs r0, r1 strb r0, [r3, 0x1] ldrb r0, [r3, 0x3] ands r2, r0 strb r2, [r3, 0x3] b _080D6A52 _080D6A3E: ldrb r2, [r3, 0x1] movs r1, 0x3F adds r0, r1, 0 ands r0, r2 strb r0, [r3, 0x1] ldrb r0, [r3, 0x3] ands r1, r0 movs r0, 0x40 orrs r1, r0 strb r1, [r3, 0x3] _080D6A52: ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0xF bne _080D6A66 adds r0, r3, 0 bl DestroySprite _080D6A66: pop {r0} bx r0 thumb_func_end sub_80D6A1C thumb_func_start sub_80D6A6C sub_80D6A6C: @ 80D6A6C push {r4-r7,lr} adds r4, r0, 0 ldr r0, _080D6AD4 @ =gBattleAnimArgs ldrh r1, [r0] ldrh r2, [r4, 0x20] adds r1, r2 strh r1, [r4, 0x20] ldrh r0, [r0, 0x2] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] ldr r0, _080D6AD8 @ =gBattleAnimSpriteTemplate_83D9950 adds r1, 0x20 lsls r1, 16 asrs r1, 16 movs r7, 0x22 ldrsh r2, [r4, r7] adds r3, r4, 0 adds r3, 0x43 ldrb r3, [r3] bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r3, _080D6ADC @ =gSprites lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r6, r2, r3 ldrh r5, [r6, 0x4] lsls r1, r5, 22 lsrs r1, 22 adds r1, 0x8 ldr r7, _080D6AE0 @ =0x000003ff adds r0, r7, 0 ands r1, r0 ldr r0, _080D6AE4 @ =0xfffffc00 ands r0, r5 orrs r0, r1 strh r0, [r6, 0x4] ldr r1, _080D6AE8 @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] adds r3, 0x1C adds r2, r3 ldr r0, _080D6AEC @ =sub_80D6AF0 str r0, [r2] str r0, [r4, 0x1C] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D6AD4: .4byte gBattleAnimArgs _080D6AD8: .4byte gBattleAnimSpriteTemplate_83D9950 _080D6ADC: .4byte gSprites _080D6AE0: .4byte 0x000003ff _080D6AE4: .4byte 0xfffffc00 _080D6AE8: .4byte gAnimVisualTaskCount _080D6AEC: .4byte sub_80D6AF0 thumb_func_end sub_80D6A6C thumb_func_start sub_80D6AF0 sub_80D6AF0: @ 80D6AF0 push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _080D6B24 movs r0, 0 strh r0, [r3, 0x2E] movs r0, 0x3E adds r0, r3 mov r12, r0 ldrb r2, [r0] 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] _080D6B24: ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080D6B38 adds r0, r3, 0 bl DestroyAnimSprite _080D6B38: pop {r0} bx r0 thumb_func_end sub_80D6AF0 thumb_func_start sub_80D6B3C sub_80D6B3C: @ 80D6B3C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080D6B5C @ =gTasks adds r5, r1, r0 ldr r0, _080D6B60 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6B68 ldr r4, _080D6B64 @ =gAnimBankAttacker b _080D6B6A .align 2, 0 _080D6B5C: .4byte gTasks _080D6B60: .4byte gBattleAnimArgs _080D6B64: .4byte gAnimBankAttacker _080D6B68: ldr r4, _080D6BAC @ =gAnimBankTarget _080D6B6A: ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x26] ldr r2, _080D6BB0 @ =gBattleAnimArgs ldrh r0, [r2, 0x2] movs r1, 0 strh r0, [r5, 0x14] strh r1, [r5, 0x16] strh r1, [r5, 0x18] strh r1, [r5, 0x1A] strh r1, [r5, 0x1C] ldrh r0, [r2, 0x6] strh r0, [r5, 0x1E] strh r1, [r5, 0x20] ldrh r0, [r2, 0x4] strh r0, [r5, 0x22] ldr r0, _080D6BB4 @ =sub_80D6BB8 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D6BAC: .4byte gAnimBankTarget _080D6BB0: .4byte gBattleAnimArgs _080D6BB4: .4byte sub_80D6BB8 thumb_func_end sub_80D6B3C thumb_func_start sub_80D6BB8 sub_80D6BB8: @ 80D6BB8 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 adds r2, r6, 0 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _080D6CA0 @ =gTasks adds r5, r0, r1 movs r1, 0x14 ldrsh r0, [r5, r1] cmp r0, 0 beq _080D6CB8 ldrh r0, [r5, 0x20] adds r0, 0x1 movs r7, 0 strh r0, [r5, 0x20] lsls r0, 16 asrs r0, 16 movs r2, 0x22 ldrsh r1, [r5, r2] cmp r0, r1 ble _080D6CC6 strh r7, [r5, 0x20] ldr r0, _080D6CA4 @ =gSpriteTemplate_83D99B8 movs r3, 0x24 ldrsh r1, [r5, r3] movs r3, 0x26 ldrsh r2, [r5, r3] movs r3, 0x2 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _080D6CC6 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _080D6CA8 @ =gSprites adds r4, r0 ldr r1, _080D6CAC @ =gUnknown_083D9968 movs r2, 0x1A ldrsh r0, [r5, r2] lsls r0, 1 adds r0, r1 movs r3, 0 ldrsb r3, [r0, r3] ldrh r0, [r4, 0x20] adds r3, r0 strh r3, [r4, 0x20] movs r2, 0x1A ldrsh r0, [r5, r2] lsls r0, 1 adds r1, 0x1 adds r0, r1 movs r2, 0 ldrsb r2, [r0, r2] ldrh r0, [r4, 0x22] adds r2, r0 strh r2, [r4, 0x22] movs r1, 0x18 ldrsh r0, [r5, r1] lsls r1, r0, 2 adds r1, r0 movs r0, 0x28 subs r0, r1 strh r0, [r4, 0x2E] strh r3, [r4, 0x30] ldrh r0, [r5, 0x24] strh r0, [r4, 0x32] strh r2, [r4, 0x34] ldrh r0, [r5, 0x26] strh r0, [r4, 0x36] strh r6, [r4, 0x38] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 ldr r1, _080D6CB0 @ =sub_80D6D00 adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080D6CB4 @ =sub_8078600 str r0, [r4, 0x1C] ldrh r0, [r5, 0x1A] adds r0, 0x1 strh r0, [r5, 0x1A] lsls r0, 16 asrs r0, 16 cmp r0, 0xF ble _080D6C70 strh r7, [r5, 0x1A] _080D6C70: ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] lsls r0, 16 asrs r0, 16 movs r2, 0x1E ldrsh r1, [r5, r2] cmp r0, r1 blt _080D6C92 strh r7, [r5, 0x1C] ldrh r1, [r5, 0x18] movs r3, 0x18 ldrsh r0, [r5, r3] cmp r0, 0x5 bgt _080D6C92 adds r0, r1, 0x1 strh r0, [r5, 0x18] _080D6C92: ldrh r0, [r5, 0x16] adds r0, 0x1 strh r0, [r5, 0x16] ldrh r0, [r5, 0x14] subs r0, 0x1 strh r0, [r5, 0x14] b _080D6CC6 .align 2, 0 _080D6CA0: .4byte gTasks _080D6CA4: .4byte gSpriteTemplate_83D99B8 _080D6CA8: .4byte gSprites _080D6CAC: .4byte gUnknown_083D9968 _080D6CB0: .4byte sub_80D6D00 _080D6CB4: .4byte sub_8078600 _080D6CB8: movs r1, 0x16 ldrsh r0, [r5, r1] cmp r0, 0 bne _080D6CC6 adds r0, r2, 0 bl DestroyAnimVisualTask _080D6CC6: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80D6BB8 thumb_func_start sub_80D6CCC sub_80D6CCC: @ 80D6CCC push {r4,lr} adds r4, r0, 0 bl sub_8078B5C lsls r0, 24 cmp r0, 0 beq _080D6CF4 ldr r2, _080D6CFC @ =gTasks movs r0, 0x38 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x16] subs r1, 0x1 strh r1, [r0, 0x16] adds r0, r4, 0 bl DestroySprite _080D6CF4: pop {r4} pop {r0} bx r0 .align 2, 0 _080D6CFC: .4byte gTasks thumb_func_end sub_80D6CCC thumb_func_start sub_80D6D00 sub_80D6D00: @ 80D6D00 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl StartSpriteAnim ldr r0, _080D6D14 @ =sub_80D6CCC str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080D6D14: .4byte sub_80D6CCC thumb_func_end sub_80D6D00 thumb_func_start sub_80D6D18 sub_80D6D18: @ 80D6D18 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _080D6D2C @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6D34 ldr r4, _080D6D30 @ =gAnimBankAttacker b _080D6D36 .align 2, 0 _080D6D2C: .4byte gBattleAnimArgs _080D6D30: .4byte gAnimBankAttacker _080D6D34: ldr r4, _080D6D64 @ =gAnimBankTarget _080D6D36: ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldr r1, _080D6D68 @ =move_anim_8074EE0 adds r0, r5, 0 bl StoreSpriteCallbackInData ldr r0, _080D6D6C @ =sub_80785E4 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D6D64: .4byte gAnimBankTarget _080D6D68: .4byte move_anim_8074EE0 _080D6D6C: .4byte sub_80785E4 thumb_func_end sub_80D6D18 thumb_func_start sub_80D6D70 sub_80D6D70: @ 80D6D70 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _080D6D84 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6D8C ldr r4, _080D6D88 @ =gAnimBankAttacker b _080D6D8E .align 2, 0 _080D6D84: .4byte gBattleAnimArgs _080D6D88: .4byte gAnimBankAttacker _080D6D8C: ldr r4, _080D6DC8 @ =gAnimBankTarget _080D6D8E: ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldr r1, _080D6DCC @ =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r5, 0x24] ldrh r0, [r1, 0x4] strh r0, [r5, 0x26] ldr r1, _080D6DD0 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData ldr r0, _080D6DD4 @ =sub_8078600 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D6DC8: .4byte gAnimBankTarget _080D6DCC: .4byte gBattleAnimArgs _080D6DD0: .4byte DestroyAnimSprite _080D6DD4: .4byte sub_8078600 thumb_func_end sub_80D6D70 thumb_func_start sub_80D6DD8 sub_80D6DD8: @ 80D6DD8 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r4, _080D6E30 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x3A] movs r0, 0x10 strh r0, [r5, 0x3C] ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080D6E26 movs r1, 0x3C ldrsh r0, [r5, r1] negs r0, r0 strh r0, [r5, 0x3C] _080D6E26: ldr r0, _080D6E34 @ =sub_80D6E38 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D6E30: .4byte gAnimBankAttacker _080D6E34: .4byte sub_80D6E38 thumb_func_end sub_80D6DD8 thumb_func_start sub_80D6E38 sub_80D6E38: @ 80D6E38 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _080D6E4A cmp r0, 0x1 beq _080D6E60 b _080D6E90 _080D6E4A: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x28 ble _080D6E90 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080D6E90 _080D6E60: ldrh r2, [r4, 0x3C] ldrh r1, [r4, 0x20] adds r0, r2, r1 strh r0, [r4, 0x20] ldr r3, _080D6E98 @ =gSprites movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r1, [r0, 0x24] adds r2, r1 strh r2, [r0, 0x24] ldrh r0, [r4, 0x20] adds r0, 0x50 lsls r0, 16 movs r1, 0xC8 lsls r1, 17 cmp r0, r1 bls _080D6E90 adds r0, r4, 0 bl move_anim_8074EE0 _080D6E90: pop {r4} pop {r0} bx r0 .align 2, 0 _080D6E98: .4byte gSprites thumb_func_end sub_80D6E38 thumb_func_start sub_80D6E9C sub_80D6E9C: @ 80D6E9C push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 lsls r0, r3, 2 adds r0, r3 lsls r0, 3 ldr r1, _080D6EC0 @ =gTasks adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080D6F30 cmp r0, 0x1 bgt _080D6EC4 cmp r0, 0 beq _080D6ED0 b _080D7000 .align 2, 0 _080D6EC0: .4byte gTasks _080D6EC4: cmp r0, 0x2 beq _080D6F8C cmp r0, 0x3 bne _080D6ECE b _080D6FE0 _080D6ECE: b _080D7000 _080D6ED0: movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r6, 0 strh r0, [r5, 0x26] ldr r4, _080D6F04 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080D6F0C ldr r0, _080D6F08 @ =0x0000ffe0 strh r0, [r5, 0x24] movs r0, 0x2 b _080D6F12 .align 2, 0 _080D6F04: .4byte gAnimBankAttacker _080D6F08: .4byte 0x0000ffe0 _080D6F0C: movs r0, 0x20 strh r0, [r5, 0x24] ldr r0, _080D6F28 @ =0x0000fffe _080D6F12: strh r0, [r5, 0x22] ldr r2, _080D6F2C @ =gSprites movs r0, 0x26 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r5, 0x24] strh r1, [r0, 0x24] b _080D6FD2 .align 2, 0 _080D6F28: .4byte 0x0000fffe _080D6F2C: .4byte gSprites _080D6F30: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080D7000 movs r0, 0 strh r0, [r5, 0xA] ldr r4, _080D6F88 @ =gSprites movs r1, 0x26 ldrsh r0, [r5, r1] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r4 adds r2, 0x3E ldrb r3, [r2] lsls r0, r3, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] ldrh r1, [r5, 0x24] movs r2, 0x24 ldrsh r0, [r5, r2] cmp r0, 0 beq _080D6FD2 ldrh r2, [r5, 0x22] adds r2, r1, r2 strh r2, [r5, 0x24] movs r0, 0x26 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 strh r2, [r0, 0x24] b _080D7000 .align 2, 0 _080D6F88: .4byte gSprites _080D6F8C: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080D7000 movs r0, 0 strh r0, [r5, 0xA] ldr r1, _080D6FDC @ =gSprites movs r2, 0x26 ldrsh r0, [r5, r2] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r1 adds r2, 0x3E ldrb r3, [r2] lsls r0, r3, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] ldrh r0, [r5, 0xC] adds r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 bne _080D7000 _080D6FD2: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080D7000 .align 2, 0 _080D6FDC: .4byte gSprites _080D6FE0: ldr r2, _080D7008 @ =gSprites movs r0, 0x26 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] adds r0, r3, 0 bl DestroyAnimVisualTask _080D7000: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D7008: .4byte gSprites thumb_func_end sub_80D6E9C thumb_func_start sub_80D700C sub_80D700C: @ 80D700C push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080D7030 @ =gTasks adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x1 bne _080D7026 b _080D714C _080D7026: cmp r0, 0x1 bgt _080D7034 cmp r0, 0 beq _080D703C b _080D718E .align 2, 0 _080D7030: .4byte gTasks _080D7034: cmp r0, 0x2 bne _080D703A b _080D7180 _080D703A: b _080D718E _080D703C: ldr r4, _080D707C @ =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 movs r2, 0x1 negs r2, r2 adds r1, r2, 0 cmp r0, 0 bne _080D7052 movs r1, 0x1 _080D7052: movs r6, 0 strh r1, [r5, 0xA] ldr r0, _080D7080 @ =gBattleAnimArgs movs r1, 0 ldrsh r2, [r0, r1] adds r3, r0, 0 cmp r2, 0 beq _080D7088 cmp r2, 0x4 beq _080D70B0 ldrh r1, [r3] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080D70E8 movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0xE] ldr r0, _080D7084 @ =0x0000fff0 b _080D70F0 .align 2, 0 _080D707C: .4byte gAnimBankAttacker _080D7080: .4byte gBattleAnimArgs _080D7084: .4byte 0x0000fff0 _080D7088: ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0xE] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] movs r2, 0xA ldrsh r0, [r5, r2] lsls r0, 7 adds r0, 0x78 strh r0, [r5, 0x10] b _080D7126 _080D70B0: movs r0, 0xA ldrsh r1, [r5, r0] lsls r1, 7 movs r0, 0x78 subs r0, r1 strh r0, [r5, 0xE] ldr r4, _080D70E4 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 movs r2, 0xA ldrsh r1, [r5, r2] lsls r1, 5 subs r0, r1 strh r0, [r5, 0x10] b _080D7126 .align 2, 0 _080D70E4: .4byte gAnimBankTarget _080D70E8: ldr r0, _080D710C @ =0x0000fff0 strh r0, [r5, 0xE] movs r0, 0x80 lsls r0, 1 _080D70F0: strh r0, [r5, 0x10] movs r1, 0xA ldrsh r0, [r5, r1] cmp r0, 0x1 bne _080D7110 movs r2, 0 ldrsh r0, [r3, r2] lsls r1, r0, 2 adds r1, r0 lsls r1, 1 movs r0, 0x50 subs r0, r1 strh r0, [r5, 0x12] b _080D7126 .align 2, 0 _080D710C: .4byte 0x0000fff0 _080D7110: movs r0, 0 ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 1 adds r0, 0x28 strh r0, [r5, 0x12] ldrh r1, [r5, 0xE] ldrh r0, [r5, 0x10] strh r0, [r5, 0xE] strh r1, [r5, 0x10] _080D7126: movs r2, 0xE ldrsh r1, [r5, r2] movs r2, 0x10 ldrsh r0, [r5, r2] cmp r1, r0 bge _080D713C movs r1, 0 movs r0, 0x1 strh r0, [r5, 0xA] strh r1, [r5, 0x14] b _080D7178 _080D713C: ldr r0, _080D7148 @ =0x0000ffff strh r0, [r5, 0xA] movs r0, 0x3 strh r0, [r5, 0x14] b _080D7178 .align 2, 0 _080D7148: .4byte 0x0000ffff _080D714C: ldrh r0, [r5, 0xC] adds r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 ble _080D718E movs r0, 0 strh r0, [r5, 0xC] adds r0, r5, 0 adds r1, r4, 0 bl sub_80D7194 lsls r0, 24 cmp r0, 0 bne _080D7178 adds r0, r5, 0 adds r1, r4, 0 bl sub_80D7194 lsls r0, 24 cmp r0, 0 beq _080D718E _080D7178: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080D718E _080D7180: movs r1, 0x16 ldrsh r0, [r5, r1] cmp r0, 0 bne _080D718E adds r0, r4, 0 bl DestroyAnimVisualTask _080D718E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80D700C thumb_func_start sub_80D7194 sub_80D7194: @ 80D7194 push {r4,r5,lr} adds r4, r0, 0 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10 movs r2, 0xE ldrsh r1, [r4, r2] movs r3, 0x12 ldrsh r2, [r4, r3] movs r3, 0x23 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _080D71CA ldr r1, _080D7224 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 strh r5, [r0, 0x3A] movs r1, 0x7 strh r1, [r0, 0x3C] ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] _080D71CA: ldrh r1, [r4, 0xA] ldrh r5, [r4, 0x14] adds r0, r1, r5 strh r0, [r4, 0x14] lsls r0, 16 cmp r0, 0 bge _080D71DC movs r0, 0x3 strh r0, [r4, 0x14] _080D71DC: movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0x3 ble _080D71E8 movs r0, 0 strh r0, [r4, 0x14] _080D71E8: movs r3, 0xA ldrsh r0, [r4, r3] lsls r0, 4 ldrh r5, [r4, 0xE] adds r2, r0, r5 strh r2, [r4, 0xE] lsls r0, r1, 16 asrs r3, r0, 16 cmp r3, 0x1 bne _080D7208 lsls r0, r2, 16 asrs r0, 16 movs r5, 0x10 ldrsh r1, [r4, r5] cmp r0, r1 bge _080D721C _080D7208: movs r0, 0x1 negs r0, r0 cmp r3, r0 bne _080D7228 lsls r0, r2, 16 asrs r0, 16 movs r2, 0x10 ldrsh r1, [r4, r2] cmp r0, r1 bgt _080D7228 _080D721C: movs r0, 0x1 b _080D722A .align 2, 0 _080D7220: .4byte gSpriteTemplate_83D9B10 _080D7224: .4byte gSprites _080D7228: movs r0, 0 _080D722A: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80D7194 thumb_func_start sub_80D7230 sub_80D7230: @ 80D7230 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _080D7270 ldr r3, _080D7278 @ =gTasks movs r0, 0x3C ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl DestroySprite _080D7270: pop {r4} pop {r0} bx r0 .align 2, 0 _080D7278: .4byte gTasks thumb_func_end sub_80D7230 thumb_func_start sub_80D727C sub_80D727C: @ 80D727C push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 beq _080D728E cmp r0, 0x1 beq _080D72C0 b _080D72D4 _080D728E: ldr r4, _080D72BC @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] adds r0, r5, 0 movs r1, 0x2 bl StartSpriteAffineAnim ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] b _080D72D4 .align 2, 0 _080D72BC: .4byte gAnimBankAttacker _080D72C0: adds r0, r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080D72D4 adds r0, r5, 0 bl move_anim_8074EE0 _080D72D4: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80D727C thumb_func_start sub_80D72DC sub_80D72DC: @ 80D72DC push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080D7300 @ =gTasks adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x4 bls _080D72F6 b _080D7468 _080D72F6: lsls r0, 2 ldr r1, _080D7304 @ =_080D7308 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080D7300: .4byte gTasks _080D7304: .4byte _080D7308 .align 2, 0 _080D7308: .4byte _080D731C .4byte _080D73AC .4byte _080D73E8 .4byte _080D7444 .4byte _080D7454 _080D731C: ldr r4, _080D73A0 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x16] movs r0, 0x4 strh r0, [r5, 0x18] ldr r0, _080D73A4 @ =gAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] movs r2, 0x1C ldrsh r0, [r5, r2] movs r2, 0x14 ldrsh r1, [r5, r2] subs r0, r1 movs r1, 0x5 bl __divsi3 strh r0, [r5, 0x1A] movs r0, 0x7 strh r0, [r5, 0x10] ldr r0, _080D73A8 @ =0x0000ffff strh r0, [r5, 0x12] movs r0, 0xC strh r0, [r5, 0x1E] subs r0, 0x4C bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x20] movs r0, 0x3F bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x22] ldrh r0, [r5, 0x20] strh r0, [r5, 0x24] movs r1, 0x22 ldrsh r0, [r5, r1] movs r2, 0x20 ldrsh r1, [r5, r2] subs r0, r1 movs r1, 0x3 bl __divsi3 strh r0, [r5, 0x26] ldrh r0, [r5, 0x8] adds r0, 0x1 b _080D7466 .align 2, 0 _080D73A0: .4byte gAnimBankAttacker _080D73A4: .4byte gAnimBankTarget _080D73A8: .4byte 0x0000ffff _080D73AC: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 cmp r0, 0 ble _080D73DC movs r0, 0 strh r0, [r5, 0xA] adds r0, r5, 0 adds r1, r2, 0 bl sub_80D7470 lsls r0, 24 cmp r0, 0 beq _080D73DC movs r1, 0xC ldrsh r0, [r5, r1] cmp r0, 0x5 bne _080D73D6 movs r0, 0x3 b _080D73DA _080D73D6: ldrh r0, [r5, 0x8] adds r0, 0x1 _080D73DA: strh r0, [r5, 0x8] _080D73DC: ldrh r1, [r5, 0x1E] movs r2, 0x1E ldrsh r0, [r5, r2] cmp r0, 0 beq _080D7468 b _080D745E _080D73E8: ldrh r1, [r5, 0x1E] movs r2, 0x1E ldrsh r0, [r5, r2] cmp r0, 0 beq _080D73F6 subs r0, r1, 0x1 strh r0, [r5, 0x1E] _080D73F6: ldrh r0, [r5, 0xA] adds r0, 0x1 movs r3, 0 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 ble _080D7468 strh r3, [r5, 0xA] ldrh r1, [r5, 0xC] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _080D7422 movs r0, 0x4 strh r0, [r5, 0x16] movs r0, 0x44 strh r0, [r5, 0x18] strh r3, [r5, 0x10] strh r2, [r5, 0x12] b _080D7432 _080D7422: movs r0, 0x44 strh r0, [r5, 0x16] movs r0, 0x4 strh r0, [r5, 0x18] movs r0, 0x7 strh r0, [r5, 0x10] ldr r0, _080D7440 @ =0x0000ffff strh r0, [r5, 0x12] _080D7432: movs r1, 0x1E ldrsh r0, [r5, r1] cmp r0, 0 beq _080D7464 movs r0, 0x4 b _080D7466 .align 2, 0 _080D7440: .4byte 0x0000ffff _080D7444: movs r1, 0xE ldrsh r0, [r5, r1] cmp r0, 0 bne _080D7468 adds r0, r2, 0 bl DestroyAnimVisualTask b _080D7468 _080D7454: ldrh r1, [r5, 0x1E] movs r2, 0x1E ldrsh r0, [r5, r2] cmp r0, 0 beq _080D7464 _080D745E: subs r0, r1, 0x1 strh r0, [r5, 0x1E] b _080D7468 _080D7464: movs r0, 0x1 _080D7466: strh r0, [r5, 0x8] _080D7468: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80D72DC thumb_func_start sub_80D7470 sub_80D7470: @ 80D7470 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40 movs r2, 0x14 ldrsh r1, [r4, r2] movs r3, 0x16 ldrsh r2, [r4, r3] movs r3, 0x23 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _080D74DC ldr r1, _080D753C @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrh r2, [r3, 0x4] lsls r1, r2, 22 lsrs r1, 22 ldrh r6, [r4, 0x10] adds r1, r6 ldr r6, _080D7540 @ =0x000003ff adds r0, r6, 0 ands r1, r0 ldr r0, _080D7544 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] ldrh r0, [r4, 0x12] ldrh r1, [r4, 0x10] adds r0, r1 strh r0, [r4, 0x10] lsls r0, 16 cmp r0, 0 bge _080D74C4 movs r0, 0x7 strh r0, [r4, 0x10] _080D74C4: movs r2, 0x10 ldrsh r0, [r4, r2] cmp r0, 0x7 ble _080D74D0 movs r0, 0 strh r0, [r4, 0x10] _080D74D0: strh r5, [r3, 0x3A] movs r0, 0x3 strh r0, [r3, 0x3C] ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] _080D74DC: movs r3, 0x10 ldrsh r0, [r4, r3] cmp r0, 0 bne _080D74FE movs r5, 0x12 ldrsh r0, [r4, r5] cmp r0, 0 ble _080D74FE ldrh r1, [r4, 0x26] ldrh r6, [r4, 0x24] adds r1, r6 strh r1, [r4, 0x24] lsls r1, 24 asrs r1, 24 movs r0, 0x76 bl PlaySE12WithPanning _080D74FE: movs r0, 0x12 ldrsh r3, [r4, r0] ldrh r2, [r4, 0x16] cmp r3, 0 bge _080D7514 lsls r0, r2, 16 asrs r0, 16 movs r5, 0x18 ldrsh r1, [r4, r5] cmp r0, r1 ble _080D7524 _080D7514: cmp r3, 0 ble _080D7548 lsls r0, r2, 16 asrs r0, 16 movs r6, 0x18 ldrsh r1, [r4, r6] cmp r0, r1 blt _080D7548 _080D7524: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x1A] ldrh r1, [r4, 0x14] adds r0, r1 strh r0, [r4, 0x14] movs r0, 0x1 b _080D7554 .align 2, 0 _080D7538: .4byte gSpriteTemplate_83D9B40 _080D753C: .4byte gSprites _080D7540: .4byte 0x000003ff _080D7544: .4byte 0xfffffc00 _080D7548: movs r3, 0x12 ldrsh r0, [r4, r3] lsls r0, 3 adds r0, r2, r0 strh r0, [r4, 0x16] movs r0, 0 _080D7554: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80D7470 thumb_func_start sub_80D755C sub_80D755C: @ 80D755C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _080D7592 ldr r3, _080D7598 @ =gTasks movs r0, 0x3C ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] adds r0, r4, 0 bl DestroySprite _080D7592: pop {r4} pop {r0} bx r0 .align 2, 0 _080D7598: .4byte gTasks thumb_func_end sub_80D755C thumb_func_start sub_80D759C sub_80D759C: @ 80D759C push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080D75C0 @ =gTasks adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080D7618 cmp r0, 0x1 bgt _080D75C4 cmp r0, 0 beq _080D75CA b _080D764E .align 2, 0 _080D75C0: .4byte gTasks _080D75C4: cmp r0, 0x2 beq _080D7640 b _080D764E _080D75CA: ldr r0, _080D7614 @ =gAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl GetBankPosition lsls r0, 24 lsrs r0, 24 adds r0, 0x20 strh r0, [r5, 0x26] strh r0, [r5, 0x24] cmp r0, 0x10 ble _080D75F4 adds r2, r0, 0 _080D75E4: adds r1, r2, 0 subs r1, 0x20 adds r2, r1, 0 lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x10 bgt _080D75E4 strh r1, [r5, 0x24] _080D75F4: ldr r4, _080D7614 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] bl sub_8079E90 lsls r0, 24 lsrs r0, 24 subs r0, 0x2 strh r0, [r5, 0x20] b _080D7638 .align 2, 0 _080D7614: .4byte gAnimBankTarget _080D7618: ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080D764E movs r0, 0 strh r0, [r5, 0xA] adds r0, r5, 0 adds r1, r2, 0 bl sub_80D7654 lsls r0, 24 cmp r0, 0 beq _080D764E _080D7638: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080D764E _080D7640: movs r1, 0x1C ldrsh r0, [r5, r1] cmp r0, 0 bne _080D764E adds r0, r2, 0 bl DestroyAnimVisualTask _080D764E: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80D759C thumb_func_start sub_80D7654 sub_80D7654: @ 80D7654 push {r4,r5,lr} adds r4, r0, 0 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0 movs r2, 0x22 ldrsh r1, [r4, r2] movs r3, 0x24 ldrsh r2, [r4, r3] ldrh r3, [r4, 0x20] lsls r3, 24 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _080D7698 ldr r3, _080D76B4 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r3, 0 adds r1, 0x1C adds r1, r0, r1 ldr r2, _080D76B8 @ =sub_80D76C4 str r2, [r1] adds r0, r3 strh r5, [r0, 0x3A] movs r1, 0xA strh r1, [r0, 0x3C] ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] _080D7698: ldrh r2, [r4, 0x24] movs r0, 0x24 ldrsh r1, [r4, r0] movs r3, 0x26 ldrsh r0, [r4, r3] cmp r1, r0 bge _080D76BC adds r0, r2, 0 adds r0, 0x20 strh r0, [r4, 0x24] movs r0, 0 b _080D76BE .align 2, 0 _080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0 _080D76B4: .4byte gSprites _080D76B8: .4byte sub_80D76C4 _080D76BC: movs r0, 0x1 _080D76BE: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80D7654 .align 2, 0 @ Don't pad with nop.