Files
mk64/asm/non_matchings/code_80027D00/control_cpu_movement.s
T
CoderStig 8ab4557b39 Split asm using autodecompiler (#49)
* Split asm using autodecompiler

* Placed libultra bss and linked more C
2021-11-05 05:17:09 -06:00

248 lines
13 KiB
ArmAsm

glabel control_cpu_movement
/* 02FF5C 8002F35C 27BDFF00 */ addiu $sp, $sp, -0x100
/* 02FF60 8002F360 3C18800E */ lui $t8, %hi(D_800E3D98) # $t8, 0x800e
/* 02FF64 8002F364 AFBF002C */ sw $ra, 0x2c($sp)
/* 02FF68 8002F368 AFB10028 */ sw $s1, 0x28($sp)
/* 02FF6C 8002F36C AFB00024 */ sw $s0, 0x24($sp)
/* 02FF70 8002F370 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 02FF74 8002F374 AFA50104 */ sw $a1, 0x104($sp)
/* 02FF78 8002F378 AFA60108 */ sw $a2, 0x108($sp)
/* 02FF7C 8002F37C AFA7010C */ sw $a3, 0x10c($sp)
/* 02FF80 8002F380 27183D98 */ addiu $t8, %lo(D_800E3D98) # addiu $t8, $t8, 0x3d98
/* 02FF84 8002F384 8F010000 */ lw $at, ($t8)
/* 02FF88 8002F388 27AF00F4 */ addiu $t7, $sp, 0xf4
/* 02FF8C 8002F38C 8F090004 */ lw $t1, 4($t8)
/* 02FF90 8002F390 ADE10000 */ sw $at, ($t7)
/* 02FF94 8002F394 8F010008 */ lw $at, 8($t8)
/* 02FF98 8002F398 3C0B800E */ lui $t3, %hi(D_800E3DA4) # $t3, 0x800e
/* 02FF9C 8002F39C 256B3DA4 */ addiu $t3, %lo(D_800E3DA4) # addiu $t3, $t3, 0x3da4
/* 02FFA0 8002F3A0 ADE90004 */ sw $t1, 4($t7)
/* 02FFA4 8002F3A4 ADE10008 */ sw $at, 8($t7)
/* 02FFA8 8002F3A8 8D610000 */ lw $at, ($t3)
/* 02FFAC 8002F3AC 00078E00 */ sll $s1, $a3, 0x18
/* 02FFB0 8002F3B0 00117603 */ sra $t6, $s1, 0x18
/* 02FFB4 8002F3B4 27AA00E8 */ addiu $t2, $sp, 0xe8
/* 02FFB8 8002F3B8 01C08825 */ move $s1, $t6
/* 02FFBC 8002F3BC AD410000 */ sw $at, ($t2)
/* 02FFC0 8002F3C0 8D610008 */ lw $at, 8($t3)
/* 02FFC4 8002F3C4 8D6E0004 */ lw $t6, 4($t3)
/* 02FFC8 8002F3C8 3C19800E */ lui $t9, %hi(D_800E3DB0) # $t9, 0x800e
/* 02FFCC 8002F3CC 27393DB0 */ addiu $t9, %lo(D_800E3DB0) # addiu $t9, $t9, 0x3db0
/* 02FFD0 8002F3D0 AD410008 */ sw $at, 8($t2)
/* 02FFD4 8002F3D4 AD4E0004 */ sw $t6, 4($t2)
/* 02FFD8 8002F3D8 8F210000 */ lw $at, ($t9)
/* 02FFDC 8002F3DC 27A800DC */ addiu $t0, $sp, 0xdc
/* 02FFE0 8002F3E0 8F290004 */ lw $t1, 4($t9)
/* 02FFE4 8002F3E4 AD010000 */ sw $at, ($t0)
/* 02FFE8 8002F3E8 8F210008 */ lw $at, 8($t9)
/* 02FFEC 8002F3EC 3C0C800E */ lui $t4, %hi(D_800E3DBC) # $t4, 0x800e
/* 02FFF0 8002F3F0 258C3DBC */ addiu $t4, %lo(D_800E3DBC) # addiu $t4, $t4, 0x3dbc
/* 02FFF4 8002F3F4 AD090004 */ sw $t1, 4($t0)
/* 02FFF8 8002F3F8 AD010008 */ sw $at, 8($t0)
/* 02FFFC 8002F3FC 8D810000 */ lw $at, ($t4)
/* 030000 8002F400 27AD00D0 */ addiu $t5, $sp, 0xd0
/* 030004 8002F404 8D8E0004 */ lw $t6, 4($t4)
/* 030008 8002F408 ADA10000 */ sw $at, ($t5)
/* 03000C 8002F40C 8D810008 */ lw $at, 8($t4)
/* 030010 8002F410 ADAE0004 */ sw $t6, 4($t5)
/* 030014 8002F414 00114880 */ sll $t1, $s1, 2
/* 030018 8002F418 ADA10008 */ sw $at, 8($t5)
/* 03001C 8002F41C 8C9800BC */ lw $t8, 0xbc($a0)
/* 030020 8002F420 84880044 */ lh $t0, 0x44($a0)
/* 030024 8002F424 3C018016 */ lui $at, %hi(D_80164510)
/* 030028 8002F428 370F1000 */ ori $t7, $t8, 0x1000
/* 03002C 8002F42C 35190010 */ ori $t9, $t0, 0x10
/* 030030 8002F430 AC8F00BC */ sw $t7, 0xbc($a0)
/* 030034 8002F434 A4990044 */ sh $t9, 0x44($a0)
/* 030038 8002F438 00290821 */ addu $at, $at, $t1
/* 03003C 8002F43C C4244510 */ lwc1 $f4, %lo(D_80164510)($at)
/* 030040 8002F440 2401FFEF */ li $at, -17
/* 030044 8002F444 00112E00 */ sll $a1, $s1, 0x18
/* 030048 8002F448 E7A40040 */ swc1 $f4, 0x40($sp)
/* 03004C 8002F44C 8C8B00BC */ lw $t3, 0xbc($a0)
/* 030050 8002F450 A4800204 */ sh $zero, 0x204($a0)
/* 030054 8002F454 00056E03 */ sra $t5, $a1, 0x18
/* 030058 8002F458 01615024 */ and $t2, $t3, $at
/* 03005C 8002F45C AC8A00BC */ sw $t2, 0xbc($a0)
/* 030060 8002F460 00808025 */ move $s0, $a0
/* 030064 8002F464 83A6010B */ lb $a2, 0x10b($sp)
/* 030068 8002F468 0C00AE0C */ jal func_8002B830
/* 03006C 8002F46C 01A02825 */ move $a1, $t5
/* 030070 8002F470 00112E00 */ sll $a1, $s1, 0x18
/* 030074 8002F474 00056603 */ sra $t4, $a1, 0x18
/* 030078 8002F478 01802825 */ move $a1, $t4
/* 03007C 8002F47C 02002025 */ move $a0, $s0
/* 030080 8002F480 0C00B352 */ jal func_8002CD48
/* 030084 8002F484 83A6010B */ lb $a2, 0x10b($sp)
/* 030088 8002F488 4480A000 */ mtc1 $zero, $f20
/* 03008C 8002F48C C6080064 */ lwc1 $f8, 0x64($s0)
/* 030090 8002F490 C7A600DC */ lwc1 $f6, 0xdc($sp)
/* 030094 8002F494 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff
/* 030098 8002F498 4608A282 */ mul.s $f10, $f20, $f8
/* 03009C 8002F49C C7A800E4 */ lwc1 $f8, 0xe4($sp)
/* 0300A0 8002F4A0 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff
/* 0300A4 8002F4A4 00112E00 */ sll $a1, $s1, 0x18
/* 0300A8 8002F4A8 00057E03 */ sra $t7, $a1, 0x18
/* 0300AC 8002F4AC 01E02825 */ move $a1, $t7
/* 0300B0 8002F4B0 02002025 */ move $a0, $s0
/* 0300B4 8002F4B4 460A3100 */ add.s $f4, $f6, $f10
/* 0300B8 8002F4B8 E7A40084 */ swc1 $f4, 0x84($sp)
/* 0300BC 8002F4BC C606006C */ lwc1 $f6, 0x6c($s0)
/* 0300C0 8002F4C0 4606A282 */ mul.s $f10, $f20, $f6
/* 0300C4 8002F4C4 460A4100 */ add.s $f4, $f8, $f10
/* 0300C8 8002F4C8 E7A4007C */ swc1 $f4, 0x7c($sp)
/* 0300CC 8002F4CC 8E0E00BC */ lw $t6, 0xbc($s0)
/* 0300D0 8002F4D0 A600010C */ sh $zero, 0x10c($s0)
/* 0300D4 8002F4D4 A6000256 */ sh $zero, 0x256($s0)
/* 0300D8 8002F4D8 01C1C024 */ and $t8, $t6, $at
/* 0300DC 8002F4DC 0C00C054 */ jal func_80030150
/* 0300E0 8002F4E0 AE1800BC */ sw $t8, 0xbc($s0)
/* 0300E4 8002F4E4 26050174 */ addiu $a1, $s0, 0x174
/* 0300E8 8002F4E8 E7A000FC */ swc1 $f0, 0xfc($sp)
/* 0300EC 8002F4EC AFA5003C */ sw $a1, 0x3c($sp)
/* 0300F0 8002F4F0 0C0AD8EE */ jal func_802B63B8
/* 0300F4 8002F4F4 27A400F4 */ addiu $a0, $sp, 0xf4
/* 0300F8 8002F4F8 C6060034 */ lwc1 $f6, 0x34($s0)
/* 0300FC 8002F4FC E7B4006C */ swc1 $f20, 0x6c($sp)
/* 030100 8002F500 C7A400F4 */ lwc1 $f4, 0xf4($sp)
/* 030104 8002F504 E7A60068 */ swc1 $f6, 0x68($sp)
/* 030108 8002F508 C608003C */ lwc1 $f8, 0x3c($s0)
/* 03010C 8002F50C C7AA0068 */ lwc1 $f10, 0x68($sp)
/* 030110 8002F510 C7A60084 */ lwc1 $f6, 0x84($sp)
/* 030114 8002F514 E7A80070 */ swc1 $f8, 0x70($sp)
/* 030118 8002F518 46005021 */ cvt.d.s $f0, $f10
/* 03011C 8002F51C 46062200 */ add.s $f8, $f4, $f6
/* 030120 8002F520 C7AA00D0 */ lwc1 $f10, 0xd0($sp)
/* 030124 8002F524 3C01800F */ lui $at, %hi(D_800ED898)
/* 030128 8002F528 D430D898 */ ldc1 $f16, %lo(D_800ED898)($at)
/* 03012C 8002F52C 460A4100 */ add.s $f4, $f8, $f10
/* 030130 8002F530 C60800FC */ lwc1 $f8, 0xfc($s0)
/* 030134 8002F534 3C01800F */ lui $at, %hi(D_800ED8A0)
/* 030138 8002F538 D432D8A0 */ ldc1 $f18, %lo(D_800ED8A0)($at)
/* 03013C 8002F53C 460042A1 */ cvt.d.s $f10, $f8
/* 030140 8002F540 460021A1 */ cvt.d.s $f6, $f4
/* 030144 8002F544 462A8102 */ mul.d $f4, $f16, $f10
/* 030148 8002F548 00000000 */ nop
/* 03014C 8002F54C 46240202 */ mul.d $f8, $f0, $f4
/* 030150 8002F550 46283281 */ sub.d $f10, $f6, $f8
/* 030154 8002F554 46325103 */ div.d $f4, $f10, $f18
/* 030158 8002F558 C7AA0070 */ lwc1 $f10, 0x70($sp)
/* 03015C 8002F55C 460050A1 */ cvt.d.s $f2, $f10
/* 030160 8002F560 C7AA00D8 */ lwc1 $f10, 0xd8($sp)
/* 030164 8002F564 46240180 */ add.d $f6, $f0, $f4
/* 030168 8002F568 C7A400FC */ lwc1 $f4, 0xfc($sp)
/* 03016C 8002F56C 46203220 */ cvt.s.d $f8, $f6
/* 030170 8002F570 C7A6007C */ lwc1 $f6, 0x7c($sp)
/* 030174 8002F574 E7A80068 */ swc1 $f8, 0x68($sp)
/* 030178 8002F578 46062200 */ add.s $f8, $f4, $f6
/* 03017C 8002F57C 460A4100 */ add.s $f4, $f8, $f10
/* 030180 8002F580 C60800FC */ lwc1 $f8, 0xfc($s0)
/* 030184 8002F584 460042A1 */ cvt.d.s $f10, $f8
/* 030188 8002F588 460021A1 */ cvt.d.s $f6, $f4
/* 03018C 8002F58C 462A8102 */ mul.d $f4, $f16, $f10
/* 030190 8002F590 00000000 */ nop
/* 030194 8002F594 46241202 */ mul.d $f8, $f2, $f4
/* 030198 8002F598 46283281 */ sub.d $f10, $f6, $f8
/* 03019C 8002F59C 46325103 */ div.d $f4, $f10, $f18
/* 0301A0 8002F5A0 46241180 */ add.d $f6, $f2, $f4
/* 0301A4 8002F5A4 46203220 */ cvt.s.d $f8, $f6
/* 0301A8 8002F5A8 E7A80070 */ swc1 $f8, 0x70($sp)
/* 0301AC 8002F5AC C60C0014 */ lwc1 $f12, 0x14($s0)
/* 0301B0 8002F5B0 C6040034 */ lwc1 $f4, 0x34($s0)
/* 0301B4 8002F5B4 C60E001C */ lwc1 $f14, 0x1c($s0)
/* 0301B8 8002F5B8 E60C0020 */ swc1 $f12, 0x20($s0)
/* 0301BC 8002F5BC 460C2180 */ add.s $f6, $f4, $f12
/* 0301C0 8002F5C0 C7AA0040 */ lwc1 $f10, 0x40($sp)
/* 0301C4 8002F5C4 E60E0028 */ swc1 $f14, 0x28($s0)
/* 0301C8 8002F5C8 E60A0024 */ swc1 $f10, 0x24($s0)
/* 0301CC 8002F5CC E7A600CC */ swc1 $f6, 0xcc($sp)
/* 0301D0 8002F5D0 C608003C */ lwc1 $f8, 0x3c($s0)
/* 0301D4 8002F5D4 460E4280 */ add.s $f10, $f8, $f14
/* 0301D8 8002F5D8 E7AA00C4 */ swc1 $f10, 0xc4($sp)
/* 0301DC 8002F5DC 8608002E */ lh $t0, 0x2e($s0)
/* 0301E0 8002F5E0 A60000C0 */ sh $zero, 0xc0($s0)
/* 0301E4 8002F5E4 E61400F0 */ swc1 $f20, 0xf0($s0)
/* 0301E8 8002F5E8 E61400F4 */ swc1 $f20, 0xf4($s0)
/* 0301EC 8002F5EC E61400EC */ swc1 $f20, 0xec($s0)
/* 0301F0 8002F5F0 8E070060 */ lw $a3, 0x60($s0)
/* 0301F4 8002F5F4 8E06005C */ lw $a2, 0x5c($s0)
/* 0301F8 8002F5F8 8E050058 */ lw $a1, 0x58($s0)
/* 0301FC 8002F5FC 8FA4003C */ lw $a0, 0x3c($sp)
/* 030200 8002F600 0C0AD950 */ jal func_802B6540
/* 030204 8002F604 AFA80010 */ sw $t0, 0x10($sp)
/* 030208 8002F608 8E1900BC */ lw $t9, 0xbc($s0)
/* 03020C 8002F60C 2401FFFD */ li $at, -3
/* 030210 8002F610 A60000C2 */ sh $zero, 0xc2($s0)
/* 030214 8002F614 03214824 */ and $t1, $t9, $at
/* 030218 8002F618 2401FFF7 */ li $at, -9
/* 03021C 8002F61C AE0900BC */ sw $t1, 0xbc($s0)
/* 030220 8002F620 01215024 */ and $t2, $t1, $at
/* 030224 8002F624 AE0A00BC */ sw $t2, 0xbc($s0)
/* 030228 8002F628 A60000C4 */ sh $zero, 0xc4($s0)
/* 03022C 8002F62C A6000206 */ sh $zero, 0x206($s0)
/* 030230 8002F630 C7A40070 */ lwc1 $f4, 0x70($sp)
/* 030234 8002F634 C7A80068 */ lwc1 $f8, 0x68($sp)
/* 030238 8002F638 46042182 */ mul.s $f6, $f4, $f4
/* 03023C 8002F63C C6040094 */ lwc1 $f4, 0x94($s0)
/* 030240 8002F640 46084282 */ mul.s $f10, $f8, $f8
/* 030244 8002F644 E604022C */ swc1 $f4, 0x22c($s0)
/* 030248 8002F648 0C033850 */ jal sqrtf
/* 03024C 8002F64C 460A3300 */ add.s $f12, $f6, $f10
/* 030250 8002F650 E6000094 */ swc1 $f0, 0x94($s0)
/* 030254 8002F654 C7A800CC */ lwc1 $f8, 0xcc($sp)
/* 030258 8002F658 00116880 */ sll $t5, $s1, 2
/* 03025C 8002F65C 01B16823 */ subu $t5, $t5, $s1
/* 030260 8002F660 E6080014 */ swc1 $f8, 0x14($s0)
/* 030264 8002F664 C7A600C4 */ lwc1 $f6, 0xc4($sp)
/* 030268 8002F668 3C0C8016 */ lui $t4, %hi(D_80165070) # $t4, 0x8016
/* 03026C 8002F66C 258C5070 */ addiu $t4, %lo(D_80165070) # addiu $t4, $t4, 0x5070
/* 030270 8002F670 E606001C */ swc1 $f6, 0x1c($s0)
/* 030274 8002F674 C7AA0040 */ lwc1 $f10, 0x40($sp)
/* 030278 8002F678 E6140064 */ swc1 $f20, 0x64($s0)
/* 03027C 8002F67C E614006C */ swc1 $f20, 0x6c($s0)
/* 030280 8002F680 E60A0018 */ swc1 $f10, 0x18($s0)
/* 030284 8002F684 C7A40068 */ lwc1 $f4, 0x68($sp)
/* 030288 8002F688 000D6880 */ sll $t5, $t5, 2
/* 03028C 8002F68C 01AC1021 */ addu $v0, $t5, $t4
/* 030290 8002F690 E6040034 */ swc1 $f4, 0x34($s0)
/* 030294 8002F694 C7A8006C */ lwc1 $f8, 0x6c($sp)
/* 030298 8002F698 3C0F800E */ lui $t7, %hi(gKartTopSpeedTable) # $t7, 0x800e
/* 03029C 8002F69C 25EF2690 */ addiu $t7, %lo(gKartTopSpeedTable) # addiu $t7, $t7, 0x2690
/* 0302A0 8002F6A0 E6080038 */ swc1 $f8, 0x38($s0)
/* 0302A4 8002F6A4 C7A60070 */ lwc1 $f6, 0x70($sp)
/* 0302A8 8002F6A8 E606003C */ swc1 $f6, 0x3c($s0)
/* 0302AC 8002F6AC C7AA0068 */ lwc1 $f10, 0x68($sp)
/* 0302B0 8002F6B0 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* 0302B4 8002F6B4 C7A80070 */ lwc1 $f8, 0x70($sp)
/* 0302B8 8002F6B8 E44A0000 */ swc1 $f10, ($v0)
/* 0302BC 8002F6BC E4440004 */ swc1 $f4, 4($v0)
/* 0302C0 8002F6C0 E4480008 */ swc1 $f8, 8($v0)
/* 0302C4 8002F6C4 960E0254 */ lhu $t6, 0x254($s0)
/* 0302C8 8002F6C8 C6020094 */ lwc1 $f2, 0x94($s0)
/* 0302CC 8002F6CC 000EC080 */ sll $t8, $t6, 2
/* 0302D0 8002F6D0 030F1821 */ addu $v1, $t8, $t7
/* 0302D4 8002F6D4 C46C0000 */ lwc1 $f12, ($v1)
/* 0302D8 8002F6D8 4602603C */ c.lt.s $f12, $f2
/* 0302DC 8002F6DC 00000000 */ nop
/* 0302E0 8002F6E0 4502000E */ bc1fl .L8002F71C
/* 0302E4 8002F6E4 8FBF002C */ lw $ra, 0x2c($sp)
/* 0302E8 8002F6E8 46026003 */ div.s $f0, $f12, $f2
/* 0302EC 8002F6EC C6060034 */ lwc1 $f6, 0x34($s0)
/* 0302F0 8002F6F0 C6040038 */ lwc1 $f4, 0x38($s0)
/* 0302F4 8002F6F4 46003282 */ mul.s $f10, $f6, $f0
/* 0302F8 8002F6F8 C606003C */ lwc1 $f6, 0x3c($s0)
/* 0302FC 8002F6FC 46002202 */ mul.s $f8, $f4, $f0
/* 030300 8002F700 E60A0034 */ swc1 $f10, 0x34($s0)
/* 030304 8002F704 46003282 */ mul.s $f10, $f6, $f0
/* 030308 8002F708 E6080038 */ swc1 $f8, 0x38($s0)
/* 03030C 8002F70C E60A003C */ swc1 $f10, 0x3c($s0)
/* 030310 8002F710 C4640000 */ lwc1 $f4, ($v1)
/* 030314 8002F714 E6040094 */ swc1 $f4, 0x94($s0)
/* 030318 8002F718 8FBF002C */ lw $ra, 0x2c($sp)
.L8002F71C:
/* 03031C 8002F71C D7B40018 */ ldc1 $f20, 0x18($sp)
/* 030320 8002F720 8FB00024 */ lw $s0, 0x24($sp)
/* 030324 8002F724 8FB10028 */ lw $s1, 0x28($sp)
/* 030328 8002F728 03E00008 */ jr $ra
/* 03032C 8002F72C 27BD0100 */ addiu $sp, $sp, 0x100