mk64/asm/code_80004EF0.s

1205 lines
62 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_80004EF0
/* 005AF0 80004EF0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 005AF4 80004EF4 3C028016 */ lui $v0, %hi(D_80162DA4) # $v0, 0x8016
/* 005AF8 80004EF8 3C0E802D */ lui $t6, 0x802d
/* 005AFC 80004EFC 24422DA4 */ addiu $v0, %lo(D_80162DA4) # addiu $v0, $v0, 0x2da4
/* 005B00 80004F00 AFBF0024 */ sw $ra, 0x24($sp)
/* 005B04 80004F04 25C42B80 */ addiu $a0, $t6, 0x2b80
/* 005B08 80004F08 AC440000 */ sw $a0, ($v0)
/* 005B0C 80004F0C 0C0336E0 */ jal osInvalDCache
/* 005B10 80004F10 24054000 */ li $a1, 16384
/* 005B14 80004F14 3C0F8016 */ lui $t7, %hi(D_80162DC4) # $t7, 0x8016
/* 005B18 80004F18 8DEF2DC4 */ lw $t7, %lo(D_80162DC4)($t7)
/* 005B1C 80004F1C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* 005B20 80004F20 3C088016 */ lui $t0, %hi(D_80162DA4) # $t0, 0x8016
/* 005B24 80004F24 8D082DA4 */ lw $t0, %lo(D_80162DA4)($t0)
/* 005B28 80004F28 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 005B2C 80004F2C 3C190014 */ lui $t9, %hi(_kart_texturesSegmentRomStart) # $t9, 0x14
/* 005B30 80004F30 3C0A8015 */ lui $t2, %hi(D_8014EF58) # $t2, 0x8015
/* 005B34 80004F34 254AEF58 */ addiu $t2, %lo(D_8014EF58) # addiu $t2, $t2, -0x10a8
/* 005B38 80004F38 27395470 */ addiu $t9, %lo(_kart_texturesSegmentRomStart) # addiu $t9, $t9, 0x5470
/* 005B3C 80004F3C 3C048015 */ lui $a0, %hi(D_8014F0A0) # $a0, 0x8015
/* 005B40 80004F40 24094000 */ li $t1, 16384
/* 005B44 80004F44 01E1C024 */ and $t8, $t7, $at
/* 005B48 80004F48 03193821 */ addu $a3, $t8, $t9
/* 005B4C 80004F4C AFA90014 */ sw $t1, 0x14($sp)
/* 005B50 80004F50 2484F0A0 */ addiu $a0, %lo(D_8014F0A0) # addiu $a0, $a0, -0xf60
/* 005B54 80004F54 AFAA0018 */ sw $t2, 0x18($sp)
/* 005B58 80004F58 00002825 */ move $a1, $zero
/* 005B5C 80004F5C 00003025 */ move $a2, $zero
/* 005B60 80004F60 0C03370C */ jal osPiStartDma
/* 005B64 80004F64 AFA80010 */ sw $t0, 0x10($sp)
/* 005B68 80004F68 3C048015 */ lui $a0, %hi(D_8014EF58) # $a0, 0x8015
/* 005B6C 80004F6C 3C058015 */ lui $a1, %hi(D_8014F098) # $a1, 0x8015
/* 005B70 80004F70 24A5F098 */ addiu $a1, %lo(D_8014F098) # addiu $a1, $a1, -0xf68
/* 005B74 80004F74 2484EF58 */ addiu $a0, %lo(D_8014EF58) # addiu $a0, $a0, -0x10a8
/* 005B78 80004F78 0C0335D4 */ jal osRecvMesg
/* 005B7C 80004F7C 24060001 */ li $a2, 1
/* 005B80 80004F80 3C0B8016 */ lui $t3, %hi(D_80162DA4) # $t3, 0x8016
/* 005B84 80004F84 8D6B2DA4 */ lw $t3, %lo(D_80162DA4)($t3)
/* 005B88 80004F88 3C0100FF */ lui $at, 0xff
/* 005B8C 80004F8C 8FBF0024 */ lw $ra, 0x24($sp)
/* 005B90 80004F90 8D6C0000 */ lw $t4, ($t3)
/* 005B94 80004F94 27BD0028 */ addiu $sp, $sp, 0x28
/* 005B98 80004F98 01816824 */ and $t5, $t4, $at
/* 005B9C 80004F9C 3C018016 */ lui $at, %hi(D_80162D9C) # $at, 0x8016
/* 005BA0 80004FA0 AC2D2D9C */ sw $t5, %lo(D_80162D9C)($at)
/* 005BA4 80004FA4 3C018016 */ lui $at, 0x8016
/* 005BA8 80004FA8 03E00008 */ jr $ra
/* 005BAC 80004FAC A4202DA0 */ sh $zero, 0x2da0($at)
glabel func_80004FB0
/* 005BB0 80004FB0 3C0E8016 */ lui $t6, %hi(D_80162DD0) # $t6, 0x8016
/* 005BB4 80004FB4 8DCE2DD0 */ lw $t6, %lo(D_80162DD0)($t6)
/* 005BB8 80004FB8 3C19802C */ lui $t9, %hi(D_802BFB80) # $t9, 0x802c
/* 005BBC 80004FBC 3C028016 */ lui $v0, %hi(D_80162DB4) # $v0, 0x8016
/* 005BC0 80004FC0 000E7BC0 */ sll $t7, $t6, 0xf
/* 005BC4 80004FC4 25F83000 */ addiu $t8, $t7, 0x3000
/* 005BC8 80004FC8 2739FB80 */ addiu $t9, %lo(D_802BFB80) # addiu $t9, $t9, -0x480
/* 005BCC 80004FCC 24422DB4 */ addiu $v0, %lo(D_80162DB4) # addiu $v0, $v0, 0x2db4
/* 005BD0 80004FD0 03194021 */ addu $t0, $t8, $t9
/* 005BD4 80004FD4 AC480000 */ sw $t0, ($v0)
/* 005BD8 80004FD8 8D0A0000 */ lw $t2, ($t0)
/* 005BDC 80004FDC 3C0100FF */ lui $at, 0xff
/* 005BE0 80004FE0 01415824 */ and $t3, $t2, $at
/* 005BE4 80004FE4 3C018016 */ lui $at, %hi(D_80162DAC) # $at, 0x8016
/* 005BE8 80004FE8 AC2B2DAC */ sw $t3, %lo(D_80162DAC)($at)
/* 005BEC 80004FEC 3C018016 */ lui $at, 0x8016
/* 005BF0 80004FF0 03E00008 */ jr $ra
/* 005BF4 80004FF4 A4202DB0 */ sh $zero, 0x2db0($at)
glabel func_80004FF8
/* 005BF8 80004FF8 3C0E8016 */ lui $t6, %hi(D_80162DC8) # $t6, 0x8016
/* 005BFC 80004FFC 8DCE2DC8 */ lw $t6, %lo(D_80162DC8)($t6)
/* 005C00 80005000 3C19802C */ lui $t9, %hi(D_802BFB80) # $t9, 0x802c
/* 005C04 80005004 3C028016 */ lui $v0, %hi(D_80162D94) # $v0, 0x8016
/* 005C08 80005008 000E7BC0 */ sll $t7, $t6, 0xf
/* 005C0C 8000500C 25F83000 */ addiu $t8, $t7, 0x3000
/* 005C10 80005010 2739FB80 */ addiu $t9, %lo(D_802BFB80) # addiu $t9, $t9, -0x480
/* 005C14 80005014 24422D94 */ addiu $v0, %lo(D_80162D94) # addiu $v0, $v0, 0x2d94
/* 005C18 80005018 03194021 */ addu $t0, $t8, $t9
/* 005C1C 8000501C AC480000 */ sw $t0, ($v0)
/* 005C20 80005020 8D0A0000 */ lw $t2, ($t0)
/* 005C24 80005024 3C0100FF */ lui $at, 0xff
/* 005C28 80005028 01415824 */ and $t3, $t2, $at
/* 005C2C 8000502C 3C018016 */ lui $at, %hi(D_80162D8C) # $at, 0x8016
/* 005C30 80005030 AC2B2D8C */ sw $t3, %lo(D_80162D8C)($at)
/* 005C34 80005034 3C018016 */ lui $at, 0x8016
/* 005C38 80005038 03E00008 */ jr $ra
/* 005C3C 8000503C A4202D90 */ sh $zero, 0x2d90($at)
glabel func_80005040
/* 005C40 80005040 3C02800E */ lui $v0, %hi(gCurrentCourseId) # $v0, 0x800e
/* 005C44 80005044 8442C5A0 */ lh $v0, %lo(gCurrentCourseId)($v0)
/* 005C48 80005048 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 005C4C 8000504C AFBF0014 */ sw $ra, 0x14($sp)
/* 005C50 80005050 10400007 */ beqz $v0, .L80005070
/* 005C54 80005054 24010007 */ li $at, 7
/* 005C58 80005058 1041001E */ beq $v0, $at, .L800050D4
/* 005C5C 8000505C 24010008 */ li $at, 8
/* 005C60 80005060 10410036 */ beq $v0, $at, .L8000513C
/* 005C64 80005064 24080001 */ li $t0, 1
/* 005C68 80005068 1000004E */ b .L800051A4
/* 005C6C 8000506C 3C018016 */ lui $at, 0x8016
.L80005070:
/* 005C70 80005070 0C02D389 */ jal func_800B4E24
/* 005C74 80005074 00002025 */ move $a0, $zero
/* 005C78 80005078 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf
/* 005C7C 8000507C 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 005C80 80005080 00417024 */ and $t6, $v0, $at
/* 005C84 80005084 2DC12329 */ sltiu $at, $t6, 0x2329
/* 005C88 80005088 10200006 */ beqz $at, .L800050A4
/* 005C8C 8000508C 3C190F50 */ lui $t9, %hi(D_0F4F8E10) # $t9, 0xf50
/* 005C90 80005090 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005C94 80005094 A4202DD6 */ sh $zero, %lo(D_80162DD6)($at)
/* 005C98 80005098 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005C9C 8000509C 10000007 */ b .L800050BC
/* 005CA0 800050A0 AC202DF4 */ sw $zero, %lo(D_80162DF4)($at)
.L800050A4:
/* 005CA4 800050A4 240F0001 */ li $t7, 1
/* 005CA8 800050A8 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005CAC 800050AC A42F2DD6 */ sh $t7, %lo(D_80162DD6)($at)
/* 005CB0 800050B0 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005CB4 800050B4 24180001 */ li $t8, 1
/* 005CB8 800050B8 AC382DF4 */ sw $t8, %lo(D_80162DF4)($at)
.L800050BC:
/* 005CBC 800050BC 27398E10 */ addiu $t9, %lo(D_0F4F8E10) # addiu $t9, $t9, -0x71f0
/* 005CC0 800050C0 3C018016 */ lui $at, %hi(D_80162DC4) # $at, 0x8016
/* 005CC4 800050C4 AC392DC4 */ sw $t9, %lo(D_80162DC4)($at)
/* 005CC8 800050C8 3C018016 */ lui $at, %hi(D_80162DE4) # $at, 0x8016
/* 005CCC 800050CC 10000039 */ b .L800051B4
/* 005CD0 800050D0 AC202DE4 */ sw $zero, %lo(D_80162DE4)($at)
.L800050D4:
/* 005CD4 800050D4 0C02D389 */ jal func_800B4E24
/* 005CD8 800050D8 00002025 */ move $a0, $zero
/* 005CDC 800050DC 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf
/* 005CE0 800050E0 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 005CE4 800050E4 00414024 */ and $t0, $v0, $at
/* 005CE8 800050E8 2D013E81 */ sltiu $at, $t0, 0x3e81
/* 005CEC 800050EC 10200006 */ beqz $at, .L80005108
/* 005CF0 800050F0 3C0B0F50 */ lui $t3, %hi(D_0F4FAD04) # $t3, 0xf50
/* 005CF4 800050F4 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005CF8 800050F8 A4202DD6 */ sh $zero, %lo(D_80162DD6)($at)
/* 005CFC 800050FC 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005D00 80005100 10000007 */ b .L80005120
/* 005D04 80005104 AC202DF4 */ sw $zero, %lo(D_80162DF4)($at)
.L80005108:
/* 005D08 80005108 24090001 */ li $t1, 1
/* 005D0C 8000510C 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005D10 80005110 A4292DD6 */ sh $t1, %lo(D_80162DD6)($at)
/* 005D14 80005114 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005D18 80005118 240A0001 */ li $t2, 1
/* 005D1C 8000511C AC2A2DF4 */ sw $t2, %lo(D_80162DF4)($at)
.L80005120:
/* 005D20 80005120 256BAD04 */ addiu $t3, %lo(D_0F4FAD04) # addiu $t3, $t3, -0x52fc
/* 005D24 80005124 3C018016 */ lui $at, %hi(D_80162DC4) # $at, 0x8016
/* 005D28 80005128 AC2B2DC4 */ sw $t3, %lo(D_80162DC4)($at)
/* 005D2C 8000512C 3C018016 */ lui $at, %hi(D_80162DE4) # $at, 0x8016
/* 005D30 80005130 240C0006 */ li $t4, 6
/* 005D34 80005134 1000001F */ b .L800051B4
/* 005D38 80005138 AC2C2DE4 */ sw $t4, %lo(D_80162DE4)($at)
.L8000513C:
/* 005D3C 8000513C 0C02D389 */ jal func_800B4E24
/* 005D40 80005140 00002025 */ move $a0, $zero
/* 005D44 80005144 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf
/* 005D48 80005148 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 005D4C 8000514C 00416824 */ and $t5, $v0, $at
/* 005D50 80005150 2DA12BC1 */ sltiu $at, $t5, 0x2bc1
/* 005D54 80005154 10200006 */ beqz $at, .L80005170
/* 005D58 80005158 3C180F50 */ lui $t8, %hi(D_0F4F9CAC) # $t8, 0xf50
/* 005D5C 8000515C 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005D60 80005160 A4202DD6 */ sh $zero, %lo(D_80162DD6)($at)
/* 005D64 80005164 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005D68 80005168 10000007 */ b .L80005188
/* 005D6C 8000516C AC202DF4 */ sw $zero, %lo(D_80162DF4)($at)
.L80005170:
/* 005D70 80005170 240E0001 */ li $t6, 1
/* 005D74 80005174 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005D78 80005178 A42E2DD6 */ sh $t6, %lo(D_80162DD6)($at)
/* 005D7C 8000517C 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005D80 80005180 240F0001 */ li $t7, 1
/* 005D84 80005184 AC2F2DF4 */ sw $t7, %lo(D_80162DF4)($at)
.L80005188:
/* 005D88 80005188 27189CAC */ addiu $t8, %lo(D_0F4F9CAC) # addiu $t8, $t8, -0x6354
/* 005D8C 8000518C 3C018016 */ lui $at, %hi(D_80162DC4) # $at, 0x8016
/* 005D90 80005190 AC382DC4 */ sw $t8, %lo(D_80162DC4)($at)
/* 005D94 80005194 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016
/* 005D98 80005198 24190001 */ li $t9, 1
/* 005D9C 8000519C 10000005 */ b .L800051B4
/* 005DA0 800051A0 AC392DE4 */ sw $t9, %lo(D_80162DE4)($at)
.L800051A4:
/* 005DA4 800051A4 A4282DD6 */ sh $t0, %lo(D_80162DD6)($at)
/* 005DA8 800051A8 3C018016 */ lui $at, %hi(D_80162DF4) # $at, 0x8016
/* 005DAC 800051AC 24090001 */ li $t1, 1
/* 005DB0 800051B0 AC292DF4 */ sw $t1, %lo(D_80162DF4)($at)
.L800051B4:
/* 005DB4 800051B4 8FBF0014 */ lw $ra, 0x14($sp)
/* 005DB8 800051B8 27BD0018 */ addiu $sp, $sp, 0x18
/* 005DBC 800051BC 03E00008 */ jr $ra
/* 005DC0 800051C0 00000000 */ nop
glabel func_800051C4
/* 005DC4 800051C4 3C028016 */ lui $v0, %hi(D_80162D84) # $v0, 0x8016
/* 005DC8 800051C8 84422D84 */ lh $v0, %lo(D_80162D84)($v0)
/* 005DCC 800051CC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 005DD0 800051D0 AFBF0014 */ sw $ra, 0x14($sp)
/* 005DD4 800051D4 10400011 */ beqz $v0, .L8000521C
/* 005DD8 800051D8 3C048016 */ lui $a0, %hi(D_80162D80) # $a0, 0x8016
/* 005DDC 800051DC 00022880 */ sll $a1, $v0, 2
/* 005DE0 800051E0 3C06800E */ lui $a2, %hi(D_800DC710) # $a2, 0x800e
/* 005DE4 800051E4 8CC6C710 */ lw $a2, %lo(D_800DC710)($a2)
/* 005DE8 800051E8 24A50020 */ addiu $a1, $a1, 0x20
/* 005DEC 800051EC 0C01005D */ jal func_80040174
/* 005DF0 800051F0 8C842D80 */ lw $a0, %lo(D_80162D80)($a0)
/* 005DF4 800051F4 3C058016 */ lui $a1, %hi(D_80162D84) # $a1, 0x8016
/* 005DF8 800051F8 84A52D84 */ lh $a1, %lo(D_80162D84)($a1)
/* 005DFC 800051FC 3C04800E */ lui $a0, %hi(D_800DC710) # $a0, 0x800e
/* 005E00 80005200 3C06800E */ lui $a2, %hi(D_800DC714) # $a2, 0x800e
/* 005E04 80005204 00057080 */ sll $t6, $a1, 2
/* 005E08 80005208 25C50020 */ addiu $a1, $t6, 0x20
/* 005E0C 8000520C 8CC6C714 */ lw $a2, %lo(D_800DC714)($a2)
/* 005E10 80005210 0C010130 */ jal mio0encode
/* 005E14 80005214 8C84C710 */ lw $a0, %lo(D_800DC710)($a0)
/* 005E18 80005218 2442001E */ addiu $v0, $v0, 0x1e
.L8000521C:
/* 005E1C 8000521C 8FBF0014 */ lw $ra, 0x14($sp)
/* 005E20 80005220 27BD0018 */ addiu $sp, $sp, 0x18
/* 005E24 80005224 03E00008 */ jr $ra
/* 005E28 80005228 00000000 */ nop
glabel func_8000522C
/* 005E2C 8000522C 3C0E8016 */ lui $t6, %hi(D_80162DC8) # $t6, 0x8016
/* 005E30 80005230 8DCE2DC8 */ lw $t6, %lo(D_80162DC8)($t6)
/* 005E34 80005234 3C19802C */ lui $t9, %hi(D_802BFB80) # $t9, 0x802c
/* 005E38 80005238 3C028016 */ lui $v0, %hi(D_80162D94) # $v0, 0x8016
/* 005E3C 8000523C 000E7BC0 */ sll $t7, $t6, 0xf
/* 005E40 80005240 25F83000 */ addiu $t8, $t7, 0x3000
/* 005E44 80005244 2739FB80 */ addiu $t9, %lo(D_802BFB80) # addiu $t9, $t9, -0x480
/* 005E48 80005248 24422D94 */ addiu $v0, %lo(D_80162D94) # addiu $v0, $v0, 0x2d94
/* 005E4C 8000524C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 005E50 80005250 03192821 */ addu $a1, $t8, $t9
/* 005E54 80005254 AFBF0014 */ sw $ra, 0x14($sp)
/* 005E58 80005258 AC450000 */ sw $a1, ($v0)
/* 005E5C 8000525C 3C04800E */ lui $a0, %hi(D_800DC714) # $a0, 0x800e
/* 005E60 80005260 0C010034 */ jal mio0decode
/* 005E64 80005264 8C84C714 */ lw $a0, %lo(D_800DC714)($a0)
/* 005E68 80005268 3C098016 */ lui $t1, %hi(D_80162D94) # $t1, 0x8016
/* 005E6C 8000526C 8D292D94 */ lw $t1, %lo(D_80162D94)($t1)
/* 005E70 80005270 3C0100FF */ lui $at, 0xff
/* 005E74 80005274 8FBF0014 */ lw $ra, 0x14($sp)
/* 005E78 80005278 8D2A0000 */ lw $t2, ($t1)
/* 005E7C 8000527C 240C0001 */ li $t4, 1
/* 005E80 80005280 27BD0018 */ addiu $sp, $sp, 0x18
/* 005E84 80005284 01415824 */ and $t3, $t2, $at
/* 005E88 80005288 3C018016 */ lui $at, %hi(D_80162D8C) # $at, 0x8016
/* 005E8C 8000528C AC2B2D8C */ sw $t3, %lo(D_80162D8C)($at)
/* 005E90 80005290 3C018016 */ lui $at, %hi(D_80162D90) # $at, 0x8016
/* 005E94 80005294 A4202D90 */ sh $zero, %lo(D_80162D90)($at)
/* 005E98 80005298 3C018016 */ lui $at, 0x8016
/* 005E9C 8000529C 03E00008 */ jr $ra
/* 005EA0 800052A0 AC2C2E00 */ sw $t4, 0x2e00($at)
glabel func_800052A4
/* 005EA4 800052A4 3C038016 */ lui $v1, %hi(D_80162DC8) # $v1, 0x8016
/* 005EA8 800052A8 24632DC8 */ addiu $v1, %lo(D_80162DC8) # addiu $v1, $v1, 0x2dc8
/* 005EAC 800052AC 8C6E0000 */ lw $t6, ($v1)
/* 005EB0 800052B0 24020001 */ li $v0, 1
/* 005EB4 800052B4 3C08802C */ lui $t0, %hi(D_802BFB80) # $t0, 0x802c
/* 005EB8 800052B8 144E0005 */ bne $v0, $t6, .L800052D0
/* 005EBC 800052BC 2508FB80 */ addiu $t0, %lo(D_802BFB80) # addiu $t0, $t0, -0x480
/* 005EC0 800052C0 AC600000 */ sw $zero, ($v1)
/* 005EC4 800052C4 3C018016 */ lui $at, %hi(D_80162DCC) # $at, 0x8016
/* 005EC8 800052C8 10000004 */ b .L800052DC
/* 005ECC 800052CC AC222DCC */ sw $v0, %lo(D_80162DCC)($at)
.L800052D0:
/* 005ED0 800052D0 AC620000 */ sw $v0, ($v1)
/* 005ED4 800052D4 3C018016 */ lui $at, %hi(D_80162DCC) # $at, 0x8016
/* 005ED8 800052D8 AC202DCC */ sw $zero, %lo(D_80162DCC)($at)
.L800052DC:
/* 005EDC 800052DC 8C6F0000 */ lw $t7, ($v1)
/* 005EE0 800052E0 3C028016 */ lui $v0, %hi(D_80162DB8) # $v0, 0x8016
/* 005EE4 800052E4 84422DB8 */ lh $v0, %lo(D_80162DB8)($v0)
/* 005EE8 800052E8 000FC3C0 */ sll $t8, $t7, 0xf
/* 005EEC 800052EC 27193000 */ addiu $t9, $t8, 0x3000
/* 005EF0 800052F0 03284821 */ addu $t1, $t9, $t0
/* 005EF4 800052F4 3C018016 */ lui $at, %hi(D_80162D80) # $at, 0x8016
/* 005EF8 800052F8 AC292D80 */ sw $t1, %lo(D_80162D80)($at)
/* 005EFC 800052FC 3C018016 */ lui $at, %hi(D_80162D84) # $at, 0x8016
/* 005F00 80005300 A4222D84 */ sh $v0, %lo(D_80162D84)($at)
/* 005F04 80005304 3C018016 */ lui $at, 0x8016
/* 005F08 80005308 03E00008 */ jr $ra
/* 005F0C 8000530C A4222D86 */ sh $v0, 0x2d86($at)
glabel func_80005310
/* 005F10 80005310 3C0E800E */ lui $t6, %hi(gModeSelection) # $t6, 0x800e
/* 005F14 80005314 8DCEC53C */ lw $t6, %lo(gModeSelection)($t6)
/* 005F18 80005318 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 005F1C 8000531C 24030001 */ li $v1, 1
/* 005F20 80005320 146E004E */ bne $v1, $t6, .L8000545C
/* 005F24 80005324 AFBF0014 */ sw $ra, 0x14($sp)
/* 005F28 80005328 0C001410 */ jal func_80005040
/* 005F2C 8000532C 00000000 */ nop
/* 005F30 80005330 3C048016 */ lui $a0, %hi(D_80162DC0) # $a0, 0x8016
/* 005F34 80005334 24842DC0 */ addiu $a0, %lo(D_80162DC0) # addiu $a0, $a0, 0x2dc0
/* 005F38 80005338 3C02800E */ lui $v0, %hi(gCurrentCourseId) # $v0, 0x800e
/* 005F3C 8000533C 8442C5A0 */ lh $v0, %lo(gCurrentCourseId)($v0)
/* 005F40 80005340 948F0000 */ lhu $t7, ($a0)
/* 005F44 80005344 24030001 */ li $v1, 1
/* 005F48 80005348 24180001 */ li $t8, 1
/* 005F4C 8000534C 104F0003 */ beq $v0, $t7, .L8000535C
/* 005F50 80005350 3C19800E */ lui $t9, %hi(gModeSelection) # $t9, 0x800e
/* 005F54 80005354 3C018016 */ lui $at, %hi(D_80162DD4) # $at, 0x8016
/* 005F58 80005358 A4382DD4 */ sh $t8, %lo(D_80162DD4)($at)
.L8000535C:
/* 005F5C 8000535C A4820000 */ sh $v0, ($a0)
/* 005F60 80005360 3C018016 */ lui $at, %hi(D_80162DF0) # $at, 0x8016
/* 005F64 80005364 AC202DF0 */ sw $zero, %lo(D_80162DF0)($at)
/* 005F68 80005368 8F39C53C */ lw $t9, %lo(gModeSelection)($t9)
/* 005F6C 8000536C 3C018016 */ lui $at, %hi(D_80162DEC) # $at, 0x8016
/* 005F70 80005370 AC202DEC */ sw $zero, %lo(D_80162DEC)($at)
/* 005F74 80005374 3C018016 */ lui $at, %hi(D_80162DF8) # $at, 0x8016
/* 005F78 80005378 14790038 */ bne $v1, $t9, .L8000545C
/* 005F7C 8000537C AC202DF8 */ sw $zero, %lo(D_80162DF8)($at)
/* 005F80 80005380 3C08800E */ lui $t0, %hi(D_800DC52C) # $t0, 0x800e
/* 005F84 80005384 8D08C52C */ lw $t0, %lo(D_800DC52C)($t0)
/* 005F88 80005388 3C098016 */ lui $t1, %hi(D_8015F890) # $t1, 0x8016
/* 005F8C 8000538C 55000034 */ bnel $t0, $zero, .L80005460
/* 005F90 80005390 8FBF0014 */ lw $ra, 0x14($sp)
/* 005F94 80005394 9529F890 */ lhu $t1, %lo(D_8015F890)($t1)
/* 005F98 80005398 3C028016 */ lui $v0, %hi(D_80162DBC) # $v0, 0x8016
/* 005F9C 8000539C 24422DBC */ addiu $v0, %lo(D_80162DBC) # addiu $v0, $v0, 0x2dbc
/* 005FA0 800053A0 14690011 */ bne $v1, $t1, .L800053E8
/* 005FA4 800053A4 240C0001 */ li $t4, 1
/* 005FA8 800053A8 0C0013EC */ jal func_80004FB0
/* 005FAC 800053AC 00000000 */ nop
/* 005FB0 800053B0 3C0A8016 */ lui $t2, %hi(D_80162DD8) # $t2, 0x8016
/* 005FB4 800053B4 954A2DD8 */ lhu $t2, %lo(D_80162DD8)($t2)
/* 005FB8 800053B8 15400003 */ bnez $t2, .L800053C8
/* 005FBC 800053BC 00000000 */ nop
/* 005FC0 800053C0 0C0013FE */ jal func_80004FF8
/* 005FC4 800053C4 00000000 */ nop
.L800053C8:
/* 005FC8 800053C8 3C0B8016 */ lui $t3, %hi(D_80162DD6) # $t3, 0x8016
/* 005FCC 800053CC 956B2DD6 */ lhu $t3, %lo(D_80162DD6)($t3)
/* 005FD0 800053D0 55600023 */ bnel $t3, $zero, .L80005460
/* 005FD4 800053D4 8FBF0014 */ lw $ra, 0x14($sp)
/* 005FD8 800053D8 0C0013BC */ jal func_80004EF0
/* 005FDC 800053DC 00000000 */ nop
/* 005FE0 800053E0 1000001F */ b .L80005460
/* 005FE4 800053E4 8FBF0014 */ lw $ra, 0x14($sp)
.L800053E8:
/* 005FE8 800053E8 3C0D8016 */ lui $t5, %hi(D_80162DCC) # $t5, 0x8016
/* 005FEC 800053EC 8DAD2DCC */ lw $t5, %lo(D_80162DCC)($t5)
/* 005FF0 800053F0 3C018016 */ lui $at, %hi(D_80162DD8) # $at, 0x8016
/* 005FF4 800053F4 3C18802C */ lui $t8, %hi(D_802BFB80) # $t8, 0x802c
/* 005FF8 800053F8 000D73C0 */ sll $t6, $t5, 0xf
/* 005FFC 800053FC A42C2DD8 */ sh $t4, %lo(D_80162DD8)($at)
/* 006000 80005400 25CF3000 */ addiu $t7, $t6, 0x3000
/* 006004 80005404 2718FB80 */ addiu $t8, %lo(D_802BFB80) # addiu $t8, $t8, -0x480
/* 006008 80005408 01F8C821 */ addu $t9, $t7, $t8
/* 00600C 8000540C AC590000 */ sw $t9, ($v0)
/* 006010 80005410 2408FFFF */ li $t0, -1
/* 006014 80005414 AF280000 */ sw $t0, ($t9)
/* 006018 80005418 3C018016 */ lui $at, %hi(D_80162DB8) # $at, 0x8016
/* 00601C 8000541C A4202DB8 */ sh $zero, %lo(D_80162DB8)($at)
/* 006020 80005420 3C018016 */ lui $at, %hi(D_80162DDC) # $at, 0x8016
/* 006024 80005424 0C0247B9 */ jal func_80091EE4
/* 006028 80005428 AC202DDC */ sw $zero, %lo(D_80162DDC)($at)
/* 00602C 8000542C 3C0A8016 */ lui $t2, %hi(D_80162DD4) # $t2, 0x8016
/* 006030 80005430 954A2DD4 */ lhu $t2, %lo(D_80162DD4)($t2)
/* 006034 80005434 15400003 */ bnez $t2, .L80005444
/* 006038 80005438 00000000 */ nop
/* 00603C 8000543C 0C0013FE */ jal func_80004FF8
/* 006040 80005440 00000000 */ nop
.L80005444:
/* 006044 80005444 3C0B8016 */ lui $t3, %hi(D_80162DD6) # $t3, 0x8016
/* 006048 80005448 956B2DD6 */ lhu $t3, %lo(D_80162DD6)($t3)
/* 00604C 8000544C 55600004 */ bnel $t3, $zero, .L80005460
/* 006050 80005450 8FBF0014 */ lw $ra, 0x14($sp)
/* 006054 80005454 0C0013BC */ jal func_80004EF0
/* 006058 80005458 00000000 */ nop
.L8000545C:
/* 00605C 8000545C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005460:
/* 006060 80005460 27BD0018 */ addiu $sp, $sp, 0x18
/* 006064 80005464 03E00008 */ jr $ra
/* 006068 80005468 00000000 */ nop
glabel func_8000546C
/* 00606C 8000546C 3C088016 */ lui $t0, %hi(D_80162DB0) # $t0, 0x8016
/* 006070 80005470 25082DB0 */ addiu $t0, %lo(D_80162DB0) # addiu $t0, $t0, 0x2db0
/* 006074 80005474 85030000 */ lh $v1, ($t0)
/* 006078 80005478 3C098016 */ lui $t1, %hi(D_80162DB4) # $t1, 0x8016
/* 00607C 8000547C 00001025 */ move $v0, $zero
/* 006080 80005480 28611000 */ slti $at, $v1, 0x1000
/* 006084 80005484 14200006 */ bnez $at, .L800054A0
/* 006088 80005488 25292DB4 */ addiu $t1, %lo(D_80162DB4) # addiu $t1, $t1, 0x2db4
/* 00608C 8000548C 3C0F800E */ lui $t7, %hi(D_800DC4DC) # $t7, 0x800e
/* 006090 80005490 8DEFC4DC */ lw $t7, %lo(D_800DC4DC)($t7)
/* 006094 80005494 240E3800 */ li $t6, 14336
/* 006098 80005498 03E00008 */ jr $ra
/* 00609C 8000549C A5EE0000 */ sh $t6, ($t7)
.L800054A0:
/* 0060A0 800054A0 8D380000 */ lw $t8, ($t1)
/* 0060A4 800054A4 0003C880 */ sll $t9, $v1, 2
/* 0060A8 800054A8 3C0A800E */ lui $t2, %hi(D_800DC4D8) # $t2, 0x800e
/* 0060AC 800054AC 03196821 */ addu $t5, $t8, $t9
/* 0060B0 800054B0 8DA40000 */ lw $a0, ($t5)
/* 0060B4 800054B4 3C0B8016 */ lui $t3, %hi(D_80162DA8) # $t3, 0x8016
/* 0060B8 800054B8 254AC4D8 */ addiu $t2, %lo(D_800DC4D8) # addiu $t2, $t2, -0x3b28
/* 0060BC 800054BC 308500FF */ andi $a1, $a0, 0xff
/* 0060C0 800054C0 2CA10080 */ sltiu $at, $a1, 0x80
/* 0060C4 800054C4 10200005 */ beqz $at, .L800054DC
/* 0060C8 800054C8 256B2DA8 */ addiu $t3, %lo(D_80162DA8) # addiu $t3, $t3, 0x2da8
/* 0060CC 800054CC 30A300FF */ andi $v1, $a1, 0xff
/* 0060D0 800054D0 00037400 */ sll $t6, $v1, 0x10
/* 0060D4 800054D4 10000005 */ b .L800054EC
/* 0060D8 800054D8 000E1C03 */ sra $v1, $t6, 0x10
.L800054DC:
/* 0060DC 800054DC 2401FF00 */ li $at, -256
/* 0060E0 800054E0 00A11825 */ or $v1, $a1, $at
/* 0060E4 800054E4 0003C400 */ sll $t8, $v1, 0x10
/* 0060E8 800054E8 00181C03 */ sra $v1, $t8, 0x10
.L800054EC:
/* 0060EC 800054EC 3085FF00 */ andi $a1, $a0, 0xff00
/* 0060F0 800054F0 8D4D0000 */ lw $t5, ($t2)
/* 0060F4 800054F4 00057202 */ srl $t6, $a1, 8
/* 0060F8 800054F8 2DC10080 */ sltiu $at, $t6, 0x80
/* 0060FC 800054FC 01C02825 */ move $a1, $t6
/* 006100 80005500 10200005 */ beqz $at, .L80005518
/* 006104 80005504 A5A30000 */ sh $v1, ($t5)
/* 006108 80005508 31C300FF */ andi $v1, $t6, 0xff
/* 00610C 8000550C 00037C00 */ sll $t7, $v1, 0x10
/* 006110 80005510 10000005 */ b .L80005528
/* 006114 80005514 000F1C03 */ sra $v1, $t7, 0x10
.L80005518:
/* 006118 80005518 2401FF00 */ li $at, -256
/* 00611C 8000551C 00A11825 */ or $v1, $a1, $at
/* 006120 80005520 0003CC00 */ sll $t9, $v1, 0x10
/* 006124 80005524 00191C03 */ sra $v1, $t9, 0x10
.L80005528:
/* 006128 80005528 8D4E0000 */ lw $t6, ($t2)
/* 00612C 8000552C 00047800 */ sll $t7, $a0, 0
/* 006130 80005530 05E10002 */ bgez $t7, .L8000553C
/* 006134 80005534 A5C30002 */ sh $v1, 2($t6)
/* 006138 80005538 24028000 */ li $v0, -32768
.L8000553C:
/* 00613C 8000553C 0004C040 */ sll $t8, $a0, 1
/* 006140 80005540 07010004 */ bgez $t8, .L80005554
/* 006144 80005544 00047880 */ sll $t7, $a0, 2
/* 006148 80005548 34594000 */ ori $t9, $v0, 0x4000
/* 00614C 8000554C 00196C00 */ sll $t5, $t9, 0x10
/* 006150 80005550 000D1403 */ sra $v0, $t5, 0x10
.L80005554:
/* 006154 80005554 05E10004 */ bgez $t7, .L80005568
/* 006158 80005558 000470C0 */ sll $t6, $a0, 3
/* 00615C 8000555C 34582000 */ ori $t8, $v0, 0x2000
/* 006160 80005560 0018CC00 */ sll $t9, $t8, 0x10
/* 006164 80005564 00191403 */ sra $v0, $t9, 0x10
.L80005568:
/* 006168 80005568 05C10003 */ bgez $t6, .L80005578
/* 00616C 8000556C 344F0010 */ ori $t7, $v0, 0x10
/* 006170 80005570 000FC400 */ sll $t8, $t7, 0x10
/* 006174 80005574 00181403 */ sra $v0, $t8, 0x10
.L80005578:
/* 006178 80005578 8D430000 */ lw $v1, ($t2)
/* 00617C 8000557C 956F0000 */ lhu $t7, ($t3)
/* 006180 80005580 3C0C8016 */ lui $t4, %hi(D_80162DAC) # $t4, 0x8016
/* 006184 80005584 94640006 */ lhu $a0, 6($v1)
/* 006188 80005588 004FC026 */ xor $t8, $v0, $t7
/* 00618C 8000558C 0058C824 */ and $t9, $v0, $t8
/* 006190 80005590 308E1F0F */ andi $t6, $a0, 0x1f0f
/* 006194 80005594 032E6825 */ or $t5, $t9, $t6
/* 006198 80005598 A46D0006 */ sh $t5, 6($v1)
/* 00619C 8000559C 8D430000 */ lw $v1, ($t2)
/* 0061A0 800055A0 95650000 */ lhu $a1, ($t3)
/* 0061A4 800055A4 258C2DAC */ addiu $t4, %lo(D_80162DAC) # addiu $t4, $t4, 0x2dac
/* 0061A8 800055A8 94640008 */ lhu $a0, 8($v1)
/* 0061AC 800055AC 0045C026 */ xor $t8, $v0, $a1
/* 0061B0 800055B0 00B8C824 */ and $t9, $a1, $t8
/* 0061B4 800055B4 308F1F0F */ andi $t7, $a0, 0x1f0f
/* 0061B8 800055B8 032F6825 */ or $t5, $t9, $t7
/* 0061BC 800055BC A46D0008 */ sh $t5, 8($v1)
/* 0061C0 800055C0 8D4E0000 */ lw $t6, ($t2)
/* 0061C4 800055C4 A5620000 */ sh $v0, ($t3)
/* 0061C8 800055C8 A5C20004 */ sh $v0, 4($t6)
/* 0061CC 800055CC 8D870000 */ lw $a3, ($t4)
/* 0061D0 800055D0 54E0000E */ bnel $a3, $zero, .L8000560C
/* 0061D4 800055D4 3C01FFFF */ lui $at, 0xffff
/* 0061D8 800055D8 850F0000 */ lh $t7, ($t0)
/* 0061DC 800055DC 8D390000 */ lw $t9, ($t1)
/* 0061E0 800055E0 3C0100FF */ lui $at, 0xff
/* 0061E4 800055E4 25F80001 */ addiu $t8, $t7, 1
/* 0061E8 800055E8 A5180000 */ sh $t8, ($t0)
/* 0061EC 800055EC 850D0000 */ lh $t5, ($t0)
/* 0061F0 800055F0 000D7080 */ sll $t6, $t5, 2
/* 0061F4 800055F4 032E7821 */ addu $t7, $t9, $t6
/* 0061F8 800055F8 8DF80000 */ lw $t8, ($t7)
/* 0061FC 800055FC 03016824 */ and $t5, $t8, $at
/* 006200 80005600 03E00008 */ jr $ra
/* 006204 80005604 AD8D0000 */ sw $t5, ($t4)
/* 006208 80005608 3C01FFFF */ lui $at, 0xffff
.L8000560C:
/* 00620C 8000560C 00E1C821 */ addu $t9, $a3, $at
/* 006210 80005610 AD990000 */ sw $t9, ($t4)
/* 006214 80005614 03E00008 */ jr $ra
/* 006218 80005618 00000000 */ nop
glabel func_8000561C
/* 00621C 8000561C 3C0B8016 */ lui $t3, %hi(D_80162DA0) # $t3, 0x8016
/* 006220 80005620 256B2DA0 */ addiu $t3, %lo(D_80162DA0) # addiu $t3, $t3, 0x2da0
/* 006224 80005624 85630000 */ lh $v1, ($t3)
/* 006228 80005628 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 00622C 8000562C AFBF0014 */ sw $ra, 0x14($sp)
/* 006230 80005630 28611000 */ slti $at, $v1, 0x1000
/* 006234 80005634 14200006 */ bnez $at, .L80005650
/* 006238 80005638 00003025 */ move $a2, $zero
/* 00623C 8000563C 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 006240 80005640 0C0016BA */ jal func_80005AE8
/* 006244 80005644 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
/* 006248 80005648 10000061 */ b .L800057D0
/* 00624C 8000564C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005650:
/* 006250 80005650 3C0C8016 */ lui $t4, %hi(D_80162DA4) # $t4, 0x8016
/* 006254 80005654 258C2DA4 */ addiu $t4, %lo(D_80162DA4) # addiu $t4, $t4, 0x2da4
/* 006258 80005658 8D8E0000 */ lw $t6, ($t4)
/* 00625C 8000565C 00037880 */ sll $t7, $v1, 2
/* 006260 80005660 3C09800E */ lui $t1, %hi(D_800DC4D4) # $t1, 0x800e
/* 006264 80005664 01CFC021 */ addu $t8, $t6, $t7
/* 006268 80005668 8F040000 */ lw $a0, ($t8)
/* 00626C 8000566C 3C078016 */ lui $a3, %hi(D_80162D98) # $a3, 0x8016
/* 006270 80005670 2529C4D4 */ addiu $t1, %lo(D_800DC4D4) # addiu $t1, $t1, -0x3b2c
/* 006274 80005674 308200FF */ andi $v0, $a0, 0xff
/* 006278 80005678 2C410080 */ sltiu $at, $v0, 0x80
/* 00627C 8000567C 10200005 */ beqz $at, .L80005694
/* 006280 80005680 24E72D98 */ addiu $a3, %lo(D_80162D98) # addiu $a3, $a3, 0x2d98
/* 006284 80005684 304300FF */ andi $v1, $v0, 0xff
/* 006288 80005688 0003CC00 */ sll $t9, $v1, 0x10
/* 00628C 8000568C 10000005 */ b .L800056A4
/* 006290 80005690 00191C03 */ sra $v1, $t9, 0x10
.L80005694:
/* 006294 80005694 2401FF00 */ li $at, -256
/* 006298 80005698 00411825 */ or $v1, $v0, $at
/* 00629C 8000569C 00037400 */ sll $t6, $v1, 0x10
/* 0062A0 800056A0 000E1C03 */ sra $v1, $t6, 0x10
.L800056A4:
/* 0062A4 800056A4 3082FF00 */ andi $v0, $a0, 0xff00
/* 0062A8 800056A8 8D380000 */ lw $t8, ($t1)
/* 0062AC 800056AC 0002CA02 */ srl $t9, $v0, 8
/* 0062B0 800056B0 2F210080 */ sltiu $at, $t9, 0x80
/* 0062B4 800056B4 03201025 */ move $v0, $t9
/* 0062B8 800056B8 10200005 */ beqz $at, .L800056D0
/* 0062BC 800056BC A7030000 */ sh $v1, ($t8)
/* 0062C0 800056C0 332300FF */ andi $v1, $t9, 0xff
/* 0062C4 800056C4 00036C00 */ sll $t5, $v1, 0x10
/* 0062C8 800056C8 10000005 */ b .L800056E0
/* 0062CC 800056CC 000D1C03 */ sra $v1, $t5, 0x10
.L800056D0:
/* 0062D0 800056D0 2401FF00 */ li $at, -256
/* 0062D4 800056D4 00411825 */ or $v1, $v0, $at
/* 0062D8 800056D8 00037C00 */ sll $t7, $v1, 0x10
/* 0062DC 800056DC 000F1C03 */ sra $v1, $t7, 0x10
.L800056E0:
/* 0062E0 800056E0 8D390000 */ lw $t9, ($t1)
/* 0062E4 800056E4 00046800 */ sll $t5, $a0, 0
/* 0062E8 800056E8 05A10002 */ bgez $t5, .L800056F4
/* 0062EC 800056EC A7230002 */ sh $v1, 2($t9)
/* 0062F0 800056F0 24068000 */ li $a2, -32768
.L800056F4:
/* 0062F4 800056F4 00047040 */ sll $t6, $a0, 1
/* 0062F8 800056F8 05C10004 */ bgez $t6, .L8000570C
/* 0062FC 800056FC 00046880 */ sll $t5, $a0, 2
/* 006300 80005700 34CF4000 */ ori $t7, $a2, 0x4000
/* 006304 80005704 000FC400 */ sll $t8, $t7, 0x10
/* 006308 80005708 00183403 */ sra $a2, $t8, 0x10
.L8000570C:
/* 00630C 8000570C 05A10004 */ bgez $t5, .L80005720
/* 006310 80005710 0004C8C0 */ sll $t9, $a0, 3
/* 006314 80005714 34CE2000 */ ori $t6, $a2, 0x2000
/* 006318 80005718 000E7C00 */ sll $t7, $t6, 0x10
/* 00631C 8000571C 000F3403 */ sra $a2, $t7, 0x10
.L80005720:
/* 006320 80005720 07210003 */ bgez $t9, .L80005730
/* 006324 80005724 34CD0010 */ ori $t5, $a2, 0x10
/* 006328 80005728 000D7400 */ sll $t6, $t5, 0x10
/* 00632C 8000572C 000E3403 */ sra $a2, $t6, 0x10
.L80005730:
/* 006330 80005730 8D220000 */ lw $v0, ($t1)
/* 006334 80005734 94ED0000 */ lhu $t5, ($a3)
/* 006338 80005738 3C0A8016 */ lui $t2, %hi(D_80162D9C) # $t2, 0x8016
/* 00633C 8000573C 94430006 */ lhu $v1, 6($v0)
/* 006340 80005740 00CD7026 */ xor $t6, $a2, $t5
/* 006344 80005744 00CE7824 */ and $t7, $a2, $t6
/* 006348 80005748 30791F0F */ andi $t9, $v1, 0x1f0f
/* 00634C 8000574C 01F9C025 */ or $t8, $t7, $t9
/* 006350 80005750 A4580006 */ sh $t8, 6($v0)
/* 006354 80005754 8D220000 */ lw $v0, ($t1)
/* 006358 80005758 94E40000 */ lhu $a0, ($a3)
/* 00635C 8000575C 254A2D9C */ addiu $t2, %lo(D_80162D9C) # addiu $t2, $t2, 0x2d9c
/* 006360 80005760 94430008 */ lhu $v1, 8($v0)
/* 006364 80005764 00C47026 */ xor $t6, $a2, $a0
/* 006368 80005768 008E7824 */ and $t7, $a0, $t6
/* 00636C 8000576C 306D1F0F */ andi $t5, $v1, 0x1f0f
/* 006370 80005770 01EDC025 */ or $t8, $t7, $t5
/* 006374 80005774 A4580008 */ sh $t8, 8($v0)
/* 006378 80005778 8D390000 */ lw $t9, ($t1)
/* 00637C 8000577C A4E60000 */ sh $a2, ($a3)
/* 006380 80005780 A7260004 */ sh $a2, 4($t9)
/* 006384 80005784 8D480000 */ lw $t0, ($t2)
/* 006388 80005788 5500000E */ bnel $t0, $zero, .L800057C4
/* 00638C 8000578C 3C01FFFF */ lui $at, 0xffff
/* 006390 80005790 856D0000 */ lh $t5, ($t3)
/* 006394 80005794 8D8F0000 */ lw $t7, ($t4)
/* 006398 80005798 3C0100FF */ lui $at, 0xff
/* 00639C 8000579C 25AE0001 */ addiu $t6, $t5, 1
/* 0063A0 800057A0 A56E0000 */ sh $t6, ($t3)
/* 0063A4 800057A4 85780000 */ lh $t8, ($t3)
/* 0063A8 800057A8 0018C880 */ sll $t9, $t8, 2
/* 0063AC 800057AC 01F96821 */ addu $t5, $t7, $t9
/* 0063B0 800057B0 8DAE0000 */ lw $t6, ($t5)
/* 0063B4 800057B4 01C1C024 */ and $t8, $t6, $at
/* 0063B8 800057B8 10000004 */ b .L800057CC
/* 0063BC 800057BC AD580000 */ sw $t8, ($t2)
/* 0063C0 800057C0 3C01FFFF */ lui $at, 0xffff
.L800057C4:
/* 0063C4 800057C4 01017821 */ addu $t7, $t0, $at
/* 0063C8 800057C8 AD4F0000 */ sw $t7, ($t2)
.L800057CC:
/* 0063CC 800057CC 8FBF0014 */ lw $ra, 0x14($sp)
.L800057D0:
/* 0063D0 800057D0 27BD0018 */ addiu $sp, $sp, 0x18
/* 0063D4 800057D4 03E00008 */ jr $ra
/* 0063D8 800057D8 00000000 */ nop
glabel func_800057DC
/* 0063DC 800057DC 3C0B8016 */ lui $t3, %hi(D_80162D90) # $t3, 0x8016
/* 0063E0 800057E0 256B2D90 */ addiu $t3, %lo(D_80162D90) # addiu $t3, $t3, 0x2d90
/* 0063E4 800057E4 85630000 */ lh $v1, ($t3)
/* 0063E8 800057E8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0063EC 800057EC AFBF0014 */ sw $ra, 0x14($sp)
/* 0063F0 800057F0 28611000 */ slti $at, $v1, 0x1000
/* 0063F4 800057F4 14200006 */ bnez $at, .L80005810
/* 0063F8 800057F8 00003025 */ move $a2, $zero
/* 0063FC 800057FC 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 006400 80005800 0C0016BA */ jal func_80005AE8
/* 006404 80005804 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 006408 80005808 10000061 */ b .L80005990
/* 00640C 8000580C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005810:
/* 006410 80005810 3C0C8016 */ lui $t4, %hi(D_80162D94) # $t4, 0x8016
/* 006414 80005814 258C2D94 */ addiu $t4, %lo(D_80162D94) # addiu $t4, $t4, 0x2d94
/* 006418 80005818 8D8E0000 */ lw $t6, ($t4)
/* 00641C 8000581C 00037880 */ sll $t7, $v1, 2
/* 006420 80005820 3C09800E */ lui $t1, %hi(D_800DC4D0) # $t1, 0x800e
/* 006424 80005824 01CFC021 */ addu $t8, $t6, $t7
/* 006428 80005828 8F040000 */ lw $a0, ($t8)
/* 00642C 8000582C 3C078016 */ lui $a3, %hi(D_80162D88) # $a3, 0x8016
/* 006430 80005830 2529C4D0 */ addiu $t1, %lo(D_800DC4D0) # addiu $t1, $t1, -0x3b30
/* 006434 80005834 308200FF */ andi $v0, $a0, 0xff
/* 006438 80005838 2C410080 */ sltiu $at, $v0, 0x80
/* 00643C 8000583C 10200005 */ beqz $at, .L80005854
/* 006440 80005840 24E72D88 */ addiu $a3, %lo(D_80162D88) # addiu $a3, $a3, 0x2d88
/* 006444 80005844 304300FF */ andi $v1, $v0, 0xff
/* 006448 80005848 0003CC00 */ sll $t9, $v1, 0x10
/* 00644C 8000584C 10000005 */ b .L80005864
/* 006450 80005850 00191C03 */ sra $v1, $t9, 0x10
.L80005854:
/* 006454 80005854 2401FF00 */ li $at, -256
/* 006458 80005858 00411825 */ or $v1, $v0, $at
/* 00645C 8000585C 00037400 */ sll $t6, $v1, 0x10
/* 006460 80005860 000E1C03 */ sra $v1, $t6, 0x10
.L80005864:
/* 006464 80005864 3082FF00 */ andi $v0, $a0, 0xff00
/* 006468 80005868 8D380000 */ lw $t8, ($t1)
/* 00646C 8000586C 0002CA02 */ srl $t9, $v0, 8
/* 006470 80005870 2F210080 */ sltiu $at, $t9, 0x80
/* 006474 80005874 03201025 */ move $v0, $t9
/* 006478 80005878 10200005 */ beqz $at, .L80005890
/* 00647C 8000587C A7030000 */ sh $v1, ($t8)
/* 006480 80005880 332300FF */ andi $v1, $t9, 0xff
/* 006484 80005884 00036C00 */ sll $t5, $v1, 0x10
/* 006488 80005888 10000005 */ b .L800058A0
/* 00648C 8000588C 000D1C03 */ sra $v1, $t5, 0x10
.L80005890:
/* 006490 80005890 2401FF00 */ li $at, -256
/* 006494 80005894 00411825 */ or $v1, $v0, $at
/* 006498 80005898 00037C00 */ sll $t7, $v1, 0x10
/* 00649C 8000589C 000F1C03 */ sra $v1, $t7, 0x10
.L800058A0:
/* 0064A0 800058A0 8D390000 */ lw $t9, ($t1)
/* 0064A4 800058A4 00046800 */ sll $t5, $a0, 0
/* 0064A8 800058A8 05A10002 */ bgez $t5, .L800058B4
/* 0064AC 800058AC A7230002 */ sh $v1, 2($t9)
/* 0064B0 800058B0 24068000 */ li $a2, -32768
.L800058B4:
/* 0064B4 800058B4 00047040 */ sll $t6, $a0, 1
/* 0064B8 800058B8 05C10004 */ bgez $t6, .L800058CC
/* 0064BC 800058BC 00046880 */ sll $t5, $a0, 2
/* 0064C0 800058C0 34CF4000 */ ori $t7, $a2, 0x4000
/* 0064C4 800058C4 000FC400 */ sll $t8, $t7, 0x10
/* 0064C8 800058C8 00183403 */ sra $a2, $t8, 0x10
.L800058CC:
/* 0064CC 800058CC 05A10004 */ bgez $t5, .L800058E0
/* 0064D0 800058D0 0004C8C0 */ sll $t9, $a0, 3
/* 0064D4 800058D4 34CE2000 */ ori $t6, $a2, 0x2000
/* 0064D8 800058D8 000E7C00 */ sll $t7, $t6, 0x10
/* 0064DC 800058DC 000F3403 */ sra $a2, $t7, 0x10
.L800058E0:
/* 0064E0 800058E0 07210003 */ bgez $t9, .L800058F0
/* 0064E4 800058E4 34CD0010 */ ori $t5, $a2, 0x10
/* 0064E8 800058E8 000D7400 */ sll $t6, $t5, 0x10
/* 0064EC 800058EC 000E3403 */ sra $a2, $t6, 0x10
.L800058F0:
/* 0064F0 800058F0 8D220000 */ lw $v0, ($t1)
/* 0064F4 800058F4 94ED0000 */ lhu $t5, ($a3)
/* 0064F8 800058F8 3C0A8016 */ lui $t2, %hi(D_80162D8C) # $t2, 0x8016
/* 0064FC 800058FC 94430006 */ lhu $v1, 6($v0)
/* 006500 80005900 00CD7026 */ xor $t6, $a2, $t5
/* 006504 80005904 00CE7824 */ and $t7, $a2, $t6
/* 006508 80005908 30791F0F */ andi $t9, $v1, 0x1f0f
/* 00650C 8000590C 01F9C025 */ or $t8, $t7, $t9
/* 006510 80005910 A4580006 */ sh $t8, 6($v0)
/* 006514 80005914 8D220000 */ lw $v0, ($t1)
/* 006518 80005918 94E40000 */ lhu $a0, ($a3)
/* 00651C 8000591C 254A2D8C */ addiu $t2, %lo(D_80162D8C) # addiu $t2, $t2, 0x2d8c
/* 006520 80005920 94430008 */ lhu $v1, 8($v0)
/* 006524 80005924 00C47026 */ xor $t6, $a2, $a0
/* 006528 80005928 008E7824 */ and $t7, $a0, $t6
/* 00652C 8000592C 306D1F0F */ andi $t5, $v1, 0x1f0f
/* 006530 80005930 01EDC025 */ or $t8, $t7, $t5
/* 006534 80005934 A4580008 */ sh $t8, 8($v0)
/* 006538 80005938 8D390000 */ lw $t9, ($t1)
/* 00653C 8000593C A4E60000 */ sh $a2, ($a3)
/* 006540 80005940 A7260004 */ sh $a2, 4($t9)
/* 006544 80005944 8D480000 */ lw $t0, ($t2)
/* 006548 80005948 5500000E */ bnel $t0, $zero, .L80005984
/* 00654C 8000594C 3C01FFFF */ lui $at, 0xffff
/* 006550 80005950 856D0000 */ lh $t5, ($t3)
/* 006554 80005954 8D8F0000 */ lw $t7, ($t4)
/* 006558 80005958 3C0100FF */ lui $at, 0xff
/* 00655C 8000595C 25AE0001 */ addiu $t6, $t5, 1
/* 006560 80005960 A56E0000 */ sh $t6, ($t3)
/* 006564 80005964 85780000 */ lh $t8, ($t3)
/* 006568 80005968 0018C880 */ sll $t9, $t8, 2
/* 00656C 8000596C 01F96821 */ addu $t5, $t7, $t9
/* 006570 80005970 8DAE0000 */ lw $t6, ($t5)
/* 006574 80005974 01C1C024 */ and $t8, $t6, $at
/* 006578 80005978 10000004 */ b .L8000598C
/* 00657C 8000597C AD580000 */ sw $t8, ($t2)
/* 006580 80005980 3C01FFFF */ lui $at, 0xffff
.L80005984:
/* 006584 80005984 01017821 */ addu $t7, $t0, $at
/* 006588 80005988 AD4F0000 */ sw $t7, ($t2)
.L8000598C:
/* 00658C 8000598C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005990:
/* 006590 80005990 27BD0018 */ addiu $sp, $sp, 0x18
/* 006594 80005994 03E00008 */ jr $ra
/* 006598 80005998 00000000 */ nop
glabel func_8000599C
/* 00659C 8000599C 3C098016 */ lui $t1, %hi(D_80162DB8) # $t1, 0x8016
/* 0065A0 800059A0 25292DB8 */ addiu $t1, %lo(D_80162DB8) # addiu $t1, $t1, 0x2db8
/* 0065A4 800059A4 85220000 */ lh $v0, ($t1)
/* 0065A8 800059A8 3C0E800E */ lui $t6, %hi(D_800DC4DC) # $t6, 0x800e
/* 0065AC 800059AC 24190001 */ li $t9, 1
/* 0065B0 800059B0 28411000 */ slti $at, $v0, 0x1000
/* 0065B4 800059B4 10200008 */ beqz $at, .L800059D8
/* 0065B8 800059B8 00000000 */ nop
/* 0065BC 800059BC 8DCEC4DC */ lw $t6, %lo(D_800DC4DC)($t6)
/* 0065C0 800059C0 85C300CA */ lh $v1, 0xca($t6)
/* 0065C4 800059C4 306F0002 */ andi $t7, $v1, 2
/* 0065C8 800059C8 15E00003 */ bnez $t7, .L800059D8
/* 0065CC 800059CC 30780008 */ andi $t8, $v1, 8
/* 0065D0 800059D0 13000004 */ beqz $t8, .L800059E4
/* 0065D4 800059D4 3C04800E */ lui $a0, 0x800e
.L800059D8:
/* 0065D8 800059D8 3C018016 */ lui $at, 0x8016
/* 0065DC 800059DC 03E00008 */ jr $ra
/* 0065E0 800059E0 AC392DF8 */ sw $t9, 0x2df8($at)
.L800059E4:
/* 0065E4 800059E4 8C84C4BC */ lw $a0, -0x3b44($a0)
/* 0065E8 800059E8 00003825 */ move $a3, $zero
/* 0065EC 800059EC 00026080 */ sll $t4, $v0, 2
/* 0065F0 800059F0 84830000 */ lh $v1, ($a0)
/* 0065F4 800059F4 84850002 */ lh $a1, 2($a0)
/* 0065F8 800059F8 84860004 */ lh $a2, 4($a0)
/* 0065FC 800059FC 306A00FF */ andi $t2, $v1, 0xff
/* 006600 80005A00 30AB00FF */ andi $t3, $a1, 0xff
/* 006604 80005A04 30CD8000 */ andi $t5, $a2, 0x8000
/* 006608 80005A08 01401825 */ move $v1, $t2
/* 00660C 80005A0C 11A00002 */ beqz $t5, .L80005A18
/* 006610 80005A10 000B2A00 */ sll $a1, $t3, 8
/* 006614 80005A14 3C078000 */ lui $a3, 0x8000
.L80005A18:
/* 006618 80005A18 30CE4000 */ andi $t6, $a2, 0x4000
/* 00661C 80005A1C 11C00004 */ beqz $t6, .L80005A30
/* 006620 80005A20 30D82000 */ andi $t8, $a2, 0x2000
/* 006624 80005A24 3C014000 */ lui $at, 0x4000
/* 006628 80005A28 00E17825 */ or $t7, $a3, $at
/* 00662C 80005A2C 01E03825 */ move $a3, $t7
.L80005A30:
/* 006630 80005A30 13000004 */ beqz $t8, .L80005A44
/* 006634 80005A34 30CA0010 */ andi $t2, $a2, 0x10
/* 006638 80005A38 3C012000 */ lui $at, 0x2000
/* 00663C 80005A3C 00E1C825 */ or $t9, $a3, $at
/* 006640 80005A40 03203825 */ move $a3, $t9
.L80005A44:
/* 006644 80005A44 11400004 */ beqz $t2, .L80005A58
/* 006648 80005A48 3C068016 */ lui $a2, %hi(D_80162DBC) # $a2, 0x8016
/* 00664C 80005A4C 3C011000 */ lui $at, 0x1000
/* 006650 80005A50 00E15825 */ or $t3, $a3, $at
/* 006654 80005A54 01603825 */ move $a3, $t3
.L80005A58:
/* 006658 80005A58 8CC62DBC */ lw $a2, %lo(D_80162DBC)($a2)
/* 00665C 80005A5C 00E33825 */ or $a3, $a3, $v1
/* 006660 80005A60 2401FFFF */ li $at, -1
/* 006664 80005A64 8CCD0000 */ lw $t5, ($a2)
/* 006668 80005A68 00CC4021 */ addu $t0, $a2, $t4
/* 00666C 80005A6C 00E53825 */ or $a3, $a3, $a1
/* 006670 80005A70 15A10003 */ bne $t5, $at, .L80005A80
/* 006674 80005A74 8D040000 */ lw $a0, ($t0)
/* 006678 80005A78 03E00008 */ jr $ra
/* 00667C 80005A7C AD070000 */ sw $a3, ($t0)
.L80005A80:
/* 006680 80005A80 3C01FF00 */ lui $at, (0xFF00FFFF >> 16) # lui $at, 0xff00
/* 006684 80005A84 3421FFFF */ ori $at, (0xFF00FFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 006688 80005A88 00817024 */ and $t6, $a0, $at
/* 00668C 80005A8C 15C7000F */ bne $t6, $a3, .L80005ACC
/* 006690 80005A90 244C0001 */ addiu $t4, $v0, 1
/* 006694 80005A94 3C0300FF */ lui $v1, 0xff
/* 006698 80005A98 00837824 */ and $t7, $a0, $v1
/* 00669C 80005A9C 146F0007 */ bne $v1, $t7, .L80005ABC
/* 0066A0 80005AA0 24580001 */ addiu $t8, $v0, 1
/* 0066A4 80005AA4 A5380000 */ sh $t8, ($t1)
/* 0066A8 80005AA8 85390000 */ lh $t9, ($t1)
/* 0066AC 80005AAC 00195080 */ sll $t2, $t9, 2
/* 0066B0 80005AB0 00CA5821 */ addu $t3, $a2, $t2
/* 0066B4 80005AB4 03E00008 */ jr $ra
/* 0066B8 80005AB8 AD670000 */ sw $a3, ($t3)
.L80005ABC:
/* 0066BC 80005ABC 3C010001 */ lui $at, 1
/* 0066C0 80005AC0 00812021 */ addu $a0, $a0, $at
/* 0066C4 80005AC4 03E00008 */ jr $ra
/* 0066C8 80005AC8 AD040000 */ sw $a0, ($t0)
.L80005ACC:
/* 0066CC 80005ACC A52C0000 */ sh $t4, ($t1)
/* 0066D0 80005AD0 852D0000 */ lh $t5, ($t1)
/* 0066D4 80005AD4 000D7080 */ sll $t6, $t5, 2
/* 0066D8 80005AD8 00CE7821 */ addu $t7, $a2, $t6
/* 0066DC 80005ADC ADE70000 */ sw $a3, ($t7)
/* 0066E0 80005AE0 03E00008 */ jr $ra
/* 0066E4 80005AE4 00000000 */ nop
glabel func_80005AE8
/* 0066E8 80005AE8 948E0000 */ lhu $t6, ($a0)
/* 0066EC 80005AEC 3C18800E */ lui $t8, %hi(D_800DC4DC) # $t8, 0x800e
/* 0066F0 80005AF0 31CF0100 */ andi $t7, $t6, 0x100
/* 0066F4 80005AF4 11E00006 */ beqz $t7, .L80005B10
/* 0066F8 80005AF8 00000000 */ nop
/* 0066FC 80005AFC 8F18C4DC */ lw $t8, %lo(D_800DC4DC)($t8)
/* 006700 80005B00 24193800 */ li $t9, 14336
/* 006704 80005B04 10980002 */ beq $a0, $t8, .L80005B10
/* 006708 80005B08 00000000 */ nop
/* 00670C 80005B0C A4990000 */ sh $t9, ($a0)
.L80005B10:
/* 006710 80005B10 03E00008 */ jr $ra
/* 006714 80005B14 00000000 */ nop
glabel func_80005B18
/* 006718 80005B18 3C04800E */ lui $a0, %hi(gModeSelection) # $a0, 0x800e
/* 00671C 80005B1C 8C84C53C */ lw $a0, %lo(gModeSelection)($a0)
/* 006720 80005B20 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 006724 80005B24 24030001 */ li $v1, 1
/* 006728 80005B28 146400CC */ bne $v1, $a0, .L80005E5C
/* 00672C 80005B2C AFBF0014 */ sw $ra, 0x14($sp)
/* 006730 80005B30 3C088016 */ lui $t0, %hi(D_80164390) # $t0, 0x8016
/* 006734 80005B34 25084390 */ addiu $t0, %lo(D_80164390) # addiu $t0, $t0, 0x4390
/* 006738 80005B38 8D020000 */ lw $v0, ($t0)
/* 00673C 80005B3C 24060003 */ li $a2, 3
/* 006740 80005B40 3C058016 */ lui $a1, %hi(D_80162DDC) # $a1, 0x8016
/* 006744 80005B44 14C20072 */ bne $a2, $v0, .L80005D10
/* 006748 80005B48 24A52DDC */ addiu $a1, %lo(D_80162DDC) # addiu $a1, $a1, 0x2ddc
/* 00674C 80005B4C 8CAE0000 */ lw $t6, ($a1)
/* 006750 80005B50 3C0F8016 */ lui $t7, %hi(D_80162DF8) # $t7, 0x8016
/* 006754 80005B54 15C0006E */ bnez $t6, .L80005D10
/* 006758 80005B58 00000000 */ nop
/* 00675C 80005B5C 8DEF2DF8 */ lw $t7, %lo(D_80162DF8)($t7)
/* 006760 80005B60 3C078016 */ lui $a3, %hi(D_80162DD4) # $a3, 0x8016
/* 006764 80005B64 24E72DD4 */ addiu $a3, %lo(D_80162DD4) # addiu $a3, $a3, 0x2dd4
/* 006768 80005B68 106F0069 */ beq $v1, $t7, .L80005D10
/* 00676C 80005B6C 00000000 */ nop
/* 006770 80005B70 94F80000 */ lhu $t8, ($a3)
/* 006774 80005B74 3C198016 */ lui $t9, %hi(D_80162DCC) # $t9, 0x8016
/* 006778 80005B78 54780023 */ bnel $v1, $t8, .L80005C08
/* 00677C 80005B7C 8D0C0004 */ lw $t4, 4($t0)
/* 006780 80005B80 8F392DCC */ lw $t9, %lo(D_80162DCC)($t9)
/* 006784 80005B84 3C018016 */ lui $at, %hi(D_80162DD0) # $at, 0x8016
/* 006788 80005B88 0C0014A9 */ jal func_800052A4
/* 00678C 80005B8C AC392DD0 */ sw $t9, %lo(D_80162DD0)($at)
/* 006790 80005B90 3C058016 */ lui $a1, %hi(D_80162DDC) # $a1, 0x8016
/* 006794 80005B94 3C078016 */ lui $a3, %hi(D_80162DD4) # $a3, 0x8016
/* 006798 80005B98 24E72DD4 */ addiu $a3, %lo(D_80162DD4) # addiu $a3, $a3, 0x2dd4
/* 00679C 80005B9C 24A52DDC */ addiu $a1, %lo(D_80162DDC) # addiu $a1, $a1, 0x2ddc
/* 0067A0 80005BA0 24030001 */ li $v1, 1
/* 0067A4 80005BA4 A4E00000 */ sh $zero, ($a3)
/* 0067A8 80005BA8 ACA30000 */ sw $v1, ($a1)
/* 0067AC 80005BAC 3C02800E */ lui $v0, %hi(D_800DC4DC) # $v0, 0x800e
/* 0067B0 80005BB0 8C42C4DC */ lw $v0, %lo(D_800DC4DC)($v0)
/* 0067B4 80005BB4 3C018016 */ lui $at, %hi(D_80162DE0) # $at, 0x8016
/* 0067B8 80005BB8 3C0B8019 */ lui $t3, %hi(D_8018CA78) # $t3, 0x8019
/* 0067BC 80005BBC 94490254 */ lhu $t1, 0x254($v0)
/* 0067C0 80005BC0 8D6BCA78 */ lw $t3, %lo(D_8018CA78)($t3)
/* 0067C4 80005BC4 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 0067C8 80005BC8 AC292DE0 */ sw $t1, %lo(D_80162DE0)($at)
/* 0067CC 80005BCC 944A0254 */ lhu $t2, 0x254($v0)
/* 0067D0 80005BD0 3C018016 */ lui $at, %hi(D_80162DE8) # $at, 0x8016
/* 0067D4 80005BD4 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 0067D8 80005BD8 AC2A2DE8 */ sw $t2, %lo(D_80162DE8)($at)
/* 0067DC 80005BDC 3C018016 */ lui $at, %hi(D_80162E00) # $at, 0x8016
/* 0067E0 80005BE0 AC202E00 */ sw $zero, %lo(D_80162E00)($at)
/* 0067E4 80005BE4 3C018016 */ lui $at, %hi(D_80162DFC) # $at, 0x8016
/* 0067E8 80005BE8 0C0016BA */ jal func_80005AE8
/* 0067EC 80005BEC AC2B2DFC */ sw $t3, %lo(D_80162DFC)($at)
/* 0067F0 80005BF0 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 0067F4 80005BF4 0C0016BA */ jal func_80005AE8
/* 0067F8 80005BF8 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
/* 0067FC 80005BFC 10000098 */ b .L80005E60
/* 006800 80005C00 8FBF0014 */ lw $ra, 0x14($sp)
/* 006804 80005C04 8D0C0004 */ lw $t4, 4($t0)
.L80005C08:
/* 006808 80005C08 3C0B802C */ lui $t3, %hi(D_802BFB80) # $t3, 0x802c
/* 00680C 80005C0C 256BFB80 */ addiu $t3, %lo(D_802BFB80) # addiu $t3, $t3, -0x480
/* 006810 80005C10 10CC0020 */ beq $a2, $t4, .L80005C94
/* 006814 80005C14 3C198016 */ lui $t9, %hi(D_80162DC8) # $t9, 0x8016
/* 006818 80005C18 3C0D8016 */ lui $t5, %hi(D_80162DCC) # $t5, 0x8016
/* 00681C 80005C1C 8DAD2DCC */ lw $t5, %lo(D_80162DCC)($t5)
/* 006820 80005C20 3C018016 */ lui $at, %hi(D_80162DD0) # $at, 0x8016
/* 006824 80005C24 0C0014A9 */ jal func_800052A4
/* 006828 80005C28 AC2D2DD0 */ sw $t5, %lo(D_80162DD0)($at)
/* 00682C 80005C2C 3C058016 */ lui $a1, %hi(D_80162DDC) # $a1, 0x8016
/* 006830 80005C30 24A52DDC */ addiu $a1, %lo(D_80162DDC) # addiu $a1, $a1, 0x2ddc
/* 006834 80005C34 24030001 */ li $v1, 1
/* 006838 80005C38 ACA30000 */ sw $v1, ($a1)
/* 00683C 80005C3C 3C02800E */ lui $v0, %hi(D_800DC4DC) # $v0, 0x800e
/* 006840 80005C40 8C42C4DC */ lw $v0, %lo(D_800DC4DC)($v0)
/* 006844 80005C44 3C0F8019 */ lui $t7, %hi(D_8018CA78) # $t7, 0x8019
/* 006848 80005C48 8DEFCA78 */ lw $t7, %lo(D_8018CA78)($t7)
/* 00684C 80005C4C 944E0254 */ lhu $t6, 0x254($v0)
/* 006850 80005C50 3C018016 */ lui $at, %hi(D_80162DE0) # $at, 0x8016
/* 006854 80005C54 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 006858 80005C58 AC2E2DE0 */ sw $t6, %lo(D_80162DE0)($at)
/* 00685C 80005C5C 3C018016 */ lui $at, %hi(D_80162DFC) # $at, 0x8016
/* 006860 80005C60 AC2F2DFC */ sw $t7, %lo(D_80162DFC)($at)
/* 006864 80005C64 3C018016 */ lui $at, %hi(D_80162E00) # $at, 0x8016
/* 006868 80005C68 AC202E00 */ sw $zero, %lo(D_80162E00)($at)
/* 00686C 80005C6C 94580254 */ lhu $t8, 0x254($v0)
/* 006870 80005C70 3C018016 */ lui $at, %hi(D_80162DE8) # $at, 0x8016
/* 006874 80005C74 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 006878 80005C78 0C0016BA */ jal func_80005AE8
/* 00687C 80005C7C AC382DE8 */ sw $t8, %lo(D_80162DE8)($at)
/* 006880 80005C80 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 006884 80005C84 0C0016BA */ jal func_80005AE8
/* 006888 80005C88 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
/* 00688C 80005C8C 10000074 */ b .L80005E60
/* 006890 80005C90 8FBF0014 */ lw $ra, 0x14($sp)
.L80005C94:
/* 006894 80005C94 8F392DC8 */ lw $t9, %lo(D_80162DC8)($t9)
/* 006898 80005C98 3C0D8016 */ lui $t5, %hi(D_80162D86) # $t5, 0x8016
/* 00689C 80005C9C 85AD2D86 */ lh $t5, %lo(D_80162D86)($t5)
/* 0068A0 80005CA0 00194BC0 */ sll $t1, $t9, 0xf
/* 0068A4 80005CA4 252A3000 */ addiu $t2, $t1, 0x3000
/* 0068A8 80005CA8 014B6021 */ addu $t4, $t2, $t3
/* 0068AC 80005CAC 3C018016 */ lui $at, %hi(D_80162D80) # $at, 0x8016
/* 0068B0 80005CB0 AC2C2D80 */ sw $t4, %lo(D_80162D80)($at)
/* 0068B4 80005CB4 3C0E8016 */ lui $t6, %hi(D_80162DCC) # $t6, 0x8016
/* 0068B8 80005CB8 8DCE2DCC */ lw $t6, %lo(D_80162DCC)($t6)
/* 0068BC 80005CBC 3C018016 */ lui $at, %hi(D_80162D84) # $at, 0x8016
/* 0068C0 80005CC0 3C0F800E */ lui $t7, %hi(D_800DC4DC) # $t7, 0x800e
/* 0068C4 80005CC4 8DEFC4DC */ lw $t7, %lo(D_800DC4DC)($t7)
/* 0068C8 80005CC8 A42D2D84 */ sh $t5, %lo(D_80162D84)($at)
/* 0068CC 80005CCC 3C018016 */ lui $at, %hi(D_80162DD0) # $at, 0x8016
/* 0068D0 80005CD0 AC2E2DD0 */ sw $t6, %lo(D_80162DD0)($at)
/* 0068D4 80005CD4 95F80254 */ lhu $t8, 0x254($t7)
/* 0068D8 80005CD8 3C018016 */ lui $at, %hi(D_80162DE8) # $at, 0x8016
/* 0068DC 80005CDC 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 0068E0 80005CE0 AC382DE8 */ sw $t8, %lo(D_80162DE8)($at)
/* 0068E4 80005CE4 3C018016 */ lui $at, %hi(D_80162DD8) # $at, 0x8016
/* 0068E8 80005CE8 A4202DD8 */ sh $zero, %lo(D_80162DD8)($at)
/* 0068EC 80005CEC A4E00000 */ sh $zero, ($a3)
/* 0068F0 80005CF0 ACA30000 */ sw $v1, ($a1)
/* 0068F4 80005CF4 0C0016BA */ jal func_80005AE8
/* 0068F8 80005CF8 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 0068FC 80005CFC 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 006900 80005D00 0C0016BA */ jal func_80005AE8
/* 006904 80005D04 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
/* 006908 80005D08 10000055 */ b .L80005E60
/* 00690C 80005D0C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005D10:
/* 006910 80005D10 3C058016 */ lui $a1, %hi(D_80162DDC) # $a1, 0x8016
/* 006914 80005D14 14C20015 */ bne $a2, $v0, .L80005D6C
/* 006918 80005D18 24A52DDC */ addiu $a1, %lo(D_80162DDC) # addiu $a1, $a1, 0x2ddc
/* 00691C 80005D1C 8CB90000 */ lw $t9, ($a1)
/* 006920 80005D20 3C098016 */ lui $t1, %hi(D_80162DF8) # $t1, 0x8016
/* 006924 80005D24 17200011 */ bnez $t9, .L80005D6C
/* 006928 80005D28 00000000 */ nop
/* 00692C 80005D2C 8D292DF8 */ lw $t1, %lo(D_80162DF8)($t1)
/* 006930 80005D30 3C0D802C */ lui $t5, %hi(D_802BFB80) # $t5, 0x802c
/* 006934 80005D34 25ADFB80 */ addiu $t5, %lo(D_802BFB80) # addiu $t5, $t5, -0x480
/* 006938 80005D38 1469000C */ bne $v1, $t1, .L80005D6C
/* 00693C 80005D3C 3C0A8016 */ lui $t2, %hi(D_80162DC8) # $t2, 0x8016
/* 006940 80005D40 8D4A2DC8 */ lw $t2, %lo(D_80162DC8)($t2)
/* 006944 80005D44 3C0F8016 */ lui $t7, %hi(D_80162D86) # $t7, 0x8016
/* 006948 80005D48 85EF2D86 */ lh $t7, %lo(D_80162D86)($t7)
/* 00694C 80005D4C 000A5BC0 */ sll $t3, $t2, 0xf
/* 006950 80005D50 256C3000 */ addiu $t4, $t3, 0x3000
/* 006954 80005D54 018D7021 */ addu $t6, $t4, $t5
/* 006958 80005D58 3C018016 */ lui $at, %hi(D_80162D80) # $at, 0x8016
/* 00695C 80005D5C AC2E2D80 */ sw $t6, %lo(D_80162D80)($at)
/* 006960 80005D60 3C018016 */ lui $at, %hi(D_80162D84) # $at, 0x8016
/* 006964 80005D64 A42F2D84 */ sh $t7, %lo(D_80162D84)($at)
/* 006968 80005D68 ACA30000 */ sw $v1, ($a1)
.L80005D6C:
/* 00696C 80005D6C 3C18800E */ lui $t8, %hi(D_800DC4DC) # $t8, 0x800e
/* 006970 80005D70 8F18C4DC */ lw $t8, %lo(D_800DC4DC)($t8)
/* 006974 80005D74 24010800 */ li $at, 2048
/* 006978 80005D78 3C028016 */ lui $v0, %hi(D_80162DEC) # $v0, 0x8016
/* 00697C 80005D7C 97190000 */ lhu $t9, ($t8)
/* 006980 80005D80 24422DEC */ addiu $v0, %lo(D_80162DEC) # addiu $v0, $v0, 0x2dec
/* 006984 80005D84 33290800 */ andi $t1, $t9, 0x800
/* 006988 80005D88 5521000A */ bnel $t1, $at, .L80005DB4
/* 00698C 80005D8C 8C4A0000 */ lw $t2, ($v0)
/* 006990 80005D90 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 006994 80005D94 0C0016BA */ jal func_80005AE8
/* 006998 80005D98 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 00699C 80005D9C 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 0069A0 80005DA0 0C0016BA */ jal func_80005AE8
/* 0069A4 80005DA4 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
/* 0069A8 80005DA8 1000002D */ b .L80005E60
/* 0069AC 80005DAC 8FBF0014 */ lw $ra, 0x14($sp)
/* 0069B0 80005DB0 8C4A0000 */ lw $t2, ($v0)
.L80005DB4:
/* 0069B4 80005DB4 240D0064 */ li $t5, 100
/* 0069B8 80005DB8 3C0E800E */ lui $t6, %hi(D_800DC52C) # $t6, 0x800e
/* 0069BC 80005DBC 254B0001 */ addiu $t3, $t2, 1
/* 0069C0 80005DC0 29610065 */ slti $at, $t3, 0x65
/* 0069C4 80005DC4 14200002 */ bnez $at, .L80005DD0
/* 0069C8 80005DC8 AC4B0000 */ sw $t3, ($v0)
/* 0069CC 80005DCC AC4D0000 */ sw $t5, ($v0)
.L80005DD0:
/* 0069D0 80005DD0 54640023 */ bnel $v1, $a0, .L80005E60
/* 0069D4 80005DD4 8FBF0014 */ lw $ra, 0x14($sp)
/* 0069D8 80005DD8 8DCEC52C */ lw $t6, %lo(D_800DC52C)($t6)
/* 0069DC 80005DDC 3C078016 */ lui $a3, %hi(D_80162DD4) # $a3, 0x8016
/* 0069E0 80005DE0 24E72DD4 */ addiu $a3, %lo(D_80162DD4) # addiu $a3, $a3, 0x2dd4
/* 0069E4 80005DE4 55C0001E */ bnel $t6, $zero, .L80005E60
/* 0069E8 80005DE8 8FBF0014 */ lw $ra, 0x14($sp)
/* 0069EC 80005DEC 94EF0000 */ lhu $t7, ($a3)
/* 0069F0 80005DF0 15E00009 */ bnez $t7, .L80005E18
/* 0069F4 80005DF4 00000000 */ nop
/* 0069F8 80005DF8 8D180004 */ lw $t8, 4($t0)
/* 0069FC 80005DFC 10D80006 */ beq $a2, $t8, .L80005E18
/* 006A00 80005E00 00000000 */ nop
/* 006A04 80005E04 0C0015F7 */ jal func_800057DC
/* 006A08 80005E08 00000000 */ nop
/* 006A0C 80005E0C 3C088016 */ lui $t0, %hi(D_80164390) # $t0, 0x8016
/* 006A10 80005E10 25084390 */ addiu $t0, %lo(D_80164390) # addiu $t0, $t0, 0x4390
/* 006A14 80005E14 24060003 */ li $a2, 3
.L80005E18:
/* 006A18 80005E18 3C198016 */ lui $t9, %hi(D_80162DD6) # $t9, 0x8016
/* 006A1C 80005E1C 97392DD6 */ lhu $t9, %lo(D_80162DD6)($t9)
/* 006A20 80005E20 17200006 */ bnez $t9, .L80005E3C
/* 006A24 80005E24 00000000 */ nop
/* 006A28 80005E28 8D090008 */ lw $t1, 8($t0)
/* 006A2C 80005E2C 10C90003 */ beq $a2, $t1, .L80005E3C
/* 006A30 80005E30 00000000 */ nop
/* 006A34 80005E34 0C001587 */ jal func_8000561C
/* 006A38 80005E38 00000000 */ nop
.L80005E3C:
/* 006A3C 80005E3C 3C0A800E */ lui $t2, %hi(D_800DC4DC) # $t2, 0x800e
/* 006A40 80005E40 8D4AC4DC */ lw $t2, %lo(D_800DC4DC)($t2)
/* 006A44 80005E44 954B0000 */ lhu $t3, ($t2)
/* 006A48 80005E48 316C0800 */ andi $t4, $t3, 0x800
/* 006A4C 80005E4C 55800004 */ bnel $t4, $zero, .L80005E60
/* 006A50 80005E50 8FBF0014 */ lw $ra, 0x14($sp)
/* 006A54 80005E54 0C001667 */ jal func_8000599C
/* 006A58 80005E58 00000000 */ nop
.L80005E5C:
/* 006A5C 80005E5C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005E60:
/* 006A60 80005E60 27BD0018 */ addiu $sp, $sp, 0x18
/* 006A64 80005E64 03E00008 */ jr $ra
/* 006A68 80005E68 00000000 */ nop
glabel func_80005E6C
/* 006A6C 80005E6C 3C02800E */ lui $v0, %hi(gModeSelection) # $v0, 0x800e
/* 006A70 80005E70 8C42C53C */ lw $v0, %lo(gModeSelection)($v0)
/* 006A74 80005E74 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 006A78 80005E78 24030001 */ li $v1, 1
/* 006A7C 80005E7C 1462002D */ bne $v1, $v0, .L80005F34
/* 006A80 80005E80 AFBF0014 */ sw $ra, 0x14($sp)
/* 006A84 80005E84 1462002B */ bne $v1, $v0, .L80005F34
/* 006A88 80005E88 3C0E800E */ lui $t6, %hi(D_800DC52C) # $t6, 0x800e
/* 006A8C 80005E8C 8DCEC52C */ lw $t6, %lo(D_800DC52C)($t6)
/* 006A90 80005E90 3C0F8016 */ lui $t7, %hi(D_80162DD8) # $t7, 0x8016
/* 006A94 80005E94 55C00028 */ bnel $t6, $zero, .L80005F38
/* 006A98 80005E98 8FBF0014 */ lw $ra, 0x14($sp)
/* 006A9C 80005E9C 95EF2DD8 */ lhu $t7, %lo(D_80162DD8)($t7)
/* 006AA0 80005EA0 3C188016 */ lui $t8, %hi(D_80164394) # $t8, 0x8016
/* 006AA4 80005EA4 15E00007 */ bnez $t7, .L80005EC4
/* 006AA8 80005EA8 00000000 */ nop
/* 006AAC 80005EAC 8F184394 */ lw $t8, %lo(D_80164394)($t8)
/* 006AB0 80005EB0 24010003 */ li $at, 3
/* 006AB4 80005EB4 13010003 */ beq $t8, $at, .L80005EC4
/* 006AB8 80005EB8 00000000 */ nop
/* 006ABC 80005EBC 0C0015F7 */ jal func_800057DC
/* 006AC0 80005EC0 00000000 */ nop
.L80005EC4:
/* 006AC4 80005EC4 3C198016 */ lui $t9, %hi(D_80162DD6) # $t9, 0x8016
/* 006AC8 80005EC8 97392DD6 */ lhu $t9, %lo(D_80162DD6)($t9)
/* 006ACC 80005ECC 3C088016 */ lui $t0, %hi(D_80164398) # $t0, 0x8016
/* 006AD0 80005ED0 17200007 */ bnez $t9, .L80005EF0
/* 006AD4 80005ED4 00000000 */ nop
/* 006AD8 80005ED8 8D084398 */ lw $t0, %lo(D_80164398)($t0)
/* 006ADC 80005EDC 24010003 */ li $at, 3
/* 006AE0 80005EE0 11010003 */ beq $t0, $at, .L80005EF0
/* 006AE4 80005EE4 00000000 */ nop
/* 006AE8 80005EE8 0C001587 */ jal func_8000561C
/* 006AEC 80005EEC 00000000 */ nop
.L80005EF0:
/* 006AF0 80005EF0 3C09800E */ lui $t1, %hi(D_800DC4DC) # $t1, 0x800e
/* 006AF4 80005EF4 8D29C4DC */ lw $t1, %lo(D_800DC4DC)($t1)
/* 006AF8 80005EF8 24010800 */ li $at, 2048
/* 006AFC 80005EFC 3C04800E */ lui $a0, %hi(D_800DC4E0) # $a0, 0x800e
/* 006B00 80005F00 952A0000 */ lhu $t2, ($t1)
/* 006B04 80005F04 314B0800 */ andi $t3, $t2, 0x800
/* 006B08 80005F08 11610005 */ beq $t3, $at, .L80005F20
/* 006B0C 80005F0C 00000000 */ nop
/* 006B10 80005F10 0C00151B */ jal func_8000546C
/* 006B14 80005F14 00000000 */ nop
/* 006B18 80005F18 10000007 */ b .L80005F38
/* 006B1C 80005F1C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005F20:
/* 006B20 80005F20 0C0016BA */ jal func_80005AE8
/* 006B24 80005F24 8C84C4E0 */ lw $a0, %lo(D_800DC4E0)($a0)
/* 006B28 80005F28 3C04800E */ lui $a0, %hi(D_800DC4E4) # $a0, 0x800e
/* 006B2C 80005F2C 0C0016BA */ jal func_80005AE8
/* 006B30 80005F30 8C84C4E4 */ lw $a0, %lo(D_800DC4E4)($a0)
.L80005F34:
/* 006B34 80005F34 8FBF0014 */ lw $ra, 0x14($sp)
.L80005F38:
/* 006B38 80005F38 27BD0018 */ addiu $sp, $sp, 0x18
/* 006B3C 80005F3C 03E00008 */ jr $ra
/* 006B40 80005F40 00000000 */ nop
glabel func_80005F44
/* 006B44 80005F44 3C0E8016 */ lui $t6, %hi(D_8015F890) # $t6, 0x8016
/* 006B48 80005F48 95CEF890 */ lhu $t6, %lo(D_8015F890)($t6)
/* 006B4C 80005F4C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 006B50 80005F50 24020001 */ li $v0, 1
/* 006B54 80005F54 144E0005 */ bne $v0, $t6, .L80005F6C
/* 006B58 80005F58 AFBF0014 */ sw $ra, 0x14($sp)
/* 006B5C 80005F5C 0C00179B */ jal func_80005E6C
/* 006B60 80005F60 00000000 */ nop
/* 006B64 80005F64 1000000C */ b .L80005F98
/* 006B68 80005F68 8FBF0014 */ lw $ra, 0x14($sp)
.L80005F6C:
/* 006B6C 80005F6C 3C0F8016 */ lui $t7, %hi(D_80162DF0) # $t7, 0x8016
/* 006B70 80005F70 8DEF2DF0 */ lw $t7, %lo(D_80162DF0)($t7)
/* 006B74 80005F74 3C018016 */ lui $at, %hi(D_80162DF8) # $at, 0x8016
/* 006B78 80005F78 15E00005 */ bnez $t7, .L80005F90
/* 006B7C 80005F7C 00000000 */ nop
/* 006B80 80005F80 0C0016C6 */ jal func_80005B18
/* 006B84 80005F84 00000000 */ nop
/* 006B88 80005F88 10000003 */ b .L80005F98
/* 006B8C 80005F8C 8FBF0014 */ lw $ra, 0x14($sp)
.L80005F90:
/* 006B90 80005F90 AC222DF8 */ sw $v0, %lo(D_80162DF8)($at)
/* 006B94 80005F94 8FBF0014 */ lw $ra, 0x14($sp)
.L80005F98:
/* 006B98 80005F98 27BD0018 */ addiu $sp, $sp, 0x18
/* 006B9C 80005F9C 03E00008 */ jr $ra
/* 006BA0 80005FA0 00000000 */ nop
/* 006BA4 80005FA4 00000000 */ nop
/* 006BA8 80005FA8 00000000 */ nop
/* 006BAC 80005FAC 00000000 */ nop