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

75 lines
3.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80050020
/* 2B420 80050020 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 2B424 80050024 AFB20018 */ sw $s2, 0x18($sp)
/* 2B428 80050028 00A0902D */ daddu $s2, $a1, $zero
/* 2B42C 8005002C AFBF001C */ sw $ra, 0x1c($sp)
/* 2B430 80050030 AFB10014 */ sw $s1, 0x14($sp)
/* 2B434 80050034 AFB00010 */ sw $s0, 0x10($sp)
/* 2B438 80050038 908500D4 */ lbu $a1, 0xd4($a0)
/* 2B43C 8005003C 2CA20080 */ sltiu $v0, $a1, 0x80
/* 2B440 80050040 50400008 */ beql $v0, $zero, .L80050064
/* 2B444 80050044 24A5FF80 */ addiu $a1, $a1, -0x80
/* 2B448 80050048 9082021D */ lbu $v0, 0x21d($a0)
/* 2B44C 8005004C 00A2102B */ sltu $v0, $a1, $v0
/* 2B450 80050050 1040000C */ beqz $v0, .L80050084
/* 2B454 80050054 000510C0 */ sll $v0, $a1, 3
/* 2B458 80050058 8C83007C */ lw $v1, 0x7c($a0)
/* 2B45C 8005005C 08014023 */ j .L8005008C
/* 2B460 80050060 00628821 */ addu $s1, $v1, $v0
.L80050064:
/* 2B464 80050064 2CA20040 */ sltiu $v0, $a1, 0x40
/* 2B468 80050068 10400006 */ beqz $v0, .L80050084
/* 2B46C 8005006C 00000000 */ nop
/* 2B470 80050070 8C820000 */ lw $v0, ($a0)
/* 2B474 80050074 8C430058 */ lw $v1, 0x58($v0)
/* 2B478 80050078 000510C0 */ sll $v0, $a1, 3
/* 2B47C 8005007C 08014023 */ j .L8005008C
/* 2B480 80050080 00628821 */ addu $s1, $v1, $v0
.L80050084:
/* 2B484 80050084 8C820000 */ lw $v0, ($a0)
/* 2B488 80050088 24510014 */ addiu $s1, $v0, 0x14
.L8005008C:
/* 2B48C 8005008C 26470010 */ addiu $a3, $s2, 0x10
/* 2B490 80050090 96250000 */ lhu $a1, ($s1)
/* 2B494 80050094 92220002 */ lbu $v0, 2($s1)
/* 2B498 80050098 92260001 */ lbu $a2, 1($s1)
/* 2B49C 8005009C 3050007F */ andi $s0, $v0, 0x7f
/* 2B4A0 800500A0 A6460044 */ sh $a2, 0x44($s2)
/* 2B4A4 800500A4 8C840000 */ lw $a0, ($a0)
/* 2B4A8 800500A8 0C014EFA */ jal func_80053BE8
/* 2B4AC 800500AC 00052A02 */ srl $a1, $a1, 8
/* 2B4B0 800500B0 12000002 */ beqz $s0, .L800500BC
/* 2B4B4 800500B4 AE42000C */ sw $v0, 0xc($s2)
/* 2B4B8 800500B8 00108600 */ sll $s0, $s0, 0x18
.L800500BC:
/* 2B4BC 800500BC AE500018 */ sw $s0, 0x18($s2)
/* 2B4C0 800500C0 92220003 */ lbu $v0, 3($s1)
/* 2B4C4 800500C4 3042007F */ andi $v0, $v0, 0x7f
/* 2B4C8 800500C8 A242004A */ sb $v0, 0x4a($s2)
/* 2B4CC 800500CC 92220004 */ lbu $v0, 4($s1)
/* 2B4D0 800500D0 3C040001 */ lui $a0, 1
/* 2B4D4 800500D4 3042007F */ andi $v0, $v0, 0x7f
/* 2B4D8 800500D8 A242004B */ sb $v0, 0x4b($s2)
/* 2B4DC 800500DC 82230005 */ lb $v1, 5($s1)
/* 2B4E0 800500E0 34840101 */ ori $a0, $a0, 0x101
/* 2B4E4 800500E4 00031040 */ sll $v0, $v1, 1
/* 2B4E8 800500E8 00431021 */ addu $v0, $v0, $v1
/* 2B4EC 800500EC 000210C0 */ sll $v0, $v0, 3
/* 2B4F0 800500F0 00431021 */ addu $v0, $v0, $v1
/* 2B4F4 800500F4 00021080 */ sll $v0, $v0, 2
/* 2B4F8 800500F8 A6420046 */ sh $v0, 0x46($s2)
/* 2B4FC 800500FC 8E420040 */ lw $v0, 0x40($s2)
/* 2B500 80050100 92230006 */ lbu $v1, 6($s1)
/* 2B504 80050104 00441025 */ or $v0, $v0, $a0
/* 2B508 80050108 AE420040 */ sw $v0, 0x40($s2)
/* 2B50C 8005010C A2430048 */ sb $v1, 0x48($s2)
/* 2B510 80050110 8FBF001C */ lw $ra, 0x1c($sp)
/* 2B514 80050114 8FB20018 */ lw $s2, 0x18($sp)
/* 2B518 80050118 8FB10014 */ lw $s1, 0x14($sp)
/* 2B51C 8005011C 8FB00010 */ lw $s0, 0x10($sp)
/* 2B520 80050120 03E00008 */ jr $ra
/* 2B524 80050124 27BD0020 */ addiu $sp, $sp, 0x20