papermario/ver/ique/asm/os/exceptasm.s
AltoXorg bfe9a42b06
some JP decomp (#1149)
* main segment cleanup

* engine1

* engine4

* evt

* entity

* engine2 msg split

* engine2 draft

* identify all gu functions

* font_width + charset

* update msg ids

* os stuff

* msg stuffs

* msg_copy_to_print_buffer

* popup_menu_draw_menu_contents

* appendGfx_message

* cleanup

* building fixed

* Change exceptasm symbols to not be global

---------

Co-authored-by: Ethan <ethteck@gmail.com>
2024-01-16 14:13:54 +09:00

843 lines
45 KiB
ArmAsm

.include "macro.inc"
/* assembler directives */
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.section .rodata
__osIntOffTable:
/* 73CB0 800988B0 */ .byte 0x00
/* 73CB1 800988B1 */ .byte 0x14
/* 73CB2 800988B2 */ .byte 0x18
/* 73CB3 800988B3 */ .byte 0x18
/* 73CB4 800988B4 */ .byte 0x1C
/* 73CB5 800988B5 */ .byte 0x1C
/* 73CB6 800988B6 */ .byte 0x1C
/* 73CB7 800988B7 */ .byte 0x1C
/* 73CB8 800988B8 */ .byte 0x20
/* 73CB9 800988B9 */ .byte 0x20
/* 73CBA 800988BA */ .byte 0x20
/* 73CBB 800988BB */ .byte 0x20
/* 73CBC 800988BC */ .byte 0x20
/* 73CBD 800988BD */ .byte 0x20
/* 73CBE 800988BE */ .byte 0x20
/* 73CBF 800988BF */ .byte 0x20
/* 73CC0 800988C0 */ .byte 0x00
/* 73CC1 800988C1 */ .byte 0x04
/* 73CC2 800988C2 */ .byte 0x08
/* 73CC3 800988C3 */ .byte 0x08
/* 73CC4 800988C4 */ .byte 0x0C
/* 73CC5 800988C5 */ .byte 0x0C
/* 73CC6 800988C6 */ .byte 0x0C
/* 73CC7 800988C7 */ .byte 0x0C
/* 73CC8 800988C8 */ .byte 0x10
/* 73CC9 800988C9 */ .byte 0x10
/* 73CCA 800988CA */ .byte 0x10
/* 73CCB 800988CB */ .byte 0x10
/* 73CCC 800988CC */ .byte 0x10
/* 73CCD 800988CD */ .byte 0x10
/* 73CCE 800988CE */ .byte 0x10
/* 73CCF 800988CF */ .byte 0x10
.size __osIntOffTable, . - __osIntOffTable
__osIntTable:
/* 73CD0 800988D0 80066894 */ .word .LIQUE_80066894
/* 73CD4 800988D4 80066858 */ .word .LIQUE_80066858
/* 73CD8 800988D8 80066834 */ .word .LIQUE_80066834
/* 73CDC 800988DC 8006664C */ .word .LIQUE_8006664C
/* 73CE0 800988E0 80066508 */ .word .LIQUE_80066508
/* 73CE4 800988E4 800667C0 */ .word .LIQUE_800667C0
/* 73CE8 800988E8 800664CC */ .word .LIQUE_800664CC
/* 73CEC 800988EC 800664D8 */ .word .LIQUE_800664D8
/* 73CF0 800988F0 800664E4 */ .word .LIQUE_800664E4
/* 73CF4 800988F4 00000000 */ .word 0x00000000
/* 73CF8 800988F8 00000000 */ .word 0x00000000
/* 73CFC 800988FC 00000000 */ .word 0x00000000
.size __osIntTable, . - __osIntTable
.section .data
__osHwIntTable:
/* 6F8F0 800944F0 */ .word 0x00000000
/* 6F8F4 800944F4 */ .word 0x00000000
/* 6F8F8 800944F8 */ .word 0x00000000
/* 6F8FC 800944FC */ .word 0x00000000
/* 6F900 80094500 */ .word 0x00000000
/* 6F904 80094504 */ .word 0x00000000
/* 6F908 80094508 */ .word 0x00000000
/* 6F90C 8009450C */ .word 0x00000000
/* 6F910 80094510 */ .word 0x00000000
/* 6F914 80094514 */ .word 0x00000000
.size __osHwIntTable, . - __osHwIntTable
__osPiIntTable:
/* 6F918 80094518 */ .word 0x00000000
/* 6F91C 8009451C */ .word 0x00000000
.size __osPiIntTable, . - __osPiIntTable
.section .text, "ax"
/* Generated by spimdisasm 1.11.1 */
# Handwritten function
glabel __osExceptionPreamble
/* 41630 80066230 3C1A8006 */ lui $k0, %hi(__osException) # handwritten instruction
/* 41634 80066234 675A6240 */ daddiu $k0, $k0, %lo(__osException) # handwritten instruction
/* 41638 80066238 03400008 */ jr $k0
/* 4163C 8006623C 00000000 */ nop
# Handwritten function
glabel __osException
/* 41640 80066240 3C1A800B */ lui $k0, %hi(__osThreadSave) # handwritten instruction
/* 41644 80066244 675AF740 */ daddiu $k0, $k0, %lo(__osThreadSave) # handwritten instruction
/* 41648 80066248 FF410020 */ sd $at, 0x20($k0) # handwritten instruction
/* 4164C 8006624C 401B6000 */ mfc0 $k1, $12 # handwritten instruction
/* 41650 80066250 AF5B0118 */ sw $k1, 0x118($k0) # handwritten instruction
/* 41654 80066254 2401FFFC */ addiu $at, $zero, -0x4
/* 41658 80066258 0361D824 */ and $k1, $k1, $at
/* 4165C 8006625C 409B6000 */ mtc0 $k1, $12 # handwritten instruction
/* 41660 80066260 FF480058 */ sd $t0, 0x58($k0) # handwritten instruction
/* 41664 80066264 FF490060 */ sd $t1, 0x60($k0) # handwritten instruction
/* 41668 80066268 FF4A0068 */ sd $t2, 0x68($k0) # handwritten instruction
/* 4166C 8006626C AF400018 */ sw $zero, 0x18($k0) # handwritten instruction
/* 41670 80066270 40086800 */ mfc0 $t0, $13 # handwritten instruction
/* 41674 80066274 0340402D */ daddu $t0, $k0, $zero
/* 41678 80066278 3C1A8009 */ lui $k0, %hi(__osRunningThread) # handwritten instruction
/* 4167C 8006627C 8F5A3280 */ lw $k0, %lo(__osRunningThread)($k0) # handwritten instruction
/* 41680 80066280 DD090020 */ ld $t1, 0x20($t0)
/* 41684 80066284 FF490020 */ sd $t1, 0x20($k0) # handwritten instruction
/* 41688 80066288 DD090118 */ ld $t1, 0x118($t0)
/* 4168C 8006628C FF490118 */ sd $t1, 0x118($k0) # handwritten instruction
/* 41690 80066290 DD090058 */ ld $t1, 0x58($t0)
/* 41694 80066294 FF490058 */ sd $t1, 0x58($k0) # handwritten instruction
/* 41698 80066298 DD090060 */ ld $t1, 0x60($t0)
/* 4169C 8006629C FF490060 */ sd $t1, 0x60($k0) # handwritten instruction
/* 416A0 800662A0 DD090068 */ ld $t1, 0x68($t0)
/* 416A4 800662A4 FF490068 */ sd $t1, 0x68($k0) # handwritten instruction
/* 416A8 800662A8 FF420028 */ sd $v0, 0x28($k0) # handwritten instruction
/* 416AC 800662AC FF430030 */ sd $v1, 0x30($k0) # handwritten instruction
/* 416B0 800662B0 FF440038 */ sd $a0, 0x38($k0) # handwritten instruction
/* 416B4 800662B4 FF450040 */ sd $a1, 0x40($k0) # handwritten instruction
/* 416B8 800662B8 FF460048 */ sd $a2, 0x48($k0) # handwritten instruction
/* 416BC 800662BC FF470050 */ sd $a3, 0x50($k0) # handwritten instruction
/* 416C0 800662C0 FF4B0070 */ sd $t3, 0x70($k0) # handwritten instruction
/* 416C4 800662C4 FF4C0078 */ sd $t4, 0x78($k0) # handwritten instruction
/* 416C8 800662C8 FF4D0080 */ sd $t5, 0x80($k0) # handwritten instruction
/* 416CC 800662CC FF4E0088 */ sd $t6, 0x88($k0) # handwritten instruction
/* 416D0 800662D0 FF4F0090 */ sd $t7, 0x90($k0) # handwritten instruction
/* 416D4 800662D4 FF500098 */ sd $s0, 0x98($k0) # handwritten instruction
/* 416D8 800662D8 FF5100A0 */ sd $s1, 0xA0($k0) # handwritten instruction
/* 416DC 800662DC FF5200A8 */ sd $s2, 0xA8($k0) # handwritten instruction
/* 416E0 800662E0 FF5300B0 */ sd $s3, 0xB0($k0) # handwritten instruction
/* 416E4 800662E4 FF5400B8 */ sd $s4, 0xB8($k0) # handwritten instruction
/* 416E8 800662E8 FF5500C0 */ sd $s5, 0xC0($k0) # handwritten instruction
/* 416EC 800662EC FF5600C8 */ sd $s6, 0xC8($k0) # handwritten instruction
/* 416F0 800662F0 FF5700D0 */ sd $s7, 0xD0($k0) # handwritten instruction
/* 416F4 800662F4 FF5800D8 */ sd $t8, 0xD8($k0) # handwritten instruction
/* 416F8 800662F8 FF5900E0 */ sd $t9, 0xE0($k0) # handwritten instruction
/* 416FC 800662FC FF5C00E8 */ sd $gp, 0xE8($k0) # handwritten instruction
/* 41700 80066300 FF5D00F0 */ sd $sp, 0xF0($k0) # handwritten instruction
/* 41704 80066304 FF5E00F8 */ sd $fp, 0xF8($k0) # handwritten instruction
/* 41708 80066308 FF5F0100 */ sd $ra, 0x100($k0) # handwritten instruction
/* 4170C 8006630C 00004012 */ mflo $t0
/* 41710 80066310 FF480108 */ sd $t0, 0x108($k0) # handwritten instruction
/* 41714 80066314 00004010 */ mfhi $t0
/* 41718 80066318 FF480110 */ sd $t0, 0x110($k0) # handwritten instruction
/* 4171C 8006631C 8F5B0118 */ lw $k1, 0x118($k0) # handwritten instruction
/* 41720 80066320 3369FF00 */ andi $t1, $k1, 0xFF00 # handwritten instruction
/* 41724 80066324 11200014 */ beqz $t1, .LIQUE_80066378
/* 41728 80066328 00000000 */ nop
/* 4172C 8006632C 3C088009 */ lui $t0, %hi(__OSGlobalIntMask)
/* 41730 80066330 650845B4 */ daddiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 41734 80066334 8D080000 */ lw $t0, 0x0($t0)
/* 41738 80066338 3C01FFFF */ lui $at, (0xFFFFFFFF >> 16)
/* 4173C 8006633C 3421FFFF */ ori $at, $at, (0xFFFFFFFF & 0xFFFF)
/* 41740 80066340 01015026 */ xor $t2, $t0, $at
/* 41744 80066344 314AFF00 */ andi $t2, $t2, 0xFF00
/* 41748 80066348 012A6025 */ or $t4, $t1, $t2
/* 4174C 8006634C 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* 41750 80066350 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* 41754 80066354 03615824 */ and $t3, $k1, $at
/* 41758 80066358 016C5825 */ or $t3, $t3, $t4
/* 4175C 8006635C AF4B0118 */ sw $t3, 0x118($k0) # handwritten instruction
/* 41760 80066360 3108FF00 */ andi $t0, $t0, 0xFF00
/* 41764 80066364 01284824 */ and $t1, $t1, $t0
/* 41768 80066368 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* 4176C 8006636C 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* 41770 80066370 0361D824 */ and $k1, $k1, $at
/* 41774 80066374 0369D825 */ or $k1, $k1, $t1
.LIQUE_80066378:
/* 41778 80066378 3C09A430 */ lui $t1, %hi(D_A430000C)
/* 4177C 8006637C 8D29000C */ lw $t1, %lo(D_A430000C)($t1)
/* 41780 80066380 1120000C */ beqz $t1, .LIQUE_800663B4
/* 41784 80066384 00000000 */ nop
/* 41788 80066388 3C088009 */ lui $t0, %hi(__OSGlobalIntMask)
/* 4178C 8006638C 650845B4 */ daddiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 41790 80066390 8D080000 */ lw $t0, 0x0($t0)
/* 41794 80066394 00084402 */ srl $t0, $t0, 16
/* 41798 80066398 3C01FFFF */ lui $at, (0xFFFFFFFF >> 16)
/* 4179C 8006639C 3421FFFF */ ori $at, $at, (0xFFFFFFFF & 0xFFFF)
/* 417A0 800663A0 01014026 */ xor $t0, $t0, $at
/* 417A4 800663A4 3108003F */ andi $t0, $t0, 0x3F
/* 417A8 800663A8 8F4C0128 */ lw $t4, 0x128($k0) # handwritten instruction
/* 417AC 800663AC 010C4024 */ and $t0, $t0, $t4
/* 417B0 800663B0 01284825 */ or $t1, $t1, $t0
.LIQUE_800663B4:
/* 417B4 800663B4 AF490128 */ sw $t1, 0x128($k0) # handwritten instruction
/* 417B8 800663B8 40087000 */ mfc0 $t0, $14 # handwritten instruction
/* 417BC 800663BC AF48011C */ sw $t0, 0x11C($k0) # handwritten instruction
/* 417C0 800663C0 8F480018 */ lw $t0, 0x18($k0) # handwritten instruction
/* 417C4 800663C4 11000014 */ beqz $t0, .LIQUE_80066418
/* 417C8 800663C8 00000000 */ nop
/* 417CC 800663CC 4448F800 */ cfc1 $t0, $31
/* 417D0 800663D0 00000000 */ nop
/* 417D4 800663D4 AF48012C */ sw $t0, 0x12C($k0) # handwritten instruction
/* 417D8 800663D8 F7400130 */ sdc1 $f0, 0x130($k0)
/* 417DC 800663DC F7420138 */ sdc1 $f2, 0x138($k0)
/* 417E0 800663E0 F7440140 */ sdc1 $f4, 0x140($k0)
/* 417E4 800663E4 F7460148 */ sdc1 $f6, 0x148($k0)
/* 417E8 800663E8 F7480150 */ sdc1 $f8, 0x150($k0)
/* 417EC 800663EC F74A0158 */ sdc1 $f10, 0x158($k0)
/* 417F0 800663F0 F74C0160 */ sdc1 $f12, 0x160($k0)
/* 417F4 800663F4 F74E0168 */ sdc1 $f14, 0x168($k0)
/* 417F8 800663F8 F7500170 */ sdc1 $f16, 0x170($k0)
/* 417FC 800663FC F7520178 */ sdc1 $f18, 0x178($k0)
/* 41800 80066400 F7540180 */ sdc1 $f20, 0x180($k0)
/* 41804 80066404 F7560188 */ sdc1 $f22, 0x188($k0)
/* 41808 80066408 F7580190 */ sdc1 $f24, 0x190($k0)
/* 4180C 8006640C F75A0198 */ sdc1 $f26, 0x198($k0)
/* 41810 80066410 F75C01A0 */ sdc1 $f28, 0x1A0($k0)
/* 41814 80066414 F75E01A8 */ sdc1 $f30, 0x1A8($k0)
.LIQUE_80066418:
/* 41818 80066418 40086800 */ mfc0 $t0, $13 # handwritten instruction
/* 4181C 8006641C AF480120 */ sw $t0, 0x120($k0) # handwritten instruction
/* 41820 80066420 24090002 */ addiu $t1, $zero, 0x2
/* 41824 80066424 A7490010 */ sh $t1, 0x10($k0) # handwritten instruction
/* 41828 80066428 3109007C */ andi $t1, $t0, 0x7C
/* 4182C 8006642C 240A0024 */ addiu $t2, $zero, 0x24
/* 41830 80066430 112A0112 */ beq $t1, $t2, .LIQUE_8006687C
/* 41834 80066434 00000000 */ nop
/* 41838 80066438 240A002C */ addiu $t2, $zero, 0x2C
/* 4183C 8006643C 112A0164 */ beq $t1, $t2, .LIQUE_800669D0
/* 41840 80066440 00000000 */ nop
/* 41844 80066444 240A0000 */ addiu $t2, $zero, 0x0
/* 41848 80066448 152A0126 */ bne $t1, $t2, .LIQUE_800668E4
/* 4184C 8006644C 00000000 */ nop
/* 41850 80066450 3C098009 */ lui $t1, %hi(__osShutdown)
/* 41854 80066454 652945AC */ daddiu $t1, $t1, %lo(__osShutdown)
/* 41858 80066458 8D2A0000 */ lw $t2, 0x0($t1)
/* 4185C 8006645C 1140000C */ beqz $t2, .LIQUE_80066490
/* 41860 80066460 00000000 */ nop
/* 41864 80066464 3C098009 */ lui $t1, %hi(__osShutdownTime)
/* 41868 80066468 652945B0 */ daddiu $t1, $t1, %lo(__osShutdownTime)
/* 4186C 8006646C 8D290000 */ lw $t1, 0x0($t1)
/* 41870 80066470 400A4800 */ mfc0 $t2, $9 # handwritten instruction
/* 41874 80066474 01495023 */ subu $t2, $t2, $t1
/* 41878 80066478 3C090500 */ lui $t1, (0x5000000 >> 16)
/* 4187C 8006647C 012A482B */ sltu $t1, $t1, $t2
/* 41880 80066480 11200003 */ beqz $t1, .LIQUE_80066490
/* 41884 80066484 00000000 */ nop
/* 41888 80066488 0C019FEB */ jal skExit
/* 4188C 8006648C 00000000 */ nop
.LIQUE_80066490:
/* 41890 80066490 03688024 */ and $s0, $k1, $t0
.LIQUE_80066494:
/* 41894 80066494 3209FF00 */ andi $t1, $s0, 0xFF00
/* 41898 80066498 00095302 */ srl $t2, $t1, 12
/* 4189C 8006649C 15400003 */ bnez $t2, .LIQUE_800664AC
/* 418A0 800664A0 00000000 */ nop
/* 418A4 800664A4 00095202 */ srl $t2, $t1, 8
/* 418A8 800664A8 214A0010 */ addi $t2, $t2, 0x10 # handwritten instruction
.LIQUE_800664AC:
/* 418AC 800664AC 3C01800A */ lui $at, %hi(__osIntOffTable)
/* 418B0 800664B0 002A082D */ daddu $at, $at, $t2
/* 418B4 800664B4 902A88B0 */ lbu $t2, %lo(__osIntOffTable)($at)
/* 418B8 800664B8 3C01800A */ lui $at, %hi(__osIntTable)
/* 418BC 800664BC 002A082D */ daddu $at, $at, $t2
/* 418C0 800664C0 8C2A88D0 */ lw $t2, %lo(__osIntTable)($at)
/* 418C4 800664C4 01400008 */ jr $t2
/* 418C8 800664C8 00000000 */ nop
glabel .LIQUE_800664CC
/* 418CC 800664CC 2401DFFF */ addiu $at, $zero, -0x2001
/* 418D0 800664D0 1000FFF0 */ b .LIQUE_80066494
/* 418D4 800664D4 02018024 */ and $s0, $s0, $at
glabel .LIQUE_800664D8
/* 418D8 800664D8 2401BFFF */ addiu $at, $zero, -0x4001
/* 418DC 800664DC 1000FFED */ b .LIQUE_80066494
/* 418E0 800664E0 02018024 */ and $s0, $s0, $at
glabel .LIQUE_800664E4
/* 418E4 800664E4 40095800 */ mfc0 $t1, $11 # handwritten instruction
/* 418E8 800664E8 40895800 */ mtc0 $t1, $11 # handwritten instruction
/* 418EC 800664EC 24040018 */ addiu $a0, $zero, 0x18
/* 418F0 800664F0 0C019A45 */ jal send_mesg
/* 418F4 800664F4 00000000 */ nop
/* 418F8 800664F8 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16)
/* 418FC 800664FC 34217FFF */ ori $at, $at, (0xFFFF7FFF & 0xFFFF)
/* 41900 80066500 1000FFE4 */ b .LIQUE_80066494
/* 41904 80066504 02018024 */ and $s0, $s0, $at
glabel .LIQUE_80066508
/* 41908 80066508 2401F7FF */ addiu $at, $zero, -0x801
/* 4190C 8006650C 02018024 */ and $s0, $s0, $at
/* 41910 80066510 3C098009 */ lui $t1, %hi(__osHwIntTable)
/* 41914 80066514 652944F0 */ daddiu $t1, $t1, %lo(__osHwIntTable)
/* 41918 80066518 21290008 */ addi $t1, $t1, 0x8 # handwritten instruction
/* 4191C 8006651C 8D2A0000 */ lw $t2, 0x0($t1)
/* 41920 80066520 11400007 */ beqz $t2, .LIQUE_80066540
/* 41924 80066524 00000000 */ nop
/* 41928 80066528 0140F809 */ jalr $t2
/* 4192C 8006652C 8D3D0004 */ lw $sp, 0x4($t1)
/* 41930 80066530 10400003 */ beqz $v0, .LIQUE_80066540
/* 41934 80066534 00000000 */ nop
/* 41938 80066538 100000D6 */ b .LIQUE_80066894
/* 4193C 8006653C 00000000 */ nop
.LIQUE_80066540:
/* 41940 80066540 3C11A430 */ lui $s1, %hi(D_A4300038)
/* 41944 80066544 8E310038 */ lw $s1, %lo(D_A4300038)($s1)
/* 41948 80066548 32290040 */ andi $t1, $s1, 0x40
/* 4194C 8006654C 11200007 */ beqz $t1, .LIQUE_8006656C
/* 41950 80066550 00000000 */ nop
/* 41954 80066554 32313F80 */ andi $s1, $s1, 0x3F80
/* 41958 80066558 24090000 */ addiu $t1, $zero, 0x0
/* 4195C 8006655C 3C01A460 */ lui $at, %hi(D_A4600048)
/* 41960 80066560 AC290048 */ sw $t1, %lo(D_A4600048)($at)
/* 41964 80066564 0C019A45 */ jal send_mesg
/* 41968 80066568 240400B8 */ addiu $a0, $zero, 0xB8
.LIQUE_8006656C:
/* 4196C 8006656C 32292000 */ andi $t1, $s1, 0x2000
/* 41970 80066570 11200007 */ beqz $t1, .LIQUE_80066590
/* 41974 80066574 00000000 */ nop
/* 41978 80066578 32311FC0 */ andi $s1, $s1, 0x1FC0
/* 4197C 8006657C 24092000 */ addiu $t1, $zero, 0x2000
/* 41980 80066580 3C01A430 */ lui $at, %hi(D_A4300038)
/* 41984 80066584 AC290038 */ sw $t1, %lo(D_A4300038)($at)
/* 41988 80066588 0C019A45 */ jal send_mesg
/* 4198C 8006658C 240400F0 */ addiu $a0, $zero, 0xF0
.LIQUE_80066590:
/* 41990 80066590 32290080 */ andi $t1, $s1, 0x80
/* 41994 80066594 11200007 */ beqz $t1, .LIQUE_800665B4
/* 41998 80066598 00000000 */ nop
/* 4199C 8006659C 32313F40 */ andi $s1, $s1, 0x3F40
/* 419A0 800665A0 24094000 */ addiu $t1, $zero, 0x4000
/* 419A4 800665A4 3C01A430 */ lui $at, %hi(D_A430003C)
/* 419A8 800665A8 AC29003C */ sw $t1, %lo(D_A430003C)($at)
/* 419AC 800665AC 0C019A45 */ jal send_mesg
/* 419B0 800665B0 240400C0 */ addiu $a0, $zero, 0xC0
.LIQUE_800665B4:
/* 419B4 800665B4 32290100 */ andi $t1, $s1, 0x100
/* 419B8 800665B8 11200007 */ beqz $t1, .LIQUE_800665D8
/* 419BC 800665BC 00000000 */ nop
/* 419C0 800665C0 32313EC0 */ andi $s1, $s1, 0x3EC0
/* 419C4 800665C4 3C090001 */ lui $t1, (0x10000 >> 16)
/* 419C8 800665C8 3C01A430 */ lui $at, %hi(D_A430003C)
/* 419CC 800665CC AC29003C */ sw $t1, %lo(D_A430003C)($at)
/* 419D0 800665D0 0C019A45 */ jal send_mesg
/* 419D4 800665D4 240400C8 */ addiu $a0, $zero, 0xC8
.LIQUE_800665D8:
/* 419D8 800665D8 32290200 */ andi $t1, $s1, 0x200
/* 419DC 800665DC 11200007 */ beqz $t1, .LIQUE_800665FC
/* 419E0 800665E0 00000000 */ nop
/* 419E4 800665E4 32313DC0 */ andi $s1, $s1, 0x3DC0
/* 419E8 800665E8 3C090004 */ lui $t1, (0x40000 >> 16)
/* 419EC 800665EC 3C01A430 */ lui $at, %hi(D_A430003C)
/* 419F0 800665F0 AC29003C */ sw $t1, %lo(D_A430003C)($at)
/* 419F4 800665F4 0C019A45 */ jal send_mesg
/* 419F8 800665F8 240400D0 */ addiu $a0, $zero, 0xD0
.LIQUE_800665FC:
/* 419FC 800665FC 32290400 */ andi $t1, $s1, 0x400
/* 41A00 80066600 11200007 */ beqz $t1, .LIQUE_80066620
/* 41A04 80066604 00000000 */ nop
/* 41A08 80066608 32313BC0 */ andi $s1, $s1, 0x3BC0
/* 41A0C 8006660C 3C090010 */ lui $t1, (0x100000 >> 16)
/* 41A10 80066610 3C01A430 */ lui $at, %hi(D_A430003C)
/* 41A14 80066614 AC29003C */ sw $t1, %lo(D_A430003C)($at)
/* 41A18 80066618 0C019A45 */ jal send_mesg
/* 41A1C 8006661C 240400D8 */ addiu $a0, $zero, 0xD8
.LIQUE_80066620:
/* 41A20 80066620 32290800 */ andi $t1, $s1, 0x800
/* 41A24 80066624 11200007 */ beqz $t1, .LIQUE_80066644
/* 41A28 80066628 00000000 */ nop
/* 41A2C 8006662C 323137C0 */ andi $s1, $s1, 0x37C0
/* 41A30 80066630 3C090040 */ lui $t1, (0x400000 >> 16)
/* 41A34 80066634 3C01A430 */ lui $at, %hi(D_A430003C)
/* 41A38 80066638 AC29003C */ sw $t1, %lo(D_A430003C)($at)
/* 41A3C 8006663C 0C019A45 */ jal send_mesg
/* 41A40 80066640 240400E0 */ addiu $a0, $zero, 0xE0
.LIQUE_80066644:
/* 41A44 80066644 1000FF93 */ b .LIQUE_80066494
/* 41A48 80066648 00000000 */ nop
glabel .LIQUE_8006664C
/* 41A4C 8006664C 3C11A430 */ lui $s1, %hi(D_A4300008)
/* 41A50 80066650 8E310008 */ lw $s1, %lo(D_A4300008)($s1)
/* 41A54 80066654 3C088009 */ lui $t0, %hi(__OSGlobalIntMask)
/* 41A58 80066658 650845B4 */ daddiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 41A5C 8006665C 8D080000 */ lw $t0, 0x0($t0)
/* 41A60 80066660 00084402 */ srl $t0, $t0, 16
/* 41A64 80066664 02288824 */ and $s1, $s1, $t0
/* 41A68 80066668 32290001 */ andi $t1, $s1, 0x1
/* 41A6C 8006666C 11200014 */ beqz $t1, .LIQUE_800666C0
/* 41A70 80066670 00000000 */ nop
/* 41A74 80066674 3231003E */ andi $s1, $s1, 0x3E
/* 41A78 80066678 3C0CA404 */ lui $t4, %hi(D_A4040010)
/* 41A7C 8006667C 8D8C0010 */ lw $t4, %lo(D_A4040010)($t4)
/* 41A80 80066680 34098008 */ ori $t1, $zero, 0x8008
/* 41A84 80066684 3C01A404 */ lui $at, %hi(D_A4040010)
/* 41A88 80066688 AC290010 */ sw $t1, %lo(D_A4040010)($at)
/* 41A8C 8006668C 318C0300 */ andi $t4, $t4, 0x300
/* 41A90 80066690 11800007 */ beqz $t4, .LIQUE_800666B0
/* 41A94 80066694 00000000 */ nop
/* 41A98 80066698 0C019A45 */ jal send_mesg
/* 41A9C 8006669C 24040020 */ addiu $a0, $zero, 0x20
/* 41AA0 800666A0 12200044 */ beqz $s1, .LIQUE_800667B4
/* 41AA4 800666A4 00000000 */ nop
/* 41AA8 800666A8 10000005 */ b .LIQUE_800666C0
/* 41AAC 800666AC 00000000 */ nop
.LIQUE_800666B0:
/* 41AB0 800666B0 0C019A45 */ jal send_mesg
/* 41AB4 800666B4 24040058 */ addiu $a0, $zero, 0x58
/* 41AB8 800666B8 1220003E */ beqz $s1, .LIQUE_800667B4
/* 41ABC 800666BC 00000000 */ nop
.LIQUE_800666C0:
/* 41AC0 800666C0 32290008 */ andi $t1, $s1, 0x8
/* 41AC4 800666C4 11200008 */ beqz $t1, .LIQUE_800666E8
/* 41AC8 800666C8 00000000 */ nop
/* 41ACC 800666CC 32310037 */ andi $s1, $s1, 0x37
/* 41AD0 800666D0 3C01A440 */ lui $at, %hi(D_A4400010)
/* 41AD4 800666D4 AC200010 */ sw $zero, %lo(D_A4400010)($at)
/* 41AD8 800666D8 0C019A45 */ jal send_mesg
/* 41ADC 800666DC 24040038 */ addiu $a0, $zero, 0x38
/* 41AE0 800666E0 12200034 */ beqz $s1, .LIQUE_800667B4
/* 41AE4 800666E4 00000000 */ nop
.LIQUE_800666E8:
/* 41AE8 800666E8 32290004 */ andi $t1, $s1, 0x4
/* 41AEC 800666EC 11200009 */ beqz $t1, .LIQUE_80066714
/* 41AF0 800666F0 00000000 */ nop
/* 41AF4 800666F4 3231003B */ andi $s1, $s1, 0x3B
/* 41AF8 800666F8 24090001 */ addiu $t1, $zero, 0x1
/* 41AFC 800666FC 3C01A450 */ lui $at, %hi(D_A450000C)
/* 41B00 80066700 AC29000C */ sw $t1, %lo(D_A450000C)($at)
/* 41B04 80066704 0C019A45 */ jal send_mesg
/* 41B08 80066708 24040030 */ addiu $a0, $zero, 0x30
/* 41B0C 8006670C 12200029 */ beqz $s1, .LIQUE_800667B4
/* 41B10 80066710 00000000 */ nop
.LIQUE_80066714:
/* 41B14 80066714 32290002 */ andi $t1, $s1, 0x2
/* 41B18 80066718 11200008 */ beqz $t1, .LIQUE_8006673C
/* 41B1C 8006671C 00000000 */ nop
/* 41B20 80066720 3231003D */ andi $s1, $s1, 0x3D
/* 41B24 80066724 3C01A480 */ lui $at, %hi(D_A4800018)
/* 41B28 80066728 AC200018 */ sw $zero, %lo(D_A4800018)($at)
/* 41B2C 8006672C 0C019A45 */ jal send_mesg
/* 41B30 80066730 24040028 */ addiu $a0, $zero, 0x28
/* 41B34 80066734 1220001F */ beqz $s1, .LIQUE_800667B4
/* 41B38 80066738 00000000 */ nop
.LIQUE_8006673C:
/* 41B3C 8006673C 32290010 */ andi $t1, $s1, 0x10
/* 41B40 80066740 11200013 */ beqz $t1, .LIQUE_80066790
/* 41B44 80066744 00000000 */ nop
/* 41B48 80066748 3231002F */ andi $s1, $s1, 0x2F
/* 41B4C 8006674C 24090002 */ addiu $t1, $zero, 0x2
/* 41B50 80066750 3C01A460 */ lui $at, %hi(D_A4600010)
/* 41B54 80066754 AC290010 */ sw $t1, %lo(D_A4600010)($at)
/* 41B58 80066758 3C098009 */ lui $t1, %hi(__osPiIntTable)
/* 41B5C 8006675C 65294518 */ daddiu $t1, $t1, %lo(__osPiIntTable)
/* 41B60 80066760 8D2A0000 */ lw $t2, 0x0($t1)
/* 41B64 80066764 11400006 */ beqz $t2, .LIQUE_80066780
/* 41B68 80066768 00000000 */ nop
/* 41B6C 8006676C 8D3D0004 */ lw $sp, 0x4($t1)
/* 41B70 80066770 0140F809 */ jalr $t2
/* 41B74 80066774 0040202D */ daddu $a0, $v0, $zero
/* 41B78 80066778 14400003 */ bnez $v0, .LIQUE_80066788
/* 41B7C 8006677C 00000000 */ nop
.LIQUE_80066780:
/* 41B80 80066780 0C019A45 */ jal send_mesg
/* 41B84 80066784 24040040 */ addiu $a0, $zero, 0x40
.LIQUE_80066788:
/* 41B88 80066788 1220000A */ beqz $s1, .LIQUE_800667B4
/* 41B8C 8006678C 00000000 */ nop
.LIQUE_80066790:
/* 41B90 80066790 32290020 */ andi $t1, $s1, 0x20
/* 41B94 80066794 11200007 */ beqz $t1, .LIQUE_800667B4
/* 41B98 80066798 00000000 */ nop
/* 41B9C 8006679C 3231001F */ andi $s1, $s1, 0x1F
/* 41BA0 800667A0 24090800 */ addiu $t1, $zero, 0x800
/* 41BA4 800667A4 3C01A430 */ lui $at, %hi(D_A4300000)
/* 41BA8 800667A8 AC290000 */ sw $t1, %lo(D_A4300000)($at)
/* 41BAC 800667AC 0C019A45 */ jal send_mesg
/* 41BB0 800667B0 24040048 */ addiu $a0, $zero, 0x48
.LIQUE_800667B4:
/* 41BB4 800667B4 2401FBFF */ addiu $at, $zero, -0x401
/* 41BB8 800667B8 1000FF36 */ b .LIQUE_80066494
/* 41BBC 800667BC 02018024 */ and $s0, $s0, $at
glabel .LIQUE_800667C0
/* 41BC0 800667C0 8F5B0118 */ lw $k1, 0x118($k0) # handwritten instruction
/* 41BC4 800667C4 2401EFFF */ addiu $at, $zero, -0x1001
/* 41BC8 800667C8 0361D824 */ and $k1, $k1, $at
/* 41BCC 800667CC AF5B0118 */ sw $k1, 0x118($k0) # handwritten instruction
/* 41BD0 800667D0 3C098009 */ lui $t1, %hi(__osShutdown)
/* 41BD4 800667D4 652945AC */ daddiu $t1, $t1, %lo(__osShutdown)
/* 41BD8 800667D8 8D2A0000 */ lw $t2, 0x0($t1)
/* 41BDC 800667DC 11400004 */ beqz $t2, .LIQUE_800667F0
/* 41BE0 800667E0 00000000 */ nop
/* 41BE4 800667E4 2401EFFF */ addiu $at, $zero, -0x1001
/* 41BE8 800667E8 1000002A */ b .LIQUE_80066894
/* 41BEC 800667EC 02018024 */ and $s0, $s0, $at
.LIQUE_800667F0:
/* 41BF0 800667F0 240A0001 */ addiu $t2, $zero, 0x1
/* 41BF4 800667F4 AD2A0000 */ sw $t2, 0x0($t1)
/* 41BF8 800667F8 400A4800 */ mfc0 $t2, $9 # handwritten instruction
/* 41BFC 800667FC 3C098009 */ lui $t1, %hi(__osShutdownTime)
/* 41C00 80066800 652945B0 */ daddiu $t1, $t1, %lo(__osShutdownTime)
/* 41C04 80066804 AD2A0000 */ sw $t2, 0x0($t1)
/* 41C08 80066808 0C019A45 */ jal send_mesg
/* 41C0C 8006680C 24040070 */ addiu $a0, $zero, 0x70
/* 41C10 80066810 2401EFFF */ addiu $at, $zero, -0x1001
/* 41C14 80066814 02018024 */ and $s0, $s0, $at
/* 41C18 80066818 3C0A8009 */ lui $t2, %hi(__osRunQueue)
/* 41C1C 8006681C 8D4A3278 */ lw $t2, %lo(__osRunQueue)($t2)
/* 41C20 80066820 8D5B0118 */ lw $k1, 0x118($t2) # handwritten instruction
/* 41C24 80066824 2401EFFF */ addiu $at, $zero, -0x1001
/* 41C28 80066828 0361D824 */ and $k1, $k1, $at
/* 41C2C 8006682C 10000019 */ b .LIQUE_80066894
/* 41C30 80066830 AD5B0118 */ sw $k1, 0x118($t2) # handwritten instruction
glabel .LIQUE_80066834
/* 41C34 80066834 2401FDFF */ addiu $at, $zero, -0x201
/* 41C38 80066838 01014024 */ and $t0, $t0, $at
/* 41C3C 8006683C 40886800 */ mtc0 $t0, $13 # handwritten instruction
/* 41C40 80066840 24040008 */ addiu $a0, $zero, 0x8
/* 41C44 80066844 0C019A45 */ jal send_mesg
/* 41C48 80066848 00000000 */ nop
/* 41C4C 8006684C 2401FDFF */ addiu $at, $zero, -0x201
/* 41C50 80066850 1000FF10 */ b .LIQUE_80066494
/* 41C54 80066854 02018024 */ and $s0, $s0, $at
glabel .LIQUE_80066858
/* 41C58 80066858 2401FEFF */ addiu $at, $zero, -0x101
/* 41C5C 8006685C 01014024 */ and $t0, $t0, $at
/* 41C60 80066860 40886800 */ mtc0 $t0, $13 # handwritten instruction
/* 41C64 80066864 24040000 */ addiu $a0, $zero, 0x0
/* 41C68 80066868 0C019A45 */ jal send_mesg
/* 41C6C 8006686C 00000000 */ nop
/* 41C70 80066870 2401FEFF */ addiu $at, $zero, -0x101
/* 41C74 80066874 1000FF07 */ b .LIQUE_80066494
/* 41C78 80066878 02018024 */ and $s0, $s0, $at
.LIQUE_8006687C:
/* 41C7C 8006687C 24090001 */ addiu $t1, $zero, 0x1
/* 41C80 80066880 A7490012 */ sh $t1, 0x12($k0) # handwritten instruction
/* 41C84 80066884 0C019A45 */ jal send_mesg
/* 41C88 80066888 24040050 */ addiu $a0, $zero, 0x50
/* 41C8C 8006688C 10000001 */ b .LIQUE_80066894
/* 41C90 80066890 00000000 */ nop
glabel .LIQUE_80066894
/* 41C94 80066894 8F490004 */ lw $t1, 0x4($k0) # handwritten instruction
/* 41C98 80066898 3C0A8009 */ lui $t2, %hi(__osRunQueue)
/* 41C9C 8006689C 8D4A3278 */ lw $t2, %lo(__osRunQueue)($t2)
/* 41CA0 800668A0 8D4B0004 */ lw $t3, 0x4($t2)
/* 41CA4 800668A4 012B082A */ slt $at, $t1, $t3
/* 41CA8 800668A8 10200008 */ beqz $at, .LIQUE_800668CC
/* 41CAC 800668AC 00000000 */ nop
/* 41CB0 800668B0 0340282D */ daddu $a1, $k0, $zero
/* 41CB4 800668B4 3C048009 */ lui $a0, %hi(__osRunQueue)
/* 41CB8 800668B8 64843278 */ daddiu $a0, $a0, %lo(__osRunQueue)
/* 41CBC 800668BC 0C019AC4 */ jal __osEnqueueThread
/* 41CC0 800668C0 00000000 */ nop
/* 41CC4 800668C4 08019ADC */ j __osDispatchThread
/* 41CC8 800668C8 00000000 */ nop
.LIQUE_800668CC:
/* 41CCC 800668CC 3C098009 */ lui $t1, %hi(__osRunQueue)
/* 41CD0 800668D0 65293278 */ daddiu $t1, $t1, %lo(__osRunQueue)
/* 41CD4 800668D4 8D2A0000 */ lw $t2, 0x0($t1)
/* 41CD8 800668D8 AF4A0000 */ sw $t2, 0x0($k0) # handwritten instruction
/* 41CDC 800668DC 08019ADC */ j __osDispatchThread
/* 41CE0 800668E0 AD3A0000 */ sw $k0, 0x0($t1) # handwritten instruction
.LIQUE_800668E4:
/* 41CE4 800668E4 3C018009 */ lui $at, %hi(__osFaultedThread)
/* 41CE8 800668E8 AC3A3284 */ sw $k0, %lo(__osFaultedThread)($at) # handwritten instruction
/* 41CEC 800668EC 24090001 */ addiu $t1, $zero, 0x1
/* 41CF0 800668F0 A7490010 */ sh $t1, 0x10($k0) # handwritten instruction
/* 41CF4 800668F4 24090002 */ addiu $t1, $zero, 0x2
/* 41CF8 800668F8 A7490012 */ sh $t1, 0x12($k0) # handwritten instruction
/* 41CFC 800668FC 400A4000 */ mfc0 $t2, $8 # handwritten instruction
/* 41D00 80066900 AF4A0124 */ sw $t2, 0x124($k0) # handwritten instruction
/* 41D04 80066904 0C019A45 */ jal send_mesg
/* 41D08 80066908 24040060 */ addiu $a0, $zero, 0x60
/* 41D0C 8006690C 08019ADC */ j __osDispatchThread
/* 41D10 80066910 00000000 */ nop
# Handwritten function
glabel send_mesg
/* 41D14 80066914 03E0902D */ daddu $s2, $ra, $zero
/* 41D18 80066918 3C0A800E */ lui $t2, %hi(__osEventStateTab)
/* 41D1C 8006691C 654A825C */ daddiu $t2, $t2, %lo(__osEventStateTab)
/* 41D20 80066920 01445021 */ addu $t2, $t2, $a0
/* 41D24 80066924 8D490000 */ lw $t1, 0x0($t2)
/* 41D28 80066928 11200027 */ beqz $t1, .LIQUE_800669C8
/* 41D2C 8006692C 00000000 */ nop
/* 41D30 80066930 8D2B0008 */ lw $t3, 0x8($t1)
/* 41D34 80066934 8D2C0010 */ lw $t4, 0x10($t1)
/* 41D38 80066938 016C082A */ slt $at, $t3, $t4
/* 41D3C 8006693C 10200022 */ beqz $at, .LIQUE_800669C8
/* 41D40 80066940 00000000 */ nop
/* 41D44 80066944 8D2D000C */ lw $t5, 0xC($t1)
/* 41D48 80066948 01AB6821 */ addu $t5, $t5, $t3
/* 41D4C 8006694C 15800002 */ bnez $t4, .LIQUE_80066958
/* 41D50 80066950 01AC001A */ div $zero, $t5, $t4
/* 41D54 80066954 0007000D */ break 7
.LIQUE_80066958:
/* 41D58 80066958 2401FFFF */ addiu $at, $zero, -0x1
/* 41D5C 8006695C 15810004 */ bne $t4, $at, .LIQUE_80066970
/* 41D60 80066960 3C018000 */ lui $at, (0x80000000 >> 16)
/* 41D64 80066964 15A10002 */ bne $t5, $at, .LIQUE_80066970
/* 41D68 80066968 00000000 */ nop
/* 41D6C 8006696C 0006000D */ break 6
.LIQUE_80066970:
/* 41D70 80066970 00006810 */ mfhi $t5
/* 41D74 80066974 8D2C0014 */ lw $t4, 0x14($t1)
/* 41D78 80066978 24010004 */ addiu $at, $zero, 0x4
/* 41D7C 8006697C 01A10018 */ mult $t5, $at
/* 41D80 80066980 00006812 */ mflo $t5
/* 41D84 80066984 018D6021 */ addu $t4, $t4, $t5
/* 41D88 80066988 8D4D0004 */ lw $t5, 0x4($t2)
/* 41D8C 8006698C AD8D0000 */ sw $t5, 0x0($t4)
/* 41D90 80066990 256A0001 */ addiu $t2, $t3, 0x1
/* 41D94 80066994 AD2A0008 */ sw $t2, 0x8($t1)
/* 41D98 80066998 8D2A0000 */ lw $t2, 0x0($t1)
/* 41D9C 8006699C 8D4B0000 */ lw $t3, 0x0($t2)
/* 41DA0 800669A0 11600009 */ beqz $t3, .LIQUE_800669C8
/* 41DA4 800669A4 00000000 */ nop
/* 41DA8 800669A8 0C019AD6 */ jal __osPopThread
/* 41DAC 800669AC 0120202D */ daddu $a0, $t1, $zero
/* 41DB0 800669B0 0040502D */ daddu $t2, $v0, $zero
/* 41DB4 800669B4 0140282D */ daddu $a1, $t2, $zero
/* 41DB8 800669B8 3C048009 */ lui $a0, %hi(__osRunQueue)
/* 41DBC 800669BC 64843278 */ daddiu $a0, $a0, %lo(__osRunQueue)
/* 41DC0 800669C0 0C019AC4 */ jal __osEnqueueThread
/* 41DC4 800669C4 00000000 */ nop
.LIQUE_800669C8:
/* 41DC8 800669C8 02400008 */ jr $s2
/* 41DCC 800669CC 00000000 */ nop
.LIQUE_800669D0:
/* 41DD0 800669D0 3C013000 */ lui $at, (0x30000000 >> 16)
/* 41DD4 800669D4 01014824 */ and $t1, $t0, $at
/* 41DD8 800669D8 00094F02 */ srl $t1, $t1, 28
/* 41DDC 800669DC 240A0001 */ addiu $t2, $zero, 0x1
/* 41DE0 800669E0 152AFFC0 */ bne $t1, $t2, .LIQUE_800668E4
/* 41DE4 800669E4 00000000 */ nop
/* 41DE8 800669E8 24090001 */ addiu $t1, $zero, 0x1
/* 41DEC 800669EC AF490018 */ sw $t1, 0x18($k0) # handwritten instruction
/* 41DF0 800669F0 8F5B0118 */ lw $k1, 0x118($k0) # handwritten instruction
/* 41DF4 800669F4 3C012000 */ lui $at, (0x20000000 >> 16)
/* 41DF8 800669F8 0361D825 */ or $k1, $k1, $at
/* 41DFC 800669FC 1000FFB3 */ b .LIQUE_800668CC
/* 41E00 80066A00 AF5B0118 */ sw $k1, 0x118($k0) # handwritten instruction
# Handwritten function
glabel __osEnqueueAndYield
/* 41E04 80066A04 3C058009 */ lui $a1, %hi(__osRunningThread)
/* 41E08 80066A08 8CA53280 */ lw $a1, %lo(__osRunningThread)($a1)
/* 41E0C 80066A0C 40086000 */ mfc0 $t0, $12 # handwritten instruction
/* 41E10 80066A10 35080002 */ ori $t0, $t0, 0x2
/* 41E14 80066A14 ACA80118 */ sw $t0, 0x118($a1)
/* 41E18 80066A18 FCB00098 */ sd $s0, 0x98($a1)
/* 41E1C 80066A1C FCB100A0 */ sd $s1, 0xA0($a1)
/* 41E20 80066A20 FCB200A8 */ sd $s2, 0xA8($a1)
/* 41E24 80066A24 FCB300B0 */ sd $s3, 0xB0($a1)
/* 41E28 80066A28 FCB400B8 */ sd $s4, 0xB8($a1)
/* 41E2C 80066A2C FCB500C0 */ sd $s5, 0xC0($a1)
/* 41E30 80066A30 FCB600C8 */ sd $s6, 0xC8($a1)
/* 41E34 80066A34 FCB700D0 */ sd $s7, 0xD0($a1)
/* 41E38 80066A38 FCBC00E8 */ sd $gp, 0xE8($a1)
/* 41E3C 80066A3C FCBD00F0 */ sd $sp, 0xF0($a1)
/* 41E40 80066A40 FCBE00F8 */ sd $fp, 0xF8($a1)
/* 41E44 80066A44 FCBF0100 */ sd $ra, 0x100($a1)
/* 41E48 80066A48 ACBF011C */ sw $ra, 0x11C($a1)
/* 41E4C 80066A4C 8CBB0018 */ lw $k1, 0x18($a1) # handwritten instruction
/* 41E50 80066A50 13600009 */ beqz $k1, .LIQUE_80066A78 # handwritten instruction
/* 41E54 80066A54 00000000 */ nop
/* 41E58 80066A58 445BF800 */ cfc1 $k1, $31
/* 41E5C 80066A5C ACBB012C */ sw $k1, 0x12C($a1) # handwritten instruction
/* 41E60 80066A60 F4B40180 */ sdc1 $f20, 0x180($a1)
/* 41E64 80066A64 F4B60188 */ sdc1 $f22, 0x188($a1)
/* 41E68 80066A68 F4B80190 */ sdc1 $f24, 0x190($a1)
/* 41E6C 80066A6C F4BA0198 */ sdc1 $f26, 0x198($a1)
/* 41E70 80066A70 F4BC01A0 */ sdc1 $f28, 0x1A0($a1)
/* 41E74 80066A74 F4BE01A8 */ sdc1 $f30, 0x1A8($a1)
.LIQUE_80066A78:
/* 41E78 80066A78 8CBB0118 */ lw $k1, 0x118($a1) # handwritten instruction
/* 41E7C 80066A7C 3369FF00 */ andi $t1, $k1, 0xFF00 # handwritten instruction
/* 41E80 80066A80 1120000E */ beqz $t1, .LIQUE_80066ABC
/* 41E84 80066A84 00000000 */ nop
/* 41E88 80066A88 3C088009 */ lui $t0, %hi(__OSGlobalIntMask)
/* 41E8C 80066A8C 650845B4 */ daddiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 41E90 80066A90 8D080000 */ lw $t0, 0x0($t0)
/* 41E94 80066A94 3C01FFFF */ lui $at, (0xFFFFFFFF >> 16)
/* 41E98 80066A98 3421FFFF */ ori $at, $at, (0xFFFFFFFF & 0xFFFF)
/* 41E9C 80066A9C 01014026 */ xor $t0, $t0, $at
/* 41EA0 80066AA0 3108FF00 */ andi $t0, $t0, 0xFF00
/* 41EA4 80066AA4 01284825 */ or $t1, $t1, $t0
/* 41EA8 80066AA8 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* 41EAC 80066AAC 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* 41EB0 80066AB0 0361D824 */ and $k1, $k1, $at
/* 41EB4 80066AB4 0369D825 */ or $k1, $k1, $t1
/* 41EB8 80066AB8 ACBB0118 */ sw $k1, 0x118($a1) # handwritten instruction
.LIQUE_80066ABC:
/* 41EBC 80066ABC 3C1BA430 */ lui $k1, %hi(D_A430000C) # handwritten instruction
/* 41EC0 80066AC0 8F7B000C */ lw $k1, %lo(D_A430000C)($k1) # handwritten instruction
/* 41EC4 80066AC4 1360000C */ beqz $k1, .LIQUE_80066AF8 # handwritten instruction
/* 41EC8 80066AC8 00000000 */ nop
/* 41ECC 80066ACC 3C1A8009 */ lui $k0, %hi(__OSGlobalIntMask) # handwritten instruction
/* 41ED0 80066AD0 675A45B4 */ daddiu $k0, $k0, %lo(__OSGlobalIntMask) # handwritten instruction
/* 41ED4 80066AD4 8F5A0000 */ lw $k0, 0x0($k0) # handwritten instruction
/* 41ED8 80066AD8 001AD402 */ srl $k0, $k0, 16
/* 41EDC 80066ADC 3C01FFFF */ lui $at, (0xFFFFFFFF >> 16)
/* 41EE0 80066AE0 3421FFFF */ ori $at, $at, (0xFFFFFFFF & 0xFFFF)
/* 41EE4 80066AE4 0341D026 */ xor $k0, $k0, $at
/* 41EE8 80066AE8 335A003F */ andi $k0, $k0, 0x3F # handwritten instruction
/* 41EEC 80066AEC 8CA80128 */ lw $t0, 0x128($a1)
/* 41EF0 80066AF0 0348D024 */ and $k0, $k0, $t0
/* 41EF4 80066AF4 037AD825 */ or $k1, $k1, $k0
.LIQUE_80066AF8:
/* 41EF8 80066AF8 10800003 */ beqz $a0, .LIQUE_80066B08
/* 41EFC 80066AFC ACBB0128 */ sw $k1, 0x128($a1) # handwritten instruction
/* 41F00 80066B00 0C019AC4 */ jal __osEnqueueThread
/* 41F04 80066B04 00000000 */ nop
.LIQUE_80066B08:
/* 41F08 80066B08 08019ADC */ j __osDispatchThread
/* 41F0C 80066B0C 00000000 */ nop
glabel __osEnqueueThread
/* 41F10 80066B10 0080C82D */ daddu $t9, $a0, $zero
/* 41F14 80066B14 8C980000 */ lw $t8, 0x0($a0)
/* 41F18 80066B18 8CAF0004 */ lw $t7, 0x4($a1)
/* 41F1C 80066B1C 8F0E0004 */ lw $t6, 0x4($t8)
/* 41F20 80066B20 01CF082A */ slt $at, $t6, $t7
/* 41F24 80066B24 14200007 */ bnez $at, .LIQUE_80066B44
/* 41F28 80066B28 00000000 */ nop
.LIQUE_80066B2C:
/* 41F2C 80066B2C 0300C82D */ daddu $t9, $t8, $zero
/* 41F30 80066B30 8F180000 */ lw $t8, 0x0($t8)
/* 41F34 80066B34 8F0E0004 */ lw $t6, 0x4($t8)
/* 41F38 80066B38 01CF082A */ slt $at, $t6, $t7
/* 41F3C 80066B3C 1020FFFB */ beqz $at, .LIQUE_80066B2C
/* 41F40 80066B40 00000000 */ nop
.LIQUE_80066B44:
/* 41F44 80066B44 8F380000 */ lw $t8, 0x0($t9)
/* 41F48 80066B48 ACB80000 */ sw $t8, 0x0($a1)
/* 41F4C 80066B4C AF250000 */ sw $a1, 0x0($t9)
/* 41F50 80066B50 03E00008 */ jr $ra
/* 41F54 80066B54 ACA40008 */ sw $a0, 0x8($a1)
glabel __osPopThread
/* 41F58 80066B58 8C820000 */ lw $v0, 0x0($a0)
/* 41F5C 80066B5C 8C590000 */ lw $t9, 0x0($v0)
/* 41F60 80066B60 03E00008 */ jr $ra
/* 41F64 80066B64 AC990000 */ sw $t9, 0x0($a0)
/* 41F68 80066B68 03E00008 */ jr $ra
/* 41F6C 80066B6C 00000000 */ nop
# Handwritten function
glabel __osDispatchThread
/* 41F70 80066B70 3C048009 */ lui $a0, %hi(__osRunQueue)
/* 41F74 80066B74 64843278 */ daddiu $a0, $a0, %lo(__osRunQueue)
/* 41F78 80066B78 0C019AD6 */ jal __osPopThread
/* 41F7C 80066B7C 00000000 */ nop
/* 41F80 80066B80 3C018009 */ lui $at, %hi(__osRunningThread)
/* 41F84 80066B84 AC223280 */ sw $v0, %lo(__osRunningThread)($at)
/* 41F88 80066B88 24080004 */ addiu $t0, $zero, 0x4
/* 41F8C 80066B8C A4480010 */ sh $t0, 0x10($v0)
/* 41F90 80066B90 0040D02D */ daddu $k0, $v0, $zero
/* 41F94 80066B94 8F5B0118 */ lw $k1, 0x118($k0) # handwritten instruction
/* 41F98 80066B98 3C088009 */ lui $t0, %hi(__OSGlobalIntMask)
/* 41F9C 80066B9C 650845B4 */ daddiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 41FA0 80066BA0 8D080000 */ lw $t0, 0x0($t0)
/* 41FA4 80066BA4 3108FF00 */ andi $t0, $t0, 0xFF00
/* 41FA8 80066BA8 3369FF00 */ andi $t1, $k1, 0xFF00 # handwritten instruction
/* 41FAC 80066BAC 01284824 */ and $t1, $t1, $t0
/* 41FB0 80066BB0 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* 41FB4 80066BB4 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* 41FB8 80066BB8 0361D824 */ and $k1, $k1, $at
/* 41FBC 80066BBC 0369D825 */ or $k1, $k1, $t1
/* 41FC0 80066BC0 409B6000 */ mtc0 $k1, $12 # handwritten instruction
/* 41FC4 80066BC4 DF410020 */ ld $at, 0x20($k0) # handwritten instruction
/* 41FC8 80066BC8 DF420028 */ ld $v0, 0x28($k0) # handwritten instruction
/* 41FCC 80066BCC DF430030 */ ld $v1, 0x30($k0) # handwritten instruction
/* 41FD0 80066BD0 DF440038 */ ld $a0, 0x38($k0) # handwritten instruction
/* 41FD4 80066BD4 DF450040 */ ld $a1, 0x40($k0) # handwritten instruction
/* 41FD8 80066BD8 DF460048 */ ld $a2, 0x48($k0) # handwritten instruction
/* 41FDC 80066BDC DF470050 */ ld $a3, 0x50($k0) # handwritten instruction
/* 41FE0 80066BE0 DF480058 */ ld $t0, 0x58($k0) # handwritten instruction
/* 41FE4 80066BE4 DF490060 */ ld $t1, 0x60($k0) # handwritten instruction
/* 41FE8 80066BE8 DF4A0068 */ ld $t2, 0x68($k0) # handwritten instruction
/* 41FEC 80066BEC DF4B0070 */ ld $t3, 0x70($k0) # handwritten instruction
/* 41FF0 80066BF0 DF4C0078 */ ld $t4, 0x78($k0) # handwritten instruction
/* 41FF4 80066BF4 DF4D0080 */ ld $t5, 0x80($k0) # handwritten instruction
/* 41FF8 80066BF8 DF4E0088 */ ld $t6, 0x88($k0) # handwritten instruction
/* 41FFC 80066BFC DF4F0090 */ ld $t7, 0x90($k0) # handwritten instruction
/* 42000 80066C00 DF500098 */ ld $s0, 0x98($k0) # handwritten instruction
/* 42004 80066C04 DF5100A0 */ ld $s1, 0xA0($k0) # handwritten instruction
/* 42008 80066C08 DF5200A8 */ ld $s2, 0xA8($k0) # handwritten instruction
/* 4200C 80066C0C DF5300B0 */ ld $s3, 0xB0($k0) # handwritten instruction
/* 42010 80066C10 DF5400B8 */ ld $s4, 0xB8($k0) # handwritten instruction
/* 42014 80066C14 DF5500C0 */ ld $s5, 0xC0($k0) # handwritten instruction
/* 42018 80066C18 DF5600C8 */ ld $s6, 0xC8($k0) # handwritten instruction
/* 4201C 80066C1C DF5700D0 */ ld $s7, 0xD0($k0) # handwritten instruction
/* 42020 80066C20 DF5800D8 */ ld $t8, 0xD8($k0) # handwritten instruction
/* 42024 80066C24 DF5900E0 */ ld $t9, 0xE0($k0) # handwritten instruction
/* 42028 80066C28 DF5C00E8 */ ld $gp, 0xE8($k0) # handwritten instruction
/* 4202C 80066C2C DF5D00F0 */ ld $sp, 0xF0($k0) # handwritten instruction
/* 42030 80066C30 DF5E00F8 */ ld $fp, 0xF8($k0) # handwritten instruction
/* 42034 80066C34 DF5F0100 */ ld $ra, 0x100($k0) # handwritten instruction
/* 42038 80066C38 DF5B0108 */ ld $k1, 0x108($k0) # handwritten instruction
/* 4203C 80066C3C 03600013 */ mtlo $k1
/* 42040 80066C40 DF5B0110 */ ld $k1, 0x110($k0) # handwritten instruction
/* 42044 80066C44 03600011 */ mthi $k1
/* 42048 80066C48 8F5B011C */ lw $k1, 0x11C($k0) # handwritten instruction
/* 4204C 80066C4C 409B7000 */ mtc0 $k1, $14 # handwritten instruction
/* 42050 80066C50 8F5B0018 */ lw $k1, 0x18($k0) # handwritten instruction
/* 42054 80066C54 13600013 */ beqz $k1, .LIQUE_80066CA4 # handwritten instruction
/* 42058 80066C58 00000000 */ nop
/* 4205C 80066C5C 8F5B012C */ lw $k1, 0x12C($k0) # handwritten instruction
/* 42060 80066C60 44DBF800 */ ctc1 $k1, $31
/* 42064 80066C64 D7400130 */ ldc1 $f0, 0x130($k0)
/* 42068 80066C68 D7420138 */ ldc1 $f2, 0x138($k0)
/* 4206C 80066C6C D7440140 */ ldc1 $f4, 0x140($k0)
/* 42070 80066C70 D7460148 */ ldc1 $f6, 0x148($k0)
/* 42074 80066C74 D7480150 */ ldc1 $f8, 0x150($k0)
/* 42078 80066C78 D74A0158 */ ldc1 $f10, 0x158($k0)
/* 4207C 80066C7C D74C0160 */ ldc1 $f12, 0x160($k0)
/* 42080 80066C80 D74E0168 */ ldc1 $f14, 0x168($k0)
/* 42084 80066C84 D7500170 */ ldc1 $f16, 0x170($k0)
/* 42088 80066C88 D7520178 */ ldc1 $f18, 0x178($k0)
/* 4208C 80066C8C D7540180 */ ldc1 $f20, 0x180($k0)
/* 42090 80066C90 D7560188 */ ldc1 $f22, 0x188($k0)
/* 42094 80066C94 D7580190 */ ldc1 $f24, 0x190($k0)
/* 42098 80066C98 D75A0198 */ ldc1 $f26, 0x198($k0)
/* 4209C 80066C9C D75C01A0 */ ldc1 $f28, 0x1A0($k0)
/* 420A0 80066CA0 D75E01A8 */ ldc1 $f30, 0x1A8($k0)
.LIQUE_80066CA4:
/* 420A4 80066CA4 8F5B0128 */ lw $k1, 0x128($k0) # handwritten instruction
/* 420A8 80066CA8 3C1A8009 */ lui $k0, %hi(__OSGlobalIntMask) # handwritten instruction
/* 420AC 80066CAC 675A45B4 */ daddiu $k0, $k0, %lo(__OSGlobalIntMask) # handwritten instruction
/* 420B0 80066CB0 8F5A0000 */ lw $k0, 0x0($k0) # handwritten instruction
/* 420B4 80066CB4 001AD402 */ srl $k0, $k0, 16
/* 420B8 80066CB8 037AD824 */ and $k1, $k1, $k0
/* 420BC 80066CBC 001BD840 */ sll $k1, $k1, 1
/* 420C0 80066CC0 3C1A800A */ lui $k0, %hi(__osRcpImTable) # handwritten instruction
/* 420C4 80066CC4 675A8900 */ daddiu $k0, $k0, %lo(__osRcpImTable) # handwritten instruction
/* 420C8 80066CC8 037AD821 */ addu $k1, $k1, $k0
/* 420CC 80066CCC 977B0000 */ lhu $k1, 0x0($k1) # handwritten instruction
/* 420D0 80066CD0 3C1AA430 */ lui $k0, (0xA430000C >> 16) # handwritten instruction
/* 420D4 80066CD4 375A000C */ ori $k0, $k0, (0xA430000C & 0xFFFF) # handwritten instruction
/* 420D8 80066CD8 AF5B0000 */ sw $k1, 0x0($k0) # handwritten instruction
/* 420DC 80066CDC 00000000 */ nop
/* 420E0 80066CE0 00000000 */ nop
/* 420E4 80066CE4 00000000 */ nop
/* 420E8 80066CE8 00000000 */ nop
/* 420EC 80066CEC 42000018 */ eret # handwritten instruction
glabel __osCleanupThread
/* 420F0 80066CF0 0C01AE38 */ jal osDestroyThread
/* 420F4 80066CF4 0000202D */ daddu $a0, $zero, $zero
/* 420F8 80066CF8 00000000 */ nop
/* 420FC 80066CFC 00000000 */ nop