papermario/asm/nonmatchings/code_182B30/func_8025AA80.s
2021-01-13 00:42:27 +09:00

220 lines
11 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8025AA80
/* 189360 8025AA80 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 189364 8025AA84 AFB20018 */ sw $s2, 0x18($sp)
/* 189368 8025AA88 0080902D */ daddu $s2, $a0, $zero
/* 18936C 8025AA8C AFB10014 */ sw $s1, 0x14($sp)
/* 189370 8025AA90 00A0882D */ daddu $s1, $a1, $zero
/* 189374 8025AA94 AFBF0024 */ sw $ra, 0x24($sp)
/* 189378 8025AA98 AFB40020 */ sw $s4, 0x20($sp)
/* 18937C 8025AA9C AFB3001C */ sw $s3, 0x1c($sp)
/* 189380 8025AAA0 AFB00010 */ sw $s0, 0x10($sp)
/* 189384 8025AAA4 8E3000C0 */ lw $s0, 0xc0($s1)
/* 189388 8025AAA8 00C0982D */ daddu $s3, $a2, $zero
/* 18938C 8025AAAC 820206C1 */ lb $v0, 0x6c1($s0)
/* 189390 8025AAB0 10400032 */ beqz $v0, .L8025AB7C
/* 189394 8025AAB4 00E0A02D */ daddu $s4, $a3, $zero
/* 189398 8025AAB8 16400017 */ bnez $s2, .L8025AB18
/* 18939C 8025AABC 00000000 */ nop
/* 1893A0 8025AAC0 0C0B7830 */ jal func_802DE0C0
/* 1893A4 8025AAC4 96240088 */ lhu $a0, 0x88($s1)
/* 1893A8 8025AAC8 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 1893AC 8025AACC 0040202D */ daddu $a0, $v0, $zero
/* 1893B0 8025AAD0 A20006CD */ sb $zero, 0x6cd($s0)
/* 1893B4 8025AAD4 8C830000 */ lw $v1, ($a0)
/* 1893B8 8025AAD8 2402FFFF */ addiu $v0, $zero, -1
/* 1893BC 8025AADC 50620024 */ beql $v1, $v0, .L8025AB70
/* 1893C0 8025AAE0 A20006C2 */ sb $zero, 0x6c2($s0)
/* 1893C4 8025AAE4 0080182D */ daddu $v1, $a0, $zero
/* 1893C8 8025AAE8 0040202D */ daddu $a0, $v0, $zero
.L8025AAEC:
/* 1893CC 8025AAEC 920206CD */ lbu $v0, 0x6cd($s0)
/* 1893D0 8025AAF0 24420001 */ addiu $v0, $v0, 1
/* 1893D4 8025AAF4 A20206CD */ sb $v0, 0x6cd($s0)
/* 1893D8 8025AAF8 00021600 */ sll $v0, $v0, 0x18
/* 1893DC 8025AAFC 00021583 */ sra $v0, $v0, 0x16
/* 1893E0 8025AB00 00431021 */ addu $v0, $v0, $v1
/* 1893E4 8025AB04 8C420000 */ lw $v0, ($v0)
/* 1893E8 8025AB08 1444FFF8 */ bne $v0, $a0, .L8025AAEC
/* 1893EC 8025AB0C 00000000 */ nop
/* 1893F0 8025AB10 08096ADC */ j .L8025AB70
/* 1893F4 8025AB14 A20006C2 */ sb $zero, 0x6c2($s0)
.L8025AB18:
/* 1893F8 8025AB18 96240088 */ lhu $a0, 0x88($s1)
/* 1893FC 8025AB1C 0C0B7A90 */ jal func_802DEA40
/* 189400 8025AB20 00000000 */ nop
/* 189404 8025AB24 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 189408 8025AB28 0040202D */ daddu $a0, $v0, $zero
/* 18940C 8025AB2C A20006CD */ sb $zero, 0x6cd($s0)
/* 189410 8025AB30 8C830000 */ lw $v1, ($a0)
/* 189414 8025AB34 2402FFFF */ addiu $v0, $zero, -1
/* 189418 8025AB38 5062000D */ beql $v1, $v0, .L8025AB70
/* 18941C 8025AB3C A20006C2 */ sb $zero, 0x6c2($s0)
/* 189420 8025AB40 0080182D */ daddu $v1, $a0, $zero
/* 189424 8025AB44 0040202D */ daddu $a0, $v0, $zero
.L8025AB48:
/* 189428 8025AB48 920206CD */ lbu $v0, 0x6cd($s0)
/* 18942C 8025AB4C 24420001 */ addiu $v0, $v0, 1
/* 189430 8025AB50 A20206CD */ sb $v0, 0x6cd($s0)
/* 189434 8025AB54 00021600 */ sll $v0, $v0, 0x18
/* 189438 8025AB58 00021583 */ sra $v0, $v0, 0x16
/* 18943C 8025AB5C 00431021 */ addu $v0, $v0, $v1
/* 189440 8025AB60 8C420000 */ lw $v0, ($v0)
/* 189444 8025AB64 1444FFF8 */ bne $v0, $a0, .L8025AB48
/* 189448 8025AB68 00000000 */ nop
/* 18944C 8025AB6C A20006C2 */ sb $zero, 0x6c2($s0)
.L8025AB70:
/* 189450 8025AB70 A60006CA */ sh $zero, 0x6ca($s0)
/* 189454 8025AB74 A20006C2 */ sb $zero, 0x6c2($s0)
/* 189458 8025AB78 A20006C1 */ sb $zero, 0x6c1($s0)
.L8025AB7C:
/* 18945C 8025AB7C 820206CD */ lb $v0, 0x6cd($s0)
/* 189460 8025AB80 18400066 */ blez $v0, .L8025AD1C
/* 189464 8025AB84 0000402D */ daddu $t0, $zero, $zero
/* 189468 8025AB88 3C0B8000 */ lui $t3, 0x8000
/* 18946C 8025AB8C 3C01802A */ lui $at, %hi(D_8029D408)
/* 189470 8025AB90 D428D408 */ ldc1 $f8, %lo(D_8029D408)($at)
/* 189474 8025AB94 3C0141E0 */ lui $at, 0x41e0
/* 189478 8025AB98 44811800 */ mtc1 $at, $f3
/* 18947C 8025AB9C 44801000 */ mtc1 $zero, $f2
/* 189480 8025ABA0 3C01802A */ lui $at, %hi(D_8029D410)
/* 189484 8025ABA4 D426D410 */ ldc1 $f6, %lo(D_8029D410)($at)
/* 189488 8025ABA8 3C01802A */ lui $at, %hi(D_8029D418)
/* 18948C 8025ABAC D424D418 */ ldc1 $f4, %lo(D_8029D418)($at)
.L8025ABB0:
/* 189490 8025ABB0 8E0206D0 */ lw $v0, 0x6d0($s0)
/* 189494 8025ABB4 00081880 */ sll $v1, $t0, 2
/* 189498 8025ABB8 00621821 */ addu $v1, $v1, $v0
/* 18949C 8025ABBC 00081140 */ sll $v0, $t0, 5
/* 1894A0 8025ABC0 8C670000 */ lw $a3, ($v1)
/* 1894A4 8025ABC4 10E0004F */ beqz $a3, .L8025AD04
/* 1894A8 8025ABC8 02025021 */ addu $t2, $s0, $v0
/* 1894AC 8025ABCC 0000482D */ daddu $t1, $zero, $zero
.L8025ABD0:
/* 1894B0 8025ABD0 94E30000 */ lhu $v1, ($a3)
/* 1894B4 8025ABD4 000312C2 */ srl $v0, $v1, 0xb
/* 1894B8 8025ABD8 44820000 */ mtc1 $v0, $f0
/* 1894BC 8025ABDC 00000000 */ nop
/* 1894C0 8025ABE0 46800021 */ cvt.d.w $f0, $f0
/* 1894C4 8025ABE4 46280002 */ mul.d $f0, $f0, $f8
/* 1894C8 8025ABE8 00000000 */ nop
/* 1894CC 8025ABEC 90E40001 */ lbu $a0, 1($a3)
/* 1894D0 8025ABF0 24E70002 */ addiu $a3, $a3, 2
/* 1894D4 8025ABF4 00031182 */ srl $v0, $v1, 6
/* 1894D8 8025ABF8 3042001F */ andi $v0, $v0, 0x1f
/* 1894DC 8025ABFC 00031842 */ srl $v1, $v1, 1
/* 1894E0 8025AC00 3066001F */ andi $a2, $v1, 0x1f
/* 1894E4 8025AC04 4620103E */ c.le.d $f2, $f0
/* 1894E8 8025AC08 00000000 */ nop
/* 1894EC 8025AC0C 45010005 */ bc1t .L8025AC24
/* 1894F0 8025AC10 30840001 */ andi $a0, $a0, 1
/* 1894F4 8025AC14 4620028D */ trunc.w.d $f10, $f0
/* 1894F8 8025AC18 44035000 */ mfc1 $v1, $f10
/* 1894FC 8025AC1C 08096B0F */ j .L8025AC3C
/* 189500 8025AC20 304200FF */ andi $v0, $v0, 0xff
.L8025AC24:
/* 189504 8025AC24 46220001 */ sub.d $f0, $f0, $f2
/* 189508 8025AC28 4620028D */ trunc.w.d $f10, $f0
/* 18950C 8025AC2C 44035000 */ mfc1 $v1, $f10
/* 189510 8025AC30 00000000 */ nop
/* 189514 8025AC34 006B1825 */ or $v1, $v1, $t3
/* 189518 8025AC38 304200FF */ andi $v0, $v0, 0xff
.L8025AC3C:
/* 18951C 8025AC3C 44820000 */ mtc1 $v0, $f0
/* 189520 8025AC40 00000000 */ nop
/* 189524 8025AC44 46800021 */ cvt.d.w $f0, $f0
/* 189528 8025AC48 46260002 */ mul.d $f0, $f0, $f6
/* 18952C 8025AC4C 00000000 */ nop
/* 189530 8025AC50 4620103E */ c.le.d $f2, $f0
/* 189534 8025AC54 00000000 */ nop
/* 189538 8025AC58 45030005 */ bc1tl .L8025AC70
/* 18953C 8025AC5C 46220001 */ sub.d $f0, $f0, $f2
/* 189540 8025AC60 4620028D */ trunc.w.d $f10, $f0
/* 189544 8025AC64 44055000 */ mfc1 $a1, $f10
/* 189548 8025AC68 08096B21 */ j .L8025AC84
/* 18954C 8025AC6C 30C200FF */ andi $v0, $a2, 0xff
.L8025AC70:
/* 189550 8025AC70 4620028D */ trunc.w.d $f10, $f0
/* 189554 8025AC74 44055000 */ mfc1 $a1, $f10
/* 189558 8025AC78 00000000 */ nop
/* 18955C 8025AC7C 00AB2825 */ or $a1, $a1, $t3
/* 189560 8025AC80 30C200FF */ andi $v0, $a2, 0xff
.L8025AC84:
/* 189564 8025AC84 44820000 */ mtc1 $v0, $f0
/* 189568 8025AC88 00000000 */ nop
/* 18956C 8025AC8C 46800021 */ cvt.d.w $f0, $f0
/* 189570 8025AC90 46240002 */ mul.d $f0, $f0, $f4
/* 189574 8025AC94 00000000 */ nop
/* 189578 8025AC98 4620103E */ c.le.d $f2, $f0
/* 18957C 8025AC9C 00000000 */ nop
/* 189580 8025ACA0 45010005 */ bc1t .L8025ACB8
/* 189584 8025ACA4 00A0102D */ daddu $v0, $a1, $zero
/* 189588 8025ACA8 4620028D */ trunc.w.d $f10, $f0
/* 18958C 8025ACAC 44055000 */ mfc1 $a1, $f10
/* 189590 8025ACB0 08096B34 */ j .L8025ACD0
/* 189594 8025ACB4 306300FF */ andi $v1, $v1, 0xff
.L8025ACB8:
/* 189598 8025ACB8 46220001 */ sub.d $f0, $f0, $f2
/* 18959C 8025ACBC 4620028D */ trunc.w.d $f10, $f0
/* 1895A0 8025ACC0 44055000 */ mfc1 $a1, $f10
/* 1895A4 8025ACC4 00000000 */ nop
/* 1895A8 8025ACC8 00AB2825 */ or $a1, $a1, $t3
/* 1895AC 8025ACCC 306300FF */ andi $v1, $v1, 0xff
.L8025ACD0:
/* 1895B0 8025ACD0 00031AC0 */ sll $v1, $v1, 0xb
/* 1895B4 8025ACD4 304200FF */ andi $v0, $v0, 0xff
/* 1895B8 8025ACD8 00021180 */ sll $v0, $v0, 6
/* 1895BC 8025ACDC 00621825 */ or $v1, $v1, $v0
/* 1895C0 8025ACE0 30A200FF */ andi $v0, $a1, 0xff
/* 1895C4 8025ACE4 00021040 */ sll $v0, $v0, 1
/* 1895C8 8025ACE8 00621825 */ or $v1, $v1, $v0
/* 1895CC 8025ACEC 00831825 */ or $v1, $a0, $v1
/* 1895D0 8025ACF0 A5430000 */ sh $v1, ($t2)
/* 1895D4 8025ACF4 25290001 */ addiu $t1, $t1, 1
/* 1895D8 8025ACF8 29220010 */ slti $v0, $t1, 0x10
/* 1895DC 8025ACFC 1440FFB4 */ bnez $v0, .L8025ABD0
/* 1895E0 8025AD00 254A0002 */ addiu $t2, $t2, 2
.L8025AD04:
/* 1895E4 8025AD04 820206CD */ lb $v0, 0x6cd($s0)
/* 1895E8 8025AD08 25080001 */ addiu $t0, $t0, 1
/* 1895EC 8025AD0C 0102102A */ slt $v0, $t0, $v0
/* 1895F0 8025AD10 1440FFA7 */ bnez $v0, .L8025ABB0
/* 1895F4 8025AD14 00000000 */ nop
/* 1895F8 8025AD18 820206CD */ lb $v0, 0x6cd($s0)
.L8025AD1C:
/* 1895FC 8025AD1C 1840000A */ blez $v0, .L8025AD48
/* 189600 8025AD20 0000402D */ daddu $t0, $zero, $zero
/* 189604 8025AD24 0200202D */ daddu $a0, $s0, $zero
/* 189608 8025AD28 0200182D */ daddu $v1, $s0, $zero
.L8025AD2C:
/* 18960C 8025AD2C AC6406D4 */ sw $a0, 0x6d4($v1)
/* 189610 8025AD30 24840020 */ addiu $a0, $a0, 0x20
/* 189614 8025AD34 820206CD */ lb $v0, 0x6cd($s0)
/* 189618 8025AD38 25080001 */ addiu $t0, $t0, 1
/* 18961C 8025AD3C 0102102A */ slt $v0, $t0, $v0
/* 189620 8025AD40 1440FFFA */ bnez $v0, .L8025AD2C
/* 189624 8025AD44 24630004 */ addiu $v1, $v1, 4
.L8025AD48:
/* 189628 8025AD48 16400006 */ bnez $s2, .L8025AD64
/* 18962C 8025AD4C 0220202D */ daddu $a0, $s1, $zero
/* 189630 8025AD50 0260282D */ daddu $a1, $s3, $zero
/* 189634 8025AD54 0C096657 */ jal func_8025995C
/* 189638 8025AD58 0280302D */ daddu $a2, $s4, $zero
/* 18963C 8025AD5C 08096B5C */ j .L8025AD70
/* 189640 8025AD60 00000000 */ nop
.L8025AD64:
/* 189644 8025AD64 0260282D */ daddu $a1, $s3, $zero
/* 189648 8025AD68 0C0965B0 */ jal func_802596C0
/* 18964C 8025AD6C 0280302D */ daddu $a2, $s4, $zero
.L8025AD70:
/* 189650 8025AD70 8FBF0024 */ lw $ra, 0x24($sp)
/* 189654 8025AD74 8FB40020 */ lw $s4, 0x20($sp)
/* 189658 8025AD78 8FB3001C */ lw $s3, 0x1c($sp)
/* 18965C 8025AD7C 8FB20018 */ lw $s2, 0x18($sp)
/* 189660 8025AD80 8FB10014 */ lw $s1, 0x14($sp)
/* 189664 8025AD84 8FB00010 */ lw $s0, 0x10($sp)
/* 189668 8025AD88 03E00008 */ jr $ra
/* 18966C 8025AD8C 27BD0028 */ addiu $sp, $sp, 0x28