oot/asm/non_matchings/code/z_bgcheck/func_8003BB18.s

270 lines
13 KiB
ArmAsm

glabel func_8003BB18
/* AB2CB8 8003BB18 27BDFF08 */ addiu $sp, $sp, -0xf8
/* AB2CBC 8003BB1C AFBF0074 */ sw $ra, 0x74($sp)
/* AB2CC0 8003BB20 AFBE0070 */ sw $fp, 0x70($sp)
/* AB2CC4 8003BB24 AFB7006C */ sw $s7, 0x6c($sp)
/* AB2CC8 8003BB28 AFB60068 */ sw $s6, 0x68($sp)
/* AB2CCC 8003BB2C AFB50064 */ sw $s5, 0x64($sp)
/* AB2CD0 8003BB30 AFB40060 */ sw $s4, 0x60($sp)
/* AB2CD4 8003BB34 AFB3005C */ sw $s3, 0x5c($sp)
/* AB2CD8 8003BB38 AFB20058 */ sw $s2, 0x58($sp)
/* AB2CDC 8003BB3C AFB10054 */ sw $s1, 0x54($sp)
/* AB2CE0 8003BB40 AFB00050 */ sw $s0, 0x50($sp)
/* AB2CE4 8003BB44 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* AB2CE8 8003BB48 F7B80040 */ sdc1 $f24, 0x40($sp)
/* AB2CEC 8003BB4C F7B60038 */ sdc1 $f22, 0x38($sp)
/* AB2CF0 8003BB50 F7B40030 */ sdc1 $f20, 0x30($sp)
/* AB2CF4 8003BB54 AFA500FC */ sw $a1, 0xfc($sp)
/* AB2CF8 8003BB58 8C8F0020 */ lw $t7, 0x20($a0)
/* AB2CFC 8003BB5C 8C8E001C */ lw $t6, 0x1c($a0)
/* AB2D00 8003BB60 8C980024 */ lw $t8, 0x24($a0)
/* AB2D04 8003BB64 24080006 */ li $t0, 6
/* AB2D08 8003BB68 01CF0019 */ multu $t6, $t7
/* AB2D0C 8003BB6C 00809025 */ move $s2, $a0
/* AB2D10 8003BB70 8C870000 */ lw $a3, ($a0)
/* AB2D14 8003BB74 00C01025 */ move $v0, $a2
/* AB2D18 8003BB78 3403FFFF */ li $v1, 65535
/* AB2D1C 8003BB7C 27B600B8 */ addiu $s6, $sp, 0xb8
/* AB2D20 8003BB80 27B700AC */ addiu $s7, $sp, 0xac
/* AB2D24 8003BB84 00002812 */ mflo $a1
/* AB2D28 8003BB88 00000000 */ nop
/* AB2D2C 8003BB8C 00000000 */ nop
/* AB2D30 8003BB90 00B80019 */ multu $a1, $t8
/* AB2D34 8003BB94 0000C812 */ mflo $t9
/* AB2D38 8003BB98 00000000 */ nop
/* AB2D3C 8003BB9C 00000000 */ nop
/* AB2D40 8003BBA0 03280019 */ multu $t9, $t0
/* AB2D44 8003BBA4 00004812 */ mflo $t1
/* AB2D48 8003BBA8 01265021 */ addu $t2, $t1, $a2
/* AB2D4C 8003BBAC 00CA082B */ sltu $at, $a2, $t2
/* AB2D50 8003BBB0 50200017 */ beql $at, $zero, .L8003BC10
/* AB2D54 8003BBB4 94E30014 */ lhu $v1, 0x14($a3)
/* AB2D58 8003BBB8 A4430000 */ sh $v1, ($v0)
.L8003BBBC:
/* AB2D5C 8003BBBC A4430002 */ sh $v1, 2($v0)
/* AB2D60 8003BBC0 A4430004 */ sh $v1, 4($v0)
/* AB2D64 8003BBC4 8E4C0020 */ lw $t4, 0x20($s2)
/* AB2D68 8003BBC8 8E4B001C */ lw $t3, 0x1c($s2)
/* AB2D6C 8003BBCC 8E4D0024 */ lw $t5, 0x24($s2)
/* AB2D70 8003BBD0 24420006 */ addiu $v0, $v0, 6
/* AB2D74 8003BBD4 016C0019 */ multu $t3, $t4
/* AB2D78 8003BBD8 00002812 */ mflo $a1
/* AB2D7C 8003BBDC 00000000 */ nop
/* AB2D80 8003BBE0 00000000 */ nop
/* AB2D84 8003BBE4 00AD0019 */ multu $a1, $t5
/* AB2D88 8003BBE8 00007012 */ mflo $t6
/* AB2D8C 8003BBEC 00000000 */ nop
/* AB2D90 8003BBF0 00000000 */ nop
/* AB2D94 8003BBF4 01C80019 */ multu $t6, $t0
/* AB2D98 8003BBF8 00007812 */ mflo $t7
/* AB2D9C 8003BBFC 01E6C021 */ addu $t8, $t7, $a2
/* AB2DA0 8003BC00 0058082B */ sltu $at, $v0, $t8
/* AB2DA4 8003BC04 5420FFED */ bnezl $at, .L8003BBBC
/* AB2DA8 8003BC08 A4430000 */ sh $v1, ($v0)
/* AB2DAC 8003BC0C 94E30014 */ lhu $v1, 0x14($a3)
.L8003BC10:
/* AB2DB0 8003BC10 8CF40010 */ lw $s4, 0x10($a3)
/* AB2DB4 8003BC14 8CF50018 */ lw $s5, 0x18($a3)
/* AB2DB8 8003BC18 3C0142C8 */ li $at, 0x42C80000 # 0.000000
/* AB2DBC 8003BC1C AFA50098 */ sw $a1, 0x98($sp)
/* AB2DC0 8003BC20 44810000 */ mtc1 $at, $f0
/* AB2DC4 8003BC24 C6440028 */ lwc1 $f4, 0x28($s2)
/* AB2DC8 8003BC28 C646002C */ lwc1 $f6, 0x2c($s2)
/* AB2DCC 8003BC2C C6480030 */ lwc1 $f8, 0x30($s2)
/* AB2DD0 8003BC30 46002580 */ add.s $f22, $f4, $f0
/* AB2DD4 8003BC34 46003600 */ add.s $f24, $f6, $f0
/* AB2DD8 8003BC38 186000A5 */ blez $v1, .L8003BED0
/* AB2DDC 8003BC3C 46004680 */ add.s $f26, $f8, $f0
/* AB2DE0 8003BC40 3C014248 */ li $at, 0x42480000 # 0.000000
/* AB2DE4 8003BC44 4481A000 */ mtc1 $at, $f20
/* AB2DE8 8003BC48 AFA000E8 */ sw $zero, 0xe8($sp)
/* AB2DEC 8003BC4C AFA300EC */ sw $v1, 0xec($sp)
/* AB2DF0 8003BC50 AFA60100 */ sw $a2, 0x100($sp)
.L8003BC54:
/* AB2DF4 8003BC54 8FA200E8 */ lw $v0, 0xe8($sp)
/* AB2DF8 8003BC58 27B900D4 */ addiu $t9, $sp, 0xd4
/* AB2DFC 8003BC5C 27A900D0 */ addiu $t1, $sp, 0xd0
/* AB2E00 8003BC60 00029C00 */ sll $s3, $v0, 0x10
/* AB2E04 8003BC64 00139C03 */ sra $s3, $s3, 0x10
/* AB2E08 8003BC68 27AA00CC */ addiu $t2, $sp, 0xcc
/* AB2E0C 8003BC6C 27AB00C8 */ addiu $t3, $sp, 0xc8
/* AB2E10 8003BC70 27AC00C4 */ addiu $t4, $sp, 0xc4
/* AB2E14 8003BC74 AFAC0020 */ sw $t4, 0x20($sp)
/* AB2E18 8003BC78 AFAB001C */ sw $t3, 0x1c($sp)
/* AB2E1C 8003BC7C AFAA0018 */ sw $t2, 0x18($sp)
/* AB2E20 8003BC80 AFB30024 */ sw $s3, 0x24($sp)
/* AB2E24 8003BC84 AFA90014 */ sw $t1, 0x14($sp)
/* AB2E28 8003BC88 AFB90010 */ sw $t9, 0x10($sp)
/* AB2E2C 8003BC8C 02402025 */ move $a0, $s2
/* AB2E30 8003BC90 02802825 */ move $a1, $s4
/* AB2E34 8003BC94 02A03025 */ move $a2, $s5
/* AB2E38 8003BC98 0C00EC86 */ jal func_8003B218
/* AB2E3C 8003BC9C 27A700D8 */ addiu $a3, $sp, 0xd8
/* AB2E40 8003BCA0 8FA400D0 */ lw $a0, 0xd0($sp)
/* AB2E44 8003BCA4 C64A0030 */ lwc1 $f10, 0x30($s2)
/* AB2E48 8003BCA8 8FAE0098 */ lw $t6, 0x98($sp)
/* AB2E4C 8003BCAC 44848000 */ mtc1 $a0, $f16
/* AB2E50 8003BCB0 C646000C */ lwc1 $f6, 0xc($s2)
/* AB2E54 8003BCB4 008E0019 */ multu $a0, $t6
/* AB2E58 8003BCB8 468084A0 */ cvt.s.w $f18, $f16
/* AB2E5C 8003BCBC 8FA200C4 */ lw $v0, 0xc4($sp)
/* AB2E60 8003BCC0 8FB90100 */ lw $t9, 0x100($sp)
/* AB2E64 8003BCC4 8FA300C8 */ lw $v1, 0xc8($sp)
/* AB2E68 8003BCC8 000E4880 */ sll $t1, $t6, 2
/* AB2E6C 8003BCCC 24420001 */ addiu $v0, $v0, 1
/* AB2E70 8003BCD0 46125102 */ mul.s $f4, $f10, $f18
/* AB2E74 8003BCD4 0082082A */ slt $at, $a0, $v0
/* AB2E78 8003BCD8 012E4823 */ subu $t1, $t1, $t6
/* AB2E7C 8003BCDC 00007812 */ mflo $t7
/* AB2E80 8003BCE0 000FC080 */ sll $t8, $t7, 2
/* AB2E84 8003BCE4 030FC023 */ subu $t8, $t8, $t7
/* AB2E88 8003BCE8 0018C040 */ sll $t8, $t8, 1
/* AB2E8C 8003BCEC 46062200 */ add.s $f8, $f4, $f6
/* AB2E90 8003BCF0 00094840 */ sll $t1, $t1, 1
/* AB2E94 8003BCF4 03192821 */ addu $a1, $t8, $t9
/* AB2E98 8003BCF8 24630001 */ addiu $v1, $v1, 1
/* AB2E9C 8003BCFC 46144401 */ sub.s $f16, $f8, $f20
/* AB2EA0 8003BD00 461A8280 */ add.s $f10, $f16, $f26
/* AB2EA4 8003BD04 E7B000C0 */ swc1 $f16, 0xc0($sp)
/* AB2EA8 8003BD08 1020006C */ beqz $at, .L8003BEBC
/* AB2EAC 8003BD0C E7AA00B4 */ swc1 $f10, 0xb4($sp)
/* AB2EB0 8003BD10 AFA9007C */ sw $t1, 0x7c($sp)
.L8003BD14:
/* AB2EB4 8003BD14 8FAB00D4 */ lw $t3, 0xd4($sp)
/* AB2EB8 8003BD18 C652002C */ lwc1 $f18, 0x2c($s2)
/* AB2EBC 8003BD1C 8E4A001C */ lw $t2, 0x1c($s2)
/* AB2EC0 8003BD20 448B2000 */ mtc1 $t3, $f4
/* AB2EC4 8003BD24 C6500008 */ lwc1 $f16, 8($s2)
/* AB2EC8 8003BD28 014B0019 */ multu $t2, $t3
/* AB2ECC 8003BD2C 468021A0 */ cvt.s.w $f6, $f4
/* AB2ED0 8003BD30 0163082A */ slt $at, $t3, $v1
/* AB2ED4 8003BD34 AFAB00E0 */ sw $t3, 0xe0($sp)
/* AB2ED8 8003BD38 46069202 */ mul.s $f8, $f18, $f6
/* AB2EDC 8003BD3C 00006012 */ mflo $t4
/* AB2EE0 8003BD40 000C7880 */ sll $t7, $t4, 2
/* AB2EE4 8003BD44 01EC7823 */ subu $t7, $t7, $t4
/* AB2EE8 8003BD48 000F7840 */ sll $t7, $t7, 1
/* AB2EEC 8003BD4C 46104280 */ add.s $f10, $f8, $f16
/* AB2EF0 8003BD50 01E5F021 */ addu $fp, $t7, $a1
/* AB2EF4 8003BD54 46145101 */ sub.s $f4, $f10, $f20
/* AB2EF8 8003BD58 46182480 */ add.s $f18, $f4, $f24
/* AB2EFC 8003BD5C E7A400BC */ swc1 $f4, 0xbc($sp)
/* AB2F00 8003BD60 10200049 */ beqz $at, .L8003BE88
/* AB2F04 8003BD64 E7B200B0 */ swc1 $f18, 0xb0($sp)
/* AB2F08 8003BD68 8FA200CC */ lw $v0, 0xcc($sp)
/* AB2F0C 8003BD6C AFA400DC */ sw $a0, 0xdc($sp)
/* AB2F10 8003BD70 AFA500A4 */ sw $a1, 0xa4($sp)
/* AB2F14 8003BD74 24420001 */ addiu $v0, $v0, 1
.L8003BD78:
/* AB2F18 8003BD78 8FB100D8 */ lw $s1, 0xd8($sp)
/* AB2F1C 8003BD7C C6460028 */ lwc1 $f6, 0x28($s2)
/* AB2F20 8003BD80 C6440004 */ lwc1 $f4, 4($s2)
/* AB2F24 8003BD84 44914000 */ mtc1 $s1, $f8
/* AB2F28 8003BD88 0011C880 */ sll $t9, $s1, 2
/* AB2F2C 8003BD8C 0331C823 */ subu $t9, $t9, $s1
/* AB2F30 8003BD90 46804420 */ cvt.s.w $f16, $f8
/* AB2F34 8003BD94 0019C840 */ sll $t9, $t9, 1
/* AB2F38 8003BD98 0222082A */ slt $at, $s1, $v0
/* AB2F3C 8003BD9C 033E8021 */ addu $s0, $t9, $fp
/* AB2F40 8003BDA0 46103282 */ mul.s $f10, $f6, $f16
/* AB2F44 8003BDA4 46045480 */ add.s $f18, $f10, $f4
/* AB2F48 8003BDA8 46149201 */ sub.s $f8, $f18, $f20
/* AB2F4C 8003BDAC 46164180 */ add.s $f6, $f8, $f22
/* AB2F50 8003BDB0 E7A800B8 */ swc1 $f8, 0xb8($sp)
/* AB2F54 8003BDB4 1020001E */ beqz $at, .L8003BE30
/* AB2F58 8003BDB8 E7A600AC */ swc1 $f6, 0xac($sp)
.L8003BDBC:
/* AB2F5C 8003BDBC 02C02025 */ move $a0, $s6
/* AB2F60 8003BDC0 02E02825 */ move $a1, $s7
/* AB2F64 8003BDC4 02A03025 */ move $a2, $s5
/* AB2F68 8003BDC8 02803825 */ move $a3, $s4
/* AB2F6C 8003BDCC 0C00ECF2 */ jal func_8003B3C8
/* AB2F70 8003BDD0 AFB30010 */ sw $s3, 0x10($sp)
/* AB2F74 8003BDD4 10400006 */ beqz $v0, .L8003BDF0
/* AB2F78 8003BDD8 02002025 */ move $a0, $s0
/* AB2F7C 8003BDDC 02402825 */ move $a1, $s2
/* AB2F80 8003BDE0 02A03025 */ move $a2, $s5
/* AB2F84 8003BDE4 02803825 */ move $a3, $s4
/* AB2F88 8003BDE8 0C00E597 */ jal func_8003965C
/* AB2F8C 8003BDEC AFB30010 */ sw $s3, 0x10($sp)
.L8003BDF0:
/* AB2F90 8003BDF0 C7B000B8 */ lwc1 $f16, 0xb8($sp)
/* AB2F94 8003BDF4 C64A0028 */ lwc1 $f10, 0x28($s2)
/* AB2F98 8003BDF8 C7B200AC */ lwc1 $f18, 0xac($sp)
/* AB2F9C 8003BDFC 8FA200CC */ lw $v0, 0xcc($sp)
/* AB2FA0 8003BE00 460A8100 */ add.s $f4, $f16, $f10
/* AB2FA4 8003BE04 26310001 */ addiu $s1, $s1, 1
/* AB2FA8 8003BE08 24420001 */ addiu $v0, $v0, 1
/* AB2FAC 8003BE0C 0222082A */ slt $at, $s1, $v0
/* AB2FB0 8003BE10 E7A400B8 */ swc1 $f4, 0xb8($sp)
/* AB2FB4 8003BE14 C6480028 */ lwc1 $f8, 0x28($s2)
/* AB2FB8 8003BE18 26100006 */ addiu $s0, $s0, 6
/* AB2FBC 8003BE1C 46089180 */ add.s $f6, $f18, $f8
/* AB2FC0 8003BE20 1420FFE6 */ bnez $at, .L8003BDBC
/* AB2FC4 8003BE24 E7A600AC */ swc1 $f6, 0xac($sp)
/* AB2FC8 8003BE28 8FA300C8 */ lw $v1, 0xc8($sp)
/* AB2FCC 8003BE2C 24630001 */ addiu $v1, $v1, 1
.L8003BE30:
/* AB2FD0 8003BE30 C7B000BC */ lwc1 $f16, 0xbc($sp)
/* AB2FD4 8003BE34 C64A002C */ lwc1 $f10, 0x2c($s2)
/* AB2FD8 8003BE38 C7B200B0 */ lwc1 $f18, 0xb0($sp)
/* AB2FDC 8003BE3C 8FA400E0 */ lw $a0, 0xe0($sp)
/* AB2FE0 8003BE40 460A8100 */ add.s $f4, $f16, $f10
/* AB2FE4 8003BE44 24840001 */ addiu $a0, $a0, 1
/* AB2FE8 8003BE48 0083082A */ slt $at, $a0, $v1
/* AB2FEC 8003BE4C E7A400BC */ swc1 $f4, 0xbc($sp)
/* AB2FF0 8003BE50 C648002C */ lwc1 $f8, 0x2c($s2)
/* AB2FF4 8003BE54 46089180 */ add.s $f6, $f18, $f8
/* AB2FF8 8003BE58 E7A600B0 */ swc1 $f6, 0xb0($sp)
/* AB2FFC 8003BE5C 8E4D001C */ lw $t5, 0x1c($s2)
/* AB3000 8003BE60 AFA400E0 */ sw $a0, 0xe0($sp)
/* AB3004 8003BE64 000D7080 */ sll $t6, $t5, 2
/* AB3008 8003BE68 01CD7023 */ subu $t6, $t6, $t5
/* AB300C 8003BE6C 000E7040 */ sll $t6, $t6, 1
/* AB3010 8003BE70 1420FFC1 */ bnez $at, .L8003BD78
/* AB3014 8003BE74 03CEF021 */ addu $fp, $fp, $t6
/* AB3018 8003BE78 8FA200C4 */ lw $v0, 0xc4($sp)
/* AB301C 8003BE7C 8FA500A4 */ lw $a1, 0xa4($sp)
/* AB3020 8003BE80 8FA400DC */ lw $a0, 0xdc($sp)
/* AB3024 8003BE84 24420001 */ addiu $v0, $v0, 1
.L8003BE88:
/* AB3028 8003BE88 C7B000C0 */ lwc1 $f16, 0xc0($sp)
/* AB302C 8003BE8C C64A0030 */ lwc1 $f10, 0x30($s2)
/* AB3030 8003BE90 C7B200B4 */ lwc1 $f18, 0xb4($sp)
/* AB3034 8003BE94 8FA9007C */ lw $t1, 0x7c($sp)
/* AB3038 8003BE98 460A8100 */ add.s $f4, $f16, $f10
/* AB303C 8003BE9C 24840001 */ addiu $a0, $a0, 1
/* AB3040 8003BEA0 0082082A */ slt $at, $a0, $v0
/* AB3044 8003BEA4 00A92821 */ addu $a1, $a1, $t1
/* AB3048 8003BEA8 E7A400C0 */ swc1 $f4, 0xc0($sp)
/* AB304C 8003BEAC C6480030 */ lwc1 $f8, 0x30($s2)
/* AB3050 8003BEB0 46089180 */ add.s $f6, $f18, $f8
/* AB3054 8003BEB4 1420FF97 */ bnez $at, .L8003BD14
/* AB3058 8003BEB8 E7A600B4 */ swc1 $f6, 0xb4($sp)
.L8003BEBC:
/* AB305C 8003BEBC 8FA200E8 */ lw $v0, 0xe8($sp)
/* AB3060 8003BEC0 8FAA00EC */ lw $t2, 0xec($sp)
/* AB3064 8003BEC4 24420001 */ addiu $v0, $v0, 1
/* AB3068 8003BEC8 144AFF62 */ bne $v0, $t2, .L8003BC54
/* AB306C 8003BECC AFA200E8 */ sw $v0, 0xe8($sp)
.L8003BED0:
/* AB3070 8003BED0 96420046 */ lhu $v0, 0x46($s2)
/* AB3074 8003BED4 8FBF0074 */ lw $ra, 0x74($sp)
/* AB3078 8003BED8 8FB20058 */ lw $s2, 0x58($sp)
/* AB307C 8003BEDC D7B40030 */ ldc1 $f20, 0x30($sp)
/* AB3080 8003BEE0 D7B60038 */ ldc1 $f22, 0x38($sp)
/* AB3084 8003BEE4 D7B80040 */ ldc1 $f24, 0x40($sp)
/* AB3088 8003BEE8 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* AB308C 8003BEEC 8FB00050 */ lw $s0, 0x50($sp)
/* AB3090 8003BEF0 8FB10054 */ lw $s1, 0x54($sp)
/* AB3094 8003BEF4 8FB3005C */ lw $s3, 0x5c($sp)
/* AB3098 8003BEF8 8FB40060 */ lw $s4, 0x60($sp)
/* AB309C 8003BEFC 8FB50064 */ lw $s5, 0x64($sp)
/* AB30A0 8003BF00 8FB60068 */ lw $s6, 0x68($sp)
/* AB30A4 8003BF04 8FB7006C */ lw $s7, 0x6c($sp)
/* AB30A8 8003BF08 8FBE0070 */ lw $fp, 0x70($sp)
/* AB30AC 8003BF0C 27BD00F8 */ addiu $sp, $sp, 0xf8
/* AB30B0 8003BF10 03E00008 */ jr $ra
/* AB30B4 8003BF14 00021080 */ sll $v0, $v0, 2