Super Mario 64s source code (from a leak on 4chan so be careful)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

954 lines
37 KiB

.late_rodata
.late_rodata_alignment 8
glabel jtbl_80337D08 # US: 80338EC0
.word L8031C430
.word L8031C3DC
.word L8031C44C
.word L8031C45C
.word L8031C3F8
.word L8031C6C8
.word L8031C724
.word L8031C75C
.word L8031C75C
.word L8031C7A8
.word L8031C7B8
.word L8031C75C
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C7D8
.word L8031C7FC
.word L8031C80C
.word L8031C508
.word L8031C6B8
.word L8031C1CC
.word L8031C698
.word L8031C600
.word L8031C5E4
.word L8031C5D4
.word L8031C5B8
.word L8031C5A0
.word L8031C568
.word L8031C530
.word L8031C4C0
.word L8031C46C
.word L8031C488
.word L8031C650
.word L8031C61C
.word L8031C684
.word L8031C820
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C3CC
.word L8031C3A4
.word L8031C1CC
.word L8031C1CC
.word L8031C34C
.word L8031C33C
.word L8031C2F4
.word L8031C2BC
.word L8031C34C
.word L8031C34C
.word L8031C34C
.word L8031C280
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
glabel jtbl_80337E04 # US: 80338FBC
.word L8031C89C
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C9E4
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031CA14
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031CA30
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031CA58
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C8F8
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C9DC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C8CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C8DC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C914
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C960
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C1CC
.word L8031C97C
.text
glabel func_8031C104
/* 0D7104 8031C104 27BDFF98 */ addiu $sp, $sp, -0x68
/* 0D7108 8031C108 AFBF0034 */ sw $ra, 0x34($sp)
/* 0D710C 8031C10C AFB50030 */ sw $s5, 0x30($sp)
/* 0D7110 8031C110 AFB4002C */ sw $s4, 0x2c($sp)
/* 0D7114 8031C114 AFB30028 */ sw $s3, 0x28($sp)
/* 0D7118 8031C118 AFB20024 */ sw $s2, 0x24($sp)
/* 0D711C 8031C11C AFB10020 */ sw $s1, 0x20($sp)
/* 0D7120 8031C120 AFB0001C */ sw $s0, 0x1c($sp)
/* 0D7124 8031C124 F7B40010 */ sdc1 $f20, 0x10($sp)
/* 0D7128 8031C128 8C820000 */ lw $v0, ($a0)
/* 0D712C 8031C12C 00809025 */ move $s2, $a0
/* 0D7130 8031C130 000277C2 */ srl $t6, $v0, 0x1f
/* 0D7134 8031C134 11C0025D */ beqz $t6, .L8031CAAC
/* 0D7138 8031C138 0002C080 */ sll $t8, $v0, 2
/* 0D713C 8031C13C 0701000D */ bgez $t8, .L8031C174
/* 0D7140 8031C140 00008025 */ move $s0, $zero
/* 0D7144 8031C144 00808825 */ move $s1, $a0
/* 0D7148 8031C148 24120010 */ li $s2, 16
.L8031C14C:
/* 0D714C 8031C14C 8E240044 */ lw $a0, 0x44($s1)
/* 0D7150 8031C150 50800004 */ beql $a0, $zero, .L8031C164
/* 0D7154 8031C154 26100004 */ addiu $s0, $s0, 4
/* 0D7158 8031C158 0C0C6C29 */ jal func_8031B0A4
/* 0D715C 8031C15C 00000000 */ nop
/* 0D7160 8031C160 26100004 */ addiu $s0, $s0, 4
.L8031C164:
/* 0D7164 8031C164 1612FFF9 */ bne $s0, $s2, .L8031C14C
/* 0D7168 8031C168 26310004 */ addiu $s1, $s1, 4
/* 0D716C 8031C16C 10000250 */ b .L8031CAB0
/* 0D7170 8031C170 8FBF0034 */ lw $ra, 0x34($sp)
.L8031C174:
/* 0D7174 8031C174 8E540040 */ lw $s4, 0x40($s2)
/* 0D7178 8031C178 8E990000 */ lw $t9, ($s4)
/* 0D717C 8031C17C 00195080 */ sll $t2, $t9, 2
/* 0D7180 8031C180 05430006 */ bgezl $t2, .L8031C19C
/* 0D7184 8031C184 96430016 */ lhu $v1, 0x16($s2)
/* 0D7188 8031C188 924B0002 */ lbu $t3, 2($s2)
/* 0D718C 8031C18C 316C0080 */ andi $t4, $t3, 0x80
/* 0D7190 8031C190 55800247 */ bnezl $t4, .L8031CAB0
/* 0D7194 8031C194 8FBF0034 */ lw $ra, 0x34($sp)
/* 0D7198 8031C198 96430016 */ lhu $v1, 0x16($s2)
.L8031C19C:
/* 0D719C 8031C19C 2650005C */ addiu $s0, $s2, 0x5c
/* 0D71A0 8031C1A0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0D71A4 8031C1A4 10600004 */ beqz $v1, .L8031C1B8
/* 0D71A8 8031C1A8 00601025 */ move $v0, $v1
/* 0D71AC 8031C1AC 246DFFFF */ addiu $t5, $v1, -1
/* 0D71B0 8031C1B0 A64D0016 */ sh $t5, 0x16($s2)
/* 0D71B4 8031C1B4 31A2FFFF */ andi $v0, $t5, 0xffff
.L8031C1B8:
/* 0D71B8 8031C1B8 14400231 */ bnez $v0, .L8031CA80
/* 0D71BC 8031C1BC 2415FFFF */ li $s5, -1
/* 0D71C0 8031C1C0 4481A800 */ mtc1 $at, $f21
/* 0D71C4 8031C1C4 4480A000 */ mtc1 $zero, $f20
/* 0D71C8 8031C1C8 83B30053 */ lb $s3, 0x53($sp)
.L8031C1CC:
glabel L8031C1CC
/* 0D71CC 8031C1CC 0C0C6C07 */ jal func_8031B01C
/* 0D71D0 8031C1D0 02002025 */ move $a0, $s0
/* 0D71D4 8031C1D4 240100FF */ li $at, 255
/* 0D71D8 8031C1D8 305100FF */ andi $s1, $v0, 0xff
/* 0D71DC 8031C1DC 1441000E */ bne $v0, $at, .L8031C218
/* 0D71E0 8031C1E0 00401825 */ move $v1, $v0
/* 0D71E4 8031C1E4 92040018 */ lbu $a0, 0x18($s0)
/* 0D71E8 8031C1E8 14800005 */ bnez $a0, .L8031C200
/* 0D71EC 8031C1EC 248EFFFF */ addiu $t6, $a0, -1
/* 0D71F0 8031C1F0 0C0C6AB4 */ jal func_8031AAD0
/* 0D71F4 8031C1F4 02402025 */ move $a0, $s2
/* 0D71F8 8031C1F8 10000222 */ b .L8031CA84
/* 0D71FC 8031C1FC 02408825 */ move $s1, $s2
.L8031C200:
/* 0D7200 8031C200 31CF00FF */ andi $t7, $t6, 0xff
/* 0D7204 8031C204 000FC080 */ sll $t8, $t7, 2
/* 0D7208 8031C208 0218C821 */ addu $t9, $s0, $t8
/* 0D720C 8031C20C A20E0018 */ sb $t6, 0x18($s0)
/* 0D7210 8031C210 8F290004 */ lw $t1, 4($t9)
/* 0D7214 8031C214 AE090000 */ sw $t1, ($s0)
.L8031C218:
/* 0D7218 8031C218 240100FE */ li $at, 254
/* 0D721C 8031C21C 10610218 */ beq $v1, $at, .L8031CA80
/* 0D7220 8031C220 240100FD */ li $at, 253
/* 0D7224 8031C224 14610005 */ bne $v1, $at, .L8031C23C
/* 0D7228 8031C228 307900F0 */ andi $t9, $v1, 0xf0
/* 0D722C 8031C22C 0C0C6C18 */ jal func_8031B060
/* 0D7230 8031C230 02002025 */ move $a0, $s0
/* 0D7234 8031C234 10000212 */ b .L8031CA80
/* 0D7238 8031C238 A6420016 */ sh $v0, 0x16($s2)
.L8031C23C:
/* 0D723C 8031C23C 240100F3 */ li $at, 243
/* 0D7240 8031C240 14610005 */ bne $v1, $at, .L8031C258
/* 0D7244 8031C244 246DFF3F */ addiu $t5, $v1, -0xc1
/* 0D7248 8031C248 924B0000 */ lbu $t3, ($s2)
/* 0D724C 8031C24C 356C0020 */ ori $t4, $t3, 0x20
/* 0D7250 8031C250 1000020B */ b .L8031CA80
/* 0D7254 8031C254 A24C0000 */ sb $t4, ($s2)
.L8031C258:
/* 0D7258 8031C258 286100C1 */ slti $at, $v1, 0xc1
/* 0D725C 8031C25C 14200185 */ bnez $at, .L8031C874
/* 0D7260 8031C260 2DA1003F */ sltiu $at, $t5, 0x3f
/* 0D7264 8031C264 1020FFD9 */ beqz $at, .L8031C1CC
/* 0D7268 8031C268 000D6880 */ sll $t5, $t5, 2
/* 0D726C 8031C26C 3C018033 */ lui $at, %hi(jtbl_80337D08)
/* 0D7270 8031C270 002D0821 */ addu $at, $at, $t5
/* 0D7274 8031C274 8C2D7D08 */ lw $t5, %lo(jtbl_80337D08)($at)
/* 0D7278 8031C278 01A00008 */ jr $t5
/* 0D727C 8031C27C 00000000 */ nop
glabel L8031C280
/* 0D7280 8031C280 0C0C6C0C */ jal func_8031B030
/* 0D7284 8031C284 02002025 */ move $a0, $s0
/* 0D7288 8031C288 920E0018 */ lbu $t6, 0x18($s0)
/* 0D728C 8031C28C 8E180000 */ lw $t8, ($s0)
/* 0D7290 8031C290 304CFFFF */ andi $t4, $v0, 0xffff
/* 0D7294 8031C294 25CF0001 */ addiu $t7, $t6, 1
/* 0D7298 8031C298 31F900FF */ andi $t9, $t7, 0xff
/* 0D729C 8031C29C 00194880 */ sll $t1, $t9, 2
/* 0D72A0 8031C2A0 02095021 */ addu $t2, $s0, $t1
/* 0D72A4 8031C2A4 A20F0018 */ sb $t7, 0x18($s0)
/* 0D72A8 8031C2A8 AD580000 */ sw $t8, ($t2)
/* 0D72AC 8031C2AC 8E8B0014 */ lw $t3, 0x14($s4)
/* 0D72B0 8031C2B0 016C6821 */ addu $t5, $t3, $t4
/* 0D72B4 8031C2B4 1000FFC5 */ b .L8031C1CC
/* 0D72B8 8031C2B8 AE0D0000 */ sw $t5, ($s0)
glabel L8031C2BC
/* 0D72BC 8031C2BC 0C0C6C07 */ jal func_8031B01C
/* 0D72C0 8031C2C0 02002025 */ move $a0, $s0
/* 0D72C4 8031C2C4 920E0018 */ lbu $t6, 0x18($s0)
/* 0D72C8 8031C2C8 020E7821 */ addu $t7, $s0, $t6
/* 0D72CC 8031C2CC A1E20014 */ sb $v0, 0x14($t7)
/* 0D72D0 8031C2D0 92190018 */ lbu $t9, 0x18($s0)
/* 0D72D4 8031C2D4 8E180000 */ lw $t8, ($s0)
/* 0D72D8 8031C2D8 27290001 */ addiu $t1, $t9, 1
/* 0D72DC 8031C2DC 312A00FF */ andi $t2, $t1, 0xff
/* 0D72E0 8031C2E0 000A5880 */ sll $t3, $t2, 2
/* 0D72E4 8031C2E4 020B6021 */ addu $t4, $s0, $t3
/* 0D72E8 8031C2E8 A2090018 */ sb $t1, 0x18($s0)
/* 0D72EC 8031C2EC 1000FFB7 */ b .L8031C1CC
/* 0D72F0 8031C2F0 AD980000 */ sw $t8, ($t4)
glabel L8031C2F4
/* 0D72F4 8031C2F4 920D0018 */ lbu $t5, 0x18($s0)
/* 0D72F8 8031C2F8 020D1021 */ addu $v0, $s0, $t5
/* 0D72FC 8031C2FC 904E0013 */ lbu $t6, 0x13($v0)
/* 0D7300 8031C300 25CFFFFF */ addiu $t7, $t6, -1
/* 0D7304 8031C304 A04F0013 */ sb $t7, 0x13($v0)
/* 0D7308 8031C308 92040018 */ lbu $a0, 0x18($s0)
/* 0D730C 8031C30C 0204C821 */ addu $t9, $s0, $a0
/* 0D7310 8031C310 93290013 */ lbu $t1, 0x13($t9)
/* 0D7314 8031C314 00801825 */ move $v1, $a0
/* 0D7318 8031C318 00035080 */ sll $t2, $v1, 2
/* 0D731C 8031C31C 11200005 */ beqz $t1, .L8031C334
/* 0D7320 8031C320 248CFFFF */ addiu $t4, $a0, -1
/* 0D7324 8031C324 020A5821 */ addu $t3, $s0, $t2
/* 0D7328 8031C328 8D780000 */ lw $t8, ($t3)
/* 0D732C 8031C32C 1000FFA7 */ b .L8031C1CC
/* 0D7330 8031C330 AE180000 */ sw $t8, ($s0)
.L8031C334:
/* 0D7334 8031C334 1000FFA5 */ b .L8031C1CC
/* 0D7338 8031C338 A20C0018 */ sb $t4, 0x18($s0)
glabel L8031C33C
/* 0D733C 8031C33C 920D0018 */ lbu $t5, 0x18($s0)
/* 0D7340 8031C340 25AEFFFF */ addiu $t6, $t5, -1
/* 0D7344 8031C344 1000FFA1 */ b .L8031C1CC
/* 0D7348 8031C348 A20E0018 */ sb $t6, 0x18($s0)
glabel L8031C34C
/* 0D734C 8031C34C 0C0C6C0C */ jal func_8031B030
/* 0D7350 8031C350 02002025 */ move $a0, $s0
/* 0D7354 8031C354 240100FA */ li $at, 250
/* 0D7358 8031C358 16210003 */ bne $s1, $at, .L8031C368
/* 0D735C 8031C35C 02201825 */ move $v1, $s1
/* 0D7360 8031C360 1660FF9A */ bnez $s3, .L8031C1CC
/* 0D7364 8031C364 00000000 */ nop
.L8031C368:
/* 0D7368 8031C368 240100F9 */ li $at, 249
/* 0D736C 8031C36C 54610004 */ bnel $v1, $at, .L8031C380
/* 0D7370 8031C370 240100F5 */ li $at, 245
/* 0D7374 8031C374 0661FF95 */ bgez $s3, .L8031C1CC
/* 0D7378 8031C378 00000000 */ nop
/* 0D737C 8031C37C 240100F5 */ li $at, 245
.L8031C380:
/* 0D7380 8031C380 54610004 */ bnel $v1, $at, .L8031C394
/* 0D7384 8031C384 8E8F0014 */ lw $t7, 0x14($s4)
/* 0D7388 8031C388 0660FF90 */ bltz $s3, .L8031C1CC
/* 0D738C 8031C38C 00000000 */ nop
/* 0D7390 8031C390 8E8F0014 */ lw $t7, 0x14($s4)
.L8031C394:
/* 0D7394 8031C394 3059FFFF */ andi $t9, $v0, 0xffff
/* 0D7398 8031C398 01F94821 */ addu $t1, $t7, $t9
/* 0D739C 8031C39C 1000FF8B */ b .L8031C1CC
/* 0D73A0 8031C3A0 AE090000 */ sw $t1, ($s0)
glabel L8031C3A4
/* 0D73A4 8031C3A4 26510080 */ addiu $s1, $s2, 0x80
/* 0D73A8 8031C3A8 0C0C64BF */ jal func_803192FC
/* 0D73AC 8031C3AC 02202025 */ move $a0, $s1
/* 0D73B0 8031C3B0 0C0C6C07 */ jal func_8031B01C
/* 0D73B4 8031C3B4 02002025 */ move $a0, $s0
/* 0D73B8 8031C3B8 02202025 */ move $a0, $s1
/* 0D73BC 8031C3BC 0C0C650A */ jal func_80319428
/* 0D73C0 8031C3C0 00402825 */ move $a1, $v0
/* 0D73C4 8031C3C4 1000FF81 */ b .L8031C1CC
/* 0D73C8 8031C3C8 00000000 */ nop
glabel L8031C3CC
/* 0D73CC 8031C3CC 0C0C64BF */ jal func_803192FC
/* 0D73D0 8031C3D0 26440080 */ addiu $a0, $s2, 0x80
/* 0D73D4 8031C3D4 1000FF7D */ b .L8031C1CC
/* 0D73D8 8031C3D8 00000000 */ nop
glabel L8031C3DC
/* 0D73DC 8031C3DC 0C0C6C0C */ jal func_8031B030
/* 0D73E0 8031C3E0 02002025 */ move $a0, $s0
/* 0D73E4 8031C3E4 8E8A0014 */ lw $t2, 0x14($s4)
/* 0D73E8 8031C3E8 304BFFFF */ andi $t3, $v0, 0xffff
/* 0D73EC 8031C3EC 014BC021 */ addu $t8, $t2, $t3
/* 0D73F0 8031C3F0 1000FF76 */ b .L8031C1CC
/* 0D73F4 8031C3F4 AE580030 */ sw $t8, 0x30($s2)
glabel L8031C3F8
/* 0D73F8 8031C3F8 1275FF74 */ beq $s3, $s5, .L8031C1CC
/* 0D73FC 8031C3FC 00000000 */ nop
/* 0D7400 8031C400 8E4C0030 */ lw $t4, 0x30($s2)
/* 0D7404 8031C404 00136840 */ sll $t5, $s3, 1
/* 0D7408 8031C408 8E8A0014 */ lw $t2, 0x14($s4)
/* 0D740C 8031C40C 018D1021 */ addu $v0, $t4, $t5
/* 0D7410 8031C410 904F0000 */ lbu $t7, ($v0)
/* 0D7414 8031C414 904E0001 */ lbu $t6, 1($v0)
/* 0D7418 8031C418 000FCA00 */ sll $t9, $t7, 8
/* 0D741C 8031C41C 01D93821 */ addu $a3, $t6, $t9
/* 0D7420 8031C420 30E9FFFF */ andi $t1, $a3, 0xffff
/* 0D7424 8031C424 01495821 */ addu $t3, $t2, $t1
/* 0D7428 8031C428 1000FF68 */ b .L8031C1CC
/* 0D742C 8031C42C AE4B0030 */ sw $t3, 0x30($s2)
glabel L8031C430
/* 0D7430 8031C430 0C0C6C07 */ jal func_8031B01C
/* 0D7434 8031C434 02002025 */ move $a0, $s0
/* 0D7438 8031C438 02402025 */ move $a0, $s2
/* 0D743C 8031C43C 0C0C700C */ jal SetInstrument
/* 0D7440 8031C440 304500FF */ andi $a1, $v0, 0xff
/* 0D7444 8031C444 1000FF61 */ b .L8031C1CC
/* 0D7448 8031C448 00000000 */ nop
glabel L8031C44C
/* 0D744C 8031C44C 92580000 */ lbu $t8, ($s2)
/* 0D7450 8031C450 330CFFFD */ andi $t4, $t8, 0xfffd
/* 0D7454 8031C454 1000FF5D */ b .L8031C1CC
/* 0D7458 8031C458 A24C0000 */ sb $t4, ($s2)
glabel L8031C45C
/* 0D745C 8031C45C 924F0000 */ lbu $t7, ($s2)
/* 0D7460 8031C460 35EE0002 */ ori $t6, $t7, 2
/* 0D7464 8031C464 1000FF59 */ b .L8031C1CC
/* 0D7468 8031C468 A24E0000 */ sb $t6, ($s2)
glabel L8031C46C
/* 0D746C 8031C46C 0C0C6C07 */ jal func_8031B01C
/* 0D7470 8031C470 02002025 */ move $a0, $s0
/* 0D7474 8031C474 02402025 */ move $a0, $s2
/* 0D7478 8031C478 0C0C7031 */ jal func_8031C0C4
/* 0D747C 8031C47C 304500FF */ andi $a1, $v0, 0xff
/* 0D7480 8031C480 1000FF52 */ b .L8031C1CC
/* 0D7484 8031C484 00000000 */ nop
glabel L8031C488
/* 0D7488 8031C488 0C0C6C07 */ jal func_8031B01C
/* 0D748C 8031C48C 02002025 */ move $a0, $s0
/* 0D7490 8031C490 44822000 */ mtc1 $v0, $f4
/* 0D7494 8031C494 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0D7498 8031C498 04410004 */ bgez $v0, .L8031C4AC
/* 0D749C 8031C49C 468021A0 */ cvt.s.w $f6, $f4
/* 0D74A0 8031C4A0 44814000 */ mtc1 $at, $f8
/* 0D74A4 8031C4A4 00000000 */ nop
/* 0D74A8 8031C4A8 46083180 */ add.s $f6, $f6, $f8
.L8031C4AC:
/* 0D74AC 8031C4AC 460032A1 */ cvt.d.s $f10, $f6
/* 0D74B0 8031C4B0 46345402 */ mul.d $f16, $f10, $f20
/* 0D74B4 8031C4B4 462084A0 */ cvt.s.d $f18, $f16
/* 0D74B8 8031C4B8 1000FF44 */ b .L8031C1CC
/* 0D74BC 8031C4BC E652001C */ swc1 $f18, 0x1c($s2)
glabel L8031C4C0
/* 0D74C0 8031C4C0 0C0C6C0C */ jal func_8031B030
/* 0D74C4 8031C4C4 02002025 */ move $a0, $s0
/* 0D74C8 8031C4C8 3059FFFF */ andi $t9, $v0, 0xffff
/* 0D74CC 8031C4CC 44992000 */ mtc1 $t9, $f4
/* 0D74D0 8031C4D0 44808000 */ mtc1 $zero, $f16
/* 0D74D4 8031C4D4 07210005 */ bgez $t9, .L8031C4EC
/* 0D74D8 8031C4D8 46802220 */ cvt.s.w $f8, $f4
/* 0D74DC 8031C4DC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0D74E0 8031C4E0 44813000 */ mtc1 $at, $f6
/* 0D74E4 8031C4E4 00000000 */ nop
/* 0D74E8 8031C4E8 46064200 */ add.s $f8, $f8, $f6
.L8031C4EC:
/* 0D74EC 8031C4EC 3C0140E0 */ li $at, 0x40E00000 # 7.000000
/* 0D74F0 8031C4F0 44818800 */ mtc1 $at, $f17
/* 0D74F4 8031C4F4 460042A1 */ cvt.d.s $f10, $f8
/* 0D74F8 8031C4F8 46305483 */ div.d $f18, $f10, $f16
/* 0D74FC 8031C4FC 46209120 */ cvt.s.d $f4, $f18
/* 0D7500 8031C500 1000FF32 */ b .L8031C1CC
/* 0D7504 8031C504 E644002C */ swc1 $f4, 0x2c($s2)
glabel L8031C508
/* 0D7508 8031C508 0C0C6C07 */ jal func_8031B01C
/* 0D750C 8031C50C 02002025 */ move $a0, $s0
/* 0D7510 8031C510 2449007F */ addiu $t1, $v0, 0x7f
/* 0D7514 8031C514 312A00FF */ andi $t2, $t1, 0xff
/* 0D7518 8031C518 000A5880 */ sll $t3, $t2, 2
/* 0D751C 8031C51C 3C018033 */ lui $at, %hi(D_80332488)
/* 0D7520 8031C520 002B0821 */ addu $at, $at, $t3
/* 0D7524 8031C524 C4262488 */ lwc1 $f6, %lo(D_80332488)($at)
/* 0D7528 8031C528 1000FF28 */ b .L8031C1CC
/* 0D752C 8031C52C E646002C */ swc1 $f6, 0x2c($s2)
glabel L8031C530
/* 0D7530 8031C530 0C0C6C07 */ jal func_8031B01C
/* 0D7534 8031C534 02002025 */ move $a0, $s0
/* 0D7538 8031C538 44824000 */ mtc1 $v0, $f8
/* 0D753C 8031C53C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0D7540 8031C540 04410004 */ bgez $v0, .L8031C554
/* 0D7544 8031C544 468042A0 */ cvt.s.w $f10, $f8
/* 0D7548 8031C548 44818000 */ mtc1 $at, $f16
/* 0D754C 8031C54C 00000000 */ nop
/* 0D7550 8031C550 46105280 */ add.s $f10, $f10, $f16
.L8031C554:
/* 0D7554 8031C554 460054A1 */ cvt.d.s $f18, $f10
/* 0D7558 8031C558 46349102 */ mul.d $f4, $f18, $f20
/* 0D755C 8031C55C 462021A0 */ cvt.s.d $f6, $f4
/* 0D7560 8031C560 1000FF1A */ b .L8031C1CC
/* 0D7564 8031C564 E6460024 */ swc1 $f6, 0x24($s2)
glabel L8031C568
/* 0D7568 8031C568 0C0C6C07 */ jal func_8031B01C
/* 0D756C 8031C56C 02002025 */ move $a0, $s0
/* 0D7570 8031C570 44824000 */ mtc1 $v0, $f8
/* 0D7574 8031C574 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0D7578 8031C578 04410004 */ bgez $v0, .L8031C58C
/* 0D757C 8031C57C 46804420 */ cvt.s.w $f16, $f8
/* 0D7580 8031C580 44815000 */ mtc1 $at, $f10
/* 0D7584 8031C584 00000000 */ nop
/* 0D7588 8031C588 460A8400 */ add.s $f16, $f16, $f10
.L8031C58C:
/* 0D758C 8031C58C 460084A1 */ cvt.d.s $f18, $f16
/* 0D7590 8031C590 46349102 */ mul.d $f4, $f18, $f20
/* 0D7594 8031C594 462021A0 */ cvt.s.d $f6, $f4
/* 0D7598 8031C598 1000FF0C */ b .L8031C1CC
/* 0D759C 8031C59C E6460028 */ swc1 $f6, 0x28($s2)
glabel L8031C5A0
/* 0D75A0 8031C5A0 8E020000 */ lw $v0, ($s0)
/* 0D75A4 8031C5A4 80430000 */ lb $v1, ($v0)
/* 0D75A8 8031C5A8 24580001 */ addiu $t8, $v0, 1
/* 0D75AC 8031C5AC AE180000 */ sw $t8, ($s0)
/* 0D75B0 8031C5B0 1000FF06 */ b .L8031C1CC
/* 0D75B4 8031C5B4 A643001A */ sh $v1, 0x1a($s2)
glabel L8031C5B8
/* 0D75B8 8031C5B8 0C0C6C0C */ jal func_8031B030
/* 0D75BC 8031C5BC 02002025 */ move $a0, $s0
/* 0D75C0 8031C5C0 8E8C0014 */ lw $t4, 0x14($s4)
/* 0D75C4 8031C5C4 304DFFFF */ andi $t5, $v0, 0xffff
/* 0D75C8 8031C5C8 018D7821 */ addu $t7, $t4, $t5
/* 0D75CC 8031C5CC 1000FEFF */ b .L8031C1CC
/* 0D75D0 8031C5D0 AE4F007C */ sw $t7, 0x7c($s2)
glabel L8031C5D4
/* 0D75D4 8031C5D4 0C0C6C07 */ jal func_8031B01C
/* 0D75D8 8031C5D8 02002025 */ move $a0, $s0
/* 0D75DC 8031C5DC 1000FEFB */ b .L8031C1CC
/* 0D75E0 8031C5E0 A2420078 */ sb $v0, 0x78($s2)
glabel L8031C5E4
/* 0D75E4 8031C5E4 0C0C6C07 */ jal func_8031B01C
/* 0D75E8 8031C5E8 02002025 */ move $a0, $s0
/* 0D75EC 8031C5EC 000270C0 */ sll $t6, $v0, 3
/* 0D75F0 8031C5F0 A64E000E */ sh $t6, 0xe($s2)
/* 0D75F4 8031C5F4 A640000A */ sh $zero, 0xa($s2)
/* 0D75F8 8031C5F8 1000FEF4 */ b .L8031C1CC
/* 0D75FC 8031C5FC A6400012 */ sh $zero, 0x12($s2)
glabel L8031C600
/* 0D7600 8031C600 0C0C6C07 */ jal func_8031B01C
/* 0D7604 8031C604 02002025 */ move $a0, $s0
/* 0D7608 8031C608 00021940 */ sll $v1, $v0, 5
/* 0D760C 8031C60C A643000C */ sh $v1, 0xc($s2)
/* 0D7610 8031C610 A6430008 */ sh $v1, 8($s2)
/* 0D7614 8031C614 1000FEED */ b .L8031C1CC
/* 0D7618 8031C618 A6400010 */ sh $zero, 0x10($s2)
glabel L8031C61C
/* 0D761C 8031C61C 0C0C6C07 */ jal func_8031B01C
/* 0D7620 8031C620 02002025 */ move $a0, $s0
/* 0D7624 8031C624 0002C8C0 */ sll $t9, $v0, 3
/* 0D7628 8031C628 A659000A */ sh $t9, 0xa($s2)
/* 0D762C 8031C62C 0C0C6C07 */ jal func_8031B01C
/* 0D7630 8031C630 02002025 */ move $a0, $s0
/* 0D7634 8031C634 000248C0 */ sll $t1, $v0, 3
/* 0D7638 8031C638 A649000E */ sh $t1, 0xe($s2)
/* 0D763C 8031C63C 0C0C6C07 */ jal func_8031B01C
/* 0D7640 8031C640 02002025 */ move $a0, $s0
/* 0D7644 8031C644 00025100 */ sll $t2, $v0, 4
/* 0D7648 8031C648 1000FEE0 */ b .L8031C1CC
/* 0D764C 8031C64C A64A0012 */ sh $t2, 0x12($s2)
glabel L8031C650
/* 0D7650 8031C650 0C0C6C07 */ jal func_8031B01C
/* 0D7654 8031C654 02002025 */ move $a0, $s0
/* 0D7658 8031C658 00025940 */ sll $t3, $v0, 5
/* 0D765C 8031C65C A64B0008 */ sh $t3, 8($s2)
/* 0D7660 8031C660 0C0C6C07 */ jal func_8031B01C
/* 0D7664 8031C664 02002025 */ move $a0, $s0
/* 0D7668 8031C668 0002C140 */ sll $t8, $v0, 5
/* 0D766C 8031C66C A658000C */ sh $t8, 0xc($s2)
/* 0D7670 8031C670 0C0C6C07 */ jal func_8031B01C
/* 0D7674 8031C674 02002025 */ move $a0, $s0
/* 0D7678 8031C678 00026100 */ sll $t4, $v0, 4
/* 0D767C 8031C67C 1000FED3 */ b .L8031C1CC
/* 0D7680 8031C680 A64C0010 */ sh $t4, 0x10($s2)
glabel L8031C684
/* 0D7684 8031C684 0C0C6C07 */ jal func_8031B01C
/* 0D7688 8031C688 02002025 */ move $a0, $s0
/* 0D768C 8031C68C 00026900 */ sll $t5, $v0, 4
/* 0D7690 8031C690 1000FECE */ b .L8031C1CC
/* 0D7694 8031C694 A64D0014 */ sh $t5, 0x14($s2)
glabel L8031C698
/* 0D7698 8031C698 0C0C6C07 */ jal func_8031B01C
/* 0D769C 8031C69C 02002025 */ move $a0, $s0
/* 0D76A0 8031C6A0 14400003 */ bnez $v0, .L8031C6B0
/* 0D76A4 8031C6A4 305100FF */ andi $s1, $v0, 0xff
/* 0D76A8 8031C6A8 3C118022 */ lui $s1, %hi(D_80226D7E) # $s1, 0x8022
/* 0D76AC 8031C6AC 92316D7E */ lbu $s1, %lo(D_80226D7E)($s1)
.L8031C6B0:
/* 0D76B0 8031C6B0 1000FEC6 */ b .L8031C1CC
/* 0D76B4 8031C6B4 A2510006 */ sb $s1, 6($s2)
glabel L8031C6B8
/* 0D76B8 8031C6B8 0C0C6C07 */ jal func_8031B01C
/* 0D76BC 8031C6BC 02002025 */ move $a0, $s0
/* 0D76C0 8031C6C0 1000FEC2 */ b .L8031C1CC
/* 0D76C4 8031C6C4 A2420003 */ sb $v0, 3($s2)
glabel L8031C6C8
/* 0D76C8 8031C6C8 0C0C6C07 */ jal func_8031B01C
/* 0D76CC 8031C6CC 02002025 */ move $a0, $s0
/* 0D76D0 8031C6D0 928F0005 */ lbu $t7, 5($s4)
/* 0D76D4 8031C6D4 3C038022 */ lui $v1, %hi(D_80226D58) # $v1, 0x8022
/* 0D76D8 8031C6D8 8C636D58 */ lw $v1, %lo(D_80226D58)($v1)
/* 0D76DC 8031C6DC 000F7040 */ sll $t6, $t7, 1
/* 0D76E0 8031C6E0 3C048022 */ lui $a0, %hi(D_802214F8) # $a0, 0x8022
/* 0D76E4 8031C6E4 006EC821 */ addu $t9, $v1, $t6
/* 0D76E8 8031C6E8 97270000 */ lhu $a3, ($t9)
/* 0D76EC 8031C6EC 248414F8 */ addiu $a0, %lo(D_802214F8) # addiu $a0, $a0, 0x14f8
/* 0D76F0 8031C6F0 24050002 */ li $a1, 2
/* 0D76F4 8031C6F4 00E34821 */ addu $t1, $a3, $v1
/* 0D76F8 8031C6F8 91280000 */ lbu $t0, ($t1)
/* 0D76FC 8031C6FC 00E85021 */ addu $t2, $a3, $t0
/* 0D7700 8031C700 01425823 */ subu $t3, $t2, $v0
/* 0D7704 8031C704 0163C021 */ addu $t8, $t3, $v1
/* 0D7708 8031C708 93110000 */ lbu $s1, ($t8)
/* 0D770C 8031C70C 0C0C5A03 */ jal func_8031680C
/* 0D7710 8031C710 02203025 */ move $a2, $s1
/* 0D7714 8031C714 1040FEAD */ beqz $v0, .L8031C1CC
/* 0D7718 8031C718 00000000 */ nop
/* 0D771C 8031C71C 1000FEAB */ b .L8031C1CC
/* 0D7720 8031C720 A2510005 */ sb $s1, 5($s2)
glabel L8031C724
/* 0D7724 8031C724 326C00FF */ andi $t4, $s3, 0xff
/* 0D7728 8031C728 AFAC0038 */ sw $t4, 0x38($sp)
/* 0D772C 8031C72C 0C0C6C07 */ jal func_8031B01C
/* 0D7730 8031C730 02002025 */ move $a0, $s0
/* 0D7734 8031C734 305100FF */ andi $s1, $v0, 0xff
/* 0D7738 8031C738 0C0C6C0C */ jal func_8031B030
/* 0D773C 8031C73C 02002025 */ move $a0, $s0
/* 0D7740 8031C740 8E8D0014 */ lw $t5, 0x14($s4)
/* 0D7744 8031C744 8FAE0038 */ lw $t6, 0x38($sp)
/* 0D7748 8031C748 304FFFFF */ andi $t7, $v0, 0xffff
/* 0D774C 8031C74C 01AF1821 */ addu $v1, $t5, $t7
/* 0D7750 8031C750 01D1C821 */ addu $t9, $t6, $s1
/* 0D7754 8031C754 1000FE9D */ b .L8031C1CC
/* 0D7758 8031C758 A0790000 */ sb $t9, ($v1)
glabel L8031C75C
/* 0D775C 8031C75C 0C0C6C07 */ jal func_8031B01C
/* 0D7760 8031C760 02002025 */ move $a0, $s0
/* 0D7764 8031C764 240100C8 */ li $at, 200
/* 0D7768 8031C768 16210005 */ bne $s1, $at, .L8031C780
/* 0D776C 8031C76C 02201825 */ move $v1, $s1
/* 0D7770 8031C770 02629823 */ subu $s3, $s3, $v0
/* 0D7774 8031C774 00135E00 */ sll $t3, $s3, 0x18
/* 0D7778 8031C778 1000FE94 */ b .L8031C1CC
/* 0D777C 8031C77C 000B9E03 */ sra $s3, $t3, 0x18
.L8031C780:
/* 0D7780 8031C780 240100CC */ li $at, 204
/* 0D7784 8031C784 14610005 */ bne $v1, $at, .L8031C79C
/* 0D7788 8031C788 02629824 */ and $s3, $s3, $v0
/* 0D778C 8031C78C 00029E00 */ sll $s3, $v0, 0x18
/* 0D7790 8031C790 00136603 */ sra $t4, $s3, 0x18
/* 0D7794 8031C794 1000FE8D */ b .L8031C1CC
/* 0D7798 8031C798 01809825 */ move $s3, $t4
.L8031C79C:
/* 0D779C 8031C79C 00137600 */ sll $t6, $s3, 0x18
/* 0D77A0 8031C7A0 1000FE8A */ b .L8031C1CC
/* 0D77A4 8031C7A4 000E9E03 */ sra $s3, $t6, 0x18
glabel L8031C7A8
/* 0D77A8 8031C7A8 0C0C6C07 */ jal func_8031B01C
/* 0D77AC 8031C7AC 02002025 */ move $a0, $s0
/* 0D77B0 8031C7B0 1000FE86 */ b .L8031C1CC
/* 0D77B4 8031C7B4 A2420002 */ sb $v0, 2($s2)
glabel L8031C7B8
/* 0D77B8 8031C7B8 0C0C6C0C */ jal func_8031B030
/* 0D77BC 8031C7BC 02002025 */ move $a0, $s0
/* 0D77C0 8031C7C0 8E890014 */ lw $t1, 0x14($s4)
/* 0D77C4 8031C7C4 304AFFFF */ andi $t2, $v0, 0xffff
/* 0D77C8 8031C7C8 01535821 */ addu $t3, $t2, $s3
/* 0D77CC 8031C7CC 012BC021 */ addu $t8, $t1, $t3
/* 0D77D0 8031C7D0 1000FE7E */ b .L8031C1CC
/* 0D77D4 8031C7D4 83130000 */ lb $s3, ($t8)
glabel L8031C7D8
/* 0D77D8 8031C7D8 0C0C6C07 */ jal func_8031B01C
/* 0D77DC 8031C7DC 02002025 */ move $a0, $s0
/* 0D77E0 8031C7E0 924E0000 */ lbu $t6, ($s2)
/* 0D77E4 8031C7E4 00026880 */ sll $t5, $v0, 2
/* 0D77E8 8031C7E8 31AF0004 */ andi $t7, $t5, 4
/* 0D77EC 8031C7EC 31D9FFFB */ andi $t9, $t6, 0xfffb
/* 0D77F0 8031C7F0 01F95025 */ or $t2, $t7, $t9
/* 0D77F4 8031C7F4 1000FE75 */ b .L8031C1CC
/* 0D77F8 8031C7F8 A24A0000 */ sb $t2, ($s2)
glabel L8031C7FC
/* 0D77FC 8031C7FC 0C0C6C07 */ jal func_8031B01C
/* 0D7800 8031C800 02002025 */ move $a0, $s0
/* 0D7804 8031C804 1000FE71 */ b .L8031C1CC
/* 0D7808 8031C808 A2420001 */ sb $v0, 1($s2)
glabel L8031C80C
/* 0D780C 8031C80C 0C0C6C07 */ jal func_8031B01C
/* 0D7810 8031C810 02002025 */ move $a0, $s0
/* 0D7814 8031C814 00024A00 */ sll $t1, $v0, 8
/* 0D7818 8031C818 1000FE6C */ b .L8031C1CC
/* 0D781C 8031C81C A649007A */ sh $t1, 0x7a($s2)
glabel L8031C820
/* 0D7820 8031C820 1275FE6A */ beq $s3, $s5, .L8031C1CC
/* 0D7824 8031C824 0013C040 */ sll $t8, $s3, 1
/* 0D7828 8031C828 920C0018 */ lbu $t4, 0x18($s0)
/* 0D782C 8031C82C 8E4B0030 */ lw $t3, 0x30($s2)
/* 0D7830 8031C830 8E0E0000 */ lw $t6, ($s0)
/* 0D7834 8031C834 258D0001 */ addiu $t5, $t4, 1
/* 0D7838 8031C838 31AF00FF */ andi $t7, $t5, 0xff
/* 0D783C 8031C83C 000FC880 */ sll $t9, $t7, 2
/* 0D7840 8031C840 02195021 */ addu $t2, $s0, $t9
/* 0D7844 8031C844 A20D0018 */ sb $t5, 0x18($s0)
/* 0D7848 8031C848 01781021 */ addu $v0, $t3, $t8
/* 0D784C 8031C84C AD4E0000 */ sw $t6, ($t2)
/* 0D7850 8031C850 904B0000 */ lbu $t3, ($v0)
/* 0D7854 8031C854 90490001 */ lbu $t1, 1($v0)
/* 0D7858 8031C858 8E8D0014 */ lw $t5, 0x14($s4)
/* 0D785C 8031C85C 000BC200 */ sll $t8, $t3, 8
/* 0D7860 8031C860 01383821 */ addu $a3, $t1, $t8
/* 0D7864 8031C864 30ECFFFF */ andi $t4, $a3, 0xffff
/* 0D7868 8031C868 01AC7821 */ addu $t7, $t5, $t4
/* 0D786C 8031C86C 1000FE57 */ b .L8031C1CC
/* 0D7870 8031C870 AE0F0000 */ sw $t7, ($s0)
.L8031C874:
/* 0D7874 8031C874 3064000F */ andi $a0, $v1, 0xf
/* 0D7878 8031C878 2F2100B1 */ sltiu $at, $t9, 0xb1
/* 0D787C 8031C87C 1020FE53 */ beqz $at, .L8031C1CC
/* 0D7880 8031C880 308800FF */ andi $t0, $a0, 0xff
/* 0D7884 8031C884 0019C880 */ sll $t9, $t9, 2
/* 0D7888 8031C888 3C018033 */ lui $at, %hi(jtbl_80337E04)
/* 0D788C 8031C88C 00390821 */ addu $at, $at, $t9
/* 0D7890 8031C890 8C397E04 */ lw $t9, %lo(jtbl_80337E04)($at)
/* 0D7894 8031C894 03200008 */ jr $t9
/* 0D7898 8031C898 00000000 */ nop
glabel L8031C89C
/* 0D789C 8031C89C 308E00FF */ andi $t6, $a0, 0xff
/* 0D78A0 8031C8A0 000E5080 */ sll $t2, $t6, 2
/* 0D78A4 8031C8A4 024A5821 */ addu $t3, $s2, $t2
/* 0D78A8 8031C8A8 8D630044 */ lw $v1, 0x44($t3)
/* 0D78AC 8031C8AC 1060FE47 */ beqz $v1, .L8031C1CC
/* 0D78B0 8031C8B0 00000000 */ nop
/* 0D78B4 8031C8B4 8C730000 */ lw $s3, ($v1)
/* 0D78B8 8031C8B8 00134840 */ sll $t1, $s3, 1
/* 0D78BC 8031C8BC 0009C7C2 */ srl $t8, $t1, 0x1f
/* 0D78C0 8031C8C0 00186600 */ sll $t4, $t8, 0x18
/* 0D78C4 8031C8C4 1000FE41 */ b .L8031C1CC
/* 0D78C8 8031C8C8 000C9E03 */ sra $s3, $t4, 0x18
glabel L8031C8CC
/* 0D78CC 8031C8CC 308F00FF */ andi $t7, $a0, 0xff
/* 0D78D0 8031C8D0 024FC821 */ addu $t9, $s2, $t7
/* 0D78D4 8031C8D4 1000FE3D */ b .L8031C1CC
/* 0D78D8 8031C8D8 A3330054 */ sb $s3, 0x54($t9)
glabel L8031C8DC
/* 0D78DC 8031C8DC 308300FF */ andi $v1, $a0, 0xff
/* 0D78E0 8031C8E0 02432821 */ addu $a1, $s2, $v1
/* 0D78E4 8031C8E4 28610004 */ slti $at, $v1, 4
/* 0D78E8 8031C8E8 1020FE38 */ beqz $at, .L8031C1CC
/* 0D78EC 8031C8EC 80B30054 */ lb $s3, 0x54($a1)
/* 0D78F0 8031C8F0 1000FE36 */ b .L8031C1CC
/* 0D78F4 8031C8F4 A0B50054 */ sb $s5, 0x54($a1)
glabel L8031C8F8
/* 0D78F8 8031C8F8 308E00FF */ andi $t6, $a0, 0xff
/* 0D78FC 8031C8FC 024E5021 */ addu $t2, $s2, $t6
/* 0D7900 8031C900 814B0054 */ lb $t3, 0x54($t2)
/* 0D7904 8031C904 026B9823 */ subu $s3, $s3, $t3
/* 0D7908 8031C908 00134E00 */ sll $t1, $s3, 0x18
/* 0D790C 8031C90C 1000FE2F */ b .L8031C1CC
/* 0D7910 8031C910 00099E03 */ sra $s3, $t1, 0x18
glabel L8031C914
/* 0D7914 8031C914 0C0C6C0C */ jal func_8031B030
/* 0D7918 8031C918 02002025 */ move $a0, $s0
/* 0D791C 8031C91C 02201825 */ move $v1, $s1
/* 0D7920 8031C920 3065000F */ andi $a1, $v1, 0xf
/* 0D7924 8031C924 00A01825 */ move $v1, $a1
/* 0D7928 8031C928 AFA50038 */ sw $a1, 0x38($sp)
/* 0D792C 8031C92C 02402025 */ move $a0, $s2
/* 0D7930 8031C930 0C0C6A48 */ jal func_8031A920
/* 0D7934 8031C934 A7A2005A */ sh $v0, 0x5a($sp)
/* 0D7938 8031C938 8FA30038 */ lw $v1, 0x38($sp)
/* 0D793C 8031C93C 1440FE23 */ bnez $v0, .L8031C1CC
/* 0D7940 8031C940 97A7005A */ lhu $a3, 0x5a($sp)
/* 0D7944 8031C944 8E8D0014 */ lw $t5, 0x14($s4)
/* 0D7948 8031C948 0003C880 */ sll $t9, $v1, 2
/* 0D794C 8031C94C 02597021 */ addu $t6, $s2, $t9
/* 0D7950 8031C950 8DCA0044 */ lw $t2, 0x44($t6)
/* 0D7954 8031C954 01A77821 */ addu $t7, $t5, $a3
/* 0D7958 8031C958 1000FE1C */ b .L8031C1CC
/* 0D795C 8031C95C AD4F0054 */ sw $t7, 0x54($t2)
glabel L8031C960
/* 0D7960 8031C960 02202825 */ move $a1, $s1
/* 0D7964 8031C964 30AB000F */ andi $t3, $a1, 0xf
/* 0D7968 8031C968 01602825 */ move $a1, $t3
/* 0D796C 8031C96C 0C0C6A93 */ jal func_8031AA4C
/* 0D7970 8031C970 02402025 */ move $a0, $s2
/* 0D7974 8031C974 1000FE15 */ b .L8031C1CC
/* 0D7978 8031C978 00000000 */ nop
glabel L8031C97C
/* 0D797C 8031C97C 1275FE13 */ beq $s3, $s5, .L8031C1CC
/* 0D7980 8031C980 02402025 */ move $a0, $s2
/* 0D7984 8031C984 02201825 */ move $v1, $s1
/* 0D7988 8031C988 3065000F */ andi $a1, $v1, 0xf
/* 0D798C 8031C98C 00A01825 */ move $v1, $a1
/* 0D7990 8031C990 0C0C6A48 */ jal func_8031A920
/* 0D7994 8031C994 AFA50038 */ sw $a1, 0x38($sp)
/* 0D7998 8031C998 1055FE0C */ beq $v0, $s5, .L8031C1CC
/* 0D799C 8031C99C 8FA30038 */ lw $v1, 0x38($sp)
/* 0D79A0 8031C9A0 8E580030 */ lw $t8, 0x30($s2)
/* 0D79A4 8031C9A4 00136040 */ sll $t4, $s3, 1
/* 0D79A8 8031C9A8 8E8A0014 */ lw $t2, 0x14($s4)
/* 0D79AC 8031C9AC 030C1021 */ addu $v0, $t8, $t4
/* 0D79B0 8031C9B0 90590000 */ lbu $t9, ($v0)
/* 0D79B4 8031C9B4 904D0001 */ lbu $t5, 1($v0)
/* 0D79B8 8031C9B8 00034880 */ sll $t1, $v1, 2
/* 0D79BC 8031C9BC 00197200 */ sll $t6, $t9, 8
/* 0D79C0 8031C9C0 0249C021 */ addu $t8, $s2, $t1
/* 0D79C4 8031C9C4 01AE3821 */ addu $a3, $t5, $t6
/* 0D79C8 8031C9C8 8F0C0044 */ lw $t4, 0x44($t8)
/* 0D79CC 8031C9CC 30EFFFFF */ andi $t7, $a3, 0xffff
/* 0D79D0 8031C9D0 014F5821 */ addu $t3, $t2, $t7
/* 0D79D4 8031C9D4 1000FDFD */ b .L8031C1CC
/* 0D79D8 8031C9D8 AD8B0054 */ sw $t3, 0x54($t4)
glabel L8031C9DC
/* 0D79DC 8031C9DC 1000FDFB */ b .L8031C1CC
/* 0D79E0 8031C9E0 A2440004 */ sb $a0, 4($s2)
glabel L8031C9E4
/* 0D79E4 8031C9E4 0C0C6C0C */ jal func_8031B030
/* 0D79E8 8031C9E8 02002025 */ move $a0, $s0
/* 0D79EC 8031C9EC 8E8D0014 */ lw $t5, 0x14($s4)
/* 0D79F0 8031C9F0 02202825 */ move $a1, $s1
/* 0D79F4 8031C9F4 30B9000F */ andi $t9, $a1, 0xf
/* 0D79F8 8031C9F8 304EFFFF */ andi $t6, $v0, 0xffff
/* 0D79FC 8031C9FC 03202825 */ move $a1, $t9
/* 0D7A00 8031CA00 02802025 */ move $a0, $s4
/* 0D7A04 8031CA04 0C0C6B60 */ jal func_8031AD80
/* 0D7A08 8031CA08 01AE3021 */ addu $a2, $t5, $t6
/* 0D7A0C 8031CA0C 1000FDEF */ b .L8031C1CC
/* 0D7A10 8031CA10 00000000 */ nop
glabel L8031CA14
/* 0D7A14 8031CA14 322A000F */ andi $t2, $s1, 0xf
/* 0D7A18 8031CA18 000A4880 */ sll $t1, $t2, 2
/* 0D7A1C 8031CA1C 0289C021 */ addu $t8, $s4, $t1
/* 0D7A20 8031CA20 0C0C6AB4 */ jal func_8031AAD0
/* 0D7A24 8031CA24 8F04002C */ lw $a0, 0x2c($t8)
/* 0D7A28 8031CA28 1000FDE8 */ b .L8031C1CC
/* 0D7A2C 8031CA2C 00000000 */ nop
glabel L8031CA30
/* 0D7A30 8031CA30 02002025 */ move $a0, $s0
/* 0D7A34 8031CA34 0C0C6C07 */ jal func_8031B01C
/* 0D7A38 8031CA38 A3A8005D */ sb $t0, 0x5d($sp)
/* 0D7A3C 8031CA3C 93A8005D */ lbu $t0, 0x5d($sp)
/* 0D7A40 8031CA40 00085880 */ sll $t3, $t0, 2
/* 0D7A44 8031CA44 028B6021 */ addu $t4, $s4, $t3
/* 0D7A48 8031CA48 8D99002C */ lw $t9, 0x2c($t4)
/* 0D7A4C 8031CA4C 03226821 */ addu $t5, $t9, $v0
/* 0D7A50 8031CA50 1000FDDE */ b .L8031C1CC
/* 0D7A54 8031CA54 A1B30054 */ sb $s3, 0x54($t5)
glabel L8031CA58
/* 0D7A58 8031CA58 02002025 */ move $a0, $s0
/* 0D7A5C 8031CA5C 0C0C6C07 */ jal func_8031B01C
/* 0D7A60 8031CA60 A3A8005D */ sb $t0, 0x5d($sp)
/* 0D7A64 8031CA64 93A8005D */ lbu $t0, 0x5d($sp)
/* 0D7A68 8031CA68 00087080 */ sll $t6, $t0, 2
/* 0D7A6C 8031CA6C 028E7821 */ addu $t7, $s4, $t6
/* 0D7A70 8031CA70 8DEA002C */ lw $t2, 0x2c($t7)
/* 0D7A74 8031CA74 01424821 */ addu $t1, $t2, $v0
/* 0D7A78 8031CA78 1000FDD4 */ b .L8031C1CC
/* 0D7A7C 8031CA7C 81330054 */ lb $s3, 0x54($t1)
.L8031CA80:
/* 0D7A80 8031CA80 02408825 */ move $s1, $s2
.L8031CA84:
/* 0D7A84 8031CA84 24120010 */ li $s2, 16
/* 0D7A88 8031CA88 00008025 */ move $s0, $zero
.L8031CA8C:
/* 0D7A8C 8031CA8C 8E240044 */ lw $a0, 0x44($s1)
/* 0D7A90 8031CA90 50800004 */ beql $a0, $zero, .L8031CAA4
/* 0D7A94 8031CA94 26100004 */ addiu $s0, $s0, 4
/* 0D7A98 8031CA98 0C0C6C29 */ jal func_8031B0A4
/* 0D7A9C 8031CA9C 00000000 */ nop
/* 0D7AA0 8031CAA0 26100004 */ addiu $s0, $s0, 4
.L8031CAA4:
/* 0D7AA4 8031CAA4 1612FFF9 */ bne $s0, $s2, .L8031CA8C
/* 0D7AA8 8031CAA8 26310004 */ addiu $s1, $s1, 4
.L8031CAAC:
/* 0D7AAC 8031CAAC 8FBF0034 */ lw $ra, 0x34($sp)
.L8031CAB0:
/* 0D7AB0 8031CAB0 D7B40010 */ ldc1 $f20, 0x10($sp)
/* 0D7AB4 8031CAB4 8FB0001C */ lw $s0, 0x1c($sp)
/* 0D7AB8 8031CAB8 8FB10020 */ lw $s1, 0x20($sp)
/* 0D7ABC 8031CABC 8FB20024 */ lw $s2, 0x24($sp)
/* 0D7AC0 8031CAC0 8FB30028 */ lw $s3, 0x28($sp)
/* 0D7AC4 8031CAC4 8FB4002C */ lw $s4, 0x2c($sp)
/* 0D7AC8 8031CAC8 8FB50030 */ lw $s5, 0x30($sp)
/* 0D7ACC 8031CACC 03E00008 */ jr $ra
/* 0D7AD0 8031CAD0 27BD0068 */ addiu $sp, $sp, 0x68