papermario/ver/jp/asm/nonmatchings/3FE70/func_80064FF0.s

334 lines
17 KiB
ArmAsm
Raw Normal View History

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80064FF0
/* 403F0 80064FF0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 403F4 80064FF4 AFB00010 */ sw $s0, 0x10($sp)
/* 403F8 80064FF8 00808021 */ addu $s0, $a0, $zero
/* 403FC 80064FFC 00A04021 */ addu $t0, $a1, $zero
/* 40400 80065000 00E04821 */ addu $t1, $a3, $zero
/* 40404 80065004 00C03821 */ addu $a3, $a2, $zero
/* 40408 80065008 24C6FFDB */ addiu $a2, $a2, -0x25
/* 4040C 8006500C 00063600 */ sll $a2, $a2, 0x18
/* 40410 80065010 00063603 */ sra $a2, $a2, 0x18
/* 40414 80065014 2CC20054 */ sltiu $v0, $a2, 0x54
/* 40418 80065018 AFBF0014 */ sw $ra, 0x14($sp)
/* 4041C 8006501C AE000020 */ sw $zero, 0x20($s0)
/* 40420 80065020 AE00001C */ sw $zero, 0x1c($s0)
/* 40424 80065024 AE000018 */ sw $zero, 0x18($s0)
/* 40428 80065028 AE000014 */ sw $zero, 0x14($s0)
/* 4042C 8006502C AE000010 */ sw $zero, 0x10($s0)
/* 40430 80065030 1040011A */ beqz $v0, .L8006549C
/* 40434 80065034 AE00000C */ sw $zero, 0xc($s0)
/* 40438 80065038 00061080 */ sll $v0, $a2, 2
/* 4043C 8006503C 3C01800A */ lui $at, %hi(D_80099BF8)
/* 40440 80065040 00220821 */ addu $at, $at, $v0
/* 40444 80065044 8C229BF8 */ lw $v0, %lo(D_80099BF8)($at)
/* 40448 80065048 00400008 */ jr $v0
/* 4044C 8006504C 00000000 */ nop
/* 40450 80065050 8E04000C */ lw $a0, 0xc($s0)
/* 40454 80065054 24820001 */ addiu $v0, $a0, 1
/* 40458 80065058 AE02000C */ sw $v0, 0xc($s0)
/* 4045C 8006505C 8D020000 */ lw $v0, ($t0)
/* 40460 80065060 2403FFFC */ addiu $v1, $zero, -4
/* 40464 80065064 24420003 */ addiu $v0, $v0, 3
/* 40468 80065068 00431024 */ and $v0, $v0, $v1
/* 4046C 8006506C 24430004 */ addiu $v1, $v0, 4
/* 40470 80065070 AD030000 */ sw $v1, ($t0)
/* 40474 80065074 8C420000 */ lw $v0, ($v0)
/* 40478 80065078 01242021 */ addu $a0, $t1, $a0
/* 4047C 8006507C 0801952C */ j .L800654B0
/* 40480 80065080 A0820000 */ sb $v0, ($a0)
/* 40484 80065084 82030034 */ lb $v1, 0x34($s0)
/* 40488 80065088 2402006C */ addiu $v0, $zero, 0x6c
/* 4048C 8006508C 1062000B */ beq $v1, $v0, .L800650BC
/* 40490 80065090 2402004C */ addiu $v0, $zero, 0x4c
/* 40494 80065094 14620009 */ bne $v1, $v0, .L800650BC
/* 40498 80065098 2403FFF8 */ addiu $v1, $zero, -8
/* 4049C 8006509C 8D020000 */ lw $v0, ($t0)
/* 404A0 800650A0 24420007 */ addiu $v0, $v0, 7
/* 404A4 800650A4 00431024 */ and $v0, $v0, $v1
/* 404A8 800650A8 24430008 */ addiu $v1, $v0, 8
/* 404AC 800650AC AD030000 */ sw $v1, ($t0)
/* 404B0 800650B0 8C430004 */ lw $v1, 4($v0)
/* 404B4 800650B4 08019438 */ j .L800650E0
/* 404B8 800650B8 8C420000 */ lw $v0, ($v0)
.L800650BC:
/* 404BC 800650BC 8D020000 */ lw $v0, ($t0)
/* 404C0 800650C0 2403FFFC */ addiu $v1, $zero, -4
/* 404C4 800650C4 24420003 */ addiu $v0, $v0, 3
/* 404C8 800650C8 00431024 */ and $v0, $v0, $v1
/* 404CC 800650CC 24430004 */ addiu $v1, $v0, 4
/* 404D0 800650D0 AD030000 */ sw $v1, ($t0)
/* 404D4 800650D4 8C420000 */ lw $v0, ($v0)
/* 404D8 800650D8 00401821 */ addu $v1, $v0, $zero
/* 404DC 800650DC 000217C3 */ sra $v0, $v0, 0x1f
.L800650E0:
/* 404E0 800650E0 AE020000 */ sw $v0, ($s0)
/* 404E4 800650E4 AE030004 */ sw $v1, 4($s0)
/* 404E8 800650E8 82030034 */ lb $v1, 0x34($s0)
/* 404EC 800650EC 24020068 */ addiu $v0, $zero, 0x68
/* 404F0 800650F0 14620008 */ bne $v1, $v0, .L80065114
/* 404F4 800650F4 00000000 */ nop
/* 404F8 800650F8 8E020000 */ lw $v0, ($s0)
/* 404FC 800650FC 8E030004 */ lw $v1, 4($s0)
/* 40500 80065100 00031400 */ sll $v0, $v1, 0x10
/* 40504 80065104 00022C03 */ sra $a1, $v0, 0x10
/* 40508 80065108 000227C3 */ sra $a0, $v0, 0x1f
/* 4050C 8006510C AE040000 */ sw $a0, ($s0)
/* 40510 80065110 AE050004 */ sw $a1, 4($s0)
.L80065114:
/* 40514 80065114 8E020000 */ lw $v0, ($s0)
/* 40518 80065118 04410007 */ bgez $v0, .L80065138
/* 4051C 8006511C 00000000 */ nop
/* 40520 80065120 8E02000C */ lw $v0, 0xc($s0)
/* 40524 80065124 24430001 */ addiu $v1, $v0, 1
/* 40528 80065128 01221021 */ addu $v0, $t1, $v0
/* 4052C 8006512C AE03000C */ sw $v1, 0xc($s0)
/* 40530 80065130 0801945F */ j .L8006517C
/* 40534 80065134 2403002D */ addiu $v1, $zero, 0x2d
.L80065138:
/* 40538 80065138 8E030030 */ lw $v1, 0x30($s0)
/* 4053C 8006513C 30620002 */ andi $v0, $v1, 2
/* 40540 80065140 10400007 */ beqz $v0, .L80065160
/* 40544 80065144 30620001 */ andi $v0, $v1, 1
/* 40548 80065148 8E02000C */ lw $v0, 0xc($s0)
/* 4054C 8006514C 24430001 */ addiu $v1, $v0, 1
/* 40550 80065150 01221021 */ addu $v0, $t1, $v0
/* 40554 80065154 AE03000C */ sw $v1, 0xc($s0)
/* 40558 80065158 0801945F */ j .L8006517C
/* 4055C 8006515C 2403002B */ addiu $v1, $zero, 0x2b
.L80065160:
/* 40560 80065160 10400046 */ beqz $v0, .L8006527C
/* 40564 80065164 02002021 */ addu $a0, $s0, $zero
/* 40568 80065168 8E02000C */ lw $v0, 0xc($s0)
/* 4056C 8006516C 24430001 */ addiu $v1, $v0, 1
/* 40570 80065170 01221021 */ addu $v0, $t1, $v0
/* 40574 80065174 AE03000C */ sw $v1, 0xc($s0)
/* 40578 80065178 24030020 */ addiu $v1, $zero, 0x20
.L8006517C:
/* 4057C 8006517C 0801949E */ j .L80065278
/* 40580 80065180 A0430000 */ sb $v1, ($v0)
/* 40584 80065184 82030034 */ lb $v1, 0x34($s0)
/* 40588 80065188 2402006C */ addiu $v0, $zero, 0x6c
/* 4058C 8006518C 1062000B */ beq $v1, $v0, .L800651BC
/* 40590 80065190 2402004C */ addiu $v0, $zero, 0x4c
/* 40594 80065194 14620009 */ bne $v1, $v0, .L800651BC
/* 40598 80065198 2403FFF8 */ addiu $v1, $zero, -8
/* 4059C 8006519C 8D020000 */ lw $v0, ($t0)
/* 405A0 800651A0 24420007 */ addiu $v0, $v0, 7
/* 405A4 800651A4 00431024 */ and $v0, $v0, $v1
/* 405A8 800651A8 24430008 */ addiu $v1, $v0, 8
/* 405AC 800651AC AD030000 */ sw $v1, ($t0)
/* 405B0 800651B0 8C430004 */ lw $v1, 4($v0)
/* 405B4 800651B4 08019478 */ j .L800651E0
/* 405B8 800651B8 8C420000 */ lw $v0, ($v0)
.L800651BC:
/* 405BC 800651BC 8D020000 */ lw $v0, ($t0)
/* 405C0 800651C0 2403FFFC */ addiu $v1, $zero, -4
/* 405C4 800651C4 24420003 */ addiu $v0, $v0, 3
/* 405C8 800651C8 00431024 */ and $v0, $v0, $v1
/* 405CC 800651CC 24430004 */ addiu $v1, $v0, 4
/* 405D0 800651D0 AD030000 */ sw $v1, ($t0)
/* 405D4 800651D4 8C420000 */ lw $v0, ($v0)
/* 405D8 800651D8 00401821 */ addu $v1, $v0, $zero
/* 405DC 800651DC 000217C3 */ sra $v0, $v0, 0x1f
.L800651E0:
/* 405E0 800651E0 AE020000 */ sw $v0, ($s0)
/* 405E4 800651E4 AE030004 */ sw $v1, 4($s0)
/* 405E8 800651E8 82030034 */ lb $v1, 0x34($s0)
/* 405EC 800651EC 24020068 */ addiu $v0, $zero, 0x68
/* 405F0 800651F0 14620004 */ bne $v1, $v0, .L80065204
/* 405F4 800651F4 00001021 */ addu $v0, $zero, $zero
/* 405F8 800651F8 96030006 */ lhu $v1, 6($s0)
/* 405FC 800651FC 08019484 */ j .L80065210
/* 40600 80065200 00000000 */ nop
.L80065204:
/* 40604 80065204 14600004 */ bnez $v1, .L80065218
/* 40608 80065208 00000000 */ nop
/* 4060C 8006520C 8E030004 */ lw $v1, 4($s0)
.L80065210:
/* 40610 80065210 AE020000 */ sw $v0, ($s0)
/* 40614 80065214 AE030004 */ sw $v1, 4($s0)
.L80065218:
/* 40618 80065218 8E020030 */ lw $v0, 0x30($s0)
/* 4061C 8006521C 30420008 */ andi $v0, $v0, 8
/* 40620 80065220 10400016 */ beqz $v0, .L8006527C
/* 40624 80065224 02002021 */ addu $a0, $s0, $zero
/* 40628 80065228 8E02000C */ lw $v0, 0xc($s0)
/* 4062C 8006522C 24430001 */ addiu $v1, $v0, 1
/* 40630 80065230 01221021 */ addu $v0, $t1, $v0
/* 40634 80065234 AE03000C */ sw $v1, 0xc($s0)
/* 40638 80065238 24030030 */ addiu $v1, $zero, 0x30
/* 4063C 8006523C A0430000 */ sb $v1, ($v0)
/* 40640 80065240 00071600 */ sll $v0, $a3, 0x18
/* 40644 80065244 00021603 */ sra $v0, $v0, 0x18
/* 40648 80065248 38430078 */ xori $v1, $v0, 0x78
/* 4064C 8006524C 2C630001 */ sltiu $v1, $v1, 1
/* 40650 80065250 38420058 */ xori $v0, $v0, 0x58
/* 40654 80065254 2C420001 */ sltiu $v0, $v0, 1
/* 40658 80065258 00621825 */ or $v1, $v1, $v0
/* 4065C 8006525C 10600007 */ beqz $v1, .L8006527C
/* 40660 80065260 00000000 */ nop
/* 40664 80065264 8E02000C */ lw $v0, 0xc($s0)
/* 40668 80065268 24430001 */ addiu $v1, $v0, 1
/* 4066C 8006526C 01221021 */ addu $v0, $t1, $v0
/* 40670 80065270 AE03000C */ sw $v1, 0xc($s0)
/* 40674 80065274 A0470000 */ sb $a3, ($v0)
.L80065278:
/* 40678 80065278 02002021 */ addu $a0, $s0, $zero
.L8006527C:
/* 4067C 8006527C 8C82000C */ lw $v0, 0xc($a0)
/* 40680 80065280 00072E00 */ sll $a1, $a3, 0x18
/* 40684 80065284 00052E03 */ sra $a1, $a1, 0x18
/* 40688 80065288 01221021 */ addu $v0, $t1, $v0
/* 4068C 8006528C 0C01AE58 */ jal func_8006B960
/* 40690 80065290 AC820008 */ sw $v0, 8($a0)
/* 40694 80065294 0801952C */ j .L800654B0
/* 40698 80065298 00000000 */ nop
/* 4069C 8006529C 8D020000 */ lw $v0, ($t0)
/* 406A0 800652A0 2403FFF8 */ addiu $v1, $zero, -8
/* 406A4 800652A4 24420007 */ addiu $v0, $v0, 7
/* 406A8 800652A8 00431024 */ and $v0, $v0, $v1
/* 406AC 800652AC 24430008 */ addiu $v1, $v0, 8
/* 406B0 800652B0 AD030000 */ sw $v1, ($t0)
/* 406B4 800652B4 D4400000 */ ldc1 $f0, ($v0)
/* 406B8 800652B8 F6000000 */ sdc1 $f0, ($s0)
/* 406BC 800652BC 96020000 */ lhu $v0, ($s0)
/* 406C0 800652C0 30428000 */ andi $v0, $v0, 0x8000
/* 406C4 800652C4 10400007 */ beqz $v0, .L800652E4
/* 406C8 800652C8 00000000 */ nop
/* 406CC 800652CC 8E02000C */ lw $v0, 0xc($s0)
/* 406D0 800652D0 24430001 */ addiu $v1, $v0, 1
/* 406D4 800652D4 01221021 */ addu $v0, $t1, $v0
/* 406D8 800652D8 AE03000C */ sw $v1, 0xc($s0)
/* 406DC 800652DC 080194CA */ j .L80065328
/* 406E0 800652E0 2403002D */ addiu $v1, $zero, 0x2d
.L800652E4:
/* 406E4 800652E4 8E030030 */ lw $v1, 0x30($s0)
/* 406E8 800652E8 30620002 */ andi $v0, $v1, 2
/* 406EC 800652EC 10400007 */ beqz $v0, .L8006530C
/* 406F0 800652F0 30620001 */ andi $v0, $v1, 1
/* 406F4 800652F4 8E02000C */ lw $v0, 0xc($s0)
/* 406F8 800652F8 24430001 */ addiu $v1, $v0, 1
/* 406FC 800652FC 01221021 */ addu $v0, $t1, $v0
/* 40700 80065300 AE03000C */ sw $v1, 0xc($s0)
/* 40704 80065304 080194CA */ j .L80065328
/* 40708 80065308 2403002B */ addiu $v1, $zero, 0x2b
.L8006530C:
/* 4070C 8006530C 10400008 */ beqz $v0, .L80065330
/* 40710 80065310 02002021 */ addu $a0, $s0, $zero
/* 40714 80065314 8E02000C */ lw $v0, 0xc($s0)
/* 40718 80065318 24430001 */ addiu $v1, $v0, 1
/* 4071C 8006531C 01221021 */ addu $v0, $t1, $v0
/* 40720 80065320 AE03000C */ sw $v1, 0xc($s0)
/* 40724 80065324 24030020 */ addiu $v1, $zero, 0x20
.L80065328:
/* 40728 80065328 A0430000 */ sb $v1, ($v0)
/* 4072C 8006532C 02002021 */ addu $a0, $s0, $zero
.L80065330:
/* 40730 80065330 8C82000C */ lw $v0, 0xc($a0)
/* 40734 80065334 00072E00 */ sll $a1, $a3, 0x18
/* 40738 80065338 00052E03 */ sra $a1, $a1, 0x18
/* 4073C 8006533C 01221021 */ addu $v0, $t1, $v0
/* 40740 80065340 0C01AEEC */ jal func_8006BBB0
/* 40744 80065344 AC820008 */ sw $v0, 8($a0)
/* 40748 80065348 0801952C */ j .L800654B0
/* 4074C 8006534C 00000000 */ nop
/* 40750 80065350 82030034 */ lb $v1, 0x34($s0)
/* 40754 80065354 24020068 */ addiu $v0, $zero, 0x68
/* 40758 80065358 1462000B */ bne $v1, $v0, .L80065388
/* 4075C 8006535C 2402006C */ addiu $v0, $zero, 0x6c
/* 40760 80065360 8D020000 */ lw $v0, ($t0)
/* 40764 80065364 2403FFFC */ addiu $v1, $zero, -4
/* 40768 80065368 24420003 */ addiu $v0, $v0, 3
/* 4076C 8006536C 00431024 */ and $v0, $v0, $v1
/* 40770 80065370 24430004 */ addiu $v1, $v0, 4
/* 40774 80065374 AD030000 */ sw $v1, ($t0)
/* 40778 80065378 8C430000 */ lw $v1, ($v0)
/* 4077C 8006537C 8E02002C */ lw $v0, 0x2c($s0)
/* 40780 80065380 0801952C */ j .L800654B0
/* 40784 80065384 A4620000 */ sh $v0, ($v1)
.L80065388:
/* 40788 80065388 1062000F */ beq $v1, $v0, .L800653C8
/* 4078C 8006538C 2402004C */ addiu $v0, $zero, 0x4c
/* 40790 80065390 1462000D */ bne $v1, $v0, .L800653C8
/* 40794 80065394 2402FFFC */ addiu $v0, $zero, -4
/* 40798 80065398 8D040000 */ lw $a0, ($t0)
/* 4079C 8006539C 24840003 */ addiu $a0, $a0, 3
/* 407A0 800653A0 00822024 */ and $a0, $a0, $v0
/* 407A4 800653A4 24820004 */ addiu $v0, $a0, 4
/* 407A8 800653A8 AD020000 */ sw $v0, ($t0)
/* 407AC 800653AC 8E02002C */ lw $v0, 0x2c($s0)
/* 407B0 800653B0 8C840000 */ lw $a0, ($a0)
/* 407B4 800653B4 00401821 */ addu $v1, $v0, $zero
/* 407B8 800653B8 00001021 */ addu $v0, $zero, $zero
/* 407BC 800653BC AC820000 */ sw $v0, ($a0)
/* 407C0 800653C0 0801952C */ j .L800654B0
/* 407C4 800653C4 AC830004 */ sw $v1, 4($a0)
.L800653C8:
/* 407C8 800653C8 8D020000 */ lw $v0, ($t0)
/* 407CC 800653CC 2403FFFC */ addiu $v1, $zero, -4
/* 407D0 800653D0 24420003 */ addiu $v0, $v0, 3
/* 407D4 800653D4 00431024 */ and $v0, $v0, $v1
/* 407D8 800653D8 24430004 */ addiu $v1, $v0, 4
/* 407DC 800653DC AD030000 */ sw $v1, ($t0)
/* 407E0 800653E0 8C430000 */ lw $v1, ($v0)
/* 407E4 800653E4 8E02002C */ lw $v0, 0x2c($s0)
/* 407E8 800653E8 0801952C */ j .L800654B0
/* 407EC 800653EC AC620000 */ sw $v0, ($v1)
/* 407F0 800653F0 8D040000 */ lw $a0, ($t0)
/* 407F4 800653F4 2405FFFC */ addiu $a1, $zero, -4
/* 407F8 800653F8 24840003 */ addiu $a0, $a0, 3
/* 407FC 800653FC 00852024 */ and $a0, $a0, $a1
/* 40800 80065400 24850004 */ addiu $a1, $a0, 4
/* 40804 80065404 AD050000 */ sw $a1, ($t0)
/* 40808 80065408 8C870000 */ lw $a3, ($a0)
/* 4080C 8006540C 02002021 */ addu $a0, $s0, $zero
/* 40810 80065410 24050078 */ addiu $a1, $zero, 0x78
/* 40814 80065414 8C86000C */ lw $a2, 0xc($a0)
/* 40818 80065418 00E01821 */ addu $v1, $a3, $zero
/* 4081C 8006541C 000717C3 */ sra $v0, $a3, 0x1f
/* 40820 80065420 01263021 */ addu $a2, $t1, $a2
/* 40824 80065424 AC820000 */ sw $v0, ($a0)
/* 40828 80065428 AC830004 */ sw $v1, 4($a0)
/* 4082C 8006542C 0C01AE58 */ jal func_8006B960
/* 40830 80065430 AC860008 */ sw $a2, 8($a0)
/* 40834 80065434 0801952C */ j .L800654B0
/* 40838 80065438 00000000 */ nop
/* 4083C 8006543C 8D020000 */ lw $v0, ($t0)
/* 40840 80065440 2403FFFC */ addiu $v1, $zero, -4
/* 40844 80065444 24420003 */ addiu $v0, $v0, 3
/* 40848 80065448 00431024 */ and $v0, $v0, $v1
/* 4084C 8006544C 24430004 */ addiu $v1, $v0, 4
/* 40850 80065450 AD030000 */ sw $v1, ($t0)
/* 40854 80065454 8C440000 */ lw $a0, ($v0)
/* 40858 80065458 0C019288 */ jal func_80064A20
/* 4085C 8006545C AE040008 */ sw $a0, 8($s0)
/* 40860 80065460 8E030024 */ lw $v1, 0x24($s0)
/* 40864 80065464 04600012 */ bltz $v1, .L800654B0
/* 40868 80065468 AE020014 */ sw $v0, 0x14($s0)
/* 4086C 8006546C 0062102A */ slt $v0, $v1, $v0
/* 40870 80065470 5440000F */ bnel $v0, $zero, .L800654B0
/* 40874 80065474 AE030014 */ sw $v1, 0x14($s0)
/* 40878 80065478 0801952C */ j .L800654B0
/* 4087C 8006547C 00000000 */ nop
/* 40880 80065480 8E02000C */ lw $v0, 0xc($s0)
/* 40884 80065484 24430001 */ addiu $v1, $v0, 1
/* 40888 80065488 01221021 */ addu $v0, $t1, $v0
/* 4088C 8006548C AE03000C */ sw $v1, 0xc($s0)
/* 40890 80065490 24030025 */ addiu $v1, $zero, 0x25
/* 40894 80065494 0801952C */ j .L800654B0
/* 40898 80065498 A0430000 */ sb $v1, ($v0)
.L8006549C:
/* 4089C 8006549C 8E02000C */ lw $v0, 0xc($s0)
/* 408A0 800654A0 24430001 */ addiu $v1, $v0, 1
/* 408A4 800654A4 01221021 */ addu $v0, $t1, $v0
/* 408A8 800654A8 AE03000C */ sw $v1, 0xc($s0)
/* 408AC 800654AC A0470000 */ sb $a3, ($v0)
.L800654B0:
/* 408B0 800654B0 8FBF0014 */ lw $ra, 0x14($sp)
/* 408B4 800654B4 8FB00010 */ lw $s0, 0x10($sp)
/* 408B8 800654B8 03E00008 */ jr $ra
/* 408BC 800654BC 27BD0018 */ addiu $sp, $sp, 0x18