papermario/ver/jp/asm/nonmatchings/46C50/func_8006BBB0.s

316 lines
15 KiB
ArmAsm
Raw Normal View History

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8006BBB0
/* 46FB0 8006BBB0 27BDFF80 */ addiu $sp, $sp, -0x80
/* 46FB4 8006BBB4 AFB30054 */ sw $s3, 0x54($sp)
/* 46FB8 8006BBB8 00809821 */ addu $s3, $a0, $zero
/* 46FBC 8006BBBC AFB1004C */ sw $s1, 0x4c($sp)
/* 46FC0 8006BBC0 27B10018 */ addiu $s1, $sp, 0x18
/* 46FC4 8006BBC4 AFBF0060 */ sw $ra, 0x60($sp)
/* 46FC8 8006BBC8 AFB5005C */ sw $s5, 0x5c($sp)
/* 46FCC 8006BBCC AFB40058 */ sw $s4, 0x58($sp)
/* 46FD0 8006BBD0 AFB20050 */ sw $s2, 0x50($sp)
/* 46FD4 8006BBD4 AFB00048 */ sw $s0, 0x48($sp)
/* 46FD8 8006BBD8 F7B80078 */ sdc1 $f24, 0x78($sp)
/* 46FDC 8006BBDC F7B60070 */ sdc1 $f22, 0x70($sp)
/* 46FE0 8006BBE0 F7B40068 */ sdc1 $f20, 0x68($sp)
/* 46FE4 8006BBE4 8E630024 */ lw $v1, 0x24($s3)
/* 46FE8 8006BBE8 D6740000 */ ldc1 $f20, ($s3)
/* 46FEC 8006BBEC 04610003 */ bgez $v1, .L8006BBFC
/* 46FF0 8006BBF0 00A0A821 */ addu $s5, $a1, $zero
/* 46FF4 8006BBF4 0801AF0A */ j .L8006BC28
/* 46FF8 8006BBF8 24020006 */ addiu $v0, $zero, 6
.L8006BBFC:
/* 46FFC 8006BBFC 1460000C */ bnez $v1, .L8006BC30
/* 47000 8006BC00 27A40038 */ addiu $a0, $sp, 0x38
/* 47004 8006BC04 00051600 */ sll $v0, $a1, 0x18
/* 47008 8006BC08 00021603 */ sra $v0, $v0, 0x18
/* 4700C 8006BC0C 38430067 */ xori $v1, $v0, 0x67
/* 47010 8006BC10 2C630001 */ sltiu $v1, $v1, 1
/* 47014 8006BC14 38420047 */ xori $v0, $v0, 0x47
/* 47018 8006BC18 2C420001 */ sltiu $v0, $v0, 1
/* 4701C 8006BC1C 00621825 */ or $v1, $v1, $v0
/* 47020 8006BC20 10600003 */ beqz $v1, .L8006BC30
/* 47024 8006BC24 24020001 */ addiu $v0, $zero, 1
.L8006BC28:
/* 47028 8006BC28 AE620024 */ sw $v0, 0x24($s3)
/* 4702C 8006BC2C 27A40038 */ addiu $a0, $sp, 0x38
.L8006BC30:
/* 47030 8006BC30 0C01AFFF */ jal func_8006BFFC
/* 47034 8006BC34 02602821 */ addu $a1, $s3, $zero
/* 47038 8006BC38 00021400 */ sll $v0, $v0, 0x10
/* 4703C 8006BC3C 00021C03 */ sra $v1, $v0, 0x10
/* 47040 8006BC40 18600010 */ blez $v1, .L8006BC84
/* 47044 8006BC44 24020002 */ addiu $v0, $zero, 2
/* 47048 8006BC48 3C06800A */ lui $a2, %hi(D_80099DFC)
/* 4704C 8006BC4C 24C69DFC */ addiu $a2, $a2, %lo(D_80099DFC)
/* 47050 8006BC50 8E670008 */ lw $a3, 8($s3)
/* 47054 8006BC54 14620003 */ bne $v1, $v0, .L8006BC64
/* 47058 8006BC58 24020003 */ addiu $v0, $zero, 3
/* 4705C 8006BC5C 3C06800A */ lui $a2, %hi(D_80099DF8)
/* 47060 8006BC60 24C69DF8 */ addiu $a2, $a2, %lo(D_80099DF8)
.L8006BC64:
/* 47064 8006BC64 AE620014 */ sw $v0, 0x14($s3)
/* 47068 8006BC68 80C20000 */ lb $v0, ($a2)
/* 4706C 8006BC6C 80C30001 */ lb $v1, 1($a2)
/* 47070 8006BC70 80C40002 */ lb $a0, 2($a2)
/* 47074 8006BC74 A0E20000 */ sb $v0, ($a3)
/* 47078 8006BC78 A0E30001 */ sb $v1, 1($a3)
/* 4707C 8006BC7C 0801AFF3 */ j .L8006BFCC
/* 47080 8006BC80 A0E40002 */ sb $a0, 2($a3)
.L8006BC84:
/* 47084 8006BC84 14600003 */ bnez $v1, .L8006BC94
/* 47088 8006BC88 00003821 */ addu $a3, $zero, $zero
/* 4708C 8006BC8C 0801AFEA */ j .L8006BFA8
/* 47090 8006BC90 A7A00038 */ sh $zero, 0x38($sp)
.L8006BC94:
/* 47094 8006BC94 44800000 */ mtc1 $zero, $f0
/* 47098 8006BC98 44800800 */ mtc1 $zero, $f1
/* 4709C 8006BC9C 00000000 */ nop
/* 470A0 8006BCA0 4620A03C */ c.lt.d $f20, $f0
/* 470A4 8006BCA4 00000000 */ nop
/* 470A8 8006BCA8 00000000 */ nop
/* 470AC 8006BCAC 45030001 */ bc1tl .L8006BCB4
/* 470B0 8006BCB0 4620A507 */ neg.d $f20, $f20
.L8006BCB4:
/* 470B4 8006BCB4 87A30038 */ lh $v1, 0x38($sp)
/* 470B8 8006BCB8 24027597 */ addiu $v0, $zero, 0x7597
/* 470BC 8006BCBC 00620018 */ mult $v1, $v0
/* 470C0 8006BCC0 00001812 */ mflo $v1
/* 470C4 8006BCC4 3C0214F8 */ lui $v0, 0x14f8
/* 470C8 8006BCC8 3442B589 */ ori $v0, $v0, 0xb589
/* 470CC 8006BCCC 00620018 */ mult $v1, $v0
/* 470D0 8006BCD0 00031FC3 */ sra $v1, $v1, 0x1f
/* 470D4 8006BCD4 00004010 */ mfhi $t0
/* 470D8 8006BCD8 00081343 */ sra $v0, $t0, 0xd
/* 470DC 8006BCDC 00431023 */ subu $v0, $v0, $v1
/* 470E0 8006BCE0 2443FFFC */ addiu $v1, $v0, -4
/* 470E4 8006BCE4 00031400 */ sll $v0, $v1, 0x10
/* 470E8 8006BCE8 00021403 */ sra $v0, $v0, 0x10
/* 470EC 8006BCEC 04410013 */ bgez $v0, .L8006BD3C
/* 470F0 8006BCF0 A7A30038 */ sh $v1, 0x38($sp)
/* 470F4 8006BCF4 00021023 */ negu $v0, $v0
/* 470F8 8006BCF8 24420003 */ addiu $v0, $v0, 3
/* 470FC 8006BCFC 2403FFFC */ addiu $v1, $zero, -4
/* 47100 8006BD00 00431824 */ and $v1, $v0, $v1
/* 47104 8006BD04 00031023 */ negu $v0, $v1
/* 47108 8006BD08 1860001F */ blez $v1, .L8006BD88
/* 4710C 8006BD0C A7A20038 */ sh $v0, 0x38($sp)
/* 47110 8006BD10 3C04800A */ lui $a0, %hi(D_80099DB0)
/* 47114 8006BD14 24849DB0 */ addiu $a0, $a0, %lo(D_80099DB0)
.L8006BD18:
/* 47118 8006BD18 30620001 */ andi $v0, $v1, 1
/* 4711C 8006BD1C 10400003 */ beqz $v0, .L8006BD2C
/* 47120 8006BD20 00031843 */ sra $v1, $v1, 1
/* 47124 8006BD24 D4800000 */ ldc1 $f0, ($a0)
/* 47128 8006BD28 4620A502 */ mul.d $f20, $f20, $f0
.L8006BD2C:
/* 4712C 8006BD2C 1C60FFFA */ bgtz $v1, .L8006BD18
/* 47130 8006BD30 24840008 */ addiu $a0, $a0, 8
/* 47134 8006BD34 0801AF62 */ j .L8006BD88
/* 47138 8006BD38 00000000 */ nop
.L8006BD3C:
/* 4713C 8006BD3C 18400012 */ blez $v0, .L8006BD88
/* 47140 8006BD40 2402FFFC */ addiu $v0, $zero, -4
/* 47144 8006BD44 3C01800A */ lui $at, %hi(D_80099E00)
/* 47148 8006BD48 D4229E00 */ ldc1 $f2, %lo(D_80099E00)($at)
/* 4714C 8006BD4C 00621024 */ and $v0, $v1, $v0
/* 47150 8006BD50 00021C00 */ sll $v1, $v0, 0x10
/* 47154 8006BD54 00031C03 */ sra $v1, $v1, 0x10
/* 47158 8006BD58 1860000A */ blez $v1, .L8006BD84
/* 4715C 8006BD5C A7A20038 */ sh $v0, 0x38($sp)
/* 47160 8006BD60 3C04800A */ lui $a0, %hi(D_80099DB0)
/* 47164 8006BD64 24849DB0 */ addiu $a0, $a0, %lo(D_80099DB0)
.L8006BD68:
/* 47168 8006BD68 30620001 */ andi $v0, $v1, 1
/* 4716C 8006BD6C 10400003 */ beqz $v0, .L8006BD7C
/* 47170 8006BD70 00031843 */ sra $v1, $v1, 1
/* 47174 8006BD74 D4800000 */ ldc1 $f0, ($a0)
/* 47178 8006BD78 46201082 */ mul.d $f2, $f2, $f0
.L8006BD7C:
/* 4717C 8006BD7C 1C60FFFA */ bgtz $v1, .L8006BD68
/* 47180 8006BD80 24840008 */ addiu $a0, $a0, 8
.L8006BD84:
/* 47184 8006BD84 4622A503 */ div.d $f20, $f20, $f2
.L8006BD88:
/* 47188 8006BD88 8E640024 */ lw $a0, 0x24($s3)
/* 4718C 8006BD8C 00151600 */ sll $v0, $s5, 0x18
/* 47190 8006BD90 00021603 */ sra $v0, $v0, 0x18
/* 47194 8006BD94 24030066 */ addiu $v1, $zero, 0x66
/* 47198 8006BD98 14430004 */ bne $v0, $v1, .L8006BDAC
/* 4719C 8006BD9C 24920006 */ addiu $s2, $a0, 6
/* 471A0 8006BDA0 87A30038 */ lh $v1, 0x38($sp)
/* 471A4 8006BDA4 2482000A */ addiu $v0, $a0, 0xa
/* 471A8 8006BDA8 00439021 */ addu $s2, $v0, $v1
.L8006BDAC:
/* 471AC 8006BDAC 2A420014 */ slti $v0, $s2, 0x14
/* 471B0 8006BDB0 50400001 */ beql $v0, $zero, .L8006BDB8
/* 471B4 8006BDB4 24120013 */ addiu $s2, $zero, 0x13
.L8006BDB8:
/* 471B8 8006BDB8 24020030 */ addiu $v0, $zero, 0x30
/* 471BC 8006BDBC A2220000 */ sb $v0, ($s1)
/* 471C0 8006BDC0 26310001 */ addiu $s1, $s1, 1
/* 471C4 8006BDC4 4480C000 */ mtc1 $zero, $f24
/* 471C8 8006BDC8 4480C800 */ mtc1 $zero, $f25
/* 471CC 8006BDCC 3C01800A */ lui $at, %hi(D_80099E08)
/* 471D0 8006BDD0 D4369E08 */ ldc1 $f22, %lo(D_80099E08)($at)
/* 471D4 8006BDD4 24140030 */ addiu $s4, $zero, 0x30
.L8006BDD8:
/* 471D8 8006BDD8 4634C03C */ c.lt.d $f24, $f20
/* 471DC 8006BDDC 24030001 */ addiu $v1, $zero, 1
/* 471E0 8006BDE0 00000000 */ nop
/* 471E4 8006BDE4 45010002 */ bc1t .L8006BDF0
/* 471E8 8006BDE8 0012102A */ slt $v0, $zero, $s2
/* 471EC 8006BDEC 00001821 */ addu $v1, $zero, $zero
.L8006BDF0:
/* 471F0 8006BDF0 00431024 */ and $v0, $v0, $v1
/* 471F4 8006BDF4 10400021 */ beqz $v0, .L8006BE7C
/* 471F8 8006BDF8 2652FFF8 */ addiu $s2, $s2, -8
/* 471FC 8006BDFC 4620A00D */ trunc.w.d $f0, $f20
/* 47200 8006BE00 44050000 */ mfc1 $a1, $f0
/* 47204 8006BE04 00000000 */ nop
/* 47208 8006BE08 1A400006 */ blez $s2, .L8006BE24
/* 4720C 8006BE0C 26310008 */ addiu $s1, $s1, 8
/* 47210 8006BE10 44850000 */ mtc1 $a1, $f0
/* 47214 8006BE14 00000000 */ nop
/* 47218 8006BE18 46800021 */ cvt.d.w $f0, $f0
/* 4721C 8006BE1C 4620A001 */ sub.d $f0, $f20, $f0
/* 47220 8006BE20 46360502 */ mul.d $f20, $f0, $f22
.L8006BE24:
/* 47224 8006BE24 18A00010 */ blez $a1, .L8006BE68
/* 47228 8006BE28 24100008 */ addiu $s0, $zero, 8
/* 4722C 8006BE2C 2610FFFF */ addiu $s0, $s0, -1
.L8006BE30:
/* 47230 8006BE30 0600000D */ bltz $s0, .L8006BE68
/* 47234 8006BE34 27A40040 */ addiu $a0, $sp, 0x40
/* 47238 8006BE38 0C01B580 */ jal func_8006D600
/* 4723C 8006BE3C 2406000A */ addiu $a2, $zero, 0xa
/* 47240 8006BE40 8FA20044 */ lw $v0, 0x44($sp)
/* 47244 8006BE44 2631FFFF */ addiu $s1, $s1, -1
/* 47248 8006BE48 24420030 */ addiu $v0, $v0, 0x30
/* 4724C 8006BE4C A2220000 */ sb $v0, ($s1)
/* 47250 8006BE50 8FA50040 */ lw $a1, 0x40($sp)
/* 47254 8006BE54 1CA0FFF6 */ bgtz $a1, .L8006BE30
/* 47258 8006BE58 2610FFFF */ addiu $s0, $s0, -1
/* 4725C 8006BE5C 0801AF9B */ j .L8006BE6C
/* 47260 8006BE60 00000000 */ nop
.L8006BE64:
/* 47264 8006BE64 A2340000 */ sb $s4, ($s1)
.L8006BE68:
/* 47268 8006BE68 2610FFFF */ addiu $s0, $s0, -1
.L8006BE6C:
/* 4726C 8006BE6C 0603FFFD */ bgezl $s0, .L8006BE64
/* 47270 8006BE70 2631FFFF */ addiu $s1, $s1, -1
/* 47274 8006BE74 0801AF76 */ j .L8006BDD8
/* 47278 8006BE78 26310008 */ addiu $s1, $s1, 8
.L8006BE7C:
/* 4727C 8006BE7C 2623FFFF */ addiu $v1, $s1, -1
/* 47280 8006BE80 27A20018 */ addiu $v0, $sp, 0x18
/* 47284 8006BE84 00629023 */ subu $s2, $v1, $v0
/* 47288 8006BE88 97A20038 */ lhu $v0, 0x38($sp)
/* 4728C 8006BE8C 83A30019 */ lb $v1, 0x19($sp)
/* 47290 8006BE90 24420007 */ addiu $v0, $v0, 7
/* 47294 8006BE94 A7A20038 */ sh $v0, 0x38($sp)
/* 47298 8006BE98 24020030 */ addiu $v0, $zero, 0x30
/* 4729C 8006BE9C 14620009 */ bne $v1, $v0, .L8006BEC4
/* 472A0 8006BEA0 27B10019 */ addiu $s1, $sp, 0x19
/* 472A4 8006BEA4 24030030 */ addiu $v1, $zero, 0x30
.L8006BEA8:
/* 472A8 8006BEA8 97A20038 */ lhu $v0, 0x38($sp)
/* 472AC 8006BEAC 26310001 */ addiu $s1, $s1, 1
/* 472B0 8006BEB0 2442FFFF */ addiu $v0, $v0, -1
/* 472B4 8006BEB4 A7A20038 */ sh $v0, 0x38($sp)
/* 472B8 8006BEB8 82220000 */ lb $v0, ($s1)
/* 472BC 8006BEBC 1043FFFA */ beq $v0, $v1, .L8006BEA8
/* 472C0 8006BEC0 2652FFFF */ addiu $s2, $s2, -1
.L8006BEC4:
/* 472C4 8006BEC4 8E650024 */ lw $a1, 0x24($s3)
/* 472C8 8006BEC8 00151600 */ sll $v0, $s5, 0x18
/* 472CC 8006BECC 00022603 */ sra $a0, $v0, 0x18
/* 472D0 8006BED0 24020066 */ addiu $v0, $zero, 0x66
/* 472D4 8006BED4 14820005 */ bne $a0, $v0, .L8006BEEC
/* 472D8 8006BED8 38830065 */ xori $v1, $a0, 0x65
/* 472DC 8006BEDC 87A30038 */ lh $v1, 0x38($sp)
/* 472E0 8006BEE0 24A20001 */ addiu $v0, $a1, 1
/* 472E4 8006BEE4 0801AFC0 */ j .L8006BF00
/* 472E8 8006BEE8 00433821 */ addu $a3, $v0, $v1
.L8006BEEC:
/* 472EC 8006BEEC 2C630001 */ sltiu $v1, $v1, 1
/* 472F0 8006BEF0 38820045 */ xori $v0, $a0, 0x45
/* 472F4 8006BEF4 2C420001 */ sltiu $v0, $v0, 1
/* 472F8 8006BEF8 00621825 */ or $v1, $v1, $v0
/* 472FC 8006BEFC 00A33821 */ addu $a3, $a1, $v1
.L8006BF00:
/* 47300 8006BF00 00071400 */ sll $v0, $a3, 0x10
/* 47304 8006BF04 00021403 */ sra $v0, $v0, 0x10
/* 47308 8006BF08 0242102A */ slt $v0, $s2, $v0
/* 4730C 8006BF0C 54400001 */ bnel $v0, $zero, .L8006BF14
/* 47310 8006BF10 02403821 */ addu $a3, $s2, $zero
.L8006BF14:
/* 47314 8006BF14 00071400 */ sll $v0, $a3, 0x10
/* 47318 8006BF18 00022403 */ sra $a0, $v0, 0x10
/* 4731C 8006BF1C 18800022 */ blez $a0, .L8006BFA8
/* 47320 8006BF20 0092102A */ slt $v0, $a0, $s2
/* 47324 8006BF24 10400008 */ beqz $v0, .L8006BF48
/* 47328 8006BF28 24030030 */ addiu $v1, $zero, 0x30
/* 4732C 8006BF2C 02241021 */ addu $v0, $s1, $a0
/* 47330 8006BF30 80420000 */ lb $v0, ($v0)
/* 47334 8006BF34 28420035 */ slti $v0, $v0, 0x35
/* 47338 8006BF38 38420001 */ xori $v0, $v0, 1
/* 4733C 8006BF3C 00021023 */ negu $v0, $v0
/* 47340 8006BF40 30420039 */ andi $v0, $v0, 0x39
/* 47344 8006BF44 34430030 */ ori $v1, $v0, 0x30
.L8006BF48:
/* 47348 8006BF48 2485FFFF */ addiu $a1, $a0, -1
/* 4734C 8006BF4C 02252021 */ addu $a0, $s1, $a1
/* 47350 8006BF50 80820000 */ lb $v0, ($a0)
/* 47354 8006BF54 54430008 */ bnel $v0, $v1, .L8006BF78
/* 47358 8006BF58 24020039 */ addiu $v0, $zero, 0x39
/* 4735C 8006BF5C 00403021 */ addu $a2, $v0, $zero
.L8006BF60:
/* 47360 8006BF60 2484FFFF */ addiu $a0, $a0, -1
/* 47364 8006BF64 80820000 */ lb $v0, ($a0)
/* 47368 8006BF68 24E7FFFF */ addiu $a3, $a3, -1
/* 4736C 8006BF6C 1046FFFC */ beq $v0, $a2, .L8006BF60
/* 47370 8006BF70 24A5FFFF */ addiu $a1, $a1, -1
/* 47374 8006BF74 24020039 */ addiu $v0, $zero, 0x39
.L8006BF78:
/* 47378 8006BF78 14620004 */ bne $v1, $v0, .L8006BF8C
/* 4737C 8006BF7C 02251821 */ addu $v1, $s1, $a1
/* 47380 8006BF80 90620000 */ lbu $v0, ($v1)
/* 47384 8006BF84 24420001 */ addiu $v0, $v0, 1
/* 47388 8006BF88 A0620000 */ sb $v0, ($v1)
.L8006BF8C:
/* 4738C 8006BF8C 04A10007 */ bgez $a1, .L8006BFAC
/* 47390 8006BF90 02602021 */ addu $a0, $s3, $zero
/* 47394 8006BF94 97A20038 */ lhu $v0, 0x38($sp)
/* 47398 8006BF98 2631FFFF */ addiu $s1, $s1, -1
/* 4739C 8006BF9C 24E70001 */ addiu $a3, $a3, 1
/* 473A0 8006BFA0 24420001 */ addiu $v0, $v0, 1
/* 473A4 8006BFA4 A7A20038 */ sh $v0, 0x38($sp)
.L8006BFA8:
/* 473A8 8006BFA8 02602021 */ addu $a0, $s3, $zero
.L8006BFAC:
/* 473AC 8006BFAC 00152E00 */ sll $a1, $s5, 0x18
/* 473B0 8006BFB0 87A20038 */ lh $v0, 0x38($sp)
/* 473B4 8006BFB4 00052E03 */ sra $a1, $a1, 0x18
/* 473B8 8006BFB8 02203021 */ addu $a2, $s1, $zero
/* 473BC 8006BFBC 00073C00 */ sll $a3, $a3, 0x10
/* 473C0 8006BFC0 00073C03 */ sra $a3, $a3, 0x10
/* 473C4 8006BFC4 0C01B025 */ jal func_8006C094
/* 473C8 8006BFC8 AFA20010 */ sw $v0, 0x10($sp)
.L8006BFCC:
/* 473CC 8006BFCC 8FBF0060 */ lw $ra, 0x60($sp)
/* 473D0 8006BFD0 8FB5005C */ lw $s5, 0x5c($sp)
/* 473D4 8006BFD4 8FB40058 */ lw $s4, 0x58($sp)
/* 473D8 8006BFD8 8FB30054 */ lw $s3, 0x54($sp)
/* 473DC 8006BFDC 8FB20050 */ lw $s2, 0x50($sp)
/* 473E0 8006BFE0 8FB1004C */ lw $s1, 0x4c($sp)
/* 473E4 8006BFE4 8FB00048 */ lw $s0, 0x48($sp)
/* 473E8 8006BFE8 D7B80078 */ ldc1 $f24, 0x78($sp)
/* 473EC 8006BFEC D7B60070 */ ldc1 $f22, 0x70($sp)
/* 473F0 8006BFF0 D7B40068 */ ldc1 $f20, 0x68($sp)
/* 473F4 8006BFF4 03E00008 */ jr $ra
/* 473F8 8006BFF8 27BD0080 */ addiu $sp, $sp, 0x80