mirror of
https://github.com/pmret/papermario.git
synced 2024-11-13 22:43:00 +01:00
193 lines
8.6 KiB
ArmAsm
193 lines
8.6 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
|
|
glabel func_8004D510
|
|
/* 028910 8004D510 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 028914 8004D514 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* 028918 8004D518 0080882D */ daddu $s1, $a0, $zero
|
|
/* 02891C 8004D51C AFB3001C */ sw $s3, 0x1c($sp)
|
|
/* 028920 8004D520 0000982D */ daddu $s3, $zero, $zero
|
|
/* 028924 8004D524 2406FFFF */ addiu $a2, $zero, -1
|
|
/* 028928 8004D528 AFBF0020 */ sw $ra, 0x20($sp)
|
|
/* 02892C 8004D52C AFB20018 */ sw $s2, 0x18($sp)
|
|
/* 028930 8004D530 AFB00010 */ sw $s0, 0x10($sp)
|
|
/* 028934 8004D534 8E220014 */ lw $v0, 0x14($s1)
|
|
/* 028938 8004D538 92230258 */ lbu $v1, 0x258($s1)
|
|
/* 02893C 8004D53C 24420001 */ addiu $v0, $v0, 1
|
|
/* 028940 8004D540 1060008D */ beqz $v1, .L8004D778
|
|
/* 028944 8004D544 AE220014 */ sw $v0, 0x14($s1)
|
|
/* 028948 8004D548 2C620008 */ sltiu $v0, $v1, 8
|
|
/* 02894C 8004D54C 10400023 */ beqz $v0, .L8004D5DC
|
|
/* 028950 8004D550 0263102B */ sltu $v0, $s3, $v1
|
|
/* 028954 8004D554 92240259 */ lbu $a0, 0x259($s1)
|
|
/* 028958 8004D558 10400015 */ beqz $v0, .L8004D5B0
|
|
/* 02895C 8004D55C 0260282D */ daddu $a1, $s3, $zero
|
|
/* 028960 8004D560 0060382D */ daddu $a3, $v1, $zero
|
|
/* 028964 8004D564 308200FF */ andi $v0, $a0, 0xff
|
|
.L8004D568:
|
|
/* 028968 8004D568 00021080 */ sll $v0, $v0, 2
|
|
/* 02896C 8004D56C 02221021 */ addu $v0, $s1, $v0
|
|
/* 028970 8004D570 8C430238 */ lw $v1, 0x238($v0)
|
|
/* 028974 8004D574 10600009 */ beqz $v1, .L8004D59C
|
|
/* 028978 8004D578 2C620010 */ sltiu $v0, $v1, 0x10
|
|
/* 02897C 8004D57C 10400003 */ beqz $v0, .L8004D58C
|
|
/* 028980 8004D580 24840001 */ addiu $a0, $a0, 1
|
|
/* 028984 8004D584 30660003 */ andi $a2, $v1, 3
|
|
/* 028988 8004D588 00039882 */ srl $s3, $v1, 2
|
|
.L8004D58C:
|
|
/* 02898C 8004D58C 308200FF */ andi $v0, $a0, 0xff
|
|
/* 028990 8004D590 2C420008 */ sltiu $v0, $v0, 8
|
|
/* 028994 8004D594 50400001 */ beql $v0, $zero, .L8004D59C
|
|
/* 028998 8004D598 0000202D */ daddu $a0, $zero, $zero
|
|
.L8004D59C:
|
|
/* 02899C 8004D59C 24A50001 */ addiu $a1, $a1, 1
|
|
/* 0289A0 8004D5A0 30A200FF */ andi $v0, $a1, 0xff
|
|
/* 0289A4 8004D5A4 0047102B */ sltu $v0, $v0, $a3
|
|
/* 0289A8 8004D5A8 1440FFEF */ bnez $v0, .L8004D568
|
|
/* 0289AC 8004D5AC 308200FF */ andi $v0, $a0, 0xff
|
|
.L8004D5B0:
|
|
/* 0289B0 8004D5B0 9223025A */ lbu $v1, 0x25a($s1)
|
|
/* 0289B4 8004D5B4 92220259 */ lbu $v0, 0x259($s1)
|
|
/* 0289B8 8004D5B8 00622023 */ subu $a0, $v1, $v0
|
|
/* 0289BC 8004D5BC 04820001 */ bltzl $a0, .L8004D5C4
|
|
/* 0289C0 8004D5C0 24840008 */ addiu $a0, $a0, 8
|
|
.L8004D5C4:
|
|
/* 0289C4 8004D5C4 92220258 */ lbu $v0, 0x258($s1)
|
|
/* 0289C8 8004D5C8 9223025A */ lbu $v1, 0x25a($s1)
|
|
/* 0289CC 8004D5CC 00441023 */ subu $v0, $v0, $a0
|
|
/* 0289D0 8004D5D0 A2220258 */ sb $v0, 0x258($s1)
|
|
/* 0289D4 8004D5D4 08013578 */ j .L8004D5E0
|
|
/* 0289D8 8004D5D8 A2230259 */ sb $v1, 0x259($s1)
|
|
|
|
.L8004D5DC:
|
|
/* 0289DC 8004D5DC A2200258 */ sb $zero, 0x258($s1)
|
|
.L8004D5E0:
|
|
/* 0289E0 8004D5E0 2402FFFF */ addiu $v0, $zero, -1
|
|
/* 0289E4 8004D5E4 10C20064 */ beq $a2, $v0, .L8004D778
|
|
/* 0289E8 8004D5E8 00000000 */ nop
|
|
/* 0289EC 8004D5EC 10C00058 */ beqz $a2, .L8004D750
|
|
/* 0289F0 8004D5F0 00000000 */ nop
|
|
/* 0289F4 8004D5F4 96220058 */ lhu $v0, 0x58($s1)
|
|
/* 0289F8 8004D5F8 10C2005F */ beq $a2, $v0, .L8004D778
|
|
/* 0289FC 8004D5FC 3C030002 */ lui $v1, 2
|
|
/* 028A00 8004D600 3463625A */ ori $v1, $v1, 0x625a
|
|
/* 028A04 8004D604 30C200FF */ andi $v0, $a2, 0xff
|
|
/* 028A08 8004D608 A6220058 */ sh $v0, 0x58($s1)
|
|
/* 028A0C 8004D60C A622005A */ sh $v0, 0x5a($s1)
|
|
/* 028A10 8004D610 24020003 */ addiu $v0, $zero, 3
|
|
/* 028A14 8004D614 A2220221 */ sb $v0, 0x221($s1)
|
|
/* 028A18 8004D618 24020002 */ addiu $v0, $zero, 2
|
|
/* 028A1C 8004D61C 14C20004 */ bne $a2, $v0, .L8004D630
|
|
/* 028A20 8004D620 AE230008 */ sw $v1, 8($s1)
|
|
/* 028A24 8004D624 8E220000 */ lw $v0, ($s1)
|
|
/* 028A28 8004D628 0801358E */ j .L8004D638
|
|
/* 028A2C 8004D62C 8C500060 */ lw $s0, 0x60($v0)
|
|
|
|
.L8004D630:
|
|
/* 028A30 8004D630 8E220000 */ lw $v0, ($s1)
|
|
/* 028A34 8004D634 8C50005C */ lw $s0, 0x5c($v0)
|
|
.L8004D638:
|
|
/* 028A38 8004D638 8E220074 */ lw $v0, 0x74($s1)
|
|
/* 028A3C 8004D63C 0220202D */ daddu $a0, $s1, $zero
|
|
/* 028A40 8004D640 AE300064 */ sw $s0, 0x64($s1)
|
|
/* 028A44 8004D644 90420000 */ lbu $v0, ($v0)
|
|
/* 028A48 8004D648 3C050002 */ lui $a1, 2
|
|
/* 028A4C 8004D64C 30420007 */ andi $v0, $v0, 7
|
|
/* 028A50 8004D650 3C068008 */ lui $a2, 0x8008
|
|
/* 028A54 8004D654 00C23021 */ addu $a2, $a2, $v0
|
|
/* 028A58 8004D658 90C68510 */ lbu $a2, -0x7af0($a2)
|
|
/* 028A5C 8004D65C 0C013A20 */ jal func_8004E880
|
|
/* 028A60 8004D660 34A5625A */ ori $a1, $a1, 0x625a
|
|
/* 028A64 8004D664 26120010 */ addiu $s2, $s0, 0x10
|
|
/* 028A68 8004D668 00131040 */ sll $v0, $s3, 1
|
|
/* 028A6C 8004D66C 02421021 */ addu $v0, $s2, $v0
|
|
/* 028A70 8004D670 94420004 */ lhu $v0, 4($v0)
|
|
/* 028A74 8004D674 14400003 */ bnez $v0, .L8004D684
|
|
/* 028A78 8004D678 00021080 */ sll $v0, $v0, 2
|
|
/* 028A7C 8004D67C 96020014 */ lhu $v0, 0x14($s0)
|
|
/* 028A80 8004D680 00021080 */ sll $v0, $v0, 2
|
|
.L8004D684:
|
|
/* 028A84 8004D684 00501021 */ addu $v0, $v0, $s0
|
|
/* 028A88 8004D688 AE22006C */ sw $v0, 0x6c($s1)
|
|
/* 028A8C 8004D68C AE220068 */ sw $v0, 0x68($s1)
|
|
/* 028A90 8004D690 9602001C */ lhu $v0, 0x1c($s0)
|
|
/* 028A94 8004D694 10400020 */ beqz $v0, .L8004D718
|
|
/* 028A98 8004D698 00021080 */ sll $v0, $v0, 2
|
|
/* 028A9C 8004D69C 8E230064 */ lw $v1, 0x64($s1)
|
|
/* 028AA0 8004D6A0 00431021 */ addu $v0, $v0, $v1
|
|
/* 028AA4 8004D6A4 AE220078 */ sw $v0, 0x78($s1)
|
|
/* 028AA8 8004D6A8 9202001F */ lbu $v0, 0x1f($s0)
|
|
/* 028AAC 8004D6AC A222021C */ sb $v0, 0x21c($s1)
|
|
/* 028AB0 8004D6B0 304200FF */ andi $v0, $v0, 0xff
|
|
/* 028AB4 8004D6B4 1040000C */ beqz $v0, .L8004D6E8
|
|
/* 028AB8 8004D6B8 0000182D */ daddu $v1, $zero, $zero
|
|
/* 028ABC 8004D6BC 0220282D */ daddu $a1, $s1, $zero
|
|
/* 028AC0 8004D6C0 0060202D */ daddu $a0, $v1, $zero
|
|
.L8004D6C4:
|
|
/* 028AC4 8004D6C4 8E220078 */ lw $v0, 0x78($s1)
|
|
/* 028AC8 8004D6C8 24630001 */ addiu $v1, $v1, 1
|
|
/* 028ACC 8004D6CC 00441021 */ addu $v0, $v0, $a0
|
|
/* 028AD0 8004D6D0 ACA20080 */ sw $v0, 0x80($a1)
|
|
/* 028AD4 8004D6D4 24A50004 */ addiu $a1, $a1, 4
|
|
/* 028AD8 8004D6D8 9222021C */ lbu $v0, 0x21c($s1)
|
|
/* 028ADC 8004D6DC 0062102B */ sltu $v0, $v1, $v0
|
|
/* 028AE0 8004D6E0 1440FFF8 */ bnez $v0, .L8004D6C4
|
|
/* 028AE4 8004D6E4 2484000C */ addiu $a0, $a0, 0xc
|
|
.L8004D6E8:
|
|
/* 028AE8 8004D6E8 2C62000C */ sltiu $v0, $v1, 0xc
|
|
/* 028AEC 8004D6EC 1040000C */ beqz $v0, .L8004D720
|
|
/* 028AF0 8004D6F0 00031080 */ sll $v0, $v1, 2
|
|
/* 028AF4 8004D6F4 00512021 */ addu $a0, $v0, $s1
|
|
.L8004D6F8:
|
|
/* 028AF8 8004D6F8 8E220080 */ lw $v0, 0x80($s1)
|
|
/* 028AFC 8004D6FC 24630001 */ addiu $v1, $v1, 1
|
|
/* 028B00 8004D700 AC820080 */ sw $v0, 0x80($a0)
|
|
/* 028B04 8004D704 2C62000C */ sltiu $v0, $v1, 0xc
|
|
/* 028B08 8004D708 1440FFFB */ bnez $v0, .L8004D6F8
|
|
/* 028B0C 8004D70C 24840004 */ addiu $a0, $a0, 4
|
|
/* 028B10 8004D710 080135C8 */ j .L8004D720
|
|
/* 028B14 8004D714 00000000 */ nop
|
|
|
|
.L8004D718:
|
|
/* 028B18 8004D718 AE200078 */ sw $zero, 0x78($s1)
|
|
/* 028B1C 8004D71C A220021C */ sb $zero, 0x21c($s1)
|
|
.L8004D720:
|
|
/* 028B20 8004D720 96420010 */ lhu $v0, 0x10($s2)
|
|
/* 028B24 8004D724 10400007 */ beqz $v0, .L8004D744
|
|
/* 028B28 8004D728 00021080 */ sll $v0, $v0, 2
|
|
/* 028B2C 8004D72C 8E230064 */ lw $v1, 0x64($s1)
|
|
/* 028B30 8004D730 00431021 */ addu $v0, $v0, $v1
|
|
/* 028B34 8004D734 AE22007C */ sw $v0, 0x7c($s1)
|
|
/* 028B38 8004D738 92420013 */ lbu $v0, 0x13($s2)
|
|
/* 028B3C 8004D73C 080135DE */ j .L8004D778
|
|
/* 028B40 8004D740 A222021D */ sb $v0, 0x21d($s1)
|
|
|
|
.L8004D744:
|
|
/* 028B44 8004D744 AE20007C */ sw $zero, 0x7c($s1)
|
|
/* 028B48 8004D748 080135DE */ j .L8004D778
|
|
/* 028B4C 8004D74C A220021D */ sb $zero, 0x21d($s1)
|
|
|
|
.L8004D750:
|
|
/* 028B50 8004D750 96220058 */ lhu $v0, 0x58($s1)
|
|
/* 028B54 8004D754 10400006 */ beqz $v0, .L8004D770
|
|
/* 028B58 8004D758 24020004 */ addiu $v0, $zero, 4
|
|
/* 028B5C 8004D75C A2220221 */ sb $v0, 0x221($s1)
|
|
/* 028B60 8004D760 24020001 */ addiu $v0, $zero, 1
|
|
/* 028B64 8004D764 AE220010 */ sw $v0, 0x10($s1)
|
|
/* 028B68 8004D768 080135DE */ j .L8004D778
|
|
/* 028B6C 8004D76C AE220008 */ sw $v0, 8($s1)
|
|
|
|
.L8004D770:
|
|
/* 028B70 8004D770 0C0136AA */ jal func_8004DAA8
|
|
/* 028B74 8004D774 0220202D */ daddu $a0, $s1, $zero
|
|
.L8004D778:
|
|
/* 028B78 8004D778 8FBF0020 */ lw $ra, 0x20($sp)
|
|
/* 028B7C 8004D77C 8FB3001C */ lw $s3, 0x1c($sp)
|
|
/* 028B80 8004D780 8FB20018 */ lw $s2, 0x18($sp)
|
|
/* 028B84 8004D784 8FB10014 */ lw $s1, 0x14($sp)
|
|
/* 028B88 8004D788 8FB00010 */ lw $s0, 0x10($sp)
|
|
/* 028B8C 8004D78C 03E00008 */ jr $ra
|
|
/* 028B90 8004D790 27BD0028 */ addiu $sp, $sp, 0x28
|
|
|