papermario/asm/nonmatchings/code_a5dd0_len_114e0/func_8011620C.s
2020-08-12 22:37:16 -04:00

313 lines
14 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8011620C
/* 0AC90C 8011620C 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 0AC910 80116210 AFB40040 */ sw $s4, 0x40($sp)
/* 0AC914 80116214 0080A02D */ daddu $s4, $a0, $zero
/* 0AC918 80116218 AFBF0044 */ sw $ra, 0x44($sp)
/* 0AC91C 8011621C AFB3003C */ sw $s3, 0x3c($sp)
/* 0AC920 80116220 AFB20038 */ sw $s2, 0x38($sp)
/* 0AC924 80116224 AFB10034 */ sw $s1, 0x34($sp)
/* 0AC928 80116228 AFB00030 */ sw $s0, 0x30($sp)
/* 0AC92C 8011622C 8E920004 */ lw $s2, 4($s4)
/* 0AC930 80116230 2405005F */ addiu $a1, $zero, 0x5f
/* 0AC934 80116234 0C0456C3 */ jal get_model_property
/* 0AC938 80116238 0240202D */ daddu $a0, $s2, $zero
/* 0AC93C 8011623C 0040802D */ daddu $s0, $v0, $zero
/* 0AC940 80116240 12000023 */ beqz $s0, .L801162D0
/* 0AC944 80116244 0000982D */ daddu $s3, $zero, $zero
/* 0AC948 80116248 9202000B */ lbu $v0, 0xb($s0)
/* 0AC94C 8011624C 00028902 */ srl $s1, $v0, 4
/* 0AC950 80116250 1220001F */ beqz $s1, .L801162D0
/* 0AC954 80116254 0240202D */ daddu $a0, $s2, $zero
/* 0AC958 80116258 0C0456C3 */ jal get_model_property
/* 0AC95C 8011625C 24050061 */ addiu $a1, $zero, 0x61
/* 0AC960 80116260 0040802D */ daddu $s0, $v0, $zero
/* 0AC964 80116264 12000019 */ beqz $s0, .L801162CC
/* 0AC968 80116268 27A20020 */ addiu $v0, $sp, 0x20
/* 0AC96C 8011626C C6000008 */ lwc1 $f0, 8($s0)
/* 0AC970 80116270 C602002C */ lwc1 $f2, 0x2c($s0)
/* 0AC974 80116274 46020000 */ add.s $f0, $f0, $f2
/* 0AC978 80116278 3C013F00 */ lui $at, 0x3f00
/* 0AC97C 8011627C 44812000 */ mtc1 $at, $f4
/* 0AC980 80116280 00000000 */ nop
/* 0AC984 80116284 46040002 */ mul.s $f0, $f0, $f4
/* 0AC988 80116288 00000000 */ nop
/* 0AC98C 8011628C C6020044 */ lwc1 $f2, 0x44($s0)
/* 0AC990 80116290 44050000 */ mfc1 $a1, $f0
/* 0AC994 80116294 C6000020 */ lwc1 $f0, 0x20($s0)
/* 0AC998 80116298 46020000 */ add.s $f0, $f0, $f2
/* 0AC99C 8011629C 46040002 */ mul.s $f0, $f0, $f4
/* 0AC9A0 801162A0 00000000 */ nop
/* 0AC9A4 801162A4 44070000 */ mfc1 $a3, $f0
/* 0AC9A8 801162A8 3C013F80 */ lui $at, 0x3f80
/* 0AC9AC 801162AC 44810000 */ mtc1 $at, $f0
/* 0AC9B0 801162B0 AFA20014 */ sw $v0, 0x14($sp)
/* 0AC9B4 801162B4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 0AC9B8 801162B8 8E060014 */ lw $a2, 0x14($s0)
/* 0AC9BC 801162BC 0C01C124 */ jal func_80070490
/* 0AC9C0 801162C0 2624FFFF */ addiu $a0, $s1, -1
/* 0AC9C4 801162C4 08045995 */ j .L80116654
/* 0AC9C8 801162C8 00000000 */ nop
.L801162CC:
/* 0AC9CC 801162CC 0000982D */ daddu $s3, $zero, $zero
.L801162D0:
/* 0AC9D0 801162D0 3C108015 */ lui $s0, 0x8015
/* 0AC9D4 801162D4 261012CC */ addiu $s0, $s0, 0x12cc
/* 0AC9D8 801162D8 8E030000 */ lw $v1, ($s0)
.L801162DC:
/* 0AC9DC 801162DC 8C620000 */ lw $v0, ($v1)
/* 0AC9E0 801162E0 10400005 */ beqz $v0, .L801162F8
/* 0AC9E4 801162E4 00000000 */ nop
/* 0AC9E8 801162E8 26730001 */ addiu $s3, $s3, 1
/* 0AC9EC 801162EC 2A620100 */ slti $v0, $s3, 0x100
/* 0AC9F0 801162F0 1440FFFA */ bnez $v0, .L801162DC
/* 0AC9F4 801162F4 24630004 */ addiu $v1, $v1, 4
.L801162F8:
/* 0AC9F8 801162F8 0C00AB39 */ jal heap_malloc
/* 0AC9FC 801162FC 240400B0 */ addiu $a0, $zero, 0xb0
/* 0ACA00 80116300 00131880 */ sll $v1, $s3, 2
/* 0ACA04 80116304 8E040000 */ lw $a0, ($s0)
/* 0ACA08 80116308 0040882D */ daddu $s1, $v0, $zero
/* 0ACA0C 8011630C 00641821 */ addu $v1, $v1, $a0
/* 0ACA10 80116310 AC710000 */ sw $s1, ($v1)
/* 0ACA14 80116314 96820000 */ lhu $v0, ($s4)
/* 0ACA18 80116318 3C038015 */ lui $v1, 0x8015
/* 0ACA1C 8011631C 94633226 */ lhu $v1, 0x3226($v1)
/* 0ACA20 80116320 34420001 */ ori $v0, $v0, 1
/* 0ACA24 80116324 A6230002 */ sh $v1, 2($s1)
/* 0ACA28 80116328 A6220000 */ sh $v0, ($s1)
/* 0ACA2C 8011632C 8E820004 */ lw $v0, 4($s4)
/* 0ACA30 80116330 2405005F */ addiu $a1, $zero, 0x5f
/* 0ACA34 80116334 AE220008 */ sw $v0, 8($s1)
/* 0ACA38 80116338 0040902D */ daddu $s2, $v0, $zero
/* 0ACA3C 8011633C 8E820008 */ lw $v0, 8($s4)
/* 0ACA40 80116340 0240202D */ daddu $a0, $s2, $zero
/* 0ACA44 80116344 A22000A7 */ sb $zero, 0xa7($s1)
/* 0ACA48 80116348 0C0456C3 */ jal get_model_property
/* 0ACA4C 8011634C AE22000C */ sw $v0, 0xc($s1)
/* 0ACA50 80116350 0040802D */ daddu $s0, $v0, $zero
/* 0ACA54 80116354 52000004 */ beql $s0, $zero, .L80116368
/* 0ACA58 80116358 A22000A4 */ sb $zero, 0xa4($s1)
/* 0ACA5C 8011635C 9202000B */ lbu $v0, 0xb($s0)
/* 0ACA60 80116360 3042000F */ andi $v0, $v0, 0xf
/* 0ACA64 80116364 A22200A4 */ sb $v0, 0xa4($s1)
.L80116368:
/* 0ACA68 80116368 A22000A5 */ sb $zero, 0xa5($s1)
/* 0ACA6C 8011636C 8E430000 */ lw $v1, ($s2)
/* 0ACA70 80116370 24020005 */ addiu $v0, $zero, 5
/* 0ACA74 80116374 10620005 */ beq $v1, $v0, .L8011638C
/* 0ACA78 80116378 0240202D */ daddu $a0, $s2, $zero
/* 0ACA7C 8011637C 0C0456C3 */ jal get_model_property
/* 0ACA80 80116380 2405005C */ addiu $a1, $zero, 0x5c
/* 0ACA84 80116384 080458E8 */ j .L801163A0
/* 0ACA88 80116388 0040802D */ daddu $s0, $v0, $zero
.L8011638C:
/* 0ACA8C 8011638C 0C0456C3 */ jal get_model_property
/* 0ACA90 80116390 24050060 */ addiu $a1, $zero, 0x60
/* 0ACA94 80116394 0040802D */ daddu $s0, $v0, $zero
/* 0ACA98 80116398 12000006 */ beqz $s0, .L801163B4
/* 0ACA9C 8011639C 2610000C */ addiu $s0, $s0, 0xc
.L801163A0:
/* 0ACAA0 801163A0 12000005 */ beqz $s0, .L801163B8
/* 0ACAA4 801163A4 24020001 */ addiu $v0, $zero, 1
/* 0ACAA8 801163A8 9202000B */ lbu $v0, 0xb($s0)
/* 0ACAAC 801163AC 080458EF */ j .L801163BC
/* 0ACAB0 801163B0 A22200A6 */ sb $v0, 0xa6($s1)
.L801163B4:
/* 0ACAB4 801163B4 24020001 */ addiu $v0, $zero, 1
.L801163B8:
/* 0ACAB8 801163B8 A22200A6 */ sb $v0, 0xa6($s1)
.L801163BC:
/* 0ACABC 801163BC 3C028015 */ lui $v0, 0x8015
/* 0ACAC0 801163C0 8C423224 */ lw $v0, 0x3224($v0)
/* 0ACAC4 801163C4 3C03800A */ lui $v1, 0x800a
/* 0ACAC8 801163C8 8C63A5F4 */ lw $v1, -0x5a0c($v1)
/* 0ACACC 801163CC 00021080 */ sll $v0, $v0, 2
/* 0ACAD0 801163D0 00431021 */ addu $v0, $v0, $v1
/* 0ACAD4 801163D4 90420002 */ lbu $v0, 2($v0)
/* 0ACAD8 801163D8 A22000A9 */ sb $zero, 0xa9($s1)
/* 0ACADC 801163DC A22200A8 */ sb $v0, 0xa8($s1)
/* 0ACAE0 801163E0 0C046F85 */ jal func_8011BE14
/* 0ACAE4 801163E4 8E84000C */ lw $a0, 0xc($s4)
/* 0ACAE8 801163E8 14400021 */ bnez $v0, .L80116470
/* 0ACAEC 801163EC 26240018 */ addiu $a0, $s1, 0x18
/* 0ACAF0 801163F0 0C00AB39 */ jal heap_malloc
/* 0ACAF4 801163F4 24040040 */ addiu $a0, $zero, 0x40
/* 0ACAF8 801163F8 AE220004 */ sw $v0, 4($s1)
/* 0ACAFC 801163FC 8E84000C */ lw $a0, 0xc($s4)
/* 0ACB00 80116400 24830040 */ addiu $v1, $a0, 0x40
.L80116404:
/* 0ACB04 80116404 8C880000 */ lw $t0, ($a0)
/* 0ACB08 80116408 8C890004 */ lw $t1, 4($a0)
/* 0ACB0C 8011640C 8C8A0008 */ lw $t2, 8($a0)
/* 0ACB10 80116410 8C8B000C */ lw $t3, 0xc($a0)
/* 0ACB14 80116414 AC480000 */ sw $t0, ($v0)
/* 0ACB18 80116418 AC490004 */ sw $t1, 4($v0)
/* 0ACB1C 8011641C AC4A0008 */ sw $t2, 8($v0)
/* 0ACB20 80116420 AC4B000C */ sw $t3, 0xc($v0)
/* 0ACB24 80116424 24840010 */ addiu $a0, $a0, 0x10
/* 0ACB28 80116428 1483FFF6 */ bne $a0, $v1, .L80116404
/* 0ACB2C 8011642C 24420010 */ addiu $v0, $v0, 0x10
/* 0ACB30 80116430 8E220004 */ lw $v0, 4($s1)
/* 0ACB34 80116434 26230018 */ addiu $v1, $s1, 0x18
/* 0ACB38 80116438 24440040 */ addiu $a0, $v0, 0x40
.L8011643C:
/* 0ACB3C 8011643C 8C480000 */ lw $t0, ($v0)
/* 0ACB40 80116440 8C490004 */ lw $t1, 4($v0)
/* 0ACB44 80116444 8C4A0008 */ lw $t2, 8($v0)
/* 0ACB48 80116448 8C4B000C */ lw $t3, 0xc($v0)
/* 0ACB4C 8011644C AC680000 */ sw $t0, ($v1)
/* 0ACB50 80116450 AC690004 */ sw $t1, 4($v1)
/* 0ACB54 80116454 AC6A0008 */ sw $t2, 8($v1)
/* 0ACB58 80116458 AC6B000C */ sw $t3, 0xc($v1)
/* 0ACB5C 8011645C 24420010 */ addiu $v0, $v0, 0x10
/* 0ACB60 80116460 1444FFF6 */ bne $v0, $a0, .L8011643C
/* 0ACB64 80116464 24630010 */ addiu $v1, $v1, 0x10
/* 0ACB68 80116468 08045921 */ j .L80116484
/* 0ACB6C 8011646C 00000000 */ nop
.L80116470:
/* 0ACB70 80116470 0C019D10 */ jal guMtxIdent
/* 0ACB74 80116474 AE200004 */ sw $zero, 4($s1)
/* 0ACB78 80116478 96220000 */ lhu $v0, ($s1)
/* 0ACB7C 8011647C 34422000 */ ori $v0, $v0, 0x2000
/* 0ACB80 80116480 A6220000 */ sh $v0, ($s1)
.L80116484:
/* 0ACB84 80116484 0C019D28 */ jal guMtxIdentF
/* 0ACB88 80116488 26240058 */ addiu $a0, $s1, 0x58
/* 0ACB8C 8011648C AE200010 */ sw $zero, 0x10($s1)
/* 0ACB90 80116490 0240202D */ daddu $a0, $s2, $zero
/* 0ACB94 80116494 0C0456C3 */ jal get_model_property
/* 0ACB98 80116498 24050061 */ addiu $a1, $zero, 0x61
/* 0ACB9C 8011649C 0040802D */ daddu $s0, $v0, $zero
/* 0ACBA0 801164A0 12000017 */ beqz $s0, .L80116500
/* 0ACBA4 801164A4 00000000 */ nop
/* 0ACBA8 801164A8 C6060008 */ lwc1 $f6, 8($s0)
/* 0ACBAC 801164AC C600002C */ lwc1 $f0, 0x2c($s0)
/* 0ACBB0 801164B0 46003180 */ add.s $f6, $f6, $f0
/* 0ACBB4 801164B4 3C013F00 */ lui $at, 0x3f00
/* 0ACBB8 801164B8 44814000 */ mtc1 $at, $f8
/* 0ACBBC 801164BC 00000000 */ nop
/* 0ACBC0 801164C0 46083182 */ mul.s $f6, $f6, $f8
/* 0ACBC4 801164C4 00000000 */ nop
/* 0ACBC8 801164C8 C6040014 */ lwc1 $f4, 0x14($s0)
/* 0ACBCC 801164CC C6000038 */ lwc1 $f0, 0x38($s0)
/* 0ACBD0 801164D0 46002100 */ add.s $f4, $f4, $f0
/* 0ACBD4 801164D4 46082102 */ mul.s $f4, $f4, $f8
/* 0ACBD8 801164D8 00000000 */ nop
/* 0ACBDC 801164DC C6020044 */ lwc1 $f2, 0x44($s0)
/* 0ACBE0 801164E0 C6000020 */ lwc1 $f0, 0x20($s0)
/* 0ACBE4 801164E4 46020000 */ add.s $f0, $f0, $f2
/* 0ACBE8 801164E8 46080002 */ mul.s $f0, $f0, $f8
/* 0ACBEC 801164EC 00000000 */ nop
/* 0ACBF0 801164F0 E7A60024 */ swc1 $f6, 0x24($sp)
/* 0ACBF4 801164F4 E7A40028 */ swc1 $f4, 0x28($sp)
/* 0ACBF8 801164F8 08045945 */ j .L80116514
/* 0ACBFC 801164FC E7A0002C */ swc1 $f0, 0x2c($sp)
.L80116500:
/* 0ACC00 80116500 44800000 */ mtc1 $zero, $f0
/* 0ACC04 80116504 00000000 */ nop
/* 0ACC08 80116508 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 0ACC0C 8011650C E7A00028 */ swc1 $f0, 0x28($sp)
/* 0ACC10 80116510 E7A00024 */ swc1 $f0, 0x24($sp)
.L80116514:
/* 0ACC14 80116514 8E220004 */ lw $v0, 4($s1)
/* 0ACC18 80116518 1040000F */ beqz $v0, .L80116558
/* 0ACC1C 8011651C 27A20024 */ addiu $v0, $sp, 0x24
/* 0ACC20 80116520 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 0ACC24 80116524 C7A20028 */ lwc1 $f2, 0x28($sp)
/* 0ACC28 80116528 C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 0ACC2C 8011652C AFA20010 */ sw $v0, 0x10($sp)
/* 0ACC30 80116530 27A20028 */ addiu $v0, $sp, 0x28
/* 0ACC34 80116534 AFA20014 */ sw $v0, 0x14($sp)
/* 0ACC38 80116538 27A2002C */ addiu $v0, $sp, 0x2c
/* 0ACC3C 8011653C AFA20018 */ sw $v0, 0x18($sp)
/* 0ACC40 80116540 8E240004 */ lw $a0, 4($s1)
/* 0ACC44 80116544 44050000 */ mfc1 $a1, $f0
/* 0ACC48 80116548 44061000 */ mfc1 $a2, $f2
/* 0ACC4C 8011654C 44072000 */ mfc1 $a3, $f4
/* 0ACC50 80116550 0C019E78 */ jal guMtxXFML
/* 0ACC54 80116554 00000000 */ nop
.L80116558:
/* 0ACC58 80116558 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 0ACC5C 8011655C C7A20028 */ lwc1 $f2, 0x28($sp)
/* 0ACC60 80116560 C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 0ACC64 80116564 E6200098 */ swc1 $f0, 0x98($s1)
/* 0ACC68 80116568 E622009C */ swc1 $f2, 0x9c($s1)
/* 0ACC6C 8011656C E62400A0 */ swc1 $f4, 0xa0($s1)
/* 0ACC70 80116570 C602002C */ lwc1 $f2, 0x2c($s0)
/* 0ACC74 80116574 C6000008 */ lwc1 $f0, 8($s0)
/* 0ACC78 80116578 46001301 */ sub.s $f12, $f2, $f0
/* 0ACC7C 8011657C 3C013FE0 */ lui $at, 0x3fe0
/* 0ACC80 80116580 44812800 */ mtc1 $at, $f5
/* 0ACC84 80116584 44802000 */ mtc1 $zero, $f4
/* 0ACC88 80116588 460061A1 */ cvt.d.s $f6, $f12
/* 0ACC8C 8011658C 46243182 */ mul.d $f6, $f6, $f4
/* 0ACC90 80116590 00000000 */ nop
/* 0ACC94 80116594 C6020038 */ lwc1 $f2, 0x38($s0)
/* 0ACC98 80116598 C6000014 */ lwc1 $f0, 0x14($s0)
/* 0ACC9C 8011659C 46001281 */ sub.s $f10, $f2, $f0
/* 0ACCA0 801165A0 460050A1 */ cvt.d.s $f2, $f10
/* 0ACCA4 801165A4 46241082 */ mul.d $f2, $f2, $f4
/* 0ACCA8 801165A8 00000000 */ nop
/* 0ACCAC 801165AC C6080044 */ lwc1 $f8, 0x44($s0)
/* 0ACCB0 801165B0 C6000020 */ lwc1 $f0, 0x20($s0)
/* 0ACCB4 801165B4 46004201 */ sub.s $f8, $f8, $f0
/* 0ACCB8 801165B8 46004021 */ cvt.d.s $f0, $f8
/* 0ACCBC 801165BC 46240002 */ mul.d $f0, $f0, $f4
/* 0ACCC0 801165C0 00000000 */ nop
/* 0ACCC4 801165C4 4620338D */ trunc.w.d $f14, $f6
/* 0ACCC8 801165C8 E60E0004 */ swc1 $f14, 4($s0)
/* 0ACCCC 801165CC 4620138D */ trunc.w.d $f14, $f2
/* 0ACCD0 801165D0 E60E0010 */ swc1 $f14, 0x10($s0)
/* 0ACCD4 801165D4 4620038D */ trunc.w.d $f14, $f0
/* 0ACCD8 801165D8 E60E001C */ swc1 $f14, 0x1c($s0)
/* 0ACCDC 801165DC 8E220004 */ lw $v0, 4($s1)
/* 0ACCE0 801165E0 E7AC0024 */ swc1 $f12, 0x24($sp)
/* 0ACCE4 801165E4 E7AA0028 */ swc1 $f10, 0x28($sp)
/* 0ACCE8 801165E8 14400013 */ bnez $v0, .L80116638
/* 0ACCEC 801165EC E7A8002C */ swc1 $f8, 0x2c($sp)
/* 0ACCF0 801165F0 3C0142C8 */ lui $at, 0x42c8
/* 0ACCF4 801165F4 44810000 */ mtc1 $at, $f0
/* 0ACCF8 801165F8 00000000 */ nop
/* 0ACCFC 801165FC 4600603C */ c.lt.s $f12, $f0
/* 0ACD00 80116600 00000000 */ nop
/* 0ACD04 80116604 4500000C */ bc1f .L80116638
/* 0ACD08 80116608 00000000 */ nop
/* 0ACD0C 8011660C 4600503C */ c.lt.s $f10, $f0
/* 0ACD10 80116610 00000000 */ nop
/* 0ACD14 80116614 45000008 */ bc1f .L80116638
/* 0ACD18 80116618 00000000 */ nop
/* 0ACD1C 8011661C 4600403C */ c.lt.s $f8, $f0
/* 0ACD20 80116620 00000000 */ nop
/* 0ACD24 80116624 45000004 */ bc1f .L80116638
/* 0ACD28 80116628 00000000 */ nop
/* 0ACD2C 8011662C 96220000 */ lhu $v0, ($s1)
/* 0ACD30 80116630 34420200 */ ori $v0, $v0, 0x200
/* 0ACD34 80116634 A6220000 */ sh $v0, ($s1)
.L80116638:
/* 0ACD38 80116638 3C028015 */ lui $v0, 0x8015
/* 0ACD3C 8011663C 8C423224 */ lw $v0, 0x3224($v0)
/* 0ACD40 80116640 3C03800A */ lui $v1, 0x800a
/* 0ACD44 80116644 8C63A5F4 */ lw $v1, -0x5a0c($v1)
/* 0ACD48 80116648 00021080 */ sll $v0, $v0, 2
/* 0ACD4C 8011664C 00431021 */ addu $v0, $v0, $v1
/* 0ACD50 80116650 A0530000 */ sb $s3, ($v0)
.L80116654:
/* 0ACD54 80116654 8FBF0044 */ lw $ra, 0x44($sp)
/* 0ACD58 80116658 8FB40040 */ lw $s4, 0x40($sp)
/* 0ACD5C 8011665C 8FB3003C */ lw $s3, 0x3c($sp)
/* 0ACD60 80116660 8FB20038 */ lw $s2, 0x38($sp)
/* 0ACD64 80116664 8FB10034 */ lw $s1, 0x34($sp)
/* 0ACD68 80116668 8FB00030 */ lw $s0, 0x30($sp)
/* 0ACD6C 8011666C 03E00008 */ jr $ra
/* 0ACD70 80116670 27BD0048 */ addiu $sp, $sp, 0x48