.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start nullsub_13 nullsub_13: @ 802E310 bx lr thumb_func_end nullsub_13 thumb_func_start SetBankFuncToPlayerBufferRunCommand SetBankFuncToPlayerBufferRunCommand: @ 802E314 ldr r1, _0802E32C @ =gUnknown_3004FE0 ldr r0, _0802E330 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _0802E334 @ =PlayerBufferRunCommand str r1, [r0] ldr r1, _0802E338 @ =gUnknown_2024005 movs r0, 0 strb r0, [r1] bx lr .align 2, 0 _0802E32C: .4byte gUnknown_3004FE0 _0802E330: .4byte gActiveBattler _0802E334: .4byte PlayerBufferRunCommand _0802E338: .4byte gUnknown_2024005 thumb_func_end SetBankFuncToPlayerBufferRunCommand thumb_func_start PlayerBufferExecCompleted PlayerBufferExecCompleted: @ 802E33C push {r4,lr} sub sp, 0x4 ldr r1, _0802E37C @ =gUnknown_3004FE0 ldr r4, _0802E380 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0802E384 @ =PlayerBufferRunCommand str r1, [r0] ldr r0, _0802E388 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0802E390 bl GetMultiplayerId mov r1, sp strb r0, [r1] movs r0, 0x2 movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink ldr r1, _0802E38C @ =gUnknown_2022BC4 ldrb r0, [r4] lsls r0, 9 adds r0, r1 movs r1, 0x38 strb r1, [r0] b _0802E3A2 .align 2, 0 _0802E37C: .4byte gUnknown_3004FE0 _0802E380: .4byte gActiveBattler _0802E384: .4byte PlayerBufferRunCommand _0802E388: .4byte gBattleTypeFlags _0802E38C: .4byte gUnknown_2022BC4 _0802E390: ldr r2, _0802E3AC @ =gUnknown_2023BC8 ldr r1, _0802E3B0 @ =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r2] bics r0, r1 str r0, [r2] _0802E3A2: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0802E3AC: .4byte gUnknown_2023BC8 _0802E3B0: .4byte gBitTable thumb_func_end PlayerBufferExecCompleted thumb_func_start PlayerBufferRunCommand PlayerBufferRunCommand: @ 802E3B4 push {lr} ldr r2, _0802E3E8 @ =gUnknown_2023BC8 ldr r1, _0802E3EC @ =gBitTable ldr r0, _0802E3F0 @ =gActiveBattler ldrb r3, [r0] lsls r0, r3, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _0802E400 ldr r0, _0802E3F4 @ =gUnknown_2022BC4 lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] cmp r0, 0x38 bhi _0802E3FC ldr r0, _0802E3F8 @ =gUnknown_825089C ldrb r1, [r1] lsls r1, 2 adds r1, r0 ldr r0, [r1] bl _call_via_r0 b _0802E400 .align 2, 0 _0802E3E8: .4byte gUnknown_2023BC8 _0802E3EC: .4byte gBitTable _0802E3F0: .4byte gActiveBattler _0802E3F4: .4byte gUnknown_2022BC4 _0802E3F8: .4byte gUnknown_825089C _0802E3FC: bl PlayerBufferExecCompleted _0802E400: pop {r0} bx r0 thumb_func_end PlayerBufferRunCommand thumb_func_start CompleteOnBankSpritePosX_0 CompleteOnBankSpritePosX_0: @ 802E404 push {lr} ldr r2, _0802E42C @ =gSprites ldr r1, _0802E430 @ =gUnknown_2023D44 ldr r0, _0802E434 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x24 ldrsh r0, [r0, r1] cmp r0, 0 bne _0802E426 bl PlayerBufferExecCompleted _0802E426: pop {r0} bx r0 .align 2, 0 _0802E42C: .4byte gSprites _0802E430: .4byte gUnknown_2023D44 _0802E434: .4byte gActiveBattler thumb_func_end CompleteOnBankSpritePosX_0 thumb_func_start sub_802E438 sub_802E438: @ 802E438 push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, _0802E498 @ =gUnknown_2022BC4 ldr r4, _0802E49C @ =gActiveBattler ldrb r0, [r4] lsls r2, r0, 9 adds r1, r7, 0x2 adds r1, r2, r1 ldrb r5, [r1] adds r1, r7, 0x3 adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r5, r1 movs r1, 0x1 movs r2, 0x7 movs r3, 0x1 bl dp11b_obj_instanciate ldrb r0, [r4] movs r1, 0 movs r2, 0x7 movs r3, 0x1 bl dp11b_obj_instanciate ldr r0, _0802E4A0 @ =gMain ldrh r1, [r0, 0x2E] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _0802E4D0 movs r0, 0x5 bl PlaySE ldr r1, _0802E4A4 @ =gUnknown_2023FF8 ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 beq _0802E4B8 cmp r0, 0x1 bgt _0802E4A8 cmp r0, 0 beq _0802E4B2 b _0802E616 .align 2, 0 _0802E498: .4byte gUnknown_2022BC4 _0802E49C: .4byte gActiveBattler _0802E4A0: .4byte gMain _0802E4A4: .4byte gUnknown_2023FF8 _0802E4A8: cmp r0, 0x2 beq _0802E4BE cmp r0, 0x3 beq _0802E4C4 b _0802E616 _0802E4B2: movs r0, 0x1 movs r1, 0 b _0802E610 _0802E4B8: movs r0, 0x1 movs r1, 0x1 b _0802E610 _0802E4BE: movs r0, 0x1 movs r1, 0x2 b _0802E610 _0802E4C4: movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl EmitTwoReturnValues b _0802E616 _0802E4D0: movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802E508 ldr r5, _0802E504 @ =gUnknown_2023FF8 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _0802E4EA b _0802E634 _0802E4EA: movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] movs r2, 0x1 b _0802E590 .align 2, 0 _0802E504: .4byte gUnknown_2023FF8 _0802E508: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802E540 ldr r5, _0802E53C @ =gUnknown_2023FF8 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _0802E522 b _0802E634 _0802E522: movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] movs r2, 0x1 b _0802E590 .align 2, 0 _0802E53C: .4byte gUnknown_2023FF8 _0802E540: movs r0, 0x40 mov r8, r0 ands r0, r1 cmp r0, 0 beq _0802E560 ldr r5, _0802E55C @ =gUnknown_2023FF8 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802E634 b _0802E578 .align 2, 0 _0802E55C: .4byte gUnknown_2023FF8 _0802E560: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802E5A8 ldr r5, _0802E5A4 @ =gUnknown_2023FF8 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _0802E634 _0802E578: movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] movs r2, 0x2 _0802E590: eors r0, r2 strb r0, [r1] ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] movs r1, 0 bl ActionSelectionCreateCursorAt b _0802E634 .align 2, 0 _0802E5A4: .4byte gUnknown_2023FF8 _0802E5A8: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802E628 ldr r6, _0802E61C @ =gBattleTypeFlags ldr r0, [r6] ands r0, r2 cmp r0, 0 beq _0802E634 ldrb r0, [r4] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _0802E634 movs r0, 0 bl GetBattlerAtPosition ldr r1, _0802E620 @ =gAbsentBattlerFlags ldrb r1, [r1] ldr r2, _0802E624 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802E634 ldr r0, [r6] mov r1, r8 ands r0, r1 cmp r0, 0 bne _0802E634 ldrb r0, [r4] lsls r0, 9 adds r1, r7, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 bne _0802E606 cmp r5, 0xC bhi _0802E634 adds r0, r5, 0 movs r1, 0x1 bl sub_809A084 _0802E606: movs r0, 0x5 bl PlaySE movs r0, 0x1 movs r1, 0xC _0802E610: movs r2, 0 bl EmitTwoReturnValues _0802E616: bl PlayerBufferExecCompleted b _0802E634 .align 2, 0 _0802E61C: .4byte gBattleTypeFlags _0802E620: .4byte gAbsentBattlerFlags _0802E624: .4byte gBitTable _0802E628: movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0802E634 bl sub_8048A4C _0802E634: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_802E438 thumb_func_start sub_802E640 sub_802E640: @ 802E640 push {r4,lr} ldr r4, _0802E668 @ =gActiveBattler ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free ldrb r0, [r4] movs r1, 0 bl dp11b_obj_free ldr r1, _0802E66C @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0802E670 @ =sub_802E674 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0802E668: .4byte gActiveBattler _0802E66C: .4byte gUnknown_3004FE0 _0802E670: .4byte sub_802E674 thumb_func_end sub_802E640 thumb_func_start sub_802E674 sub_802E674: @ 802E674 push {r4,r5,lr} sub sp, 0x4 ldr r1, _0802E708 @ =gUnknown_8250980 mov r0, sp movs r2, 0x4 bl memcpy ldr r0, _0802E70C @ =gUnknown_3004FF4 ldrb r0, [r0] movs r1, 0x1 movs r2, 0xF movs r3, 0x1 bl dp11b_obj_instanciate movs r4, 0 ldr r0, _0802E710 @ =gBattlersCount ldrb r0, [r0] cmp r0, 0 beq _0802E6B6 _0802E69A: ldr r0, _0802E70C @ =gUnknown_3004FF4 ldrb r0, [r0] cmp r4, r0 beq _0802E6AC lsls r0, r4, 24 lsrs r0, 24 movs r1, 0x1 bl dp11b_obj_free _0802E6AC: adds r4, 0x1 ldr r0, _0802E710 @ =gBattlersCount ldrb r0, [r0] cmp r4, r0 blt _0802E69A _0802E6B6: ldr r0, _0802E714 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0802E72C movs r0, 0x5 bl PlaySE ldr r2, _0802E718 @ =gSprites ldr r1, _0802E71C @ =gUnknown_2023D44 ldr r4, _0802E70C @ =gUnknown_3004FF4 ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802E720 @ =sub_8012098 str r1, [r0] ldr r1, _0802E724 @ =gUnknown_2023FFC ldr r0, _0802E728 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] ldrb r0, [r4] lsls r0, 8 orrs r2, r0 movs r0, 0x1 movs r1, 0xA bl EmitTwoReturnValues ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free bl PlayerBufferExecCompleted b _0802E9DC .align 2, 0 _0802E708: .4byte gUnknown_8250980 _0802E70C: .4byte gUnknown_3004FF4 _0802E710: .4byte gBattlersCount _0802E714: .4byte gMain _0802E718: .4byte gSprites _0802E71C: .4byte gUnknown_2023D44 _0802E720: .4byte sub_8012098 _0802E724: .4byte gUnknown_2023FFC _0802E728: .4byte gActiveBattler _0802E72C: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802E7A0 movs r0, 0x5 bl PlaySE ldr r2, _0802E784 @ =gSprites ldr r1, _0802E788 @ =gUnknown_2023D44 ldr r5, _0802E78C @ =gUnknown_3004FF4 ldrb r0, [r5] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802E790 @ =sub_8012098 str r1, [r0] ldr r1, _0802E794 @ =gUnknown_3004FE0 ldr r4, _0802E798 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0802E79C @ =sub_802EA10 str r1, [r0] ldrb r0, [r4] movs r1, 0x1 movs r2, 0x7 movs r3, 0x1 bl dp11b_obj_instanciate ldrb r0, [r4] movs r1, 0 movs r2, 0x7 movs r3, 0x1 bl dp11b_obj_instanciate ldrb r0, [r5] movs r1, 0x1 bl dp11b_obj_free b _0802E9DC .align 2, 0 _0802E784: .4byte gSprites _0802E788: .4byte gUnknown_2023D44 _0802E78C: .4byte gUnknown_3004FF4 _0802E790: .4byte sub_8012098 _0802E794: .4byte gUnknown_3004FE0 _0802E798: .4byte gActiveBattler _0802E79C: .4byte sub_802EA10 _0802E7A0: movs r0, 0x60 ands r0, r1 cmp r0, 0 bne _0802E7AA b _0802E8C4 _0802E7AA: movs r0, 0x5 bl PlaySE ldr r2, _0802E7DC @ =gSprites ldr r1, _0802E7E0 @ =gUnknown_2023D44 ldr r3, _0802E7E4 @ =gUnknown_3004FF4 ldrb r0, [r3] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802E7E8 @ =sub_8012098 str r1, [r0] adds r5, r3, 0 _0802E7CC: ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r1, r0, 24 movs r4, 0 mov r0, sp b _0802E7F6 .align 2, 0 _0802E7DC: .4byte gSprites _0802E7E0: .4byte gUnknown_2023D44 _0802E7E4: .4byte gUnknown_3004FF4 _0802E7E8: .4byte sub_8012098 _0802E7EC: adds r4, 0x1 cmp r4, 0x3 bgt _0802E7FC mov r2, sp adds r0, r2, r4 _0802E7F6: ldrb r0, [r0] cmp r1, r0 bne _0802E7EC _0802E7FC: subs r4, 0x1 cmp r4, 0 bge _0802E804 movs r4, 0x4 _0802E804: mov r1, sp adds r0, r1, r4 ldrb r0, [r0] bl GetBattlerAtPosition strb r0, [r5] ldr r1, _0802E838 @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 beq _0802E7FC movs r4, 0 ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0802E882 cmp r0, 0x1 bgt _0802E83C cmp r0, 0 beq _0802E846 b _0802E884 .align 2, 0 _0802E838: .4byte gBattlersCount _0802E83C: cmp r0, 0x2 beq _0802E846 cmp r0, 0x3 beq _0802E882 b _0802E884 _0802E846: ldr r2, _0802E8A4 @ =gActiveBattler ldrb r0, [r2] ldrb r1, [r5] cmp r0, r1 bne _0802E882 ldr r1, _0802E8A8 @ =gBattlerPartyIndexes ldrb r2, [r2] lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802E8AC @ =gPlayerParty adds r0, r1 ldr r1, _0802E8B0 @ =gUnknown_2023FFC adds r2, r1 ldrb r1, [r2] adds r1, 0xD bl GetMonData ldr r2, _0802E8B4 @ =gBattleMoves lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r1, [r1, 0x6] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802E884 _0802E882: adds r4, 0x1 _0802E884: ldr r0, _0802E8B8 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802E8BC @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 ldr r0, _0802E8C0 @ =gUnknown_3004FF4 cmp r1, 0 beq _0802E89C movs r4, 0 _0802E89C: cmp r4, 0 beq _0802E7CC b _0802E9C4 .align 2, 0 _0802E8A4: .4byte gActiveBattler _0802E8A8: .4byte gBattlerPartyIndexes _0802E8AC: .4byte gPlayerParty _0802E8B0: .4byte gUnknown_2023FFC _0802E8B4: .4byte gBattleMoves _0802E8B8: .4byte gAbsentBattlerFlags _0802E8BC: .4byte gBitTable _0802E8C0: .4byte gUnknown_3004FF4 _0802E8C4: movs r0, 0x90 ands r0, r1 cmp r0, 0 bne _0802E8CE b _0802E9DC _0802E8CE: movs r0, 0x5 bl PlaySE ldr r2, _0802E900 @ =gSprites ldr r1, _0802E904 @ =gUnknown_2023D44 ldr r3, _0802E908 @ =gUnknown_3004FF4 ldrb r0, [r3] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802E90C @ =sub_8012098 str r1, [r0] adds r5, r3, 0 _0802E8F0: ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r1, r0, 24 movs r4, 0 mov r0, sp b _0802E91A .align 2, 0 _0802E900: .4byte gSprites _0802E904: .4byte gUnknown_2023D44 _0802E908: .4byte gUnknown_3004FF4 _0802E90C: .4byte sub_8012098 _0802E910: adds r4, 0x1 cmp r4, 0x3 bgt _0802E920 mov r2, sp adds r0, r2, r4 _0802E91A: ldrb r0, [r0] cmp r1, r0 bne _0802E910 _0802E920: adds r4, 0x1 cmp r4, 0x3 ble _0802E928 movs r4, 0 _0802E928: mov r1, sp adds r0, r1, r4 ldrb r0, [r0] bl GetBattlerAtPosition strb r0, [r5] ldr r1, _0802E95C @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 beq _0802E920 movs r4, 0 ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0802E9A6 cmp r0, 0x1 bgt _0802E960 cmp r0, 0 beq _0802E96A b _0802E9A8 .align 2, 0 _0802E95C: .4byte gBattlersCount _0802E960: cmp r0, 0x2 beq _0802E96A cmp r0, 0x3 beq _0802E9A6 b _0802E9A8 _0802E96A: ldr r2, _0802E9E4 @ =gActiveBattler ldrb r0, [r2] ldrb r1, [r5] cmp r0, r1 bne _0802E9A6 ldr r1, _0802E9E8 @ =gBattlerPartyIndexes ldrb r2, [r2] lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802E9EC @ =gPlayerParty adds r0, r1 ldr r1, _0802E9F0 @ =gUnknown_2023FFC adds r2, r1 ldrb r1, [r2] adds r1, 0xD bl GetMonData ldr r2, _0802E9F4 @ =gBattleMoves lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r1, [r1, 0x6] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802E9A8 _0802E9A6: adds r4, 0x1 _0802E9A8: ldr r0, _0802E9F8 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802E9FC @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 ldr r0, _0802EA00 @ =gUnknown_3004FF4 cmp r1, 0 beq _0802E9C0 movs r4, 0 _0802E9C0: cmp r4, 0 beq _0802E8F0 _0802E9C4: ldr r2, _0802EA04 @ =gSprites ldr r1, _0802EA08 @ =gUnknown_2023D44 ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802EA0C @ =sub_8012044 str r1, [r0] _0802E9DC: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802E9E4: .4byte gActiveBattler _0802E9E8: .4byte gBattlerPartyIndexes _0802E9EC: .4byte gPlayerParty _0802E9F0: .4byte gUnknown_2023FFC _0802E9F4: .4byte gBattleMoves _0802E9F8: .4byte gAbsentBattlerFlags _0802E9FC: .4byte gBitTable _0802EA00: .4byte gUnknown_3004FF4 _0802EA04: .4byte gSprites _0802EA08: .4byte gUnknown_2023D44 _0802EA0C: .4byte sub_8012044 thumb_func_end sub_802E674 thumb_func_start sub_802EA10 sub_802EA10: @ 802EA10 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 movs r0, 0 mov r8, r0 ldr r6, _0802EA6C @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 ldr r1, _0802EA70 @ =gUnknown_2022BC8 adds r7, r0, r1 bl sub_8033AC8 ldr r0, _0802EA74 @ =gMain ldrh r1, [r0, 0x2E] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _0802EA3A b _0802EC10 _0802EA3A: movs r0, 0x5 bl PlaySE ldr r1, _0802EA78 @ =gUnknown_2023FFC ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] lsls r0, 1 adds r1, r7, r0 ldrh r0, [r1] cmp r0, 0xAE bne _0802EA7C ldrb r0, [r7, 0x12] movs r4, 0 cmp r0, 0x7 beq _0802EA8A ldrb r1, [r7, 0x13] movs r0, 0x7 eors r1, r0 negs r0, r1 orrs r0, r1 asrs r4, r0, 31 movs r0, 0x10 ands r4, r0 b _0802EA8A .align 2, 0 _0802EA6C: .4byte gActiveBattler _0802EA70: .4byte gUnknown_2022BC8 _0802EA74: .4byte gMain _0802EA78: .4byte gUnknown_2023FFC _0802EA7C: ldr r2, _0802EA9C @ =gBattleMoves ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r4, [r0, 0x6] _0802EA8A: movs r0, 0x10 ands r0, r4 cmp r0, 0 beq _0802EAA8 ldr r0, _0802EAA0 @ =gUnknown_3004FF4 ldr r1, _0802EAA4 @ =gActiveBattler ldrb r1, [r1] strb r1, [r0] b _0802EAC2 .align 2, 0 _0802EA9C: .4byte gBattleMoves _0802EAA0: .4byte gUnknown_3004FF4 _0802EAA4: .4byte gActiveBattler _0802EAA8: ldr r0, _0802EAEC @ =gActiveBattler ldrb r0, [r0] bl GetBattlerPosition adds r1, r0, 0 movs r2, 0x1 movs r0, 0x1 ands r0, r1 eors r0, r2 bl GetBattlerAtPosition ldr r1, _0802EAF0 @ =gUnknown_3004FF4 strb r0, [r1] _0802EAC2: ldr r3, _0802EAF4 @ =gUnknown_2022BC4 ldr r5, _0802EAEC @ =gActiveBattler ldrb r2, [r5] lsls r1, r2, 9 adds r0, r3, 0x1 adds r0, r1, r0 ldrb r0, [r0] cmp r0, 0 bne _0802EAF8 movs r0, 0x2 ands r0, r4 cmp r0, 0 beq _0802EB3A adds r0, r3, 0x2 adds r0, r1, r0 ldrb r0, [r0] cmp r0, 0 bne _0802EB3A movs r0, 0x1 add r8, r0 b _0802EB3A .align 2, 0 _0802EAEC: .4byte gActiveBattler _0802EAF0: .4byte gUnknown_3004FF4 _0802EAF4: .4byte gUnknown_2022BC4 _0802EAF8: movs r0, 0x7D ands r0, r4 cmp r0, 0 bne _0802EB04 movs r0, 0x1 add r8, r0 _0802EB04: ldr r0, _0802EB78 @ =gUnknown_2023FFC adds r0, r2, r0 adds r1, r7, 0 adds r1, 0x8 ldrb r0, [r0] adds r1, r0 ldrb r0, [r1] cmp r0, 0 beq _0802EB36 movs r0, 0x12 ands r0, r4 cmp r0, 0 bne _0802EB3A movs r0, 0 bl CountAliveMons lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _0802EB3A ldrb r0, [r5] bl GetDefaultMoveTarget ldr r1, _0802EB7C @ =gUnknown_3004FF4 strb r0, [r1] _0802EB36: movs r0, 0 mov r8, r0 _0802EB3A: bl ResetPaletteFadeControl movs r0, 0xF0 lsls r0, 12 ldr r1, _0802EB80 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0 bl BeginNormalPaletteFade mov r0, r8 cmp r0, 0 bne _0802EB88 ldr r1, _0802EB78 @ =gUnknown_2023FFC ldr r0, _0802EB84 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] ldr r0, _0802EB7C @ =gUnknown_3004FF4 ldrb r0, [r0] lsls r0, 8 orrs r2, r0 movs r0, 0x1 movs r1, 0xA bl EmitTwoReturnValues bl PlayerBufferExecCompleted b _0802EDBA .align 2, 0 _0802EB78: .4byte gUnknown_2023FFC _0802EB7C: .4byte gUnknown_3004FF4 _0802EB80: .4byte 0x00007fff _0802EB84: .4byte gActiveBattler _0802EB88: ldr r1, _0802EBA4 @ =gUnknown_3004FE0 ldr r2, _0802EBA8 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0802EBAC @ =sub_802E674 str r1, [r0] movs r0, 0x12 ands r4, r0 cmp r4, 0 beq _0802EBB4 ldr r1, _0802EBB0 @ =gUnknown_3004FF4 ldrb r0, [r2] b _0802EBE4 .align 2, 0 _0802EBA4: .4byte gUnknown_3004FE0 _0802EBA8: .4byte gActiveBattler _0802EBAC: .4byte sub_802E674 _0802EBB0: .4byte gUnknown_3004FF4 _0802EBB4: movs r0, 0x1 bl GetBattlerAtPosition ldr r1, _0802EBD4 @ =gAbsentBattlerFlags ldrb r1, [r1] ldr r2, _0802EBD8 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _0802EBDC movs r0, 0x3 b _0802EBDE .align 2, 0 _0802EBD4: .4byte gAbsentBattlerFlags _0802EBD8: .4byte gBitTable _0802EBDC: movs r0, 0x1 _0802EBDE: bl GetBattlerAtPosition ldr r1, _0802EC00 @ =gUnknown_3004FF4 _0802EBE4: strb r0, [r1] ldr r2, _0802EC04 @ =gSprites ldr r1, _0802EC08 @ =gUnknown_2023D44 ldr r0, _0802EC00 @ =gUnknown_3004FF4 ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _0802EC0C @ =sub_8012044 b _0802EDB8 .align 2, 0 _0802EC00: .4byte gUnknown_3004FF4 _0802EC04: .4byte gSprites _0802EC08: .4byte gUnknown_2023D44 _0802EC0C: .4byte sub_8012044 _0802EC10: movs r7, 0x2 adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _0802EC38 movs r0, 0x5 bl PlaySE ldr r2, _0802EC34 @ =0x0000ffff movs r0, 0x1 movs r1, 0xA bl EmitTwoReturnValues bl PlayerBufferExecCompleted bl ResetPaletteFadeControl b _0802ED2C .align 2, 0 _0802EC34: .4byte 0x0000ffff _0802EC38: movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802EC68 ldr r4, _0802EC64 @ =gUnknown_2023FFC ldrb r0, [r6] adds r2, r0, r4 ldrb r1, [r2] adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _0802EC52 b _0802EDBA _0802EC52: ldrb r0, [r2] bl MoveSelectionDestroyCursorAt ldrb r1, [r6] adds r1, r4 ldrb r0, [r1] movs r2, 0x1 eors r0, r2 b _0802ED10 .align 2, 0 _0802EC64: .4byte gUnknown_2023FFC _0802EC68: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802ECAC ldr r4, _0802ECA4 @ =gUnknown_2023FFC ldrb r0, [r6] adds r3, r0, r4 ldrb r2, [r3] movs r7, 0x1 adds r0, r5, 0 ands r0, r2 cmp r0, 0 beq _0802EC84 b _0802EDBA _0802EC84: ldr r1, _0802ECA8 @ =gUnknown_3004FF8 adds r0, r7, 0 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcc _0802EC92 b _0802EDBA _0802EC92: ldrb r0, [r3] bl MoveSelectionDestroyCursorAt ldrb r1, [r6] adds r1, r4 ldrb r0, [r1] eors r0, r7 b _0802ED10 .align 2, 0 _0802ECA4: .4byte gUnknown_2023FFC _0802ECA8: .4byte gUnknown_3004FF8 _0802ECAC: movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802ECDC ldr r4, _0802ECD8 @ =gUnknown_2023FFC ldrb r0, [r6] adds r2, r0, r4 ldrb r1, [r2] adds r0, r7, 0 ands r0, r1 cmp r0, 0 bne _0802ECC6 b _0802EDBA _0802ECC6: ldrb r0, [r2] bl MoveSelectionDestroyCursorAt ldrb r1, [r6] adds r1, r4 ldrb r0, [r1] movs r2, 0x2 eors r0, r2 b _0802ED10 .align 2, 0 _0802ECD8: .4byte gUnknown_2023FFC _0802ECDC: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802ED4C ldr r4, _0802ED40 @ =gUnknown_2023FFC ldrb r0, [r6] adds r3, r0, r4 ldrb r2, [r3] movs r5, 0x2 adds r0, r7, 0 ands r0, r2 cmp r0, 0 bne _0802EDBA ldr r1, _0802ED44 @ =gUnknown_3004FF8 adds r0, r5, 0 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcs _0802EDBA ldrb r0, [r3] bl MoveSelectionDestroyCursorAt ldrb r1, [r6] adds r1, r4 ldrb r0, [r1] eors r0, r5 _0802ED10: strb r0, [r1] movs r0, 0x5 bl PlaySE ldrb r0, [r6] adds r0, r4 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt bl MoveSelectionDisplayPpNumber bl MoveSelectionDisplayMoveType _0802ED2C: movs r0, 0xF0 lsls r0, 12 ldr r1, _0802ED48 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0 bl BeginNormalPaletteFade b _0802EDBA .align 2, 0 _0802ED40: .4byte gUnknown_2023FFC _0802ED44: .4byte gUnknown_3004FF8 _0802ED48: .4byte 0x00007fff _0802ED4C: movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0802EDBA ldr r0, _0802ED84 @ =gUnknown_3004FF8 ldrb r0, [r0] cmp r0, 0x1 bls _0802EDBA ldr r0, _0802ED88 @ =gBattleTypeFlags ldr r5, [r0] ands r5, r7 cmp r5, 0 bne _0802EDBA ldr r4, _0802ED8C @ =gUnknown_2023FFC ldrb r0, [r6] adds r0, r4 ldrb r0, [r0] movs r1, 0x1D bl MoveSelectionCreateCursorAt ldrb r0, [r6] adds r0, r4 ldrb r0, [r0] cmp r0, 0 beq _0802ED94 ldr r0, _0802ED90 @ =gUnknown_3004FF4 strb r5, [r0] b _0802ED9C .align 2, 0 _0802ED84: .4byte gUnknown_3004FF8 _0802ED88: .4byte gBattleTypeFlags _0802ED8C: .4byte gUnknown_2023FFC _0802ED90: .4byte gUnknown_3004FF4 _0802ED94: ldr r1, _0802EDC8 @ =gUnknown_3004FF4 adds r0, 0x1 strb r0, [r1] adds r0, r1, 0 _0802ED9C: ldrb r0, [r0] movs r1, 0x1B bl MoveSelectionCreateCursorAt ldr r0, _0802EDCC @ =gUnknown_83FE7A0 movs r1, 0xB bl sub_80D87BC ldr r1, _0802EDD0 @ =gUnknown_3004FE0 ldr r0, _0802EDD4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _0802EDD8 @ =sub_802EF58 _0802EDB8: str r1, [r0] _0802EDBA: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802EDC8: .4byte gUnknown_3004FF4 _0802EDCC: .4byte gUnknown_83FE7A0 _0802EDD0: .4byte gUnknown_3004FE0 _0802EDD4: .4byte gActiveBattler _0802EDD8: .4byte sub_802EF58 thumb_func_end sub_802EA10 thumb_func_start sub_802EDDC sub_802EDDC: @ 802EDDC push {r4-r7,lr} movs r7, 0 ldr r4, _0802EF40 @ =gMain ldrh r1, [r4, 0x2E] movs r6, 0x1 adds r0, r6, 0 ands r0, r1 cmp r0, 0 beq _0802EDF6 movs r0, 0x5 bl PlaySE movs r7, 0x1 _0802EDF6: ldrh r1, [r4, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802EE18 movs r0, 0x5 bl PlaySE ldr r1, _0802EF44 @ =gUnknown_2022974 movs r0, 0 strh r0, [r1] ldr r1, _0802EF48 @ =gUnknown_2022976 movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] movs r7, 0xFF _0802EE18: ldrh r1, [r4, 0x2E] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802EE58 ldr r5, _0802EF4C @ =gUnknown_2023FFC ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r2, r0, r5 ldrb r1, [r2] adds r0, r6, 0 ands r0, r1 cmp r0, 0 beq _0802EE58 ldrb r0, [r2] bl MoveSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] movs r2, 0x1 eors r0, r2 strb r0, [r1] movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt _0802EE58: ldr r0, _0802EF40 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802EEA6 ldr r5, _0802EF4C @ =gUnknown_2023FFC ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r3, r0, r5 ldrb r2, [r3] movs r6, 0x1 movs r0, 0x1 ands r0, r2 cmp r0, 0 bne _0802EEA6 ldr r1, _0802EF54 @ =gUnknown_3004FF8 adds r0, r6, 0 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcs _0802EEA6 ldrb r0, [r3] bl MoveSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] eors r0, r6 strb r0, [r1] movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt _0802EEA6: ldr r0, _0802EF40 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802EEE8 ldr r5, _0802EF4C @ =gUnknown_2023FFC ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r2, r0, r5 ldrb r1, [r2] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802EEE8 ldrb r0, [r2] bl MoveSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] movs r2, 0x2 eors r0, r2 strb r0, [r1] movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt _0802EEE8: ldr r0, _0802EF40 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802EF36 ldr r5, _0802EF4C @ =gUnknown_2023FFC ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r3, r0, r5 ldrb r2, [r3] movs r6, 0x2 movs r0, 0x2 ands r0, r2 cmp r0, 0 bne _0802EF36 ldr r1, _0802EF54 @ =gUnknown_3004FF8 adds r0, r6, 0 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcs _0802EF36 ldrb r0, [r3] bl MoveSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] eors r0, r6 strb r0, [r1] movs r0, 0x5 bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt _0802EF36: adds r0, r7, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0802EF40: .4byte gMain _0802EF44: .4byte gUnknown_2022974 _0802EF48: .4byte gUnknown_2022976 _0802EF4C: .4byte gUnknown_2023FFC _0802EF50: .4byte gActiveBattler _0802EF54: .4byte gUnknown_3004FF8 thumb_func_end sub_802EDDC thumb_func_start sub_802EF58 sub_802EF58: @ 802EF58 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 ldr r0, _0802F2E4 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x5 ands r0, r1 cmp r0, 0 bne _0802EF72 b _0802F34C _0802EF72: movs r0, 0x5 bl PlaySE ldr r0, _0802F2E8 @ =gUnknown_2023FFC mov r10, r0 ldr r1, _0802F2EC @ =gActiveBattler mov r8, r1 ldrb r1, [r1] adds r2, r1, r0 ldr r5, _0802F2F0 @ =gUnknown_3004FF4 ldrb r0, [r2] ldrb r3, [r5] cmp r0, r3 bne _0802EF90 b _0802F2C8 _0802EF90: lsls r1, 9 ldr r0, _0802F2F4 @ =gUnknown_2022BC8 adds r1, r0 mov r9, r1 ldrb r1, [r2] lsls r1, 1 add r1, r9 ldrh r6, [r1] ldrb r0, [r5] lsls r0, 1 add r0, r9 ldrh r0, [r0] strh r0, [r1] ldrb r0, [r5] lsls r0, 1 add r0, r9 strh r6, [r0] mov r1, r8 ldrb r0, [r1] add r0, r10 ldrb r1, [r0] mov r7, r9 adds r7, 0x8 adds r1, r7, r1 ldrb r6, [r1] ldrb r0, [r5] adds r0, r7, r0 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r5] adds r0, r7, r0 strb r6, [r0] mov r2, r8 ldrb r0, [r2] add r0, r10 ldrb r1, [r0] mov r2, r9 adds r2, 0xC adds r1, r2, r1 ldrb r6, [r1] ldrb r0, [r5] adds r0, r2, r0 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r5] adds r2, r0 strb r6, [r2] mov r3, r8 ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 ldr r2, _0802F2F8 @ =gDisableStructs adds r6, r0, r2 ldrb r4, [r6, 0x18] lsls r3, r4, 24 lsrs r2, r3, 28 ldr r0, _0802F2FC @ =gBitTable mov r12, r0 add r1, r10 ldrb r0, [r1] lsls r0, 2 add r0, r12 ldr r0, [r0] ands r2, r0 cmp r2, 0 beq _0802F04A lsrs r1, r3, 28 bics r1, r0 lsls r1, 4 movs r2, 0xF adds r0, r2, 0 ands r0, r4 orrs r0, r1 strb r0, [r6, 0x18] mov r1, r8 ldrb r0, [r1] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 ldr r3, _0802F2F8 @ =gDisableStructs adds r1, r3 ldrb r4, [r1, 0x18] lsrs r3, r4, 4 ldrb r0, [r5] lsls r0, 2 add r0, r12 ldr r0, [r0] orrs r0, r3 lsls r0, 4 ands r2, r4 orrs r2, r0 strb r2, [r1, 0x18] _0802F04A: bl sub_8030830 movs r6, 0 mov r12, r7 mov r5, sp adds r5, 0x18 str r5, [sp, 0x1C] ldr r2, _0802F300 @ =gBattleMons mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r4, r0, 0 adds r4, 0x3B mov r7, r8 mov r10, r2 movs r5, 0x3 _0802F06E: mov r1, sp adds r3, r1, r6 ldrb r1, [r4] lsls r2, r6, 1 adds r0, r5, 0 lsls r0, r2 ands r1, r0 asrs r1, r2 strb r1, [r3] adds r6, 0x1 cmp r6, 0x3 ble _0802F06E ldr r1, _0802F2E8 @ =gUnknown_2023FFC ldrb r0, [r7] adds r0, r1 ldrb r0, [r0] add r0, sp ldrb r0, [r0] ldr r2, [sp, 0x1C] strb r0, [r2] ldrb r0, [r7] adds r0, r1 ldrb r0, [r0] mov r3, sp adds r2, r3, r0 ldr r1, _0802F2F0 @ =gUnknown_3004FF4 ldrb r0, [r1] add r0, sp ldrb r0, [r0] movs r3, 0 strb r0, [r2] ldrb r0, [r1] mov r5, sp adds r1, r5, r0 ldr r2, [sp, 0x1C] ldrb r0, [r2] strb r0, [r1] strb r3, [r2] movs r6, 0 ldr r2, [sp, 0x1C] _0802F0BE: mov r3, sp adds r0, r3, r6 ldrb r1, [r0] lsls r0, r6, 1 lsls r1, r0 ldrb r0, [r2] orrs r0, r1 strb r0, [r2] adds r6, 0x1 cmp r6, 0x3 ble _0802F0BE ldrb r1, [r7] movs r0, 0x58 muls r0, r1 add r0, r10 adds r0, 0x3B ldr r5, [sp, 0x1C] ldrb r1, [r5] strb r1, [r0] movs r6, 0 adds r4, r7, 0 movs r3, 0x58 movs r0, 0x24 add r0, r10 mov r8, r0 mov r2, r9 mov r7, r10 adds r7, 0xC mov r5, r12 _0802F0F8: lsls r1, r6, 1 ldrb r0, [r4] muls r0, r3 adds r1, r0 adds r1, r7 ldrh r0, [r2] strh r0, [r1] ldrb r0, [r4] adds r1, r0, 0 muls r1, r3 adds r1, r6, r1 add r1, r8 adds r0, r5, r6 ldrb r0, [r0] strb r0, [r1] adds r2, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _0802F0F8 ldr r2, _0802F2EC @ =gActiveBattler ldrb r1, [r2] movs r0, 0x58 muls r0, r1 mov r1, r10 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 beq _0802F13A b _0802F2C8 _0802F13A: movs r6, 0 mov r1, sp adds r1, 0x4 str r1, [sp, 0x20] add r3, sp, 0xC mov r10, r3 ldr r5, _0802F304 @ =gBattlerPartyIndexes mov r9, r5 mov r8, r2 movs r7, 0x64 ldr r5, _0802F308 @ =gPlayerParty adds r4, r1, 0 _0802F152: mov r1, r8 ldrb r0, [r1] lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 adds r0, r5 adds r1, r6, 0 adds r1, 0xD bl GetMonData strh r0, [r4] mov r2, r8 ldrb r0, [r2] lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 adds r0, r5 adds r1, r6, 0 adds r1, 0x11 bl GetMonData mov r3, r10 adds r1, r3, r6 strb r0, [r1] adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _0802F152 ldr r1, _0802F304 @ =gBattlerPartyIndexes ldr r0, _0802F2EC @ =gActiveBattler ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802F308 @ =gPlayerParty adds r0, r1 movs r1, 0x15 bl GetMonData ldr r5, [sp, 0x1C] strb r0, [r5] movs r6, 0 movs r5, 0x3 ldr r4, [sp, 0x1C] _0802F1B2: mov r0, sp adds r3, r0, r6 lsls r2, r6, 1 adds r1, r5, 0 lsls r1, r2 ldrb r0, [r4] ands r0, r1 asrs r0, r2 strb r0, [r3] adds r6, 0x1 cmp r6, 0x3 ble _0802F1B2 ldr r4, _0802F2E8 @ =gUnknown_2023FFC ldr r3, _0802F2EC @ =gActiveBattler ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] lsls r1, 1 ldr r2, [sp, 0x20] adds r1, r2, r1 ldrh r6, [r1] ldr r2, _0802F2F0 @ =gUnknown_3004FF4 ldrb r0, [r2] lsls r0, 1 ldr r5, [sp, 0x20] adds r0, r5, r0 ldrh r0, [r0] movs r5, 0 strh r0, [r1] ldrb r0, [r2] lsls r0, 1 ldr r1, [sp, 0x20] adds r0, r1, r0 strh r6, [r0] ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] add r1, r10 ldrb r6, [r1] ldrb r0, [r2] add r0, r10 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] add r0, r10 strb r6, [r0] ldrb r0, [r3] adds r0, r4 ldrb r0, [r0] add r0, sp ldrb r0, [r0] ldr r1, [sp, 0x1C] strb r0, [r1] ldrb r0, [r3] adds r0, r4 ldrb r0, [r0] mov r3, sp adds r1, r3, r0 ldrb r0, [r2] add r0, sp ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] adds r1, r3, r0 ldr r2, [sp, 0x1C] ldrb r0, [r2] strb r0, [r1] strb r5, [r2] movs r6, 0 ldr r2, [sp, 0x1C] _0802F23E: mov r3, sp adds r0, r3, r6 ldrb r1, [r0] lsls r0, r6, 1 lsls r1, r0 ldrb r0, [r2] orrs r0, r1 strb r0, [r2] adds r6, 0x1 cmp r6, 0x3 ble _0802F23E movs r6, 0 ldr r5, _0802F304 @ =gBattlerPartyIndexes mov r10, r5 ldr r0, _0802F2EC @ =gActiveBattler mov r9, r0 movs r1, 0x64 mov r8, r1 ldr r7, _0802F308 @ =gPlayerParty ldr r5, [sp, 0x20] adds r5, 0x8 ldr r4, [sp, 0x20] _0802F26A: mov r2, r9 ldrb r0, [r2] lsls r0, 1 add r0, r10 ldrh r0, [r0] mov r3, r8 muls r3, r0 adds r0, r3, 0 adds r0, r7 adds r1, r6, 0 adds r1, 0xD adds r2, r4, 0 bl SetMonData mov r1, r9 ldrb r0, [r1] lsls r0, 1 add r0, r10 ldrh r0, [r0] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 adds r1, r6, 0 adds r1, 0x11 adds r2, r5, 0 bl SetMonData adds r5, 0x1 adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _0802F26A ldr r1, _0802F304 @ =gBattlerPartyIndexes ldr r0, _0802F2EC @ =gActiveBattler ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802F308 @ =gPlayerParty adds r0, r1 movs r1, 0x15 ldr r2, [sp, 0x1C] bl SetMonData _0802F2C8: ldr r0, _0802F30C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _0802F318 ldr r1, _0802F310 @ =gUnknown_3004FE0 ldr r2, _0802F2EC @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0802F314 @ =sub_80E7988 b _0802F324 .align 2, 0 _0802F2E4: .4byte gMain _0802F2E8: .4byte gUnknown_2023FFC _0802F2EC: .4byte gActiveBattler _0802F2F0: .4byte gUnknown_3004FF4 _0802F2F4: .4byte gUnknown_2022BC8 _0802F2F8: .4byte gDisableStructs _0802F2FC: .4byte gBitTable _0802F300: .4byte gBattleMons _0802F304: .4byte gBattlerPartyIndexes _0802F308: .4byte gPlayerParty _0802F30C: .4byte gBattleTypeFlags _0802F310: .4byte gUnknown_3004FE0 _0802F314: .4byte sub_80E7988 _0802F318: ldr r1, _0802F390 @ =gUnknown_3004FE0 ldr r2, _0802F394 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0802F398 @ =sub_802EA10 _0802F324: str r1, [r0] adds r7, r2, 0 ldr r2, _0802F39C @ =gUnknown_2023FFC ldrb r0, [r7] adds r0, r2 ldr r1, _0802F3A0 @ =gUnknown_3004FF4 ldrb r1, [r1] strb r1, [r0] ldrb r0, [r7] adds r0, r2 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt bl MoveSelectionDisplayPpString bl MoveSelectionDisplayPpNumber bl MoveSelectionDisplayMoveType _0802F34C: ldr r0, _0802F3A4 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802F3C8 movs r0, 0x5 bl PlaySE ldr r0, _0802F3A0 @ =gUnknown_3004FF4 ldrb r0, [r0] bl MoveSelectionDestroyCursorAt ldr r1, _0802F39C @ =gUnknown_2023FFC ldr r4, _0802F394 @ =gActiveBattler ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt ldr r0, _0802F3A8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _0802F3B0 ldr r0, _0802F390 @ =gUnknown_3004FE0 ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, _0802F3AC @ =sub_80E7988 b _0802F3BA .align 2, 0 _0802F390: .4byte gUnknown_3004FE0 _0802F394: .4byte gActiveBattler _0802F398: .4byte sub_802EA10 _0802F39C: .4byte gUnknown_2023FFC _0802F3A0: .4byte gUnknown_3004FF4 _0802F3A4: .4byte gMain _0802F3A8: .4byte gBattleTypeFlags _0802F3AC: .4byte sub_80E7988 _0802F3B0: ldr r0, _0802F3F8 @ =gUnknown_3004FE0 ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, _0802F3FC @ =sub_802EA10 _0802F3BA: str r0, [r1] bl MoveSelectionDisplayPpString bl MoveSelectionDisplayPpNumber bl MoveSelectionDisplayMoveType _0802F3C8: ldr r0, _0802F400 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802F454 ldr r3, _0802F404 @ =gUnknown_3004FF4 ldrb r2, [r3] movs r0, 0x1 ands r0, r2 cmp r0, 0 beq _0802F454 ldr r0, _0802F408 @ =gUnknown_2023FFC ldr r1, _0802F40C @ =gActiveBattler ldrb r1, [r1] adds r1, r0 ldrb r5, [r1] cmp r2, r5 bne _0802F410 ldrb r0, [r1] movs r1, 0x1D bl MoveSelectionCreateCursorAt b _0802F416 .align 2, 0 _0802F3F8: .4byte gUnknown_3004FE0 _0802F3FC: .4byte sub_802EA10 _0802F400: .4byte gMain _0802F404: .4byte gUnknown_3004FF4 _0802F408: .4byte gUnknown_2023FFC _0802F40C: .4byte gActiveBattler _0802F410: ldrb r0, [r3] bl MoveSelectionDestroyCursorAt _0802F416: ldr r4, _0802F440 @ =gUnknown_3004FF4 ldrb r0, [r4] movs r1, 0x1 eors r0, r1 strb r0, [r4] movs r0, 0x5 bl PlaySE ldr r1, _0802F444 @ =gUnknown_2023FFC ldr r0, _0802F448 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r4] ldrb r0, [r0] cmp r1, r0 bne _0802F44C adds r0, r1, 0 movs r1, 0 bl MoveSelectionCreateCursorAt b _0802F454 .align 2, 0 _0802F440: .4byte gUnknown_3004FF4 _0802F444: .4byte gUnknown_2023FFC _0802F448: .4byte gActiveBattler _0802F44C: ldrb r0, [r4] movs r1, 0x1B bl MoveSelectionCreateCursorAt _0802F454: ldr r0, _0802F490 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802F4E8 ldr r3, _0802F494 @ =gUnknown_3004FF4 ldrb r2, [r3] movs r0, 0x1 ands r0, r2 cmp r0, 0 bne _0802F4E8 ldr r1, _0802F498 @ =gUnknown_3004FF8 movs r0, 0x1 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcs _0802F4E8 ldr r0, _0802F49C @ =gUnknown_2023FFC ldr r1, _0802F4A0 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 ldrb r0, [r1] cmp r2, r0 bne _0802F4A4 ldrb r0, [r1] movs r1, 0x1D bl MoveSelectionCreateCursorAt b _0802F4AA .align 2, 0 _0802F490: .4byte gMain _0802F494: .4byte gUnknown_3004FF4 _0802F498: .4byte gUnknown_3004FF8 _0802F49C: .4byte gUnknown_2023FFC _0802F4A0: .4byte gActiveBattler _0802F4A4: ldrb r0, [r3] bl MoveSelectionDestroyCursorAt _0802F4AA: ldr r4, _0802F4D4 @ =gUnknown_3004FF4 ldrb r0, [r4] movs r1, 0x1 eors r0, r1 strb r0, [r4] movs r0, 0x5 bl PlaySE ldr r1, _0802F4D8 @ =gUnknown_2023FFC ldr r0, _0802F4DC @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r4] ldrb r0, [r0] cmp r1, r0 bne _0802F4E0 adds r0, r1, 0 movs r1, 0 bl MoveSelectionCreateCursorAt b _0802F4E8 .align 2, 0 _0802F4D4: .4byte gUnknown_3004FF4 _0802F4D8: .4byte gUnknown_2023FFC _0802F4DC: .4byte gActiveBattler _0802F4E0: ldrb r0, [r4] movs r1, 0x1B bl MoveSelectionCreateCursorAt _0802F4E8: ldr r0, _0802F518 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802F56C ldr r3, _0802F51C @ =gUnknown_3004FF4 ldrb r2, [r3] movs r0, 0x2 ands r0, r2 cmp r0, 0 beq _0802F56C ldr r0, _0802F520 @ =gUnknown_2023FFC ldr r1, _0802F524 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 ldrb r5, [r1] cmp r2, r5 bne _0802F528 ldrb r0, [r1] movs r1, 0x1D bl MoveSelectionCreateCursorAt b _0802F52E .align 2, 0 _0802F518: .4byte gMain _0802F51C: .4byte gUnknown_3004FF4 _0802F520: .4byte gUnknown_2023FFC _0802F524: .4byte gActiveBattler _0802F528: ldrb r0, [r3] bl MoveSelectionDestroyCursorAt _0802F52E: ldr r4, _0802F558 @ =gUnknown_3004FF4 ldrb r0, [r4] movs r1, 0x2 eors r0, r1 strb r0, [r4] movs r0, 0x5 bl PlaySE ldr r1, _0802F55C @ =gUnknown_2023FFC ldr r0, _0802F560 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r4] ldrb r0, [r0] cmp r1, r0 bne _0802F564 adds r0, r1, 0 movs r1, 0 bl MoveSelectionCreateCursorAt b _0802F56C .align 2, 0 _0802F558: .4byte gUnknown_3004FF4 _0802F55C: .4byte gUnknown_2023FFC _0802F560: .4byte gActiveBattler _0802F564: ldrb r0, [r4] movs r1, 0x1B bl MoveSelectionCreateCursorAt _0802F56C: ldr r0, _0802F5A8 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802F600 ldr r3, _0802F5AC @ =gUnknown_3004FF4 ldrb r2, [r3] movs r0, 0x2 ands r0, r2 cmp r0, 0 bne _0802F600 ldr r1, _0802F5B0 @ =gUnknown_3004FF8 movs r0, 0x2 eors r0, r2 ldrb r1, [r1] cmp r0, r1 bcs _0802F600 ldr r0, _0802F5B4 @ =gUnknown_2023FFC ldr r1, _0802F5B8 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 ldrb r0, [r1] cmp r2, r0 bne _0802F5BC ldrb r0, [r1] movs r1, 0x1D bl MoveSelectionCreateCursorAt b _0802F5C2 .align 2, 0 _0802F5A8: .4byte gMain _0802F5AC: .4byte gUnknown_3004FF4 _0802F5B0: .4byte gUnknown_3004FF8 _0802F5B4: .4byte gUnknown_2023FFC _0802F5B8: .4byte gActiveBattler _0802F5BC: ldrb r0, [r3] bl MoveSelectionDestroyCursorAt _0802F5C2: ldr r4, _0802F5EC @ =gUnknown_3004FF4 ldrb r0, [r4] movs r1, 0x2 eors r0, r1 strb r0, [r4] movs r0, 0x5 bl PlaySE ldr r1, _0802F5F0 @ =gUnknown_2023FFC ldr r0, _0802F5F4 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r4] ldrb r0, [r0] cmp r1, r0 bne _0802F5F8 adds r0, r1, 0 movs r1, 0 bl MoveSelectionCreateCursorAt b _0802F600 .align 2, 0 _0802F5EC: .4byte gUnknown_3004FF4 _0802F5F0: .4byte gUnknown_2023FFC _0802F5F4: .4byte gActiveBattler _0802F5F8: ldrb r0, [r4] movs r1, 0x1B bl MoveSelectionCreateCursorAt _0802F600: add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_802EF58 thumb_func_start sub_802F610 sub_802F610: @ 802F610 push {lr} ldr r0, _0802F64C @ =gUnknown_3003F3C ldrb r0, [r0] cmp r0, 0 bne _0802F664 ldr r0, _0802F650 @ =gUnknown_3003F64 ldrb r0, [r0] cmp r0, 0 bne _0802F694 movs r0, 0x53 bl m4aSongNumStop ldr r3, _0802F654 @ =gMain ldr r0, _0802F658 @ =0x00000439 adds r2, r3, r0 ldrb r1, [r2] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _0802F65C @ =gUnknown_3004F80 ldr r0, [r0] str r0, [r3] ldr r0, _0802F660 @ =sub_8011A1C bl SetMainCallback2 bl FreeAllWindowBuffers b _0802F694 .align 2, 0 _0802F64C: .4byte gUnknown_3003F3C _0802F650: .4byte gUnknown_3003F64 _0802F654: .4byte gMain _0802F658: .4byte 0x00000439 _0802F65C: .4byte gUnknown_3004F80 _0802F660: .4byte sub_8011A1C _0802F664: bl sub_800A4BC lsls r0, 24 cmp r0, 0 beq _0802F694 movs r0, 0x53 bl m4aSongNumStop ldr r3, _0802F698 @ =gMain ldr r0, _0802F69C @ =0x00000439 adds r2, r3, r0 ldrb r1, [r2] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _0802F6A0 @ =gUnknown_3004F80 ldr r0, [r0] str r0, [r3] ldr r0, _0802F6A4 @ =sub_8011A1C bl SetMainCallback2 bl FreeAllWindowBuffers _0802F694: pop {r0} bx r0 .align 2, 0 _0802F698: .4byte gMain _0802F69C: .4byte 0x00000439 _0802F6A0: .4byte gUnknown_3004F80 _0802F6A4: .4byte sub_8011A1C thumb_func_end sub_802F610 thumb_func_start sub_802F6A8 sub_802F6A8: @ 802F6A8 push {lr} ldr r0, _0802F6D0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0802F71E ldr r0, _0802F6D4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0802F6FC ldr r0, _0802F6D8 @ =gUnknown_3003F3C ldrb r0, [r0] cmp r0, 0 bne _0802F6DC bl sub_800AAC0 b _0802F6E0 .align 2, 0 _0802F6D0: .4byte gPaletteFade _0802F6D4: .4byte gBattleTypeFlags _0802F6D8: .4byte gUnknown_3003F3C _0802F6DC: bl sub_800AB9C _0802F6E0: ldr r1, _0802F6F0 @ =gUnknown_3004FE0 ldr r0, _0802F6F4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _0802F6F8 @ =sub_802F610 str r1, [r0] b _0802F71E .align 2, 0 _0802F6F0: .4byte gUnknown_3004FE0 _0802F6F4: .4byte gActiveBattler _0802F6F8: .4byte sub_802F610 _0802F6FC: movs r0, 0x53 bl m4aSongNumStop ldr r2, _0802F724 @ =gMain ldr r0, _0802F728 @ =0x00000439 adds r3, r2, r0 ldrb r1, [r3] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r3] ldr r0, _0802F72C @ =gUnknown_3004F80 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] bl SetMainCallback2 _0802F71E: pop {r0} bx r0 .align 2, 0 _0802F724: .4byte gMain _0802F728: .4byte 0x00000439 _0802F72C: .4byte gUnknown_3004F80 thumb_func_end sub_802F6A8 thumb_func_start sub_802F730 sub_802F730: @ 802F730 push {lr} ldr r2, _0802F758 @ =gSprites ldr r1, _0802F75C @ =gUnknown_2023D44 ldr r0, _0802F760 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _0802F764 @ =SpriteCallbackDummy cmp r1, r0 bne _0802F754 bl PlayerBufferExecCompleted _0802F754: pop {r0} bx r0 .align 2, 0 _0802F758: .4byte gSprites _0802F75C: .4byte gUnknown_2023D44 _0802F760: .4byte gActiveBattler _0802F764: .4byte SpriteCallbackDummy thumb_func_end sub_802F730 thumb_func_start sub_802F768 sub_802F768: @ 802F768 push {lr} ldr r2, _0802F790 @ =gSprites ldr r1, _0802F794 @ =gUnknown_2023D44 ldr r0, _0802F798 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _0802F79C @ =SpriteCallbackDummy cmp r1, r0 bne _0802F78C bl PlayerBufferExecCompleted _0802F78C: pop {r0} bx r0 .align 2, 0 _0802F790: .4byte gSprites _0802F794: .4byte gUnknown_2023D44 _0802F798: .4byte gActiveBattler _0802F79C: .4byte SpriteCallbackDummy thumb_func_end sub_802F768 thumb_func_start sub_802F7A0 sub_802F7A0: @ 802F7A0 push {r4-r6,lr} ldr r6, _0802F7FC @ =gSprites ldr r5, _0802F800 @ =gUnknown_2023D44 ldr r4, _0802F804 @ =gActiveBattler ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r6, 0 adds r1, 0x1C adds r0, r1 ldr r1, [r0] ldr r0, _0802F808 @ =SpriteCallbackDummy cmp r1, r0 bne _0802F7F4 ldr r0, _0802F80C @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] bl nullsub_16 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl FreeSpriteOamMatrix ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl DestroySprite bl PlayerBufferExecCompleted _0802F7F4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802F7FC: .4byte gSprites _0802F800: .4byte gUnknown_2023D44 _0802F804: .4byte gActiveBattler _0802F808: .4byte SpriteCallbackDummy _0802F80C: .4byte gSaveBlock2Ptr thumb_func_end sub_802F7A0 thumb_func_start sub_802F810 sub_802F810: @ 802F810 push {r4,lr} ldr r4, _0802F850 @ =gUnknown_2024018 ldr r1, [r4] ldr r3, _0802F854 @ =gActiveBattler ldrb r0, [r3] ldr r2, [r1, 0x4] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x9] subs r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _0802F848 ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] bl PlayerBufferExecCompleted _0802F848: pop {r4} pop {r0} bx r0 .align 2, 0 _0802F850: .4byte gUnknown_2024018 _0802F854: .4byte gActiveBattler thumb_func_end sub_802F810 thumb_func_start sub_802F858 sub_802F858: @ 802F858 push {r4-r7,lr} movs r6, 0 bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _0802F87C bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _0802F8B0 ldr r0, _0802F89C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0802F8B0 _0802F87C: ldr r2, _0802F8A0 @ =gSprites ldr r1, _0802F8A4 @ =gUnknown_3004FF0 ldr r0, _0802F8A8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _0802F8AC @ =SpriteCallbackDummy cmp r1, r0 bne _0802F8E6 b _0802F8E4 .align 2, 0 _0802F89C: .4byte gBattleTypeFlags _0802F8A0: .4byte gSprites _0802F8A4: .4byte gUnknown_3004FF0 _0802F8A8: .4byte gActiveBattler _0802F8AC: .4byte SpriteCallbackDummy _0802F8B0: ldr r2, _0802F9B0 @ =gSprites ldr r5, _0802F9B4 @ =gUnknown_3004FF0 ldr r0, _0802F9B8 @ =gActiveBattler ldrb r3, [r0] adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r4, [r0] ldr r0, _0802F9BC @ =SpriteCallbackDummy cmp r4, r0 bne _0802F8E6 movs r0, 0x2 eors r3, r0 adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r0, [r0] cmp r0, r4 bne _0802F8E6 _0802F8E4: movs r6, 0x1 _0802F8E6: bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 beq _0802F8F2 movs r6, 0 _0802F8F2: cmp r6, 0 bne _0802F8F8 b _0802FA32 _0802F8F8: ldr r0, _0802F9C0 @ =gUnknown_2024018 mov r12, r0 ldr r0, [r0] ldr r7, _0802F9B8 @ =gActiveBattler ldrb r2, [r7] ldr r3, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r4, r0, r3 ldrb r1, [r4, 0x1] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _0802F91A b _0802FA32 _0802F91A: movs r6, 0x2 adds r1, r6, 0 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x1] adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _0802F934 b _0802FA32 _0802F934: ldrb r1, [r4] movs r3, 0x7F adds r0, r3, 0 ands r0, r1 strb r0, [r4] mov r1, r12 ldr r0, [r1] ldrb r2, [r7] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r4, 0x2 negs r4, r4 adds r0, r4, 0 ands r0, r2 strb r0, [r1, 0x1] mov r0, r12 ldr r2, [r0] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] ands r3, r1 strb r3, [r0] mov r1, r12 ldr r2, [r1] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] ands r4, r1 strb r4, [r0, 0x1] ldr r4, _0802F9C4 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r0, _0802F9C8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0802F9D0 ldr r0, _0802F9CC @ =gMPlayInfo_BGM bl m4aMPlayContinue b _0802F9DC .align 2, 0 _0802F9B0: .4byte gSprites _0802F9B4: .4byte gUnknown_3004FF0 _0802F9B8: .4byte gActiveBattler _0802F9BC: .4byte SpriteCallbackDummy _0802F9C0: .4byte gUnknown_2024018 _0802F9C4: .4byte 0x000027f9 _0802F9C8: .4byte gBattleTypeFlags _0802F9CC: .4byte gMPlayInfo_BGM _0802F9D0: ldr r0, _0802FA38 @ =gMPlayInfo_BGM ldr r1, _0802FA3C @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl _0802F9DC: ldr r7, _0802FA40 @ =gBattlerPartyIndexes ldr r4, _0802FA44 @ =gActiveBattler ldrb r1, [r4] lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r5, _0802FA48 @ =gPlayerParty adds r0, r5 bl HandleLowHpMusicChange bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _0802FA12 ldrb r0, [r4] movs r1, 0x2 eors r1, r0 lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r5 bl HandleLowHpMusicChange _0802FA12: ldr r0, _0802FA4C @ =gUnknown_2024018 ldr r0, [r0] ldrb r1, [r4] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] ldr r1, _0802FA50 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0802FA54 @ =sub_802F810 str r1, [r0] _0802FA32: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802FA38: .4byte gMPlayInfo_BGM _0802FA3C: .4byte 0x0000ffff _0802FA40: .4byte gBattlerPartyIndexes _0802FA44: .4byte gActiveBattler _0802FA48: .4byte gPlayerParty _0802FA4C: .4byte gUnknown_2024018 _0802FA50: .4byte gUnknown_3004FE0 _0802FA54: .4byte sub_802F810 thumb_func_end sub_802F858 thumb_func_start sub_802FA58 sub_802FA58: @ 802FA58 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802FBCC @ =gUnknown_2024018 mov r9, r0 ldr r0, [r0] ldr r1, _0802FBD0 @ =gActiveBattler mov r8, r1 ldrb r2, [r1] ldr r3, [r0, 0x4] lsls r5, r2, 1 adds r0, r5, r2 lsls r0, 2 adds r0, r3 ldrb r4, [r0] movs r6, 0x8 adds r0, r6, 0 ands r0, r4 cmp r0, 0 beq _0802FA84 b _0802FBBE _0802FA84: movs r7, 0x2 adds r1, r2, 0 eors r1, r7 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0] adds r0, r6, 0 ands r0, r1 cmp r0, 0 beq _0802FA9E b _0802FBBE _0802FA9E: movs r6, 0x80 adds r0, r6, 0 ands r0, r4 cmp r0, 0 bne _0802FABC ldr r0, _0802FBD4 @ =gBattlerPartyIndexes adds r0, r5, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _0802FBD8 @ =gPlayerParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _0802FABC: mov r2, r9 ldr r1, [r2] mov r2, r8 ldrb r0, [r2] adds r2, r7, 0 eors r2, r0 ldr r1, [r1, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _0802FAF0 ldr r0, _0802FBD4 @ =gBattlerPartyIndexes adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _0802FBD8 @ =gPlayerParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _0802FAF0: bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _0802FB5C ldr r0, _0802FBDC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 bne _0802FB5C ldr r1, _0802FBE0 @ =gUnknown_3004FFC mov r2, r8 ldrb r0, [r2] eors r0, r7 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0802FBE4 @ =gSprites adds r0, r1 bl DestroySprite ldr r4, _0802FBE8 @ =gUnknown_3004FF0 mov r1, r8 ldrb r0, [r1] adds r1, r7, 0 eors r1, r0 adds r0, r1, r4 ldrb r0, [r0] ldr r2, _0802FBD4 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _0802FBD8 @ =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute mov r2, r8 ldrb r0, [r2] eors r0, r7 bl sub_804BD94 mov r1, r8 ldrb r0, [r1] eors r0, r7 adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible _0802FB5C: ldr r1, _0802FBE0 @ =gUnknown_3004FFC ldr r4, _0802FBD0 @ =gActiveBattler ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0802FBE4 @ =gSprites adds r0, r1 bl DestroySprite ldr r5, _0802FBE8 @ =gUnknown_3004FF0 ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] ldr r2, _0802FBD4 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _0802FBD8 @ =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_804BD94 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible ldr r0, _0802FBCC @ =gUnknown_2024018 ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] movs r0, 0x2 negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] ldr r1, _0802FBEC @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0802FBF0 @ =sub_802F858 str r1, [r0] _0802FBBE: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802FBCC: .4byte gUnknown_2024018 _0802FBD0: .4byte gActiveBattler _0802FBD4: .4byte gBattlerPartyIndexes _0802FBD8: .4byte gPlayerParty _0802FBDC: .4byte gBattleTypeFlags _0802FBE0: .4byte gUnknown_3004FFC _0802FBE4: .4byte gSprites _0802FBE8: .4byte gUnknown_3004FF0 _0802FBEC: .4byte gUnknown_3004FE0 _0802FBF0: .4byte sub_802F858 thumb_func_end sub_802FA58 thumb_func_start sub_802FBF4 sub_802FBF4: @ 802FBF4 push {r4-r6,lr} ldr r2, _0802FC8C @ =gSprites ldr r0, _0802FC90 @ =gUnknown_3004FF0 ldr r6, _0802FC94 @ =gActiveBattler ldrb r3, [r6] adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _0802FC98 @ =SpriteCallbackDummy cmp r1, r0 bne _0802FC84 ldr r5, _0802FC9C @ =gUnknown_2024018 ldr r0, [r5] ldr r1, [r0, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r2, r0, r1 ldrb r1, [r2, 0x1] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0802FC84 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldr r0, [r5] ldrb r2, [r6] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, _0802FCA0 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r0, [r5] ldrb r2, [r6] ldr r1, [r0] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0802FC78 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x6 bl InitAndLaunchSpecialAnimation _0802FC78: ldr r0, _0802FCA4 @ =gUnknown_3004FE0 ldrb r1, [r6] lsls r1, 2 adds r1, r0 ldr r0, _0802FCA8 @ =sub_802FCAC str r0, [r1] _0802FC84: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802FC8C: .4byte gSprites _0802FC90: .4byte gUnknown_3004FF0 _0802FC94: .4byte gActiveBattler _0802FC98: .4byte SpriteCallbackDummy _0802FC9C: .4byte gUnknown_2024018 _0802FCA0: .4byte 0x000027f9 _0802FCA4: .4byte gUnknown_3004FE0 _0802FCA8: .4byte sub_802FCAC thumb_func_end sub_802FBF4 thumb_func_start sub_802FCAC sub_802FCAC: @ 802FCAC push {r4,lr} ldr r0, _0802FD00 @ =gUnknown_2024018 ldr r0, [r0] ldr r4, _0802FD04 @ =gActiveBattler ldrb r1, [r4] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0802FCFA bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 bne _0802FCFA ldr r0, _0802FD08 @ =gMPlayInfo_BGM ldr r1, _0802FD0C @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl ldr r2, _0802FD10 @ =gBattlerPartyIndexes ldrb r1, [r4] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _0802FD14 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange bl PlayerBufferExecCompleted _0802FCFA: pop {r4} pop {r0} bx r0 .align 2, 0 _0802FD00: .4byte gUnknown_2024018 _0802FD04: .4byte gActiveBattler _0802FD08: .4byte gMPlayInfo_BGM _0802FD0C: .4byte 0x0000ffff _0802FD10: .4byte gBattlerPartyIndexes _0802FD14: .4byte gPlayerParty thumb_func_end sub_802FCAC thumb_func_start sub_802FD18 sub_802FD18: @ 802FD18 push {r4-r6,lr} ldr r6, _0802FDCC @ =gUnknown_2024018 ldr r0, [r6] ldr r5, _0802FDD0 @ =gActiveBattler ldrb r2, [r5] ldr r1, [r0, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x88 ands r0, r1 cmp r0, 0 bne _0802FD4A ldr r0, _0802FDD4 @ =gBattlerPartyIndexes adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _0802FDD8 @ =gPlayerParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _0802FD4A: ldr r4, _0802FDDC @ =gSprites ldr r0, _0802FDE0 @ =gUnknown_3004FFC ldrb r2, [r5] adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r3, r0, 2 adds r0, r4, 0 adds r0, 0x1C adds r0, r3, r0 ldr r1, [r0] ldr r0, _0802FDE4 @ =SpriteCallbackDummy cmp r1, r0 bne _0802FDC4 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _0802FDC4 adds r0, r3, r4 bl DestroySprite ldr r4, _0802FDE8 @ =gUnknown_3004FF0 ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] ldr r2, _0802FDD4 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _0802FDD8 @ =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_804BD94 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility ldr r1, _0802FDEC @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _0802FDF0 @ =sub_802FBF4 str r1, [r0] _0802FDC4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802FDCC: .4byte gUnknown_2024018 _0802FDD0: .4byte gActiveBattler _0802FDD4: .4byte gBattlerPartyIndexes _0802FDD8: .4byte gPlayerParty _0802FDDC: .4byte gSprites _0802FDE0: .4byte gUnknown_3004FFC _0802FDE4: .4byte SpriteCallbackDummy _0802FDE8: .4byte gUnknown_3004FF0 _0802FDEC: .4byte gUnknown_3004FE0 _0802FDF0: .4byte sub_802FBF4 thumb_func_end sub_802FD18 thumb_func_start c3_0802FDF4 c3_0802FDF4: @ 802FDF4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 bne _0802FE16 ldr r0, _0802FE1C @ =gMPlayInfo_BGM ldr r1, _0802FE20 @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl adds r0, r4, 0 bl DestroyTask _0802FE16: pop {r4} pop {r0} bx r0 .align 2, 0 _0802FE1C: .4byte gMPlayInfo_BGM _0802FE20: .4byte 0x0000ffff thumb_func_end c3_0802FDF4 thumb_func_start CompleteOnHealthbarDone CompleteOnHealthbarDone: @ 802FE24 push {r4-r6,lr} ldr r5, _0802FE64 @ =gActiveBattler ldrb r0, [r5] ldr r6, _0802FE68 @ =gUnknown_3004FF0 adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 movs r3, 0 bl sub_8049FD8 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0802FE6C ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] movs r2, 0 bl sub_8048440 b _0802FE86 .align 2, 0 _0802FE64: .4byte gActiveBattler _0802FE68: .4byte gUnknown_3004FF0 _0802FE6C: ldr r2, _0802FE8C @ =gBattlerPartyIndexes ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _0802FE90 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange bl PlayerBufferExecCompleted _0802FE86: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802FE8C: .4byte gBattlerPartyIndexes _0802FE90: .4byte gPlayerParty thumb_func_end CompleteOnHealthbarDone thumb_func_start sub_802FE94 sub_802FE94: @ 802FE94 push {lr} movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _0802FEA6 bl PlayerBufferExecCompleted _0802FEA6: pop {r0} bx r0 thumb_func_end sub_802FE94 thumb_func_start sub_802FEAC sub_802FEAC: @ 802FEAC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r1, _0802FFAC @ =gTasks lsls r0, 2 add r0, r9 lsls r0, 3 adds r0, r1 mov r8, r0 ldrb r0, [r0, 0x8] mov r10, r0 mov r1, r8 ldrb r7, [r1, 0xC] str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] bl sub_8075290 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0802FEF2 ldr r1, _0802FFB0 @ =gBattlerPartyIndexes lsls r0, r7, 1 adds r0, r1 ldrh r0, [r0] cmp r10, r0 bne _0802FEF2 b _08030008 _0802FEF2: movs r0, 0x64 mov r1, r10 muls r1, r0 ldr r0, _0802FFB4 @ =gPlayerParty adds r6, r1, r0 adds r0, r6, 0 movs r1, 0xB bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 adds r0, r6, 0 movs r1, 0x38 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 movs r1, 0x19 bl GetMonData str r0, [sp, 0x4] ldr r3, _0802FFB8 @ =gExperienceTables adds r4, 0x1 lsls r4, 2 ldr r2, _0802FFBC @ =gBaseStats lsls r1, r5, 3 subs r1, r5 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x13] movs r1, 0xCA lsls r1, 1 muls r1, r2 adds r4, r1 adds r4, r3 ldr r2, [r4] str r2, [sp] ldr r3, [sp, 0xC] lsls r1, r3, 16 asrs r1, 16 adds r0, r1 cmp r0, r2 bcc _0802FFE0 adds r0, r6, 0 movs r1, 0x19 mov r2, sp bl SetMonData adds r0, r6, 0 bl CalculateMonStats ldr r2, [sp] add r0, sp, 0x4 ldrh r0, [r0] subs r2, r0 ldr r0, [sp, 0xC] subs r2, r0, r2 ldr r4, _0802FFC0 @ =gActiveBattler ldrb r5, [r4] strb r7, [r4] lsls r2, 16 lsrs r2, 16 movs r0, 0x1 movs r1, 0xB bl EmitTwoReturnValues strb r5, [r4] bl sub_8075290 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0802FFC8 ldr r2, _0802FFB0 @ =gBattlerPartyIndexes lsls r0, r7, 1 adds r0, r2 mov r1, r10 ldrh r0, [r0] cmp r1, r0 beq _0802FFA6 movs r0, 0x2 eors r7, r0 lsls r0, r7, 1 adds r0, r2 ldrh r0, [r0] cmp r1, r0 bne _0802FFC8 _0802FFA6: ldr r0, _0802FFC4 @ =sub_8030238 b _0803000A .align 2, 0 _0802FFAC: .4byte gTasks _0802FFB0: .4byte gBattlerPartyIndexes _0802FFB4: .4byte gPlayerParty _0802FFB8: .4byte gExperienceTables _0802FFBC: .4byte gBaseStats _0802FFC0: .4byte gActiveBattler _0802FFC4: .4byte sub_8030238 _0802FFC8: ldr r0, _0802FFD8 @ =gTasks mov r2, r9 lsls r1, r2, 2 add r1, r9 lsls r1, 3 adds r1, r0 ldr r0, _0802FFDC @ =sub_8030350 b _0803000C .align 2, 0 _0802FFD8: .4byte gTasks _0802FFDC: .4byte sub_8030350 _0802FFE0: str r0, [sp, 0x4] add r2, sp, 0x4 adds r0, r6, 0 movs r1, 0x19 bl SetMonData ldr r1, _08030000 @ =gUnknown_3004FE0 ldr r3, [sp, 0x8] lsls r0, r3, 2 adds r0, r1 ldr r1, _08030004 @ =sub_802FE94 str r1, [r0] mov r0, r9 bl DestroyTask b _0803000E .align 2, 0 _08030000: .4byte gUnknown_3004FE0 _08030004: .4byte sub_802FE94 _08030008: ldr r0, _08030020 @ =sub_8030024 _0803000A: mov r1, r8 _0803000C: str r0, [r1] _0803000E: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030020: .4byte sub_8030024 thumb_func_end sub_802FEAC thumb_func_start sub_8030024 sub_8030024: @ 8030024 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 ldr r1, _080300DC @ =gTasks lsls r2, r0, 2 mov r8, r2 add r8, r0 mov r0, r8 lsls r0, 3 mov r8, r0 add r8, r1 mov r2, r8 ldrb r1, [r2, 0x8] movs r0, 0xA ldrsh r2, [r2, r0] mov r9, r2 mov r2, r8 ldrb r2, [r2, 0xC] mov r10, r2 movs r0, 0x64 adds r6, r1, 0 muls r6, r0 ldr r0, _080300E0 @ =gPlayerParty adds r6, r0 adds r0, r6, 0 movs r1, 0x38 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 movs r1, 0xB bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 adds r0, r6, 0 movs r1, 0x19 bl GetMonData adds r3, r0, 0 ldr r6, _080300E4 @ =gExperienceTables lsls r1, r4, 2 ldr r2, _080300E8 @ =gBaseStats lsls r0, r5, 3 subs r0, r5 lsls r0, 2 adds r0, r2 ldrb r2, [r0, 0x13] movs r0, 0xCA lsls r0, 1 muls r0, r2 adds r1, r0 adds r1, r6 ldr r1, [r1] subs r3, r1 adds r4, 0x1 lsls r4, 2 adds r4, r0 adds r4, r6 ldr r2, [r4] subs r2, r1 ldr r0, _080300EC @ =gUnknown_3004FF0 add r0, r10 ldrb r1, [r0] mov r0, r9 negs r0, r0 str r0, [sp] mov r0, r10 bl SetBattleBarStruct movs r0, 0x1B bl PlaySE ldr r0, _080300F0 @ =sub_80300F4 mov r1, r8 str r0, [r1] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080300DC: .4byte gTasks _080300E0: .4byte gPlayerParty _080300E4: .4byte gExperienceTables _080300E8: .4byte gBaseStats _080300EC: .4byte gUnknown_3004FF0 _080300F0: .4byte sub_80300F4 thumb_func_end sub_8030024 thumb_func_start sub_80300F4 sub_80300F4: @ 80300F4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, _08030120 @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r6, r0, r1 ldrh r1, [r6, 0x1C] movs r2, 0x1C ldrsh r0, [r6, r2] cmp r0, 0xC bgt _08030124 adds r0, r1, 0x1 strh r0, [r6, 0x1C] b _08030220 .align 2, 0 _08030120: .4byte gTasks _08030124: ldrb r0, [r6, 0x8] mov r9, r0 ldrh r2, [r6, 0xA] mov r10, r2 ldrb r7, [r6, 0xC] ldr r5, _080301EC @ =gUnknown_3004FF0 adds r5, r7, r5 ldrb r1, [r5] adds r0, r7, 0 movs r2, 0x1 movs r3, 0 bl sub_8049FD8 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] bl SetHealthboxSpriteVisible lsls r4, 16 asrs r4, 16 movs r0, 0x1 negs r0, r0 cmp r4, r0 bne _08030220 movs r0, 0x1B bl m4aSongNumStop movs r0, 0x64 mov r1, r9 muls r1, r0 ldr r0, _080301F0 @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0x38 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 movs r1, 0x19 bl GetMonData str r0, [sp, 0x4] adds r0, r5, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 ldr r3, _080301F4 @ =gExperienceTables adds r4, 0x1 lsls r4, 2 ldr r2, _080301F8 @ =gBaseStats lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r2 ldrb r1, [r1, 0x13] movs r0, 0xCA lsls r0, 1 muls r0, r1 adds r4, r0 adds r4, r3 ldr r1, [r4] str r1, [sp] mov r2, r10 lsls r0, r2, 16 asrs r4, r0, 16 ldr r0, [sp, 0x4] adds r0, r4 cmp r0, r1 blt _08030204 adds r0, r5, 0 movs r1, 0x19 mov r2, sp bl SetMonData adds r0, r5, 0 bl CalculateMonStats ldr r2, [sp] add r0, sp, 0x4 ldrh r0, [r0] subs r2, r0 subs r2, r4, r2 ldr r4, _080301FC @ =gActiveBattler ldrb r5, [r4] strb r7, [r4] lsls r2, 16 lsrs r2, 16 movs r0, 0x1 movs r1, 0xB bl EmitTwoReturnValues strb r5, [r4] ldr r0, _08030200 @ =sub_8030238 str r0, [r6] b _08030220 .align 2, 0 _080301EC: .4byte gUnknown_3004FF0 _080301F0: .4byte gPlayerParty _080301F4: .4byte gExperienceTables _080301F8: .4byte gBaseStats _080301FC: .4byte gActiveBattler _08030200: .4byte sub_8030238 _08030204: str r0, [sp, 0x4] add r2, sp, 0x4 adds r0, r5, 0 movs r1, 0x19 bl SetMonData ldr r1, _08030230 @ =gUnknown_3004FE0 lsls r0, r7, 2 adds r0, r1 ldr r1, _08030234 @ =sub_802FE94 str r1, [r0] mov r0, r8 bl DestroyTask _08030220: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030230: .4byte gUnknown_3004FE0 _08030234: .4byte sub_802FE94 thumb_func_end sub_80300F4 thumb_func_start sub_8030238 sub_8030238: @ 8030238 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0803028C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] bl sub_8075290 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0803026C ldr r1, _08030290 @ =gBattlerPartyIndexes movs r0, 0x2 adds r2, r4, 0 eors r2, r0 lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 bne _0803026C adds r4, r2, 0 _0803026C: adds r0, r4, 0 adds r1, r4, 0 adds r2, r4, 0 movs r3, 0 bl InitAndLaunchSpecialAnimation ldr r0, _0803028C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _08030294 @ =sub_8030298 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0803028C: .4byte gTasks _08030290: .4byte gBattlerPartyIndexes _08030294: .4byte sub_8030298 thumb_func_end sub_8030238 thumb_func_start sub_8030298 sub_8030298: @ 8030298 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r1, _08030304 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] ldr r0, _08030308 @ =gUnknown_2024018 ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 adds r0, r5 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0803033A ldrb r4, [r2, 0x8] movs r0, 0x64 adds r1, r4, 0 muls r1, r0 ldr r0, _0803030C @ =gPlayerParty adds r7, r1, r0 adds r0, r7, 0 movs r1, 0x38 bl GetMonData bl sub_8075290 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08030318 ldr r1, _08030310 @ =gBattlerPartyIndexes movs r0, 0x2 adds r2, r5, 0 eors r2, r0 lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 bne _08030318 ldr r0, _08030314 @ =gUnknown_3004FF0 adds r0, r2, r0 ldrb r0, [r0] adds r1, r7, 0 movs r2, 0 bl UpdateHealthboxAttribute b _0803032C .align 2, 0 _08030304: .4byte gTasks _08030308: .4byte gUnknown_2024018 _0803030C: .4byte gPlayerParty _08030310: .4byte gBattlerPartyIndexes _08030314: .4byte gUnknown_3004FF0 _08030318: ldr r0, _08030340 @ =gUnknown_3004FF0 adds r0, r5, r0 ldrb r0, [r0] movs r1, 0x64 muls r1, r4 ldr r2, _08030344 @ =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute _0803032C: ldr r0, _08030348 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _0803034C @ =sub_8030350 str r0, [r1] _0803033A: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030340: .4byte gUnknown_3004FF0 _08030344: .4byte gPlayerParty _08030348: .4byte gTasks _0803034C: .4byte sub_8030350 thumb_func_end sub_8030298 thumb_func_start sub_8030350 sub_8030350: @ 8030350 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _08030380 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r0, 0xC ldrsh r6, [r4, r0] lsls r0, r6, 24 lsrs r0, 24 bl sub_8072DF0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08030388 ldr r0, _08030384 @ =sub_80303A8 str r0, [r4] movs r0, 0 strh r0, [r4, 0x26] b _08030398 .align 2, 0 _08030380: .4byte gTasks _08030384: .4byte sub_80303A8 _08030388: ldr r0, _080303A0 @ =gUnknown_3004FE0 lsls r1, r6, 2 adds r1, r0 ldr r0, _080303A4 @ =sub_802FE94 str r0, [r1] adds r0, r5, 0 bl DestroyTask _08030398: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080303A0: .4byte gUnknown_3004FE0 _080303A4: .4byte sub_802FE94 thumb_func_end sub_8030350 thumb_func_start sub_80303A8 sub_80303A8: @ 80303A8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r0, 2 add r0, r8 lsls r0, 3 ldr r1, _080303FC @ =gTasks+0x8 adds r5, r0, r1 ldrb r7, [r5, 0x4] adds r0, r7, 0 bl sub_80768B0 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 eors r0, r1 negs r1, r0 orrs r1, r0 lsrs r6, r1, 31 ldr r0, _08030400 @ =gUnknown_2023D44 adds r0, r7, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08030404 @ =gSprites adds r4, r0, r1 movs r1, 0x1E ldrsh r0, [r5, r1] cmp r0, 0x6 bls _080303F0 b _0803051C _080303F0: lsls r0, 2 ldr r1, _08030408 @ =_0803040C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080303FC: .4byte gTasks+0x8 _08030400: .4byte gUnknown_2023D44 _08030404: .4byte gSprites _08030408: .4byte _0803040C .align 2, 0 _0803040C: .4byte _08030428 .4byte _0803047C .4byte _08030486 .4byte _080304C0 .4byte _080304E0 .4byte _080304DA .4byte _080304E8 _08030428: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _0803051C cmp r6, 0 bne _0803044C ldr r1, _08030444 @ =gUnknown_2022978 ldrh r0, [r1] strh r0, [r5, 0x1C] ldr r2, _08030448 @ =gUnknown_202297A b _08030454 .align 2, 0 _08030444: .4byte gUnknown_2022978 _08030448: .4byte gUnknown_202297A _0803044C: ldr r1, _08030474 @ =gUnknown_202297C ldrh r0, [r1] strh r0, [r5, 0x1C] ldr r2, _08030478 @ =gUnknown_202297E _08030454: ldrh r0, [r2] strh r0, [r5, 0x1A] ldrh r0, [r4, 0x24] ldrh r3, [r4, 0x20] adds r0, r3 negs r0, r0 adds r0, 0x20 strh r0, [r1] ldrh r0, [r4, 0x26] ldrh r4, [r4, 0x22] adds r0, r4 negs r0, r0 adds r0, 0x20 strh r0, [r2] b _080304E0 .align 2, 0 _08030474: .4byte gUnknown_202297C _08030478: .4byte gUnknown_202297E _0803047C: adds r0, r7, 0 adds r1, r6, 0 bl sub_8072E48 b _080304E0 _08030486: movs r0, 0x58 bl PlaySE bl IsMonGettingExpSentOut cmp r0, 0 beq _080304E0 ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 lsls r0, 16 lsrs r0, 16 ldrh r1, [r4, 0x26] ldrh r4, [r4, 0x22] adds r1, r4 lsls r1, 16 lsrs r1, 16 ldr r3, _080304BC @ =0x00002710 movs r2, 0x1 str r2, [sp] movs r2, 0 str r2, [sp, 0x4] adds r2, r3, 0 bl sub_811E5B8 b _080304E0 .align 2, 0 _080304BC: .4byte 0x00002710 _080304C0: bl sub_811E680 lsls r0, 24 cmp r0, 0 bne _0803051C adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] b _080304E0 _080304DA: adds r0, r6, 0 bl sub_8073128 _080304E0: ldrh r0, [r5, 0x1E] adds r0, 0x1 strh r0, [r5, 0x1E] b _0803051C _080304E8: cmp r6, 0 bne _08030500 ldr r1, _080304F8 @ =gUnknown_2022978 ldrh r0, [r5, 0x1C] strh r0, [r1] ldr r1, _080304FC @ =gUnknown_202297A b _08030508 .align 2, 0 _080304F8: .4byte gUnknown_2022978 _080304FC: .4byte gUnknown_202297A _08030500: ldr r1, _08030528 @ =gUnknown_202297C ldrh r0, [r5, 0x1C] strh r0, [r1] ldr r1, _0803052C @ =gUnknown_202297E _08030508: ldrh r0, [r5, 0x1A] strh r0, [r1] ldr r0, _08030530 @ =gUnknown_3004FE0 lsls r1, r7, 2 adds r1, r0 ldr r0, _08030534 @ =sub_802FE94 str r0, [r1] mov r0, r8 bl DestroyTask _0803051C: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030528: .4byte gUnknown_202297C _0803052C: .4byte gUnknown_202297E _08030530: .4byte gUnknown_3004FE0 _08030534: .4byte sub_802FE94 thumb_func_end sub_80303A8 thumb_func_start sub_8030538 sub_8030538: @ 8030538 push {r4-r6,lr} ldr r6, _08030590 @ =gSprites ldr r5, _08030594 @ =gUnknown_2023D44 ldr r4, _08030598 @ =gActiveBattler ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, r0, r6 movs r1, 0x22 ldrsh r0, [r2, r1] movs r3, 0x26 ldrsh r1, [r2, r3] adds r0, r1 cmp r0, 0xA0 ble _08030588 ldrb r0, [r2, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl DestroySprite ldr r1, _0803059C @ =gUnknown_3004FF0 ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _08030588: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08030590: .4byte gSprites _08030594: .4byte gUnknown_2023D44 _08030598: .4byte gActiveBattler _0803059C: .4byte gUnknown_3004FF0 thumb_func_end sub_8030538 thumb_func_start sub_80305A0 sub_80305A0: @ 80305A0 push {r4-r6,lr} ldr r0, _080305FC @ =gUnknown_2024018 ldr r0, [r0] ldr r6, _08030600 @ =gActiveBattler ldrb r2, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080305F4 ldr r5, _08030604 @ =gUnknown_2023D44 adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _08030608 @ =gSprites adds r0, r4 bl FreeSpriteOamMatrix ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite ldr r1, _0803060C @ =gUnknown_3004FF0 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _080305F4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080305FC: .4byte gUnknown_2024018 _08030600: .4byte gActiveBattler _08030604: .4byte gUnknown_2023D44 _08030608: .4byte gSprites _0803060C: .4byte gUnknown_3004FF0 thumb_func_end sub_80305A0 thumb_func_start sub_8030610 sub_8030610: @ 8030610 push {lr} movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _08030622 bl PlayerBufferExecCompleted _08030622: pop {r0} bx r0 thumb_func_end sub_8030610 thumb_func_start sub_8030628 sub_8030628: @ 8030628 push {r4,lr} ldr r0, _0803066C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08030666 ldr r1, _08030670 @ =gUnknown_3004FE0 ldr r2, _08030674 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08030678 @ =sub_8030684 str r1, [r0] ldr r3, _0803067C @ =gTasks ldr r1, _08030680 @ =gUnknown_3004FFC ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r3 ldrb r4, [r1, 0x8] bl DestroyTask bl FreeAllWindowBuffers adds r0, r4, 0 bl sub_81278DC _08030666: pop {r4} pop {r0} bx r0 .align 2, 0 _0803066C: .4byte gPaletteFade _08030670: .4byte gUnknown_3004FE0 _08030674: .4byte gActiveBattler _08030678: .4byte sub_8030684 _0803067C: .4byte gTasks _08030680: .4byte gUnknown_3004FFC thumb_func_end sub_8030628 thumb_func_start sub_8030684 sub_8030684: @ 8030684 push {lr} ldr r0, _080306B4 @ =gMain ldr r1, [r0, 0x4] ldr r0, _080306B8 @ =sub_8011100 cmp r1, r0 bne _080306F4 ldr r0, _080306BC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080306F4 ldr r0, _080306C0 @ =gUnknown_203B0C0 ldrb r0, [r0] cmp r0, 0x1 bne _080306CC ldr r0, _080306C4 @ =gUnknown_203B0C1 ldrb r1, [r0] ldr r2, _080306C8 @ =gUnknown_203B0DC movs r0, 0x1 bl EmitChosenMonReturnValue b _080306D6 .align 2, 0 _080306B4: .4byte gMain _080306B8: .4byte sub_8011100 _080306BC: .4byte gPaletteFade _080306C0: .4byte gUnknown_203B0C0 _080306C4: .4byte gUnknown_203B0C1 _080306C8: .4byte gUnknown_203B0DC _080306CC: movs r0, 0x1 movs r1, 0x6 movs r2, 0 bl EmitChosenMonReturnValue _080306D6: ldr r1, _080306F8 @ =gUnknown_2022BC4 ldr r0, _080306FC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _080306F0 bl PrintLinkStandbyMsg _080306F0: bl PlayerBufferExecCompleted _080306F4: pop {r0} bx r0 .align 2, 0 _080306F8: .4byte gUnknown_2022BC4 _080306FC: .4byte gActiveBattler thumb_func_end sub_8030684 thumb_func_start sub_8030700 sub_8030700: @ 8030700 push {lr} ldr r0, _0803072C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08030728 ldr r1, _08030730 @ =gUnknown_3004FE0 ldr r0, _08030734 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08030738 @ =CompleteWhenChoseItem str r1, [r0] bl nullsub_44 bl FreeAllWindowBuffers bl sub_8107ECC _08030728: pop {r0} bx r0 .align 2, 0 _0803072C: .4byte gPaletteFade _08030730: .4byte gUnknown_3004FE0 _08030734: .4byte gActiveBattler _08030738: .4byte CompleteWhenChoseItem thumb_func_end sub_8030700 thumb_func_start CompleteWhenChoseItem CompleteWhenChoseItem: @ 803073C push {lr} ldr r0, _08030768 @ =gMain ldr r1, [r0, 0x4] ldr r0, _0803076C @ =sub_8011100 cmp r1, r0 bne _08030762 ldr r0, _08030770 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08030762 ldr r0, _08030774 @ =gUnknown_203AD30 ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue bl PlayerBufferExecCompleted _08030762: pop {r0} bx r0 .align 2, 0 _08030768: .4byte gMain _0803076C: .4byte sub_8011100 _08030770: .4byte gPaletteFade _08030774: .4byte gUnknown_203AD30 thumb_func_end CompleteWhenChoseItem thumb_func_start CompleteOnSpecialAnimDone CompleteOnSpecialAnimDone: @ 8030778 push {lr} ldr r0, _080307A8 @ =gUnknown_2024005 ldrb r0, [r0] cmp r0, 0 beq _0803079E ldr r0, _080307AC @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _080307B0 @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080307A2 _0803079E: bl PlayerBufferExecCompleted _080307A2: pop {r0} bx r0 .align 2, 0 _080307A8: .4byte gUnknown_2024005 _080307AC: .4byte gUnknown_2024018 _080307B0: .4byte gActiveBattler thumb_func_end CompleteOnSpecialAnimDone thumb_func_start DoHitAnimBlinkSpriteEffect DoHitAnimBlinkSpriteEffect: @ 80307B4 push {r4,lr} ldr r1, _080307F0 @ =gUnknown_2023D44 ldr r0, _080307F4 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] ldr r2, _080307F8 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r0, r2 movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x20 bne _08030800 movs r3, 0 movs r0, 0 strh r0, [r4, 0x30] adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] subs r0, 0x5 ands r0, r1 strb r0, [r2] ldr r0, _080307FC @ =gUnknown_2024005 strb r3, [r0] bl PlayerBufferExecCompleted b _0803082A .align 2, 0 _080307F0: .4byte gUnknown_2023D44 _080307F4: .4byte gActiveBattler _080307F8: .4byte gSprites _080307FC: .4byte gUnknown_2024005 _08030800: ldrh r0, [r4, 0x30] movs r1, 0x3 ands r0, r1 cmp r0, 0 bne _08030824 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] _08030824: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] _0803082A: pop {r4} pop {r0} bx r0 thumb_func_end DoHitAnimBlinkSpriteEffect thumb_func_start sub_8030830 sub_8030830: @ 8030830 push {r4-r7,lr} ldr r0, _08030890 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 ldr r3, _08030894 @ =gUnknown_2022BC8 ldr r2, _08030898 @ =gUnknown_3004FF8 movs r0, 0 strb r0, [r2] movs r5, 0 ldr r6, _0803089C @ =gDisplayedStringBattle adds r4, r1, r3 adds r7, r2, 0 _08030848: lsls r0, r5, 24 lsrs r0, 24 bl MoveSelectionDestroyCursorAt adds r0, r6, 0 ldr r1, _080308A0 @ =gUnknown_83FE770 bl StringCopy ldrh r1, [r4] movs r0, 0xD muls r1, r0 ldr r0, _080308A4 @ =gMoveNames adds r1, r0 adds r0, r6, 0 bl StringAppend adds r1, r5, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl sub_80D87BC ldrh r0, [r4] cmp r0, 0 beq _08030880 ldrb r0, [r7] adds r0, 0x1 strb r0, [r7] _08030880: adds r4, 0x2 adds r5, 0x1 cmp r5, 0x3 ble _08030848 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030890: .4byte gActiveBattler _08030894: .4byte gUnknown_2022BC8 _08030898: .4byte gUnknown_3004FF8 _0803089C: .4byte gDisplayedStringBattle _080308A0: .4byte gUnknown_83FE770 _080308A4: .4byte gMoveNames thumb_func_end sub_8030830 thumb_func_start MoveSelectionDisplayPpString MoveSelectionDisplayPpString: @ 80308A8 push {r4,lr} ldr r4, _080308C4 @ =gDisplayedStringBattle ldr r1, _080308C8 @ =gUnknown_83FE766 adds r0, r4, 0 bl StringCopy adds r0, r4, 0 movs r1, 0x7 bl sub_80D87BC pop {r4} pop {r0} bx r0 .align 2, 0 _080308C4: .4byte gDisplayedStringBattle _080308C8: .4byte gUnknown_83FE766 thumb_func_end MoveSelectionDisplayPpString thumb_func_start MoveSelectionDisplayPpNumber MoveSelectionDisplayPpNumber: @ 80308CC push {r4-r7,lr} ldr r5, _08030930 @ =gUnknown_2022BC4 ldr r7, _08030934 @ =gActiveBattler ldrb r0, [r7] lsls r0, 9 adds r1, r5, 0x2 adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 beq _08030928 bl SetPpNumbersPaletteInMoveSelection ldrb r1, [r7] lsls r4, r1, 9 adds r0, r5, 0x4 adds r4, r0 ldr r6, _08030938 @ =gDisplayedStringBattle ldr r5, _0803093C @ =gUnknown_2023FFC adds r1, r5 adds r0, r4, 0 adds r0, 0x8 ldrb r1, [r1] adds r0, r1 ldrb r1, [r0] adds r0, r6, 0 movs r2, 0x1 movs r3, 0x2 bl ConvertIntToDecimalStringN movs r1, 0xBA strb r1, [r0] adds r0, 0x1 ldrb r1, [r7] adds r1, r5 adds r4, 0xC ldrb r1, [r1] adds r4, r1 ldrb r1, [r4] movs r2, 0x1 movs r3, 0x2 bl ConvertIntToDecimalStringN adds r0, r6, 0 movs r1, 0x9 bl sub_80D87BC _08030928: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08030930: .4byte gUnknown_2022BC4 _08030934: .4byte gActiveBattler _08030938: .4byte gDisplayedStringBattle _0803093C: .4byte gUnknown_2023FFC thumb_func_end MoveSelectionDisplayPpNumber thumb_func_start MoveSelectionDisplayMoveType MoveSelectionDisplayMoveType: @ 8030940 push {r4-r6,lr} ldr r5, _080309AC @ =gActiveBattler ldrb r4, [r5] lsls r4, 9 ldr r0, _080309B0 @ =gUnknown_2022BC8 adds r4, r0 ldr r6, _080309B4 @ =gDisplayedStringBattle ldr r1, _080309B8 @ =gUnknown_83FE76A adds r0, r6, 0 bl StringCopy adds r3, r0, 0 movs r0, 0xFC strb r0, [r3] adds r3, 0x1 movs r0, 0x6 strb r0, [r3] adds r3, 0x1 movs r0, 0x1 strb r0, [r3] adds r3, 0x1 ldr r1, _080309BC @ =gUnknown_83FE770 adds r0, r3, 0 bl StringCopy adds r3, r0, 0 ldr r2, _080309C0 @ =gBattleMoves ldr r1, _080309C4 @ =gUnknown_2023FFC ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] lsls r0, 1 adds r4, r0 ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] lsls r1, r0, 3 subs r1, r0 ldr r0, _080309C8 @ =gUnknown_824F1A0 adds r1, r0 adds r0, r3, 0 bl StringCopy adds r0, r6, 0 movs r1, 0x8 bl sub_80D87BC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080309AC: .4byte gActiveBattler _080309B0: .4byte gUnknown_2022BC8 _080309B4: .4byte gDisplayedStringBattle _080309B8: .4byte gUnknown_83FE76A _080309BC: .4byte gUnknown_83FE770 _080309C0: .4byte gBattleMoves _080309C4: .4byte gUnknown_2023FFC _080309C8: .4byte gUnknown_824F1A0 thumb_func_end MoveSelectionDisplayMoveType thumb_func_start MoveSelectionCreateCursorAt MoveSelectionCreateCursorAt: @ 80309CC push {lr} sub sp, 0x10 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 lsls r1, 24 lsrs r1, 24 add r2, sp, 0xC adds r0, r1, 0x1 strh r0, [r2] adds r0, r2, 0 adds r1, 0x2 strh r1, [r0, 0x2] movs r1, 0x1 adds r0, r3, 0 ands r0, r1 lsls r2, r0, 3 adds r2, r0 adds r2, 0x1 movs r0, 0x2 ands r3, r0 adds r3, 0x37 str r1, [sp] str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 thumb_func_end MoveSelectionCreateCursorAt thumb_func_start MoveSelectionDestroyCursorAt MoveSelectionDestroyCursorAt: @ 8030A14 push {lr} sub sp, 0x10 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 add r0, sp, 0xC movs r1, 0x20 strh r1, [r0] strh r1, [r0, 0x2] movs r1, 0x1 adds r0, r3, 0 ands r0, r1 lsls r2, r0, 3 adds r2, r0 adds r2, 0x1 movs r0, 0x2 ands r3, r0 adds r3, 0x37 str r1, [sp] str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 thumb_func_end MoveSelectionDestroyCursorAt thumb_func_start ActionSelectionCreateCursorAt ActionSelectionCreateCursorAt: @ 8030A54 push {r4,lr} sub sp, 0x10 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 add r0, sp, 0xC movs r4, 0x1 strh r4, [r0] movs r1, 0x2 strh r1, [r0, 0x2] adds r0, r3, 0 ands r0, r4 lsls r2, r0, 3 subs r2, r0 adds r2, 0x10 lsls r2, 24 lsrs r2, 24 ands r3, r1 adds r3, 0x23 str r4, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r4} pop {r0} bx r0 thumb_func_end ActionSelectionCreateCursorAt thumb_func_start ActionSelectionDestroyCursorAt ActionSelectionDestroyCursorAt: @ 8030A98 push {lr} sub sp, 0x10 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 add r0, sp, 0xC movs r1, 0x20 strh r1, [r0] strh r1, [r0, 0x2] movs r1, 0x1 adds r0, r3, 0 ands r0, r1 lsls r2, r0, 3 subs r2, r0 adds r2, 0x10 lsls r2, 24 lsrs r2, 24 movs r0, 0x2 ands r3, r0 adds r3, 0x23 str r1, [sp] str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 thumb_func_end ActionSelectionDestroyCursorAt thumb_func_start sub_8030ADC sub_8030ADC: @ 8030ADC push {lr} ldr r0, _08030AE8 @ =sub_8077764 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08030AE8: .4byte sub_8077764 thumb_func_end sub_8030ADC thumb_func_start sub_8030AEC sub_8030AEC: @ 8030AEC push {lr} ldr r0, _08030AF8 @ =sub_8077764 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08030AF8: .4byte sub_8077764 thumb_func_end sub_8030AEC thumb_func_start CompleteOnFinishedStatusAnimation CompleteOnFinishedStatusAnimation: @ 8030AFC push {lr} ldr r0, _08030B24 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _08030B28 @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 bne _08030B1E bl PlayerBufferExecCompleted _08030B1E: pop {r0} bx r0 .align 2, 0 _08030B24: .4byte gUnknown_2024018 _08030B28: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation thumb_func_start CompleteOnFinishedBattleAnimation CompleteOnFinishedBattleAnimation: @ 8030B2C push {lr} ldr r0, _08030B54 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _08030B58 @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08030B4E bl PlayerBufferExecCompleted _08030B4E: pop {r0} bx r0 .align 2, 0 _08030B54: .4byte gUnknown_2024018 _08030B58: .4byte gActiveBattler thumb_func_end CompleteOnFinishedBattleAnimation thumb_func_start PrintLinkStandbyMsg PrintLinkStandbyMsg: @ 8030B5C push {lr} ldr r0, _08030B80 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _08030B7C ldr r0, _08030B84 @ =gUnknown_2022974 movs r1, 0 strh r1, [r0] ldr r0, _08030B88 @ =gUnknown_2022976 strh r1, [r0] ldr r0, _08030B8C @ =gUnknown_83FE714 movs r1, 0 bl sub_80D87BC _08030B7C: pop {r0} bx r0 .align 2, 0 _08030B80: .4byte gBattleTypeFlags _08030B84: .4byte gUnknown_2022974 _08030B88: .4byte gUnknown_2022976 _08030B8C: .4byte gUnknown_83FE714 thumb_func_end PrintLinkStandbyMsg thumb_func_start PlayerHandleGetMonData PlayerHandleGetMonData: @ 8030B90 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 ldr r1, _08030BBC @ =gUnknown_2022BC4 ldr r0, _08030BC0 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _08030BC8 ldr r0, _08030BC4 @ =gBattlerPartyIndexes lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] mov r1, sp bl CopyPlayerMonData adds r6, r0, 0 b _08030BEA .align 2, 0 _08030BBC: .4byte gUnknown_2022BC4 _08030BC0: .4byte gActiveBattler _08030BC4: .4byte gBattlerPartyIndexes _08030BC8: ldrb r4, [r1] movs r5, 0 _08030BCC: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _08030BE2 lsls r0, r5, 24 lsrs r0, 24 mov r2, sp adds r1, r2, r6 bl CopyPlayerMonData adds r6, r0 _08030BE2: lsrs r4, 1 adds r5, 0x1 cmp r5, 0x5 ble _08030BCC _08030BEA: lsls r1, r6, 16 lsrs r1, 16 movs r0, 0x1 mov r2, sp bl EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x100 pop {r4-r6} pop {r0} bx r0 thumb_func_end PlayerHandleGetMonData thumb_func_start CopyPlayerMonData CopyPlayerMonData: @ 8030C04 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x90 adds r7, r1, 0 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 ldr r2, _08030C38 @ =gUnknown_2022BC4 ldr r3, _08030C3C @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 adds r1, r2, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0x3B bls _08030C2E bl _0803139A _08030C2E: lsls r0, 2 ldr r1, _08030C40 @ =_08030C44 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08030C38: .4byte gUnknown_2022BC4 _08030C3C: .4byte gActiveBattler _08030C40: .4byte _08030C44 .align 2, 0 _08030C44: .4byte _08030D34 .4byte _08030F58 .4byte _08030F68 .4byte _08030F78 .4byte _08030FE0 .4byte _08030FE0 .4byte _08030FE0 .4byte _08030FE0 .4byte _08030FFC .4byte _08031038 .4byte _08031038 .4byte _08031038 .4byte _08031038 .4byte _0803139A .4byte _0803139A .4byte _0803139A .4byte _0803139A .4byte _08031054 .4byte _08031064 .4byte _08031094 .4byte _080310A4 .4byte _080310B4 .4byte _080310C4 .4byte _080310D4 .4byte _080310E4 .4byte _080310F4 .4byte _08031104 .4byte _08031114 .4byte _08031124 .4byte _08031134 .4byte _08031144 .4byte _08031154 .4byte _080311A4 .4byte _080311B4 .4byte _080311C4 .4byte _080311D4 .4byte _080311E4 .4byte _080311F4 .4byte _08031204 .4byte _08031214 .4byte _08031224 .4byte _08031258 .4byte _08031268 .4byte _08031278 .4byte _08031288 .4byte _08031298 .4byte _080312A8 .4byte _080312B8 .4byte _080312C8 .4byte _080312E8 .4byte _080312F8 .4byte _08031308 .4byte _08031318 .4byte _08031328 .4byte _08031338 .4byte _08031348 .4byte _08031358 .4byte _08031368 .4byte _08031378 .4byte _08031388 _08030D34: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08030F48 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData mov r1, sp strh r0, [r1] adds r0, r4, 0 movs r1, 0xC bl GetMonData mov r1, sp strh r0, [r1, 0x2E] movs r6, 0 add r0, sp, 0x24 mov r9, r0 movs r1, 0x3B add r1, sp mov r10, r1 mov r2, sp adds r2, 0x2B str r2, [sp, 0x80] mov r0, sp adds r0, 0x2A str r0, [sp, 0x7C] mov r1, sp adds r1, 0x68 str r1, [sp, 0x8C] adds r2, 0x5 str r2, [sp, 0x84] adds r0, 0x12 str r0, [sp, 0x88] mov r8, r4 add r4, sp, 0xC _08030D80: adds r1, r6, 0 adds r1, 0xD mov r0, r8 bl GetMonData strh r0, [r4] adds r1, r6, 0 adds r1, 0x11 mov r0, r8 bl GetMonData mov r2, r9 adds r1, r2, r6 strb r0, [r1] adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _08030D80 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08030F48 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 bl GetMonData mov r1, r10 strb r0, [r1] adds r0, r4, 0 movs r1, 0x20 bl GetMonData ldr r2, [sp, 0x80] strb r0, [r2] adds r0, r4, 0 movs r1, 0x19 bl GetMonData str r0, [sp, 0x44] adds r0, r4, 0 movs r1, 0x27 bl GetMonData mov r3, sp movs r5, 0x1F ands r0, r5 ldrb r2, [r3, 0x14] movs r1, 0x20 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x28 bl GetMonData mov r3, sp movs r6, 0x1F ands r0, r6 lsls r0, 5 ldrh r2, [r3, 0x14] ldr r1, _08030F4C @ =0xfffffc1f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x29 bl GetMonData mov r3, sp ands r0, r5 lsls r0, 2 ldrb r2, [r3, 0x15] movs r1, 0x7D negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x15] adds r0, r4, 0 movs r1, 0x2A bl GetMonData movs r1, 0x1F ands r1, r0 lsls r1, 15 ldr r0, [sp, 0x14] ldr r2, _08030F50 @ =0xfff07fff ands r0, r2 orrs r0, r1 str r0, [sp, 0x14] adds r0, r4, 0 movs r1, 0x2B bl GetMonData mov r3, sp ands r0, r6 lsls r0, 4 ldrh r2, [r3, 0x16] ldr r1, _08030F54 @ =0xfffffe0f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x16] adds r0, r4, 0 movs r1, 0x2C bl GetMonData mov r3, sp ands r0, r5 lsls r0, 1 ldrb r2, [r3, 0x17] movs r1, 0x3F negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0 bl GetMonData str r0, [sp, 0x48] adds r0, r4, 0 movs r1, 0x37 bl GetMonData str r0, [sp, 0x4C] adds r0, r4, 0 movs r1, 0x38 bl GetMonData ldr r1, [sp, 0x7C] strb r0, [r1] adds r0, r4, 0 movs r1, 0x39 bl GetMonData mov r1, sp strh r0, [r1, 0x28] adds r0, r4, 0 movs r1, 0x3A bl GetMonData mov r1, sp strh r0, [r1, 0x2C] adds r0, r4, 0 movs r1, 0x3B bl GetMonData mov r1, sp strh r0, [r1, 0x2] adds r0, r4, 0 movs r1, 0x3C bl GetMonData mov r1, sp strh r0, [r1, 0x4] adds r0, r4, 0 movs r1, 0x3D bl GetMonData mov r1, sp strh r0, [r1, 0x6] adds r0, r4, 0 movs r1, 0x3E bl GetMonData mov r1, sp strh r0, [r1, 0x8] adds r0, r4, 0 movs r1, 0x3F bl GetMonData mov r1, sp strh r0, [r1, 0xA] adds r0, r4, 0 movs r1, 0x2D bl GetMonData mov r3, sp movs r1, 0x1 ands r0, r1 lsls r0, 6 ldrb r2, [r3, 0x17] movs r1, 0x41 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x2E bl GetMonData mov r3, sp lsls r0, 7 ldrb r2, [r3, 0x17] movs r1, 0x7F ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x1 bl GetMonData str r0, [sp, 0x54] adds r0, r4, 0 movs r1, 0x2 ldr r2, [sp, 0x8C] bl GetMonData ldr r0, [sp, 0x84] ldr r1, [sp, 0x8C] bl StringCopy10 adds r0, r4, 0 movs r1, 0x7 ldr r2, [sp, 0x88] bl GetMonData mov r2, sp movs r6, 0 _08030F38: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0x57 bls _08030F38 b _0803139A .align 2, 0 _08030F48: .4byte gPlayerParty _08030F4C: .4byte 0xfffffc1f _08030F50: .4byte 0xfff07fff _08030F54: .4byte 0xfffffe0f _08030F58: movs r0, 0x64 muls r0, r5 ldr r1, _08030F64 @ =gPlayerParty adds r0, r1 movs r1, 0xB b _080312D2 .align 2, 0 _08030F64: .4byte gPlayerParty _08030F68: movs r0, 0x64 muls r0, r5 ldr r1, _08030F74 @ =gPlayerParty adds r0, r1 movs r1, 0xC b _080312D2 .align 2, 0 _08030F74: .4byte gPlayerParty _08030F78: movs r6, 0 add r2, sp, 0x58 mov r9, r2 add r0, sp, 0x60 mov r10, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08030FDC @ =gPlayerParty adds r4, r1, r0 mov r8, r9 _08030F8E: adds r1, r6, 0 adds r1, 0xD adds r0, r4, 0 bl GetMonData mov r1, r8 strh r0, [r1] adds r1, r6, 0 adds r1, 0x11 adds r0, r4, 0 bl GetMonData mov r2, r10 adds r1, r2, r6 strb r0, [r1] movs r0, 0x2 add r8, r0 adds r6, 0x1 cmp r6, 0x3 ble _08030F8E movs r0, 0x64 muls r0, r5 ldr r1, _08030FDC @ =gPlayerParty adds r0, r1 movs r1, 0x15 bl GetMonData mov r1, r9 strb r0, [r1, 0xC] mov r2, r9 movs r6, 0 _08030FCC: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0xF bls _08030FCC b _0803139A .align 2, 0 _08030FDC: .4byte gPlayerParty _08030FE0: movs r0, 0x64 muls r0, r5 ldr r1, _08030FF8 @ =gPlayerParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x9 b _080312D2 .align 2, 0 _08030FF8: .4byte gPlayerParty _08030FFC: movs r6, 0 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r2, _08031034 @ =gPlayerParty mov r8, r2 _08031008: adds r1, r6, 0 adds r1, 0x11 mov r2, r8 adds r0, r4, r2 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 cmp r6, 0x3 ble _08031008 movs r0, 0x64 muls r0, r5 ldr r1, _08031034 @ =gPlayerParty adds r0, r1 movs r1, 0x15 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 b _0803139A .align 2, 0 _08031034: .4byte gPlayerParty _08031038: movs r0, 0x64 muls r0, r5 ldr r1, _08031050 @ =gPlayerParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x8 b _08031392 .align 2, 0 _08031050: .4byte gPlayerParty _08031054: movs r0, 0x64 muls r0, r5 ldr r1, _08031060 @ =gPlayerParty adds r0, r1 movs r1, 0x1 b _0803106E .align 2, 0 _08031060: .4byte gPlayerParty _08031064: movs r0, 0x64 muls r0, r5 ldr r1, _08031090 @ =gPlayerParty adds r0, r1 movs r1, 0x19 _0803106E: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] movs r6, 0x3 b _0803139A .align 2, 0 _08031090: .4byte gPlayerParty _08031094: movs r0, 0x64 muls r0, r5 ldr r1, _080310A0 @ =gPlayerParty adds r0, r1 movs r1, 0x1A b _08031392 .align 2, 0 _080310A0: .4byte gPlayerParty _080310A4: movs r0, 0x64 muls r0, r5 ldr r1, _080310B0 @ =gPlayerParty adds r0, r1 movs r1, 0x1B b _08031392 .align 2, 0 _080310B0: .4byte gPlayerParty _080310B4: movs r0, 0x64 muls r0, r5 ldr r1, _080310C0 @ =gPlayerParty adds r0, r1 movs r1, 0x1C b _08031392 .align 2, 0 _080310C0: .4byte gPlayerParty _080310C4: movs r0, 0x64 muls r0, r5 ldr r1, _080310D0 @ =gPlayerParty adds r0, r1 movs r1, 0x1D b _08031392 .align 2, 0 _080310D0: .4byte gPlayerParty _080310D4: movs r0, 0x64 muls r0, r5 ldr r1, _080310E0 @ =gPlayerParty adds r0, r1 movs r1, 0x1E b _08031392 .align 2, 0 _080310E0: .4byte gPlayerParty _080310E4: movs r0, 0x64 muls r0, r5 ldr r1, _080310F0 @ =gPlayerParty adds r0, r1 movs r1, 0x1F b _08031392 .align 2, 0 _080310F0: .4byte gPlayerParty _080310F4: movs r0, 0x64 muls r0, r5 ldr r1, _08031100 @ =gPlayerParty adds r0, r1 movs r1, 0x20 b _08031392 .align 2, 0 _08031100: .4byte gPlayerParty _08031104: movs r0, 0x64 muls r0, r5 ldr r1, _08031110 @ =gPlayerParty adds r0, r1 movs r1, 0x22 b _08031392 .align 2, 0 _08031110: .4byte gPlayerParty _08031114: movs r0, 0x64 muls r0, r5 ldr r1, _08031120 @ =gPlayerParty adds r0, r1 movs r1, 0x23 b _08031392 .align 2, 0 _08031120: .4byte gPlayerParty _08031124: movs r0, 0x64 muls r0, r5 ldr r1, _08031130 @ =gPlayerParty adds r0, r1 movs r1, 0x24 b _08031392 .align 2, 0 _08031130: .4byte gPlayerParty _08031134: movs r0, 0x64 muls r0, r5 ldr r1, _08031140 @ =gPlayerParty adds r0, r1 movs r1, 0x25 b _08031392 .align 2, 0 _08031140: .4byte gPlayerParty _08031144: movs r0, 0x64 muls r0, r5 ldr r1, _08031150 @ =gPlayerParty adds r0, r1 movs r1, 0x26 b _08031392 .align 2, 0 _08031150: .4byte gPlayerParty _08031154: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _080311A0 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x27 bl GetMonData strb r0, [r7] adds r0, r4, 0 movs r1, 0x28 bl GetMonData strb r0, [r7, 0x1] adds r0, r4, 0 movs r1, 0x29 bl GetMonData strb r0, [r7, 0x2] adds r0, r4, 0 movs r1, 0x2A bl GetMonData strb r0, [r7, 0x3] adds r0, r4, 0 movs r1, 0x2B bl GetMonData strb r0, [r7, 0x4] adds r0, r4, 0 movs r1, 0x2C bl GetMonData strb r0, [r7, 0x5] movs r6, 0x6 b _0803139A .align 2, 0 _080311A0: .4byte gPlayerParty _080311A4: movs r0, 0x64 muls r0, r5 ldr r1, _080311B0 @ =gPlayerParty adds r0, r1 movs r1, 0x27 b _08031392 .align 2, 0 _080311B0: .4byte gPlayerParty _080311B4: movs r0, 0x64 muls r0, r5 ldr r1, _080311C0 @ =gPlayerParty adds r0, r1 movs r1, 0x28 b _08031392 .align 2, 0 _080311C0: .4byte gPlayerParty _080311C4: movs r0, 0x64 muls r0, r5 ldr r1, _080311D0 @ =gPlayerParty adds r0, r1 movs r1, 0x29 b _08031392 .align 2, 0 _080311D0: .4byte gPlayerParty _080311D4: movs r0, 0x64 muls r0, r5 ldr r1, _080311E0 @ =gPlayerParty adds r0, r1 movs r1, 0x2A b _08031392 .align 2, 0 _080311E0: .4byte gPlayerParty _080311E4: movs r0, 0x64 muls r0, r5 ldr r1, _080311F0 @ =gPlayerParty adds r0, r1 movs r1, 0x2B b _08031392 .align 2, 0 _080311F0: .4byte gPlayerParty _080311F4: movs r0, 0x64 muls r0, r5 ldr r1, _08031200 @ =gPlayerParty adds r0, r1 movs r1, 0x2C b _08031392 .align 2, 0 _08031200: .4byte gPlayerParty _08031204: movs r0, 0x64 muls r0, r5 ldr r1, _08031210 @ =gPlayerParty adds r0, r1 movs r1, 0 b _0803122E .align 2, 0 _08031210: .4byte gPlayerParty _08031214: movs r0, 0x64 muls r0, r5 ldr r1, _08031220 @ =gPlayerParty adds r0, r1 movs r1, 0x9 b _080312D2 .align 2, 0 _08031220: .4byte gPlayerParty _08031224: movs r0, 0x64 muls r0, r5 ldr r1, _08031254 @ =gPlayerParty adds r0, r1 movs r1, 0x37 _0803122E: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] lsrs r0, r1, 24 strb r0, [r7, 0x3] movs r6, 0x4 b _0803139A .align 2, 0 _08031254: .4byte gPlayerParty _08031258: movs r0, 0x64 muls r0, r5 ldr r1, _08031264 @ =gPlayerParty adds r0, r1 movs r1, 0x38 b _08031392 .align 2, 0 _08031264: .4byte gPlayerParty _08031268: movs r0, 0x64 muls r0, r5 ldr r1, _08031274 @ =gPlayerParty adds r0, r1 movs r1, 0x39 b _080312D2 .align 2, 0 _08031274: .4byte gPlayerParty _08031278: movs r0, 0x64 muls r0, r5 ldr r1, _08031284 @ =gPlayerParty adds r0, r1 movs r1, 0x3A b _080312D2 .align 2, 0 _08031284: .4byte gPlayerParty _08031288: movs r0, 0x64 muls r0, r5 ldr r1, _08031294 @ =gPlayerParty adds r0, r1 movs r1, 0x3B b _080312D2 .align 2, 0 _08031294: .4byte gPlayerParty _08031298: movs r0, 0x64 muls r0, r5 ldr r1, _080312A4 @ =gPlayerParty adds r0, r1 movs r1, 0x3C b _080312D2 .align 2, 0 _080312A4: .4byte gPlayerParty _080312A8: movs r0, 0x64 muls r0, r5 ldr r1, _080312B4 @ =gPlayerParty adds r0, r1 movs r1, 0x3D b _080312D2 .align 2, 0 _080312B4: .4byte gPlayerParty _080312B8: movs r0, 0x64 muls r0, r5 ldr r1, _080312C4 @ =gPlayerParty adds r0, r1 movs r1, 0x3E b _080312D2 .align 2, 0 _080312C4: .4byte gPlayerParty _080312C8: movs r0, 0x64 muls r0, r5 ldr r1, _080312E4 @ =gPlayerParty adds r0, r1 movs r1, 0x3F _080312D2: bl GetMonData lsls r0, 16 lsrs r0, 16 strb r0, [r7] lsrs r0, 8 strb r0, [r7, 0x1] movs r6, 0x2 b _0803139A .align 2, 0 _080312E4: .4byte gPlayerParty _080312E8: movs r0, 0x64 muls r0, r5 ldr r1, _080312F4 @ =gPlayerParty adds r0, r1 movs r1, 0x16 b _08031392 .align 2, 0 _080312F4: .4byte gPlayerParty _080312F8: movs r0, 0x64 muls r0, r5 ldr r1, _08031304 @ =gPlayerParty adds r0, r1 movs r1, 0x17 b _08031392 .align 2, 0 _08031304: .4byte gPlayerParty _08031308: movs r0, 0x64 muls r0, r5 ldr r1, _08031314 @ =gPlayerParty adds r0, r1 movs r1, 0x18 b _08031392 .align 2, 0 _08031314: .4byte gPlayerParty _08031318: movs r0, 0x64 muls r0, r5 ldr r1, _08031324 @ =gPlayerParty adds r0, r1 movs r1, 0x21 b _08031392 .align 2, 0 _08031324: .4byte gPlayerParty _08031328: movs r0, 0x64 muls r0, r5 ldr r1, _08031334 @ =gPlayerParty adds r0, r1 movs r1, 0x2F b _08031392 .align 2, 0 _08031334: .4byte gPlayerParty _08031338: movs r0, 0x64 muls r0, r5 ldr r1, _08031344 @ =gPlayerParty adds r0, r1 movs r1, 0x30 b _08031392 .align 2, 0 _08031344: .4byte gPlayerParty _08031348: movs r0, 0x64 muls r0, r5 ldr r1, _08031354 @ =gPlayerParty adds r0, r1 movs r1, 0x32 b _08031392 .align 2, 0 _08031354: .4byte gPlayerParty _08031358: movs r0, 0x64 muls r0, r5 ldr r1, _08031364 @ =gPlayerParty adds r0, r1 movs r1, 0x33 b _08031392 .align 2, 0 _08031364: .4byte gPlayerParty _08031368: movs r0, 0x64 muls r0, r5 ldr r1, _08031374 @ =gPlayerParty adds r0, r1 movs r1, 0x34 b _08031392 .align 2, 0 _08031374: .4byte gPlayerParty _08031378: movs r0, 0x64 muls r0, r5 ldr r1, _08031384 @ =gPlayerParty adds r0, r1 movs r1, 0x35 b _08031392 .align 2, 0 _08031384: .4byte gPlayerParty _08031388: movs r0, 0x64 muls r0, r5 ldr r1, _080313AC @ =gPlayerParty adds r0, r1 movs r1, 0x36 _08031392: bl GetMonData strb r0, [r7] movs r6, 0x1 _0803139A: adds r0, r6, 0 add sp, 0x90 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080313AC: .4byte gPlayerParty thumb_func_end CopyPlayerMonData thumb_func_start PlayerHandleGetRawMonData PlayerHandleGetRawMonData: @ 80313B0 push {r4-r7,lr} sub sp, 0x58 ldr r2, _08031428 @ =gBattlerPartyIndexes ldr r5, _0803142C @ =gActiveBattler ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 adds r4, r2, 0 muls r4, r0 ldr r3, _08031430 @ =gUnknown_2022BC4 lsls r1, 9 adds r0, r3, 0x1 adds r0, r1, r0 ldrb r2, [r0] ldr r0, _08031434 @ =gPlayerParty adds r0, r2, r0 adds r6, r4, r0 mov r0, sp adds r4, r0, r2 movs r2, 0 adds r0, r3, 0x2 adds r1, r0 adds r7, r5, 0 mov r12, r3 ldrb r1, [r1] cmp r2, r1 bcs _08031406 adds r3, r0, 0 _080313EC: adds r1, r4, r2 adds r0, r6, r2 ldrb r0, [r0] strb r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r5] lsls r0, 9 adds r0, r3 ldrb r0, [r0] cmp r2, r0 bcc _080313EC _08031406: ldrb r0, [r7] lsls r0, 9 mov r1, r12 adds r1, 0x2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 bl EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x58 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08031428: .4byte gBattlerPartyIndexes _0803142C: .4byte gActiveBattler _08031430: .4byte gUnknown_2022BC4 _08031434: .4byte gPlayerParty thumb_func_end PlayerHandleGetRawMonData thumb_func_start PlayerHandleSetMonData PlayerHandleSetMonData: @ 8031438 push {r4,r5,lr} ldr r1, _0803145C @ =gUnknown_2022BC4 ldr r0, _08031460 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _08031468 ldr r0, _08031464 @ =gBattlerPartyIndexes lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] bl SetPlayerMonData b _08031486 .align 2, 0 _0803145C: .4byte gUnknown_2022BC4 _08031460: .4byte gActiveBattler _08031464: .4byte gBattlerPartyIndexes _08031468: ldrb r4, [r1] movs r5, 0 _0803146C: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0803147A adds r0, r5, 0 bl SetPlayerMonData _0803147A: lsrs r4, 1 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _0803146C _08031486: bl PlayerBufferExecCompleted pop {r4,r5} pop {r0} bx r0 thumb_func_end PlayerHandleSetMonData thumb_func_start SetPlayerMonData SetPlayerMonData: @ 8031490 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x34 lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080314C8 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 ldr r2, _080314CC @ =gUnknown_2022BC7 adds r3, r0, r2 adds r6, r3, 0 subs r1, r2, 0x2 adds r0, r1 ldrb r0, [r0] adds r7, r2, 0 cmp r0, 0x3B bls _080314BC bl _08031E56 _080314BC: lsls r0, 2 ldr r1, _080314D0 @ =_080314D4 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080314C8: .4byte gActiveBattler _080314CC: .4byte gUnknown_2022BC7 _080314D0: .4byte _080314D4 .align 2, 0 _080314D4: .4byte _080315C4 .4byte _0803175C .4byte _0803177C .4byte _0803179C .4byte _080317F4 .4byte _080317F4 .4byte _080317F4 .4byte _080317F4 .4byte _0803181C .4byte _08031880 .4byte _08031880 .4byte _08031880 .4byte _08031880 .4byte _08031E56 .4byte _08031E56 .4byte _08031E56 .4byte _08031E56 .4byte _080318B0 .4byte _080318D0 .4byte _080318F0 .4byte _08031910 .4byte _08031930 .4byte _08031950 .4byte _08031970 .4byte _08031990 .4byte _080319B0 .4byte _080319D0 .4byte _080319F0 .4byte _08031A10 .4byte _08031A30 .4byte _08031A50 .4byte _08031A70 .4byte _08031AE0 .4byte _08031B00 .4byte _08031B20 .4byte _08031B40 .4byte _08031B60 .4byte _08031B80 .4byte _08031BA0 .4byte _08031BC0 .4byte _08031BE0 .4byte _08031C00 .4byte _08031C20 .4byte _08031C40 .4byte _08031C60 .4byte _08031C80 .4byte _08031CA0 .4byte _08031CC0 .4byte _08031CE0 .4byte _08031D00 .4byte _08031D20 .4byte _08031D40 .4byte _08031D60 .4byte _08031D80 .4byte _08031DA0 .4byte _08031DC0 .4byte _08031DE0 .4byte _08031E00 .4byte _08031E20 .4byte _08031E40 _080315C4: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08031758 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB adds r2, r6, 0 bl SetMonData adds r2, r6, 0 adds r2, 0x2E adds r0, r4, 0 movs r1, 0xC bl SetMonData movs r0, 0 mov r8, r0 movs r0, 0x3B adds r0, r6 mov r10, r0 adds r0, r6, 0 adds r0, 0x2B str r0, [sp, 0x20] adds r0, 0x19 str r0, [sp, 0x28] adds r0, 0x4 str r0, [sp, 0x2C] adds r0, 0x4 str r0, [sp, 0x30] subs r0, 0x22 str r0, [sp, 0x1C] subs r0, 0x2 str r0, [sp, 0x18] adds r0, 0x4 str r0, [sp, 0x24] adds r0, r6, 0x2 str r0, [sp, 0x4] adds r0, r6, 0x4 str r0, [sp, 0x8] adds r0, r6, 0x6 str r0, [sp, 0xC] adds r0, 0x2 str r0, [sp, 0x10] adds r0, 0x2 str r0, [sp, 0x14] mov r9, r4 adds r7, r6, 0 adds r7, 0x24 adds r4, r6, 0 adds r4, 0xC _0803162A: mov r1, r8 adds r1, 0xD mov r0, r9 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 mov r0, r9 adds r2, r7, 0 bl SetMonData adds r7, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _0803162A movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08031758 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 mov r2, r10 bl SetMonData adds r0, r4, 0 movs r1, 0x20 ldr r2, [sp, 0x20] bl SetMonData adds r0, r4, 0 movs r1, 0x19 ldr r2, [sp, 0x28] bl SetMonData ldrb r0, [r6, 0x14] lsls r0, 27 lsrs r0, 27 mov r1, sp strb r0, [r1] adds r0, r4, 0 movs r1, 0x27 mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r6, 0x14] lsls r0, 22 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x28 mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r6, 0x15] lsls r0, 25 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x29 mov r2, sp bl SetMonData mov r1, sp ldr r0, [r6, 0x14] lsls r0, 12 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2A mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r6, 0x16] lsls r0, 23 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2B mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r6, 0x17] lsls r0, 26 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2C mov r2, sp bl SetMonData adds r0, r4, 0 movs r1, 0 ldr r2, [sp, 0x2C] bl SetMonData adds r0, r4, 0 movs r1, 0x37 ldr r2, [sp, 0x30] bl SetMonData adds r0, r4, 0 movs r1, 0x38 ldr r2, [sp, 0x1C] bl SetMonData adds r0, r4, 0 movs r1, 0x39 ldr r2, [sp, 0x18] bl SetMonData adds r0, r4, 0 movs r1, 0x3A ldr r2, [sp, 0x24] bl SetMonData adds r0, r4, 0 movs r1, 0x3B ldr r2, [sp, 0x4] bl SetMonData adds r0, r4, 0 movs r1, 0x3C ldr r2, [sp, 0x8] bl SetMonData adds r0, r4, 0 movs r1, 0x3D ldr r2, [sp, 0xC] bl SetMonData adds r0, r4, 0 movs r1, 0x3E ldr r2, [sp, 0x10] bl SetMonData adds r0, r4, 0 movs r1, 0x3F ldr r2, [sp, 0x14] bl SetMonData b _08031E56 .align 2, 0 _08031758: .4byte gPlayerParty _0803175C: movs r0, 0x64 muls r0, r5 ldr r1, _08031774 @ =gPlayerParty adds r0, r1 ldr r1, _08031778 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0xB bl SetMonData b _08031E56 .align 2, 0 _08031774: .4byte gPlayerParty _08031778: .4byte gActiveBattler _0803177C: movs r0, 0x64 muls r0, r5 ldr r1, _08031794 @ =gPlayerParty adds r0, r1 ldr r1, _08031798 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0xC bl SetMonData b _08031E56 .align 2, 0 _08031794: .4byte gPlayerParty _08031798: .4byte gActiveBattler _0803179C: movs r0, 0 mov r8, r0 movs r0, 0xC adds r0, r3 mov r9, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _080317F0 @ =gPlayerParty adds r7, r1, r0 adds r6, r3, 0 adds r6, 0x8 adds r4, r3, 0 _080317B6: mov r1, r8 adds r1, 0xD adds r0, r7, 0 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 adds r0, r7, 0 adds r2, r6, 0 bl SetMonData adds r6, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _080317B6 movs r0, 0x64 muls r0, r5 ldr r1, _080317F0 @ =gPlayerParty adds r0, r1 movs r1, 0x15 mov r2, r9 bl SetMonData b _08031E56 .align 2, 0 _080317F0: .4byte gPlayerParty _080317F4: movs r0, 0x64 muls r0, r5 ldr r1, _08031810 @ =gPlayerParty adds r0, r1 ldr r3, _08031814 @ =gUnknown_2022BC4 ldr r1, _08031818 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x9 b _08031898 .align 2, 0 _08031810: .4byte gPlayerParty _08031814: .4byte gUnknown_2022BC4 _08031818: .4byte gActiveBattler _0803181C: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08031878 @ =gPlayerParty adds r4, r0 ldr r5, _0803187C @ =gActiveBattler ldrb r2, [r5] lsls r2, 9 adds r2, r7 adds r0, r4, 0 movs r1, 0x11 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x12 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x13 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x14 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x15 bl SetMonData b _08031E56 .align 2, 0 _08031878: .4byte gPlayerParty _0803187C: .4byte gActiveBattler _08031880: movs r0, 0x64 muls r0, r5 ldr r1, _080318A4 @ =gPlayerParty adds r0, r1 ldr r3, _080318A8 @ =gUnknown_2022BC4 ldr r1, _080318AC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x8 _08031898: adds r3, 0x3 adds r2, r3 bl SetMonData b _08031E56 .align 2, 0 _080318A4: .4byte gPlayerParty _080318A8: .4byte gUnknown_2022BC4 _080318AC: .4byte gActiveBattler _080318B0: movs r0, 0x64 muls r0, r5 ldr r1, _080318C8 @ =gPlayerParty adds r0, r1 ldr r1, _080318CC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1 bl SetMonData b _08031E56 .align 2, 0 _080318C8: .4byte gPlayerParty _080318CC: .4byte gActiveBattler _080318D0: movs r0, 0x64 muls r0, r5 ldr r1, _080318E8 @ =gPlayerParty adds r0, r1 ldr r1, _080318EC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x19 bl SetMonData b _08031E56 .align 2, 0 _080318E8: .4byte gPlayerParty _080318EC: .4byte gActiveBattler _080318F0: movs r0, 0x64 muls r0, r5 ldr r1, _08031908 @ =gPlayerParty adds r0, r1 ldr r1, _0803190C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1A bl SetMonData b _08031E56 .align 2, 0 _08031908: .4byte gPlayerParty _0803190C: .4byte gActiveBattler _08031910: movs r0, 0x64 muls r0, r5 ldr r1, _08031928 @ =gPlayerParty adds r0, r1 ldr r1, _0803192C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1B bl SetMonData b _08031E56 .align 2, 0 _08031928: .4byte gPlayerParty _0803192C: .4byte gActiveBattler _08031930: movs r0, 0x64 muls r0, r5 ldr r1, _08031948 @ =gPlayerParty adds r0, r1 ldr r1, _0803194C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1C bl SetMonData b _08031E56 .align 2, 0 _08031948: .4byte gPlayerParty _0803194C: .4byte gActiveBattler _08031950: movs r0, 0x64 muls r0, r5 ldr r1, _08031968 @ =gPlayerParty adds r0, r1 ldr r1, _0803196C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1D bl SetMonData b _08031E56 .align 2, 0 _08031968: .4byte gPlayerParty _0803196C: .4byte gActiveBattler _08031970: movs r0, 0x64 muls r0, r5 ldr r1, _08031988 @ =gPlayerParty adds r0, r1 ldr r1, _0803198C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1E bl SetMonData b _08031E56 .align 2, 0 _08031988: .4byte gPlayerParty _0803198C: .4byte gActiveBattler _08031990: movs r0, 0x64 muls r0, r5 ldr r1, _080319A8 @ =gPlayerParty adds r0, r1 ldr r1, _080319AC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1F bl SetMonData b _08031E56 .align 2, 0 _080319A8: .4byte gPlayerParty _080319AC: .4byte gActiveBattler _080319B0: movs r0, 0x64 muls r0, r5 ldr r1, _080319C8 @ =gPlayerParty adds r0, r1 ldr r1, _080319CC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x20 bl SetMonData b _08031E56 .align 2, 0 _080319C8: .4byte gPlayerParty _080319CC: .4byte gActiveBattler _080319D0: movs r0, 0x64 muls r0, r5 ldr r1, _080319E8 @ =gPlayerParty adds r0, r1 ldr r1, _080319EC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x22 bl SetMonData b _08031E56 .align 2, 0 _080319E8: .4byte gPlayerParty _080319EC: .4byte gActiveBattler _080319F0: movs r0, 0x64 muls r0, r5 ldr r1, _08031A08 @ =gPlayerParty adds r0, r1 ldr r1, _08031A0C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x23 bl SetMonData b _08031E56 .align 2, 0 _08031A08: .4byte gPlayerParty _08031A0C: .4byte gActiveBattler _08031A10: movs r0, 0x64 muls r0, r5 ldr r1, _08031A28 @ =gPlayerParty adds r0, r1 ldr r1, _08031A2C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x24 bl SetMonData b _08031E56 .align 2, 0 _08031A28: .4byte gPlayerParty _08031A2C: .4byte gActiveBattler _08031A30: movs r0, 0x64 muls r0, r5 ldr r1, _08031A48 @ =gPlayerParty adds r0, r1 ldr r1, _08031A4C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x25 bl SetMonData b _08031E56 .align 2, 0 _08031A48: .4byte gPlayerParty _08031A4C: .4byte gActiveBattler _08031A50: movs r0, 0x64 muls r0, r5 ldr r1, _08031A68 @ =gPlayerParty adds r0, r1 ldr r1, _08031A6C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x26 bl SetMonData b _08031E56 .align 2, 0 _08031A68: .4byte gPlayerParty _08031A6C: .4byte gActiveBattler _08031A70: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08031AD8 @ =gPlayerParty adds r4, r0 ldr r5, _08031ADC @ =gActiveBattler ldrb r2, [r5] lsls r2, 9 adds r2, r7 adds r0, r4, 0 movs r1, 0x27 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x28 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x29 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x2A bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x2B bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x5 adds r2, r0 adds r0, r4, 0 b _08031B90 .align 2, 0 _08031AD8: .4byte gPlayerParty _08031ADC: .4byte gActiveBattler _08031AE0: movs r0, 0x64 muls r0, r5 ldr r1, _08031AF8 @ =gPlayerParty adds r0, r1 ldr r1, _08031AFC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x27 bl SetMonData b _08031E56 .align 2, 0 _08031AF8: .4byte gPlayerParty _08031AFC: .4byte gActiveBattler _08031B00: movs r0, 0x64 muls r0, r5 ldr r1, _08031B18 @ =gPlayerParty adds r0, r1 ldr r1, _08031B1C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x28 bl SetMonData b _08031E56 .align 2, 0 _08031B18: .4byte gPlayerParty _08031B1C: .4byte gActiveBattler _08031B20: movs r0, 0x64 muls r0, r5 ldr r1, _08031B38 @ =gPlayerParty adds r0, r1 ldr r1, _08031B3C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x29 bl SetMonData b _08031E56 .align 2, 0 _08031B38: .4byte gPlayerParty _08031B3C: .4byte gActiveBattler _08031B40: movs r0, 0x64 muls r0, r5 ldr r1, _08031B58 @ =gPlayerParty adds r0, r1 ldr r1, _08031B5C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2A bl SetMonData b _08031E56 .align 2, 0 _08031B58: .4byte gPlayerParty _08031B5C: .4byte gActiveBattler _08031B60: movs r0, 0x64 muls r0, r5 ldr r1, _08031B78 @ =gPlayerParty adds r0, r1 ldr r1, _08031B7C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2B bl SetMonData b _08031E56 .align 2, 0 _08031B78: .4byte gPlayerParty _08031B7C: .4byte gActiveBattler _08031B80: movs r0, 0x64 muls r0, r5 ldr r1, _08031B98 @ =gPlayerParty adds r0, r1 ldr r1, _08031B9C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 _08031B90: movs r1, 0x2C bl SetMonData b _08031E56 .align 2, 0 _08031B98: .4byte gPlayerParty _08031B9C: .4byte gActiveBattler _08031BA0: movs r0, 0x64 muls r0, r5 ldr r1, _08031BB8 @ =gPlayerParty adds r0, r1 ldr r1, _08031BBC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0 bl SetMonData b _08031E56 .align 2, 0 _08031BB8: .4byte gPlayerParty _08031BBC: .4byte gActiveBattler _08031BC0: movs r0, 0x64 muls r0, r5 ldr r1, _08031BD8 @ =gPlayerParty adds r0, r1 ldr r1, _08031BDC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x9 bl SetMonData b _08031E56 .align 2, 0 _08031BD8: .4byte gPlayerParty _08031BDC: .4byte gActiveBattler _08031BE0: movs r0, 0x64 muls r0, r5 ldr r1, _08031BF8 @ =gPlayerParty adds r0, r1 ldr r1, _08031BFC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x37 bl SetMonData b _08031E56 .align 2, 0 _08031BF8: .4byte gPlayerParty _08031BFC: .4byte gActiveBattler _08031C00: movs r0, 0x64 muls r0, r5 ldr r1, _08031C18 @ =gPlayerParty adds r0, r1 ldr r1, _08031C1C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x38 bl SetMonData b _08031E56 .align 2, 0 _08031C18: .4byte gPlayerParty _08031C1C: .4byte gActiveBattler _08031C20: movs r0, 0x64 muls r0, r5 ldr r1, _08031C38 @ =gPlayerParty adds r0, r1 ldr r1, _08031C3C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x39 bl SetMonData b _08031E56 .align 2, 0 _08031C38: .4byte gPlayerParty _08031C3C: .4byte gActiveBattler _08031C40: movs r0, 0x64 muls r0, r5 ldr r1, _08031C58 @ =gPlayerParty adds r0, r1 ldr r1, _08031C5C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3A bl SetMonData b _08031E56 .align 2, 0 _08031C58: .4byte gPlayerParty _08031C5C: .4byte gActiveBattler _08031C60: movs r0, 0x64 muls r0, r5 ldr r1, _08031C78 @ =gPlayerParty adds r0, r1 ldr r1, _08031C7C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3B bl SetMonData b _08031E56 .align 2, 0 _08031C78: .4byte gPlayerParty _08031C7C: .4byte gActiveBattler _08031C80: movs r0, 0x64 muls r0, r5 ldr r1, _08031C98 @ =gPlayerParty adds r0, r1 ldr r1, _08031C9C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3C bl SetMonData b _08031E56 .align 2, 0 _08031C98: .4byte gPlayerParty _08031C9C: .4byte gActiveBattler _08031CA0: movs r0, 0x64 muls r0, r5 ldr r1, _08031CB8 @ =gPlayerParty adds r0, r1 ldr r1, _08031CBC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3D bl SetMonData b _08031E56 .align 2, 0 _08031CB8: .4byte gPlayerParty _08031CBC: .4byte gActiveBattler _08031CC0: movs r0, 0x64 muls r0, r5 ldr r1, _08031CD8 @ =gPlayerParty adds r0, r1 ldr r1, _08031CDC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3E bl SetMonData b _08031E56 .align 2, 0 _08031CD8: .4byte gPlayerParty _08031CDC: .4byte gActiveBattler _08031CE0: movs r0, 0x64 muls r0, r5 ldr r1, _08031CF8 @ =gPlayerParty adds r0, r1 ldr r1, _08031CFC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3F bl SetMonData b _08031E56 .align 2, 0 _08031CF8: .4byte gPlayerParty _08031CFC: .4byte gActiveBattler _08031D00: movs r0, 0x64 muls r0, r5 ldr r1, _08031D18 @ =gPlayerParty adds r0, r1 ldr r1, _08031D1C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x16 bl SetMonData b _08031E56 .align 2, 0 _08031D18: .4byte gPlayerParty _08031D1C: .4byte gActiveBattler _08031D20: movs r0, 0x64 muls r0, r5 ldr r1, _08031D38 @ =gPlayerParty adds r0, r1 ldr r1, _08031D3C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x17 bl SetMonData b _08031E56 .align 2, 0 _08031D38: .4byte gPlayerParty _08031D3C: .4byte gActiveBattler _08031D40: movs r0, 0x64 muls r0, r5 ldr r1, _08031D58 @ =gPlayerParty adds r0, r1 ldr r1, _08031D5C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x18 bl SetMonData b _08031E56 .align 2, 0 _08031D58: .4byte gPlayerParty _08031D5C: .4byte gActiveBattler _08031D60: movs r0, 0x64 muls r0, r5 ldr r1, _08031D78 @ =gPlayerParty adds r0, r1 ldr r1, _08031D7C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x21 bl SetMonData b _08031E56 .align 2, 0 _08031D78: .4byte gPlayerParty _08031D7C: .4byte gActiveBattler _08031D80: movs r0, 0x64 muls r0, r5 ldr r1, _08031D98 @ =gPlayerParty adds r0, r1 ldr r1, _08031D9C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2F bl SetMonData b _08031E56 .align 2, 0 _08031D98: .4byte gPlayerParty _08031D9C: .4byte gActiveBattler _08031DA0: movs r0, 0x64 muls r0, r5 ldr r1, _08031DB8 @ =gPlayerParty adds r0, r1 ldr r1, _08031DBC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x30 bl SetMonData b _08031E56 .align 2, 0 _08031DB8: .4byte gPlayerParty _08031DBC: .4byte gActiveBattler _08031DC0: movs r0, 0x64 muls r0, r5 ldr r1, _08031DD8 @ =gPlayerParty adds r0, r1 ldr r1, _08031DDC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x32 bl SetMonData b _08031E56 .align 2, 0 _08031DD8: .4byte gPlayerParty _08031DDC: .4byte gActiveBattler _08031DE0: movs r0, 0x64 muls r0, r5 ldr r1, _08031DF8 @ =gPlayerParty adds r0, r1 ldr r1, _08031DFC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x33 bl SetMonData b _08031E56 .align 2, 0 _08031DF8: .4byte gPlayerParty _08031DFC: .4byte gActiveBattler _08031E00: movs r0, 0x64 muls r0, r5 ldr r1, _08031E18 @ =gPlayerParty adds r0, r1 ldr r1, _08031E1C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x34 bl SetMonData b _08031E56 .align 2, 0 _08031E18: .4byte gPlayerParty _08031E1C: .4byte gActiveBattler _08031E20: movs r0, 0x64 muls r0, r5 ldr r1, _08031E38 @ =gPlayerParty adds r0, r1 ldr r1, _08031E3C @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x35 bl SetMonData b _08031E56 .align 2, 0 _08031E38: .4byte gPlayerParty _08031E3C: .4byte gActiveBattler _08031E40: movs r0, 0x64 muls r0, r5 ldr r1, _08031E80 @ =gPlayerParty adds r0, r1 ldr r1, _08031E84 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x36 bl SetMonData _08031E56: ldr r2, _08031E88 @ =gBattlerPartyIndexes ldr r0, _08031E84 @ =gActiveBattler ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _08031E80 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange add sp, 0x34 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08031E80: .4byte gPlayerParty _08031E84: .4byte gActiveBattler _08031E88: .4byte gBattlerPartyIndexes thumb_func_end SetPlayerMonData thumb_func_start PlayerHandleSetRawMonData PlayerHandleSetRawMonData: @ 8031E8C push {r4-r7,lr} ldr r1, _08031EF0 @ =gBattlerPartyIndexes ldr r7, _08031EF4 @ =gActiveBattler ldrb r2, [r7] lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 adds r3, r1, 0 muls r3, r0 ldr r4, _08031EF8 @ =gUnknown_2022BC4 lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 ldrb r0, [r0] ldr r1, _08031EFC @ =gPlayerParty adds r0, r1 adds r5, r3, r0 movs r3, 0 adds r0, r4, 0x2 adds r2, r0 ldrb r2, [r2] cmp r3, r2 bcs _08031EE4 adds r6, r4, 0 adds r2, r7, 0 adds r4, r0, 0 _08031EC2: adds r1, r5, r3 ldrb r0, [r2] lsls r0, 9 adds r0, 0x3 adds r0, r3, r0 adds r0, r6 ldrb r0, [r0] strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r2] lsls r0, 9 adds r0, r4 ldrb r0, [r0] cmp r3, r0 bcc _08031EC2 _08031EE4: bl PlayerBufferExecCompleted pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08031EF0: .4byte gBattlerPartyIndexes _08031EF4: .4byte gActiveBattler _08031EF8: .4byte gUnknown_2022BC4 _08031EFC: .4byte gPlayerParty thumb_func_end PlayerHandleSetRawMonData thumb_func_start PlayerHandleLoadMonSprite PlayerHandleLoadMonSprite: @ 8031F00 push {r4,lr} ldr r2, _08031F4C @ =gBattlerPartyIndexes ldr r4, _08031F50 @ =gActiveBattler ldrb r1, [r4] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _08031F54 @ =gPlayerParty adds r0, r2 bl sub_8034498 ldr r2, _08031F58 @ =gSprites ldr r0, _08031F5C @ =gUnknown_2023D44 ldrb r3, [r4] adds r0, r3, r0 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldr r1, _08031F60 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08031F64 @ =CompleteOnBankSpritePosX_0 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08031F4C: .4byte gBattlerPartyIndexes _08031F50: .4byte gActiveBattler _08031F54: .4byte gPlayerParty _08031F58: .4byte gSprites _08031F5C: .4byte gUnknown_2023D44 _08031F60: .4byte gUnknown_3004FE0 _08031F64: .4byte CompleteOnBankSpritePosX_0 thumb_func_end PlayerHandleLoadMonSprite thumb_func_start PlayerHandleSwitchInAnim PlayerHandleSwitchInAnim: @ 8031F68 push {r4-r6,lr} ldr r5, _08031FD4 @ =gActiveBattler ldrb r0, [r5] ldr r4, _08031FD8 @ =gUnknown_2022BC4 lsls r1, r0, 9 adds r6, r4, 0x2 adds r1, r6 ldrb r1, [r1] bl ClearTemporarySpeciesSpriteData ldr r2, _08031FDC @ =gBattlerPartyIndexes ldrb r0, [r5] lsls r1, r0, 1 adds r1, r2 lsls r0, 9 adds r4, 0x1 adds r0, r4 ldrb r0, [r0] movs r4, 0 strh r0, [r1] ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _08031FE0 @ =gPlayerParty adds r0, r2 bl sub_8034498 ldr r1, _08031FE4 @ =gUnknown_2023FF8 ldrb r0, [r5] adds r0, r1 strb r4, [r0] ldr r1, _08031FE8 @ =gUnknown_2023FFC ldrb r0, [r5] adds r0, r1 strb r4, [r0] ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 ldrb r1, [r1] bl sub_8031FF4 ldr r1, _08031FEC @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08031FF0 @ =sub_802FD18 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08031FD4: .4byte gActiveBattler _08031FD8: .4byte gUnknown_2022BC4 _08031FDC: .4byte gBattlerPartyIndexes _08031FE0: .4byte gPlayerParty _08031FE4: .4byte gUnknown_2023FF8 _08031FE8: .4byte gUnknown_2023FFC _08031FEC: .4byte gUnknown_3004FE0 _08031FF0: .4byte sub_802FD18 thumb_func_end PlayerHandleSwitchInAnim thumb_func_start sub_8031FF4 sub_8031FF4: @ 8031FF4 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl ClearTemporarySpeciesSpriteData ldr r0, _08032138 @ =gBattlerPartyIndexes lsls r2, r6, 1 adds r2, r0 ldr r0, _0803213C @ =gUnknown_2022BC4 lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 ldrb r0, [r1] strh r0, [r2] ldrh r1, [r2] movs r0, 0x64 muls r0, r1 ldr r1, _08032140 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _08032144 @ =sub_8033E3C bl CreateInvisibleSpriteWithCallback ldr r1, _08032148 @ =gUnknown_3004FFC mov r9, r1 add r9, r6 mov r1, r9 strb r0, [r1] adds r0, r6, 0 bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r8 bl sub_803F7D4 ldr r0, _0803214C @ =gMultiuseSpriteTemplate mov r10, r0 adds r0, r6, 0 movs r1, 0x2 bl sub_8074480 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 bl GetBankSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 bl sub_807685C adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 mov r0, r10 adds r1, r5, 0 adds r2, r4, 0 bl CreateSprite ldr r4, _08032150 @ =gUnknown_2023D44 adds r4, r6, r4 strb r0, [r4] ldr r5, _08032154 @ =gSprites mov r0, r9 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r4] strh r1, [r0, 0x30] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r6, [r0, 0x2E] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x32] ldrb r0, [r4] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 lsls r3, r6, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _08032158 @ =gBattleMonForms adds r6, r1 ldrb r1, [r6] bl StartSpriteAnim ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, _0803215C @ =SpriteCallbackDummy str r1, [r0] movs r0, 0 movs r1, 0xFF bl DoPokeballSendOutAnimation mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r5 lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0x2E] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032138: .4byte gBattlerPartyIndexes _0803213C: .4byte gUnknown_2022BC4 _08032140: .4byte gPlayerParty _08032144: .4byte sub_8033E3C _08032148: .4byte gUnknown_3004FFC _0803214C: .4byte gMultiuseSpriteTemplate _08032150: .4byte gUnknown_2023D44 _08032154: .4byte gSprites _08032158: .4byte gBattleMonForms _0803215C: .4byte SpriteCallbackDummy thumb_func_end sub_8031FF4 thumb_func_start PlayerHandleReturnPokeToBall PlayerHandleReturnPokeToBall: @ 8032160 push {r4-r6,lr} ldr r1, _08032194 @ =gUnknown_2022BC4 ldr r6, _08032198 @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r3, [r0] cmp r3, 0 bne _080321A8 ldr r0, _0803219C @ =gUnknown_2024018 ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] ldr r1, _080321A0 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _080321A4 @ =sub_80321F0 str r1, [r0] b _080321DE .align 2, 0 _08032194: .4byte gUnknown_2022BC4 _08032198: .4byte gActiveBattler _0803219C: .4byte gUnknown_2024018 _080321A0: .4byte gUnknown_3004FE0 _080321A4: .4byte sub_80321F0 _080321A8: ldr r5, _080321E4 @ =gUnknown_2023D44 adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _080321E8 @ =gSprites adds r0, r4 bl FreeSpriteOamMatrix ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite ldr r1, _080321EC @ =gUnknown_3004FF0 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _080321DE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080321E4: .4byte gUnknown_2023D44 _080321E8: .4byte gSprites _080321EC: .4byte gUnknown_3004FF0 thumb_func_end PlayerHandleReturnPokeToBall thumb_func_start sub_80321F0 sub_80321F0: @ 80321F0 push {r4-r6,lr} ldr r6, _08032210 @ =gUnknown_2024018 ldr r4, [r6] ldr r5, _08032214 @ =gActiveBattler ldrb r2, [r5] ldr r1, [r4, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0x4] cmp r0, 0 beq _08032218 cmp r0, 0x1 beq _08032246 b _0803226E .align 2, 0 _08032210: .4byte gUnknown_2024018 _08032214: .4byte gActiveBattler _08032218: ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08032232 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _08032232: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _0803226E _08032246: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0803226E strb r0, [r3, 0x4] ldrb r2, [r5] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x1 bl InitAndLaunchSpecialAnimation ldr r1, _08032274 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08032278 @ =sub_80305A0 str r1, [r0] _0803226E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032274: .4byte gUnknown_3004FE0 _08032278: .4byte sub_80305A0 thumb_func_end sub_80321F0 thumb_func_start sub_803227C sub_803227C: @ 803227C push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _080322A4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _080322AC ldr r0, _080322A8 @ =gActiveBattler ldrb r0, [r0] bl GetBattlerPosition movs r1, 0x2 ands r1, r0 movs r7, 0x20 cmp r1, 0 beq _080322AE movs r7, 0x5A b _080322AE .align 2, 0 _080322A4: .4byte gBattleTypeFlags _080322A8: .4byte gActiveBattler _080322AC: movs r7, 0x50 _080322AE: ldr r0, _08032320 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0803233C bl GetMultiplayerId ldr r5, _08032324 @ =gLinkPlayers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 movs r4, 0xFF ldrb r0, [r1] cmp r0, 0x2 beq _08032306 bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrh r1, [r1] adds r0, r4, 0 ands r0, r1 cmp r0, 0x1 beq _08032306 bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrh r0, [r1] ands r4, r0 cmp r4, 0x3 bne _08032328 _08032306: bl GetMultiplayerId ldr r2, _08032324 @ =gLinkPlayers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x13] adds r4, r0, 0x2 b _08032342 .align 2, 0 _08032320: .4byte gBattleTypeFlags _08032324: .4byte gLinkPlayers _08032328: bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrb r4, [r1, 0x13] b _08032342 _0803233C: ldr r0, _08032400 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r4, [r0, 0x8] _08032342: ldr r5, _08032404 @ =gActiveBattler ldrb r1, [r5] adds r0, r4, 0 bl sub_8034750 ldrb r0, [r5] bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r6, _08032408 @ =gMultiuseSpriteTemplate mov r8, r7 ldr r0, _0803240C @ =gUnknown_8239F8C lsls r4, 2 adds r4, r0 ldrb r0, [r4] movs r4, 0x8 subs r4, r0 lsls r4, 18 movs r0, 0xA0 lsls r0, 15 adds r4, r0 asrs r4, 16 ldrb r0, [r5] bl sub_807685C adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 adds r0, r6, 0 mov r1, r8 adds r2, r4, 0 bl CreateSprite ldr r6, _08032410 @ =gUnknown_2023D44 ldrb r1, [r5] adds r1, r6 strb r0, [r1] ldr r4, _08032414 @ =gSprites ldrb r3, [r5] adds r0, r3, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0xF0 strh r1, [r0, 0x24] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08032418 @ =0x0000fffe strh r1, [r0, 0x2E] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _0803241C @ =sub_8033EEC str r1, [r0] ldr r1, _08032420 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08032424 @ =sub_802F730 str r1, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08032400: .4byte gSaveBlock2Ptr _08032404: .4byte gActiveBattler _08032408: .4byte gMultiuseSpriteTemplate _0803240C: .4byte gUnknown_8239F8C _08032410: .4byte gUnknown_2023D44 _08032414: .4byte gSprites _08032418: .4byte 0x0000fffe _0803241C: .4byte sub_8033EEC _08032420: .4byte gUnknown_3004FE0 _08032424: .4byte sub_802F730 thumb_func_end sub_803227C thumb_func_start sub_8032428 sub_8032428: @ 8032428 push {r4-r6,lr} ldr r0, _0803249C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _080324B8 bl GetMultiplayerId ldr r5, _080324A0 @ =gLinkPlayers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 movs r4, 0xFF ldrb r0, [r1] cmp r0, 0x2 beq _08032482 bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrh r1, [r1] adds r0, r4, 0 ands r0, r1 cmp r0, 0x1 beq _08032482 bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrh r0, [r1] ands r4, r0 cmp r4, 0x3 bne _080324A4 _08032482: bl GetMultiplayerId ldr r2, _080324A0 @ =gLinkPlayers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x13] adds r4, r0, 0x2 b _080324BE .align 2, 0 _0803249C: .4byte gBattleTypeFlags _080324A0: .4byte gLinkPlayers _080324A4: bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrb r4, [r1, 0x13] b _080324BE _080324B8: ldr r0, _08032568 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r4, [r0, 0x8] _080324BE: ldr r5, _0803256C @ =gActiveBattler ldrb r1, [r5] adds r0, r4, 0 bl sub_8034750 ldrb r0, [r5] bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _08032570 @ =gMultiuseSpriteTemplate ldr r1, _08032574 @ =gUnknown_8239F8C lsls r4, 2 adds r4, r1 ldrb r1, [r4] movs r2, 0x8 subs r2, r1 lsls r2, 18 movs r1, 0xA0 lsls r1, 15 adds r2, r1 asrs r2, 16 movs r1, 0x50 movs r3, 0x1E bl CreateSprite ldr r6, _08032578 @ =gUnknown_2023D44 ldrb r1, [r5] adds r1, r6 strb r0, [r1] ldr r4, _0803257C @ =gSprites ldrb r3, [r5] adds r0, r3, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08032580 @ =0x0000ffa0 strh r1, [r0, 0x24] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x2 strh r1, [r0, 0x2E] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _08032584 @ =sub_8033EEC str r1, [r0] ldr r1, _08032588 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _0803258C @ =sub_802F768 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032568: .4byte gSaveBlock2Ptr _0803256C: .4byte gActiveBattler _08032570: .4byte gMultiuseSpriteTemplate _08032574: .4byte gUnknown_8239F8C _08032578: .4byte gUnknown_2023D44 _0803257C: .4byte gSprites _08032580: .4byte 0x0000ffa0 _08032584: .4byte sub_8033EEC _08032588: .4byte gUnknown_3004FE0 _0803258C: .4byte sub_802F768 thumb_func_end sub_8032428 thumb_func_start PlayerHandleTrainerSlideBack PlayerHandleTrainerSlideBack: @ 8032590 push {r4-r6,lr} ldr r5, _08032630 @ =gUnknown_2023D44 ldr r6, _08032634 @ =gActiveBattler ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _08032638 @ =gSprites adds r0, r4 bl oamt_add_pos2_onto_pos1 ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x32 strh r1, [r0, 0x2E] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _0803263C @ =0x0000ffd8 strh r1, [r0, 0x32] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08032640 @ =sub_8075590 str r1, [r0] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08032644 @ =SpriteCallbackDummy bl StoreSpriteCallbackInData6 ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x1 bl StartSpriteAnim ldr r1, _08032648 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _0803264C @ =sub_802F7A0 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032630: .4byte gUnknown_2023D44 _08032634: .4byte gActiveBattler _08032638: .4byte gSprites _0803263C: .4byte 0x0000ffd8 _08032640: .4byte sub_8075590 _08032644: .4byte SpriteCallbackDummy _08032648: .4byte gUnknown_3004FE0 _0803264C: .4byte sub_802F7A0 thumb_func_end PlayerHandleTrainerSlideBack thumb_func_start sub_8032650 sub_8032650: @ 8032650 push {r4-r6,lr} ldr r6, _0803269C @ =gUnknown_2024018 ldr r4, [r6] ldr r5, _080326A0 @ =gActiveBattler ldrb r2, [r5] ldr r0, [r4, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r3, r1, r0 ldrb r0, [r3, 0x4] cmp r0, 0 bne _080326A4 ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08032684 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _08032684: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x4] adds r1, 0x1 strb r1, [r0, 0x4] b _0803271A .align 2, 0 _0803269C: .4byte gUnknown_2024018 _080326A0: .4byte gActiveBattler _080326A4: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0803271A strb r4, [r3, 0x4] ldr r2, _08032720 @ =gBattlerPartyIndexes ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _08032724 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange movs r1, 0x40 negs r1, r1 movs r0, 0x10 bl PlaySE12WithPanning ldr r2, _08032728 @ =gSprites ldr r3, _0803272C @ =gUnknown_2023D44 ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r4, [r0, 0x30] ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x5 strh r1, [r0, 0x32] ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _08032730 @ =sub_8012110 str r1, [r0] ldr r1, _08032734 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08032738 @ =sub_8030538 str r1, [r0] _0803271A: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032720: .4byte gBattlerPartyIndexes _08032724: .4byte gPlayerParty _08032728: .4byte gSprites _0803272C: .4byte gUnknown_2023D44 _08032730: .4byte sub_8012110 _08032734: .4byte gUnknown_3004FE0 _08032738: .4byte sub_8030538 thumb_func_end sub_8032650 thumb_func_start PlayerHandlePaletteFade PlayerHandlePaletteFade: @ 803273C push {lr} sub sp, 0x4 movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r1, 0x2 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade bl PlayerBufferExecCompleted add sp, 0x4 pop {r0} bx r0 thumb_func_end PlayerHandlePaletteFade thumb_func_start sub_803275C sub_803275C: @ 803275C push {r4,r5,lr} ldr r0, _0803279C @ =gUnknown_2024018 ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 strb r0, [r1, 0x8] ldr r1, _080327A0 @ =gUnknown_2024005 movs r0, 0x1 strb r0, [r1] ldr r5, _080327A4 @ =gActiveBattler ldrb r4, [r5] movs r0, 0x1 bl GetBattlerAtPosition adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation ldr r1, _080327A8 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _080327AC @ =CompleteOnSpecialAnimDone str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0803279C: .4byte gUnknown_2024018 _080327A0: .4byte gUnknown_2024005 _080327A4: .4byte gActiveBattler _080327A8: .4byte gUnknown_3004FE0 _080327AC: .4byte CompleteOnSpecialAnimDone thumb_func_end sub_803275C thumb_func_start PlayerHandleBallThrowAnim PlayerHandleBallThrowAnim: @ 80327B0 push {r4,r5,lr} ldr r1, _080327F8 @ =gUnknown_2022BC4 ldr r5, _080327FC @ =gActiveBattler ldrb r0, [r5] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] ldr r0, _08032800 @ =gUnknown_2024018 ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] ldr r1, _08032804 @ =gUnknown_2024005 movs r0, 0x1 strb r0, [r1] ldrb r4, [r5] movs r0, 0x1 bl GetBattlerAtPosition adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation ldr r1, _08032808 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _0803280C @ =CompleteOnSpecialAnimDone str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080327F8: .4byte gUnknown_2022BC4 _080327FC: .4byte gActiveBattler _08032800: .4byte gUnknown_2024018 _08032804: .4byte gUnknown_2024005 _08032808: .4byte gUnknown_3004FE0 _0803280C: .4byte CompleteOnSpecialAnimDone thumb_func_end PlayerHandleBallThrowAnim thumb_func_start PlayerHandlePause PlayerHandlePause: @ 8032810 push {lr} ldr r1, _08032838 @ =gUnknown_2022BC4 ldr r0, _0803283C @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _0803282E _08032824: subs r0, 0x1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _08032824 _0803282E: bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08032838: .4byte gUnknown_2022BC4 _0803283C: .4byte gActiveBattler thumb_func_end PlayerHandlePause thumb_func_start PlayerHandleMoveAnimation PlayerHandleMoveAnimation: @ 8032840 push {r4-r6,lr} ldr r6, _08032924 @ =gActiveBattler ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 beq _08032852 b _08032966 _08032852: ldr r0, _08032928 @ =gUnknown_2022BC4 mov r12, r0 ldrb r2, [r6] lsls r2, 9 adds r0, 0x1 adds r0, r2, r0 ldrb r0, [r0] mov r1, r12 adds r1, 0x2 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 ldr r5, _0803292C @ =gUnknown_2037F16 mov r1, r12 adds r1, 0x3 adds r2, r1 ldrb r1, [r2] strb r1, [r5] ldr r4, _08032930 @ =gUnknown_2037EEC ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x4 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x5 adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r4, _08032934 @ =gUnknown_2037EE8 ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x6 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x7 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r3, r1 mov r1, r12 adds r1, 0x8 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 16 orrs r3, r1 mov r1, r12 adds r1, 0x9 adds r2, r1 ldrb r1, [r2] lsls r1, 24 orrs r3, r1 str r3, [r4] ldr r3, _08032938 @ =gUnknown_2037EFE ldrb r1, [r6] lsls r1, 9 mov r2, r12 adds r2, 0xA adds r1, r2 ldrb r1, [r1] strb r1, [r3] ldr r4, _0803293C @ =gUnknown_2037F00 ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0xC adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0xD adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r3, _08032940 @ =gUnknown_2037EE4 ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x10 adds r2, r1 str r2, [r3] ldr r3, _08032944 @ =gUnknown_2024008 ldrb r1, [r6] lsls r1, 2 adds r1, r3 ldr r2, [r2] str r2, [r1] ldrb r1, [r5] bl IsMoveWithoutAnimation lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08032948 bl PlayerBufferExecCompleted b _08032966 .align 2, 0 _08032924: .4byte gActiveBattler _08032928: .4byte gUnknown_2022BC4 _0803292C: .4byte gUnknown_2037F16 _08032930: .4byte gUnknown_2037EEC _08032934: .4byte gUnknown_2037EE8 _08032938: .4byte gUnknown_2037EFE _0803293C: .4byte gUnknown_2037F00 _08032940: .4byte gUnknown_2037EE4 _08032944: .4byte gUnknown_2024008 _08032948: ldr r0, _0803296C @ =gUnknown_2024018 ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] ldr r1, _08032970 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _08032974 @ =sub_8032978 str r1, [r0] _08032966: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0803296C: .4byte gUnknown_2024018 _08032970: .4byte gUnknown_3004FE0 _08032974: .4byte sub_8032978 thumb_func_end PlayerHandleMoveAnimation thumb_func_start sub_8032978 sub_8032978: @ 8032978 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r2, _080329C4 @ =gUnknown_2022BC4 ldr r6, _080329C8 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 adds r0, r2, 0x1 mov r10, r0 adds r0, r1, r0 ldrb r4, [r0] adds r5, r2, 0x2 mov r9, r5 adds r0, r1, r5 ldrb r0, [r0] lsls r0, 8 orrs r4, r0 adds r2, 0xB adds r1, r2 ldrb r1, [r1] mov r8, r1 ldr r7, _080329CC @ =gUnknown_2024018 ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r2, [r0, 0x4] cmp r2, 0x1 beq _08032A10 cmp r2, 0x1 bgt _080329D0 cmp r2, 0 beq _080329DA b _08032AEC .align 2, 0 _080329C4: .4byte gUnknown_2022BC4 _080329C8: .4byte gActiveBattler _080329CC: .4byte gUnknown_2024018 _080329D0: cmp r2, 0x2 beq _08032A3A cmp r2, 0x3 beq _08032AB0 b _08032AEC _080329DA: ldr r1, [r5] lsls r0, r3, 2 adds r1, r0, r1 ldrb r2, [r1] movs r0, 0xC ands r0, r2 cmp r0, 0x4 bne _080329FC movs r0, 0x8 orrs r0, r2 strb r0, [r1] ldrb r2, [r6] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _080329FC: ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _08032AEC _08032A10: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08032AEC movs r0, 0 bl sub_8035450 adds r0, r4, 0 bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x4] b _08032AEC _08032A3A: ldr r0, _08032AA0 @ =gUnknown_2037EDC ldr r0, [r0] bl _call_via_r0 ldr r0, _08032AA4 @ =gUnknown_2037EE1 ldrb r0, [r0] cmp r0, 0 bne _08032AEC movs r0, 0x1 bl sub_8035450 ldr r0, [r7] ldrb r2, [r6] ldr r1, [r0] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08032A88 mov r0, r8 cmp r0, 0x1 bhi _08032A88 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x6 bl InitAndLaunchSpecialAnimation ldr r0, [r7] ldrb r1, [r6] ldr r0, [r0] lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x9 negs r0, r0 ands r0, r2 strb r0, [r1] _08032A88: ldr r0, _08032AA8 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _08032AAC @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x4] b _08032AEC .align 2, 0 _08032AA0: .4byte gUnknown_2037EDC _08032AA4: .4byte gUnknown_2037EE1 _08032AA8: .4byte gUnknown_2024018 _08032AAC: .4byte gActiveBattler _08032AB0: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _08032AEC bl CopyAllBattleSpritesInvisibilities ldrb r0, [r6] lsls r2, r0, 9 mov r3, r10 adds r1, r2, r3 ldrb r1, [r1] add r2, r9 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 bl TrySetBehindSubstituteSpriteBit ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r4, [r0, 0x4] bl PlayerBufferExecCompleted _08032AEC: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8032978 thumb_func_start sub_8032AFC sub_8032AFC: @ 8032AFC push {r4,lr} ldr r0, _08032B30 @ =gUnknown_2022974 movs r1, 0 strh r1, [r0] ldr r0, _08032B34 @ =gUnknown_2022976 strh r1, [r0] ldr r0, _08032B38 @ =gActiveBattler ldrb r4, [r0] lsls r4, 9 ldr r0, _08032B3C @ =gUnknown_2022BC6 adds r4, r0 ldrh r0, [r4] bl sub_80D7274 ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 cmp r0, 0 beq _08032B44 ldr r0, _08032B40 @ =gDisplayedStringBattle movs r1, 0x40 bl sub_80D87BC b _08032B4C .align 2, 0 _08032B30: .4byte gUnknown_2022974 _08032B34: .4byte gUnknown_2022976 _08032B38: .4byte gActiveBattler _08032B3C: .4byte gUnknown_2022BC6 _08032B40: .4byte gDisplayedStringBattle _08032B44: ldr r0, _08032B60 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC _08032B4C: ldr r1, _08032B64 @ =gUnknown_3004FE0 ldr r0, _08032B68 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032B6C @ =sub_8030610 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08032B60: .4byte gDisplayedStringBattle _08032B64: .4byte gUnknown_3004FE0 _08032B68: .4byte gActiveBattler _08032B6C: .4byte sub_8030610 thumb_func_end sub_8032AFC thumb_func_start sub_8032B70 sub_8032B70: @ 8032B70 push {lr} ldr r0, _08032B88 @ =gActiveBattler ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08032B8C bl sub_8032AFC b _08032B90 .align 2, 0 _08032B88: .4byte gActiveBattler _08032B8C: bl PlayerBufferExecCompleted _08032B90: pop {r0} bx r0 thumb_func_end sub_8032B70 thumb_func_start sub_8032B94 sub_8032B94: @ 8032B94 push {lr} bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _08032BBA ldr r0, _08032BC0 @ =gUnknown_2022974 strh r1, [r0] ldr r1, _08032BC4 @ =gUnknown_2022976 movs r0, 0xA0 strh r0, [r1] ldr r1, _08032BC8 @ =gUnknown_3004FE0 ldr r0, _08032BCC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032BD0 @ =sub_802E438 str r1, [r0] _08032BBA: pop {r0} bx r0 .align 2, 0 _08032BC0: .4byte gUnknown_2022974 _08032BC4: .4byte gUnknown_2022976 _08032BC8: .4byte gUnknown_3004FE0 _08032BCC: .4byte gActiveBattler _08032BD0: .4byte sub_802E438 thumb_func_end sub_8032B94 thumb_func_start sub_8032BD4 sub_8032BD4: @ 8032BD4 push {r4,lr} ldr r1, _08032C28 @ =gUnknown_3004FE0 ldr r0, _08032C2C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032C30 @ =sub_8032B94 str r1, [r0] ldr r0, _08032C34 @ =gUnknown_83FDA4C movs r1, 0 bl sub_80D87BC ldr r0, _08032C38 @ =gUnknown_83FE725 movs r1, 0x2 bl sub_80D87BC movs r4, 0 _08032BF6: lsls r0, r4, 24 lsrs r0, 24 bl ActionSelectionDestroyCursorAt adds r4, 0x1 cmp r4, 0x3 ble _08032BF6 ldr r1, _08032C3C @ =gUnknown_2023FF8 ldr r0, _08032C2C @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] movs r1, 0 bl ActionSelectionCreateCursorAt ldr r0, _08032C40 @ =gUnknown_83FE6D5 bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08032C44 @ =gDisplayedStringBattle movs r1, 0x1 bl sub_80D87BC pop {r4} pop {r0} bx r0 .align 2, 0 _08032C28: .4byte gUnknown_3004FE0 _08032C2C: .4byte gActiveBattler _08032C30: .4byte sub_8032B94 _08032C34: .4byte gUnknown_83FDA4C _08032C38: .4byte gUnknown_83FE725 _08032C3C: .4byte gUnknown_2023FF8 _08032C40: .4byte gUnknown_83FE6D5 _08032C44: .4byte gDisplayedStringBattle thumb_func_end sub_8032BD4 thumb_func_start nullsub_14 nullsub_14: @ 8032C48 bx lr thumb_func_end nullsub_14 thumb_func_start sub_8032C4C sub_8032C4C: @ 8032C4C push {lr} bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _08032C76 ldr r0, _08032C7C @ =gUnknown_2022974 strh r1, [r0] ldr r1, _08032C80 @ =gUnknown_2022976 movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r1, _08032C84 @ =gUnknown_3004FE0 ldr r0, _08032C88 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032C8C @ =sub_802EA10 str r1, [r0] _08032C76: pop {r0} bx r0 .align 2, 0 _08032C7C: .4byte gUnknown_2022974 _08032C80: .4byte gUnknown_2022976 _08032C84: .4byte gUnknown_3004FE0 _08032C88: .4byte gActiveBattler _08032C8C: .4byte sub_802EA10 thumb_func_end sub_8032C4C thumb_func_start sub_8032C90 sub_8032C90: @ 8032C90 push {lr} bl sub_8032CB4 ldr r1, _08032CA8 @ =gUnknown_3004FE0 ldr r0, _08032CAC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032CB0 @ =sub_8032C4C str r1, [r0] pop {r0} bx r0 .align 2, 0 _08032CA8: .4byte gUnknown_3004FE0 _08032CAC: .4byte gActiveBattler _08032CB0: .4byte sub_8032C4C thumb_func_end sub_8032C90 thumb_func_start sub_8032CB4 sub_8032CB4: @ 8032CB4 push {lr} bl sub_8030830 ldr r1, _08032CE0 @ =gUnknown_3004FF4 movs r0, 0xFF strb r0, [r1] ldr r1, _08032CE4 @ =gUnknown_2023FFC ldr r0, _08032CE8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] movs r1, 0 bl MoveSelectionCreateCursorAt bl MoveSelectionDisplayPpString bl MoveSelectionDisplayPpNumber bl MoveSelectionDisplayMoveType pop {r0} bx r0 .align 2, 0 _08032CE0: .4byte gUnknown_3004FF4 _08032CE4: .4byte gUnknown_2023FFC _08032CE8: .4byte gActiveBattler thumb_func_end sub_8032CB4 thumb_func_start sub_8032CEC sub_8032CEC: @ 8032CEC push {r4,r5,lr} sub sp, 0x4 movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _08032D38 @ =gUnknown_3004FE0 ldr r2, _08032D3C @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08032D40 @ =sub_8030700 str r1, [r0] ldr r1, _08032D44 @ =gBattlerInMenuId ldrb r0, [r2] strb r0, [r1] movs r3, 0 ldr r5, _08032D48 @ =gUnknown_203B0DC ldr r4, _08032D4C @ =gUnknown_2022BC4 _08032D1A: adds r0, r3, r5 ldrb r1, [r2] lsls r1, 9 adds r1, 0x1 adds r1, r3, r1 adds r1, r4 ldrb r1, [r1] strb r1, [r0] adds r3, 0x1 cmp r3, 0x2 ble _08032D1A add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08032D38: .4byte gUnknown_3004FE0 _08032D3C: .4byte gActiveBattler _08032D40: .4byte sub_8030700 _08032D44: .4byte gBattlerInMenuId _08032D48: .4byte gUnknown_203B0DC _08032D4C: .4byte gUnknown_2022BC4 thumb_func_end sub_8032CEC thumb_func_start sub_8032D50 sub_8032D50: @ 8032D50 push {r4-r6,lr} sub sp, 0x4 ldr r0, _08032E00 @ =TaskDummy movs r1, 0xFF bl CreateTask ldr r3, _08032E04 @ =gUnknown_3004FFC ldr r4, _08032E08 @ =gActiveBattler ldrb r1, [r4] adds r1, r3 strb r0, [r1] ldr r5, _08032E0C @ =gTasks ldrb r2, [r4] adds r3, r2, r3 ldrb r0, [r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r5 ldr r5, _08032E10 @ =gUnknown_2022BC4 lsls r2, 9 adds r6, r5, 0x1 adds r2, r6 ldrb r2, [r2] movs r0, 0xF ands r0, r2 strh r0, [r1, 0x8] ldr r3, _08032E14 @ =gBattleStruct ldr r1, [r3] adds r1, 0x49 ldrb r0, [r4] lsls r0, 9 adds r0, r6 ldrb r0, [r0] lsrs r0, 4 strb r0, [r1] ldr r2, [r3] adds r2, 0x8B ldrb r0, [r4] lsls r0, 9 adds r1, r5, 0x2 adds r0, r1 ldrb r0, [r0] strb r0, [r2] ldr r2, [r3] adds r2, 0xAC ldrb r0, [r4] lsls r0, 9 adds r1, r5, 0x3 adds r0, r1 ldrb r0, [r0] strb r0, [r2] movs r2, 0 ldr r3, _08032E18 @ =gUnknown_203B0DC _08032DBC: adds r0, r2, r3 ldrb r1, [r4] lsls r1, 9 adds r1, 0x4 adds r1, r2, r1 adds r1, r5 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, 0x2 ble _08032DBC movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _08032E1C @ =gUnknown_3004FE0 ldr r2, _08032E08 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08032E20 @ =sub_8030628 str r1, [r0] ldr r1, _08032E24 @ =gBattlerInMenuId ldrb r0, [r2] strb r0, [r1] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08032E00: .4byte TaskDummy _08032E04: .4byte gUnknown_3004FFC _08032E08: .4byte gActiveBattler _08032E0C: .4byte gTasks _08032E10: .4byte gUnknown_2022BC4 _08032E14: .4byte gBattleStruct _08032E18: .4byte gUnknown_203B0DC _08032E1C: .4byte gUnknown_3004FE0 _08032E20: .4byte sub_8030628 _08032E24: .4byte gBattlerInMenuId thumb_func_end sub_8032D50 thumb_func_start sub_8032E28 sub_8032E28: @ 8032E28 push {lr} sub sp, 0x4 bl BattleStopLowHpSound movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r1, 0x2 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade bl PlayerBufferExecCompleted add sp, 0x4 pop {r0} bx r0 thumb_func_end sub_8032E28 thumb_func_start sub_8032E4C sub_8032E4C: @ 8032E4C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx ldr r3, _08032EC4 @ =gUnknown_2022BC4 ldr r0, _08032EC8 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] lsls r2, r4, 9 adds r0, r3, 0x2 adds r0, r2, r0 ldrb r1, [r0] adds r3, 0x3 adds r2, r3 ldrb r0, [r2] lsls r0, 8 orrs r1, r0 lsls r1, 16 asrs r7, r1, 16 ldr r0, _08032ECC @ =0x00007fff cmp r7, r0 beq _08032EDC ldr r6, _08032ED0 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r6 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r4, _08032ED4 @ =gPlayerParty adds r0, r4 movs r1, 0x3A bl GetMonData mov r8, r0 mov r1, r9 ldrb r0, [r1] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r4 movs r1, 0x39 bl GetMonData adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r1, _08032ED8 @ =gUnknown_3004FF0 adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] mov r2, r8 bl SetBattleBarStruct b _08032F16 .align 2, 0 _08032EC4: .4byte gUnknown_2022BC4 _08032EC8: .4byte gActiveBattler _08032ECC: .4byte 0x00007fff _08032ED0: .4byte gBattlerPartyIndexes _08032ED4: .4byte gPlayerParty _08032ED8: .4byte gUnknown_3004FF0 _08032EDC: ldr r1, _08032F34 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08032F38 @ =gPlayerParty adds r0, r1 movs r1, 0x3A bl GetMonData adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r4, _08032F3C @ =gUnknown_3004FF0 adds r1, r0, r4 ldrb r1, [r1] str r7, [sp] movs r3, 0 bl SetBattleBarStruct mov r1, r9 ldrb r0, [r1] adds r0, r4 ldrb r0, [r0] movs r1, 0 movs r2, 0 bl sub_8048440 _08032F16: ldr r1, _08032F40 @ =gUnknown_3004FE0 ldr r0, _08032F44 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08032F48 @ =CompleteOnHealthbarDone str r1, [r0] add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08032F34: .4byte gBattlerPartyIndexes _08032F38: .4byte gPlayerParty _08032F3C: .4byte gUnknown_3004FF0 _08032F40: .4byte gUnknown_3004FE0 _08032F44: .4byte gActiveBattler _08032F48: .4byte CompleteOnHealthbarDone thumb_func_end sub_8032E4C thumb_func_start PlayerHandleExpUpdate PlayerHandleExpUpdate: @ 8032F4C push {r4-r7,lr} ldr r5, _08032F78 @ =gUnknown_2022BC4 ldr r6, _08032F7C @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 adds r1, r5, 0x1 adds r0, r1 ldrb r7, [r0] movs r0, 0x64 adds r1, r7, 0 muls r1, r0 ldr r0, _08032F80 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x38 bl GetMonData cmp r0, 0x63 bls _08032F84 bl PlayerBufferExecCompleted b _08032FD0 .align 2, 0 _08032F78: .4byte gUnknown_2022BC4 _08032F7C: .4byte gActiveBattler _08032F80: .4byte gPlayerParty _08032F84: movs r0, 0x1 bl LoadBattleBarGfx adds r0, r4, 0 movs r1, 0xB bl GetMonData ldrb r1, [r6] lsls r1, 9 adds r0, r5, 0x2 adds r0, r1, r0 ldrb r4, [r0] adds r0, r5, 0x3 adds r1, r0 ldrb r0, [r1] lsls r0, 8 orrs r4, r0 ldr r0, _08032FD8 @ =sub_802FEAC movs r1, 0xA bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _08032FDC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r7, [r1, 0x8] strh r4, [r1, 0xA] ldrb r0, [r6] strh r0, [r1, 0xC] ldr r1, _08032FE0 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _08032FE4 @ =nullsub_13 str r1, [r0] _08032FD0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08032FD8: .4byte sub_802FEAC _08032FDC: .4byte gTasks _08032FE0: .4byte gUnknown_3004FE0 _08032FE4: .4byte nullsub_13 thumb_func_end PlayerHandleExpUpdate thumb_func_start sub_8032FE8 sub_8032FE8: @ 8032FE8 push {r4,lr} ldr r4, _08033044 @ =gActiveBattler ldrb r0, [r4] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _0803303C ldr r0, _08033048 @ =gUnknown_3004FF0 ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] ldr r2, _0803304C @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _08033050 @ =gPlayerParty adds r1, r2 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, _08033054 @ =gUnknown_2024018 ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x11 negs r0, r0 ands r0, r2 strb r0, [r1] ldr r1, _08033058 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0803305C @ =CompleteOnFinishedStatusAnimation str r1, [r0] _0803303C: pop {r4} pop {r0} bx r0 .align 2, 0 _08033044: .4byte gActiveBattler _08033048: .4byte gUnknown_3004FF0 _0803304C: .4byte gBattlerPartyIndexes _08033050: .4byte gPlayerParty _08033054: .4byte gUnknown_2024018 _08033058: .4byte gUnknown_3004FE0 _0803305C: .4byte CompleteOnFinishedStatusAnimation thumb_func_end sub_8032FE8 thumb_func_start sub_8033060 sub_8033060: @ 8033060 push {r4,r5,lr} ldr r5, _080330B8 @ =gActiveBattler ldrb r0, [r5] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _080330B0 ldr r4, _080330BC @ =gUnknown_2022BC4 ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 adds r0, r3, r0 ldrb r0, [r0] adds r1, r4, 0x2 adds r1, r3, r1 ldrb r1, [r1] adds r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 adds r2, r4, 0x4 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 16 orrs r1, r2 adds r4, 0x5 adds r3, r4 ldrb r2, [r3] lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation ldr r1, _080330C0 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _080330C4 @ =CompleteOnFinishedStatusAnimation str r1, [r0] _080330B0: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080330B8: .4byte gActiveBattler _080330BC: .4byte gUnknown_2022BC4 _080330C0: .4byte gUnknown_3004FE0 _080330C4: .4byte CompleteOnFinishedStatusAnimation thumb_func_end sub_8033060 thumb_func_start PlayerHandleStatusXor PlayerHandleStatusXor: @ 80330C8 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x4 ldr r0, _08033124 @ =gBattlerPartyIndexes mov r8, r0 ldr r4, _08033128 @ =gActiveBattler ldrb r0, [r4] lsls r0, 1 add r0, r8 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r5, _0803312C @ =gPlayerParty adds r0, r5 movs r1, 0x37 bl GetMonData ldr r2, _08033130 @ =gUnknown_2022BC4 ldrb r1, [r4] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] eors r0, r1 mov r1, sp strb r0, [r1] ldrb r0, [r4] lsls r0, 1 add r0, r8 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0x37 mov r2, sp bl SetMonData bl PlayerBufferExecCompleted add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08033124: .4byte gBattlerPartyIndexes _08033128: .4byte gActiveBattler _0803312C: .4byte gPlayerParty _08033130: .4byte gUnknown_2022BC4 thumb_func_end PlayerHandleStatusXor thumb_func_start sub_8033134 sub_8033134: @ 8033134 push {lr} bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8033134 thumb_func_start PlayerHandleDMA3Transfer PlayerHandleDMA3Transfer: @ 8033140 push {r4,r5,lr} ldr r3, _080331A4 @ =gUnknown_2022BC4 ldr r0, _080331A8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 adds r0, r3, 0x1 adds r0, r2, r0 ldrb r5, [r0] adds r0, r3, 0x2 adds r0, r2, r0 ldrb r0, [r0] lsls r0, 8 orrs r5, r0 adds r0, r3, 0x3 adds r0, r2, r0 ldrb r0, [r0] lsls r0, 16 orrs r5, r0 adds r0, r3, 0x4 adds r0, r2, r0 ldrb r4, [r0] lsls r4, 24 adds r0, r3, 0x5 adds r0, r2, r0 ldrb r1, [r0] adds r0, r3, 0x6 adds r0, r2, r0 ldrb r0, [r0] lsls r0, 8 orrs r1, r0 lsls r1, 16 adds r3, 0x7 adds r2, r3 orrs r5, r4 lsrs r4, r1, 16 movs r0, 0x80 lsls r0, 5 cmp r4, r0 bhi _080331B0 ldr r0, _080331AC @ =0x040000d4 str r2, [r0] str r5, [r0, 0x4] lsrs r1, 17 movs r2, 0x80 lsls r2, 24 orrs r1, r2 str r1, [r0, 0x8] ldr r0, [r0, 0x8] b _080331DC .align 2, 0 _080331A4: .4byte gUnknown_2022BC4 _080331A8: .4byte gActiveBattler _080331AC: .4byte 0x040000d4 _080331B0: ldr r3, _080331E8 @ =0x040000d4 str r2, [r3] str r5, [r3, 0x4] ldr r0, _080331EC @ =0x80000800 str r0, [r3, 0x8] ldr r0, [r3, 0x8] movs r0, 0x80 lsls r0, 5 adds r2, r0 adds r5, r0 ldr r1, _080331F0 @ =0xfffff000 adds r4, r1 cmp r4, r0 bhi _080331B0 str r2, [r3] str r5, [r3, 0x4] lsrs r0, r4, 1 movs r1, 0x80 lsls r1, 24 orrs r0, r1 str r0, [r3, 0x8] ldr r0, [r3, 0x8] _080331DC: bl PlayerBufferExecCompleted pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080331E8: .4byte 0x040000d4 _080331EC: .4byte 0x80000800 _080331F0: .4byte 0xfffff000 thumb_func_end PlayerHandleDMA3Transfer thumb_func_start PlayerHandlePlayBGM PlayerHandlePlayBGM: @ 80331F4 push {lr} ldr r2, _0803321C @ =gUnknown_2022BC4 ldr r0, _08033220 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 bl PlayBGM bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _0803321C: .4byte gUnknown_2022BC4 _08033220: .4byte gActiveBattler thumb_func_end PlayerHandlePlayBGM thumb_func_start sub_8033224 sub_8033224: @ 8033224 push {lr} bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8033224 thumb_func_start PlayerHandleTwoReturnValues PlayerHandleTwoReturnValues: @ 8033230 push {lr} movs r0, 0x1 movs r1, 0 movs r2, 0 bl EmitTwoReturnValues bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end PlayerHandleTwoReturnValues thumb_func_start PlayerHandleChosenMonReturnValue PlayerHandleChosenMonReturnValue: @ 8033244 push {lr} movs r0, 0x1 movs r1, 0 movs r2, 0 bl EmitChosenMonReturnValue bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end PlayerHandleChosenMonReturnValue thumb_func_start PlayerHandleOneReturnValue PlayerHandleOneReturnValue: @ 8033258 push {lr} movs r0, 0x1 movs r1, 0 bl EmitOneReturnValue bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end PlayerHandleOneReturnValue thumb_func_start PlayerHandleOneReturnValue_Duplicate PlayerHandleOneReturnValue_Duplicate: @ 803326C push {lr} movs r0, 0x1 movs r1, 0 bl EmitOneReturnValue_Duplicate bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end PlayerHandleOneReturnValue_Duplicate thumb_func_start PlayerHandleCmd37 PlayerHandleCmd37: @ 8033280 push {lr} ldr r2, _08033298 @ =gUnknown_2022870 ldrb r1, [r2] movs r0, 0x80 negs r0, r0 ands r0, r1 strb r0, [r2] bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08033298: .4byte gUnknown_2022870 thumb_func_end PlayerHandleCmd37 thumb_func_start PlayerHandleCmd38 PlayerHandleCmd38: @ 803329C push {lr} ldr r3, _080332C8 @ =gUnknown_2022870 ldr r1, _080332CC @ =gUnknown_2022BC4 ldr r0, _080332D0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] movs r1, 0x7F ands r1, r0 ldrb r2, [r3] movs r0, 0x80 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _080332C8: .4byte gUnknown_2022870 _080332CC: .4byte gUnknown_2022BC4 _080332D0: .4byte gActiveBattler thumb_func_end PlayerHandleCmd38 thumb_func_start PlayerHandleCmd39 PlayerHandleCmd39: @ 80332D4 push {lr} ldr r2, _080332E8 @ =gUnknown_2022870 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _080332E8: .4byte gUnknown_2022870 thumb_func_end PlayerHandleCmd39 thumb_func_start PlayerHandleCmd40 PlayerHandleCmd40: @ 80332EC push {lr} ldr r3, _08033310 @ =gUnknown_2022870 ldr r1, [r3] lsls r1, 24 lsrs r1, 31 movs r0, 0x1 eors r1, r0 lsls r1, 7 ldrb r2, [r3] movs r0, 0x7F ands r0, r2 orrs r0, r1 strb r0, [r3] bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08033310: .4byte gUnknown_2022870 thumb_func_end PlayerHandleCmd40 thumb_func_start PlayerHandleHitAnimation PlayerHandleHitAnimation: @ 8033314 push {r4,lr} ldr r3, _0803333C @ =gSprites ldr r2, _08033340 @ =gUnknown_2023D44 ldr r4, _08033344 @ =gActiveBattler ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _08033348 bl PlayerBufferExecCompleted b _08033372 .align 2, 0 _0803333C: .4byte gSprites _08033340: .4byte gUnknown_2023D44 _08033344: .4byte gActiveBattler _08033348: ldr r1, _08033378 @ =gUnknown_2024005 movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0 strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect ldr r1, _0803337C @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08033380 @ =DoHitAnimBlinkSpriteEffect str r1, [r0] _08033372: pop {r4} pop {r0} bx r0 .align 2, 0 _08033378: .4byte gUnknown_2024005 _0803337C: .4byte gUnknown_3004FE0 _08033380: .4byte DoHitAnimBlinkSpriteEffect thumb_func_end PlayerHandleHitAnimation thumb_func_start sub_8033384 sub_8033384: @ 8033384 push {lr} bl PlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8033384 thumb_func_start PlayerHandlePlaySE PlayerHandlePlaySE: @ 8033390 push {r4,lr} ldr r4, _080333CC @ =gActiveBattler ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 movs r3, 0x3F cmp r0, 0 bne _080333A4 movs r3, 0xC0 _080333A4: ldr r2, _080333D0 @ =gUnknown_2022BC4 ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 bl PlaySE12WithPanning bl PlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _080333CC: .4byte gActiveBattler _080333D0: .4byte gUnknown_2022BC4 thumb_func_end PlayerHandlePlaySE thumb_func_start PlayerHandlecmd44 PlayerHandlecmd44: @ 80333D4 push {lr} ldr r2, _080333FC @ =gUnknown_2022BC4 ldr r0, _08033400 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 bl PlayFanfare bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _080333FC: .4byte gUnknown_2022BC4 _08033400: .4byte gActiveBattler thumb_func_end PlayerHandlecmd44 thumb_func_start PlayerHandleFaintingCry PlayerHandleFaintingCry: @ 8033404 push {lr} ldr r1, _08033438 @ =gBattlerPartyIndexes ldr r0, _0803343C @ =gActiveBattler ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08033440 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 movs r1, 0x19 negs r1, r1 movs r2, 0x5 bl PlayCry3 bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08033438: .4byte gBattlerPartyIndexes _0803343C: .4byte gActiveBattler _08033440: .4byte gPlayerParty thumb_func_end PlayerHandleFaintingCry thumb_func_start PlayerHandleIntroSlide PlayerHandleIntroSlide: @ 8033444 push {lr} ldr r1, _0803346C @ =gUnknown_2022BC4 ldr r0, _08033470 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 ldr r2, _08033474 @ =gUnknown_2023F4C ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 strh r0, [r2] bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _0803346C: .4byte gUnknown_2022BC4 _08033470: .4byte gActiveBattler _08033474: .4byte gUnknown_2023F4C thumb_func_end PlayerHandleIntroSlide thumb_func_start PlayerHandleIntroTrainerBallThrow PlayerHandleIntroTrainerBallThrow: @ 8033478 push {r4-r7,lr} ldr r6, _080335B8 @ =gUnknown_2023D44 ldr r7, _080335BC @ =gActiveBattler ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _080335C0 @ =gSprites adds r0, r5 bl oamt_add_pos2_onto_pos1 ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x32 strh r1, [r0, 0x2E] ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _080335C4 @ =0x0000ffd8 strh r1, [r0, 0x32] ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, _080335C8 @ =sub_80755B8 str r1, [r0] ldrb r2, [r7] adds r0, r2, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r2, [r0, 0x38] ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _080335CC @ =sub_80335F8 bl StoreSpriteCallbackInData6 ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x1 bl StartSpriteAnim ldr r0, _080335D0 @ =0x0000d6f8 bl AllocSpritePalette adds r4, r0, 0 lsls r4, 24 ldr r1, _080335D4 @ =gUnknown_8239FD4 ldr r0, _080335D8 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 3 adds r0, r1 ldr r0, [r0] lsrs r4, 20 movs r2, 0x80 lsls r2, 1 adds r1, r4, r2 movs r2, 0x20 bl LoadCompressedPalette ldrb r0, [r7] adds r0, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r4 strb r0, [r1, 0x5] ldr r0, _080335DC @ =task05_08033660 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r4, _080335E0 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] ldr r3, _080335E4 @ =gUnknown_2024018 ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0803359A ldr r0, _080335E8 @ =gUnknown_2024000 adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 ldr r1, _080335EC @ =sub_80491B0 str r1, [r0] _0803359A: ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r0, [r2, 0x9] movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] ldr r1, _080335F0 @ =gUnknown_3004FE0 ldrb r0, [r7] lsls r0, 2 adds r0, r1 ldr r1, _080335F4 @ =nullsub_13 str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080335B8: .4byte gUnknown_2023D44 _080335BC: .4byte gActiveBattler _080335C0: .4byte gSprites _080335C4: .4byte 0x0000ffd8 _080335C8: .4byte sub_80755B8 _080335CC: .4byte sub_80335F8 _080335D0: .4byte 0x0000d6f8 _080335D4: .4byte gUnknown_8239FD4 _080335D8: .4byte gSaveBlock2Ptr _080335DC: .4byte task05_08033660 _080335E0: .4byte gTasks _080335E4: .4byte gUnknown_2024018 _080335E8: .4byte gUnknown_2024000 _080335EC: .4byte sub_80491B0 _080335F0: .4byte gUnknown_3004FE0 _080335F4: .4byte nullsub_13 thumb_func_end PlayerHandleIntroTrainerBallThrow thumb_func_start sub_80335F8 sub_80335F8: @ 80335F8 push {r4,r5,lr} adds r5, r0, 0 ldrh r4, [r5, 0x38] lsls r4, 24 lsrs r4, 24 bl FreeSpriteOamMatrix ldrb r0, [r5, 0x5] lsrs r0, 4 bl GetSpritePaletteTagByPaletteNum lsls r0, 16 lsrs r0, 16 bl FreeSpritePaletteByTag adds r0, r5, 0 bl DestroySprite ldr r1, _08033650 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08033654 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 bl sub_8034498 ldr r0, _08033658 @ =gUnknown_2023D44 adds r4, r0 ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0803365C @ =gSprites adds r0, r1 movs r1, 0 bl StartSpriteAnim pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08033650: .4byte gBattlerPartyIndexes _08033654: .4byte gPlayerParty _08033658: .4byte gUnknown_2023D44 _0803365C: .4byte gSprites thumb_func_end sub_80335F8 thumb_func_start task05_08033660 task05_08033660: @ 8033660 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, _08033688 @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r1, r0, r1 ldrh r2, [r1, 0xA] movs r3, 0xA ldrsh r0, [r1, r3] cmp r0, 0x1E bgt _0803368C adds r0, r2, 0x1 strh r0, [r1, 0xA] b _08033748 .align 2, 0 _08033688: .4byte gTasks _0803368C: ldr r7, _080336CC @ =gActiveBattler ldrb r0, [r7] mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _080336AC ldr r0, _080336D0 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _080336DC _080336AC: ldr r0, _080336D4 @ =gUnknown_2022BC4 ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 adds r2, r0 ldr r0, _080336D8 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r0 ldrh r0, [r1] strb r0, [r2] ldrb r0, [r7] movs r1, 0 bl sub_8031FF4 b _08033730 .align 2, 0 _080336CC: .4byte gActiveBattler _080336D0: .4byte gBattleTypeFlags _080336D4: .4byte gUnknown_2022BC4 _080336D8: .4byte gBattlerPartyIndexes _080336DC: ldr r4, _08033754 @ =gUnknown_2022BC4 ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 adds r1, r4 ldr r5, _08033758 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r5 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r7] movs r1, 0 bl sub_8031FF4 ldrb r0, [r7] movs r6, 0x2 eors r0, r6 strb r0, [r7] ldrb r0, [r7] lsls r1, r0, 9 adds r1, r4 lsls r0, 1 adds r0, r5 ldrh r0, [r0] strb r0, [r1] ldrb r1, [r7] lsls r0, r1, 1 adds r0, r5 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, _0803375C @ =gPlayerParty adds r0, r2 bl sub_8034498 ldrb r0, [r7] movs r1, 0 bl sub_8031FF4 ldrb r0, [r7] eors r0, r6 strb r0, [r7] _08033730: ldr r1, _08033760 @ =gUnknown_3004FE0 ldr r2, _08033764 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08033768 @ =sub_802FA58 str r1, [r0] mov r3, r9 strb r3, [r2] mov r0, r8 bl DestroyTask _08033748: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08033754: .4byte gUnknown_2022BC4 _08033758: .4byte gBattlerPartyIndexes _0803375C: .4byte gPlayerParty _08033760: .4byte gUnknown_3004FE0 _08033764: .4byte gActiveBattler _08033768: .4byte sub_802FA58 thumb_func_end task05_08033660 thumb_func_start PlayerHandleDrawPartyStatusSummary PlayerHandleDrawPartyStatusSummary: @ 803376C push {r4-r6,lr} ldr r1, _08033794 @ =gUnknown_2022BC4 ldr r0, _08033798 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _0803379C adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0803379C bl PlayerBufferExecCompleted b _08033810 .align 2, 0 _08033794: .4byte gUnknown_2022BC4 _08033798: .4byte gActiveBattler _0803379C: ldr r6, _08033818 @ =gUnknown_2024018 ldr r0, [r6] ldr r5, _0803381C @ =gActiveBattler ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] ldrb r0, [r5] lsls r3, r0, 9 ldr r4, _08033820 @ =gUnknown_2022BC8 adds r1, r3, r4 subs r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] subs r4, 0x2 adds r3, r4 ldrb r3, [r3] bl sub_8048D14 ldr r2, _08033824 @ =gUnknown_2024000 ldrb r1, [r5] adds r1, r2 movs r3, 0 strb r0, [r1] ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x5] ldrb r2, [r5] lsls r0, r2, 9 adds r0, r4 ldrb r0, [r0] cmp r0, 0 beq _08033804 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0x5D strb r1, [r0, 0x5] _08033804: ldr r0, _08033828 @ =gUnknown_3004FE0 ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, _0803382C @ =sub_8033830 str r0, [r1] _08033810: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08033818: .4byte gUnknown_2024018 _0803381C: .4byte gActiveBattler _08033820: .4byte gUnknown_2022BC8 _08033824: .4byte gUnknown_2024000 _08033828: .4byte gUnknown_3004FE0 _0803382C: .4byte sub_8033830 thumb_func_end PlayerHandleDrawPartyStatusSummary thumb_func_start sub_8033830 sub_8033830: @ 8033830 push {r4,lr} ldr r4, _08033870 @ =gUnknown_2024018 ldr r0, [r4] ldr r3, _08033874 @ =gActiveBattler ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x5] adds r2, r1, 0x1 strb r2, [r0, 0x5] lsls r1, 24 lsrs r1, 24 cmp r1, 0x5C bls _08033868 ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x5] bl PlayerBufferExecCompleted _08033868: pop {r4} pop {r0} bx r0 .align 2, 0 _08033870: .4byte gUnknown_2024018 _08033874: .4byte gActiveBattler thumb_func_end sub_8033830 thumb_func_start PlayerHandleCmd49 PlayerHandleCmd49: @ 8033878 push {lr} ldr r0, _080338B4 @ =gUnknown_2024018 ldr r1, [r0] ldr r0, _080338B8 @ =gActiveBattler ldrb r3, [r0] ldr r1, [r1, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080338AA ldr r2, _080338BC @ =gTasks ldr r0, _080338C0 @ =gUnknown_2024000 adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldr r1, _080338C4 @ =sub_80491B0 str r1, [r0] _080338AA: bl PlayerBufferExecCompleted pop {r0} bx r0 .align 2, 0 _080338B4: .4byte gUnknown_2024018 _080338B8: .4byte gActiveBattler _080338BC: .4byte gTasks _080338C0: .4byte gUnknown_2024000 _080338C4: .4byte sub_80491B0 thumb_func_end PlayerHandleCmd49 thumb_func_start sub_80338C8 sub_80338C8: @ 80338C8 push {r4,lr} ldr r4, _080338E8 @ =gActiveBattler ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free ldrb r0, [r4] movs r1, 0 bl dp11b_obj_free bl PlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _080338E8: .4byte gActiveBattler thumb_func_end sub_80338C8 thumb_func_start PlayerHandleSpriteInvisibility PlayerHandleSpriteInvisibility: @ 80338EC push {r4,lr} ldr r4, _0803393C @ =gActiveBattler ldrb r0, [r4] bl sub_8075224 lsls r0, 24 cmp r0, 0 beq _08033932 ldr r3, _08033940 @ =gSprites ldr r0, _08033944 @ =gUnknown_2023D44 ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 ldr r0, _08033948 @ =gUnknown_2022BC4 lsls r1, 9 adds r0, 0x1 adds r1, r0 adds r2, 0x3E movs r0, 0x1 ldrb r1, [r1] ands r1, r0 lsls r1, 2 ldrb r3, [r2] movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] ldrb r0, [r4] bl CopyBattleSpriteInvisibility _08033932: bl PlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _0803393C: .4byte gActiveBattler _08033940: .4byte gSprites _08033944: .4byte gUnknown_2023D44 _08033948: .4byte gUnknown_2022BC4 thumb_func_end PlayerHandleSpriteInvisibility thumb_func_start PlayerHandleBattleAnimation PlayerHandleBattleAnimation: @ 803394C push {r4-r6,lr} sub sp, 0x4 ldr r6, _08033990 @ =gActiveBattler ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _080339A4 ldr r5, _08033994 @ =gUnknown_2022BC4 ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 adds r0, r1, r0 ldrb r3, [r0] adds r0, r5, 0x2 adds r0, r1, r0 ldrb r4, [r0] adds r5, 0x3 adds r1, r5 ldrb r0, [r1] lsls r0, 8 orrs r4, r0 str r4, [sp] adds r0, r2, 0 adds r1, r2, 0 bl TryHandleLaunchBattleTableAnimation lsls r0, 24 cmp r0, 0 beq _08033998 bl PlayerBufferExecCompleted b _080339A4 .align 2, 0 _08033990: .4byte gActiveBattler _08033994: .4byte gUnknown_2022BC4 _08033998: ldr r0, _080339AC @ =gUnknown_3004FE0 ldrb r1, [r6] lsls r1, 2 adds r1, r0 ldr r0, _080339B0 @ =CompleteOnFinishedBattleAnimation str r0, [r1] _080339A4: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080339AC: .4byte gUnknown_3004FE0 _080339B0: .4byte CompleteOnFinishedBattleAnimation thumb_func_end PlayerHandleBattleAnimation thumb_func_start PlayerHandleLinkStandbyMsg PlayerHandleLinkStandbyMsg: @ 80339B4 push {r4,lr} ldr r1, _080339D4 @ =gUnknown_2022BC4 ldr r0, _080339D8 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 beq _080339E6 cmp r0, 0x1 bgt _080339DC cmp r0, 0 beq _080339E2 b _08033A04 .align 2, 0 _080339D4: .4byte gUnknown_2022BC4 _080339D8: .4byte gActiveBattler _080339DC: cmp r0, 0x2 beq _08033A00 b _08033A04 _080339E2: bl PrintLinkStandbyMsg _080339E6: ldr r4, _080339FC @ =gActiveBattler ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free ldrb r0, [r4] movs r1, 0 bl dp11b_obj_free b _08033A04 .align 2, 0 _080339FC: .4byte gActiveBattler _08033A00: bl PrintLinkStandbyMsg _08033A04: bl PlayerBufferExecCompleted pop {r4} pop {r0} bx r0 thumb_func_end PlayerHandleLinkStandbyMsg thumb_func_start PlayerHandleResetActionMoveSelection PlayerHandleResetActionMoveSelection: @ 8033A10 push {r4,lr} ldr r1, _08033A30 @ =gUnknown_2022BC4 ldr r4, _08033A34 @ =gActiveBattler ldrb r3, [r4] lsls r0, r3, 9 adds r1, 0x1 adds r0, r1 ldrb r2, [r0] cmp r2, 0x1 beq _08033A58 cmp r2, 0x1 bgt _08033A38 cmp r2, 0 beq _08033A3E b _08033A68 .align 2, 0 _08033A30: .4byte gUnknown_2022BC4 _08033A34: .4byte gActiveBattler _08033A38: cmp r2, 0x2 beq _08033A60 b _08033A68 _08033A3E: ldr r0, _08033A50 @ =gUnknown_2023FF8 adds r0, r3, r0 strb r2, [r0] ldr r1, _08033A54 @ =gUnknown_2023FFC ldrb r0, [r4] adds r0, r1 strb r2, [r0] b _08033A68 .align 2, 0 _08033A50: .4byte gUnknown_2023FF8 _08033A54: .4byte gUnknown_2023FFC _08033A58: ldr r0, _08033A5C @ =gUnknown_2023FF8 b _08033A62 .align 2, 0 _08033A5C: .4byte gUnknown_2023FF8 _08033A60: ldr r0, _08033A74 @ =gUnknown_2023FFC _08033A62: adds r0, r3, r0 movs r1, 0 strb r1, [r0] _08033A68: bl PlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _08033A74: .4byte gUnknown_2023FFC thumb_func_end PlayerHandleResetActionMoveSelection thumb_func_start PlayerHandlecmd55 PlayerHandlecmd55: @ 8033A78 push {r4,lr} ldr r2, _08033AB0 @ =gUnknown_2023E8A ldr r1, _08033AB4 @ =gUnknown_2022BC4 ldr r4, _08033AB8 @ =gActiveBattler ldrb r0, [r4] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] strb r0, [r2] movs r0, 0x5 bl FadeOutMapMusic movs r0, 0x3 bl BeginFastPaletteFade bl PlayerBufferExecCompleted ldr r1, _08033ABC @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08033AC0 @ =sub_802F6A8 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08033AB0: .4byte gUnknown_2023E8A _08033AB4: .4byte gUnknown_2022BC4 _08033AB8: .4byte gActiveBattler _08033ABC: .4byte gUnknown_3004FE0 _08033AC0: .4byte sub_802F6A8 thumb_func_end PlayerHandlecmd55 thumb_func_start nullsub_15 nullsub_15: @ 8033AC4 bx lr thumb_func_end nullsub_15 thumb_func_start sub_8033AC8 sub_8033AC8: @ 8033AC8 push {r4-r6,lr} sub sp, 0x4 movs r5, 0 movs r6, 0 ldr r0, _08033B14 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08033ADE b _08033DA2 _08033ADE: ldr r3, _08033B18 @ =gActiveBattler ldrb r1, [r3] lsls r2, r1, 9 ldr r0, _08033B1C @ =gUnknown_2022BC8 adds r2, r0 ldr r0, _08033B20 @ =gUnknown_2023FFC adds r1, r0 ldrb r0, [r1] lsls r0, 1 adds r0, r2, r0 ldrh r4, [r0] cmp r4, 0xAE bne _08033B24 ldrb r0, [r2, 0x12] movs r1, 0 cmp r0, 0x7 beq _08033B30 ldrb r1, [r2, 0x13] movs r0, 0x7 eors r1, r0 negs r0, r1 orrs r0, r1 asrs r1, r0, 31 movs r0, 0x10 ands r1, r0 b _08033B30 .align 2, 0 _08033B14: .4byte gBattleTypeFlags _08033B18: .4byte gActiveBattler _08033B1C: .4byte gUnknown_2022BC8 _08033B20: .4byte gUnknown_2023FFC _08033B24: ldr r1, _08033B40 @ =gBattleMoves lsls r0, r4, 1 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x6] _08033B30: cmp r1, 0x40 bls _08033B36 b _08033D92 _08033B36: lsls r0, r1, 2 ldr r1, _08033B44 @ =_08033B48 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08033B40: .4byte gBattleMoves _08033B44: .4byte _08033B48 .align 2, 0 _08033B48: .4byte _08033C4C .4byte _08033C4C .4byte _08033C4C .4byte _08033D92 .4byte _08033C4C .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033C54 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033C80 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D4C .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033D92 .4byte _08033C54 _08033C4C: movs r5, 0xF0 lsls r5, 12 movs r6, 0 b _08033D92 _08033C54: movs r0, 0x1 bl GetBattlerAtPosition adds r4, r0, 0 movs r0, 0x3 bl GetBattlerAtPosition ldr r1, _08033C7C @ =gBitTable lsls r4, 24 lsrs r4, 22 adds r4, r1 lsls r0, 24 lsrs r0, 22 adds r0, r1 ldr r1, [r4] ldr r0, [r0] orrs r1, r0 lsls r5, r1, 16 b _08033D90 .align 2, 0 _08033C7C: .4byte gBitTable _08033C80: cmp r4, 0xDB beq _08033CEA cmp r4, 0xDB bgt _08033CB2 cmp r4, 0x73 beq _08033CEA cmp r4, 0x73 bgt _08033C9E cmp r4, 0x71 beq _08033CEA cmp r4, 0x71 bgt _08033CE4 cmp r4, 0x36 beq _08033CEA b _08033D38 _08033C9E: cmp r4, 0xC9 beq _08033CE4 cmp r4, 0xC9 bgt _08033CAC cmp r4, 0xC3 beq _08033CE4 b _08033D38 _08033CAC: cmp r4, 0xD7 beq _08033CEA b _08033D38 _08033CB2: movs r0, 0x87 lsls r0, 1 cmp r4, r0 beq _08033D14 cmp r4, r0 bgt _08033CC8 cmp r4, 0xF0 blt _08033D38 cmp r4, 0xF1 ble _08033CE4 b _08033CD4 _08033CC8: movs r0, 0x9C lsls r0, 1 cmp r4, r0 beq _08033CEA cmp r4, r0 bgt _08033CDC _08033CD4: subs r0, 0xC cmp r4, r0 beq _08033CE4 b _08033D38 _08033CDC: movs r0, 0xAD lsls r0, 1 cmp r4, r0 bne _08033D38 _08033CE4: movs r5, 0xF0 lsls r5, 12 b _08033D90 _08033CEA: movs r0, 0 bl GetBattlerAtPosition adds r4, r0, 0 movs r0, 0x2 bl GetBattlerAtPosition ldr r1, _08033D10 @ =gBitTable lsls r4, 24 lsrs r4, 22 adds r4, r1 lsls r0, 24 lsrs r0, 22 adds r0, r1 ldr r1, [r4] ldr r0, [r0] orrs r1, r0 lsls r5, r1, 16 b _08033D90 .align 2, 0 _08033D10: .4byte gBitTable _08033D14: ldrb r0, [r3] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r1, _08033D34 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r1 ldr r0, [r0] b _08033D42 .align 2, 0 _08033D34: .4byte gBitTable _08033D38: ldr r0, _08033D48 @ =gBitTable ldrb r1, [r3] lsls r1, 2 adds r1, r0 ldr r0, [r1] _08033D42: lsls r5, r0, 16 b _08033D90 .align 2, 0 _08033D48: .4byte gBitTable _08033D4C: movs r0, 0x1 bl GetBattlerAtPosition adds r5, r0, 0 ldr r0, _08033DAC @ =gActiveBattler ldrb r0, [r0] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition adds r4, r0, 0 movs r0, 0x3 bl GetBattlerAtPosition ldr r3, _08033DB0 @ =gBitTable lsls r5, 24 lsrs r5, 22 adds r5, r3 lsls r4, 24 lsrs r4, 22 adds r4, r3 ldr r2, [r5] ldr r1, [r4] orrs r2, r1 lsls r0, 24 lsrs r0, 22 adds r0, r3 ldr r0, [r0] orrs r2, r0 lsls r5, r2, 16 _08033D90: movs r6, 0x8 _08033D92: ldr r0, _08033DB4 @ =0x00007fff str r0, [sp] adds r0, r5, 0 movs r1, 0x8 adds r2, r6, 0 movs r3, 0 bl BeginNormalPaletteFade _08033DA2: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08033DAC: .4byte gActiveBattler _08033DB0: .4byte gBitTable _08033DB4: .4byte 0x00007fff thumb_func_end sub_8033AC8 .align 2, 0 @ Don't pad with nop.