papermario/asm/nonmatchings/code_3602C0/func_E005A3F4.s
Ethan Roseman a8e550dd9a yee
2020-10-17 22:27:25 -04:00

222 lines
12 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E005A3F4
/* 3606B4 E005A3F4 27BDFF28 */ addiu $sp, $sp, -0xd8
/* 3606B8 E005A3F8 AFBE00B8 */ sw $fp, 0xb8($sp)
/* 3606BC E005A3FC 0080F02D */ daddu $fp, $a0, $zero
/* 3606C0 E005A400 3C06DB06 */ lui $a2, 0xdb06
/* 3606C4 E005A404 34C60024 */ ori $a2, $a2, 0x24
/* 3606C8 E005A408 27A40018 */ addiu $a0, $sp, 0x18
/* 3606CC E005A40C AFB00098 */ sw $s0, 0x98($sp)
/* 3606D0 E005A410 3C100001 */ lui $s0, 1
/* 3606D4 E005A414 36101630 */ ori $s0, $s0, 0x1630
/* 3606D8 E005A418 AFB200A0 */ sw $s2, 0xa0($sp)
/* 3606DC E005A41C 3C12800A */ lui $s2, 0x800a
/* 3606E0 E005A420 2652A66C */ addiu $s2, $s2, -0x5994
/* 3606E4 E005A424 3C02E700 */ lui $v0, 0xe700
/* 3606E8 E005A428 AFBF00BC */ sw $ra, 0xbc($sp)
/* 3606EC E005A42C AFB700B4 */ sw $s7, 0xb4($sp)
/* 3606F0 E005A430 AFB600B0 */ sw $s6, 0xb0($sp)
/* 3606F4 E005A434 AFB500AC */ sw $s5, 0xac($sp)
/* 3606F8 E005A438 AFB400A8 */ sw $s4, 0xa8($sp)
/* 3606FC E005A43C AFB300A4 */ sw $s3, 0xa4($sp)
/* 360700 E005A440 AFB1009C */ sw $s1, 0x9c($sp)
/* 360704 E005A444 F7B800D0 */ sdc1 $f24, 0xd0($sp)
/* 360708 E005A448 F7B600C8 */ sdc1 $f22, 0xc8($sp)
/* 36070C E005A44C F7B400C0 */ sdc1 $f20, 0xc0($sp)
/* 360710 E005A450 8E430000 */ lw $v1, ($s2)
/* 360714 E005A454 8FD3000C */ lw $s3, 0xc($fp)
/* 360718 E005A458 0060282D */ daddu $a1, $v1, $zero
/* 36071C E005A45C 24630008 */ addiu $v1, $v1, 8
/* 360720 E005A460 AE430000 */ sw $v1, ($s2)
/* 360724 E005A464 ACA20000 */ sw $v0, ($a1)
/* 360728 E005A468 24620008 */ addiu $v0, $v1, 8
/* 36072C E005A46C ACA00004 */ sw $zero, 4($a1)
/* 360730 E005A470 AE420000 */ sw $v0, ($s2)
/* 360734 E005A474 AC660000 */ sw $a2, ($v1)
/* 360738 E005A478 8FC50010 */ lw $a1, 0x10($fp)
/* 36073C E005A47C 24620010 */ addiu $v0, $v1, 0x10
/* 360740 E005A480 AE420000 */ sw $v0, ($s2)
/* 360744 E005A484 8CA5001C */ lw $a1, 0x1c($a1)
/* 360748 E005A488 3C02DE00 */ lui $v0, 0xde00
/* 36074C E005A48C AC620008 */ sw $v0, 8($v1)
/* 360750 E005A490 3C020900 */ lui $v0, 0x900
/* 360754 E005A494 24420440 */ addiu $v0, $v0, 0x440
/* 360758 E005A498 AC62000C */ sw $v0, 0xc($v1)
/* 36075C E005A49C 3C028000 */ lui $v0, 0x8000
/* 360760 E005A4A0 00A22821 */ addu $a1, $a1, $v0
/* 360764 E005A4A4 AC650004 */ sw $a1, 4($v1)
/* 360768 E005A4A8 8E650004 */ lw $a1, 4($s3)
/* 36076C E005A4AC 8E660008 */ lw $a2, 8($s3)
/* 360770 E005A4B0 8E67000C */ lw $a3, 0xc($s3)
/* 360774 E005A4B4 0C080108 */ jal func_E0200420
/* 360778 E005A4B8 24140001 */ addiu $s4, $zero, 1
/* 36077C E005A4BC 27B10058 */ addiu $s1, $sp, 0x58
/* 360780 E005A4C0 4480A000 */ mtc1 $zero, $f20
/* 360784 E005A4C4 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 360788 E005A4C8 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 36078C E005A4CC 3C013F80 */ lui $at, 0x3f80
/* 360790 E005A4D0 4481C000 */ mtc1 $at, $f24
/* 360794 E005A4D4 00031080 */ sll $v0, $v1, 2
/* 360798 E005A4D8 00431021 */ addu $v0, $v0, $v1
/* 36079C E005A4DC 00021080 */ sll $v0, $v0, 2
/* 3607A0 E005A4E0 00431023 */ subu $v0, $v0, $v1
/* 3607A4 E005A4E4 000218C0 */ sll $v1, $v0, 3
/* 3607A8 E005A4E8 00431021 */ addu $v0, $v0, $v1
/* 3607AC E005A4EC 000210C0 */ sll $v0, $v0, 3
/* 3607B0 E005A4F0 4406A000 */ mfc1 $a2, $f20
/* 3607B4 E005A4F4 3C01800B */ lui $at, 0x800b
/* 3607B8 E005A4F8 00220821 */ addu $at, $at, $v0
/* 3607BC E005A4FC C4201DEC */ lwc1 $f0, 0x1dec($at)
/* 3607C0 E005A500 4407C000 */ mfc1 $a3, $f24
/* 3607C4 E005A504 46000007 */ neg.s $f0, $f0
/* 3607C8 E005A508 44050000 */ mfc1 $a1, $f0
/* 3607CC E005A50C 0220202D */ daddu $a0, $s1, $zero
/* 3607D0 E005A510 0C080104 */ jal func_E0200410
/* 3607D4 E005A514 E7B40010 */ swc1 $f20, 0x10($sp)
/* 3607D8 E005A518 0220202D */ daddu $a0, $s1, $zero
/* 3607DC E005A51C 27A50018 */ addiu $a1, $sp, 0x18
/* 3607E0 E005A520 0C080114 */ jal func_E0200450
/* 3607E4 E005A524 00A0302D */ daddu $a2, $a1, $zero
/* 3607E8 E005A528 27A40018 */ addiu $a0, $sp, 0x18
/* 3607EC E005A52C 3C158007 */ lui $s5, 0x8007
/* 3607F0 E005A530 26B541F0 */ addiu $s5, $s5, 0x41f0
/* 3607F4 E005A534 3C16800A */ lui $s6, 0x800a
/* 3607F8 E005A538 26D6A674 */ addiu $s6, $s6, -0x598c
/* 3607FC E005A53C 96A50000 */ lhu $a1, ($s5)
/* 360800 E005A540 8EC20000 */ lw $v0, ($s6)
/* 360804 E005A544 00052980 */ sll $a1, $a1, 6
/* 360808 E005A548 00B02821 */ addu $a1, $a1, $s0
/* 36080C E005A54C 0C080118 */ jal func_E0200460
/* 360810 E005A550 00452821 */ addu $a1, $v0, $a1
/* 360814 E005A554 3C06DCDC */ lui $a2, 0xdcdc
/* 360818 E005A558 8E440000 */ lw $a0, ($s2)
/* 36081C E005A55C 34C628E6 */ ori $a2, $a2, 0x28e6
/* 360820 E005A560 0080282D */ daddu $a1, $a0, $zero
/* 360824 E005A564 24840008 */ addiu $a0, $a0, 8
/* 360828 E005A568 AE440000 */ sw $a0, ($s2)
/* 36082C E005A56C 96A20000 */ lhu $v0, ($s5)
/* 360830 E005A570 3C03DA38 */ lui $v1, 0xda38
/* 360834 E005A574 ACA30000 */ sw $v1, ($a1)
/* 360838 E005A578 00541821 */ addu $v1, $v0, $s4
/* 36083C E005A57C 3042FFFF */ andi $v0, $v0, 0xffff
/* 360840 E005A580 00021180 */ sll $v0, $v0, 6
/* 360844 E005A584 A6A30000 */ sh $v1, ($s5)
/* 360848 E005A588 8EC30000 */ lw $v1, ($s6)
/* 36084C E005A58C 00501021 */ addu $v0, $v0, $s0
/* 360850 E005A590 00621821 */ addu $v1, $v1, $v0
/* 360854 E005A594 24820008 */ addiu $v0, $a0, 8
/* 360858 E005A598 ACA30004 */ sw $v1, 4($a1)
/* 36085C E005A59C AE420000 */ sw $v0, ($s2)
/* 360860 E005A5A0 3C02FA00 */ lui $v0, 0xfa00
/* 360864 E005A5A4 AC820000 */ sw $v0, ($a0)
/* 360868 E005A5A8 AC860004 */ sw $a2, 4($a0)
/* 36086C E005A5AC 8FC20008 */ lw $v0, 8($fp)
/* 360870 E005A5B0 0282102A */ slt $v0, $s4, $v0
/* 360874 E005A5B4 10400049 */ beqz $v0, .LE005A6DC
/* 360878 E005A5B8 26730034 */ addiu $s3, $s3, 0x34
/* 36087C E005A5BC 4600A586 */ mov.s $f22, $f20
/* 360880 E005A5C0 4600C506 */ mov.s $f20, $f24
/* 360884 E005A5C4 02C0B82D */ daddu $s7, $s6, $zero
/* 360888 E005A5C8 02A0B02D */ daddu $s6, $s5, $zero
/* 36088C E005A5CC 3C150001 */ lui $s5, 1
/* 360890 E005A5D0 36B51630 */ ori $s5, $s5, 0x1630
/* 360894 E005A5D4 26700030 */ addiu $s0, $s3, 0x30
.LE005A5D8:
/* 360898 E005A5D8 27A40018 */ addiu $a0, $sp, 0x18
/* 36089C E005A5DC 8E05FFD4 */ lw $a1, -0x2c($s0)
/* 3608A0 E005A5E0 8E06FFD8 */ lw $a2, -0x28($s0)
/* 3608A4 E005A5E4 8E07FFDC */ lw $a3, -0x24($s0)
/* 3608A8 E005A5E8 0C080108 */ jal func_E0200420
/* 3608AC E005A5EC 26940001 */ addiu $s4, $s4, 1
/* 3608B0 E005A5F0 E7B40010 */ swc1 $f20, 0x10($sp)
/* 3608B4 E005A5F4 8E05FFEC */ lw $a1, -0x14($s0)
/* 3608B8 E005A5F8 4406B000 */ mfc1 $a2, $f22
/* 3608BC E005A5FC 4407B000 */ mfc1 $a3, $f22
/* 3608C0 E005A600 0C080104 */ jal func_E0200410
/* 3608C4 E005A604 0220202D */ daddu $a0, $s1, $zero
/* 3608C8 E005A608 0220202D */ daddu $a0, $s1, $zero
/* 3608CC E005A60C 27A50018 */ addiu $a1, $sp, 0x18
/* 3608D0 E005A610 0C080114 */ jal func_E0200450
/* 3608D4 E005A614 00A0302D */ daddu $a2, $a1, $zero
/* 3608D8 E005A618 0220202D */ daddu $a0, $s1, $zero
/* 3608DC E005A61C 8E050000 */ lw $a1, ($s0)
/* 3608E0 E005A620 26100034 */ addiu $s0, $s0, 0x34
/* 3608E4 E005A624 4407A000 */ mfc1 $a3, $f20
/* 3608E8 E005A628 0C080110 */ jal func_E0200440
/* 3608EC E005A62C 00A0302D */ daddu $a2, $a1, $zero
/* 3608F0 E005A630 0220202D */ daddu $a0, $s1, $zero
/* 3608F4 E005A634 27A50018 */ addiu $a1, $sp, 0x18
/* 3608F8 E005A638 0C080114 */ jal func_E0200450
/* 3608FC E005A63C 00A0302D */ daddu $a2, $a1, $zero
/* 360900 E005A640 27A40018 */ addiu $a0, $sp, 0x18
/* 360904 E005A644 96C50000 */ lhu $a1, ($s6)
/* 360908 E005A648 8EE20000 */ lw $v0, ($s7)
/* 36090C E005A64C 00052980 */ sll $a1, $a1, 6
/* 360910 E005A650 00B52821 */ addu $a1, $a1, $s5
/* 360914 E005A654 0C080118 */ jal func_E0200460
/* 360918 E005A658 00452821 */ addu $a1, $v0, $a1
/* 36091C E005A65C 3C06D838 */ lui $a2, 0xd838
/* 360920 E005A660 8E440000 */ lw $a0, ($s2)
/* 360924 E005A664 34C60002 */ ori $a2, $a2, 2
/* 360928 E005A668 0080282D */ daddu $a1, $a0, $zero
/* 36092C E005A66C 24840008 */ addiu $a0, $a0, 8
/* 360930 E005A670 AE440000 */ sw $a0, ($s2)
/* 360934 E005A674 96C20000 */ lhu $v0, ($s6)
/* 360938 E005A678 3C03DA38 */ lui $v1, 0xda38
/* 36093C E005A67C ACA30000 */ sw $v1, ($a1)
/* 360940 E005A680 24430001 */ addiu $v1, $v0, 1
/* 360944 E005A684 3042FFFF */ andi $v0, $v0, 0xffff
/* 360948 E005A688 00021180 */ sll $v0, $v0, 6
/* 36094C E005A68C A6C30000 */ sh $v1, ($s6)
/* 360950 E005A690 8EE30000 */ lw $v1, ($s7)
/* 360954 E005A694 00551021 */ addu $v0, $v0, $s5
/* 360958 E005A698 00621821 */ addu $v1, $v1, $v0
/* 36095C E005A69C 24820008 */ addiu $v0, $a0, 8
/* 360960 E005A6A0 ACA30004 */ sw $v1, 4($a1)
/* 360964 E005A6A4 AE420000 */ sw $v0, ($s2)
/* 360968 E005A6A8 3C02DE00 */ lui $v0, 0xde00
/* 36096C E005A6AC 3C080900 */ lui $t0, 0x900
/* 360970 E005A6B0 250804F0 */ addiu $t0, $t0, 0x4f0
/* 360974 E005A6B4 AC820000 */ sw $v0, ($a0)
/* 360978 E005A6B8 24020040 */ addiu $v0, $zero, 0x40
/* 36097C E005A6BC AC880004 */ sw $t0, 4($a0)
/* 360980 E005A6C0 AC860008 */ sw $a2, 8($a0)
/* 360984 E005A6C4 AC82000C */ sw $v0, 0xc($a0)
/* 360988 E005A6C8 8FC20008 */ lw $v0, 8($fp)
/* 36098C E005A6CC 24840010 */ addiu $a0, $a0, 0x10
/* 360990 E005A6D0 0282102A */ slt $v0, $s4, $v0
/* 360994 E005A6D4 1440FFC0 */ bnez $v0, .LE005A5D8
/* 360998 E005A6D8 AE440000 */ sw $a0, ($s2)
.LE005A6DC:
/* 36099C E005A6DC 3C05D838 */ lui $a1, 0xd838
/* 3609A0 E005A6E0 3C03800A */ lui $v1, 0x800a
/* 3609A4 E005A6E4 2463A66C */ addiu $v1, $v1, -0x5994
/* 3609A8 E005A6E8 8C620000 */ lw $v0, ($v1)
/* 3609AC E005A6EC 34A50002 */ ori $a1, $a1, 2
/* 3609B0 E005A6F0 0040202D */ daddu $a0, $v0, $zero
/* 3609B4 E005A6F4 24420008 */ addiu $v0, $v0, 8
/* 3609B8 E005A6F8 AC620000 */ sw $v0, ($v1)
/* 3609BC E005A6FC 24020040 */ addiu $v0, $zero, 0x40
/* 3609C0 E005A700 AC850000 */ sw $a1, ($a0)
/* 3609C4 E005A704 AC820004 */ sw $v0, 4($a0)
/* 3609C8 E005A708 8FBF00BC */ lw $ra, 0xbc($sp)
/* 3609CC E005A70C 8FBE00B8 */ lw $fp, 0xb8($sp)
/* 3609D0 E005A710 8FB700B4 */ lw $s7, 0xb4($sp)
/* 3609D4 E005A714 8FB600B0 */ lw $s6, 0xb0($sp)
/* 3609D8 E005A718 8FB500AC */ lw $s5, 0xac($sp)
/* 3609DC E005A71C 8FB400A8 */ lw $s4, 0xa8($sp)
/* 3609E0 E005A720 8FB300A4 */ lw $s3, 0xa4($sp)
/* 3609E4 E005A724 8FB200A0 */ lw $s2, 0xa0($sp)
/* 3609E8 E005A728 8FB1009C */ lw $s1, 0x9c($sp)
/* 3609EC E005A72C 8FB00098 */ lw $s0, 0x98($sp)
/* 3609F0 E005A730 D7B800D0 */ ldc1 $f24, 0xd0($sp)
/* 3609F4 E005A734 D7B600C8 */ ldc1 $f22, 0xc8($sp)
/* 3609F8 E005A738 D7B400C0 */ ldc1 $f20, 0xc0($sp)
/* 3609FC E005A73C 03E00008 */ jr $ra
/* 360A00 E005A740 27BD00D8 */ addiu $sp, $sp, 0xd8
/* 360A04 E005A744 00000000 */ nop
/* 360A08 E005A748 00000000 */ nop
/* 360A0C E005A74C 00000000 */ nop