Files
mk64/asm/non_matchings/code_802AAA70/func_802AB288.s
T
Tyler McGavran 782ed71f61 Massive data relocation (#295)
Mostly relocating rodata from data/* files to the appropriate
 asm/nonmatching/* files, although there is some plain data
 relocating to be found in here too.

Big change to note is the addition of the code_802AAA70.c file,
 split from memory.c. Based on some padding in the ro/data for
 memory it seems clear that a split is needed, although it is
 not clear that exact spot chosen for the split is correct.
 Still, it gets the file padding for the ro/data and text segments
 correct so it can't be too wrong.

Also included is an update to the asm_processor tool to support
 the .hword directive. I made a PR to the main repo of that
 project with an identical change and it was accepted.

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
2023-03-29 18:52:15 -06:00

287 lines
13 KiB
ArmAsm

glabel func_802AB288
/* 114898 802AB288 27BDFF70 */ addiu $sp, $sp, -0x90
/* 11489C 802AB28C AFA50094 */ sw $a1, 0x94($sp)
/* 1148A0 802AB290 97A500A6 */ lhu $a1, 0xa6($sp)
/* 1148A4 802AB294 3C0B8016 */ lui $t3, %hi(D_8015F580) # $t3, 0x8016
/* 1148A8 802AB298 8D6BF580 */ lw $t3, %lo(D_8015F580)($t3)
/* 1148AC 802AB29C 00055080 */ sll $t2, $a1, 2
/* 1148B0 802AB2A0 01455023 */ subu $t2, $t2, $a1
/* 1148B4 802AB2A4 000A5080 */ sll $t2, $t2, 2
/* 1148B8 802AB2A8 01455023 */ subu $t2, $t2, $a1
/* 1148BC 802AB2AC 000A5080 */ sll $t2, $t2, 2
/* 1148C0 802AB2B0 AFB00004 */ sw $s0, 4($sp)
/* 1148C4 802AB2B4 014B1821 */ addu $v1, $t2, $t3
/* 1148C8 802AB2B8 846C0004 */ lh $t4, 4($v1)
/* 1148CC 802AB2BC 44866000 */ mtc1 $a2, $f12
/* 1148D0 802AB2C0 44877000 */ mtc1 $a3, $f14
/* 1148D4 802AB2C4 448C5000 */ mtc1 $t4, $f10
/* 1148D8 802AB2C8 00808025 */ move $s0, $a0
/* 1148DC 802AB2CC 24020001 */ li $v0, 1
/* 1148E0 802AB2D0 46805120 */ cvt.s.w $f4, $f10
/* 1148E4 802AB2D4 4604603C */ c.lt.s $f12, $f4
/* 1148E8 802AB2D8 00000000 */ nop
/* 1148EC 802AB2DC 45020004 */ bc1fl .L802AB2F0
/* 1148F0 802AB2E0 846D000A */ lh $t5, 0xa($v1)
/* 1148F4 802AB2E4 100000F4 */ b .L802AB6B8
/* 1148F8 802AB2E8 00001025 */ move $v0, $zero
/* 1148FC 802AB2EC 846D000A */ lh $t5, 0xa($v1)
.L802AB2F0:
/* 114900 802AB2F0 448D3000 */ mtc1 $t5, $f6
/* 114904 802AB2F4 00000000 */ nop
/* 114908 802AB2F8 46803220 */ cvt.s.w $f8, $f6
/* 11490C 802AB2FC 460C403C */ c.lt.s $f8, $f12
/* 114910 802AB300 00000000 */ nop
/* 114914 802AB304 45020004 */ bc1fl .L802AB318
/* 114918 802AB308 846E000C */ lh $t6, 0xc($v1)
/* 11491C 802AB30C 100000EA */ b .L802AB6B8
/* 114920 802AB310 00001025 */ move $v0, $zero
/* 114924 802AB314 846E000C */ lh $t6, 0xc($v1)
.L802AB318:
/* 114928 802AB318 448E5000 */ mtc1 $t6, $f10
/* 11492C 802AB31C 00000000 */ nop
/* 114930 802AB320 46805120 */ cvt.s.w $f4, $f10
/* 114934 802AB324 460E203C */ c.lt.s $f4, $f14
/* 114938 802AB328 00000000 */ nop
/* 11493C 802AB32C 45020004 */ bc1fl .L802AB340
/* 114940 802AB330 846F0006 */ lh $t7, 6($v1)
/* 114944 802AB334 100000E0 */ b .L802AB6B8
/* 114948 802AB338 00001025 */ move $v0, $zero
/* 11494C 802AB33C 846F0006 */ lh $t7, 6($v1)
.L802AB340:
/* 114950 802AB340 C7AA0094 */ lwc1 $f10, 0x94($sp)
/* 114954 802AB344 3C014040 */ li $at, 0x40400000 # 3.000000
/* 114958 802AB348 448F3000 */ mtc1 $t7, $f6
/* 11495C 802AB34C 00000000 */ nop
/* 114960 802AB350 46803220 */ cvt.s.w $f8, $f6
/* 114964 802AB354 4608703C */ c.lt.s $f14, $f8
/* 114968 802AB358 00000000 */ nop
/* 11496C 802AB35C 45020004 */ bc1fl .L802AB370
/* 114970 802AB360 84780008 */ lh $t8, 8($v1)
/* 114974 802AB364 100000D4 */ b .L802AB6B8
/* 114978 802AB368 00001025 */ move $v0, $zero
/* 11497C 802AB36C 84780008 */ lh $t8, 8($v1)
.L802AB370:
/* 114980 802AB370 44812000 */ mtc1 $at, $f4
/* 114984 802AB374 C7A000A0 */ lwc1 $f0, 0xa0($sp)
/* 114988 802AB378 44983000 */ mtc1 $t8, $f6
/* 11498C 802AB37C 46045082 */ mul.s $f2, $f10, $f4
/* 114990 802AB380 46803220 */ cvt.s.w $f8, $f6
/* 114994 802AB384 46024281 */ sub.s $f10, $f8, $f2
/* 114998 802AB388 460A003C */ c.lt.s $f0, $f10
/* 11499C 802AB38C 00000000 */ nop
/* 1149A0 802AB390 45020004 */ bc1fl .L802AB3A4
/* 1149A4 802AB394 E7AC0098 */ swc1 $f12, 0x98($sp)
/* 1149A8 802AB398 100000C7 */ b .L802AB6B8
/* 1149AC 802AB39C 00001025 */ move $v0, $zero
/* 1149B0 802AB3A0 E7AC0098 */ swc1 $f12, 0x98($sp)
.L802AB3A4:
/* 1149B4 802AB3A4 E7AE009C */ swc1 $f14, 0x9c($sp)
/* 1149B8 802AB3A8 8479000E */ lh $t9, 0xe($v1)
/* 1149BC 802AB3AC 44992000 */ mtc1 $t9, $f4
/* 1149C0 802AB3B0 00000000 */ nop
/* 1149C4 802AB3B4 468021A0 */ cvt.s.w $f6, $f4
/* 1149C8 802AB3B8 46023200 */ add.s $f8, $f6, $f2
/* 1149CC 802AB3BC 4600403C */ c.lt.s $f8, $f0
/* 1149D0 802AB3C0 00000000 */ nop
/* 1149D4 802AB3C4 45020004 */ bc1fl .L802AB3D8
/* 1149D8 802AB3C8 8C640010 */ lw $a0, 0x10($v1)
/* 1149DC 802AB3CC 100000BA */ b .L802AB6B8
/* 1149E0 802AB3D0 00001025 */ move $v0, $zero
/* 1149E4 802AB3D4 8C640010 */ lw $a0, 0x10($v1)
.L802AB3D8:
/* 1149E8 802AB3D8 8C670018 */ lw $a3, 0x18($v1)
/* 1149EC 802AB3DC 8C660014 */ lw $a2, 0x14($v1)
/* 1149F0 802AB3E0 84880000 */ lh $t0, ($a0)
/* 1149F4 802AB3E4 84890002 */ lh $t1, 2($a0)
/* 1149F8 802AB3E8 84EC0000 */ lh $t4, ($a3)
/* 1149FC 802AB3EC 44885000 */ mtc1 $t0, $f10
/* 114A00 802AB3F0 44892000 */ mtc1 $t1, $f4
/* 114A04 802AB3F4 84CA0000 */ lh $t2, ($a2)
/* 114A08 802AB3F8 46805320 */ cvt.s.w $f12, $f10
/* 114A0C 802AB3FC 448C5000 */ mtc1 $t4, $f10
/* 114A10 802AB400 84CB0002 */ lh $t3, 2($a2)
/* 114A14 802AB404 448A3000 */ mtc1 $t2, $f6
/* 114A18 802AB408 468023A0 */ cvt.s.w $f14, $f4
/* 114A1C 802AB40C 448B4000 */ mtc1 $t3, $f8
/* 114A20 802AB410 46805120 */ cvt.s.w $f4, $f10
/* 114A24 802AB414 C7AA009C */ lwc1 $f10, 0x9c($sp)
/* 114A28 802AB418 46803420 */ cvt.s.w $f16, $f6
/* 114A2C 802AB41C E7A40070 */ swc1 $f4, 0x70($sp)
/* 114A30 802AB420 84ED0002 */ lh $t5, 2($a3)
/* 114A34 802AB424 E7AA0008 */ swc1 $f10, 8($sp)
/* 114A38 802AB428 448D3000 */ mtc1 $t5, $f6
/* 114A3C 802AB42C 468044A0 */ cvt.s.w $f18, $f8
/* 114A40 802AB430 46803220 */ cvt.s.w $f8, $f6
/* 114A44 802AB434 C7A60098 */ lwc1 $f6, 0x98($sp)
/* 114A48 802AB438 E7A60010 */ swc1 $f6, 0x10($sp)
/* 114A4C 802AB43C 460A7101 */ sub.s $f4, $f14, $f10
/* 114A50 802AB440 E7A8006C */ swc1 $f8, 0x6c($sp)
/* 114A54 802AB444 46068201 */ sub.s $f8, $f16, $f6
/* 114A58 802AB448 E7A4002C */ swc1 $f4, 0x2c($sp)
/* 114A5C 802AB44C C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 114A60 802AB450 46066281 */ sub.s $f10, $f12, $f6
/* 114A64 802AB454 E7A80028 */ swc1 $f8, 0x28($sp)
/* 114A68 802AB458 C7A80028 */ lwc1 $f8, 0x28($sp)
/* 114A6C 802AB45C E7AA0024 */ swc1 $f10, 0x24($sp)
/* 114A70 802AB460 C7AA0008 */ lwc1 $f10, 8($sp)
/* 114A74 802AB464 46082002 */ mul.s $f0, $f4, $f8
/* 114A78 802AB468 E7A40008 */ swc1 $f4, 8($sp)
/* 114A7C 802AB46C 460A9101 */ sub.s $f4, $f18, $f10
/* 114A80 802AB470 E7A8000C */ swc1 $f8, 0xc($sp)
/* 114A84 802AB474 E7A40020 */ swc1 $f4, 0x20($sp)
/* 114A88 802AB478 C7A80020 */ lwc1 $f8, 0x20($sp)
/* 114A8C 802AB47C C7A40024 */ lwc1 $f4, 0x24($sp)
/* 114A90 802AB480 46082082 */ mul.s $f2, $f4, $f8
/* 114A94 802AB484 46020181 */ sub.s $f6, $f0, $f2
/* 114A98 802AB488 46001032 */ c.eq.s $f2, $f0
/* 114A9C 802AB48C E7A6001C */ swc1 $f6, 0x1c($sp)
/* 114AA0 802AB490 C7A6001C */ lwc1 $f6, 0x1c($sp)
/* 114AA4 802AB494 45000018 */ bc1f .L802AB4F8
/* 114AA8 802AB498 E7A6003C */ swc1 $f6, 0x3c($sp)
/* 114AAC 802AB49C E7AA0014 */ swc1 $f10, 0x14($sp)
/* 114AB0 802AB4A0 C7AA0010 */ lwc1 $f10, 0x10($sp)
/* 114AB4 802AB4A4 C7A60070 */ lwc1 $f6, 0x70($sp)
/* 114AB8 802AB4A8 44809000 */ mtc1 $zero, $f18
/* 114ABC 802AB4AC 460A3001 */ sub.s $f0, $f6, $f10
/* 114AC0 802AB4B0 C7AA0014 */ lwc1 $f10, 0x14($sp)
/* 114AC4 802AB4B4 C7A6006C */ lwc1 $f6, 0x6c($sp)
/* 114AC8 802AB4B8 460A3081 */ sub.s $f2, $f6, $f10
/* 114ACC 802AB4BC 46004182 */ mul.s $f6, $f8, $f0
/* 114AD0 802AB4C0 C7AA000C */ lwc1 $f10, 0xc($sp)
/* 114AD4 802AB4C4 46025202 */ mul.s $f8, $f10, $f2
/* 114AD8 802AB4C8 46083281 */ sub.s $f10, $f6, $f8
/* 114ADC 802AB4CC 46041182 */ mul.s $f6, $f2, $f4
/* 114AE0 802AB4D0 C7A80008 */ lwc1 $f8, 8($sp)
/* 114AE4 802AB4D4 46080102 */ mul.s $f4, $f0, $f8
/* 114AE8 802AB4D8 46043201 */ sub.s $f8, $f6, $f4
/* 114AEC 802AB4DC 46085182 */ mul.s $f6, $f10, $f8
/* 114AF0 802AB4E0 4612303C */ c.lt.s $f6, $f18
/* 114AF4 802AB4E4 00000000 */ nop
/* 114AF8 802AB4E8 45000039 */ bc1f .L802AB5D0
/* 114AFC 802AB4EC 00000000 */ nop
/* 114B00 802AB4F0 10000037 */ b .L802AB5D0
/* 114B04 802AB4F4 00001025 */ move $v0, $zero
.L802AB4F8:
/* 114B08 802AB4F8 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* 114B0C 802AB4FC C7AA009C */ lwc1 $f10, 0x9c($sp)
/* 114B10 802AB500 C7A60070 */ lwc1 $f6, 0x70($sp)
/* 114B14 802AB504 C7A80028 */ lwc1 $f8, 0x28($sp)
/* 114B18 802AB508 460A2081 */ sub.s $f2, $f4, $f10
/* 114B1C 802AB50C C7A40098 */ lwc1 $f4, 0x98($sp)
/* 114B20 802AB510 C7AA0020 */ lwc1 $f10, 0x20($sp)
/* 114B24 802AB514 46043001 */ sub.s $f0, $f6, $f4
/* 114B28 802AB518 46024382 */ mul.s $f14, $f8, $f2
/* 114B2C 802AB51C C7A80024 */ lwc1 $f8, 0x24($sp)
/* 114B30 802AB520 C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 114B34 802AB524 46005302 */ mul.s $f12, $f10, $f0
/* 114B38 802AB528 460C7032 */ c.eq.s $f14, $f12
/* 114B3C 802AB52C 00000000 */ nop
/* 114B40 802AB530 4502000E */ bc1fl .L802AB56C
/* 114B44 802AB534 460E6401 */ sub.s $f16, $f12, $f14
/* 114B48 802AB538 46081182 */ mul.s $f6, $f2, $f8
/* 114B4C 802AB53C 44809000 */ mtc1 $zero, $f18
/* 114B50 802AB540 46040282 */ mul.s $f10, $f0, $f4
/* 114B54 802AB544 C7A4003C */ lwc1 $f4, 0x3c($sp)
/* 114B58 802AB548 460A3201 */ sub.s $f8, $f6, $f10
/* 114B5C 802AB54C 46082182 */ mul.s $f6, $f4, $f8
/* 114B60 802AB550 4612303C */ c.lt.s $f6, $f18
/* 114B64 802AB554 00000000 */ nop
/* 114B68 802AB558 4500001D */ bc1f .L802AB5D0
/* 114B6C 802AB55C 00000000 */ nop
/* 114B70 802AB560 1000001B */ b .L802AB5D0
/* 114B74 802AB564 00001025 */ move $v0, $zero
/* 114B78 802AB568 460E6401 */ sub.s $f16, $f12, $f14
.L802AB56C:
/* 114B7C 802AB56C C7AA001C */ lwc1 $f10, 0x1c($sp)
/* 114B80 802AB570 44809000 */ mtc1 $zero, $f18
/* 114B84 802AB574 C7A8002C */ lwc1 $f8, 0x2c($sp)
/* 114B88 802AB578 46105102 */ mul.s $f4, $f10, $f16
/* 114B8C 802AB57C C7A60024 */ lwc1 $f6, 0x24($sp)
/* 114B90 802AB580 4612203C */ c.lt.s $f4, $f18
/* 114B94 802AB584 00000000 */ nop
/* 114B98 802AB588 45000003 */ bc1f .L802AB598
/* 114B9C 802AB58C 00000000 */ nop
/* 114BA0 802AB590 1000000F */ b .L802AB5D0
/* 114BA4 802AB594 00001025 */ move $v0, $zero
.L802AB598:
/* 114BA8 802AB598 46080382 */ mul.s $f14, $f0, $f8
/* 114BAC 802AB59C 00000000 */ nop
/* 114BB0 802AB5A0 46061302 */ mul.s $f12, $f2, $f6
/* 114BB4 802AB5A4 460C7032 */ c.eq.s $f14, $f12
/* 114BB8 802AB5A8 00000000 */ nop
/* 114BBC 802AB5AC 45010008 */ bc1t .L802AB5D0
/* 114BC0 802AB5B0 00000000 */ nop
/* 114BC4 802AB5B4 460E6281 */ sub.s $f10, $f12, $f14
/* 114BC8 802AB5B8 460A8102 */ mul.s $f4, $f16, $f10
/* 114BCC 802AB5BC 4612203C */ c.lt.s $f4, $f18
/* 114BD0 802AB5C0 00000000 */ nop
/* 114BD4 802AB5C4 45000002 */ bc1f .L802AB5D0
/* 114BD8 802AB5C8 00000000 */ nop
/* 114BDC 802AB5CC 00001025 */ move $v0, $zero
.L802AB5D0:
/* 114BE0 802AB5D0 14400003 */ bnez $v0, .L802AB5E0
/* 114BE4 802AB5D4 C7A60098 */ lwc1 $f6, 0x98($sp)
/* 114BE8 802AB5D8 10000037 */ b .L802AB6B8
/* 114BEC 802AB5DC 00001025 */ move $v0, $zero
.L802AB5E0:
/* 114BF0 802AB5E0 C468001C */ lwc1 $f8, 0x1c($v1)
/* 114BF4 802AB5E4 C4640020 */ lwc1 $f4, 0x20($v1)
/* 114BF8 802AB5E8 3C01C180 */ li $at, 0xC1800000 # -16.000000
/* 114BFC 802AB5EC 46064282 */ mul.s $f10, $f8, $f6
/* 114C00 802AB5F0 C7A8009C */ lwc1 $f8, 0x9c($sp)
/* 114C04 802AB5F4 46082182 */ mul.s $f6, $f4, $f8
/* 114C08 802AB5F8 C4680024 */ lwc1 $f8, 0x24($v1)
/* 114C0C 802AB5FC 46065100 */ add.s $f4, $f10, $f6
/* 114C10 802AB600 C7AA00A0 */ lwc1 $f10, 0xa0($sp)
/* 114C14 802AB604 460A4182 */ mul.s $f6, $f8, $f10
/* 114C18 802AB608 C46A0028 */ lwc1 $f10, 0x28($v1)
/* 114C1C 802AB60C 46062200 */ add.s $f8, $f4, $f6
/* 114C20 802AB610 C7A60094 */ lwc1 $f6, 0x94($sp)
/* 114C24 802AB614 460A4100 */ add.s $f4, $f8, $f10
/* 114C28 802AB618 46062001 */ sub.s $f0, $f4, $f6
/* 114C2C 802AB61C 4600903C */ c.lt.s $f18, $f0
/* 114C30 802AB620 00000000 */ nop
/* 114C34 802AB624 45020013 */ bc1fl .L802AB674
/* 114C38 802AB628 44814000 */ mtc1 $at, $f8
/* 114C3C 802AB62C C608000C */ lwc1 $f8, 0xc($s0)
/* 114C40 802AB630 240E0001 */ li $t6, 1
/* 114C44 802AB634 4608003C */ c.lt.s $f0, $f8
/* 114C48 802AB638 00000000 */ nop
/* 114C4C 802AB63C 4500000A */ bc1f .L802AB668
/* 114C50 802AB640 00000000 */ nop
/* 114C54 802AB644 A60E0000 */ sh $t6, ($s0)
/* 114C58 802AB648 A6050006 */ sh $a1, 6($s0)
/* 114C5C 802AB64C E600000C */ swc1 $f0, 0xc($s0)
/* 114C60 802AB650 C46A001C */ lwc1 $f10, 0x1c($v1)
/* 114C64 802AB654 E60A0018 */ swc1 $f10, 0x18($s0)
/* 114C68 802AB658 C4640020 */ lwc1 $f4, 0x20($v1)
/* 114C6C 802AB65C E604001C */ swc1 $f4, 0x1c($s0)
/* 114C70 802AB660 C4660024 */ lwc1 $f6, 0x24($v1)
/* 114C74 802AB664 E6060020 */ swc1 $f6, 0x20($s0)
.L802AB668:
/* 114C78 802AB668 10000013 */ b .L802AB6B8
/* 114C7C 802AB66C 00001025 */ move $v0, $zero
/* 114C80 802AB670 44814000 */ mtc1 $at, $f8
.L802AB674:
/* 114C84 802AB674 240F0001 */ li $t7, 1
/* 114C88 802AB678 00001025 */ move $v0, $zero
/* 114C8C 802AB67C 4600403C */ c.lt.s $f8, $f0
/* 114C90 802AB680 00000000 */ nop
/* 114C94 802AB684 4500000C */ bc1f .L802AB6B8
/* 114C98 802AB688 00000000 */ nop
/* 114C9C 802AB68C A60F0000 */ sh $t7, ($s0)
/* 114CA0 802AB690 A6050006 */ sh $a1, 6($s0)
/* 114CA4 802AB694 E600000C */ swc1 $f0, 0xc($s0)
/* 114CA8 802AB698 C46A001C */ lwc1 $f10, 0x1c($v1)
/* 114CAC 802AB69C 24020001 */ li $v0, 1
/* 114CB0 802AB6A0 E60A0018 */ swc1 $f10, 0x18($s0)
/* 114CB4 802AB6A4 C4640020 */ lwc1 $f4, 0x20($v1)
/* 114CB8 802AB6A8 E604001C */ swc1 $f4, 0x1c($s0)
/* 114CBC 802AB6AC C4660024 */ lwc1 $f6, 0x24($v1)
/* 114CC0 802AB6B0 10000001 */ b .L802AB6B8
/* 114CC4 802AB6B4 E6060020 */ swc1 $f6, 0x20($s0)
.L802AB6B8:
/* 114CC8 802AB6B8 8FB00004 */ lw $s0, 4($sp)
/* 114CCC 802AB6BC 03E00008 */ jr $ra
/* 114CD0 802AB6C0 27BD0090 */ addiu $sp, $sp, 0x90