mk64/asm/code_800040C0.s

478 lines
22 KiB
ArmAsm

# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel func_800040C0
/* 004CC0 800040C0 27BDFFF8 */ addiu $sp, $sp, -8
/* 004CC4 800040C4 000770C0 */ sll $t6, $a3, 3
/* 004CC8 800040C8 3C0F800E */ lui $t7, %hi(D_800DC674) # $t7, 0x800e
/* 004CCC 800040CC AFB00004 */ sw $s0, 4($sp)
/* 004CD0 800040D0 25EFC674 */ addiu $t7, %lo(D_800DC674) # addiu $t7, $t7, -0x398c
/* 004CD4 800040D4 00808025 */ move $s0, $a0
/* 004CD8 800040D8 01CF4021 */ addu $t0, $t6, $t7
/* 004CDC 800040DC 24070140 */ li $a3, 320
/* 004CE0 800040E0 00001025 */ move $v0, $zero
/* 004CE4 800040E4 240A0008 */ li $t2, 8
/* 004CE8 800040E8 3409FFFF */ li $t1, 65535
.L800040EC:
/* 004CEC 800040EC 91030000 */ lbu $v1, ($t0)
/* 004CF0 800040F0 24040005 */ li $a0, 5
.L800040F4:
/* 004CF4 800040F4 30780001 */ andi $t8, $v1, 1
/* 004CF8 800040F8 13000008 */ beqz $t8, .L8000411C
/* 004CFC 800040FC 00C2C821 */ addu $t9, $a2, $v0
/* 004D00 80004100 03270019 */ multu $t9, $a3
/* 004D04 80004104 00005812 */ mflo $t3
/* 004D08 80004108 01656021 */ addu $t4, $t3, $a1
/* 004D0C 8000410C 01846821 */ addu $t5, $t4, $a0
/* 004D10 80004110 000D7040 */ sll $t6, $t5, 1
/* 004D14 80004114 020E7821 */ addu $t7, $s0, $t6
/* 004D18 80004118 A5E90000 */ sh $t1, ($t7)
.L8000411C:
/* 004D1C 8000411C 2484FFFF */ addiu $a0, $a0, -1
/* 004D20 80004120 0003C043 */ sra $t8, $v1, 1
/* 004D24 80004124 0481FFF3 */ bgez $a0, .L800040F4
/* 004D28 80004128 03001825 */ move $v1, $t8
/* 004D2C 8000412C 24420001 */ addiu $v0, $v0, 1
/* 004D30 80004130 144AFFEE */ bne $v0, $t2, .L800040EC
/* 004D34 80004134 25080001 */ addiu $t0, $t0, 1
/* 004D38 80004138 8FB00004 */ lw $s0, 4($sp)
/* 004D3C 8000413C 03E00008 */ jr $ra
/* 004D40 80004140 27BD0008 */ addiu $sp, $sp, 8
glabel crash_screen_draw_square
/* 004D44 80004144 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 004D48 80004148 AFB40028 */ sw $s4, 0x28($sp)
/* 004D4C 8000414C AFB30024 */ sw $s3, 0x24($sp)
/* 004D50 80004150 AFB20020 */ sw $s2, 0x20($sp)
/* 004D54 80004154 AFB00018 */ sw $s0, 0x18($sp)
/* 004D58 80004158 00809825 */ move $s3, $a0
/* 004D5C 8000415C AFBF002C */ sw $ra, 0x2c($sp)
/* 004D60 80004160 AFB1001C */ sw $s1, 0x1c($sp)
/* 004D64 80004164 2410002E */ li $s0, 46
/* 004D68 80004168 24120028 */ li $s2, 40
/* 004D6C 8000416C 2414002C */ li $s4, 44
/* 004D70 80004170 240D0006 */ li $t5, 6
/* 004D74 80004174 240C0006 */ li $t4, 6
/* 004D78 80004178 240B0006 */ li $t3, 6
/* 004D7C 8000417C 240A0006 */ li $t2, 6
/* 004D80 80004180 24090006 */ li $t1, 6
/* 004D84 80004184 3407FFFF */ li $a3, 65535
/* 004D88 80004188 3406F801 */ li $a2, 63489
.L8000418C:
/* 004D8C 8000418C 0250082A */ slt $at, $s2, $s0
/* 004D90 80004190 10200032 */ beqz $at, .L8000425C
/* 004D94 80004194 02408825 */ move $s1, $s2
/* 004D98 80004198 0250082A */ slt $at, $s2, $s0
.L8000419C:
/* 004D9C 8000419C 1020002C */ beqz $at, .L80004250
/* 004DA0 800041A0 02401825 */ move $v1, $s2
/* 004DA4 800041A4 00117080 */ sll $t6, $s1, 2
/* 004DA8 800041A8 01D17021 */ addu $t6, $t6, $s1
/* 004DAC 800041AC 02122023 */ subu $a0, $s0, $s2
/* 004DB0 800041B0 30880003 */ andi $t0, $a0, 3
/* 004DB4 800041B4 000E79C0 */ sll $t7, $t6, 7
/* 004DB8 800041B8 1100000C */ beqz $t0, .L800041EC
/* 004DBC 800041BC 026FF821 */ addu $ra, $s3, $t7
/* 004DC0 800041C0 0003C040 */ sll $t8, $v1, 1
/* 004DC4 800041C4 03F81021 */ addu $v0, $ra, $t8
/* 004DC8 800041C8 01122821 */ addu $a1, $t0, $s2
.L800041CC:
/* 004DCC 800041CC 15240003 */ bne $t1, $a0, .L800041DC
/* 004DD0 800041D0 24630001 */ addiu $v1, $v1, 1
/* 004DD4 800041D4 10000002 */ b .L800041E0
/* 004DD8 800041D8 A4460000 */ sh $a2, ($v0)
.L800041DC:
/* 004DDC 800041DC A4470000 */ sh $a3, ($v0)
.L800041E0:
/* 004DE0 800041E0 14A3FFFA */ bne $a1, $v1, .L800041CC
/* 004DE4 800041E4 24420002 */ addiu $v0, $v0, 2
/* 004DE8 800041E8 10700019 */ beq $v1, $s0, .L80004250
.L800041EC:
/* 004DEC 800041EC 00032840 */ sll $a1, $v1, 1
/* 004DF0 800041F0 03E51021 */ addu $v0, $ra, $a1
/* 004DF4 800041F4 00104040 */ sll $t0, $s0, 1
.L800041F8:
/* 004DF8 800041F8 15440003 */ bne $t2, $a0, .L80004208
/* 004DFC 800041FC 24A50008 */ addiu $a1, $a1, 8
/* 004E00 80004200 10000002 */ b .L8000420C
/* 004E04 80004204 A4460000 */ sh $a2, ($v0)
.L80004208:
/* 004E08 80004208 A4470000 */ sh $a3, ($v0)
.L8000420C:
/* 004E0C 8000420C 55640004 */ bnel $t3, $a0, .L80004220
/* 004E10 80004210 A4470002 */ sh $a3, 2($v0)
/* 004E14 80004214 10000002 */ b .L80004220
/* 004E18 80004218 A4460002 */ sh $a2, 2($v0)
/* 004E1C 8000421C A4470002 */ sh $a3, 2($v0)
.L80004220:
/* 004E20 80004220 55840004 */ bnel $t4, $a0, .L80004234
/* 004E24 80004224 A4470004 */ sh $a3, 4($v0)
/* 004E28 80004228 10000002 */ b .L80004234
/* 004E2C 8000422C A4460004 */ sh $a2, 4($v0)
/* 004E30 80004230 A4470004 */ sh $a3, 4($v0)
.L80004234:
/* 004E34 80004234 55A40004 */ bnel $t5, $a0, .L80004248
/* 004E38 80004238 A4470006 */ sh $a3, 6($v0)
/* 004E3C 8000423C 10000002 */ b .L80004248
/* 004E40 80004240 A4460006 */ sh $a2, 6($v0)
/* 004E44 80004244 A4470006 */ sh $a3, 6($v0)
.L80004248:
/* 004E48 80004248 14A8FFEB */ bne $a1, $t0, .L800041F8
/* 004E4C 8000424C 24420008 */ addiu $v0, $v0, 8
.L80004250:
/* 004E50 80004250 26310001 */ addiu $s1, $s1, 1
/* 004E54 80004254 5630FFD1 */ bnel $s1, $s0, .L8000419C
/* 004E58 80004258 0250082A */ slt $at, $s2, $s0
.L8000425C:
/* 004E5C 8000425C 2610FFFF */ addiu $s0, $s0, -1
/* 004E60 80004260 1690FFCA */ bne $s4, $s0, .L8000418C
/* 004E64 80004264 26520001 */ addiu $s2, $s2, 1
/* 004E68 80004268 0C033624 */ jal osWritebackDCacheAll
/* 004E6C 8000426C 00000000 */ nop
/* 004E70 80004270 0C033684 */ jal osViSwapBuffer
/* 004E74 80004274 02602025 */ move $a0, $s3
/* 004E78 80004278 8FBF002C */ lw $ra, 0x2c($sp)
/* 004E7C 8000427C 8FB00018 */ lw $s0, 0x18($sp)
/* 004E80 80004280 8FB1001C */ lw $s1, 0x1c($sp)
/* 004E84 80004284 8FB20020 */ lw $s2, 0x20($sp)
/* 004E88 80004288 8FB30024 */ lw $s3, 0x24($sp)
/* 004E8C 8000428C 8FB40028 */ lw $s4, 0x28($sp)
/* 004E90 80004290 03E00008 */ jr $ra
/* 004E94 80004294 27BD0030 */ addiu $sp, $sp, 0x30
glabel crash_screen_draw_info
/* 004E98 80004298 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 004E9C 8000429C AFB50028 */ sw $s5, 0x28($sp)
/* 004EA0 800042A0 AFB30020 */ sw $s3, 0x20($sp)
/* 004EA4 800042A4 00A09825 */ move $s3, $a1
/* 004EA8 800042A8 0080A825 */ move $s5, $a0
/* 004EAC 800042AC 3C09800E */ lui $t1, %hi(D_800DC670) # $t1, 0x800e
/* 004EB0 800042B0 AFBF002C */ sw $ra, 0x2c($sp)
/* 004EB4 800042B4 AFB40024 */ sw $s4, 0x24($sp)
/* 004EB8 800042B8 AFB2001C */ sw $s2, 0x1c($sp)
/* 004EBC 800042BC AFB10018 */ sw $s1, 0x18($sp)
/* 004EC0 800042C0 AFB00014 */ sw $s0, 0x14($sp)
/* 004EC4 800042C4 2529C670 */ addiu $t1, %lo(D_800DC670) # addiu $t1, $t1, -0x3990
/* 004EC8 800042C8 24040001 */ li $a0, 1
/* 004ECC 800042CC 24050078 */ li $a1, 120
/* 004ED0 800042D0 00004025 */ move $t0, $zero
/* 004ED4 800042D4 240A0018 */ li $t2, 24
/* 004ED8 800042D8 8D2E0000 */ lw $t6, ($t1)
.L800042DC:
/* 004EDC 800042DC 00003025 */ move $a2, $zero
/* 004EE0 800042E0 01CA0019 */ multu $t6, $t2
/* 004EE4 800042E4 00007812 */ mflo $t7
/* 004EE8 800042E8 01E81021 */ addu $v0, $t7, $t0
/* 004EEC 800042EC 24420030 */ addiu $v0, $v0, 0x30
/* 004EF0 800042F0 0002C080 */ sll $t8, $v0, 2
/* 004EF4 800042F4 0302C021 */ addu $t8, $t8, $v0
/* 004EF8 800042F8 0018C9C0 */ sll $t9, $t8, 7
/* 004EFC 800042FC 02B93821 */ addu $a3, $s5, $t9
.L80004300:
/* 004F00 80004300 00001825 */ move $v1, $zero
/* 004F04 80004304 00E01025 */ move $v0, $a3
.L80004308:
/* 004F08 80004308 24630004 */ addiu $v1, $v1, 4
/* 004F0C 8000430C A44400CA */ sh $a0, 0xca($v0)
/* 004F10 80004310 A44400CC */ sh $a0, 0xcc($v0)
/* 004F14 80004314 A44400CE */ sh $a0, 0xce($v0)
/* 004F18 80004318 24420008 */ addiu $v0, $v0, 8
/* 004F1C 8000431C 1465FFFA */ bne $v1, $a1, .L80004308
/* 004F20 80004320 A44400C0 */ sh $a0, 0xc0($v0)
/* 004F24 80004324 24C60001 */ addiu $a2, $a2, 1
/* 004F28 80004328 28C10010 */ slti $at, $a2, 0x10
/* 004F2C 8000432C 1420FFF4 */ bnez $at, .L80004300
/* 004F30 80004330 24E70280 */ addiu $a3, $a3, 0x280
/* 004F34 80004334 25080014 */ addiu $t0, $t0, 0x14
/* 004F38 80004338 2901003C */ slti $at, $t0, 0x3c
/* 004F3C 8000433C 5420FFE7 */ bnel $at, $zero, .L800042DC
/* 004F40 80004340 8D2E0000 */ lw $t6, ($t1)
/* 004F44 80004344 8D2B0000 */ lw $t3, ($t1)
/* 004F48 80004348 8E670014 */ lw $a3, 0x14($s3)
/* 004F4C 8000434C 02A02025 */ move $a0, $s5
/* 004F50 80004350 016A0019 */ multu $t3, $t2
/* 004F54 80004354 30EC000F */ andi $t4, $a3, 0xf
/* 004F58 80004358 01803825 */ move $a3, $t4
/* 004F5C 8000435C 2405006C */ li $a1, 108
/* 004F60 80004360 00001012 */ mflo $v0
/* 004F64 80004364 24500035 */ addiu $s0, $v0, 0x35
/* 004F68 80004368 0C001030 */ jal func_800040C0
/* 004F6C 8000436C 02003025 */ move $a2, $s0
/* 004F70 80004370 02A02025 */ move $a0, $s5
/* 004F74 80004374 24050074 */ li $a1, 116
/* 004F78 80004378 02003025 */ move $a2, $s0
/* 004F7C 8000437C 0C001030 */ jal func_800040C0
/* 004F80 80004380 24070010 */ li $a3, 16
/* 004F84 80004384 26720020 */ addiu $s2, $s3, 0x20
/* 004F88 80004388 8E5400FC */ lw $s4, 0xfc($s2)
/* 004F8C 8000438C 241100B4 */ li $s1, 180
.L80004390:
/* 004F90 80004390 02A02025 */ move $a0, $s5
/* 004F94 80004394 02202825 */ move $a1, $s1
/* 004F98 80004398 02003025 */ move $a2, $s0
/* 004F9C 8000439C 0C001030 */ jal func_800040C0
/* 004FA0 800043A0 3287000F */ andi $a3, $s4, 0xf
/* 004FA4 800043A4 2631FFF8 */ addiu $s1, $s1, -8
/* 004FA8 800043A8 2A21007C */ slti $at, $s1, 0x7c
/* 004FAC 800043AC 00146902 */ srl $t5, $s4, 4
/* 004FB0 800043B0 1020FFF7 */ beqz $at, .L80004390
/* 004FB4 800043B4 01A0A025 */ move $s4, $t5
/* 004FB8 800043B8 8E510100 */ lw $s1, 0x100($s2)
/* 004FBC 800043BC 02A02025 */ move $a0, $s5
/* 004FC0 800043C0 240500BC */ li $a1, 188
/* 004FC4 800043C4 00117082 */ srl $t6, $s1, 2
/* 004FC8 800043C8 31D1001F */ andi $s1, $t6, 0x1f
/* 004FCC 800043CC 02003025 */ move $a2, $s0
/* 004FD0 800043D0 0C001030 */ jal func_800040C0
/* 004FD4 800043D4 24070010 */ li $a3, 16
/* 004FD8 800043D8 02A02025 */ move $a0, $s5
/* 004FDC 800043DC 240500C4 */ li $a1, 196
/* 004FE0 800043E0 02003025 */ move $a2, $s0
/* 004FE4 800043E4 0C001030 */ jal func_800040C0
/* 004FE8 800043E8 00113902 */ srl $a3, $s1, 4
/* 004FEC 800043EC 02A02025 */ move $a0, $s5
/* 004FF0 800043F0 240500CC */ li $a1, 204
/* 004FF4 800043F4 02003025 */ move $a2, $s0
/* 004FF8 800043F8 0C001030 */ jal func_800040C0
/* 004FFC 800043FC 3227000F */ andi $a3, $s1, 0xf
/* 005000 80004400 8E5400E4 */ lw $s4, 0xe4($s2)
/* 005004 80004404 241100B4 */ li $s1, 180
.L80004408:
/* 005008 80004408 02A02025 */ move $a0, $s5
/* 00500C 8000440C 02202825 */ move $a1, $s1
/* 005010 80004410 24060049 */ li $a2, 73
/* 005014 80004414 0C001030 */ jal func_800040C0
/* 005018 80004418 3287000F */ andi $a3, $s4, 0xf
/* 00501C 8000441C 2631FFF8 */ addiu $s1, $s1, -8
/* 005020 80004420 2A21007C */ slti $at, $s1, 0x7c
/* 005024 80004424 00145902 */ srl $t3, $s4, 4
/* 005028 80004428 1020FFF7 */ beqz $at, .L80004408
/* 00502C 8000442C 0160A025 */ move $s4, $t3
/* 005030 80004430 8E4200FC */ lw $v0, 0xfc($s2)
/* 005034 80004434 2401FFFC */ li $at, -4
/* 005038 80004438 241100B4 */ li $s1, 180
/* 00503C 8000443C 00416024 */ and $t4, $v0, $at
/* 005040 80004440 3C018000 */ lui $at, (0x80000001 >> 16) # lui $at, 0x8000
/* 005044 80004444 34210001 */ ori $at, (0x80000001 & 0xFFFF) # ori $at, $at, 1
/* 005048 80004448 0181082B */ sltu $at, $t4, $at
/* 00504C 8000444C 14200006 */ bnez $at, .L80004468
/* 005050 80004450 3C01803F */ lui $at, (0x803FFF7F >> 16) # lui $at, 0x803f
/* 005054 80004454 3421FF7F */ ori $at, (0x803FFF7F & 0xFFFF) # ori $at, $at, 0xff7f
/* 005058 80004458 0181082B */ sltu $at, $t4, $at
/* 00505C 8000445C 10200002 */ beqz $at, .L80004468
/* 005060 80004460 00000000 */ nop
/* 005064 80004464 8D940000 */ lw $s4, ($t4)
.L80004468:
/* 005068 80004468 02A02025 */ move $a0, $s5
/* 00506C 8000446C 02202825 */ move $a1, $s1
/* 005070 80004470 2406005D */ li $a2, 93
/* 005074 80004474 0C001030 */ jal func_800040C0
/* 005078 80004478 3287000F */ andi $a3, $s4, 0xf
/* 00507C 8000447C 2631FFF8 */ addiu $s1, $s1, -8
/* 005080 80004480 2A21007C */ slti $at, $s1, 0x7c
/* 005084 80004484 00146902 */ srl $t5, $s4, 4
/* 005088 80004488 1020FFF7 */ beqz $at, .L80004468
/* 00508C 8000448C 01A0A025 */ move $s4, $t5
/* 005090 80004490 0C033624 */ jal osWritebackDCacheAll
/* 005094 80004494 00000000 */ nop
/* 005098 80004498 0C033684 */ jal osViSwapBuffer
/* 00509C 8000449C 02A02025 */ move $a0, $s5
/* 0050A0 800044A0 8FBF002C */ lw $ra, 0x2c($sp)
/* 0050A4 800044A4 8FB00014 */ lw $s0, 0x14($sp)
/* 0050A8 800044A8 8FB10018 */ lw $s1, 0x18($sp)
/* 0050AC 800044AC 8FB2001C */ lw $s2, 0x1c($sp)
/* 0050B0 800044B0 8FB30020 */ lw $s3, 0x20($sp)
/* 0050B4 800044B4 8FB40024 */ lw $s4, 0x24($sp)
/* 0050B8 800044B8 8FB50028 */ lw $s5, 0x28($sp)
/* 0050BC 800044BC 03E00008 */ jr $ra
/* 0050C0 800044C0 27BD0030 */ addiu $sp, $sp, 0x30
glabel get_faulted_thread
/* 0050C4 800044C4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0050C8 800044C8 AFBF0014 */ sw $ra, 0x14($sp)
/* 0050CC 800044CC 0C03384C */ jal func_800CE130
/* 0050D0 800044D0 00000000 */ nop
/* 0050D4 800044D4 8C4E0004 */ lw $t6, 4($v0)
/* 0050D8 800044D8 2404FFFF */ li $a0, -1
/* 0050DC 800044DC 00401825 */ move $v1, $v0
/* 0050E0 800044E0 108E0010 */ beq $a0, $t6, .L80004524
/* 0050E4 800044E4 8FBF0014 */ lw $ra, 0x14($sp)
/* 0050E8 800044E8 8C420004 */ lw $v0, 4($v0)
.L800044EC:
/* 0050EC 800044EC 18400009 */ blez $v0, .L80004514
/* 0050F0 800044F0 28410080 */ slti $at, $v0, 0x80
/* 0050F4 800044F4 50200008 */ beql $at, $zero, .L80004518
/* 0050F8 800044F8 8C63000C */ lw $v1, 0xc($v1)
/* 0050FC 800044FC 946F0012 */ lhu $t7, 0x12($v1)
/* 005100 80004500 31F80003 */ andi $t8, $t7, 3
/* 005104 80004504 53000004 */ beql $t8, $zero, .L80004518
/* 005108 80004508 8C63000C */ lw $v1, 0xc($v1)
/* 00510C 8000450C 10000006 */ b .L80004528
/* 005110 80004510 00601025 */ move $v0, $v1
.L80004514:
/* 005114 80004514 8C63000C */ lw $v1, 0xc($v1)
.L80004518:
/* 005118 80004518 8C620004 */ lw $v0, 4($v1)
/* 00511C 8000451C 1482FFF3 */ bne $a0, $v0, .L800044EC
/* 005120 80004520 00000000 */ nop
.L80004524:
/* 005124 80004524 00001025 */ move $v0, $zero
.L80004528:
/* 005128 80004528 03E00008 */ jr $ra
/* 00512C 8000452C 27BD0018 */ addiu $sp, $sp, 0x18
glabel thread9_crash_screen
/* 005130 80004530 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 005134 80004534 AFB70030 */ sw $s7, 0x30($sp)
/* 005138 80004538 3C178016 */ lui $s7, %hi(D_80162D40) # $s7, 0x8016
/* 00513C 8000453C 26F72D40 */ addiu $s7, %lo(D_80162D40) # addiu $s7, $s7, 0x2d40
/* 005140 80004540 AFBF0034 */ sw $ra, 0x34($sp)
/* 005144 80004544 AFA40048 */ sw $a0, 0x48($sp)
/* 005148 80004548 AFB6002C */ sw $s6, 0x2c($sp)
/* 00514C 8000454C AFB50028 */ sw $s5, 0x28($sp)
/* 005150 80004550 AFB40024 */ sw $s4, 0x24($sp)
/* 005154 80004554 AFB30020 */ sw $s3, 0x20($sp)
/* 005158 80004558 AFB2001C */ sw $s2, 0x1c($sp)
/* 00515C 8000455C AFB10018 */ sw $s1, 0x18($sp)
/* 005160 80004560 AFB00014 */ sw $s0, 0x14($sp)
/* 005164 80004564 2404000C */ li $a0, 12
/* 005168 80004568 02E02825 */ move $a1, $s7
/* 00516C 8000456C 0C033380 */ jal osSetEventMesg
/* 005170 80004570 24060010 */ li $a2, 16
/* 005174 80004574 2404000A */ li $a0, 10
/* 005178 80004578 02E02825 */ move $a1, $s7
/* 00517C 8000457C 0C033380 */ jal osSetEventMesg
/* 005180 80004580 24060010 */ li $a2, 16
/* 005184 80004584 3C108016 */ lui $s0, %hi(D_80162D60) # $s0, 0x8016
/* 005188 80004588 26102D60 */ addiu $s0, %lo(D_80162D60) # addiu $s0, $s0, 0x2d60
/* 00518C 8000458C 3C158016 */ lui $s5, %hi(D_80162D5C) # $s5, 0x8016
/* 005190 80004590 3C14800E */ lui $s4, %hi(D_800DC670) # $s4, 0x800e
/* 005194 80004594 3C12800E */ lui $s2, %hi(D_800DC4BC) # $s2, 0x800e
/* 005198 80004598 3C11800E */ lui $s1, %hi(D_800DC6FC) # $s1, 0x800e
/* 00519C 8000459C AE000000 */ sw $zero, ($s0)
/* 0051A0 800045A0 2631C6FC */ addiu $s1, %lo(D_800DC6FC) # addiu $s1, $s1, -0x3904
/* 0051A4 800045A4 2652C4BC */ addiu $s2, %lo(D_800DC4BC) # addiu $s2, $s2, -0x3b44
/* 0051A8 800045A8 2694C670 */ addiu $s4, %lo(D_800DC670) # addiu $s4, $s4, -0x3990
/* 0051AC 800045AC 26B52D5C */ addiu $s5, %lo(D_80162D5C) # addiu $s5, $s5, 0x2d5c
/* 0051B0 800045B0 27B60044 */ addiu $s6, $sp, 0x44
/* 0051B4 800045B4 3413FFFF */ li $s3, 65535
.L800045B8:
/* 0051B8 800045B8 02E02025 */ move $a0, $s7
.L800045BC:
/* 0051BC 800045BC 02C02825 */ move $a1, $s6
/* 0051C0 800045C0 0C0335D4 */ jal osRecvMesg
/* 0051C4 800045C4 24060001 */ li $a2, 1
/* 0051C8 800045C8 0C001131 */ jal get_faulted_thread
/* 0051CC 800045CC 00000000 */ nop
/* 0051D0 800045D0 3C018016 */ lui $at, %hi(D_80162D64) # $at, 0x8016
/* 0051D4 800045D4 1040FFF8 */ beqz $v0, .L800045B8
/* 0051D8 800045D8 AC222D64 */ sw $v0, %lo(D_80162D64)($at)
/* 0051DC 800045DC 8E820000 */ lw $v0, ($s4)
/* 0051E0 800045E0 5440001F */ bnel $v0, $zero, .L80004660
/* 0051E4 800045E4 28410005 */ slti $at, $v0, 5
/* 0051E8 800045E8 0C001051 */ jal crash_screen_draw_square
/* 0051EC 800045EC 8EA40000 */ lw $a0, ($s5)
.L800045F0:
/* 0051F0 800045F0 0C00028A */ jal read_controllers
/* 0051F4 800045F4 00000000 */ nop
/* 0051F8 800045F8 8E4E0000 */ lw $t6, ($s2)
/* 0051FC 800045FC 95C20006 */ lhu $v0, 6($t6)
/* 005200 80004600 1040FFFB */ beqz $v0, .L800045F0
/* 005204 80004604 00000000 */ nop
/* 005208 80004608 8E030000 */ lw $v1, ($s0)
/* 00520C 8000460C 00037840 */ sll $t7, $v1, 1
/* 005210 80004610 022FC021 */ addu $t8, $s1, $t7
/* 005214 80004614 97190000 */ lhu $t9, ($t8)
/* 005218 80004618 24680001 */ addiu $t0, $v1, 1
/* 00521C 8000461C 54590004 */ bnel $v0, $t9, .L80004630
/* 005220 80004620 AE000000 */ sw $zero, ($s0)
/* 005224 80004624 10000002 */ b .L80004630
/* 005228 80004628 AE080000 */ sw $t0, ($s0)
/* 00522C 8000462C AE000000 */ sw $zero, ($s0)
.L80004630:
/* 005230 80004630 8E090000 */ lw $t1, ($s0)
/* 005234 80004634 00095040 */ sll $t2, $t1, 1
/* 005238 80004638 022A5821 */ addu $t3, $s1, $t2
/* 00523C 8000463C 956C0000 */ lhu $t4, ($t3)
/* 005240 80004640 166CFFEB */ bne $s3, $t4, .L800045F0
/* 005244 80004644 00000000 */ nop
/* 005248 80004648 3C058016 */ lui $a1, %hi(D_80162D64) # $a1, 0x8016
/* 00524C 8000464C 8CA52D64 */ lw $a1, %lo(D_80162D64)($a1)
/* 005250 80004650 0C0010A6 */ jal crash_screen_draw_info
/* 005254 80004654 8EA40000 */ lw $a0, ($s5)
/* 005258 80004658 8E820000 */ lw $v0, ($s4)
/* 00525C 8000465C 28410005 */ slti $at, $v0, 5
.L80004660:
/* 005260 80004660 5020FFD6 */ beql $at, $zero, .L800045BC
/* 005264 80004664 02E02025 */ move $a0, $s7
/* 005268 80004668 244D0001 */ addiu $t5, $v0, 1
/* 00526C 8000466C 1000FFD2 */ b .L800045B8
/* 005270 80004670 AE8D0000 */ sw $t5, ($s4)
/* 005274 80004674 00000000 */ nop
/* 005278 80004678 00000000 */ nop
/* 00527C 8000467C 00000000 */ nop
/* 005280 80004680 8FBF0034 */ lw $ra, 0x34($sp)
/* 005284 80004684 8FB00014 */ lw $s0, 0x14($sp)
/* 005288 80004688 8FB10018 */ lw $s1, 0x18($sp)
/* 00528C 8000468C 8FB2001C */ lw $s2, 0x1c($sp)
/* 005290 80004690 8FB30020 */ lw $s3, 0x20($sp)
/* 005294 80004694 8FB40024 */ lw $s4, 0x24($sp)
/* 005298 80004698 8FB50028 */ lw $s5, 0x28($sp)
/* 00529C 8000469C 8FB6002C */ lw $s6, 0x2c($sp)
/* 0052A0 800046A0 8FB70030 */ lw $s7, 0x30($sp)
/* 0052A4 800046A4 03E00008 */ jr $ra
/* 0052A8 800046A8 27BD0048 */ addiu $sp, $sp, 0x48
glabel func_800046AC
/* 0052AC 800046AC 3C018016 */ lui $at, 0x8016
/* 0052B0 800046B0 03E00008 */ jr $ra
/* 0052B4 800046B4 AC242D5C */ sw $a0, 0x2d5c($at)
glabel create_debug_thread
/* 0052B8 800046B8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0052BC 800046BC AFBF001C */ sw $ra, 0x1c($sp)
/* 0052C0 800046C0 3C048016 */ lui $a0, %hi(D_80162D40) # $a0, 0x8016
/* 0052C4 800046C4 3C058016 */ lui $a1, %hi(D_80162D58) # $a1, 0x8016
/* 0052C8 800046C8 24A52D58 */ addiu $a1, %lo(D_80162D58) # addiu $a1, $a1, 0x2d58
/* 0052CC 800046CC 24842D40 */ addiu $a0, %lo(D_80162D40) # addiu $a0, $a0, 0x2d40
/* 0052D0 800046D0 0C033358 */ jal osCreateMesgQueue
/* 0052D4 800046D4 24060001 */ li $a2, 1
/* 0052D8 800046D8 3C0E8016 */ lui $t6, %hi(D_80162D40) # $t6, 0x8016
/* 0052DC 800046DC 25CE2D40 */ addiu $t6, %lo(D_80162D40) # addiu $t6, $t6, 0x2d40
/* 0052E0 800046E0 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016
/* 0052E4 800046E4 3C068000 */ lui $a2, %hi(thread9_crash_screen) # $a2, 0x8000
/* 0052E8 800046E8 240F007F */ li $t7, 127
/* 0052EC 800046EC AFAF0014 */ sw $t7, 0x14($sp)
/* 0052F0 800046F0 24C64530 */ addiu $a2, %lo(thread9_crash_screen) # addiu $a2, $a2, 0x4530
/* 0052F4 800046F4 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790
/* 0052F8 800046F8 AFAE0010 */ sw $t6, 0x10($sp)
/* 0052FC 800046FC 24050009 */ li $a1, 9
/* 005300 80004700 0C032FDC */ jal osCreateThread
/* 005304 80004704 00003825 */ move $a3, $zero
/* 005308 80004708 8FBF001C */ lw $ra, 0x1c($sp)
/* 00530C 8000470C 27BD0020 */ addiu $sp, $sp, 0x20
/* 005310 80004710 03E00008 */ jr $ra
/* 005314 80004714 00000000 */ nop
glabel start_debug_thread
/* 005318 80004718 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 00531C 8000471C AFBF0014 */ sw $ra, 0x14($sp)
/* 005320 80004720 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016
/* 005324 80004724 0C0330D8 */ jal osStartThread
/* 005328 80004728 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790
/* 00532C 8000472C 8FBF0014 */ lw $ra, 0x14($sp)
/* 005330 80004730 27BD0018 */ addiu $sp, $sp, 0x18
/* 005334 80004734 03E00008 */ jr $ra
/* 005338 80004738 00000000 */ nop
/* 00533C 8000473C 00000000 */ nop