papermario/asm/nonmatchings/code_33B180/func_E002618C.s
2020-11-29 02:13:07 -05:00

216 lines
11 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E002618C
/* 33B30C E002618C 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 33B310 E0026190 AFB1003C */ sw $s1, 0x3c($sp)
/* 33B314 E0026194 0080882D */ daddu $s1, $a0, $zero
/* 33B318 E0026198 AFBF0040 */ sw $ra, 0x40($sp)
/* 33B31C E002619C AFB00038 */ sw $s0, 0x38($sp)
/* 33B320 E00261A0 F7B40048 */ sdc1 $f20, 0x48($sp)
/* 33B324 E00261A4 8E30000C */ lw $s0, 0xc($s1)
/* 33B328 E00261A8 8E020028 */ lw $v0, 0x28($s0)
/* 33B32C E00261AC 2442FFFF */ addiu $v0, $v0, -1
/* 33B330 E00261B0 AE020028 */ sw $v0, 0x28($s0)
/* 33B334 E00261B4 8E02002C */ lw $v0, 0x2c($s0)
/* 33B338 E00261B8 8E030028 */ lw $v1, 0x28($s0)
/* 33B33C E00261BC 24440001 */ addiu $a0, $v0, 1
/* 33B340 E00261C0 04610005 */ bgez $v1, .LE00261D8
/* 33B344 E00261C4 AE04002C */ sw $a0, 0x2c($s0)
/* 33B348 E00261C8 0C080128 */ jal func_E02004A0
/* 33B34C E00261CC 0220202D */ daddu $a0, $s1, $zero
/* 33B350 E00261D0 08009926 */ j .LE0026498
/* 33B354 E00261D4 00000000 */ nop
.LE00261D8:
/* 33B358 E00261D8 2882000B */ slti $v0, $a0, 0xb
/* 33B35C E00261DC 1040000B */ beqz $v0, .LE002620C
/* 33B360 E00261E0 0060282D */ daddu $a1, $v1, $zero
/* 33B364 E00261E4 3C036666 */ lui $v1, 0x6666
/* 33B368 E00261E8 34636667 */ ori $v1, $v1, 0x6667
/* 33B36C E00261EC 00041200 */ sll $v0, $a0, 8
/* 33B370 E00261F0 00441023 */ subu $v0, $v0, $a0
/* 33B374 E00261F4 00430018 */ mult $v0, $v1
/* 33B378 E00261F8 000217C3 */ sra $v0, $v0, 0x1f
/* 33B37C E00261FC 00004010 */ mfhi $t0
/* 33B380 E0026200 00081883 */ sra $v1, $t0, 2
/* 33B384 E0026204 00621823 */ subu $v1, $v1, $v0
/* 33B388 E0026208 AE030024 */ sw $v1, 0x24($s0)
.LE002620C:
/* 33B38C E002620C 28A20006 */ slti $v0, $a1, 6
/* 33B390 E0026210 10400009 */ beqz $v0, .LE0026238
/* 33B394 E0026214 3C032AAA */ lui $v1, 0x2aaa
/* 33B398 E0026218 3463AAAB */ ori $v1, $v1, 0xaaab
/* 33B39C E002621C 00051200 */ sll $v0, $a1, 8
/* 33B3A0 E0026220 00451023 */ subu $v0, $v0, $a1
/* 33B3A4 E0026224 00430018 */ mult $v0, $v1
/* 33B3A8 E0026228 000217C3 */ sra $v0, $v0, 0x1f
/* 33B3AC E002622C 00004010 */ mfhi $t0
/* 33B3B0 E0026230 01021023 */ subu $v0, $t0, $v0
/* 33B3B4 E0026234 AE020024 */ sw $v0, 0x24($s0)
.LE0026238:
/* 33B3B8 E0026238 28A2000A */ slti $v0, $a1, 0xa
/* 33B3BC E002623C 1040000C */ beqz $v0, .LE0026270
/* 33B3C0 E0026240 00000000 */ nop
/* 33B3C4 E0026244 8E020000 */ lw $v0, ($s0)
/* 33B3C8 E0026248 14400009 */ bnez $v0, .LE0026270
/* 33B3CC E002624C 00000000 */ nop
/* 33B3D0 E0026250 C600001C */ lwc1 $f0, 0x1c($s0)
/* 33B3D4 E0026254 3C01E002 */ lui $at, %hi(D_E0026A28)
/* 33B3D8 E0026258 D4226A28 */ ldc1 $f2, %lo(D_E0026A28)($at)
/* 33B3DC E002625C 46000021 */ cvt.d.s $f0, $f0
/* 33B3E0 E0026260 46220002 */ mul.d $f0, $f0, $f2
/* 33B3E4 E0026264 00000000 */ nop
/* 33B3E8 E0026268 46200020 */ cvt.s.d $f0, $f0
/* 33B3EC E002626C E600001C */ swc1 $f0, 0x1c($s0)
.LE0026270:
/* 33B3F0 E0026270 8E030000 */ lw $v1, ($s0)
/* 33B3F4 E0026274 24020001 */ addiu $v0, $zero, 1
/* 33B3F8 E0026278 14620017 */ bne $v1, $v0, .LE00262D8
/* 33B3FC E002627C 00051080 */ sll $v0, $a1, 2
/* 33B400 E0026280 00451021 */ addu $v0, $v0, $a1
/* 33B404 E0026284 00021040 */ sll $v0, $v0, 1
/* 33B408 E0026288 44826000 */ mtc1 $v0, $f12
/* 33B40C E002628C 00000000 */ nop
/* 33B410 E0026290 0C080140 */ jal func_E0200500
/* 33B414 E0026294 46806320 */ cvt.s.w $f12, $f12
/* 33B418 E0026298 3C01E002 */ lui $at, %hi(D_E0026A30)
/* 33B41C E002629C D4226A30 */ ldc1 $f2, %lo(D_E0026A30)($at)
/* 33B420 E00262A0 46000021 */ cvt.d.s $f0, $f0
/* 33B424 E00262A4 46220002 */ mul.d $f0, $f0, $f2
/* 33B428 E00262A8 00000000 */ nop
/* 33B42C E00262AC C6020020 */ lwc1 $f2, 0x20($s0)
/* 33B430 E00262B0 460010A1 */ cvt.d.s $f2, $f2
/* 33B434 E00262B4 46220002 */ mul.d $f0, $f0, $f2
/* 33B438 E00262B8 00000000 */ nop
/* 33B43C E00262BC C604001C */ lwc1 $f4, 0x1c($s0)
/* 33B440 E00262C0 46201080 */ add.d $f2, $f2, $f0
/* 33B444 E00262C4 46002121 */ cvt.d.s $f4, $f4
/* 33B448 E00262C8 3C01E002 */ lui $at, %hi(D_E0026A38)
/* 33B44C E00262CC D4206A38 */ ldc1 $f0, %lo(D_E0026A38)($at)
/* 33B450 E00262D0 080098CB */ j .LE002632C
/* 33B454 E00262D4 46241081 */ sub.d $f2, $f2, $f4
.LE00262D8:
/* 33B458 E00262D8 00451021 */ addu $v0, $v0, $a1
/* 33B45C E00262DC 00021040 */ sll $v0, $v0, 1
/* 33B460 E00262E0 44826000 */ mtc1 $v0, $f12
/* 33B464 E00262E4 00000000 */ nop
/* 33B468 E00262E8 0C080140 */ jal func_E0200500
/* 33B46C E00262EC 46806320 */ cvt.s.w $f12, $f12
/* 33B470 E00262F0 3C01E002 */ lui $at, %hi(D_E0026A40)
/* 33B474 E00262F4 D4226A40 */ ldc1 $f2, %lo(D_E0026A40)($at)
/* 33B478 E00262F8 46000021 */ cvt.d.s $f0, $f0
/* 33B47C E00262FC 46220002 */ mul.d $f0, $f0, $f2
/* 33B480 E0026300 00000000 */ nop
/* 33B484 E0026304 C6020020 */ lwc1 $f2, 0x20($s0)
/* 33B488 E0026308 460010A1 */ cvt.d.s $f2, $f2
/* 33B48C E002630C 46220002 */ mul.d $f0, $f0, $f2
/* 33B490 E0026310 00000000 */ nop
/* 33B494 E0026314 C604001C */ lwc1 $f4, 0x1c($s0)
/* 33B498 E0026318 46201080 */ add.d $f2, $f2, $f0
/* 33B49C E002631C 46002121 */ cvt.d.s $f4, $f4
/* 33B4A0 E0026320 46241081 */ sub.d $f2, $f2, $f4
/* 33B4A4 E0026324 3C01E002 */ lui $at, %hi(D_E0026A48)
/* 33B4A8 E0026328 D4206A48 */ ldc1 $f0, %lo(D_E0026A48)($at)
.LE002632C:
/* 33B4AC E002632C 46201082 */ mul.d $f2, $f2, $f0
/* 33B4B0 E0026330 00000000 */ nop
/* 33B4B4 E0026334 46222100 */ add.d $f4, $f4, $f2
/* 33B4B8 E0026338 46202120 */ cvt.s.d $f4, $f4
/* 33B4BC E002633C E604001C */ swc1 $f4, 0x1c($s0)
/* 33B4C0 E0026340 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 33B4C4 E0026344 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 33B4C8 E0026348 3C013F80 */ lui $at, 0x3f80
/* 33B4CC E002634C 4481A000 */ mtc1 $at, $f20
/* 33B4D0 E0026350 27A20028 */ addiu $v0, $sp, 0x28
/* 33B4D4 E0026354 AFA20014 */ sw $v0, 0x14($sp)
/* 33B4D8 E0026358 27A2002C */ addiu $v0, $sp, 0x2c
/* 33B4DC E002635C AFA20018 */ sw $v0, 0x18($sp)
/* 33B4E0 E0026360 27A20030 */ addiu $v0, $sp, 0x30
/* 33B4E4 E0026364 AFA2001C */ sw $v0, 0x1c($sp)
/* 33B4E8 E0026368 27A20034 */ addiu $v0, $sp, 0x34
/* 33B4EC E002636C AFA20020 */ sw $v0, 0x20($sp)
/* 33B4F0 E0026370 00032080 */ sll $a0, $v1, 2
/* 33B4F4 E0026374 00832021 */ addu $a0, $a0, $v1
/* 33B4F8 E0026378 00042080 */ sll $a0, $a0, 2
/* 33B4FC E002637C 00832023 */ subu $a0, $a0, $v1
/* 33B500 E0026380 000410C0 */ sll $v0, $a0, 3
/* 33B504 E0026384 00822021 */ addu $a0, $a0, $v0
/* 33B508 E0026388 000420C0 */ sll $a0, $a0, 3
/* 33B50C E002638C 3C02800B */ lui $v0, %hi(D_800B1E54)
/* 33B510 E0026390 24421E54 */ addiu $v0, $v0, %lo(D_800B1E54)
/* 33B514 E0026394 E7B40010 */ swc1 $f20, 0x10($sp)
/* 33B518 E0026398 8E050004 */ lw $a1, 4($s0)
/* 33B51C E002639C 8E060008 */ lw $a2, 8($s0)
/* 33B520 E00263A0 8E07000C */ lw $a3, 0xc($s0)
/* 33B524 E00263A4 0C080168 */ jal func_E02005A0
/* 33B528 E00263A8 00822021 */ addu $a0, $a0, $v0
/* 33B52C E00263AC C7A00034 */ lwc1 $f0, 0x34($sp)
/* 33B530 E00263B0 C7A40028 */ lwc1 $f4, 0x28($sp)
/* 33B534 E00263B4 4600A503 */ div.s $f20, $f20, $f0
/* 33B538 E00263B8 46142102 */ mul.s $f4, $f4, $f20
/* 33B53C E00263BC 00000000 */ nop
/* 33B540 E00263C0 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 33B544 E00263C4 46140002 */ mul.s $f0, $f0, $f20
/* 33B548 E00263C8 00000000 */ nop
/* 33B54C E00263CC C7A20030 */ lwc1 $f2, 0x30($sp)
/* 33B550 E00263D0 46141082 */ mul.s $f2, $f2, $f20
/* 33B554 E00263D4 00000000 */ nop
/* 33B558 E00263D8 AE000018 */ sw $zero, 0x18($s0)
/* 33B55C E00263DC E6040010 */ swc1 $f4, 0x10($s0)
/* 33B560 E00263E0 E6000014 */ swc1 $f0, 0x14($s0)
/* 33B564 E00263E4 8E220008 */ lw $v0, 8($s1)
/* 33B568 E00263E8 0000382D */ daddu $a3, $zero, $zero
/* 33B56C E00263EC E7B40034 */ swc1 $f20, 0x34($sp)
/* 33B570 E00263F0 E7A40028 */ swc1 $f4, 0x28($sp)
/* 33B574 E00263F4 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 33B578 E00263F8 18400027 */ blez $v0, .LE0026498
/* 33B57C E00263FC E7A20030 */ swc1 $f2, 0x30($sp)
/* 33B580 E0026400 26060048 */ addiu $a2, $s0, 0x48
.LE0026404:
/* 33B584 E0026404 8CC2FFE8 */ lw $v0, -0x18($a2)
/* 33B588 E0026408 8CC3FFEC */ lw $v1, -0x14($a2)
/* 33B58C E002640C 8CC4FFF4 */ lw $a0, -0xc($a2)
/* 33B590 E0026410 8CC5FFFC */ lw $a1, -4($a2)
/* 33B594 E0026414 C4C40010 */ lwc1 $f4, 0x10($a2)
/* 33B598 E0026418 C4C00014 */ lwc1 $f0, 0x14($a2)
/* 33B59C E002641C C4C2000C */ lwc1 $f2, 0xc($a2)
/* 33B5A0 E0026420 00431021 */ addu $v0, $v0, $v1
/* 33B5A4 E0026424 8CC3FFF8 */ lw $v1, -8($a2)
/* 33B5A8 E0026428 46002100 */ add.s $f4, $f4, $f0
/* 33B5AC E002642C ACC2FFE8 */ sw $v0, -0x18($a2)
/* 33B5B0 E0026430 8CC2FFF0 */ lw $v0, -0x10($a2)
/* 33B5B4 E0026434 00651821 */ addu $v1, $v1, $a1
/* 33B5B8 E0026438 ACC3FFF8 */ sw $v1, -8($a2)
/* 33B5BC E002643C 8CC30000 */ lw $v1, ($a2)
/* 33B5C0 E0026440 00441021 */ addu $v0, $v0, $a0
/* 33B5C4 E0026444 ACC2FFF0 */ sw $v0, -0x10($a2)
/* 33B5C8 E0026448 8CC20004 */ lw $v0, 4($a2)
/* 33B5CC E002644C C4C00008 */ lwc1 $f0, 8($a2)
/* 33B5D0 E0026450 00621821 */ addu $v1, $v1, $v0
/* 33B5D4 E0026454 8CC2FFF8 */ lw $v0, -8($a2)
/* 33B5D8 E0026458 46020000 */ add.s $f0, $f0, $f2
/* 33B5DC E002645C ACC30000 */ sw $v1, ($a2)
/* 33B5E0 E0026460 E4C40010 */ swc1 $f4, 0x10($a2)
/* 33B5E4 E0026464 04410003 */ bgez $v0, .LE0026474
/* 33B5E8 E0026468 E4C00008 */ swc1 $f0, 8($a2)
/* 33B5EC E002646C 24420100 */ addiu $v0, $v0, 0x100
/* 33B5F0 E0026470 ACC2FFF8 */ sw $v0, -8($a2)
.LE0026474:
/* 33B5F4 E0026474 8CC20000 */ lw $v0, ($a2)
/* 33B5F8 E0026478 04410003 */ bgez $v0, .LE0026488
/* 33B5FC E002647C 24E70001 */ addiu $a3, $a3, 1
/* 33B600 E0026480 24420100 */ addiu $v0, $v0, 0x100
/* 33B604 E0026484 ACC20000 */ sw $v0, ($a2)
.LE0026488:
/* 33B608 E0026488 8E220008 */ lw $v0, 8($s1)
/* 33B60C E002648C 00E2102A */ slt $v0, $a3, $v0
/* 33B610 E0026490 1440FFDC */ bnez $v0, .LE0026404
/* 33B614 E0026494 24C60060 */ addiu $a2, $a2, 0x60
.LE0026498:
/* 33B618 E0026498 8FBF0040 */ lw $ra, 0x40($sp)
/* 33B61C E002649C 8FB1003C */ lw $s1, 0x3c($sp)
/* 33B620 E00264A0 8FB00038 */ lw $s0, 0x38($sp)
/* 33B624 E00264A4 D7B40048 */ ldc1 $f20, 0x48($sp)
/* 33B628 E00264A8 03E00008 */ jr $ra
/* 33B62C E00264AC 27BD0050 */ addiu $sp, $sp, 0x50