papermario/asm/nonmatchings/code_341d0_len_20d0/func_80059F94.s
Ethan Roseman 51c076bd8e symbols!
2020-09-27 21:13:56 -04:00

212 lines
11 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80059F94
/* 35394 80059F94 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 35398 80059F98 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 3539C 80059F9C 3C014080 */ lui $at, 0x4080
/* 353A0 80059FA0 4481A000 */ mtc1 $at, $f20
/* 353A4 80059FA4 AFB10014 */ sw $s1, 0x14($sp)
/* 353A8 80059FA8 24110001 */ addiu $s1, $zero, 1
/* 353AC 80059FAC AFB20018 */ sw $s2, 0x18($sp)
/* 353B0 80059FB0 0000902D */ daddu $s2, $zero, $zero
/* 353B4 80059FB4 AFB50024 */ sw $s5, 0x24($sp)
/* 353B8 80059FB8 3C15800B */ lui $s5, %hi(gCameras)
/* 353BC 80059FBC 26B51D80 */ addiu $s5, $s5, %lo(gCameras)
/* 353C0 80059FC0 AFB00010 */ sw $s0, 0x10($sp)
/* 353C4 80059FC4 3C10800A */ lui $s0, 0x800a
/* 353C8 80059FC8 2610A66C */ addiu $s0, $s0, -0x5994
/* 353CC 80059FCC AFB40020 */ sw $s4, 0x20($sp)
/* 353D0 80059FD0 24140002 */ addiu $s4, $zero, 2
/* 353D4 80059FD4 AFB3001C */ sw $s3, 0x1c($sp)
/* 353D8 80059FD8 3413FFFE */ ori $s3, $zero, 0xfffe
/* 353DC 80059FDC AFBF0028 */ sw $ra, 0x28($sp)
/* 353E0 80059FE0 00121080 */ sll $v0, $s2, 2
.L80059FE4:
/* 353E4 80059FE4 3C0E800B */ lui $t6, 0x800b
/* 353E8 80059FE8 01C27021 */ addu $t6, $t6, $v0
/* 353EC 80059FEC 8DCE4398 */ lw $t6, 0x4398($t6)
/* 353F0 80059FF0 51C000A5 */ beql $t6, $zero, .L8005A288
/* 353F4 80059FF4 26520001 */ addiu $s2, $s2, 1
/* 353F8 80059FF8 8DC30000 */ lw $v1, ($t6)
/* 353FC 80059FFC 30620001 */ andi $v0, $v1, 1
/* 35400 8005A000 504000A1 */ beql $v0, $zero, .L8005A288
/* 35404 8005A004 26520001 */ addiu $s2, $s2, 1
/* 35408 8005A008 30620008 */ andi $v0, $v1, 8
/* 3540C 8005A00C 5040009E */ beql $v0, $zero, .L8005A288
/* 35410 8005A010 26520001 */ addiu $s2, $s2, 1
/* 35414 8005A014 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 35418 8005A018 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 3541C 8005A01C 80420070 */ lb $v0, 0x70($v0)
/* 35420 8005A020 10400005 */ beqz $v0, .L8005A038
/* 35424 8005A024 30620004 */ andi $v0, $v1, 4
/* 35428 8005A028 50400097 */ beql $v0, $zero, .L8005A288
/* 3542C 8005A02C 26520001 */ addiu $s2, $s2, 1
/* 35430 8005A030 08016810 */ j .L8005A040
/* 35434 8005A034 00000000 */ nop
.L8005A038:
/* 35438 8005A038 54400093 */ bnel $v0, $zero, .L8005A288
/* 3543C 8005A03C 26520001 */ addiu $s2, $s2, 1
.L8005A040:
/* 35440 8005A040 8DC20010 */ lw $v0, 0x10($t6)
/* 35444 8005A044 8C4F0018 */ lw $t7, 0x18($v0)
/* 35448 8005A048 3C028006 */ lui $v0, 0x8006
/* 3544C 8005A04C 24429C80 */ addiu $v0, $v0, -0x6380
/* 35450 8005A050 51E2008D */ beql $t7, $v0, .L8005A288
/* 35454 8005A054 26520001 */ addiu $s2, $s2, 1
/* 35458 8005A058 12200088 */ beqz $s1, .L8005A27C
/* 3545C 8005A05C 3C04DC08 */ lui $a0, 0xdc08
/* 35460 8005A060 34840008 */ ori $a0, $a0, 8
/* 35464 8005A064 3C06D9FF */ lui $a2, 0xd9ff
/* 35468 8005A068 34C6FFFF */ ori $a2, $a2, 0xffff
/* 3546C 8005A06C 3C050020 */ lui $a1, 0x20
/* 35470 8005A070 34A50405 */ ori $a1, $a1, 0x405
/* 35474 8005A074 3C07DB04 */ lui $a3, 0xdb04
/* 35478 8005A078 34E70004 */ ori $a3, $a3, 4
/* 3547C 8005A07C 3C08DB04 */ lui $t0, 0xdb04
/* 35480 8005A080 3508000C */ ori $t0, $t0, 0xc
/* 35484 8005A084 3C09DB04 */ lui $t1, 0xdb04
/* 35488 8005A088 35290014 */ ori $t1, $t1, 0x14
/* 3548C 8005A08C 3C0ADB04 */ lui $t2, 0xdb04
/* 35490 8005A090 8E0B0000 */ lw $t3, ($s0)
/* 35494 8005A094 354A001C */ ori $t2, $t2, 0x1c
/* 35498 8005A098 0160182D */ daddu $v1, $t3, $zero
/* 3549C 8005A09C 256B0008 */ addiu $t3, $t3, 8
/* 354A0 8005A0A0 AE0B0000 */ sw $t3, ($s0)
/* 354A4 8005A0A4 3C0D8007 */ lui $t5, %hi(gCurrentCameraID)
/* 354A8 8005A0A8 8DAD7410 */ lw $t5, %lo(gCurrentCameraID)($t5)
/* 354AC 8005A0AC 3C02E700 */ lui $v0, 0xe700
/* 354B0 8005A0B0 AC620000 */ sw $v0, ($v1)
/* 354B4 8005A0B4 25620008 */ addiu $v0, $t3, 8
/* 354B8 8005A0B8 AC600004 */ sw $zero, 4($v1)
/* 354BC 8005A0BC AE020000 */ sw $v0, ($s0)
/* 354C0 8005A0C0 AD640000 */ sw $a0, ($t3)
/* 354C4 8005A0C4 3C04ED00 */ lui $a0, 0xed00
/* 354C8 8005A0C8 000D1080 */ sll $v0, $t5, 2
/* 354CC 8005A0CC 004D1021 */ addu $v0, $v0, $t5
/* 354D0 8005A0D0 00021080 */ sll $v0, $v0, 2
/* 354D4 8005A0D4 004D1023 */ subu $v0, $v0, $t5
/* 354D8 8005A0D8 000218C0 */ sll $v1, $v0, 3
/* 354DC 8005A0DC 00431021 */ addu $v0, $v0, $v1
/* 354E0 8005A0E0 000210C0 */ sll $v0, $v0, 3
/* 354E4 8005A0E4 00556021 */ addu $t4, $v0, $s5
/* 354E8 8005A0E8 258200A0 */ addiu $v0, $t4, 0xa0
/* 354EC 8005A0EC AD620004 */ sw $v0, 4($t3)
/* 354F0 8005A0F0 25620010 */ addiu $v0, $t3, 0x10
/* 354F4 8005A0F4 AE020000 */ sw $v0, ($s0)
/* 354F8 8005A0F8 3C02D900 */ lui $v0, 0xd900
/* 354FC 8005A0FC AD620008 */ sw $v0, 8($t3)
/* 35500 8005A100 25620018 */ addiu $v0, $t3, 0x18
/* 35504 8005A104 AD60000C */ sw $zero, 0xc($t3)
/* 35508 8005A108 AE020000 */ sw $v0, ($s0)
/* 3550C 8005A10C 25620020 */ addiu $v0, $t3, 0x20
/* 35510 8005A110 AD660010 */ sw $a2, 0x10($t3)
/* 35514 8005A114 AD650014 */ sw $a1, 0x14($t3)
/* 35518 8005A118 AE020000 */ sw $v0, ($s0)
/* 3551C 8005A11C 8583000E */ lh $v1, 0xe($t4)
/* 35520 8005A120 25620028 */ addiu $v0, $t3, 0x28
/* 35524 8005A124 AE020000 */ sw $v0, ($s0)
/* 35528 8005A128 44831000 */ mtc1 $v1, $f2
/* 3552C 8005A12C 00000000 */ nop
/* 35530 8005A130 468010A0 */ cvt.s.w $f2, $f2
/* 35534 8005A134 46141082 */ mul.s $f2, $f2, $f20
/* 35538 8005A138 00000000 */ nop
/* 3553C 8005A13C 85830010 */ lh $v1, 0x10($t4)
/* 35540 8005A140 25620030 */ addiu $v0, $t3, 0x30
/* 35544 8005A144 AE020000 */ sw $v0, ($s0)
/* 35548 8005A148 25620038 */ addiu $v0, $t3, 0x38
/* 3554C 8005A14C 44830000 */ mtc1 $v1, $f0
/* 35550 8005A150 00000000 */ nop
/* 35554 8005A154 46800020 */ cvt.s.w $f0, $f0
/* 35558 8005A158 46140002 */ mul.s $f0, $f0, $f20
/* 3555C 8005A15C 00000000 */ nop
/* 35560 8005A160 AE020000 */ sw $v0, ($s0)
/* 35564 8005A164 4600110D */ trunc.w.s $f4, $f2
/* 35568 8005A168 44032000 */ mfc1 $v1, $f4
/* 3556C 8005A16C 00000000 */ nop
/* 35570 8005A170 30630FFF */ andi $v1, $v1, 0xfff
/* 35574 8005A174 00031B00 */ sll $v1, $v1, 0xc
/* 35578 8005A178 4600010D */ trunc.w.s $f4, $f0
/* 3557C 8005A17C 44022000 */ mfc1 $v0, $f4
/* 35580 8005A180 00000000 */ nop
/* 35584 8005A184 30420FFF */ andi $v0, $v0, 0xfff
/* 35588 8005A188 00441025 */ or $v0, $v0, $a0
/* 3558C 8005A18C 00621825 */ or $v1, $v1, $v0
/* 35590 8005A190 AD630018 */ sw $v1, 0x18($t3)
/* 35594 8005A194 8583000E */ lh $v1, 0xe($t4)
/* 35598 8005A198 8585000A */ lh $a1, 0xa($t4)
/* 3559C 8005A19C 85840010 */ lh $a0, 0x10($t4)
/* 355A0 8005A1A0 8586000C */ lh $a2, 0xc($t4)
/* 355A4 8005A1A4 25620040 */ addiu $v0, $t3, 0x40
/* 355A8 8005A1A8 AE020000 */ sw $v0, ($s0)
/* 355AC 8005A1AC AD670020 */ sw $a3, 0x20($t3)
/* 355B0 8005A1B0 AD740024 */ sw $s4, 0x24($t3)
/* 355B4 8005A1B4 AD680028 */ sw $t0, 0x28($t3)
/* 355B8 8005A1B8 00651821 */ addu $v1, $v1, $a1
/* 355BC 8005A1BC 44831000 */ mtc1 $v1, $f2
/* 355C0 8005A1C0 00000000 */ nop
/* 355C4 8005A1C4 468010A0 */ cvt.s.w $f2, $f2
/* 355C8 8005A1C8 46141082 */ mul.s $f2, $f2, $f20
/* 355CC 8005A1CC 00000000 */ nop
/* 355D0 8005A1D0 AD74002C */ sw $s4, 0x2c($t3)
/* 355D4 8005A1D4 AD690030 */ sw $t1, 0x30($t3)
/* 355D8 8005A1D8 00862021 */ addu $a0, $a0, $a2
/* 355DC 8005A1DC 44840000 */ mtc1 $a0, $f0
/* 355E0 8005A1E0 00000000 */ nop
/* 355E4 8005A1E4 46800020 */ cvt.s.w $f0, $f0
/* 355E8 8005A1E8 46140002 */ mul.s $f0, $f0, $f20
/* 355EC 8005A1EC 00000000 */ nop
/* 355F0 8005A1F0 AD730034 */ sw $s3, 0x34($t3)
/* 355F4 8005A1F4 4600110D */ trunc.w.s $f4, $f2
/* 355F8 8005A1F8 44032000 */ mfc1 $v1, $f4
/* 355FC 8005A1FC 00000000 */ nop
/* 35600 8005A200 30630FFF */ andi $v1, $v1, 0xfff
/* 35604 8005A204 00031B00 */ sll $v1, $v1, 0xc
/* 35608 8005A208 4600010D */ trunc.w.s $f4, $f0
/* 3560C 8005A20C 44022000 */ mfc1 $v0, $f4
/* 35610 8005A210 00000000 */ nop
/* 35614 8005A214 30420FFF */ andi $v0, $v0, 0xfff
/* 35618 8005A218 00621825 */ or $v1, $v1, $v0
/* 3561C 8005A21C AD63001C */ sw $v1, 0x1c($t3)
/* 35620 8005A220 AD6A0038 */ sw $t2, 0x38($t3)
/* 35624 8005A224 AD73003C */ sw $s3, 0x3c($t3)
/* 35628 8005A228 95820000 */ lhu $v0, ($t4)
/* 3562C 8005A22C 30420010 */ andi $v0, $v0, 0x10
/* 35630 8005A230 14400012 */ bnez $v0, .L8005A27C
/* 35634 8005A234 0000882D */ daddu $s1, $zero, $zero
/* 35638 8005A238 3C04DA38 */ lui $a0, 0xda38
/* 3563C 8005A23C 34840007 */ ori $a0, $a0, 7
/* 35640 8005A240 25620048 */ addiu $v0, $t3, 0x48
/* 35644 8005A244 AE020000 */ sw $v0, ($s0)
/* 35648 8005A248 3C02DB0E */ lui $v0, 0xdb0e
/* 3564C 8005A24C AD620040 */ sw $v0, 0x40($t3)
/* 35650 8005A250 95830038 */ lhu $v1, 0x38($t4)
/* 35654 8005A254 25620050 */ addiu $v0, $t3, 0x50
/* 35658 8005A258 AE020000 */ sw $v0, ($s0)
/* 3565C 8005A25C 000D1180 */ sll $v0, $t5, 6
/* 35660 8005A260 AD630044 */ sw $v1, 0x44($t3)
/* 35664 8005A264 3C03800A */ lui $v1, 0x800a
/* 35668 8005A268 8C63A674 */ lw $v1, -0x598c($v1)
/* 3566C 8005A26C 24420030 */ addiu $v0, $v0, 0x30
/* 35670 8005A270 AD640048 */ sw $a0, 0x48($t3)
/* 35674 8005A274 00621821 */ addu $v1, $v1, $v0
/* 35678 8005A278 AD63004C */ sw $v1, 0x4c($t3)
.L8005A27C:
/* 3567C 8005A27C 01E0F809 */ jalr $t7
/* 35680 8005A280 01C0202D */ daddu $a0, $t6, $zero
/* 35684 8005A284 26520001 */ addiu $s2, $s2, 1
.L8005A288:
/* 35688 8005A288 2A420060 */ slti $v0, $s2, 0x60
/* 3568C 8005A28C 5440FF55 */ bnel $v0, $zero, .L80059FE4
/* 35690 8005A290 00121080 */ sll $v0, $s2, 2
/* 35694 8005A294 8FBF0028 */ lw $ra, 0x28($sp)
/* 35698 8005A298 8FB50024 */ lw $s5, 0x24($sp)
/* 3569C 8005A29C 8FB40020 */ lw $s4, 0x20($sp)
/* 356A0 8005A2A0 8FB3001C */ lw $s3, 0x1c($sp)
/* 356A4 8005A2A4 8FB20018 */ lw $s2, 0x18($sp)
/* 356A8 8005A2A8 8FB10014 */ lw $s1, 0x14($sp)
/* 356AC 8005A2AC 8FB00010 */ lw $s0, 0x10($sp)
/* 356B0 8005A2B0 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 356B4 8005A2B4 03E00008 */ jr $ra
/* 356B8 8005A2B8 27BD0038 */ addiu $sp, $sp, 0x38