.include "constants/gba_constants.inc" .include "include/macros.inc" .syntax unified .text @ ghost thumb_func_start sub_80DDB6C sub_80DDB6C: @ 80DDB6C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r0, _080DDBC8 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] ldr r5, _080DDBCC @ =gAnimBankTarget ldrb r0, [r5] 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, [r5] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 bl sub_8078BD4 ldr r0, _080DDBD0 @ =sub_80DDBD8 str r0, [r4, 0x1C] movs r0, 0x10 strh r0, [r4, 0x3A] ldr r1, _080DDBD4 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x3A] strh r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080DDBC8: .4byte gBattleAnimArgs _080DDBCC: .4byte gAnimBankTarget _080DDBD0: .4byte sub_80DDBD8 _080DDBD4: .4byte REG_BLDCNT thumb_func_end sub_80DDB6C thumb_func_start sub_80DDBD8 sub_80DDBD8: @ 80DDBD8 push {r4,lr} adds r4, r0, 0 bl sub_80DDCC8 adds r0, r4, 0 bl sub_8078B5C lsls r0, 24 cmp r0, 0 beq _080DDBF8 ldr r0, _080DDBF4 @ =sub_80DDC4C str r0, [r4, 0x1C] b _080DDC42 .align 2, 0 _080DDBF4: .4byte sub_80DDC4C _080DDBF8: movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xA bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xF bl Cos ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r2, [r4, 0x38] adds r0, r2, 0x5 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] ldrh r0, [r4, 0x38] lsls r2, 16 asrs r2, 16 cmp r2, 0 beq _080DDC30 cmp r2, 0xC4 ble _080DDC42 _080DDC30: lsls r0, 16 cmp r0, 0 ble _080DDC42 ldr r0, _080DDC48 @ =gUnknown_0202F7D2 movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0xC4 bl PlaySE12WithPanning _080DDC42: pop {r4} pop {r0} bx r0 .align 2, 0 _080DDC48: .4byte gUnknown_0202F7D2 thumb_func_end sub_80DDBD8 thumb_func_start sub_80DDC4C sub_80DDC4C: @ 80DDC4C push {r4,lr} adds r4, r0, 0 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 bl sub_8078B5C movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xA bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xF bl Cos ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r2, [r4, 0x38] adds r0, r2, 0x5 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] ldrh r0, [r4, 0x38] lsls r2, 16 asrs r2, 16 cmp r2, 0 beq _080DDC92 cmp r2, 0xC4 ble _080DDC9E _080DDC92: lsls r0, 16 cmp r0, 0 ble _080DDC9E movs r0, 0xC4 bl PlaySE _080DDC9E: movs r1, 0x3A ldrsh r0, [r4, r1] cmp r0, 0 bne _080DDCBC adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080DDCB8 @ =sub_807861C str r0, [r4, 0x1C] b _080DDCC2 .align 2, 0 _080DDCB8: .4byte sub_807861C _080DDCBC: adds r0, r4, 0 bl sub_80DDCC8 _080DDCC2: pop {r4} pop {r0} bx r0 thumb_func_end sub_80DDC4C thumb_func_start sub_80DDCC8 sub_80DDCC8: @ 80DDCC8 push {r4,lr} adds r3, r0, 0 ldrh r2, [r3, 0x3A] movs r1, 0x3A ldrsh r0, [r3, r1] cmp r0, 0xFF ble _080DDCEC adds r0, r2, 0x1 strh r0, [r3, 0x3A] lsls r0, 16 ldr r1, _080DDCE8 @ =0x010d0000 cmp r0, r1 bne _080DDD4C movs r0, 0 b _080DDD4A .align 2, 0 _080DDCE8: .4byte 0x010d0000 _080DDCEC: ldrh r1, [r3, 0x3C] adds r4, r1, 0x1 strh r4, [r3, 0x3C] movs r0, 0xFF ands r0, r1 cmp r0, 0 bne _080DDD4C ldr r1, _080DDD10 @ =0xffffff00 ands r1, r4 strh r1, [r3, 0x3C] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _080DDD14 adds r0, r2, 0x1 b _080DDD16 .align 2, 0 _080DDD10: .4byte 0xffffff00 _080DDD14: subs r0, r2, 0x1 _080DDD16: strh r0, [r3, 0x3A] ldr r2, _080DDD54 @ =REG_BLDALPHA ldrh r1, [r3, 0x3A] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r0, r1 strh r0, [r2] movs r2, 0x3A ldrsh r0, [r3, r2] cmp r0, 0 beq _080DDD32 cmp r0, 0x10 bne _080DDD3E _080DDD32: ldrh r0, [r3, 0x3C] movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 eors r0, r1 strh r0, [r3, 0x3C] _080DDD3E: movs r1, 0x3A ldrsh r0, [r3, r1] cmp r0, 0 bne _080DDD4C movs r0, 0x80 lsls r0, 1 _080DDD4A: strh r0, [r3, 0x3A] _080DDD4C: pop {r4} pop {r0} bx r0 .align 2, 0 _080DDD54: .4byte REG_BLDALPHA thumb_func_end sub_80DDCC8 thumb_func_start sub_80DDD58 sub_80DDD58: @ 80DDD58 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_8078764 ldr r1, _080DDD74 @ =sub_80DDD78 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080DDD74: .4byte sub_80DDD78 thumb_func_end sub_80DDD58 thumb_func_start sub_80DDD78 sub_80DDD78: @ 80DDD78 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0x20 bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0x8 bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x2E] subs r0, 0x41 lsls r0, 16 lsrs r0, 16 cmp r0, 0x82 bhi _080DDDAC ldrb r0, [r4, 0x5] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x8 b _080DDDB6 _080DDDAC: ldrb r0, [r4, 0x5] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 _080DDDB6: orrs r1, r0 strb r1, [r4, 0x5] ldrh r0, [r4, 0x2E] adds r0, 0x13 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x32] adds r0, 0x50 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 24 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] lsls r0, 16 asrs r0, 16 cmp r0, 0x3D bne _080DDDE8 adds r0, r4, 0 bl DestroyAnimSprite _080DDDE8: pop {r4} pop {r0} bx r0 thumb_func_end sub_80DDD78 thumb_func_start sub_80DDDF0 sub_80DDDF0: @ 80DDDF0 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r1, _080DDE68 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r2, 0x80 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] movs r0, 0 bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 movs r1, 0x1 bl sub_8078E70 adds r0, r4, 0 movs r1, 0x80 movs r2, 0x80 movs r3, 0 bl obj_id_set_rotscale ldr r1, _080DDE6C @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] ldr r1, _080DDE70 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r2, 0 movs r1, 0x80 strh r1, [r0, 0x8] ldr r1, _080DDE74 @ =gBattleAnimArgs ldrh r1, [r1] strh r1, [r0, 0xA] strh r2, [r0, 0xC] movs r1, 0x10 strh r1, [r0, 0xE] ldr r1, _080DDE78 @ =sub_80DDE7C str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080DDE68: .4byte REG_BLDCNT _080DDE6C: .4byte gSprites _080DDE70: .4byte gTasks _080DDE74: .4byte gBattleAnimArgs _080DDE78: .4byte sub_80DDE7C thumb_func_end sub_80DDDF0 thumb_func_start sub_80DDE7C sub_80DDE7C: @ 80DDE7C push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080DDEC4 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r3, r1, r2 ldrh r0, [r3, 0x1C] adds r0, 0x1 strh r0, [r3, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _080DDEBE movs r0, 0 strh r0, [r3, 0x1C] ldrh r1, [r3, 0xC] adds r1, 0x1 strh r1, [r3, 0xC] ldrh r0, [r3, 0xE] subs r0, 0x1 strh r0, [r3, 0xE] ldr r2, _080DDEC8 @ =REG_BLDALPHA lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r1, 0xC ldrsh r0, [r3, r1] cmp r0, 0x9 bne _080DDEBE ldr r0, _080DDECC @ =sub_80DDED0 str r0, [r3] _080DDEBE: pop {r0} bx r0 .align 2, 0 _080DDEC4: .4byte gTasks _080DDEC8: .4byte REG_BLDALPHA _080DDECC: .4byte sub_80DDED0 thumb_func_end sub_80DDE7C thumb_func_start sub_80DDED0 sub_80DDED0: @ 80DDED0 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, _080DDEF4 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 ble _080DDEF8 subs r0, r1, 0x1 strh r0, [r4, 0xA] b _080DDF36 .align 2, 0 _080DDEF4: .4byte gTasks _080DDEF8: movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r1, r0, 24 ldrh r0, [r4, 0x8] adds r0, 0x8 movs r6, 0 strh r0, [r4, 0x8] lsls r0, 16 asrs r0, 16 cmp r0, 0xFF bgt _080DDF22 movs r0, 0x8 ldrsh r2, [r4, r0] adds r0, r1, 0 adds r1, r2, 0 movs r3, 0 bl obj_id_set_rotscale b _080DDF36 _080DDF22: adds r0, r1, 0 bl sub_8078F40 adds r0, r5, 0 bl DestroyAnimVisualTask ldr r0, _080DDF3C @ =REG_BLDCNT strh r6, [r0] adds r0, 0x2 strh r6, [r0] _080DDF36: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080DDF3C: .4byte REG_BLDCNT thumb_func_end sub_80DDED0 thumb_func_start sub_80DDF40 sub_80DDF40: @ 80DDF40 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0x4 adds r4, r0, 0 ldrh r5, [r4, 0x20] ldrh r6, [r4, 0x22] ldr r0, _080DDFDC @ =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 movs r1, 0 mov r9, r1 strh r0, [r4, 0x20] mov r1, r8 ldrb r0, [r1] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] mov r1, r9 strh r1, [r4, 0x2E] ldr r2, _080DDFE0 @ =gBattleAnimArgs ldrh r1, [r2] strh r1, [r4, 0x30] ldrh r1, [r2, 0x2] strh r1, [r4, 0x32] ldrh r1, [r2, 0x4] strh r1, [r4, 0x34] ldrh r1, [r4, 0x20] lsls r1, 4 strh r1, [r4, 0x36] lsls r0, 4 strh r0, [r4, 0x38] lsls r5, 16 asrs r5, 16 movs r1, 0x20 ldrsh r0, [r4, r1] subs r5, r0 lsls r5, 4 movs r0, 0 ldrsh r1, [r2, r0] lsls r1, 1 adds r0, r5, 0 str r2, [sp] bl __divsi3 strh r0, [r4, 0x3A] lsls r6, 16 asrs r6, 16 movs r1, 0x22 ldrsh r0, [r4, r1] subs r6, r0 lsls r6, 4 ldr r2, [sp] movs r0, 0 ldrsh r1, [r2, r0] lsls r1, 1 adds r0, r6, 0 bl __divsi3 strh r0, [r4, 0x3C] ldr r0, _080DDFE4 @ =sub_80DDFE8 str r0, [r4, 0x1C] add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080DDFDC: .4byte gAnimBankAttacker _080DDFE0: .4byte gBattleAnimArgs _080DDFE4: .4byte sub_80DDFE8 thumb_func_end sub_80DDF40 thumb_func_start sub_80DDFE8 sub_80DDFE8: @ 80DDFE8 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080DE032 cmp r0, 0x1 bgt _080DDFFE cmp r0, 0 beq _080DE008 b _080DE0F6 _080DDFFE: cmp r0, 0x2 beq _080DE09C cmp r0, 0x3 beq _080DE0F0 b _080DE0F6 _080DE008: ldrh r0, [r5, 0x3A] ldrh r2, [r5, 0x36] adds r0, r2 strh r0, [r5, 0x36] ldrh r1, [r5, 0x3C] ldrh r2, [r5, 0x38] adds r1, r2 strh r1, [r5, 0x38] lsls r0, 16 asrs r0, 20 strh r0, [r5, 0x20] lsls r1, 16 asrs r1, 20 strh r1, [r5, 0x22] ldrh r0, [r5, 0x30] subs r0, 0x1 strh r0, [r5, 0x30] lsls r0, 16 cmp r0, 0 bgt _080DE0F6 b _080DE0E2 _080DE032: ldrh r0, [r5, 0x32] subs r0, 0x1 strh r0, [r5, 0x32] lsls r0, 16 cmp r0, 0 bgt _080DE0F6 ldr r4, _080DE098 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x30] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrh r0, [r5, 0x20] lsls r0, 4 strh r0, [r5, 0x36] ldrh r0, [r5, 0x22] lsls r0, 4 strh r0, [r5, 0x38] movs r1, 0x30 ldrsh r0, [r5, r1] movs r2, 0x20 ldrsh r1, [r5, r2] subs r0, r1 lsls r0, 4 movs r2, 0x34 ldrsh r1, [r5, r2] bl __divsi3 strh r0, [r5, 0x3A] movs r1, 0x32 ldrsh r0, [r5, r1] movs r2, 0x22 ldrsh r1, [r5, r2] subs r0, r1 lsls r0, 4 movs r2, 0x34 ldrsh r1, [r5, r2] bl __divsi3 strh r0, [r5, 0x3C] b _080DE0E2 .align 2, 0 _080DE098: .4byte gAnimBankTarget _080DE09C: ldrh r0, [r5, 0x3A] ldrh r1, [r5, 0x36] adds r0, r1 strh r0, [r5, 0x36] ldrh r1, [r5, 0x3C] ldrh r2, [r5, 0x38] adds r1, r2 strh r1, [r5, 0x38] lsls r0, 16 asrs r0, 20 strh r0, [r5, 0x20] lsls r1, 16 asrs r1, 20 strh r1, [r5, 0x22] ldrh r0, [r5, 0x34] subs r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 cmp r0, 0 bgt _080DE0F6 ldr r4, _080DE0EC @ =gAnimBankTarget 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] _080DE0E2: ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] b _080DE0F6 .align 2, 0 _080DE0EC: .4byte gAnimBankTarget _080DE0F0: adds r0, r5, 0 bl move_anim_8074EE0 _080DE0F6: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80DDFE8 thumb_func_start sub_80DE0FC sub_80DE0FC: @ 80DE0FC push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_8078764 ldr r0, _080DE110 @ =sub_80DE114 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080DE110: .4byte sub_80DE114 thumb_func_end sub_80DE0FC thumb_func_start sub_80DE114 sub_80DE114: @ 80DE114 push {r4-r6,lr} adds r3, r0, 0 movs r5, 0 movs r6, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080DE1AA adds r1, r3, 0 adds r1, 0x3E ldrb r2, [r1] movs r0, 0x4 ands r0, r2 adds r4, r1, 0 cmp r0, 0 bne _080DE13E movs r0, 0x4 orrs r0, r2 strb r0, [r4] _080DE13E: movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0 beq _080DE14E cmp r0, 0x1 beq _080DE158 movs r6, 0x1 b _080DE162 _080DE14E: movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0x2 bne _080DE162 b _080DE166 _080DE158: movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0x4 bne _080DE162 movs r5, 0x1 _080DE162: cmp r5, 0 beq _080DE198 _080DE166: ldrb r2, [r4] 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, [r4] ldrh r0, [r3, 0x32] adds r0, 0x1 movs r1, 0 strh r0, [r3, 0x32] strh r1, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _080DE1AA strh r1, [r3, 0x32] ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] b _080DE1AA _080DE198: cmp r6, 0 beq _080DE1A4 adds r0, r3, 0 bl DestroyAnimSprite b _080DE1AA _080DE1A4: ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] _080DE1AA: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80DE114 thumb_func_start sub_80DE1B0 sub_80DE1B0: @ 80DE1B0 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080DE1DC @ =gTasks adds r5, r0, r1 movs r0, 0x1 bl duplicate_obj_of_side_rel2move_in_transparent_mode movs r6, 0 movs r1, 0 strh r0, [r5, 0x8] lsls r0, 16 cmp r0, 0 bge _080DE1E0 adds r0, r4, 0 bl DestroyAnimVisualTask b _080DE2C0 .align 2, 0 _080DE1DC: .4byte gTasks _080DE1E0: strh r1, [r5, 0xA] movs r0, 0xF strh r0, [r5, 0xC] movs r0, 0x2 strh r0, [r5, 0xE] strh r1, [r5, 0x10] ldr r1, _080DE244 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] ldr r2, _080DE248 @ =REG_BLDALPHA ldrh r0, [r5, 0xE] lsls r0, 8 ldrh r1, [r5, 0xC] orrs r0, r1 strh r0, [r2] ldr r4, _080DE24C @ =gSprites movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x50 strh r1, [r0, 0x2E] ldr r0, _080DE250 @ =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080DE258 movs r2, 0x8 ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _080DE254 @ =0x0000ff70 strh r1, [r0, 0x30] movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x70 b _080DE276 .align 2, 0 _080DE244: .4byte REG_BLDCNT _080DE248: .4byte REG_BLDALPHA _080DE24C: .4byte gSprites _080DE250: .4byte gAnimBankTarget _080DE254: .4byte 0x0000ff70 _080DE258: movs r2, 0x8 ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x90 strh r1, [r0, 0x30] movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _080DE2C8 @ =0x0000ff90 _080DE276: strh r1, [r0, 0x32] ldr r4, _080DE2CC @ =gSprites movs r2, 0x8 ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r2, 0 strh r2, [r0, 0x34] movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 strh r2, [r0, 0x36] movs r2, 0x8 ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _080DE2D0 @ =SpriteCallbackDummy bl StoreSpriteCallbackInData movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _080DE2D4 @ =sub_8078394 str r1, [r0] ldr r0, _080DE2D8 @ =sub_80DE2DC str r0, [r5] _080DE2C0: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080DE2C8: .4byte 0x0000ff90 _080DE2CC: .4byte gSprites _080DE2D0: .4byte SpriteCallbackDummy _080DE2D4: .4byte sub_8078394 _080DE2D8: .4byte sub_80DE2DC thumb_func_end sub_80DE1B0 thumb_func_start sub_80DE2DC sub_80DE2DC: @ 80DE2DC push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080DE300 @ =gTasks adds r4, r0, r1 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080DE37C cmp r0, 0x1 bgt _080DE304 cmp r0, 0 beq _080DE30A b _080DE3A6 .align 2, 0 _080DE300: .4byte gTasks _080DE304: cmp r0, 0x2 beq _080DE3A0 b _080DE3A6 _080DE30A: ldrh r1, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0xA] movs r0, 0x3 ands r0, r1 strh r0, [r4, 0x12] cmp r0, 0x1 bne _080DE328 ldrh r1, [r4, 0xC] movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0 ble _080DE328 subs r0, r1, 0x1 strh r0, [r4, 0xC] _080DE328: movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0x3 bne _080DE33E ldrh r1, [r4, 0xE] movs r2, 0xE ldrsh r0, [r4, r2] cmp r0, 0xF bgt _080DE33E adds r0, r1, 0x1 strh r0, [r4, 0xE] _080DE33E: ldr r2, _080DE374 @ =REG_BLDALPHA ldrh r0, [r4, 0xE] lsls r0, 8 ldrh r1, [r4, 0xC] orrs r0, r1 strh r0, [r2] ldr r1, [r4, 0xC] movs r0, 0x80 lsls r0, 13 cmp r1, r0 bne _080DE3A6 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x50 ble _080DE3A6 movs r2, 0x8 ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _080DE378 @ =gSprites adds r0, r1 bl obj_delete_but_dont_free_vram movs r0, 0x1 strh r0, [r4, 0x10] b _080DE3A6 .align 2, 0 _080DE374: .4byte REG_BLDALPHA _080DE378: .4byte gSprites _080DE37C: ldrh r0, [r4, 0x14] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x14] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080DE3A6 ldr r0, _080DE39C @ =REG_BLDCNT strh r1, [r0] adds r0, 0x2 strh r1, [r0] ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] b _080DE3A6 .align 2, 0 _080DE39C: .4byte REG_BLDCNT _080DE3A0: adds r0, r2, 0 bl DestroyAnimVisualTask _080DE3A6: pop {r4} pop {r0} bx r0 thumb_func_end sub_80DE2DC thumb_func_start sub_80DE3AC sub_80DE3AC: @ 80DE3AC push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r2, _080DE3CC @ =gTasks adds r1, r2 movs r2, 0 strh r2, [r1, 0x26] ldr r2, _080DE3D0 @ =sub_80DE3D4 str r2, [r1] bl _call_via_r2 pop {r0} bx r0 .align 2, 0 _080DE3CC: .4byte gTasks _080DE3D0: .4byte sub_80DE3D4 thumb_func_end sub_80DE3AC thumb_func_start sub_80DE3D4 sub_80DE3D4: @ 80DE3D4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, _080DE40C @ =gTasks adds r5, r0, r1 ldr r0, _080DE410 @ =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 ldrsh r0, [r5, r1] cmp r0, 0x4 bls _080DE400 b _080DE604 _080DE400: lsls r0, 2 ldr r1, _080DE414 @ =_080DE418 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080DE40C: .4byte gTasks _080DE410: .4byte gAnimBankTarget _080DE414: .4byte _080DE418 .align 2, 0 _080DE418: .4byte _080DE42C .4byte _080DE500 .4byte _080DE544 .4byte _080DE5AC .4byte _080DE5E0 _080DE42C: ldr r7, _080DE460 @ =0x00002771 adds r0, r7, 0 bl AllocSpritePalette lsls r0, 24 lsrs r0, 24 movs r2, 0 mov r8, r2 strh r0, [r5, 0x24] cmp r0, 0xFF beq _080DE456 movs r0, 0x1 bl duplicate_obj_of_side_rel2move_in_transparent_mode strh r0, [r5, 0x8] lsls r0, 16 cmp r0, 0 bge _080DE464 adds r0, r7, 0 bl FreeSpritePaletteByTag _080DE456: adds r0, r4, 0 bl DestroyAnimVisualTask b _080DE60A .align 2, 0 _080DE460: .4byte 0x00002771 _080DE464: ldr r4, _080DE4E4 @ =gSprites movs r3, 0x8 ldrsh r0, [r5, r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrh r2, [r5, 0x24] lsls r2, 4 ldrb r3, [r1, 0x5] movs r0, 0xF ands r0, r3 orrs r0, r2 strb r0, [r1, 0x5] movs r1, 0x8 ldrsh r0, [r5, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0x1] movs r0, 0xD negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] movs r2, 0x8 ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0, 0x5] movs r2, 0xC orrs r1, r2 strb r1, [r0, 0x5] mov r3, r8 strh r3, [r5, 0xA] strh r3, [r5, 0xC] movs r0, 0x10 strh r0, [r5, 0xE] movs r0, 0x1 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] movs r0, 0x22 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r0, [r0, 0x5] lsrs r0, 4 adds r0, 0x10 lsls r0, 4 strh r0, [r5, 0x10] cmp r6, 0x1 bne _080DE4EC movs r2, 0x80 lsls r2, 19 ldrh r1, [r2] ldr r0, _080DE4E8 @ =0x0000fdff b _080DE4F4 .align 2, 0 _080DE4E4: .4byte gSprites _080DE4E8: .4byte 0x0000fdff _080DE4EC: movs r2, 0x80 lsls r2, 19 ldrh r1, [r2] ldr r0, _080DE4FC @ =0x0000fbff _080DE4F4: ands r0, r1 strh r0, [r2] b _080DE604 .align 2, 0 _080DE4FC: .4byte 0x0000fbff _080DE500: movs r1, 0x24 ldrsh r0, [r5, r1] adds r0, 0x10 lsls r0, 4 strh r0, [r5, 0x24] movs r2, 0x10 ldrsh r0, [r5, r2] lsls r0, 1 ldr r1, _080DE534 @ =gPlttBufferUnfaded adds r0, r1 movs r3, 0x24 ldrsh r1, [r5, r3] lsls r1, 1 ldr r2, _080DE538 @ =gPlttBufferFaded adds r1, r2 ldr r2, _080DE53C @ =REG_BG0CNT bl CpuSet ldrh r0, [r5, 0x10] ldr r3, _080DE540 @ =0x00003c0d movs r1, 0x10 movs r2, 0xA bl BlendPalette b _080DE604 .align 2, 0 _080DE534: .4byte gPlttBufferUnfaded _080DE538: .4byte gPlttBufferFaded _080DE53C: .4byte REG_BG0CNT _080DE540: .4byte 0x00003c0d _080DE544: ldr r2, _080DE580 @ =gSprites movs r0, 0x22 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x26] ldrh r0, [r0, 0x22] adds r1, r0 subs r1, 0x20 lsls r1, 16 lsrs r2, r1, 16 cmp r1, 0 bge _080DE564 movs r2, 0 _080DE564: cmp r6, 0x1 bne _080DE584 lsls r0, r2, 24 lsrs r0, 24 adds r1, r2, 0 adds r1, 0x40 lsls r1, 24 lsrs r1, 24 movs r2, 0 str r2, [sp] movs r2, 0x4 str r2, [sp, 0x4] str r6, [sp, 0x8] b _080DE59C .align 2, 0 _080DE580: .4byte gSprites _080DE584: lsls r0, r2, 24 lsrs r0, 24 adds r1, r2, 0 adds r1, 0x40 lsls r1, 24 lsrs r1, 24 movs r2, 0 str r2, [sp] movs r2, 0x8 str r2, [sp, 0x4] movs r2, 0x1 str r2, [sp, 0x8] _080DE59C: movs r2, 0x2 movs r3, 0x6 bl ScanlineEffect_InitWave lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] b _080DE604 _080DE5AC: cmp r6, 0x1 bne _080DE5C0 ldr r1, _080DE5B8 @ =REG_BLDCNT ldr r2, _080DE5BC @ =0x00003f42 adds r0, r2, 0 b _080DE5C6 .align 2, 0 _080DE5B8: .4byte REG_BLDCNT _080DE5BC: .4byte 0x00003f42 _080DE5C0: ldr r1, _080DE5D4 @ =REG_BLDCNT ldr r3, _080DE5D8 @ =0x00003f44 adds r0, r3, 0 _080DE5C6: strh r0, [r1] ldr r1, _080DE5DC @ =REG_BLDALPHA movs r2, 0x80 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] b _080DE604 .align 2, 0 _080DE5D4: .4byte REG_BLDCNT _080DE5D8: .4byte 0x00003f44 _080DE5DC: .4byte REG_BLDALPHA _080DE5E0: cmp r6, 0x1 bne _080DE5F0 movs r0, 0x80 lsls r0, 19 ldrh r1, [r0] movs r3, 0x80 lsls r3, 2 b _080DE5FA _080DE5F0: movs r0, 0x80 lsls r0, 19 ldrh r1, [r0] movs r3, 0x80 lsls r3, 3 _080DE5FA: adds r2, r3, 0 orrs r1, r2 strh r1, [r0] ldr r0, _080DE618 @ =sub_80DE61C str r0, [r5] _080DE604: ldrh r0, [r5, 0x26] adds r0, 0x1 strh r0, [r5, 0x26] _080DE60A: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DE618: .4byte sub_80DE61C thumb_func_end sub_80DE3D4 thumb_func_start sub_80DE61C sub_80DE61C: @ 80DE61C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080DE6A0 @ =gTasks adds r4, r0, r1 ldrh r1, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0xA] movs r0, 0x1 ands r0, r1 strh r0, [r4, 0x12] cmp r0, 0 bne _080DE654 ldr r1, _080DE6A4 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] movs r1, 0x12 bl __divsi3 strh r0, [r4, 0xC] _080DE654: movs r2, 0x12 ldrsh r0, [r4, r2] cmp r0, 0x1 bne _080DE676 ldr r1, _080DE6A4 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] movs r1, 0x12 bl __divsi3 movs r1, 0x10 subs r1, r0 strh r1, [r4, 0xE] _080DE676: ldr r2, _080DE6A8 @ =REG_BLDALPHA ldrh r0, [r4, 0xE] lsls r0, 8 ldrh r1, [r4, 0xC] orrs r0, r1 strh r0, [r2] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0x80 bne _080DE698 movs r0, 0 strh r0, [r4, 0x26] ldr r1, _080DE6AC @ =sub_80DE6B0 str r1, [r4] adds r0, r5, 0 bl _call_via_r1 _080DE698: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080DE6A0: .4byte gTasks _080DE6A4: .4byte gSineTable _080DE6A8: .4byte REG_BLDALPHA _080DE6AC: .4byte sub_80DE6B0 thumb_func_end sub_80DE61C thumb_func_start sub_80DE6B0 sub_80DE6B0: @ 80DE6B0 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080DE6E0 @ =gTasks adds r4, r0, r1 ldr r0, _080DE6E4 @ =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080DE72C cmp r0, 0x1 bgt _080DE6E8 cmp r0, 0 beq _080DE6EE b _080DE7AA .align 2, 0 _080DE6E0: .4byte gTasks _080DE6E4: .4byte gAnimBankTarget _080DE6E8: cmp r0, 0x2 beq _080DE740 b _080DE7AA _080DE6EE: ldr r1, _080DE710 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] cmp r6, 0x1 bne _080DE718 movs r2, 0x80 lsls r2, 19 ldrh r1, [r2] ldr r0, _080DE714 @ =0x0000fdff b _080DE720 .align 2, 0 _080DE710: .4byte gScanlineEffect _080DE714: .4byte 0x0000fdff _080DE718: movs r2, 0x80 lsls r2, 19 ldrh r1, [r2] ldr r0, _080DE728 @ =0x0000fbff _080DE720: ands r0, r1 strh r0, [r2] b _080DE7AA .align 2, 0 _080DE728: .4byte 0x0000fbff _080DE72C: ldrh r0, [r4, 0x10] ldr r3, _080DE73C @ =0x00003c0d movs r1, 0x10 movs r2, 0 bl BlendPalette b _080DE7AA .align 2, 0 _080DE73C: .4byte 0x00003c0d _080DE740: ldr r3, _080DE788 @ =gSprites movs r0, 0x24 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 bl obj_delete_but_dont_free_vram ldr r0, _080DE78C @ =0x00002771 bl FreeSpritePaletteByTag ldr r0, _080DE790 @ =REG_BLDCNT movs r1, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] cmp r6, 0x1 bne _080DE794 subs r0, 0x52 ldrh r1, [r0] movs r3, 0x80 lsls r3, 2 b _080DE79E .align 2, 0 _080DE788: .4byte gSprites _080DE78C: .4byte 0x00002771 _080DE790: .4byte REG_BLDCNT _080DE794: movs r0, 0x80 lsls r0, 19 ldrh r1, [r0] movs r3, 0x80 lsls r3, 3 _080DE79E: adds r2, r3, 0 orrs r1, r2 strh r1, [r0] adds r0, r5, 0 bl DestroyAnimVisualTask _080DE7AA: ldrh r0, [r4, 0x26] adds r0, 0x1 strh r0, [r4, 0x26] pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80DE6B0 thumb_func_start sub_80DE7B8 sub_80DE7B8: @ 80DE7B8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} adds r7, r0, 0 ldr r0, _080DE7F4 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080DE800 ldr r4, _080DE7F8 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl GetBankPosition lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 bl GetBankPosition lsls r0, 24 lsrs r0, 8 movs r2, 0xE0 lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 ldr r4, _080DE7FC @ =gAnimBankTarget b _080DE824 .align 2, 0 _080DE7F4: .4byte gBattleAnimArgs _080DE7F8: .4byte gAnimBankAttacker _080DE7FC: .4byte gAnimBankTarget _080DE800: ldr r4, _080DE8C8 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl GetBankPosition lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 bl GetBankPosition lsls r0, 24 lsrs r0, 8 movs r2, 0xE0 lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 ldr r4, _080DE8CC @ =gAnimBankAttacker _080DE824: ldrb r0, [r4] movs r1, 0 bl GetBankPosition lsls r0, 24 lsrs r0, 24 mov r10, r0 ldrb r0, [r4] movs r1, 0x1 bl GetBankPosition lsls r0, 24 lsrs r0, 8 movs r1, 0xE0 lsls r1, 13 adds r0, r1 lsrs r0, 16 mov r9, r0 mov r8, r5 mov r2, r9 subs r4, r2, r5 lsls r4, 16 lsrs r4, 16 lsls r0, r6, 4 strh r0, [r7, 0x2E] lsls r0, r5, 4 strh r0, [r7, 0x30] mov r1, r10 subs r0, r1, r6 lsls r0, 4 ldr r5, _080DE8D0 @ =gBattleAnimArgs movs r2, 0x2 ldrsh r1, [r5, r2] bl __divsi3 strh r0, [r7, 0x32] lsls r4, 16 asrs r4, 12 movs r0, 0x2 ldrsh r1, [r5, r0] adds r0, r4, 0 bl __divsi3 strh r0, [r7, 0x34] ldrh r0, [r5, 0x2] strh r0, [r7, 0x36] mov r1, r10 strh r1, [r7, 0x38] mov r2, r9 strh r2, [r7, 0x3A] movs r1, 0x36 ldrsh r0, [r7, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r7, 0x3C] ldrb r1, [r7, 0x5] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x8 orrs r0, r1 strb r0, [r7, 0x5] strh r6, [r7, 0x20] mov r2, r8 strh r2, [r7, 0x22] ldr r0, _080DE8D4 @ =sub_80DE8D8 str r0, [r7, 0x1C] adds r2, r7, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DE8C8: .4byte gAnimBankTarget _080DE8CC: .4byte gAnimBankAttacker _080DE8D0: .4byte gBattleAnimArgs _080DE8D4: .4byte sub_80DE8D8 thumb_func_end sub_80DE7B8 thumb_func_start sub_80DE8D8 sub_80DE8D8: @ 80DE8D8 push {r4,lr} adds r2, r0, 0 ldrh r3, [r2, 0x36] movs r1, 0x36 ldrsh r0, [r2, r1] cmp r0, 0 beq _080DE910 ldrh r0, [r2, 0x32] ldrh r4, [r2, 0x2E] adds r0, r4 strh r0, [r2, 0x2E] ldrh r1, [r2, 0x34] ldrh r4, [r2, 0x30] adds r1, r4 strh r1, [r2, 0x30] lsls r0, 16 asrs r0, 20 strh r0, [r2, 0x20] lsls r1, 16 asrs r1, 20 strh r1, [r2, 0x22] subs r0, r3, 0x1 strh r0, [r2, 0x36] lsls r0, 16 asrs r0, 16 cmp r0, 0 bne _080DE910 strh r0, [r2, 0x2E] _080DE910: pop {r4} pop {r0} bx r0 thumb_func_end sub_80DE8D8 thumb_func_start sub_80DE918 sub_80DE918: @ 80DE918 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080DEA68 @ =gTasks adds r1, r0 str r1, [sp] ldr r1, _080DEA6C @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r3, 0x80 lsls r3, 5 adds r0, r3, 0 strh r0, [r1] movs r0, 0 ldr r1, [sp] strh r0, [r1, 0x12] strh r0, [r1, 0x14] strh r0, [r1, 0x16] strh r0, [r1, 0x18] movs r0, 0x10 strh r0, [r1, 0x1A] ldr r2, _080DEA70 @ =gBattleAnimArgs ldrh r0, [r2] strh r0, [r1, 0x1C] ldr r4, _080DEA74 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] ldrb r0, [r4] movs r1, 0x3 bl sub_807A100 lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x8] bl IsContest lsls r0, 24 cmp r0, 0 beq _080DE988 b _080DEA88 _080DE988: movs r4, 0 _080DE98A: lsls r1, r4, 16 asrs r3, r1, 16 ldr r0, _080DEA74 @ =gAnimBankAttacker ldrb r2, [r0] str r1, [sp, 0x10] cmp r3, r2 beq _080DEA56 movs r0, 0x2 eors r2, r0 cmp r3, r2 beq _080DEA56 lsls r0, r4, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DEA56 ldr r6, [sp, 0x4] ldr r3, [sp, 0x8] lsls r0, r3, 16 asrs r7, r0, 16 ldr r0, _080DEA78 @ =gSpriteTemplate_83DAF08 adds r1, r6, 0 adds r2, r7, 0 movs r3, 0x37 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r8, r0 cmp r0, 0x40 beq _080DEA56 adds r0, r4, 0 movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 mov r10, r0 adds r0, r4, 0 movs r1, 0x3 bl sub_807A100 lsls r0, 16 lsrs r0, 16 mov r9, r0 mov r0, r8 lsls r5, r0, 4 add r5, r8 lsls r5, 2 ldr r1, _080DEA7C @ =gSprites adds r4, r5, r1 lsls r0, r6, 4 strh r0, [r4, 0x2E] lsls r0, r7, 4 strh r0, [r4, 0x30] mov r2, r10 subs r0, r2, r6 lsls r0, 4 ldr r3, _080DEA70 @ =gBattleAnimArgs movs r2, 0x2 ldrsh r1, [r3, r2] bl __divsi3 strh r0, [r4, 0x32] mov r3, r9 lsls r0, r3, 16 asrs r0, 16 subs r0, r7 lsls r0, 4 ldr r2, _080DEA70 @ =gBattleAnimArgs movs r3, 0x2 ldrsh r1, [r2, r3] bl __divsi3 strh r0, [r4, 0x34] ldr r1, _080DEA70 @ =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r4, 0x36] mov r2, r10 strh r2, [r4, 0x38] mov r3, r9 strh r3, [r4, 0x3A] ldr r0, _080DEA80 @ =gSprites + 0x1C adds r5, r0 ldr r0, _080DEA84 @ =sub_80DE8D8 str r0, [r5] ldr r2, [sp] movs r3, 0x20 ldrsh r1, [r2, r3] adds r1, 0xD lsls r1, 1 adds r0, r2, 0 adds r0, 0x8 adds r0, r1 mov r1, r8 strh r1, [r0] ldrh r0, [r2, 0x20] adds r0, 0x1 strh r0, [r2, 0x20] _080DEA56: ldr r2, [sp, 0x10] movs r3, 0x80 lsls r3, 9 adds r0, r2, r3 lsrs r4, r0, 16 asrs r0, 16 cmp r0, 0x3 ble _080DE98A b _080DEB0C .align 2, 0 _080DEA68: .4byte gTasks _080DEA6C: .4byte REG_BLDCNT _080DEA70: .4byte gBattleAnimArgs _080DEA74: .4byte gAnimBankAttacker _080DEA78: .4byte gSpriteTemplate_83DAF08 _080DEA7C: .4byte gSprites _080DEA80: .4byte gSprites + 0x1C _080DEA84: .4byte sub_80DE8D8 _080DEA88: ldr r0, _080DEB24 @ =gSpriteTemplate_83DAF08 ldr r7, [sp, 0x4] ldr r2, [sp, 0x8] lsls r1, r2, 16 asrs r1, 16 str r1, [sp, 0xC] adds r1, r7, 0 ldr r2, [sp, 0xC] movs r3, 0x37 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r8, r0 cmp r0, 0x40 beq _080DEB0C movs r3, 0x30 mov r10, r3 movs r0, 0x28 mov r9, r0 ldr r6, _080DEB28 @ =gSprites mov r1, r8 lsls r5, r1, 4 add r5, r8 lsls r5, 2 adds r4, r5, r6 lsls r0, r7, 4 strh r0, [r4, 0x2E] ldr r2, [sp, 0xC] lsls r0, r2, 4 strh r0, [r4, 0x30] subs r0, r3, r7 lsls r0, 4 ldr r3, _080DEB2C @ =gBattleAnimArgs movs r2, 0x2 ldrsh r1, [r3, r2] bl __divsi3 strh r0, [r4, 0x32] mov r3, r9 ldr r1, [sp, 0xC] subs r0, r3, r1 lsls r0, 4 ldr r2, _080DEB2C @ =gBattleAnimArgs movs r3, 0x2 ldrsh r1, [r2, r3] bl __divsi3 strh r0, [r4, 0x34] ldr r1, _080DEB2C @ =gBattleAnimArgs ldrh r0, [r1, 0x2] strh r0, [r4, 0x36] mov r2, r10 strh r2, [r4, 0x38] mov r3, r9 strh r3, [r4, 0x3A] adds r6, 0x1C adds r5, r6 ldr r0, _080DEB30 @ =sub_80DE8D8 str r0, [r5] mov r1, r8 ldr r0, [sp] strh r1, [r0, 0x22] movs r0, 0x1 ldr r2, [sp] strh r0, [r2, 0x20] _080DEB0C: ldr r0, _080DEB34 @ =sub_80DEB38 ldr r3, [sp] str r0, [r3] add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DEB24: .4byte gSpriteTemplate_83DAF08 _080DEB28: .4byte gSprites _080DEB2C: .4byte gBattleAnimArgs _080DEB30: .4byte sub_80DE8D8 _080DEB34: .4byte sub_80DEB38 thumb_func_end sub_80DE918 thumb_func_start sub_80DEB38 sub_80DEB38: @ 80DEB38 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080DEB5C @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _080DEBEE cmp r1, 0x1 bgt _080DEB60 cmp r1, 0 beq _080DEB6E b _080DECA4 .align 2, 0 _080DEB5C: .4byte gTasks _080DEB60: cmp r1, 0x2 bne _080DEB66 b _080DEC80 _080DEB66: cmp r1, 0x3 bne _080DEB6C b _080DEC94 _080DEB6C: b _080DECA4 _080DEB6E: movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0 bne _080DEBCE ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080DEBCE strh r1, [r4, 0x12] ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080DEBA4 ldrh r1, [r4, 0x18] movs r2, 0x18 ldrsh r0, [r4, r2] cmp r0, 0xF bgt _080DEBB2 adds r0, r1, 0x1 strh r0, [r4, 0x18] b _080DEBB2 _080DEBA4: ldrh r1, [r4, 0x1A] movs r2, 0x1A ldrsh r0, [r4, r2] cmp r0, 0 beq _080DEBB2 subs r0, r1, 0x1 strh r0, [r4, 0x1A] _080DEBB2: ldr r2, _080DEBE0 @ =REG_BLDALPHA ldrh r0, [r4, 0x1A] lsls r0, 8 ldrh r1, [r4, 0x18] orrs r0, r1 strh r0, [r2] movs r1, 0x16 ldrsh r0, [r4, r1] cmp r0, 0x17 ble _080DEBCE movs r0, 0 strh r0, [r4, 0x16] movs r0, 0x1 strh r0, [r4, 0x14] _080DEBCE: ldrh r1, [r4, 0x1C] movs r2, 0x1C ldrsh r0, [r4, r2] cmp r0, 0 beq _080DEBE4 subs r0, r1, 0x1 strh r0, [r4, 0x1C] b _080DECA4 .align 2, 0 _080DEBE0: .4byte REG_BLDALPHA _080DEBE4: movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 beq _080DECA4 b _080DEC8C _080DEBEE: ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080DECA4 movs r0, 0 strh r0, [r4, 0x12] ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] ands r0, r1 lsls r0, 16 cmp r0, 0 beq _080DEC1E ldrh r1, [r4, 0x18] movs r2, 0x18 ldrsh r0, [r4, r2] cmp r0, 0 beq _080DEC2C subs r0, r1, 0x1 strh r0, [r4, 0x18] b _080DEC2C _080DEC1E: ldrh r1, [r4, 0x1A] movs r2, 0x1A ldrsh r0, [r4, r2] cmp r0, 0xF bgt _080DEC2C adds r0, r1, 0x1 strh r0, [r4, 0x1A] _080DEC2C: ldr r2, _080DEC48 @ =REG_BLDALPHA ldrh r0, [r4, 0x1A] lsls r0, 8 ldrh r1, [r4, 0x18] orrs r0, r1 strh r0, [r2] ldr r1, [r4, 0x18] movs r0, 0x80 lsls r0, 13 cmp r1, r0 bne _080DECA4 movs r5, 0 b _080DEC70 .align 2, 0 _080DEC48: .4byte REG_BLDALPHA _080DEC4C: adds r1, r5, 0 adds r1, 0xD lsls r1, 1 adds r0, r4, 0 adds r0, 0x8 adds r0, r1 movs r2, 0 ldrsh r1, [r0, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _080DEC7C @ =gSprites adds r0, r1 bl DestroySprite adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 _080DEC70: movs r1, 0x20 ldrsh r0, [r4, r1] cmp r5, r0 blt _080DEC4C b _080DEC8C .align 2, 0 _080DEC7C: .4byte gSprites _080DEC80: ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] lsls r0, 16 cmp r0, 0 ble _080DECA4 _080DEC8C: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080DECA4 _080DEC94: ldr r0, _080DECAC @ =REG_BLDCNT movs r1, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, r2, 0 bl DestroyAnimVisualTask _080DECA4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080DECAC: .4byte REG_BLDCNT thumb_func_end sub_80DEB38 thumb_func_start sub_80DECB0 sub_80DECB0: @ 80DECB0 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _080DECF8 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080DECFC @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080DED00 @ =REG_WININ ldr r2, _080DED04 @ =0x00003f3f adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 subs r2, 0x20 adds r0, r2, 0 strh r0, [r1] adds r1, 0x6 movs r0, 0xC8 strh r0, [r1] adds r1, 0x4 movs r0, 0x10 strh r0, [r1] ldr r0, _080DED08 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080DECF4 bl IsContest lsls r0, 24 cmp r0, 0 beq _080DED0C _080DECF4: movs r6, 0x28 b _080DED0E .align 2, 0 _080DECF8: .4byte gBattle_WIN0H _080DECFC: .4byte gBattle_WIN0V _080DED00: .4byte REG_WININ _080DED04: .4byte 0x00003f3f _080DED08: .4byte gAnimBankAttacker _080DED0C: movs r6, 0xC8 _080DED0E: ldr r1, _080DED4C @ =gBattle_WIN0H lsls r3, r6, 16 asrs r2, r3, 16 lsls r0, r2, 8 orrs r0, r2 strh r0, [r1] ldr r1, _080DED50 @ =gBattle_WIN0V movs r5, 0x28 ldr r0, _080DED54 @ =0x00002828 strh r0, [r1] lsrs r3, 16 movs r1, 0xF0 subs r1, r2 movs r4, 0x48 ldr r2, _080DED58 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r2 strh r3, [r0, 0xA] strh r1, [r0, 0xC] strh r5, [r0, 0xE] strh r4, [r0, 0x10] strh r6, [r0, 0x12] strh r5, [r0, 0x14] ldr r1, _080DED5C @ =sub_80DED60 str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DED4C: .4byte gBattle_WIN0H _080DED50: .4byte gBattle_WIN0V _080DED54: .4byte 0x00002828 _080DED58: .4byte gTasks _080DED5C: .4byte sub_80DED60 thumb_func_end sub_80DECB0 thumb_func_start sub_80DED60 sub_80DED60: @ 80DED60 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 lsls r0, 24 lsrs r0, 24 ldr r2, _080DEE80 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r1, [r4, 0x8] adds r0, r1, 0x1 strh r0, [r4, 0x8] ldrh r5, [r4, 0xA] ldrh r7, [r4, 0xC] ldrh r0, [r4, 0xE] mov r10, r0 ldrh r2, [r4, 0x10] str r2, [sp, 0xC] ldrh r0, [r4, 0x12] ldrh r2, [r4, 0x14] mov r8, r2 lsls r1, 16 asrs r6, r1, 16 cmp r6, 0xF ble _080DED9C b _080DEE8C _080DED9C: lsls r0, 16 asrs r0, 16 bl __floatsidf str r0, [sp, 0x10] str r1, [sp, 0x14] lsls r0, r5, 16 asrs r0, 16 bl __floatsidf ldr r2, _080DEE84 @ =0x3fb00000 ldr r3, _080DEE88 @ =0x00000000 bl __muldf3 adds r5, r1, 0 adds r4, r0, 0 adds r0, r6, 0 bl __floatsidf str r0, [sp, 0x18] str r1, [sp, 0x1C] adds r1, r5, 0 adds r0, r4, 0 ldr r2, [sp, 0x18] ldr r3, [sp, 0x1C] bl __muldf3 adds r3, r1, 0 adds r2, r0, 0 ldr r0, [sp, 0x10] ldr r1, [sp, 0x14] bl __subdf3 bl __fixunsdfsi lsls r0, 16 lsrs r0, 16 mov r9, r0 lsls r0, r7, 16 asrs r0, 16 bl __floatsidf ldr r2, _080DEE84 @ =0x3fb00000 ldr r3, _080DEE88 @ =0x00000000 bl __muldf3 ldr r2, [sp, 0x18] ldr r3, [sp, 0x1C] bl __muldf3 adds r3, r1, 0 adds r2, r0, 0 ldr r0, [sp, 0x10] ldr r1, [sp, 0x14] bl __adddf3 bl __fixunsdfsi lsls r0, 16 lsrs r7, r0, 16 mov r1, r8 lsls r0, r1, 16 asrs r0, 16 bl __floatsidf adds r5, r1, 0 adds r4, r0, 0 mov r2, r10 lsls r0, r2, 16 asrs r0, 16 bl __floatsidf ldr r2, _080DEE84 @ =0x3fb00000 ldr r3, _080DEE88 @ =0x00000000 bl __muldf3 ldr r2, [sp, 0x18] ldr r3, [sp, 0x1C] bl __muldf3 adds r3, r1, 0 adds r2, r0, 0 adds r1, r5, 0 adds r0, r4, 0 bl __subdf3 bl __fixunsdfsi lsls r0, 16 lsrs r6, r0, 16 ldr r1, [sp, 0xC] lsls r0, r1, 16 asrs r0, 16 bl __floatsidf ldr r2, _080DEE84 @ =0x3fb00000 ldr r3, _080DEE88 @ =0x00000000 bl __muldf3 ldr r2, [sp, 0x18] ldr r3, [sp, 0x1C] bl __muldf3 adds r3, r1, 0 adds r2, r0, 0 adds r1, r5, 0 adds r0, r4, 0 bl __adddf3 bl __fixunsdfsi lsls r0, 16 lsrs r5, r0, 16 b _080DEEBA .align 2, 0 _080DEE80: .4byte gTasks _080DEE84: .4byte 0x3fb00000 _080DEE88: .4byte 0x00000000 _080DEE8C: movs r2, 0 mov r9, r2 movs r7, 0xF0 movs r6, 0 movs r5, 0x70 str r6, [sp] str r6, [sp, 0x4] str r6, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r3, 0 bl sub_80791A8 lsls r0, 16 lsrs r0, 16 str r6, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0x10 bl BeginNormalPaletteFade ldr r0, _080DEEDC @ =sub_80DEEE8 str r0, [r4] _080DEEBA: ldr r1, _080DEEE0 @ =gBattle_WIN0H mov r2, r9 lsls r0, r2, 8 orrs r7, r0 strh r7, [r1] ldr r1, _080DEEE4 @ =gBattle_WIN0V lsls r0, r6, 8 orrs r5, r0 strh r5, [r1] add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DEEDC: .4byte sub_80DEEE8 _080DEEE0: .4byte gBattle_WIN0H _080DEEE4: .4byte gBattle_WIN0V thumb_func_end sub_80DED60 thumb_func_start sub_80DEEE8 sub_80DEEE8: @ 80DEEE8 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r0, _080DEF28 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 bne _080DEF20 ldr r0, _080DEF2C @ =gBattle_WIN0H strh r2, [r0] ldr r0, _080DEF30 @ =gBattle_WIN0V strh r2, [r0] ldr r0, _080DEF34 @ =REG_WININ ldr r4, _080DEF38 @ =0x00003f3f adds r1, r4, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x6 strh r2, [r0] adds r0, 0x4 strh r2, [r0] adds r0, r3, 0 bl DestroyAnimVisualTask _080DEF20: pop {r4} pop {r0} bx r0 .align 2, 0 _080DEF28: .4byte gPaletteFade _080DEF2C: .4byte gBattle_WIN0H _080DEF30: .4byte gBattle_WIN0V _080DEF34: .4byte REG_WININ _080DEF38: .4byte 0x00003f3f thumb_func_end sub_80DEEE8 thumb_func_start sub_80DEF3C sub_80DEF3C: @ 80DEF3C push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r0, _080DEF68 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080DEF70 movs r2, 0x18 ldr r3, _080DEF6C @ =0x0000fffe ldrb r0, [r4, 0x3] movs r1, 0x3F negs r1, r1 ands r1, r0 movs r0, 0x10 orrs r1, r0 strb r1, [r4, 0x3] b _080DEF74 .align 2, 0 _080DEF68: .4byte gAnimBankAttacker _080DEF6C: .4byte 0x0000fffe _080DEF70: ldr r2, _080DEF90 @ =0x0000ffe8 movs r3, 0x2 _080DEF74: lsls r0, r2, 16 asrs r0, 16 ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] strh r3, [r4, 0x30] movs r0, 0x3C strh r0, [r4, 0x2E] ldr r0, _080DEF94 @ =sub_80DEF98 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080DEF90: .4byte 0x0000ffe8 _080DEF94: .4byte sub_80DEF98 thumb_func_end sub_80DEF3C thumb_func_start sub_80DEF98 sub_80DEF98: @ 80DEF98 push {r4,lr} adds r3, r0, 0 ldrh r1, [r3, 0x2E] movs r2, 0x2E ldrsh r0, [r3, r2] cmp r0, 0 ble _080DEFAA subs r0, r1, 0x1 b _080DF00E _080DEFAA: ldrh r0, [r3, 0x30] ldrh r4, [r3, 0x24] adds r1, r0, r4 strh r1, [r3, 0x24] adds r0, r1, 0x7 lsls r0, 16 lsrs r0, 16 cmp r0, 0xE bls _080DF010 ldrh r0, [r3, 0x20] adds r0, r1 strh r0, [r3, 0x20] movs r0, 0 strh r0, [r3, 0x24] ldrh r2, [r3, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x8 ldr r4, _080DEFFC @ =0x000003ff adds r0, r4, 0 ands r1, r0 ldr r0, _080DF000 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] ldrh r0, [r3, 0x32] adds r0, 0x1 strh r0, [r3, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _080DF00C movs r0, 0x1E strh r0, [r3, 0x2E] ldr r0, _080DF004 @ =sub_80782D8 str r0, [r3, 0x1C] ldr r1, _080DF008 @ =sub_80DF018 adds r0, r3, 0 bl StoreSpriteCallbackInData b _080DF010 .align 2, 0 _080DEFFC: .4byte 0x000003ff _080DF000: .4byte 0xfffffc00 _080DF004: .4byte sub_80782D8 _080DF008: .4byte sub_80DF018 _080DF00C: movs r0, 0x28 _080DF00E: strh r0, [r3, 0x2E] _080DF010: pop {r4} pop {r0} bx r0 thumb_func_end sub_80DEF98 thumb_func_start sub_80DF018 sub_80DF018: @ 80DF018 push {r4,lr} adds r3, r0, 0 movs r0, 0x2E ldrsh r2, [r3, r0] cmp r2, 0 bne _080DF044 ldr r1, _080DF040 @ =REG_BLDCNT movs r4, 0xFD lsls r4, 6 adds r0, r4, 0 strh r0, [r1] adds r1, 0x2 movs r0, 0x10 strh r0, [r1] ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] strh r2, [r3, 0x30] strh r2, [r3, 0x32] b _080DF082 .align 2, 0 _080DF040: .4byte REG_BLDCNT _080DF044: ldrh r1, [r3, 0x30] movs r2, 0x30 ldrsh r0, [r3, r2] cmp r0, 0x1 bgt _080DF054 adds r0, r1, 0x1 strh r0, [r3, 0x30] b _080DF082 _080DF054: movs r0, 0 strh r0, [r3, 0x30] ldrh r0, [r3, 0x32] adds r0, 0x1 strh r0, [r3, 0x32] ldr r2, _080DF088 @ =REG_BLDALPHA movs r1, 0x10 subs r1, r0 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r4, 0x32 ldrsh r0, [r3, r4] cmp r0, 0x10 bne _080DF082 adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080DF08C @ =sub_80DF090 str r0, [r3, 0x1C] _080DF082: pop {r4} pop {r0} bx r0 .align 2, 0 _080DF088: .4byte REG_BLDALPHA _080DF08C: .4byte sub_80DF090 thumb_func_end sub_80DF018 thumb_func_start sub_80DF090 sub_80DF090: @ 80DF090 push {lr} ldr r1, _080DF0AC @ =REG_BLDCNT movs r2, 0 strh r2, [r1] adds r1, 0x2 strh r2, [r1] ldr r1, _080DF0B0 @ =gBattle_WIN0H strh r2, [r1] ldr r1, _080DF0B4 @ =gBattle_WIN0V strh r2, [r1] bl DestroyAnimSprite pop {r0} bx r0 .align 2, 0 _080DF0AC: .4byte REG_BLDCNT _080DF0B0: .4byte gBattle_WIN0H _080DF0B4: .4byte gBattle_WIN0V thumb_func_end sub_80DF090 thumb_func_start sub_80DF0B8 sub_80DF0B8: @ 80DF0B8 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0xC bl Sin strh r0, [r4, 0x24] ldr r0, _080DF120 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080DF0DC ldrh r0, [r4, 0x24] negs r0, r0 strh r0, [r4, 0x24] _080DF0DC: ldrh r0, [r4, 0x2E] adds r0, 0x6 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 ldrh r1, [r4, 0x30] adds r0, r1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 24 negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080DF12C ldr r0, _080DF124 @ =0x0000050b strh r0, [r4, 0x3A] ldr r1, _080DF128 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x3A] strh r0, [r1] b _080DF17E .align 2, 0 _080DF120: .4byte gAnimBankAttacker _080DF124: .4byte 0x0000050b _080DF128: .4byte REG_BLDCNT _080DF12C: cmp r0, 0x1E ble _080DF17E ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] ldrh r1, [r4, 0x3A] lsls r0, r1, 16 asrs r0, 24 lsls r0, 16 movs r2, 0xFF ands r2, r1 movs r1, 0x80 lsls r1, 9 adds r0, r1 lsrs r3, r0, 16 cmp r3, 0x10 bls _080DF150 movs r3, 0x10 _080DF150: subs r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r0, 0 bge _080DF15C movs r2, 0 _080DF15C: ldr r1, _080DF184 @ =REG_BLDALPHA lsls r0, r3, 8 orrs r0, r2 strh r0, [r1] strh r0, [r4, 0x3A] cmp r3, 0x10 bne _080DF17E cmp r2, 0 bne _080DF17E adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080DF188 @ =sub_80DF18C str r0, [r4, 0x1C] _080DF17E: pop {r4} pop {r0} bx r0 .align 2, 0 _080DF184: .4byte REG_BLDALPHA _080DF188: .4byte sub_80DF18C thumb_func_end sub_80DF0B8 thumb_func_start sub_80DF18C sub_80DF18C: @ 80DF18C push {lr} ldr r1, _080DF1A0 @ =REG_BLDCNT movs r2, 0 strh r2, [r1] adds r1, 0x2 strh r2, [r1] bl DestroyAnimSprite pop {r0} bx r0 .align 2, 0 _080DF1A0: .4byte REG_BLDCNT thumb_func_end sub_80DF18C thumb_func_start sub_80DF1A4 sub_80DF1A4: @ 80DF1A4 push {r4-r6,lr} mov r6, r8 push {r6} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, _080DF23C @ =gTasks adds r4, r0 movs r6, 0 strh r6, [r4, 0x8] movs r0, 0x10 mov r8, r0 mov r2, r8 strh r2, [r4, 0xA] ldr r5, _080DF240 @ =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1A] ldrb r0, [r5] bl sub_8077FC0 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] ldrb r0, [r5] movs r1, 0x1 bl sub_807A100 lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 adds r1, r0 asrs r1, 1 adds r1, 0x8 strh r1, [r4, 0x1E] strh r6, [r4, 0x16] ldrb r0, [r5] bl sub_8079ED4 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x12] ldrb r0, [r5] bl sub_8079E90 lsls r0, 24 lsrs r0, 24 subs r0, 0x2 strh r0, [r4, 0x14] strh r6, [r4, 0xE] mov r0, r8 strh r0, [r4, 0x10] ldr r1, _080DF244 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r2, 0x80 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] strh r6, [r4, 0x18] ldr r0, _080DF248 @ =sub_80DF24C str r0, [r4] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080DF23C: .4byte gTasks _080DF240: .4byte gAnimBankAttacker _080DF244: .4byte REG_BLDCNT _080DF248: .4byte sub_80DF24C thumb_func_end sub_80DF1A4 thumb_func_start sub_80DF24C sub_80DF24C: @ 80DF24C push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _080DF270 @ =gTasks adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x5 bls _080DF266 b _080DF3CC _080DF266: lsls r0, 2 ldr r1, _080DF274 @ =_080DF278 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080DF270: .4byte gTasks _080DF274: .4byte _080DF278 .align 2, 0 _080DF278: .4byte _080DF290 .4byte _080DF300 .4byte _080DF342 .4byte _080DF356 .4byte _080DF3AC .4byte _080DF3BC _080DF290: movs r6, 0 _080DF292: movs r2, 0x1A ldrsh r1, [r4, r2] movs r0, 0x1C ldrsh r2, [r4, r0] ldrb r3, [r4, 0x14] ldr r0, _080DF2F4 @ =gSpriteTemplate_83DAF80 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _080DF2E6 ldr r1, _080DF2F8 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r5, r0, r1 strh r7, [r5, 0x2E] ldr r0, _080DF2FC @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide movs r1, 0 lsls r0, 24 cmp r0, 0 bne _080DF2C8 movs r1, 0x1 _080DF2C8: strh r1, [r5, 0x30] movs r0, 0x2A muls r0, r6 movs r1, 0xFF ands r0, r1 strh r0, [r5, 0x32] ldrh r0, [r4, 0x1E] strh r0, [r5, 0x34] lsls r0, r6, 1 adds r0, r6 lsls r0, 1 strh r0, [r5, 0x38] ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] _080DF2E6: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0x5 bls _080DF292 b _080DF3B4 .align 2, 0 _080DF2F4: .4byte gSpriteTemplate_83DAF80 _080DF2F8: .4byte gSprites _080DF2FC: .4byte gAnimBankAttacker _080DF300: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080DF31E ldrh r1, [r4, 0xE] movs r2, 0xE ldrsh r0, [r4, r2] cmp r0, 0xD bgt _080DF32C adds r0, r1, 0x1 strh r0, [r4, 0xE] b _080DF32C _080DF31E: ldrh r1, [r4, 0x10] movs r2, 0x10 ldrsh r0, [r4, r2] cmp r0, 0x4 ble _080DF32C subs r0, r1, 0x1 strh r0, [r4, 0x10] _080DF32C: movs r1, 0xE ldrsh r0, [r4, r1] ldrh r3, [r4, 0xE] ldrh r2, [r4, 0x10] cmp r0, 0xE bne _080DF39C cmp r2, 0x4 bne _080DF39C movs r0, 0 strh r0, [r4, 0xA] b _080DF396 _080DF342: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1E ble _080DF3CC movs r0, 0 strh r0, [r4, 0xA] b _080DF3B4 _080DF356: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080DF374 ldrh r1, [r4, 0xE] movs r2, 0xE ldrsh r0, [r4, r2] cmp r0, 0 ble _080DF382 subs r0, r1, 0x1 strh r0, [r4, 0xE] b _080DF382 _080DF374: ldrh r1, [r4, 0x10] movs r2, 0x10 ldrsh r0, [r4, r2] cmp r0, 0xF bgt _080DF382 adds r0, r1, 0x1 strh r0, [r4, 0x10] _080DF382: movs r1, 0xE ldrsh r0, [r4, r1] ldrh r3, [r4, 0xE] ldrh r2, [r4, 0x10] cmp r0, 0 bne _080DF39C cmp r2, 0x10 bne _080DF39C movs r0, 0x1 strh r0, [r4, 0x18] _080DF396: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _080DF39C: ldr r1, _080DF3A8 @ =REG_BLDALPHA lsls r0, r2, 8 orrs r0, r3 strh r0, [r1] b _080DF3CC .align 2, 0 _080DF3A8: .4byte REG_BLDALPHA _080DF3AC: movs r2, 0x16 ldrsh r0, [r4, r2] cmp r0, 0 bne _080DF3CC _080DF3B4: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080DF3CC _080DF3BC: ldr r0, _080DF3D4 @ =REG_BLDCNT movs r1, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, r7, 0 bl DestroyAnimVisualTask _080DF3CC: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080DF3D4: .4byte REG_BLDCNT thumb_func_end sub_80DF24C thumb_func_start sub_80DF3D8 sub_80DF3D8: @ 80DF3D8 push {r4,lr} adds r4, r0, 0 movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0 bne _080DF3EA ldrh r0, [r4, 0x32] adds r0, 0x2 b _080DF3EE _080DF3EA: ldrh r0, [r4, 0x32] subs r0, 0x2 _080DF3EE: strh r0, [r4, 0x32] ldrh r1, [r4, 0x32] movs r0, 0xFF ands r0, r1 strh r0, [r4, 0x32] movs r2, 0x32 ldrsh r0, [r4, r2] movs r2, 0x34 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x32] subs r0, 0x41 lsls r0, 16 lsrs r0, 16 cmp r0, 0x7E bhi _080DF430 ldr r2, _080DF42C @ =gTasks movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x12] adds r1, 0x1 movs r0, 0x3 ands r1, r0 b _080DF444 .align 2, 0 _080DF42C: .4byte gTasks _080DF430: ldr r2, _080DF498 @ =gTasks movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r2, 0x3 ldrb r1, [r0, 0x12] ands r1, r2 _080DF444: lsls r1, 2 ldrb r2, [r4, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] movs r1, 0x38 ldrsh r0, [r4, r1] lsls r0, 3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3A] movs r2, 0x3A ldrsh r0, [r4, r2] movs r1, 0x7 bl Sin strh r0, [r4, 0x26] ldr r2, _080DF498 @ =gTasks movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r1, r0, r2 movs r2, 0x18 ldrsh r0, [r1, r2] cmp r0, 0 beq _080DF492 ldrh r0, [r1, 0x16] subs r0, 0x1 strh r0, [r1, 0x16] adds r0, r4, 0 bl DestroySprite _080DF492: pop {r4} pop {r0} bx r0 .align 2, 0 _080DF498: .4byte gTasks thumb_func_end sub_80DF3D8 thumb_func_start sub_80DF49C sub_80DF49C: @ 80DF49C adds r3, r0, 0 adds r3, 0x3E ldrb r1, [r3] movs r2, 0x4 orrs r1, r2 strb r1, [r3] ldr r2, _080DF4E0 @ =gObjectBankIDs ldr r1, _080DF4E4 @ =gAnimBankAttacker ldrb r1, [r1] adds r1, r2 ldrb r1, [r1] strh r1, [r0, 0x38] movs r1, 0x80 strh r1, [r0, 0x2E] movs r1, 0xA strh r1, [r0, 0x30] ldr r2, _080DF4E8 @ =gBattleAnimArgs ldrh r1, [r2] strh r1, [r0, 0x32] ldrh r1, [r2, 0x2] strh r1, [r0, 0x34] ldr r1, _080DF4EC @ =sub_80DF4F4 str r1, [r0, 0x1C] ldr r2, _080DF4F0 @ =gSprites movs r3, 0x38 ldrsh r1, [r0, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x22] adds r1, 0x8 strh r1, [r0, 0x22] bx lr .align 2, 0 _080DF4E0: .4byte gObjectBankIDs _080DF4E4: .4byte gAnimBankAttacker _080DF4E8: .4byte gBattleAnimArgs _080DF4EC: .4byte sub_80DF4F4 _080DF4F0: .4byte gSprites thumb_func_end sub_80DF49C thumb_func_start sub_80DF4F4 sub_80DF4F4: @ 80DF4F4 push {r4,r5,lr} adds r5, r0, 0 ldrh r0, [r5, 0x34] movs r1, 0x34 ldrsh r3, [r5, r1] cmp r3, 0 beq _080DF55C subs r0, 0x1 strh r0, [r5, 0x34] movs r2, 0x2E ldrsh r0, [r5, r2] movs r2, 0x30 ldrsh r1, [r5, r2] bl Sin ldr r4, _080DF554 @ =gSprites movs r1, 0x38 ldrsh r2, [r5, r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r4 strh r0, [r1, 0x24] movs r2, 0x2E ldrsh r0, [r5, r2] movs r2, 0x30 ldrsh r1, [r5, r2] bl Cos movs r1, 0x38 ldrsh r2, [r5, r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r4 strh r0, [r1, 0x26] ldrh r0, [r5, 0x32] ldrh r2, [r5, 0x2E] adds r1, r0, r2 strh r1, [r5, 0x2E] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xFF ble _080DF590 ldr r2, _080DF558 @ =0xffffff00 adds r0, r1, r2 strh r0, [r5, 0x2E] b _080DF590 .align 2, 0 _080DF554: .4byte gSprites _080DF558: .4byte 0xffffff00 _080DF55C: ldr r2, _080DF598 @ =gSprites movs r0, 0x38 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r3, [r0, 0x24] movs r0, 0x38 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r3, [r0, 0x26] movs r0, 0x38 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x22] subs r1, 0x8 strh r1, [r0, 0x22] ldr r0, _080DF59C @ =move_anim_8074EE0 str r0, [r5, 0x1C] _080DF590: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080DF598: .4byte gSprites _080DF59C: .4byte move_anim_8074EE0 thumb_func_end sub_80DF4F4 .align 2, 0 @ Don't pad with nop.