papermario/asm/nonmatchings/code_13870_len_6980/func_8003CCB0.s
2020-09-23 23:16:13 -04:00

204 lines
10 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8003CCB0
/* 180B0 8003CCB0 27BDFF60 */ addiu $sp, $sp, -0xa0
/* 180B4 8003CCB4 AFB60080 */ sw $s6, 0x80($sp)
/* 180B8 8003CCB8 0080B02D */ daddu $s6, $a0, $zero
/* 180BC 8003CCBC AFB1006C */ sw $s1, 0x6c($sp)
/* 180C0 8003CCC0 00A0882D */ daddu $s1, $a1, $zero
/* 180C4 8003CCC4 AFB00068 */ sw $s0, 0x68($sp)
/* 180C8 8003CCC8 02D18021 */ addu $s0, $s6, $s1
/* 180CC 8003CCCC AFBF0084 */ sw $ra, 0x84($sp)
/* 180D0 8003CCD0 AFB5007C */ sw $s5, 0x7c($sp)
/* 180D4 8003CCD4 AFB40078 */ sw $s4, 0x78($sp)
/* 180D8 8003CCD8 AFB30074 */ sw $s3, 0x74($sp)
/* 180DC 8003CCDC AFB20070 */ sw $s2, 0x70($sp)
/* 180E0 8003CCE0 F7B80098 */ sdc1 $f24, 0x98($sp)
/* 180E4 8003CCE4 F7B60090 */ sdc1 $f22, 0x90($sp)
/* 180E8 8003CCE8 F7B40088 */ sdc1 $f20, 0x88($sp)
/* 180EC 8003CCEC 82020330 */ lb $v0, 0x330($s0)
/* 180F0 8003CCF0 1440000B */ bnez $v0, .L8003CD20
/* 180F4 8003CCF4 24050011 */ addiu $a1, $zero, 0x11
/* 180F8 8003CCF8 24060014 */ addiu $a2, $zero, 0x14
/* 180FC 8003CCFC 240200FF */ addiu $v0, $zero, 0xff
/* 18100 8003CD00 AFA00010 */ sw $zero, 0x10($sp)
/* 18104 8003CD04 AFA20014 */ sw $v0, 0x14($sp)
/* 18108 8003CD08 AFA00018 */ sw $zero, 0x18($sp)
/* 1810C 8003CD0C 8EC40024 */ lw $a0, 0x24($s6)
/* 18110 8003CD10 0C0B7A25 */ jal func_802DE894
/* 18114 8003CD14 0000382D */ daddu $a3, $zero, $zero
/* 18118 8003CD18 24020001 */ addiu $v0, $zero, 1
/* 1811C 8003CD1C A2020330 */ sb $v0, 0x330($s0)
.L8003CD20:
/* 18120 8003CD20 82030330 */ lb $v1, 0x330($s0)
/* 18124 8003CD24 24020001 */ addiu $v0, $zero, 1
/* 18128 8003CD28 14620090 */ bne $v1, $v0, .L8003CF6C
/* 1812C 8003CD2C 00511004 */ sllv $v0, $s1, $v0
/* 18130 8003CD30 02C22821 */ addu $a1, $s6, $v0
/* 18134 8003CD34 94A20332 */ lhu $v0, 0x332($a1)
/* 18138 8003CD38 24420007 */ addiu $v0, $v0, 7
/* 1813C 8003CD3C 00021C00 */ sll $v1, $v0, 0x10
/* 18140 8003CD40 00032403 */ sra $a0, $v1, 0x10
/* 18144 8003CD44 A4A20332 */ sh $v0, 0x332($a1)
/* 18148 8003CD48 28820168 */ slti $v0, $a0, 0x168
/* 1814C 8003CD4C 14400010 */ bnez $v0, .L8003CD90
/* 18150 8003CD50 0000802D */ daddu $s0, $zero, $zero
/* 18154 8003CD54 3C02B60B */ lui $v0, 0xb60b
/* 18158 8003CD58 344260B7 */ ori $v0, $v0, 0x60b7
/* 1815C 8003CD5C 00820018 */ mult $a0, $v0
/* 18160 8003CD60 00031FC3 */ sra $v1, $v1, 0x1f
/* 18164 8003CD64 00004010 */ mfhi $t0
/* 18168 8003CD68 01041021 */ addu $v0, $t0, $a0
/* 1816C 8003CD6C 00021203 */ sra $v0, $v0, 8
/* 18170 8003CD70 00431023 */ subu $v0, $v0, $v1
/* 18174 8003CD74 00021840 */ sll $v1, $v0, 1
/* 18178 8003CD78 00621821 */ addu $v1, $v1, $v0
/* 1817C 8003CD7C 00031100 */ sll $v0, $v1, 4
/* 18180 8003CD80 00431023 */ subu $v0, $v0, $v1
/* 18184 8003CD84 000210C0 */ sll $v0, $v0, 3
/* 18188 8003CD88 00821023 */ subu $v0, $a0, $v0
/* 1818C 8003CD8C A4A20332 */ sh $v0, 0x332($a1)
.L8003CD90:
/* 18190 8003CD90 00A0902D */ daddu $s2, $a1, $zero
/* 18194 8003CD94 3C138000 */ lui $s3, 0x8000
/* 18198 8003CD98 0200882D */ daddu $s1, $s0, $zero
/* 1819C 8003CD9C 3C013FF0 */ lui $at, 0x3ff0
/* 181A0 8003CDA0 4481C800 */ mtc1 $at, $f25
/* 181A4 8003CDA4 4480C000 */ mtc1 $zero, $f24
/* 181A8 8003CDA8 3C014054 */ lui $at, 0x4054
/* 181AC 8003CDAC 4481B800 */ mtc1 $at, $f23
/* 181B0 8003CDB0 4480B000 */ mtc1 $zero, $f22
/* 181B4 8003CDB4 3C0141E0 */ lui $at, 0x41e0
/* 181B8 8003CDB8 4481A800 */ mtc1 $at, $f21
/* 181BC 8003CDBC 4480A000 */ mtc1 $zero, $f20
.L8003CDC0:
/* 181C0 8003CDC0 96440332 */ lhu $a0, 0x332($s2)
/* 181C4 8003CDC4 00912021 */ addu $a0, $a0, $s1
/* 181C8 8003CDC8 00042400 */ sll $a0, $a0, 0x10
/* 181CC 8003CDCC 0C00A4F5 */ jal cosine
/* 181D0 8003CDD0 00042403 */ sra $a0, $a0, 0x10
/* 181D4 8003CDD4 46000021 */ cvt.d.s $f0, $f0
/* 181D8 8003CDD8 46380000 */ add.d $f0, $f0, $f24
/* 181DC 8003CDDC 46360002 */ mul.d $f0, $f0, $f22
/* 181E0 8003CDE0 00000000 */ nop
/* 181E4 8003CDE4 27A20020 */ addiu $v0, $sp, 0x20
/* 181E8 8003CDE8 4620A03E */ c.le.d $f20, $f0
/* 181EC 8003CDEC 00000000 */ nop
/* 181F0 8003CDF0 45010005 */ bc1t .L8003CE08
/* 181F4 8003CDF4 00501021 */ addu $v0, $v0, $s0
/* 181F8 8003CDF8 4620008D */ trunc.w.d $f2, $f0
/* 181FC 8003CDFC 44031000 */ mfc1 $v1, $f2
/* 18200 8003CE00 0800F388 */ j .L8003CE20
/* 18204 8003CE04 A0430000 */ sb $v1, ($v0)
.L8003CE08:
/* 18208 8003CE08 46340001 */ sub.d $f0, $f0, $f20
/* 1820C 8003CE0C 4620008D */ trunc.w.d $f2, $f0
/* 18210 8003CE10 44031000 */ mfc1 $v1, $f2
/* 18214 8003CE14 00000000 */ nop
/* 18218 8003CE18 00731825 */ or $v1, $v1, $s3
/* 1821C 8003CE1C A0430000 */ sb $v1, ($v0)
.L8003CE20:
/* 18220 8003CE20 96440332 */ lhu $a0, 0x332($s2)
/* 18224 8003CE24 00912021 */ addu $a0, $a0, $s1
/* 18228 8003CE28 2484002D */ addiu $a0, $a0, 0x2d
/* 1822C 8003CE2C 00042400 */ sll $a0, $a0, 0x10
/* 18230 8003CE30 0C00A4F5 */ jal cosine
/* 18234 8003CE34 00042403 */ sra $a0, $a0, 0x10
/* 18238 8003CE38 46000021 */ cvt.d.s $f0, $f0
/* 1823C 8003CE3C 46380000 */ add.d $f0, $f0, $f24
/* 18240 8003CE40 46360002 */ mul.d $f0, $f0, $f22
/* 18244 8003CE44 00000000 */ nop
/* 18248 8003CE48 27A20038 */ addiu $v0, $sp, 0x38
/* 1824C 8003CE4C 4620A03E */ c.le.d $f20, $f0
/* 18250 8003CE50 00000000 */ nop
/* 18254 8003CE54 45010005 */ bc1t .L8003CE6C
/* 18258 8003CE58 00501021 */ addu $v0, $v0, $s0
/* 1825C 8003CE5C 4620008D */ trunc.w.d $f2, $f0
/* 18260 8003CE60 44031000 */ mfc1 $v1, $f2
/* 18264 8003CE64 0800F3A1 */ j .L8003CE84
/* 18268 8003CE68 A0430000 */ sb $v1, ($v0)
.L8003CE6C:
/* 1826C 8003CE6C 46340001 */ sub.d $f0, $f0, $f20
/* 18270 8003CE70 4620008D */ trunc.w.d $f2, $f0
/* 18274 8003CE74 44031000 */ mfc1 $v1, $f2
/* 18278 8003CE78 00000000 */ nop
/* 1827C 8003CE7C 00731825 */ or $v1, $v1, $s3
/* 18280 8003CE80 A0430000 */ sb $v1, ($v0)
.L8003CE84:
/* 18284 8003CE84 96440332 */ lhu $a0, 0x332($s2)
/* 18288 8003CE88 00912021 */ addu $a0, $a0, $s1
/* 1828C 8003CE8C 2484005A */ addiu $a0, $a0, 0x5a
/* 18290 8003CE90 00042400 */ sll $a0, $a0, 0x10
/* 18294 8003CE94 0C00A4F5 */ jal cosine
/* 18298 8003CE98 00042403 */ sra $a0, $a0, 0x10
/* 1829C 8003CE9C 46000021 */ cvt.d.s $f0, $f0
/* 182A0 8003CEA0 46380000 */ add.d $f0, $f0, $f24
/* 182A4 8003CEA4 46360002 */ mul.d $f0, $f0, $f22
/* 182A8 8003CEA8 00000000 */ nop
/* 182AC 8003CEAC 27A20050 */ addiu $v0, $sp, 0x50
/* 182B0 8003CEB0 4620A03E */ c.le.d $f20, $f0
/* 182B4 8003CEB4 00000000 */ nop
/* 182B8 8003CEB8 45010005 */ bc1t .L8003CED0
/* 182BC 8003CEBC 00501021 */ addu $v0, $v0, $s0
/* 182C0 8003CEC0 4620008D */ trunc.w.d $f2, $f0
/* 182C4 8003CEC4 44031000 */ mfc1 $v1, $f2
/* 182C8 8003CEC8 0800F3BA */ j .L8003CEE8
/* 182CC 8003CECC A0430000 */ sb $v1, ($v0)
.L8003CED0:
/* 182D0 8003CED0 46340001 */ sub.d $f0, $f0, $f20
/* 182D4 8003CED4 4620008D */ trunc.w.d $f2, $f0
/* 182D8 8003CED8 44031000 */ mfc1 $v1, $f2
/* 182DC 8003CEDC 00000000 */ nop
/* 182E0 8003CEE0 00731825 */ or $v1, $v1, $s3
/* 182E4 8003CEE4 A0430000 */ sb $v1, ($v0)
.L8003CEE8:
/* 182E8 8003CEE8 26100001 */ addiu $s0, $s0, 1
/* 182EC 8003CEEC 2A020014 */ slti $v0, $s0, 0x14
/* 182F0 8003CEF0 1440FFB3 */ bnez $v0, .L8003CDC0
/* 182F4 8003CEF4 26310019 */ addiu $s1, $s1, 0x19
/* 182F8 8003CEF8 241500FF */ addiu $s5, $zero, 0xff
/* 182FC 8003CEFC 0000802D */ daddu $s0, $zero, $zero
/* 18300 8003CF00 27B30020 */ addiu $s3, $sp, 0x20
/* 18304 8003CF04 27B20038 */ addiu $s2, $sp, 0x38
/* 18308 8003CF08 27B10050 */ addiu $s1, $sp, 0x50
/* 1830C 8003CF0C 02A0A02D */ daddu $s4, $s5, $zero
/* 18310 8003CF10 2405000C */ addiu $a1, $zero, 0xc
.L8003CF14:
/* 18314 8003CF14 0200302D */ daddu $a2, $s0, $zero
/* 18318 8003CF18 02701021 */ addu $v0, $s3, $s0
/* 1831C 8003CF1C 02501821 */ addu $v1, $s2, $s0
/* 18320 8003CF20 02302021 */ addu $a0, $s1, $s0
/* 18324 8003CF24 90470000 */ lbu $a3, ($v0)
/* 18328 8003CF28 90620000 */ lbu $v0, ($v1)
/* 1832C 8003CF2C 90830000 */ lbu $v1, ($a0)
/* 18330 8003CF30 26100001 */ addiu $s0, $s0, 1
/* 18334 8003CF34 AFA00010 */ sw $zero, 0x10($sp)
/* 18338 8003CF38 AFB40014 */ sw $s4, 0x14($sp)
/* 1833C 8003CF3C AFA00018 */ sw $zero, 0x18($sp)
/* 18340 8003CF40 8EC40024 */ lw $a0, 0x24($s6)
/* 18344 8003CF44 00073E00 */ sll $a3, $a3, 0x18
/* 18348 8003CF48 00021400 */ sll $v0, $v0, 0x10
/* 1834C 8003CF4C 00E23825 */ or $a3, $a3, $v0
/* 18350 8003CF50 00031A00 */ sll $v1, $v1, 8
/* 18354 8003CF54 00E33825 */ or $a3, $a3, $v1
/* 18358 8003CF58 0C0B7A25 */ jal func_802DE894
/* 1835C 8003CF5C 00F53825 */ or $a3, $a3, $s5
/* 18360 8003CF60 2A020014 */ slti $v0, $s0, 0x14
/* 18364 8003CF64 1440FFEB */ bnez $v0, .L8003CF14
/* 18368 8003CF68 2405000C */ addiu $a1, $zero, 0xc
.L8003CF6C:
/* 1836C 8003CF6C 8FBF0084 */ lw $ra, 0x84($sp)
/* 18370 8003CF70 8FB60080 */ lw $s6, 0x80($sp)
/* 18374 8003CF74 8FB5007C */ lw $s5, 0x7c($sp)
/* 18378 8003CF78 8FB40078 */ lw $s4, 0x78($sp)
/* 1837C 8003CF7C 8FB30074 */ lw $s3, 0x74($sp)
/* 18380 8003CF80 8FB20070 */ lw $s2, 0x70($sp)
/* 18384 8003CF84 8FB1006C */ lw $s1, 0x6c($sp)
/* 18388 8003CF88 8FB00068 */ lw $s0, 0x68($sp)
/* 1838C 8003CF8C D7B80098 */ ldc1 $f24, 0x98($sp)
/* 18390 8003CF90 D7B60090 */ ldc1 $f22, 0x90($sp)
/* 18394 8003CF94 D7B40088 */ ldc1 $f20, 0x88($sp)
/* 18398 8003CF98 03E00008 */ jr $ra
/* 1839C 8003CF9C 27BD00A0 */ addiu $sp, $sp, 0xa0