mirror of
https://github.com/pmret/papermario.git
synced 2024-11-19 09:22:30 +01:00
135 lines
7.0 KiB
ArmAsm
135 lines
7.0 KiB
ArmAsm
|
.set noat # allow manual use of $at
|
||
|
.set noreorder # don't insert nops after branches
|
||
|
|
||
|
glabel func_802186C0_660E10
|
||
|
/* 660E10 802186C0 27BDFFC0 */ addiu $sp, $sp, -0x40
|
||
|
/* 660E14 802186C4 AFB60038 */ sw $s6, 0x38($sp)
|
||
|
/* 660E18 802186C8 0080B02D */ daddu $s6, $a0, $zero
|
||
|
/* 660E1C 802186CC 27A50010 */ addiu $a1, $sp, 0x10
|
||
|
/* 660E20 802186D0 27A60014 */ addiu $a2, $sp, 0x14
|
||
|
/* 660E24 802186D4 27A70018 */ addiu $a3, $sp, 0x18
|
||
|
/* 660E28 802186D8 AFBF003C */ sw $ra, 0x3c($sp)
|
||
|
/* 660E2C 802186DC AFB50034 */ sw $s5, 0x34($sp)
|
||
|
/* 660E30 802186E0 AFB40030 */ sw $s4, 0x30($sp)
|
||
|
/* 660E34 802186E4 AFB3002C */ sw $s3, 0x2c($sp)
|
||
|
/* 660E38 802186E8 AFB20028 */ sw $s2, 0x28($sp)
|
||
|
/* 660E3C 802186EC AFB10024 */ sw $s1, 0x24($sp)
|
||
|
/* 660E40 802186F0 0C0470AC */ jal func_8011C2B0
|
||
|
/* 660E44 802186F4 AFB00020 */ sw $s0, 0x20($sp)
|
||
|
/* 660E48 802186F8 8FA20018 */ lw $v0, 0x18($sp)
|
||
|
/* 660E4C 802186FC 18400052 */ blez $v0, .L80218848
|
||
|
/* 660E50 80218700 0000802D */ daddu $s0, $zero, $zero
|
||
|
/* 660E54 80218704 3C038022 */ lui $v1, %hi(D_802211E0)
|
||
|
/* 660E58 80218708 246311E0 */ addiu $v1, $v1, %lo(D_802211E0)
|
||
|
/* 660E5C 8021870C 00161040 */ sll $v0, $s6, 1
|
||
|
/* 660E60 80218710 0043A021 */ addu $s4, $v0, $v1
|
||
|
/* 660E64 80218714 3C135555 */ lui $s3, 0x5555
|
||
|
/* 660E68 80218718 36735556 */ ori $s3, $s3, 0x5556
|
||
|
/* 660E6C 8021871C 34158000 */ ori $s5, $zero, 0x8000
|
||
|
/* 660E70 80218720 02130018 */ mult $s0, $s3
|
||
|
.L80218724:
|
||
|
/* 660E74 80218724 001097C3 */ sra $s2, $s0, 0x1f
|
||
|
/* 660E78 80218728 00001810 */ mfhi $v1
|
||
|
/* 660E7C 8021872C 00721823 */ subu $v1, $v1, $s2
|
||
|
/* 660E80 80218730 00031040 */ sll $v0, $v1, 1
|
||
|
/* 660E84 80218734 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 660E88 80218738 02021023 */ subu $v0, $s0, $v0
|
||
|
/* 660E8C 8021873C 96830000 */ lhu $v1, ($s4)
|
||
|
/* 660E90 80218740 24420001 */ addiu $v0, $v0, 1
|
||
|
/* 660E94 80218744 00620018 */ mult $v1, $v0
|
||
|
/* 660E98 80218748 00101100 */ sll $v0, $s0, 4
|
||
|
/* 660E9C 8021874C 00001812 */ mflo $v1
|
||
|
/* 660EA0 80218750 00702021 */ addu $a0, $v1, $s0
|
||
|
/* 660EA4 80218754 8FA30014 */ lw $v1, 0x14($sp)
|
||
|
/* 660EA8 80218758 3084FFFF */ andi $a0, $a0, 0xffff
|
||
|
/* 660EAC 8021875C 0C01917C */ jal sins
|
||
|
/* 660EB0 80218760 00628821 */ addu $s1, $v1, $v0
|
||
|
/* 660EB4 80218764 00021400 */ sll $v0, $v0, 0x10
|
||
|
/* 660EB8 80218768 00021403 */ sra $v0, $v0, 0x10
|
||
|
/* 660EBC 8021876C 00551021 */ addu $v0, $v0, $s5
|
||
|
/* 660EC0 80218770 00021FC2 */ srl $v1, $v0, 0x1f
|
||
|
/* 660EC4 80218774 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 660EC8 80218778 000213C0 */ sll $v0, $v0, 0xf
|
||
|
/* 660ECC 8021877C 00021403 */ sra $v0, $v0, 0x10
|
||
|
/* 660ED0 80218780 00021880 */ sll $v1, $v0, 2
|
||
|
/* 660ED4 80218784 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 660ED8 80218788 00031140 */ sll $v0, $v1, 5
|
||
|
/* 660EDC 8021878C 00431823 */ subu $v1, $v0, $v1
|
||
|
/* 660EE0 80218790 04610002 */ bgez $v1, .L8021879C
|
||
|
/* 660EE4 80218794 0060102D */ daddu $v0, $v1, $zero
|
||
|
/* 660EE8 80218798 24627FFF */ addiu $v0, $v1, 0x7fff
|
||
|
.L8021879C:
|
||
|
/* 660EEC 8021879C 000223C3 */ sra $a0, $v0, 0xf
|
||
|
/* 660EF0 802187A0 24820064 */ addiu $v0, $a0, 0x64
|
||
|
/* 660EF4 802187A4 A222000E */ sb $v0, 0xe($s1)
|
||
|
/* 660EF8 802187A8 24820032 */ addiu $v0, $a0, 0x32
|
||
|
/* 660EFC 802187AC 02121823 */ subu $v1, $s0, $s2
|
||
|
/* 660F00 802187B0 00032843 */ sra $a1, $v1, 1
|
||
|
/* 660F04 802187B4 00B30018 */ mult $a1, $s3
|
||
|
/* 660F08 802187B8 A222000D */ sb $v0, 0xd($s1)
|
||
|
/* 660F0C 802187BC 96840000 */ lhu $a0, ($s4)
|
||
|
/* 660F10 802187C0 00031FC3 */ sra $v1, $v1, 0x1f
|
||
|
/* 660F14 802187C4 000433C2 */ srl $a2, $a0, 0xf
|
||
|
/* 660F18 802187C8 00004810 */ mfhi $t1
|
||
|
/* 660F1C 802187CC 01231823 */ subu $v1, $t1, $v1
|
||
|
/* 660F20 802187D0 00031040 */ sll $v0, $v1, 1
|
||
|
/* 660F24 802187D4 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 660F28 802187D8 00A22823 */ subu $a1, $a1, $v0
|
||
|
/* 660F2C 802187DC 24A50001 */ addiu $a1, $a1, 1
|
||
|
/* 660F30 802187E0 00052BC0 */ sll $a1, $a1, 0xf
|
||
|
/* 660F34 802187E4 00C50018 */ mult $a2, $a1
|
||
|
/* 660F38 802187E8 00042382 */ srl $a0, $a0, 0xe
|
||
|
/* 660F3C 802187EC 000423C0 */ sll $a0, $a0, 0xf
|
||
|
/* 660F40 802187F0 00001812 */ mflo $v1
|
||
|
/* 660F44 802187F4 00642021 */ addu $a0, $v1, $a0
|
||
|
/* 660F48 802187F8 00902021 */ addu $a0, $a0, $s0
|
||
|
/* 660F4C 802187FC 0C01917C */ jal sins
|
||
|
/* 660F50 80218800 3084FFFF */ andi $a0, $a0, 0xffff
|
||
|
/* 660F54 80218804 00021400 */ sll $v0, $v0, 0x10
|
||
|
/* 660F58 80218808 00021403 */ sra $v0, $v0, 0x10
|
||
|
/* 660F5C 8021880C 9223000C */ lbu $v1, 0xc($s1)
|
||
|
/* 660F60 80218810 00551021 */ addu $v0, $v0, $s5
|
||
|
/* 660F64 80218814 00620018 */ mult $v1, $v0
|
||
|
/* 660F68 80218818 00001812 */ mflo $v1
|
||
|
/* 660F6C 8021881C 04610004 */ bgez $v1, .L80218830
|
||
|
/* 660F70 80218820 00031403 */ sra $v0, $v1, 0x10
|
||
|
/* 660F74 80218824 3402FFFF */ ori $v0, $zero, 0xffff
|
||
|
/* 660F78 80218828 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 660F7C 8021882C 00031403 */ sra $v0, $v1, 0x10
|
||
|
.L80218830:
|
||
|
/* 660F80 80218830 A222000C */ sb $v0, 0xc($s1)
|
||
|
/* 660F84 80218834 8FA20018 */ lw $v0, 0x18($sp)
|
||
|
/* 660F88 80218838 26100001 */ addiu $s0, $s0, 1
|
||
|
/* 660F8C 8021883C 0202102A */ slt $v0, $s0, $v0
|
||
|
/* 660F90 80218840 1440FFB8 */ bnez $v0, .L80218724
|
||
|
/* 660F94 80218844 02130018 */ mult $s0, $s3
|
||
|
.L80218848:
|
||
|
/* 660F98 80218848 3C03800A */ lui $v1, %hi(D_8009A66C)
|
||
|
/* 660F9C 8021884C 2463A66C */ addiu $v1, $v1, %lo(D_8009A66C)
|
||
|
/* 660FA0 80218850 8C620000 */ lw $v0, ($v1)
|
||
|
/* 660FA4 80218854 02C0202D */ daddu $a0, $s6, $zero
|
||
|
/* 660FA8 80218858 0040802D */ daddu $s0, $v0, $zero
|
||
|
/* 660FAC 8021885C 24420008 */ addiu $v0, $v0, 8
|
||
|
/* 660FB0 80218860 AC620000 */ sw $v0, ($v1)
|
||
|
/* 660FB4 80218864 3C02DE00 */ lui $v0, 0xde00
|
||
|
/* 660FB8 80218868 0C0470BB */ jal func_8011C2EC
|
||
|
/* 660FBC 8021886C AE020000 */ sw $v0, ($s0)
|
||
|
/* 660FC0 80218870 AE020004 */ sw $v0, 4($s0)
|
||
|
/* 660FC4 80218874 3C028022 */ lui $v0, %hi(D_802211E0)
|
||
|
/* 660FC8 80218878 244211E0 */ addiu $v0, $v0, %lo(D_802211E0)
|
||
|
/* 660FCC 8021887C 00161840 */ sll $v1, $s6, 1
|
||
|
/* 660FD0 80218880 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 660FD4 80218884 94620000 */ lhu $v0, ($v1)
|
||
|
/* 660FD8 80218888 24420253 */ addiu $v0, $v0, 0x253
|
||
|
/* 660FDC 8021888C A4620000 */ sh $v0, ($v1)
|
||
|
/* 660FE0 80218890 8FBF003C */ lw $ra, 0x3c($sp)
|
||
|
/* 660FE4 80218894 8FB60038 */ lw $s6, 0x38($sp)
|
||
|
/* 660FE8 80218898 8FB50034 */ lw $s5, 0x34($sp)
|
||
|
/* 660FEC 8021889C 8FB40030 */ lw $s4, 0x30($sp)
|
||
|
/* 660FF0 802188A0 8FB3002C */ lw $s3, 0x2c($sp)
|
||
|
/* 660FF4 802188A4 8FB20028 */ lw $s2, 0x28($sp)
|
||
|
/* 660FF8 802188A8 8FB10024 */ lw $s1, 0x24($sp)
|
||
|
/* 660FFC 802188AC 8FB00020 */ lw $s0, 0x20($sp)
|
||
|
/* 661000 802188B0 03E00008 */ jr $ra
|
||
|
/* 661004 802188B4 27BD0040 */ addiu $sp, $sp, 0x40
|