mirror of
https://github.com/pmret/papermario.git
synced 2024-11-18 17:02:46 +01:00
403 lines
19 KiB
ArmAsm
403 lines
19 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
|
|
glabel _Genld
|
|
/* 0474B4 8006C0B4 27BDFFD0 */ addiu $sp, $sp, -0x30
|
|
/* 0474B8 8006C0B8 AFB20018 */ sw $s2, 0x18($sp)
|
|
/* 0474BC 8006C0BC 00C09021 */ addu $s2, $a2, $zero
|
|
/* 0474C0 8006C0C0 8FA60040 */ lw $a2, 0x40($sp)
|
|
/* 0474C4 8006C0C4 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* 0474C8 8006C0C8 00808821 */ addu $s1, $a0, $zero
|
|
/* 0474CC 8006C0CC AFB3001C */ sw $s3, 0x1c($sp)
|
|
/* 0474D0 8006C0D0 00A09821 */ addu $s3, $a1, $zero
|
|
/* 0474D4 8006C0D4 AFB50024 */ sw $s5, 0x24($sp)
|
|
/* 0474D8 8006C0D8 00E0A821 */ addu $s5, $a3, $zero
|
|
/* 0474DC 8006C0DC 00073C00 */ sll $a3, $a3, 0x10
|
|
/* 0474E0 8006C0E0 AFBF0028 */ sw $ra, 0x28($sp)
|
|
/* 0474E4 8006C0E4 AFB40020 */ sw $s4, 0x20($sp)
|
|
/* 0474E8 8006C0E8 AFB00010 */ sw $s0, 0x10($sp)
|
|
/* 0474EC 8006C0EC 1CE00004 */ bgtz $a3, .L8006C100
|
|
/* 0474F0 8006C0F0 00C0A021 */ addu $s4, $a2, $zero
|
|
/* 0474F4 8006C0F4 24150001 */ addiu $s5, $zero, 1
|
|
/* 0474F8 8006C0F8 3C12800A */ lui $s2, 0x800a
|
|
/* 0474FC 8006C0FC 26529E30 */ addiu $s2, $s2, -0x61d0
|
|
.L8006C100:
|
|
/* 047500 8006C100 00051600 */ sll $v0, $a1, 0x18
|
|
/* 047504 8006C104 00022603 */ sra $a0, $v0, 0x18
|
|
/* 047508 8006C108 24050066 */ addiu $a1, $zero, 0x66
|
|
/* 04750C 8006C10C 1085000F */ beq $a0, $a1, .L8006C14C
|
|
/* 047510 8006C110 38830067 */ xori $v1, $a0, 0x67
|
|
/* 047514 8006C114 2C630001 */ sltiu $v1, $v1, 1
|
|
/* 047518 8006C118 38820047 */ xori $v0, $a0, 0x47
|
|
/* 04751C 8006C11C 2C420001 */ sltiu $v0, $v0, 1
|
|
/* 047520 8006C120 00621825 */ or $v1, $v1, $v0
|
|
/* 047524 8006C124 106000B4 */ beqz $v1, .L8006C3F8
|
|
/* 047528 8006C128 00061400 */ sll $v0, $a2, 0x10
|
|
/* 04752C 8006C12C 00021C03 */ sra $v1, $v0, 0x10
|
|
/* 047530 8006C130 2862FFFC */ slti $v0, $v1, -4
|
|
/* 047534 8006C134 1440009B */ bnez $v0, .L8006C3A4
|
|
/* 047538 8006C138 00131600 */ sll $v0, $s3, 0x18
|
|
/* 04753C 8006C13C 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 047540 8006C140 0062102A */ slt $v0, $v1, $v0
|
|
/* 047544 8006C144 10400097 */ beqz $v0, .L8006C3A4
|
|
/* 047548 8006C148 00131600 */ sll $v0, $s3, 0x18
|
|
.L8006C14C:
|
|
/* 04754C 8006C14C 10850011 */ beq $a0, $a1, .L8006C194
|
|
/* 047550 8006C150 24D40001 */ addiu $s4, $a2, 1
|
|
/* 047554 8006C154 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 047558 8006C158 30420008 */ andi $v0, $v0, 8
|
|
/* 04755C 8006C15C 14400006 */ bnez $v0, .L8006C178
|
|
/* 047560 8006C160 00151C00 */ sll $v1, $s5, 0x10
|
|
/* 047564 8006C164 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 047568 8006C168 00031C03 */ sra $v1, $v1, 0x10
|
|
/* 04756C 8006C16C 0062102A */ slt $v0, $v1, $v0
|
|
/* 047570 8006C170 54400001 */ bnel $v0, $zero, .L8006C178
|
|
/* 047574 8006C174 AE230024 */ sw $v1, 0x24($s1)
|
|
.L8006C178:
|
|
/* 047578 8006C178 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 04757C 8006C17C 00141400 */ sll $v0, $s4, 0x10
|
|
/* 047580 8006C180 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047584 8006C184 00621823 */ subu $v1, $v1, $v0
|
|
/* 047588 8006C188 04610002 */ bgez $v1, .L8006C194
|
|
/* 04758C 8006C18C AE230024 */ sw $v1, 0x24($s1)
|
|
/* 047590 8006C190 AE200024 */ sw $zero, 0x24($s1)
|
|
.L8006C194:
|
|
/* 047594 8006C194 00141400 */ sll $v0, $s4, 0x10
|
|
/* 047598 8006C198 00029C03 */ sra $s3, $v0, 0x10
|
|
/* 04759C 8006C19C 1E600036 */ bgtz $s3, .L8006C278
|
|
/* 0475A0 8006C1A0 00151400 */ sll $v0, $s5, 0x10
|
|
/* 0475A4 8006C1A4 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 0475A8 8006C1A8 8E230008 */ lw $v1, 8($s1)
|
|
/* 0475AC 8006C1AC 24820001 */ addiu $v0, $a0, 1
|
|
/* 0475B0 8006C1B0 00641821 */ addu $v1, $v1, $a0
|
|
/* 0475B4 8006C1B4 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 0475B8 8006C1B8 24020030 */ addiu $v0, $zero, 0x30
|
|
/* 0475BC 8006C1BC A0620000 */ sb $v0, ($v1)
|
|
/* 0475C0 8006C1C0 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 0475C4 8006C1C4 1C400005 */ bgtz $v0, .L8006C1DC
|
|
/* 0475C8 8006C1C8 00000000 */ nop
|
|
/* 0475CC 8006C1CC 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 0475D0 8006C1D0 30420008 */ andi $v0, $v0, 8
|
|
/* 0475D4 8006C1D4 10400009 */ beqz $v0, .L8006C1FC
|
|
/* 0475D8 8006C1D8 00141400 */ sll $v0, $s4, 0x10
|
|
.L8006C1DC:
|
|
/* 0475DC 8006C1DC 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 0475E0 8006C1E0 8E230008 */ lw $v1, 8($s1)
|
|
/* 0475E4 8006C1E4 24820001 */ addiu $v0, $a0, 1
|
|
/* 0475E8 8006C1E8 00641821 */ addu $v1, $v1, $a0
|
|
/* 0475EC 8006C1EC AE220014 */ sw $v0, 0x14($s1)
|
|
/* 0475F0 8006C1F0 2402002E */ addiu $v0, $zero, 0x2e
|
|
/* 0475F4 8006C1F4 A0620000 */ sb $v0, ($v1)
|
|
/* 0475F8 8006C1F8 00141400 */ sll $v0, $s4, 0x10
|
|
.L8006C1FC:
|
|
/* 0475FC 8006C1FC 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 047600 8006C200 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047604 8006C204 00021023 */ negu $v0, $v0
|
|
/* 047608 8006C208 0062102A */ slt $v0, $v1, $v0
|
|
/* 04760C 8006C20C 54400001 */ bnel $v0, $zero, .L8006C214
|
|
/* 047610 8006C210 0003A023 */ negu $s4, $v1
|
|
.L8006C214:
|
|
/* 047614 8006C214 00141400 */ sll $v0, $s4, 0x10
|
|
/* 047618 8006C218 8E240024 */ lw $a0, 0x24($s1)
|
|
/* 04761C 8006C21C 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047620 8006C220 00021823 */ negu $v1, $v0
|
|
/* 047624 8006C224 AE230018 */ sw $v1, 0x18($s1)
|
|
/* 047628 8006C228 00822021 */ addu $a0, $a0, $v0
|
|
/* 04762C 8006C22C 00151400 */ sll $v0, $s5, 0x10
|
|
/* 047630 8006C230 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047634 8006C234 0082102A */ slt $v0, $a0, $v0
|
|
/* 047638 8006C238 10400002 */ beqz $v0, .L8006C244
|
|
/* 04763C 8006C23C AE240024 */ sw $a0, 0x24($s1)
|
|
/* 047640 8006C240 0080A821 */ addu $s5, $a0, $zero
|
|
.L8006C244:
|
|
/* 047644 8006C244 02402821 */ addu $a1, $s2, $zero
|
|
/* 047648 8006C248 8E220008 */ lw $v0, 8($s1)
|
|
/* 04764C 8006C24C 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 047650 8006C250 00158400 */ sll $s0, $s5, 0x10
|
|
/* 047654 8006C254 00108403 */ sra $s0, $s0, 0x10
|
|
/* 047658 8006C258 02003021 */ addu $a2, $s0, $zero
|
|
/* 04765C 8006C25C AE30001C */ sw $s0, 0x1c($s1)
|
|
/* 047660 8006C260 0C01929D */ jal memcpy
|
|
/* 047664 8006C264 00442021 */ addu $a0, $v0, $a0
|
|
/* 047668 8006C268 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 04766C 8006C26C 00501023 */ subu $v0, $v0, $s0
|
|
/* 047670 8006C270 0801B17B */ j .L8006C5EC
|
|
/* 047674 8006C274 AE220020 */ sw $v0, 0x20($s1)
|
|
|
|
.L8006C278:
|
|
/* 047678 8006C278 00028403 */ sra $s0, $v0, 0x10
|
|
/* 04767C 8006C27C 0213102A */ slt $v0, $s0, $s3
|
|
/* 047680 8006C280 1040001C */ beqz $v0, .L8006C2F4
|
|
/* 047684 8006C284 02402821 */ addu $a1, $s2, $zero
|
|
/* 047688 8006C288 8E220008 */ lw $v0, 8($s1)
|
|
/* 04768C 8006C28C 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 047690 8006C290 02003021 */ addu $a2, $s0, $zero
|
|
/* 047694 8006C294 0C01929D */ jal memcpy
|
|
/* 047698 8006C298 00442021 */ addu $a0, $v0, $a0
|
|
/* 04769C 8006C29C 8E230014 */ lw $v1, 0x14($s1)
|
|
/* 0476A0 8006C2A0 8E240024 */ lw $a0, 0x24($s1)
|
|
/* 0476A4 8006C2A4 02701023 */ subu $v0, $s3, $s0
|
|
/* 0476A8 8006C2A8 AE220018 */ sw $v0, 0x18($s1)
|
|
/* 0476AC 8006C2AC 00701821 */ addu $v1, $v1, $s0
|
|
/* 0476B0 8006C2B0 1C800005 */ bgtz $a0, .L8006C2C8
|
|
/* 0476B4 8006C2B4 AE230014 */ sw $v1, 0x14($s1)
|
|
/* 0476B8 8006C2B8 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 0476BC 8006C2BC 30420008 */ andi $v0, $v0, 8
|
|
/* 0476C0 8006C2C0 10400009 */ beqz $v0, .L8006C2E8
|
|
/* 0476C4 8006C2C4 00000000 */ nop
|
|
.L8006C2C8:
|
|
/* 0476C8 8006C2C8 8E220008 */ lw $v0, 8($s1)
|
|
/* 0476CC 8006C2CC 8E230014 */ lw $v1, 0x14($s1)
|
|
/* 0476D0 8006C2D0 00431021 */ addu $v0, $v0, $v1
|
|
/* 0476D4 8006C2D4 2403002E */ addiu $v1, $zero, 0x2e
|
|
/* 0476D8 8006C2D8 A0430000 */ sb $v1, ($v0)
|
|
/* 0476DC 8006C2DC 8E22001C */ lw $v0, 0x1c($s1)
|
|
/* 0476E0 8006C2E0 24420001 */ addiu $v0, $v0, 1
|
|
/* 0476E4 8006C2E4 AE22001C */ sw $v0, 0x1c($s1)
|
|
.L8006C2E8:
|
|
/* 0476E8 8006C2E8 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 0476EC 8006C2EC 0801B17B */ j .L8006C5EC
|
|
/* 0476F0 8006C2F0 AE220020 */ sw $v0, 0x20($s1)
|
|
|
|
.L8006C2F4:
|
|
/* 0476F4 8006C2F4 8E220008 */ lw $v0, 8($s1)
|
|
/* 0476F8 8006C2F8 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 0476FC 8006C2FC 02603021 */ addu $a2, $s3, $zero
|
|
/* 047700 8006C300 0C01929D */ jal memcpy
|
|
/* 047704 8006C304 00442021 */ addu $a0, $v0, $a0
|
|
/* 047708 8006C308 8E220014 */ lw $v0, 0x14($s1)
|
|
/* 04770C 8006C30C 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 047710 8006C310 02B4A823 */ subu $s5, $s5, $s4
|
|
/* 047714 8006C314 00533021 */ addu $a2, $v0, $s3
|
|
/* 047718 8006C318 1C600005 */ bgtz $v1, .L8006C330
|
|
/* 04771C 8006C31C AE260014 */ sw $a2, 0x14($s1)
|
|
/* 047720 8006C320 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 047724 8006C324 30420008 */ andi $v0, $v0, 8
|
|
/* 047728 8006C328 10400007 */ beqz $v0, .L8006C348
|
|
/* 04772C 8006C32C 00000000 */ nop
|
|
.L8006C330:
|
|
/* 047730 8006C330 8E220008 */ lw $v0, 8($s1)
|
|
/* 047734 8006C334 24C30001 */ addiu $v1, $a2, 1
|
|
/* 047738 8006C338 AE230014 */ sw $v1, 0x14($s1)
|
|
/* 04773C 8006C33C 2403002E */ addiu $v1, $zero, 0x2e
|
|
/* 047740 8006C340 00461021 */ addu $v0, $v0, $a2
|
|
/* 047744 8006C344 A0430000 */ sb $v1, ($v0)
|
|
.L8006C348:
|
|
/* 047748 8006C348 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 04774C 8006C34C 00151400 */ sll $v0, $s5, 0x10
|
|
/* 047750 8006C350 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047754 8006C354 0062102A */ slt $v0, $v1, $v0
|
|
/* 047758 8006C358 54400001 */ bnel $v0, $zero, .L8006C360
|
|
/* 04775C 8006C35C 0060A821 */ addu $s5, $v1, $zero
|
|
.L8006C360:
|
|
/* 047760 8006C360 00142C00 */ sll $a1, $s4, 0x10
|
|
/* 047764 8006C364 00052C03 */ sra $a1, $a1, 0x10
|
|
/* 047768 8006C368 02452821 */ addu $a1, $s2, $a1
|
|
/* 04776C 8006C36C 8E220008 */ lw $v0, 8($s1)
|
|
/* 047770 8006C370 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 047774 8006C374 00158400 */ sll $s0, $s5, 0x10
|
|
/* 047778 8006C378 00108403 */ sra $s0, $s0, 0x10
|
|
/* 04777C 8006C37C 02003021 */ addu $a2, $s0, $zero
|
|
/* 047780 8006C380 0C01929D */ jal memcpy
|
|
/* 047784 8006C384 00442021 */ addu $a0, $v0, $a0
|
|
/* 047788 8006C388 8E220014 */ lw $v0, 0x14($s1)
|
|
/* 04778C 8006C38C 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 047790 8006C390 00501021 */ addu $v0, $v0, $s0
|
|
/* 047794 8006C394 00701823 */ subu $v1, $v1, $s0
|
|
/* 047798 8006C398 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 04779C 8006C39C 0801B17B */ j .L8006C5EC
|
|
/* 0477A0 8006C3A0 AE230018 */ sw $v1, 0x18($s1)
|
|
|
|
.L8006C3A4:
|
|
/* 0477A4 8006C3A4 00021603 */ sra $v0, $v0, 0x18
|
|
/* 0477A8 8006C3A8 38430067 */ xori $v1, $v0, 0x67
|
|
/* 0477AC 8006C3AC 2C640001 */ sltiu $a0, $v1, 1
|
|
/* 0477B0 8006C3B0 38420047 */ xori $v0, $v0, 0x47
|
|
/* 0477B4 8006C3B4 2C420001 */ sltiu $v0, $v0, 1
|
|
/* 0477B8 8006C3B8 00821025 */ or $v0, $a0, $v0
|
|
/* 0477BC 8006C3BC 1040000E */ beqz $v0, .L8006C3F8
|
|
/* 0477C0 8006C3C0 00151C00 */ sll $v1, $s5, 0x10
|
|
/* 0477C4 8006C3C4 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 0477C8 8006C3C8 00031C03 */ sra $v1, $v1, 0x10
|
|
/* 0477CC 8006C3CC 0062102A */ slt $v0, $v1, $v0
|
|
/* 0477D0 8006C3D0 54400001 */ bnel $v0, $zero, .L8006C3D8
|
|
/* 0477D4 8006C3D4 AE230024 */ sw $v1, 0x24($s1)
|
|
.L8006C3D8:
|
|
/* 0477D8 8006C3D8 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 0477DC 8006C3DC 2442FFFF */ addiu $v0, $v0, -1
|
|
/* 0477E0 8006C3E0 04410002 */ bgez $v0, .L8006C3EC
|
|
/* 0477E4 8006C3E4 AE220024 */ sw $v0, 0x24($s1)
|
|
/* 0477E8 8006C3E8 AE200024 */ sw $zero, 0x24($s1)
|
|
.L8006C3EC:
|
|
/* 0477EC 8006C3EC 00041023 */ negu $v0, $a0
|
|
/* 0477F0 8006C3F0 30420065 */ andi $v0, $v0, 0x65
|
|
/* 0477F4 8006C3F4 34530045 */ ori $s3, $v0, 0x45
|
|
.L8006C3F8:
|
|
/* 0477F8 8006C3F8 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 0477FC 8006C3FC 24820001 */ addiu $v0, $a0, 1
|
|
/* 047800 8006C400 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 047804 8006C404 8E220008 */ lw $v0, 8($s1)
|
|
/* 047808 8006C408 92430000 */ lbu $v1, ($s2)
|
|
/* 04780C 8006C40C 00441021 */ addu $v0, $v0, $a0
|
|
/* 047810 8006C410 A0430000 */ sb $v1, ($v0)
|
|
/* 047814 8006C414 8E220024 */ lw $v0, 0x24($s1)
|
|
/* 047818 8006C418 1C400005 */ bgtz $v0, .L8006C430
|
|
/* 04781C 8006C41C 26520001 */ addiu $s2, $s2, 1
|
|
/* 047820 8006C420 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 047824 8006C424 30420008 */ andi $v0, $v0, 8
|
|
/* 047828 8006C428 10400008 */ beqz $v0, .L8006C44C
|
|
/* 04782C 8006C42C 00000000 */ nop
|
|
.L8006C430:
|
|
/* 047830 8006C430 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 047834 8006C434 8E230008 */ lw $v1, 8($s1)
|
|
/* 047838 8006C438 24820001 */ addiu $v0, $a0, 1
|
|
/* 04783C 8006C43C 00641821 */ addu $v1, $v1, $a0
|
|
/* 047840 8006C440 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 047844 8006C444 2402002E */ addiu $v0, $zero, 0x2e
|
|
/* 047848 8006C448 A0620000 */ sb $v0, ($v1)
|
|
.L8006C44C:
|
|
/* 04784C 8006C44C 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 047850 8006C450 18600015 */ blez $v1, .L8006C4A8
|
|
/* 047854 8006C454 26A2FFFF */ addiu $v0, $s5, -1
|
|
/* 047858 8006C458 0040A821 */ addu $s5, $v0, $zero
|
|
/* 04785C 8006C45C 00021400 */ sll $v0, $v0, 0x10
|
|
/* 047860 8006C460 00021403 */ sra $v0, $v0, 0x10
|
|
/* 047864 8006C464 0062102A */ slt $v0, $v1, $v0
|
|
/* 047868 8006C468 54400001 */ bnel $v0, $zero, .L8006C470
|
|
/* 04786C 8006C46C 0060A821 */ addu $s5, $v1, $zero
|
|
.L8006C470:
|
|
/* 047870 8006C470 02402821 */ addu $a1, $s2, $zero
|
|
/* 047874 8006C474 8E220008 */ lw $v0, 8($s1)
|
|
/* 047878 8006C478 8E240014 */ lw $a0, 0x14($s1)
|
|
/* 04787C 8006C47C 00158400 */ sll $s0, $s5, 0x10
|
|
/* 047880 8006C480 00108403 */ sra $s0, $s0, 0x10
|
|
/* 047884 8006C484 02003021 */ addu $a2, $s0, $zero
|
|
/* 047888 8006C488 0C01929D */ jal memcpy
|
|
/* 04788C 8006C48C 00442021 */ addu $a0, $v0, $a0
|
|
/* 047890 8006C490 8E220014 */ lw $v0, 0x14($s1)
|
|
/* 047894 8006C494 8E230024 */ lw $v1, 0x24($s1)
|
|
/* 047898 8006C498 00501021 */ addu $v0, $v0, $s0
|
|
/* 04789C 8006C49C 00701823 */ subu $v1, $v1, $s0
|
|
/* 0478A0 8006C4A0 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 0478A4 8006C4A4 AE230018 */ sw $v1, 0x18($s1)
|
|
.L8006C4A8:
|
|
/* 0478A8 8006C4A8 8E220008 */ lw $v0, 8($s1)
|
|
/* 0478AC 8006C4AC 8E230014 */ lw $v1, 0x14($s1)
|
|
/* 0478B0 8006C4B0 00439021 */ addu $s2, $v0, $v1
|
|
/* 0478B4 8006C4B4 A2530000 */ sb $s3, ($s2)
|
|
/* 0478B8 8006C4B8 00141400 */ sll $v0, $s4, 0x10
|
|
/* 0478BC 8006C4BC 04400005 */ bltz $v0, .L8006C4D4
|
|
/* 0478C0 8006C4C0 26520001 */ addiu $s2, $s2, 1
|
|
/* 0478C4 8006C4C4 2402002B */ addiu $v0, $zero, 0x2b
|
|
/* 0478C8 8006C4C8 A2420000 */ sb $v0, ($s2)
|
|
/* 0478CC 8006C4CC 0801B139 */ j .L8006C4E4
|
|
/* 0478D0 8006C4D0 26520001 */ addiu $s2, $s2, 1
|
|
|
|
.L8006C4D4:
|
|
/* 0478D4 8006C4D4 2402002D */ addiu $v0, $zero, 0x2d
|
|
/* 0478D8 8006C4D8 A2420000 */ sb $v0, ($s2)
|
|
/* 0478DC 8006C4DC 26520001 */ addiu $s2, $s2, 1
|
|
/* 0478E0 8006C4E0 0014A023 */ negu $s4, $s4
|
|
.L8006C4E4:
|
|
/* 0478E4 8006C4E4 00142C00 */ sll $a1, $s4, 0x10
|
|
/* 0478E8 8006C4E8 00052403 */ sra $a0, $a1, 0x10
|
|
/* 0478EC 8006C4EC 28820064 */ slti $v0, $a0, 0x64
|
|
/* 0478F0 8006C4F0 14400027 */ bnez $v0, .L8006C590
|
|
/* 0478F4 8006C4F4 3C036666 */ lui $v1, 0x6666
|
|
/* 0478F8 8006C4F8 288203E8 */ slti $v0, $a0, 0x3e8
|
|
/* 0478FC 8006C4FC 14400012 */ bnez $v0, .L8006C548
|
|
/* 047900 8006C500 3C0351EB */ lui $v1, 0x51eb
|
|
/* 047904 8006C504 3C021062 */ lui $v0, 0x1062
|
|
/* 047908 8006C508 34424DD3 */ ori $v0, $v0, 0x4dd3
|
|
/* 04790C 8006C50C 00820018 */ mult $a0, $v0
|
|
/* 047910 8006C510 000517C3 */ sra $v0, $a1, 0x1f
|
|
/* 047914 8006C514 00004010 */ mfhi $t0
|
|
/* 047918 8006C518 00081983 */ sra $v1, $t0, 6
|
|
/* 04791C 8006C51C 00621823 */ subu $v1, $v1, $v0
|
|
/* 047920 8006C520 24620030 */ addiu $v0, $v1, 0x30
|
|
/* 047924 8006C524 A2420000 */ sb $v0, ($s2)
|
|
/* 047928 8006C528 26520001 */ addiu $s2, $s2, 1
|
|
/* 04792C 8006C52C 00031140 */ sll $v0, $v1, 5
|
|
/* 047930 8006C530 00431023 */ subu $v0, $v0, $v1
|
|
/* 047934 8006C534 00021080 */ sll $v0, $v0, 2
|
|
/* 047938 8006C538 00431021 */ addu $v0, $v0, $v1
|
|
/* 04793C 8006C53C 000210C0 */ sll $v0, $v0, 3
|
|
/* 047940 8006C540 0082A023 */ subu $s4, $a0, $v0
|
|
/* 047944 8006C544 3C0351EB */ lui $v1, 0x51eb
|
|
.L8006C548:
|
|
/* 047948 8006C548 3463851F */ ori $v1, $v1, 0x851f
|
|
/* 04794C 8006C54C 00141400 */ sll $v0, $s4, 0x10
|
|
/* 047950 8006C550 00022403 */ sra $a0, $v0, 0x10
|
|
/* 047954 8006C554 00830018 */ mult $a0, $v1
|
|
/* 047958 8006C558 000217C3 */ sra $v0, $v0, 0x1f
|
|
/* 04795C 8006C55C 00004010 */ mfhi $t0
|
|
/* 047960 8006C560 00081943 */ sra $v1, $t0, 5
|
|
/* 047964 8006C564 00621823 */ subu $v1, $v1, $v0
|
|
/* 047968 8006C568 24620030 */ addiu $v0, $v1, 0x30
|
|
/* 04796C 8006C56C A2420000 */ sb $v0, ($s2)
|
|
/* 047970 8006C570 26520001 */ addiu $s2, $s2, 1
|
|
/* 047974 8006C574 00031040 */ sll $v0, $v1, 1
|
|
/* 047978 8006C578 00431021 */ addu $v0, $v0, $v1
|
|
/* 04797C 8006C57C 000210C0 */ sll $v0, $v0, 3
|
|
/* 047980 8006C580 00431021 */ addu $v0, $v0, $v1
|
|
/* 047984 8006C584 00021080 */ sll $v0, $v0, 2
|
|
/* 047988 8006C588 0082A023 */ subu $s4, $a0, $v0
|
|
/* 04798C 8006C58C 3C036666 */ lui $v1, 0x6666
|
|
.L8006C590:
|
|
/* 047990 8006C590 34636667 */ ori $v1, $v1, 0x6667
|
|
/* 047994 8006C594 00141400 */ sll $v0, $s4, 0x10
|
|
/* 047998 8006C598 00022403 */ sra $a0, $v0, 0x10
|
|
/* 04799C 8006C59C 00830018 */ mult $a0, $v1
|
|
/* 0479A0 8006C5A0 000217C3 */ sra $v0, $v0, 0x1f
|
|
/* 0479A4 8006C5A4 00004010 */ mfhi $t0
|
|
/* 0479A8 8006C5A8 00081883 */ sra $v1, $t0, 2
|
|
/* 0479AC 8006C5AC 00621823 */ subu $v1, $v1, $v0
|
|
/* 0479B0 8006C5B0 24620030 */ addiu $v0, $v1, 0x30
|
|
/* 0479B4 8006C5B4 A2420000 */ sb $v0, ($s2)
|
|
/* 0479B8 8006C5B8 26520001 */ addiu $s2, $s2, 1
|
|
/* 0479BC 8006C5BC 00031080 */ sll $v0, $v1, 2
|
|
/* 0479C0 8006C5C0 00431021 */ addu $v0, $v0, $v1
|
|
/* 0479C4 8006C5C4 00021040 */ sll $v0, $v0, 1
|
|
/* 0479C8 8006C5C8 00822023 */ subu $a0, $a0, $v0
|
|
/* 0479CC 8006C5CC 24840030 */ addiu $a0, $a0, 0x30
|
|
/* 0479D0 8006C5D0 A2440000 */ sb $a0, ($s2)
|
|
/* 0479D4 8006C5D4 8E220008 */ lw $v0, 8($s1)
|
|
/* 0479D8 8006C5D8 8E230014 */ lw $v1, 0x14($s1)
|
|
/* 0479DC 8006C5DC 26520001 */ addiu $s2, $s2, 1
|
|
/* 0479E0 8006C5E0 00431021 */ addu $v0, $v0, $v1
|
|
/* 0479E4 8006C5E4 02421023 */ subu $v0, $s2, $v0
|
|
/* 0479E8 8006C5E8 AE22001C */ sw $v0, 0x1c($s1)
|
|
.L8006C5EC:
|
|
/* 0479EC 8006C5EC 8E220030 */ lw $v0, 0x30($s1)
|
|
/* 0479F0 8006C5F0 24030010 */ addiu $v1, $zero, 0x10
|
|
/* 0479F4 8006C5F4 30420014 */ andi $v0, $v0, 0x14
|
|
/* 0479F8 8006C5F8 1443000F */ bne $v0, $v1, .L8006C638
|
|
/* 0479FC 8006C5FC 00000000 */ nop
|
|
/* 047A00 8006C600 8E22000C */ lw $v0, 0xc($s1)
|
|
/* 047A04 8006C604 8E230014 */ lw $v1, 0x14($s1)
|
|
/* 047A08 8006C608 8E240018 */ lw $a0, 0x18($s1)
|
|
/* 047A0C 8006C60C 00431021 */ addu $v0, $v0, $v1
|
|
/* 047A10 8006C610 00441021 */ addu $v0, $v0, $a0
|
|
/* 047A14 8006C614 8E23001C */ lw $v1, 0x1c($s1)
|
|
/* 047A18 8006C618 8E240020 */ lw $a0, 0x20($s1)
|
|
/* 047A1C 8006C61C 8E250028 */ lw $a1, 0x28($s1)
|
|
/* 047A20 8006C620 00431021 */ addu $v0, $v0, $v1
|
|
/* 047A24 8006C624 00441821 */ addu $v1, $v0, $a0
|
|
/* 047A28 8006C628 0065102A */ slt $v0, $v1, $a1
|
|
/* 047A2C 8006C62C 10400002 */ beqz $v0, .L8006C638
|
|
/* 047A30 8006C630 00A31023 */ subu $v0, $a1, $v1
|
|
/* 047A34 8006C634 AE220010 */ sw $v0, 0x10($s1)
|
|
.L8006C638:
|
|
/* 047A38 8006C638 8FBF0028 */ lw $ra, 0x28($sp)
|
|
/* 047A3C 8006C63C 8FB50024 */ lw $s5, 0x24($sp)
|
|
/* 047A40 8006C640 8FB40020 */ lw $s4, 0x20($sp)
|
|
/* 047A44 8006C644 8FB3001C */ lw $s3, 0x1c($sp)
|
|
/* 047A48 8006C648 8FB20018 */ lw $s2, 0x18($sp)
|
|
/* 047A4C 8006C64C 8FB10014 */ lw $s1, 0x14($sp)
|
|
/* 047A50 8006C650 8FB00010 */ lw $s0, 0x10($sp)
|
|
/* 047A54 8006C654 03E00008 */ jr $ra
|
|
/* 047A58 8006C658 27BD0030 */ addiu $sp, $sp, 0x30
|
|
|
|
/* 047A5C 8006C65C 00000000 */ nop
|