papermario/asm/nonmatchings/os/code_41540_len_c0/osStopThread.s
2020-11-29 02:13:07 -05:00

58 lines
2.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel osStopThread
/* 41540 80066140 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 41544 80066144 AFB00010 */ sw $s0, 0x10($sp)
/* 41548 80066148 00808021 */ addu $s0, $a0, $zero
/* 4154C 8006614C AFBF0018 */ sw $ra, 0x18($sp)
/* 41550 80066150 0C01ACD8 */ jal __osDisableInt
/* 41554 80066154 AFB10014 */ sw $s1, 0x14($sp)
/* 41558 80066158 24030004 */ addiu $v1, $zero, 4
/* 4155C 8006615C 12000002 */ beqz $s0, .L80066168
/* 41560 80066160 00408821 */ addu $s1, $v0, $zero
/* 41564 80066164 96030010 */ lhu $v1, 0x10($s0)
.L80066168:
/* 41568 80066168 3063FFFF */ andi $v1, $v1, 0xffff
/* 4156C 8006616C 24020004 */ addiu $v0, $zero, 4
/* 41570 80066170 1062000C */ beq $v1, $v0, .L800661A4
/* 41574 80066174 28620005 */ slti $v0, $v1, 5
/* 41578 80066178 10400005 */ beqz $v0, .L80066190
/* 4157C 8006617C 24020002 */ addiu $v0, $zero, 2
/* 41580 80066180 10620010 */ beq $v1, $v0, .L800661C4
/* 41584 80066184 00000000 */ nop
/* 41588 80066188 08019876 */ j .L800661D8
/* 4158C 8006618C 00000000 */ nop
.L80066190:
/* 41590 80066190 24020008 */ addiu $v0, $zero, 8
/* 41594 80066194 1062000B */ beq $v1, $v0, .L800661C4
/* 41598 80066198 00000000 */ nop
/* 4159C 8006619C 08019876 */ j .L800661D8
/* 415A0 800661A0 00000000 */ nop
.L800661A4:
/* 415A4 800661A4 3C038009 */ lui $v1, %hi(D_80094660)
/* 415A8 800661A8 8C634660 */ lw $v1, %lo(D_80094660)($v1)
/* 415AC 800661AC 00002021 */ addu $a0, $zero, $zero
/* 415B0 800661B0 24020001 */ addiu $v0, $zero, 1
/* 415B4 800661B4 0C01AC1B */ jal osEnqueueAndYield
/* 415B8 800661B8 A4620010 */ sh $v0, 0x10($v1)
/* 415BC 800661BC 08019876 */ j .L800661D8
/* 415C0 800661C0 00000000 */ nop
.L800661C4:
/* 415C4 800661C4 8E040008 */ lw $a0, 8($s0)
/* 415C8 800661C8 24020001 */ addiu $v0, $zero, 1
/* 415CC 800661CC 02002821 */ addu $a1, $s0, $zero
/* 415D0 800661D0 0C019880 */ jal osDequeueThread
/* 415D4 800661D4 A6020010 */ sh $v0, 0x10($s0)
.L800661D8:
/* 415D8 800661D8 0C01ACF4 */ jal __osRestoreInt
/* 415DC 800661DC 02202021 */ addu $a0, $s1, $zero
/* 415E0 800661E0 8FBF0018 */ lw $ra, 0x18($sp)
/* 415E4 800661E4 8FB10014 */ lw $s1, 0x14($sp)
/* 415E8 800661E8 8FB00010 */ lw $s0, 0x10($sp)
/* 415EC 800661EC 03E00008 */ jr $ra
/* 415F0 800661F0 27BD0020 */ addiu $sp, $sp, 0x20
/* 415F4 800661F4 00000000 */ nop
/* 415F8 800661F8 00000000 */ nop
/* 415FC 800661FC 00000000 */ nop