papermario/asm/nonmatchings/code_32E490/func_E00144E0.s
2021-01-11 21:40:52 +09:00

176 lines
9.4 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E00144E0
/* 32E970 E00144E0 27BDFF30 */ addiu $sp, $sp, -0xd0
/* 32E974 E00144E4 AFB600B8 */ sw $s6, 0xb8($sp)
/* 32E978 E00144E8 0080B02D */ daddu $s6, $a0, $zero
/* 32E97C E00144EC 3C05DB06 */ lui $a1, 0xdb06
/* 32E980 E00144F0 34A50024 */ ori $a1, $a1, 0x24
/* 32E984 E00144F4 AFB200A8 */ sw $s2, 0xa8($sp)
/* 32E988 E00144F8 0000902D */ daddu $s2, $zero, $zero
/* 32E98C E00144FC 3C06800A */ lui $a2, %hi(gMasterGfxPos)
/* 32E990 E0014500 24C6A66C */ addiu $a2, $a2, %lo(gMasterGfxPos)
/* 32E994 E0014504 3C02E700 */ lui $v0, 0xe700
/* 32E998 E0014508 AFBF00C4 */ sw $ra, 0xc4($sp)
/* 32E99C E001450C AFBE00C0 */ sw $fp, 0xc0($sp)
/* 32E9A0 E0014510 AFB700BC */ sw $s7, 0xbc($sp)
/* 32E9A4 E0014514 AFB500B4 */ sw $s5, 0xb4($sp)
/* 32E9A8 E0014518 AFB400B0 */ sw $s4, 0xb0($sp)
/* 32E9AC E001451C AFB300AC */ sw $s3, 0xac($sp)
/* 32E9B0 E0014520 AFB100A4 */ sw $s1, 0xa4($sp)
/* 32E9B4 E0014524 AFB000A0 */ sw $s0, 0xa0($sp)
/* 32E9B8 E0014528 F7B400C8 */ sdc1 $f20, 0xc8($sp)
/* 32E9BC E001452C 8CC30000 */ lw $v1, ($a2)
/* 32E9C0 E0014530 8ED1000C */ lw $s1, 0xc($s6)
/* 32E9C4 E0014534 0060202D */ daddu $a0, $v1, $zero
/* 32E9C8 E0014538 24630008 */ addiu $v1, $v1, 8
/* 32E9CC E001453C ACC30000 */ sw $v1, ($a2)
/* 32E9D0 E0014540 AC820000 */ sw $v0, ($a0)
/* 32E9D4 E0014544 AC800004 */ sw $zero, 4($a0)
/* 32E9D8 E0014548 AC650000 */ sw $a1, ($v1)
/* 32E9DC E001454C 8EC40010 */ lw $a0, 0x10($s6)
/* 32E9E0 E0014550 24620008 */ addiu $v0, $v1, 8
/* 32E9E4 E0014554 ACC20000 */ sw $v0, ($a2)
/* 32E9E8 E0014558 8C84001C */ lw $a0, 0x1c($a0)
/* 32E9EC E001455C 3C02DE00 */ lui $v0, 0xde00
/* 32E9F0 E0014560 AC620008 */ sw $v0, 8($v1)
/* 32E9F4 E0014564 3C020900 */ lui $v0, 0x900
/* 32E9F8 E0014568 244200E0 */ addiu $v0, $v0, 0xe0
/* 32E9FC E001456C AC62000C */ sw $v0, 0xc($v1)
/* 32EA00 E0014570 3C028000 */ lui $v0, 0x8000
/* 32EA04 E0014574 00822021 */ addu $a0, $a0, $v0
/* 32EA08 E0014578 AC640004 */ sw $a0, 4($v1)
/* 32EA0C E001457C 8EC20008 */ lw $v0, 8($s6)
/* 32EA10 E0014580 24630010 */ addiu $v1, $v1, 0x10
/* 32EA14 E0014584 18400066 */ blez $v0, .LE0014720
/* 32EA18 E0014588 ACC30000 */ sw $v1, ($a2)
/* 32EA1C E001458C 4480A000 */ mtc1 $zero, $f20
/* 32EA20 E0014590 27B50060 */ addiu $s5, $sp, 0x60
/* 32EA24 E0014594 3C1E800A */ lui $fp, %hi(gDisplayContext)
/* 32EA28 E0014598 27DEA674 */ addiu $fp, $fp, %lo(gDisplayContext)
/* 32EA2C E001459C 3C178007 */ lui $s7, %hi(gMatrixListPos)
/* 32EA30 E00145A0 26F741F0 */ addiu $s7, $s7, %lo(gMatrixListPos)
/* 32EA34 E00145A4 3C140001 */ lui $s4, 1
/* 32EA38 E00145A8 36941630 */ ori $s4, $s4, 0x1630
/* 32EA3C E00145AC 00C0982D */ daddu $s3, $a2, $zero
/* 32EA40 E00145B0 26300008 */ addiu $s0, $s1, 8
.LE00145B4:
/* 32EA44 E00145B4 8E220000 */ lw $v0, ($s1)
/* 32EA48 E00145B8 50400054 */ beql $v0, $zero, .LE001470C
/* 32EA4C E00145BC 26520001 */ addiu $s2, $s2, 1
/* 32EA50 E00145C0 3C09800B */ lui $t1, %hi(gCameras)
/* 32EA54 E00145C4 25291D80 */ addiu $t1, $t1, %lo(gCameras)
/* 32EA58 E00145C8 4405A000 */ mfc1 $a1, $f20
/* 32EA5C E00145CC 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 32EA60 E00145D0 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 32EA64 E00145D4 4407A000 */ mfc1 $a3, $f20
/* 32EA68 E00145D8 3C013F80 */ lui $at, 0x3f80
/* 32EA6C E00145DC 44810000 */ mtc1 $at, $f0
/* 32EA70 E00145E0 00031080 */ sll $v0, $v1, 2
/* 32EA74 E00145E4 00431021 */ addu $v0, $v0, $v1
/* 32EA78 E00145E8 00021080 */ sll $v0, $v0, 2
/* 32EA7C E00145EC 00431023 */ subu $v0, $v0, $v1
/* 32EA80 E00145F0 000218C0 */ sll $v1, $v0, 3
/* 32EA84 E00145F4 00431021 */ addu $v0, $v0, $v1
/* 32EA88 E00145F8 000210C0 */ sll $v0, $v0, 3
/* 32EA8C E00145FC 00491021 */ addu $v0, $v0, $t1
/* 32EA90 E0014600 C442006C */ lwc1 $f2, 0x6c($v0)
/* 32EA94 E0014604 E7A00010 */ swc1 $f0, 0x10($sp)
/* 32EA98 E0014608 C6000004 */ lwc1 $f0, 4($s0)
/* 32EA9C E001460C 46001087 */ neg.s $f2, $f2
/* 32EAA0 E0014610 E7A00014 */ swc1 $f0, 0x14($sp)
/* 32EAA4 E0014614 C6000008 */ lwc1 $f0, 8($s0)
/* 32EAA8 E0014618 44061000 */ mfc1 $a2, $f2
/* 32EAAC E001461C E7A00018 */ swc1 $f0, 0x18($sp)
/* 32EAB0 E0014620 C600000C */ lwc1 $f0, 0xc($s0)
/* 32EAB4 E0014624 27A40020 */ addiu $a0, $sp, 0x20
/* 32EAB8 E0014628 0C080180 */ jal func_E0200600
/* 32EABC E001462C E7A0001C */ swc1 $f0, 0x1c($sp)
/* 32EAC0 E0014630 8E050010 */ lw $a1, 0x10($s0)
/* 32EAC4 E0014634 8E060014 */ lw $a2, 0x14($s0)
/* 32EAC8 E0014638 8E070018 */ lw $a3, 0x18($s0)
/* 32EACC E001463C 0C080110 */ jal func_E0200440
/* 32EAD0 E0014640 02A0202D */ daddu $a0, $s5, $zero
/* 32EAD4 E0014644 02A0202D */ daddu $a0, $s5, $zero
/* 32EAD8 E0014648 27A50020 */ addiu $a1, $sp, 0x20
/* 32EADC E001464C 0C080114 */ jal func_E0200450
/* 32EAE0 E0014650 00A0302D */ daddu $a2, $a1, $zero
/* 32EAE4 E0014654 27A40020 */ addiu $a0, $sp, 0x20
/* 32EAE8 E0014658 96E50000 */ lhu $a1, ($s7)
/* 32EAEC E001465C 8FC20000 */ lw $v0, ($fp)
/* 32EAF0 E0014660 00052980 */ sll $a1, $a1, 6
/* 32EAF4 E0014664 00B42821 */ addu $a1, $a1, $s4
/* 32EAF8 E0014668 0C080118 */ jal func_E0200460
/* 32EAFC E001466C 00452821 */ addu $a1, $v0, $a1
/* 32EB00 E0014670 3C077060 */ lui $a3, 0x7060
/* 32EB04 E0014674 34E71800 */ ori $a3, $a3, 0x1800
/* 32EB08 E0014678 3C08D838 */ lui $t0, 0xd838
/* 32EB0C E001467C 35080002 */ ori $t0, $t0, 2
/* 32EB10 E0014680 8E640000 */ lw $a0, ($s3)
/* 32EB14 E0014684 3C02FA00 */ lui $v0, 0xfa00
/* 32EB18 E0014688 0080302D */ daddu $a2, $a0, $zero
/* 32EB1C E001468C 24840008 */ addiu $a0, $a0, 8
/* 32EB20 E0014690 AE640000 */ sw $a0, ($s3)
/* 32EB24 E0014694 ACC20000 */ sw $v0, ($a2)
/* 32EB28 E0014698 92050000 */ lbu $a1, ($s0)
/* 32EB2C E001469C 96E30000 */ lhu $v1, ($s7)
/* 32EB30 E00146A0 24820008 */ addiu $v0, $a0, 8
/* 32EB34 E00146A4 AE620000 */ sw $v0, ($s3)
/* 32EB38 E00146A8 24620001 */ addiu $v0, $v1, 1
/* 32EB3C E00146AC A6E20000 */ sh $v0, ($s7)
/* 32EB40 E00146B0 24820010 */ addiu $v0, $a0, 0x10
/* 32EB44 E00146B4 AE620000 */ sw $v0, ($s3)
/* 32EB48 E00146B8 24820018 */ addiu $v0, $a0, 0x18
/* 32EB4C E00146BC 00A72825 */ or $a1, $a1, $a3
/* 32EB50 E00146C0 AE620000 */ sw $v0, ($s3)
/* 32EB54 E00146C4 3C02DA38 */ lui $v0, 0xda38
/* 32EB58 E00146C8 3063FFFF */ andi $v1, $v1, 0xffff
/* 32EB5C E00146CC 00031980 */ sll $v1, $v1, 6
/* 32EB60 E00146D0 ACC50004 */ sw $a1, 4($a2)
/* 32EB64 E00146D4 AC820000 */ sw $v0, ($a0)
/* 32EB68 E00146D8 8FC20000 */ lw $v0, ($fp)
/* 32EB6C E00146DC 00741821 */ addu $v1, $v1, $s4
/* 32EB70 E00146E0 AC880010 */ sw $t0, 0x10($a0)
/* 32EB74 E00146E4 00431021 */ addu $v0, $v0, $v1
/* 32EB78 E00146E8 AC820004 */ sw $v0, 4($a0)
/* 32EB7C E00146EC 3C02DE00 */ lui $v0, 0xde00
/* 32EB80 E00146F0 AC820008 */ sw $v0, 8($a0)
/* 32EB84 E00146F4 3C020900 */ lui $v0, 0x900
/* 32EB88 E00146F8 244201B8 */ addiu $v0, $v0, 0x1b8
/* 32EB8C E00146FC AC82000C */ sw $v0, 0xc($a0)
/* 32EB90 E0014700 24020040 */ addiu $v0, $zero, 0x40
/* 32EB94 E0014704 AC820014 */ sw $v0, 0x14($a0)
/* 32EB98 E0014708 26520001 */ addiu $s2, $s2, 1
.LE001470C:
/* 32EB9C E001470C 2610004C */ addiu $s0, $s0, 0x4c
/* 32EBA0 E0014710 8EC20008 */ lw $v0, 8($s6)
/* 32EBA4 E0014714 0242102A */ slt $v0, $s2, $v0
/* 32EBA8 E0014718 1440FFA6 */ bnez $v0, .LE00145B4
/* 32EBAC E001471C 2631004C */ addiu $s1, $s1, 0x4c
.LE0014720:
/* 32EBB0 E0014720 3C03800A */ lui $v1, %hi(gMasterGfxPos)
/* 32EBB4 E0014724 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos)
/* 32EBB8 E0014728 8C620000 */ lw $v0, ($v1)
/* 32EBBC E001472C 0040202D */ daddu $a0, $v0, $zero
/* 32EBC0 E0014730 24420008 */ addiu $v0, $v0, 8
/* 32EBC4 E0014734 AC620000 */ sw $v0, ($v1)
/* 32EBC8 E0014738 3C02E700 */ lui $v0, 0xe700
/* 32EBCC E001473C AC820000 */ sw $v0, ($a0)
/* 32EBD0 E0014740 AC800004 */ sw $zero, 4($a0)
/* 32EBD4 E0014744 8FBF00C4 */ lw $ra, 0xc4($sp)
/* 32EBD8 E0014748 8FBE00C0 */ lw $fp, 0xc0($sp)
/* 32EBDC E001474C 8FB700BC */ lw $s7, 0xbc($sp)
/* 32EBE0 E0014750 8FB600B8 */ lw $s6, 0xb8($sp)
/* 32EBE4 E0014754 8FB500B4 */ lw $s5, 0xb4($sp)
/* 32EBE8 E0014758 8FB400B0 */ lw $s4, 0xb0($sp)
/* 32EBEC E001475C 8FB300AC */ lw $s3, 0xac($sp)
/* 32EBF0 E0014760 8FB200A8 */ lw $s2, 0xa8($sp)
/* 32EBF4 E0014764 8FB100A4 */ lw $s1, 0xa4($sp)
/* 32EBF8 E0014768 8FB000A0 */ lw $s0, 0xa0($sp)
/* 32EBFC E001476C D7B400C8 */ ldc1 $f20, 0xc8($sp)
/* 32EC00 E0014770 03E00008 */ jr $ra
/* 32EC04 E0014774 27BD00D0 */ addiu $sp, $sp, 0xd0
/* 32EC08 E0014778 00000000 */ nop
/* 32EC0C E001477C 00000000 */ nop