mirror of
https://github.com/pmret/papermario.git
synced 2024-11-18 17:02:46 +01:00
206 lines
10 KiB
ArmAsm
206 lines
10 KiB
ArmAsm
|
.set noat # allow manual use of $at
|
||
|
.set noreorder # don't insert nops after branches
|
||
|
|
||
|
glabel func_80069798
|
||
|
/* 44B98 80069798 27BDFF80 */ addiu $sp, $sp, -0x80
|
||
|
/* 44B9C 8006979C AFB10064 */ sw $s1, 0x64($sp)
|
||
|
/* 44BA0 800697A0 00808821 */ addu $s1, $a0, $zero
|
||
|
/* 44BA4 800697A4 AFB50074 */ sw $s5, 0x74($sp)
|
||
|
/* 44BA8 800697A8 00A0A821 */ addu $s5, $a1, $zero
|
||
|
/* 44BAC 800697AC AFB3006C */ sw $s3, 0x6c($sp)
|
||
|
/* 44BB0 800697B0 00C09821 */ addu $s3, $a2, $zero
|
||
|
/* 44BB4 800697B4 2402FFFF */ addiu $v0, $zero, -1
|
||
|
/* 44BB8 800697B8 AFBF007C */ sw $ra, 0x7c($sp)
|
||
|
/* 44BBC 800697BC AFB60078 */ sw $s6, 0x78($sp)
|
||
|
/* 44BC0 800697C0 AFB40070 */ sw $s4, 0x70($sp)
|
||
|
/* 44BC4 800697C4 AFB20068 */ sw $s2, 0x68($sp)
|
||
|
/* 44BC8 800697C8 AFB00060 */ sw $s0, 0x60($sp)
|
||
|
/* 44BCC 800697CC 0C019674 */ jal func_800659D0
|
||
|
/* 44BD0 800697D0 AE620000 */ sw $v0, ($s3)
|
||
|
/* 44BD4 800697D4 AE620004 */ sw $v0, 4($s3)
|
||
|
/* 44BD8 800697D8 8EA20008 */ lw $v0, 8($s5)
|
||
|
/* 44BDC 800697DC 8EA3000C */ lw $v1, 0xc($s5)
|
||
|
/* 44BE0 800697E0 AE620008 */ sw $v0, 8($s3)
|
||
|
/* 44BE4 800697E4 AE63000C */ sw $v1, 0xc($s3)
|
||
|
/* 44BE8 800697E8 8EA20010 */ lw $v0, 0x10($s5)
|
||
|
/* 44BEC 800697EC 8EA30014 */ lw $v1, 0x14($s5)
|
||
|
/* 44BF0 800697F0 AE620010 */ sw $v0, 0x10($s3)
|
||
|
/* 44BF4 800697F4 AE630014 */ sw $v1, 0x14($s3)
|
||
|
/* 44BF8 800697F8 92220065 */ lbu $v0, 0x65($s1)
|
||
|
/* 44BFC 800697FC 10400006 */ beqz $v0, .L80069818
|
||
|
/* 44C00 80069800 00009021 */ addu $s2, $zero, $zero
|
||
|
/* 44C04 80069804 02202021 */ addu $a0, $s1, $zero
|
||
|
/* 44C08 80069808 0C01A5AC */ jal func_800696B0
|
||
|
/* 44C0C 8006980C 00002821 */ addu $a1, $zero, $zero
|
||
|
/* 44C10 80069810 14400092 */ bnez $v0, .L80069A5C
|
||
|
/* 44C14 80069814 00000000 */ nop
|
||
|
.L80069818:
|
||
|
/* 44C18 80069818 27B40018 */ addiu $s4, $sp, 0x18
|
||
|
/* 44C1C 8006981C 27B60038 */ addiu $s6, $sp, 0x38
|
||
|
/* 44C20 80069820 02202021 */ addu $a0, $s1, $zero
|
||
|
.L80069824:
|
||
|
/* 44C24 80069824 0C01A5AC */ jal func_800696B0
|
||
|
/* 44C28 80069828 324500FF */ andi $a1, $s2, 0xff
|
||
|
/* 44C2C 8006982C 1440008B */ bnez $v0, .L80069A5C
|
||
|
/* 44C30 80069830 00003021 */ addu $a2, $zero, $zero
|
||
|
/* 44C34 80069834 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44C38 80069838 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44C3C 8006983C 0C01A86C */ jal func_8006A1B0
|
||
|
/* 44C40 80069840 27A70018 */ addiu $a3, $sp, 0x18
|
||
|
/* 44C44 80069844 14400085 */ bnez $v0, .L80069A5C
|
||
|
/* 44C48 80069848 26830001 */ addiu $v1, $s4, 1
|
||
|
/* 44C4C 8006984C 36420080 */ ori $v0, $s2, 0x80
|
||
|
/* 44C50 80069850 A3A20018 */ sb $v0, 0x18($sp)
|
||
|
/* 44C54 80069854 26840020 */ addiu $a0, $s4, 0x20
|
||
|
.L80069858:
|
||
|
/* 44C58 80069858 90620000 */ lbu $v0, ($v1)
|
||
|
/* 44C5C 8006985C 00021027 */ nor $v0, $zero, $v0
|
||
|
/* 44C60 80069860 A0620000 */ sb $v0, ($v1)
|
||
|
/* 44C64 80069864 24630001 */ addiu $v1, $v1, 1
|
||
|
/* 44C68 80069868 0064102A */ slt $v0, $v1, $a0
|
||
|
/* 44C6C 8006986C 1440FFFA */ bnez $v0, .L80069858
|
||
|
/* 44C70 80069870 00003021 */ addu $a2, $zero, $zero
|
||
|
/* 44C74 80069874 AFA00010 */ sw $zero, 0x10($sp)
|
||
|
/* 44C78 80069878 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44C7C 8006987C 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44C80 80069880 0C01A8E8 */ jal func_8006A3A0
|
||
|
/* 44C84 80069884 27A70018 */ addiu $a3, $sp, 0x18
|
||
|
/* 44C88 80069888 14400074 */ bnez $v0, .L80069A5C
|
||
|
/* 44C8C 8006988C 00003021 */ addu $a2, $zero, $zero
|
||
|
/* 44C90 80069890 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44C94 80069894 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44C98 80069898 0C01A86C */ jal func_8006A1B0
|
||
|
/* 44C9C 8006989C 27A70038 */ addiu $a3, $sp, 0x38
|
||
|
/* 44CA0 800698A0 1440006E */ bnez $v0, .L80069A5C
|
||
|
/* 44CA4 800698A4 00008021 */ addu $s0, $zero, $zero
|
||
|
/* 44CA8 800698A8 02802821 */ addu $a1, $s4, $zero
|
||
|
/* 44CAC 800698AC 02C02021 */ addu $a0, $s6, $zero
|
||
|
.L800698B0:
|
||
|
/* 44CB0 800698B0 90830000 */ lbu $v1, ($a0)
|
||
|
/* 44CB4 800698B4 90A20000 */ lbu $v0, ($a1)
|
||
|
/* 44CB8 800698B8 14620007 */ bne $v1, $v0, .L800698D8
|
||
|
/* 44CBC 800698BC 24020020 */ addiu $v0, $zero, 0x20
|
||
|
/* 44CC0 800698C0 24A50001 */ addiu $a1, $a1, 1
|
||
|
/* 44CC4 800698C4 26100001 */ addiu $s0, $s0, 1
|
||
|
/* 44CC8 800698C8 2A020020 */ slti $v0, $s0, 0x20
|
||
|
/* 44CCC 800698CC 1440FFF8 */ bnez $v0, .L800698B0
|
||
|
/* 44CD0 800698D0 24840001 */ addiu $a0, $a0, 1
|
||
|
/* 44CD4 800698D4 24020020 */ addiu $v0, $zero, 0x20
|
||
|
.L800698D8:
|
||
|
/* 44CD8 800698D8 16020015 */ bne $s0, $v0, .L80069930
|
||
|
/* 44CDC 800698DC 00000000 */ nop
|
||
|
/* 44CE0 800698E0 1A40000F */ blez $s2, .L80069920
|
||
|
/* 44CE4 800698E4 02202021 */ addu $a0, $s1, $zero
|
||
|
/* 44CE8 800698E8 0C01A5AC */ jal func_800696B0
|
||
|
/* 44CEC 800698EC 00002821 */ addu $a1, $zero, $zero
|
||
|
/* 44CF0 800698F0 1440005A */ bnez $v0, .L80069A5C
|
||
|
/* 44CF4 800698F4 00003021 */ addu $a2, $zero, $zero
|
||
|
/* 44CF8 800698F8 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44CFC 800698FC 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44D00 80069900 0C01A86C */ jal func_8006A1B0
|
||
|
/* 44D04 80069904 02803821 */ addu $a3, $s4, $zero
|
||
|
/* 44D08 80069908 14400054 */ bnez $v0, .L80069A5C
|
||
|
/* 44D0C 8006990C 00000000 */ nop
|
||
|
/* 44D10 80069910 93A30018 */ lbu $v1, 0x18($sp)
|
||
|
/* 44D14 80069914 24020080 */ addiu $v0, $zero, 0x80
|
||
|
/* 44D18 80069918 14620005 */ bne $v1, $v0, .L80069930
|
||
|
/* 44D1C 8006991C 00000000 */ nop
|
||
|
.L80069920:
|
||
|
/* 44D20 80069920 26520001 */ addiu $s2, $s2, 1
|
||
|
/* 44D24 80069924 2A42003E */ slti $v0, $s2, 0x3e
|
||
|
/* 44D28 80069928 1440FFBE */ bnez $v0, .L80069824
|
||
|
/* 44D2C 8006992C 02202021 */ addu $a0, $s1, $zero
|
||
|
.L80069930:
|
||
|
/* 44D30 80069930 92220065 */ lbu $v0, 0x65($s1)
|
||
|
/* 44D34 80069934 10400005 */ beqz $v0, .L8006994C
|
||
|
/* 44D38 80069938 02202021 */ addu $a0, $s1, $zero
|
||
|
/* 44D3C 8006993C 0C01A5AC */ jal func_800696B0
|
||
|
/* 44D40 80069940 00002821 */ addu $a1, $zero, $zero
|
||
|
/* 44D44 80069944 14400045 */ bnez $v0, .L80069A5C
|
||
|
/* 44D48 80069948 00000000 */ nop
|
||
|
.L8006994C:
|
||
|
/* 44D4C 8006994C 96A20018 */ lhu $v0, 0x18($s5)
|
||
|
/* 44D50 80069950 2666001E */ addiu $a2, $s3, 0x1e
|
||
|
/* 44D54 80069954 02602021 */ addu $a0, $s3, $zero
|
||
|
/* 44D58 80069958 0012182A */ slt $v1, $zero, $s2
|
||
|
/* 44D5C 8006995C A272001A */ sb $s2, 0x1a($s3)
|
||
|
/* 44D60 80069960 3042FFFE */ andi $v0, $v0, 0xfffe
|
||
|
/* 44D64 80069964 00621825 */ or $v1, $v1, $v0
|
||
|
/* 44D68 80069968 A6630018 */ sh $v1, 0x18($s3)
|
||
|
/* 44D6C 8006996C 92A2001B */ lbu $v0, 0x1b($s5)
|
||
|
/* 44D70 80069970 2665001C */ addiu $a1, $s3, 0x1c
|
||
|
/* 44D74 80069974 00A03821 */ addu $a3, $a1, $zero
|
||
|
/* 44D78 80069978 A660001E */ sh $zero, 0x1e($s3)
|
||
|
/* 44D7C 8006997C A660001C */ sh $zero, 0x1c($s3)
|
||
|
/* 44D80 80069980 A262001B */ sb $v0, 0x1b($s3)
|
||
|
.L80069984:
|
||
|
/* 44D84 80069984 94830000 */ lhu $v1, ($a0)
|
||
|
/* 44D88 80069988 94A20000 */ lhu $v0, ($a1)
|
||
|
/* 44D8C 8006998C 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 44D90 80069990 A4A20000 */ sh $v0, ($a1)
|
||
|
/* 44D94 80069994 94C20000 */ lhu $v0, ($a2)
|
||
|
/* 44D98 80069998 24840002 */ addiu $a0, $a0, 2
|
||
|
/* 44D9C 8006999C 00031827 */ nor $v1, $zero, $v1
|
||
|
/* 44DA0 800699A0 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 44DA4 800699A4 A4C20000 */ sh $v0, ($a2)
|
||
|
/* 44DA8 800699A8 0087102B */ sltu $v0, $a0, $a3
|
||
|
/* 44DAC 800699AC 1440FFF5 */ bnez $v0, .L80069984
|
||
|
/* 44DB0 800699B0 00008021 */ addu $s0, $zero, $zero
|
||
|
/* 44DB4 800699B4 24140001 */ addiu $s4, $zero, 1
|
||
|
/* 44DB8 800699B8 27B20018 */ addiu $s2, $sp, 0x18
|
||
|
/* 44DBC 800699BC 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 44DC0 800699C0 A7A20058 */ sh $v0, 0x58($sp)
|
||
|
/* 44DC4 800699C4 24020003 */ addiu $v0, $zero, 3
|
||
|
/* 44DC8 800699C8 A7A2005A */ sh $v0, 0x5a($sp)
|
||
|
/* 44DCC 800699CC 24020004 */ addiu $v0, $zero, 4
|
||
|
/* 44DD0 800699D0 A7A2005C */ sh $v0, 0x5c($sp)
|
||
|
/* 44DD4 800699D4 24020006 */ addiu $v0, $zero, 6
|
||
|
/* 44DD8 800699D8 A7A2005E */ sh $v0, 0x5e($sp)
|
||
|
.L800699DC:
|
||
|
/* 44DDC 800699DC 96460040 */ lhu $a2, 0x40($s2)
|
||
|
/* 44DE0 800699E0 AFB40010 */ sw $s4, 0x10($sp)
|
||
|
/* 44DE4 800699E4 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44DE8 800699E8 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44DEC 800699EC 0C01A8E8 */ jal func_8006A3A0
|
||
|
/* 44DF0 800699F0 02603821 */ addu $a3, $s3, $zero
|
||
|
/* 44DF4 800699F4 14400019 */ bnez $v0, .L80069A5C
|
||
|
/* 44DF8 800699F8 26100001 */ addiu $s0, $s0, 1
|
||
|
/* 44DFC 800699FC 2A020004 */ slti $v0, $s0, 4
|
||
|
/* 44E00 80069A00 1440FFF6 */ bnez $v0, .L800699DC
|
||
|
/* 44E04 80069A04 26520002 */ addiu $s2, $s2, 2
|
||
|
/* 44E08 80069A08 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 44E0C 80069A0C 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 44E10 80069A10 24060001 */ addiu $a2, $zero, 1
|
||
|
/* 44E14 80069A14 0C01A86C */ jal func_8006A1B0
|
||
|
/* 44E18 80069A18 27A70018 */ addiu $a3, $sp, 0x18
|
||
|
/* 44E1C 80069A1C 10400005 */ beqz $v0, .L80069A34
|
||
|
/* 44E20 80069A20 02603021 */ addu $a2, $s3, $zero
|
||
|
/* 44E24 80069A24 0801A697 */ j .L80069A5C
|
||
|
/* 44E28 80069A28 00000000 */ nop
|
||
|
.L80069A2C:
|
||
|
/* 44E2C 80069A2C 0801A697 */ j .L80069A5C
|
||
|
/* 44E30 80069A30 2402000B */ addiu $v0, $zero, 0xb
|
||
|
.L80069A34:
|
||
|
/* 44E34 80069A34 27A40018 */ addiu $a0, $sp, 0x18
|
||
|
/* 44E38 80069A38 24C50020 */ addiu $a1, $a2, 0x20
|
||
|
.L80069A3C:
|
||
|
/* 44E3C 80069A3C 90830000 */ lbu $v1, ($a0)
|
||
|
/* 44E40 80069A40 90C20000 */ lbu $v0, ($a2)
|
||
|
/* 44E44 80069A44 1462FFF9 */ bne $v1, $v0, .L80069A2C
|
||
|
/* 44E48 80069A48 24C60001 */ addiu $a2, $a2, 1
|
||
|
/* 44E4C 80069A4C 00C5102A */ slt $v0, $a2, $a1
|
||
|
/* 44E50 80069A50 1440FFFA */ bnez $v0, .L80069A3C
|
||
|
/* 44E54 80069A54 24840001 */ addiu $a0, $a0, 1
|
||
|
/* 44E58 80069A58 00001021 */ addu $v0, $zero, $zero
|
||
|
.L80069A5C:
|
||
|
/* 44E5C 80069A5C 8FBF007C */ lw $ra, 0x7c($sp)
|
||
|
/* 44E60 80069A60 8FB60078 */ lw $s6, 0x78($sp)
|
||
|
/* 44E64 80069A64 8FB50074 */ lw $s5, 0x74($sp)
|
||
|
/* 44E68 80069A68 8FB40070 */ lw $s4, 0x70($sp)
|
||
|
/* 44E6C 80069A6C 8FB3006C */ lw $s3, 0x6c($sp)
|
||
|
/* 44E70 80069A70 8FB20068 */ lw $s2, 0x68($sp)
|
||
|
/* 44E74 80069A74 8FB10064 */ lw $s1, 0x64($sp)
|
||
|
/* 44E78 80069A78 8FB00060 */ lw $s0, 0x60($sp)
|
||
|
/* 44E7C 80069A7C 03E00008 */ jr $ra
|
||
|
/* 44E80 80069A80 27BD0080 */ addiu $sp, $sp, 0x80
|