diff --git a/src/lib/lib_461c0.c b/src/lib/lib_461c0.c deleted file mode 100644 index 7188d338b..000000000 --- a/src/lib/lib_461c0.c +++ /dev/null @@ -1,332 +0,0 @@ -#include -#include "constants.h" -#include "bss.h" -#include "lib/lib_461c0.h" -#include "data.h" -#include "types.h" - -GLOBAL_ASM( -glabel func000461c0 -/* 461c0: 310c0007 */ andi $t4,$t0,0x7 -/* 461c4: 240b0008 */ addiu $t3,$zero,0x8 -/* 461c8: 908d0000 */ lbu $t5,0x0($a0) -/* 461cc: 908a0001 */ lbu $t2,0x1($a0) -/* 461d0: 000d4a00 */ sll $t1,$t5,0x8 -/* 461d4: 012a4825 */ or $t1,$t1,$t2 -/* 461d8: 016c5822 */ sub $t3,$t3,$t4 -/* 461dc: 01694806 */ srlv $t1,$t1,$t3 -/* 461e0: 312900ff */ andi $t1,$t1,0xff -/* 461e4: 00065a00 */ sll $t3,$a2,0x8 -/* 461e8: 01695820 */ add $t3,$t3,$t1 -/* 461ec: 3c0a8006 */ lui $t2,%hi(var8005f6fc) -/* 461f0: 254af6fc */ addiu $t2,$t2,%lo(var8005f6fc) -/* 461f4: 8d4a0000 */ lw $t2,0x0($t2) -/* 461f8: 016a5020 */ add $t2,$t3,$t2 -/* 461fc: 914a0000 */ lbu $t2,0x0($t2) -/* 46200: 1140000d */ beqz $t2,.L00046238 -/* 46204: 00000000 */ nop -/* 46208: 010a4020 */ add $t0,$t0,$t2 -/* 4620c: 018a6020 */ add $t4,$t4,$t2 -/* 46210: 000c60c2 */ srl $t4,$t4,0x3 -/* 46214: 008c2020 */ add $a0,$a0,$t4 -/* 46218: 3c0a8006 */ lui $t2,%hi(var8005f6f8) -/* 4621c: 254af6f8 */ addiu $t2,$t2,%lo(var8005f6f8) -/* 46220: 8d4a0000 */ lw $t2,0x0($t2) -/* 46224: 016a5020 */ add $t2,$t3,$t2 -/* 46228: 914a0000 */ lbu $t2,0x0($t2) -/* 4622c: 000a4902 */ srl $t1,$t2,0x4 -/* 46230: 03e00008 */ jr $ra -/* 46234: 3142000f */ andi $v0,$t2,0xf -.L00046238: -/* 46238: 00107820 */ add $t7,$zero,$s0 -/* 4623c: 31090007 */ andi $t1,$t0,0x7 -/* 46240: 240a0080 */ addiu $t2,$zero,0x80 -/* 46244: 012a5006 */ srlv $t2,$t2,$t1 -/* 46248: 240effff */ addiu $t6,$zero,-1 -.L0004624c: -/* 4624c: 01aa6024 */ and $t4,$t5,$t2 -/* 46250: 51800002 */ beqzl $t4,.L0004625c -/* 46254: 91ec0000 */ lbu $t4,0x0($t7) -/* 46258: 91ec0001 */ lbu $t4,0x1($t7) -.L0004625c: -/* 4625c: 000a5042 */ srl $t2,$t2,0x1 -/* 46260: 000c6080 */ sll $t4,$t4,0x2 -/* 46264: 15400004 */ bnez $t2,.L00046278 -/* 46268: 01ec7820 */ add $t7,$t7,$t4 -/* 4626c: 240a0080 */ addiu $t2,$zero,0x80 -/* 46270: 20840001 */ addi $a0,$a0,0x1 -/* 46274: 908d0000 */ lbu $t5,0x0($a0) -.L00046278: -/* 46278: 81e90002 */ lb $t1,0x2($t7) -/* 4627c: 112efff3 */ beq $t1,$t6,.L0004624c -/* 46280: 21080001 */ addi $t0,$t0,0x1 -/* 46284: 00091020 */ add $v0,$zero,$t1 -/* 46288: 03e00008 */ jr $ra -/* 4628c: 81e90003 */ lb $t1,0x3($t7) -); - -GLOBAL_ASM( -glabel func00046290 -/* 46290: 88890000 */ lwl $t1,0x0($a0) -/* 46294: 98890003 */ lwr $t1,0x3($a0) -/* 46298: 310a0007 */ andi $t2,$t0,0x7 -/* 4629c: 01515020 */ add $t2,$t2,$s1 -/* 462a0: 000a50c2 */ srl $t2,$t2,0x3 -/* 462a4: 008a2020 */ add $a0,$a0,$t2 -/* 462a8: 310a0007 */ andi $t2,$t0,0x7 -/* 462ac: 01494804 */ sllv $t1,$t1,$t2 -/* 462b0: 240a0020 */ addiu $t2,$zero,0x20 -/* 462b4: 01515022 */ sub $t2,$t2,$s1 -/* 462b8: 01491006 */ srlv $v0,$t1,$t2 -/* 462bc: 03e00008 */ jr $ra -/* 462c0: 01114020 */ add $t0,$t0,$s1 -); - -GLOBAL_ASM( -glabel func000462c4 -/* 462c4: 8ca80000 */ lw $t0,0x0($a1) -/* 462c8: 000848c2 */ srl $t1,$t0,0x3 -/* 462cc: 00892020 */ add $a0,$a0,$t1 -/* 462d0: 88890000 */ lwl $t1,0x0($a0) -/* 462d4: 98890003 */ lwr $t1,0x3($a0) -/* 462d8: 310a0007 */ andi $t2,$t0,0x7 -/* 462dc: 01494804 */ sllv $t1,$t1,$t2 -/* 462e0: 240a0020 */ addiu $t2,$zero,0x20 -/* 462e4: 01465022 */ sub $t2,$t2,$a2 -/* 462e8: 01491006 */ srlv $v0,$t1,$t2 -/* 462ec: 01064020 */ add $t0,$t0,$a2 -/* 462f0: 03e00008 */ jr $ra -/* 462f4: aca80000 */ sw $t0,0x0($a1) -); - -GLOBAL_ASM( -glabel func000462f8 -/* 462f8: 27bdffd0 */ addiu $sp,$sp,-48 -/* 462fc: afbf0000 */ sw $ra,0x0($sp) -/* 46300: afb00004 */ sw $s0,0x4($sp) -/* 46304: afb10008 */ sw $s1,0x8($sp) -/* 46308: afb2000c */ sw $s2,0xc($sp) -/* 4630c: afb30010 */ sw $s3,0x10($sp) -/* 46310: afb40014 */ sw $s4,0x14($sp) -/* 46314: afb50018 */ sw $s5,0x18($sp) -/* 46318: afb6001c */ sw $s6,0x1c($sp) -/* 4631c: afb70020 */ sw $s7,0x20($sp) -/* 46320: afbe0024 */ sw $s8,0x24($sp) -/* 46324: afbc0028 */ sw $gp,0x28($sp) -/* 46328: afbf002c */ sw $ra,0x2c($sp) -/* 4632c: 8ca80000 */ lw $t0,0x0($a1) -/* 46330: 00068080 */ sll $s0,$a2,0x2 -/* 46334: 3c09800a */ lui $t1,%hi(var8009c650) -/* 46338: 2529c650 */ addiu $t1,$t1,%lo(var8009c650) -/* 4633c: 02098020 */ add $s0,$s0,$t1 -/* 46340: 8e100000 */ lw $s0,0x0($s0) -/* 46344: 8fb10040 */ lw $s1,0x40($sp) -/* 46348: 8fb20044 */ lw $s2,0x44($sp) -/* 4634c: 8fb30048 */ lw $s3,0x48($sp) -/* 46350: 8fb4004c */ lw $s4,0x4c($sp) -/* 46354: 8e730000 */ lw $s3,0x0($s3) -/* 46358: 8e940000 */ lw $s4,0x0($s4) -/* 4635c: 000848c2 */ srl $t1,$t0,0x3 -/* 46360: 00892020 */ add $a0,$a0,$t1 -/* 46364: 02474822 */ sub $t1,$s2,$a3 -/* 46368: 1920003b */ blez $t1,.L00046458 -/* 4636c: 00000000 */ nop -.L00046370: -/* 46370: 0c011870 */ jal func000461c0 -/* 46374: 00000000 */ nop -/* 46378: 12200007 */ beqz $s1,.L00046398 -/* 4637c: 0009b020 */ add $s6,$zero,$t1 -/* 46380: 240a000f */ addiu $t2,$zero,0xf -/* 46384: 144a0004 */ bne $v0,$t2,.L00046398 -/* 46388: 00000000 */ nop -/* 4638c: 0c0118a4 */ jal func00046290 -/* 46390: 00000000 */ nop -/* 46394: 2042000f */ addi $v0,$v0,0xf -.L00046398: -/* 46398: 5040000f */ beqzl $v0,.L000463d8 -/* 4639c: a2800000 */ sb $zero,0x0($s4) -/* 463a0: 80890000 */ lb $t1,0x0($a0) -/* 463a4: 240b0007 */ addiu $t3,$zero,0x7 -/* 463a8: 310a0007 */ andi $t2,$t0,0x7 -/* 463ac: 214c0001 */ addi $t4,$t2,0x1 -/* 463b0: 000c60c2 */ srl $t4,$t4,0x3 -/* 463b4: 008c2020 */ add $a0,$a0,$t4 -/* 463b8: 016a5022 */ sub $t2,$t3,$t2 -/* 463bc: 01494806 */ srlv $t1,$t1,$t2 -/* 463c0: 31290001 */ andi $t1,$t1,0x1 -/* 463c4: 21080001 */ addi $t0,$t0,0x1 -/* 463c8: 240a0001 */ addiu $t2,$zero,0x1 -/* 463cc: 51200002 */ beqzl $t1,.L000463d8 -/* 463d0: a2800000 */ sb $zero,0x0($s4) -/* 463d4: a28a0000 */ sb $t2,0x0($s4) -.L000463d8: -/* 463d8: 12200008 */ beqz $s1,.L000463fc -/* 463dc: 0002b820 */ add $s7,$zero,$v0 -/* 463e0: 240a000f */ addiu $t2,$zero,0xf -/* 463e4: 16ca0005 */ bne $s6,$t2,.L000463fc -/* 463e8: 00000000 */ nop -/* 463ec: 0c0118a4 */ jal func00046290 -/* 463f0: 00000000 */ nop -/* 463f4: 2056000f */ addi $s6,$v0,0xf -/* 463f8: 00171020 */ add $v0,$zero,$s7 -.L000463fc: -/* 463fc: a6620000 */ sh $v0,0x0($s3) -/* 46400: a6760002 */ sh $s6,0x2($s3) -/* 46404: 22730004 */ addi $s3,$s3,0x4 -/* 46408: 52c0000f */ beqzl $s6,.L00046448 -/* 4640c: a2800001 */ sb $zero,0x1($s4) -/* 46410: 80890000 */ lb $t1,0x0($a0) -/* 46414: 240b0007 */ addiu $t3,$zero,0x7 -/* 46418: 310a0007 */ andi $t2,$t0,0x7 -/* 4641c: 214c0001 */ addi $t4,$t2,0x1 -/* 46420: 000c60c2 */ srl $t4,$t4,0x3 -/* 46424: 008c2020 */ add $a0,$a0,$t4 -/* 46428: 016a5022 */ sub $t2,$t3,$t2 -/* 4642c: 01494806 */ srlv $t1,$t1,$t2 -/* 46430: 31290001 */ andi $t1,$t1,0x1 -/* 46434: 21080001 */ addi $t0,$t0,0x1 -/* 46438: 240a0001 */ addiu $t2,$zero,0x1 -/* 4643c: 51200002 */ beqzl $t1,.L00046448 -/* 46440: a2800001 */ sb $zero,0x1($s4) -/* 46444: a28a0001 */ sb $t2,0x1($s4) -.L00046448: -/* 46448: 20e70002 */ addi $a3,$a3,0x2 -/* 4644c: 02474822 */ sub $t1,$s2,$a3 -/* 46450: 1d20ffc7 */ bgtz $t1,.L00046370 -/* 46454: 22940002 */ addi $s4,$s4,0x2 -.L00046458: -/* 46458: aca80000 */ sw $t0,0x0($a1) -/* 4645c: 8fa80048 */ lw $t0,0x48($sp) -/* 46460: 8fa9004c */ lw $t1,0x4c($sp) -/* 46464: ad130000 */ sw $s3,0x0($t0) -/* 46468: ad340000 */ sw $s4,0x0($t1) -/* 4646c: 8fbf0000 */ lw $ra,0x0($sp) -/* 46470: 8fb00004 */ lw $s0,0x4($sp) -/* 46474: 8fb10008 */ lw $s1,0x8($sp) -/* 46478: 8fb2000c */ lw $s2,0xc($sp) -/* 4647c: 8fb30010 */ lw $s3,0x10($sp) -/* 46480: 8fb40014 */ lw $s4,0x14($sp) -/* 46484: 8fb50018 */ lw $s5,0x18($sp) -/* 46488: 8fb6001c */ lw $s6,0x1c($sp) -/* 4648c: 8fb70020 */ lw $s7,0x20($sp) -/* 46490: 8fbe0024 */ lw $s8,0x24($sp) -/* 46494: 8fbc0028 */ lw $gp,0x28($sp) -/* 46498: 8fbf002c */ lw $ra,0x2c($sp) -/* 4649c: 27bd0030 */ addiu $sp,$sp,0x30 -/* 464a0: 03e00008 */ jr $ra -/* 464a4: 00071020 */ add $v0,$zero,$a3 -); - -GLOBAL_ASM( -glabel func000464a8 -/* 464a8: 27bdffd0 */ addiu $sp,$sp,-48 -/* 464ac: afbf0000 */ sw $ra,0x0($sp) -/* 464b0: afb00004 */ sw $s0,0x4($sp) -/* 464b4: afb10008 */ sw $s1,0x8($sp) -/* 464b8: afb2000c */ sw $s2,0xc($sp) -/* 464bc: afb30010 */ sw $s3,0x10($sp) -/* 464c0: afb40014 */ sw $s4,0x14($sp) -/* 464c4: afb50018 */ sw $s5,0x18($sp) -/* 464c8: afb6001c */ sw $s6,0x1c($sp) -/* 464cc: afb70020 */ sw $s7,0x20($sp) -/* 464d0: afbe0024 */ sw $s8,0x24($sp) -/* 464d4: afbc0028 */ sw $gp,0x28($sp) -/* 464d8: afbf002c */ sw $ra,0x2c($sp) -/* 464dc: 8ca80000 */ lw $t0,0x0($a1) -/* 464e0: 00068080 */ sll $s0,$a2,0x2 -/* 464e4: 3c09800a */ lui $t1,%hi(var8009c650) -/* 464e8: 2529c650 */ addiu $t1,$t1,%lo(var8009c650) -/* 464ec: 02098020 */ add $s0,$s0,$t1 -/* 464f0: 8e100000 */ lw $s0,0x0($s0) -/* 464f4: 8fb20040 */ lw $s2,0x40($sp) -/* 464f8: 8fb30044 */ lw $s3,0x44($sp) -/* 464fc: 8fb40048 */ lw $s4,0x48($sp) -/* 46500: 8e730000 */ lw $s3,0x0($s3) -/* 46504: 8e940000 */ lw $s4,0x0($s4) -/* 46508: 000848c2 */ srl $t1,$t0,0x3 -/* 4650c: 00892020 */ add $a0,$a0,$t1 -/* 46510: 02484822 */ sub $t1,$s2,$t0 -/* 46514: 19200037 */ blez $t1,.L000465f4 -/* 46518: 00000000 */ nop -/* 4651c: 20e9fdc0 */ addi $t1,$a3,-576 -/* 46520: 05210034 */ bgez $t1,.L000465f4 -/* 46524: 00000000 */ nop -.L00046528: -/* 46528: 0c011870 */ jal func000461c0 -/* 4652c: 00000000 */ nop -/* 46530: 000258c2 */ srl $t3,$v0,0x3 -/* 46534: 316b0001 */ andi $t3,$t3,0x1 -/* 46538: 00026082 */ srl $t4,$v0,0x2 -/* 4653c: 318c0001 */ andi $t4,$t4,0x1 -/* 46540: 00026842 */ srl $t5,$v0,0x1 -/* 46544: 31ad0001 */ andi $t5,$t5,0x1 -/* 46548: 304e0001 */ andi $t6,$v0,0x1 -/* 4654c: a66b0000 */ sh $t3,0x0($s3) -/* 46550: a66c0002 */ sh $t4,0x2($s3) -/* 46554: a66d0004 */ sh $t5,0x4($s3) -/* 46558: a66e0006 */ sh $t6,0x6($s3) -/* 4655c: 0c0118a4 */ jal func00046290 -/* 46560: 24110004 */ addiu $s1,$zero,0x4 -/* 46564: 24110003 */ addiu $s1,$zero,0x3 -/* 46568: a2820000 */ sb $v0,0x0($s4) -/* 4656c: 11600003 */ beqz $t3,.L0004657c -/* 46570: 02224806 */ srlv $t1,$v0,$s1 -/* 46574: 01695824 */ and $t3,$t3,$t1 -/* 46578: 2231ffff */ addi $s1,$s1,-1 -.L0004657c: -/* 4657c: 11800004 */ beqz $t4,.L00046590 -/* 46580: a28b0000 */ sb $t3,0x0($s4) -/* 46584: 02224806 */ srlv $t1,$v0,$s1 -/* 46588: 01896024 */ and $t4,$t4,$t1 -/* 4658c: 2231ffff */ addi $s1,$s1,-1 -.L00046590: -/* 46590: 11a00004 */ beqz $t5,.L000465a4 -/* 46594: a28c0001 */ sb $t4,0x1($s4) -/* 46598: 02224806 */ srlv $t1,$v0,$s1 -/* 4659c: 01a96824 */ and $t5,$t5,$t1 -/* 465a0: 2231ffff */ addi $s1,$s1,-1 -.L000465a4: -/* 465a4: 11c00004 */ beqz $t6,.L000465b8 -/* 465a8: a28d0002 */ sb $t5,0x2($s4) -/* 465ac: 02224806 */ srlv $t1,$v0,$s1 -/* 465b0: 01c97024 */ and $t6,$t6,$t1 -/* 465b4: 2231ffff */ addi $s1,$s1,-1 -.L000465b8: -/* 465b8: a28e0003 */ sb $t6,0x3($s4) -/* 465bc: 22310001 */ addi $s1,$s1,0x1 -/* 465c0: 31090007 */ andi $t1,$t0,0x7 -/* 465c4: 01314822 */ sub $t1,$t1,$s1 -/* 465c8: 05210002 */ bgez $t1,.L000465d4 -/* 465cc: 01114022 */ sub $t0,$t0,$s1 -/* 465d0: 2084ffff */ addi $a0,$a0,-1 -.L000465d4: -/* 465d4: 22730008 */ addi $s3,$s3,0x8 -/* 465d8: 22940004 */ addi $s4,$s4,0x4 -/* 465dc: 20e70004 */ addi $a3,$a3,0x4 -/* 465e0: 20e9fdc0 */ addi $t1,$a3,-576 -/* 465e4: 05210003 */ bgez $t1,.L000465f4 -/* 465e8: 02484822 */ sub $t1,$s2,$t0 -/* 465ec: 1d20ffce */ bgtz $t1,.L00046528 -/* 465f0: 00000000 */ nop -.L000465f4: -/* 465f4: aca80000 */ sw $t0,0x0($a1) -/* 465f8: 8fa80044 */ lw $t0,0x44($sp) -/* 465fc: 8fa90048 */ lw $t1,0x48($sp) -/* 46600: ad130000 */ sw $s3,0x0($t0) -/* 46604: ad340000 */ sw $s4,0x0($t1) -/* 46608: 8fbf0000 */ lw $ra,0x0($sp) -/* 4660c: 8fb00004 */ lw $s0,0x4($sp) -/* 46610: 8fb10008 */ lw $s1,0x8($sp) -/* 46614: 8fb2000c */ lw $s2,0xc($sp) -/* 46618: 8fb30010 */ lw $s3,0x10($sp) -/* 4661c: 8fb40014 */ lw $s4,0x14($sp) -/* 46620: 8fb50018 */ lw $s5,0x18($sp) -/* 46624: 8fb6001c */ lw $s6,0x1c($sp) -/* 46628: 8fb70020 */ lw $s7,0x20($sp) -/* 4662c: 8fbe0024 */ lw $s8,0x24($sp) -/* 46630: 8fbc0028 */ lw $gp,0x28($sp) -/* 46634: 8fbf002c */ lw $ra,0x2c($sp) -/* 46638: 27bd0030 */ addiu $sp,$sp,0x30 -/* 4663c: 03e00008 */ jr $ra -/* 46640: 00071020 */ add $v0,$zero,$a3 -); diff --git a/src/lib/lib_461c0.s b/src/lib/lib_461c0.s new file mode 100644 index 000000000..0449c1b57 --- /dev/null +++ b/src/lib/lib_461c0.s @@ -0,0 +1,321 @@ +#include "macros.inc" +.set noat +.set noreorder + +.text + +glabel func000461c0 + andi $t4, $t0, 0x7 + addiu $t3, $zero, 0x8 + lbu $t5, 0x0($a0) + lbu $t2, 0x1($a0) + sll $t1, $t5, 0x8 + or $t1, $t1, $t2 + sub $t3, $t3, $t4 + srlv $t1, $t1, $t3 + andi $t1, $t1, 0xff + sll $t3, $a2, 0x8 + add $t3, $t3, $t1 + lui $t2, %hi(var8005f6fc) + addiu $t2, $t2, %lo(var8005f6fc) + lw $t2, 0x0($t2) + add $t2, $t3, $t2 + lbu $t2, 0x0($t2) + beqz $t2, .L00046238 + nop + add $t0, $t0, $t2 + add $t4, $t4, $t2 + srl $t4, $t4, 0x3 + add $a0, $a0, $t4 + lui $t2, %hi(var8005f6f8) + addiu $t2, $t2, %lo(var8005f6f8) + lw $t2, 0x0($t2) + add $t2, $t3, $t2 + lbu $t2, 0x0($t2) + srl $t1, $t2, 0x4 + jr $ra + andi $v0, $t2, 0xf +.L00046238: + add $t7, $zero, $s0 + andi $t1, $t0, 0x7 + addiu $t2, $zero, 0x80 + srlv $t2, $t2, $t1 + addiu $t6, $zero, -1 +.L0004624c: + and $t4, $t5, $t2 + beqzl $t4, .L0004625c + lbu $t4, 0x0($t7) + lbu $t4, 0x1($t7) +.L0004625c: + srl $t2, $t2, 0x1 + sll $t4, $t4, 0x2 + bnez $t2, .L00046278 + add $t7, $t7, $t4 + addiu $t2, $zero, 0x80 + addi $a0, $a0, 0x1 + lbu $t5, 0x0($a0) +.L00046278: + lb $t1, 0x2($t7) + beq $t1, $t6, .L0004624c + addi $t0, $t0, 0x1 + add $v0, $zero, $t1 + jr $ra + lb $t1, 0x3($t7) + +glabel func00046290 + lwl $t1, 0x0($a0) + lwr $t1, 0x3($a0) + andi $t2, $t0, 0x7 + add $t2, $t2, $s1 + srl $t2, $t2, 0x3 + add $a0, $a0, $t2 + andi $t2, $t0, 0x7 + sllv $t1, $t1, $t2 + addiu $t2, $zero, 0x20 + sub $t2, $t2, $s1 + srlv $v0, $t1, $t2 + jr $ra + add $t0, $t0, $s1 + +glabel func000462c4 + lw $t0, 0x0($a1) + srl $t1, $t0, 0x3 + add $a0, $a0, $t1 + lwl $t1, 0x0($a0) + lwr $t1, 0x3($a0) + andi $t2, $t0, 0x7 + sllv $t1, $t1, $t2 + addiu $t2, $zero, 0x20 + sub $t2, $t2, $a2 + srlv $v0, $t1, $t2 + add $t0, $t0, $a2 + jr $ra + sw $t0, 0x0($a1) + +glabel func000462f8 + addiu $sp, $sp, -48 + sw $ra, 0x0($sp) + sw $s0, 0x4($sp) + sw $s1, 0x8($sp) + sw $s2, 0xc($sp) + sw $s3, 0x10($sp) + sw $s4, 0x14($sp) + sw $s5, 0x18($sp) + sw $s6, 0x1c($sp) + sw $s7, 0x20($sp) + sw $s8, 0x24($sp) + sw $gp, 0x28($sp) + sw $ra, 0x2c($sp) + lw $t0, 0x0($a1) + sll $s0, $a2, 0x2 + lui $t1, %hi(var8009c650) + addiu $t1, $t1, %lo(var8009c650) + add $s0, $s0, $t1 + lw $s0, 0x0($s0) + lw $s1, 0x40($sp) + lw $s2, 0x44($sp) + lw $s3, 0x48($sp) + lw $s4, 0x4c($sp) + lw $s3, 0x0($s3) + lw $s4, 0x0($s4) + srl $t1, $t0, 0x3 + add $a0, $a0, $t1 + sub $t1, $s2, $a3 + blez $t1, .L00046458 + nop +.L00046370: + jal func000461c0 + nop + beqz $s1, .L00046398 + add $s6, $zero, $t1 + addiu $t2, $zero, 0xf + bne $v0, $t2, .L00046398 + nop + jal func00046290 + nop + addi $v0, $v0, 0xf +.L00046398: + beqzl $v0, .L000463d8 + sb $zero, 0x0($s4) + lb $t1, 0x0($a0) + addiu $t3, $zero, 0x7 + andi $t2, $t0, 0x7 + addi $t4, $t2, 0x1 + srl $t4, $t4, 0x3 + add $a0, $a0, $t4 + sub $t2, $t3, $t2 + srlv $t1, $t1, $t2 + andi $t1, $t1, 0x1 + addi $t0, $t0, 0x1 + addiu $t2, $zero, 0x1 + beqzl $t1, .L000463d8 + sb $zero, 0x0($s4) + sb $t2, 0x0($s4) +.L000463d8: + beqz $s1, .L000463fc + add $s7, $zero, $v0 + addiu $t2, $zero, 0xf + bne $s6, $t2, .L000463fc + nop + jal func00046290 + nop + addi $s6, $v0, 0xf + add $v0, $zero, $s7 +.L000463fc: + sh $v0, 0x0($s3) + sh $s6, 0x2($s3) + addi $s3, $s3, 0x4 + beqzl $s6, .L00046448 + sb $zero, 0x1($s4) + lb $t1, 0x0($a0) + addiu $t3, $zero, 0x7 + andi $t2, $t0, 0x7 + addi $t4, $t2, 0x1 + srl $t4, $t4, 0x3 + add $a0, $a0, $t4 + sub $t2, $t3, $t2 + srlv $t1, $t1, $t2 + andi $t1, $t1, 0x1 + addi $t0, $t0, 0x1 + addiu $t2, $zero, 0x1 + beqzl $t1, .L00046448 + sb $zero, 0x1($s4) + sb $t2, 0x1($s4) +.L00046448: + addi $a3, $a3, 0x2 + sub $t1, $s2, $a3 + bgtz $t1, .L00046370 + addi $s4, $s4, 0x2 +.L00046458: + sw $t0, 0x0($a1) + lw $t0, 0x48($sp) + lw $t1, 0x4c($sp) + sw $s3, 0x0($t0) + sw $s4, 0x0($t1) + lw $ra, 0x0($sp) + lw $s0, 0x4($sp) + lw $s1, 0x8($sp) + lw $s2, 0xc($sp) + lw $s3, 0x10($sp) + lw $s4, 0x14($sp) + lw $s5, 0x18($sp) + lw $s6, 0x1c($sp) + lw $s7, 0x20($sp) + lw $s8, 0x24($sp) + lw $gp, 0x28($sp) + lw $ra, 0x2c($sp) + addiu $sp, $sp, 0x30 + jr $ra + add $v0, $zero, $a3 + +glabel func000464a8 + addiu $sp, $sp, -48 + sw $ra, 0x0($sp) + sw $s0, 0x4($sp) + sw $s1, 0x8($sp) + sw $s2, 0xc($sp) + sw $s3, 0x10($sp) + sw $s4, 0x14($sp) + sw $s5, 0x18($sp) + sw $s6, 0x1c($sp) + sw $s7, 0x20($sp) + sw $s8, 0x24($sp) + sw $gp, 0x28($sp) + sw $ra, 0x2c($sp) + lw $t0, 0x0($a1) + sll $s0, $a2, 0x2 + lui $t1, %hi(var8009c650) + addiu $t1, $t1, %lo(var8009c650) + add $s0, $s0, $t1 + lw $s0, 0x0($s0) + lw $s2, 0x40($sp) + lw $s3, 0x44($sp) + lw $s4, 0x48($sp) + lw $s3, 0x0($s3) + lw $s4, 0x0($s4) + srl $t1, $t0, 0x3 + add $a0, $a0, $t1 + sub $t1, $s2, $t0 + blez $t1, .L000465f4 + nop + addi $t1, $a3, -576 + bgez $t1, .L000465f4 + nop +.L00046528: + jal func000461c0 + nop + srl $t3, $v0, 0x3 + andi $t3, $t3, 0x1 + srl $t4, $v0, 0x2 + andi $t4, $t4, 0x1 + srl $t5, $v0, 0x1 + andi $t5, $t5, 0x1 + andi $t6, $v0, 0x1 + sh $t3, 0x0($s3) + sh $t4, 0x2($s3) + sh $t5, 0x4($s3) + sh $t6, 0x6($s3) + jal func00046290 + addiu $s1, $zero, 0x4 + addiu $s1, $zero, 0x3 + sb $v0, 0x0($s4) + beqz $t3, .L0004657c + srlv $t1, $v0, $s1 + and $t3, $t3, $t1 + addi $s1, $s1, -1 +.L0004657c: + beqz $t4, .L00046590 + sb $t3, 0x0($s4) + srlv $t1, $v0, $s1 + and $t4, $t4, $t1 + addi $s1, $s1, -1 +.L00046590: + beqz $t5, .L000465a4 + sb $t4, 0x1($s4) + srlv $t1, $v0, $s1 + and $t5, $t5, $t1 + addi $s1, $s1, -1 +.L000465a4: + beqz $t6, .L000465b8 + sb $t5, 0x2($s4) + srlv $t1, $v0, $s1 + and $t6, $t6, $t1 + addi $s1, $s1, -1 +.L000465b8: + sb $t6, 0x3($s4) + addi $s1, $s1, 0x1 + andi $t1, $t0, 0x7 + sub $t1, $t1, $s1 + bgez $t1, .L000465d4 + sub $t0, $t0, $s1 + addi $a0, $a0, -1 +.L000465d4: + addi $s3, $s3, 0x8 + addi $s4, $s4, 0x4 + addi $a3, $a3, 0x4 + addi $t1, $a3, -576 + bgez $t1, .L000465f4 + sub $t1, $s2, $t0 + bgtz $t1, .L00046528 + nop +.L000465f4: + sw $t0, 0x0($a1) + lw $t0, 0x44($sp) + lw $t1, 0x48($sp) + sw $s3, 0x0($t0) + sw $s4, 0x0($t1) + lw $ra, 0x0($sp) + lw $s0, 0x4($sp) + lw $s1, 0x8($sp) + lw $s2, 0xc($sp) + lw $s3, 0x10($sp) + lw $s4, 0x14($sp) + lw $s5, 0x18($sp) + lw $s6, 0x1c($sp) + lw $s7, 0x20($sp) + lw $s8, 0x24($sp) + lw $gp, 0x28($sp) + lw $ra, 0x2c($sp) + addiu $sp, $sp, 0x30 + jr $ra + add $v0, $zero, $a3