Files
mk64/asm/non_matchings/code_802AAA70/func_802ADDC8.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

277 lines
13 KiB
ArmAsm

glabel func_802ADDC8
/* 1173D8 802ADDC8 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 1173DC 802ADDCC AFB00040 */ sw $s0, 0x40($sp)
/* 1173E0 802ADDD0 AFBF005C */ sw $ra, 0x5c($sp)
/* 1173E4 802ADDD4 AFB60058 */ sw $s6, 0x58($sp)
/* 1173E8 802ADDD8 AFB50054 */ sw $s5, 0x54($sp)
/* 1173EC 802ADDDC AFB40050 */ sw $s4, 0x50($sp)
/* 1173F0 802ADDE0 AFB3004C */ sw $s3, 0x4c($sp)
/* 1173F4 802ADDE4 AFB20048 */ sw $s2, 0x48($sp)
/* 1173F8 802ADDE8 AFB10044 */ sw $s1, 0x44($sp)
/* 1173FC 802ADDEC F7BA0038 */ sdc1 $f26, 0x38($sp)
/* 117400 802ADDF0 F7B80030 */ sdc1 $f24, 0x30($sp)
/* 117404 802ADDF4 F7B60028 */ sdc1 $f22, 0x28($sp)
/* 117408 802ADDF8 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 11740C 802ADDFC 3C01447A */ li $at, 0x447A0000 # 1000.000000
/* 117410 802ADE00 44810000 */ mtc1 $at, $f0
/* 117414 802ADE04 3C108016 */ lui $s0, %hi(D_8015F588) # $s0, 0x8016
/* 117418 802ADE08 2610F588 */ addiu $s0, %lo(D_8015F588) # addiu $s0, $s0, -0xa78
/* 11741C 802ADE0C A4800000 */ sh $zero, ($a0)
/* 117420 802ADE10 A4800002 */ sh $zero, 2($a0)
/* 117424 802ADE14 A4800004 */ sh $zero, 4($a0)
/* 117428 802ADE18 E480000C */ swc1 $f0, 0xc($a0)
/* 11742C 802ADE1C E4800010 */ swc1 $f0, 0x10($a0)
/* 117430 802ADE20 E4800014 */ swc1 $f0, 0x14($a0)
/* 117434 802ADE24 960E0000 */ lhu $t6, ($s0)
/* 117438 802ADE28 9482000A */ lhu $v0, 0xa($a0)
/* 11743C 802ADE2C 4486A000 */ mtc1 $a2, $f20
/* 117440 802ADE30 4485B000 */ mtc1 $a1, $f22
/* 117444 802ADE34 4487C000 */ mtc1 $a3, $f24
/* 117448 802ADE38 004E082A */ slt $at, $v0, $t6
/* 11744C 802ADE3C 00808825 */ move $s1, $a0
/* 117450 802ADE40 1020000C */ beqz $at, .L802ADE74
/* 117454 802ADE44 0000A025 */ move $s4, $zero
/* 117458 802ADE48 C7BA0070 */ lwc1 $f26, 0x70($sp)
/* 11745C 802ADE4C 4405B000 */ mfc1 $a1, $f22
/* 117460 802ADE50 4406A000 */ mfc1 $a2, $f20
/* 117464 802ADE54 4407C000 */ mfc1 $a3, $f24
/* 117468 802ADE58 AFA20014 */ sw $v0, 0x14($sp)
/* 11746C 802ADE5C 0C0AAB93 */ jal func_802AAE4C
/* 117470 802ADE60 E7BA0010 */ swc1 $f26, 0x10($sp)
/* 117474 802ADE64 24150001 */ li $s5, 1
/* 117478 802ADE68 54550003 */ bnel $v0, $s5, .L802ADE78
/* 11747C 802ADE6C 96220006 */ lhu $v0, 6($s1)
/* 117480 802ADE70 24144000 */ li $s4, 16384
.L802ADE74:
/* 117484 802ADE74 96220006 */ lhu $v0, 6($s1)
.L802ADE78:
/* 117488 802ADE78 960F0000 */ lhu $t7, ($s0)
/* 11748C 802ADE7C 24150001 */ li $s5, 1
/* 117490 802ADE80 C7BA0070 */ lwc1 $f26, 0x70($sp)
/* 117494 802ADE84 004F082A */ slt $at, $v0, $t7
/* 117498 802ADE88 1020000A */ beqz $at, .L802ADEB4
/* 11749C 802ADE8C 02202025 */ move $a0, $s1
/* 1174A0 802ADE90 4405B000 */ mfc1 $a1, $f22
/* 1174A4 802ADE94 4406A000 */ mfc1 $a2, $f20
/* 1174A8 802ADE98 4407C000 */ mfc1 $a3, $f24
/* 1174AC 802ADE9C E7BA0010 */ swc1 $f26, 0x10($sp)
/* 1174B0 802ADEA0 0C0AACA2 */ jal func_802AB288
/* 1174B4 802ADEA4 AFA20014 */ sw $v0, 0x14($sp)
/* 1174B8 802ADEA8 14550002 */ bne $v0, $s5, .L802ADEB4
/* 1174BC 802ADEAC 36982000 */ ori $t8, $s4, 0x2000
/* 1174C0 802ADEB0 3314FFFF */ andi $s4, $t8, 0xffff
.L802ADEB4:
/* 1174C4 802ADEB4 96220008 */ lhu $v0, 8($s1)
/* 1174C8 802ADEB8 96080000 */ lhu $t0, ($s0)
/* 1174CC 802ADEBC 02202025 */ move $a0, $s1
/* 1174D0 802ADEC0 0048082A */ slt $at, $v0, $t0
/* 1174D4 802ADEC4 5020000B */ beql $at, $zero, .L802ADEF4
/* 1174D8 802ADEC8 3401E000 */ li $at, 57344
/* 1174DC 802ADECC 4405B000 */ mfc1 $a1, $f22
/* 1174E0 802ADED0 4406A000 */ mfc1 $a2, $f20
/* 1174E4 802ADED4 4407C000 */ mfc1 $a3, $f24
/* 1174E8 802ADED8 E7BA0010 */ swc1 $f26, 0x10($sp)
/* 1174EC 802ADEDC 0C0AADB1 */ jal func_802AB6C4
/* 1174F0 802ADEE0 AFA20014 */ sw $v0, 0x14($sp)
/* 1174F4 802ADEE4 14550002 */ bne $v0, $s5, .L802ADEF0
/* 1174F8 802ADEE8 36898000 */ ori $t1, $s4, 0x8000
/* 1174FC 802ADEEC 3134FFFF */ andi $s4, $t1, 0xffff
.L802ADEF0:
/* 117500 802ADEF0 3401E000 */ li $at, 57344
.L802ADEF4:
/* 117504 802ADEF4 16810003 */ bne $s4, $at, .L802ADF04
/* 117508 802ADEF8 3C028016 */ lui $v0, %hi(D_8015F6EA) # $v0, 0x8016
/* 11750C 802ADEFC 100000A2 */ b .L802AE188
/* 117510 802ADF00 02801025 */ move $v0, $s4
.L802ADF04:
/* 117514 802ADF04 8442F6EA */ lh $v0, %lo(D_8015F6EA)($v0)
/* 117518 802ADF08 3C0B8016 */ lui $t3, %hi(D_8015F6E8) # $t3, 0x8016
/* 11751C 802ADF0C 856BF6E8 */ lh $t3, %lo(D_8015F6E8)($t3)
/* 117520 802ADF10 44822000 */ mtc1 $v0, $f4
/* 117524 802ADF14 3C038016 */ lui $v1, %hi(D_8015F6F2) # $v1, 0x8016
/* 117528 802ADF18 01622023 */ subu $a0, $t3, $v0
/* 11752C 802ADF1C 468021A0 */ cvt.s.w $f6, $f4
/* 117530 802ADF20 8463F6F2 */ lh $v1, %lo(D_8015F6F2)($v1)
/* 117534 802ADF24 3C0C8016 */ lui $t4, %hi(D_8015F6F0) # $t4, 0x8016
/* 117538 802ADF28 858CF6F0 */ lh $t4, %lo(D_8015F6F0)($t4)
/* 11753C 802ADF2C 4606A201 */ sub.s $f8, $f20, $f6
/* 117540 802ADF30 44833000 */ mtc1 $v1, $f6
/* 117544 802ADF34 01832823 */ subu $a1, $t4, $v1
/* 117548 802ADF38 04810003 */ bgez $a0, .L802ADF48
/* 11754C 802ADF3C 00046943 */ sra $t5, $a0, 5
/* 117550 802ADF40 2481001F */ addiu $at, $a0, 0x1f
/* 117554 802ADF44 00016943 */ sra $t5, $at, 5
.L802ADF48:
/* 117558 802ADF48 448D5000 */ mtc1 $t5, $f10
/* 11755C 802ADF4C 00000000 */ nop
/* 117560 802ADF50 46805420 */ cvt.s.w $f16, $f10
/* 117564 802ADF54 468032A0 */ cvt.s.w $f10, $f6
/* 117568 802ADF58 46104483 */ div.s $f18, $f8, $f16
/* 11756C 802ADF5C 460AD201 */ sub.s $f8, $f26, $f10
/* 117570 802ADF60 4600910D */ trunc.w.s $f4, $f18
/* 117574 802ADF64 44062000 */ mfc1 $a2, $f4
/* 117578 802ADF68 00000000 */ nop
/* 11757C 802ADF6C 00067C00 */ sll $t7, $a2, 0x10
/* 117580 802ADF70 000FC403 */ sra $t8, $t7, 0x10
/* 117584 802ADF74 03003025 */ move $a2, $t8
/* 117588 802ADF78 04A10003 */ bgez $a1, .L802ADF88
/* 11758C 802ADF7C 0005C943 */ sra $t9, $a1, 5
/* 117590 802ADF80 24A1001F */ addiu $at, $a1, 0x1f
/* 117594 802ADF84 0001C943 */ sra $t9, $at, 5
.L802ADF88:
/* 117598 802ADF88 44998000 */ mtc1 $t9, $f16
/* 11759C 802ADF8C 00000000 */ nop
/* 1175A0 802ADF90 468084A0 */ cvt.s.w $f18, $f16
/* 1175A4 802ADF94 46124103 */ div.s $f4, $f8, $f18
/* 1175A8 802ADF98 4600218D */ trunc.w.s $f6, $f4
/* 1175AC 802ADF9C 44073000 */ mfc1 $a3, $f6
/* 1175B0 802ADFA0 00000000 */ nop
/* 1175B4 802ADFA4 00074C00 */ sll $t1, $a3, 0x10
/* 1175B8 802ADFA8 04C10003 */ bgez $a2, .L802ADFB8
/* 1175BC 802ADFAC 00093C03 */ sra $a3, $t1, 0x10
/* 1175C0 802ADFB0 10000075 */ b .L802AE188
/* 1175C4 802ADFB4 00001025 */ move $v0, $zero
.L802ADFB8:
/* 1175C8 802ADFB8 04E10003 */ bgez $a3, .L802ADFC8
/* 1175CC 802ADFBC 28C10020 */ slti $at, $a2, 0x20
/* 1175D0 802ADFC0 10000071 */ b .L802AE188
/* 1175D4 802ADFC4 00001025 */ move $v0, $zero
.L802ADFC8:
/* 1175D8 802ADFC8 54200004 */ bnel $at, $zero, .L802ADFDC
/* 1175DC 802ADFCC 28E10020 */ slti $at, $a3, 0x20
/* 1175E0 802ADFD0 1000006D */ b .L802AE188
/* 1175E4 802ADFD4 00001025 */ move $v0, $zero
/* 1175E8 802ADFD8 28E10020 */ slti $at, $a3, 0x20
.L802ADFDC:
/* 1175EC 802ADFDC 14200003 */ bnez $at, .L802ADFEC
/* 1175F0 802ADFE0 00075940 */ sll $t3, $a3, 5
/* 1175F4 802ADFE4 10000068 */ b .L802AE188
/* 1175F8 802ADFE8 00001025 */ move $v0, $zero
.L802ADFEC:
/* 1175FC 802ADFEC 00CB6021 */ addu $t4, $a2, $t3
/* 117600 802ADFF0 000C6C00 */ sll $t5, $t4, 0x10
/* 117604 802ADFF4 000D7403 */ sra $t6, $t5, 0x10
/* 117608 802ADFF8 3C188015 */ lui $t8, %hi(D_8014F110) # $t8, 0x8015
/* 11760C 802ADFFC 2718F110 */ addiu $t8, %lo(D_8014F110) # addiu $t8, $t8, -0xef0
/* 117610 802AE000 000E7880 */ sll $t7, $t6, 2
/* 117614 802AE004 01F81821 */ addu $v1, $t7, $t8
/* 117618 802AE008 94760002 */ lhu $s6, 2($v1)
/* 11761C 802AE00C 00009825 */ move $s3, $zero
/* 117620 802AE010 16C00003 */ bnez $s6, .L802AE020
/* 117624 802AE014 00000000 */ nop
/* 117628 802AE018 1000005B */ b .L802AE188
/* 11762C 802AE01C 02801025 */ move $v0, $s4
.L802AE020:
/* 117630 802AE020 1AC00058 */ blez $s6, .L802AE184
/* 117634 802AE024 94720000 */ lhu $s2, ($v1)
.L802AE028:
/* 117638 802AE028 3401E000 */ li $at, 57344
/* 11763C 802AE02C 16810003 */ bne $s4, $at, .L802AE03C
/* 117640 802AE030 02808025 */ move $s0, $s4
/* 117644 802AE034 10000054 */ b .L802AE188
/* 117648 802AE038 02801025 */ move $v0, $s4
.L802AE03C:
/* 11764C 802AE03C 3C198016 */ lui $t9, %hi(D_8015F584) # $t9, 0x8016
/* 117650 802AE040 8F39F584 */ lw $t9, %lo(D_8015F584)($t9)
/* 117654 802AE044 00124040 */ sll $t0, $s2, 1
/* 117658 802AE048 3C0A8016 */ lui $t2, %hi(D_8015F580) # $t2, 0x8016
/* 11765C 802AE04C 03284821 */ addu $t1, $t9, $t0
/* 117660 802AE050 95220000 */ lhu $v0, ($t1)
/* 117664 802AE054 8D4AF580 */ lw $t2, %lo(D_8015F580)($t2)
/* 117668 802AE058 320E4000 */ andi $t6, $s0, 0x4000
/* 11766C 802AE05C 00025880 */ sll $t3, $v0, 2
/* 117670 802AE060 01625823 */ subu $t3, $t3, $v0
/* 117674 802AE064 000B5880 */ sll $t3, $t3, 2
/* 117678 802AE068 01625823 */ subu $t3, $t3, $v0
/* 11767C 802AE06C 000B5880 */ sll $t3, $t3, 2
/* 117680 802AE070 014B6021 */ addu $t4, $t2, $t3
/* 117684 802AE074 95830000 */ lhu $v1, ($t4)
/* 117688 802AE078 306D4000 */ andi $t5, $v1, 0x4000
/* 11768C 802AE07C 11A00013 */ beqz $t5, .L802AE0CC
/* 117690 802AE080 30798000 */ andi $t9, $v1, 0x8000
/* 117694 802AE084 55C00038 */ bnel $t6, $zero, .L802AE168
/* 117698 802AE088 26730001 */ addiu $s3, $s3, 1
/* 11769C 802AE08C 962F000A */ lhu $t7, 0xa($s1)
/* 1176A0 802AE090 02202025 */ move $a0, $s1
/* 1176A4 802AE094 51E20034 */ beql $t7, $v0, .L802AE168
/* 1176A8 802AE098 26730001 */ addiu $s3, $s3, 1
/* 1176AC 802AE09C 4405B000 */ mfc1 $a1, $f22
/* 1176B0 802AE0A0 4406A000 */ mfc1 $a2, $f20
/* 1176B4 802AE0A4 4407C000 */ mfc1 $a3, $f24
/* 1176B8 802AE0A8 E7BA0010 */ swc1 $f26, 0x10($sp)
/* 1176BC 802AE0AC 0C0AAB93 */ jal func_802AAE4C
/* 1176C0 802AE0B0 AFA20014 */ sw $v0, 0x14($sp)
/* 1176C4 802AE0B4 5455002C */ bnel $v0, $s5, .L802AE168
/* 1176C8 802AE0B8 26730001 */ addiu $s3, $s3, 1
/* 1176CC 802AE0BC 36144000 */ ori $s4, $s0, 0x4000
/* 1176D0 802AE0C0 3298FFFF */ andi $t8, $s4, 0xffff
/* 1176D4 802AE0C4 10000027 */ b .L802AE164
/* 1176D8 802AE0C8 0300A025 */ move $s4, $t8
.L802AE0CC:
/* 1176DC 802AE0CC 13200014 */ beqz $t9, .L802AE120
/* 1176E0 802AE0D0 320B2000 */ andi $t3, $s0, 0x2000
/* 1176E4 802AE0D4 32088000 */ andi $t0, $s0, 0x8000
/* 1176E8 802AE0D8 55000023 */ bnel $t0, $zero, .L802AE168
/* 1176EC 802AE0DC 26730001 */ addiu $s3, $s3, 1
/* 1176F0 802AE0E0 96290008 */ lhu $t1, 8($s1)
/* 1176F4 802AE0E4 02202025 */ move $a0, $s1
/* 1176F8 802AE0E8 5122001F */ beql $t1, $v0, .L802AE168
/* 1176FC 802AE0EC 26730001 */ addiu $s3, $s3, 1
/* 117700 802AE0F0 4405B000 */ mfc1 $a1, $f22
/* 117704 802AE0F4 4406A000 */ mfc1 $a2, $f20
/* 117708 802AE0F8 4407C000 */ mfc1 $a3, $f24
/* 11770C 802AE0FC E7BA0010 */ swc1 $f26, 0x10($sp)
/* 117710 802AE100 0C0AADB1 */ jal func_802AB6C4
/* 117714 802AE104 AFA20014 */ sw $v0, 0x14($sp)
/* 117718 802AE108 54550017 */ bnel $v0, $s5, .L802AE168
/* 11771C 802AE10C 26730001 */ addiu $s3, $s3, 1
/* 117720 802AE110 36148000 */ ori $s4, $s0, 0x8000
/* 117724 802AE114 328AFFFF */ andi $t2, $s4, 0xffff
/* 117728 802AE118 10000012 */ b .L802AE164
/* 11772C 802AE11C 0140A025 */ move $s4, $t2
.L802AE120:
/* 117730 802AE120 55600011 */ bnel $t3, $zero, .L802AE168
/* 117734 802AE124 26730001 */ addiu $s3, $s3, 1
/* 117738 802AE128 962C0006 */ lhu $t4, 6($s1)
/* 11773C 802AE12C 02202025 */ move $a0, $s1
/* 117740 802AE130 5182000D */ beql $t4, $v0, .L802AE168
/* 117744 802AE134 26730001 */ addiu $s3, $s3, 1
/* 117748 802AE138 4405B000 */ mfc1 $a1, $f22
/* 11774C 802AE13C 4406A000 */ mfc1 $a2, $f20
/* 117750 802AE140 4407C000 */ mfc1 $a3, $f24
/* 117754 802AE144 E7BA0010 */ swc1 $f26, 0x10($sp)
/* 117758 802AE148 0C0AACA2 */ jal func_802AB288
/* 11775C 802AE14C AFA20014 */ sw $v0, 0x14($sp)
/* 117760 802AE150 54550005 */ bnel $v0, $s5, .L802AE168
/* 117764 802AE154 26730001 */ addiu $s3, $s3, 1
/* 117768 802AE158 36142000 */ ori $s4, $s0, 0x2000
/* 11776C 802AE15C 328DFFFF */ andi $t5, $s4, 0xffff
/* 117770 802AE160 01A0A025 */ move $s4, $t5
.L802AE164:
/* 117774 802AE164 26730001 */ addiu $s3, $s3, 1
.L802AE168:
/* 117778 802AE168 326FFFFF */ andi $t7, $s3, 0xffff
/* 11777C 802AE16C 26520001 */ addiu $s2, $s2, 1
/* 117780 802AE170 01F6082A */ slt $at, $t7, $s6
/* 117784 802AE174 324EFFFF */ andi $t6, $s2, 0xffff
/* 117788 802AE178 01E09825 */ move $s3, $t7
/* 11778C 802AE17C 1420FFAA */ bnez $at, .L802AE028
/* 117790 802AE180 01C09025 */ move $s2, $t6
.L802AE184:
/* 117794 802AE184 02801025 */ move $v0, $s4
.L802AE188:
/* 117798 802AE188 8FBF005C */ lw $ra, 0x5c($sp)
/* 11779C 802AE18C D7B40020 */ ldc1 $f20, 0x20($sp)
/* 1177A0 802AE190 D7B60028 */ ldc1 $f22, 0x28($sp)
/* 1177A4 802AE194 D7B80030 */ ldc1 $f24, 0x30($sp)
/* 1177A8 802AE198 D7BA0038 */ ldc1 $f26, 0x38($sp)
/* 1177AC 802AE19C 8FB00040 */ lw $s0, 0x40($sp)
/* 1177B0 802AE1A0 8FB10044 */ lw $s1, 0x44($sp)
/* 1177B4 802AE1A4 8FB20048 */ lw $s2, 0x48($sp)
/* 1177B8 802AE1A8 8FB3004C */ lw $s3, 0x4c($sp)
/* 1177BC 802AE1AC 8FB40050 */ lw $s4, 0x50($sp)
/* 1177C0 802AE1B0 8FB50054 */ lw $s5, 0x54($sp)
/* 1177C4 802AE1B4 8FB60058 */ lw $s6, 0x58($sp)
/* 1177C8 802AE1B8 03E00008 */ jr $ra
/* 1177CC 802AE1BC 27BD0060 */ addiu $sp, $sp, 0x60