papermario/asm/nonmatchings/code_28910_len_5090/func_8004D7E0.s
2021-01-11 21:40:52 +09:00

163 lines
7.9 KiB
ArmAsm
Generated

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004D7E0
/* 28BE0 8004D7E0 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 28BE4 8004D7E4 AFB20018 */ sw $s2, 0x18($sp)
/* 28BE8 8004D7E8 0080902D */ daddu $s2, $a0, $zero
/* 28BEC 8004D7EC AFB50024 */ sw $s5, 0x24($sp)
/* 28BF0 8004D7F0 AFBF0028 */ sw $ra, 0x28($sp)
/* 28BF4 8004D7F4 AFB40020 */ sw $s4, 0x20($sp)
/* 28BF8 8004D7F8 AFB3001C */ sw $s3, 0x1c($sp)
/* 28BFC 8004D7FC AFB10014 */ sw $s1, 0x14($sp)
/* 28C00 8004D800 AFB00010 */ sw $s0, 0x10($sp)
/* 28C04 8004D804 8E540000 */ lw $s4, ($s2)
/* 28C08 8004D808 8E530010 */ lw $s3, 0x10($s2)
/* 28C0C 8004D80C 12800074 */ beqz $s4, .L8004D9E0
/* 28C10 8004D810 0000A82D */ daddu $s5, $zero, $zero
/* 28C14 8004D814 0C0135E5 */ jal func_8004D794
/* 28C18 8004D818 0280202D */ daddu $a0, $s4, $zero
/* 28C1C 8004D81C 0040802D */ daddu $s0, $v0, $zero
/* 28C20 8004D820 52000070 */ beql $s0, $zero, .L8004D9E4
/* 28C24 8004D824 24150002 */ addiu $s5, $zero, 2
/* 28C28 8004D828 8E020064 */ lw $v0, 0x64($s0)
/* 28C2C 8004D82C 8E450004 */ lw $a1, 4($s2)
/* 28C30 8004D830 10A00008 */ beqz $a1, .L8004D854
/* 28C34 8004D834 24510010 */ addiu $s1, $v0, 0x10
/* 28C38 8004D838 28A22711 */ slti $v0, $a1, 0x2711
/* 28C3C 8004D83C 14400003 */ bnez $v0, .L8004D84C
/* 28C40 8004D840 28A200FA */ slti $v0, $a1, 0xfa
/* 28C44 8004D844 08013615 */ j .L8004D854
/* 28C48 8004D848 24052710 */ addiu $a1, $zero, 0x2710
.L8004D84C:
/* 28C4C 8004D84C 54400001 */ bnel $v0, $zero, .L8004D854
/* 28C50 8004D850 240500FA */ addiu $a1, $zero, 0xfa
.L8004D854:
/* 28C54 8004D854 8E460008 */ lw $a2, 8($s2)
/* 28C58 8004D858 28C20080 */ slti $v0, $a2, 0x80
/* 28C5C 8004D85C 50400001 */ beql $v0, $zero, .L8004D864
/* 28C60 8004D860 2406007F */ addiu $a2, $zero, 0x7f
.L8004D864:
/* 28C64 8004D864 10C00002 */ beqz $a2, .L8004D870
/* 28C68 8004D868 00061200 */ sll $v0, $a2, 8
/* 28C6C 8004D86C 344600FF */ ori $a2, $v0, 0xff
.L8004D870:
/* 28C70 8004D870 8E47000C */ lw $a3, 0xc($s2)
/* 28C74 8004D874 28E20080 */ slti $v0, $a3, 0x80
/* 28C78 8004D878 50400001 */ beql $v0, $zero, .L8004D880
/* 28C7C 8004D87C 2407007F */ addiu $a3, $zero, 0x7f
.L8004D880:
/* 28C80 8004D880 10E00003 */ beqz $a3, .L8004D890
/* 28C84 8004D884 00071200 */ sll $v0, $a3, 8
/* 28C88 8004D888 08013625 */ j .L8004D894
/* 28C8C 8004D88C 344700FF */ ori $a3, $v0, 0xff
.L8004D890:
/* 28C90 8004D890 24077FFF */ addiu $a3, $zero, 0x7fff
.L8004D894:
/* 28C94 8004D894 0C014E5D */ jal func_80053974
/* 28C98 8004D898 2604002C */ addiu $a0, $s0, 0x2c
/* 28C9C 8004D89C 0200202D */ daddu $a0, $s0, $zero
/* 28CA0 8004D8A0 24027FFF */ addiu $v0, $zero, 0x7fff
/* 28CA4 8004D8A4 A6020044 */ sh $v0, 0x44($s0)
/* 28CA8 8004D8A8 24020001 */ addiu $v0, $zero, 1
/* 28CAC 8004D8AC A6020046 */ sh $v0, 0x46($s0)
/* 28CB0 8004D8B0 92220000 */ lbu $v0, ($s1)
/* 28CB4 8004D8B4 3C050002 */ lui $a1, 2
/* 28CB8 8004D8B8 30420007 */ andi $v0, $v0, 7
/* 28CBC 8004D8BC 3C068008 */ lui $a2, %hi(D_80078510)
/* 28CC0 8004D8C0 00C23021 */ addu $a2, $a2, $v0
/* 28CC4 8004D8C4 90C68510 */ lbu $a2, %lo(D_80078510)($a2)
/* 28CC8 8004D8C8 0C013A20 */ jal func_8004E880
/* 28CCC 8004D8CC 34A5625A */ ori $a1, $a1, 0x625a
/* 28CD0 8004D8D0 2E620004 */ sltiu $v0, $s3, 4
/* 28CD4 8004D8D4 10400005 */ beqz $v0, .L8004D8EC
/* 28CD8 8004D8D8 00131040 */ sll $v0, $s3, 1
/* 28CDC 8004D8DC 02221021 */ addu $v0, $s1, $v0
/* 28CE0 8004D8E0 94420004 */ lhu $v0, 4($v0)
/* 28CE4 8004D8E4 14400003 */ bnez $v0, .L8004D8F4
/* 28CE8 8004D8E8 00131040 */ sll $v0, $s3, 1
.L8004D8EC:
/* 28CEC 8004D8EC 0000982D */ daddu $s3, $zero, $zero
/* 28CF0 8004D8F0 00131040 */ sll $v0, $s3, 1
.L8004D8F4:
/* 28CF4 8004D8F4 02221021 */ addu $v0, $s1, $v0
/* 28CF8 8004D8F8 AE130060 */ sw $s3, 0x60($s0)
/* 28CFC 8004D8FC 94420004 */ lhu $v0, 4($v0)
/* 28D00 8004D900 8E030064 */ lw $v1, 0x64($s0)
/* 28D04 8004D904 00021080 */ sll $v0, $v0, 2
/* 28D08 8004D908 00431021 */ addu $v0, $v0, $v1
/* 28D0C 8004D90C AE02006C */ sw $v0, 0x6c($s0)
/* 28D10 8004D910 AE020068 */ sw $v0, 0x68($s0)
/* 28D14 8004D914 9622000C */ lhu $v0, 0xc($s1)
/* 28D18 8004D918 1040001F */ beqz $v0, .L8004D998
/* 28D1C 8004D91C 00021080 */ sll $v0, $v0, 2
/* 28D20 8004D920 00431021 */ addu $v0, $v0, $v1
/* 28D24 8004D924 AE020078 */ sw $v0, 0x78($s0)
/* 28D28 8004D928 9222000F */ lbu $v0, 0xf($s1)
/* 28D2C 8004D92C A202021C */ sb $v0, 0x21c($s0)
/* 28D30 8004D930 304200FF */ andi $v0, $v0, 0xff
/* 28D34 8004D934 1040000C */ beqz $v0, .L8004D968
/* 28D38 8004D938 0000182D */ daddu $v1, $zero, $zero
/* 28D3C 8004D93C 0200282D */ daddu $a1, $s0, $zero
/* 28D40 8004D940 0060202D */ daddu $a0, $v1, $zero
.L8004D944:
/* 28D44 8004D944 8E020078 */ lw $v0, 0x78($s0)
/* 28D48 8004D948 24630001 */ addiu $v1, $v1, 1
/* 28D4C 8004D94C 00441021 */ addu $v0, $v0, $a0
/* 28D50 8004D950 ACA20080 */ sw $v0, 0x80($a1)
/* 28D54 8004D954 24A50004 */ addiu $a1, $a1, 4
/* 28D58 8004D958 9202021C */ lbu $v0, 0x21c($s0)
/* 28D5C 8004D95C 0062102B */ sltu $v0, $v1, $v0
/* 28D60 8004D960 1440FFF8 */ bnez $v0, .L8004D944
/* 28D64 8004D964 2484000C */ addiu $a0, $a0, 0xc
.L8004D968:
/* 28D68 8004D968 2C62000C */ sltiu $v0, $v1, 0xc
/* 28D6C 8004D96C 1040000C */ beqz $v0, .L8004D9A0
/* 28D70 8004D970 00031080 */ sll $v0, $v1, 2
/* 28D74 8004D974 00502021 */ addu $a0, $v0, $s0
.L8004D978:
/* 28D78 8004D978 8E020080 */ lw $v0, 0x80($s0)
/* 28D7C 8004D97C 24630001 */ addiu $v1, $v1, 1
/* 28D80 8004D980 AC820080 */ sw $v0, 0x80($a0)
/* 28D84 8004D984 2C62000C */ sltiu $v0, $v1, 0xc
/* 28D88 8004D988 1440FFFB */ bnez $v0, .L8004D978
/* 28D8C 8004D98C 24840004 */ addiu $a0, $a0, 4
/* 28D90 8004D990 08013668 */ j .L8004D9A0
/* 28D94 8004D994 00000000 */ nop
.L8004D998:
/* 28D98 8004D998 AE000078 */ sw $zero, 0x78($s0)
/* 28D9C 8004D99C A200021C */ sb $zero, 0x21c($s0)
.L8004D9A0:
/* 28DA0 8004D9A0 96220010 */ lhu $v0, 0x10($s1)
/* 28DA4 8004D9A4 10400007 */ beqz $v0, .L8004D9C4
/* 28DA8 8004D9A8 00021080 */ sll $v0, $v0, 2
/* 28DAC 8004D9AC 8E030064 */ lw $v1, 0x64($s0)
/* 28DB0 8004D9B0 00431021 */ addu $v0, $v0, $v1
/* 28DB4 8004D9B4 AE02007C */ sw $v0, 0x7c($s0)
/* 28DB8 8004D9B8 92220013 */ lbu $v0, 0x13($s1)
/* 28DBC 8004D9BC 08013673 */ j .L8004D9CC
/* 28DC0 8004D9C0 A202021D */ sb $v0, 0x21d($s0)
.L8004D9C4:
/* 28DC4 8004D9C4 AE00007C */ sw $zero, 0x7c($s0)
/* 28DC8 8004D9C8 A200021D */ sb $zero, 0x21d($s0)
.L8004D9CC:
/* 28DCC 8004D9CC AE14001C */ sw $s4, 0x1c($s0)
/* 28DD0 8004D9D0 0C013976 */ jal func_8004E5D8
/* 28DD4 8004D9D4 0200202D */ daddu $a0, $s0, $zero
/* 28DD8 8004D9D8 0801367A */ j .L8004D9E8
/* 28DDC 8004D9DC 02A0102D */ daddu $v0, $s5, $zero
.L8004D9E0:
/* 28DE0 8004D9E0 24150003 */ addiu $s5, $zero, 3
.L8004D9E4:
/* 28DE4 8004D9E4 02A0102D */ daddu $v0, $s5, $zero
.L8004D9E8:
/* 28DE8 8004D9E8 8FBF0028 */ lw $ra, 0x28($sp)
/* 28DEC 8004D9EC 8FB50024 */ lw $s5, 0x24($sp)
/* 28DF0 8004D9F0 8FB40020 */ lw $s4, 0x20($sp)
/* 28DF4 8004D9F4 8FB3001C */ lw $s3, 0x1c($sp)
/* 28DF8 8004D9F8 8FB20018 */ lw $s2, 0x18($sp)
/* 28DFC 8004D9FC 8FB10014 */ lw $s1, 0x14($sp)
/* 28E00 8004DA00 8FB00010 */ lw $s0, 0x10($sp)
/* 28E04 8004DA04 03E00008 */ jr $ra
/* 28E08 8004DA08 27BD0030 */ addiu $sp, $sp, 0x30