papermario/asm/nonmatchings/code_ef070_len_3400/ShakeCam.s

204 lines
9.0 KiB
ArmAsm
Raw Normal View History

2020-08-04 08:49:11 +02:00
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel ShakeCam
/* 0EFC58 802CB2A8 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0EFC5C 802CB2AC AFB5002C */ sw $s5, 0x2c($sp)
/* 0EFC60 802CB2B0 0080A82D */ daddu $s5, $a0, $zero
/* 0EFC64 802CB2B4 AFB20020 */ sw $s2, 0x20($sp)
/* 0EFC68 802CB2B8 00A0902D */ daddu $s2, $a1, $zero
/* 0EFC6C 802CB2BC AFBF0030 */ sw $ra, 0x30($sp)
/* 0EFC70 802CB2C0 AFB40028 */ sw $s4, 0x28($sp)
/* 0EFC74 802CB2C4 AFB30024 */ sw $s3, 0x24($sp)
/* 0EFC78 802CB2C8 AFB1001C */ sw $s1, 0x1c($sp)
/* 0EFC7C 802CB2CC AFB00018 */ sw $s0, 0x18($sp)
/* 0EFC80 802CB2D0 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 0EFC84 802CB2D4 8EB0000C */ lw $s0, 0xc($s5)
/* 0EFC88 802CB2D8 8E050000 */ lw $a1, ($s0)
/* 0EFC8C 802CB2DC 0C0B1EAF */ jal get_variable
/* 0EFC90 802CB2E0 26100004 */ addiu $s0, $s0, 4
/* 0EFC94 802CB2E4 8E050000 */ lw $a1, ($s0)
/* 0EFC98 802CB2E8 26100004 */ addiu $s0, $s0, 4
/* 0EFC9C 802CB2EC 02A0202D */ daddu $a0, $s5, $zero
/* 0EFCA0 802CB2F0 0C0B1EAF */ jal get_variable
/* 0EFCA4 802CB2F4 0040882D */ daddu $s1, $v0, $zero
/* 0EFCA8 802CB2F8 8E050000 */ lw $a1, ($s0)
/* 0EFCAC 802CB2FC 26100004 */ addiu $s0, $s0, 4
/* 0EFCB0 802CB300 02A0202D */ daddu $a0, $s5, $zero
/* 0EFCB4 802CB304 0C0B1EAF */ jal get_variable
/* 0EFCB8 802CB308 0040982D */ daddu $s3, $v0, $zero
/* 0EFCBC 802CB30C 0040A02D */ daddu $s4, $v0, $zero
/* 0EFCC0 802CB310 8E050000 */ lw $a1, ($s0)
/* 0EFCC4 802CB314 0C0B210B */ jal get_float_variable
/* 0EFCC8 802CB318 02A0202D */ daddu $a0, $s5, $zero
/* 0EFCCC 802CB31C 3C04800B */ lui $a0, 0x800b
/* 0EFCD0 802CB320 24841D80 */ addiu $a0, $a0, 0x1d80
/* 0EFCD4 802CB324 00111080 */ sll $v0, $s1, 2
/* 0EFCD8 802CB328 00511021 */ addu $v0, $v0, $s1
/* 0EFCDC 802CB32C 00021080 */ sll $v0, $v0, 2
/* 0EFCE0 802CB330 00511023 */ subu $v0, $v0, $s1
/* 0EFCE4 802CB334 000218C0 */ sll $v1, $v0, 3
/* 0EFCE8 802CB338 00431021 */ addu $v0, $v0, $v1
/* 0EFCEC 802CB33C 000210C0 */ sll $v0, $v0, 3
/* 0EFCF0 802CB340 00448021 */ addu $s0, $v0, $a0
/* 0EFCF4 802CB344 12400031 */ beqz $s2, .L802CB40C
/* 0EFCF8 802CB348 46000500 */ add.s $f20, $f0, $f0
/* 0EFCFC 802CB34C 06600005 */ bltz $s3, .L802CB364
/* 0EFD00 802CB350 2A620002 */ slti $v0, $s3, 2
/* 0EFD04 802CB354 14400003 */ bnez $v0, .L802CB364
/* 0EFD08 802CB358 24020002 */ addiu $v0, $zero, 2
/* 0EFD0C 802CB35C 52620001 */ beql $s3, $v0, .L802CB364
/* 0EFD10 802CB360 0054A004 */ sllv $s4, $s4, $v0
.L802CB364:
/* 0EFD14 802CB364 3C013F80 */ lui $at, 0x3f80
/* 0EFD18 802CB368 44810000 */ mtc1 $at, $f0
/* 0EFD1C 802CB36C 00000000 */ nop
/* 0EFD20 802CB370 E6A0007C */ swc1 $f0, 0x7c($s5)
/* 0EFD24 802CB374 3C028007 */ lui $v0, 0x8007
/* 0EFD28 802CB378 8C42419C */ lw $v0, 0x419c($v0)
/* 0EFD2C 802CB37C AEB40074 */ sw $s4, 0x74($s5)
/* 0EFD30 802CB380 80420070 */ lb $v0, 0x70($v0)
/* 0EFD34 802CB384 14400021 */ bnez $v0, .L802CB40C
/* 0EFD38 802CB388 00000000 */ nop
/* 0EFD3C 802CB38C 3C014120 */ lui $at, 0x4120
/* 0EFD40 802CB390 44810000 */ mtc1 $at, $f0
/* 0EFD44 802CB394 00000000 */ nop
/* 0EFD48 802CB398 4614003C */ c.lt.s $f0, $f20
/* 0EFD4C 802CB39C 00000000 */ nop
/* 0EFD50 802CB3A0 45030001 */ bc1tl .L802CB3A8
/* 0EFD54 802CB3A4 46000506 */ mov.s $f20, $f0
.L802CB3A8:
/* 0EFD58 802CB3A8 3C0140C0 */ lui $at, 0x40c0
/* 0EFD5C 802CB3AC 44810000 */ mtc1 $at, $f0
/* 0EFD60 802CB3B0 00000000 */ nop
/* 0EFD64 802CB3B4 4614003C */ c.lt.s $f0, $f20
/* 0EFD68 802CB3B8 00000000 */ nop
/* 0EFD6C 802CB3BC 45000002 */ bc1f .L802CB3C8
/* 0EFD70 802CB3C0 4600A086 */ mov.s $f2, $f20
/* 0EFD74 802CB3C4 46000086 */ mov.s $f2, $f0
.L802CB3C8:
/* 0EFD78 802CB3C8 3C014200 */ lui $at, 0x4200
/* 0EFD7C 802CB3CC 44810000 */ mtc1 $at, $f0
/* 0EFD80 802CB3D0 00000000 */ nop
/* 0EFD84 802CB3D4 46001002 */ mul.s $f0, $f2, $f0
/* 0EFD88 802CB3D8 00000000 */ nop
/* 0EFD8C 802CB3DC 0280282D */ daddu $a1, $s4, $zero
/* 0EFD90 802CB3E0 3C014280 */ lui $at, 0x4280
/* 0EFD94 802CB3E4 44811000 */ mtc1 $at, $f2
/* 0EFD98 802CB3E8 2A820005 */ slti $v0, $s4, 5
/* 0EFD9C 802CB3EC 10400002 */ beqz $v0, .L802CB3F8
/* 0EFDA0 802CB3F0 46020080 */ add.s $f2, $f0, $f2
/* 0EFDA4 802CB3F4 24050005 */ addiu $a1, $zero, 5
.L802CB3F8:
/* 0EFDA8 802CB3F8 4600110D */ trunc.w.s $f4, $f2
/* 0EFDAC 802CB3FC 44042000 */ mfc1 $a0, $f4
/* 0EFDB0 802CB400 30A5FFFF */ andi $a1, $a1, 0xffff
/* 0EFDB4 802CB404 0C00A3C2 */ jal start_rumble
/* 0EFDB8 802CB408 00052840 */ sll $a1, $a1, 1
.L802CB40C:
/* 0EFDBC 802CB40C 96020000 */ lhu $v0, ($s0)
/* 0EFDC0 802CB410 34420008 */ ori $v0, $v0, 8
/* 0EFDC4 802CB414 A6020000 */ sh $v0, ($s0)
/* 0EFDC8 802CB418 24020001 */ addiu $v0, $zero, 1
/* 0EFDCC 802CB41C C6A2007C */ lwc1 $f2, 0x7c($s5)
/* 0EFDD0 802CB420 12620016 */ beq $s3, $v0, .L802CB47C
/* 0EFDD4 802CB424 2A620002 */ slti $v0, $s3, 2
/* 0EFDD8 802CB428 10400005 */ beqz $v0, .L802CB440
/* 0EFDDC 802CB42C 24020002 */ addiu $v0, $zero, 2
/* 0EFDE0 802CB430 52600007 */ beql $s3, $zero, .L802CB450
/* 0EFDE4 802CB434 46001007 */ neg.s $f0, $f2
/* 0EFDE8 802CB438 080B2D47 */ j .L802CB51C
/* 0EFDEC 802CB43C 00000000 */ nop
.L802CB440:
/* 0EFDF0 802CB440 5262001B */ beql $s3, $v0, .L802CB4B0
/* 0EFDF4 802CB444 46001007 */ neg.s $f0, $f2
/* 0EFDF8 802CB448 080B2D47 */ j .L802CB51C
/* 0EFDFC 802CB44C 00000000 */ nop
.L802CB450:
/* 0EFE00 802CB450 46140002 */ mul.s $f0, $f0, $f20
/* 0EFE04 802CB454 00000000 */ nop
/* 0EFE08 802CB458 44060000 */ mfc1 $a2, $f0
/* 0EFE0C 802CB45C 44800000 */ mtc1 $zero, $f0
/* 0EFE10 802CB460 00000000 */ nop
/* 0EFE14 802CB464 44050000 */ mfc1 $a1, $f0
/* 0EFE18 802CB468 26040194 */ addiu $a0, $s0, 0x194
/* 0EFE1C 802CB46C 0C019E40 */ jal guTranslateF
/* 0EFE20 802CB470 00A0382D */ daddu $a3, $a1, $zero
/* 0EFE24 802CB474 080B2D44 */ j .L802CB510
/* 0EFE28 802CB478 00000000 */ nop
.L802CB47C:
/* 0EFE2C 802CB47C 46141082 */ mul.s $f2, $f2, $f20
/* 0EFE30 802CB480 00000000 */ nop
/* 0EFE34 802CB484 44800000 */ mtc1 $zero, $f0
/* 0EFE38 802CB488 26040194 */ addiu $a0, $s0, 0x194
/* 0EFE3C 802CB48C 44060000 */ mfc1 $a2, $f0
/* 0EFE40 802CB490 3C013F80 */ lui $at, 0x3f80
/* 0EFE44 802CB494 44810000 */ mtc1 $at, $f0
/* 0EFE48 802CB498 44051000 */ mfc1 $a1, $f2
/* 0EFE4C 802CB49C 00C0382D */ daddu $a3, $a2, $zero
/* 0EFE50 802CB4A0 0C019EC8 */ jal guRotateF
/* 0EFE54 802CB4A4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 0EFE58 802CB4A8 080B2D44 */ j .L802CB510
/* 0EFE5C 802CB4AC 00000000 */ nop
.L802CB4B0:
/* 0EFE60 802CB4B0 46140002 */ mul.s $f0, $f0, $f20
/* 0EFE64 802CB4B4 00000000 */ nop
/* 0EFE68 802CB4B8 44060000 */ mfc1 $a2, $f0
/* 0EFE6C 802CB4BC 44800000 */ mtc1 $zero, $f0
/* 0EFE70 802CB4C0 00000000 */ nop
/* 0EFE74 802CB4C4 44050000 */ mfc1 $a1, $f0
/* 0EFE78 802CB4C8 26040194 */ addiu $a0, $s0, 0x194
/* 0EFE7C 802CB4CC 0C019E40 */ jal guTranslateF
/* 0EFE80 802CB4D0 00A0382D */ daddu $a3, $a1, $zero
/* 0EFE84 802CB4D4 8EA30074 */ lw $v1, 0x74($s5)
/* 0EFE88 802CB4D8 00141040 */ sll $v0, $s4, 1
/* 0EFE8C 802CB4DC 0062102A */ slt $v0, $v1, $v0
/* 0EFE90 802CB4E0 1040000B */ beqz $v0, .L802CB510
/* 0EFE94 802CB4E4 0283102A */ slt $v0, $s4, $v1
/* 0EFE98 802CB4E8 10400009 */ beqz $v0, .L802CB510
/* 0EFE9C 802CB4EC 00000000 */ nop
/* 0EFEA0 802CB4F0 C6A0007C */ lwc1 $f0, 0x7c($s5)
/* 0EFEA4 802CB4F4 3C01802E */ lui $at, 0x802e
/* 0EFEA8 802CB4F8 D422A1D0 */ ldc1 $f2, -0x5e30($at)
/* 0EFEAC 802CB4FC 46000021 */ cvt.d.s $f0, $f0
/* 0EFEB0 802CB500 46220002 */ mul.d $f0, $f0, $f2
/* 0EFEB4 802CB504 00000000 */ nop
/* 0EFEB8 802CB508 080B2D46 */ j .L802CB518
/* 0EFEBC 802CB50C 46200020 */ cvt.s.d $f0, $f0
.L802CB510:
/* 0EFEC0 802CB510 C6A0007C */ lwc1 $f0, 0x7c($s5)
/* 0EFEC4 802CB514 46000007 */ neg.s $f0, $f0
.L802CB518:
/* 0EFEC8 802CB518 E6A0007C */ swc1 $f0, 0x7c($s5)
.L802CB51C:
/* 0EFECC 802CB51C 8EA20074 */ lw $v0, 0x74($s5)
/* 0EFED0 802CB520 10400004 */ beqz $v0, .L802CB534
/* 0EFED4 802CB524 2442FFFF */ addiu $v0, $v0, -1
/* 0EFED8 802CB528 AEA20074 */ sw $v0, 0x74($s5)
/* 0EFEDC 802CB52C 080B2D51 */ j .L802CB544
/* 0EFEE0 802CB530 0000102D */ daddu $v0, $zero, $zero
.L802CB534:
/* 0EFEE4 802CB534 96030000 */ lhu $v1, ($s0)
/* 0EFEE8 802CB538 24020002 */ addiu $v0, $zero, 2
/* 0EFEEC 802CB53C 3063FFF7 */ andi $v1, $v1, 0xfff7
/* 0EFEF0 802CB540 A6030000 */ sh $v1, ($s0)
.L802CB544:
/* 0EFEF4 802CB544 8FBF0030 */ lw $ra, 0x30($sp)
/* 0EFEF8 802CB548 8FB5002C */ lw $s5, 0x2c($sp)
/* 0EFEFC 802CB54C 8FB40028 */ lw $s4, 0x28($sp)
/* 0EFF00 802CB550 8FB30024 */ lw $s3, 0x24($sp)
/* 0EFF04 802CB554 8FB20020 */ lw $s2, 0x20($sp)
/* 0EFF08 802CB558 8FB1001C */ lw $s1, 0x1c($sp)
/* 0EFF0C 802CB55C 8FB00018 */ lw $s0, 0x18($sp)
/* 0EFF10 802CB560 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 0EFF14 802CB564 03E00008 */ jr $ra
/* 0EFF18 802CB568 27BD0040 */ addiu $sp, $sp, 0x40