papermario/asm/nonmatchings/code_26840_len_20d0/func_8004B748.s
2020-11-29 02:13:07 -05:00

193 lines
9.5 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004B748
/* 26B48 8004B748 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 26B4C 8004B74C AFB40030 */ sw $s4, 0x30($sp)
/* 26B50 8004B750 0080A02D */ daddu $s4, $a0, $zero
/* 26B54 8004B754 AFBF0038 */ sw $ra, 0x38($sp)
/* 26B58 8004B758 AFB50034 */ sw $s5, 0x34($sp)
/* 26B5C 8004B75C AFB3002C */ sw $s3, 0x2c($sp)
/* 26B60 8004B760 AFB20028 */ sw $s2, 0x28($sp)
/* 26B64 8004B764 AFB10024 */ sw $s1, 0x24($sp)
/* 26B68 8004B768 AFB00020 */ sw $s0, 0x20($sp)
/* 26B6C 8004B76C 8E820030 */ lw $v0, 0x30($s4)
/* 26B70 8004B770 8E830168 */ lw $v1, 0x168($s4)
/* 26B74 8004B774 24420001 */ addiu $v0, $v0, 1
/* 26B78 8004B778 10600004 */ beqz $v1, .L8004B78C
/* 26B7C 8004B77C AE820030 */ sw $v0, 0x30($s4)
/* 26B80 8004B780 0C01352F */ jal func_8004D4BC
/* 26B84 8004B784 00000000 */ nop
/* 26B88 8004B788 AE800168 */ sw $zero, 0x168($s4)
.L8004B78C:
/* 26B8C 8004B78C 0280802D */ daddu $s0, $s4, $zero
.L8004B790:
/* 26B90 8004B790 92030090 */ lbu $v1, 0x90($s0)
/* 26B94 8004B794 10600035 */ beqz $v1, .L8004B86C
/* 26B98 8004B798 2C620002 */ sltiu $v0, $v1, 2
/* 26B9C 8004B79C 10400033 */ beqz $v0, .L8004B86C
/* 26BA0 8004B7A0 00031040 */ sll $v0, $v1, 1
/* 26BA4 8004B7A4 00431021 */ addu $v0, $v0, $v1
/* 26BA8 8004B7A8 00021040 */ sll $v0, $v0, 1
/* 26BAC 8004B7AC 3C038008 */ lui $v1, %hi(D_8007836A)
/* 26BB0 8004B7B0 2463836A */ addiu $v1, $v1, %lo(D_8007836A)
/* 26BB4 8004B7B4 00433021 */ addu $a2, $v0, $v1
/* 26BB8 8004B7B8 94C20002 */ lhu $v0, 2($a2)
/* 26BBC 8004B7BC 10400020 */ beqz $v0, .L8004B840
/* 26BC0 8004B7C0 0000882D */ daddu $s1, $zero, $zero
/* 26BC4 8004B7C4 0040282D */ daddu $a1, $v0, $zero
/* 26BC8 8004B7C8 0200202D */ daddu $a0, $s0, $zero
/* 26BCC 8004B7CC 0280182D */ daddu $v1, $s4, $zero
.L8004B7D0:
/* 26BD0 8004B7D0 94620202 */ lhu $v0, 0x202($v1)
/* 26BD4 8004B7D4 54450015 */ bnel $v0, $a1, .L8004B82C
/* 26BD8 8004B7D8 26310001 */ addiu $s1, $s1, 1
/* 26BDC 8004B7DC 94C20000 */ lhu $v0, ($a2)
/* 26BE0 8004B7E0 A7A00012 */ sh $zero, 0x12($sp)
/* 26BE4 8004B7E4 A7A00016 */ sh $zero, 0x16($sp)
/* 26BE8 8004B7E8 A7A20010 */ sh $v0, 0x10($sp)
/* 26BEC 8004B7EC 90C20004 */ lbu $v0, 4($a2)
/* 26BF0 8004B7F0 30420001 */ andi $v0, $v0, 1
/* 26BF4 8004B7F4 50400008 */ beql $v0, $zero, .L8004B818
/* 26BF8 8004B7F8 A7A00014 */ sh $zero, 0x14($sp)
/* 26BFC 8004B7FC 90820093 */ lbu $v0, 0x93($a0)
/* 26C00 8004B800 50400005 */ beql $v0, $zero, .L8004B818
/* 26C04 8004B804 A7A00014 */ sh $zero, 0x14($sp)
/* 26C08 8004B808 90820093 */ lbu $v0, 0x93($a0)
/* 26C0C 8004B80C 00021200 */ sll $v0, $v0, 8
/* 26C10 8004B810 244200FF */ addiu $v0, $v0, 0xff
/* 26C14 8004B814 A7A20014 */ sh $v0, 0x14($sp)
.L8004B818:
/* 26C18 8004B818 A3A00018 */ sb $zero, 0x18($sp)
/* 26C1C 8004B81C 0280202D */ daddu $a0, $s4, $zero
/* 26C20 8004B820 27A50010 */ addiu $a1, $sp, 0x10
/* 26C24 8004B824 08012E19 */ j .L8004B864
/* 26C28 8004B828 0000302D */ daddu $a2, $zero, $zero
.L8004B82C:
/* 26C2C 8004B82C 2E220008 */ sltiu $v0, $s1, 8
/* 26C30 8004B830 1440FFE7 */ bnez $v0, .L8004B7D0
/* 26C34 8004B834 246300AC */ addiu $v1, $v1, 0xac
/* 26C38 8004B838 08012E1C */ j .L8004B870
/* 26C3C 8004B83C AE000090 */ sw $zero, 0x90($s0)
.L8004B840:
/* 26C40 8004B840 0280202D */ daddu $a0, $s4, $zero
/* 26C44 8004B844 27A50010 */ addiu $a1, $sp, 0x10
/* 26C48 8004B848 94C20000 */ lhu $v0, ($a2)
/* 26C4C 8004B84C 0000302D */ daddu $a2, $zero, $zero
/* 26C50 8004B850 A7A00012 */ sh $zero, 0x12($sp)
/* 26C54 8004B854 A7A00014 */ sh $zero, 0x14($sp)
/* 26C58 8004B858 A7A00016 */ sh $zero, 0x16($sp)
/* 26C5C 8004B85C A3A00018 */ sb $zero, 0x18($sp)
/* 26C60 8004B860 A7A20010 */ sh $v0, 0x10($sp)
.L8004B864:
/* 26C64 8004B864 0C012E9D */ jal func_8004BA74
/* 26C68 8004B868 00000000 */ nop
.L8004B86C:
/* 26C6C 8004B86C AE000090 */ sw $zero, 0x90($s0)
.L8004B870:
/* 26C70 8004B870 26100004 */ addiu $s0, $s0, 4
/* 26C74 8004B874 26820010 */ addiu $v0, $s4, 0x10
/* 26C78 8004B878 0202102B */ sltu $v0, $s0, $v0
/* 26C7C 8004B87C 1440FFC4 */ bnez $v0, .L8004B790
/* 26C80 8004B880 0000902D */ daddu $s2, $zero, $zero
/* 26C84 8004B884 24130001 */ addiu $s3, $zero, 1
/* 26C88 8004B888 241100A0 */ addiu $s1, $zero, 0xa0
/* 26C8C 8004B88C 0280802D */ daddu $s0, $s4, $zero
.L8004B890:
/* 26C90 8004B890 960200A0 */ lhu $v0, 0xa0($s0)
/* 26C94 8004B894 10400009 */ beqz $v0, .L8004B8BC
/* 26C98 8004B898 0280202D */ daddu $a0, $s4, $zero
/* 26C9C 8004B89C 27A50010 */ addiu $a1, $sp, 0x10
/* 26CA0 8004B8A0 02913021 */ addu $a2, $s4, $s1
/* 26CA4 8004B8A4 A7B30010 */ sh $s3, 0x10($sp)
/* 26CA8 8004B8A8 A7A00012 */ sh $zero, 0x12($sp)
/* 26CAC 8004B8AC A7A00014 */ sh $zero, 0x14($sp)
/* 26CB0 8004B8B0 A7A00016 */ sh $zero, 0x16($sp)
/* 26CB4 8004B8B4 0C012E9D */ jal func_8004BA74
/* 26CB8 8004B8B8 A3A00018 */ sb $zero, 0x18($sp)
.L8004B8BC:
/* 26CBC 8004B8BC A60000A0 */ sh $zero, 0xa0($s0)
/* 26CC0 8004B8C0 26310006 */ addiu $s1, $s1, 6
/* 26CC4 8004B8C4 26520001 */ addiu $s2, $s2, 1
/* 26CC8 8004B8C8 2E420004 */ sltiu $v0, $s2, 4
/* 26CCC 8004B8CC 1440FFF0 */ bnez $v0, .L8004B890
/* 26CD0 8004B8D0 26100006 */ addiu $s0, $s0, 6
/* 26CD4 8004B8D4 92820164 */ lbu $v0, 0x164($s4)
/* 26CD8 8004B8D8 92830163 */ lbu $v1, 0x163($s4)
/* 26CDC 8004B8DC 0043A823 */ subu $s5, $v0, $v1
/* 26CE0 8004B8E0 06A20001 */ bltzl $s5, .L8004B8E8
/* 26CE4 8004B8E4 26B50010 */ addiu $s5, $s5, 0x10
.L8004B8E8:
/* 26CE8 8004B8E8 26A2FFFF */ addiu $v0, $s5, -1
/* 26CEC 8004B8EC 2C42000F */ sltiu $v0, $v0, 0xf
/* 26CF0 8004B8F0 10400033 */ beqz $v0, .L8004B9C0
/* 26CF4 8004B8F4 0060882D */ daddu $s1, $v1, $zero
/* 26CF8 8004B8F8 12A0002F */ beqz $s5, .L8004B9B8
/* 26CFC 8004B8FC 0000902D */ daddu $s2, $zero, $zero
/* 26D00 8004B900 00111080 */ sll $v0, $s1, 2
/* 26D04 8004B904 00511021 */ addu $v0, $v0, $s1
/* 26D08 8004B908 00021040 */ sll $v0, $v0, 1
/* 26D0C 8004B90C 245300C2 */ addiu $s3, $v0, 0xc2
/* 26D10 8004B910 02938021 */ addu $s0, $s4, $s3
.L8004B914:
/* 26D14 8004B914 96030000 */ lhu $v1, ($s0)
/* 26D18 8004B918 306223FF */ andi $v0, $v1, 0x23ff
/* 26D1C 8004B91C 1040001B */ beqz $v0, .L8004B98C
/* 26D20 8004B920 30628000 */ andi $v0, $v1, 0x8000
/* 26D24 8004B924 10400005 */ beqz $v0, .L8004B93C
/* 26D28 8004B928 3065FFFF */ andi $a1, $v1, 0xffff
/* 26D2C 8004B92C 0C0130A9 */ jal func_8004C2A4
/* 26D30 8004B930 0280202D */ daddu $a0, $s4, $zero
/* 26D34 8004B934 08012E64 */ j .L8004B990
/* 26D38 8004B938 A6000000 */ sh $zero, ($s0)
.L8004B93C:
/* 26D3C 8004B93C 30621C00 */ andi $v0, $v1, 0x1c00
/* 26D40 8004B940 14400007 */ bnez $v0, .L8004B960
/* 26D44 8004B944 30620C00 */ andi $v0, $v1, 0xc00
/* 26D48 8004B948 0280202D */ daddu $a0, $s4, $zero
/* 26D4C 8004B94C 0200282D */ daddu $a1, $s0, $zero
/* 26D50 8004B950 0C012E9D */ jal func_8004BA74
/* 26D54 8004B954 0000302D */ daddu $a2, $zero, $zero
/* 26D58 8004B958 08012E64 */ j .L8004B990
/* 26D5C 8004B95C A6000000 */ sh $zero, ($s0)
.L8004B960:
/* 26D60 8004B960 10400004 */ beqz $v0, .L8004B974
/* 26D64 8004B964 00000000 */ nop
/* 26D68 8004B968 96050000 */ lhu $a1, ($s0)
/* 26D6C 8004B96C 0C01309A */ jal func_8004C268
/* 26D70 8004B970 0280202D */ daddu $a0, $s4, $zero
.L8004B974:
/* 26D74 8004B974 96020000 */ lhu $v0, ($s0)
/* 26D78 8004B978 30421000 */ andi $v0, $v0, 0x1000
/* 26D7C 8004B97C 10400003 */ beqz $v0, .L8004B98C
/* 26D80 8004B980 0280202D */ daddu $a0, $s4, $zero
/* 26D84 8004B984 0C0130D6 */ jal func_8004C358
/* 26D88 8004B988 0200282D */ daddu $a1, $s0, $zero
.L8004B98C:
/* 26D8C 8004B98C A6000000 */ sh $zero, ($s0)
.L8004B990:
/* 26D90 8004B990 26310001 */ addiu $s1, $s1, 1
/* 26D94 8004B994 2E220010 */ sltiu $v0, $s1, 0x10
/* 26D98 8004B998 14400003 */ bnez $v0, .L8004B9A8
/* 26D9C 8004B99C 2673000A */ addiu $s3, $s3, 0xa
/* 26DA0 8004B9A0 241300C2 */ addiu $s3, $zero, 0xc2
/* 26DA4 8004B9A4 0000882D */ daddu $s1, $zero, $zero
.L8004B9A8:
/* 26DA8 8004B9A8 26520001 */ addiu $s2, $s2, 1
/* 26DAC 8004B9AC 0255102B */ sltu $v0, $s2, $s5
/* 26DB0 8004B9B0 1440FFD8 */ bnez $v0, .L8004B914
/* 26DB4 8004B9B4 02938021 */ addu $s0, $s4, $s3
.L8004B9B8:
/* 26DB8 8004B9B8 92820164 */ lbu $v0, 0x164($s4)
/* 26DBC 8004B9BC A2820163 */ sb $v0, 0x163($s4)
.L8004B9C0:
/* 26DC0 8004B9C0 8FBF0038 */ lw $ra, 0x38($sp)
/* 26DC4 8004B9C4 8FB50034 */ lw $s5, 0x34($sp)
/* 26DC8 8004B9C8 8FB40030 */ lw $s4, 0x30($sp)
/* 26DCC 8004B9CC 8FB3002C */ lw $s3, 0x2c($sp)
/* 26DD0 8004B9D0 8FB20028 */ lw $s2, 0x28($sp)
/* 26DD4 8004B9D4 8FB10024 */ lw $s1, 0x24($sp)
/* 26DD8 8004B9D8 8FB00020 */ lw $s0, 0x20($sp)
/* 26DDC 8004B9DC 03E00008 */ jr $ra
/* 26DE0 8004B9E0 27BD0040 */ addiu $sp, $sp, 0x40